@webex/plugin-meetings 3.3.1-next.28 → 3.3.1-next.29
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/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/index.js +46 -25
- package/dist/meeting/index.js.map +1 -1
- package/dist/webinar/index.js +1 -1
- package/package.json +21 -21
- package/src/meeting/index.ts +5 -0
- package/test/unit/spec/meeting/index.js +27 -1
package/dist/webinar/index.js
CHANGED
|
@@ -62,7 +62,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
62
62
|
updateCanManageWebcast: function updateCanManageWebcast(canManageWebcast) {
|
|
63
63
|
this.set('canManageWebcast', canManageWebcast);
|
|
64
64
|
},
|
|
65
|
-
version: "3.3.1-next.
|
|
65
|
+
version: "3.3.1-next.29"
|
|
66
66
|
});
|
|
67
67
|
var _default = exports.default = Webinar;
|
|
68
68
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -43,13 +43,13 @@
|
|
|
43
43
|
"@webex/eslint-config-legacy": "0.0.0",
|
|
44
44
|
"@webex/jest-config-legacy": "0.0.0",
|
|
45
45
|
"@webex/legacy-tools": "0.0.0",
|
|
46
|
-
"@webex/plugin-meetings": "3.3.1-next.
|
|
47
|
-
"@webex/plugin-rooms": "3.3.1-next.
|
|
48
|
-
"@webex/test-helper-chai": "3.3.1-next.
|
|
49
|
-
"@webex/test-helper-mocha": "3.3.1-next.
|
|
50
|
-
"@webex/test-helper-mock-webex": "3.3.1-next.
|
|
51
|
-
"@webex/test-helper-retry": "3.3.1-next.
|
|
52
|
-
"@webex/test-helper-test-users": "3.3.1-next.
|
|
46
|
+
"@webex/plugin-meetings": "3.3.1-next.29",
|
|
47
|
+
"@webex/plugin-rooms": "3.3.1-next.7",
|
|
48
|
+
"@webex/test-helper-chai": "3.3.1-next.6",
|
|
49
|
+
"@webex/test-helper-mocha": "3.3.1-next.6",
|
|
50
|
+
"@webex/test-helper-mock-webex": "3.3.1-next.6",
|
|
51
|
+
"@webex/test-helper-retry": "3.3.1-next.6",
|
|
52
|
+
"@webex/test-helper-test-users": "3.3.1-next.6",
|
|
53
53
|
"chai": "^4.3.4",
|
|
54
54
|
"chai-as-promised": "^7.1.1",
|
|
55
55
|
"eslint": "^8.24.0",
|
|
@@ -61,21 +61,21 @@
|
|
|
61
61
|
"typescript": "^4.7.4"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@webex/common": "3.3.1-next.
|
|
64
|
+
"@webex/common": "3.3.1-next.6",
|
|
65
65
|
"@webex/internal-media-core": "2.7.3",
|
|
66
|
-
"@webex/internal-plugin-conversation": "3.3.1-next.
|
|
67
|
-
"@webex/internal-plugin-device": "3.3.1-next.
|
|
68
|
-
"@webex/internal-plugin-llm": "3.3.1-next.
|
|
69
|
-
"@webex/internal-plugin-mercury": "3.3.1-next.
|
|
70
|
-
"@webex/internal-plugin-metrics": "3.3.1-next.
|
|
71
|
-
"@webex/internal-plugin-support": "3.3.1-next.
|
|
72
|
-
"@webex/internal-plugin-user": "3.3.1-next.
|
|
73
|
-
"@webex/internal-plugin-voicea": "3.3.1-next.
|
|
74
|
-
"@webex/media-helpers": "3.3.1-next.
|
|
75
|
-
"@webex/plugin-people": "3.3.1-next.
|
|
76
|
-
"@webex/plugin-rooms": "3.3.1-next.
|
|
66
|
+
"@webex/internal-plugin-conversation": "3.3.1-next.7",
|
|
67
|
+
"@webex/internal-plugin-device": "3.3.1-next.6",
|
|
68
|
+
"@webex/internal-plugin-llm": "3.3.1-next.8",
|
|
69
|
+
"@webex/internal-plugin-mercury": "3.3.1-next.7",
|
|
70
|
+
"@webex/internal-plugin-metrics": "3.3.1-next.6",
|
|
71
|
+
"@webex/internal-plugin-support": "3.3.1-next.7",
|
|
72
|
+
"@webex/internal-plugin-user": "3.3.1-next.6",
|
|
73
|
+
"@webex/internal-plugin-voicea": "3.3.1-next.29",
|
|
74
|
+
"@webex/media-helpers": "3.3.1-next.11",
|
|
75
|
+
"@webex/plugin-people": "3.3.1-next.7",
|
|
76
|
+
"@webex/plugin-rooms": "3.3.1-next.7",
|
|
77
77
|
"@webex/web-capabilities": "^1.4.0",
|
|
78
|
-
"@webex/webex-core": "3.3.1-next.
|
|
78
|
+
"@webex/webex-core": "3.3.1-next.6",
|
|
79
79
|
"ampersand-collection": "^2.0.2",
|
|
80
80
|
"bowser": "^2.11.0",
|
|
81
81
|
"btoa": "^1.2.1",
|
|
@@ -91,5 +91,5 @@
|
|
|
91
91
|
"//": [
|
|
92
92
|
"TODO: upgrade jwt-decode when moving to node 18"
|
|
93
93
|
],
|
|
94
|
-
"version": "3.3.1-next.
|
|
94
|
+
"version": "3.3.1-next.29"
|
|
95
95
|
}
|
package/src/meeting/index.ts
CHANGED
|
@@ -6353,6 +6353,11 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
6353
6353
|
'unknown',
|
|
6354
6354
|
iceConnected,
|
|
6355
6355
|
turnServerUsed: this.turnServerUsed,
|
|
6356
|
+
unreachable:
|
|
6357
|
+
// @ts-ignore
|
|
6358
|
+
await this.webex.meetings.reachability
|
|
6359
|
+
.isWebexMediaBackendUnreachable()
|
|
6360
|
+
.catch(() => false),
|
|
6356
6361
|
}),
|
|
6357
6362
|
}
|
|
6358
6363
|
),
|
|
@@ -101,6 +101,7 @@ import {
|
|
|
101
101
|
import {
|
|
102
102
|
DTLS_HANDSHAKE_FAILED_CLIENT_CODE,
|
|
103
103
|
ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE,
|
|
104
|
+
ICE_AND_REACHABILITY_FAILED_CLIENT_CODE,
|
|
104
105
|
ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE,
|
|
105
106
|
ICE_FAILURE_CLIENT_CODE,
|
|
106
107
|
MISSING_ROAP_ANSWER_CLIENT_CODE,
|
|
@@ -2218,8 +2219,13 @@ describe('plugin-meetings', () => {
|
|
|
2218
2219
|
it('should reject if waitForMediaConnectionConnected() rejects after turn server retry', async () => {
|
|
2219
2220
|
const FAKE_ERROR = {fatal: true};
|
|
2220
2221
|
const getErrorPayloadForClientErrorCodeStub =
|
|
2222
|
+
|
|
2221
2223
|
(webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode =
|
|
2222
2224
|
sinon.stub().returns(FAKE_ERROR));
|
|
2225
|
+
webex.meetings.reachability = {
|
|
2226
|
+
isWebexMediaBackendUnreachable: sinon.stub().resolves(false),
|
|
2227
|
+
getReachabilityMetrics: sinon.stub().resolves(),
|
|
2228
|
+
};
|
|
2223
2229
|
const MOCK_CLIENT_ERROR_CODE = 2004;
|
|
2224
2230
|
const generateClientErrorCodeForIceFailureStub = sinon
|
|
2225
2231
|
.stub(CallDiagnosticUtils, 'generateClientErrorCodeForIceFailure')
|
|
@@ -2273,11 +2279,13 @@ describe('plugin-meetings', () => {
|
|
|
2273
2279
|
signalingState: 'unknown',
|
|
2274
2280
|
iceConnected: false,
|
|
2275
2281
|
turnServerUsed: false,
|
|
2282
|
+
unreachable: false,
|
|
2276
2283
|
});
|
|
2277
2284
|
assert.calledWith(generateClientErrorCodeForIceFailureStub, {
|
|
2278
2285
|
signalingState: 'unknown',
|
|
2279
2286
|
iceConnected: false,
|
|
2280
2287
|
turnServerUsed: true,
|
|
2288
|
+
unreachable: false,
|
|
2281
2289
|
});
|
|
2282
2290
|
|
|
2283
2291
|
assert.calledTwice(getErrorPayloadForClientErrorCodeStub);
|
|
@@ -2414,6 +2422,10 @@ describe('plugin-meetings', () => {
|
|
|
2414
2422
|
|
|
2415
2423
|
it('should resolve if waitForMediaConnectionConnected() rejects the first time but resolves the second time', async () => {
|
|
2416
2424
|
const FAKE_ERROR = {fatal: true};
|
|
2425
|
+
webex.meetings.reachability = {
|
|
2426
|
+
isWebexMediaBackendUnreachable: sinon.stub().onCall(0).rejects().onCall(1).resolves(true).onCall(2).resolves(false),
|
|
2427
|
+
getReachabilityMetrics: sinon.stub().resolves({}),
|
|
2428
|
+
}
|
|
2417
2429
|
const getErrorPayloadForClientErrorCodeStub =
|
|
2418
2430
|
(webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode =
|
|
2419
2431
|
sinon.stub().returns(FAKE_ERROR));
|
|
@@ -2473,6 +2485,7 @@ describe('plugin-meetings', () => {
|
|
|
2473
2485
|
signalingState: 'unknown',
|
|
2474
2486
|
iceConnected: undefined,
|
|
2475
2487
|
turnServerUsed: false,
|
|
2488
|
+
unreachable: false,
|
|
2476
2489
|
});
|
|
2477
2490
|
|
|
2478
2491
|
assert.calledOnce(getErrorPayloadForClientErrorCodeStub);
|
|
@@ -3131,10 +3144,18 @@ describe('plugin-meetings', () => {
|
|
|
3131
3144
|
clientErrorCode: ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE,
|
|
3132
3145
|
expectedErrorPayload: {
|
|
3133
3146
|
errorDescription: ERROR_DESCRIPTIONS.ICE_FAILED_WITH_TURN_TLS,
|
|
3147
|
+
category: 'media',
|
|
3148
|
+
},
|
|
3149
|
+
},
|
|
3150
|
+
{
|
|
3151
|
+
clientErrorCode: ICE_AND_REACHABILITY_FAILED_CLIENT_CODE,
|
|
3152
|
+
unreachable: true,
|
|
3153
|
+
expectedErrorPayload: {
|
|
3154
|
+
errorDescription: ERROR_DESCRIPTIONS.ICE_AND_REACHABILITY_FAILED,
|
|
3134
3155
|
category: 'network',
|
|
3135
3156
|
},
|
|
3136
3157
|
},
|
|
3137
|
-
].forEach(({clientErrorCode, expectedErrorPayload}) => {
|
|
3158
|
+
].forEach(({clientErrorCode, expectedErrorPayload, unreachable}) => {
|
|
3138
3159
|
it(`should handle all ice failures correctly for ${clientErrorCode}`, async () => {
|
|
3139
3160
|
// setting the method to the real implementation
|
|
3140
3161
|
// because newMetrics is mocked completely in the webex-mock
|
|
@@ -3143,6 +3164,10 @@ describe('plugin-meetings', () => {
|
|
|
3143
3164
|
webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode =
|
|
3144
3165
|
CD.getErrorPayloadForClientErrorCode;
|
|
3145
3166
|
|
|
3167
|
+
webex.meetings.reachability = {
|
|
3168
|
+
isWebexMediaBackendUnreachable: sinon.stub().resolves(unreachable || false),
|
|
3169
|
+
};
|
|
3170
|
+
|
|
3146
3171
|
const generateClientErrorCodeForIceFailureStub = sinon
|
|
3147
3172
|
.stub(CallDiagnosticUtils, 'generateClientErrorCodeForIceFailure')
|
|
3148
3173
|
.returns(clientErrorCode);
|
|
@@ -3166,6 +3191,7 @@ describe('plugin-meetings', () => {
|
|
|
3166
3191
|
signalingState: 'unknown',
|
|
3167
3192
|
iceConnected: false,
|
|
3168
3193
|
turnServerUsed: true,
|
|
3194
|
+
unreachable: unreachable || false,
|
|
3169
3195
|
});
|
|
3170
3196
|
|
|
3171
3197
|
const submitClientEventCalls = webex.internal.newMetrics.submitClientEvent.getCalls();
|