@rongcloud/engine 5.5.0-enterprise-alpha.2 → 5.5.1

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/index.d.ts CHANGED
@@ -931,7 +931,8 @@ declare enum ErrorCode {
931
931
  /**
932
932
  * 聊天室设置批量kv,一次不能超过10个
933
933
  */
934
- CHATROOM_KV_STORE_OUT_LIMIT = 23429
934
+ CHATROOM_KV_STORE_OUT_LIMIT = 23429,
935
+ SEARCH_PROPS_LIMIT_ERROR = 35022
935
936
  }
936
937
 
937
938
  /**
@@ -1363,12 +1364,16 @@ declare enum LogTagId {
1363
1364
  L_SEND_MSG_R = "L-send_msg-R",
1364
1365
  L_PULL_MSG_T = "L-pull_msg-T",
1365
1366
  L_PULL_MSG_R = "L-pull_msg-R",
1367
+ L_PULL_MSG_O = "L-pull_msg-O",
1368
+ A_PULL_MSG_O = "A-pull_msg-O",
1366
1369
  L_PULL_ULTRA_MSG_T = "L-pull_ultra_msg-T",
1367
1370
  L_PULL_ULTRA_MSG_R = "L-pull_ultra_msg-R",
1368
1371
  L_PULL_CHATROOM_KV_T = "L-pull_chatroom_kv-T",
1369
1372
  L_PULL_CHATROOM_KV_R = "L-pull_chatroom_kv-R",
1370
1373
  L_PULL_CHATROOM_MSG_T = "L-pull_chatroom_msg-T",
1371
1374
  L_PULL_CHATROOM_MSG_R = "L-pull_chatroom_msg-R",
1375
+ L_RECEIVE_MSG_O = "L-receive_msg-O",
1376
+ L_RECEIVE_SYNC_MSG_O = "L-receive_sync_msg-O",
1372
1377
  A_DELETE_MESSAGES_S = "A-delete_messages-S",
1373
1378
  P_DELETE_MSG_S = "P-delete_msg-S",
1374
1379
  L_PULL_CONVERSATION_S = "L-pull_conversation-S",
@@ -1407,7 +1412,8 @@ declare enum LogTagId {
1407
1412
  * PB 数据编码错误
1408
1413
  */
1409
1414
  L_PB_ENCODE_E = "L-pb-encode-E",
1410
- L_PB_DECODE_E = "L-pb-decode-E"
1415
+ L_PB_DECODE_E = "L-pb-decode-E",
1416
+ L_NOTIFY_NAVI_CHANGE_E = "L-notify_navi_change-E"
1411
1417
  }
1412
1418
 
1413
1419
  /**
@@ -2114,8 +2120,9 @@ interface ISendMsgOptions {
2114
2120
  channelId?: string;
2115
2121
  /**
2116
2122
  * 客户端的消息标识
2123
+ * 重发消息时用到,重发消息的消息 ID
2117
2124
  */
2118
- messageId?: string;
2125
+ messageId?: number;
2119
2126
  /**
2120
2127
  * 超级群专有字段,是否断档,若断档需要客户判断是否拉取
2121
2128
  */
@@ -2640,6 +2647,10 @@ interface INaviInfo {
2640
2647
  * 防黑产开关, 1: 打开,0:关闭
2641
2648
  */
2642
2649
  openAnti?: number;
2650
+ /**
2651
+ * 鉴权认证
2652
+ */
2653
+ jwt?: string;
2643
2654
  }
2644
2655
 
