@webex/calling 3.5.0 → 3.6.0-next.2

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.
Files changed (106) hide show
  1. package/dist/CallHistory/CallHistory.js +195 -67
  2. package/dist/CallHistory/CallHistory.js.map +1 -1
  3. package/dist/CallHistory/CallHistory.test.js +331 -108
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -1
  5. package/dist/CallHistory/callHistoryFixtures.js +25 -1
  6. package/dist/CallHistory/callHistoryFixtures.js.map +1 -1
  7. package/dist/CallHistory/constants.js +4 -1
  8. package/dist/CallHistory/constants.js.map +1 -1
  9. package/dist/CallHistory/types.js.map +1 -1
  10. package/dist/CallingClient/CallingClient.js +2 -2
  11. package/dist/CallingClient/CallingClient.js.map +1 -1
  12. package/dist/CallingClient/CallingClient.test.js +2 -2
  13. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  14. package/dist/CallingClient/calling/CallerId/index.js +14 -5
  15. package/dist/CallingClient/calling/CallerId/index.js.map +1 -1
  16. package/dist/CallingClient/calling/CallerId/index.test.js +6 -6
  17. package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -1
  18. package/dist/CallingClient/calling/call.js +434 -348
  19. package/dist/CallingClient/calling/call.js.map +1 -1
  20. package/dist/CallingClient/calling/call.test.js +516 -386
  21. package/dist/CallingClient/calling/call.test.js.map +1 -1
  22. package/dist/CallingClient/calling/callManager.js +6 -6
  23. package/dist/CallingClient/calling/callManager.js.map +1 -1
  24. package/dist/CallingClient/calling/callManager.test.js +3 -3
  25. package/dist/CallingClient/calling/callManager.test.js.map +1 -1
  26. package/dist/CallingClient/calling/types.js +6 -1
  27. package/dist/CallingClient/calling/types.js.map +1 -1
  28. package/dist/CallingClient/constants.js +2 -3
  29. package/dist/CallingClient/constants.js.map +1 -1
  30. package/dist/CallingClient/line/index.js +14 -7
  31. package/dist/CallingClient/line/index.js.map +1 -1
  32. package/dist/CallingClient/line/line.test.js +84 -22
  33. package/dist/CallingClient/line/line.test.js.map +1 -1
  34. package/dist/CallingClient/line/types.js.map +1 -1
  35. package/dist/CallingClient/registration/register.js +79 -59
  36. package/dist/CallingClient/registration/register.js.map +1 -1
  37. package/dist/CallingClient/registration/register.test.js +1 -1
  38. package/dist/CallingClient/registration/register.test.js.map +1 -1
  39. package/dist/CallingClient/types.js.map +1 -1
  40. package/dist/Contacts/ContactsClient.js +14 -14
  41. package/dist/Contacts/ContactsClient.js.map +1 -1
  42. package/dist/Events/types.js +2 -0
  43. package/dist/Events/types.js.map +1 -1
  44. package/dist/common/Utils.js +18 -13
  45. package/dist/common/Utils.js.map +1 -1
  46. package/dist/common/Utils.test.js +97 -0
  47. package/dist/common/Utils.test.js.map +1 -1
  48. package/dist/common/constants.js +4 -3
  49. package/dist/common/constants.js.map +1 -1
  50. package/dist/common/types.js +1 -0
  51. package/dist/common/types.js.map +1 -1
  52. package/dist/module/CallHistory/CallHistory.js +64 -2
  53. package/dist/module/CallHistory/callHistoryFixtures.js +24 -0
  54. package/dist/module/CallHistory/constants.js +3 -0
  55. package/dist/module/CallingClient/CallingClient.js +1 -1
  56. package/dist/module/CallingClient/calling/CallerId/index.js +6 -6
  57. package/dist/module/CallingClient/calling/call.js +66 -22
  58. package/dist/module/CallingClient/calling/callManager.js +5 -5
  59. package/dist/module/CallingClient/calling/types.js +5 -0
  60. package/dist/module/CallingClient/constants.js +1 -2
  61. package/dist/module/CallingClient/line/index.js +14 -8
  62. package/dist/module/CallingClient/registration/register.js +12 -4
  63. package/dist/module/Contacts/ContactsClient.js +2 -2
  64. package/dist/module/Events/types.js +2 -0
  65. package/dist/module/common/Utils.js +12 -5
  66. package/dist/module/common/constants.js +3 -2
  67. package/dist/module/common/types.js +1 -0
  68. package/dist/types/CallHistory/CallHistory.d.ts +4 -2
  69. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  70. package/dist/types/CallHistory/callHistoryFixtures.d.ts +6 -2
  71. package/dist/types/CallHistory/callHistoryFixtures.d.ts.map +1 -1
  72. package/dist/types/CallHistory/constants.d.ts +3 -0
  73. package/dist/types/CallHistory/constants.d.ts.map +1 -1
  74. package/dist/types/CallHistory/types.d.ts +9 -0
  75. package/dist/types/CallHistory/types.d.ts.map +1 -1
  76. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  77. package/dist/types/CallingClient/calling/CallerId/index.d.ts.map +1 -1
  78. package/dist/types/CallingClient/calling/call.d.ts +7 -5
  79. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  80. package/dist/types/CallingClient/calling/callManager.d.ts +1 -1
  81. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  82. package/dist/types/CallingClient/calling/types.d.ts +6 -2
  83. package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
  84. package/dist/types/CallingClient/constants.d.ts +1 -2
  85. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  86. package/dist/types/CallingClient/line/index.d.ts +3 -2
  87. package/dist/types/CallingClient/line/index.d.ts.map +1 -1
  88. package/dist/types/CallingClient/line/types.d.ts +1 -1
  89. package/dist/types/CallingClient/line/types.d.ts.map +1 -1
  90. package/dist/types/CallingClient/registration/register.d.ts +4 -2
  91. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  92. package/dist/types/CallingClient/types.d.ts +1 -0
  93. package/dist/types/CallingClient/types.d.ts.map +1 -1
  94. package/dist/types/Contacts/ContactsClient.d.ts +1 -1
  95. package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
  96. package/dist/types/Events/types.d.ts +15 -2
  97. package/dist/types/Events/types.d.ts.map +1 -1
  98. package/dist/types/Voicemail/UcmBackendConnector.d.ts +1 -1
  99. package/dist/types/Voicemail/WxCallBackendConnector.d.ts +1 -1
  100. package/dist/types/common/Utils.d.ts +2 -2
  101. package/dist/types/common/Utils.d.ts.map +1 -1
  102. package/dist/types/common/constants.d.ts +1 -0
  103. package/dist/types/common/constants.d.ts.map +1 -1
  104. package/dist/types/common/types.d.ts +2 -1
  105. package/dist/types/common/types.d.ts.map +1 -1
  106. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_types","_SDKConnector","_interopRequireDefault","_Logger","_constants2","_types2","_Utils","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ContactsClient","exports","webex","logger","_classCallCheck2","sdkConnector","SDKConnector","getWebex","setWebex","encryptionKeyUrl","groups","undefined","contacts","defaultGroupId","log","setLogger","level","CONTACTS_FILE","_createClass2","key","value","_decryptContactDetail","_asyncToGenerator2","_regenerator","mark","_callee","contactDetails","_this","decryptedContactDetail","decryptedValues","wrap","_callee$","_context","prev","next","_toConsumableArray2","_promise","all","map","detail","internal","encryption","decryptText","sent","decryptedValue","index","abrupt","stop","decryptContactDetail","_x","_x2","_encryptContactDetail","_callee2","_this2","encryptedContactDetail","encryptedValues","_callee2$","_context2","encryptText","encryptedValue","encryptContactDetail","_x3","_x4","_encryptContact","_callee5","contact","_this3","encryptedContact","encryptionPromises","encryptedFieldsList","_callee5$","_context5","_values","encryptedFields","_ref","_callee4","field","plaintextAddressInfo","encryptedAddressInfo","encryptedAddressInfoPromises","plainTextDetails","encryptedDetails","_callee4$","_context4","t0","ADDRESS_INFO","EMAILS","PHONE_NUMBERS","SIP_ADDRESSES","addressInfo","_entries","_ref3","_callee3","_ref2","_ref4","_callee3$","_context3","_slicedToArray2","t1","_x7","t2","fromEntries","call","includes","_x6","_ref5","_ref6","encryptContact","_x5","_decryptContact","_callee8","_this4","decryptedContact","decryptionPromises","decryptedFieldsList","_callee8$","_context8","_ref7","_callee7","decryptedAddressInfo","decryptedAddressInfoPromises","decryptedDetails","_callee7$","_context7","_ref9","_callee6","_ref8","_ref10","_callee6$","_context6","_x10","_x9","_ref11","_ref12","decryptContact","_x8","resolveCloudContacts","contactsDataMap","inputList","loggerContext","file","method","finalContactList","resolvedList","Resources","item","id","isResolved","some","listItem","contactId","resolved","n","_filteredContact$name","_filteredContact$name2","_filteredContact$SCIM","_filteredContact$SCIM2","_filteredContact$SCIM3","filteredContact","displayName","emails","phoneNumbers","photos","sipAddresses","SCIM_WEBEXIDENTITY_USER","firstName","name","givenName","lastName","familyName","manager","SCIM_ENTERPRISE_USER","department","avatarURL","_contactsDataMap$inpu","contactType","avatarUrlDomain","ownerId","cloudContact","error","warn","_getContacts","_callee11","_this5","contactList","cloudContactsMap","response","responseBody","contactIdList","query","result","resolvedContacts","contactResponse","errorInfo","errorStatus","_callee11$","_context11","request","uri","concat","services","_serviceUrls","contactsService","ENCRYPT_FILTER","USERS","CONTACT_FILTER","HTTP_METHODS","GET","body","Error","_ref13","_callee9","_callee9$","_context9","ContactType","CUSTOM","CLOUD","_x11","_keys","SCIM_ID_FILTER","join","OR","scimQuery","_ref14","_callee10","group","idx","_callee10$","_context10","_x12","_x13","statusCode","Number","STATUS_CODE","data","message","SUCCESS_MESSAGE","serviceErrorCodeHandler","getContacts","_createNewEncryptionKeyUrl","_callee12","unboundedKeyUri","unboundedKeys","_callee12$","_context12","createNewEncryptionKeyUrl","info","kms","createUnboundKeys","count","createResource","keyUris","_fetchEncryptionKeyUrl","_callee13","_response$data$group","_response$data$group2","_callee13$","_context13","DEFAULT_GROUP_NAME","fetchEncryptionKeyUrl","createContactGroup","groupId","_fetchDefaultGroup","_callee14","i","_callee14$","_context14","fetchDefaultGroup","_createContactGroup","_callee15","groupType","encryptionKeyUrlFinal","isExistingGroup","encryptedDisplayName","groupInfo","_this$groups","_callee15$","_context15","find","FAILURE_MESSAGE","schemas","CONTACTS_SCHEMA","GroupType","NORMAL","GROUP_FILTER","POST","_x14","_x15","_x16","_deleteContactGroup","_callee16","_this$groups2","_this$groups4","groupToDelete","_this$groups3","_callee16$","_context16","deleteContactGroup","DELETE","findIndex","splice","_x17","_createContact","_callee17","contactInfo","requestBody","_encryptedContact","newContact","res","resolvedContact","_this$contacts","_this$contacts2","_callee17$","_context17","createContact","_x18","_deleteContact","_callee18","_this$contacts3","contactToDelete","_this$contacts4","_callee18$","_context18","deleteContact","_x19","getSDKConnector","createContactsClient"],"sources":["ContactsClient.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop */\nimport {\n FAILURE_MESSAGE,\n SCIM_ENTERPRISE_USER,\n SCIM_WEBEXIDENTITY_USER,\n STATUS_CODE,\n SUCCESS_MESSAGE,\n} from '../common/constants';\nimport {HTTP_METHODS, WebexRequestPayload, ContactDetail, SCIMListResponse} from '../common/types';\nimport {LoggerInterface} from '../Voicemail/types';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport SDKConnector from '../SDKConnector';\n\nimport log from '../Logger';\nimport {\n CONTACTS_FILE,\n CONTACTS_SCHEMA,\n CONTACT_FILTER,\n DEFAULT_GROUP_NAME,\n ENCRYPT_FILTER,\n GROUP_FILTER,\n OR,\n SCIM_ID_FILTER,\n USERS,\n encryptedFields,\n} from './constants';\nimport {\n Contact,\n ContactIdContactInfo,\n ContactList,\n ContactResponse,\n ContactType,\n IContacts,\n ContactGroup,\n GroupType,\n} from './types';\n\nimport {scimQuery, serviceErrorCodeHandler} from '../common/Utils';\n\n/**\n * `ContactsClient` module is designed to offer a set of APIs for retrieving and updating contacts and groups from the contacts-service.\n *\n * This code snippet demonstrates how to create an instance of `ContactClient` using webex and logger.\n *\n * Example\n * ```javascript\n * const contactClient = createContactsClient(webex, logger);\n * ```\n */\nexport class ContactsClient implements IContacts {\n private sdkConnector: ISDKConnector;\n\n private encryptionKeyUrl: string;\n\n private webex: WebexSDK;\n\n private groups: ContactGroup[] | undefined;\n\n private contacts: Contact[] | undefined;\n\n private defaultGroupId: string;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n this.sdkConnector = SDKConnector;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n\n this.webex = this.sdkConnector.getWebex();\n\n this.encryptionKeyUrl = '';\n this.groups = undefined;\n this.contacts = undefined;\n this.defaultGroupId = '';\n\n log.setLogger(logger.level, CONTACTS_FILE);\n }\n\n /**\n * Decrypt emails, phoneNumbers, sipAddresses.\n */\n private async decryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const decryptedContactDetail = [...contactDetails];\n\n const decryptedValues = await Promise.all(\n decryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.decryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n decryptedValues.forEach((decryptedValue, index) => {\n decryptedContactDetail[index].value = decryptedValue;\n });\n\n return decryptedContactDetail;\n }\n\n /**\n * Encrypt emails, phoneNumbers, sipAddresses.\n *\n */\n private async encryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const encryptedContactDetail = [...contactDetails];\n\n const encryptedValues = await Promise.all(\n encryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.encryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n encryptedValues.forEach((encryptedValue, index) => {\n encryptedContactDetail[index].value = encryptedValue;\n });\n\n return encryptedContactDetail;\n }\n\n /**\n * Encrypts a given contact.\n */\n private async encryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const encryptedContact: Contact = {...contact};\n\n const encryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = encryptedContact.addressInfo;\n let encryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const encryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.encryptText(encryptionKeyUrl, value),\n ]\n );\n\n encryptedAddressInfo = Object.fromEntries(\n await Promise.all(encryptedAddressInfoPromises)\n );\n }\n\n return [field, encryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = encryptedContact[field];\n let encryptedDetails;\n\n if (plainTextDetails) {\n encryptedDetails = await this.encryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, encryptedDetails];\n }\n default: {\n let encryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && encryptedContact[field]) {\n encryptedValue = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrl,\n encryptedContact[field]\n );\n }\n\n return [field, encryptedValue];\n }\n }\n });\n\n const encryptedFieldsList = await Promise.all(encryptionPromises);\n\n encryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n encryptedContact[field] = value;\n }\n });\n\n return encryptedContact;\n }\n\n /**\n * Decrypts a given contact.\n */\n private async decryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const decryptedContact: Contact = {...contact};\n\n const decryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = decryptedContact.addressInfo;\n let decryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const decryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.decryptText(encryptionKeyUrl, value),\n ]\n );\n\n decryptedAddressInfo = Object.fromEntries(\n await Promise.all(decryptedAddressInfoPromises)\n );\n }\n\n return [field, decryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = decryptedContact[field];\n let decryptedDetails;\n\n if (plainTextDetails) {\n decryptedDetails = await this.decryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, decryptedDetails];\n }\n default: {\n let decryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && decryptedContact[field]) {\n decryptedValue = await this.webex.internal.encryption.decryptText(\n encryptionKeyUrl,\n decryptedContact[field]\n );\n }\n\n return [field, decryptedValue];\n }\n }\n });\n\n const decryptedFieldsList = await Promise.all(decryptionPromises);\n\n decryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n decryptedContact[field] = value;\n }\n });\n\n return decryptedContact;\n }\n\n private resolveCloudContacts(\n contactsDataMap: ContactIdContactInfo,\n inputList: SCIMListResponse\n ): Contact[] | null {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'resolveCloudContacts',\n };\n const finalContactList: Contact[] = [];\n const resolvedList: string[] = [];\n\n try {\n inputList.Resources.forEach((item) => {\n resolvedList.push(item.id);\n });\n\n Object.values(contactsDataMap).forEach((item) => {\n const isResolved = resolvedList.some((listItem) => listItem === item.contactId);\n if (!isResolved) {\n finalContactList.push({...item, resolved: false});\n }\n });\n\n for (let n = 0; n < inputList.Resources.length; n += 1) {\n const filteredContact = inputList.Resources[n];\n const {displayName, emails, phoneNumbers, photos} = filteredContact;\n let sipAddresses;\n if (filteredContact[SCIM_WEBEXIDENTITY_USER]) {\n sipAddresses = filteredContact[SCIM_WEBEXIDENTITY_USER].sipAddresses;\n }\n const firstName = filteredContact.name?.givenName;\n const lastName = filteredContact.name?.familyName;\n const manager = filteredContact[SCIM_ENTERPRISE_USER]?.manager?.displayName;\n const department = filteredContact[SCIM_ENTERPRISE_USER]?.department;\n const avatarURL = photos?.length ? photos[0].value : '';\n\n const {contactType, avatarUrlDomain, encryptionKeyUrl, ownerId, groups} =\n contactsDataMap[inputList.Resources[n].id];\n\n const cloudContact = {\n avatarUrlDomain,\n avatarURL,\n contactId: inputList.Resources[n].id,\n contactType,\n department,\n displayName,\n emails,\n encryptionKeyUrl,\n firstName,\n groups,\n lastName,\n manager,\n ownerId,\n phoneNumbers,\n sipAddresses,\n resolved: true,\n };\n\n finalContactList.push(cloudContact);\n }\n } catch (error: any) {\n log.warn('Error occurred while parsing resolved contacts', loggerContext);\n\n return null;\n }\n\n return finalContactList;\n }\n\n /**\n * Returns list of contacts.\n */\n public async getContacts(): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'getContacts',\n };\n\n const contactList: Contact[] = [];\n const cloudContactsMap: ContactIdContactInfo = {};\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.GET,\n });\n\n const responseBody = response.body as ContactList;\n\n if (!responseBody) {\n throw new Error(`${response}`);\n }\n\n const {contacts, groups} = responseBody;\n\n contacts.map(async (contact) => {\n if (contact.contactType === ContactType.CUSTOM) {\n const decryptedContact = await this.decryptContact(contact);\n\n contactList.push(decryptedContact);\n } else if (contact.contactType === ContactType.CLOUD && contact.contactId) {\n cloudContactsMap[contact.contactId] = contact;\n }\n });\n\n // Resolve cloud contacts\n if (Object.keys(cloudContactsMap).length) {\n const contactIdList = Object.keys(cloudContactsMap);\n const query = contactIdList.map((item) => `${SCIM_ID_FILTER} \"${item}\"`).join(OR);\n const result = await scimQuery(query);\n const resolvedContacts = this.resolveCloudContacts(\n cloudContactsMap,\n result.body as SCIMListResponse\n );\n if (resolvedContacts) {\n resolvedContacts.map((item) => contactList.push(item));\n }\n }\n\n await Promise.all(\n groups.map(async (group, idx) => {\n groups[idx].displayName = await this.webex.internal.encryption.decryptText(\n group.encryptionKeyUrl,\n group.displayName\n );\n })\n );\n\n this.groups = groups;\n this.contacts = contactList;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contacts: contactList,\n groups,\n },\n message: SUCCESS_MESSAGE,\n };\n\n return contactResponse;\n } catch (err: unknown) {\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a new KMS Resource Object (KRO) and Content Key (CK) which is used for encryption.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async createNewEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createNewEncryptionKeyUrl.name,\n };\n\n let unboundedKeyUri = '';\n\n log.info('Requesting kms for a new KRO and key', loggerContext);\n const unboundedKeys = await this.webex.internal.encryption.kms.createUnboundKeys({count: 1});\n\n unboundedKeyUri = unboundedKeys[0].uri;\n this.webex.internal.encryption.kms.createResource({keyUris: [unboundedKeyUri]});\n\n return unboundedKeyUri;\n }\n\n /**\n * Fetches the encryptionKeyUrl from one of the groups. Creates a new key and default group if there is no data.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async fetchEncryptionKeyUrl(): Promise<string> {\n if (this.encryptionKeyUrl) {\n return this.encryptionKeyUrl;\n }\n // istanbul ignore else\n if (this.groups === undefined) {\n this.getContacts();\n }\n // istanbul ignore else\n if (this.groups && this.groups.length) {\n /** Use the encryptionKeyUrl of any one of the groups */\n return this.groups[0].encryptionKeyUrl;\n }\n\n this.encryptionKeyUrl = await this.createNewEncryptionKeyUrl();\n log.info(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_FILE,\n method: this.fetchEncryptionKeyUrl.name,\n });\n const response: ContactResponse = await this.createContactGroup(\n DEFAULT_GROUP_NAME,\n this.encryptionKeyUrl\n );\n\n if (response.data.group?.groupId) {\n this.defaultGroupId = response.data.group?.groupId;\n }\n\n return this.encryptionKeyUrl;\n }\n\n /**\n * Fetches a default group.\n *\n * @returns GroupId of default group.\n */\n private async fetchDefaultGroup(): Promise<string> {\n if (this.defaultGroupId) {\n return this.defaultGroupId;\n }\n\n /* Check the groups list and determine the defaultGroupId */\n if (this.groups && this.groups.length) {\n for (let i = 0; i < this.groups.length; i += 1) {\n if (this.groups[i].displayName === DEFAULT_GROUP_NAME) {\n this.defaultGroupId = this.groups[i].groupId;\n\n return this.defaultGroupId;\n }\n }\n }\n\n log.info('No default group found.', {\n file: CONTACTS_FILE,\n method: this.fetchDefaultGroup.name,\n });\n\n const response: ContactResponse = await this.createContactGroup(DEFAULT_GROUP_NAME);\n\n const {group} = response.data;\n\n if (group) {\n return group.groupId;\n }\n\n return '';\n }\n\n /**\n * Creates a personal contact group.\n * Also creates a KRO, if there aren't any groups.\n * @param displayName - Name of the group to create.\n * @param encryptionKeyUrl - EncryptionKeyUrl to encrypt the displayName.\n * @param groupType - Type of the group to create.\n */\n public async createContactGroup(\n displayName: string,\n encryptionKeyUrl?: string,\n groupType?: GroupType\n ): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createContactGroup.name,\n };\n\n log.info(`Creating contact group ${displayName}`, loggerContext);\n\n const encryptionKeyUrlFinal = encryptionKeyUrl || (await this.fetchEncryptionKeyUrl());\n\n if (this.groups === undefined) {\n await this.getContacts();\n }\n\n if (this.groups && this.groups.length) {\n const isExistingGroup = this.groups.find((group) => {\n return group.displayName === displayName;\n });\n\n if (isExistingGroup) {\n log.warn(`Group name ${displayName} already exists.`, loggerContext);\n\n return {\n statusCode: 400 as number,\n data: {error: 'Group displayName already exists'},\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const encryptedDisplayName = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrlFinal,\n displayName\n );\n\n const groupInfo = {\n schemas: CONTACTS_SCHEMA,\n displayName: encryptedDisplayName,\n groupType: groupType || GroupType.NORMAL,\n encryptionKeyUrl: encryptionKeyUrlFinal,\n };\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}`,\n method: HTTP_METHODS.POST,\n body: groupInfo,\n });\n\n const group = response.body as ContactGroup;\n\n group.displayName = displayName;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n group,\n },\n message: SUCCESS_MESSAGE,\n };\n\n this.groups?.push(group);\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn('Unable to create contact group.', loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Deletes a contact group.\n * @param groupId - GroupId of the group to delete.\n */\n public async deleteContactGroup(groupId: string) {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.deleteContactGroup.name,\n };\n\n try {\n log.info(`Deleting contact group: ${groupId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}/${groupId}`,\n method: HTTP_METHODS.DELETE,\n });\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const groupToDelete = this.groups?.findIndex((group) => group.groupId === groupId);\n\n if (groupToDelete !== undefined && groupToDelete !== -1) {\n this.groups?.splice(groupToDelete, 1);\n }\n\n if (!this.groups?.length) {\n this.defaultGroupId = '';\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn(`Unable to delete contact group ${groupId}`, loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a custom contact.\n * @param contactInfo - Contact object to create.\n */\n public async createContact(contactInfo: Contact): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createContact.name,\n };\n\n log.info(`Request to create contact: contactType: ${contactInfo.contactType}`, loggerContext);\n\n try {\n const contact = {...contactInfo};\n\n if (!contact.encryptionKeyUrl) {\n contact.encryptionKeyUrl = await this.fetchEncryptionKeyUrl();\n }\n\n if (!contact.groups || contact.groups.length === 0) {\n /** Fetch the groupId for the default group if not create */\n const defaultGroupId = await this.fetchDefaultGroup();\n\n contact.groups = [defaultGroupId];\n }\n\n contact.schemas = CONTACTS_SCHEMA;\n let requestBody = {};\n\n switch (contact.contactType) {\n case ContactType.CUSTOM: {\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n case ContactType.CLOUD: {\n if (!contact.contactId) {\n return {\n statusCode: 400 as number,\n data: {\n error: 'contactId is required for contactType:CLOUD.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n default: {\n return {\n statusCode: 400 as number,\n data: {\n error: 'Unknown contactType received.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.POST,\n body: requestBody,\n });\n\n const newContact = response.body as Contact;\n\n contact.contactId = newContact.contactId;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contact,\n },\n message: SUCCESS_MESSAGE,\n };\n\n if (contact.contactType === ContactType.CLOUD && newContact.contactId) {\n const query = `${SCIM_ID_FILTER} \"${newContact.contactId}\"`;\n const res = await scimQuery(query);\n const resolvedContact = this.resolveCloudContacts(\n Object.fromEntries([[newContact.contactId, newContact]]) as ContactIdContactInfo,\n res.body as SCIMListResponse\n );\n if (resolvedContact) {\n this.contacts?.push(resolvedContact[0]);\n }\n } else {\n this.contacts?.push(contact);\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn('Failed to create contact.', {\n file: CONTACTS_FILE,\n method: this.createContact.name,\n });\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Delete a contact.\n * @param contactId - ContactId of the contact to delete.\n */\n public async deleteContact(contactId: string): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.deleteContact.name,\n };\n\n try {\n log.info(`Deleting contact : ${contactId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}/${contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const contactToDelete = this.contacts?.findIndex(\n (contact) => contact.contactId === contactId\n );\n\n if (contactToDelete !== undefined && contactToDelete !== -1) {\n this.contacts?.splice(contactToDelete, 1);\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn(`Unable to delete contact ${contactId}`, loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * @ignore\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n}\n\n/**\n * Creates a ContactsClient instance\n *\n * @param {WebexSDK} webex - `Webex SDK`instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createContactsClient = (webex: WebexSDK, logger: LoggerInterface): IContacts =>\n new ContactsClient(webex, logger);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_constants","require","_types","_SDKConnector","_interopRequireDefault","_Logger","_constants2","_types2","_Utils","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ContactsClient","exports","webex","logger","_classCallCheck2","sdkConnector","SDKConnector","getWebex","setWebex","encryptionKeyUrl","groups","undefined","contacts","defaultGroupId","log","setLogger","level","CONTACTS_FILE","_createClass2","key","value","_decryptContactDetail","_asyncToGenerator2","_regenerator","mark","_callee","contactDetails","_this","decryptedContactDetail","decryptedValues","wrap","_callee$","_context","prev","next","_toConsumableArray2","_promise","all","map","detail","internal","encryption","decryptText","sent","decryptedValue","index","abrupt","stop","decryptContactDetail","_x","_x2","_encryptContactDetail","_callee2","_this2","encryptedContactDetail","encryptedValues","_callee2$","_context2","encryptText","encryptedValue","encryptContactDetail","_x3","_x4","_encryptContact","_callee5","contact","_this3","encryptedContact","encryptionPromises","encryptedFieldsList","_callee5$","_context5","_values","encryptedFields","_ref","_callee4","field","plaintextAddressInfo","encryptedAddressInfo","encryptedAddressInfoPromises","plainTextDetails","encryptedDetails","_callee4$","_context4","t0","ADDRESS_INFO","EMAILS","PHONE_NUMBERS","SIP_ADDRESSES","addressInfo","_entries","_ref3","_callee3","_ref2","_ref4","_callee3$","_context3","_slicedToArray2","t1","_x7","t2","fromEntries","call","includes","_x6","_ref5","_ref6","encryptContact","_x5","_decryptContact","_callee8","_this4","decryptedContact","decryptionPromises","decryptedFieldsList","_callee8$","_context8","_ref7","_callee7","decryptedAddressInfo","decryptedAddressInfoPromises","decryptedDetails","_callee7$","_context7","_ref9","_callee6","_ref8","_ref10","_callee6$","_context6","_x10","_x9","_ref11","_ref12","decryptContact","_x8","resolveCloudContacts","contactsDataMap","inputList","loggerContext","file","method","finalContactList","resolvedList","Resources","item","id","isResolved","some","listItem","contactId","resolved","n","_filteredContact$name","_filteredContact$name2","_filteredContact$SCIM","_filteredContact$SCIM2","_filteredContact$SCIM3","filteredContact","displayName","emails","phoneNumbers","photos","sipAddresses","SCIM_WEBEXIDENTITY_USER","firstName","name","givenName","lastName","familyName","manager","SCIM_ENTERPRISE_USER","department","avatarURL","_contactsDataMap$inpu","contactType","avatarUrlDomain","ownerId","cloudContact","error","warn","_getContacts","_callee11","_this5","contactList","cloudContactsMap","response","responseBody","contactIdList","query","result","resolvedContacts","contactResponse","errorInfo","errorStatus","_callee11$","_context11","request","uri","concat","services","_serviceUrls","contactsService","ENCRYPT_FILTER","USERS","CONTACT_FILTER","HTTP_METHODS","GET","body","Error","_ref13","_callee9","_callee9$","_context9","ContactType","CUSTOM","CLOUD","_x11","_keys","SCIM_ID_FILTER","join","OR","scimQuery","_ref14","_callee10","group","idx","_callee10$","_context10","_x12","_x13","statusCode","Number","STATUS_CODE","data","message","SUCCESS_MESSAGE","serviceErrorCodeHandler","getContacts","_createNewEncryptionKeyUrl","_callee12","unboundedKeyUri","unboundedKeys","_callee12$","_context12","createNewEncryptionKeyUrl","info","kms","createUnboundKeys","count","createResource","keyUris","_fetchEncryptionKeyUrl","_callee13","_response$data$group","_response$data$group2","_callee13$","_context13","DEFAULT_GROUP_NAME","fetchEncryptionKeyUrl","createContactGroup","groupId","_fetchDefaultGroup","_callee14","i","_callee14$","_context14","fetchDefaultGroup","_createContactGroup","_callee15","groupType","encryptionKeyUrlFinal","isExistingGroup","encryptedDisplayName","groupInfo","_this$groups","_callee15$","_context15","find","FAILURE_MESSAGE","schemas","CONTACTS_SCHEMA","GroupType","NORMAL","GROUP_FILTER","POST","_x14","_x15","_x16","_deleteContactGroup","_callee16","_this$groups2","_this$groups4","groupToDelete","_this$groups3","_callee16$","_context16","deleteContactGroup","DELETE","findIndex","splice","_x17","_createContact","_callee17","contactInfo","requestBody","_encryptedContact","newContact","res","resolvedContact","_this$contacts","_this$contacts2","_callee17$","_context17","createContact","_x18","_deleteContact","_callee18","_this$contacts3","contactToDelete","_this$contacts4","_callee18$","_context18","deleteContact","_x19","getSDKConnector","createContactsClient"],"sources":["ContactsClient.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop */\nimport {\n FAILURE_MESSAGE,\n SCIM_ENTERPRISE_USER,\n SCIM_WEBEXIDENTITY_USER,\n STATUS_CODE,\n SUCCESS_MESSAGE,\n} from '../common/constants';\nimport {HTTP_METHODS, WebexRequestPayload, ContactDetail, SCIMListResponse} from '../common/types';\nimport {LoggerInterface} from '../Voicemail/types';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport SDKConnector from '../SDKConnector';\n\nimport log from '../Logger';\nimport {\n CONTACTS_FILE,\n CONTACTS_SCHEMA,\n CONTACT_FILTER,\n DEFAULT_GROUP_NAME,\n ENCRYPT_FILTER,\n GROUP_FILTER,\n OR,\n SCIM_ID_FILTER,\n USERS,\n encryptedFields,\n} from './constants';\nimport {\n Contact,\n ContactIdContactInfo,\n ContactList,\n ContactResponse,\n ContactType,\n IContacts,\n ContactGroup,\n GroupType,\n} from './types';\n\nimport {scimQuery, serviceErrorCodeHandler} from '../common/Utils';\n\n/**\n * `ContactsClient` module is designed to offer a set of APIs for retrieving and updating contacts and groups from the contacts-service.\n *\n * This code snippet demonstrates how to create an instance of `ContactClient` using webex and logger.\n *\n * Example\n * ```javascript\n * const contactClient = createContactsClient(webex, logger);\n * ```\n */\nexport class ContactsClient implements IContacts {\n private sdkConnector: ISDKConnector;\n\n private encryptionKeyUrl: string;\n\n private webex: WebexSDK;\n\n private groups: ContactGroup[] | undefined;\n\n private contacts: Contact[] | undefined;\n\n private defaultGroupId: string;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n this.sdkConnector = SDKConnector;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n\n this.webex = this.sdkConnector.getWebex();\n\n this.encryptionKeyUrl = '';\n this.groups = undefined;\n this.contacts = undefined;\n this.defaultGroupId = '';\n\n log.setLogger(logger.level, CONTACTS_FILE);\n }\n\n /**\n * Decrypt emails, phoneNumbers, sipAddresses.\n */\n private async decryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const decryptedContactDetail = [...contactDetails];\n\n const decryptedValues = await Promise.all(\n decryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.decryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n decryptedValues.forEach((decryptedValue, index) => {\n decryptedContactDetail[index].value = decryptedValue;\n });\n\n return decryptedContactDetail;\n }\n\n /**\n * Encrypt emails, phoneNumbers, sipAddresses.\n *\n */\n private async encryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const encryptedContactDetail = [...contactDetails];\n\n const encryptedValues = await Promise.all(\n encryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.encryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n encryptedValues.forEach((encryptedValue, index) => {\n encryptedContactDetail[index].value = encryptedValue;\n });\n\n return encryptedContactDetail;\n }\n\n /**\n * Encrypts a given contact.\n */\n private async encryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const encryptedContact: Contact = {...contact};\n\n const encryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = encryptedContact.addressInfo;\n let encryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const encryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.encryptText(encryptionKeyUrl, value),\n ]\n );\n\n encryptedAddressInfo = Object.fromEntries(\n await Promise.all(encryptedAddressInfoPromises)\n );\n }\n\n return [field, encryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = encryptedContact[field];\n let encryptedDetails;\n\n if (plainTextDetails) {\n encryptedDetails = await this.encryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, encryptedDetails];\n }\n default: {\n let encryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && encryptedContact[field]) {\n encryptedValue = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrl,\n encryptedContact[field]\n );\n }\n\n return [field, encryptedValue];\n }\n }\n });\n\n const encryptedFieldsList = await Promise.all(encryptionPromises);\n\n encryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n encryptedContact[field] = value;\n }\n });\n\n return encryptedContact;\n }\n\n /**\n * Decrypts a given contact.\n */\n private async decryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const decryptedContact: Contact = {...contact};\n\n const decryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = decryptedContact.addressInfo;\n let decryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const decryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.decryptText(encryptionKeyUrl, value),\n ]\n );\n\n decryptedAddressInfo = Object.fromEntries(\n await Promise.all(decryptedAddressInfoPromises)\n );\n }\n\n return [field, decryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = decryptedContact[field];\n let decryptedDetails;\n\n if (plainTextDetails) {\n decryptedDetails = await this.decryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, decryptedDetails];\n }\n default: {\n let decryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && decryptedContact[field]) {\n decryptedValue = await this.webex.internal.encryption.decryptText(\n encryptionKeyUrl,\n decryptedContact[field]\n );\n }\n\n return [field, decryptedValue];\n }\n }\n });\n\n const decryptedFieldsList = await Promise.all(decryptionPromises);\n\n decryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n decryptedContact[field] = value;\n }\n });\n\n return decryptedContact;\n }\n\n private resolveCloudContacts(\n contactsDataMap: ContactIdContactInfo,\n inputList: SCIMListResponse\n ): Contact[] | null {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'resolveCloudContacts',\n };\n const finalContactList: Contact[] = [];\n const resolvedList: string[] = [];\n\n try {\n inputList.Resources.forEach((item) => {\n resolvedList.push(item.id);\n });\n\n Object.values(contactsDataMap).forEach((item) => {\n const isResolved = resolvedList.some((listItem) => listItem === item.contactId);\n if (!isResolved) {\n finalContactList.push({...item, resolved: false});\n }\n });\n\n for (let n = 0; n < inputList.Resources.length; n += 1) {\n const filteredContact = inputList.Resources[n];\n const {displayName, emails, phoneNumbers, photos} = filteredContact;\n let sipAddresses;\n if (filteredContact[SCIM_WEBEXIDENTITY_USER]) {\n sipAddresses = filteredContact[SCIM_WEBEXIDENTITY_USER].sipAddresses;\n }\n const firstName = filteredContact.name?.givenName;\n const lastName = filteredContact.name?.familyName;\n const manager = filteredContact[SCIM_ENTERPRISE_USER]?.manager?.displayName;\n const department = filteredContact[SCIM_ENTERPRISE_USER]?.department;\n const avatarURL = photos?.length ? photos[0].value : '';\n\n const {contactType, avatarUrlDomain, encryptionKeyUrl, ownerId, groups} =\n contactsDataMap[inputList.Resources[n].id];\n\n const cloudContact = {\n avatarUrlDomain,\n avatarURL,\n contactId: inputList.Resources[n].id,\n contactType,\n department,\n displayName,\n emails,\n encryptionKeyUrl,\n firstName,\n groups,\n lastName,\n manager,\n ownerId,\n phoneNumbers,\n sipAddresses,\n resolved: true,\n };\n\n finalContactList.push(cloudContact);\n }\n } catch (error: any) {\n log.warn('Error occurred while parsing resolved contacts', loggerContext);\n\n return null;\n }\n\n return finalContactList;\n }\n\n /**\n * Returns list of contacts.\n */\n public async getContacts(): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'getContacts',\n };\n\n const contactList: Contact[] = [];\n const cloudContactsMap: ContactIdContactInfo = {};\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.GET,\n });\n\n const responseBody = response.body as ContactList;\n\n if (!responseBody) {\n throw new Error(`${response}`);\n }\n\n const {contacts, groups} = responseBody;\n\n await Promise.all(\n contacts.map(async (contact) => {\n if (contact.contactType === ContactType.CUSTOM) {\n const decryptedContact = await this.decryptContact(contact);\n\n contactList.push(decryptedContact);\n } else if (contact.contactType === ContactType.CLOUD && contact.contactId) {\n cloudContactsMap[contact.contactId] = contact;\n }\n })\n );\n\n // Resolve cloud contacts\n if (Object.keys(cloudContactsMap).length) {\n const contactIdList = Object.keys(cloudContactsMap);\n const query = contactIdList.map((item) => `${SCIM_ID_FILTER} \"${item}\"`).join(OR);\n const result = await scimQuery(query);\n const resolvedContacts = this.resolveCloudContacts(\n cloudContactsMap,\n result.body as SCIMListResponse\n );\n if (resolvedContacts) {\n resolvedContacts.map((item) => contactList.push(item));\n }\n }\n\n await Promise.all(\n groups.map(async (group, idx) => {\n groups[idx].displayName = await this.webex.internal.encryption.decryptText(\n group.encryptionKeyUrl,\n group.displayName\n );\n })\n );\n\n this.groups = groups;\n this.contacts = contactList;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contacts: contactList,\n groups,\n },\n message: SUCCESS_MESSAGE,\n };\n\n return contactResponse;\n } catch (err: unknown) {\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a new KMS Resource Object (KRO) and Content Key (CK) which is used for encryption.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async createNewEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createNewEncryptionKeyUrl.name,\n };\n\n let unboundedKeyUri = '';\n\n log.info('Requesting kms for a new KRO and key', loggerContext);\n const unboundedKeys = await this.webex.internal.encryption.kms.createUnboundKeys({count: 1});\n\n unboundedKeyUri = unboundedKeys[0].uri;\n this.webex.internal.encryption.kms.createResource({keyUris: [unboundedKeyUri]});\n\n return unboundedKeyUri;\n }\n\n /**\n * Fetches the encryptionKeyUrl from one of the groups. Creates a new key and default group if there is no data.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async fetchEncryptionKeyUrl(): Promise<string> {\n if (this.encryptionKeyUrl) {\n return this.encryptionKeyUrl;\n }\n // istanbul ignore else\n if (this.groups === undefined) {\n this.getContacts();\n }\n // istanbul ignore else\n if (this.groups && this.groups.length) {\n /** Use the encryptionKeyUrl of any one of the groups */\n return this.groups[0].encryptionKeyUrl;\n }\n\n this.encryptionKeyUrl = await this.createNewEncryptionKeyUrl();\n log.info(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_FILE,\n method: this.fetchEncryptionKeyUrl.name,\n });\n const response: ContactResponse = await this.createContactGroup(\n DEFAULT_GROUP_NAME,\n this.encryptionKeyUrl\n );\n\n if (response.data.group?.groupId) {\n this.defaultGroupId = response.data.group?.groupId;\n }\n\n return this.encryptionKeyUrl;\n }\n\n /**\n * Fetches a default group.\n *\n * @returns GroupId of default group.\n */\n private async fetchDefaultGroup(): Promise<string> {\n if (this.defaultGroupId) {\n return this.defaultGroupId;\n }\n\n /* Check the groups list and determine the defaultGroupId */\n if (this.groups && this.groups.length) {\n for (let i = 0; i < this.groups.length; i += 1) {\n if (this.groups[i].displayName === DEFAULT_GROUP_NAME) {\n this.defaultGroupId = this.groups[i].groupId;\n\n return this.defaultGroupId;\n }\n }\n }\n\n log.info('No default group found.', {\n file: CONTACTS_FILE,\n method: this.fetchDefaultGroup.name,\n });\n\n const response: ContactResponse = await this.createContactGroup(DEFAULT_GROUP_NAME);\n\n const {group} = response.data;\n\n if (group) {\n return group.groupId;\n }\n\n return '';\n }\n\n /**\n * Creates a personal contact group.\n * Also creates a KRO, if there aren't any groups.\n * @param displayName - Name of the group to create.\n * @param encryptionKeyUrl - EncryptionKeyUrl to encrypt the displayName.\n * @param groupType - Type of the group to create.\n */\n public async createContactGroup(\n displayName: string,\n encryptionKeyUrl?: string,\n groupType?: GroupType\n ): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createContactGroup.name,\n };\n\n log.info(`Creating contact group ${displayName}`, loggerContext);\n\n const encryptionKeyUrlFinal = encryptionKeyUrl || (await this.fetchEncryptionKeyUrl());\n\n if (this.groups === undefined) {\n await this.getContacts();\n }\n\n if (this.groups && this.groups.length) {\n const isExistingGroup = this.groups.find((group) => {\n return group.displayName === displayName;\n });\n\n if (isExistingGroup) {\n log.warn(`Group name ${displayName} already exists.`, loggerContext);\n\n return {\n statusCode: 400 as number,\n data: {error: 'Group displayName already exists'},\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const encryptedDisplayName = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrlFinal,\n displayName\n );\n\n const groupInfo = {\n schemas: CONTACTS_SCHEMA,\n displayName: encryptedDisplayName,\n groupType: groupType || GroupType.NORMAL,\n encryptionKeyUrl: encryptionKeyUrlFinal,\n };\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}`,\n method: HTTP_METHODS.POST,\n body: groupInfo,\n });\n\n const group = response.body as ContactGroup;\n\n group.displayName = displayName;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n group,\n },\n message: SUCCESS_MESSAGE,\n };\n\n this.groups?.push(group);\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn('Unable to create contact group.', loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Deletes a contact group.\n * @param groupId - GroupId of the group to delete.\n */\n public async deleteContactGroup(groupId: string) {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.deleteContactGroup.name,\n };\n\n try {\n log.info(`Deleting contact group: ${groupId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}/${groupId}`,\n method: HTTP_METHODS.DELETE,\n });\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const groupToDelete = this.groups?.findIndex((group) => group.groupId === groupId);\n\n if (groupToDelete !== undefined && groupToDelete !== -1) {\n this.groups?.splice(groupToDelete, 1);\n }\n\n if (!this.groups?.length) {\n this.defaultGroupId = '';\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn(`Unable to delete contact group ${groupId}`, loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a custom contact.\n * @param contactInfo - Contact object to create.\n */\n public async createContact(contactInfo: Contact): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createContact.name,\n };\n\n log.info(`Request to create contact: contactType: ${contactInfo.contactType}`, loggerContext);\n\n try {\n const contact = {...contactInfo};\n\n if (!contact.encryptionKeyUrl) {\n contact.encryptionKeyUrl = await this.fetchEncryptionKeyUrl();\n }\n\n if (!contact.groups || contact.groups.length === 0) {\n /** Fetch the groupId for the default group if not create */\n const defaultGroupId = await this.fetchDefaultGroup();\n\n contact.groups = [defaultGroupId];\n }\n\n contact.schemas = CONTACTS_SCHEMA;\n let requestBody = {};\n\n switch (contact.contactType) {\n case ContactType.CUSTOM: {\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n case ContactType.CLOUD: {\n if (!contact.contactId) {\n return {\n statusCode: 400 as number,\n data: {\n error: 'contactId is required for contactType:CLOUD.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n default: {\n return {\n statusCode: 400 as number,\n data: {\n error: 'Unknown contactType received.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.POST,\n body: requestBody,\n });\n\n const newContact = response.body as Contact;\n\n contact.contactId = newContact.contactId;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contact,\n },\n message: SUCCESS_MESSAGE,\n };\n\n if (contact.contactType === ContactType.CLOUD && newContact.contactId) {\n const query = `${SCIM_ID_FILTER} \"${newContact.contactId}\"`;\n const res = await scimQuery(query);\n const resolvedContact = this.resolveCloudContacts(\n Object.fromEntries([[newContact.contactId, newContact]]) as ContactIdContactInfo,\n res.body as SCIMListResponse\n );\n if (resolvedContact) {\n this.contacts?.push(resolvedContact[0]);\n }\n } else {\n this.contacts?.push(contact);\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn('Failed to create contact.', {\n file: CONTACTS_FILE,\n method: this.createContact.name,\n });\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Delete a contact.\n * @param contactId - ContactId of the contact to delete.\n */\n public async deleteContact(contactId: string): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.deleteContact.name,\n };\n\n try {\n log.info(`Deleting contact : ${contactId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}/${contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const contactToDelete = this.contacts?.findIndex(\n (contact) => contact.contactId === contactId\n );\n\n if (contactToDelete !== undefined && contactToDelete !== -1) {\n this.contacts?.splice(contactToDelete, 1);\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn(`Unable to delete contact ${contactId}`, loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * @ignore\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n}\n\n/**\n * Creates a ContactsClient instance\n *\n * @param {WebexSDK} webex - `Webex SDK`instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createContactsClient = (webex: WebexSDK, logger: LoggerInterface): IContacts =>\n new ContactsClient(webex, logger);\n"],"mappings":"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"}
