@twilio/conversations 2.1.0-rc.0 → 2.1.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/builds/browser.js +2 -2
- package/builds/browser.js.map +1 -1
- package/builds/lib.js +2 -2
- package/builds/lib.js.map +1 -1
- package/builds/twilio-conversations.js +5 -5
- package/builds/twilio-conversations.min.js +2 -2
- package/dist/data/conversations.js +1 -1
- package/dist/data/conversations.js.map +1 -1
- package/dist/packages/conversations/package.json.js +1 -1
- package/package.json +8 -8
@@ -409,7 +409,7 @@ class Conversations extends replayEventEmitter.ReplayEventEmitter {
|
|
409
409
|
channel: conversationDescriptor.sync_objects.conversation,
|
410
410
|
messages: conversationDescriptor.sync_objects.messages,
|
411
411
|
roster: `${conversationDescriptor.conversation_sid}.roster`,
|
412
|
-
lastConsumedMessageIndex: conversationDescriptor.
|
412
|
+
lastConsumedMessageIndex: conversationDescriptor.last_read_message_index,
|
413
413
|
notificationLevel: conversationDescriptor.notification_level
|
414
414
|
}));
|
415
415
|
pageToken = response.body.meta.next_token;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"conversations.js","sources":["../../src/data/conversations.ts"],"sourcesContent":["import { Logger } from '../logger';\nimport {\n Conversation,\n ConversationUpdatedEventArgs,\n ConversationUpdateReason\n} from '../conversation';\nimport { SyncMap, SyncClient, SyncMapItem } from 'twilio-sync';\nimport { Users } from './users';\nimport { Network } from '../services/network';\nimport { TypingIndicator } from '../services/typing-indicator';\nimport { McsClient } from '@twilio/mcs-client';\nimport { Deferred } from '../util/deferred';\nimport {\n Participant,\n ParticipantUpdatedEventArgs,\n ParticipantUpdateReason\n} from '../participant';\nimport {\n Message,\n MessageUpdatedEventArgs,\n MessageUpdateReason\n} from '../message';\nimport { UriBuilder } from '../util';\nimport { Configuration } from '../configuration';\nimport { CommandExecutor } from '../command-executor';\nimport {\n CreateConversationRequest\n} from '../interfaces/commands/create-conversation';\nimport { ConversationResponse } from '../interfaces/commands/conversation-response';\nimport { ReplayEventEmitter } from '@twilio/replay-event-emitter';\nimport isEqual from 'lodash.isequal';\n\ntype ConversationsEvents = {\n conversationAdded: (conversation: Conversation) => void;\n conversationJoined: (conversation: Conversation) => void;\n conversationLeft: (conversation: Conversation) => void;\n conversationRemoved: (conversation: Conversation) => void;\n conversationUpdated: (data: {\n conversation: Conversation;\n updateReasons: ConversationUpdateReason[];\n }) => void;\n participantJoined: (participant: Participant) => void;\n participantLeft: (participant: Participant) => void;\n participantUpdated: (data: {\n participant: Participant;\n updateReasons: ParticipantUpdateReason[];\n }) => void;\n messageAdded: (message: Message) => void;\n messageRemoved: (message: Message) => void;\n messageUpdated: (data: {\n message: Message;\n updateReasons: MessageUpdateReason[];\n }) => void;\n typingEnded: (participant: Participant) => void;\n typingStarted: (participant: Participant) => void;\n};\n\ntype ConversationsDataSource = 'sync' | 'chat' | 'rest';\n\ninterface ConversationsServices {\n syncClient: SyncClient;\n users: Users;\n typingIndicator: TypingIndicator;\n network: Network;\n mcsClient: McsClient;\n commandExecutor: CommandExecutor;\n}\n\nconst log = Logger.scope('Conversations');\n\n/**\n * Represents conversations collection\n * {@see Conversation}\n */\nclass Conversations extends ReplayEventEmitter<ConversationsEvents> {\n public readonly conversations: Map<string, Conversation> = new Map();\n public readonly myConversationsRead: Deferred<boolean> = new Deferred();\n private readonly configuration: Configuration;\n private readonly services: ConversationsServices;\n private readonly tombstones: Set<string> = new Set();\n private myConversationsFetched = false;\n\n public constructor(\n configuration: Configuration,\n services: ConversationsServices\n ) {\n super();\n\n this.configuration = configuration;\n this.services = services;\n }\n\n public async addConversation(options): Promise<Conversation> {\n const attributes = typeof options?.attributes !== 'undefined'\n ? options.attributes\n : {};\n\n const response = await this.services.commandExecutor.mutateResource<CreateConversationRequest, ConversationResponse>(\n 'post',\n this.configuration.links.conversations,\n {\n friendly_name: options.friendlyName,\n unique_name: options.uniqueName,\n attributes: typeof attributes !== 'undefined' ? JSON.stringify(attributes) : undefined\n }\n );\n\n const conversationSid = response.sid ?? null;\n const conversationDocument = response.sync_objects?.conversation ?? null;\n const links = {\n self: response.url,\n ...response.links\n };\n const existingConversation = this.conversations.get(conversationSid);\n\n if (existingConversation) {\n await existingConversation._subscribe();\n return existingConversation;\n }\n\n const conversation = new Conversation(\n {\n channel: conversationDocument,\n entityName: null,\n uniqueName: null,\n attributes: null,\n createdBy: null,\n friendlyName: null,\n lastConsumedMessageIndex: null,\n dateCreated: null,\n dateUpdated: null\n },\n conversationSid,\n links,\n this.configuration,\n this.services\n );\n\n this.conversations.set(conversation.sid, conversation);\n this._registerForEvents(conversation);\n\n await conversation._subscribe();\n this.emit('conversationAdded', conversation);\n\n return conversation;\n }\n\n /**\n * Fetch conversations list and instantiate all necessary objects\n */\n public async fetchConversations(): Promise<Conversations> {\n try {\n const map = await this._getMap();\n\n map.on('itemAdded', args => {\n log.debug(`itemAdded: ${args.item.key}`);\n\n this._upsertConversation('sync', args.item.key, args.item.data);\n });\n\n map.on('itemRemoved', args => {\n log.debug(`itemRemoved: ${args.key}`);\n\n const sid = args.key;\n\n if (!this.myConversationsFetched) {\n this.tombstones.add(sid);\n }\n\n const conversation = this.conversations.get(sid);\n\n if (!conversation) {\n return;\n }\n\n if (conversation.status === 'joined') {\n conversation._setStatus('notParticipating', 'sync');\n this.emit('conversationLeft', conversation);\n }\n\n this.conversations.delete(sid);\n this.emit('conversationRemoved', conversation);\n conversation.emit('removed', conversation);\n });\n\n map.on('itemUpdated', args => {\n log.debug(`itemUpdated: ${args.item.key}`);\n\n this._upsertConversation('sync', args.item.key, args.item.data);\n });\n\n const myConversations = await this._fetchMyConversations();\n const upserts = [];\n\n for (const conversation of myConversations) {\n upserts.push(this._upsertConversation('rest', conversation.channel_sid, conversation));\n }\n\n this.myConversationsRead.set(true);\n\n await Promise.all(upserts);\n\n this.myConversationsFetched = true;\n this.tombstones.clear();\n\n log.debug('The conversations list has been successfully fetched');\n\n return this;\n } catch (error) {\n const errorMessage = 'Failed to fetch the conversations list';\n\n if (this.services.syncClient.connectionState !== 'disconnected') {\n log.error(errorMessage, error);\n }\n\n log.debug(`ERROR: ${errorMessage}`, error);\n\n throw error;\n }\n }\n\n public async getConversations(args) {\n const conversationsMap = await this._getMap();\n const page = await conversationsMap.getItems();\n\n return this._wrapPaginator(page\n , items => Promise.all(items.map((item: SyncMapItem) => this._upsertConversation('sync', item.key, item.data))));\n }\n\n public async getConversation(sid: string): Promise<Conversation> {\n const conversationsMap = await this._getMap();\n const page = await conversationsMap.getItems({ key: sid });\n const items = page.items.map((item: SyncMapItem) => this._upsertConversation('sync', item.key, item.data));\n\n return items.length > 0 ? items[0] : null;\n }\n\n public async getConversationByUniqueName(uniqueName: string): Promise<Conversation> {\n const url = new UriBuilder(this.configuration.links.myConversations)\n .path(uniqueName)\n .build();\n const response = await this.services.network.get(url);\n const body = response.body;\n\n const sid = body.conversation_sid;\n const data = {\n entityName: null,\n lastConsumedMessageIndex: body.last_read_message_index,\n status: body?.status || 'unknown',\n friendlyName: body.friendly_name,\n dateUpdated: body.date_updated,\n dateCreated: body.date_created,\n uniqueName: body.unique_name,\n createdBy: body.created_by,\n attributes: body.attributes,\n channel: body.sync_objects.conversation,\n notificationLevel: body?.notification_level,\n sid\n };\n\n return this._upsertConversation('sync', sid, data);\n }\n\n public async peekConversation(sid: string): Promise<Conversation> {\n const url = new UriBuilder(this.configuration.links.conversations)\n .path(sid)\n .build();\n const response = await this.services.network.get(url);\n const body = response.body;\n\n const data = {\n entityName: null,\n // lastConsumedMessageIndex: body.last_read_message_index,\n status: body?.status || 'unknown',\n friendlyName: body.friendly_name,\n dateUpdated: body.date_updated,\n dateCreated: body.date_created,\n uniqueName: body.unique_name,\n createdBy: body.created_by,\n attributes: body.attributes,\n channel: `${sid}.channel`,\n // notificationLevel: body?.notification_level,\n sid\n };\n\n return this._upsertConversation('sync', sid, data);\n }\n\n private async _getMap(): Promise<SyncMap> {\n return await this.services.syncClient.map({\n id: this.configuration.myConversations,\n mode: 'open_existing'\n });\n }\n\n private async _wrapPaginator(page, op) {\n const items = await op(page.items);\n\n return {\n items,\n hasNextPage: page.hasNextPage,\n hasPrevPage: page.hasPrevPage,\n nextPage: () => page.nextPage().then(x => this._wrapPaginator(x, op)),\n prevPage: () => page.prevPage().then(x => this._wrapPaginator(x, op))\n };\n }\n\n private async _updateConversation(source: ConversationsDataSource, conversation: Conversation, data): Promise<void> {\n const areSourcesDifferent = conversation._statusSource() !== undefined && source !== conversation._statusSource();\n const isChannelSourceSync = source !== 'rest' || conversation._statusSource() === 'sync';\n\n if (areSourcesDifferent && isChannelSourceSync && source !== 'sync') {\n log.trace('upsertConversation: conversation is known from sync and came from chat, ignoring', {\n sid: conversation.sid,\n data: data.status,\n conversation: conversation.status\n });\n\n return;\n }\n\n if (data.status === 'joined' && conversation.status !== 'joined') {\n conversation._setStatus('joined', source);\n\n let updateData: any = {};\n\n if (typeof data.notificationLevel !== 'undefined') {\n updateData.notificationLevel = data.notificationLevel;\n }\n\n if (typeof data.lastConsumedMessageIndex !== 'undefined') {\n updateData.lastConsumedMessageIndex = data.lastConsumedMessageIndex;\n }\n\n if (!isEqual(updateData, {})) {\n conversation._update(updateData);\n }\n\n conversation._subscribe().then(() => {\n this.emit('conversationJoined', conversation);\n });\n\n return;\n }\n\n if (data.status === 'notParticipating' && conversation.status === 'joined') {\n conversation._setStatus('notParticipating', source);\n conversation._update(data);\n await conversation._subscribe();\n this.emit('conversationLeft', conversation);\n\n return;\n }\n\n if (data.status === 'notParticipating') {\n await conversation._subscribe();\n\n return;\n }\n\n conversation._update(data);\n }\n\n private async _upsertConversation(source: ConversationsDataSource, sid: string, data): Promise<Conversation> {\n log.trace(`upsertConversation called for ${sid}`, data);\n\n const conversation = this.conversations.get(sid);\n\n // If the channel is known, update it\n if (conversation) {\n log.trace(\n `upsertConversation: the conversation ${conversation.sid} is known;` +\n `its status is known from the source ${conversation._statusSource()} ` +\n `and the update came from the source ${source}`,\n conversation\n );\n\n await this._updateConversation(source, conversation, data);\n await conversation._subscribe();\n\n return conversation;\n }\n\n // If the conversations is deleted, ignore it\n if (['chat', 'rest'].includes(source) && this.tombstones.has(sid)) {\n log.trace('upsertChannel: the channel is deleted but reappeared again from chat, ignoring', sid);\n return;\n }\n\n // If the conversation is unknown, fetch it\n log.trace('upsertConversation: creating a local conversation object with sid ' + sid, data);\n\n const baseLink = `${this.configuration.links.conversations}/${sid}`;\n const links = {\n self: baseLink,\n messages: `${baseLink}/Messages`,\n participants: `${baseLink}/Participants`\n };\n const newConversation = new Conversation(\n data,\n sid,\n links,\n this.configuration,\n this.services\n );\n this.conversations.set(sid, newConversation);\n\n await newConversation._subscribe();\n this._registerForEvents(newConversation);\n this.emit('conversationAdded', newConversation);\n\n if (data.status === 'joined') {\n newConversation._setStatus('joined', source);\n this.emit('conversationJoined', newConversation);\n }\n\n return newConversation;\n }\n\n private async _fetchMyConversations() {\n let conversations = [];\n let pageToken: null | string = null;\n\n do {\n const url = new UriBuilder(this.configuration.links.myConversations);\n\n if (pageToken) {\n url.arg('PageToken', pageToken);\n }\n\n const response = await this.services.network.get(url.build());\n const receivedConversations = response.body.conversations.map(\n (conversationDescriptor) => ({\n descriptor: conversationDescriptor,\n channel_sid: conversationDescriptor.conversation_sid,\n status: conversationDescriptor.status,\n channel: conversationDescriptor.sync_objects.conversation,\n messages: conversationDescriptor.sync_objects.messages,\n roster: `${conversationDescriptor.conversation_sid}.roster`,\n lastConsumedMessageIndex: conversationDescriptor.last_consumed_message_index,\n notificationLevel: conversationDescriptor.notification_level\n })\n );\n\n pageToken = response.body.meta.next_token;\n conversations = [...conversations, ...receivedConversations];\n } while (pageToken);\n\n return conversations;\n }\n\n private _onConversationRemoved(sid: string) {\n const conversation = this.conversations.get(sid);\n\n if (conversation) {\n this.conversations.delete(sid);\n this.emit('conversationRemoved', conversation);\n }\n }\n\n private _registerForEvents(conversation) {\n conversation.on('removed', () => this._onConversationRemoved(conversation.sid));\n conversation.on('updated', (args: ConversationUpdatedEventArgs) => this.emit('conversationUpdated', args));\n conversation.on('participantJoined', this.emit.bind(this, 'participantJoined'));\n conversation.on('participantLeft', this.emit.bind(this, 'participantLeft'));\n conversation.on('participantUpdated', (args: ParticipantUpdatedEventArgs) => this.emit('participantUpdated', args));\n conversation.on('messageAdded', this.emit.bind(this, 'messageAdded'));\n conversation.on('messageUpdated', (args: MessageUpdatedEventArgs) => this.emit('messageUpdated', args));\n conversation.on('messageRemoved', this.emit.bind(this, 'messageRemoved'));\n conversation.on('typingStarted', this.emit.bind(this, 'typingStarted'));\n conversation.on('typingEnded', this.emit.bind(this, 'typingEnded'));\n }\n}\n\nexport {\n ConversationsServices,\n ConversationsDataSource,\n Conversation,\n Conversations\n};\n"],"names":["Logger","ReplayEventEmitter","Deferred","conversation","Conversation","UriBuilder","isEqual"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"conversations.js","sources":["../../src/data/conversations.ts"],"sourcesContent":["import { Logger } from '../logger';\nimport {\n Conversation,\n ConversationUpdatedEventArgs,\n ConversationUpdateReason\n} from '../conversation';\nimport { SyncMap, SyncClient, SyncMapItem } from 'twilio-sync';\nimport { Users } from './users';\nimport { Network } from '../services/network';\nimport { TypingIndicator } from '../services/typing-indicator';\nimport { McsClient } from '@twilio/mcs-client';\nimport { Deferred } from '../util/deferred';\nimport {\n Participant,\n ParticipantUpdatedEventArgs,\n ParticipantUpdateReason\n} from '../participant';\nimport {\n Message,\n MessageUpdatedEventArgs,\n MessageUpdateReason\n} from '../message';\nimport { UriBuilder } from '../util';\nimport { Configuration } from '../configuration';\nimport { CommandExecutor } from '../command-executor';\nimport {\n CreateConversationRequest\n} from '../interfaces/commands/create-conversation';\nimport { ConversationResponse } from '../interfaces/commands/conversation-response';\nimport { ReplayEventEmitter } from '@twilio/replay-event-emitter';\nimport isEqual from 'lodash.isequal';\n\ntype ConversationsEvents = {\n conversationAdded: (conversation: Conversation) => void;\n conversationJoined: (conversation: Conversation) => void;\n conversationLeft: (conversation: Conversation) => void;\n conversationRemoved: (conversation: Conversation) => void;\n conversationUpdated: (data: {\n conversation: Conversation;\n updateReasons: ConversationUpdateReason[];\n }) => void;\n participantJoined: (participant: Participant) => void;\n participantLeft: (participant: Participant) => void;\n participantUpdated: (data: {\n participant: Participant;\n updateReasons: ParticipantUpdateReason[];\n }) => void;\n messageAdded: (message: Message) => void;\n messageRemoved: (message: Message) => void;\n messageUpdated: (data: {\n message: Message;\n updateReasons: MessageUpdateReason[];\n }) => void;\n typingEnded: (participant: Participant) => void;\n typingStarted: (participant: Participant) => void;\n};\n\ntype ConversationsDataSource = 'sync' | 'chat' | 'rest';\n\ninterface ConversationsServices {\n syncClient: SyncClient;\n users: Users;\n typingIndicator: TypingIndicator;\n network: Network;\n mcsClient: McsClient;\n commandExecutor: CommandExecutor;\n}\n\nconst log = Logger.scope('Conversations');\n\n/**\n * Represents conversations collection\n * {@see Conversation}\n */\nclass Conversations extends ReplayEventEmitter<ConversationsEvents> {\n public readonly conversations: Map<string, Conversation> = new Map();\n public readonly myConversationsRead: Deferred<boolean> = new Deferred();\n private readonly configuration: Configuration;\n private readonly services: ConversationsServices;\n private readonly tombstones: Set<string> = new Set();\n private myConversationsFetched = false;\n\n public constructor(\n configuration: Configuration,\n services: ConversationsServices\n ) {\n super();\n\n this.configuration = configuration;\n this.services = services;\n }\n\n public async addConversation(options): Promise<Conversation> {\n const attributes = typeof options?.attributes !== 'undefined'\n ? options.attributes\n : {};\n\n const response = await this.services.commandExecutor.mutateResource<CreateConversationRequest, ConversationResponse>(\n 'post',\n this.configuration.links.conversations,\n {\n friendly_name: options.friendlyName,\n unique_name: options.uniqueName,\n attributes: typeof attributes !== 'undefined' ? JSON.stringify(attributes) : undefined\n }\n );\n\n const conversationSid = response.sid ?? null;\n const conversationDocument = response.sync_objects?.conversation ?? null;\n const links = {\n self: response.url,\n ...response.links\n };\n const existingConversation = this.conversations.get(conversationSid);\n\n if (existingConversation) {\n await existingConversation._subscribe();\n return existingConversation;\n }\n\n const conversation = new Conversation(\n {\n channel: conversationDocument,\n entityName: null,\n uniqueName: null,\n attributes: null,\n createdBy: null,\n friendlyName: null,\n lastConsumedMessageIndex: null,\n dateCreated: null,\n dateUpdated: null\n },\n conversationSid,\n links,\n this.configuration,\n this.services\n );\n\n this.conversations.set(conversation.sid, conversation);\n this._registerForEvents(conversation);\n\n await conversation._subscribe();\n this.emit('conversationAdded', conversation);\n\n return conversation;\n }\n\n /**\n * Fetch conversations list and instantiate all necessary objects\n */\n public async fetchConversations(): Promise<Conversations> {\n try {\n const map = await this._getMap();\n\n map.on('itemAdded', args => {\n log.debug(`itemAdded: ${args.item.key}`);\n\n this._upsertConversation('sync', args.item.key, args.item.data);\n });\n\n map.on('itemRemoved', args => {\n log.debug(`itemRemoved: ${args.key}`);\n\n const sid = args.key;\n\n if (!this.myConversationsFetched) {\n this.tombstones.add(sid);\n }\n\n const conversation = this.conversations.get(sid);\n\n if (!conversation) {\n return;\n }\n\n if (conversation.status === 'joined') {\n conversation._setStatus('notParticipating', 'sync');\n this.emit('conversationLeft', conversation);\n }\n\n this.conversations.delete(sid);\n this.emit('conversationRemoved', conversation);\n conversation.emit('removed', conversation);\n });\n\n map.on('itemUpdated', args => {\n log.debug(`itemUpdated: ${args.item.key}`);\n\n this._upsertConversation('sync', args.item.key, args.item.data);\n });\n\n const myConversations = await this._fetchMyConversations();\n const upserts = [];\n\n for (const conversation of myConversations) {\n upserts.push(this._upsertConversation('rest', conversation.channel_sid, conversation));\n }\n\n this.myConversationsRead.set(true);\n\n await Promise.all(upserts);\n\n this.myConversationsFetched = true;\n this.tombstones.clear();\n\n log.debug('The conversations list has been successfully fetched');\n\n return this;\n } catch (error) {\n const errorMessage = 'Failed to fetch the conversations list';\n\n if (this.services.syncClient.connectionState !== 'disconnected') {\n log.error(errorMessage, error);\n }\n\n log.debug(`ERROR: ${errorMessage}`, error);\n\n throw error;\n }\n }\n\n public async getConversations(args) {\n const conversationsMap = await this._getMap();\n const page = await conversationsMap.getItems();\n\n return this._wrapPaginator(page\n , items => Promise.all(items.map((item: SyncMapItem) => this._upsertConversation('sync', item.key, item.data))));\n }\n\n public async getConversation(sid: string): Promise<Conversation> {\n const conversationsMap = await this._getMap();\n const page = await conversationsMap.getItems({ key: sid });\n const items = page.items.map((item: SyncMapItem) => this._upsertConversation('sync', item.key, item.data));\n\n return items.length > 0 ? items[0] : null;\n }\n\n public async getConversationByUniqueName(uniqueName: string): Promise<Conversation> {\n const url = new UriBuilder(this.configuration.links.myConversations)\n .path(uniqueName)\n .build();\n const response = await this.services.network.get(url);\n const body = response.body;\n\n const sid = body.conversation_sid;\n const data = {\n entityName: null,\n lastConsumedMessageIndex: body.last_read_message_index,\n status: body?.status || 'unknown',\n friendlyName: body.friendly_name,\n dateUpdated: body.date_updated,\n dateCreated: body.date_created,\n uniqueName: body.unique_name,\n createdBy: body.created_by,\n attributes: body.attributes,\n channel: body.sync_objects.conversation,\n notificationLevel: body?.notification_level,\n sid\n };\n\n return this._upsertConversation('sync', sid, data);\n }\n\n public async peekConversation(sid: string): Promise<Conversation> {\n const url = new UriBuilder(this.configuration.links.conversations)\n .path(sid)\n .build();\n const response = await this.services.network.get(url);\n const body = response.body;\n\n const data = {\n entityName: null,\n // lastConsumedMessageIndex: body.last_read_message_index,\n status: body?.status || 'unknown',\n friendlyName: body.friendly_name,\n dateUpdated: body.date_updated,\n dateCreated: body.date_created,\n uniqueName: body.unique_name,\n createdBy: body.created_by,\n attributes: body.attributes,\n channel: `${sid}.channel`,\n // notificationLevel: body?.notification_level,\n sid\n };\n\n return this._upsertConversation('sync', sid, data);\n }\n\n private async _getMap(): Promise<SyncMap> {\n return await this.services.syncClient.map({\n id: this.configuration.myConversations,\n mode: 'open_existing'\n });\n }\n\n private async _wrapPaginator(page, op) {\n const items = await op(page.items);\n\n return {\n items,\n hasNextPage: page.hasNextPage,\n hasPrevPage: page.hasPrevPage,\n nextPage: () => page.nextPage().then(x => this._wrapPaginator(x, op)),\n prevPage: () => page.prevPage().then(x => this._wrapPaginator(x, op))\n };\n }\n\n private async _updateConversation(source: ConversationsDataSource, conversation: Conversation, data): Promise<void> {\n const areSourcesDifferent = conversation._statusSource() !== undefined && source !== conversation._statusSource();\n const isChannelSourceSync = source !== 'rest' || conversation._statusSource() === 'sync';\n\n if (areSourcesDifferent && isChannelSourceSync && source !== 'sync') {\n log.trace('upsertConversation: conversation is known from sync and came from chat, ignoring', {\n sid: conversation.sid,\n data: data.status,\n conversation: conversation.status\n });\n\n return;\n }\n\n if (data.status === 'joined' && conversation.status !== 'joined') {\n conversation._setStatus('joined', source);\n\n let updateData: any = {};\n\n if (typeof data.notificationLevel !== 'undefined') {\n updateData.notificationLevel = data.notificationLevel;\n }\n\n if (typeof data.lastConsumedMessageIndex !== 'undefined') {\n updateData.lastConsumedMessageIndex = data.lastConsumedMessageIndex;\n }\n\n if (!isEqual(updateData, {})) {\n conversation._update(updateData);\n }\n\n conversation._subscribe().then(() => {\n this.emit('conversationJoined', conversation);\n });\n\n return;\n }\n\n if (data.status === 'notParticipating' && conversation.status === 'joined') {\n conversation._setStatus('notParticipating', source);\n conversation._update(data);\n await conversation._subscribe();\n this.emit('conversationLeft', conversation);\n\n return;\n }\n\n if (data.status === 'notParticipating') {\n await conversation._subscribe();\n\n return;\n }\n\n conversation._update(data);\n }\n\n private async _upsertConversation(source: ConversationsDataSource, sid: string, data): Promise<Conversation> {\n log.trace(`upsertConversation called for ${sid}`, data);\n\n const conversation = this.conversations.get(sid);\n\n // If the channel is known, update it\n if (conversation) {\n log.trace(\n `upsertConversation: the conversation ${conversation.sid} is known;` +\n `its status is known from the source ${conversation._statusSource()} ` +\n `and the update came from the source ${source}`,\n conversation\n );\n\n await this._updateConversation(source, conversation, data);\n await conversation._subscribe();\n\n return conversation;\n }\n\n // If the conversations is deleted, ignore it\n if (['chat', 'rest'].includes(source) && this.tombstones.has(sid)) {\n log.trace('upsertChannel: the channel is deleted but reappeared again from chat, ignoring', sid);\n return;\n }\n\n // If the conversation is unknown, fetch it\n log.trace('upsertConversation: creating a local conversation object with sid ' + sid, data);\n\n const baseLink = `${this.configuration.links.conversations}/${sid}`;\n const links = {\n self: baseLink,\n messages: `${baseLink}/Messages`,\n participants: `${baseLink}/Participants`\n };\n const newConversation = new Conversation(\n data,\n sid,\n links,\n this.configuration,\n this.services\n );\n this.conversations.set(sid, newConversation);\n\n await newConversation._subscribe();\n this._registerForEvents(newConversation);\n this.emit('conversationAdded', newConversation);\n\n if (data.status === 'joined') {\n newConversation._setStatus('joined', source);\n this.emit('conversationJoined', newConversation);\n }\n\n return newConversation;\n }\n\n private async _fetchMyConversations() {\n let conversations = [];\n let pageToken: null | string = null;\n\n do {\n const url = new UriBuilder(this.configuration.links.myConversations);\n\n if (pageToken) {\n url.arg('PageToken', pageToken);\n }\n\n const response = await this.services.network.get(url.build());\n const receivedConversations = response.body.conversations.map(\n (conversationDescriptor) => ({\n descriptor: conversationDescriptor,\n channel_sid: conversationDescriptor.conversation_sid,\n status: conversationDescriptor.status,\n channel: conversationDescriptor.sync_objects.conversation,\n messages: conversationDescriptor.sync_objects.messages,\n roster: `${conversationDescriptor.conversation_sid}.roster`,\n lastConsumedMessageIndex: conversationDescriptor.last_read_message_index,\n notificationLevel: conversationDescriptor.notification_level\n })\n );\n\n pageToken = response.body.meta.next_token;\n conversations = [...conversations, ...receivedConversations];\n } while (pageToken);\n\n return conversations;\n }\n\n private _onConversationRemoved(sid: string) {\n const conversation = this.conversations.get(sid);\n\n if (conversation) {\n this.conversations.delete(sid);\n this.emit('conversationRemoved', conversation);\n }\n }\n\n private _registerForEvents(conversation) {\n conversation.on('removed', () => this._onConversationRemoved(conversation.sid));\n conversation.on('updated', (args: ConversationUpdatedEventArgs) => this.emit('conversationUpdated', args));\n conversation.on('participantJoined', this.emit.bind(this, 'participantJoined'));\n conversation.on('participantLeft', this.emit.bind(this, 'participantLeft'));\n conversation.on('participantUpdated', (args: ParticipantUpdatedEventArgs) => this.emit('participantUpdated', args));\n conversation.on('messageAdded', this.emit.bind(this, 'messageAdded'));\n conversation.on('messageUpdated', (args: MessageUpdatedEventArgs) => this.emit('messageUpdated', args));\n conversation.on('messageRemoved', this.emit.bind(this, 'messageRemoved'));\n conversation.on('typingStarted', this.emit.bind(this, 'typingStarted'));\n conversation.on('typingEnded', this.emit.bind(this, 'typingEnded'));\n }\n}\n\nexport {\n ConversationsServices,\n ConversationsDataSource,\n Conversation,\n Conversations\n};\n"],"names":["Logger","ReplayEventEmitter","Deferred","conversation","Conversation","UriBuilder","isEqual"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoEA,MAAM,GAAG,GAAGA,aAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AAE1C;;;;AAIA,MAAM,aAAc,SAAQC,qCAAuC;IAQjE,YACE,aAA4B,EAC5B,QAA+B;QAE/B,KAAK,EAAE,CAAC;QAXM,kBAAa,GAA8B,IAAI,GAAG,EAAE,CAAC;QACrD,wBAAmB,GAAsB,IAAIC,iBAAQ,EAAE,CAAC;QAGvD,eAAU,GAAgB,IAAI,GAAG,EAAE,CAAC;QAC7C,2BAAsB,GAAG,KAAK,CAAC;QAQrC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;IAEM,MAAM,eAAe,CAAC,OAAO;;QAClC,MAAM,UAAU,GAAG,QAAO,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,CAAA,KAAK,WAAW;cACzD,OAAO,CAAC,UAAU;cAClB,EAAE,CAAC;QAEP,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,CACjE,MAAM,EACN,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,EACtC;YACE,aAAa,EAAE,OAAO,CAAC,YAAY;YACnC,WAAW,EAAE,OAAO,CAAC,UAAU;YAC/B,UAAU,EAAE,OAAO,UAAU,KAAK,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,SAAS;SACvF,CACF,CAAC;QAEF,MAAM,eAAe,GAAG,MAAA,QAAQ,CAAC,GAAG,mCAAI,IAAI,CAAC;QAC7C,MAAM,oBAAoB,GAAG,MAAA,MAAA,QAAQ,CAAC,YAAY,0CAAE,YAAY,mCAAI,IAAI,CAAC;QACzE,MAAM,KAAK,mBACT,IAAI,EAAE,QAAQ,CAAC,GAAG,IACf,QAAQ,CAAC,KAAK,CAClB,CAAC;QACF,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAErE,IAAI,oBAAoB,EAAE;YACxB,MAAM,oBAAoB,CAAC,UAAU,EAAE,CAAC;YACxC,OAAO,oBAAoB,CAAC;SAC7B;QAED,MAAMC,cAAY,GAAG,IAAIC,yBAAY,CACnC;YACE,OAAO,EAAE,oBAAoB;YAC7B,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,IAAI;YAClB,wBAAwB,EAAE,IAAI;YAC9B,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,IAAI;SAClB,EACD,eAAe,EACf,KAAK,EACL,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,QAAQ,CACd,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,GAAG,CAACD,cAAY,CAAC,GAAG,EAAEA,cAAY,CAAC,CAAC;QACvD,IAAI,CAAC,kBAAkB,CAACA,cAAY,CAAC,CAAC;QAEtC,MAAMA,cAAY,CAAC,UAAU,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAEA,cAAY,CAAC,CAAC;QAE7C,OAAOA,cAAY,CAAC;KACrB;;;;IAKM,MAAM,kBAAkB;QAC7B,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YAEjC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI;gBACtB,GAAG,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAEzC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACjE,CAAC,CAAC;YAEH,GAAG,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI;gBACxB,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAEtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;gBAErB,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;oBAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAC1B;gBAED,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAEjD,IAAI,CAAC,YAAY,EAAE;oBACjB,OAAO;iBACR;gBAED,IAAI,YAAY,CAAC,MAAM,KAAK,QAAQ,EAAE;oBACpC,YAAY,CAAC,UAAU,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;oBACpD,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;iBAC7C;gBAED,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;gBAC/C,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;aAC5C,CAAC,CAAC;YAEH,GAAG,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI;gBACxB,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAE3C,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACjE,CAAC,CAAC;YAEH,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC3D,MAAM,OAAO,GAAG,EAAE,CAAC;YAEnB,KAAK,MAAM,YAAY,IAAI,eAAe,EAAE;gBAC1C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;aACxF;YAED,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEnC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAE3B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAExB,GAAG,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAElE,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,YAAY,GAAG,wCAAwC,CAAC;YAE9D,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,KAAK,cAAc,EAAE;gBAC/D,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;aAChC;YAED,GAAG,CAAC,KAAK,CAAC,UAAU,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;YAE3C,MAAM,KAAK,CAAC;SACb;KACF;IAEM,MAAM,gBAAgB,CAAC,IAAI;QAChC,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QAE/C,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAC3B,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAiB,KAAK,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KACpH;IAEM,MAAM,eAAe,CAAC,GAAW;QACtC,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAiB,KAAK,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3G,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KAC3C;IAEM,MAAM,2BAA2B,CAAC,UAAkB;QACzD,MAAM,GAAG,GAAG,IAAIE,gBAAU,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC;aACjE,IAAI,CAAC,UAAU,CAAC;aAChB,KAAK,EAAE,CAAC;QACX,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAE3B,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAClC,MAAM,IAAI,GAAG;YACX,UAAU,EAAE,IAAI;YAChB,wBAAwB,EAAE,IAAI,CAAC,uBAAuB;YACtD,MAAM,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,KAAI,SAAS;YACjC,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY;YACvC,iBAAiB,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,kBAAkB;YAC3C,GAAG;SACJ,CAAC;QAEF,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;KACpD;IAEM,MAAM,gBAAgB,CAAC,GAAW;QACvC,MAAM,GAAG,GAAG,IAAIA,gBAAU,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC;aAC/D,IAAI,CAAC,GAAG,CAAC;aACT,KAAK,EAAE,CAAC;QACX,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAE3B,MAAM,IAAI,GAAG;YACX,UAAU,EAAE,IAAI;;YAEhB,MAAM,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,KAAI,SAAS;YACjC,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,GAAG,GAAG,UAAU;;YAEzB,GAAG;SACJ,CAAC;QAEF,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;KACpD;IAEO,MAAM,OAAO;QACnB,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;YACxC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,eAAe;YACtC,IAAI,EAAE,eAAe;SACtB,CAAC,CAAC;KACJ;IAEO,MAAM,cAAc,CAAC,IAAI,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO;YACL,KAAK;YACL,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrE,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SACtE,CAAC;KACH;IAEO,MAAM,mBAAmB,CAAC,MAA+B,EAAE,YAA0B,EAAE,IAAI;QACjG,MAAM,mBAAmB,GAAG,YAAY,CAAC,aAAa,EAAE,KAAK,SAAS,IAAI,MAAM,KAAK,YAAY,CAAC,aAAa,EAAE,CAAC;QAClH,MAAM,mBAAmB,GAAG,MAAM,KAAK,MAAM,IAAI,YAAY,CAAC,aAAa,EAAE,KAAK,MAAM,CAAC;QAEzF,IAAI,mBAAmB,IAAI,mBAAmB,IAAI,MAAM,KAAK,MAAM,EAAE;YACnE,GAAG,CAAC,KAAK,CAAC,kFAAkF,EAAE;gBAC5F,GAAG,EAAE,YAAY,CAAC,GAAG;gBACrB,IAAI,EAAE,IAAI,CAAC,MAAM;gBACjB,YAAY,EAAE,YAAY,CAAC,MAAM;aAClC,CAAC,CAAC;YAEH,OAAO;SACR;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,QAAQ,EAAE;YAChE,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAE1C,IAAI,UAAU,GAAQ,EAAE,CAAC;YAEzB,IAAI,OAAO,IAAI,CAAC,iBAAiB,KAAK,WAAW,EAAE;gBACjD,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;aACvD;YAED,IAAI,OAAO,IAAI,CAAC,wBAAwB,KAAK,WAAW,EAAE;gBACxD,UAAU,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC;aACrE;YAED,IAAI,CAACC,2BAAO,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE;gBAC5B,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAClC;YAED,YAAY,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC;gBAC7B,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;aAC/C,CAAC,CAAC;YAEH,OAAO;SACR;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,kBAAkB,IAAI,YAAY,CAAC,MAAM,KAAK,QAAQ,EAAE;YAC1E,YAAY,CAAC,UAAU,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;YACpD,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;YAE5C,OAAO;SACR;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,kBAAkB,EAAE;YACtC,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;YAEhC,OAAO;SACR;QAED,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5B;IAEO,MAAM,mBAAmB,CAAC,MAA+B,EAAE,GAAW,EAAE,IAAI;QAClF,GAAG,CAAC,KAAK,CAAC,iCAAiC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;QAExD,MAAMH,cAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;QAGjD,IAAIA,cAAY,EAAE;YAChB,GAAG,CAAC,KAAK,CACP,wCAAwCA,cAAY,CAAC,GAAG,YAAY;gBACpE,uCAAuCA,cAAY,CAAC,aAAa,EAAE,GAAG;gBACtE,uCAAuC,MAAM,EAAE,EAC/CA,cAAY,CACb,CAAC;YAEF,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAEA,cAAY,EAAE,IAAI,CAAC,CAAC;YAC3D,MAAMA,cAAY,CAAC,UAAU,EAAE,CAAC;YAEhC,OAAOA,cAAY,CAAC;SACrB;;QAGD,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACjE,GAAG,CAAC,KAAK,CAAC,gFAAgF,EAAE,GAAG,CAAC,CAAC;YACjG,OAAO;SACR;;QAGD,GAAG,CAAC,KAAK,CAAC,oEAAoE,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;QAE5F,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,IAAI,GAAG,EAAE,CAAC;QACpE,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,GAAG,QAAQ,WAAW;YAChC,YAAY,EAAE,GAAG,QAAQ,eAAe;SACzC,CAAC;QACF,MAAM,eAAe,GAAG,IAAIC,yBAAY,CACtC,IAAI,EACJ,GAAG,EACH,KAAK,EACL,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,QAAQ,CACd,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAE7C,MAAM,eAAe,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;QAEhD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;YAC5B,eAAe,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;SAClD;QAED,OAAO,eAAe,CAAC;KACxB;IAEO,MAAM,qBAAqB;QACjC,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,SAAS,GAAkB,IAAI,CAAC;QAEpC,GAAG;YACD,MAAM,GAAG,GAAG,IAAIC,gBAAU,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAErE,IAAI,SAAS,EAAE;gBACb,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;aACjC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9D,MAAM,qBAAqB,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAC3D,CAAC,sBAAsB,MAAM;gBAC3B,UAAU,EAAE,sBAAsB;gBAClC,WAAW,EAAE,sBAAsB,CAAC,gBAAgB;gBACpD,MAAM,EAAE,sBAAsB,CAAC,MAAM;gBACrC,OAAO,EAAE,sBAAsB,CAAC,YAAY,CAAC,YAAY;gBACzD,QAAQ,EAAE,sBAAsB,CAAC,YAAY,CAAC,QAAQ;gBACtD,MAAM,EAAE,GAAG,sBAAsB,CAAC,gBAAgB,SAAS;gBAC3D,wBAAwB,EAAE,sBAAsB,CAAC,uBAAuB;gBACxE,iBAAiB,EAAE,sBAAsB,CAAC,kBAAkB;aAC7D,CAAC,CACH,CAAC;YAEF,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YAC1C,aAAa,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,qBAAqB,CAAC,CAAC;SAC9D,QAAQ,SAAS,EAAE;QAEpB,OAAO,aAAa,CAAC;KACtB;IAEO,sBAAsB,CAAC,GAAW;QACxC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjD,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;SAChD;KACF;IAEO,kBAAkB,CAAC,YAAY;QACrC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAChF,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAkC,KAAK,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3G,YAAY,CAAC,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC;QAChF,YAAY,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC5E,YAAY,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,IAAiC,KAAK,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC;QACpH,YAAY,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;QACtE,YAAY,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAA6B,KAAK,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC;QACxG,YAAY,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAC1E,YAAY,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;QACxE,YAAY,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;KACrE;;;;;;"}
|
@@ -130,7 +130,7 @@ This software includes platform.js under the following license.
|
|
130
130
|
|
131
131
|
Object.defineProperty(exports, '__esModule', { value: true });
|
132
132
|
|
133
|
-
var version = "2.1.0-rc.
|
133
|
+
var version = "2.1.0-rc.1";
|
134
134
|
|
135
135
|
exports.version = version;
|
136
136
|
//# sourceMappingURL=package.json.js.map
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@twilio/conversations",
|
3
|
-
"version": "2.1.0-rc.
|
3
|
+
"version": "2.1.0-rc.1",
|
4
4
|
"description": "Twilio Conversations client library",
|
5
5
|
"main": "./builds/lib.js",
|
6
6
|
"browser": "./builds/browser.js",
|
@@ -34,11 +34,11 @@
|
|
34
34
|
},
|
35
35
|
"dependencies": {
|
36
36
|
"@babel/runtime": "^7.14.5",
|
37
|
-
"@twilio/declarative-type-validator": "^0.1.10
|
38
|
-
"@twilio/mcs-client": "^0.5.2
|
39
|
-
"@twilio/notifications": "^1.0.4
|
40
|
-
"@twilio/operation-retrier": "^4.0.6
|
41
|
-
"@twilio/replay-event-emitter": "^0.2.3
|
37
|
+
"@twilio/declarative-type-validator": "^0.1.10",
|
38
|
+
"@twilio/mcs-client": "^0.5.2",
|
39
|
+
"@twilio/notifications": "^1.0.4",
|
40
|
+
"@twilio/operation-retrier": "^4.0.6",
|
41
|
+
"@twilio/replay-event-emitter": "^0.2.3",
|
42
42
|
"core-js": "^3.17.3",
|
43
43
|
"glob": "^7.1.7",
|
44
44
|
"iso8601-duration": "=1.2.0",
|
@@ -46,8 +46,8 @@
|
|
46
46
|
"lodash.isequal": "^4.5.0",
|
47
47
|
"loglevel": "^1.6.6",
|
48
48
|
"platform": "^1.3.6",
|
49
|
-
"twilio-sync": "^3.0.6
|
50
|
-
"twilsock": "^0.12.1
|
49
|
+
"twilio-sync": "^3.0.6",
|
50
|
+
"twilsock": "^0.12.1",
|
51
51
|
"uuid": "^3.4.0"
|
52
52
|
},
|
53
53
|
"devDependencies": {
|