2645
2656
  interface IChatroomEntryListenerData {
@@ -4568,6 +4579,10 @@ declare class APIContext {
4568
4579
  * rtc 数据变更通知 pluginContext
4569
4580
  */
4570
4581
  private _rtcDataChange;
4582
+ /**
4583
+ * 导航数据变更通知
4584
+ */
4585
+ private _naviDataChange;
4571
4586
  /**
4572
4587
  * 业务层事件监听器挂载点
4573
4588
  */
@@ -4621,6 +4636,11 @@ declare class APIContext {
4621
4636
  * 获取当前缓存的导航数据
4622
4637
  */
4623
4638
  getInfoFromCache(): INaviInfo | null;
4639
+ /**
4640
+ * 请求服务导航数据
4641
+ */
4642
+ reqNaviInfo(refreshNavi: boolean, traceId?: string): IPromiseResult<INaviInfo | null>;
4643
+ private _registerMessageSearchPropsMapping;
4624
4644
  /**
4625
4645
  * 消息注册
4626
4646
  * @description 消息注册需在应用初始化完成前进行
@@ -4636,6 +4656,7 @@ declare class APIContext {
4636
4656
  * @param listener
4637
4657
  */
4638
4658
  registerRTCSignalingListener(listener?: (buffer: Uint8Array) => void): void;
4659
+ checkSearchPropsMsg(messageType: string, msgContent: any): IAsyncRes;
4639
4660
  /**
4640
4661
  * 发送消息
4641
4662
  * @param conversationType
@@ -4737,6 +4758,13 @@ declare class APIContext {
4737
4758
  * @param includeMuted 包含已设置免打扰的会话
4738
4759
  */
4739
4760
  getTotalUnreadCount(channelId: string, conversationTypes?: ConversationType[], includeMuted?: boolean): Promise<IAsyncRes<number>>;
4761
+ /**
4762
+ * 获取会话指定免打扰级别未读消息总数
4763
+ * @param conversationTypes 会话类型
4764
+ * @param levels 免打扰级别
4765
+ * @param isMentioned 是否是 @ 消息未读数
4766
+ */
4767
+ getTotalUnreadCountByLevels(conversationTypes: ConversationType[], levels: NotificationLevel[], isMentioned?: boolean): Promise<IAsyncRes<number>>;
4740
4768
  /**
4741
4769
  * 获取第一个未读消息
4742
4770
  */
@@ -4749,10 +4777,8 @@ declare class APIContext {
4749
4777
  * * 0: 未设置(向上查询群或者APP级别设置)//存量数据中0表示未设置
4750
4778
  * * 1: 群聊超级群仅@消息通知(现在通知)单聊代表全部消息通知
4751
4779
  * * 2: @ 指定用户通知
4752
- * * 3: @ 群用户组通知,通知用户组暂未实现,暂不暴露出去
4753
4780
  * * 4: @ 群全员通知
4754
4781
  * * 5: 消息通知被屏蔽,即不接收消息通知
4755
- * @desc 注意单聊的 level 只有 -1、0、1
4756
4782
  */
4757
4783
  setConversationNotificationLevel(conversationType: ConversationType, targetId: string, notificationLevel?: NotificationLevel, channelId?: string): Promise<ErrorCode>;
4758
4784
  setConversationStatus(conversationType: ConversationType, targetId: string, isTop?: boolean, notificationStatus?: 1 | 2, channelId?: string): Promise<ErrorCode>;
@@ -5010,13 +5036,13 @@ declare class APIContext {
5010
5036
  * @todo
5011
5037
  * @param targetId
5012
5038
  */
5013
- getUltraGroupUnreadMentionedCountByTargetId(targetId: string): Promise<IAsyncRes<number>>;
5039
+ getUltraGroupUnreadMentionedCountByTargetId(targetId: string, levels?: NotificationLevel[]): Promise<IAsyncRes<number>>;
5014
5040
  /**
5015
5041
  * 获取指定超级群所有频道未读数
5016
5042
  * @param targetId 超级群 Id
5017
5043
  * @returns 未读数
5018
5044
  */
5019
- getUltraGroupUnreadCountByTargetId(targetId: string): Promise<IAsyncRes<number>>;
5045
+ getUltraGroupUnreadCountByTargetId(targetId: string, levels?: NotificationLevel[]): Promise<IAsyncRes<number>>;
5020
5046
  /**
5021
5047
  * 超级群类型未读数
5022
5048
  * @param isMentioned 是否是 @ 消息,默认为 false
@@ -5234,6 +5260,10 @@ declare class APIContext {
5234
5260
  declare class PluginContext {
5235
5261
  protected readonly _context: APIContext;
5236
5262
  constructor(_context: APIContext);
5263
+ /**
5264
+ * 重新请求服务导航数据
5265
+ */
5266
+ refetchNaviInfo(): IPromiseResult<INaviInfo | null>;
5237
5267
  /**
5238
5268
  * 获取 context
5239
5269
  */
@@ -5253,6 +5283,8 @@ declare class PluginContext {
5253
5283
  * 用户主动断开连接的事件通知
5254
5284
  */
5255
5285
  ondisconnect?(): void;
5286
+ /** 导航数据变更通知 */
5287
+ onnavidatachange?(naviInfo: INaviInfo): void;
5256
5288
  /**
5257
5289
  * 接收 IM 连接状态变更通知
5258
5290
  * @param status
@@ -5555,6 +5587,8 @@ interface IEngineWatcher {
5555
5587
  */
5556
5588
  onRTCDataChange: (data: IServerRTCRoomEntry[], roomId?: string) => void;
5557
5589
  pullFinished: () => void;
5590
+ /** 导航数据变更 */
5591
+ onNaviDataChange: (naviInfo: INaviInfo) => void;
5558
5592
  }
5559
5593
  /**
5560
5594
  * 引擎定义
@@ -5584,6 +5618,7 @@ declare abstract class AEngine implements IEngine {
5584
5618
  */
5585
5619
  registerRTCSignalingListener(listener: ((buffer: Uint8Array) => void) | undefined): void;
5586
5620
  abstract requestNaviInfo(uris: string[], appkey: string, token: string, checkCA?: boolean): Promise<INaviInfo | null>;
5621
+ abstract updateNaviInfo(naviInfo: INaviInfo): void;
5587
5622
  /**
5588
5623
  * 获取导航数据
5589
5624
  * @param token
@@ -5734,6 +5769,10 @@ declare abstract class AEngine implements IEngine {
5734
5769
  * @param includeMuted 包含已设置免打扰的会话
5735
5770
  */
5736
5771
  abstract getAllConversationUnreadCount(channelId: string, conversationTypes: ConversationType[], includeMuted: boolean): IPromiseResult<number>;
5772
+ /**
5773
+ * 获取会话指定免打扰级别的未读总数
5774
+ */
5775
+ abstract getTotalUnreadCountByLevels(conversationTypes: ConversationType[], levels: NotificationLevel[], isMentioned?: boolean): Promise<IAsyncRes<number>>;
5737
5776
  /**
5738
5777
  * 获取指定会话未读数
5739
5778
  */
@@ -5995,13 +6034,13 @@ declare abstract class AEngine implements IEngine {
5995
6034
  * @todo
5996
6035
  * @param targetId
5997
6036
  */
5998
- abstract getUltraGroupUnreadMentionedCountByTargetId(targetId: string): Promise<IAsyncRes<number>>;
6037
+ abstract getUltraGroupUnreadMentionedCountByTargetId(targetId: string, levels?: NotificationLevel[]): Promise<IAsyncRes<number>>;
5999
6038
  /**
6000
6039
  * 获取指定超级群所有子频道未读数
6001
6040
  * @param targetId 超级群 Id
6002
6041
  * @returns 未读数
6003
6042
  */
6004
- abstract getUltraGroupUnreadCountByTargetId(targetId: string): IPromiseResult<number>;
6043
+ abstract getUltraGroupUnreadCountByTargetId(targetId: string, levels?: NotificationLevel[]): IPromiseResult<number>;
6005
6044
  /**
6006
6045
  * 超级群类型未读数
6007
6046
  * @param isMentioned 是否是 @ 消息
@@ -6416,6 +6455,7 @@ declare const isHttpUrl: (value: any) => boolean;
6416
6455
  */
6417
6456
  declare const notEmptyObject: (val: Object) => boolean;
6418
6457
  declare const isValidConversationType: (conversation: number) => boolean;
6458
+ declare const isValidNotificationLevel: (level: number) => boolean;
6419
6459
  declare const isValidChannelId: (value: any) => boolean;
6420
6460
  /**
6421
6461
  * 判断是否是一个有效的文件类型
@@ -6430,7 +6470,6 @@ declare const isValidExpansion: (expansion: {
6430
6470
  [key: string]: string;
6431
6471
  } | undefined) => IIsValidExpansion;
6432
6472
 
6433
- /** ******************************************新重构logger,按照Web新日志规范上报 ********************************** **/
6434
6473
  declare const sessionId: string;
6435
6474
  /**
6436
6475
  * logLevelTransformer
@@ -6511,8 +6550,6 @@ declare namespace base {
6511
6550
  */
6512
6551
  declare function reportLog(logLevel: LogLevel, tagId: string, content: string, logSource?: LogSource): void;
6513
6552
 
6514
- /** ******************************************旧Logger类,fix兼容用,逐步废弃 ********************************** **/
6515
-
6516
6553
  /**
6517
6554
  * @description 兼容旧版用法,建议用Logger静态方法
6518
6555
  * 1、不符合新版Web日志规范
@@ -6672,6 +6709,19 @@ declare const pushJSONToConfigs: (pushStr: string, pushId: string) => {
6672
6709
  };
6673
6710
  declare const isValidChrmEntryKey: (key: string) => Boolean;
6674
6711
  declare const isValidChrmEntryValue: (value: string) => Boolean;
6712
+ /**
6713
+ * 端上生成 MessageId
6714
+ * 规则与协议栈生成 clientUid 一致, 得到 64 位数字。
6715
+ * 生成规则:
6716
+ * 1st: 取时间戳低 32 位, (前边空一位)。
6717
+ * 2nd: 偏移量 [0 -> 2047] 自增,超出从 0 开始, 占 11 位。
6718
+ * 3rd: 随机数 [0 -> 2^20 - 1], 占 20 位。
6719
+ * 作用:
6720
+ * 1. 用于消息发送前在消息列表中渲染,发送成功或失败后更新消息的 标识。
6721
+ * 2. 消息滤重,参考文档:https://rongcloud.yuque.com/tbvylv/znhprz/zwlg5d
6722
+ * 注意: 这里的 messageId 与 websocketChannel 中的 messageId 不是同一个。
6723
+ */
6724
+ declare const getClientMessageId: () => number;
6675
6725
 
6676
6726
  /**
6677
6727
  * @todo 后期禁用此方法,容易滥用,且会丢失上下文的数据类型跟踪
@@ -6817,4 +6867,4 @@ declare const ONE_LOG_SIZE_MAX = 1000;
6817
6867
  */
6818
6868
  declare const version: string;
6819
6869
 
6820
- export { AEngine, APIContext, AbsCodec, AppStorage, AssertRules, CONNECTION_TYPE, CPP_PROTOCAL_MSGTYPE_OPTION, CallLibMsgType, ChatroomEntryType, ChatroomUserChangeType, CometChannel, ConnectResultCode, ConnectionStatus, ConversationType, DB_LOG_FLUSH_FREQUENCY, DB_LOG_MAX_SIZE, DelayTimer, ErrorCode, EventEmitter, FileType, HttpMethod, IAPIContextOption, IAndroidPushConfig, IAsyncRes, IBaseConversationInfo, IBlockedMessageInfo, ICancelRoomPKOptions, IChatRoomEntries, IChatRoomEntry, IChatroomEntries, IChatroomEntry, IChatroomEntryListenerData, IChatroomInfo, IChatroomListener, IChatroomListenerData, IChatroomRejoinedFailed, IChatroomRejoinedInfo, IChatroomRejoinedSuccessed, IChatroomUser, IChatroomUserChangeInfo, IChrmKVEntries, IChrmKVEntry, IConnectResult, IConnectionStatusListener, IConversationOption, IConversationState, IConversationStateListener, IConversationTag, IConversationTagListener, IDataChannelWatcher, IDeletedExpansion, IEndRoomPKOptions, IEngine, IEngineWatcher, IEventListener, IExpansionListener, IExpansionListenerData, IExpansionMsgContent, IExtraMethod, IGetMsgOption, IGetUltraGroupListOption, IGooglePushConfig, IInsertMsgOptions, IIsValidExpansion, IJoinRTCRoomData, ILocalReadReceiptInfo, ILocalTagStatus, ILogExtensions, ILogInfo, ILogInit, IM_CHATROOM_PULL_INTERVAL_TIME, IM_COMET_PULLMSG_TIMEOUT, IM_PING_INTERVAL_TIME, IM_PING_MIN_TIMEOUT, IM_PING_TIMEOUT, IM_SIGNAL_TIMEOUT, IMessageListnenr, IMessageReader, IMessageReaderResponse, IMetionedData, INaviInfo, IPluginGenerator, IPromiseResult, IPushConfig, IRTCInnerListener, IRTCJoinedInfo, IRTCRoomBindOption, IRTCRoomInfo, IRTCUserData, IRTCUsers, IReadReceiptInfo, IRealTimeLog, IRecallMsgContent, IRecallMsgOptions, IReceivedConversation, IReceivedConversationByTag, IReceivedMessage, IRemoveChatRoomEntries, IRemoveChatRoomEntry, IRemoveChatroomEntries, IRemoveChatroomEntry, IReqRoomPKOptions, IRequest, IResRoomPKOptions, IResponse, IRtcTokenData, IRuntime, ISendExMsgOptions, ISendMsgOptions, IServerConversationStatus, IServerRTCRoomEntry, IServerUserSetting, ISetConversationStatusOptions, IStorage, ITagInfo, ITagListener, ITagParam, ITagStatus, ITypingInfo, ITypingMessage, ITypingUser, IUltraExMsgOptions, IUltraGroupConversation, IUltraGroupOption, IUltraModifyMsgOptions, IUltraMsgQueryOptions, IUpdatedConversation, IUpdatedExpansion, IUploadAuth, IUserProfile, IWatcher, IWebSocket, IiOSPushConfig, ItypingStateListener, KVString, LiveRole, LiveType, LogLevel, LogSource, LogTagId, Logger, MAX_MESSAGE_CONTENT_BYTES, MAX_MESSAGE_EXPANSION_KEY_LENGTH, MAX_MESSAGE_EXPANSION_VAL_LENGTH, MINI_COMET_CONNECT_URIS, MINI_SOCKET_CONNECT_URIS, MentionedType, MessageBlockSourceType, MessageBlockType, MessageDirection, MessageType, NAVI_CACHE_DURATION, NAVI_REQ_TIMEOUT, NetworkType, NotificationLevel, NotificationStatus, ONE_LOG_SIZE_MAX, OperateStatus, PING_REQ_TIMEOUT, PUBLIC_CLOUD_NAVI_URIS, PluginContext, RCAssertError, REAT_TIME_LOG_SIZE, RTCApiType, RTCIdentityChangeType, RTCJoinType, RTCKeyMaps, RTCMode, RTCPluginContext, ReceivedStatus, SEND_MESSAGE_TYPE_OPTION, STATUS_MESSAGE, STORAGE_ROOT_KEY, TagChangeType, UltraGroupChannelChangeType, UltraGroupChannelType, UltraMsgChangeType, UltraMsgSubChangeType, UploadMethod, VersionManage, WEB_SOCKET_TIMEOUT, WebSocketChannel, appendUrl, assert, clone, cloneByJSON, _default as engineLogger, forEach, formatConnectResponseCode, getBrowser, getMimeKey, getUUID, getUUID22, getUploadFileName, indexOf, isArray, isArrayBuffer, isBoolean, isFunction, isHttpUrl, isInObject, isInclude, isNull, isNumber, isObject, isString, isUndefined, isValidChannelId, isValidChrmEntryKey, isValidChrmEntryValue, isValidConversationType, isValidExpansion, isValidFileType, base as logger, map, notEmptyArray, notEmptyObject, notEmptyString, pushConfigsToJSON, pushJSONToConfigs, randomNum, todo, usingCppEngine, validate, version };
6870
+ export { AEngine, APIContext, AbsCodec, AppStorage, AssertRules, CONNECTION_TYPE, CPP_PROTOCAL_MSGTYPE_OPTION, CallLibMsgType, ChatroomEntryType, ChatroomUserChangeType, CometChannel, ConnectResultCode, ConnectionStatus, ConversationType, DB_LOG_FLUSH_FREQUENCY, DB_LOG_MAX_SIZE, DelayTimer, ErrorCode, EventEmitter, FileType, HttpMethod, IAPIContextOption, IAndroidPushConfig, IAsyncRes, IBaseConversationInfo, IBlockedMessageInfo, ICancelRoomPKOptions, IChatRoomEntries, IChatRoomEntry, IChatroomEntries, IChatroomEntry, IChatroomEntryListenerData, IChatroomInfo, IChatroomListener, IChatroomListenerData, IChatroomRejoinedFailed, IChatroomRejoinedInfo, IChatroomRejoinedSuccessed, IChatroomUser, IChatroomUserChangeInfo, IChrmKVEntries, IChrmKVEntry, IConnectResult, IConnectionStatusListener, IConversationOption, IConversationState, IConversationStateListener, IConversationTag, IConversationTagListener, IDataChannelWatcher, IDeletedExpansion, IEndRoomPKOptions, IEngine, IEngineWatcher, IEventListener, IExpansionListener, IExpansionListenerData, IExpansionMsgContent, IExtraMethod, IGetMsgOption, IGetUltraGroupListOption, IGooglePushConfig, IInsertMsgOptions, IIsValidExpansion, IJoinRTCRoomData, ILocalReadReceiptInfo, ILocalTagStatus, ILogExtensions, ILogInfo, ILogInit, IM_CHATROOM_PULL_INTERVAL_TIME, IM_COMET_PULLMSG_TIMEOUT, IM_PING_INTERVAL_TIME, IM_PING_MIN_TIMEOUT, IM_PING_TIMEOUT, IM_SIGNAL_TIMEOUT, IMessageListnenr, IMessageReader, IMessageReaderResponse, IMetionedData, INaviInfo, IPluginGenerator, IPromiseResult, IPushConfig, IRTCInnerListener, IRTCJoinedInfo, IRTCRoomBindOption, IRTCRoomInfo, IRTCUserData, IRTCUsers, IReadReceiptInfo, IRealTimeLog, IRecallMsgContent, IRecallMsgOptions, IReceivedConversation, IReceivedConversationByTag, IReceivedMessage, IRemoveChatRoomEntries, IRemoveChatRoomEntry, IRemoveChatroomEntries, IRemoveChatroomEntry, IReqRoomPKOptions, IRequest, IResRoomPKOptions, IResponse, IRtcTokenData, IRuntime, ISendExMsgOptions, ISendMsgOptions, IServerConversationStatus, IServerRTCRoomEntry, IServerUserSetting, ISetConversationStatusOptions, IStorage, ITagInfo, ITagListener, ITagParam, ITagStatus, ITypingInfo, ITypingMessage, ITypingUser, IUltraExMsgOptions, IUltraGroupConversation, IUltraGroupOption, IUltraModifyMsgOptions, IUltraMsgQueryOptions, IUpdatedConversation, IUpdatedExpansion, IUploadAuth, IUserProfile, IWatcher, IWebSocket, IiOSPushConfig, ItypingStateListener, KVString, LiveRole, LiveType, LogLevel, LogSource, LogTagId, Logger, MAX_MESSAGE_CONTENT_BYTES, MAX_MESSAGE_EXPANSION_KEY_LENGTH, MAX_MESSAGE_EXPANSION_VAL_LENGTH, MINI_COMET_CONNECT_URIS, MINI_SOCKET_CONNECT_URIS, MentionedType, MessageBlockSourceType, MessageBlockType, MessageDirection, MessageType, NAVI_CACHE_DURATION, NAVI_REQ_TIMEOUT, NetworkType, NotificationLevel, NotificationStatus, ONE_LOG_SIZE_MAX, OperateStatus, PING_REQ_TIMEOUT, PUBLIC_CLOUD_NAVI_URIS, PluginContext, RCAssertError, REAT_TIME_LOG_SIZE, RTCApiType, RTCIdentityChangeType, RTCJoinType, RTCKeyMaps, RTCMode, RTCPluginContext, ReceivedStatus, SEND_MESSAGE_TYPE_OPTION, STATUS_MESSAGE, STORAGE_ROOT_KEY, TagChangeType, UltraGroupChannelChangeType, UltraGroupChannelType, UltraMsgChangeType, UltraMsgSubChangeType, UploadMethod, VersionManage, WEB_SOCKET_TIMEOUT, WebSocketChannel, appendUrl, assert, clone, cloneByJSON, _default as engineLogger, forEach, formatConnectResponseCode, getBrowser, getClientMessageId, getMimeKey, getUUID, getUUID22, getUploadFileName, indexOf, isArray, isArrayBuffer, isBoolean, isFunction, isHttpUrl, isInObject, isInclude, isNull, isNumber, isObject, isString, isUndefined, isValidChannelId, isValidChrmEntryKey, isValidChrmEntryValue, isValidConversationType, isValidExpansion, isValidFileType, isValidNotificationLevel, base as logger, map, notEmptyArray, notEmptyObject, notEmptyString, pushConfigsToJSON, pushJSONToConfigs, randomNum, todo, usingCppEngine, validate, version };