aliyun-rtc-sdk 6.11.8 → 6.12.0-beta.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.
@@ -117,6 +117,22 @@ export declare enum AliRtcConnectionStatusChangeReason {
117
117
  AliRtcConnectionChangedNetworkInterrupted = 12
118
118
  }
119
119
 
120
+ export declare class AliRtcDataChannelMsg {
121
+ data: ArrayBuffer;
122
+ networkTime: number;
123
+ futureOrProgress: number;
124
+ type: AliRtcDataMsgType;
125
+ constructor(data: ArrayBuffer, type?: AliRtcDataMsgType, networkTime?: number, progress?: number);
126
+ toBuffer(): ArrayBuffer;
127
+ static parse(buffer: ArrayBuffer): AliRtcDataChannelMsg | undefined;
128
+ }
129
+
130
+ export declare enum AliRtcDataMsgType {
131
+ AliEngineDataMsgNone = 0,
132
+ AliEngineDataMsgMusicProgress = 1,
133
+ AliEngineDataMsgCustom = 2
134
+ }
135
+
120
136
  declare type AliRtcDualVideoPluginOptions = VideoScalerOptions;
121
137
 
122
138
  export declare class AliRtcEngine extends default_2<AliRtcEngineEventListener> {
@@ -194,6 +210,8 @@ export declare class AliRtcEngine extends default_2<AliRtcEngineEventListener> {
194
210
  static AliRtcLiveTranscodingState: typeof AliRtcLiveTranscodingState;
195
211
  static AliRtcLiveTranscodingErrorCode: typeof AliRtcLiveTranscodingErrorCode;
196
212
  static AliRtcTrascodingPublishTaskStatus: typeof AliRtcTrascodingPublishTaskStatus;
213
+ static AliRtcDataChannelMsg: typeof AliRtcDataChannelMsg;
214
+ static AliRtcDataMsgType: typeof AliRtcDataMsgType;
197
215
  /**
198
216
  * @brief 销毁 {@link AliRtcEngine}实例
199
217
  * @details 调用该方法将会释放所有内部使用的资源,当完成音视频通信之后都建议调用该方法释放实例.调用该方法后,你将不能再使用 {@link AliRtcEngine} 的其他方法和任何回调,如需要再次使用需要重新调用 {@link AliRtcEngine.getInstance} 方法创建一个新的实例。
@@ -458,6 +476,7 @@ export declare class AliRtcEngine extends default_2<AliRtcEngineEventListener> {
458
476
  * 用于在自动播放失败等场景恢复播放
459
477
  */
460
478
  resumeRemoteAudioStream(uid: string): void;
479
+ stopRemoteAudioPlay(uid: string): void;
461
480
  /**
462
481
  * @brief 是否推送本地视频流
463
482
  * @param enabled 是否开启/关闭本地视频流推送
@@ -952,6 +971,11 @@ export declare class AliRtcEngine extends default_2<AliRtcEngineEventListener> {
952
971
  enableBackgroundBlur(enable: boolean): void;
953
972
  setParameter(parameter: string): void;
954
973
  getParameter(): string;
974
+ /**
975
+ * @brief 发送 DataChannel 消息
976
+ * @param dataChannelMsg 伴奏控制消息
977
+ */
978
+ sendDataChannelMessage(dataChannelMsg: AliRtcDataChannelMsg): void;
955
979
  }
956
980
 
957
981
  declare interface AliRtcEngineConfig {
@@ -1110,6 +1134,14 @@ declare interface AliRtcEngineEventListener {
1110
1134
  * @param channel 当前频道
1111
1135
  */
1112
1136
  screenSharePublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number, channel: string) => void;
1137
+ /**
1138
+ * DataChannel 推流变更回调
1139
+ * @param oldState 之前的推流状态
1140
+ * @param newState 当前的推流状态
1141
+ * @param elapseSinceLastState 状态变更时间间隔(毫秒)
1142
+ * @param channel 当前频道
1143
+ */
1144
+ dataPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number, channel: string) => void;
1113
1145
  /**
1114
1146
  * 相机流订阅情况变更回调
1115
1147
  * @param uid 用户ID
@@ -1137,6 +1169,15 @@ declare interface AliRtcEngineEventListener {
1137
1169
  * @param channel 当前频道
1138
1170
  */
1139
1171
  screenShareSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number, channel: string) => void;
