@webex/plugin-meetings 3.12.0-next.7 → 3.12.0-next.70
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/AGENTS.md +9 -0
- package/dist/aiEnableRequest/index.js +15 -2
- package/dist/aiEnableRequest/index.js.map +1 -1
- package/dist/breakouts/breakout.js +8 -3
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/index.js +26 -2
- package/dist/breakouts/index.js.map +1 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/constants.js +30 -7
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +11 -1
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/index.js +38 -24
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.js +91 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/hashTree/constants.js +13 -1
- package/dist/hashTree/constants.js.map +1 -1
- package/dist/hashTree/hashTreeParser.js +880 -382
- package/dist/hashTree/hashTreeParser.js.map +1 -1
- package/dist/hashTree/utils.js +42 -0
- package/dist/hashTree/utils.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/interceptors/dataChannelAuthToken.js +75 -15
- package/dist/interceptors/dataChannelAuthToken.js.map +1 -1
- package/dist/interceptors/locusRetry.js +23 -8
- package/dist/interceptors/locusRetry.js.map +1 -1
- package/dist/interpretation/index.js +10 -1
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/interpretation.types.js +7 -0
- package/dist/interpretation/interpretation.types.js.map +1 -0
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +4 -1
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +298 -87
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/types.js +19 -0
- package/dist/locus-info/types.js.map +1 -1
- package/dist/media/index.js +3 -1
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +1 -0
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +3 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +1046 -689
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +10 -1
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +5 -2
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +20 -2
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +2 -2
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meetings/index.js +231 -78
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +6 -1
- package/dist/meetings/meetings.types.js.map +1 -1
- package/dist/meetings/request.js +39 -0
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +79 -5
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +10 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +3 -0
- package/dist/member/util.js.map +1 -1
- package/dist/metrics/constants.js +4 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/codec/constants.js +63 -0
- package/dist/multistream/codec/constants.js.map +1 -0
- package/dist/multistream/mediaRequestManager.js +62 -15
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +9 -0
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/recording-controller/index.js +1 -3
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/types/config.d.ts +2 -0
- package/dist/types/constants.d.ts +9 -1
- package/dist/types/controls-options-manager/constants.d.ts +6 -1
- package/dist/types/controls-options-manager/index.d.ts +10 -0
- package/dist/types/hashTree/constants.d.ts +2 -0
- package/dist/types/hashTree/hashTreeParser.d.ts +146 -17
- package/dist/types/hashTree/utils.d.ts +18 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/interceptors/locusRetry.d.ts +4 -4
- package/dist/types/interpretation/interpretation.types.d.ts +10 -0
- package/dist/types/locus-info/index.d.ts +50 -6
- package/dist/types/locus-info/types.d.ts +21 -1
- package/dist/types/media/properties.d.ts +1 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +2 -0
- package/dist/types/meeting/index.d.ts +78 -5
- package/dist/types/meeting/request.d.ts +1 -0
- package/dist/types/meeting/util.d.ts +8 -0
- package/dist/types/meetings/index.d.ts +30 -2
- package/dist/types/meetings/meetings.types.d.ts +15 -0
- package/dist/types/meetings/request.d.ts +14 -0
- package/dist/types/member/index.d.ts +1 -0
- package/dist/types/member/types.d.ts +1 -0
- package/dist/types/member/util.d.ts +1 -0
- package/dist/types/metrics/constants.d.ts +3 -0
- package/dist/types/multistream/codec/constants.d.ts +7 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +22 -5
- package/dist/types/reactions/reactions.type.d.ts +3 -0
- package/dist/webinar/index.js +305 -159
- package/dist/webinar/index.js.map +1 -1
- package/package.json +22 -22
- package/src/aiEnableRequest/index.ts +16 -0
- package/src/breakouts/breakout.ts +3 -1
- package/src/breakouts/index.ts +31 -0
- package/src/config.ts +2 -0
- package/src/constants.ts +13 -2
- package/src/controls-options-manager/constants.ts +14 -1
- package/src/controls-options-manager/index.ts +47 -24
- package/src/controls-options-manager/util.ts +81 -1
- package/src/hashTree/constants.ts +16 -0
- package/src/hashTree/hashTreeParser.ts +580 -196
- package/src/hashTree/utils.ts +36 -0
- package/src/index.ts +6 -0
- package/src/interceptors/dataChannelAuthToken.ts +88 -12
- package/src/interceptors/locusRetry.ts +25 -4
- package/src/interpretation/index.ts +27 -9
- package/src/interpretation/interpretation.types.ts +11 -0
- package/src/locus-info/controlsUtils.ts +3 -1
- package/src/locus-info/index.ts +293 -97
- package/src/locus-info/types.ts +25 -1
- package/src/media/index.ts +3 -0
- package/src/media/properties.ts +1 -0
- package/src/meeting/in-meeting-actions.ts +4 -0
- package/src/meeting/index.ts +386 -48
- package/src/meeting/muteState.ts +10 -1
- package/src/meeting/request.ts +11 -0
- package/src/meeting/util.ts +21 -2
- package/src/meeting-info/meeting-info-v2.ts +4 -2
- package/src/meetings/index.ts +134 -44
- package/src/meetings/meetings.types.ts +19 -0
- package/src/meetings/request.ts +43 -0
- package/src/meetings/util.ts +97 -1
- package/src/member/index.ts +10 -0
- package/src/member/types.ts +1 -0
- package/src/member/util.ts +3 -0
- package/src/metrics/constants.ts +3 -0
- package/src/multistream/codec/constants.ts +58 -0
- package/src/multistream/mediaRequestManager.ts +119 -28
- package/src/multistream/receiveSlot.ts +18 -0
- package/src/reactions/reactions.type.ts +3 -0
- package/src/recording-controller/index.ts +1 -2
- package/src/webinar/index.ts +214 -36
- package/test/unit/spec/aiEnableRequest/index.ts +86 -0
- package/test/unit/spec/breakouts/breakout.ts +9 -3
- package/test/unit/spec/breakouts/index.ts +49 -0
- package/test/unit/spec/controls-options-manager/index.js +140 -29
- package/test/unit/spec/controls-options-manager/util.js +165 -0
- package/test/unit/spec/hashTree/hashTreeParser.ts +1838 -180
- package/test/unit/spec/hashTree/utils.ts +125 -1
- package/test/unit/spec/interceptors/dataChannelAuthToken.ts +196 -0
- package/test/unit/spec/interceptors/locusRetry.ts +205 -4
- package/test/unit/spec/interpretation/index.ts +26 -4
- package/test/unit/spec/locus-info/controlsUtils.js +172 -57
- package/test/unit/spec/locus-info/index.js +487 -81
- package/test/unit/spec/media/index.ts +31 -0
- package/test/unit/spec/meeting/in-meeting-actions.ts +2 -0
- package/test/unit/spec/meeting/index.js +1240 -37
- package/test/unit/spec/meeting/muteState.js +81 -0
- package/test/unit/spec/meeting/request.js +12 -0
- package/test/unit/spec/meeting/utils.js +33 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +19 -10
- package/test/unit/spec/meetings/index.js +360 -10
- package/test/unit/spec/meetings/request.js +141 -0
- package/test/unit/spec/meetings/utils.js +189 -0
- package/test/unit/spec/member/index.js +7 -0
- package/test/unit/spec/member/util.js +24 -0
- package/test/unit/spec/multistream/mediaRequestManager.ts +501 -37
- package/test/unit/spec/recording-controller/index.js +9 -8
- package/test/unit/spec/webinar/index.ts +329 -28
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_internalMediaCore","require","_loggerProxy","_interopRequireDefault","_eventsScope","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","_classPrivateFieldInitSpec","a","_checkPrivateRedeclaration","set","has","TypeError","_classPrivateFieldGet","s","get","_assertClassBrand","_classPrivateFieldSet","r","n","arguments","length","ReceiveSlotEvents","exports","SourceUpdate","MaxFsUpdate","receiveSlotCounter","_memberId","_weakMap","_csi","_sourceState","ReceiveSlot","_EventsScope","mediaType","mcReceiveSlot","findMemberIdCallback","_this","_classCallCheck2","_defineProperty2","id","concat","setupEventListeners","_inherits2","_createClass2","key","value","setMaxFs","newFs","emit","file","function","maxFs","_this2","scope","on","WcmeReceiveSlotEvents","state","csi","LoggerProxy","logger","log","undefined","memberId","findMemberId","_stringify","stream","EventsScope"],"sources":["receiveSlot.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\nimport {\n MediaType,\n ReceiveSlot as WcmeReceiveSlot,\n ReceiveSlotEvents as WcmeReceiveSlotEvents,\n StreamState,\n} from '@webex/internal-media-core';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport EventsScope from '../common/events/events-scope';\n\nexport const ReceiveSlotEvents = {\n SourceUpdate: 'sourceUpdate',\n MaxFsUpdate: 'maxFsUpdate',\n};\n\nexport type {StreamState} from '@webex/internal-media-core';\nexport type CSI = number;\nexport type MemberId = string;\nexport type ReceiveSlotId = string;\n\nlet receiveSlotCounter = 0;\n\nexport type FindMemberIdCallback = (csi: CSI) => MemberId | undefined;\n\n/**\n * Class representing a receive slot. A single receive slot is able to receive a single track\n * for example some participant's main video or audio\n */\nexport class ReceiveSlot extends EventsScope {\n private readonly mcReceiveSlot: WcmeReceiveSlot;\n\n private readonly findMemberIdCallback: FindMemberIdCallback;\n\n public readonly id: ReceiveSlotId;\n\n public readonly mediaType: MediaType;\n\n #memberId?: MemberId;\n\n #csi?: CSI;\n\n #sourceState: StreamState;\n\n /**\n * constructor - don't use it directly, you should always use meeting.receiveSlotManager.allocateSlot()\n * to create any receive slots\n *\n * @param {MediaType} mediaType\n * @param {ReceiveSlot} mcReceiveSlot\n * @param {FindMemberIdCallback} findMemberIdCallback callback for finding memberId for given CSI\n */\n constructor(\n mediaType: MediaType,\n mcReceiveSlot: WcmeReceiveSlot,\n findMemberIdCallback: FindMemberIdCallback\n ) {\n super();\n\n receiveSlotCounter += 1;\n\n this.findMemberIdCallback = findMemberIdCallback;\n this.mediaType = mediaType;\n this.mcReceiveSlot = mcReceiveSlot;\n this.#sourceState = 'no source';\n this.id = `r${receiveSlotCounter}`;\n\n this.setupEventListeners();\n }\n\n /**\n * Getter for memberId\n */\n public get memberId() {\n return this.#memberId;\n }\n\n /**\n * Getter for csi\n */\n public get csi() {\n return this.#csi;\n }\n\n /**\n * Set the max frame size for this slot\n * @param newFs frame size\n */\n public setMaxFs(newFs) {\n // emit event for media request manager to listen to\n\n this.emit(\n {\n file: 'meeting/receiveSlot',\n function: 'findMemberId',\n },\n ReceiveSlotEvents.MaxFsUpdate,\n {\n maxFs: newFs,\n }\n );\n }\n\n /**\n * Getter for sourceState\n */\n public get sourceState() {\n return this.#sourceState;\n }\n\n /**\n * registers event handlers with the underlying ReceiveSlot\n */\n private setupEventListeners() {\n const scope = {\n file: 'meeting/receiveSlot',\n function: 'setupEventListeners',\n };\n\n this.mcReceiveSlot.on(\n WcmeReceiveSlotEvents.SourceUpdate,\n (state: StreamState, csi?: number) => {\n LoggerProxy.logger.log(\n `ReceiveSlot#setupEventListeners --> got source update on receive slot ${this.id}, mediaType=${this.mediaType}, csi=${csi}, state=${state}`\n );\n this.#memberId = csi ? this.findMemberIdCallback(csi) : undefined;\n this.#csi = csi;\n this.#sourceState = state;\n\n this.emit(scope, ReceiveSlotEvents.SourceUpdate, {\n state: this.#sourceState,\n csi: this.#csi,\n memberId: this.#memberId,\n });\n }\n );\n }\n\n /** Tries to find the member id for this receive slot if it hasn't got one */\n public findMemberId() {\n if (this.#memberId === undefined && this.#csi) {\n this.#memberId = this.findMemberIdCallback(this.#csi);\n\n if (this.#memberId) {\n // if we found the memberId, simulate source update so that the client app knows that something's changed\n this.emit(\n {\n file: 'meeting/receiveSlot',\n function: 'findMemberId',\n },\n ReceiveSlotEvents.SourceUpdate,\n {\n state: this.#sourceState,\n csi: this.#csi,\n memberId: this.#memberId,\n }\n );\n }\n }\n }\n\n /**\n * @returns {string} a log message used to identify the receive slot\n */\n public get logString() {\n return `ReceiveSlot - ${this.id}: ${JSON.stringify(this.mcReceiveSlot.id)}`;\n }\n\n /**\n * The MediaStream object associated with this slot.\n *\n * @returns {MediaStream} The MediaStreamTrack.\n */\n get stream(): MediaStream {\n return this.mcReceiveSlot.stream;\n }\n\n /**\n * The underlying WCME receive slot\n */\n get wcmeReceiveSlot(): WcmeReceiveSlot {\n return this.mcReceiveSlot;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_internalMediaCore","require","_loggerProxy","_interopRequireDefault","_eventsScope","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","_classPrivateFieldInitSpec","a","_checkPrivateRedeclaration","set","has","TypeError","_classPrivateFieldGet","s","get","_assertClassBrand","_classPrivateFieldSet","r","n","arguments","length","ReceiveSlotEvents","exports","SourceUpdate","MaxFsUpdate","receiveSlotCounter","_memberId","_weakMap","_csi","_sourceState","ReceiveSlot","_EventsScope","mediaType","mcReceiveSlot","findMemberIdCallback","_this","_classCallCheck2","_defineProperty2","id","concat","setupEventListeners","_inherits2","_createClass2","key","value","setMaxFs","newFs","emit","file","function","maxFs","_this2","scope","on","WcmeReceiveSlotEvents","state","csi","LoggerProxy","logger","log","undefined","memberId","MediaStarted","MediaStopped","MediaEnded","findMemberId","_stringify","stream","EventsScope"],"sources":["receiveSlot.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\nimport {\n MediaType,\n ReceiveSlot as WcmeReceiveSlot,\n ReceiveSlotEvents as WcmeReceiveSlotEvents,\n StreamState,\n} from '@webex/internal-media-core';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport EventsScope from '../common/events/events-scope';\n\nexport const ReceiveSlotEvents = {\n SourceUpdate: 'sourceUpdate',\n MaxFsUpdate: 'maxFsUpdate',\n};\n\nexport type {StreamState} from '@webex/internal-media-core';\nexport type CSI = number;\nexport type MemberId = string;\nexport type ReceiveSlotId = string;\n\nlet receiveSlotCounter = 0;\n\nexport type FindMemberIdCallback = (csi: CSI) => MemberId | undefined;\n\n/**\n * Class representing a receive slot. A single receive slot is able to receive a single track\n * for example some participant's main video or audio\n */\nexport class ReceiveSlot extends EventsScope {\n private readonly mcReceiveSlot: WcmeReceiveSlot;\n\n private readonly findMemberIdCallback: FindMemberIdCallback;\n\n public readonly id: ReceiveSlotId;\n\n public readonly mediaType: MediaType;\n\n #memberId?: MemberId;\n\n #csi?: CSI;\n\n #sourceState: StreamState;\n\n /**\n * constructor - don't use it directly, you should always use meeting.receiveSlotManager.allocateSlot()\n * to create any receive slots\n *\n * @param {MediaType} mediaType\n * @param {ReceiveSlot} mcReceiveSlot\n * @param {FindMemberIdCallback} findMemberIdCallback callback for finding memberId for given CSI\n */\n constructor(\n mediaType: MediaType,\n mcReceiveSlot: WcmeReceiveSlot,\n findMemberIdCallback: FindMemberIdCallback\n ) {\n super();\n\n receiveSlotCounter += 1;\n\n this.findMemberIdCallback = findMemberIdCallback;\n this.mediaType = mediaType;\n this.mcReceiveSlot = mcReceiveSlot;\n this.#sourceState = 'no source';\n this.id = `r${receiveSlotCounter}`;\n\n this.setupEventListeners();\n }\n\n /**\n * Getter for memberId\n */\n public get memberId() {\n return this.#memberId;\n }\n\n /**\n * Getter for csi\n */\n public get csi() {\n return this.#csi;\n }\n\n /**\n * Set the max frame size for this slot\n * @param newFs frame size\n */\n public setMaxFs(newFs) {\n // emit event for media request manager to listen to\n\n this.emit(\n {\n file: 'meeting/receiveSlot',\n function: 'findMemberId',\n },\n ReceiveSlotEvents.MaxFsUpdate,\n {\n maxFs: newFs,\n }\n );\n }\n\n /**\n * Getter for sourceState\n */\n public get sourceState() {\n return this.#sourceState;\n }\n\n /**\n * registers event handlers with the underlying ReceiveSlot\n */\n private setupEventListeners() {\n const scope = {\n file: 'meeting/receiveSlot',\n function: 'setupEventListeners',\n };\n\n this.mcReceiveSlot.on(\n WcmeReceiveSlotEvents.SourceUpdate,\n (state: StreamState, csi?: number) => {\n LoggerProxy.logger.log(\n `ReceiveSlot#setupEventListeners --> got source update on receive slot ${this.id}, mediaType=${this.mediaType}, csi=${csi}, state=${state}`\n );\n this.#memberId = csi ? this.findMemberIdCallback(csi) : undefined;\n this.#csi = csi;\n this.#sourceState = state;\n\n this.emit(scope, ReceiveSlotEvents.SourceUpdate, {\n state: this.#sourceState,\n csi: this.#csi,\n memberId: this.#memberId,\n });\n }\n );\n\n this.mcReceiveSlot.on(WcmeReceiveSlotEvents.MediaStarted, () => {\n LoggerProxy.logger.log(\n `ReceiveSlot#setupEventListeners --> media started on receive slot ${this.id}, mediaType=${this.mediaType}`\n );\n });\n\n this.mcReceiveSlot.on(WcmeReceiveSlotEvents.MediaStopped, () => {\n LoggerProxy.logger.log(\n `ReceiveSlot#setupEventListeners --> media stopped on receive slot ${this.id}, mediaType=${this.mediaType}`\n );\n });\n\n this.mcReceiveSlot.on(WcmeReceiveSlotEvents.MediaEnded, () => {\n LoggerProxy.logger.log(\n `ReceiveSlot#setupEventListeners --> media ended on receive slot ${this.id}, mediaType=${this.mediaType}`\n );\n });\n }\n\n /** Tries to find the member id for this receive slot if it hasn't got one */\n public findMemberId() {\n if (this.#memberId === undefined && this.#csi) {\n this.#memberId = this.findMemberIdCallback(this.#csi);\n\n if (this.#memberId) {\n // if we found the memberId, simulate source update so that the client app knows that something's changed\n this.emit(\n {\n file: 'meeting/receiveSlot',\n function: 'findMemberId',\n },\n ReceiveSlotEvents.SourceUpdate,\n {\n state: this.#sourceState,\n csi: this.#csi,\n memberId: this.#memberId,\n }\n );\n }\n }\n }\n\n /**\n * @returns {string} a log message used to identify the receive slot\n */\n public get logString() {\n return `ReceiveSlot - ${this.id}: ${JSON.stringify(this.mcReceiveSlot.id)}`;\n }\n\n /**\n * The MediaStream object associated with this slot.\n *\n * @returns {MediaStream} The MediaStreamTrack.\n */\n get stream(): MediaStream {\n return this.mcReceiveSlot.stream;\n }\n\n /**\n * The underlying WCME receive slot\n */\n get wcmeReceiveSlot(): WcmeReceiveSlot {\n return this.mcReceiveSlot;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AACA,IAAAA,kBAAA,GAAAC,OAAA;AAOA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,YAAA,GAAAD,sBAAA,CAAAF,OAAA;AAAwD,SAAAI,WAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,WAAAD,CAAA,OAAAE,gBAAA,CAAAC,OAAA,EAAAH,CAAA,OAAAI,2BAAA,CAAAD,OAAA,EAAAJ,CAAA,EAAAM,yBAAA,KAAAC,kBAAA,CAAAN,CAAA,EAAAC,CAAA,YAAAC,gBAAA,CAAAC,OAAA,EAAAJ,CAAA,EAAAQ,WAAA,IAAAP,CAAA,CAAAQ,KAAA,CAAAT,CAAA,EAAAE,CAAA;AAAA,SAAAI,0BAAA,cAAAN,CAAA,IAAAU,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAN,kBAAA,CAAAG,OAAA,iCAAAV,CAAA,aAAAM,yBAAA,YAAAA,0BAAA,aAAAN,CAAA;AAAA,SAAAc,2BAAAZ,CAAA,EAAAF,CAAA,EAAAe,CAAA,IAAAC,0BAAA,CAAAd,CAAA,EAAAF,CAAA,GAAAA,CAAA,CAAAiB,GAAA,CAAAf,CAAA,EAAAa,CAAA;AAAA,SAAAC,2BAAAd,CAAA,EAAAF,CAAA,QAAAA,CAAA,CAAAkB,GAAA,CAAAhB,CAAA,aAAAiB,SAAA;AAAA,SAAAC,sBAAAC,CAAA,EAAAN,CAAA,WAAAM,CAAA,CAAAC,GAAA,CAAAC,iBAAA,CAAAF,CAAA,EAAAN,CAAA;AAAA,SAAAS,sBAAAH,CAAA,EAAAN,CAAA,EAAAU,CAAA,WAAAJ,CAAA,CAAAJ,GAAA,CAAAM,iBAAA,CAAAF,CAAA,EAAAN,CAAA,GAAAU,CAAA,GAAAA,CAAA;AAAA,SAAAF,kBAAArB,CAAA,EAAAF,CAAA,EAAA0B,CAAA,6BAAAxB,CAAA,GAAAA,CAAA,KAAAF,CAAA,GAAAE,CAAA,CAAAgB,GAAA,CAAAlB,CAAA,UAAA2B,SAAA,CAAAC,MAAA,OAAA5B,CAAA,GAAA0B,CAAA,YAAAP,SAAA,qDATxD;AAWO,IAAMU,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG;EAC/BE,YAAY,EAAE,cAAc;EAC5BC,WAAW,EAAE;AACf,CAAC;AAOD,IAAIC,kBAAkB,GAAG,CAAC;AAAC,IAAAC,SAAA,oBAAAC,QAAA,CAAA/B,OAAA;AAAA,IAAAgC,IAAA,oBAAAD,QAAA,CAAA/B,OAAA;AAAA,IAAAiC,YAAA,oBAAAF,QAAA,CAAA/B,OAAA;AAI3B;AACA;AACA;AACA;AAHA,IAIakC,WAAW,GAAAR,OAAA,CAAAQ,WAAA,0BAAAC,YAAA;EAetB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAAAD,YACEE,SAAoB,EACpBC,aAA8B,EAC9BC,oBAA0C,EAC1C;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAAxC,OAAA,QAAAkC,WAAA;IACAK,KAAA,GAAA5C,UAAA,OAAAuC,WAAA;IAAQ,IAAAO,gBAAA,CAAAzC,OAAA,EAAAuC,KAAA;IAAA,IAAAE,gBAAA,CAAAzC,OAAA,EAAAuC,KAAA;IAAA,IAAAE,gBAAA,CAAAzC,OAAA,EAAAuC,KAAA;IAAA,IAAAE,gBAAA,CAAAzC,OAAA,EAAAuC,KAAA;IAnBV7B,0BAAA,CAAA6B,KAAA,EAAAT,SAAS;IAETpB,0BAAA,CAAA6B,KAAA,EAAAP,IAAI;IAEJtB,0BAAA,CAAA6B,KAAA,EAAAN,YAAY;IAiBVJ,kBAAkB,IAAI,CAAC;IAEvBU,KAAA,CAAKD,oBAAoB,GAAGA,oBAAoB;IAChDC,KAAA,CAAKH,SAAS,GAAGA,SAAS;IAC1BG,KAAA,CAAKF,aAAa,GAAGA,aAAa;IAClCjB,qBAAA,CAAKa,YAAY,EAAAM,KAAA,EAAG,WAAJ,CAAC;IACjBA,KAAA,CAAKG,EAAE,OAAAC,MAAA,CAAOd,kBAAkB,CAAE;IAElCU,KAAA,CAAKK,mBAAmB,CAAC,CAAC;IAAC,OAAAL,KAAA;EAC7B;;EAEA;AACF;AACA;EAFE,IAAAM,UAAA,CAAA7C,OAAA,EAAAkC,WAAA,EAAAC,YAAA;EAAA,WAAAW,aAAA,CAAA9C,OAAA,EAAAkC,WAAA;IAAAa,GAAA;IAAA7B,GAAA,EAGA,SAAAA,IAAA,EAAsB;MACpB,OAAOF,qBAAA,CAAKc,SAAS,EAAd,IAAa,CAAC;IACvB;;IAEA;AACF;AACA;EAFE;IAAAiB,GAAA;IAAA7B,GAAA,EAGA,SAAAA,IAAA,EAAiB;MACf,OAAOF,qBAAA,CAAKgB,IAAI,EAAT,IAAQ,CAAC;IAClB;;IAEA;AACF;AACA;AACA;EAHE;IAAAe,GAAA;IAAAC,KAAA,EAIA,SAAOC,QAAQA,CAACC,KAAK,EAAE;MACrB;;MAEA,IAAI,CAACC,IAAI,CACP;QACEC,IAAI,EAAE,qBAAqB;QAC3BC,QAAQ,EAAE;MACZ,CAAC,EACD5B,iBAAiB,CAACG,WAAW,EAC7B;QACE0B,KAAK,EAAEJ;MACT,CACF,CAAC;IACH;;IAEA;AACF;AACA;EAFE;IAAAH,GAAA;IAAA7B,GAAA,EAGA,SAAAA,IAAA,EAAyB;MACvB,OAAOF,qBAAA,CAAKiB,YAAY,EAAjB,IAAgB,CAAC;IAC1B;;IAEA;AACF;AACA;EAFE;IAAAc,GAAA;IAAAC,KAAA,EAGA,SAAQJ,mBAAmBA,CAAA,EAAG;MAAA,IAAAW,MAAA;MAC5B,IAAMC,KAAK,GAAG;QACZJ,IAAI,EAAE,qBAAqB;QAC3BC,QAAQ,EAAE;MACZ,CAAC;MAED,IAAI,CAAChB,aAAa,CAACoB,EAAE,CACnBC,oCAAqB,CAAC/B,YAAY,EAClC,UAACgC,KAAkB,EAAEC,GAAY,EAAK;QACpCC,oBAAW,CAACC,MAAM,CAACC,GAAG,0EAAApB,MAAA,CACqDY,MAAI,CAACb,EAAE,kBAAAC,MAAA,CAAeY,MAAI,CAACnB,SAAS,YAAAO,MAAA,CAASiB,GAAG,cAAAjB,MAAA,CAAWgB,KAAK,CAC3I,CAAC;QACDvC,qBAAA,CAAKU,SAAS,EAAdyB,MAAI,EAAaK,GAAG,GAAGL,MAAI,CAACjB,oBAAoB,CAACsB,GAAG,CAAC,GAAGI,SAA3C,CAAC;QACd5C,qBAAA,CAAKY,IAAI,EAATuB,MAAI,EAAQK,GAAJ,CAAC;QACTxC,qBAAA,CAAKa,YAAY,EAAjBsB,MAAI,EAAgBI,KAAJ,CAAC;QAEjBJ,MAAI,CAACJ,IAAI,CAACK,KAAK,EAAE/B,iBAAiB,CAACE,YAAY,EAAE;UAC/CgC,KAAK,EAAE3C,qBAAA,CAAKiB,YAAY,EAAjBsB,MAAgB,CAAC;UACxBK,GAAG,EAAE5C,qBAAA,CAAKgB,IAAI,EAATuB,MAAQ,CAAC;UACdU,QAAQ,EAAEjD,qBAAA,CAAKc,SAAS,EAAdyB,MAAa;QACzB,CAAC,CAAC;MACJ,CACF,CAAC;MAED,IAAI,CAAClB,aAAa,CAACoB,EAAE,CAACC,oCAAqB,CAACQ,YAAY,EAAE,YAAM;QAC9DL,oBAAW,CAACC,MAAM,CAACC,GAAG,sEAAApB,MAAA,CACiDY,MAAI,CAACb,EAAE,kBAAAC,MAAA,CAAeY,MAAI,CAACnB,SAAS,CAC3G,CAAC;MACH,CAAC,CAAC;MAEF,IAAI,CAACC,aAAa,CAACoB,EAAE,CAACC,oCAAqB,CAACS,YAAY,EAAE,YAAM;QAC9DN,oBAAW,CAACC,MAAM,CAACC,GAAG,sEAAApB,MAAA,CACiDY,MAAI,CAACb,EAAE,kBAAAC,MAAA,CAAeY,MAAI,CAACnB,SAAS,CAC3G,CAAC;MACH,CAAC,CAAC;MAEF,IAAI,CAACC,aAAa,CAACoB,EAAE,CAACC,oCAAqB,CAACU,UAAU,EAAE,YAAM;QAC5DP,oBAAW,CAACC,MAAM,CAACC,GAAG,oEAAApB,MAAA,CAC+CY,MAAI,CAACb,EAAE,kBAAAC,MAAA,CAAeY,MAAI,CAACnB,SAAS,CACzG,CAAC;MACH,CAAC,CAAC;IACJ;;IAEA;EAAA;IAAAW,GAAA;IAAAC,KAAA,EACA,SAAOqB,YAAYA,CAAA,EAAG;MACpB,IAAIrD,qBAAA,CAAKc,SAAS,EAAd,IAAa,CAAC,KAAKkC,SAAS,IAAIhD,qBAAA,CAAKgB,IAAI,EAAT,IAAQ,CAAC,EAAE;QAC7CZ,qBAAA,CAAKU,SAAS,EAAd,IAAI,EAAa,IAAI,CAACQ,oBAAoB,CAACtB,qBAAA,CAAKgB,IAAI,EAAT,IAAQ,CAAC,CAAvC,CAAC;QAEd,IAAIhB,qBAAA,CAAKc,SAAS,EAAd,IAAa,CAAC,EAAE;UAClB;UACA,IAAI,CAACqB,IAAI,CACP;YACEC,IAAI,EAAE,qBAAqB;YAC3BC,QAAQ,EAAE;UACZ,CAAC,EACD5B,iBAAiB,CAACE,YAAY,EAC9B;YACEgC,KAAK,EAAE3C,qBAAA,CAAKiB,YAAY,EAAjB,IAAgB,CAAC;YACxB2B,GAAG,EAAE5C,qBAAA,CAAKgB,IAAI,EAAT,IAAQ,CAAC;YACdiC,QAAQ,EAAEjD,qBAAA,CAAKc,SAAS,EAAd,IAAa;UACzB,CACF,CAAC;QACH;MACF;IACF;;IAEA;AACF;AACA;EAFE;IAAAiB,GAAA;IAAA7B,GAAA,EAGA,SAAAA,IAAA,EAAuB;MACrB,wBAAAyB,MAAA,CAAwB,IAAI,CAACD,EAAE,QAAAC,MAAA,CAAK,IAAA2B,UAAA,CAAAtE,OAAA,EAAe,IAAI,CAACqC,aAAa,CAACK,EAAE,CAAC;IAC3E;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAK,GAAA;IAAA7B,GAAA,EAKA,SAAAA,IAAA,EAA0B;MACxB,OAAO,IAAI,CAACmB,aAAa,CAACkC,MAAM;IAClC;;IAEA;AACF;AACA;EAFE;IAAAxB,GAAA;IAAA7B,GAAA,EAGA,SAAAA,IAAA,EAAuC;MACrC,OAAO,IAAI,CAACmB,aAAa;IAC3B;EAAC;AAAA,EA3K8BmC,oBAAW","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ReactionServerType","exports","SkinToneType"],"sources":["reactions.type.ts"],"sourcesContent":["import {REACTION_RELAY_TYPES} from './constants';\n\nexport type EmoticonData = {\n type: string;\n codepoints?: string;\n shortcodes?: string;\n};\n\nexport type SkinTone = EmoticonData;\n\nexport type Reaction = EmoticonData & {\n tone?: SkinTone;\n};\n\n// eslint-disable-next-line no-shadow\nexport enum ReactionServerType {\n smile = 'smile',\n sad = 'sad',\n wow = 'wow',\n haha = 'haha',\n celebrate = 'celebrate',\n clap = 'clap',\n thumb_up = 'thumb_up',\n thumb_down = 'thumb_down',\n heart = 'heart',\n fire = 'fire',\n prayer = 'prayer',\n speed_up = 'speed_up',\n slow_down = 'slow_down',\n}\n\n// eslint-disable-next-line no-shadow\nexport enum SkinToneType {\n normal = 'normal',\n light = 'light',\n medium_light = 'medium_light',\n medium = 'medium',\n medium_dark = 'medium_dark',\n dark = 'dark',\n}\n\nexport type Sender = {\n displayName: string;\n participantId: string;\n};\n\nexport type ProcessedReaction = {\n reaction: Reaction;\n sender: {\n id: Sender['participantId'];\n name: string;\n };\n};\n\ntype RelayEventData = {\n relayType: (typeof REACTION_RELAY_TYPES)['REACTION'];\n reaction: Reaction;\n sender: Sender;\n};\n\nexport type RelayEvent = {\n data: RelayEventData;\n};\n"],"mappings":";;;;;;;AAcA;AAAA,IACYA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA,OAgB9B;AAAA,IACYE,YAAY,GAAAD,OAAA,CAAAC,YAAA,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["ReactionServerType","exports","SkinToneType"],"sources":["reactions.type.ts"],"sourcesContent":["import {REACTION_RELAY_TYPES} from './constants';\n\nexport type EmoticonData = {\n type: string;\n codepoints?: string;\n shortcodes?: string;\n};\n\nexport type SkinTone = EmoticonData;\n\nexport type Reaction = EmoticonData & {\n tone?: SkinTone;\n};\n\n// eslint-disable-next-line no-shadow\nexport enum ReactionServerType {\n smile = 'smile',\n sad = 'sad',\n wow = 'wow',\n haha = 'haha',\n celebrate = 'celebrate',\n clap = 'clap',\n thumb_up = 'thumb_up',\n thumb_down = 'thumb_down',\n heart = 'heart',\n fire = 'fire',\n prayer = 'prayer',\n speed_up = 'speed_up',\n slow_down = 'slow_down',\n}\n\n// eslint-disable-next-line no-shadow\nexport enum SkinToneType {\n normal = 'normal',\n light = 'light',\n medium_light = 'medium_light',\n medium = 'medium',\n medium_dark = 'medium_dark',\n dark = 'dark',\n}\n\nexport type Sender = {\n displayName: string;\n participantId: string;\n};\n\nexport type ProcessedReaction = {\n reaction: Reaction;\n sender: {\n id: Sender['participantId'];\n name: string;\n };\n};\n\ntype RelayEventData = {\n relayType: (typeof REACTION_RELAY_TYPES)['REACTION'];\n reaction: Reaction;\n sender: Sender;\n};\n\nexport type RelayEvent = {\n data: RelayEventData;\n headers?: {\n route?: string;\n };\n};\n"],"mappings":";;;;;;;AAcA;AAAA,IACYA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA,OAgB9B;AAAA,IACYE,YAAY,GAAAD,OAAA,CAAAC,YAAA,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA","ignoreList":[]}
|
|
@@ -275,9 +275,7 @@ var RecordingController = exports.default = /*#__PURE__*/function () {
|
|
|
275
275
|
value: function recordingControls(action) {
|
|
276
276
|
var record = _util.default.deriveRecordingStates(action);
|
|
277
277
|
_loggerProxy.default.logger.log("RecordingController:index#recordingControls --> ".concat(record));
|
|
278
|
-
|
|
279
|
-
// @ts-ignore
|
|
280
|
-
return this.request.request({
|
|
278
|
+
return this.request.locusDeltaRequest({
|
|
281
279
|
uri: "".concat(this.locusUrl, "/").concat(_constants.CONTROLS),
|
|
282
280
|
body: {
|
|
283
281
|
record: record
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_permission","_interopRequireDefault","require","_loggerProxy","_constants","_enums","_util","RecordingController","exports","default","request","options","_classCallCheck2","_defineProperty2","initialize","set","_createClass2","key","value","extract","setLocusUrl","url","locusUrl","locusId","Util","extractLocusId","setDisplayHints","hints","displayHints","setUserPolicy","selfUserPolicies","setSessionId","id","sessionId","setServiceUrl","serviceUrl","getLocusUrl","getLocusId","getSessionId","getServiceUrl","getDisplayHints","recordingService","action","recordingType","body","meetingInfo","locusSessionId","recording","toLowerCase","uri","concat","method","HTTP_VERBS","PUT","recordingControls","record","deriveRecordingStates","LoggerProxy","logger","log","CONTROLS","PATCH","recordingFacade","isPremiseRecordingEnabled","RecordingType","Premise","Cloud","_promise","reject","PermissionError","startRecording","RecordingAction","Start","stopRecording","Stop","pauseRecording","Pause","resumeRecording","Resume"],"sources":["index.ts"],"sourcesContent":["import PermissionError from '../common/errors/permission';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {CONTROLS, HTTP_VERBS, SELF_POLICY} from '../constants';\nimport MeetingRequest from '../meeting/request';\nimport {RecordingAction, RecordingType} from './enums';\nimport Util from './util';\n\n/**\n * @description Recording manages the recording functionality of the meeting object, there should only be one instantation of recording per meeting\n * @export\n * @private\n * @class Recording\n */\nexport default class RecordingController {\n /**\n * @instance\n * @type {MeetingRequest}\n * @private\n * @memberof RecordingController\n */\n private request: MeetingRequest;\n\n /**\n * @instance\n * @type {Array}\n * @private\n * @memberof RecordingInfo\n */\n private displayHints: Array<string> = [];\n\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof RecordingInfo\n */\n private selfUserPolicies: Record<SELF_POLICY, boolean>;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof RecordingInfo\n */\n private serviceUrl: string;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof RecordingInfo\n */\n private sessionId: string;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof RecordingInfo\n */\n private locusUrl: string;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof RecordingInfo\n */\n private locusId: string;\n\n /**\n * @param {MeetingRequest} request\n * @param {Object} options\n * @constructor\n * @memberof RecordingController\n */\n constructor(\n request: MeetingRequest,\n options?: {\n serviceUrl?: string;\n sessionId: string;\n locusUrl: string;\n displayHints?: Array<string>;\n }\n ) {\n this.initialize(request);\n this.set(options);\n }\n\n /**\n * @param {MeetingRequest} request\n * @returns {void}\n * @private\n * @memberof RecordingController\n */\n private initialize(request: MeetingRequest) {\n this.request = request;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public set(options?: {\n serviceUrl?: string;\n sessionId: string;\n locusUrl: string;\n displayHints?: Array<string>;\n }) {\n this.extract(options);\n }\n\n /**\n * @param {string} url\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setLocusUrl(url: string) {\n this.locusUrl = url;\n this.locusId = Util.extractLocusId(this.locusUrl);\n }\n\n /**\n * @param {Array} hints\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setDisplayHints(hints: Array<string>) {\n this.displayHints = hints;\n }\n\n /**\n * @param {Object} selfUserPolicies\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setUserPolicy(selfUserPolicies: Record<SELF_POLICY, boolean>) {\n this.selfUserPolicies = selfUserPolicies;\n }\n\n /**\n * @param {string} id\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setSessionId(id: string) {\n this.sessionId = id;\n }\n\n /**\n * @param {string} url\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setServiceUrl(url: string) {\n this.serviceUrl = url;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof RecordingController\n */\n public getLocusUrl() {\n return this.locusUrl;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof RecordingController\n */\n public getLocusId() {\n return this.locusId;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof RecordingController\n */\n public getSessionId() {\n return this.sessionId;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof RecordingController\n */\n public getServiceUrl() {\n return this.serviceUrl;\n }\n\n /**\n * @returns {Array}\n * @public\n * @memberof RecordingController\n */\n public getDisplayHints() {\n return this.displayHints;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @private\n * @memberof RecordingController\n */\n private extract(options?: {\n serviceUrl?: string;\n sessionId: string;\n locusUrl: string;\n displayHints?: Array<string>;\n }) {\n this.setServiceUrl(options?.serviceUrl);\n this.setSessionId(options?.sessionId);\n this.setDisplayHints(options?.displayHints);\n this.setLocusUrl(options?.locusUrl);\n }\n\n /**\n * @param {RecordingAction} action\n * @param {RecordingType} recordingType\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n private recordingService(action: RecordingAction, recordingType: RecordingType): Promise<any> {\n // @ts-ignore\n return this.request.request({\n body: {\n meetingInfo: {\n locusSessionId: this.sessionId,\n },\n recording: {\n action: action.toLowerCase(),\n },\n recordingType,\n },\n uri: `${this.serviceUrl}/loci/${this.locusId}/recording`,\n method: HTTP_VERBS.PUT,\n });\n }\n\n /**\n * @param {RecordingAction} action\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n private recordingControls(action: RecordingAction): Promise<any> {\n const record = Util.deriveRecordingStates(action);\n\n LoggerProxy.logger.log(`RecordingController:index#recordingControls --> ${record}`);\n\n // @ts-ignore\n return this.request.request({\n uri: `${this.locusUrl}/${CONTROLS}`,\n body: {\n record,\n },\n method: HTTP_VERBS.PATCH,\n });\n }\n\n /**\n * @param {RecordingAction} action\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n private recordingFacade(action: RecordingAction): Promise<any> {\n const isPremiseRecordingEnabled = Util.isPremiseRecordingEnabled(\n this.displayHints,\n this.selfUserPolicies\n );\n LoggerProxy.logger.log(\n `RecordingController:index#recordingFacade --> recording action [${action}]`\n );\n\n let recordingType: RecordingType;\n if (isPremiseRecordingEnabled) {\n recordingType = RecordingType.Premise;\n } else {\n recordingType = RecordingType.Cloud;\n }\n\n // assumes action is proper cased (i.e., Example)\n if (Util?.[`canUser${action}`](this.displayHints, this.selfUserPolicies)) {\n if (this.serviceUrl) {\n return this.recordingService(action, recordingType);\n }\n\n return this.recordingControls(action);\n }\n\n return Promise.reject(\n new PermissionError(`${action} recording not allowed, due to moderator property.`)\n );\n }\n\n /**\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n public startRecording(): Promise<any> {\n return this.recordingFacade(RecordingAction.Start);\n }\n\n /**\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n public stopRecording(): Promise<any> {\n return this.recordingFacade(RecordingAction.Stop);\n }\n\n /**\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n public pauseRecording(): Promise<any> {\n return this.recordingFacade(RecordingAction.Pause);\n }\n\n /**\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n public resumeRecording(): Promise<any> {\n return this.recordingFacade(RecordingAction.Resume);\n }\n}\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAL,sBAAA,CAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AALA,IAMqBK,mBAAmB,GAAAC,OAAA,CAAAC,OAAA;EAyDtC;AACF;AACA;AACA;AACA;AACA;EACE,SAAAF,oBACEG,OAAuB,EACvBC,OAKC,EACD;IAAA,IAAAC,gBAAA,CAAAH,OAAA,QAAAF,mBAAA;IAtEF;AACF;AACA;AACA;AACA;AACA;IALE,IAAAM,gBAAA,CAAAJ,OAAA;IAQA;AACF;AACA;AACA;AACA;AACA;IALE,IAAAI,gBAAA,CAAAJ,OAAA,wBAMsC,EAAE;IAExC;AACF;AACA;AACA;AACA;AACA;IALE,IAAAI,gBAAA,CAAAJ,OAAA;IAQA;AACF;AACA;AACA;AACA;AACA;IALE,IAAAI,gBAAA,CAAAJ,OAAA;IAQA;AACF;AACA;AACA;AACA;AACA;IALE,IAAAI,gBAAA,CAAAJ,OAAA;IAQA;AACF;AACA;AACA;AACA;AACA;IALE,IAAAI,gBAAA,CAAAJ,OAAA;IAQA;AACF;AACA;AACA;AACA;AACA;IALE,IAAAI,gBAAA,CAAAJ,OAAA;IAuBE,IAAI,CAACK,UAAU,CAACJ,OAAO,CAAC;IACxB,IAAI,CAACK,GAAG,CAACJ,OAAO,CAAC;EACnB;;EAEA;AACF;AACA;AACA;AACA;AACA;EALE,WAAAK,aAAA,CAAAP,OAAA,EAAAF,mBAAA;IAAAU,GAAA;IAAAC,KAAA,EAMA,SAAQJ,UAAUA,CAACJ,OAAuB,EAAE;MAC1C,IAAI,CAACA,OAAO,GAAGA,OAAO;IACxB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAO,GAAA;IAAAC,KAAA,EAMA,SAAOH,GAAGA,CAACJ,OAKV,EAAE;MACD,IAAI,CAACQ,OAAO,CAACR,OAAO,CAAC;IACvB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAM,GAAA;IAAAC,KAAA,EAMA,SAAOE,WAAWA,CAACC,GAAW,EAAE;MAC9B,IAAI,CAACC,QAAQ,GAAGD,GAAG;MACnB,IAAI,CAACE,OAAO,GAAGC,aAAI,CAACC,cAAc,CAAC,IAAI,CAACH,QAAQ,CAAC;IACnD;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAL,GAAA;IAAAC,KAAA,EAMA,SAAOQ,eAAeA,CAACC,KAAoB,EAAE;MAC3C,IAAI,CAACC,YAAY,GAAGD,KAAK;IAC3B;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAV,GAAA;IAAAC,KAAA,EAMA,SAAOW,aAAaA,CAACC,gBAA8C,EAAE;MACnE,IAAI,CAACA,gBAAgB,GAAGA,gBAAgB;IAC1C;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAb,GAAA;IAAAC,KAAA,EAMA,SAAOa,YAAYA,CAACC,EAAU,EAAE;MAC9B,IAAI,CAACC,SAAS,GAAGD,EAAE;IACrB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAf,GAAA;IAAAC,KAAA,EAMA,SAAOgB,aAAaA,CAACb,GAAW,EAAE;MAChC,IAAI,CAACc,UAAU,GAAGd,GAAG;IACvB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAJ,GAAA;IAAAC,KAAA,EAKA,SAAOkB,WAAWA,CAAA,EAAG;MACnB,OAAO,IAAI,CAACd,QAAQ;IACtB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAL,GAAA;IAAAC,KAAA,EAKA,SAAOmB,UAAUA,CAAA,EAAG;MAClB,OAAO,IAAI,CAACd,OAAO;IACrB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAN,GAAA;IAAAC,KAAA,EAKA,SAAOoB,YAAYA,CAAA,EAAG;MACpB,OAAO,IAAI,CAACL,SAAS;IACvB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAhB,GAAA;IAAAC,KAAA,EAKA,SAAOqB,aAAaA,CAAA,EAAG;MACrB,OAAO,IAAI,CAACJ,UAAU;IACxB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAlB,GAAA;IAAAC,KAAA,EAKA,SAAOsB,eAAeA,CAAA,EAAG;MACvB,OAAO,IAAI,CAACZ,YAAY;IAC1B;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAX,GAAA;IAAAC,KAAA,EAMA,SAAQC,OAAOA,CAACR,OAKf,EAAE;MACD,IAAI,CAACuB,aAAa,CAACvB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEwB,UAAU,CAAC;MACvC,IAAI,CAACJ,YAAY,CAACpB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEsB,SAAS,CAAC;MACrC,IAAI,CAACP,eAAe,CAACf,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEiB,YAAY,CAAC;MAC3C,IAAI,CAACR,WAAW,CAACT,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEW,QAAQ,CAAC;IACrC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAL,GAAA;IAAAC,KAAA,EAOA,SAAQuB,gBAAgBA,CAACC,MAAuB,EAAEC,aAA4B,EAAgB;MAC5F;MACA,OAAO,IAAI,CAACjC,OAAO,CAACA,OAAO,CAAC;QAC1BkC,IAAI,EAAE;UACJC,WAAW,EAAE;YACXC,cAAc,EAAE,IAAI,CAACb;UACvB,CAAC;UACDc,SAAS,EAAE;YACTL,MAAM,EAAEA,MAAM,CAACM,WAAW,CAAC;UAC7B,CAAC;UACDL,aAAa,EAAbA;QACF,CAAC;QACDM,GAAG,KAAAC,MAAA,CAAK,IAAI,CAACf,UAAU,YAAAe,MAAA,CAAS,IAAI,CAAC3B,OAAO,eAAY;QACxD4B,MAAM,EAAEC,qBAAU,CAACC;MACrB,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAApC,GAAA;IAAAC,KAAA,EAMA,SAAQoC,iBAAiBA,CAACZ,MAAuB,EAAgB;MAC/D,IAAMa,MAAM,GAAG/B,aAAI,CAACgC,qBAAqB,CAACd,MAAM,CAAC;MAEjDe,oBAAW,CAACC,MAAM,CAACC,GAAG,oDAAAT,MAAA,CAAoDK,MAAM,CAAE,CAAC;;MAEnF;MACA,OAAO,IAAI,CAAC7C,OAAO,CAACA,OAAO,CAAC;QAC1BuC,GAAG,KAAAC,MAAA,CAAK,IAAI,CAAC5B,QAAQ,OAAA4B,MAAA,CAAIU,mBAAQ,CAAE;QACnChB,IAAI,EAAE;UACJW,MAAM,EAANA;QACF,CAAC;QACDJ,MAAM,EAAEC,qBAAU,CAACS;MACrB,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA5C,GAAA;IAAAC,KAAA,EAMA,SAAQ4C,eAAeA,CAACpB,MAAuB,EAAgB;MAC7D,IAAMqB,yBAAyB,GAAGvC,aAAI,CAACuC,yBAAyB,CAC9D,IAAI,CAACnC,YAAY,EACjB,IAAI,CAACE,gBACP,CAAC;MACD2B,oBAAW,CAACC,MAAM,CAACC,GAAG,oEAAAT,MAAA,CAC+CR,MAAM,MAC3E,CAAC;MAED,IAAIC,aAA4B;MAChC,IAAIoB,yBAAyB,EAAE;QAC7BpB,aAAa,GAAGqB,oBAAa,CAACC,OAAO;MACvC,CAAC,MAAM;QACLtB,aAAa,GAAGqB,oBAAa,CAACE,KAAK;MACrC;;MAEA;MACA,IAAI1C,aAAI,aAAJA,aAAI,eAAJA,aAAI,WAAA0B,MAAA,CAAaR,MAAM,EAAG,CAAC,IAAI,CAACd,YAAY,EAAE,IAAI,CAACE,gBAAgB,CAAC,EAAE;QACxE,IAAI,IAAI,CAACK,UAAU,EAAE;UACnB,OAAO,IAAI,CAACM,gBAAgB,CAACC,MAAM,EAAEC,aAAa,CAAC;QACrD;QAEA,OAAO,IAAI,CAACW,iBAAiB,CAACZ,MAAM,CAAC;MACvC;MAEA,OAAOyB,QAAA,CAAA1D,OAAA,CAAQ2D,MAAM,CACnB,IAAIC,mBAAe,IAAAnB,MAAA,CAAIR,MAAM,uDAAoD,CACnF,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAzB,GAAA;IAAAC,KAAA,EAKA,SAAOoD,cAAcA,CAAA,EAAiB;MACpC,OAAO,IAAI,CAACR,eAAe,CAACS,sBAAe,CAACC,KAAK,CAAC;IACpD;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAvD,GAAA;IAAAC,KAAA,EAKA,SAAOuD,aAAaA,CAAA,EAAiB;MACnC,OAAO,IAAI,CAACX,eAAe,CAACS,sBAAe,CAACG,IAAI,CAAC;IACnD;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAzD,GAAA;IAAAC,KAAA,EAKA,SAAOyD,cAAcA,CAAA,EAAiB;MACpC,OAAO,IAAI,CAACb,eAAe,CAACS,sBAAe,CAACK,KAAK,CAAC;IACpD;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA3D,GAAA;IAAAC,KAAA,EAKA,SAAO2D,eAAeA,CAAA,EAAiB;MACrC,OAAO,IAAI,CAACf,eAAe,CAACS,sBAAe,CAACO,MAAM,CAAC;IACrD;EAAC;AAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_permission","_interopRequireDefault","require","_loggerProxy","_constants","_enums","_util","RecordingController","exports","default","request","options","_classCallCheck2","_defineProperty2","initialize","set","_createClass2","key","value","extract","setLocusUrl","url","locusUrl","locusId","Util","extractLocusId","setDisplayHints","hints","displayHints","setUserPolicy","selfUserPolicies","setSessionId","id","sessionId","setServiceUrl","serviceUrl","getLocusUrl","getLocusId","getSessionId","getServiceUrl","getDisplayHints","recordingService","action","recordingType","body","meetingInfo","locusSessionId","recording","toLowerCase","uri","concat","method","HTTP_VERBS","PUT","recordingControls","record","deriveRecordingStates","LoggerProxy","logger","log","locusDeltaRequest","CONTROLS","PATCH","recordingFacade","isPremiseRecordingEnabled","RecordingType","Premise","Cloud","_promise","reject","PermissionError","startRecording","RecordingAction","Start","stopRecording","Stop","pauseRecording","Pause","resumeRecording","Resume"],"sources":["index.ts"],"sourcesContent":["import PermissionError from '../common/errors/permission';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {CONTROLS, HTTP_VERBS, SELF_POLICY} from '../constants';\nimport MeetingRequest from '../meeting/request';\nimport {RecordingAction, RecordingType} from './enums';\nimport Util from './util';\n\n/**\n * @description Recording manages the recording functionality of the meeting object, there should only be one instantation of recording per meeting\n * @export\n * @private\n * @class Recording\n */\nexport default class RecordingController {\n /**\n * @instance\n * @type {MeetingRequest}\n * @private\n * @memberof RecordingController\n */\n private request: MeetingRequest;\n\n /**\n * @instance\n * @type {Array}\n * @private\n * @memberof RecordingInfo\n */\n private displayHints: Array<string> = [];\n\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof RecordingInfo\n */\n private selfUserPolicies: Record<SELF_POLICY, boolean>;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof RecordingInfo\n */\n private serviceUrl: string;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof RecordingInfo\n */\n private sessionId: string;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof RecordingInfo\n */\n private locusUrl: string;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof RecordingInfo\n */\n private locusId: string;\n\n /**\n * @param {MeetingRequest} request\n * @param {Object} options\n * @constructor\n * @memberof RecordingController\n */\n constructor(\n request: MeetingRequest,\n options?: {\n serviceUrl?: string;\n sessionId: string;\n locusUrl: string;\n displayHints?: Array<string>;\n }\n ) {\n this.initialize(request);\n this.set(options);\n }\n\n /**\n * @param {MeetingRequest} request\n * @returns {void}\n * @private\n * @memberof RecordingController\n */\n private initialize(request: MeetingRequest) {\n this.request = request;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public set(options?: {\n serviceUrl?: string;\n sessionId: string;\n locusUrl: string;\n displayHints?: Array<string>;\n }) {\n this.extract(options);\n }\n\n /**\n * @param {string} url\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setLocusUrl(url: string) {\n this.locusUrl = url;\n this.locusId = Util.extractLocusId(this.locusUrl);\n }\n\n /**\n * @param {Array} hints\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setDisplayHints(hints: Array<string>) {\n this.displayHints = hints;\n }\n\n /**\n * @param {Object} selfUserPolicies\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setUserPolicy(selfUserPolicies: Record<SELF_POLICY, boolean>) {\n this.selfUserPolicies = selfUserPolicies;\n }\n\n /**\n * @param {string} id\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setSessionId(id: string) {\n this.sessionId = id;\n }\n\n /**\n * @param {string} url\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setServiceUrl(url: string) {\n this.serviceUrl = url;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof RecordingController\n */\n public getLocusUrl() {\n return this.locusUrl;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof RecordingController\n */\n public getLocusId() {\n return this.locusId;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof RecordingController\n */\n public getSessionId() {\n return this.sessionId;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof RecordingController\n */\n public getServiceUrl() {\n return this.serviceUrl;\n }\n\n /**\n * @returns {Array}\n * @public\n * @memberof RecordingController\n */\n public getDisplayHints() {\n return this.displayHints;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @private\n * @memberof RecordingController\n */\n private extract(options?: {\n serviceUrl?: string;\n sessionId: string;\n locusUrl: string;\n displayHints?: Array<string>;\n }) {\n this.setServiceUrl(options?.serviceUrl);\n this.setSessionId(options?.sessionId);\n this.setDisplayHints(options?.displayHints);\n this.setLocusUrl(options?.locusUrl);\n }\n\n /**\n * @param {RecordingAction} action\n * @param {RecordingType} recordingType\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n private recordingService(action: RecordingAction, recordingType: RecordingType): Promise<any> {\n // @ts-ignore\n return this.request.request({\n body: {\n meetingInfo: {\n locusSessionId: this.sessionId,\n },\n recording: {\n action: action.toLowerCase(),\n },\n recordingType,\n },\n uri: `${this.serviceUrl}/loci/${this.locusId}/recording`,\n method: HTTP_VERBS.PUT,\n });\n }\n\n /**\n * @param {RecordingAction} action\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n private recordingControls(action: RecordingAction): Promise<any> {\n const record = Util.deriveRecordingStates(action);\n\n LoggerProxy.logger.log(`RecordingController:index#recordingControls --> ${record}`);\n\n return this.request.locusDeltaRequest({\n uri: `${this.locusUrl}/${CONTROLS}`,\n body: {\n record,\n },\n method: HTTP_VERBS.PATCH,\n });\n }\n\n /**\n * @param {RecordingAction} action\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n private recordingFacade(action: RecordingAction): Promise<any> {\n const isPremiseRecordingEnabled = Util.isPremiseRecordingEnabled(\n this.displayHints,\n this.selfUserPolicies\n );\n LoggerProxy.logger.log(\n `RecordingController:index#recordingFacade --> recording action [${action}]`\n );\n\n let recordingType: RecordingType;\n if (isPremiseRecordingEnabled) {\n recordingType = RecordingType.Premise;\n } else {\n recordingType = RecordingType.Cloud;\n }\n\n // assumes action is proper cased (i.e., Example)\n if (Util?.[`canUser${action}`](this.displayHints, this.selfUserPolicies)) {\n if (this.serviceUrl) {\n return this.recordingService(action, recordingType);\n }\n\n return this.recordingControls(action);\n }\n\n return Promise.reject(\n new PermissionError(`${action} recording not allowed, due to moderator property.`)\n );\n }\n\n /**\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n public startRecording(): Promise<any> {\n return this.recordingFacade(RecordingAction.Start);\n }\n\n /**\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n public stopRecording(): Promise<any> {\n return this.recordingFacade(RecordingAction.Stop);\n }\n\n /**\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n public pauseRecording(): Promise<any> {\n return this.recordingFacade(RecordingAction.Pause);\n }\n\n /**\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n public resumeRecording(): Promise<any> {\n return this.recordingFacade(RecordingAction.Resume);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -58,6 +58,7 @@ declare const _default: {
|
|
|
58
58
|
enableExtmap: boolean;
|
|
59
59
|
enableAutomaticLLM: boolean;
|
|
60
60
|
installedOrgID: any;
|
|
61
|
+
multipartSitePrefixList: string[];
|
|
61
62
|
experimental: {
|
|
62
63
|
enableMediaNegotiatedEvent: boolean;
|
|
63
64
|
enableUnifiedMeetings: boolean;
|
|
@@ -69,6 +70,7 @@ declare const _default: {
|
|
|
69
70
|
degradationPreferences: {
|
|
70
71
|
maxMacroblocksLimit: number;
|
|
71
72
|
};
|
|
73
|
+
enableAv1SlidesSupport: boolean;
|
|
72
74
|
iceCandidatesGatheringTimeout: any;
|
|
73
75
|
backendIpv6NativeSupport: boolean;
|
|
74
76
|
enableReachabilityChecks: boolean;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { LLM_DEFAULT_SESSION, LLM_PRACTICE_SESSION } from '@webex/internal-plugin-llm';
|
|
1
2
|
export type Enum<T extends Record<string, unknown>> = T[keyof T];
|
|
2
3
|
export declare const AUDIO = "audio";
|
|
3
4
|
export declare const AUDIO_STATUS = "audioStatus";
|
|
@@ -31,7 +32,6 @@ export declare const LOCAL = "local";
|
|
|
31
32
|
export declare const LOCI = "loci";
|
|
32
33
|
export declare const LOCUS_URL = "locusUrl";
|
|
33
34
|
export declare const END = "end";
|
|
34
|
-
export declare const LLM_PRACTICE_SESSION = "llm-practice-session";
|
|
35
35
|
export declare const MAX_RANDOM_DELAY_FOR_MEETING_INFO: number;
|
|
36
36
|
export declare const MEETINGINFO = "meetingInfo";
|
|
37
37
|
export declare const MEET = "meet";
|
|
@@ -293,6 +293,7 @@ export declare const EVENT_TRIGGERS: {
|
|
|
293
293
|
MEETING_CAPTION_RECEIVED: string;
|
|
294
294
|
MEETING_PARTICIPANT_REASON_CHANGED: string;
|
|
295
295
|
MEETING_AI_ENABLE_REQUEST: string;
|
|
296
|
+
MEETING_SRTP_CIPHER_UPDATED: string;
|
|
296
297
|
};
|
|
297
298
|
export declare const EVENT_TYPES: {
|
|
298
299
|
SELF: string;
|
|
@@ -566,6 +567,12 @@ export declare const INTERPRETATION: {
|
|
|
566
567
|
DECLINED: string;
|
|
567
568
|
};
|
|
568
569
|
RESOURCE_TYPE: string;
|
|
570
|
+
CAPABILITIES: {
|
|
571
|
+
HOST_CONTROL_SI_SUPPORTED: string;
|
|
572
|
+
INTERPRETER_CONTROL_SI_SUPPORTED: string;
|
|
573
|
+
SI_HANDOVER_SUPPORTED: string;
|
|
574
|
+
SIGN_INTERPRETER_SUPPORTED: string;
|
|
575
|
+
};
|
|
569
576
|
};
|
|
570
577
|
export declare const LOCUSINFO: {
|
|
571
578
|
EVENTS: {
|
|
@@ -884,6 +891,7 @@ export declare const DISPLAY_HINTS: {
|
|
|
884
891
|
DISABLE_ATTENDEE_START_POLLING_QA: string;
|
|
885
892
|
ATTENDEE_REQUEST_AI_ASSISTANT_ENABLED: string;
|
|
886
893
|
ATTENDEE_REQUEST_AI_ASSISTANT_DECLINED_ALL: string;
|
|
894
|
+
ANONYMOUS_DISPLAY_NAMES_ENABLED: string;
|
|
887
895
|
};
|
|
888
896
|
export declare const INTERSTITIAL_DISPLAY_HINTS: string[];
|
|
889
897
|
export declare const SELF_ROLES: {
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
declare const ENABLED = "enabled";
|
|
2
2
|
declare const CAN_SET = "canSet";
|
|
3
3
|
declare const CAN_UNSET = "canUnset";
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Body keys that represent audio controls. These do not support cross-locus
|
|
6
|
+
* authorization and must be sent directly to the current locus URL.
|
|
7
|
+
*/
|
|
8
|
+
declare const AUDIO_CONTROL_BODY_KEYS: ReadonlySet<string>;
|
|
9
|
+
export { ENABLED, CAN_SET, CAN_UNSET, AUDIO_CONTROL_BODY_KEYS };
|
|
@@ -118,6 +118,16 @@ export default class ControlsOptionsManager {
|
|
|
118
118
|
* @returns {Promise}
|
|
119
119
|
*/
|
|
120
120
|
private setControls;
|
|
121
|
+
/**
|
|
122
|
+
* Sends a controls request to Locus. When authorizingLocusUrl is present in the body,
|
|
123
|
+
* we use a plain request() because the response contains the main session Locus DTO
|
|
124
|
+
* instead of the breakout we're in, so we don't want to parse it as a delta.
|
|
125
|
+
* Otherwise we use locusDeltaRequest() for normal delta processing.
|
|
126
|
+
*
|
|
127
|
+
* @param {Object} requestParams - The request parameters from getControlsRequestParams.
|
|
128
|
+
* @returns {Promise<any>}
|
|
129
|
+
*/
|
|
130
|
+
private sendControlsRequest;
|
|
121
131
|
/**
|
|
122
132
|
* @public
|
|
123
133
|
* @param {boolean} enabled
|
|
@@ -2,6 +2,11 @@ import HashTree from './hashTree';
|
|
|
2
2
|
import { Enum } from '../constants';
|
|
3
3
|
import { HtMeta, HashTreeObject } from './types';
|
|
4
4
|
import { LocusDTO } from '../locus-info/types';
|
|
5
|
+
export declare enum SyncAllBackoffType {
|
|
6
|
+
NONE = "none",
|
|
7
|
+
ONLY_LLM = "onlyLLM",
|
|
8
|
+
ALL = "all"
|
|
9
|
+
}
|
|
5
10
|
export interface DataSet {
|
|
6
11
|
url: string;
|
|
7
12
|
root: string;
|
|
@@ -13,9 +18,11 @@ export interface DataSet {
|
|
|
13
18
|
maxMs: number;
|
|
14
19
|
exponent: number;
|
|
15
20
|
};
|
|
21
|
+
heartbeatIntervalMs?: number;
|
|
16
22
|
}
|
|
17
23
|
export interface RootHashMessage {
|
|
18
24
|
dataSets: Array<DataSet>;
|
|
25
|
+
heartbeatIntervalMs?: number;
|
|
19
26
|
}
|
|
20
27
|
export interface HashTreeMessage {
|
|
21
28
|
dataSets: Array<DataSet>;
|
|
@@ -38,22 +45,41 @@ interface InternalDataSet extends DataSet {
|
|
|
38
45
|
hashTree?: HashTree;
|
|
39
46
|
timer?: ReturnType<typeof setTimeout>;
|
|
40
47
|
heartbeatWatchdogTimer?: ReturnType<typeof setTimeout>;
|
|
48
|
+
syncAbortController?: AbortController;
|
|
41
49
|
}
|
|
42
50
|
type WebexRequestMethod = (options: Record<string, any>) => Promise<any>;
|
|
43
51
|
export declare const LocusInfoUpdateType: {
|
|
44
52
|
readonly OBJECTS_UPDATED: "OBJECTS_UPDATED";
|
|
45
53
|
readonly MEETING_ENDED: "MEETING_ENDED";
|
|
54
|
+
readonly LOCUS_NOT_FOUND: "LOCUS_NOT_FOUND";
|
|
46
55
|
};
|
|
47
56
|
export type LocusInfoUpdateType = Enum<typeof LocusInfoUpdateType>;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
57
|
+
interface LocusUpdatePayloads {
|
|
58
|
+
[LocusInfoUpdateType.OBJECTS_UPDATED]: {
|
|
59
|
+
updatedObjects: HashTreeObject[];
|
|
60
|
+
};
|
|
61
|
+
[LocusInfoUpdateType.MEETING_ENDED]: unknown;
|
|
62
|
+
[LocusInfoUpdateType.LOCUS_NOT_FOUND]: unknown;
|
|
63
|
+
}
|
|
64
|
+
export type LocusInfoUpdate = {
|
|
65
|
+
[K in keyof LocusUpdatePayloads]: {
|
|
66
|
+
updateType: K;
|
|
67
|
+
} & LocusUpdatePayloads[K];
|
|
68
|
+
}[keyof LocusUpdatePayloads];
|
|
69
|
+
export type LocusInfoUpdateCallback = (update: LocusInfoUpdate) => void;
|
|
51
70
|
/**
|
|
52
71
|
* This error is thrown if we receive information that the meeting has ended while we're processing some hash messages.
|
|
53
72
|
* It's handled internally by HashTreeParser and results in MEETING_ENDED being sent up.
|
|
54
73
|
*/
|
|
55
74
|
export declare class MeetingEndedError extends Error {
|
|
56
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* This error is thrown when a 404 is received from Locus hash tree endpoints, indicating that the locus URL
|
|
78
|
+
* is no longer valid (e.g. participant moved to a breakout room, or meeting ended).
|
|
79
|
+
* It's handled internally by HashTreeParser and results in LOCUS_NOT_FOUND being sent up.
|
|
80
|
+
*/
|
|
81
|
+
export declare class LocusNotFoundError extends Error {
|
|
82
|
+
}
|
|
57
83
|
/**
|
|
58
84
|
* Parses hash tree eventing locus data
|
|
59
85
|
*/
|
|
@@ -64,9 +90,14 @@ declare class HashTreeParser {
|
|
|
64
90
|
locusInfoUpdateCallback: LocusInfoUpdateCallback;
|
|
65
91
|
visibleDataSets: VisibleDataSetInfo[];
|
|
66
92
|
debugId: string;
|
|
67
|
-
heartbeatIntervalMs?: number;
|
|
68
93
|
private excludedDataSets;
|
|
69
94
|
state: 'active' | 'stopped';
|
|
95
|
+
private syncQueue;
|
|
96
|
+
private isSyncInProgress;
|
|
97
|
+
private syncAllBackoffType;
|
|
98
|
+
private dataSetsSyncedDuringBackoff;
|
|
99
|
+
private syncQueueProcessingPromise;
|
|
100
|
+
private topLevelHeartbeatIntervalMs?;
|
|
70
101
|
/**
|
|
71
102
|
* Constructor for HashTreeParser
|
|
72
103
|
* @param {Object} options
|
|
@@ -120,14 +151,6 @@ declare class HashTreeParser {
|
|
|
120
151
|
* @returns {Promise}
|
|
121
152
|
*/
|
|
122
153
|
private initializeNewVisibleDataSet;
|
|
123
|
-
/**
|
|
124
|
-
* Sends a special sync request to Locus with all leaves empty - this is a way to get all the data for a given dataset.
|
|
125
|
-
*
|
|
126
|
-
* @param {string} datasetName - name of the dataset for which to send the request
|
|
127
|
-
* @param {string} debugText - text to include in logs
|
|
128
|
-
* @returns {Promise}
|
|
129
|
-
*/
|
|
130
|
-
private sendInitializationSyncRequestToLocus;
|
|
131
154
|
/**
|
|
132
155
|
* Queries Locus for all up-to-date information about all visible data sets
|
|
133
156
|
*
|
|
@@ -193,6 +216,13 @@ declare class HashTreeParser {
|
|
|
193
216
|
* @returns {void}
|
|
194
217
|
*/
|
|
195
218
|
private handleRootHashHeartBeatMessage;
|
|
219
|
+
/**
|
|
220
|
+
* Handles known errors that can happen during syncs
|
|
221
|
+
*
|
|
222
|
+
* @param {any} error - The error to handle
|
|
223
|
+
* @returns {boolean} true if the error was recognized and handled, false otherwise
|
|
224
|
+
*/
|
|
225
|
+
private handleSyncErrors;
|
|
196
226
|
/**
|
|
197
227
|
* Asynchronously initializes new visible data sets
|
|
198
228
|
*
|
|
@@ -228,6 +258,14 @@ declare class HashTreeParser {
|
|
|
228
258
|
* @returns {void}
|
|
229
259
|
*/
|
|
230
260
|
private updateDataSetInfo;
|
|
261
|
+
/**
|
|
262
|
+
* Updates the leaf count for a data set, resizing its hash tree accordingly.
|
|
263
|
+
*
|
|
264
|
+
* @param {InternalDataSet} dataSet - The data set to update
|
|
265
|
+
* @param {number} newLeafCount - The new leaf count
|
|
266
|
+
* @returns {void}
|
|
267
|
+
*/
|
|
268
|
+
private updateDataSetLeafCount;
|
|
231
269
|
/**
|
|
232
270
|
* Checks for changes in the visible data sets based on the updated objects.
|
|
233
271
|
* @param {HashTreeObject[]} updatedObjects - The list of updated hash tree objects.
|
|
@@ -298,11 +336,88 @@ declare class HashTreeParser {
|
|
|
298
336
|
* Performs a sync for the given data set.
|
|
299
337
|
*
|
|
300
338
|
* @param {InternalDataSet} dataSet - The data set to sync
|
|
301
|
-
* @param {string} rootHash - Our current root hash for this data set
|
|
302
339
|
* @param {string} reason - The reason for the sync (used for logging)
|
|
340
|
+
* @param {boolean} [isInitialization] - Whether this is an initialization sync (sends empty leaves data instead of comparing hashes)
|
|
303
341
|
* @returns {Promise<void>}
|
|
304
342
|
*/
|
|
305
343
|
private performSync;
|
|
344
|
+
/**
|
|
345
|
+
* Cancels any pending or in-flight syncs for the specified data sets.
|
|
346
|
+
* This removes matching entries from the sync queue and aborts any in-flight sync HTTP requests.
|
|
347
|
+
*
|
|
348
|
+
* @param {string[]} dataSetNames - The names of the data sets to cancel syncs for
|
|
349
|
+
* @returns {void}
|
|
350
|
+
*/
|
|
351
|
+
private cancelPendingSyncsForDataSets;
|
|
352
|
+
/**
|
|
353
|
+
* If a syncAllDatasets backoff sleep is in progress, marks the given data sets to be skipped
|
|
354
|
+
* after the sleep completes.
|
|
355
|
+
*
|
|
356
|
+
* @param {string[]} dataSetNames - The names of the data sets to mark
|
|
357
|
+
* @returns {void}
|
|
358
|
+
*/
|
|
359
|
+
private markDataSetsForSyncAllBackoffSkip;
|
|
360
|
+
/**
|
|
361
|
+
* Aborts any in-flight sync HTTP requests for the specified data sets.
|
|
362
|
+
*
|
|
363
|
+
* @param {string[]} dataSetNames - The names of the data sets whose syncs should be aborted
|
|
364
|
+
* @returns {void}
|
|
365
|
+
*/
|
|
366
|
+
private abortInFlightSyncs;
|
|
367
|
+
/**
|
|
368
|
+
* Enqueues a sync for the given data set. If the data set is already in the queue, the request is ignored.
|
|
369
|
+
* This ensures that all syncs are executed sequentially and no more than 1 sync runs at a time.
|
|
370
|
+
*
|
|
371
|
+
* @param {string} dataSetName - The name of the data set to sync
|
|
372
|
+
* @param {string} reason - The reason for the sync (used for logging)
|
|
373
|
+
* @param {boolean} [isInitialization=false] - Whether this is an initialization sync (uses empty leaves data instead of hash comparison)
|
|
374
|
+
* @returns {void}
|
|
375
|
+
*/
|
|
376
|
+
private enqueueSyncForDataset;
|
|
377
|
+
/**
|
|
378
|
+
* Processes the sync queue sequentially. Only one instance of this method runs at a time.
|
|
379
|
+
*
|
|
380
|
+
* @returns {Promise<void>}
|
|
381
|
+
*/
|
|
382
|
+
private processSyncQueue;
|
|
383
|
+
/**
|
|
384
|
+
* sets the backoff type for syncAllDatasets calls, which determines the scope of datasets that will be synced after the backoff delay.
|
|
385
|
+
*
|
|
386
|
+
* @param {boolean} onlyLLM - Whether the backoff is for a syncAllDatasets call that is syncing only LLM datasets
|
|
387
|
+
* @returns {void}
|
|
388
|
+
*/
|
|
389
|
+
private setSyncAllBackoffType;
|
|
390
|
+
/**
|
|
391
|
+
* Checks if a syncAll backoff is already in progress. If so, upgrades the scope from
|
|
392
|
+
* onlyLLM to all datasets when the new call has a broader scope.
|
|
393
|
+
*
|
|
394
|
+
* @param {boolean} onlyLLM - Whether the current call is for LLM datasets only
|
|
395
|
+
* @returns {boolean} true if a backoff is already pending (caller should return early)
|
|
396
|
+
*/
|
|
397
|
+
private tryUpgradePendingBackoff;
|
|
398
|
+
/**
|
|
399
|
+
* Syncs all data sets that have hash trees, one by one in sequence, using the priority order
|
|
400
|
+
* provided by sortByInitPriority().
|
|
401
|
+
*
|
|
402
|
+
* If a call is already waiting in the backoff delay phase, a new call with a broader scope
|
|
403
|
+
* (onlyLLM=false) will upgrade the pending scope, and the dataset list will be computed after
|
|
404
|
+
* the backoff using the upgraded scope. After the backoff, the sync queue handles deduplication
|
|
405
|
+
* so no guard is needed.
|
|
406
|
+
*
|
|
407
|
+
* @param {Object} [options={}] - Options for syncing
|
|
408
|
+
* @param {boolean} [options.onlyLLM=false] - Whether to sync only LLM based data sets
|
|
409
|
+
* @returns {Promise<void>}
|
|
410
|
+
*/
|
|
411
|
+
syncAllDatasets(options?: {
|
|
412
|
+
onlyLLM?: boolean;
|
|
413
|
+
}): Promise<void>;
|
|
414
|
+
/**
|
|
415
|
+
* Returns the list of data sets that have hash trees, sorted by the priority order provided by sortByInitPriority().
|
|
416
|
+
*
|
|
417
|
+
* @param {boolean} onlyLLM - Whether to include only LLM based data sets
|
|
418
|
+
* @returns {Array<{name: string, backoff: {maxMs: number, exponent: number}}>} The sorted list of data sets with their backoff configurations
|
|
419
|
+
*/
|
|
420
|
+
private getSortedDataSetsWithHashTrees;
|
|
306
421
|
/**
|
|
307
422
|
* Runs the sync algorithm for the given data set.
|
|
308
423
|
*
|
|
@@ -333,24 +448,38 @@ declare class HashTreeParser {
|
|
|
333
448
|
*/
|
|
334
449
|
stop(): void;
|
|
335
450
|
/**
|
|
336
|
-
*
|
|
451
|
+
* Cleans up the HashTreeParser, stopping all timers and clearing all internal state.
|
|
452
|
+
* After calling this, the parser should not be used anymore.
|
|
453
|
+
* @returns {void}
|
|
454
|
+
*/
|
|
455
|
+
cleanUp(): void;
|
|
456
|
+
/**
|
|
457
|
+
* Resumes the HashTreeParser that was previously stopped, using a hash tree message.
|
|
337
458
|
* @param {HashTreeMessage} message - The message to resume with, it must contain metadata with visible data sets info
|
|
338
459
|
* @returns {void}
|
|
339
460
|
*/
|
|
340
|
-
|
|
461
|
+
resumeFromMessage(message: HashTreeMessage): void;
|
|
462
|
+
/**
|
|
463
|
+
* Resumes the HashTreeParser that was previously stopped, using a Locus API response.
|
|
464
|
+
* Unlike resumeFromMessage(), this does not require metadata/dataSets in the input,
|
|
465
|
+
* as it fetches all necessary information from Locus via initializeFromGetLociResponse.
|
|
466
|
+
* @param {LocusDTO} locus - locus object from an API response
|
|
467
|
+
* @returns {Promise}
|
|
468
|
+
*/
|
|
469
|
+
resumeFromApiResponse(locus: LocusDTO): Promise<void>;
|
|
341
470
|
private checkForSentinelHttpResponse;
|
|
342
471
|
/**
|
|
343
472
|
* Gets the current hashes from the locus for a specific data set.
|
|
344
473
|
* @param {string} dataSetName
|
|
345
474
|
* @param {string} currentRootHash
|
|
346
|
-
* @returns {
|
|
475
|
+
* @returns {Object|null} An object containing the hashes and leaf count, or null if the hashes match and no sync is needed
|
|
347
476
|
*/
|
|
348
477
|
private getHashesFromLocus;
|
|
349
478
|
/**
|
|
350
479
|
* Sends a sync request to Locus for the specified data set.
|
|
351
480
|
*
|
|
352
481
|
* @param {InternalDataSet} dataSet The data set to sync.
|
|
353
|
-
* @param {
|
|
482
|
+
* @param {Object} options Either `{ isInitialization: true }` for init syncs (uses leafCount=1 with empty leaf data) or `{ mismatchedLeavesData }` for normal syncs.
|
|
354
483
|
* @returns {Promise<HashTreeMessage|null>}
|
|
355
484
|
*/
|
|
356
485
|
private sendSyncRequestToLocus;
|
|
@@ -20,3 +20,21 @@ export declare function isMetadata(object: HashTreeObject): boolean;
|
|
|
20
20
|
* @returns {void}
|
|
21
21
|
*/
|
|
22
22
|
export declare const deleteNestedObjectsWithHtMeta: (currentLocusPart: any, parent?: any, currentKey?: string | number) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Reorders items so that those matching the given priority list come first (in priority order),
|
|
25
|
+
* followed by everything else in their original order.
|
|
26
|
+
*
|
|
27
|
+
* @param {Array<T>} items - The items to reorder
|
|
28
|
+
* @param {string[]} priority - Ordered list of names that should come first
|
|
29
|
+
* @returns {Array<T>} A new array with prioritized items first
|
|
30
|
+
*/
|
|
31
|
+
export declare function sortByInitPriority<T extends {
|
|
32
|
+
name: string;
|
|
33
|
+
}>(items: T[], priority: string[]): T[];
|
|
34
|
+
/**
|
|
35
|
+
* Sleeps for the specified amount of milliseconds
|
|
36
|
+
*
|
|
37
|
+
* @param {number} ms amount of milliseconds to sleep
|
|
38
|
+
* @returns {Promise<void>} A promise that resolves after the specified delay
|
|
39
|
+
*/
|
|
40
|
+
export declare function sleep(ms: number): Promise<void>;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -16,6 +16,9 @@ export * as REACTIONS from './reactions/reactions';
|
|
|
16
16
|
export * as sdkAnnotationTypes from './annotation/annotation.types';
|
|
17
17
|
export * as MeetingInfoV2 from './meeting-info/meeting-info-v2';
|
|
18
18
|
export { type Reaction } from './reactions/reactions.type';
|
|
19
|
+
export { SitePreferenceSelectOption } from './meetings/meetings.types';
|
|
20
|
+
export type { FetchSitePreferencesMeViaSiteOptions, SitePreferencesResponse, } from './meetings/meetings.types';
|
|
21
|
+
export type { Interpreter, InterpreterUsingResource } from './interpretation/interpretation.types';
|
|
19
22
|
export { CaptchaError, IntentToJoinError, JoinMeetingError, PasswordError, PermissionError, ReclaimHostIsHostAlreadyError, ReclaimHostNotAllowedError, ReclaimHostNotSupportedError, ReclaimHostEmptyWrongKeyError, Meeting, MeetingInfoUtil, JoinWebinarError, SdpResponseTimeoutError, };
|
|
20
23
|
export { RemoteMedia } from './multistream/remoteMedia';
|
|
21
24
|
export { default as TriggerProxy } from './common/events/trigger-proxy';
|
|
@@ -11,11 +11,11 @@ export default class LocusRetryStatusInterceptor extends Interceptor {
|
|
|
11
11
|
*/
|
|
12
12
|
static create(): LocusRetryStatusInterceptor;
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
* @param {
|
|
16
|
-
* @
|
|
17
|
-
* @returns {Promise<WebexHttpError>}
|
|
14
|
+
* Check whether a URI is a Locus /hashtree or /sync endpoint.
|
|
15
|
+
* @param {string} uri
|
|
16
|
+
* @returns {boolean}
|
|
18
17
|
*/
|
|
18
|
+
private static isLocusHashtreeOrSync;
|
|
19
19
|
onResponseError(options: any, reason: any): Promise<unknown>;
|
|
20
20
|
/**
|
|
21
21
|
* Handle retries for locus service unavailable errors
|