@@ -13,6 +13,7 @@ var COMMON_EVENT_KEYS = exports.COMMON_EVENT_KEYS = /*#__PURE__*/function (COMMO
13
13
  COMMON_EVENT_KEYS["CB_VOICEMESSAGE_CONTENT_GET"] = "call_back_voicemail_content_get";
14
14
  COMMON_EVENT_KEYS["CALL_HISTORY_USER_SESSION_INFO"] = "callHistory:user_recent_sessions";
15
15
  COMMON_EVENT_KEYS["CALL_HISTORY_USER_VIEWED_SESSIONS"] = "callHistory:user_viewed_sessions";
16
+ COMMON_EVENT_KEYS["CALL_HISTORY_USER_SESSIONS_DELETED"] = "callHistory:user_sessions_deleted";
16
17
  return COMMON_EVENT_KEYS;
17
18
  }({});
18
19
  var LINE_EVENT_KEYS = exports.LINE_EVENT_KEYS = /*#__PURE__*/function (LINE_EVENT_KEYS) {
@@ -72,6 +73,7 @@ var MOBIUS_EVENT_KEYS = exports.MOBIUS_EVENT_KEYS = /*#__PURE__*/function (MOBIU
72
73
  MOBIUS_EVENT_KEYS["CALL_SESSION_EVENT_INCLUSIVE"] = "event:janus.user_recent_sessions";
73
74
  MOBIUS_EVENT_KEYS["CALL_SESSION_EVENT_LEGACY"] = "event:janus.user_sessions";
74
75
  MOBIUS_EVENT_KEYS["CALL_SESSION_EVENT_VIEWED"] = "event:janus.user_viewed_sessions";
76
+ MOBIUS_EVENT_KEYS["CALL_SESSION_EVENT_DELETED"] = "event:janus.user_sessions_deleted";
75
77
  return MOBIUS_EVENT_KEYS;
76
78
  }({});
77
79
  var MEDIA_CONNECTION_EVENT_KEYS = exports.MEDIA_CONNECTION_EVENT_KEYS = /*#__PURE__*/function (MEDIA_CONNECTION_EVENT_KEYS) {
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","COMMON_EVENT_KEYS","exports","LINE_EVENT_KEYS","CALLING_CLIENT_EVENT_KEYS","CALL_EVENT_KEYS","SUPPLEMENTARY_SERVICES","MOBIUS_MIDCALL_STATE","Disposition","SessionType","MOBIUS_EVENT_KEYS","MEDIA_CONNECTION_EVENT_KEYS","CALL_STATE","WEBSOCKET_SCOPE","WEBSOCKET_KEYS"],"sources":["types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */ // TODO: remove once we define the payloads\nimport {ILine} from '../api';\nimport {LINE_EVENTS} from '../CallingClient/line/types';\nimport type {ICall} from '../CallingClient/calling/types';\nimport {CallId, DisplayInformation} from '../common/types';\nimport {CallError, CallingClientError, LineError} from '../Errors';\n\n/** External Eventing Start */\nexport enum COMMON_EVENT_KEYS {\n CB_VOICEMESSAGE_CONTENT_GET = 'call_back_voicemail_content_get',\n CALL_HISTORY_USER_SESSION_INFO = 'callHistory:user_recent_sessions',\n CALL_HISTORY_USER_VIEWED_SESSIONS = 'callHistory:user_viewed_sessions',\n}\n\nexport enum LINE_EVENT_KEYS {\n INCOMING_CALL = 'incoming_call',\n}\n\nexport enum CALLING_CLIENT_EVENT_KEYS {\n ERROR = 'callingClient:error',\n OUTGOING_CALL = 'callingClient:outgoing_call',\n USER_SESSION_INFO = 'callingClient:user_recent_sessions',\n ALL_CALLS_CLEARED = 'callingClient:all_calls_cleared',\n}\n\nexport enum CALL_EVENT_KEYS {\n ALERTING = 'alerting',\n CALL_ERROR = 'call_error',\n CALLER_ID = 'caller_id',\n CONNECT = 'connect',\n DISCONNECT = 'disconnect',\n ESTABLISHED = 'established',\n HELD = 'held',\n HOLD_ERROR = 'hold_error',\n PROGRESS = 'progress',\n REMOTE_MEDIA = 'remote_media',\n RESUME_ERROR = 'resume_error',\n RESUMED = 'resumed',\n TRANSFER_ERROR = 'transfer_error',\n}\n\nexport enum SUPPLEMENTARY_SERVICES {\n HOLD = 'hold',\n RESUME = 'resume',\n DIVERT = 'divert',\n TRANSFER = 'transfer',\n PARK = 'park',\n}\n\nexport enum MOBIUS_MIDCALL_STATE {\n HELD = 'HELD',\n CONNECTED = 'CONNECTED',\n}\n\nexport enum Disposition {\n ANSWERED = 'Answered',\n CANCELED = 'Canceled',\n INITIATED = 'Initiated',\n MISSED = 'MISSED',\n}\n\nexport type CallRecordLink = {\n locusUrl?: string;\n conversationUrl?: string;\n callbackAddress: string;\n};\n\nexport type CallBackInfo = {\n callbackAddress: string;\n callbackType: string;\n};\n\nexport type LookUpInfo = {\n lookupLink: string;\n type: string;\n};\n\nexport type CallRecordSelf = {\n id: string;\n name?: string;\n phoneNumber?: string;\n cucmDN?: string;\n ucmLineNumber?: number;\n};\n\nexport type CallRecordListOther = {\n ownerId?: string;\n id: string;\n name?: string;\n sipUrl?: string;\n primaryDisplayString?: string;\n secondaryDisplayString?: string;\n isPrivate: boolean;\n callbackAddress: string;\n phoneNumber?: string;\n contact?: string;\n email?: string;\n};\n\nexport type RedirectionDetails = {\n phoneNumber?: string;\n sipUrl?: string;\n name?: string;\n reason: string;\n userId?: string;\n isPrivate: boolean;\n};\n\nexport enum SessionType {\n SPARK = 'SPARK',\n WEBEX_CALLING = 'WEBEXCALLING',\n}\n\nexport type UserSession = {\n id: string;\n sessionId: string;\n disposition: Disposition;\n startTime: string;\n endTime: string;\n url: string;\n durationSeconds: number;\n joinedDurationSeconds: number;\n participantCount: number;\n isDeleted: boolean;\n isPMR: boolean;\n correlationIds: string[];\n links: CallRecordLink;\n self: CallRecordSelf;\n durationSecs: number;\n other: CallRecordListOther;\n sessionType: SessionType;\n direction: string;\n callingSpecifics?: {\n redirectionDetails: RedirectionDetails;\n };\n};\n\nexport type CallingParty = {\n name?: string;\n number?: string;\n privacyEnabled?: boolean;\n userId?: string;\n address?: string;\n};\n\nexport type Item = {\n id?: string;\n duration?: number;\n callingParty?: CallingParty;\n urgent?: boolean;\n confidential?: boolean;\n read?: boolean;\n created?: string;\n messageId?: string;\n time?: number;\n};\n\nexport enum MOBIUS_EVENT_KEYS {\n SERVER_EVENT_INCLUSIVE = 'event:mobius',\n CALL_SESSION_EVENT_INCLUSIVE = 'event:janus.user_recent_sessions',\n CALL_SESSION_EVENT_LEGACY = 'event:janus.user_sessions',\n CALL_SESSION_EVENT_VIEWED = 'event:janus.user_viewed_sessions',\n}\n\nexport type CallSessionData = {\n userSessions: {\n userSessions: UserSession[];\n statusCode: number;\n };\n eventType:\n | MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE\n | MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_LEGACY;\n};\n\nexport type CallSessionEvent = {\n id: string;\n data: CallSessionData;\n timestamp: number;\n trackingId: string;\n};\n\nexport enum MEDIA_CONNECTION_EVENT_KEYS {\n ROAP_MESSAGE_TO_SEND = 'roap:messageToSend',\n MEDIA_TYPE_AUDIO = 'audio',\n}\n\nexport type CallerIdDisplay = {\n correlationId: string;\n callerId: DisplayInformation;\n};\n\nexport type LineEventTypes = {\n [LINE_EVENTS.CONNECTING]: () => void;\n [LINE_EVENTS.ERROR]: (error: LineError) => void;\n [LINE_EVENTS.RECONNECTED]: () => void;\n [LINE_EVENTS.RECONNECTING]: () => void;\n [LINE_EVENTS.REGISTERED]: (lineInfo: ILine) => void;\n [LINE_EVENTS.UNREGISTERED]: () => void;\n [LINE_EVENTS.INCOMING_CALL]: (callObj: ICall) => void;\n};\n\nexport type CallEventTypes = {\n [CALL_EVENT_KEYS.ALERTING]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.CALL_ERROR]: (error: CallError) => void;\n [CALL_EVENT_KEYS.CALLER_ID]: (display: CallerIdDisplay) => void;\n [CALL_EVENT_KEYS.CONNECT]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.DISCONNECT]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.ESTABLISHED]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.HELD]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.HOLD_ERROR]: (error: CallError) => void;\n [LINE_EVENT_KEYS.INCOMING_CALL]: (callObj: ICall) => void;\n [CALL_EVENT_KEYS.PROGRESS]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.REMOTE_MEDIA]: (track: MediaStreamTrack) => void;\n [CALL_EVENT_KEYS.RESUME_ERROR]: (error: CallError) => void;\n [CALL_EVENT_KEYS.RESUMED]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.TRANSFER_ERROR]: (error: CallError) => void;\n [CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED]: () => void;\n};\n\nexport type MessageId = {\n messageId: string;\n};\n\nexport type VoicemailEventTypes = {\n [COMMON_EVENT_KEYS.CB_VOICEMESSAGE_CONTENT_GET]: (messageId: MessageId) => void;\n};\n\nexport type CallingClientEventTypes = {\n [CALLING_CLIENT_EVENT_KEYS.ERROR]: (error: CallingClientError) => void;\n [CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO]: (event: CallSessionEvent) => void;\n [CALLING_CLIENT_EVENT_KEYS.OUTGOING_CALL]: (callId: string) => void;\n [CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED]: () => void;\n};\n\nexport type CallHistoryEventTypes = {\n [COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO]: (event: CallSessionEvent) => void;\n [COMMON_EVENT_KEYS.CALL_HISTORY_USER_VIEWED_SESSIONS]: (event: CallSessionViewedEvent) => void;\n};\n/* External Eventing End */\n\n/** Internal Eventing Start */\nenum CALL_STATE {\n HELD = 'held',\n REMOTE_HELD = 'remoteheld',\n CONNECTED = 'connected',\n}\n\ntype eventType = string;\n\ntype callProgressData = {\n alerting: boolean;\n inbandROAP: boolean;\n};\n\nexport type CallerIdInfo = {\n 'x-broadworks-remote-party-info'?: string;\n 'p-asserted-identity'?: string;\n from?: string;\n};\n\ntype callId = string;\ntype deviceId = string;\ntype correlationId = string;\ntype callUrl = string;\ntype causecode = number;\ntype cause = string;\n\ntype eventData = {\n callerId: CallerIdInfo;\n callState: CALL_STATE;\n};\n\ntype midCallServiceData = {\n eventType: eventType;\n eventData: eventData;\n};\n\ntype midCallService = Array<midCallServiceData>;\ninterface BaseMessage {\n eventType: eventType;\n correlationId: correlationId;\n deviceId: deviceId;\n callId: callId;\n callUrl: callUrl;\n}\nexport interface CallSetupMessage extends BaseMessage {\n callerId: CallerIdInfo;\n trackingId: string;\n alertType: string;\n}\ninterface CallProgressMessage extends BaseMessage {\n callProgressData: callProgressData;\n callerId: CallerIdInfo;\n}\n\nexport const WEBSOCKET_SCOPE = 'mobius';\n\nexport enum WEBSOCKET_KEYS {\n CALL_PROGRESS = 'callprogress',\n CALL_CONNECTED = 'callconnected',\n CALL_DISCONNECTED = 'callconnected',\n CALL_INFO = 'callinfo',\n CALL = 'call',\n ROAP = 'ROAP',\n}\n/** Internal Eventing End */\n\n/** State Machine Events */\n\nexport type CallEvent =\n /* Received Events */\n | {type: 'E_RECV_CALL_SETUP'; data?: unknown}\n | {type: 'E_RECV_CALL_PROGRESS'; data?: unknown}\n | {type: 'E_RECV_CALL_CONNECT'; data?: unknown}\n | {type: 'E_RECV_CALL_DISCONNECT'; data?: unknown}\n\n /* Sent Events */\n | {type: 'E_SEND_CALL_SETUP'; data?: unknown}\n | {type: 'E_SEND_CALL_ALERTING'; data?: unknown}\n | {type: 'E_SEND_CALL_CONNECT'; data?: unknown}\n | {type: 'E_SEND_CALL_DISCONNECT'; data?: unknown}\n\n /* Common Events */\n | {type: 'E_CALL_ESTABLISHED'; data?: unknown}\n | {type: 'E_CALL_INFO'; data?: unknown}\n | {type: 'E_UNKNOWN'; data?: unknown}\n | {type: 'E_CALL_CLEARED'; data?: unknown}\n | {type: 'E_CALL_HOLD'; data?: unknown}\n | {type: 'E_CALL_RESUME'; data?: unknown};\n\n/* ROAP Events */\nexport type RoapEvent =\n | {type: 'E_SEND_ROAP_OFFER'; data?: unknown}\n | {type: 'E_SEND_ROAP_ANSWER'; data?: unknown}\n | {type: 'E_RECV_ROAP_OFFER'; data?: unknown}\n | {type: 'E_RECV_ROAP_ANSWER'; data?: unknown}\n | {type: 'E_ROAP_ERROR'; data?: unknown}\n | {type: 'E_ROAP_OK'; data?: unknown}\n | {type: 'E_RECV_ROAP_OFFER_REQUEST'; data?: unknown} // ROAP request to explicitly ask Client to do OFFER\n | {type: 'E_ROAP_TEARDOWN'; data?: unknown};\n\n// TODO: export RoapMessage type from the media SDK to use here\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface RoapMessage {\n seq: number;\n messageType: 'OFFER' | 'ANSWER' | 'OK' | 'ERROR' | 'OFFER_REQUEST';\n offererSessionId?: string;\n answererSessionId?: string;\n sdp?: string;\n version?: string;\n tieBreaker?: string;\n errorType?: string;\n}\n\nexport type UserReadSessions = {\n sessionId: string;\n};\n\nexport type CallSessionViewedData = {\n userReadSessions: {\n userReadSessions: UserReadSessions[];\n statusCode: number;\n };\n eventType: MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_VIEWED;\n};\n\nexport type CallSessionViewedEvent = {\n id: string;\n data: CallSessionViewedData;\n timestamp: number;\n trackingId: string;\n};\n\nexport type EndTimeSessionId = {\n endTime: string;\n sessionId: string;\n};\n\nexport type SanitizedEndTimeAndSessionId = {\n endTime: number;\n sessionId: string;\n};\n\nexport type UCMLine = {\n dnorpattern: string;\n index: number;\n label: string | null;\n};\n\nexport type UCMDevice = {\n name: string;\n model: number;\n lines: UCMLine[];\n};\n\nexport type UCMLinesApiResponse = {\n devices: UCMDevice[];\n};\n"],"mappings":";;;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAFA;AAAuD;AAOvD;AAAA,IACYC,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAA,IAMjBE,eAAe,GAAAD,OAAA,CAAAC,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAIfC,yBAAyB,GAAAF,OAAA,CAAAE,yBAAA,0BAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAA,OAAzBA,yBAAyB;AAAA;AAAA,IAOzBC,eAAe,GAAAH,OAAA,CAAAG,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAgBfC,sBAAsB,GAAAJ,OAAA,CAAAI,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAA,IAQtBC,oBAAoB,GAAAL,OAAA,CAAAK,oBAAA,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAAA,IAKpBC,WAAW,GAAAN,OAAA,CAAAM,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAAA,IAsDXC,WAAW,GAAAP,OAAA,CAAAO,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAAA,IAiDXC,iBAAiB,GAAAR,OAAA,CAAAQ,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAA,IAwBjBC,2BAA2B,GAAAT,OAAA,CAAAS,2BAAA,0BAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAAA,OAA3BA,2BAA2B;AAAA;AAyDvC;AAEA;AAAA,IACKC,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA,EAAVA,UAAU;AAsDR,IAAMC,eAAe,GAAAX,OAAA,CAAAW,eAAA,GAAG,QAAQ;AAAC,IAE5BC,cAAc,GAAAZ,OAAA,CAAAY,cAAA,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAQ1B;AAEA;AAuBA;AAWA;AACA"}
1
+ {"version":3,"names":["_types","require","COMMON_EVENT_KEYS","exports","LINE_EVENT_KEYS","CALLING_CLIENT_EVENT_KEYS","CALL_EVENT_KEYS","SUPPLEMENTARY_SERVICES","MOBIUS_MIDCALL_STATE","Disposition","SessionType","MOBIUS_EVENT_KEYS","MEDIA_CONNECTION_EVENT_KEYS","CALL_STATE","WEBSOCKET_SCOPE","WEBSOCKET_KEYS"],"sources":["types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */ // TODO: remove once we define the payloads\nimport {ILine} from '../api';\nimport {LINE_EVENTS} from '../CallingClient/line/types';\nimport type {ICall} from '../CallingClient/calling/types';\nimport {CallId, DisplayInformation} from '../common/types';\nimport {CallError, CallingClientError, LineError} from '../Errors';\n\n/** External Eventing Start */\nexport enum COMMON_EVENT_KEYS {\n CB_VOICEMESSAGE_CONTENT_GET = 'call_back_voicemail_content_get',\n CALL_HISTORY_USER_SESSION_INFO = 'callHistory:user_recent_sessions',\n CALL_HISTORY_USER_VIEWED_SESSIONS = 'callHistory:user_viewed_sessions',\n CALL_HISTORY_USER_SESSIONS_DELETED = 'callHistory:user_sessions_deleted',\n}\n\nexport enum LINE_EVENT_KEYS {\n INCOMING_CALL = 'incoming_call',\n}\n\nexport enum CALLING_CLIENT_EVENT_KEYS {\n ERROR = 'callingClient:error',\n OUTGOING_CALL = 'callingClient:outgoing_call',\n USER_SESSION_INFO = 'callingClient:user_recent_sessions',\n ALL_CALLS_CLEARED = 'callingClient:all_calls_cleared',\n}\n\nexport enum CALL_EVENT_KEYS {\n ALERTING = 'alerting',\n CALL_ERROR = 'call_error',\n CALLER_ID = 'caller_id',\n CONNECT = 'connect',\n DISCONNECT = 'disconnect',\n ESTABLISHED = 'established',\n HELD = 'held',\n HOLD_ERROR = 'hold_error',\n PROGRESS = 'progress',\n REMOTE_MEDIA = 'remote_media',\n RESUME_ERROR = 'resume_error',\n RESUMED = 'resumed',\n TRANSFER_ERROR = 'transfer_error',\n}\n\nexport enum SUPPLEMENTARY_SERVICES {\n HOLD = 'hold',\n RESUME = 'resume',\n DIVERT = 'divert',\n TRANSFER = 'transfer',\n PARK = 'park',\n}\n\nexport enum MOBIUS_MIDCALL_STATE {\n HELD = 'HELD',\n CONNECTED = 'CONNECTED',\n}\n\nexport enum Disposition {\n ANSWERED = 'Answered',\n CANCELED = 'Canceled',\n INITIATED = 'Initiated',\n MISSED = 'MISSED',\n}\n\nexport type CallRecordLink = {\n locusUrl?: string;\n conversationUrl?: string;\n callbackAddress: string;\n};\n\nexport type CallBackInfo = {\n callbackAddress: string;\n callbackType: string;\n};\n\nexport type LookUpInfo = {\n lookupLink: string;\n type: string;\n};\n\nexport type CallRecordSelf = {\n id: string;\n name?: string;\n phoneNumber?: string;\n cucmDN?: string;\n ucmLineNumber?: number;\n};\n\nexport type CallRecordListOther = {\n ownerId?: string;\n id: string;\n name?: string;\n sipUrl?: string;\n primaryDisplayString?: string;\n secondaryDisplayString?: string;\n isPrivate: boolean;\n callbackAddress: string;\n phoneNumber?: string;\n contact?: string;\n email?: string;\n};\n\nexport type RedirectionDetails = {\n phoneNumber?: string;\n sipUrl?: string;\n name?: string;\n reason: string;\n userId?: string;\n isPrivate: boolean;\n};\n\nexport enum SessionType {\n SPARK = 'SPARK',\n WEBEX_CALLING = 'WEBEXCALLING',\n}\n\nexport type UserSession = {\n id: string;\n sessionId: string;\n disposition: Disposition;\n startTime: string;\n endTime: string;\n url: string;\n durationSeconds: number;\n joinedDurationSeconds: number;\n participantCount: number;\n isDeleted: boolean;\n isPMR: boolean;\n correlationIds: string[];\n links: CallRecordLink;\n self: CallRecordSelf;\n durationSecs: number;\n other: CallRecordListOther;\n sessionType: SessionType;\n direction: string;\n callingSpecifics?: {\n redirectionDetails: RedirectionDetails;\n };\n};\n\nexport type CallingParty = {\n name?: string;\n number?: string;\n privacyEnabled?: boolean;\n userId?: string;\n address?: string;\n};\n\nexport type Item = {\n id?: string;\n duration?: number;\n callingParty?: CallingParty;\n urgent?: boolean;\n confidential?: boolean;\n read?: boolean;\n created?: string;\n messageId?: string;\n time?: number;\n};\n\nexport enum MOBIUS_EVENT_KEYS {\n SERVER_EVENT_INCLUSIVE = 'event:mobius',\n CALL_SESSION_EVENT_INCLUSIVE = 'event:janus.user_recent_sessions',\n CALL_SESSION_EVENT_LEGACY = 'event:janus.user_sessions',\n CALL_SESSION_EVENT_VIEWED = 'event:janus.user_viewed_sessions',\n CALL_SESSION_EVENT_DELETED = 'event:janus.user_sessions_deleted',\n}\n\nexport type CallSessionData = {\n userSessions: {\n userSessions: UserSession[];\n statusCode: number;\n };\n eventType:\n | MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE\n | MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_LEGACY;\n};\n\nexport type CallSessionEvent = {\n id: string;\n data: CallSessionData;\n timestamp: number;\n trackingId: string;\n};\n\nexport enum MEDIA_CONNECTION_EVENT_KEYS {\n ROAP_MESSAGE_TO_SEND = 'roap:messageToSend',\n MEDIA_TYPE_AUDIO = 'audio',\n}\n\nexport type CallerIdDisplay = {\n correlationId: string;\n callerId: DisplayInformation;\n};\n\nexport type LineEventTypes = {\n [LINE_EVENTS.CONNECTING]: () => void;\n [LINE_EVENTS.ERROR]: (error: LineError) => void;\n [LINE_EVENTS.RECONNECTED]: () => void;\n [LINE_EVENTS.RECONNECTING]: () => void;\n [LINE_EVENTS.REGISTERED]: (lineInfo: ILine) => void;\n [LINE_EVENTS.UNREGISTERED]: () => void;\n [LINE_EVENTS.INCOMING_CALL]: (callObj: ICall) => void;\n};\n\nexport type CallEventTypes = {\n [CALL_EVENT_KEYS.ALERTING]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.CALL_ERROR]: (error: CallError) => void;\n [CALL_EVENT_KEYS.CALLER_ID]: (display: CallerIdDisplay) => void;\n [CALL_EVENT_KEYS.CONNECT]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.DISCONNECT]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.ESTABLISHED]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.HELD]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.HOLD_ERROR]: (error: CallError) => void;\n [LINE_EVENT_KEYS.INCOMING_CALL]: (callObj: ICall) => void;\n [CALL_EVENT_KEYS.PROGRESS]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.REMOTE_MEDIA]: (track: MediaStreamTrack) => void;\n [CALL_EVENT_KEYS.RESUME_ERROR]: (error: CallError) => void;\n [CALL_EVENT_KEYS.RESUMED]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.TRANSFER_ERROR]: (error: CallError) => void;\n [CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED]: () => void;\n};\n\nexport type MessageId = {\n messageId: string;\n};\n\nexport type VoicemailEventTypes = {\n [COMMON_EVENT_KEYS.CB_VOICEMESSAGE_CONTENT_GET]: (messageId: MessageId) => void;\n};\n\nexport type CallingClientEventTypes = {\n [CALLING_CLIENT_EVENT_KEYS.ERROR]: (error: CallingClientError) => void;\n [CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO]: (event: CallSessionEvent) => void;\n [CALLING_CLIENT_EVENT_KEYS.OUTGOING_CALL]: (callId: string) => void;\n [CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED]: () => void;\n};\n\nexport type CallHistoryEventTypes = {\n [COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO]: (event: CallSessionEvent) => void;\n [COMMON_EVENT_KEYS.CALL_HISTORY_USER_VIEWED_SESSIONS]: (event: CallSessionViewedEvent) => void;\n [COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSIONS_DELETED]: (event: CallSessionDeletedEvent) => void;\n};\n/* External Eventing End */\n\n/** Internal Eventing Start */\nenum CALL_STATE {\n HELD = 'held',\n REMOTE_HELD = 'remoteheld',\n CONNECTED = 'connected',\n}\n\ntype eventType = string;\n\ntype callProgressData = {\n alerting: boolean;\n inbandROAP: boolean;\n};\n\nexport type CallerIdInfo = {\n 'x-broadworks-remote-party-info'?: string;\n 'p-asserted-identity'?: string;\n from?: string;\n};\n\ntype callId = string;\ntype deviceId = string;\ntype correlationId = string;\ntype callUrl = string;\ntype causecode = number;\ntype cause = string;\n\ntype eventData = {\n callerId: CallerIdInfo;\n callState: CALL_STATE;\n};\n\ntype midCallServiceData = {\n eventType: eventType;\n eventData: eventData;\n};\n\ntype midCallService = Array<midCallServiceData>;\ninterface BaseMessage {\n eventType: eventType;\n correlationId: correlationId;\n deviceId: deviceId;\n callId: callId;\n callUrl: callUrl;\n}\nexport interface CallSetupMessage extends BaseMessage {\n callerId: CallerIdInfo;\n trackingId: string;\n alertType: string;\n}\ninterface CallProgressMessage extends BaseMessage {\n callProgressData: callProgressData;\n callerId: CallerIdInfo;\n}\n\nexport const WEBSOCKET_SCOPE = 'mobius';\n\nexport enum WEBSOCKET_KEYS {\n CALL_PROGRESS = 'callprogress',\n CALL_CONNECTED = 'callconnected',\n CALL_DISCONNECTED = 'callconnected',\n CALL_INFO = 'callinfo',\n CALL = 'call',\n ROAP = 'ROAP',\n}\n/** Internal Eventing End */\n\n/** State Machine Events */\n\nexport type CallEvent =\n /* Received Events */\n | {type: 'E_RECV_CALL_SETUP'; data?: unknown}\n | {type: 'E_RECV_CALL_PROGRESS'; data?: unknown}\n | {type: 'E_RECV_CALL_CONNECT'; data?: unknown}\n | {type: 'E_RECV_CALL_DISCONNECT'; data?: unknown}\n\n /* Sent Events */\n | {type: 'E_SEND_CALL_SETUP'; data?: unknown}\n | {type: 'E_SEND_CALL_ALERTING'; data?: unknown}\n | {type: 'E_SEND_CALL_CONNECT'; data?: unknown}\n | {type: 'E_SEND_CALL_DISCONNECT'; data?: unknown}\n\n /* Common Events */\n | {type: 'E_CALL_ESTABLISHED'; data?: unknown}\n | {type: 'E_CALL_INFO'; data?: unknown}\n | {type: 'E_UNKNOWN'; data?: unknown}\n | {type: 'E_CALL_CLEARED'; data?: unknown}\n | {type: 'E_CALL_HOLD'; data?: unknown}\n | {type: 'E_CALL_RESUME'; data?: unknown};\n\n/* ROAP Events */\nexport type RoapEvent =\n | {type: 'E_SEND_ROAP_OFFER'; data?: unknown}\n | {type: 'E_SEND_ROAP_ANSWER'; data?: unknown}\n | {type: 'E_RECV_ROAP_OFFER'; data?: unknown}\n | {type: 'E_RECV_ROAP_ANSWER'; data?: unknown}\n | {type: 'E_ROAP_ERROR'; data?: unknown}\n | {type: 'E_ROAP_OK'; data?: unknown}\n | {type: 'E_RECV_ROAP_OFFER_REQUEST'; data?: unknown} // ROAP request to explicitly ask Client to do OFFER\n | {type: 'E_ROAP_TEARDOWN'; data?: unknown};\n\n// TODO: export RoapMessage type from the media SDK to use here\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface RoapMessage {\n seq: number;\n messageType: 'OFFER' | 'ANSWER' | 'OK' | 'ERROR' | 'OFFER_REQUEST';\n offererSessionId?: string;\n answererSessionId?: string;\n sdp?: string;\n version?: string;\n tieBreaker?: string;\n errorType?: string;\n}\n\nexport type UserReadSessions = {\n sessionId: string;\n};\n\nexport type CallSessionViewedData = {\n userReadSessions: {\n userReadSessions: UserReadSessions[];\n statusCode: number;\n };\n eventType: MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_VIEWED;\n};\n\nexport type CallSessionViewedEvent = {\n id: string;\n data: CallSessionViewedData;\n timestamp: number;\n trackingId: string;\n};\n\nexport type CallSessionDeletedData = {\n deletedSessions: string[];\n eventType: MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_DELETED;\n};\n\nexport type CallSessionDeletedEvent = {\n id: string;\n data: CallSessionDeletedData;\n timestamp: number;\n trackingId: string;\n};\n\nexport type EndTimeSessionId = {\n endTime: string;\n sessionId: string;\n};\n\nexport type SanitizedEndTimeAndSessionId = {\n endTime: number;\n sessionId: string;\n};\n\nexport type UCMLine = {\n dnorpattern: string;\n index: number;\n label: string | null;\n};\n\nexport type UCMDevice = {\n name: string;\n model: number;\n lines: UCMLine[];\n};\n\nexport type UCMLinesApiResponse = {\n devices: UCMDevice[];\n};\n"],"mappings":";;;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAFA;AAAuD;AAOvD;AAAA,IACYC,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAA,IAOjBE,eAAe,GAAAD,OAAA,CAAAC,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAIfC,yBAAyB,GAAAF,OAAA,CAAAE,yBAAA,0BAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAA,OAAzBA,yBAAyB;AAAA;AAAA,IAOzBC,eAAe,GAAAH,OAAA,CAAAG,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAgBfC,sBAAsB,GAAAJ,OAAA,CAAAI,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAA,IAQtBC,oBAAoB,GAAAL,OAAA,CAAAK,oBAAA,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAAA,IAKpBC,WAAW,GAAAN,OAAA,CAAAM,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAAA,IAsDXC,WAAW,GAAAP,OAAA,CAAAO,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAAA,IAiDXC,iBAAiB,GAAAR,OAAA,CAAAQ,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAA,IAyBjBC,2BAA2B,GAAAT,OAAA,CAAAS,2BAAA,0BAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAAA,OAA3BA,2BAA2B;AAAA;AA0DvC;AAEA;AAAA,IACKC,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA,EAAVA,UAAU;AAsDR,IAAMC,eAAe,GAAAX,OAAA,CAAAW,eAAA,GAAG,QAAQ;AAAC,IAE5BC,cAAc,GAAAZ,OAAA,CAAAY,cAAA,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAQ1B;AAEA;AAuBA;AAWA;AACA"}
@@ -858,13 +858,13 @@ function getXsiActionEndpoint(_x17, _x18, _x19) {
858
858
  */
859
859
  function _getXsiActionEndpoint() {
860
860
  _getXsiActionEndpoint = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(webex, loggerContext, callingBackend) {
861
- var userIdResponse, response, xsiEndpoint, bwTokenResponse, _response, _xsiEndpoint, errorInfo;
861
+ var userIdResponse, response, xsiEndpoint, bwTokenResponse, _response, _xsiEndpoint, xsiUrl, errorInfo;
862
862
  return _regenerator.default.wrap(function _callee5$(_context5) {
863
863
  while (1) switch (_context5.prev = _context5.next) {
864
864
  case 0:
865
865
  _context5.prev = 0;
866
866
  _context5.t0 = callingBackend;
867
- _context5.next = _context5.t0 === _types2.CALLING_BACKEND.WXC ? 4 : _context5.t0 === _types2.CALLING_BACKEND.BWRKS ? 10 : 17;
867
+ _context5.next = _context5.t0 === _types2.CALLING_BACKEND.WXC ? 4 : _context5.t0 === _types2.CALLING_BACKEND.BWRKS ? 10 : 18;
868
868
  break;
869
869
  case 4:
870
870
  _context5.next = 6;
@@ -887,26 +887,29 @@ function _getXsiActionEndpoint() {
887
887
  bwTokenResponse = _context5.sent;
888
888
  _response = bwTokenResponse.body;
889
889
  _xsiEndpoint = _response[_constants2.DEVICES][0][_constants2.SETTINGS][_constants2.BW_XSI_URL];
890
- if (_response[_constants2.DEVICES][0][_constants2.SETTINGS][_constants2.BW_XSI_URL].endsWith(_constants2.BW_XSI_ENDPOINT_VERSION)) {
891
- _xsiEndpoint = _response[_constants2.DEVICES][0][_constants2.SETTINGS][_constants2.BW_XSI_URL].slice(0, -5);
890
+ xsiUrl = _response[_constants2.DEVICES][0][_constants2.SETTINGS][_constants2.BW_XSI_URL]; // Check if it ends with specific version and slice accordingly
891
+ if (xsiUrl.endsWith(_constants2.BW_XSI_ENDPOINT_VERSION)) {
892
+ _xsiEndpoint = xsiUrl.slice(0, -5); // Remove 'v2.0'
893
+ } else if (xsiUrl.endsWith(_constants2.BW_XSI_ENDPOINT_VERSION_WITH_SLASH)) {
894
+ _xsiEndpoint = xsiUrl.slice(0, -6); // Remove 'v2.0/'
892
895
  }
893
896
  return _context5.abrupt("return", _xsiEndpoint);
894
- case 17:
895
- throw new Error('Calling backend is not identified, exiting....');
896
897
  case 18:
897
- _context5.next = 25;
898
+ throw new Error('Calling backend is not identified, exiting....');
899
+ case 19:
900
+ _context5.next = 26;
898
901
  break;
899
- case 20:
900
- _context5.prev = 20;
902
+ case 21:
903
+ _context5.prev = 21;
901
904
  _context5.t1 = _context5["catch"](0);
902
905
  errorInfo = _context5.t1;
903
906
  serviceErrorCodeHandler(errorInfo, loggerContext);
904
907
  return _context5.abrupt("return", errorInfo);
905
- case 25:
908
+ case 26:
906
909
  case "end":
907
910
  return _context5.stop();
908
911
  }
909
- }, _callee5, null, [[0, 20]]);
912
+ }, _callee5, null, [[0, 21]]);
910
913
  }));
911
914
  return _getXsiActionEndpoint.apply(this, arguments);
912
915
  }
@@ -1236,7 +1239,7 @@ function isValidServiceDomain(serviceData) {
1236
1239
  var regexp = /^[a-z0-9]+([-.]{1}[a-z0-9]+)*\.[a-z]{2,6}$/i;
1237
1240
  var domain = serviceData.domain;
1238
1241
  if (!domain) {
1239
- return serviceData.indicator === _types2.ServiceIndicator.CALLING;
1242
+ return serviceData.indicator === _types2.ServiceIndicator.CALLING || serviceData.indicator === _types2.ServiceIndicator.GUEST_CALLING;
1240
1243
  }
1241
1244
  return regexp.test(domain);
1242
1245
  }
@@ -1249,8 +1252,10 @@ function isValidServiceDomain(serviceData) {
1249
1252
  * @param serviceData - Input service data to be validated.
1250
1253
  */
1251
1254
  function validateServiceData(serviceData) {
1255
+ var allowedValues = (0, _values.default)(_types2.ServiceIndicator);
1256
+ var formattedValues = allowedValues.join(', ').replace(/,([^,]*)$/, ' and$1');
1252
1257
  if (!isValidServiceIndicator(serviceData.indicator)) {
1253
- throw new Error("Invalid service indicator, Allowed values are: ".concat((0, _values.default)(_types2.ServiceIndicator)));
1258
+ throw new Error("Invalid service indicator, Allowed values are: ".concat(formattedValues));
1254
1259
  }
1255
1260
  if (!isValidServiceDomain(serviceData)) {
1256
1261
  throw new Error('Invalid service domain.');