1172
+ /**
1173
+ * DataChannel 订阅情况变更回调
1174
+ * @param uid 用户ID
1175
+ * @param oldState 之前的订阅状态
1176
+ * @param newState 当前的订阅状态
1177
+ * @param elapseSinceLastState 状态变更时间间隔(毫秒)
1178
+ * @param channel 当前频道
1179
+ */
1180
+ dataSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number, channel: string) => void;
1140
1181
  /**
1141
1182
  * 收到媒体扩展信息回调
1142
1183
  * @param uid 用户ID,媒体信息发送用户的ID
@@ -1211,6 +1252,12 @@ declare interface AliRtcEngineEventListener {
1211
1252
  * @param message 错误消息
1212
1253
  */
1213
1254
  onOccurError: (error: AliRtcError) => void;
1255
+ /**
1256
+ * @brief 收到数据通道消息
1257
+ * @param uid 用户ID
1258
+ * @param message 消息
1259
+ */
1260
+ dataChannelMsg: (uid: string, message: AliRtcDataChannelMsg) => void;
1214
1261
  }
1215
1262
 
1216
1263
  export declare enum AliRtcEngineLocalDeviceExceptionType {
@@ -1269,6 +1316,7 @@ declare enum AliRtcEnv {
1269
1316
  declare class AliRtcError extends Error {
1270
1317
  _code: number;
1271
1318
  _extra?: any;
1319
+ static fromRtsError(error: any): AliRtcError;
1272
1320
  static fromError(error: any, code?: number, fallbackMessage?: string): AliRtcError;
1273
1321
  constructor(code: number, message: string, extra?: any);
1274
1322
  get code(): number;
@@ -1407,6 +1455,8 @@ export declare enum AliRtcErrorCode {
1407
1455
  ERR_SDK_SUBSCRIBE_DUAL_STRAM_FAILED = 16844115,
1408
1456
  /** 订阅屏幕共享失败 */
1409
1457
  ERR_SDK_SUBSCRIBE_SCREEN_SHARE_FAILED = 16844116,
1458
+ /** 订阅 DataChannel 失败 */
1459
+ ERR_SDK_SUBSCRIBE_DATA_FAILED = 16844117,
1410
1460
  /****************************************************
1411
1461
  * 其他错误码
1412
1462
  ****************************************************/
@@ -2268,6 +2318,7 @@ declare class BizControl extends default_2<BizControlListener> {
2268
2318
  setAudioRedEnabled(enable: boolean): void;
2269
2319
  setParameter(parameter: string): void;
2270
2320
  getParameter(): string;
2321
+ sendDataChannelMessage(message: AliRtcDataChannelMsg): Promise<void> | undefined;
2271
2322
  }
2272
2323
 
2273
2324
  declare interface BizControlConfig {
@@ -2283,6 +2334,7 @@ declare interface BizControlListener {
2283
2334
  audioSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number, channel: string) => void;
2284
2335
  videoSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number, channel: string) => void;
2285
2336
  screenSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number, channel: string) => void;
2337
+ dataSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number, channel: string) => void;
2286
2338
  userAudioMuted: (uid: string, isMute: boolean) => void;
2287
2339
  userVideoMuted: (uid: string, isMute: boolean) => void;
2288
2340
  userScreenMuted: (userId: string, isMute: boolean) => void;
@@ -2300,6 +2352,7 @@ declare interface BizControlListener {
2300
2352
  remoteAudioPlayError: (uid: string, reason?: string) => void;
2301
2353
  remoteVideoPlayError: (uid: string, reason?: string) => void;
2302
2354
  remoteSubscribeError: (error: AliRtcError) => void;
2355
+ remoteDataChannelMessage: (uid: string, message: AliRtcDataChannelMsg) => void;
2303
2356
  }
2304
2357
 
2305
2358
  declare enum ClientEventType {
@@ -2327,7 +2380,7 @@ declare enum CmdType {
2327
2380
  declare enum CodecType {
2328
2381
  OPUS = "opus",
2329
2382
  H264 = "H264",
2330
- UNKONWN = ""
2383
+ UNKNOWN = ""
2331
2384
  }
2332
2385
 
2333
2386
  declare const _default: typeof AliRtcEngine;
@@ -2539,6 +2592,7 @@ declare class LocalUser extends User {
2539
2592
  private previewElements;
2540
2593
  private screenPreviewElements;
2541
2594
  private streamManager;
2595
+ private dc;
2542
2596
  protected streamTracks?: TrackInfo[];
2543
2597
  protected publishId: string;
2544
2598
  protected signalingManager: SignalingManager;
@@ -2553,6 +2607,7 @@ declare class LocalUser extends User {
2553
2607
  private videoPubState;
2554
2608
  private videoSmallPubState;
2555
2609
  private screenPubState;
2610
+ private dataPubState;
2556
2611
  private parameter;
2557
2612
  constructor(config: LocalUserConfig);
2558
2613
  get joined(): boolean;
@@ -2724,6 +2779,7 @@ declare class LocalUser extends User {
2724
2779
  getCurrentMicDeviceId(): string | undefined;
2725
2780
  enableAudioVolumeIndication(interval: number): void;
2726
2781
  sendSEI(message: ArrayBuffer, repeatCount: number, payloadType: number): Promise<void>;
2782
+ sendDataChannelMessage(message: AliRtcDataChannelMsg): Promise<void>;
2727
2783
  getStats(): Promise<{
2728
2784
  audio: AliRtcLocalAudioStats[];
2729
2785
  video: AliRtcLocalVideoStats[];
@@ -2801,7 +2857,8 @@ declare enum MsidType {
2801
2857
  Audio = "sophon_audio",
2802
2858
  VideoLarge = "sophon_video_camera_large",
2803
2859
  VideoSmall = "sophon_video_camera_small",
2804
- Screen = "sophon_video_screen_share"
2860
+ Screen = "sophon_video_screen_share",
2861
+ Data = "sophon_data"
2805
2862
  }
2806
2863
 
2807
2864
  declare interface OSSSTSToken {
@@ -2928,7 +2985,7 @@ declare interface RefreshUser {
2928
2985
  }
2929
2986
 
2930
2987
  declare interface RemoteMediaTrackInfo extends MediaTrackInfo {
2931
- subscribed?: boolean;
2988
+ subscribeState?: RemoteTrackSubscribeState;
2932
2989
  }
2933
2990
 
2934
2991
  declare class RemoteStreamInfo extends default_2<StreamListener> {
@@ -2940,6 +2997,7 @@ declare class RemoteStreamInfo extends default_2<StreamListener> {
2940
2997
  protected videoLargeInfo: RemoteMediaTrackInfo;
2941
2998
  protected videoSmallInfo: RemoteMediaTrackInfo;
2942
2999
  protected screenInfo: RemoteMediaTrackInfo;
3000
+ protected dataInfo: RemoteMediaTrackInfo;
2943
3001
  protected audioVolume: number;
2944
3002
  protected audioMuted: boolean;
2945
3003
  protected userStatus?: DeviceStatus;
@@ -2964,7 +3022,9 @@ declare class RemoteStreamInfo extends default_2<StreamListener> {
2964
3022
  * @returns
2965
3023
  */
2966
3024
  getScreenInfo(): RemoteMediaTrackInfo;
3025
+ getDataInfo(): RemoteMediaTrackInfo;
2967
3026
  get subscribingInfos(): RemoteMediaTrackInfo[];
3027
+ get hasTrack(): boolean;
2968
3028
  /**
2969
3029
  * 远端流是否包含音频轨道
2970
3030
  * @returns
@@ -2990,37 +3050,46 @@ declare class RemoteStreamInfo extends default_2<StreamListener> {
2990
3050
  * @returns
2991
3051
  */
2992
3052
  get hasScreen(): boolean;
3053
+ get hasData(): boolean;
2993
3054
  /**
2994
3055
  * 是否订阅远端流音频轨道
2995
3056
  * @returns
2996
3057
  */
3058
+ get isAudioSubscribed(): boolean;
2997
3059
  get isAudioSubscribing(): boolean;
2998
3060
  /**
2999
3061
  * 是否订阅远端流视频轨道
3000
3062
  * @returns
3001
3063
  */
3064
+ get isVideoSubscribed(): boolean;
3002
3065
  get isVideoSubscribing(): boolean;
3003
3066
  /**
3004
3067
  * 是否订阅远端流视频大流轨道
3005
3068
  * @returns
3006
3069
  */
3070
+ get isVideoLargeSubscribed(): boolean;
3007
3071
  get isVideoLargeSubscribing(): boolean;
3008
3072
  /**
3009
3073
  * 是否订阅远端流视频小流轨道
3010
3074
  * @returns
3011
3075
  */
3076
+ get isVideoSmallSubscribed(): boolean;
3012
3077
  get isVideoSmallSubscribing(): boolean;
3013
3078
  /**
3014
3079
  * 是否订阅远端流屏幕共享轨道
3015
3080
  * @returns
3016
3081
  */
3082
+ get isScreenSubscribed(): boolean;
3017
3083
  get isScreenSubscribing(): boolean;
3084
+ get isDataSubscribed(): boolean;
3085
+ get isDataSubscribing(): boolean;
3018
3086
  get audioCodec(): CodecType;
3019
3087
  get videoCodec(): CodecType;
3020
3088
  get audioTrackInfo(): AliRtcAudioTrack;
3021
3089
  get videoTrackInfo(): AliRtcVideoTrack;
3022
3090
  updateTracks(tracks?: TrackInfo[]): UpdateTracksResult;
3023
- protected updateRemoteTrackSsrc(audioSsrc: string, videoLargeSsrc: string, videoSmallSsrc: string, screenSsrc: string): void;
3091
+ protected updateRemoteTrackSsrc(audioSsrc: string, videoLargeSsrc: string, videoSmallSsrc: string, screenSsrc: string, dataSsrc: string): void;
3092
+ markRemoteTrackSubscribing(option: SubscribeOptions): any;
3024
3093
  updateRemoteTrackSubState(option: SubscribeOptions): any;
3025
3094
  /**
3026
3095
  * 更新远端用户设备状态
@@ -3035,6 +3104,12 @@ declare interface RemoteSubscribeOptions {
3035
3104
  options: SubscribeOptions;
3036
3105
  }
3037
3106
 
3107
+ declare enum RemoteTrackSubscribeState {
3108
+ NotSubscribe = 0,
3109
+ Subscribing = 1,
3110
+ Subscribed = 2
3111
+ }
3112
+
3038
3113
  declare class RemoteUser extends User {
3039
3114
  /**
3040
3115
  * @ignore
@@ -3067,6 +3142,9 @@ declare class RemoteUser extends User {
3067
3142
  private videoLargeSubState;
3068
3143
  private videoSmallSubState;
3069
3144
  private screenSubState;
3145
+ private dataSubState;
3146
+ private dc;
3147
+ private dcMsgWaitingPieces;
3070
3148
  streamInfo: RemoteStreamInfo;
3071
3149
  streamUrl: string;
3072
3150
  private parameter;
@@ -3095,6 +3173,7 @@ declare class RemoteUser extends User {
3095
3173
  get isVideoLargeSubscribing(): boolean;
3096
3174
  get isVideoSmallSubscribing(): boolean;
3097
3175
  get isScreenSubscribing(): boolean;
3176
+ get isDataSubscribing(): boolean;
3098
3177
  get audioEnabled(): boolean;
3099
3178
  get videoEnabled(): boolean;
3100
3179
  get screenEnabled(): boolean;
@@ -3150,7 +3229,7 @@ declare class RemoteUser extends User {
3150
3229
  * 用保存的订阅参数恢复订阅
3151
3230
  */
3152
3231
  restore(): void;
3153
- resumeAudio(): Promise<void | undefined>;
3232
+ resumeAudio(): Promise<void>;
3154
3233
  resumeVideo(videoTrack?: AliRtcVideoTrack): Promise<void>;
3155
3234
  resumePlay(): void;
3156
3235
  /**
@@ -3170,6 +3249,9 @@ declare class RemoteUser extends User {
3170
3249
  private updateScreenStream;
3171
3250
  private clearStream;
3172
3251
  private clearScreenStream;
3252
+ private onDataChannelMessage;
3253
+ private subscribeDataChannel;
3254
+ private subscribeStopDataChannel;
3173
3255
  /**
3174
3256
  * 尝试更新订阅
3175
3257
  * 1. 需要新增订阅的情况:想要订阅 & 没有正在订阅 & 远端有流
@@ -3182,8 +3264,8 @@ declare class RemoteUser extends User {
3182
3264
  private handleAudioPaused;
3183
3265
  private handleVideoPlayFailded;
3184
3266
  private playAudio;
3185
- private stopPlayAudio;
3186
- playAll(isScreen?: boolean): void;
3267
+ stopPlayAudio(): void;
3268
+ playAll(isScreen?: boolean, isReplace?: boolean): void;
3187
3269
  /**
3188
3270
  * 播放
3189
3271
  */
@@ -3304,7 +3386,7 @@ declare class RtsManager extends default_2<RtsManagerEventListener> {
3304
3386
  set localJoinTime(time: number);
3305
3387
  setEncodedInsertableStreams(enable: boolean): void;
3306
3388
  setAudioRedEnabled(enable: boolean): void;
3307
- destroy(): void;
3389
+ clear(): void;
3308
3390
  private startConnect;
3309
3391
  private setConnected;
3310
3392
  get isConnecting(): boolean;
@@ -3316,10 +3398,12 @@ declare class RtsManager extends default_2<RtsManagerEventListener> {
3316
3398
  private waitPublishSender;
3317
3399
  getPublishVideoStats(streamUrl: string, msid?: string): Promise<unknown>;
3318
3400
  getPublishAudioStats(streamUrl: string, msid?: string): Promise<unknown>;
3319
- publishAdd(streamUrl: string, stream: LocalStream, callId: string, extra?: PublishExtraParams, isResume?: boolean, retryTimes?: number, waitSender?: boolean, reason?: PublishReason): Promise<string>;
3401
+ publishAdd(streamUrl: string, stream: LocalStream, callId: string, extra?: PublishExtraParams, isResume?: boolean, waitSender?: boolean, reason?: PublishReason): Promise<string>;
3320
3402
  publishDelete(streamUrl: string, options: PublishOptions): Promise<string>;
3321
- publishReplace(streamUrl: string, stream: LocalStream, extra?: PublishExtraParams): Promise<string>;
3403
+ publishReplace(streamUrl: string, stream: LocalStream, extra?: PublishExtraParams): Promise<any>;
3322
3404
  publishStop(streamUrl: string): Promise<string>;
3405
+ publishAddDataChannel(streamUrl: string): Promise<any>;
3406
+ publishStopDataChannel(streamUrl: string, datachannel: any): Promise<void>;
3323
3407
  unpublish(): Promise<void>;
3324
3408
  /**
3325
3409
  * 获取 sub/subAdd config
@@ -3334,6 +3418,8 @@ declare class RtsManager extends default_2<RtsManagerEventListener> {
3334
3418
  stream: any;
3335
3419
  } | undefined>;
3336
3420
  subscibeStop(streamUrl: string): Promise<void>;
3421
+ subscribeAddDataChannel(streamUrl: string): Promise<any>;
3422
+ subscribeStopDatachannel(streamUrl: string, datachannel: any): Promise<any>;
3337
3423
  publish(streamUrl: string, callId: string, isResume?: boolean, reason?: PublishReason): Promise<string>;
3338
3424
  subscribe(remoteSubscribeOptions: RemoteSubscribeOptions, reason: SubscribeReason, callId: string, remoteCallId: string, startTs: number): Promise<any>;
3339
3425
  getSubscribeVideoStats(streamUrl: string, msid?: string): Promise<unknown>;
@@ -3352,6 +3438,10 @@ declare interface RtsManagerEventListener {
3352
3438
  }
3353
3439
 
3354
3440
  declare class SignalingManager extends default_2<RoomServerListener> {
3441
+ /**
3442
+ * @ignore
3443
+ */
3444
+ static logName: string;
3355
3445
  protected signaling?: ISignalingInterface;
3356
3446
  protected authInfo?: AliRtcAuthInfo;
3357
3447
  protected userName?: string;
@@ -3674,6 +3764,7 @@ declare interface StreamOptions {
3674
3764
  audio?: boolean;
3675
3765
  video?: boolean;
3676
3766
  screen?: boolean;
3767
+ data?: boolean;
3677
3768
  }
3678
3769
 
3679
3770
  declare class StsManager extends default_2<StsManagerListener> {
@@ -3781,16 +3872,20 @@ declare interface UserListener {
3781
3872
  audioSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number) => void;
3782
3873
  videoSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number) => void;
3783
3874
  screenSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number) => void;
3875
+ dataSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number) => void;
3784
3876
  audioPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number) => void;
3785
3877
  videoPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number) => void;
3786
3878
  dualStreamPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number) => void;
3787
3879
  screenPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number) => void;
3880
+ dataPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number) => void;
3788
3881
  localDeviceException: (localDeviceType: AliRtcEngineLocalDeviceType, localDeviceExceptionType: AliRtcEngineLocalDeviceExceptionType, description: string) => void;
3882
+ publishDataError: (error: AliRtcError) => void;
3789
3883
  remoteAudioAutoPlayFail: (uid: string) => void;
3790
3884
  remoteVideoAutoPlayFail: (uid: string, track: AliRtcVideoTrack) => void;
3791
3885
  remoteAudioPlayError: (uid: string, reason?: string) => void;
3792
3886
  remoteVideoPlayError: (uid: string, reason?: string) => void;
3793
3887
  remoteSubscribeError: (error: AliRtcError) => void;
3888
+ remoteDataChannelMessage: (uid: string, message: AliRtcDataChannelMsg) => void;
3794
3889
  }
3795
3890
 
3796
3891
  declare interface VideoScaler {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aliyun-rtc-sdk",
3
- "version": "6.11.8",
3
+ "version": "6.12.0-beta.0",
4
4
  "type": "module",
5
5
  "description": "rtc web sdk of aliyun",
6
6
  "main": "dist/aliyun-rtc-sdk.js",
@@ -9,7 +9,7 @@
9
9
  "@aliyun-sls/web-sts-plugin": "^0.3.5",
10
10
  "@aliyun-sls/web-track-browser": "^0.3.5",
11
11
  "aliyun-queen-engine": "^6.3.3",
12
- "aliyun-rts-sdk": "2.8.1-beta.5",
12
+ "aliyun-rts-sdk": "2.9.1-beta.2",
13
13
  "crypto-js": "^4.1.1",
14
14
  "dateformat": "^5.0.3",
15
15
  "eventemitter3": "^5.0.1",