UNPKG

384 kBSource Map (JSON)View Raw
1{"version":3,"file":"realtime.js","sources":["../proto/message-compiled.js","../proto/message.js","../src/utils/global.js","../src/utils/expirable.js","../src/utils/cache.js","../src/utils/index.js","../src/websocket-plus.js","../src/error.js","../src/connection.js","../src/plugin.js","../src/realtime.js","../src/core.js","../src/events/im.js","../src/messages/message.js","../src/messages/helpers.js","../src/messages/typed-message.js","../src/messages/recalled-message.js","../src/conversations/conversation-base.js","../src/signature-factory-runner.js","../src/conversations/persistent-conversation.js","../src/conversation-member-info.js","../src/conversations/conversation.js","../src/conversations/chat-room.js","../src/conversations/service-conversation.js","../src/conversations/temporary-conversation.js","../src/conversation-query.js","../src/session-manager.js","../src/im-client.js","../src/events/core.js","../src/messages/binary-message.js","../src/messages/text-message.js","../src/message-parser.js","../src/plugin-im.js","../src/index.js"],"sourcesContent":["module.exports = require('protobufjs/dist/protobuf-light')\n .newBuilder({})\n ['import']({\n package: 'push_server.messages2',\n syntax: 'proto2',\n options: {\n objc_class_prefix: 'AVIM',\n },\n messages: [\n {\n name: 'JsonObjectMessage',\n syntax: 'proto2',\n fields: [\n {\n rule: 'required',\n type: 'string',\n name: 'data',\n id: 1,\n },\n ],\n },\n {\n name: 'UnreadTuple',\n syntax: 'proto2',\n fields: [\n {\n rule: 'required',\n type: 'string',\n name: 'cid',\n id: 1,\n },\n {\n rule: 'required',\n type: 'int32',\n name: 'unread',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'from',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'data',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'patchTimestamp',\n id: 7,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'mentioned',\n id: 8,\n },\n {\n rule: 'optional',\n type: 'bytes',\n name: 'binaryMsg',\n id: 9,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'convType',\n id: 10,\n },\n ],\n },\n {\n name: 'LogItem',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'from',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'data',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'msgId',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'ackAt',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'readAt',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'patchTimestamp',\n id: 7,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'mentionAll',\n id: 8,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'mentionPids',\n id: 9,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'bin',\n id: 10,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'convType',\n id: 11,\n },\n ],\n },\n {\n name: 'ConvMemberInfo',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'pid',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'role',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'infoId',\n id: 3,\n },\n ],\n },\n {\n name: 'DataCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'repeated',\n type: 'string',\n name: 'ids',\n id: 1,\n },\n {\n rule: 'repeated',\n type: 'JsonObjectMessage',\n name: 'msg',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'offline',\n id: 3,\n },\n ],\n },\n {\n name: 'SessionCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'n',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 's',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'ua',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'r',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'tag',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'deviceId',\n id: 7,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'sessionPeerIds',\n id: 8,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'onlineSessionPeerIds',\n id: 9,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'st',\n id: 10,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'stTtl',\n id: 11,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'code',\n id: 12,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'reason',\n id: 13,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'deviceToken',\n id: 14,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'sp',\n id: 15,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'detail',\n id: 16,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'lastUnreadNotifTime',\n id: 17,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'lastPatchTime',\n id: 18,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'configBitmap',\n id: 19,\n },\n ],\n },\n {\n name: 'ErrorCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'required',\n type: 'int32',\n name: 'code',\n id: 1,\n },\n {\n rule: 'required',\n type: 'string',\n name: 'reason',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'appCode',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'detail',\n id: 4,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'pids',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'appMsg',\n id: 6,\n },\n ],\n },\n {\n name: 'DirectCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'msg',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'uid',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'fromPeerId',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'offline',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'hasMore',\n id: 6,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'toPeerIds',\n id: 7,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'r',\n id: 10,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 11,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'id',\n id: 12,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'transient',\n id: 13,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'dt',\n id: 14,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'roomId',\n id: 15,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'pushData',\n id: 16,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'will',\n id: 17,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'patchTimestamp',\n id: 18,\n },\n {\n rule: 'optional',\n type: 'bytes',\n name: 'binaryMsg',\n id: 19,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'mentionPids',\n id: 20,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'mentionAll',\n id: 21,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'convType',\n id: 22,\n },\n ],\n },\n {\n name: 'AckCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'int32',\n name: 'code',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'reason',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'uid',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'fromts',\n id: 7,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'tots',\n id: 8,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'type',\n id: 9,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'ids',\n id: 10,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'appCode',\n id: 11,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'appMsg',\n id: 12,\n },\n ],\n },\n {\n name: 'UnreadCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'repeated',\n type: 'UnreadTuple',\n name: 'convs',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'notifTime',\n id: 2,\n },\n ],\n },\n {\n name: 'ConvCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'repeated',\n type: 'string',\n name: 'm',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'transient',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'unique',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'cdate',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'initBy',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'sort',\n id: 7,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'limit',\n id: 8,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'skip',\n id: 9,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'flag',\n id: 10,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'count',\n id: 11,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'udate',\n id: 12,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 13,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'n',\n id: 14,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 's',\n id: 15,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'statusSub',\n id: 16,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'statusPub',\n id: 17,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'statusTTL',\n id: 18,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'uniqueId',\n id: 19,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'targetClientId',\n id: 20,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'maxReadTimestamp',\n id: 21,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'maxAckTimestamp',\n id: 22,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'queryAllMembers',\n id: 23,\n },\n {\n rule: 'repeated',\n type: 'MaxReadTuple',\n name: 'maxReadTuples',\n id: 24,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'cids',\n id: 25,\n },\n {\n rule: 'optional',\n type: 'ConvMemberInfo',\n name: 'info',\n id: 26,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'tempConv',\n id: 27,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'tempConvTTL',\n id: 28,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'tempConvIds',\n id: 29,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'allowedPids',\n id: 30,\n },\n {\n rule: 'repeated',\n type: 'ErrorCommand',\n name: 'failedPids',\n id: 31,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'next',\n id: 40,\n },\n {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'results',\n id: 100,\n },\n {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'where',\n id: 101,\n },\n {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'attr',\n id: 103,\n },\n {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'attrModified',\n id: 104,\n },\n ],\n },\n {\n name: 'RoomCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'roomId',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 's',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'n',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'transient',\n id: 5,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'roomPeerIds',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'byPeerId',\n id: 7,\n },\n ],\n },\n {\n name: 'LogsCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'l',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'limit',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'tt',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'tmid',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 7,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'checksum',\n id: 8,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'stored',\n id: 9,\n },\n {\n rule: 'optional',\n type: 'QueryDirection',\n name: 'direction',\n id: 10,\n options: {\n default: 'OLD',\n },\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'tIncluded',\n id: 11,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'ttIncluded',\n id: 12,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'lctype',\n id: 13,\n },\n {\n rule: 'repeated',\n type: 'LogItem',\n name: 'logs',\n id: 105,\n },\n ],\n enums: [\n {\n name: 'QueryDirection',\n syntax: 'proto2',\n values: [\n {\n name: 'OLD',\n id: 1,\n },\n {\n name: 'NEW',\n id: 2,\n },\n ],\n },\n ],\n },\n {\n name: 'RcpCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'id',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'read',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'from',\n id: 5,\n },\n ],\n },\n {\n name: 'ReadTuple',\n syntax: 'proto2',\n fields: [\n {\n rule: 'required',\n type: 'string',\n name: 'cid',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 3,\n },\n ],\n },\n {\n name: 'MaxReadTuple',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'pid',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'maxAckTimestamp',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'maxReadTimestamp',\n id: 3,\n },\n ],\n },\n {\n name: 'ReadCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 1,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'cids',\n id: 2,\n },\n {\n rule: 'repeated',\n type: 'ReadTuple',\n name: 'convs',\n id: 3,\n },\n ],\n },\n {\n name: 'PresenceCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'StatusType',\n name: 'status',\n id: 1,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'sessionPeerIds',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 3,\n },\n ],\n },\n {\n name: 'ReportCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'bool',\n name: 'initiative',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'type',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'data',\n id: 3,\n },\n ],\n },\n {\n name: 'PatchItem',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'recall',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'data',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'patchTimestamp',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'from',\n id: 7,\n },\n {\n rule: 'optional',\n type: 'bytes',\n name: 'binaryMsg',\n id: 8,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'mentionAll',\n id: 9,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'mentionPids',\n id: 10,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'patchCode',\n id: 11,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'patchReason',\n id: 12,\n },\n ],\n },\n {\n name: 'PatchCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'repeated',\n type: 'PatchItem',\n name: 'patches',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'lastPatchTime',\n id: 2,\n },\n ],\n },\n {\n name: 'PubsubCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 1,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'cids',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'topic',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'subtopic',\n id: 4,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'topics',\n id: 5,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'subtopics',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'results',\n id: 7,\n },\n ],\n },\n {\n name: 'BlacklistCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'srcCid',\n id: 1,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'toPids',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'srcPid',\n id: 3,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'toCids',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'limit',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'next',\n id: 6,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'blockedPids',\n id: 8,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'blockedCids',\n id: 9,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'allowedPids',\n id: 10,\n },\n {\n rule: 'repeated',\n type: 'ErrorCommand',\n name: 'failedPids',\n id: 11,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 12,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'n',\n id: 13,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 's',\n id: 14,\n },\n ],\n },\n {\n name: 'GenericCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'CommandType',\n name: 'cmd',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'OpType',\n name: 'op',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'appId',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'peerId',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'i',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'installationId',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'priority',\n id: 7,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'service',\n id: 8,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'serverTs',\n id: 9,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'clientTs',\n id: 10,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'notificationType',\n id: 11,\n },\n {\n rule: 'optional',\n type: 'DataCommand',\n name: 'dataMessage',\n id: 101,\n },\n {\n rule: 'optional',\n type: 'SessionCommand',\n name: 'sessionMessage',\n id: 102,\n },\n {\n rule: 'optional',\n type: 'ErrorCommand',\n name: 'errorMessage',\n id: 103,\n },\n {\n rule: 'optional',\n type: 'DirectCommand',\n name: 'directMessage',\n id: 104,\n },\n {\n rule: 'optional',\n type: 'AckCommand',\n name: 'ackMessage',\n id: 105,\n },\n {\n rule: 'optional',\n type: 'UnreadCommand',\n name: 'unreadMessage',\n id: 106,\n },\n {\n rule: 'optional',\n type: 'ReadCommand',\n name: 'readMessage',\n id: 107,\n },\n {\n rule: 'optional',\n type: 'RcpCommand',\n name: 'rcpMessage',\n id: 108,\n },\n {\n rule: 'optional',\n type: 'LogsCommand',\n name: 'logsMessage',\n id: 109,\n },\n {\n rule: 'optional',\n type: 'ConvCommand',\n name: 'convMessage',\n id: 110,\n },\n {\n rule: 'optional',\n type: 'RoomCommand',\n name: 'roomMessage',\n id: 111,\n },\n {\n rule: 'optional',\n type: 'PresenceCommand',\n name: 'presenceMessage',\n id: 112,\n },\n {\n rule: 'optional',\n type: 'ReportCommand',\n name: 'reportMessage',\n id: 113,\n },\n {\n rule: 'optional',\n type: 'PatchCommand',\n name: 'patchMessage',\n id: 114,\n },\n {\n rule: 'optional',\n type: 'PubsubCommand',\n name: 'pubsubMessage',\n id: 115,\n },\n {\n rule: 'optional',\n type: 'BlacklistCommand',\n name: 'blacklistMessage',\n id: 116,\n },\n ],\n },\n ],\n enums: [\n {\n name: 'CommandType',\n syntax: 'proto2',\n values: [\n {\n name: 'session',\n id: 0,\n },\n {\n name: 'conv',\n id: 1,\n },\n {\n name: 'direct',\n id: 2,\n },\n {\n name: 'ack',\n id: 3,\n },\n {\n name: 'rcp',\n id: 4,\n },\n {\n name: 'unread',\n id: 5,\n },\n {\n name: 'logs',\n id: 6,\n },\n {\n name: 'error',\n id: 7,\n },\n {\n name: 'login',\n id: 8,\n },\n {\n name: 'data',\n id: 9,\n },\n {\n name: 'room',\n id: 10,\n },\n {\n name: 'read',\n id: 11,\n },\n {\n name: 'presence',\n id: 12,\n },\n {\n name: 'report',\n id: 13,\n },\n {\n name: 'echo',\n id: 14,\n },\n {\n name: 'loggedin',\n id: 15,\n },\n {\n name: 'logout',\n id: 16,\n },\n {\n name: 'loggedout',\n id: 17,\n },\n {\n name: 'patch',\n id: 18,\n },\n {\n name: 'pubsub',\n id: 19,\n },\n {\n name: 'blacklist',\n id: 20,\n },\n {\n name: 'goaway',\n id: 21,\n },\n ],\n },\n {\n name: 'OpType',\n syntax: 'proto2',\n values: [\n {\n name: 'open',\n id: 1,\n },\n {\n name: 'add',\n id: 2,\n },\n {\n name: 'remove',\n id: 3,\n },\n {\n name: 'close',\n id: 4,\n },\n {\n name: 'opened',\n id: 5,\n },\n {\n name: 'closed',\n id: 6,\n },\n {\n name: 'query',\n id: 7,\n },\n {\n name: 'query_result',\n id: 8,\n },\n {\n name: 'conflict',\n id: 9,\n },\n {\n name: 'added',\n id: 10,\n },\n {\n name: 'removed',\n id: 11,\n },\n {\n name: 'refresh',\n id: 12,\n },\n {\n name: 'refreshed',\n id: 13,\n },\n {\n name: 'start',\n id: 30,\n },\n {\n name: 'started',\n id: 31,\n },\n {\n name: 'joined',\n id: 32,\n },\n {\n name: 'members_joined',\n id: 33,\n },\n {\n name: 'left',\n id: 39,\n },\n {\n name: 'members_left',\n id: 40,\n },\n {\n name: 'results',\n id: 42,\n },\n {\n name: 'count',\n id: 43,\n },\n {\n name: 'result',\n id: 44,\n },\n {\n name: 'update',\n id: 45,\n },\n {\n name: 'updated',\n id: 46,\n },\n {\n name: 'mute',\n id: 47,\n },\n {\n name: 'unmute',\n id: 48,\n },\n {\n name: 'status',\n id: 49,\n },\n {\n name: 'members',\n id: 50,\n },\n {\n name: 'max_read',\n id: 51,\n },\n {\n name: 'is_member',\n id: 52,\n },\n {\n name: 'member_info_update',\n id: 53,\n },\n {\n name: 'member_info_updated',\n id: 54,\n },\n {\n name: 'member_info_changed',\n id: 55,\n },\n {\n name: 'join',\n id: 80,\n },\n {\n name: 'invite',\n id: 81,\n },\n {\n name: 'leave',\n id: 82,\n },\n {\n name: 'kick',\n id: 83,\n },\n {\n name: 'reject',\n id: 84,\n },\n {\n name: 'invited',\n id: 85,\n },\n {\n name: 'kicked',\n id: 86,\n },\n {\n name: 'upload',\n id: 100,\n },\n {\n name: 'uploaded',\n id: 101,\n },\n {\n name: 'subscribe',\n id: 120,\n },\n {\n name: 'subscribed',\n id: 121,\n },\n {\n name: 'unsubscribe',\n id: 122,\n },\n {\n name: 'unsubscribed',\n id: 123,\n },\n {\n name: 'is_subscribed',\n id: 124,\n },\n {\n name: 'modify',\n id: 150,\n },\n {\n name: 'modified',\n id: 151,\n },\n {\n name: 'block',\n id: 170,\n },\n {\n name: 'unblock',\n id: 171,\n },\n {\n name: 'blocked',\n id: 172,\n },\n {\n name: 'unblocked',\n id: 173,\n },\n {\n name: 'members_blocked',\n id: 174,\n },\n {\n name: 'members_unblocked',\n id: 175,\n },\n {\n name: 'check_block',\n id: 176,\n },\n {\n name: 'check_result',\n id: 177,\n },\n {\n name: 'add_shutup',\n id: 180,\n },\n {\n name: 'remove_shutup',\n id: 181,\n },\n {\n name: 'query_shutup',\n id: 182,\n },\n {\n name: 'shutup_added',\n id: 183,\n },\n {\n name: 'shutup_removed',\n id: 184,\n },\n {\n name: 'shutup_result',\n id: 185,\n },\n {\n name: 'shutuped',\n id: 186,\n },\n {\n name: 'unshutuped',\n id: 187,\n },\n {\n name: 'members_shutuped',\n id: 188,\n },\n {\n name: 'members_unshutuped',\n id: 189,\n },\n {\n name: 'check_shutup',\n id: 190,\n },\n ],\n },\n {\n name: 'StatusType',\n syntax: 'proto2',\n values: [\n {\n name: 'on',\n id: 1,\n },\n {\n name: 'off',\n id: 2,\n },\n ],\n },\n ],\n isNamespace: true,\n })\n .build();\n","import messages from './message-compiled';\n\nconst {\n JsonObjectMessage,\n UnreadTuple,\n LogItem,\n DataCommand,\n SessionCommand,\n ErrorCommand,\n DirectCommand,\n AckCommand,\n UnreadCommand,\n ConvCommand,\n RoomCommand,\n LogsCommand,\n RcpCommand,\n ReadTuple,\n MaxReadTuple,\n ReadCommand,\n PresenceCommand,\n ReportCommand,\n GenericCommand,\n BlacklistCommand,\n PatchCommand,\n PatchItem,\n ConvMemberInfo,\n CommandType,\n OpType,\n StatusType,\n} = messages.push_server.messages2;\n\nexport {\n JsonObjectMessage,\n UnreadTuple,\n LogItem,\n DataCommand,\n SessionCommand,\n ErrorCommand,\n DirectCommand,\n AckCommand,\n UnreadCommand,\n ConvCommand,\n RoomCommand,\n LogsCommand,\n RcpCommand,\n ReadTuple,\n MaxReadTuple,\n ReadCommand,\n PresenceCommand,\n ReportCommand,\n GenericCommand,\n BlacklistCommand,\n PatchCommand,\n PatchItem,\n ConvMemberInfo,\n CommandType,\n OpType,\n StatusType,\n};\n","/* eslint-disable */\nexport default (typeof global !== 'undefined'\n ? global\n : typeof window !== 'undefined' ? window : {});\n","import d from 'debug';\n\nconst EXPIRED = Symbol('expired');\nconst debug = d('LC:Expirable');\nexport default class Expirable {\n constructor(value, ttl) {\n this.originalValue = value;\n if (typeof ttl === 'number') {\n this.expiredAt = Date.now() + ttl;\n }\n }\n\n get value() {\n const expired = this.expiredAt && this.expiredAt <= Date.now();\n if (expired) debug(`expired: ${this.originalValue}`);\n return expired ? EXPIRED : this.originalValue;\n }\n}\nExpirable.EXPIRED = EXPIRED;\n","import d from 'debug';\nimport Expirable from './expirable';\n\nconst debug = d('LC:Cache');\nexport default class Cache {\n constructor(name = 'anonymous') {\n this.name = name;\n this._map = {};\n }\n\n get(key) {\n const cache = this._map[key];\n if (cache) {\n const { value } = cache;\n if (value !== Expirable.EXPIRED) {\n debug('[%s] hit: %s', this.name, key);\n return value;\n }\n delete this._map[key];\n }\n debug(`[${this.name}] missed: ${key}`);\n return null;\n }\n\n set(key, value, ttl) {\n debug('[%s] set: %s %d', this.name, key, ttl);\n this._map[key] = new Expirable(value, ttl);\n }\n}\n","import isPlainObject from 'lodash/isPlainObject';\nimport d from 'debug';\nimport global from './global';\n\nexport { global };\n\nexport const debug = {\n enable: (namespaces = 'LC*') => d.enable(namespaces),\n disable: d.disable,\n};\n\nexport const tryAll = promiseConstructors => {\n const promise = new Promise(promiseConstructors[0]);\n if (promiseConstructors.length === 1) {\n return promise;\n }\n return promise.catch(() => tryAll(promiseConstructors.slice(1)));\n};\n\n// eslint-disable-next-line no-sequences\nexport const tap = interceptor => value => (interceptor(value), value);\n\nexport const finalize = callback => [\n // eslint-disable-next-line no-sequences\n value => (callback(), value),\n error => {\n callback();\n throw error;\n },\n];\n\nexport { default as Expirable } from './expirable';\nexport { default as Cache } from './cache';\n\n/**\n * 将对象转换为 Date,支持 string、number、ProtoBuf Long 以及 LeanCloud 的 Date 类型,\n * 其他情况下(包括对象为 falsy)返回原值。\n * @private\n */\nexport const decodeDate = date => {\n if (!date) return date;\n if (typeof date === 'string' || typeof date === 'number') {\n return new Date(date);\n }\n if (date.__type === 'Date' && date.iso) {\n return new Date(date.iso);\n }\n // Long\n if (typeof date.toNumber === 'function') {\n return new Date(date.toNumber());\n }\n return date;\n};\n/**\n * 获取 Date 的毫秒数,如果不是一个 Date 返回 undefined。\n * @private\n */\nexport const getTime = date =>\n date && date.getTime ? date.getTime() : undefined;\n\n/**\n * 解码对象中的 LeanCloud 数据结构。\n * 目前仅会处理 Date 类型。\n * @private\n */\nexport const decode = value => {\n if (!value) return value;\n if (value.__type === 'Date' && value.iso) {\n return new Date(value.iso);\n }\n if (Array.isArray(value)) {\n return value.map(decode);\n }\n if (isPlainObject(value)) {\n return Object.keys(value).reduce(\n (result, key) => ({\n ...result,\n [key]: decode(value[key]),\n }),\n {}\n );\n }\n return value;\n};\n/**\n * 将对象中的特殊类型编码为 LeanCloud 数据结构。\n * 目前仅会处理 Date 类型。\n * @private\n */\nexport const encode = value => {\n if (value instanceof Date) return { __type: 'Date', iso: value.toJSON() };\n if (Array.isArray(value)) {\n return value.map(encode);\n }\n if (isPlainObject(value)) {\n return Object.keys(value).reduce(\n (result, key) => ({\n ...result,\n [key]: encode(value[key]),\n }),\n {}\n );\n }\n return value;\n};\n\nexport const keyRemap = (keymap, obj) =>\n Object.keys(obj).reduce((newObj, key) => {\n const newKey = keymap[key] || key;\n return Object.assign(newObj, {\n [newKey]: obj[key],\n });\n }, {});\n\nexport const isIE10 =\n global.navigator &&\n global.navigator.userAgent &&\n global.navigator.userAgent.indexOf('MSIE 10.') !== -1;\n\n/* eslint-disable no-proto */\nexport const getStaticProperty = (klass, property) =>\n klass[property] ||\n (klass.__proto__ ? getStaticProperty(klass.__proto__, property) : undefined);\n/* eslint-enable no-proto */\n\nexport const union = (a, b) => Array.from(new Set([...a, ...b]));\nexport const difference = (a, b) =>\n Array.from((bSet => new Set(a.filter(x => !bSet.has(x))))(new Set(b)));\n\nconst map = new WeakMap();\n\n// protected property helper\nexport const internal = object => {\n if (!map.has(object)) {\n map.set(object, {});\n }\n return map.get(object);\n};\n\nexport const compact = (obj, filter) => {\n if (!isPlainObject(obj)) return obj;\n const object = Object.assign({}, obj);\n // eslint-disable-next-line no-restricted-syntax\n for (const prop in object) {\n if ({}.hasOwnProperty.call(object, prop)) {\n const value = object[prop];\n if (value === filter) {\n delete object[prop];\n } else {\n object[prop] = compact(value, filter);\n }\n }\n }\n return object;\n};\n\n// debug utility\nconst removeNull = obj => compact(obj, null);\nexport const trim = message => removeNull(JSON.parse(JSON.stringify(message)));\n\nexport const ensureArray = target => {\n if (Array.isArray(target)) {\n return target;\n }\n if (target === undefined || target === null) {\n return [];\n }\n return [target];\n};\n\nexport const setValue = (target, key, value) => {\n // '.' is not allowed in Class keys, escaping is not in concern now.\n const segs = key.split('.');\n const lastSeg = segs.pop();\n let currentTarget = target;\n segs.forEach(seg => {\n if (currentTarget[seg] === undefined) currentTarget[seg] = {};\n currentTarget = currentTarget[seg];\n });\n currentTarget[lastSeg] = value;\n return target;\n};\n\nexport const isWeapp =\n // eslint-disable-next-line no-undef\n typeof wx === 'object' && typeof wx.connectSocket === 'function';\n\n// throttle decorator\nexport const throttle = wait => (target, property, descriptor) => {\n const callback = descriptor.value;\n // very naive, internal use only\n if (callback.length) {\n throw new Error('throttled function should not accept any arguments');\n }\n return {\n ...descriptor,\n value() {\n let { throttleMeta } = internal(this);\n if (!throttleMeta) {\n throttleMeta = {};\n internal(this).throttleMeta = throttleMeta;\n }\n let { [property]: propertyMeta } = throttleMeta;\n if (!propertyMeta) {\n propertyMeta = {};\n throttleMeta[property] = propertyMeta;\n }\n const { previouseTimestamp = 0, timeout } = propertyMeta;\n const now = Date.now();\n const remainingTime = wait - (now - previouseTimestamp);\n if (remainingTime <= 0) {\n throttleMeta[property].previouseTimestamp = now;\n callback.apply(this);\n } else if (!timeout) {\n propertyMeta.timeout = setTimeout(() => {\n propertyMeta.previouseTimestamp = Date.now();\n delete propertyMeta.timeout;\n callback.apply(this);\n }, remainingTime);\n }\n },\n };\n};\n\nexport const isCNApp = appId => appId.slice(-9) !== '-MdYXbMMI';\n","// WebSocket with auto reconnecting feature, backup endpoint and EventEmitter interface.\n\nimport d from 'debug';\nimport EventEmitter from 'eventemitter3';\nimport StateMachine from 'javascript-state-machine';\n\nimport WebSocket from 'ws';\n\nimport { ensureArray, tryAll, global } from './utils';\n\nconst debug = d('LC:WebSocketPlus');\n\nexport const OPEN = 'open';\nexport const DISCONNECT = 'disconnect';\nexport const RECONNECT = 'reconnect';\nexport const RETRY = 'retry';\nexport const SCHEDULE = 'schedule';\nexport const OFFLINE = 'offline';\nexport const ONLINE = 'online';\nexport const ERROR = 'error';\nexport const MESSAGE = 'message';\n\nconst HEARTBEAT_TIME = 180000;\nconst TIMEOUT_TIME = 380000;\n\nconst DEFAULT_RETRY_STRATEGY = attempt => Math.min(1000 * 2 ** attempt, 300000);\n\nconst requireConnected = (target, name, descriptor) =>\n Object.assign({}, descriptor, {\n value: function requireConnectedWrapper(...args) {\n this.checkConnectionAvailability(name);\n return descriptor.value.call(this, ...args);\n },\n });\n\nclass WebSocketPlus extends EventEmitter {\n get urls() {\n return this._urls;\n }\n\n set urls(urls) {\n this._urls = ensureArray(urls);\n }\n\n constructor(getUrls, protocol) {\n if (typeof WebSocket === 'undefined') {\n throw new Error(\n 'WebSocket is undefined. Polyfill is required in this runtime.'\n );\n }\n super();\n this.init();\n this._protocol = protocol;\n Promise.resolve(typeof getUrls === 'function' ? getUrls() : getUrls)\n .then(ensureArray)\n .then(urls => {\n this._urls = urls;\n return this._open();\n })\n .then(() => {\n this.__postponeTimeoutTimer = this._postponeTimeoutTimer.bind(this);\n if (global.addEventListener) {\n this.__pause = () => {\n if (this.can('pause')) this.pause();\n };\n this.__resume = () => {\n if (this.can('resume')) this.resume();\n };\n global.addEventListener('offline', this.__pause);\n global.addEventListener('online', this.__resume);\n }\n this.open();\n })\n .catch(this.throw.bind(this));\n }\n\n _open() {\n return this._createWs(this._urls, this._protocol).then(ws => {\n const [first, ...reset] = this._urls;\n this._urls = [...reset, first];\n return ws;\n });\n }\n\n _createWs(urls, protocol) {\n return tryAll(\n urls.map(url => (resolve, reject) => {\n debug(`connect [${url}] ${protocol}`);\n const ws = protocol ? new WebSocket(url, protocol) : new WebSocket(url);\n ws.binaryType = this.binaryType || 'arraybuffer';\n ws.onopen = () => resolve(ws);\n ws.onclose = error => {\n if (error instanceof Error) {\n return reject(error);\n }\n // in browser, error event is useless\n return reject(new Error(`Failed to connect [${url}]`));\n };\n ws.onerror = ws.onclose;\n })\n ).then(ws => {\n this._ws = ws;\n this._ws.onclose = this._handleClose.bind(this);\n this._ws.onmessage = this._handleMessage.bind(this);\n return ws;\n });\n }\n\n _destroyWs() {\n const ws = this._ws;\n if (!ws) return;\n ws.onopen = null;\n ws.onclose = null;\n ws.onerror = null;\n ws.onmessage = null;\n this._ws = null;\n ws.close();\n }\n\n // eslint-disable-next-line class-methods-use-this\n onbeforeevent(event, from, to, ...payload) {\n debug(`${event}: ${from} -> ${to} %o`, payload);\n }\n\n onopen() {\n this.emit(OPEN);\n }\n\n onconnected() {\n this._startConnectionKeeper();\n }\n\n onleaveconnected(event, from, to) {\n this._stopConnectionKeeper();\n this._destroyWs();\n if (to === 'offline' || to === 'disconnected') {\n this.emit(DISCONNECT);\n }\n }\n\n onpause() {\n this.emit(OFFLINE);\n }\n\n onbeforeresume() {\n this.emit(ONLINE);\n }\n\n onreconnect() {\n this.emit(RECONNECT);\n }\n\n ondisconnected(event, from, to, attempt = 0) {\n const delay = DEFAULT_RETRY_STRATEGY.call(null, attempt);\n debug(`schedule attempt=${attempt} delay=${delay}`);\n this.emit(SCHEDULE, attempt, delay);\n if (this.__scheduledRetry) {\n clearTimeout(this.__scheduledRetry);\n }\n this.__scheduledRetry = setTimeout(() => {\n if (this.is('disconnected')) {\n this.retry(attempt);\n }\n }, delay);\n }\n\n onretry(event, from, to, attempt = 0) {\n this.emit(RETRY, attempt);\n this._open().then(\n () => (this.can('reconnect') ? this.reconnect() : this._destroyWs()),\n () => this.can('fail') && this.fail(attempt + 1)\n );\n }\n\n onerror(event, from, to, error) {\n this.emit(ERROR, error);\n }\n\n onclose() {\n if (global.removeEventListener) {\n if (this.__pause) global.removeEventListener('offline', this.__pause);\n if (this.__resume) global.removeEventListener('online', this.__resume);\n }\n }\n\n checkConnectionAvailability(name = 'API') {\n if (!this.is('connected')) {\n const currentState = this.current;\n console.warn(\n `${name} should not be called when the connection is ${currentState}`\n );\n if (this.is('disconnected') || this.is('reconnecting')) {\n console.warn(\n 'disconnect and reconnect event should be handled to avoid such calls.'\n );\n }\n throw new Error('Connection unavailable');\n }\n }\n\n // jsdoc-ignore-start\n @requireConnected\n // jsdoc-ignore-end\n _ping() {\n debug('ping');\n try {\n this.ping();\n } catch (error) {\n console.warn(`websocket ping error: ${error.message}`);\n }\n }\n\n ping() {\n if (this._ws.ping) {\n this._ws.ping();\n } else {\n console.warn(`The WebSocket implement does not support sending ping frame.\n Override ping method to use application defined ping/pong mechanism.`);\n }\n }\n\n _postponeTimeoutTimer() {\n debug('_postponeTimeoutTimer');\n this._clearTimeoutTimers();\n this._timeoutTimer = setTimeout(() => {\n debug('timeout');\n this.disconnect();\n }, TIMEOUT_TIME);\n }\n\n _clearTimeoutTimers() {\n if (this._timeoutTimer) {\n clearTimeout(this._timeoutTimer);\n }\n }\n\n _startConnectionKeeper() {\n debug('start connection keeper');\n this._heartbeatTimer = setInterval(this._ping.bind(this), HEARTBEAT_TIME);\n const addListener = this._ws.addListener || this._ws.addEventListener;\n if (!addListener) {\n debug('connection keeper disabled due to the lack of #addEventListener.');\n return;\n }\n addListener.call(this._ws, 'message', this.__postponeTimeoutTimer);\n addListener.call(this._ws, 'pong', this.__postponeTimeoutTimer);\n this._postponeTimeoutTimer();\n }\n\n _stopConnectionKeeper() {\n debug('stop connection keeper');\n // websockets/ws#489\n const removeListener =\n this._ws.removeListener || this._ws.removeEventListener;\n if (removeListener) {\n removeListener.call(this._ws, 'message', this.__postponeTimeoutTimer);\n removeListener.call(this._ws, 'pong', this.__postponeTimeoutTimer);\n this._clearTimeoutTimers();\n }\n if (this._heartbeatTimer) {\n clearInterval(this._heartbeatTimer);\n }\n }\n\n _handleClose(event) {\n debug(`ws closed [${event.code}] ${event.reason}`);\n // socket closed manually, ignore close event.\n if (this.isFinished()) return;\n this.handleClose(event);\n }\n\n handleClose() {\n // reconnect\n this.disconnect();\n }\n\n // jsdoc-ignore-start\n @requireConnected\n // jsdoc-ignore-end\n send(data) {\n debug('send', data);\n this._ws.send(data);\n }\n\n _handleMessage(event) {\n debug('message', event.data);\n this.handleMessage(event.data);\n }\n\n handleMessage(message) {\n this.emit(MESSAGE, message);\n }\n}\n\nStateMachine.create({\n target: WebSocketPlus.prototype,\n initial: {\n state: 'initialized',\n event: 'init',\n defer: true,\n },\n terminal: 'closed',\n events: [\n {\n name: 'open',\n from: 'initialized',\n to: 'connected',\n },\n {\n name: 'disconnect',\n from: 'connected',\n to: 'disconnected',\n },\n {\n name: 'retry',\n from: 'disconnected',\n to: 'reconnecting',\n },\n {\n name: 'fail',\n from: 'reconnecting',\n to: 'disconnected',\n },\n {\n name: 'reconnect',\n from: 'reconnecting',\n to: 'connected',\n },\n {\n name: 'pause',\n from: ['connected', 'disconnected', 'reconnecting'],\n to: 'offline',\n },\n {},\n {\n name: 'resume',\n from: 'offline',\n to: 'disconnected',\n },\n {\n name: 'close',\n from: ['connected', 'disconnected', 'reconnecting', 'offline'],\n to: 'closed',\n },\n {\n name: 'throw',\n from: '*',\n to: 'error',\n },\n ],\n});\n\nexport default WebSocketPlus;\n","export const error = Object.freeze({\n 1000: {\n name: 'CLOSE_NORMAL',\n },\n 1006: {\n name: 'CLOSE_ABNORMAL',\n },\n 4100: {\n name: 'APP_NOT_AVAILABLE',\n message: 'App not exists or realtime message service is disabled.',\n },\n 4102: {\n name: 'SIGNATURE_FAILED',\n message: 'Login signature mismatch.',\n },\n 4103: {\n name: 'INVALID_LOGIN',\n message: 'Malformed clientId.',\n },\n 4105: {\n name: 'SESSION_REQUIRED',\n message: 'Message sent before session opened.',\n },\n 4107: {\n name: 'READ_TIMEOUT',\n },\n 4108: {\n name: 'LOGIN_TIMEOUT',\n },\n 4109: {\n name: 'FRAME_TOO_LONG',\n },\n 4110: {\n name: 'INVALID_ORIGIN',\n message: 'Access denied by domain whitelist.',\n },\n 4111: {\n name: 'SESSION_CONFLICT',\n },\n 4112: {\n name: 'SESSION_TOKEN_EXPIRED',\n },\n 4113: {\n name: 'APP_QUOTA_EXCEEDED',\n message: 'The daily active users limit exceeded.',\n },\n 4116: {\n name: 'MESSAGE_SENT_QUOTA_EXCEEDED',\n message: 'Command sent too fast.',\n },\n 4200: {\n name: 'INTERNAL_ERROR',\n message: 'Internal error, please contact LeanCloud for support.',\n },\n 4301: {\n name: 'CONVERSATION_API_FAILED',\n message: 'Upstream Conversatoin API failed, see error.detail for details.',\n },\n 4302: {\n name: 'CONVERSATION_SIGNATURE_FAILED',\n message: 'Conversation action signature mismatch.',\n },\n 4303: {\n name: 'CONVERSATION_NOT_FOUND',\n },\n 4304: {\n name: 'CONVERSATION_FULL',\n },\n 4305: {\n name: 'CONVERSATION_REJECTED_BY_APP',\n message: 'Conversation action rejected by hook.',\n },\n 4306: {\n name: 'CONVERSATION_UPDATE_FAILED',\n },\n 4307: {\n name: 'CONVERSATION_READ_ONLY',\n },\n 4308: {\n name: 'CONVERSATION_NOT_ALLOWED',\n },\n 4309: {\n name: 'CONVERSATION_UPDATE_REJECTED',\n message: 'Conversation update rejected because the client is not a member.',\n },\n 4310: {\n name: 'CONVERSATION_QUERY_FAILED',\n message: 'Conversation query failed because it is too expansive.',\n },\n 4311: {\n name: 'CONVERSATION_LOG_FAILED',\n },\n 4312: {\n name: 'CONVERSATION_LOG_REJECTED',\n message:\n 'Message query rejected because the client is not a member of the conversation.',\n },\n 4313: {\n name: 'SYSTEM_CONVERSATION_REQUIRED',\n },\n 4314: {\n name: 'NORMAL_CONVERSATION_REQUIRED',\n },\n 4315: {\n name: 'CONVERSATION_BLACKLISTED',\n message: 'Blacklisted in the conversation.',\n },\n 4316: {\n name: 'TRANSIENT_CONVERSATION_REQUIRED',\n },\n 4317: {\n name: 'CONVERSATION_MEMBERSHIP_REQUIRED',\n },\n 4318: {\n name: 'CONVERSATION_API_QUOTA_EXCEEDED',\n message: 'LeanCloud API quota exceeded. You may upgrade your plan.',\n },\n 4323: {\n name: 'TEMPORARY_CONVERSATION_EXPIRED',\n message: 'Temporary conversation expired or does not exist.',\n },\n 4401: {\n name: 'INVALID_MESSAGING_TARGET',\n message: 'Conversation does not exist or client is not a member.',\n },\n 4402: {\n name: 'MESSAGE_REJECTED_BY_APP',\n message: 'Message rejected by hook.',\n },\n 4403: {\n name: 'MESSAGE_OWNERSHIP_REQUIRED',\n },\n 4404: {\n name: 'MESSAGE_NOT_FOUND',\n },\n 4405: {\n name: 'MESSAGE_UPDATE_REJECTED_BY_APP',\n message: 'Message update rejected by hook.',\n },\n 4406: {\n name: 'MESSAGE_EDIT_DISABLED',\n },\n 4407: {\n name: 'MESSAGE_RECALL_DISABLED',\n },\n 5130: {\n name: 'OWNER_PROMOTION_NOT_ALLOWED',\n message: \"Updating a member's role to owner is not allowed.\",\n },\n});\n\nexport const ErrorCode = Object.freeze(\n Object.keys(error).reduce(\n (result, code) =>\n Object.assign(result, {\n [error[code].name]: Number(code),\n }),\n {}\n )\n);\n\nexport const createError = ({\n code,\n reason,\n appCode,\n detail,\n error: errorMessage,\n}) => {\n let message = reason || detail || errorMessage;\n let name = reason;\n if (!message && error[code]) {\n ({ name } = error[code]);\n message = error[code].message || name;\n }\n if (!message) {\n message = `Unknow Error: ${code}`;\n }\n const err = new Error(message);\n return Object.assign(err, {\n code,\n appCode,\n detail,\n name,\n });\n};\n","import d from 'debug';\nimport WebSocketPlus, {\n OPEN,\n DISCONNECT,\n RECONNECT,\n RETRY,\n SCHEDULE,\n OFFLINE,\n ONLINE,\n ERROR,\n MESSAGE,\n} from './websocket-plus';\nimport { createError } from './error';\nimport { GenericCommand, CommandType } from '../proto/message';\nimport { trim, isWeapp } from './utils';\n\nconst debug = d('LC:Connection');\n\nconst COMMAND_TIMEOUT = 20000;\n\nconst EXPIRE = Symbol('expire');\n\nexport {\n OPEN,\n DISCONNECT,\n RECONNECT,\n RETRY,\n SCHEDULE,\n OFFLINE,\n ONLINE,\n ERROR,\n MESSAGE,\n EXPIRE,\n};\n\nexport default class Connection extends WebSocketPlus {\n constructor(getUrl, { format, version }) {\n debug('initializing Connection');\n const protocolString = `lc.${format}.${version}`;\n if (!isWeapp) {\n super(getUrl, protocolString);\n } else {\n super(\n getUrl().then(urls =>\n urls.map(\n url =>\n `${url}${\n url.indexOf('?') === -1 ? '?' : '&'\n }subprotocol=${encodeURIComponent(protocolString)}`\n )\n )\n );\n }\n this._protocalFormat = format;\n this._commands = {};\n this._serialId = 0;\n }\n\n async send(command, waitingForRespond = true) {\n let serialId;\n if (waitingForRespond) {\n this._serialId += 1;\n serialId = this._serialId;\n command.i = serialId; // eslint-disable-line no-param-reassign\n }\n if (debug.enabled) debug('↑ %O sent', trim(command));\n\n let message;\n if (this._protocalFormat === 'proto2base64') {\n message = command.toBase64();\n } else if (command.toArrayBuffer) {\n message = command.toArrayBuffer();\n }\n if (!message) {\n throw new TypeError(`${command} is not a GenericCommand`);\n }\n\n super.send(message);\n\n if (!waitingForRespond) return undefined;\n return new Promise((resolve, reject) => {\n this._commands[serialId] = {\n resolve,\n reject,\n timeout: setTimeout(() => {\n if (this._commands[serialId]) {\n if (debug.enabled) debug('✗ %O timeout', trim(command));\n reject(\n createError({\n error: `Command Timeout [cmd:${command.cmd} op:${command.op}]`,\n name: 'COMMAND_TIMEOUT',\n })\n );\n delete this._commands[serialId];\n }\n }, COMMAND_TIMEOUT),\n };\n });\n }\n\n handleMessage(msg) {\n let message;\n try {\n message = GenericCommand.decode(msg);\n if (debug.enabled) debug('↓ %O received', trim(message));\n } catch (e) {\n console.warn('Decode message failed:', e.message, msg);\n return;\n }\n const serialId = message.i;\n if (serialId) {\n if (this._commands[serialId]) {\n clearTimeout(this._commands[serialId].timeout);\n if (message.cmd === CommandType.error) {\n this._commands[serialId].reject(createError(message.errorMessage));\n } else {\n this._commands[serialId].resolve(message);\n }\n delete this._commands[serialId];\n } else {\n console.warn(`Unexpected command received with serialId [${serialId}],\n which have timed out or never been requested.`);\n }\n } else {\n switch (message.cmd) {\n case CommandType.error: {\n this.emit(ERROR, createError(message.errorMessage));\n return;\n }\n case CommandType.goaway: {\n this.emit(EXPIRE);\n return;\n }\n default: {\n this.emit(MESSAGE, message);\n }\n }\n }\n }\n\n ping() {\n return this.send(\n new GenericCommand({\n cmd: CommandType.echo,\n })\n ).catch(error => debug('ping failed:', error));\n }\n}\n","/* eslint-disable max-len */\n\n/**\n * 插件接口\n *\n * <p>\n * 插件是由一个或多个扩展点组成的字典。SDK 的扩展点可以分为两类:\n * <p>\n * 第一类扩展点是类实例化之后的回调,包括 <code>Realtime</code>、<code>IMClient</code> 与 <code>Conversation</code>。这些扩展点可以通过一个同步的 Decorator 进行扩展。Decorator 接受一个对应的实例并对其进行一些操作。\n * 特别的,由于注册自定义消息类这个需求特别的常用,额外定义一个 messageClasses 扩展点来做这件事情。\n * <p>\n * 第二类扩展点是在某些事件处理前、后可以注入逻辑的点。\n * 其中 <code>beforeMessageParse</code>,<code>afterMessageParse</code> 可以通过一个异步的 Middleware 进行扩展。Middleware 接受一个对象,返回一个同类型对象或同类型对象的 Promise。\n * <code>beforeMessageDispatch</code> 可以通过返回一个 boolean 类型的 shouldDispatch 值来控制是否要继续派发收到的消息。\n * <p>\n * 如果使用了多个插件,这些 hook 会按照插件数组的顺序依次执行。前一个 Middleware 的返回值会作为参数传给后一个 Middleware。\n *\n * @interface Plugin\n * @since 3.1.0\n */\n\n/* eslint-enable max-len */\n\n/**\n * 插件名称,用于在日志中显示异常的插件\n *\n * @name Plugin.name\n * @type string\n */\n\n/**\n * 插件注册的消息类型\n *\n * @name Plugin.messageClasses\n * @type AVMessage[]\n */\n\n/**\n * 在 Realtime 实例化后对其进行修饰。\n * <p>\n * 接受一个参数为 Realtime 实例。\n *\n * @name Plugin.onRealtimeCreate\n * @type Function\n */\n\n/**\n * 在 IMClient 实例化后对其进行修饰。\n * <p>\n * 接受一个参数为 IMClient 实例。\n *\n * @name Plugin.onIMClientCreate\n * @type Function\n */\n\n/**\n * 在 Conversation 实例化后对其进行修饰。\n * <p>\n * 接受一个参数为 Conversation 实例。\n * 需要注意的是,该扩展点并不是在 <code>{@link IMClient#createConversation}</code> 方法创建成功后调用的 hook,\n * 而是所有的 Conversation 实例化的时候(包括但不限于 query 时)调用的 hook。\n *\n * @name Plugin.onConversationCreate\n * @type Function\n */\n\n/**\n * 在对消息进行 parse 之前,对原始消息进行修改。\n * <p>\n * 接受一个参数为原始消息,是某个消息的内容,一般是一个 JSON 对象。\n * 该方法需要返回一个 JSON 对象。如果这个结果是异步得到的,也可以返回一个 Promise(fulfilled with a JSON)。\n *\n * @name Plugin.beforeMessageParse\n * @type Function\n */\n\n/**\n * 在对消息进行 parse 之后,对消息实例进行修改。\n * <p>\n * 接受一个参数为消息实例,一般是一个已注册的 Message 类或其子类的实例。\n * 该方法需要返回一个同类型的消息实例。如果这个结果是异步得到的,也可以返回一个 Promise。\n *\n * @name Plugin.afterMessageParse\n * @type Function\n */\n\n/**\n * 在收到消息之后,派发消息之前,控制是否派发这条消息。\n * <p>\n * 接受参数为 message 与 conversation。\n * 该方法需要返回 boolean 类型的值,如果返回 false 则 SDK 不再派发这条消息,后续的 beforeMessageDispatch 也不会执行。\n * 如果这个结果是异步得到的,也可以返回一个 Promise。\n *\n * @name Plugin.beforeMessageDispatch\n * @type Function\n * @since 3.4.0\n */\n\nimport { ensureArray, tap } from './utils';\n\nconst checkType = middleware => param => {\n const { constructor } = param;\n return Promise.resolve(param)\n .then(middleware)\n .then(\n tap(result => {\n if (result === undefined || result === null) {\n // eslint-disable-next-line max-len\n return console.warn(\n `Middleware[${middleware._pluginName ||\n 'anonymous plugin'}:${middleware.name ||\n 'anonymous middleware'}] param/return types not match. It returns ${result} while a ${\n param.constructor.name\n } expected.`\n );\n }\n if (!(result instanceof constructor)) {\n // eslint-disable-next-line max-len\n return console.warn(\n `Middleware[${middleware._pluginName ||\n 'anonymous plugin'}:${middleware.name ||\n 'anonymous middleware'}] param/return types not match. It returns a ${\n result.constructor.name\n } while a ${param.constructor.name} expected.`\n );\n }\n return 0;\n })\n );\n};\n\nexport const applyDecorators = (decorators, target) => {\n if (decorators) {\n decorators.forEach(decorator => {\n try {\n decorator(target);\n } catch (error) {\n if (decorator._pluginName) {\n error.message += `[${decorator._pluginName}]`;\n }\n throw error;\n }\n });\n }\n};\n\nexport const applyMiddlewares = middlewares => target =>\n ensureArray(middlewares).reduce(\n (previousPromise, middleware) =>\n previousPromise.then(checkType(middleware)).catch(error => {\n if (middleware._pluginName) {\n // eslint-disable-next-line no-param-reassign\n error.message += `[${middleware._pluginName}]`;\n }\n throw error;\n }),\n Promise.resolve(target)\n );\n\nexport const applyDispatcher = (dispatchers, payload) =>\n ensureArray(dispatchers).reduce(\n (resultPromise, dispatcher) =>\n resultPromise\n .then(\n shouldDispatch =>\n shouldDispatch === false ? false : dispatcher(...payload)\n )\n .catch(error => {\n if (dispatcher._pluginName) {\n // eslint-disable-next-line no-param-reassign\n error.message += `[${dispatcher._pluginName}]`;\n }\n throw error;\n }),\n Promise.resolve(true)\n );\n","import d from 'debug';\nimport EventEmitter from 'eventemitter3';\nimport superagent from 'superagent';\nimport shuffle from 'lodash/shuffle';\nimport Connection, {\n OPEN,\n DISCONNECT,\n RECONNECT,\n RETRY,\n SCHEDULE,\n OFFLINE,\n ONLINE,\n ERROR,\n MESSAGE,\n EXPIRE,\n} from './connection';\nimport { ErrorCode, createError } from './error';\nimport {\n tap,\n Cache,\n trim,\n internal,\n ensureArray,\n isWeapp,\n isCNApp,\n} from './utils';\nimport { applyDecorators, applyDispatcher } from './plugin';\nimport { version as VERSION } from '../package.json';\n\nconst debug = d('LC:Realtime');\nconst debugRequest = d('LC:request');\n\nconst routerCache = new Cache('push-router');\n\nexport default class Realtime extends EventEmitter {\n /**\n * @extends EventEmitter\n * @param {Object} options\n * @param {String} options.appId\n * @param {String} options.appKey (since 4.0.0)\n * @param {String|Object} [options.server] 指定服务器域名,中国节点应用此参数必填(since 4.0.0)\n * @param {Boolean} [options.pushOfflineMessages=false] 启用推送离线消息模式(默认为发送未读消息通知模式)\n * @param {Boolean} [options.noBinary=false] 设置 WebSocket 使用字符串格式收发消息(默认为二进制格式)。\n * 适用于 WebSocket 实现不支持二进制数据格式的情况\n * @param {Boolean} [options.ssl=true] 使用 wss 进行连接\n * @param {String|String[]} [options.RTMServers] 指定私有部署的 RTM 服务器地址(since 4.0.0)\n * @param {Plugin[]} [options.plugins] 加载插件(since 3.1.0)\n */\n constructor({ plugins, ...options }) {\n debug('initializing Realtime %s %O', VERSION, options);\n super();\n if (typeof options.appId !== 'string') {\n throw new TypeError(`appId [${options.appId}] is not a string`);\n }\n if (typeof options.appKey !== 'string') {\n throw new TypeError(`appKey [${options.appKey}] is not a string`);\n }\n if (isCNApp(options.appId)) {\n if (!options.server) {\n throw new TypeError(\n `server option is required for apps from CN region`\n );\n }\n }\n this._options = Object.assign(\n {\n appId: undefined,\n appKey: undefined,\n pushOfflineMessages: false,\n noBinary: false,\n ssl: true,\n RTMServerName: process.env.RTM_SERVER_NAME, // undocumented on purpose, internal use only\n },\n options\n );\n this._cache = new Cache('endpoints');\n const _this = internal(this);\n _this.clients = new Set();\n _this.pendingClients = new Set();\n const mergedPlugins = [\n ...ensureArray(Realtime.__preRegisteredPlugins),\n ...ensureArray(plugins),\n ];\n debug('Using plugins %o', mergedPlugins.map(plugin => plugin.name));\n this._plugins = mergedPlugins.reduce((result, plugin) => {\n // eslint-disable-next-line no-restricted-syntax\n for (const hook in plugin) {\n if ({}.hasOwnProperty.call(plugin, hook) && hook !== 'name') {\n if (plugin.name) {\n ensureArray(plugin[hook]).forEach(value => {\n // eslint-disable-next-line no-param-reassign\n value._pluginName = plugin.name;\n });\n }\n // eslint-disable-next-line no-param-reassign\n result[hook] = ensureArray(result[hook]).concat(plugin[hook]);\n }\n }\n return result;\n }, {});\n // onRealtimeCreate hook\n applyDecorators(this._plugins.onRealtimeCreate, this);\n }\n\n async _request({ method, version = '1.1', path, query, headers, data = {} }) {\n const { appId, server } = this._options;\n const { api } = await this.constructor._getServerUrls({\n appId,\n server,\n });\n const url = `${api}/${version}${path}`;\n debugRequest('Req: %O %O %O', method, url, { query, headers, data });\n return superagent(method, url)\n .set({\n 'X-LC-Id': this._options.appId,\n 'X-LC-Key': this._options.appKey,\n ...headers,\n })\n .query(query)\n .send(data)\n .then(\n response => {\n debugRequest('Res: %O %O %O', url, response.status, response.body);\n return response.body;\n },\n error => {\n debugRequest(\n 'Error: %O %O %O',\n url,\n error.response.status,\n error.response.body\n );\n if (\n error.response &&\n error.response.body &&\n error.response.body.code\n ) {\n throw createError(error.response.body);\n }\n throw error;\n }\n );\n }\n\n _open() {\n if (this._openPromise) return this._openPromise;\n\n let format = 'protobuf2';\n if (this._options.noBinary) {\n // 不发送 binary data,fallback to base64 string\n format = 'proto2base64';\n }\n let version = 3;\n if (this._options.pushOfflineMessages) {\n // 不推送离线消息,而是发送对话的未读通知\n version = 1;\n }\n const protocol = {\n format,\n version,\n };\n this._openPromise = new Promise((resolve, reject) => {\n debug('No connection established, create a new one.');\n const connection = new Connection(\n () => this._getRTMServers(this._options),\n protocol\n );\n connection\n .on(OPEN, () => resolve(connection))\n .on(ERROR, reject)\n .on(EXPIRE, async () => {\n debug('Connection expired. Refresh endpoints.');\n this._cache.set('endpoints', null, 0);\n connection.urls = await this._getRTMServers(this._options);\n connection.disconnect();\n })\n .on(MESSAGE, this._dispatchCommand.bind(this));\n /**\n * 连接断开。\n * 连接断开可能是因为 SDK 进入了离线状态(see {@link Realtime#event:OFFLINE}),或长时间没有收到服务器心跳。\n * 连接断开后所有的网络操作都会失败,请在连接断开后禁用相关的 UI 元素。\n * @event Realtime#DISCONNECT\n */\n /**\n * 计划在一段时间后尝试重新连接\n * @event Realtime#SCHEDULE\n * @param {Number} attempt 尝试重连的次数\n * @param {Number} delay 延迟的毫秒数\n */\n /**\n * 正在尝试重新连接\n * @event Realtime#RETRY\n * @param {Number} attempt 尝试重连的次数\n */\n /**\n * 连接恢复正常。\n * 请重新启用在 {@link Realtime#event:DISCONNECT} 事件中禁用的相关 UI 元素\n * @event Realtime#RECONNECT\n */\n\n /**\n * 客户端连接断开\n * @event IMClient#DISCONNECT\n * @see Realtime#event:DISCONNECT\n * @since 3.2.0\n */\n /**\n * 计划在一段时间后尝试重新连接\n * @event IMClient#SCHEDULE\n * @param {Number} attempt 尝试重连的次数\n * @param {Number} delay 延迟的毫秒数\n * @since 3.2.0\n */\n /**\n * 正在尝试重新连接\n * @event IMClient#RETRY\n * @param {Number} attempt 尝试重连的次数\n * @since 3.2.0\n */\n\n /**\n * 客户端进入离线状态。\n * 这通常意味着网络已断开,或者 {@link Realtime#pause} 被调用\n * @event Realtime#OFFLINE\n * @since 3.4.0\n */\n /**\n * 客户端恢复在线状态\n * 这通常意味着网络已恢复,或者 {@link Realtime#resume} 被调用\n * @event Realtime#ONLINE\n * @since 3.4.0\n */\n /**\n * 进入离线状态。\n * 这通常意味着网络已断开,或者 {@link Realtime#pause} 被调用\n * @event IMClient#OFFLINE\n * @since 3.4.0\n */\n /**\n * 恢复在线状态\n * 这通常意味着网络已恢复,或者 {@link Realtime#resume} 被调用\n * @event IMClient#ONLINE\n * @since 3.4.0\n */\n\n // event proxy\n [DISCONNECT, RECONNECT, RETRY, SCHEDULE, OFFLINE, ONLINE].forEach(event =>\n connection.on(event, (...payload) => {\n debug(`${event} event emitted. %o`, payload);\n this.emit(event, ...payload);\n if (event !== RECONNECT) {\n internal(this).clients.forEach(client => {\n client.emit(event, ...payload);\n });\n }\n })\n );\n // override handleClose\n connection.handleClose = function handleClose(event) {\n const isFatal = [\n ErrorCode.APP_NOT_AVAILABLE,\n ErrorCode.INVALID_LOGIN,\n ErrorCode.INVALID_ORIGIN,\n ].some(errorCode => errorCode === event.code);\n if (isFatal) {\n // in these cases, SDK should throw.\n this.throw(createError(event));\n } else {\n // reconnect\n this.disconnect();\n }\n };\n internal(this).connection = connection;\n });\n\n return this._openPromise;\n }\n\n async _getRTMServers(options) {\n if (options.RTMServers) return shuffle(ensureArray(options.RTMServers));\n let info;\n const cachedEndPoints = this._cache.get('endpoints');\n if (cachedEndPoints) {\n info = await cachedEndPoints;\n } else {\n info = await this.constructor._fetchRTMServers(options);\n this._cache.set('endpoints', info, info.ttl * 1000);\n }\n debug('endpoint info: %O', info);\n return [info.server, info.secondary];\n }\n\n static async _getServerUrls({ appId, server }) {\n debug('fetch server urls');\n if (server) {\n if (typeof server !== 'string') return server;\n return {\n RTMRouter: server,\n api: server,\n };\n }\n const cachedRouter = routerCache.get(appId);\n if (cachedRouter) return cachedRouter;\n const defaultProtocol = 'https://';\n return superagent\n .get('https://app-router.com/2/route')\n .query({\n appId,\n })\n .timeout(20000)\n .then(res => res.body)\n .then(tap(debug))\n .then(\n ({\n rtm_router_server: RTMRouterServer,\n api_server: APIServer,\n ttl = 3600,\n }) => {\n if (!RTMRouterServer) {\n throw new Error('rtm router not exists');\n }\n const serverUrls = {\n RTMRouter: `${defaultProtocol}${RTMRouterServer}`,\n api: `${defaultProtocol}${APIServer}`,\n };\n routerCache.set(appId, serverUrls, ttl * 1000);\n return serverUrls;\n }\n )\n .catch(() => {\n const id = appId.slice(0, 8).toLowerCase();\n const domain = 'lncldglobal.com';\n return {\n RTMRouter: `${defaultProtocol}${id}.rtm.${domain}`,\n api: `${defaultProtocol}${id}.api.${domain}`,\n };\n });\n }\n\n static _fetchRTMServers({ appId, ssl, server, RTMServerName }) {\n debug('fetch endpoint info');\n return this._getServerUrls({ appId, server })\n .then(tap(debug))\n .then(({ RTMRouter }) =>\n superagent\n .get(`${RTMRouter}/v1/route`)\n .query({\n appId,\n secure: ssl,\n features: isWeapp ? 'wechat' : undefined,\n server: RTMServerName,\n _t: Date.now(),\n })\n .timeout(20000)\n .then(res => res.body)\n .then(tap(debug))\n );\n }\n\n _close() {\n if (this._openPromise) {\n this._openPromise.then(connection => connection.close());\n }\n delete this._openPromise;\n }\n\n /**\n * 手动进行重连。\n * SDK 在网络出现异常时会自动按照一定的时间间隔尝试重连,调用该方法会立即尝试重连并重置重连尝试计数器。\n * 只能在 `SCHEDULE` 事件之后,`RETRY` 事件之前调用,如果当前网络正常或者正在进行重连,调用该方法会抛异常。\n */\n retry() {\n const { connection } = internal(this);\n if (!connection) {\n throw new Error('no connection established');\n }\n if (connection.cannot('retry')) {\n throw new Error(\n `retrying not allowed when not disconnected. the connection is now ${\n connection.current\n }`\n );\n }\n return connection.retry();\n }\n\n /**\n * 暂停,使 SDK 进入离线状态。\n * 你可以在网络断开、应用进入后台等时刻调用该方法让 SDK 进入离线状态,离线状态下不会尝试重连。\n * 在浏览器中 SDK 会自动监听网络变化,因此无需手动调用该方法。\n *\n * @since 3.4.0\n * @see Realtime#event:OFFLINE\n */\n pause() {\n // 这个方法常常在网络断开、进入后台时被调用,此时 connection 可能没有建立或者已经 close。\n // 因此不像 retry,这个方法应该尽可能 loose\n const { connection } = internal(this);\n if (!connection) return;\n if (connection.can('pause')) connection.pause();\n }\n\n /**\n * 恢复在线状态。\n * 你可以在网络恢复、应用回到前台等时刻调用该方法让 SDK 恢复在线状态,恢复在线状态后 SDK 会开始尝试重连。\n *\n * @since 3.4.0\n * @see Realtime#event:ONLINE\n */\n resume() {\n // 与 pause 一样,这个方法应该尽可能 loose\n const { connection } = internal(this);\n if (!connection) return;\n if (connection.can('resume')) connection.resume();\n }\n\n _registerPending(value) {\n internal(this).pendingClients.add(value);\n }\n\n _deregisterPending(client) {\n internal(this).pendingClients.delete(client);\n }\n\n _register(client) {\n internal(this).clients.add(client);\n }\n\n _deregister(client) {\n const _this = internal(this);\n _this.clients.delete(client);\n if (_this.clients.size + _this.pendingClients.size === 0) {\n this._close();\n }\n }\n\n _dispatchCommand(command) {\n return applyDispatcher(this._plugins.beforeCommandDispatch, [\n command,\n this,\n ]).then(shouldDispatch => {\n // no plugin handled this command\n if (shouldDispatch)\n return debug('[WARN] Unexpected message received: %O', trim(command));\n return false;\n });\n }\n}\n","import './polyfills/polyfills';\nimport * as Protocals from '../proto/message';\n\nexport { Protocals };\n\nexport { default as EventEmitter } from 'eventemitter3';\n\nconst polyfilledPromise = Promise;\nexport { polyfilledPromise as Promise };\n\nexport {\n /**\n * @name Realtime\n * @memberof module:leancloud-realtime\n * @see Realtime\n */\n default as Realtime,\n} from './realtime';\n\nexport { debug } from './utils';\n","// IMClient\nexport const UNREAD_MESSAGES_COUNT_UPDATE = 'unreadmessagescountupdate';\nexport const CLOSE = 'close';\nexport const CONFLICT = 'conflict';\nexport const CONVERSATION_INFO_UPDATED = 'conversationinfoupdated';\nexport const UNHANDLED_MESSAGE = 'unhandledmessage';\n\n// shared\nexport const INVITED = 'invited';\nexport const KICKED = 'kicked';\nexport const MEMBERS_JOINED = 'membersjoined';\nexport const MEMBERS_LEFT = 'membersleft';\nexport const MEMBER_INFO_UPDATED = 'memberinfoupdated';\nexport const BLOCKED = 'blocked';\nexport const UNBLOCKED = 'unblocked';\nexport const MEMBERS_BLOCKED = 'membersblocked';\nexport const MEMBERS_UNBLOCKED = 'membersunblocked';\nexport const MUTED = 'muted';\nexport const UNMUTED = 'unmuted';\nexport const MEMBERS_MUTED = 'membersmuted';\nexport const MEMBERS_UNMUTED = 'membersunmuted';\nexport const MESSAGE = 'message';\nexport const MESSAGE_RECALL = 'messagerecall';\nexport const MESSAGE_UPDATE = 'messageupdate';\n\n// Conversation\nexport const LAST_DELIVERED_AT_UPDATE = 'lastdeliveredatupdate';\nexport const LAST_READ_AT_UPDATE = 'lastreadatupdate';\nexport const INFO_UPDATED = 'infoupdated';\n","import uuid from 'uuid/v4';\nimport { ensureArray, decodeDate, getTime } from '../utils';\n\n/**\n * 消息状态枚举\n * @enum {Symbol}\n * @since 3.2.0\n * @memberof module:leancloud-realtime\n */\nconst MessageStatus = {\n /** 初始状态、未知状态 */\n NONE: Symbol('none'),\n /** 正在发送 */\n SENDING: Symbol('sending'),\n /** 已发送 */\n SENT: Symbol('sent'),\n /** 已送达 */\n DELIVERED: Symbol('delivered'),\n /** 发送失败 */\n FAILED: Symbol('failed'),\n};\nObject.freeze(MessageStatus);\n\nconst rMessageStatus = {\n [MessageStatus.NONE]: true,\n [MessageStatus.SENDING]: true,\n [MessageStatus.SENT]: true,\n [MessageStatus.DELIVERED]: true,\n [MessageStatus.READ]: true,\n [MessageStatus.FAILED]: true,\n};\n\nexport { MessageStatus };\nexport default class Message {\n /**\n * @implements AVMessage\n * @param {Object|String|ArrayBuffer} content 消息内容\n */\n constructor(content) {\n Object.assign(\n this,\n { content },\n {\n /**\n * @type {String}\n * @memberof Message#\n */\n id: uuid(),\n /**\n * 消息所在的 conversation id\n * @memberof Message#\n * @type {String?}\n */\n cid: null,\n /**\n * 消息发送时间\n * @memberof Message#\n * @type {Date}\n */\n timestamp: new Date(),\n /**\n * 消息发送者\n * @memberof Message#\n * @type {String}\n */\n from: undefined,\n /**\n * 消息提及的用户\n * @since 4.0.0\n * @memberof Message#\n * @type {String[]}\n */\n mentionList: [],\n /**\n * 消息是否提及了所有人\n * @since 4.0.0\n * @memberof Message#\n * @type {Boolean}\n */\n mentionedAll: false,\n _mentioned: false,\n }\n );\n this._setStatus(MessageStatus.NONE);\n }\n\n /**\n * 将当前消息的内容序列化为 JSON 对象\n * @private\n * @return {Object}\n */\n getPayload() {\n return this.content;\n }\n\n _toJSON() {\n const {\n id,\n cid,\n from,\n timestamp,\n deliveredAt,\n updatedAt,\n mentionList,\n mentionedAll,\n mentioned,\n } = this;\n return {\n id,\n cid,\n from,\n timestamp,\n deliveredAt,\n updatedAt,\n mentionList,\n mentionedAll,\n mentioned,\n };\n }\n\n /**\n * 返回 JSON 格式的消息\n * @return {Object} 返回值是一个 plain Object\n */\n toJSON() {\n return {\n ...this._toJSON(),\n data: this.content,\n };\n }\n\n /**\n * 返回 JSON 格式的消息,与 toJSON 不同的是,该对象包含了完整的信息,可以通过 {@link IMClient#parseMessage} 反序列化。\n * @return {Object} 返回值是一个 plain Object\n * @since 4.0.0\n */\n toFullJSON() {\n const {\n content,\n id,\n cid,\n from,\n timestamp,\n deliveredAt,\n _updatedAt,\n mentionList,\n mentionedAll,\n } = this;\n return {\n data: content,\n id,\n cid,\n from,\n timestamp: getTime(timestamp),\n deliveredAt: getTime(deliveredAt),\n updatedAt: getTime(_updatedAt),\n mentionList,\n mentionedAll,\n };\n }\n\n /**\n * 消息状态,值为 {@link module:leancloud-realtime.MessageStatus} 之一\n * @type {Symbol}\n * @readonly\n * @since 3.2.0\n */\n get status() {\n return this._status;\n }\n\n _setStatus(status) {\n if (!rMessageStatus[status]) {\n throw new Error('Invalid message status');\n }\n this._status = status;\n }\n\n get timestamp() {\n return this._timestamp;\n }\n\n set timestamp(value) {\n this._timestamp = decodeDate(value);\n }\n\n /**\n * 消息送达时间\n * @type {?Date}\n */\n get deliveredAt() {\n return this._deliveredAt;\n }\n\n set deliveredAt(value) {\n this._deliveredAt = decodeDate(value);\n }\n\n /**\n * 消息修改或撤回时间,可以通过比较其与消息的 timestamp 是否相等判断消息是否被修改过或撤回过。\n * @type {Date}\n * @since 3.5.0\n */\n get updatedAt() {\n return this._updatedAt || this.timestamp;\n }\n\n set updatedAt(value) {\n this._updatedAt = decodeDate(value);\n }\n\n /**\n * 当前用户是否在该消息中被提及\n * @type {Boolean}\n * @readonly\n * @since 4.0.0\n */\n get mentioned() {\n return this._mentioned;\n }\n\n _updateMentioned(client) {\n this._mentioned =\n this.from !== client &&\n (this.mentionedAll || this.mentionList.indexOf(client) > -1);\n }\n\n /**\n * 获取提及用户列表\n * @since 4.0.0\n * @return {String[]} 提及用户的 id 列表\n */\n getMentionList() {\n return this.mentionList;\n }\n\n /**\n * 设置提及用户列表\n * @since 4.0.0\n * @param {String[]} clients 提及用户的 id 列表\n * @return {this} self\n */\n setMentionList(clients) {\n this.mentionList = ensureArray(clients);\n return this;\n }\n\n /**\n * 设置是否提及所有人\n * @since 4.0.0\n * @param {Boolean} [value=true]\n * @return {this} self\n */\n mentionAll(value = true) {\n this.mentionedAll = Boolean(value);\n return this;\n }\n\n /**\n * 判断给定的内容是否是有效的 Message,\n * 该方法始终返回 true\n * @private\n * @returns {Boolean}\n * @implements AVMessage.validate\n */\n static validate() {\n return true;\n }\n\n /**\n * 解析处理消息内容\n * <pre>\n * 如果子类提供了 message,返回该 message\n * 如果没有提供,将 json 作为 content 实例化一个 Message\n * @private\n * @param {Object} json json 格式的消息内容\n * @param {Message} message 子类提供的 message\n * @return {Message}\n * @implements AVMessage.parse\n */\n static parse(json, message) {\n return message || new this(json);\n }\n}\n","/* eslint-disable no-param-reassign */\nimport { getStaticProperty, isIE10 } from '../utils';\n\n// documented in ../index.js\nexport const messageType = type => {\n if (typeof type !== 'number') {\n throw new TypeError(`${type} is not a Number`);\n }\n return target => {\n target.TYPE = type;\n target.validate = json => json._lctype === type;\n target.prototype._getType = () => ({ _lctype: type });\n };\n};\n\n// documented in ../index.js\nexport const messageField = fields => {\n if (typeof fields !== 'string') {\n if (!Array.isArray(fields)) {\n throw new TypeError(`${fields} is not an Array`);\n } else if (fields.some(value => typeof value !== 'string')) {\n throw new TypeError('fields contains non-string typed member');\n }\n }\n return target => {\n // IE10 Hack:\n // static properties in IE10 will not be inherited from super\n // search for parse method and assign it manually\n let originalCustomFields = isIE10\n ? getStaticProperty(target, '_customFields')\n : target._customFields;\n originalCustomFields = Array.isArray(originalCustomFields)\n ? originalCustomFields\n : [];\n target._customFields = originalCustomFields.concat(fields);\n };\n};\n\n// IE10 Hack:\n// static properties in IE10 will not be inherited from super\n// search for parse method and assign it manually\n\nexport const IE10Compatible = target => {\n if (isIE10) {\n target.parse = getStaticProperty(target, 'parse');\n }\n};\n","import Message from './message';\nimport { messageField } from './helpers';\nimport { getStaticProperty, isIE10, compact } from '../utils';\n\n// jsdoc-ignore-start\n@messageField(['_lctext', '_lcattrs'])\n// jsdoc-ignore-end\n/**\n * 所有内置的富媒体消息均继承自本类\n * @extends Message\n */\nclass TypedMessage extends Message {\n /**\n * @type {Number}\n * @readonly\n */\n get type() {\n return this.constructor.TYPE;\n }\n\n /** @type {String} */\n set text(text) {\n return this.setText(text);\n }\n\n get text() {\n return this.getText();\n }\n\n /** @type {Object} */\n set attributes(attributes) {\n return this.setAttributes(attributes);\n }\n\n get attributes() {\n return this.getAttributes();\n }\n\n /**\n * 在客户端需要以文本形式展示该消息时显示的文案,\n * 如 <code>[红包] 新春快乐</code>。\n * 默认值为消息的 text。\n * @type {String}\n * @readonly\n */\n get summary() {\n return this.text;\n }\n\n /**\n * @param {String} text\n * @return {this} self\n */\n setText(text) {\n this._lctext = text;\n return this;\n }\n\n /**\n * @return {String}\n */\n getText() {\n return this._lctext;\n }\n\n /**\n * @param {Object} attributes\n * @return {this} self\n */\n setAttributes(attributes) {\n this._lcattrs = attributes;\n return this;\n }\n\n /**\n * @return {Object}\n */\n getAttributes() {\n return this._lcattrs;\n }\n\n _getCustomFields() {\n const fields = Array.isArray(this.constructor._customFields)\n ? this.constructor._customFields\n : [];\n return fields.reduce((result, field) => {\n if (typeof field !== 'string') return result;\n result[field] = this[field]; // eslint-disable-line no-param-reassign\n return result;\n }, {});\n }\n\n /* eslint-disable class-methods-use-this */\n _getType() {\n throw new Error('not implemented');\n }\n /* eslint-enable class-methods-use-this */\n\n getPayload() {\n return compact(\n Object.assign(\n {\n _lctext: this.getText(),\n _lcattrs: this.getAttributes(),\n },\n this._getCustomFields(),\n this._getType()\n )\n );\n }\n\n toJSON() {\n const { type, text, attributes, summary } = this;\n return {\n ...super._toJSON(),\n type,\n text,\n attributes,\n summary,\n };\n }\n\n toFullJSON() {\n return {\n ...super.toFullJSON(),\n data: this.getPayload(),\n };\n }\n\n /**\n * 解析处理消息内容\n * <pre>\n * 为给定的 message 设置 text 与 attributes 属性,返回该 message\n * 如果子类没有提供 message,new this()\n * @protected\n * @param {Object} json json 格式的消息内容\n * @param {TypedMessage} message 子类提供的 message\n * @return {TypedMessage}\n * @implements AVMessage.parse\n */\n static parse(json, message = new this()) {\n message.content = json; // eslint-disable-line no-param-reassign\n const customFields = isIE10\n ? getStaticProperty(message.constructor, '_customFields')\n : message.constructor._customFields;\n let fields = Array.isArray(customFields) ? customFields : [];\n fields = fields.reduce((result, field) => {\n if (typeof field !== 'string') return result;\n result[field] = json[field]; // eslint-disable-line no-param-reassign\n return result;\n }, {});\n Object.assign(message, fields);\n return super.parse(json, message);\n }\n}\n\nexport default TypedMessage;\n","import TypedMessage from './typed-message';\nimport { messageType, IE10Compatible } from './helpers';\n\n// jsdoc-ignore-start\n@messageType(-127)\n@IE10Compatible\n// jsdoc-ignore-end\n/**\n * 已撤回类型消息,当消息被撤回时,SDK 会使用该类型的消息替代原始消息\n * @extends TypedMessage\n */\nclass RecalledMessage extends TypedMessage {\n /**\n * 在客户端需要以文本形式展示该消息时显示的文案,值为 <code>[该消息已撤回]</code>\n * @type {String}\n * @readonly\n */\n // eslint-disable-next-line class-methods-use-this\n get summary() {\n return '[该消息已撤回]';\n }\n}\nexport default RecalledMessage;\n","/* eslint class-methods-use-this: [\"error\", { \"exceptMethods\": [\"_addMembers\", \"_removeMembers\"] }] */\nimport EventEmitter from 'eventemitter3';\nimport values from 'lodash/values';\nimport d from 'debug';\nimport { decodeDate, getTime, internal } from '../utils';\nimport { applyDecorators } from '../plugin';\nimport {\n GenericCommand,\n ConvCommand,\n DirectCommand,\n LogsCommand,\n PatchCommand,\n PatchItem,\n CommandType,\n OpType,\n} from '../../proto/message';\nimport * as Event from '../events/im';\nimport { createError } from '../error';\nimport Message, { MessageStatus } from '../messages/message';\nimport RecalledMessage from '../messages/recalled-message';\n\nconst debug = d('LC:Conversation');\n\nconst serializeMessage = message => {\n const content = message.getPayload();\n let msg;\n let binaryMsg;\n if (content instanceof ArrayBuffer) {\n binaryMsg = content;\n } else if (typeof content !== 'string') {\n msg = JSON.stringify(content);\n } else {\n msg = content;\n }\n return { msg, binaryMsg };\n};\n\nconst { NEW, OLD } = LogsCommand.QueryDirection;\n\n/**\n * 历史消息查询方向枚举\n * @enum {Number}\n * @since 4.0.0\n * @memberof module:leancloud-realtime\n */\nconst MessageQueryDirection = {\n /** 从后向前 */\n NEW_TO_OLD: OLD,\n /** 从前向后 */\n OLD_TO_NEW: NEW,\n};\nObject.freeze(MessageQueryDirection);\n\nexport { MessageQueryDirection };\n\nexport default class ConversationBase extends EventEmitter {\n /**\n * @extends EventEmitter\n * @private\n * @abstract\n */\n constructor(\n {\n id,\n lastMessageAt,\n lastMessage,\n lastDeliveredAt,\n lastReadAt,\n unreadMessagesCount = 0,\n members = [],\n mentioned = false,\n ...properties\n },\n client\n ) {\n super();\n Object.assign(this, {\n /**\n * 对话 id,对应 _Conversation 表中的 objectId\n * @memberof ConversationBase#\n * @type {String}\n */\n id,\n /**\n * 最后一条消息时间\n * @memberof ConversationBase#\n * @type {?Date}\n */\n lastMessageAt,\n /**\n * 最后一条消息\n * @memberof ConversationBase#\n * @type {?Message}\n */\n lastMessage,\n /**\n * 参与该对话的用户列表\n * @memberof ConversationBase#\n * @type {String[]}\n */\n members,\n // other properties provided by subclasses\n ...properties,\n });\n this.members = Array.from(new Set(this.members));\n Object.assign(internal(this), {\n messagesWaitingForReceipt: {},\n lastDeliveredAt,\n lastReadAt,\n unreadMessagesCount,\n mentioned,\n });\n this._client = client;\n if (debug.enabled) {\n values(Event).forEach(event =>\n this.on(event, (...payload) =>\n this._debug(`${event} event emitted. %o`, payload)\n )\n );\n }\n // onConversationCreate hook\n applyDecorators(this._client._plugins.onConversationCreate, this);\n }\n\n /**\n * 当前用户是否在该对话的未读消息中被提及\n * @type {Boolean}\n * @since 4.0.0\n */\n get unreadMessagesMentioned() {\n return internal(this).unreadMessagesMentioned;\n }\n\n _setUnreadMessagesMentioned(value) {\n internal(this).unreadMessagesMentioned = Boolean(value);\n }\n\n set unreadMessagesCount(value) {\n if (value !== this.unreadMessagesCount) {\n internal(this).unreadMessagesCount = value;\n this._client.emit(Event.UNREAD_MESSAGES_COUNT_UPDATE, [this]);\n }\n }\n\n /**\n * 当前用户在该对话的未读消息数\n * @type {Number}\n */\n get unreadMessagesCount() {\n return internal(this).unreadMessagesCount;\n }\n\n set lastMessageAt(value) {\n const time = decodeDate(value);\n if (time <= this._lastMessageAt) return;\n this._lastMessageAt = time;\n }\n\n get lastMessageAt() {\n return this._lastMessageAt;\n }\n\n /**\n * 最后消息送达时间,常用来实现消息的「已送达」标记,可通过 {@link Conversation#fetchReceiptTimestamps} 获取或更新该属性\n * @type {?Date}\n * @since 3.4.0\n */\n get lastDeliveredAt() {\n if (this.members.length !== 2) return null;\n return internal(this).lastDeliveredAt;\n }\n\n _setLastDeliveredAt(value) {\n const date = decodeDate(value);\n if (!(date < internal(this).lastDeliveredAt)) {\n internal(this).lastDeliveredAt = date;\n /**\n * 最后消息送达时间更新\n * @event ConversationBase#LAST_DELIVERED_AT_UPDATE\n * @since 3.4.0\n */\n this.emit(Event.LAST_DELIVERED_AT_UPDATE);\n }\n }\n\n /**\n * 最后消息被阅读时间,常用来实现发送消息的「已读」标记,可通过 {@link Conversation#fetchReceiptTimestamps} 获取或更新该属性\n * @type {?Date}\n * @since 3.4.0\n */\n get lastReadAt() {\n if (this.members.length !== 2) return null;\n return internal(this).lastReadAt;\n }\n\n _setLastReadAt(value) {\n const date = decodeDate(value);\n if (!(date < internal(this).lastReadAt)) {\n internal(this).lastReadAt = date;\n /**\n * 最后消息被阅读时间更新\n * @event ConversationBase#LAST_READ_AT_UPDATE\n * @since 3.4.0\n */\n this.emit(Event.LAST_READ_AT_UPDATE);\n }\n }\n\n /**\n * 返回 JSON 格式的对话,与 toJSON 不同的是,该对象包含了完整的信息,可以通过 {@link IMClient#parseConversation} 反序列化。\n * @return {Object} 返回值是一个 plain Object\n * @since 4.0.0\n */\n toFullJSON() {\n const {\n id,\n members,\n lastMessageAt,\n lastDeliveredAt,\n lastReadAt,\n lastMessage,\n unreadMessagesCount,\n } = this;\n return {\n id,\n members,\n lastMessageAt: getTime(lastMessageAt),\n lastDeliveredAt: getTime(lastDeliveredAt),\n lastReadAt: getTime(lastReadAt),\n lastMessage: lastMessage ? lastMessage.toFullJSON() : undefined,\n unreadMessagesCount,\n };\n }\n\n /**\n * 返回 JSON 格式的对话\n * @return {Object} 返回值是一个 plain Object\n * @since 4.0.0\n */\n toJSON() {\n const {\n id,\n members,\n lastMessageAt,\n lastDeliveredAt,\n lastReadAt,\n lastMessage,\n unreadMessagesCount,\n unreadMessagesMentioned,\n } = this;\n return {\n id,\n members,\n lastMessageAt,\n lastDeliveredAt,\n lastReadAt,\n lastMessage: lastMessage ? lastMessage.toJSON() : undefined,\n unreadMessagesCount,\n unreadMessagesMentioned,\n };\n }\n\n _debug(...params) {\n debug(...params, `[${this.id}]`);\n }\n\n _send(command, ...args) {\n /* eslint-disable no-param-reassign */\n if (command.cmd === null) {\n command.cmd = 'conv';\n }\n if (command.cmd === 'conv' && command.convMessage === null) {\n command.convMessage = new ConvCommand();\n }\n if (command.convMessage && command.convMessage.cid === null) {\n command.convMessage.cid = this.id;\n }\n /* eslint-enable no-param-reassign */\n return this._client._send(command, ...args);\n }\n\n /**\n * 发送消息\n * @param {Message} message 消息,Message 及其子类的实例\n * @param {Object} [options] since v3.3.0,发送选项\n * @param {Boolean} [options.transient] since v3.3.1,是否作为暂态消息发送\n * @param {Boolean} [options.receipt] 是否需要回执,仅在普通对话中有效\n * @param {Boolean} [options.will] since v3.4.0,是否指定该消息作为「掉线消息」发送,\n * 「掉线消息」会延迟到当前用户掉线后发送,常用来实现「下线通知」功能\n * @param {MessagePriority} [options.priority] 消息优先级,仅在暂态对话中有效,\n * see: {@link module:leancloud-realtime.MessagePriority MessagePriority}\n * @param {Object} [options.pushData] 消息对应的离线推送内容,如果消息接收方不在线,会推送指定的内容。其结构说明参见: {@link https://url.leanapp.cn/pushData 推送消息内容}\n * @return {Promise.<Message>} 发送的消息\n */\n async send(message, options) {\n this._debug(message, 'send');\n if (!(message instanceof Message)) {\n throw new TypeError(`${message} is not a Message`);\n }\n const { transient, receipt, priority, pushData, will } = Object.assign(\n {},\n // support Message static property: sendOptions\n message.constructor.sendOptions,\n // support Message static property: getSendOptions\n typeof message.constructor.getSendOptions === 'function'\n ? message.constructor.getSendOptions(message)\n : {},\n options\n );\n if (receipt) {\n if (this.transient) {\n console.warn(\n 'receipt option is ignored as the conversation is transient.'\n );\n } else if (transient) {\n console.warn(\n 'receipt option is ignored as the message is sent transiently.'\n );\n } else if (this.members.length > 2) {\n console.warn(\n 'receipt option is recommended to be used in one-on-one conversation.'\n ); // eslint-disable-line max-len\n }\n }\n if (priority && !this.transient) {\n console.warn(\n 'priority option is ignored as the conversation is not transient.'\n );\n }\n Object.assign(message, {\n cid: this.id,\n from: this._client.id,\n });\n message._setStatus(MessageStatus.SENDING);\n const { msg, binaryMsg } = serializeMessage(message);\n const command = new GenericCommand({\n cmd: 'direct',\n directMessage: new DirectCommand({\n msg,\n binaryMsg,\n cid: this.id,\n r: receipt,\n transient,\n dt: message.id,\n pushData: JSON.stringify(pushData),\n will,\n mentionPids: message.mentionList,\n mentionAll: message.mentionedAll,\n }),\n priority,\n });\n try {\n const resCommand = await this._send(command);\n const {\n ackMessage: { uid, t, code, reason, appCode },\n } = resCommand;\n if (code !== null) {\n throw createError({\n code,\n reason,\n appCode,\n });\n }\n Object.assign(message, {\n id: uid,\n timestamp: t,\n });\n if (!transient) {\n this.lastMessage = message;\n this.lastMessageAt = message.timestamp;\n }\n message._setStatus(MessageStatus.SENT);\n if (receipt) {\n internal(this).messagesWaitingForReceipt[message.id] = message;\n }\n return message;\n } catch (error) {\n message._setStatus(MessageStatus.FAILED);\n throw error;\n }\n }\n\n async _update(message, newMessage, recall) {\n this._debug('patch %O %O %O', message, newMessage, recall);\n if (message instanceof Message) {\n if (message.from !== this._client.id) {\n throw new Error('Updating message from others is not allowed');\n }\n if (\n message.status !== MessageStatus.SENT &&\n message.status !== MessageStatus.DELIVERED\n ) {\n throw new Error('Message is not sent');\n }\n } else if (!(message.id && message.timestamp)) {\n throw new TypeError(`${message} is not a Message`);\n }\n let msg;\n let binaryMsg;\n if (!recall) {\n const content = serializeMessage(newMessage);\n ({ msg, binaryMsg } = content);\n }\n await this._send(\n new GenericCommand({\n cmd: CommandType.patch,\n op: OpType.modify,\n patchMessage: new PatchCommand({\n patches: [\n new PatchItem({\n cid: this.id,\n mid: message.id,\n timestamp: Number(message.timestamp),\n recall,\n data: msg,\n binaryMsg,\n mentionPids: newMessage.mentionList,\n mentionAll: newMessage.mentionedAll,\n }),\n ],\n lastPatchTime: this._client._lastPatchTime,\n }),\n })\n );\n const { id, cid, timestamp, from, _status } = message;\n Object.assign(newMessage, {\n id,\n cid,\n timestamp,\n from,\n _status,\n });\n if (this.lastMessage.id === newMessage.id) {\n this.lastMessage = newMessage;\n }\n return newMessage;\n }\n\n /**\n * 获取对话人数,或暂态对话的在线人数\n * @return {Promise.<Number>}\n */\n async count() {\n this._debug('count');\n const resCommand = await this._send(\n new GenericCommand({\n op: 'count',\n })\n );\n return resCommand.convMessage.count;\n }\n\n /**\n * 应用增加成员的操作,产生副作用\n * @param {string[]} members\n * @abstract\n * @private\n */\n _addMembers() {}\n\n /**\n * 应用减少成员的操作,产生副作用\n * @param {string[]} members\n * @abstract\n * @private\n */\n _removeMembers() {}\n\n /**\n * 修改已发送的消息\n * @param {AVMessage} message 要修改的消息,该消息必须是由当前用户发送的。也可以提供一个包含消息 {id, timestamp} 的对象\n * @param {AVMessage} newMessage 新的消息\n * @return {Promise.<AVMessage>} 更新后的消息\n */\n async update(message, newMessage) {\n if (!(newMessage instanceof Message)) {\n throw new TypeError(`${newMessage} is not a Message`);\n }\n return this._update(message, newMessage, false);\n }\n\n /**\n * 撤回已发送的消息\n * @param {AVMessage} message 要撤回的消息,该消息必须是由当前用户发送的。也可以提供一个包含消息 {id, timestamp} 的对象\n * @return {Promise.<RecalledMessage>} 一条已撤回的消息\n */\n async recall(message) {\n return this._update(message, new RecalledMessage(), true);\n }\n\n /**\n * 查询消息记录\n * 如果仅需实现消息向前记录翻页查询需求,建议使用 {@link Conversation#createMessagesIterator}。\n * 不论何种方向,获得的消息都是按照时间升序排列的。\n * startClosed 与 endClosed 用于指定查询区间的开闭。\n *\n * @param {Object} [options]\n * @param {Number} [options.limit] 限制查询结果的数量,目前服务端默认为 20\n * @param {Number} [options.type] 指定查询的富媒体消息类型,不指定则查询所有消息。\n * @param {MessageQueryDirection} [options.direction] 查询的方向。\n * 在不指定的情况下如果 startTime 大于 endTime,则为从新到旧查询,可以实现加载聊天记录等场景。\n * 如果 startTime 小于 endTime,则为从旧到新查询,可以实现弹幕等场景。\n * @param {Date} [options.startTime] 从该时间开始查询,不传则从当前时间开始查询\n * @param {String} [options.startMessageId] 从该消息之前开始查询,需要与 startTime 同时使用,为防止某时刻有重复消息\n * @param {Boolean}[options.startClosed] 指定查询范围是否包括开始的时间点,默认不包括\n * @param {Date} [options.endTime] 查询到该时间为止,不传则查询最早消息为止\n * @param {String} [options.endMessageId] 查询到该消息为止,需要与 endTime 同时使用,为防止某时刻有重复消息\n * @param {Boolean}[options.endClosed] 指定查询范围是否包括结束的时间点,默认不包括\n *\n * @param {Date} [options.beforeTime] DEPRECATED: 使用 startTime 代替。限制查询结果为小于该时间之前的消息,不传则为当前时间\n * @param {String} [options.beforeMessageId] DEPRECATED: 使用 startMessageId 代替。\n * 限制查询结果为该消息之前的消息,需要与 beforeTime 同时使用,为防止某时刻有重复消息\n * @param {Date} [options.afterTime] DEPRECATED: 使用 endTime 代替。限制查询结果为大于该时间之前的消息\n * @param {String} [options.afterMessageId] DEPRECATED: 使用 endMessageId 代替。\n * 限制查询结果为该消息之后的消息,需要与 afterTime 同时使用,为防止某时刻有重复消息\n * @return {Promise.<Message[]>} 消息列表\n */\n async queryMessages(options = {}) {\n this._debug('query messages %O', options);\n const {\n beforeTime,\n beforeMessageId,\n afterTime,\n afterMessageId,\n limit,\n direction,\n type,\n startTime,\n startMessageId,\n startClosed,\n endTime,\n endMessageId,\n endClosed,\n } = options;\n if (beforeMessageId || beforeTime || afterMessageId || afterTime) {\n console.warn(\n 'DEPRECATION: queryMessages options beforeTime, beforeMessageId, afterTime and afterMessageId are deprecated in favor of startTime, startMessageId, endTime and endMessageId.'\n );\n return this.queryMessages({\n startTime: beforeTime,\n startMessageId: beforeMessageId,\n endTime: afterTime,\n endMessageId: afterMessageId,\n limit,\n });\n }\n if (startMessageId && !startTime) {\n throw new Error(\n 'query option startMessageId must be used with option startTime'\n );\n }\n if (endMessageId && !endTime) {\n throw new Error(\n 'query option endMessageId must be used with option endTime'\n );\n }\n const conditions = {\n t: startTime,\n mid: startMessageId,\n tIncluded: startClosed,\n tt: endTime,\n tmid: endMessageId,\n ttIncluded: endClosed,\n l: limit,\n lctype: type,\n };\n if (conditions.t instanceof Date) {\n conditions.t = conditions.t.getTime();\n }\n if (conditions.tt instanceof Date) {\n conditions.tt = conditions.tt.getTime();\n }\n if (direction !== undefined) {\n conditions.direction = direction;\n } else if (conditions.tt > conditions.t) {\n conditions.direction = MessageQueryDirection.OLD_TO_NEW;\n }\n const resCommand = await this._send(\n new GenericCommand({\n cmd: 'logs',\n logsMessage: new LogsCommand(\n Object.assign(conditions, {\n cid: this.id,\n })\n ),\n })\n );\n return Promise.all(\n resCommand.logsMessage.logs.map(\n async ({\n msgId,\n timestamp,\n patchTimestamp,\n from,\n ackAt,\n readAt,\n data,\n mentionAll,\n mentionPids,\n bin,\n }) => {\n const messageData = {\n data,\n bin,\n id: msgId,\n cid: this.id,\n timestamp,\n from,\n deliveredAt: ackAt,\n updatedAt: patchTimestamp,\n mentionList: mentionPids,\n mentionedAll: mentionAll,\n };\n const message = await this._client.parseMessage(messageData);\n let status = MessageStatus.SENT;\n if (this.members.length === 2) {\n if (ackAt) status = MessageStatus.DELIVERED;\n if (ackAt) this._setLastDeliveredAt(ackAt);\n if (readAt) this._setLastReadAt(readAt);\n }\n message._setStatus(status);\n return message;\n }\n )\n );\n }\n\n /**\n * 获取消息翻页迭代器\n * @param {Object} [options]\n * @param {Date} [options.beforeTime] 限制起始查询结果为小于该时间之前的消息,不传则为当前时间\n * @param {String} [options.beforeMessageId] 限制起始查询结果为该消息之前的消息,需要与 beforeTime 同时使用,为防止某时刻有重复消息\n * @param {Number} [options.limit] 限制每页查询结果的数量,目前服务端默认为 20\n * @return {AsyncIterater.<Promise.<IteratorResult<Message[]>>>} [AsyncIterator]{@link https://github.com/tc39/proposal-async-iteration},调用其 next 方法返回获取下一页消息的 Promise\n * @example\n * var messageIterator = conversation.createMessagesIterator({ limit: 10 });\n * messageIterator.next().then(function(result) {\n * // result: {\n * // value: [message1, ..., message10],\n * // done: false,\n * // }\n * });\n * messageIterator.next().then(function(result) {\n * // result: {\n * // value: [message11, ..., message20],\n * // done: false,\n * // }\n * });\n * messageIterator.next().then(function(result) {\n * // No more messages\n * // result: { value: [], done: true }\n * });\n */\n createMessagesIterator({ beforeTime, beforeMessageId, limit } = {}) {\n let promise;\n return {\n next: () => {\n if (promise === undefined) {\n // first call\n promise = this.queryMessages({\n limit,\n startTime: beforeTime,\n startMessageId: beforeMessageId,\n });\n } else {\n promise = promise.then(prevMessages => {\n if (prevMessages.length === 0 || prevMessages.length < limit) {\n // no more messages\n return [];\n }\n return this.queryMessages({\n startTime: prevMessages[0].timestamp,\n startMessageId: prevMessages[0].id,\n limit,\n });\n });\n }\n return promise.then(value => ({\n value: Array.from(value),\n done: value.length === 0 || value.length < limit,\n }));\n },\n };\n }\n\n /**\n * 将该会话标记为已读\n * @return {Promise.<this>} self\n */\n async read() {\n this.unreadMessagesCount = 0;\n this._setUnreadMessagesMentioned(false);\n // 跳过暂态会话\n if (this.transient) return this;\n const client = this._client;\n if (!internal(client).readConversationsBuffer) {\n internal(client).readConversationsBuffer = new Set();\n }\n internal(client).readConversationsBuffer.add(this);\n client._doSendRead();\n return this;\n }\n\n _handleReceipt({ messageId, timestamp, read }) {\n if (read) {\n this._setLastReadAt(timestamp);\n } else {\n this._setLastDeliveredAt(timestamp);\n }\n const { messagesWaitingForReceipt } = internal(this);\n const message = messagesWaitingForReceipt[messageId];\n if (!message) return;\n message._setStatus(MessageStatus.DELIVERED);\n message.deliveredAt = timestamp;\n delete messagesWaitingForReceipt[messageId];\n }\n\n /**\n * 更新对话的最新回执时间戳(lastDeliveredAt、lastReadAt)\n * @since 3.4.0\n * @return {Promise.<this>} this\n */\n async fetchReceiptTimestamps() {\n const {\n convMessage: { maxReadTimestamp, maxAckTimestamp },\n } = await this._send(\n new GenericCommand({\n op: 'max_read',\n })\n );\n this._setLastDeliveredAt(maxAckTimestamp);\n this._setLastReadAt(maxReadTimestamp);\n return this;\n }\n\n _fetchAllReceiptTimestamps() {\n const convMessage = new ConvCommand({\n queryAllMembers: true,\n });\n return this._send(\n new GenericCommand({\n op: 'max_read',\n convMessage,\n })\n ).then(({ convMessage: { maxReadTuples } }) =>\n maxReadTuples\n .filter(\n maxReadTuple =>\n maxReadTuple.maxAckTimestamp || maxReadTuple.maxReadTimestamp\n )\n .map(({ pid, maxAckTimestamp, maxReadTimestamp }) => ({\n pid,\n lastDeliveredAt: decodeDate(maxAckTimestamp),\n lastReadAt: decodeDate(maxReadTimestamp),\n }))\n );\n }\n}\n","import d from 'debug';\nimport { tap } from './utils';\n\nconst debug = d('LC:SignatureFactoryRunner');\n\nfunction _validateSignature(signatureResult = {}) {\n const { signature, timestamp, nonce } = signatureResult;\n if (\n typeof signature !== 'string' ||\n typeof timestamp !== 'number' ||\n typeof nonce !== 'string'\n ) {\n throw new Error('malformed signature');\n }\n return {\n signature,\n timestamp,\n nonce,\n };\n}\n\nexport default (signatureFactory, params) =>\n Promise.resolve()\n .then(() => {\n debug('call signatureFactory with %O', params);\n return signatureFactory(...params);\n })\n .then(\n tap(signatureResult => debug('sign result %O', signatureResult)),\n error => {\n // eslint-disable-next-line no-param-reassign\n error.message = `sign error: ${error.message}`;\n debug(error);\n throw error;\n }\n )\n .then(_validateSignature);\n","import isEmpty from 'lodash/isEmpty';\nimport cloneDeep from 'lodash/cloneDeep';\nimport find from 'lodash/find';\nimport ConversationBase from './conversation-base';\nimport {\n decodeDate,\n getTime,\n encode,\n keyRemap,\n union,\n difference,\n internal,\n setValue,\n ensureArray,\n} from '../utils';\nimport {\n GenericCommand,\n ConvCommand,\n JsonObjectMessage,\n BlacklistCommand,\n OpType,\n} from '../../proto/message';\nimport runSignatureFactory from '../signature-factory-runner';\nimport { createError } from '../error';\n\n/**\n * 部分失败异常\n * @typedef OperationFailureError\n * @type {Error}\n * @property {string} message 异常信息\n * @property {string[]} clientIds 因为该原因失败的 client id 列表\n * @property {number} [code] 错误码\n * @property {string} [detail] 详细信息\n */\n\n/**\n * 部分成功的结果\n * @typedef PartiallySuccess\n * @type {Object}\n * @property {string[]} successfulClientIds 成功的 client id 列表\n * @property {OperationFailureError[]} failures 失败的异常列表\n */\n\n/**\n * 分页查询结果\n * @typedef PagedResults\n * @type {Object}\n * @property {T[]} results 查询结果\n * @property {string} [next] 存在表示还有更多结果,在下次查询中带上可实现翻页。\n */\n\nconst createPartiallySuccess = ({ allowedPids, failedPids }) => ({\n successfulClientIds: allowedPids,\n failures: failedPids.map(({ pids, ...error }) =>\n Object.assign(createError(error), { clientIds: pids })\n ),\n});\n\n/**\n * @extends ConversationBase\n * @private\n * @abstract\n */\nclass PersistentConversation extends ConversationBase {\n constructor(\n data,\n {\n creator,\n createdAt,\n updatedAt,\n transient = false,\n system = false,\n muted = false,\n mutedMembers = [],\n ...attributes\n },\n client\n ) {\n super(\n {\n ...data,\n /**\n * 对话创建者\n * @memberof PersistentConversation#\n * @type {String}\n */\n creator,\n /**\n * 对话创建时间\n * @memberof PersistentConversation#\n * @type {Date}\n */\n createdAt,\n /**\n * 对话更新时间\n * @memberof PersistentConversation#\n * @type {Date}\n */\n updatedAt,\n /**\n * 对该对话设置了静音的用户列表\n * @memberof PersistentConversation#\n * @type {?String[]}\n */\n mutedMembers,\n /**\n * 暂态对话标记\n * @memberof PersistentConversation#\n * @type {Boolean}\n */\n transient,\n /**\n * 系统对话标记\n * @memberof PersistentConversation#\n * @type {Boolean}\n * @since 3.3.0\n */\n system,\n /**\n * 当前用户静音该对话标记\n * @memberof PersistentConversation#\n * @type {Boolean}\n */\n muted,\n _attributes: attributes,\n },\n client\n );\n this._reset();\n }\n\n set createdAt(value) {\n this._createdAt = decodeDate(value);\n }\n\n get createdAt() {\n return this._createdAt;\n }\n\n set updatedAt(value) {\n this._updatedAt = decodeDate(value);\n }\n\n get updatedAt() {\n return this._updatedAt;\n }\n\n /**\n * 对话名字,对应 _Conversation 表中的 name\n * @type {String}\n */\n get name() {\n return this.get('name');\n }\n\n set name(value) {\n this.set('name', value);\n }\n\n /**\n * 获取对话的自定义属性\n * @since 3.2.0\n * @param {String} key key 属性的键名,'x' 对应 Conversation 表中的 x 列\n * @return {Any} 属性的值\n */\n get(key) {\n return internal(this).currentAttributes[key];\n }\n\n /**\n * 设置对话的自定义属性\n * @since 3.2.0\n * @param {String} key 属性的键名,'x' 对应 Conversation 表中的 x 列,支持使用 'x.y.z' 来修改对象的部分字段。\n * @param {Any} value 属性的值\n * @return {this} self\n * @example\n *\n * // 设置对话的 color 属性\n * conversation.set('color', {\n * text: '#000',\n * background: '#DDD',\n * });\n * // 设置对话的 color.text 属性\n * conversation.set('color.text', '#333');\n */\n set(key, value) {\n this._debug(`set [${key}]: ${value}`);\n const { pendingAttributes } = internal(this);\n const pendingKeys = Object.keys(pendingAttributes);\n // suppose pendingAttributes = { 'a.b': {} }\n // set 'a' or 'a.b': delete 'a.b'\n const re = new RegExp(`^${key}`);\n const childKeys = pendingKeys.filter(re.test.bind(re));\n childKeys.forEach(k => {\n delete pendingAttributes[k];\n });\n if (childKeys.length) {\n pendingAttributes[key] = value;\n } else {\n // set 'a.c': nothing to do\n // set 'a.b.c.d': assign c: { d: {} } to 'a.b'\n const parentKey = find(pendingKeys, k => key.indexOf(k) === 0); // 'a.b'\n if (parentKey) {\n setValue(\n pendingAttributes[parentKey],\n key.slice(parentKey.length + 1),\n value\n );\n } else {\n pendingAttributes[key] = value;\n }\n }\n this._buildCurrentAttributes();\n return this;\n }\n\n _buildCurrentAttributes() {\n const { pendingAttributes } = internal(this);\n internal(this).currentAttributes = Object.keys(pendingAttributes).reduce(\n (target, k) => setValue(target, k, pendingAttributes[k]),\n cloneDeep(this._attributes)\n );\n }\n\n _updateServerAttributes(attributes) {\n Object.keys(attributes).forEach(key =>\n setValue(this._attributes, key, attributes[key])\n );\n this._buildCurrentAttributes();\n }\n\n _reset() {\n Object.assign(internal(this), {\n pendingAttributes: {},\n currentAttributes: this._attributes,\n });\n }\n\n /**\n * 保存当前对话的属性至服务器\n * @return {Promise.<this>} self\n */\n async save() {\n this._debug('save');\n const attr = internal(this).pendingAttributes;\n if (isEmpty(attr)) {\n this._debug('nothing touched, resolve with self');\n return this;\n }\n this._debug('attr: %O', attr);\n const convMessage = new ConvCommand({\n attr: new JsonObjectMessage({\n data: JSON.stringify(encode(attr)),\n }),\n });\n const resCommand = await this._send(\n new GenericCommand({\n op: 'update',\n convMessage,\n })\n );\n this.updatedAt = resCommand.convMessage.udate;\n this._attributes = internal(this).currentAttributes;\n internal(this).pendingAttributes = {};\n return this;\n }\n\n /**\n * 从服务器更新对话的属性\n * @return {Promise.<this>} self\n */\n async fetch() {\n const query = this._client.getQuery().equalTo('objectId', this.id);\n await query.find();\n return this;\n }\n\n /**\n * 静音,客户端拒绝收到服务器端的离线推送通知\n * @return {Promise.<this>} self\n */\n async mute() {\n this._debug('mute');\n await this._send(\n new GenericCommand({\n op: 'mute',\n })\n );\n if (!this.transient) {\n this.muted = true;\n this.mutedMembers = union(this.mutedMembers, [this._client.id]);\n }\n return this;\n }\n\n /**\n * 取消静音\n * @return {Promise.<this>} self\n */\n async unmute() {\n this._debug('unmute');\n await this._send(\n new GenericCommand({\n op: 'unmute',\n })\n );\n if (!this.transient) {\n this.muted = false;\n this.mutedMembers = difference(this.mutedMembers, [this._client.id]);\n }\n return this;\n }\n\n async _appendConversationSignature(command, action, clientIds) {\n if (this._client.options.conversationSignatureFactory) {\n const params = [this.id, this._client.id, clientIds.sort(), action];\n const signatureResult = await runSignatureFactory(\n this._client.options.conversationSignatureFactory,\n params\n );\n Object.assign(\n command.convMessage,\n keyRemap(\n {\n signature: 's',\n timestamp: 't',\n nonce: 'n',\n },\n signatureResult\n )\n );\n }\n }\n\n async _appendBlacklistSignature(command, action, clientIds) {\n if (this._client.options.blacklistSignatureFactory) {\n const params = [this._client.id, this.id, clientIds.sort(), action];\n const signatureResult = await runSignatureFactory(\n this._client.options.blacklistSignatureFactory,\n params\n );\n Object.assign(\n command.blacklistMessage,\n keyRemap(\n {\n signature: 's',\n timestamp: 't',\n nonce: 'n',\n },\n signatureResult\n )\n );\n }\n }\n\n /**\n * 增加成员\n * @param {String|String[]} clientIds 新增成员 client id\n * @return {Promise.<PartiallySuccess>} 部分成功结果,包含了成功的 id 列表、失败原因与对应的 id 列表\n */\n async add(clientIds) {\n this._debug('add', clientIds);\n if (typeof clientIds === 'string') {\n clientIds = [clientIds]; // eslint-disable-line no-param-reassign\n }\n const command = new GenericCommand({\n op: 'add',\n convMessage: new ConvCommand({\n m: clientIds,\n }),\n });\n await this._appendConversationSignature(command, 'add', clientIds);\n const {\n convMessage,\n convMessage: { allowedPids },\n } = await this._send(command);\n this._addMembers(allowedPids);\n return createPartiallySuccess(convMessage);\n }\n\n /**\n * 剔除成员\n * @param {String|String[]} clientIds 成员 client id\n * @return {Promise.<PartiallySuccess>} 部分成功结果,包含了成功的 id 列表、失败原因与对应的 id 列表\n */\n async remove(clientIds) {\n this._debug('remove', clientIds);\n if (typeof clientIds === 'string') {\n clientIds = [clientIds]; // eslint-disable-line no-param-reassign\n }\n const command = new GenericCommand({\n op: 'remove',\n convMessage: new ConvCommand({\n m: clientIds,\n }),\n });\n await this._appendConversationSignature(command, 'remove', clientIds);\n const {\n convMessage,\n convMessage: { allowedPids },\n } = await this._send(command);\n this._removeMembers(allowedPids);\n return createPartiallySuccess(convMessage);\n }\n\n /**\n * (当前用户)加入该对话\n * @return {Promise.<this>} self\n */\n async join() {\n this._debug('join');\n return this.add(this._client.id).then(({ failures }) => {\n if (failures[0]) throw failures[0];\n return this;\n });\n }\n\n /**\n * (当前用户)退出该对话\n * @return {Promise.<this>} self\n */\n async quit() {\n this._debug('quit');\n return this.remove(this._client.id).then(({ failures }) => {\n if (failures[0]) throw failures[0];\n return this;\n });\n }\n\n /**\n * 在该对话中禁言成员\n * @param {String|String[]} clientIds 成员 client id\n * @return {Promise.<PartiallySuccess>} 部分成功结果,包含了成功的 id 列表、失败原因与对应的 id 列表\n */\n async muteMembers(clientIds) {\n this._debug('mute', clientIds);\n clientIds = ensureArray(clientIds); // eslint-disable-line no-param-reassign\n const command = new GenericCommand({\n op: OpType.add_shutup,\n convMessage: new ConvCommand({\n m: clientIds,\n }),\n });\n const { convMessage } = await this._send(command);\n return createPartiallySuccess(convMessage);\n }\n\n /**\n * 在该对话中解除成员禁言\n * @param {String|String[]} clientIds 成员 client id\n * @return {Promise.<PartiallySuccess>} 部分成功结果,包含了成功的 id 列表、失败原因与对应的 id 列表\n */\n async unmuteMembers(clientIds) {\n this._debug('unmute', clientIds);\n clientIds = ensureArray(clientIds); // eslint-disable-line no-param-reassign\n const command = new GenericCommand({\n op: OpType.remove_shutup,\n convMessage: new ConvCommand({\n m: clientIds,\n }),\n });\n const { convMessage } = await this._send(command);\n return createPartiallySuccess(convMessage);\n }\n\n /**\n * 查询该对话禁言成员列表\n * @param {Object} [options]\n * @param {Number} [options.limit] 返回的成员数量,服务器默认值 10\n * @param {String} [options.next] 从指定 next 开始查询,与 limit 一起使用可以完成翻页。\n * @return {PagedResults.<string>} 查询结果。其中的 cureser 存在表示还有更多结果。\n */\n async queryMutedMembers({ limit, next } = {}) {\n this._debug('query muted: limit %O, next: %O', limit, next);\n const command = new GenericCommand({\n op: OpType.query_shutup,\n convMessage: new ConvCommand({\n limit,\n next,\n }),\n });\n const {\n convMessage: { m, next: newNext },\n } = await this._send(command);\n return {\n results: m,\n next: newNext,\n };\n }\n\n /**\n * 将用户加入该对话黑名单\n * @param {String|String[]} clientIds 成员 client id\n * @return {Promise.<PartiallySuccess>} 部分成功结果,包含了成功的 id 列表、失败原因与对应的 id 列表\n */\n async blockMembers(clientIds) {\n this._debug('block', clientIds);\n clientIds = ensureArray(clientIds); // eslint-disable-line no-param-reassign\n const command = new GenericCommand({\n cmd: 'blacklist',\n op: OpType.block,\n blacklistMessage: new BlacklistCommand({\n srcCid: this.id,\n toPids: clientIds,\n }),\n });\n await this._appendBlacklistSignature(\n command,\n 'conversation-block-clients',\n clientIds\n );\n const { blacklistMessage } = await this._send(command);\n return createPartiallySuccess(blacklistMessage);\n }\n\n /**\n * 将用户移出该对话黑名单\n * @param {String|String[]} clientIds 成员 client id\n * @return {Promise.<PartiallySuccess>} 部分成功结果,包含了成功的 id 列表、失败原因与对应的 id 列表\n */\n async unblockMembers(clientIds) {\n this._debug('unblock', clientIds);\n clientIds = ensureArray(clientIds); // eslint-disable-line no-param-reassign\n const command = new GenericCommand({\n cmd: 'blacklist',\n op: OpType.unblock,\n blacklistMessage: new BlacklistCommand({\n srcCid: this.id,\n toPids: clientIds,\n }),\n });\n await this._appendBlacklistSignature(\n command,\n 'conversation-unblock-clients',\n clientIds\n );\n const { blacklistMessage } = await this._send(command);\n return createPartiallySuccess(blacklistMessage);\n }\n\n /**\n * 查询该对话黑名单\n * @param {Object} [options]\n * @param {Number} [options.limit] 返回的成员数量,服务器默认值 10\n * @param {String} [options.next] 从指定 next 开始查询,与 limit 一起使用可以完成翻页\n * @return {PagedResults.<string>} 查询结果。其中的 cureser 存在表示还有更多结果。\n */\n async queryBlockedMembers({ limit, next } = {}) {\n this._debug('query blocked: limit %O, next: %O', limit, next);\n const command = new GenericCommand({\n cmd: 'blacklist',\n op: OpType.query,\n blacklistMessage: new BlacklistCommand({\n srcCid: this.id,\n limit,\n next,\n }),\n });\n const {\n blacklistMessage: { blockedPids, next: newNext },\n } = await this._send(command);\n return {\n results: blockedPids,\n next: newNext,\n };\n }\n\n toFullJSON() {\n const {\n creator,\n system,\n transient,\n createdAt,\n updatedAt,\n _attributes,\n } = this;\n return {\n ...super.toFullJSON(),\n creator,\n system,\n transient,\n createdAt: getTime(createdAt),\n updatedAt: getTime(updatedAt),\n ..._attributes,\n };\n }\n\n toJSON() {\n const {\n creator,\n system,\n transient,\n muted,\n mutedMembers,\n createdAt,\n updatedAt,\n _attributes,\n } = this;\n return {\n ...super.toJSON(),\n creator,\n system,\n transient,\n muted,\n mutedMembers,\n createdAt,\n updatedAt,\n ..._attributes,\n };\n }\n}\n\nexport default PersistentConversation;\n","import { internal } from './utils';\n\n/**\n * 对话成员角色枚举\n * @enum {String}\n * @since 4.0.0\n * @memberof module:leancloud-realtime\n */\nconst ConversationMemberRole = {\n /** 所有者 */\n OWNER: 'Owner',\n /** 管理员 */\n MANAGER: 'Manager',\n /** 成员 */\n MEMBER: 'Member',\n};\nObject.freeze(ConversationMemberRole);\nexport { ConversationMemberRole };\n\nexport default class ConversationMemberInfo {\n /**\n * 对话成员属性,保存了成员与某个对话相关的属性,对应 _ConversationMemberInfo 表\n * @since 4.0.0\n */\n constructor({ conversation, memberId, role }) {\n if (!conversation) throw new Error('conversation requried');\n if (!memberId) throw new Error('memberId requried');\n Object.assign(internal(this), {\n conversation,\n memberId,\n role,\n });\n }\n\n /**\n * 对话 Id\n * @type {String}\n * @readonly\n */\n get conversationId() {\n return internal(this).conversation.id;\n }\n\n /**\n * 成员 Id\n * @type {String}\n * @readonly\n */\n get memberId() {\n return internal(this).memberId;\n }\n\n /**\n * 角色\n * @type {module:leancloud-realtime.ConversationMemberRole | String}\n * @readonly\n */\n get role() {\n if (this.isOwner) return ConversationMemberRole.OWNER;\n return internal(this).role;\n }\n\n /**\n * 是否是管理员\n * @type {Boolean}\n * @readonly\n */\n get isOwner() {\n return this.memberId === internal(this).conversation.creator;\n }\n\n toJSON() {\n const { conversationId, memberId, role, isOwner } = this;\n return {\n conversationId,\n memberId,\n role,\n isOwner,\n };\n }\n}\n","import PersistentConversation from './persistent-conversation';\nimport ConversationMemberInfo, {\n ConversationMemberRole,\n} from '../conversation-member-info';\nimport { internal, union, difference } from '../utils';\nimport {\n GenericCommand,\n ConvCommand,\n ConvMemberInfo,\n OpType,\n} from '../../proto/message';\nimport { createError, ErrorCode } from '../error';\n\n/**\n * 普通对话\n *\n * 无法直接实例化,请使用 {@link IMClient#createConversation} 创建新的普通对话。\n * @extends PersistentConversation\n * @public\n */\nclass Conversation extends PersistentConversation {\n _addMembers(members) {\n super._addMembers(members);\n this.members = union(this.members, members);\n const { memberInfoMap } = internal(this);\n if (!memberInfoMap) return;\n members.forEach(memberId => {\n memberInfoMap[memberId] =\n memberInfoMap[memberId] ||\n new ConversationMemberInfo({\n conversation: this,\n memberId,\n role: ConversationMemberRole.MEMBER,\n });\n });\n }\n\n _removeMembers(members) {\n super._removeMembers(members);\n this.members = difference(this.members, members);\n const { memberInfoMap } = internal(this);\n if (!memberInfoMap) return;\n members.forEach(memberId => {\n delete memberInfoMap[memberId];\n });\n }\n\n async _fetchAllMemberInfo() {\n const response = await this._client._requestWithSessionToken({\n method: 'GET',\n path: '/classes/_ConversationMemberInfo',\n query: {\n where: { cid: this.id },\n },\n });\n const memberInfos = response.results.map(\n info =>\n new ConversationMemberInfo({\n conversation: this,\n memberId: info.clientId,\n role: info.role,\n })\n );\n const memberInfoMap = {};\n memberInfos.forEach(memberInfo => {\n memberInfoMap[memberInfo.memberId] = memberInfo;\n });\n this.members.forEach(memberId => {\n memberInfoMap[memberId] =\n memberInfoMap[memberId] ||\n new ConversationMemberInfo({\n conversation: this,\n memberId,\n role: ConversationMemberRole.MEMBER,\n });\n });\n internal(this).memberInfoMap = memberInfoMap;\n return memberInfoMap;\n }\n\n /**\n * 获取所有成员的对话属性\n * @since 4.0.0\n * @return {Promise.<ConversationMemberInfo[]>} 所有成员的对话属性列表\n */\n async getAllMemberInfo({ noCache = false } = {}) {\n let { memberInfoMap } = internal(this);\n if (!memberInfoMap || noCache) {\n memberInfoMap = await this._fetchAllMemberInfo();\n }\n return this.members.map(memberId => memberInfoMap[memberId]);\n }\n\n /**\n * 获取指定成员的对话属性\n * @since 4.0.0\n * @param {String} memberId 成员 Id\n * @return {Promise.<ConversationMemberInfo>} 指定成员的对话属性\n */\n async getMemberInfo(memberId) {\n if (this.members.indexOf(memberId) === -1)\n throw new Error(\n `${memberId} is not the mumber of conversation[${this.id}]`\n );\n const { memberInfoMap } = internal(this);\n if (!(memberInfoMap && memberInfoMap[memberId]))\n await this.getAllMemberInfo();\n return internal(this).memberInfoMap[memberId];\n }\n\n /**\n * 更新指定用户的角色\n * @since 4.0.0\n * @param {String} memberId 成员 Id\n * @param {module:leancloud-realtime.ConversationMemberRole | String} role 角色\n * @return {Promise.<this>} self\n */\n async updateMemberRole(memberId, role) {\n this._debug('update member role');\n if (role === ConversationMemberRole.OWNER)\n throw createError({\n code: ErrorCode.OWNER_PROMOTION_NOT_ALLOWED,\n });\n await this._send(\n new GenericCommand({\n op: OpType.member_info_update,\n convMessage: new ConvCommand({\n targetClientId: memberId,\n info: new ConvMemberInfo({\n pid: memberId,\n role,\n }),\n }),\n })\n );\n const { memberInfos } = internal(this);\n if (memberInfos && memberInfos[memberId]) {\n internal(memberInfos[memberId]).role = role;\n }\n return this;\n }\n}\n\nexport default Conversation;\n","import PersistentConversation from './persistent-conversation';\n\n/**\n * 聊天室。\n *\n * 无法直接实例化,请使用 {@link IMClient#createChatRoom} 创建新的聊天室。\n * @since 4.0.0\n * @extends PersistentConversation\n * @public\n */\nclass ChatRoom extends PersistentConversation {}\n\nexport default ChatRoom;\n","import PersistentConversation from './persistent-conversation';\n\n/**\n * 服务号。\n *\n * 服务号不支持在客户端创建。\n * @since 4.0.0\n * @extends PersistentConversation\n * @public\n */\nclass ServiceConversation extends PersistentConversation {\n /**\n * 订阅该服务号\n * @return {Promise.<this>} self\n */\n async subscribe() {\n return this.join();\n }\n\n /**\n * 退订该服务号\n * @return {Promise.<this>} self\n */\n async unsubscribe() {\n return this.quit();\n }\n}\n\nexport default ServiceConversation;\n","import ConversationBase from './conversation-base';\nimport { createError, ErrorCode } from '../error';\nimport { decodeDate, getTime } from '../utils';\n\nconst transformNotFoundError = error =>\n error.code === ErrorCode.CONVERSATION_NOT_FOUND\n ? createError({ code: ErrorCode.TEMPORARY_CONVERSATION_EXPIRED })\n : error;\n\n/**\n * 临时对话\n * @since 4.0.0\n * @extends ConversationBase\n * @public\n */\nclass TemporaryConversation extends ConversationBase {\n /**\n * 无法直接实例化,请使用 {@link IMClient#createTemporaryConversation} 创建新的临时对话。\n */\n constructor(data, { expiredAt }, client) {\n super(\n {\n ...data,\n expiredAt,\n },\n client\n );\n }\n\n /**\n * 对话失效时间\n * @type {Date}\n */\n set expiredAt(value) {\n this._expiredAt = decodeDate(value);\n }\n\n get expiredAt() {\n return this._expiredAt;\n }\n\n /**\n * 对话是否已失效\n * @type {Boolean}\n */\n get expired() {\n return this.expiredAt < new Date();\n }\n\n async _send(...args) {\n if (this.expired)\n throw createError({ code: ErrorCode.TEMPORARY_CONVERSATION_EXPIRED });\n try {\n return await super._send(...args);\n } catch (error) {\n throw transformNotFoundError(error);\n }\n }\n\n async send(...args) {\n try {\n return await super.send(...args);\n } catch (error) {\n throw transformNotFoundError(error);\n }\n }\n\n toFullJSON() {\n const { expiredAt } = this;\n return {\n ...super.toFullJSON(),\n expiredAt: getTime(expiredAt),\n };\n }\n\n toJSON() {\n const { expiredAt, expired } = this;\n return {\n ...super.toJSON(),\n expiredAt,\n expired,\n };\n }\n}\n\nexport default TemporaryConversation;\n","import d from 'debug';\n\nconst debug = d('LC:ConversationQuery');\n\nexport default class ConversationQuery {\n static _encode(value) {\n if (value instanceof Date) {\n return { __type: 'Date', iso: value.toJSON() };\n }\n if (value instanceof RegExp) {\n return value.source;\n }\n return value;\n }\n\n static _quote(s) {\n return `\\\\Q${s.replace('\\\\E', '\\\\E\\\\\\\\E\\\\Q')}\\\\E`;\n }\n\n static _calculateFlag(options) {\n return ['withLastMessagesRefreshed', 'compact'].reduce(\n // eslint-disable-next-line no-bitwise\n (prev, key) => (prev << 1) + Boolean(options[key]),\n 0\n );\n }\n\n /**\n * Create a ConversationQuery\n * @param {IMClient} client\n */\n constructor(client) {\n this._client = client;\n this._where = {};\n this._extraOptions = {};\n }\n\n _addCondition(key, condition, value) {\n // Check if we already have a condition\n if (!this._where[key]) {\n this._where[key] = {};\n }\n this._where[key][condition] = this.constructor._encode(value);\n return this;\n }\n\n toJSON() {\n const json = {\n where: this._where,\n flag: this.constructor._calculateFlag(this._extraOptions),\n };\n if (typeof this._skip !== 'undefined') json.skip = this._skip;\n if (typeof this._limit !== 'undefined') json.limit = this._limit;\n if (typeof this._order !== 'undefined') json.sort = this._order;\n debug(json);\n return json;\n }\n\n /**\n * 增加查询条件,指定聊天室的组员包含某些成员即可返回\n * @param {string[]} peerIds - 成员 ID 列表\n * @return {ConversationQuery} self\n */\n containsMembers(peerIds) {\n return this.containsAll('m', peerIds);\n }\n\n /**\n * 增加查询条件,指定聊天室的组员条件满足条件的才返回\n *\n * @param {string[]} - 成员 ID 列表\n * @param {Boolean} includeSelf - 是否包含自己\n * @return {ConversationQuery} self\n */\n withMembers(peerIds, includeSelf) {\n const peerIdsSet = new Set(peerIds);\n if (includeSelf) {\n peerIdsSet.add(this._client.id);\n }\n this.sizeEqualTo('m', peerIdsSet.size);\n return this.containsMembers(Array.from(peerIdsSet));\n }\n\n /**\n * 增加查询条件,当 conversation 的属性中对应的字段满足等于条件时即可返回\n *\n * @param {string} key\n * @param value\n * @return {ConversationQuery} self\n */\n equalTo(key, value) {\n this._where[key] = this.constructor._encode(value);\n return this;\n }\n\n /**\n * 增加查询条件,当 conversation 的属性中对应的字段满足小于条件时即可返回\n * @param {string} key\n * @param value\n * @return {ConversationQuery} self\n */\n lessThan(key, value) {\n return this._addCondition(key, '$lt', value);\n }\n\n /**\n * 增加查询条件,当 conversation 的属性中对应的字段满足小于等于条件时即可返回\n\n * @param {string} key\n * @param value\n * @return {ConversationQuery} self\n */\n lessThanOrEqualTo(key, value) {\n return this._addCondition(key, '$lte', value);\n }\n\n /**\n * 增加查询条件,当 conversation 的属性中对应的字段满足大于条件时即可返回\n *\n * @param {string} key\n * @param value\n * @return {ConversationQuery} self\n */\n\n greaterThan(key, value) {\n return this._addCondition(key, '$gt', value);\n }\n\n /**\n * 增加查询条件,当 conversation 的属性中对应的字段满足大于等于条件时即可返回\n *\n * @param {string} key\n * @param value\n * @return {ConversationQuery} self\n */\n\n greaterThanOrEqualTo(key, value) {\n return this._addCondition(key, '$gte', value);\n }\n\n /**\n * 增加查询条件,当 conversation 的属性中对应的字段满足不等于条件时即可返回\n *\n * @param {string} key\n * @param value\n * @return {ConversationQuery} self\n */\n notEqualTo(key, value) {\n return this._addCondition(key, '$ne', value);\n }\n\n /**\n * 增加查询条件,当 conversation 存在指定的字段时即可返回\n *\n * @since 3.5.0\n * @param {string} key\n * @return {ConversationQuery} self\n */\n exists(key) {\n return this._addCondition(key, '$exists', true);\n }\n\n /**\n * 增加查询条件,当 conversation 不存在指定的字段时即可返回\n *\n * @since 3.5.0\n * @param {string} key\n * @return {ConversationQuery} self\n */\n doesNotExist(key) {\n return this._addCondition(key, '$exists', false);\n }\n\n /**\n * 增加查询条件,当 conversation 的属性中对应的字段对应的值包含在指定值中时即可返回\n *\n * @param {string} key\n * @param values\n * @return {ConversationQuery} self\n */\n containedIn(key, values) {\n return this._addCondition(key, '$in', values);\n }\n\n /**\n * 增加查询条件,当 conversation 的属性中对应的字段对应的值不包含在指定值中时即可返回\n *\n * @param {string} key\n * @param values\n * @return {ConversationQuery} self\n */\n notContainsIn(key, values) {\n return this._addCondition(key, '$nin', values);\n }\n\n /**\n * 增加查询条件,当conversation的属性中对应的字段中的元素包含所有的值才可返回\n *\n * @param {string} key\n * @param values\n * @return {ConversationQuery} self\n */\n containsAll(key, values) {\n return this._addCondition(key, '$all', values);\n }\n\n /**\n * 增加查询条件,当 conversation 的属性中对应的字段对应的值包含此字符串即可返回\n *\n * @param {string} key\n * @param {string} subString\n * @return {ConversationQuery} self\n */\n contains(key, subString) {\n return this._addCondition(\n key,\n '$regex',\n ConversationQuery._quote(subString)\n );\n }\n\n /**\n * 增加查询条件,当 conversation 的属性中对应的字段对应的值以此字符串起始即可返回\n *\n * @param {string} key\n * @param {string} prefix\n * @return {ConversationQuery} self\n */\n startsWith(key, prefix) {\n return this._addCondition(\n key,\n '$regex',\n `^${ConversationQuery._quote(prefix)}`\n );\n }\n\n /**\n * 增加查询条件,当 conversation 的属性中对应的字段对应的值以此字符串结束即可返回\n *\n * @param {string} key\n * @param {string} suffix\n * @return {ConversationQuery} self\n */\n endsWith(key, suffix) {\n return this._addCondition(\n key,\n '$regex',\n `${ConversationQuery._quote(suffix)}$`\n );\n }\n\n /**\n * 增加查询条件,当 conversation 的属性中对应的字段对应的值满足提供的正则表达式即可返回\n *\n * @param {string} key\n * @param {RegExp} regex\n * @return {ConversationQuery} self\n */\n matches(key, regex) {\n this._addCondition(key, '$regex', regex);\n // Javascript regex options support mig as inline options but store them\n // as properties of the object. We support mi & should migrate them to\n // modifiers\n let _modifiers = '';\n if (regex.ignoreCase) {\n _modifiers += 'i';\n }\n if (regex.multiline) {\n _modifiers += 'm';\n }\n\n if (_modifiers && _modifiers.length) {\n this._addCondition(key, '$options', _modifiers);\n }\n return this;\n }\n\n /**\n * 添加查询约束条件,查找 key 类型是数组,该数组的长度匹配提供的数值\n *\n * @param {string} key\n * @param {Number} length\n * @return {ConversationQuery} self\n */\n sizeEqualTo(key, length) {\n return this._addCondition(key, '$size', length);\n }\n\n /**\n * 设置返回集合的大小上限\n *\n * @param {Number} limit - 上限\n * @return {ConversationQuery} self\n */\n limit(limit) {\n this._limit = limit;\n return this;\n }\n\n /**\n * 设置返回集合的起始位置,一般用于分页\n *\n * @param {Number} skip - 起始位置跳过几个对象\n * @return {ConversationQuery} self\n */\n skip(skip) {\n this._skip = skip;\n return this;\n }\n\n /**\n * 设置返回集合按照指定key进行增序排列\n *\n * @param {string} key\n * @return {ConversationQuery} self\n */\n ascending(key) {\n this._order = key;\n return this;\n }\n\n /**\n * 设置返回集合按照指定key进行增序排列,如果已设置其他排序,原排序的优先级较高\n *\n * @param {string} key\n * @return {ConversationQuery} self\n */\n addAscending(key) {\n if (this._order) {\n this._order += `,${key}`;\n } else {\n this._order = key;\n }\n return this;\n }\n\n /**\n * 设置返回集合按照指定 key 进行降序排列\n *\n * @param {string} key\n * @return {ConversationQuery} self\n */\n descending(key) {\n this._order = `-${key}`;\n return this;\n }\n\n /**\n * 设置返回集合按照指定 key 进行降序排列,如果已设置其他排序,原排序的优先级较高\n *\n * @param {string} key\n * @return {ConversationQuery} self\n */\n addDescending(key) {\n if (this._order) {\n this._order += `,-${key}`;\n } else {\n this._order = `-${key}`;\n }\n return this;\n }\n\n /**\n * 设置返回的 conversations 刷新最后一条消息\n * @param {Boolean} [enabled=true]\n * @return {ConversationQuery} self\n */\n withLastMessagesRefreshed(enabled = true) {\n this._extraOptions.withLastMessagesRefreshed = enabled;\n return this;\n }\n\n /**\n * 设置返回的 conversations 为精简模式,即不含成员列表\n * @param {Boolean} [enabled=true]\n * @return {ConversationQuery} self\n */\n compact(enabled = true) {\n this._extraOptions.compact = enabled;\n return this;\n }\n\n /**\n * 执行查询\n * @return {Promise.<ConversationBase[]>}\n */\n async find() {\n return this._client._executeQuery(this);\n }\n}\n","import d from 'debug';\nimport { Expirable } from './utils';\n\nconst debug = d('LC:SessionManager');\n\nexport default class SessionManager {\n constructor({ refresh, onBeforeGetSessionToken } = {}) {\n this.refresh = refresh;\n this._onBeforeGetSessionToken = onBeforeGetSessionToken;\n this.setSessionToken(null, 0);\n }\n\n setSessionToken(token, ttl) {\n debug('set session token', token, ttl);\n const sessionToken = new Expirable(token, ttl * 1000);\n this._sessionToken = sessionToken;\n delete this._pendingSessionTokenPromise;\n return sessionToken;\n }\n\n async setSessionTokenAsync(promise) {\n const currentSessionToken = this._sessionToken;\n this._pendingSessionTokenPromise = promise.catch(error => {\n // revert, otherwise the following getSessionToken calls\n // will all be rejected\n this._sessionToken = currentSessionToken;\n throw error;\n });\n return this.setSessionToken(...(await this._pendingSessionTokenPromise));\n }\n\n async getSessionToken({ autoRefresh = true } = {}) {\n debug('get session token');\n if (this._onBeforeGetSessionToken) {\n this._onBeforeGetSessionToken(this);\n }\n const { value, originalValue } =\n this._sessionToken || (await this._pendingSessionTokenPromise);\n if (value === Expirable.EXPIRED && autoRefresh && this.refresh) {\n debug('refresh expired session token');\n const { value: newValue } = await this.setSessionTokenAsync(\n this.refresh(this, originalValue)\n );\n debug('session token', newValue);\n return newValue;\n }\n debug('session token', value);\n return value;\n }\n\n revoke() {\n if (this._sessionToken) this._sessionToken.expiredAt = -1;\n }\n}\n","import EventEmitter from 'eventemitter3';\nimport { decode as decodeBase64 } from 'base64-arraybuffer';\nimport remove from 'lodash/remove';\nimport values from 'lodash/values';\nimport d from 'debug';\nimport {\n Conversation,\n ChatRoom,\n ServiceConversation,\n TemporaryConversation,\n} from './conversations';\nimport ConversationBase from './conversations/conversation-base';\nimport ConversationQuery from './conversation-query';\nimport {\n GenericCommand,\n SessionCommand,\n ConvCommand,\n AckCommand,\n JsonObjectMessage,\n ReadCommand,\n ReadTuple,\n CommandType,\n OpType,\n} from '../proto/message';\nimport * as Event from './events/im';\nimport { ErrorCode, createError } from './error';\nimport {\n Expirable,\n Cache,\n keyRemap,\n trim,\n internal,\n throttle,\n encode,\n decode,\n decodeDate,\n getTime,\n} from './utils';\nimport { applyDecorators, applyDispatcher } from './plugin';\nimport SessionManager from './session-manager';\nimport runSignatureFactory from './signature-factory-runner';\nimport { MessageStatus } from './messages/message';\nimport { version as VERSION } from '../package.json';\n\nconst debug = d('LC:IMClient');\n\nconst {\n INVITED,\n KICKED,\n MEMBERS_JOINED,\n MEMBERS_LEFT,\n MEMBER_INFO_UPDATED,\n BLOCKED,\n UNBLOCKED,\n MEMBERS_BLOCKED,\n MEMBERS_UNBLOCKED,\n MUTED,\n UNMUTED,\n MEMBERS_MUTED,\n MEMBERS_UNMUTED,\n MESSAGE,\n UNREAD_MESSAGES_COUNT_UPDATE,\n CLOSE,\n CONFLICT,\n UNHANDLED_MESSAGE,\n CONVERSATION_INFO_UPDATED,\n MESSAGE_RECALL,\n MESSAGE_UPDATE,\n INFO_UPDATED,\n} = Event;\n\nconst isTemporaryConversatrionId = id => /^_tmp:/.test(id);\n\n/**\n * 1 patch-msg\n * 1 temp-conv-msg\n * 0 auto-bind-deviceid-and-installation\n * 1 transient-msg-ack\n * 1 keep-notification\n * 1 partial-failed-msg\n * @ignore\n */\nconst configBitmap = 0b111011;\n\nexport default class IMClient extends EventEmitter {\n /**\n * 无法直接实例化,请使用 {@link Realtime#createIMClient} 创建新的 IMClient。\n *\n * @extends EventEmitter\n */\n constructor(id, options = {}, props) {\n if (!(id === undefined || typeof id === 'string')) {\n throw new TypeError(`Client id [${id}] is not a String`);\n }\n super();\n Object.assign(\n this,\n {\n /**\n * @var id {String} 客户端 id\n * @memberof IMClient#\n */\n id,\n options,\n },\n props\n );\n\n if (!this._messageParser) {\n throw new Error('IMClient must be initialized with a MessageParser');\n }\n this._conversationCache = new Cache(`client:${this.id}`);\n this._ackMessageBuffer = {};\n internal(this).lastPatchTime = Date.now();\n internal(this).lastNotificationTime = undefined;\n internal(this)._eventemitter = new EventEmitter();\n if (debug.enabled) {\n values(Event).forEach(event =>\n this.on(event, (...payload) =>\n this._debug(`${event} event emitted. %o`, payload)\n )\n );\n }\n // onIMClientCreate hook\n applyDecorators(this._plugins.onIMClientCreate, this);\n }\n\n _debug(...params) {\n debug(...params, `[${this.id}]`);\n }\n\n /**\n * @override\n * @private\n */\n async _dispatchCommand(command) {\n this._debug(trim(command), 'received');\n if (command.serverTs && command.notificationType === 1) {\n internal(this).lastNotificationTime = getTime(\n decodeDate(command.serverTs)\n );\n }\n switch (command.cmd) {\n case CommandType.conv:\n return this._dispatchConvMessage(command);\n case CommandType.direct:\n return this._dispatchDirectMessage(command);\n case CommandType.session:\n return this._dispatchSessionMessage(command);\n case CommandType.unread:\n return this._dispatchUnreadMessage(command);\n case CommandType.rcp:\n return this._dispatchRcpMessage(command);\n case CommandType.patch:\n return this._dispatchPatchMessage(command);\n default:\n return this.emit(UNHANDLED_MESSAGE, command);\n }\n }\n\n async _dispatchSessionMessage(message) {\n const {\n sessionMessage: { code, reason },\n } = message;\n switch (message.op) {\n case OpType.closed: {\n internal(this)._eventemitter.emit('close');\n if (code === ErrorCode.SESSION_CONFLICT) {\n /**\n * 用户在其他客户端登录,当前客户端被服务端强行下线。详见文档「单点登录」章节。\n * @event IMClient#CONFLICT\n * @param {Object} payload\n * @param {string} payload.reason 原因\n */\n return this.emit(CONFLICT, {\n reason,\n });\n }\n /**\n * 当前客户端被服务端强行下线\n * @event IMClient#CLOSE\n * @param {Object} payload\n * @param {Number} payload.code 错误码\n * @param {String} payload.reason 原因\n */\n return this.emit(CLOSE, {\n code,\n reason,\n });\n }\n default:\n this.emit(UNHANDLED_MESSAGE, message);\n throw new Error('Unrecognized session command');\n }\n }\n\n _dispatchUnreadMessage({ unreadMessage: { convs, notifTime } }) {\n internal(this).lastUnreadNotifTime = notifTime;\n // ensure all converstions are cached\n return this.getConversations(convs.map(conv => conv.cid))\n .then(() =>\n // update conversations data\n Promise.all(\n convs.map(\n ({\n cid,\n unread,\n mid,\n timestamp: ts,\n from,\n data,\n binaryMsg,\n patchTimestamp,\n mentioned,\n }) => {\n const conversation = this._conversationCache.get(cid);\n // deleted conversation\n if (!conversation) return null;\n let timestamp;\n if (ts) {\n timestamp = decodeDate(ts);\n conversation.lastMessageAt = timestamp; // eslint-disable-line no-param-reassign\n }\n return (mid\n ? this._messageParser.parse(binaryMsg || data).then(message => {\n const messageProps = {\n id: mid,\n cid,\n timestamp,\n updatedAt: patchTimestamp,\n from,\n };\n Object.assign(message, messageProps);\n conversation.lastMessage = message; // eslint-disable-line no-param-reassign\n })\n : Promise.resolve()\n ).then(() => {\n conversation._setUnreadMessagesMentioned(mentioned);\n const countNotUpdated =\n unread === internal(conversation).unreadMessagesCount;\n if (countNotUpdated) return null; // to be filtered\n // manipulate internal property directly to skip unreadmessagescountupdate event\n internal(conversation).unreadMessagesCount = unread;\n return conversation;\n });\n // filter conversations without unread count update\n }\n )\n ).then(conversations =>\n conversations.filter(conversation => conversation)\n )\n )\n .then(conversations => {\n if (conversations.length) {\n /**\n * 未读消息数目更新\n * @event IMClient#UNREAD_MESSAGES_COUNT_UPDATE\n * @since 3.4.0\n * @param {Conversation[]} conversations 未读消息数目有更新的对话列表\n */\n this.emit(UNREAD_MESSAGES_COUNT_UPDATE, conversations);\n }\n });\n }\n\n async _dispatchRcpMessage(message) {\n const {\n rcpMessage,\n rcpMessage: { read },\n } = message;\n const conversationId = rcpMessage.cid;\n const messageId = rcpMessage.id;\n const timestamp = decodeDate(rcpMessage.t);\n const conversation = this._conversationCache.get(conversationId);\n // conversation not cached means the client does not send the message\n // during this session\n if (!conversation) return;\n conversation._handleReceipt({ messageId, timestamp, read });\n }\n\n _dispatchPatchMessage({ patchMessage: { patches } }) {\n // ensure all converstions are cached\n return this.getConversations(patches.map(patch => patch.cid)).then(() =>\n Promise.all(\n patches.map(\n ({\n cid,\n mid,\n timestamp,\n recall,\n data,\n patchTimestamp,\n from,\n binaryMsg,\n mentionAll,\n mentionPids,\n patchCode,\n patchReason,\n }) => {\n const conversation = this._conversationCache.get(cid);\n // deleted conversation\n if (!conversation) return null;\n return this._messageParser\n .parse(binaryMsg || data)\n .then(message => {\n const patchTime = getTime(decodeDate(patchTimestamp));\n const messageProps = {\n id: mid,\n cid,\n timestamp,\n updatedAt: patchTime,\n from,\n mentionList: mentionPids,\n mentionedAll: mentionAll,\n };\n Object.assign(message, messageProps);\n message._setStatus(MessageStatus.SENT);\n message._updateMentioned(this.id);\n if (internal(this).lastPatchTime < patchTime) {\n internal(this).lastPatchTime = patchTime;\n }\n // update conversation lastMessage\n if (\n conversation.lastMessage &&\n conversation.lastMessage.id === mid\n ) {\n conversation.lastMessage = message; // eslint-disable-line no-param-reassign\n }\n let reason;\n if (patchCode) {\n reason = {\n code: patchCode.toNumber(),\n detail: patchReason,\n };\n }\n if (recall) {\n /**\n * 消息被撤回\n * @event IMClient#MESSAGE_RECALL\n * @param {AVMessage} message 被撤回的消息\n * @param {ConversationBase} conversation 消息所在的会话\n * @param {PatchReason} [reason] 撤回的原因,不存在代表是发送者主动撤回\n */\n this.emit(MESSAGE_RECALL, message, conversation, reason);\n /**\n * 消息被撤回\n * @event ConversationBase#MESSAGE_RECALL\n * @param {AVMessage} message 被撤回的消息\n * @param {PatchReason} [reason] 撤回的原因,不存在代表是发送者主动撤回\n */\n conversation.emit(MESSAGE_RECALL, message, reason);\n } else {\n /**\n * 消息被修改\n * @event IMClient#MESSAGE_UPDATE\n * @param {AVMessage} message 被修改的消息\n * @param {ConversationBase} conversation 消息所在的会话\n * @param {PatchReason} [reason] 修改的原因,不存在代表是发送者主动修改\n */\n this.emit(MESSAGE_UPDATE, message, conversation, reason);\n /**\n * 消息被修改\n * @event ConversationBase#MESSAGE_UPDATE\n * @param {AVMessage} message 被修改的消息\n * @param {PatchReason} [reason] 修改的原因,不存在代表是发送者主动修改\n */\n conversation.emit(MESSAGE_UPDATE, message, reason);\n }\n });\n }\n )\n )\n );\n }\n\n async _dispatchConvMessage(message) {\n const {\n convMessage,\n convMessage: { initBy, m, info, attr },\n } = message;\n const conversation = await this.getConversation(convMessage.cid);\n switch (message.op) {\n case OpType.joined: {\n conversation._addMembers([this.id]);\n const payload = {\n invitedBy: initBy,\n };\n /**\n * 当前用户被添加至某个对话\n * @event IMClient#INVITED\n * @param {Object} payload\n * @param {String} payload.invitedBy 邀请者 id\n * @param {ConversationBase} conversation\n */\n this.emit(INVITED, payload, conversation);\n /**\n * 当前用户被添加至当前对话\n * @event ConversationBase#INVITED\n * @param {Object} payload\n * @param {String} payload.invitedBy 该移除操作的发起者 id\n */\n conversation.emit(INVITED, payload);\n return;\n }\n case OpType.left: {\n conversation._removeMembers([this.id]);\n const payload = {\n kickedBy: initBy,\n };\n /**\n * 当前用户被从某个对话中移除\n * @event IMClient#KICKED\n * @param {Object} payload\n * @param {String} payload.kickedBy 该移除操作的发起者 id\n * @param {ConversationBase} conversation\n */\n this.emit(KICKED, payload, conversation);\n /**\n * 当前用户被从当前对话中移除\n * @event ConversationBase#KICKED\n * @param {Object} payload\n * @param {String} payload.kickedBy 该移除操作的发起者 id\n */\n conversation.emit(KICKED, payload);\n return;\n }\n case OpType.members_joined: {\n conversation._addMembers(m);\n const payload = {\n invitedBy: initBy,\n members: m,\n };\n /**\n * 有用户被添加至某个对话\n * @event IMClient#MEMBERS_JOINED\n * @param {Object} payload\n * @param {String[]} payload.members 被添加的用户 id 列表\n * @param {String} payload.invitedBy 邀请者 id\n * @param {ConversationBase} conversation\n */\n this.emit(MEMBERS_JOINED, payload, conversation);\n /**\n * 有成员被添加至当前对话\n * @event ConversationBase#MEMBERS_JOINED\n * @param {Object} payload\n * @param {String[]} payload.members 被添加的成员 id 列表\n * @param {String} payload.invitedBy 邀请者 id\n */\n conversation.emit(MEMBERS_JOINED, payload);\n return;\n }\n case OpType.members_left: {\n conversation._removeMembers(m);\n const payload = {\n kickedBy: initBy,\n members: m,\n };\n /**\n * 有成员被从某个对话中移除\n * @event IMClient#MEMBERS_LEFT\n * @param {Object} payload\n * @param {String[]} payload.members 被移除的成员 id 列表\n * @param {String} payload.kickedBy 该移除操作的发起者 id\n * @param {ConversationBase} conversation\n */\n this.emit(MEMBERS_LEFT, payload, conversation);\n /**\n * 有成员被从当前对话中移除\n * @event ConversationBase#MEMBERS_LEFT\n * @param {Object} payload\n * @param {String[]} payload.members 被移除的成员 id 列表\n * @param {String} payload.kickedBy 该移除操作的发起者 id\n */\n conversation.emit(MEMBERS_LEFT, payload);\n return;\n }\n case OpType.members_blocked: {\n const payload = {\n blockedBy: initBy,\n members: m,\n };\n /**\n * 有成员被加入某个对话的黑名单\n * @event IMClient#MEMBERS_BLOCKED\n * @param {Object} payload\n * @param {String[]} payload.members 成员 id 列表\n * @param {String} payload.blockedBy 该操作的发起者 id\n * @param {ConversationBase} conversation\n */\n this.emit(MEMBERS_BLOCKED, payload, conversation);\n /**\n * 有成员被加入当前对话的黑名单\n * @event ConversationBase#MEMBERS_BLOCKED\n * @param {Object} payload\n * @param {String[]} payload.members 成员 id 列表\n * @param {String} payload.blockedBy 该操作的发起者 id\n */\n conversation.emit(MEMBERS_BLOCKED, payload);\n return;\n }\n case OpType.members_unblocked: {\n const payload = {\n unblockedBy: initBy,\n members: m,\n };\n /**\n * 有成员被移出某个对话的黑名单\n * @event IMClient#MEMBERS_UNBLOCKED\n * @param {Object} payload\n * @param {String[]} payload.members 成员 id 列表\n * @param {String} payload.unblockedBy 该操作的发起者 id\n * @param {ConversationBase} conversation\n */\n this.emit(MEMBERS_UNBLOCKED, payload, conversation);\n /**\n * 有成员被移出当前对话的黑名单\n * @event ConversationBase#MEMBERS_UNBLOCKED\n * @param {Object} payload\n * @param {String[]} payload.members 成员 id 列表\n * @param {String} payload.unblockedBy 该操作的发起者 id\n */\n conversation.emit(MEMBERS_UNBLOCKED, payload);\n return;\n }\n case OpType.blocked: {\n const payload = {\n blockedBy: initBy,\n };\n /**\n * 当前用户被加入某个对话的黑名单\n * @event IMClient#BLOCKED\n * @param {Object} payload\n * @param {String} payload.blockedBy 该操作的发起者 id\n * @param {ConversationBase} conversation\n */\n this.emit(BLOCKED, payload, conversation);\n /**\n * 当前用户被加入当前对话的黑名单\n * @event ConversationBase#BLOCKED\n * @param {Object} payload\n * @param {String} payload.blockedBy 该操作的发起者 id\n */\n conversation.emit(BLOCKED, payload);\n return;\n }\n case OpType.unblocked: {\n const payload = {\n unblockedBy: initBy,\n };\n /**\n * 当前用户被移出某个对话的黑名单\n * @event IMClient#UNBLOCKED\n * @param {Object} payload\n * @param {String} payload.unblockedBy 该操作的发起者 id\n * @param {ConversationBase} conversation\n */\n this.emit(UNBLOCKED, payload, conversation);\n /**\n * 当前用户被移出当前对话的黑名单\n * @event ConversationBase#UNBLOCKED\n * @param {Object} payload\n * @param {String} payload.unblockedBy 该操作的发起者 id\n */\n conversation.emit(UNBLOCKED, payload);\n return;\n }\n case OpType.members_shutuped: {\n const payload = {\n mutedBy: initBy,\n members: m,\n };\n /**\n * 有成员在某个对话中被禁言\n * @event IMClient#MEMBERS_MUTED\n * @param {Object} payload\n * @param {String[]} payload.members 成员 id 列表\n * @param {String} payload.mutedBy 该操作的发起者 id\n * @param {ConversationBase} conversation\n */\n this.emit(MEMBERS_MUTED, payload, conversation);\n /**\n * 有成员在当前对话中被禁言\n * @event ConversationBase#MEMBERS_MUTED\n * @param {Object} payload\n * @param {String[]} payload.members 成员 id 列表\n * @param {String} payload.mutedBy 该操作的发起者 id\n */\n conversation.emit(MEMBERS_MUTED, payload);\n return;\n }\n case OpType.members_unshutuped: {\n const payload = {\n unmutedBy: initBy,\n members: m,\n };\n /**\n * 有成员在某个对话中被解除禁言\n * @event IMClient#MEMBERS_UNMUTED\n * @param {Object} payload\n * @param {String[]} payload.members 成员 id 列表\n * @param {String} payload.unmutedBy 该操作的发起者 id\n * @param {ConversationBase} conversation\n */\n this.emit(MEMBERS_UNMUTED, payload, conversation);\n /**\n * 有成员在当前对话中被解除禁言\n * @event ConversationBase#MEMBERS_UNMUTED\n * @param {Object} payload\n * @param {String[]} payload.members 成员 id 列表\n * @param {String} payload.unmutedBy 该操作的发起者 id\n */\n conversation.emit(MEMBERS_UNMUTED, payload);\n return;\n }\n case OpType.shutuped: {\n const payload = {\n mutedBy: initBy,\n };\n /**\n * 有成员在某个对话中被禁言\n * @event IMClient#MUTED\n * @param {Object} payload\n * @param {String} payload.mutedBy 该操作的发起者 id\n * @param {ConversationBase} conversation\n */\n this.emit(MUTED, payload, conversation);\n /**\n * 有成员在当前对话中被禁言\n * @event ConversationBase#MUTED\n * @param {Object} payload\n * @param {String} payload.mutedBy 该操作的发起者 id\n */\n conversation.emit(MUTED, payload);\n return;\n }\n case OpType.unshutuped: {\n const payload = {\n unmutedBy: initBy,\n };\n /**\n * 有成员在某个对话中被解除禁言\n * @event IMClient#UNMUTED\n * @param {Object} payload\n * @param {String} payload.unmutedBy 该操作的发起者 id\n * @param {ConversationBase} conversation\n */\n this.emit(UNMUTED, payload, conversation);\n /**\n * 有成员在当前对话中被解除禁言\n * @event ConversationBase#UNMUTED\n * @param {Object} payload\n * @param {String} payload.unmutedBy 该操作的发起者 id\n */\n conversation.emit(UNMUTED, payload);\n return;\n }\n case OpType.member_info_changed: {\n const { pid, role } = info;\n const { memberInfoMap } = internal(conversation);\n // 如果不存在缓存,且不是 role 的更新,则不通知\n if (!memberInfoMap && !role) return;\n const memberInfo = await conversation.getMemberInfo(pid);\n internal(memberInfo).role = role;\n const payload = {\n member: pid,\n memberInfo,\n updatedBy: initBy,\n };\n /**\n * 有成员的对话信息被更新\n * @event IMClient#MEMBER_INFO_UPDATED\n * @param {Object} payload\n * @param {String} payload.member 被更新对话信息的成员 id\n * @param {ConversationMumberInfo} payload.memberInfo 被更新的成员对话信息\n * @param {String} payload.updatedBy 该操作的发起者 id\n * @param {ConversationBase} conversation\n */\n this.emit(MEMBER_INFO_UPDATED, payload, conversation);\n /**\n * 有成员的对话信息被更新\n * @event ConversationBase#MEMBER_INFO_UPDATED\n * @param {Object} payload\n * @param {String} payload.member 被更新对话信息的成员 id\n * @param {ConversationMumberInfo} payload.memberInfo 被更新的成员对话信息\n * @param {String} payload.updatedBy 该操作的发起者 id\n */\n conversation.emit(MEMBER_INFO_UPDATED, payload);\n return;\n }\n case OpType.updated: {\n const attributes = decode(JSON.parse(attr.data));\n conversation._updateServerAttributes(attributes);\n const payload = {\n attributes,\n updatedBy: initBy,\n };\n /**\n * 该对话信息被更新\n * @event IMClient#CONVERSATION_INFO_UPDATED\n * @param {Object} payload\n * @param {Object} payload.attributes 被更新的属性\n * @param {String} payload.updatedBy 该操作的发起者 id\n * @param {ConversationBase} conversation\n */\n this.emit(CONVERSATION_INFO_UPDATED, payload, conversation);\n /**\n * 有对话信息被更新\n * @event ConversationBase#INFO_UPDATED\n * @param {Object} payload\n * @param {Object} payload.attributes 被更新的属性\n * @param {String} payload.updatedBy 该操作的发起者 id\n */\n conversation.emit(INFO_UPDATED, payload);\n return;\n }\n default:\n this.emit(UNHANDLED_MESSAGE, message);\n throw new Error('Unrecognized conversation command');\n }\n }\n\n _dispatchDirectMessage(originalMessage) {\n const {\n directMessage,\n directMessage: {\n id,\n cid,\n fromPeerId,\n timestamp,\n transient,\n patchTimestamp,\n mentionPids,\n mentionAll,\n binaryMsg,\n msg,\n },\n } = originalMessage;\n const content = binaryMsg ? binaryMsg.toArrayBuffer() : msg;\n return Promise.all([\n this.getConversation(directMessage.cid),\n this._messageParser.parse(content),\n ]).then(([conversation, message]) => {\n // deleted conversation\n if (!conversation) return undefined;\n const messageProps = {\n id,\n cid,\n timestamp,\n updatedAt: patchTimestamp,\n from: fromPeerId,\n mentionList: mentionPids,\n mentionedAll: mentionAll,\n };\n Object.assign(message, messageProps);\n message._updateMentioned(this.id);\n message._setStatus(MessageStatus.SENT);\n // filter outgoing message sent from another device\n if (message.from !== this.id) {\n if (!(transient || conversation.transient)) {\n this._sendAck(message);\n }\n }\n return this._dispatchParsedMessage(message, conversation);\n });\n }\n\n _dispatchParsedMessage(message, conversation) {\n // beforeMessageDispatch hook\n return applyDispatcher(this._plugins.beforeMessageDispatch, [\n message,\n conversation,\n ]).then(shouldDispatch => {\n if (shouldDispatch === false) return;\n conversation.lastMessage = message; // eslint-disable-line no-param-reassign\n conversation.lastMessageAt = message.timestamp; // eslint-disable-line no-param-reassign\n // filter outgoing message sent from another device\n if (message.from !== this.id) {\n conversation.unreadMessagesCount += 1; // eslint-disable-line no-param-reassign\n if (message.mentioned) conversation._setUnreadMessagesMentioned(true);\n }\n /**\n * 当前用户收到消息\n * @event IMClient#MESSAGE\n * @param {Message} message\n * @param {ConversationBase} conversation 收到消息的对话\n */\n this.emit(MESSAGE, message, conversation);\n /**\n * 当前对话收到消息\n * @event ConversationBase#MESSAGE\n * @param {Message} message\n */\n conversation.emit(MESSAGE, message);\n });\n }\n\n _sendAck(message) {\n this._debug('send ack for %O', message);\n const { cid } = message;\n if (!cid) {\n throw new Error('missing cid');\n }\n if (!this._ackMessageBuffer[cid]) {\n this._ackMessageBuffer[cid] = [];\n }\n this._ackMessageBuffer[cid].push(message);\n return this._doSendAck();\n }\n\n // jsdoc-ignore-start\n @throttle(1000)\n // jsdoc-ignore-end\n _doSendAck() {\n // if not connected, just skip everything\n if (!this._connection.is('connected')) return;\n this._debug('do send ack %O', this._ackMessageBuffer);\n Promise.all(\n Object.keys(this._ackMessageBuffer).map(cid => {\n const convAckMessages = this._ackMessageBuffer[cid];\n const timestamps = convAckMessages.map(message => message.timestamp);\n const command = new GenericCommand({\n cmd: 'ack',\n peerId: this.id,\n ackMessage: new AckCommand({\n cid,\n fromts: Math.min.apply(null, timestamps),\n tots: Math.max.apply(null, timestamps),\n }),\n });\n delete this._ackMessageBuffer[cid];\n return this._send(command, false).catch(error => {\n this._debug('send ack failed: %O', error);\n this._ackMessageBuffer[cid] = convAckMessages;\n });\n })\n );\n }\n\n _omitPeerId(value) {\n internal(this).peerIdOmittable = value;\n }\n\n _send(cmd, ...args) {\n const command = cmd;\n if (!internal(this).peerIdOmittable && this.id) {\n command.peerId = this.id;\n }\n return this._connection.send(command, ...args);\n }\n\n async _open(appId, tag, deviceId, isReconnect = false) {\n this._debug('open session');\n const {\n lastUnreadNotifTime,\n lastPatchTime,\n lastNotificationTime,\n } = internal(this);\n const command = new GenericCommand({\n cmd: 'session',\n op: 'open',\n appId,\n peerId: this.id,\n sessionMessage: new SessionCommand({\n ua: `js/${VERSION}`,\n r: isReconnect,\n lastUnreadNotifTime,\n lastPatchTime,\n configBitmap,\n }),\n });\n if (!isReconnect) {\n Object.assign(\n command.sessionMessage,\n trim({\n tag,\n deviceId,\n })\n );\n if (this.options.signatureFactory) {\n const signatureResult = await runSignatureFactory(\n this.options.signatureFactory,\n [this._identity]\n );\n Object.assign(\n command.sessionMessage,\n keyRemap(\n {\n signature: 's',\n timestamp: 't',\n nonce: 'n',\n },\n signatureResult\n )\n );\n }\n } else {\n const sessionToken = await this._sessionManager.getSessionToken({\n autoRefresh: false,\n });\n if (sessionToken && sessionToken !== Expirable.EXPIRED) {\n Object.assign(command.sessionMessage, {\n st: sessionToken,\n });\n }\n }\n let resCommand;\n try {\n resCommand = await this._send(command);\n } catch (error) {\n if (error.code === ErrorCode.SESSION_TOKEN_EXPIRED) {\n if (!this._sessionManager) {\n // let it fail if sessoinToken not cached but command rejected as token expired\n // to prevent session openning flood\n throw new Error('Unexpected session expiration');\n }\n debug('Session token expired, reopening');\n this._sessionManager.revoke();\n return this._open(appId, tag, deviceId, isReconnect);\n }\n throw error;\n }\n const {\n peerId,\n sessionMessage,\n sessionMessage: { st: token, stTtl: tokenTTL, code },\n serverTs,\n } = resCommand;\n if (code) {\n throw createError(sessionMessage);\n }\n if (peerId) {\n this.id = peerId;\n if (!this._identity) this._identity = peerId;\n if (token) {\n this._sessionManager =\n this._sessionManager || this._createSessionManager();\n this._sessionManager.setSessionToken(token, tokenTTL);\n }\n const serverTime = getTime(decodeDate(serverTs));\n if (serverTs) {\n internal(this).lastPatchTime = serverTime;\n }\n if (lastNotificationTime) {\n // Do not await for it as this is failable\n this._syncNotifications(lastNotificationTime).catch(error =>\n console.warn('Syncing notifications failed:', error)\n );\n } else {\n // Set timestamp to now for next reconnection\n internal(this).lastNotificationTime = serverTime;\n }\n } else {\n console.warn('Unexpected session opened without peerId.');\n }\n return undefined;\n }\n\n async _syncNotifications(timestamp) {\n const { hasMore, notifications } = await this._fetchNotifications(\n timestamp\n );\n notifications.forEach(notification => {\n const { cmd, op, serverTs, notificationType, ...payload } = notification;\n this._dispatchCommand({\n cmd: CommandType[cmd],\n op: OpType[op],\n serverTs,\n notificationType,\n [`${cmd}Message`]: payload,\n });\n });\n if (hasMore) {\n return this._syncNotifications(internal(this).lastNotificationTime);\n }\n return undefined;\n }\n\n async _fetchNotifications(timestamp) {\n return this._requestWithSessionToken({\n method: 'GET',\n path: '/rtm/notifications',\n query: {\n start_ts: timestamp,\n notification_type: 'permanent',\n },\n });\n }\n\n _createSessionManager() {\n debug('create SessionManager');\n return new SessionManager({\n onBeforeGetSessionToken: this._connection.checkConnectionAvailability.bind(\n this._connection\n ),\n refresh: (manager, expiredSessionToken) =>\n manager.setSessionTokenAsync(\n Promise.resolve(\n new GenericCommand({\n cmd: 'session',\n op: 'refresh',\n sessionMessage: new SessionCommand({\n ua: `js/${VERSION}`,\n st: expiredSessionToken,\n }),\n })\n )\n .then(async command => {\n if (this.options.signatureFactory) {\n const signatureResult = await runSignatureFactory(\n this.options.signatureFactory,\n [this._identity]\n );\n Object.assign(\n command.sessionMessage,\n keyRemap(\n {\n signature: 's',\n timestamp: 't',\n nonce: 'n',\n },\n signatureResult\n )\n );\n }\n return command;\n })\n .then(this._send.bind(this))\n .then(({ sessionMessage: { st: token, stTtl: ttl } }) => [\n token,\n ttl,\n ])\n ),\n });\n }\n\n async _requestWithSessionToken({ headers, query, ...params }) {\n const sessionToken = await this._sessionManager.getSessionToken();\n return this._request({\n headers: {\n 'X-LC-IM-Session-Token': sessionToken,\n ...headers,\n },\n query: {\n client_id: this.id,\n ...query,\n },\n ...params,\n });\n }\n\n /**\n * 关闭客户端\n * @return {Promise}\n */\n async close() {\n this._debug('close session');\n const _ee = internal(this)._eventemitter;\n _ee.emit('beforeclose');\n if (this._connection.is('connected')) {\n const command = new GenericCommand({\n cmd: 'session',\n op: 'close',\n });\n await this._send(command);\n }\n _ee.emit('close');\n this.emit(CLOSE, {\n code: 0,\n });\n }\n\n /**\n * 获取 client 列表中在线的 client,每次查询最多 20 个 clientId,超出部分会被忽略\n * @param {String[]} clientIds 要查询的 client ids\n * @return {Primse.<String[]>} 在线的 client ids\n */\n async ping(clientIds) {\n this._debug('ping');\n if (!(clientIds instanceof Array)) {\n throw new TypeError(`clientIds ${clientIds} is not an Array`);\n }\n if (!clientIds.length) {\n return Promise.resolve([]);\n }\n const command = new GenericCommand({\n cmd: 'session',\n op: 'query',\n sessionMessage: new SessionCommand({\n sessionPeerIds: clientIds,\n }),\n });\n const resCommand = await this._send(command);\n return resCommand.sessionMessage.onlineSessionPeerIds;\n }\n\n /**\n * 获取某个特定的对话\n * @param {String} id 对话 id,对应 _Conversation 表中的 objectId\n * @param {Boolean} [noCache=false] 强制不从缓存中获取\n * @return {Promise.<ConversationBase>} 如果 id 对应的对话不存在则返回 null\n */\n async getConversation(id, noCache = false) {\n if (typeof id !== 'string') {\n throw new TypeError(`${id} is not a String`);\n }\n if (!noCache) {\n const cachedConversation = this._conversationCache.get(id);\n if (cachedConversation) {\n return cachedConversation;\n }\n }\n if (isTemporaryConversatrionId(id)) {\n return (await this._getTemporaryConversations([id]))[0] || null;\n }\n return this.getQuery()\n .equalTo('objectId', id)\n .find()\n .then(conversations => conversations[0] || null);\n }\n\n /**\n * 通过 id 批量获取某个特定的对话\n * @since 3.4.0\n * @param {String[]} ids 对话 id 列表,对应 _Conversation 表中的 objectId\n * @param {Boolean} [noCache=false] 强制不从缓存中获取\n * @return {Promise.<ConversationBase[]>} 如果 id 对应的对话不存在则返回 null\n */\n async getConversations(ids, noCache = false) {\n const remoteConversationIds = noCache\n ? ids\n : ids.filter(id => this._conversationCache.get(id) === null);\n if (remoteConversationIds.length) {\n const remoteTemporaryConversationIds = remove(\n remoteConversationIds,\n isTemporaryConversatrionId\n );\n const query = [];\n if (remoteConversationIds.length) {\n query.push(\n this.getQuery()\n .containedIn('objectId', remoteConversationIds)\n .limit(999)\n .find()\n );\n }\n if (remoteTemporaryConversationIds.length) {\n const remoteTemporaryConversationsPromise = remoteTemporaryConversationIds.map(\n this._getTemporaryConversations.bind(this)\n );\n query.push(...remoteTemporaryConversationsPromise);\n }\n await Promise.all(query);\n }\n return ids.map(id => this._conversationCache.get(id));\n }\n\n async _getTemporaryConversations(ids) {\n const command = new GenericCommand({\n cmd: 'conv',\n op: 'query',\n convMessage: new ConvCommand({\n tempConvIds: ids,\n }),\n });\n const resCommand = await this._send(command);\n return this._handleQueryResults(resCommand);\n }\n\n /**\n * 构造一个 ConversationQuery 来查询对话\n * @return {ConversationQuery.<PersistentConversation>}\n */\n getQuery() {\n return new ConversationQuery(this);\n }\n\n /**\n * 构造一个 ConversationQuery 来查询聊天室\n * @return {ConversationQuery.<ChatRoom>}\n */\n getChatRoomQuery() {\n return this.getQuery().equalTo('tr', true);\n }\n\n /**\n * 构造一个 ConversationQuery 来查询服务号\n * @return {ConversationQuery.<ServiceConversation>}\n */\n getServiceConversationQuery() {\n return this.getQuery().equalTo('sys', true);\n }\n\n async _executeQuery(query) {\n const queryJSON = query.toJSON();\n queryJSON.where = new JsonObjectMessage({\n data: JSON.stringify(encode(queryJSON.where)),\n });\n const command = new GenericCommand({\n cmd: 'conv',\n op: 'query',\n convMessage: new ConvCommand(queryJSON),\n });\n const resCommand = await this._send(command);\n return this._handleQueryResults(resCommand);\n }\n\n async _handleQueryResults(resCommand) {\n let conversations;\n try {\n conversations = decode(JSON.parse(resCommand.convMessage.results.data));\n } catch (error) {\n const commandString = JSON.stringify(trim(resCommand));\n throw new Error(\n `Parse query result failed: ${error.message}. Command: ${commandString}`\n );\n }\n conversations = await Promise.all(\n conversations.map(this._parseConversationFromRawData.bind(this))\n );\n return conversations.map(this._upsertConversationToCache.bind(this));\n }\n\n _upsertConversationToCache(fetchedConversation) {\n let conversation = this._conversationCache.get(fetchedConversation.id);\n if (!conversation) {\n conversation = fetchedConversation;\n this._debug('no match, set cache');\n this._conversationCache.set(fetchedConversation.id, fetchedConversation);\n } else {\n this._debug('update cached conversation');\n [\n 'creator',\n 'createdAt',\n 'updatedAt',\n 'lastMessageAt',\n 'lastMessage',\n 'mutedMembers',\n 'members',\n '_attributes',\n 'transient',\n 'muted',\n ].forEach(key => {\n const value = fetchedConversation[key];\n if (value !== undefined) conversation[key] = value;\n });\n if (conversation._reset) conversation._reset();\n }\n return conversation;\n }\n\n /**\n * 反序列化消息,与 {@link Message#toFullJSON} 相对。\n * @param {Object}\n * @return {AVMessage} 解析后的消息\n * @since 4.0.0\n */\n async parseMessage({ data, bin = false, ...properties }) {\n const content = bin ? decodeBase64(data) : data;\n const message = await this._messageParser.parse(content);\n Object.assign(message, properties);\n message._updateMentioned(this.id);\n return message;\n }\n\n /**\n * 反序列化对话,与 {@link Conversation#toFullJSON} 相对。\n * @param {Object}\n * @return {ConversationBase} 解析后的对话\n * @since 4.0.0\n */\n async parseConversation({\n id,\n lastMessageAt,\n lastMessage,\n lastDeliveredAt,\n lastReadAt,\n unreadMessagesCount,\n members,\n mentioned,\n ...properties\n }) {\n const conversationData = {\n id,\n lastMessageAt,\n lastMessage,\n lastDeliveredAt,\n lastReadAt,\n unreadMessagesCount,\n members,\n mentioned,\n };\n if (lastMessage) {\n conversationData.lastMessage = await this.parseMessage(lastMessage);\n conversationData.lastMessage._setStatus(MessageStatus.SENT);\n }\n const { transient, system, expiredAt } = properties;\n if (transient) return new ChatRoom(conversationData, properties, this);\n if (system)\n return new ServiceConversation(conversationData, properties, this);\n if (expiredAt || isTemporaryConversatrionId(id)) {\n return new TemporaryConversation(conversationData, { expiredAt }, this);\n }\n return new Conversation(conversationData, properties, this);\n }\n\n async _parseConversationFromRawData(rawData) {\n const data = keyRemap(\n {\n objectId: 'id',\n lm: 'lastMessageAt',\n m: 'members',\n tr: 'transient',\n sys: 'system',\n c: 'creator',\n mu: 'mutedMembers',\n },\n rawData\n );\n if (data.msg) {\n data.lastMessage = {\n data: data.msg,\n bin: data.bin,\n from: data.msg_from,\n id: data.msg_mid,\n timestamp: data.msg_timestamp,\n updatedAt: data.patch_timestamp,\n };\n delete data.lastMessageFrom;\n delete data.lastMessageId;\n delete data.lastMessageTimestamp;\n delete data.lastMessagePatchTimestamp;\n }\n const { ttl } = data;\n if (ttl) data.expiredAt = Date.now() + ttl * 1000;\n return this.parseConversation(data);\n }\n\n /**\n * 创建一个对话\n * @param {Object} options 除了下列字段外的其他字段将被视为对话的自定义属性\n * @param {String[]} options.members 对话的初始成员列表,默认包含当前 client\n * @param {String} [options.name] 对话的名字\n * @param {Boolean} [options.unique=true] 唯一对话,当其为 true 时,如果当前已经有相同成员的对话存在则返回该对话,否则会创建新的对话\n * @return {Promise.<Conversation>}\n */\n async createConversation({\n members: m,\n name,\n transient,\n unique = true,\n _tempConv: tempConv,\n _tempConvTTL: tempConvTTL,\n ...properties\n } = {}) {\n if (!(transient || Array.isArray(m))) {\n throw new TypeError(`conversation members ${m} is not an array`);\n }\n let members = new Set(m);\n members.add(this.id);\n members = Array.from(members).sort();\n let attr = properties || {};\n if (name) {\n if (typeof name !== 'string') {\n throw new TypeError(`conversation name ${name} is not a string`);\n }\n attr.name = name;\n }\n attr = new JsonObjectMessage({\n data: JSON.stringify(encode(attr)),\n });\n\n const startCommandJson = {\n m: members,\n attr,\n transient,\n unique,\n tempConv,\n tempConvTTL,\n };\n\n const command = new GenericCommand({\n cmd: 'conv',\n op: 'start',\n convMessage: new ConvCommand(startCommandJson),\n });\n\n if (this.options.conversationSignatureFactory) {\n const params = [null, this._identity, members, 'create'];\n const signatureResult = await runSignatureFactory(\n this.options.conversationSignatureFactory,\n params\n );\n Object.assign(\n command.convMessage,\n keyRemap(\n {\n signature: 's',\n timestamp: 't',\n nonce: 'n',\n },\n signatureResult\n )\n );\n }\n\n const {\n convMessage: { cid, cdate, tempConvTTL: ttl },\n } = await this._send(command);\n const data = {\n name,\n transient,\n unique,\n id: cid,\n createdAt: cdate,\n updatedAt: cdate,\n lastMessageAt: null,\n creator: this.id,\n members: transient ? [] : members,\n ...properties,\n };\n if (ttl) data.expiredAt = Date.now() + ttl * 1000;\n const conversation = await this.parseConversation(data);\n return this._upsertConversationToCache(conversation);\n }\n\n /**\n * 创建一个聊天室\n * @since 4.0.0\n * @param {Object} options 除了下列字段外的其他字段将被视为对话的自定义属性\n * @param {String} [options.name] 对话的名字\n * @return {Promise.<ChatRoom>}\n */\n async createChatRoom(param) {\n return this.createConversation({\n ...param,\n transient: true,\n members: null,\n unique: false,\n _tempConv: false,\n });\n }\n\n /**\n * 创建一个临时对话\n * @since 4.0.0\n * @param {Object} options\n * @param {String[]} options.members 对话的初始成员列表,默认包含当前 client\n * @param {String} [options.ttl] 对话存在时间,单位为秒,最大值与默认值均为 86400(一天),过期后该对话不再可用。\n * @return {Promise.<TemporaryConversation>}\n */\n async createTemporaryConversation({ ttl: _tempConvTTL, ...param }) {\n return this.createConversation({\n ...param,\n transient: false,\n unique: false,\n _tempConv: true,\n _tempConvTTL,\n });\n }\n\n // jsdoc-ignore-start\n @throttle(1000)\n // jsdoc-ignore-end\n _doSendRead() {\n // if not connected, just skip everything\n if (!this._connection.is('connected')) return;\n const buffer = internal(this).readConversationsBuffer;\n const conversations = Array.from(buffer);\n if (!conversations.length) return;\n const ids = conversations.map(conversation => {\n if (!(conversation instanceof ConversationBase)) {\n throw new TypeError(`${conversation} is not a Conversation`);\n }\n return conversation.id;\n });\n this._debug(`mark [${ids}] as read`);\n buffer.clear();\n this._sendReadCommand(conversations).catch(error => {\n this._debug('send read failed: %O', error);\n conversations.forEach(buffer.add.bind(buffer));\n });\n }\n\n _sendReadCommand(conversations) {\n return this._send(\n new GenericCommand({\n cmd: 'read',\n readMessage: new ReadCommand({\n convs: conversations.map(\n conversation =>\n new ReadTuple({\n cid: conversation.id,\n mid:\n conversation.lastMessage &&\n conversation.lastMessage.from !== this.id\n ? conversation.lastMessage.id\n : undefined,\n timestamp: (conversation.lastMessageAt || new Date()).getTime(),\n })\n ),\n }),\n }),\n false\n );\n }\n}\n\n/**\n * 修改、撤回消息的原因\n * @typedef PatchReason\n * @type {Object}\n * @property {number} code 负数为内置 code,正数为开发者在 hook 中自定义的 code。比如因为敏感词过滤被修改的 code 为 -4408。\n * @property {string} [detail] 具体的原因说明。\n */\n","export {\n DISCONNECT,\n RECONNECT,\n RETRY,\n SCHEDULE,\n OFFLINE,\n ONLINE,\n} from '../websocket-plus';\n\nexport const RECONNECT_ERROR = 'reconnecterror';\n","import { encode as encodeBase64 } from 'base64-arraybuffer';\nimport Message from './message';\nimport { IE10Compatible } from './helpers';\n// jsdoc-ignore-start\n@IE10Compatible\n// jsdoc-ignore-end\nexport default class BinaryMessage extends Message {\n /**\n * 二进制消息\n * @extends Message\n * @param {ArrayBuffer} buffer\n * @since 4.0.0\n */\n constructor(buffer) {\n if (!(buffer instanceof ArrayBuffer)) {\n throw new TypeError(`${buffer} is not an ArrayBuffer`);\n }\n super(buffer);\n }\n\n /**\n * @type ArrayBuffer\n */\n get buffer() {\n return this.content;\n }\n\n set buffer(buffer) {\n this.content = buffer;\n }\n\n static validate(target) {\n return target instanceof ArrayBuffer;\n }\n\n toJSON() {\n return {\n ...super._toJSON(),\n data: encodeBase64(this.content),\n };\n }\n\n toFullJSON() {\n return {\n ...super.toFullJSON(),\n bin: true,\n data: encodeBase64(this.content),\n };\n }\n}\n","import TypedMessage from './typed-message';\nimport { messageType, IE10Compatible } from './helpers';\n\n// jsdoc-ignore-start\n@messageType(-1)\n@IE10Compatible\n// jsdoc-ignore-end\nexport default class TextMessage extends TypedMessage {\n /**\n * 文类类型消息\n * @extends TypedMessage\n * @param {String} [text='']\n * @throws {TypeError} text 不是 String 类型\n */\n constructor(text = '') {\n if (typeof text !== 'string') {\n throw new TypeError(`${text} is not a string`);\n }\n super();\n this.setText(text);\n }\n}\n\n/**\n * @name TYPE\n * @memberof TextMessage\n * @type Number\n * @static\n * @const\n */\n","import d from 'debug';\nimport isPlainObject from 'lodash/isPlainObject';\nimport { applyMiddlewares } from './plugin';\n\nconst debug = d('LC:MessageParser');\n\nconst tryParseJson = (target, key, descriptor) => {\n const fn = descriptor.value;\n // eslint-disable-next-line no-param-reassign\n descriptor.value = function wrapper(param) {\n let content;\n if (typeof param !== 'string') {\n content = param;\n } else {\n try {\n content = JSON.parse(param);\n } catch (error) {\n content = param;\n }\n }\n return fn.call(this, content);\n };\n};\n\nconst applyPlugins = (target, key, descriptor) => {\n const fn = descriptor.value;\n // eslint-disable-next-line no-param-reassign\n descriptor.value = function wrapper(json) {\n return Promise.resolve(json)\n .then(applyMiddlewares(this._plugins.beforeMessageParse))\n .then(decoratedJson => fn.call(this, decoratedJson))\n .then(applyMiddlewares(this._plugins.afterMessageParse));\n };\n};\n\nexport default class MessageParser {\n constructor(plugins = {}) {\n this._plugins = plugins;\n this._messageClasses = [];\n }\n\n register(messageClass) {\n if (\n messageClass &&\n messageClass.parse &&\n messageClass.prototype &&\n messageClass.prototype.getPayload\n ) {\n this._messageClasses.unshift(messageClass);\n } else {\n throw new TypeError('Invalid messageClass');\n }\n }\n\n // jsdoc-ignore-start\n @tryParseJson\n @applyPlugins\n // jsdoc-ignore-end\n parse(content) {\n debug('parsing message: %O', content);\n // eslint-disable-next-line no-restricted-syntax\n for (const Klass of this._messageClasses) {\n const contentCopy = isPlainObject(content)\n ? Object.assign({}, content)\n : content;\n let valid;\n let result;\n try {\n valid = Klass.validate(contentCopy);\n } catch (error) {\n // eslint-disable-line no-empty\n }\n if (valid) {\n try {\n result = Klass.parse(contentCopy);\n } catch (error) {\n console.warn('parsing a valid message content error', {\n error,\n Klass,\n content: contentCopy,\n });\n }\n if (result !== undefined) {\n debug('parse result: %O', result);\n return result;\n }\n }\n }\n throw new Error('No Message Class matched');\n }\n}\n","/** @module leancloud-realtime */\nimport d from 'debug';\nimport uuid from 'uuid/v4';\nimport IMClient from './im-client';\nimport { RECONNECT, RECONNECT_ERROR } from './events/core';\nimport { Conversation } from './conversations';\nimport { MessageQueryDirection } from './conversations/conversation-base';\nimport Message, { MessageStatus } from './messages/message';\nimport BinaryMessage from './messages/binary-message';\nimport TextMessage from './messages/text-message';\nimport TypedMessage from './messages/typed-message';\nimport RecalledMessage from './messages/recalled-message';\nimport MessageParser from './message-parser';\nimport { trim, internal, ensureArray, finalize } from './utils';\n\nconst debug = d('LC:IMPlugin');\n\n/**\n * 消息优先级枚举\n * @enum {Number}\n * @since 3.3.0\n */\nconst MessagePriority = {\n /** 高 */\n HIGH: 1,\n /** 普通 */\n NORMAL: 2,\n /** 低 */\n LOW: 3,\n};\nObject.freeze(MessagePriority);\n\n/**\n * 为 Conversation 定义一个新属性\n * @param {String} prop 属性名\n * @param {Object} [descriptor] 属性的描述符,参见 {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor#Description getOwnPropertyDescriptor#Description - MDN},默认为该属性名对应的 Conversation 自定义属性的 getter/setter\n * @returns void\n * @example\n *\n * conversation.get('type');\n * conversation.set('type', 1);\n *\n * // equals to\n * defineConversationProperty('type');\n * conversation.type;\n * conversation.type = 1;\n */\nconst defineConversationProperty = (\n prop,\n descriptor = {\n get() {\n return this.get(prop);\n },\n set(value) {\n this.set(prop, value);\n },\n }\n) => {\n Object.defineProperty(Conversation.prototype, prop, descriptor);\n};\n\nexport {\n /**\n * @see Message\n */\n Message,\n /**\n * @see BinaryMessage\n */\n BinaryMessage,\n /**\n * @see TypedMessage\n */\n TypedMessage,\n /**\n * @see TextMessage\n */\n TextMessage,\n /**\n * @see RecalledMessage\n */\n RecalledMessage,\n MessagePriority,\n MessageStatus,\n MessageQueryDirection,\n defineConversationProperty,\n};\n\nexport {\n /**\n * decorator,定义消息类的类型常量\n * @function\n * @param {Number} type 自定义类型请使用正整数\n * @example @messageType(1)\n * class CustomMessage extends TypedMessage {}\n *\n * // 不支持 decorator 的情况下可以这样使用\n * class CustomMessage extends TypedMessage {\n * //...\n * }\n * messageType(1)(CustomMessage);\n */\n messageType,\n /**\n * decorator,定义消息类的自定义字段\n * @function\n * @param {String[]} fields 自定义字段\n * @example @messageField(['foo'])\n * class CustomMessage extends TypedMessage {\n * constructor(foo) {\n * super();\n * this.foo = foo;\n * }\n * }\n *\n * // 不支持 decorator 的情况下可以这样使用\n * class CustomMessage extends TypedMessage {\n * constructor(foo) {\n * super();\n * this.foo = foo;\n * }\n * //...\n * }\n * messageField(['foo'])(CustomMessage);\n */\n messageField,\n IE10Compatible,\n} from './messages/helpers';\n\nexport { ConversationMemberRole } from './conversation-member-info';\nexport {\n /**\n * @see Conversation\n */\n Conversation,\n /**\n * @see ChatRoom\n */\n ChatRoom,\n /**\n * @see ServiceConversation\n */\n ServiceConversation,\n /**\n * @see TemporaryConversation\n */\n TemporaryConversation,\n} from './conversations';\n\nconst onRealtimeCreate = realtime => {\n /* eslint-disable no-param-reassign */\n const deviceId = uuid();\n realtime._IMClients = {};\n realtime._IMClientsCreationCount = 0;\n const messageParser = new MessageParser(realtime._plugins);\n realtime._messageParser = messageParser;\n\n const signAVUser = async user =>\n realtime._request({\n method: 'POST',\n path: '/rtm/sign',\n data: {\n session_token: user.getSessionToken(),\n },\n });\n\n /**\n * 注册消息类\n *\n * 在接收消息、查询消息时,会按照消息类注册顺序的逆序依次尝试解析消息内容\n *\n * @memberof Realtime\n * @instance\n * @param {Function | Function[]} messageClass 消息类,需要实现 {@link AVMessage} 接口,\n * 建议继承自 {@link TypedMessage}\n * @throws {TypeError} 如果 messageClass 没有实现 {@link AVMessage} 接口则抛出异常\n */\n const register = messageClass =>\n ensureArray(messageClass).map(messageParser.register.bind(messageParser));\n register(ensureArray(realtime._plugins.messageClasses));\n /**\n * 创建一个即时通讯客户端,多次创建相同 id 的客户端会返回同一个实例\n * @memberof Realtime\n * @instance\n * @param {String|AV.User} [identity] 客户端 identity,如果不指定该参数,服务端会随机生成一个字符串作为 identity,\n * 如果传入一个已登录的 AV.User,则会使用该用户的 id 作为客户端 identity 登录。\n * @param {Object} [options]\n * @param {Function} [options.signatureFactory] open session 时的签名方法 // TODO need details\n * @param {Function} [options.conversationSignatureFactory] 对话创建、增减成员操作时的签名方法\n * @param {Function} [options.blacklistSignatureFactory] 黑名单操作时的签名方法\n * @param {String} [options.tag] 客户端类型标记,以支持单点登录功能\n * @param {String} [options.isReconnect=false] 单点登录时标记该次登录是不是应用启动时自动重新登录\n * @return {Promise.<IMClient>}\n */\n const createIMClient = async (\n identity,\n { tag, isReconnect, ...clientOptions } = {},\n lagecyTag\n ) => {\n let id;\n const buildinOptions = {};\n if (identity) {\n if (typeof identity === 'string') {\n id = identity;\n } else if (identity.id && identity.getSessionToken) {\n ({ id } = identity);\n const sessionToken = identity.getSessionToken();\n if (!sessionToken) {\n throw new Error('User must be authenticated');\n }\n buildinOptions.signatureFactory = signAVUser;\n } else {\n throw new TypeError('Identity must be a String or an AV.User');\n }\n if (realtime._IMClients[id] !== undefined) {\n return realtime._IMClients[id];\n }\n }\n if (lagecyTag) {\n console.warn(\n 'DEPRECATION createIMClient tag param: Use options.tag instead.'\n );\n }\n const _tag = tag || lagecyTag;\n const promise = realtime\n ._open()\n .then(connection => {\n const client = new IMClient(\n id,\n { ...buildinOptions, ...clientOptions },\n {\n _connection: connection,\n _request: realtime._request.bind(realtime),\n _messageParser: messageParser,\n _plugins: realtime._plugins,\n _identity: identity,\n }\n );\n connection.on(RECONNECT, () =>\n client\n ._open(realtime._options.appId, _tag, deviceId, true)\n /**\n * 客户端连接恢复正常,该事件通常在 {@link Realtime#event:RECONNECT} 之后发生\n * @event IMClient#RECONNECT\n * @see Realtime#event:RECONNECT\n * @since 3.2.0\n */\n /**\n * 客户端重新登录发生错误(网络连接已恢复,但重新登录错误)\n * @event IMClient#RECONNECT_ERROR\n * @since 3.2.0\n */\n .then(\n () => client.emit(RECONNECT),\n error => client.emit(RECONNECT_ERROR, error)\n )\n );\n internal(client)._eventemitter.on(\n 'beforeclose',\n () => {\n delete realtime._IMClients[client.id];\n if (realtime._firstIMClient === client) {\n delete realtime._firstIMClient;\n }\n },\n realtime\n );\n internal(client)._eventemitter.on(\n 'close',\n () => {\n realtime._deregister(client);\n },\n realtime\n );\n return client\n ._open(realtime._options.appId, _tag, deviceId, isReconnect)\n .then(() => {\n realtime._IMClients[client.id] = client;\n realtime._IMClientsCreationCount += 1;\n if (realtime._IMClientsCreationCount === 1) {\n client._omitPeerId(true);\n realtime._firstIMClient = client;\n } else if (\n realtime._IMClientsCreationCount > 1 &&\n realtime._firstIMClient\n ) {\n realtime._firstIMClient._omitPeerId(false);\n }\n realtime._register(client);\n return client;\n })\n .catch(error => {\n delete realtime._IMClients[client.id];\n throw error;\n });\n })\n .then(\n ...finalize(() => {\n realtime._deregisterPending(promise);\n })\n );\n if (identity) {\n realtime._IMClients[id] = promise;\n }\n realtime._registerPending(promise);\n return promise;\n };\n Object.assign(realtime, {\n register,\n createIMClient,\n });\n /* eslint-enable no-param-reassign */\n};\n\nconst beforeCommandDispatch = (command, realtime) => {\n const isIMCommand = command.service === null || command.service === 2;\n if (!isIMCommand) return true;\n const targetClient = command.peerId\n ? realtime._IMClients[command.peerId]\n : realtime._firstIMClient;\n if (targetClient) {\n Promise.resolve(targetClient)\n .then(client => client._dispatchCommand(command))\n .catch(debug);\n } else {\n debug(\n '[WARN] Unexpected message received without any live client match: %O',\n trim(command)\n );\n }\n return false;\n};\n\nexport const IMPlugin = {\n name: 'leancloud-realtime-plugin-im',\n onRealtimeCreate,\n beforeCommandDispatch,\n messageClasses: [Message, BinaryMessage, RecalledMessage, TextMessage],\n};\n","import { Realtime } from './core';\nimport { IMPlugin, defineConversationProperty } from './plugin-im';\nimport * as CoreEvent from './events/core';\nimport * as IMEvent from './events/im';\n\nRealtime.defineConversationProperty = defineConversationProperty;\nRealtime.__preRegisteredPlugins = [IMPlugin];\n\nconst Event = {\n ...CoreEvent,\n ...IMEvent,\n};\n\nexport {\n /**\n * SDK 可能会派发的事件枚举\n * @name Event\n * @memberof module:leancloud-realtime\n * @enum {String}\n * @since 4.0.0\n */\n Event,\n};\n\nexport {\n /**\n * 错误码,详见 {@link https://leancloud.cn/docs/realtime_v2.html#云端错误码说明}\n * @name ErrorCode\n * @memberof module:leancloud-realtime\n * @enum {Number}\n * @since 3.3.0\n */\n ErrorCode,\n} from './error';\n\nexport * from './core';\n\nexport * from './plugin-im';\n"],"names":["module","require","newBuilder","package","syntax","options","objc_class_prefix","messages","name","fields","rule","type","id","default","enums","values","isNamespace","build","push_server","messages2","JsonObjectMessage","UnreadTuple","LogItem","DataCommand","SessionCommand","ErrorCommand","DirectCommand","AckCommand","UnreadCommand","ConvCommand","RoomCommand","LogsCommand","RcpCommand","ReadTuple","MaxReadTuple","ReadCommand","PresenceCommand","ReportCommand","GenericCommand","BlacklistCommand","PatchCommand","PatchItem","ConvMemberInfo","CommandType","OpType","StatusType","global","window","EXPIRED","Symbol","debug","d","Expirable","value","ttl","originalValue","expiredAt","Date","now","expired","Cache","_map","get","key","cache","set","enable","namespaces","disable","tryAll","promiseConstructors","promise","Promise","length","catch","slice","tap","interceptor","finalize","callback","error","decodeDate","date","__type","iso","toNumber","getTime","undefined","decode","Array","isArray","map","isPlainObject","Object","keys","reduce","result","encode","toJSON","keyRemap","keymap","obj","newObj","newKey","assign","isIE10","navigator","userAgent","indexOf","getStaticProperty","klass","property","__proto__","union","a","b","from","Set","difference","bSet","filter","x","has","WeakMap","internal","object","compact","prop","hasOwnProperty","call","removeNull","trim","message","JSON","parse","stringify","ensureArray","target","setValue","segs","split","lastSeg","pop","currentTarget","forEach","seg","isWeapp","wx","connectSocket","throttle","wait","descriptor","Error","throttleMeta","propertyMeta","previouseTimestamp","timeout","remainingTime","apply","setTimeout","isCNApp","appId","OPEN","DISCONNECT","RECONNECT","RETRY","SCHEDULE","OFFLINE","ONLINE","ERROR","MESSAGE","HEARTBEAT_TIME","TIMEOUT_TIME","DEFAULT_RETRY_STRATEGY","attempt","Math","min","requireConnected","requireConnectedWrapper","checkConnectionAvailability","args","WebSocketPlus","_urls","urls","getUrls","protocol","WebSocket","init","_protocol","resolve","then","_open","__postponeTimeoutTimer","_postponeTimeoutTimer","bind","addEventListener","__pause","can","pause","__resume","resume","open","throw","_createWs","ws","first","reset","url","reject","binaryType","onopen","onclose","onerror","_ws","_handleClose","onmessage","_handleMessage","_destroyWs","close","onbeforeevent","event","to","payload","emit","onconnected","_startConnectionKeeper","onleaveconnected","_stopConnectionKeeper","onpause","onbeforeresume","onreconnect","ondisconnected","delay","__scheduledRetry","clearTimeout","is","retry","onretry","reconnect","fail","removeEventListener","currentState","current","console","warn","_ping","ping","_clearTimeoutTimers","_timeoutTimer","disconnect","_heartbeatTimer","setInterval","addListener","removeListener","clearInterval","code","reason","isFinished","handleClose","send","data","handleMessage","EventEmitter","StateMachine","create","prototype","initial","state","defer","terminal","events","freeze","ErrorCode","Number","createError","appCode","detail","errorMessage","err","COMMAND_TIMEOUT","EXPIRE","Connection","getUrl","format","version","protocolString","encodeURIComponent","_protocalFormat","_commands","_serialId","command","waitingForRespond","serialId","i","enabled","toBase64","toArrayBuffer","TypeError","cmd","op","msg","e","goaway","echo","checkType","middleware","param","constructor","_pluginName","applyDecorators","decorators","decorator","applyMiddlewares","middlewares","previousPromise","applyDispatcher","dispatchers","resultPromise","dispatcher","shouldDispatch","debugRequest","routerCache","Realtime","plugins","VERSION","appKey","server","_options","pushOfflineMessages","noBinary","ssl","RTMServerName","process","env","RTM_SERVER_NAME","_cache","_this","clients","pendingClients","mergedPlugins","__preRegisteredPlugins","plugin","_plugins","hook","concat","onRealtimeCreate","_request","method","path","query","headers","_getServerUrls","api","superagent","response","status","body","_openPromise","connection","_getRTMServers","on","_dispatchCommand","client","isFatal","APP_NOT_AVAILABLE","INVALID_LOGIN","INVALID_ORIGIN","some","errorCode","RTMServers","shuffle","cachedEndPoints","info","_fetchRTMServers","secondary","RTMRouter","cachedRouter","defaultProtocol","res","RTMRouterServer","rtm_router_server","APIServer","api_server","serverUrls","toLowerCase","domain","secure","features","_t","_close","cannot","_registerPending","add","_deregisterPending","delete","_register","_deregister","size","beforeCommandDispatch","polyfilledPromise","UNREAD_MESSAGES_COUNT_UPDATE","CLOSE","CONFLICT","CONVERSATION_INFO_UPDATED","UNHANDLED_MESSAGE","INVITED","KICKED","MEMBERS_JOINED","MEMBERS_LEFT","MEMBER_INFO_UPDATED","BLOCKED","UNBLOCKED","MEMBERS_BLOCKED","MEMBERS_UNBLOCKED","MUTED","UNMUTED","MEMBERS_MUTED","MEMBERS_UNMUTED","MESSAGE_RECALL","MESSAGE_UPDATE","LAST_DELIVERED_AT_UPDATE","LAST_READ_AT_UPDATE","INFO_UPDATED","MessageStatus","NONE","SENDING","SENT","DELIVERED","FAILED","rMessageStatus","READ","Message","content","uuid","cid","timestamp","mentionList","mentionedAll","_mentioned","_setStatus","getPayload","_toJSON","deliveredAt","updatedAt","mentioned","toFullJSON","_updatedAt","_status","_updateMentioned","getMentionList","setMentionList","mentionAll","Boolean","validate","json","_timestamp","_deliveredAt","messageType","TYPE","_lctype","_getType","messageField","originalCustomFields","_customFields","IE10Compatible","TypedMessage","setText","text","_lctext","getText","setAttributes","attributes","_lcattrs","getAttributes","_getCustomFields","field","summary","customFields","RecalledMessage","serializeMessage","binaryMsg","ArrayBuffer","QueryDirection","NEW","OLD","MessageQueryDirection","NEW_TO_OLD","OLD_TO_NEW","ConversationBase","lastMessageAt","lastMessage","lastDeliveredAt","lastReadAt","unreadMessagesCount","members","properties","messagesWaitingForReceipt","_client","Event","_debug","onConversationCreate","_setUnreadMessagesMentioned","unreadMessagesMentioned","_setLastDeliveredAt","_setLastReadAt","params","_send","convMessage","sendOptions","getSendOptions","transient","receipt","priority","pushData","will","directMessage","r","dt","mentionPids","resCommand","ackMessage","uid","t","_update","newMessage","recall","patch","modify","patchMessage","patches","mid","lastPatchTime","_lastPatchTime","count","_addMembers","_removeMembers","update","queryMessages","beforeTime","beforeMessageId","afterTime","afterMessageId","limit","direction","startTime","startMessageId","startClosed","endTime","endMessageId","endClosed","conditions","tIncluded","tt","tmid","ttIncluded","l","lctype","logsMessage","all","logs","msgId","patchTimestamp","ackAt","readAt","bin","messageData","parseMessage","createMessagesIterator","next","prevMessages","done","read","readConversationsBuffer","_doSendRead","_handleReceipt","messageId","fetchReceiptTimestamps","maxReadTimestamp","maxAckTimestamp","_fetchAllReceiptTimestamps","queryAllMembers","maxReadTuples","maxReadTuple","pid","time","_lastMessageAt","_validateSignature","signatureResult","signature","nonce","signatureFactory","createPartiallySuccess","allowedPids","failedPids","successfulClientIds","failures","pids","clientIds","PersistentConversation","creator","createdAt","system","muted","mutedMembers","_attributes","_reset","currentAttributes","pendingAttributes","pendingKeys","re","RegExp","childKeys","test","k","parentKey","find","_buildCurrentAttributes","cloneDeep","_updateServerAttributes","save","attr","isEmpty","udate","fetch","getQuery","equalTo","mute","unmute","_appendConversationSignature","action","conversationSignatureFactory","sort","runSignatureFactory","_appendBlacklistSignature","blacklistSignatureFactory","blacklistMessage","m","remove","join","quit","muteMembers","add_shutup","unmuteMembers","remove_shutup","queryMutedMembers","query_shutup","newNext","results","blockMembers","block","srcCid","toPids","unblockMembers","unblock","queryBlockedMembers","blockedPids","_createdAt","ConversationMemberRole","OWNER","MANAGER","MEMBER","ConversationMemberInfo","conversation","memberId","role","conversationId","isOwner","Conversation","memberInfoMap","_fetchAllMemberInfo","_requestWithSessionToken","where","memberInfos","clientId","memberInfo","getAllMemberInfo","noCache","getMemberInfo","updateMemberRole","OWNER_PROMOTION_NOT_ALLOWED","member_info_update","targetClientId","ChatRoom","ServiceConversation","subscribe","unsubscribe","transformNotFoundError","CONVERSATION_NOT_FOUND","TEMPORARY_CONVERSATION_EXPIRED","TemporaryConversation","_expiredAt","ConversationQuery","_encode","source","_quote","s","replace","_calculateFlag","prev","_where","_extraOptions","_addCondition","condition","flag","_skip","skip","_limit","_order","containsMembers","peerIds","containsAll","withMembers","includeSelf","peerIdsSet","sizeEqualTo","lessThan","lessThanOrEqualTo","greaterThan","greaterThanOrEqualTo","notEqualTo","exists","doesNotExist","containedIn","notContainsIn","contains","subString","startsWith","prefix","endsWith","suffix","matches","regex","_modifiers","ignoreCase","multiline","ascending","addAscending","descending","addDescending","withLastMessagesRefreshed","_executeQuery","SessionManager","refresh","onBeforeGetSessionToken","_onBeforeGetSessionToken","setSessionToken","token","sessionToken","_sessionToken","_pendingSessionTokenPromise","setSessionTokenAsync","currentSessionToken","getSessionToken","autoRefresh","newValue","revoke","isTemporaryConversatrionId","configBitmap","IMClient","props","_messageParser","_conversationCache","_ackMessageBuffer","lastNotificationTime","_eventemitter","onIMClientCreate","serverTs","notificationType","conv","direct","session","unread","rcp","_dispatchConvMessage","_dispatchDirectMessage","_dispatchSessionMessage","_dispatchUnreadMessage","_dispatchRcpMessage","_dispatchPatchMessage","sessionMessage","closed","SESSION_CONFLICT","unreadMessage","convs","notifTime","lastUnreadNotifTime","getConversations","ts","messageProps","countNotUpdated","conversations","rcpMessage","patchCode","patchReason","patchTime","initBy","getConversation","joined","left","members_joined","members_left","members_blocked","members_unblocked","blocked","unblocked","members_shutuped","members_unshutuped","shutuped","unshutuped","member_info_changed","updated","invitedBy","kickedBy","blockedBy","unblockedBy","mutedBy","unmutedBy","member","updatedBy","originalMessage","fromPeerId","_sendAck","_dispatchParsedMessage","beforeMessageDispatch","push","_doSendAck","_connection","convAckMessages","timestamps","peerId","fromts","tots","max","_omitPeerId","peerIdOmittable","tag","deviceId","isReconnect","ua","_identity","_sessionManager","st","SESSION_TOKEN_EXPIRED","tokenTTL","stTtl","_createSessionManager","serverTime","_syncNotifications","_fetchNotifications","hasMore","notifications","notification","start_ts","notification_type","manager","expiredSessionToken","client_id","_ee","sessionPeerIds","onlineSessionPeerIds","cachedConversation","_getTemporaryConversations","ids","remoteConversationIds","remoteTemporaryConversationIds","remoteTemporaryConversationsPromise","tempConvIds","_handleQueryResults","getChatRoomQuery","getServiceConversationQuery","queryJSON","commandString","_parseConversationFromRawData","_upsertConversationToCache","fetchedConversation","decodeBase64","parseConversation","conversationData","rawData","objectId","lm","tr","sys","c","mu","msg_from","msg_mid","msg_timestamp","patch_timestamp","lastMessageFrom","lastMessageId","lastMessageTimestamp","lastMessagePatchTimestamp","createConversation","unique","tempConv","_tempConv","tempConvTTL","_tempConvTTL","startCommandJson","cdate","createChatRoom","createTemporaryConversation","buffer","clear","_sendReadCommand","readMessage","RECONNECT_ERROR","BinaryMessage","encodeBase64","TextMessage","tryParseJson","fn","wrapper","applyPlugins","beforeMessageParse","decoratedJson","afterMessageParse","MessageParser","_messageClasses","register","messageClass","unshift","Klass","contentCopy","valid","MessagePriority","HIGH","NORMAL","LOW","defineConversationProperty","defineProperty","realtime","_IMClients","_IMClientsCreationCount","messageParser","signAVUser","user","session_token","messageClasses","createIMClient","identity","clientOptions","lagecyTag","buildinOptions","_tag","_firstIMClient","isIMCommand","service","targetClient","IMPlugin","CoreEvent","IMEvent"],"mappings":"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"}
\No newline at end of file