@volcengine/veplayer 2.7.0-rc.0 → 2.7.1-rc.0
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/esm/index.d.ts +64 -2
- package/esm/veplayer.biz.live.development.css +2 -1
- package/esm/veplayer.biz.live.development.js +20 -5
- package/esm/veplayer.biz.live.production.css +1 -1
- package/esm/veplayer.biz.live.production.js +1 -1
- package/esm/veplayer.d.ts +162 -33
- package/esm/veplayer.development.css +2 -1
- package/esm/veplayer.development.js +28 -8
- package/esm/veplayer.live.d.ts +162 -33
- package/esm/veplayer.live.development.css +2 -1
- package/esm/veplayer.live.development.js +28 -8
- package/esm/veplayer.live.production.css +1 -1
- package/esm/veplayer.live.production.js +2 -2
- package/esm/veplayer.production.css +1 -1
- package/esm/veplayer.production.js +2 -2
- package/esm/veplayer.vod.d.ts +64 -2
- package/esm/veplayer.vod.development.js +7 -2
- package/esm/veplayer.vod.production.js +1 -1
- package/package.json +1 -1
- package/umd/index.d.ts +64 -2
- package/umd/veplayer.biz.live.development.css +2 -1
- package/umd/veplayer.biz.live.development.js +20 -5
- package/umd/veplayer.biz.live.production.css +1 -1
- package/umd/veplayer.biz.live.production.js +1 -1
- package/umd/veplayer.d.ts +162 -33
- package/umd/veplayer.development.css +2 -1
- package/umd/veplayer.development.js +28 -8
- package/umd/veplayer.live.d.ts +162 -33
- package/umd/veplayer.live.development.css +2 -1
- package/umd/veplayer.live.development.js +28 -8
- package/umd/veplayer.live.production.css +1 -1
- package/umd/veplayer.live.production.js +1 -1
- package/umd/veplayer.production.css +1 -1
- package/umd/veplayer.production.js +1 -1
- package/umd/veplayer.vod.d.ts +64 -2
- package/umd/veplayer.vod.development.js +7 -2
- package/umd/veplayer.vod.production.js +1 -1
- package/veplayer.d.ts +162 -33
- package/veplayer.live.d.ts +162 -33
- package/veplayer.vod.d.ts +64 -2
package/esm/veplayer.d.ts
CHANGED
|
@@ -1214,7 +1214,38 @@ interface VePlayerBaseOptions extends Omit<PlayerOptions, "autoplay" | "i18n"> {
|
|
|
1214
1214
|
/** {en}
|
|
1215
1215
|
* @brief The URL of the player's cover image.
|
|
1216
1216
|
*/
|
|
1217
|
-
poster?: string
|
|
1217
|
+
poster?: string | {
|
|
1218
|
+
/** {zh}
|
|
1219
|
+
* @brief 封面图 URL 地址。
|
|
1220
|
+
* @default -
|
|
1221
|
+
*/
|
|
1222
|
+
poster: string;
|
|
1223
|
+
/** {zh}
|
|
1224
|
+
* @brief 是否在播放结束之后显示封面图。
|
|
1225
|
+
* @default true
|
|
1226
|
+
*/
|
|
1227
|
+
isEndedShow?: boolean;
|
|
1228
|
+
/** {zh}
|
|
1229
|
+
* @brief 是否播放后再隐藏封面图。
|
|
1230
|
+
* - `true`:播放后隐藏,未启播时一直显示封面图。
|
|
1231
|
+
* - `false`:在 `play` 事件触发后隐藏封面图。
|
|
1232
|
+
* @default false
|
|
1233
|
+
*/
|
|
1234
|
+
hideCanplay?: boolean;
|
|
1235
|
+
/** {zh}
|
|
1236
|
+
* @brief 是否一直显示封面图。
|
|
1237
|
+
* @default false
|
|
1238
|
+
*/
|
|
1239
|
+
notHidden?: boolean;
|
|
1240
|
+
/** {zh}
|
|
1241
|
+
* @brief 封面图填充方式。取值如下:
|
|
1242
|
+
* - `fixWidth`:宽度方向填充,不会被拉伸压缩。
|
|
1243
|
+
* - `fixHeight`:高度方向填充,不会被拉伸压缩。
|
|
1244
|
+
* - `cover`:完全覆盖容器,多余部分会被裁剪。
|
|
1245
|
+
* - `contain`:完全覆盖,与容器不匹配时会被拉伸压缩。
|
|
1246
|
+
*/
|
|
1247
|
+
fillMode?: "fixWidth" | "fixHeight" | "cover" | "contain";
|
|
1248
|
+
};
|
|
1218
1249
|
/** {zh}
|
|
1219
1250
|
* @brief 为播放器设置初始显示语言,语言包不存在的情况下默认显示 'en' 语言包 。默认值为 `document.documentElement.getAttribute('lang') || navigator.language || 'zh-cn'`
|
|
1220
1251
|
*/
|
|
@@ -3560,7 +3591,38 @@ declare namespace strategy {
|
|
|
3560
3591
|
/** {en}
|
|
3561
3592
|
* @brief The URL of the player's cover image.
|
|
3562
3593
|
*/
|
|
3563
|
-
poster?: string
|
|
3594
|
+
poster?: string | {
|
|
3595
|
+
/** {zh}
|
|
3596
|
+
* @brief 封面图 URL 地址。
|
|
3597
|
+
* @default -
|
|
3598
|
+
*/
|
|
3599
|
+
poster: string;
|
|
3600
|
+
/** {zh}
|
|
3601
|
+
* @brief 是否在播放结束之后显示封面图。
|
|
3602
|
+
* @default true
|
|
3603
|
+
*/
|
|
3604
|
+
isEndedShow?: boolean;
|
|
3605
|
+
/** {zh}
|
|
3606
|
+
* @brief 是否播放后再隐藏封面图。
|
|
3607
|
+
* - `true`:播放后隐藏,未启播时一直显示封面图。
|
|
3608
|
+
* - `false`:在 `play` 事件触发后隐藏封面图。
|
|
3609
|
+
* @default false
|
|
3610
|
+
*/
|
|
3611
|
+
hideCanplay?: boolean;
|
|
3612
|
+
/** {zh}
|
|
3613
|
+
* @brief 是否一直显示封面图。
|
|
3614
|
+
* @default false
|
|
3615
|
+
*/
|
|
3616
|
+
notHidden?: boolean;
|
|
3617
|
+
/** {zh}
|
|
3618
|
+
* @brief 封面图填充方式。取值如下:
|
|
3619
|
+
* - `fixWidth`:宽度方向填充,不会被拉伸压缩。
|
|
3620
|
+
* - `fixHeight`:高度方向填充,不会被拉伸压缩。
|
|
3621
|
+
* - `cover`:完全覆盖容器,多余部分会被裁剪。
|
|
3622
|
+
* - `contain`:完全覆盖,与容器不匹配时会被拉伸压缩。
|
|
3623
|
+
*/
|
|
3624
|
+
fillMode?: "fixWidth" | "fixHeight" | "cover" | "contain";
|
|
3625
|
+
};
|
|
3564
3626
|
/** {zh}
|
|
3565
3627
|
* @brief 为播放器设置初始显示语言,语言包不存在的情况下默认显示 'en' 语言包 。默认值为 `document.documentElement.getAttribute('lang') || navigator.language || 'zh-cn'`
|
|
3566
3628
|
*/
|
|
@@ -6324,14 +6386,12 @@ interface StatsSnapShoot {
|
|
|
6324
6386
|
/** {zh}
|
|
6325
6387
|
* @list option
|
|
6326
6388
|
* @kind property
|
|
6327
|
-
* @brief FLV 直播流播放信息。
|
|
6328
6389
|
*/
|
|
6329
6390
|
/** {en}
|
|
6330
6391
|
* @list option
|
|
6331
6392
|
* @kind property
|
|
6332
|
-
* @brief FLV live stream information.
|
|
6333
6393
|
*/
|
|
6334
|
-
interface
|
|
6394
|
+
interface Stats$0 {
|
|
6335
6395
|
/** {zh}
|
|
6336
6396
|
* @brief 音频格式。
|
|
6337
6397
|
* @hidden
|
|
@@ -6433,33 +6493,45 @@ interface FlvStats {
|
|
|
6433
6493
|
*/
|
|
6434
6494
|
samplerate: number;
|
|
6435
6495
|
/** {zh}
|
|
6436
|
-
* @
|
|
6496
|
+
* @hidden
|
|
6437
6497
|
*/
|
|
6438
6498
|
/** {en}
|
|
6439
|
-
* @
|
|
6499
|
+
* @hidden
|
|
6440
6500
|
*/
|
|
6441
|
-
|
|
6501
|
+
videoCodec: string;
|
|
6442
6502
|
/** {zh}
|
|
6443
|
-
* @brief
|
|
6503
|
+
* @brief 视频宽度。
|
|
6444
6504
|
*/
|
|
6445
6505
|
/** {en}
|
|
6446
|
-
* @brief
|
|
6506
|
+
* @brief Video wight.
|
|
6447
6507
|
*/
|
|
6448
|
-
|
|
6508
|
+
width: number;
|
|
6509
|
+
}
|
|
6510
|
+
/** {zh}
|
|
6511
|
+
* @list option
|
|
6512
|
+
* @kind property
|
|
6513
|
+
* @brief FLV 直播流播放信息。
|
|
6514
|
+
*/
|
|
6515
|
+
/** {en}
|
|
6516
|
+
* @list option
|
|
6517
|
+
* @kind property
|
|
6518
|
+
* @brief FLV live stream information.
|
|
6519
|
+
*/
|
|
6520
|
+
interface FlvStats extends Stats$0 {
|
|
6449
6521
|
/** {zh}
|
|
6450
|
-
* @
|
|
6522
|
+
* @brief 总共收到的字节数。
|
|
6451
6523
|
*/
|
|
6452
6524
|
/** {en}
|
|
6453
|
-
* @
|
|
6525
|
+
* @brief The total number of bytes received.
|
|
6454
6526
|
*/
|
|
6455
|
-
|
|
6527
|
+
totalReceivedByte: number;
|
|
6456
6528
|
/** {zh}
|
|
6457
|
-
* @brief
|
|
6529
|
+
* @brief 接收所有字节消耗时长。
|
|
6458
6530
|
*/
|
|
6459
6531
|
/** {en}
|
|
6460
|
-
* @brief
|
|
6532
|
+
* @brief The time consumed for receiving all bytes.
|
|
6461
6533
|
*/
|
|
6462
|
-
|
|
6534
|
+
totalReceivedCost: number;
|
|
6463
6535
|
}
|
|
6464
6536
|
/** {zh}
|
|
6465
6537
|
* @detail api
|
|
@@ -6602,6 +6674,14 @@ declare class VePlayerLive extends VePlayerBase {
|
|
|
6602
6674
|
* @brief Obtain the playback information of FLV pull streaming.
|
|
6603
6675
|
*/
|
|
6604
6676
|
getFLVStats(): FlvStats;
|
|
6677
|
+
/** {zh}
|
|
6678
|
+
* @brief 获取 HLS 拉流的播放信息。
|
|
6679
|
+
* @returns
|
|
6680
|
+
*/
|
|
6681
|
+
/** {en}
|
|
6682
|
+
* @brief Obtain the playback information of HLS pull streaming.
|
|
6683
|
+
*/
|
|
6684
|
+
getHLSStats(): Stats$0;
|
|
6605
6685
|
updatePlaylist(playlist: ExposedSource[], target?: string | {
|
|
6606
6686
|
/** {zh}
|
|
6607
6687
|
* @brief 清晰度唯一标识。
|
|
@@ -8965,7 +9045,38 @@ declare namespace live {
|
|
|
8965
9045
|
/** {en}
|
|
8966
9046
|
* @brief The URL of the player's cover image.
|
|
8967
9047
|
*/
|
|
8968
|
-
poster?: string
|
|
9048
|
+
poster?: string | {
|
|
9049
|
+
/** {zh}
|
|
9050
|
+
* @brief 封面图 URL 地址。
|
|
9051
|
+
* @default -
|
|
9052
|
+
*/
|
|
9053
|
+
poster: string;
|
|
9054
|
+
/** {zh}
|
|
9055
|
+
* @brief 是否在播放结束之后显示封面图。
|
|
9056
|
+
* @default true
|
|
9057
|
+
*/
|
|
9058
|
+
isEndedShow?: boolean;
|
|
9059
|
+
/** {zh}
|
|
9060
|
+
* @brief 是否播放后再隐藏封面图。
|
|
9061
|
+
* - `true`:播放后隐藏,未启播时一直显示封面图。
|
|
9062
|
+
* - `false`:在 `play` 事件触发后隐藏封面图。
|
|
9063
|
+
* @default false
|
|
9064
|
+
*/
|
|
9065
|
+
hideCanplay?: boolean;
|
|
9066
|
+
/** {zh}
|
|
9067
|
+
* @brief 是否一直显示封面图。
|
|
9068
|
+
* @default false
|
|
9069
|
+
*/
|
|
9070
|
+
notHidden?: boolean;
|
|
9071
|
+
/** {zh}
|
|
9072
|
+
* @brief 封面图填充方式。取值如下:
|
|
9073
|
+
* - `fixWidth`:宽度方向填充,不会被拉伸压缩。
|
|
9074
|
+
* - `fixHeight`:高度方向填充,不会被拉伸压缩。
|
|
9075
|
+
* - `cover`:完全覆盖容器,多余部分会被裁剪。
|
|
9076
|
+
* - `contain`:完全覆盖,与容器不匹配时会被拉伸压缩。
|
|
9077
|
+
*/
|
|
9078
|
+
fillMode?: "fixWidth" | "fixHeight" | "cover" | "contain";
|
|
9079
|
+
};
|
|
8969
9080
|
/** {zh}
|
|
8970
9081
|
* @brief 为播放器设置初始显示语言,语言包不存在的情况下默认显示 'en' 语言包 。默认值为 `document.documentElement.getAttribute('lang') || navigator.language || 'zh-cn'`
|
|
8971
9082
|
*/
|
|
@@ -11944,14 +12055,12 @@ declare namespace live {
|
|
|
11944
12055
|
/** {zh}
|
|
11945
12056
|
* @list option
|
|
11946
12057
|
* @kind property
|
|
11947
|
-
* @brief FLV 直播流播放信息。
|
|
11948
12058
|
*/
|
|
11949
12059
|
/** {en}
|
|
11950
12060
|
* @list option
|
|
11951
12061
|
* @kind property
|
|
11952
|
-
* @brief FLV live stream information.
|
|
11953
12062
|
*/
|
|
11954
|
-
interface
|
|
12063
|
+
interface Stats$0 {
|
|
11955
12064
|
/** {zh}
|
|
11956
12065
|
* @brief 音频格式。
|
|
11957
12066
|
* @hidden
|
|
@@ -12053,33 +12162,45 @@ declare namespace live {
|
|
|
12053
12162
|
*/
|
|
12054
12163
|
samplerate: number;
|
|
12055
12164
|
/** {zh}
|
|
12056
|
-
* @
|
|
12165
|
+
* @hidden
|
|
12057
12166
|
*/
|
|
12058
12167
|
/** {en}
|
|
12059
|
-
* @
|
|
12168
|
+
* @hidden
|
|
12060
12169
|
*/
|
|
12061
|
-
|
|
12170
|
+
videoCodec: string;
|
|
12062
12171
|
/** {zh}
|
|
12063
|
-
* @brief
|
|
12172
|
+
* @brief 视频宽度。
|
|
12064
12173
|
*/
|
|
12065
12174
|
/** {en}
|
|
12066
|
-
* @brief
|
|
12175
|
+
* @brief Video wight.
|
|
12067
12176
|
*/
|
|
12068
|
-
|
|
12177
|
+
width: number;
|
|
12178
|
+
}
|
|
12179
|
+
/** {zh}
|
|
12180
|
+
* @list option
|
|
12181
|
+
* @kind property
|
|
12182
|
+
* @brief FLV 直播流播放信息。
|
|
12183
|
+
*/
|
|
12184
|
+
/** {en}
|
|
12185
|
+
* @list option
|
|
12186
|
+
* @kind property
|
|
12187
|
+
* @brief FLV live stream information.
|
|
12188
|
+
*/
|
|
12189
|
+
interface FlvStats extends Stats$0 {
|
|
12069
12190
|
/** {zh}
|
|
12070
|
-
* @
|
|
12191
|
+
* @brief 总共收到的字节数。
|
|
12071
12192
|
*/
|
|
12072
12193
|
/** {en}
|
|
12073
|
-
* @
|
|
12194
|
+
* @brief The total number of bytes received.
|
|
12074
12195
|
*/
|
|
12075
|
-
|
|
12196
|
+
totalReceivedByte: number;
|
|
12076
12197
|
/** {zh}
|
|
12077
|
-
* @brief
|
|
12198
|
+
* @brief 接收所有字节消耗时长。
|
|
12078
12199
|
*/
|
|
12079
12200
|
/** {en}
|
|
12080
|
-
* @brief
|
|
12201
|
+
* @brief The time consumed for receiving all bytes.
|
|
12081
12202
|
*/
|
|
12082
|
-
|
|
12203
|
+
totalReceivedCost: number;
|
|
12083
12204
|
}
|
|
12084
12205
|
/** {zh}
|
|
12085
12206
|
* @detail api
|
|
@@ -12222,6 +12343,14 @@ declare namespace live {
|
|
|
12222
12343
|
* @brief Obtain the playback information of FLV pull streaming.
|
|
12223
12344
|
*/
|
|
12224
12345
|
getFLVStats(): FlvStats;
|
|
12346
|
+
/** {zh}
|
|
12347
|
+
* @brief 获取 HLS 拉流的播放信息。
|
|
12348
|
+
* @returns
|
|
12349
|
+
*/
|
|
12350
|
+
/** {en}
|
|
12351
|
+
* @brief Obtain the playback information of HLS pull streaming.
|
|
12352
|
+
*/
|
|
12353
|
+
getHLSStats(): Stats$0;
|
|
12225
12354
|
updatePlaylist(playlist: ExposedSource[], target?: string | {
|
|
12226
12355
|
/** {zh}
|
|
12227
12356
|
* @brief 清晰度唯一标识。
|
|
@@ -14189,10 +14189,15 @@ const transformOption = (
|
|
|
14189
14189
|
* @param options 更多配置信息。
|
|
14190
14190
|
*/
|
|
14191
14191
|
(options) => {
|
|
14192
|
+
var _a, _b;
|
|
14192
14193
|
const { autoplay: autoplay2, ...rest } = options;
|
|
14193
14194
|
const xgOptions = rest;
|
|
14194
14195
|
if (xgOptions.poster) {
|
|
14195
|
-
xgOptions.poster
|
|
14196
|
+
if (typeof xgOptions.poster === "string") {
|
|
14197
|
+
xgOptions.poster = escapeHtml(xgOptions.poster);
|
|
14198
|
+
} else if (typeof ((_a = xgOptions.poster) == null ? void 0 : _a.poster) === "string") {
|
|
14199
|
+
xgOptions.poster.poster = escapeHtml((_b = xgOptions.poster) == null ? void 0 : _b.poster);
|
|
14200
|
+
}
|
|
14196
14201
|
}
|
|
14197
14202
|
xgOptions.icons = {
|
|
14198
14203
|
...DEFAULT_ICONS,
|
|
@@ -14444,7 +14449,7 @@ class VePlayerBase {
|
|
|
14444
14449
|
* @brief Retrieve the player SDK version number.
|
|
14445
14450
|
*/
|
|
14446
14451
|
get playerVersion() {
|
|
14447
|
-
return "2.7.
|
|
14452
|
+
return "2.7.1-rc.0";
|
|
14448
14453
|
}
|
|
14449
14454
|
/** {zh}
|
|
14450
14455
|
* @brief 获取当前播放视频的清晰度唯一标识(definition)。
|
|
@@ -22587,7 +22592,7 @@ class Logger extends Plugin {
|
|
|
22587
22592
|
device_id: this._deviceId,
|
|
22588
22593
|
error_report_stop: true,
|
|
22589
22594
|
ext: {
|
|
22590
|
-
veplayer_version: "2.7.
|
|
22595
|
+
veplayer_version: "2.7.1-rc.0",
|
|
22591
22596
|
flv_version: "3.0.21-rc.21",
|
|
22592
22597
|
hls_version: "3.0.21-rc.21",
|
|
22593
22598
|
rts_version: "0.2.1-alpha.14"
|
|
@@ -22601,6 +22606,7 @@ function normalizeNumber(value, transform2) {
|
|
|
22601
22606
|
return transform2 ? transform2(value) : value.toString();
|
|
22602
22607
|
}
|
|
22603
22608
|
function getDefaultRow(data) {
|
|
22609
|
+
var _a;
|
|
22604
22610
|
return {
|
|
22605
22611
|
rows: [
|
|
22606
22612
|
{
|
|
@@ -22616,7 +22622,10 @@ function getDefaultRow(data) {
|
|
|
22616
22622
|
{
|
|
22617
22623
|
key: "bitrate",
|
|
22618
22624
|
labelTextKey: "BITRATE",
|
|
22619
|
-
value: normalizeNumber(
|
|
22625
|
+
value: normalizeNumber(
|
|
22626
|
+
data.bitrate,
|
|
22627
|
+
(value) => `${(value / 1e3).toFixed(2)} kbps`
|
|
22628
|
+
)
|
|
22620
22629
|
},
|
|
22621
22630
|
{
|
|
22622
22631
|
key: "gop",
|
|
@@ -22626,7 +22635,7 @@ function getDefaultRow(data) {
|
|
|
22626
22635
|
{
|
|
22627
22636
|
key: "resolution",
|
|
22628
22637
|
labelTextKey: "RESOLUTION",
|
|
22629
|
-
value: `${normalizeNumber(data.
|
|
22638
|
+
value: `${normalizeNumber(data.width)} * ${normalizeNumber(
|
|
22630
22639
|
data.height
|
|
22631
22640
|
)}`
|
|
22632
22641
|
},
|
|
@@ -22638,14 +22647,14 @@ function getDefaultRow(data) {
|
|
|
22638
22647
|
{
|
|
22639
22648
|
key: "bufferEnd",
|
|
22640
22649
|
labelTextKey: "BUFFER_END",
|
|
22641
|
-
value: normalizeNumber(data.bufferEnd)
|
|
22650
|
+
value: normalizeNumber(Number((_a = data.bufferEnd) == null ? void 0 : _a.toFixed(2)))
|
|
22642
22651
|
},
|
|
22643
22652
|
{
|
|
22644
22653
|
key: "currentTime",
|
|
22645
22654
|
labelTextKey: "CURRENT_TIME",
|
|
22646
22655
|
value: normalizeNumber(
|
|
22647
22656
|
data.currentTime,
|
|
22648
|
-
(value) => value.toFixed(
|
|
22657
|
+
(value) => value.toFixed(4) + "s"
|
|
22649
22658
|
)
|
|
22650
22659
|
}
|
|
22651
22660
|
]
|
|
@@ -22658,7 +22667,7 @@ function getSoftDecodeRow(data) {
|
|
|
22658
22667
|
{
|
|
22659
22668
|
key: "decodeEfficiency",
|
|
22660
22669
|
labelTextKey: "DECODE_EFFICIENCY",
|
|
22661
|
-
value: normalizeNumber(data.decodeFps, (value) => value + "frames/s")
|
|
22670
|
+
value: normalizeNumber(data.decodeFps, (value) => value + " frames/s")
|
|
22662
22671
|
},
|
|
22663
22672
|
{
|
|
22664
22673
|
key: "decodeCost",
|
|
@@ -23955,6 +23964,17 @@ class VePlayerLive extends VePlayerBase {
|
|
|
23955
23964
|
var _a, _b, _c;
|
|
23956
23965
|
return (_c = (_b = (_a = this._player) == null ? void 0 : _a.plugins) == null ? void 0 : _b.flv) == null ? void 0 : _c.getStats();
|
|
23957
23966
|
}
|
|
23967
|
+
/** {zh}
|
|
23968
|
+
* @brief 获取 HLS 拉流的播放信息。
|
|
23969
|
+
* @returns
|
|
23970
|
+
*/
|
|
23971
|
+
/** {en}
|
|
23972
|
+
* @brief Obtain the playback information of HLS pull streaming.
|
|
23973
|
+
*/
|
|
23974
|
+
getHLSStats() {
|
|
23975
|
+
var _a, _b, _c;
|
|
23976
|
+
return (_c = (_b = (_a = this._player) == null ? void 0 : _a.plugins) == null ? void 0 : _b.hls) == null ? void 0 : _c.getStats();
|
|
23977
|
+
}
|
|
23958
23978
|
async updatePlaylist(playlist, target, needUpdateProtocol = true) {
|
|
23959
23979
|
var _a;
|
|
23960
23980
|
if (needUpdateProtocol) {
|