Skip to content

Commit 3e4595a

Browse files
authored
feat: Sync setting for SFT calling beta program (#9271)
1 parent 0de82ea commit 3e4595a

File tree

7 files changed

+94
-54
lines changed

7 files changed

+94
-54
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
"@wireapp/antiscroll-2": "1.0.2",
44
"@wireapp/avs": "6.2.10",
55
"@wireapp/commons": "3.6.1",
6-
"@wireapp/core": "16.10.19",
6+
"@wireapp/core": "16.10.22",
77
"@wireapp/protocol-messaging": "1.25.4",
88
"@wireapp/react-ui-kit": "7.36.0",
99
"@wireapp/store-engine-dexie": "1.3.11",
1010
"@wireapp/store-engine-sqleet": "1.3.14",
11-
"@wireapp/webapp-events": "0.4.1",
11+
"@wireapp/webapp-events": "0.5.0",
1212
"amplify": "git+https://[email protected]/wireapp/amplify",
1313
"core-js": "2.6.10",
1414
"countly-sdk-web": "20.4.0",

src/page/template/content/preferences-av.htm

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,9 @@
134134
<section class="preferences-section">
135135
<header class="preferences-header" data-bind="text: t('preferencesOptionsEnableBetaProgramConferenceCalls')"></header>
136136
<div class="preferences-option">
137-
<div class="preferences-option-icon checkbox accent-text" data-bind="attr: {'data-uie-value': true}" data-uie-name="status-preference-beta-program">
138-
<input type="checkbox" id="beta-program-checkbox" data-bind="checked: false" disabled>
139-
<label class="preferences-options-checkbox-label disabled" for="beta-program-checkbox" data-bind="text: t('preferencesOptionsEnableBetaProgramCheckbox')"></label>
137+
<div class="preferences-option-icon checkbox accent-text" data-bind="attr: {'data-uie-value': optionSftCalling}" data-uie-name="status-preference-beta-program">
138+
<input type="checkbox" id="beta-program-checkbox" data-bind="checked: optionSftCalling">
139+
<label class="preferences-options-checkbox-label" for="beta-program-checkbox" data-bind="text: t('preferencesOptionsEnableBetaProgramCheckbox')"></label>
140140
</div>
141141
</div>
142142
<div class="preferences-detail">

src/script/calling/CallingRepository.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ export class CallingRepository {
9696
private readonly logger: Logger;
9797
private readonly callLog: string[];
9898
private readonly cbrEncoding: ko.Observable<number>;
99+
private readonly useSftCalling: ko.Observable<boolean>;
99100
private readonly acceptedVersionWarnings: ko.ObservableArray<string>;
100101
private readonly acceptVersionWarning: (conversationId: string) => void;
101102

@@ -142,6 +143,7 @@ export class CallingRepository {
142143
this.logger = getLogger('CallingRepository');
143144
this.callLog = [];
144145
this.cbrEncoding = ko.observable(0);
146+
this.useSftCalling = ko.observable(false);
145147

146148
this.subscribeToEvents();
147149
}
@@ -150,6 +152,10 @@ export class CallingRepository {
150152
this.cbrEncoding(vbrEnabled ? 0 : 1);
151153
}
152154

155+
toggleSftCalling(enableSftCalling: boolean) {
156+
this.useSftCalling(this.supportsConferenceCalling && enableSftCalling);
157+
}
158+
153159
getStats(conversationId: ConversationId): Promise<{stats: RTCStatsReport; userid: UserId}[]> {
154160
return this.wCall.getStats(conversationId);
155161
}
@@ -375,8 +381,10 @@ export class CallingRepository {
375381
amplify.subscribe(WebAppEvents.CALL.EVENT_FROM_BACKEND, this.onCallEvent.bind(this));
376382
amplify.subscribe(WebAppEvents.CALL.STATE.TOGGLE, this.toggleState.bind(this)); // This event needs to be kept, it is sent by the wrapper
377383
amplify.subscribe(WebAppEvents.PROPERTIES.UPDATE.CALL.ENABLE_VBR_ENCODING, this.toggleCbrEncoding.bind(this));
384+
amplify.subscribe(WebAppEvents.PROPERTIES.UPDATE.CALL.ENABLE_SFT_CALLING, this.toggleSftCalling.bind(this));
378385
amplify.subscribe(WebAppEvents.PROPERTIES.UPDATED, ({settings}: WebappProperties) => {
379386
this.toggleCbrEncoding(settings.call.enable_vbr_encoding);
387+
this.toggleSftCalling(settings.call.enable_sft_calling);
380388
});
381389
}
382390

@@ -506,7 +514,8 @@ export class CallingRepository {
506514
: Promise.resolve(true);
507515
const success = await loadPreviewPromise;
508516
if (success) {
509-
const conferenceCall = conversationType === CONV_TYPE.GROUP ? CONV_TYPE.CONFERENCE : conversationType;
517+
const conferenceCall =
518+
conversationType === CONV_TYPE.GROUP && this.useSftCalling() ? CONV_TYPE.CONFERENCE : conversationType;
510519
this.wCall.start(this.wUser, conversationId, callType, conferenceCall, this.cbrEncoding());
511520
} else {
512521
this.showNoCameraModal();

src/script/properties/PropertiesRepository.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ export class PropertiesRepository {
7171
enable_debugging: false,
7272
settings: {
7373
call: {
74+
enable_sft_calling: false,
7475
enable_vbr_encoding: true,
7576
},
7677
emoji: {
@@ -315,6 +316,9 @@ export class PropertiesRepository {
315316
case PROPERTIES_TYPE.CALL.ENABLE_VBR_ENCODING:
316317
amplify.publish(WebAppEvents.PROPERTIES.UPDATE.CALL.ENABLE_VBR_ENCODING, updatedPreference);
317318
break;
319+
case PROPERTIES_TYPE.CALL.ENABLE_SFT_CALLING:
320+
amplify.publish(WebAppEvents.PROPERTIES.UPDATE.CALL.ENABLE_SFT_CALLING, updatedPreference);
321+
break;
318322
default:
319323
throw new Error(`Failed to update preference of unhandled type '${propertiesType}'`);
320324
}

src/script/properties/PropertiesType.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ enum EMOJI {
2626
}
2727

2828
enum CALL {
29+
ENABLE_SFT_CALLING = 'settings.call.enable_sft_calling',
2930
ENABLE_VBR_ENCODING = 'settings.call.enable_vbr_encoding',
3031
}
3132

src/script/view_model/content/PreferencesAVViewModel.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ export class PreferencesAVViewModel {
7575
videoMediaStream: ko.PureComputed<MediaStream>;
7676
willChangeMediaSource: WillChangeMediaSource;
7777
optionVbrEncoding: ko.Observable<boolean>;
78+
optionSftCalling: ko.Observable<boolean>;
7879

7980
static get CONFIG() {
8081
return {
@@ -136,6 +137,11 @@ export class PreferencesAVViewModel {
136137
this.propertiesRepository.savePreference(PROPERTIES_TYPE.CALL.ENABLE_VBR_ENCODING, vbrEncoding);
137138
});
138139

140+
this.optionSftCalling = ko.observable(false);
141+
this.optionSftCalling.subscribe(enableSftCalling => {
142+
this.propertiesRepository.savePreference(PROPERTIES_TYPE.CALL.ENABLE_SFT_CALLING, enableSftCalling);
143+
});
144+
139145
amplify.subscribe(WebAppEvents.PROPERTIES.UPDATED, this.updateProperties.bind(this));
140146
this.updateProperties(this.propertiesRepository.properties);
141147
this.isRequestingAudio = ko.observable(false);
@@ -335,6 +341,7 @@ export class PreferencesAVViewModel {
335341
*/
336342
updateProperties = ({settings}: WebappProperties): void => {
337343
this.optionVbrEncoding(settings.call.enable_vbr_encoding);
344+
this.optionSftCalling(settings.call.enable_sft_calling);
338345
};
339346

340347
saveCallLogs(): number | void {

yarn.lock

Lines changed: 67 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1997,32 +1997,32 @@
19971997
resolved "https://registry.yarnpkg.com/@wireapp/antiscroll-2/-/antiscroll-2-1.0.2.tgz#71a78d294ee0c88f42d50477ab61fa39272f5bca"
19981998
integrity sha512-9KeB3yh9k01PjpuuRQsve4yY3+OVS2/hp9j+N13Is5wYCZRkUzZVCs8w9CyA/C6J5o9ukH0EzT7uurysWuhn/A==
19991999

2000-
"@wireapp/api-client@11.20.17":
2001-
version "11.20.17"
2002-
resolved "https://registry.yarnpkg.com/@wireapp/api-client/-/api-client-11.20.17.tgz#a9f046431ad2a4758758b55f4bf1188ec307292b"
2003-
integrity sha512-wSJyWc7Ip9Hej28eSKI5eLDQWu1Ni/bqNxuuNhnwzsW6C7QdXgnl8vXyXFnYNE6sMgathjWvxlpD5NHMSEeslQ==
2000+
"@wireapp/api-client@11.21.2":
2001+
version "11.21.2"
2002+
resolved "https://registry.yarnpkg.com/@wireapp/api-client/-/api-client-11.21.2.tgz#73be13b00ad1bf14be8372d02aee867bb4f89a07"
2003+
integrity sha512-6OpB+5c+pPujXmMZf1eLKicS12z79N1xGT4yjy5JEb3r1cdZEShQWfE9is9IBPEQl+83mchLusfRgCRkCxoLpw==
20042004
dependencies:
20052005
"@types/node" "~12"
20062006
"@types/spark-md5" "3.0.2"
20072007
"@types/tough-cookie" "4.0.0"
2008-
"@wireapp/commons" "3.6.1"
2009-
"@wireapp/priority-queue" "1.6.5"
2008+
"@wireapp/commons" "3.6.2"
2009+
"@wireapp/priority-queue" "1.6.6"
20102010
axios "0.19.2"
20112011
logdown "3.3.1"
20122012
reconnecting-websocket "4.4.0"
20132013
spark-md5 "3.0.1"
20142014
tough-cookie "4.0.0"
2015-
ws "7.2.5"
2015+
ws "7.3.1"
20162016

20172017
"@wireapp/[email protected]":
20182018
version "6.2.10"
20192019
resolved "https://registry.yarnpkg.com/@wireapp/avs/-/avs-6.2.10.tgz#bcec0473c30005257ce60ecd8b81346418ee6dd9"
20202020
integrity sha512-s/vL9i6d6jwjM6OlKUIgWRlfgqOtJ8PCSfstspGauKHQuubDwR3j+D6UXZHu0jZSs8aMyBdYhB70KqdJo670/g==
20212021

2022-
"@wireapp/[email protected].9":
2023-
version "4.6.9"
2024-
resolved "https://registry.yarnpkg.com/@wireapp/cbor/-/cbor-4.6.9.tgz#be8a0e33e3a1aa4285db647f571bc0b5f0bc68f9"
2025-
integrity sha512-wtOx2I7huRSobtSEXzspN13z8LU/EFADJK+zAp/FSo3EU03nq67s1PG1zhYsdwzynnyEFVOtK0KjraqEMroGxg==
2022+
"@wireapp/[email protected].10":
2023+
version "4.6.10"
2024+
resolved "https://registry.yarnpkg.com/@wireapp/cbor/-/cbor-4.6.10.tgz#e95e9a0a3cd9b77fb8552267e46d79ee5aa0d8cd"
2025+
integrity sha512-vc4XI+HSsmxl0VtPDOwkL83kQXxpy7lRnIypLgP/Fx9XX4e8/BKcKtIPhClkQYCWwFHVBFBvfnY7htgZr11HzQ==
20262026

20272027
"@wireapp/[email protected]":
20282028
version "3.6.1"
@@ -2038,6 +2038,20 @@
20382038
platform "1.3.5"
20392039
url-search-params-polyfill "8.1.0"
20402040

2041+
"@wireapp/[email protected]":
2042+
version "3.6.2"
2043+
resolved "https://registry.yarnpkg.com/@wireapp/commons/-/commons-3.6.2.tgz#951ca9e61041e3027f5c36dbf028d95ba435d8e6"
2044+
integrity sha512-C1X0Z/ekLO0H4O+x6fS48PyCjEx5B7ye1gT+LS08g01Thpbs1vucfPRHPUernGwoabnM5kGPSLu9X/BH84c1sg==
2045+
dependencies:
2046+
"@types/fs-extra" "8.1.0"
2047+
"@types/node" "~12"
2048+
"@types/platform" "1.3.2"
2049+
ansi-regex "5.0.0"
2050+
fs-extra "9.0.0"
2051+
logdown "3.3.1"
2052+
platform "1.3.5"
2053+
url-search-params-polyfill "8.1.0"
2054+
20412055
"@wireapp/[email protected]":
20422056
version "1.0.13"
20432057
resolved "https://registry.yarnpkg.com/@wireapp/copy-config/-/copy-config-1.0.13.tgz#cea4a6e953bd23264e28312e57377e947ea7fab6"
@@ -2051,34 +2065,34 @@
20512065
logdown "3.3.1"
20522066
rimraf "3.0.2"
20532067

2054-
"@wireapp/[email protected].19":
2055-
version "16.10.19"
2056-
resolved "https://registry.yarnpkg.com/@wireapp/core/-/core-16.10.19.tgz#71b16b84ce65f43a07ff5e00dc5d4bdb4e1ef16d"
2057-
integrity sha512-s1IvUi041goFM2s59HI8f2+7NeoWvoL48l+FcVna8J4RtlUaVSyVFiGs3hDqqcIOR1BwSbdxa4M1gtIy6QXqjg==
2068+
"@wireapp/[email protected].22":
2069+
version "16.10.22"
2070+
resolved "https://registry.yarnpkg.com/@wireapp/core/-/core-16.10.22.tgz#a5047fd0d7bc30026176759250cc67f8fc77fc59"
2071+
integrity sha512-2YVAh8iW++XLztbayqHFrWXz3/m9ZcV7BmgglvtdRuz0A1gq7A4HiiMgxVTCVfnZMmGEeaOlRGpcu0By28jA3Q==
20582072
dependencies:
20592073
"@types/long" "4.0.1"
20602074
"@types/node" "~12"
2061-
"@wireapp/api-client" "11.20.17"
2062-
"@wireapp/cryptobox" "12.2.18"
2075+
"@wireapp/api-client" "11.21.2"
2076+
"@wireapp/cryptobox" "12.2.19"
20632077
"@wireapp/protocol-messaging" "1.25.4"
2064-
"@wireapp/store-engine" "4.5.7"
2065-
bazinga64 "5.7.7"
2078+
"@wireapp/store-engine" "4.5.8"
2079+
bazinga64 "5.7.8"
20662080
hash.js "1.1.7"
20672081
logdown "3.3.1"
20682082
protobufjs "6.9.0"
20692083
uuidjs "4.2.5"
20702084

2071-
"@wireapp/[email protected].18":
2072-
version "12.2.18"
2073-
resolved "https://registry.yarnpkg.com/@wireapp/cryptobox/-/cryptobox-12.2.18.tgz#4f5da2e2474fb443ce0274a6bf96b16646a2ef15"
2074-
integrity sha512-D2gG1xBKWNCh4VazuPDUQuIZUTEG/tSKducJNaJEgc6QzN8QJHu9Pns1uce2MOtvkKBA6x0N42gNznLwYzNXzQ==
2085+
"@wireapp/[email protected].19":
2086+
version "12.2.19"
2087+
resolved "https://registry.yarnpkg.com/@wireapp/cryptobox/-/cryptobox-12.2.19.tgz#a9410b326338db40311dd76cbe2eaa5cd8bf5587"
2088+
integrity sha512-/BAGjnLEsOqH7kXP8NasNJmZjFbfeloXIsRP+DY2C7FQvLwgJWz1DQbEYJUntithyHZj2zi9qpPzS+VzeO5Ghw==
20752089
dependencies:
20762090
"@types/node" "~12"
20772091
"@wireapp/lru-cache" "3.6.9"
2078-
"@wireapp/priority-queue" "1.6.5"
2079-
"@wireapp/proteus" "9.8.12"
2080-
"@wireapp/store-engine" "4.5.7"
2081-
bazinga64 "5.7.7"
2092+
"@wireapp/priority-queue" "1.6.6"
2093+
"@wireapp/proteus" "9.8.13"
2094+
"@wireapp/store-engine" "4.5.8"
2095+
bazinga64 "5.7.8"
20822096
logdown "3.3.1"
20832097

20842098
"@wireapp/[email protected]":
@@ -2096,25 +2110,25 @@
20962110
resolved "https://registry.yarnpkg.com/@wireapp/prettier-config/-/prettier-config-0.3.0.tgz#e8129b31021c81d90d564d9c4ff0f7f7b514e943"
20972111
integrity sha512-BFokvX4NZlkhWq5/OoJUCS8Iels+MeRgzpd5V9QR3hj5swwCFGxJOAL7soPXkSNWo91gI1qwiTp8szB1O9aCfQ==
20982112

2099-
"@wireapp/[email protected].5":
2100-
version "1.6.5"
2101-
resolved "https://registry.yarnpkg.com/@wireapp/priority-queue/-/priority-queue-1.6.5.tgz#fd852941373b46c70b2af0daced8ac24e057ed9b"
2102-
integrity sha512-rY67w3wC/Si7Dpg9x7q9bsbBZ8X09TjmK02hCB3he8AB8m7AZPOg1H/FxZ5Pz0+VGQvCe095M4sd+pLDuCPzdQ==
2113+
"@wireapp/[email protected].6":
2114+
version "1.6.6"
2115+
resolved "https://registry.yarnpkg.com/@wireapp/priority-queue/-/priority-queue-1.6.6.tgz#c0503a3db12b27017229d2aa8f4a352c598b3b4f"
2116+
integrity sha512-K1qaZqrwKKEvkXnQU0e+9rqgBBawnOFbBJhwNnC4Yabxbu9+XstOVR1iZ3hPfMwX1Vgps9u+GxzEjQCQp2y2pA==
21032117
dependencies:
21042118
"@types/node" "~12"
21052119
logdown "3.3.1"
21062120
uuidjs "4.2.5"
21072121

2108-
"@wireapp/[email protected].12":
2109-
version "9.8.12"
2110-
resolved "https://registry.yarnpkg.com/@wireapp/proteus/-/proteus-9.8.12.tgz#8ecca75ccd946fd76b14c6a6f82304f6e9a02160"
2111-
integrity sha512-La5iMD9F+OdN3UeNQ18DgipDRg8vd3EfkV+65ONcWUqs6/h7HfGpnb4LFKU+/0VwIxJCbmMLiDBS2ATE7JeUmQ==
2122+
"@wireapp/[email protected].13":
2123+
version "9.8.13"
2124+
resolved "https://registry.yarnpkg.com/@wireapp/proteus/-/proteus-9.8.13.tgz#606e80eeeb51d783c819f2949ad2a766f4f2a330"
2125+
integrity sha512-wkkE5Qd0J1NmQMqNlgQC8v6sUBpQs3HBXDyzOUAyQyn8OVsfRUrJR15PLqnmsiaPTJ/qsrWHflO2ov+lDGIYIA==
21122126
dependencies:
21132127
"@types/chai" "4.2.11"
21142128
"@types/ed2curve" "0.2.2"
21152129
"@types/libsodium-wrappers-sumo" "0.7.3"
21162130
"@types/node" "~12"
2117-
"@wireapp/cbor" "4.6.9"
2131+
"@wireapp/cbor" "4.6.10"
21182132
ed2curve "0.3.0"
21192133
libsodium-wrappers-sumo "0.7.6"
21202134

@@ -2158,17 +2172,17 @@
21582172
"@wireapp/websql" "0.0.17"
21592173
uint32 "0.2.1"
21602174

2161-
"@wireapp/[email protected].7":
2162-
version "4.5.7"
2163-
resolved "https://registry.yarnpkg.com/@wireapp/store-engine/-/store-engine-4.5.7.tgz#cb5fdbd3a0cdfec37252675e1a0e6ec4f399d435"
2164-
integrity sha512-km/oeKLZO0V3H2mzX2nAyXYbsETy3qES5f6g+5eXwHLox4q7W7ZOedxUgnX80KeycQ07EvQYnxXYFkI5uKIdGA==
2175+
"@wireapp/[email protected].8":
2176+
version "4.5.8"
2177+
resolved "https://registry.yarnpkg.com/@wireapp/store-engine/-/store-engine-4.5.8.tgz#c2f4e430c1e7b119feaa61f64a5a452323b2de69"
2178+
integrity sha512-Iq7GkfNJ6wH59ZTC6jSDG1i/fcaK9eVf97eut2o2xXQ366WfHfGCJDgfV40po8qIPdZ9wChyKDuNiGJnwfsAvw==
21652179
dependencies:
21662180
"@types/node" "~12"
21672181

2168-
"@wireapp/webapp-events@0.4.1":
2169-
version "0.4.1"
2170-
resolved "https://registry.yarnpkg.com/@wireapp/webapp-events/-/webapp-events-0.4.1.tgz#6e56fc6e9b6559ec42d18e4316a6fe71f0ccd6ed"
2171-
integrity sha512-aC9IxlKwNNoEt5dK4sfzTHRU6s+IGZT4dHaNcUfV03ysFpTIeD8BEUN3YBUxnpuLc0C4MlmryRDfZjse7w9G0A==
2182+
"@wireapp/webapp-events@0.5.0":
2183+
version "0.5.0"
2184+
resolved "https://registry.yarnpkg.com/@wireapp/webapp-events/-/webapp-events-0.5.0.tgz#cc583c9817b171e657d03144f988e0d8c31deada"
2185+
integrity sha512-xG1Ib4oct2aXgGPXejV/Z2tUF8XZSxrsYFPDl7vAqAh4n7Gzjrcwoyp2YNFjhQtpmBlfJZ/zESGYnKBFnx0bIQ==
21722186

21732187
"@wireapp/[email protected]":
21742188
version "0.0.17"
@@ -3003,6 +3017,11 @@ [email protected]:
30033017
resolved "https://registry.yarnpkg.com/bazinga64/-/bazinga64-5.7.7.tgz#33718ecd3e48ca6d81112c30b7f8d87a45a639cd"
30043018
integrity sha512-GysbX1iiYLRomOl9CqBtCsuRGmqBwtKZeUjft5stsD/m0K/15doTswm3JLQc4ldAZMLTS3rl97ppQ8KHs07vkA==
30053019

3020+
3021+
version "5.7.8"
3022+
resolved "https://registry.yarnpkg.com/bazinga64/-/bazinga64-5.7.8.tgz#9fba6a68ff5d4427d02e02d484c749ee155bd636"
3023+
integrity sha512-q3VoENycRGnTRlrF8pzQ+UCEawOB+iRTFZ/ZgZO8yDH7pYasaOlZtG21SONzBkf3tmKDwot5dpzvkR/hDjc9fQ==
3024+
30063025
bcrypt-pbkdf@^1.0.0:
30073026
version "1.0.2"
30083027
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
@@ -14068,10 +14087,10 @@ [email protected]:
1406814087
dependencies:
1406914088
mkdirp "^0.5.1"
1407014089

14071-
ws@7.2.5:
14072-
version "7.2.5"
14073-
resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.5.tgz#abb1370d4626a5a9cd79d8de404aa18b3465d10d"
14074-
integrity sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA==
14090+
ws@7.3.1:
14091+
version "7.3.1"
14092+
resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8"
14093+
integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==
1407514094

1407614095
ws@^7.1.2:
1407714096
version "7.3.0"

0 commit comments

Comments
 (0)