@webex/calling 3.12.0-next.60 → 3.12.0-next.61

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 (65) hide show
  1. package/dist/CallRecording/CallRecording.js +158 -0
  2. package/dist/CallRecording/CallRecording.js.map +1 -0
  3. package/dist/CallRecording/CallRecording.test.js +257 -0
  4. package/dist/CallRecording/CallRecording.test.js.map +1 -0
  5. package/dist/CallRecording/WxcCallRecordingConnector.js +576 -0
  6. package/dist/CallRecording/WxcCallRecordingConnector.js.map +1 -0
  7. package/dist/CallRecording/WxcCallRecordingConnector.test.js +651 -0
  8. package/dist/CallRecording/WxcCallRecordingConnector.test.js.map +1 -0
  9. package/dist/CallRecording/callRecordingFixtures.js +235 -0
  10. package/dist/CallRecording/callRecordingFixtures.js.map +1 -0
  11. package/dist/CallRecording/constants.js +49 -0
  12. package/dist/CallRecording/constants.js.map +1 -0
  13. package/dist/CallRecording/types.js +136 -0
  14. package/dist/CallRecording/types.js.map +1 -0
  15. package/dist/CallRecording/utils.js +42 -0
  16. package/dist/CallRecording/utils.js.map +1 -0
  17. package/dist/CallRecording/utils.test.js +97 -0
  18. package/dist/CallRecording/utils.test.js.map +1 -0
  19. package/dist/Events/types.js +28 -1
  20. package/dist/Events/types.js.map +1 -1
  21. package/dist/SDKConnector/types.js.map +1 -1
  22. package/dist/api.js +56 -0
  23. package/dist/api.js.map +1 -1
  24. package/dist/common/testUtil.js +2 -1
  25. package/dist/common/testUtil.js.map +1 -1
  26. package/dist/common/types.js +1 -0
  27. package/dist/common/types.js.map +1 -1
  28. package/dist/index.js +138 -45
  29. package/dist/index.js.map +1 -1
  30. package/dist/module/CallRecording/CallRecording.js +56 -0
  31. package/dist/module/CallRecording/WxcCallRecordingConnector.js +264 -0
  32. package/dist/module/CallRecording/callRecordingFixtures.js +201 -0
  33. package/dist/module/CallRecording/constants.js +27 -0
  34. package/dist/module/CallRecording/types.js +19 -0
  35. package/dist/module/CallRecording/utils.js +14 -0
  36. package/dist/module/Events/types.js +19 -0
  37. package/dist/module/api.js +3 -2
  38. package/dist/module/common/testUtil.js +1 -0
  39. package/dist/module/common/types.js +1 -0
  40. package/dist/module/index.js +4 -1
  41. package/dist/types/CallRecording/CallRecording.d.ts +18 -0
  42. package/dist/types/CallRecording/CallRecording.d.ts.map +1 -0
  43. package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts +23 -0
  44. package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts.map +1 -0
  45. package/dist/types/CallRecording/callRecordingFixtures.d.ts +61 -0
  46. package/dist/types/CallRecording/callRecordingFixtures.d.ts.map +1 -0
  47. package/dist/types/CallRecording/constants.d.ts +28 -0
  48. package/dist/types/CallRecording/constants.d.ts.map +1 -0
  49. package/dist/types/CallRecording/types.d.ts +176 -0
  50. package/dist/types/CallRecording/types.d.ts.map +1 -0
  51. package/dist/types/CallRecording/utils.d.ts +3 -0
  52. package/dist/types/CallRecording/utils.d.ts.map +1 -0
  53. package/dist/types/Events/types.d.ts +65 -2
  54. package/dist/types/Events/types.d.ts.map +1 -1
  55. package/dist/types/SDKConnector/types.d.ts +2 -0
  56. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  57. package/dist/types/api.d.ts +6 -4
  58. package/dist/types/api.d.ts.map +1 -1
  59. package/dist/types/common/testUtil.d.ts +1 -0
  60. package/dist/types/common/testUtil.d.ts.map +1 -1
  61. package/dist/types/common/types.d.ts +2 -1
  62. package/dist/types/common/types.d.ts.map +1 -1
  63. package/dist/types/index.d.ts +4 -1
  64. package/dist/types/index.d.ts.map +1 -1
  65. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_SDKConnector","_interopRequireDefault","require","_types","_Logger","_Utils","_constants","_types2","_impl","_types3","_constants2","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","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","Boolean","prototype","valueOf","call","WxcCallRecordingConnector","exports","_Eventing","webex","logger","_this$webex$internal$","_this$webex$internal$2","_this","_classCallCheck2","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","_event$data","wrap","_context","prev","next","data","activity","abrupt","emit","COMMON_EVENT_KEYS","CALL_RECORDING_CREATED","stop","_x","_ref2","_callee2","_event$data2","_t","_context2","eventSubType","RECORDING_EVENT_SUBTYPE","TRASH","PURGE","RESTORE","CALL_RECORDING_DELETED","CALL_RECORDING_UPDATED","_x2","_ref3","_callee3","_event$data3","_context3","_x3","sdkConnector","SDKConnector","getWebex","setWebex","recordingServiceUrl","internal","services","_serviceUrls","hydraDeveloperApi","get","_activeServices","registerRecordingListeners","log","setLogger","level","CALL_RECORDING_FILE","_inherits2","_createClass2","key","value","buildRecordingsUrl","options","_options$to","_options$status","_options$max","params","URLSearchParams","fromDate","from","_options$days","date","Date","setDate","getDate","days","DEFAULT_NUMBER_OF_DAYS","toISOString","toDate","to","append","FROM","TO","STATUS","status","DEFAULT_STATUS","MAX","concat","max","DEFAULT_MAX","optionalParams","SERVICE_TYPE","serviceType","FORMAT","format","OWNER_TYPE","ownerType","STORAGE_REGION","storageRegion","LOCATION_ID","locationId","TOPIC","topic","_ref4","_ref5","_slicedToArray2","CONVERGED_RECORDINGS","toString","getCallRecording","request","dispatchGetCallRecording","type","RecordingRequestType","LIST","getRecordings","DETAIL","getRecording","recordingId","METADATA","getRecordingMetadata","BY_CALL_SESSION","getRecordingsByCallSessionId","callSessionId","exhaustiveCheck","Error","_stringify","_getRecordings","_callee4","loggerContext","_response$headers","_response$body","_body$items","_responseDetails$data","_responseDetails$data2","url","response","body","responseDetails","errorInfo","_t2","_context4","file","method","METHODS","GET_RECORDINGS","info","METHOD_START_MESSAGE","uri","HTTP_METHODS","GET","service","ALLOWED_SERVICES","HYDRA_DEVELOPER_API","webexUserRequest","headers","WEBEX_USER_REQUEST_HEADER","sent","trackingid","statusCode","Number","SUCCESS_STATUS_CODE","recordings","items","message","SUCCESS_MESSAGE","error","uploadLogs","serviceErrorCodeHandler","_x4","_getRecording","_callee5","_response$headers2","_t3","_context5","GET_RECORDING","recording","_x5","_getRecordingsByCallSessionId","_callee6","_listResponse$data$re","listResponse","filtered","_context6","GET_RECORDINGS_BY_CALL_SESSION_ID","_recording$serviceDat","serviceData","RECORDING_NOT_FOUND_MESSAGE","_x6","_x7","_getRecordingMetadata","_callee7","_response$headers3","_t4","_context7","GET_RECORDING_METADATA","metadata","_x8","_deleteRecording","_callee8","_response$headers4","_t5","_context8","DELETE_RECORDING","reason","comment","DELETE","_keys","deleteRecording","_x9","_x0","registerListener","MOBIUS_EVENT_KEYS","RECORDING_EVENT_CREATED","handleRecordingCreatedEvent","RECORDING_EVENT_UPDATED","handleRecordingUpdatedEvent","RECORDING_EVENT_DELETED","handleRecordingDeletedEvent","Eventing"],"sources":["WxcCallRecordingConnector.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable no-underscore-dangle */\nimport SDKConnector from '../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport {ALLOWED_SERVICES, HTTP_METHODS, WebexRequestPayload} from '../common/types';\nimport log from '../Logger';\nimport {serviceErrorCodeHandler, uploadLogs} from '../common/Utils';\nimport {METHOD_START_MESSAGE, SUCCESS_MESSAGE, SUCCESS_STATUS_CODE} from '../common/constants';\nimport {\n CallRecordingEventTypes,\n COMMON_EVENT_KEYS,\n MOBIUS_EVENT_KEYS,\n RECORDING_EVENT_SUBTYPE,\n RecordingEvent,\n} from '../Events/types';\nimport {Eventing} from '../Events/impl';\nimport {\n DeleteRecordingOptions,\n GetCallRecordingRequest,\n GetRecordingsOptions,\n ICallRecording,\n LoggerInterface,\n Recording,\n RecordingDeleteResponse,\n RecordingListBody,\n RecordingListResponse,\n RecordingMetadata,\n RecordingMetadataResponse,\n RecordingRequestType,\n RecordingResponse,\n RecordingResponseFor,\n} from './types';\nimport {\n CALL_RECORDING_FILE,\n CONVERGED_RECORDINGS,\n DEFAULT_MAX,\n DEFAULT_NUMBER_OF_DAYS,\n DEFAULT_STATUS,\n FORMAT,\n FROM,\n LOCATION_ID,\n MAX,\n METADATA,\n METHODS,\n OWNER_TYPE,\n RECORDING_NOT_FOUND_MESSAGE,\n SERVICE_TYPE,\n STATUS,\n STORAGE_REGION,\n TO,\n TOPIC,\n WEBEX_USER_REQUEST_HEADER,\n} from './constants';\n\n/**\n * Webex Calling (WXC) backend connector for Post Call Recording.\n *\n * Owns everything backend-specific for the Webex Calling cloud `convergedRecordings` capability:\n * resolving the hydra developer API base URL from the u2c catalog, the REST read/delete calls, and\n * subscribing to the `convergedRecordings.*` Mercury events (re-emitting them as typed\n * `callRecording:*` events). The {@link CallRecording} facade selects this connector when the\n * resolved calling backend is WXC.\n */\nexport class WxcCallRecordingConnector\n extends Eventing<CallRecordingEventTypes>\n implements ICallRecording\n{\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private recordingServiceUrl: string;\n\n /**\n * @param webex - `Webex SDK` instance.\n * @param logger - Logger interface used to set the log level for the module.\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n super();\n this.sdkConnector = SDKConnector;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n\n // Resolve the Post Call Recording base URL (hydra developer API) directly from the u2c\n // service catalog. The catalog is populated by the host SDK's service discovery, so no\n // dedicated recording plugin is required.\n this.recordingServiceUrl =\n this.webex.internal.services._serviceUrls?.hydraDeveloperApi ||\n this.webex.internal.services.get(\n this.webex.internal.services._activeServices?.hydraDeveloperApi as string\n );\n\n this.registerRecordingListeners();\n log.setLogger(logger.level, CALL_RECORDING_FILE);\n }\n\n /**\n * Builds the `convergedRecordings` collection URL with the list query parameters.\n *\n * The converged recordings API only returns results when the request is bounded by BOTH a\n * `from` and a `to` timestamp, so this method always sends both (a `from`-only request comes\n * back empty). When the caller does not supply an explicit `from`, it is derived from the\n * `days` lookback (`now - days`, default {@link DEFAULT_NUMBER_OF_DAYS}); when `to` is omitted\n * it defaults to the current time (`now`). `status` and `max` default to `available` and `30`.\n * The remaining filters (`serviceType`, `format`, `ownerType`, `storageRegion`, `locationId`,\n * `topic`) are pass-through and only appended when the caller provides them.\n *\n * @param options - Optional time window/filtering/pagination from {@link GetRecordingsOptions}.\n * @returns The fully-qualified request URL.\n */\n private buildRecordingsUrl(options?: GetRecordingsOptions): string {\n const params = new URLSearchParams();\n\n let fromDate = options?.from;\n if (!fromDate) {\n const date = new Date();\n date.setDate(date.getDate() - (options?.days ?? DEFAULT_NUMBER_OF_DAYS));\n fromDate = date.toISOString();\n }\n const toDate = options?.to ?? new Date().toISOString();\n\n params.append(FROM, fromDate);\n params.append(TO, toDate);\n params.append(STATUS, options?.status ?? DEFAULT_STATUS);\n params.append(MAX, `${options?.max ?? DEFAULT_MAX}`);\n\n // Optional pass-through filters: only sent when the caller provides them so the API can apply\n // its own defaults for any that are omitted.\n const optionalParams: Array<[string, string | undefined]> = [\n [SERVICE_TYPE, options?.serviceType],\n [FORMAT, options?.format],\n [OWNER_TYPE, options?.ownerType],\n [STORAGE_REGION, options?.storageRegion],\n [LOCATION_ID, options?.locationId],\n [TOPIC, options?.topic],\n ];\n optionalParams.forEach(([key, value]) => {\n if (value) {\n params.append(key, value);\n }\n });\n\n return `${this.recordingServiceUrl}/${CONVERGED_RECORDINGS}?${params.toString()}`;\n }\n\n /**\n * Reads Post Call Recordings, dispatching to the matching operation based on the request `type`.\n * The concrete response type is inferred per request via {@link RecordingResponseFor}.\n *\n * @param request - The discriminated read request.\n */\n public getCallRecording<T extends GetCallRecordingRequest>(\n request: T\n ): Promise<RecordingResponseFor<T>> {\n return this.dispatchGetCallRecording(request) as Promise<RecordingResponseFor<T>>;\n }\n\n /**\n * Internal dispatcher for {@link getCallRecording}. Routes the discriminated request to the\n * backend-specific read method. Kept separate from the public generic signature so the switch\n * runs against a concrete union (with exhaustiveness checking) and the conditional return type is\n * narrowed in exactly one place.\n *\n * @param request - The discriminated read request.\n */\n private dispatchGetCallRecording(\n request: GetCallRecordingRequest\n ): Promise<RecordingListResponse | RecordingResponse | RecordingMetadataResponse> {\n switch (request.type) {\n case RecordingRequestType.LIST:\n return this.getRecordings(request.options);\n\n case RecordingRequestType.DETAIL:\n return this.getRecording(request.recordingId);\n\n case RecordingRequestType.METADATA:\n return this.getRecordingMetadata(request.recordingId);\n\n case RecordingRequestType.BY_CALL_SESSION:\n return this.getRecordingsByCallSessionId(request.callSessionId, request.options);\n\n default: {\n const exhaustiveCheck: never = request;\n\n throw new Error(`Unsupported recording request type: ${JSON.stringify(exhaustiveCheck)}`);\n }\n }\n }\n\n /**\n * Fetches the converged recordings for the current user.\n * @param options - Optional filters and pagination parameters.\n */\n private async getRecordings(options?: GetRecordingsOptions): Promise<RecordingListResponse> {\n const loggerContext = {\n file: CALL_RECORDING_FILE,\n method: METHODS.GET_RECORDINGS,\n };\n\n log.info(\n `${METHOD_START_MESSAGE} with options=${JSON.stringify(options ?? {})}`,\n loggerContext\n );\n\n try {\n const url = this.buildRecordingsUrl(options);\n\n const response = <WebexRequestPayload>await this.webex.request({\n uri: url,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.HYDRA_DEVELOPER_API,\n ...(options?.webexUserRequest ? {headers: {[WEBEX_USER_REQUEST_HEADER]: 'true'}} : {}),\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const body = (response.body ?? {}) as RecordingListBody;\n\n const responseDetails: RecordingListResponse = {\n statusCode: Number(response.statusCode) || SUCCESS_STATUS_CODE,\n data: {\n recordings: body.items ?? [],\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(\n `Successfully retrieved ${responseDetails.data.recordings?.length ?? 0} recordings`,\n loggerContext\n );\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to get recordings: ${JSON.stringify(err)}`, loggerContext);\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n\n return serviceErrorCodeHandler(errorInfo, loggerContext) as Promise<RecordingListResponse>;\n }\n }\n\n /**\n * Fetches a single converged recording by its id.\n * @param recordingId - The recording id (`id`).\n */\n private async getRecording(recordingId: string): Promise<RecordingResponse> {\n const loggerContext = {\n file: CALL_RECORDING_FILE,\n method: METHODS.GET_RECORDING,\n };\n\n log.info(`${METHOD_START_MESSAGE} with recordingId=${recordingId}`, loggerContext);\n\n try {\n const url = `${this.recordingServiceUrl}/${CONVERGED_RECORDINGS}/${recordingId}`;\n\n const response = <WebexRequestPayload>await this.webex.request({\n uri: url,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.HYDRA_DEVELOPER_API,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const responseDetails: RecordingResponse = {\n statusCode: Number(response.statusCode) || SUCCESS_STATUS_CODE,\n data: {\n recording: response.body as Recording,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(`Successfully retrieved recording ${recordingId}`, loggerContext);\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to get recording: ${JSON.stringify(err)}`, loggerContext);\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n\n return serviceErrorCodeHandler(errorInfo, loggerContext) as Promise<RecordingResponse>;\n }\n }\n\n /**\n * Returns all recordings linked to a given call session id.\n *\n * Note (documented API gap): the recording API does not expose a confirmed server-side query parameter\n * to filter by call session id, so a list is fetched and filtered client-side on\n * `serviceData.callSessionId`. The scan is bounded by the list query, so `options` is forwarded\n * to {@link getRecordings} to let callers widen the time window/status/page when the target\n * session may fall outside the defaults.\n *\n * @param callSessionId - The call session id to filter by.\n * @param options - Optional list query forwarded to {@link getRecordings} to control the\n * set of recordings scanned before filtering.\n */\n private async getRecordingsByCallSessionId(\n callSessionId: string,\n options?: GetRecordingsOptions\n ): Promise<RecordingListResponse> {\n const loggerContext = {\n file: CALL_RECORDING_FILE,\n method: METHODS.GET_RECORDINGS_BY_CALL_SESSION_ID,\n };\n\n log.info(`${METHOD_START_MESSAGE} with callSessionId=${callSessionId}`, loggerContext);\n\n const listResponse = await this.getRecordings(options);\n\n if (listResponse.statusCode !== SUCCESS_STATUS_CODE) {\n return listResponse;\n }\n\n const filtered = (listResponse.data.recordings ?? []).filter(\n (recording) => recording.serviceData?.callSessionId === callSessionId\n );\n\n if (filtered.length === 0) {\n log.info(RECORDING_NOT_FOUND_MESSAGE, loggerContext);\n } else {\n log.log(\n `Successfully retrieved ${filtered.length} recordings for call session ${callSessionId}`,\n loggerContext\n );\n }\n\n return {\n statusCode: SUCCESS_STATUS_CODE,\n data: {\n recordings: filtered,\n },\n message: SUCCESS_MESSAGE,\n };\n }\n\n /**\n * Fetches the metadata for a single recording.\n * @param recordingId - The recording id (`id`).\n */\n private async getRecordingMetadata(recordingId: string): Promise<RecordingMetadataResponse> {\n const loggerContext = {\n file: CALL_RECORDING_FILE,\n method: METHODS.GET_RECORDING_METADATA,\n };\n\n log.info(`${METHOD_START_MESSAGE} with recordingId=${recordingId}`, loggerContext);\n\n try {\n const url = `${this.recordingServiceUrl}/${CONVERGED_RECORDINGS}/${recordingId}/${METADATA}`;\n\n const response = <WebexRequestPayload>await this.webex.request({\n uri: url,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.HYDRA_DEVELOPER_API,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const responseDetails: RecordingMetadataResponse = {\n statusCode: Number(response.statusCode) || SUCCESS_STATUS_CODE,\n data: {\n metadata: response.body as RecordingMetadata,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(`Successfully retrieved metadata for recording ${recordingId}`, loggerContext);\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to get recording metadata: ${JSON.stringify(err)}`, loggerContext);\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n\n return serviceErrorCodeHandler(\n errorInfo,\n loggerContext\n ) as Promise<RecordingMetadataResponse>;\n }\n }\n\n /**\n * Permanently deletes a single recording. Per the API the recording cannot be recovered.\n * @param recordingId - The recording id (`id`) to delete.\n * @param options - Optional `reason`/`comment`, only required for Compliance Officer deletions.\n */\n public async deleteRecording(\n recordingId: string,\n options?: DeleteRecordingOptions\n ): Promise<RecordingDeleteResponse> {\n const loggerContext = {\n file: CALL_RECORDING_FILE,\n method: METHODS.DELETE_RECORDING,\n };\n\n log.info(`${METHOD_START_MESSAGE} with recordingId=${recordingId}`, loggerContext);\n\n try {\n const url = `${this.recordingServiceUrl}/${CONVERGED_RECORDINGS}/${recordingId}`;\n\n const body: DeleteRecordingOptions = {};\n if (options?.reason) {\n body.reason = options.reason;\n }\n if (options?.comment) {\n body.comment = options.comment;\n }\n\n const response = <WebexRequestPayload>await this.webex.request({\n uri: url,\n method: HTTP_METHODS.DELETE,\n service: ALLOWED_SERVICES.HYDRA_DEVELOPER_API,\n ...(Object.keys(body).length > 0 ? {body} : {}),\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const responseDetails: RecordingDeleteResponse = {\n statusCode: Number(response.statusCode) || SUCCESS_STATUS_CODE,\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n log.log(`Successfully deleted recording ${recordingId}`, loggerContext);\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to delete recording: ${JSON.stringify(err)}`, loggerContext);\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n\n return serviceErrorCodeHandler(errorInfo, loggerContext) as Promise<RecordingDeleteResponse>;\n }\n }\n\n // `event` is optional because SDKConnector.registerListener invokes callbacks as `(data?: T)`.\n // `data` uses optional chaining at runtime because malformed Mercury payloads may omit it.\n handleRecordingCreatedEvent = async (event?: RecordingEvent) => {\n if (!event?.data?.activity) {\n return;\n }\n\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, event);\n };\n\n /**\n * The backend expresses the full recording lifecycle through `convergedRecordings.updated` events\n * qualified by an `eventSubType` (rather than dedicated created/deleted events):\n * - `TRASH` (soft delete) / `PURGE` (permanent delete) -> surfaced as `callRecording:deleted`\n * so consumers can drop the recording from the active list.\n * - `RESTORE` (restored from trash) -> surfaced as `callRecording:created` so it is re-added.\n * - `SUMMARY_CREATE` (AI summary/transcript ready) and anything else -> `callRecording:updated`.\n *\n * The full event (including `data.eventSubType`) is always forwarded, so consumers that need to\n * distinguish a soft delete from a permanent purge can still inspect it.\n */\n handleRecordingUpdatedEvent = async (event?: RecordingEvent) => {\n if (!event?.data?.activity) {\n return;\n }\n\n switch (event.data.eventSubType) {\n case RECORDING_EVENT_SUBTYPE.TRASH:\n case RECORDING_EVENT_SUBTYPE.PURGE:\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, event);\n break;\n\n case RECORDING_EVENT_SUBTYPE.RESTORE:\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, event);\n break;\n\n default:\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, event);\n }\n };\n\n handleRecordingDeletedEvent = async (event?: RecordingEvent) => {\n if (!event?.data?.activity) {\n return;\n }\n\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, event);\n };\n\n /**\n * Subscribes to the recording Mercury events and re-emits them as typed client events.\n */\n private registerRecordingListeners() {\n this.sdkConnector.registerListener<RecordingEvent>(\n MOBIUS_EVENT_KEYS.RECORDING_EVENT_CREATED,\n this.handleRecordingCreatedEvent\n );\n this.sdkConnector.registerListener<RecordingEvent>(\n MOBIUS_EVENT_KEYS.RECORDING_EVENT_UPDATED,\n this.handleRecordingUpdatedEvent\n );\n this.sdkConnector.registerListener<RecordingEvent>(\n MOBIUS_EVENT_KEYS.RECORDING_EVENT_DELETED,\n this.handleRecordingDeletedEvent\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}