@webex/calling 3.12.0-next.70 → 3.12.0-next.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CallRecording/CallRecording.js +5 -3
- package/dist/CallRecording/CallRecording.js.map +1 -1
- package/dist/CallRecording/WxcCallRecordingConnector.js +24 -23
- package/dist/CallRecording/WxcCallRecordingConnector.js.map +1 -1
- package/dist/CallRecording/WxcCallRecordingConnector.test.js +13 -12
- package/dist/CallRecording/WxcCallRecordingConnector.test.js.map +1 -1
- package/dist/CallRecording/constants.js +2 -1
- package/dist/CallRecording/constants.js.map +1 -1
- package/dist/CallRecording/types.js +4 -3
- package/dist/CallRecording/types.js.map +1 -1
- package/dist/module/CallRecording/WxcCallRecordingConnector.js +6 -13
- package/dist/module/CallRecording/constants.js +1 -0
- package/dist/types/CallRecording/CallRecording.d.ts.map +1 -1
- package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts +1 -1
- package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts.map +1 -1
- package/dist/types/CallRecording/constants.d.ts +1 -0
- package/dist/types/CallRecording/constants.d.ts.map +1 -1
- package/dist/types/CallRecording/types.d.ts +1 -1
- package/dist/types/CallRecording/types.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -121,9 +121,11 @@ var CallRecording = exports.CallRecording = /*#__PURE__*/function (_Eventing) {
|
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
/**
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
124
|
+
* Moves a single recording to the recycle bin (soft delete) via
|
|
125
|
+
* `POST /convergedRecordings/softDelete`. Requires `spark:recordings_write` on the access token;
|
|
126
|
+
* the recording can be restored from the recycle bin via the platform restore API.
|
|
127
|
+
* @param recordingId - The recording id (`id`) to move to the recycle bin.
|
|
128
|
+
* @param options - Deprecated. Ignored (compliance permanent delete is not exposed).
|
|
127
129
|
*/
|
|
128
130
|
}, {
|
|
129
131
|
key: "deleteRecording",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_SDKConnector","_interopRequireDefault","require","_types","_Logger","_Utils","_constants","_types2","_impl","_WxcCallRecordingConnector","_constants2","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","CallRecording","exports","_Eventing","webex","logger","_this","_classCallCheck2","_defineProperty2","sdkConnector","SDKConnector","getWebex","setWebex","callingBackend","getCallingBackEnd","initializeBackendConnector","forwardRecordingEvents","log","setLogger","level","CALL_RECORDING_FILE","_inherits2","_createClass2","key","value","info","METHOD_START_MESSAGE","file","method","METHODS","INITIALIZE_BACKEND_CONNECTOR","CALLING_BACKEND","WXC","backendConnector","WxcCallRecordingConnector","Error","_this2","on","COMMON_EVENT_KEYS","CALL_RECORDING_CREATED","event","emit","CALL_RECORDING_UPDATED","CALL_RECORDING_DELETED","getCallRecording","request","_deleteRecording","_asyncToGenerator2","_regenerator","mark","_callee","recordingId","options","wrap","_context","prev","next","abrupt","deleteRecording","stop","_x","_x2","arguments","Eventing","createCallRecordingClient"],"sources":["CallRecording.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable no-underscore-dangle */\nimport SDKConnector from '../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport {CALLING_BACKEND} from '../common/types';\nimport log from '../Logger';\nimport {getCallingBackEnd} from '../common/Utils';\nimport {METHOD_START_MESSAGE} from '../common/constants';\nimport {CallRecordingEventTypes, COMMON_EVENT_KEYS, RecordingEvent} from '../Events/types';\nimport {Eventing} from '../Events/impl';\nimport {\n DeleteRecordingOptions,\n GetCallRecordingRequest,\n ICallRecording,\n LoggerInterface,\n RecordingDeleteResponse,\n RecordingResponseFor,\n} from './types';\nimport {WxcCallRecordingConnector} from './WxcCallRecordingConnector';\nimport {CALL_RECORDING_FILE, METHODS} from './constants';\n\n/**\n * `CallRecording` is the backend-agnostic facade for Post Call Recording. It selects a\n * backend-specific connector based on the resolved calling backend and delegates all read/delete\n * operations to it, while re-emitting the connector's recording lifecycle events.\n *\n * Post Call Recording (`convergedRecordings`) is a Webex Calling cloud capability, so only the\n * Webex Calling (WXC) backend is supported today; other backends (BWRKS/UCM/INVALID) are rejected,\n * following the same convention used by the Voicemail client. Adding support for another backend is\n * a matter of dropping in a new connector and a `case` here — no consumer-facing changes required.\n *\n * @example\n * ```javascript\n * const callRecording = createCallRecordingClient(webex, logger);\n * ```\n */\nexport class CallRecording extends Eventing<CallRecordingEventTypes> implements ICallRecording {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private callingBackend: CALLING_BACKEND;\n\n private backendConnector!: ICallRecording;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, public 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 this.callingBackend = getCallingBackEnd(this.webex);\n this.initializeBackendConnector();\n this.forwardRecordingEvents();\n log.setLogger(logger.level, CALL_RECORDING_FILE);\n }\n\n /**\n * Sets up the backend-specific recording connector based on the resolved calling backend.\n */\n private initializeBackendConnector() {\n log.info(METHOD_START_MESSAGE, {\n file: CALL_RECORDING_FILE,\n method: METHODS.INITIALIZE_BACKEND_CONNECTOR,\n });\n\n switch (this.callingBackend) {\n case CALLING_BACKEND.WXC: {\n this.backendConnector = new WxcCallRecordingConnector(this.webex, this.logger);\n break;\n }\n\n default: {\n throw new Error('Calling backend is not identified, exiting....');\n }\n }\n }\n\n /**\n * Re-emits the active connector's recording lifecycle events as facade events so consumers can\n * subscribe on the `CallRecording` instance regardless of the underlying backend.\n */\n private forwardRecordingEvents() {\n this.backendConnector.on(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, (event: RecordingEvent) =>\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, event)\n );\n this.backendConnector.on(COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, (event: RecordingEvent) =>\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, event)\n );\n this.backendConnector.on(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, (event: RecordingEvent) =>\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, event)\n );\n }\n\n /**\n * Reads Post Call Recordings, delegating to the active backend connector. The operation is\n * selected by the request `type` and the response type is inferred per request.\n * @param request - The discriminated read request.\n */\n public getCallRecording<T extends GetCallRecordingRequest>(\n request: T\n ): Promise<RecordingResponseFor<T>> {\n return this.backendConnector.getCallRecording(request);\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 return this.backendConnector.deleteRecording(recordingId, options);\n }\n}\n\n/**\n * Creates a `CallRecording` client instance for accessing Post Call Recording APIs.\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 createCallRecordingClient = (\n webex: WebexSDK,\n logger: LoggerInterface\n): ICallRecording => new CallRecording(webex, logger);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_SDKConnector","_interopRequireDefault","require","_types","_Logger","_Utils","_constants","_types2","_impl","_WxcCallRecordingConnector","_constants2","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","CallRecording","exports","_Eventing","webex","logger","_this","_classCallCheck2","_defineProperty2","sdkConnector","SDKConnector","getWebex","setWebex","callingBackend","getCallingBackEnd","initializeBackendConnector","forwardRecordingEvents","log","setLogger","level","CALL_RECORDING_FILE","_inherits2","_createClass2","key","value","info","METHOD_START_MESSAGE","file","method","METHODS","INITIALIZE_BACKEND_CONNECTOR","CALLING_BACKEND","WXC","backendConnector","WxcCallRecordingConnector","Error","_this2","on","COMMON_EVENT_KEYS","CALL_RECORDING_CREATED","event","emit","CALL_RECORDING_UPDATED","CALL_RECORDING_DELETED","getCallRecording","request","_deleteRecording","_asyncToGenerator2","_regenerator","mark","_callee","recordingId","options","wrap","_context","prev","next","abrupt","deleteRecording","stop","_x","_x2","arguments","Eventing","createCallRecordingClient"],"sources":["CallRecording.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable no-underscore-dangle */\nimport SDKConnector from '../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport {CALLING_BACKEND} from '../common/types';\nimport log from '../Logger';\nimport {getCallingBackEnd} from '../common/Utils';\nimport {METHOD_START_MESSAGE} from '../common/constants';\nimport {CallRecordingEventTypes, COMMON_EVENT_KEYS, RecordingEvent} from '../Events/types';\nimport {Eventing} from '../Events/impl';\nimport {\n DeleteRecordingOptions,\n GetCallRecordingRequest,\n ICallRecording,\n LoggerInterface,\n RecordingDeleteResponse,\n RecordingResponseFor,\n} from './types';\nimport {WxcCallRecordingConnector} from './WxcCallRecordingConnector';\nimport {CALL_RECORDING_FILE, METHODS} from './constants';\n\n/**\n * `CallRecording` is the backend-agnostic facade for Post Call Recording. It selects a\n * backend-specific connector based on the resolved calling backend and delegates all read/delete\n * operations to it, while re-emitting the connector's recording lifecycle events.\n *\n * Post Call Recording (`convergedRecordings`) is a Webex Calling cloud capability, so only the\n * Webex Calling (WXC) backend is supported today; other backends (BWRKS/UCM/INVALID) are rejected,\n * following the same convention used by the Voicemail client. Adding support for another backend is\n * a matter of dropping in a new connector and a `case` here — no consumer-facing changes required.\n *\n * @example\n * ```javascript\n * const callRecording = createCallRecordingClient(webex, logger);\n * ```\n */\nexport class CallRecording extends Eventing<CallRecordingEventTypes> implements ICallRecording {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private callingBackend: CALLING_BACKEND;\n\n private backendConnector!: ICallRecording;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, public 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 this.callingBackend = getCallingBackEnd(this.webex);\n this.initializeBackendConnector();\n this.forwardRecordingEvents();\n log.setLogger(logger.level, CALL_RECORDING_FILE);\n }\n\n /**\n * Sets up the backend-specific recording connector based on the resolved calling backend.\n */\n private initializeBackendConnector() {\n log.info(METHOD_START_MESSAGE, {\n file: CALL_RECORDING_FILE,\n method: METHODS.INITIALIZE_BACKEND_CONNECTOR,\n });\n\n switch (this.callingBackend) {\n case CALLING_BACKEND.WXC: {\n this.backendConnector = new WxcCallRecordingConnector(this.webex, this.logger);\n break;\n }\n\n default: {\n throw new Error('Calling backend is not identified, exiting....');\n }\n }\n }\n\n /**\n * Re-emits the active connector's recording lifecycle events as facade events so consumers can\n * subscribe on the `CallRecording` instance regardless of the underlying backend.\n */\n private forwardRecordingEvents() {\n this.backendConnector.on(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, (event: RecordingEvent) =>\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, event)\n );\n this.backendConnector.on(COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, (event: RecordingEvent) =>\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, event)\n );\n this.backendConnector.on(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, (event: RecordingEvent) =>\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, event)\n );\n }\n\n /**\n * Reads Post Call Recordings, delegating to the active backend connector. The operation is\n * selected by the request `type` and the response type is inferred per request.\n * @param request - The discriminated read request.\n */\n public getCallRecording<T extends GetCallRecordingRequest>(\n request: T\n ): Promise<RecordingResponseFor<T>> {\n return this.backendConnector.getCallRecording(request);\n }\n\n /**\n * Moves a single recording to the recycle bin (soft delete) via\n * `POST /convergedRecordings/softDelete`. Requires `spark:recordings_write` on the access token;\n * the recording can be restored from the recycle bin via the platform restore API.\n * @param recordingId - The recording id (`id`) to move to the recycle bin.\n * @param options - Deprecated. Ignored (compliance permanent delete is not exposed).\n */\n public async deleteRecording(\n recordingId: string,\n options?: DeleteRecordingOptions\n ): Promise<RecordingDeleteResponse> {\n return this.backendConnector.deleteRecording(recordingId, options);\n }\n}\n\n/**\n * Creates a `CallRecording` client instance for accessing Post Call Recording APIs.\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 createCallRecordingClient = (\n webex: WebexSDK,\n logger: LoggerInterface\n): ICallRecording => new CallRecording(webex, logger);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
|
|
4
|
-
var _Object$
|
|
4
|
+
var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
|
|
5
5
|
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
|
|
6
6
|
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
7
7
|
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
|
|
@@ -13,7 +13,6 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
13
13
|
});
|
|
14
14
|
exports.WxcCallRecordingConnector = void 0;
|
|
15
15
|
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
16
|
-
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
17
16
|
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
18
17
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
|
|
19
18
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
@@ -32,7 +31,7 @@ var _types2 = require("../Events/types");
|
|
|
32
31
|
var _impl = require("../Events/impl");
|
|
33
32
|
var _types3 = require("./types");
|
|
34
33
|
var _constants2 = require("./constants");
|
|
35
|
-
function ownKeys(e, r) { var t = _Object$
|
|
34
|
+
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
36
35
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
37
36
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
38
37
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /* eslint-disable dot-notation */ /* eslint-disable no-underscore-dangle */
|
|
@@ -495,16 +494,24 @@ var WxcCallRecordingConnector = exports.WxcCallRecordingConnector = /*#__PURE__*
|
|
|
495
494
|
return getRecordingMetadata;
|
|
496
495
|
}()
|
|
497
496
|
/**
|
|
498
|
-
*
|
|
499
|
-
*
|
|
500
|
-
*
|
|
497
|
+
* Moves a recording to the recycle bin (soft delete). Matches native Webex user delete:
|
|
498
|
+
* `POST /convergedRecordings/softDelete` with `recordingIds: [recordingId]`.
|
|
499
|
+
* Requires `spark:recordings_write` on the access token.
|
|
500
|
+
*
|
|
501
|
+
* Mercury emits `convergedRecordings.updated` + `eventSubType: TRASH`, which this connector
|
|
502
|
+
* surfaces as `callRecording:deleted`.
|
|
503
|
+
*
|
|
504
|
+
* @param recordingId - The recording id (`id`) to move to the recycle bin.
|
|
505
|
+
* @param _options - Deprecated. Ignored. Compliance permanent delete uses a separate API.
|
|
501
506
|
*/
|
|
502
507
|
)
|
|
503
508
|
}, {
|
|
504
509
|
key: "deleteRecording",
|
|
505
510
|
value: (function () {
|
|
506
|
-
var _deleteRecording = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8(recordingId,
|
|
507
|
-
|
|
511
|
+
var _deleteRecording = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8(recordingId,
|
|
512
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- kept for ICallRecording signature parity; soft delete ignores options
|
|
513
|
+
_options) {
|
|
514
|
+
var loggerContext, _response$headers4, url, response, responseDetails, errorInfo, _t5;
|
|
508
515
|
return _regenerator.default.wrap(function (_context8) {
|
|
509
516
|
while (1) switch (_context8.prev = _context8.next) {
|
|
510
517
|
case 0:
|
|
@@ -514,22 +521,16 @@ var WxcCallRecordingConnector = exports.WxcCallRecordingConnector = /*#__PURE__*
|
|
|
514
521
|
};
|
|
515
522
|
_Logger.default.info("".concat(_constants.METHOD_START_MESSAGE, " with recordingId=").concat(recordingId), loggerContext);
|
|
516
523
|
_context8.prev = 1;
|
|
517
|
-
url = "".concat(this.recordingServiceUrl, "/").concat(_constants2.CONVERGED_RECORDINGS, "/").concat(
|
|
518
|
-
body = {};
|
|
519
|
-
if (options !== null && options !== void 0 && options.reason) {
|
|
520
|
-
body.reason = options.reason;
|
|
521
|
-
}
|
|
522
|
-
if (options !== null && options !== void 0 && options.comment) {
|
|
523
|
-
body.comment = options.comment;
|
|
524
|
-
}
|
|
524
|
+
url = "".concat(this.recordingServiceUrl, "/").concat(_constants2.CONVERGED_RECORDINGS, "/").concat(_constants2.SOFT_DELETE);
|
|
525
525
|
_context8.next = 2;
|
|
526
|
-
return this.webex.request(
|
|
526
|
+
return this.webex.request({
|
|
527
527
|
uri: url,
|
|
528
|
-
method: _types.HTTP_METHODS.
|
|
529
|
-
service: _types.ALLOWED_SERVICES.HYDRA_DEVELOPER_API
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
528
|
+
method: _types.HTTP_METHODS.POST,
|
|
529
|
+
service: _types.ALLOWED_SERVICES.HYDRA_DEVELOPER_API,
|
|
530
|
+
body: {
|
|
531
|
+
recordingIds: [recordingId]
|
|
532
|
+
}
|
|
533
|
+
});
|
|
533
534
|
case 2:
|
|
534
535
|
response = _context8.sent;
|
|
535
536
|
_Logger.default.log("Response trackingId: ".concat(response === null || response === void 0 ? void 0 : (_response$headers4 = response.headers) === null || _response$headers4 === void 0 ? void 0 : _response$headers4.trackingid), loggerContext);
|
|
@@ -538,7 +539,7 @@ var WxcCallRecordingConnector = exports.WxcCallRecordingConnector = /*#__PURE__*
|
|
|
538
539
|
data: {},
|
|
539
540
|
message: _constants.SUCCESS_MESSAGE
|
|
540
541
|
};
|
|
541
|
-
_Logger.default.log("Successfully
|
|
542
|
+
_Logger.default.log("Successfully moved recording ".concat(recordingId, " to recycle bin"), loggerContext);
|
|
542
543
|
return _context8.abrupt("return", responseDetails);
|
|
543
544
|
case 3:
|
|
544
545
|
_context8.prev = 3;
|
|
@@ -1 +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":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AAOA,IAAAM,KAAA,GAAAN,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AAgBA,IAAAQ,WAAA,GAAAR,OAAA;AAoBqB,SAAAS,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,aAAA,CAAAH,CAAA,OAAAI,6BAAA,QAAAC,CAAA,GAAAD,6BAAA,CAAAJ,CAAA,GAAAC,CAAA,KAAAI,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAL,CAAA,WAAAM,gCAAA,CAAAP,CAAA,EAAAC,CAAA,EAAAO,UAAA,OAAAN,CAAA,CAAAO,IAAA,CAAAC,KAAA,CAAAR,CAAA,EAAAG,CAAA,YAAAH,CAAA;AAAA,SAAAS,cAAAX,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAW,SAAA,CAAAC,MAAA,EAAAZ,CAAA,UAAAC,CAAA,WAAAU,SAAA,CAAAX,CAAA,IAAAW,SAAA,CAAAX,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAe,MAAA,CAAAZ,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,CAAAC,OAAA,EAAAjB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAiB,iCAAA,GAAAC,wBAAA,CAAAnB,CAAA,EAAAkB,iCAAA,CAAAhB,CAAA,KAAAH,OAAA,CAAAe,MAAA,CAAAZ,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAmB,sBAAA,CAAApB,CAAA,EAAAC,CAAA,EAAAM,gCAAA,CAAAL,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAAA,SAAAqB,WAAAnB,CAAA,EAAAG,CAAA,EAAAL,CAAA,WAAAK,CAAA,OAAAiB,gBAAA,CAAAL,OAAA,EAAAZ,CAAA,OAAAkB,2BAAA,CAAAN,OAAA,EAAAf,CAAA,EAAAsB,yBAAA,KAAAC,kBAAA,CAAApB,CAAA,EAAAL,CAAA,YAAAsB,gBAAA,CAAAL,OAAA,EAAAf,CAAA,EAAAwB,WAAA,IAAArB,CAAA,CAAAK,KAAA,CAAAR,CAAA,EAAAF,CAAA;AAAA,SAAAwB,0BAAA,cAAAtB,CAAA,IAAAyB,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAL,kBAAA,CAAAE,OAAA,iCAAAzB,CAAA,aAAAsB,yBAAA,YAAAA,0BAAA,aAAAtB,CAAA,UApDrB,kCACA;AAqDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA,IASa6B,yBAAyB,GAAAC,OAAA,CAAAD,yBAAA,0BAAAE,SAAA;EAUpC;AACF;AACA;AACA;EACE,SAAAF,0BAAYG,KAAe,EAAEC,MAAuB,EAAE;IAAA,IAAAC,qBAAA,EAAAC,sBAAA;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAAtB,OAAA,QAAAc,yBAAA;IACpDO,KAAA,GAAAjB,UAAA,OAAAU,yBAAA;IAAQ,IAAAf,gBAAA,CAAAC,OAAA,EAAAqB,KAAA;IAAA,IAAAtB,gBAAA,CAAAC,OAAA,EAAAqB,KAAA;IAAA,IAAAtB,gBAAA,CAAAC,OAAA,EAAAqB,KAAA;IA4WV;IACA;IAAA,IAAAtB,gBAAA,CAAAC,OAAA,EAAAqB,KAAA;MAAA,IAAAE,IAAA,OAAAC,kBAAA,CAAAxB,OAAA,eAAAyB,YAAA,CAAAzB,OAAA,CAAA0B,IAAA,CAC8B,SAAAC,QAAOC,KAAsB;QAAA,IAAAC,WAAA;QAAA,OAAAJ,YAAA,CAAAzB,OAAA,CAAA8B,IAAA,WAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cAAA,IACpDL,KAAK,aAALA,KAAK,gBAAAC,WAAA,GAALD,KAAK,CAAEM,IAAI,cAAAL,WAAA,eAAXA,WAAA,CAAaM,QAAQ;gBAAAJ,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAA,OAAAF,QAAA,CAAAK,MAAA;YAAA;cAI1Bf,KAAA,CAAKgB,IAAI,CAACC,yBAAiB,CAACC,sBAAsB,EAAEX,KAAK,CAAC;YAAC;YAAA;cAAA,OAAAG,QAAA,CAAAS,IAAA;UAAA;QAAA,GAAAb,OAAA;MAAA,CAC5D;MAAA,iBAAAc,EAAA;QAAA,OAAAlB,IAAA,CAAA9B,KAAA,OAAAE,SAAA;MAAA;IAAA;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAVE,IAAAI,gBAAA,CAAAC,OAAA,EAAAqB,KAAA;MAAA,IAAAqB,KAAA,OAAAlB,kBAAA,CAAAxB,OAAA,eAAAyB,YAAA,CAAAzB,OAAA,CAAA0B,IAAA,CAW8B,SAAAiB,SAAOf,KAAsB;QAAA,IAAAgB,YAAA;QAAA,IAAAC,EAAA;QAAA,OAAApB,YAAA,CAAAzB,OAAA,CAAA8B,IAAA,WAAAgB,SAAA;UAAA,kBAAAA,SAAA,CAAAd,IAAA,GAAAc,SAAA,CAAAb,IAAA;YAAA;cAAA,IACpDL,KAAK,aAALA,KAAK,gBAAAgB,YAAA,GAALhB,KAAK,CAAEM,IAAI,cAAAU,YAAA,eAAXA,YAAA,CAAaT,QAAQ;gBAAAW,SAAA,CAAAb,IAAA;gBAAA;cAAA;cAAA,OAAAa,SAAA,CAAAV,MAAA;YAAA;cAAAS,EAAA,GAIlBjB,KAAK,CAACM,IAAI,CAACa,YAAY;cAAAD,SAAA,CAAAb,IAAA,GAAAY,EAAA,KACxBG,+BAAuB,CAACC,KAAK,OAAAJ,EAAA,KAC7BG,+BAAuB,CAACE,KAAK,OAAAL,EAAA,KAI7BG,+BAAuB,CAACG,OAAO;cAAA;YAAA;cAHlC9B,KAAA,CAAKgB,IAAI,CAACC,yBAAiB,CAACc,sBAAsB,EAAExB,KAAK,CAAC;cAAC,OAAAkB,SAAA,CAAAV,MAAA;YAAA;cAI3Df,KAAA,CAAKgB,IAAI,CAACC,yBAAiB,CAACC,sBAAsB,EAAEX,KAAK,CAAC;cAAC,OAAAkB,SAAA,CAAAV,MAAA;YAAA;cAI3Df,KAAA,CAAKgB,IAAI,CAACC,yBAAiB,CAACe,sBAAsB,EAAEzB,KAAK,CAAC;YAAC;YAAA;cAAA,OAAAkB,SAAA,CAAAN,IAAA;UAAA;QAAA,GAAAG,QAAA;MAAA,CAEhE;MAAA,iBAAAW,GAAA;QAAA,OAAAZ,KAAA,CAAAjD,KAAA,OAAAE,SAAA;MAAA;IAAA;IAAA,IAAAI,gBAAA,CAAAC,OAAA,EAAAqB,KAAA;MAAA,IAAAkC,KAAA,OAAA/B,kBAAA,CAAAxB,OAAA,eAAAyB,YAAA,CAAAzB,OAAA,CAAA0B,IAAA,CAE6B,SAAA8B,SAAO5B,KAAsB;QAAA,IAAA6B,YAAA;QAAA,OAAAhC,YAAA,CAAAzB,OAAA,CAAA8B,IAAA,WAAA4B,SAAA;UAAA,kBAAAA,SAAA,CAAA1B,IAAA,GAAA0B,SAAA,CAAAzB,IAAA;YAAA;cAAA,IACpDL,KAAK,aAALA,KAAK,gBAAA6B,YAAA,GAAL7B,KAAK,CAAEM,IAAI,cAAAuB,YAAA,eAAXA,YAAA,CAAatB,QAAQ;gBAAAuB,SAAA,CAAAzB,IAAA;gBAAA;cAAA;cAAA,OAAAyB,SAAA,CAAAtB,MAAA;YAAA;cAI1Bf,KAAA,CAAKgB,IAAI,CAACC,yBAAiB,CAACc,sBAAsB,EAAExB,KAAK,CAAC;YAAC;YAAA;cAAA,OAAA8B,SAAA,CAAAlB,IAAA;UAAA;QAAA,GAAAgB,QAAA;MAAA,CAC5D;MAAA,iBAAAG,GAAA;QAAA,OAAAJ,KAAA,CAAA9D,KAAA,OAAAE,SAAA;MAAA;IAAA;IA1ZC0B,KAAA,CAAKuC,YAAY,GAAGC,qBAAY;IAChC,IAAI,CAACxC,KAAA,CAAKuC,YAAY,CAACE,QAAQ,CAAC,CAAC,EAAE;MACjCD,qBAAY,CAACE,QAAQ,CAAC9C,KAAK,CAAC;IAC9B;IACAI,KAAA,CAAKJ,KAAK,GAAGI,KAAA,CAAKuC,YAAY,CAACE,QAAQ,CAAC,CAAC;;IAEzC;IACA;IACA;IACAzC,KAAA,CAAK2C,mBAAmB,GACtB,EAAA7C,qBAAA,GAAAE,KAAA,CAAKJ,KAAK,CAACgD,QAAQ,CAACC,QAAQ,CAACC,YAAY,cAAAhD,qBAAA,uBAAzCA,qBAAA,CAA2CiD,iBAAiB,KAC5D/C,KAAA,CAAKJ,KAAK,CAACgD,QAAQ,CAACC,QAAQ,CAACG,GAAG,EAAAjD,sBAAA,GAC9BC,KAAA,CAAKJ,KAAK,CAACgD,QAAQ,CAACC,QAAQ,CAACI,eAAe,cAAAlD,sBAAA,uBAA5CA,sBAAA,CAA8CgD,iBAChD,CAAC;IAEH/C,KAAA,CAAKkD,0BAA0B,CAAC,CAAC;IACjCC,eAAG,CAACC,SAAS,CAACvD,MAAM,CAACwD,KAAK,EAAEC,+BAAmB,CAAC;IAAC,OAAAtD,KAAA;EACnD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAbE,IAAAuD,UAAA,CAAA5E,OAAA,EAAAc,yBAAA,EAAAE,SAAA;EAAA,WAAA6D,aAAA,CAAA7E,OAAA,EAAAc,yBAAA;IAAAgE,GAAA;IAAAC,KAAA,EAcA,SAAQC,kBAAkBA,CAACC,OAA8B,EAAU;MAAA,IAAAC,WAAA,EAAAC,eAAA,EAAAC,YAAA;MACjE,IAAMC,MAAM,GAAG,IAAIC,eAAe,CAAC,CAAC;MAEpC,IAAIC,QAAQ,GAAGN,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEO,IAAI;MAC5B,IAAI,CAACD,QAAQ,EAAE;QAAA,IAAAE,aAAA;QACb,IAAMC,IAAI,GAAG,IAAIC,IAAI,CAAC,CAAC;QACvBD,IAAI,CAACE,OAAO,CAACF,IAAI,CAACG,OAAO,CAAC,CAAC,KAAAJ,aAAA,GAAIR,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEa,IAAI,cAAAL,aAAA,cAAAA,aAAA,GAAIM,kCAAsB,CAAC,CAAC;QACxER,QAAQ,GAAGG,IAAI,CAACM,WAAW,CAAC,CAAC;MAC/B;MACA,IAAMC,MAAM,IAAAf,WAAA,GAAGD,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEiB,EAAE,cAAAhB,WAAA,cAAAA,WAAA,GAAI,IAAIS,IAAI,CAAC,CAAC,CAACK,WAAW,CAAC,CAAC;MAEtDX,MAAM,CAACc,MAAM,CAACC,gBAAI,EAAEb,QAAQ,CAAC;MAC7BF,MAAM,CAACc,MAAM,CAACE,cAAE,EAAEJ,MAAM,CAAC;MACzBZ,MAAM,CAACc,MAAM,CAACG,kBAAM,GAAAnB,eAAA,GAAEF,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEsB,MAAM,cAAApB,eAAA,cAAAA,eAAA,GAAIqB,0BAAc,CAAC;MACxDnB,MAAM,CAACc,MAAM,CAACM,eAAG,KAAAC,MAAA,EAAAtB,YAAA,GAAKH,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE0B,GAAG,cAAAvB,YAAA,cAAAA,YAAA,GAAIwB,uBAAW,CAAE,CAAC;;MAEpD;MACA;MACA,IAAMC,cAAmD,GAAG,CAC1D,CAACC,wBAAY,EAAE7B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE8B,WAAW,CAAC,EACpC,CAACC,kBAAM,EAAE/B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEgC,MAAM,CAAC,EACzB,CAACC,sBAAU,EAAEjC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEkC,SAAS,CAAC,EAChC,CAACC,0BAAc,EAAEnC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEoC,aAAa,CAAC,EACxC,CAACC,uBAAW,EAAErC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEsC,UAAU,CAAC,EAClC,CAACC,iBAAK,EAAEvC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEwC,KAAK,CAAC,CACxB;MACDZ,cAAc,CAAC/G,OAAO,CAAC,UAAA4H,KAAA,EAAkB;QAAA,IAAAC,KAAA,OAAAC,eAAA,CAAA5H,OAAA,EAAA0H,KAAA;UAAhB5C,GAAG,GAAA6C,KAAA;UAAE5C,KAAK,GAAA4C,KAAA;QACjC,IAAI5C,KAAK,EAAE;UACTM,MAAM,CAACc,MAAM,CAACrB,GAAG,EAAEC,KAAK,CAAC;QAC3B;MACF,CAAC,CAAC;MAEF,UAAA2B,MAAA,CAAU,IAAI,CAAC1C,mBAAmB,OAAA0C,MAAA,CAAImB,gCAAoB,OAAAnB,MAAA,CAAIrB,MAAM,CAACyC,QAAQ,CAAC,CAAC;IACjF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAhD,GAAA;IAAAC,KAAA,EAMA,SAAOgD,gBAAgBA,CACrBC,OAAU,EACwB;MAClC,OAAO,IAAI,CAACC,wBAAwB,CAACD,OAAO,CAAC;IAC/C;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAlD,GAAA;IAAAC,KAAA,EAQA,SAAQkD,wBAAwBA,CAC9BD,OAAgC,EACgD;MAChF,QAAQA,OAAO,CAACE,IAAI;QAClB,KAAKC,4BAAoB,CAACC,IAAI;UAC5B,OAAO,IAAI,CAACC,aAAa,CAACL,OAAO,CAAC/C,OAAO,CAAC;QAE5C,KAAKkD,4BAAoB,CAACG,MAAM;UAC9B,OAAO,IAAI,CAACC,YAAY,CAACP,OAAO,CAACQ,WAAW,CAAC;QAE/C,KAAKL,4BAAoB,CAACM,QAAQ;UAChC,OAAO,IAAI,CAACC,oBAAoB,CAACV,OAAO,CAACQ,WAAW,CAAC;QAEvD,KAAKL,4BAAoB,CAACQ,eAAe;UACvC,OAAO,IAAI,CAACC,4BAA4B,CAACZ,OAAO,CAACa,aAAa,EAAEb,OAAO,CAAC/C,OAAO,CAAC;QAElF;UAAS;YACP,IAAM6D,eAAsB,GAAGd,OAAO;YAEtC,MAAM,IAAIe,KAAK,wCAAArC,MAAA,CAAwC,IAAAsC,UAAA,CAAAhJ,OAAA,EAAe8I,eAAe,CAAC,CAAE,CAAC;UAC3F;MACF;IACF;;IAEA;AACF;AACA;AACA;EAHE;IAAAhE,GAAA;IAAAC,KAAA;MAAA,IAAAkE,cAAA,OAAAzH,kBAAA,CAAAxB,OAAA,eAAAyB,YAAA,CAAAzB,OAAA,CAAA0B,IAAA,CAIA,SAAAwH,SAA4BjE,OAA8B;QAAA,IAAAkE,aAAA,EAAAC,iBAAA,EAAAC,cAAA,EAAAC,WAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,GAAA,EAAAC,QAAA,EAAAC,IAAA,EAAAC,eAAA,EAAAC,SAAA,EAAAC,GAAA;QAAA,OAAArI,YAAA,CAAAzB,OAAA,CAAA8B,IAAA,WAAAiI,SAAA;UAAA,kBAAAA,SAAA,CAAA/H,IAAA,GAAA+H,SAAA,CAAA9H,IAAA;YAAA;cAClDkH,aAAa,GAAG;gBACpBa,IAAI,EAAErF,+BAAmB;gBACzBsF,MAAM,EAAEC,mBAAO,CAACC;cAClB,CAAC;cAED3F,eAAG,CAAC4F,IAAI,IAAA1D,MAAA,CACH2D,+BAAoB,oBAAA3D,MAAA,CAAiB,IAAAsC,UAAA,CAAAhJ,OAAA,EAAeiF,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,CAAC,CAAC,CAAC,GACrEkE,aACF,CAAC;cAACY,SAAA,CAAA/H,IAAA;cAGMyH,GAAG,GAAG,IAAI,CAACzE,kBAAkB,CAACC,OAAO,CAAC;cAAA8E,SAAA,CAAA9H,IAAA;cAAA,OAEA,IAAI,CAAChB,KAAK,CAAC+G,OAAO,CAAAtI,aAAA;gBAC5D4K,GAAG,EAAEb,GAAG;gBACRQ,MAAM,EAAEM,mBAAY,CAACC,GAAG;gBACxBC,OAAO,EAAEC,uBAAgB,CAACC;cAAmB,GACzC1F,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE2F,gBAAgB,GAAG;gBAACC,OAAO,MAAA9K,gBAAA,CAAAC,OAAA,MAAI8K,qCAAyB,EAAG,MAAM;cAAC,CAAC,GAAG,CAAC,CAAC,CACtF,CAAC;YAAA;cALIpB,QAAQ,GAAAK,SAAA,CAAAgB,IAAA;cAOdvG,eAAG,CAACA,GAAG,yBAAAkC,MAAA,CAAyBgD,QAAQ,aAARA,QAAQ,wBAAAN,iBAAA,GAARM,QAAQ,CAAEmB,OAAO,cAAAzB,iBAAA,uBAAjBA,iBAAA,CAAmB4B,UAAU,GAAI7B,aAAa,CAAC;cAEzEQ,IAAI,IAAAN,cAAA,GAAIK,QAAQ,CAACC,IAAI,cAAAN,cAAA,cAAAA,cAAA,GAAI,CAAC,CAAC;cAE3BO,eAAsC,GAAG;gBAC7CqB,UAAU,EAAEC,MAAM,CAACxB,QAAQ,CAACuB,UAAU,CAAC,IAAIE,8BAAmB;gBAC9DjJ,IAAI,EAAE;kBACJkJ,UAAU,GAAA9B,WAAA,GAAEK,IAAI,CAAC0B,KAAK,cAAA/B,WAAA,cAAAA,WAAA,GAAI;gBAC5B,CAAC;gBACDgC,OAAO,EAAEC;cACX,CAAC;cAED/G,eAAG,CAACA,GAAG,2BAAAkC,MAAA,EAAA6C,qBAAA,IAAAC,sBAAA,GACqBI,eAAe,CAAC1H,IAAI,CAACkJ,UAAU,cAAA5B,sBAAA,uBAA/BA,sBAAA,CAAiC5J,MAAM,cAAA2J,qBAAA,cAAAA,qBAAA,GAAI,CAAC,kBACtEJ,aACF,CAAC;cAAC,OAAAY,SAAA,CAAA3H,MAAA,WAEKwH,eAAe;YAAA;cAAAG,SAAA,CAAA/H,IAAA;cAAA8H,GAAA,GAAAC,SAAA;cAEtBvF,eAAG,CAACgH,KAAK,8BAAA9E,MAAA,CAA8B,IAAAsC,UAAA,CAAAhJ,OAAA,EAAA8J,GAAkB,CAAC,GAAIX,aAAa,CAAC;cAACY,SAAA,CAAA9H,IAAA;cAAA,OACvE,IAAAwJ,iBAAU,EAAC,CAAC;YAAA;cAEZ5B,SAAS,GAAAC,GAAA;cAAA,OAAAC,SAAA,CAAA3H,MAAA,WAER,IAAAsJ,8BAAuB,EAAC7B,SAAS,EAAEV,aAAa,CAAC;YAAA;YAAA;cAAA,OAAAY,SAAA,CAAAvH,IAAA;UAAA;QAAA,GAAA0G,QAAA;MAAA,CAE3D;MAAA,SA/Cab,aAAaA,CAAAsD,GAAA;QAAA,OAAA1C,cAAA,CAAAxJ,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAb0I,aAAa;IAAA;IAiD3B;AACF;AACA;AACA;IAHE;EAAA;IAAAvD,GAAA;IAAAC,KAAA;MAAA,IAAA6G,aAAA,OAAApK,kBAAA,CAAAxB,OAAA,eAAAyB,YAAA,CAAAzB,OAAA,CAAA0B,IAAA,CAIA,SAAAmK,SAA2BrD,WAAmB;QAAA,IAAAW,aAAA,EAAA2C,kBAAA,EAAArC,GAAA,EAAAC,QAAA,EAAAE,eAAA,EAAAC,SAAA,EAAAkC,GAAA;QAAA,OAAAtK,YAAA,CAAAzB,OAAA,CAAA8B,IAAA,WAAAkK,SAAA;UAAA,kBAAAA,SAAA,CAAAhK,IAAA,GAAAgK,SAAA,CAAA/J,IAAA;YAAA;cACtCkH,aAAa,GAAG;gBACpBa,IAAI,EAAErF,+BAAmB;gBACzBsF,MAAM,EAAEC,mBAAO,CAAC+B;cAClB,CAAC;cAEDzH,eAAG,CAAC4F,IAAI,IAAA1D,MAAA,CAAI2D,+BAAoB,wBAAA3D,MAAA,CAAqB8B,WAAW,GAAIW,aAAa,CAAC;cAAC6C,SAAA,CAAAhK,IAAA;cAG3EyH,GAAG,MAAA/C,MAAA,CAAM,IAAI,CAAC1C,mBAAmB,OAAA0C,MAAA,CAAImB,gCAAoB,OAAAnB,MAAA,CAAI8B,WAAW;cAAAwD,SAAA,CAAA/J,IAAA;cAAA,OAElC,IAAI,CAAChB,KAAK,CAAC+G,OAAO,CAAC;gBAC7DsC,GAAG,EAAEb,GAAG;gBACRQ,MAAM,EAAEM,mBAAY,CAACC,GAAG;gBACxBC,OAAO,EAAEC,uBAAgB,CAACC;cAC5B,CAAC,CAAC;YAAA;cAJIjB,QAAQ,GAAAsC,SAAA,CAAAjB,IAAA;cAMdvG,eAAG,CAACA,GAAG,yBAAAkC,MAAA,CAAyBgD,QAAQ,aAARA,QAAQ,wBAAAoC,kBAAA,GAARpC,QAAQ,CAAEmB,OAAO,cAAAiB,kBAAA,uBAAjBA,kBAAA,CAAmBd,UAAU,GAAI7B,aAAa,CAAC;cAEzES,eAAkC,GAAG;gBACzCqB,UAAU,EAAEC,MAAM,CAACxB,QAAQ,CAACuB,UAAU,CAAC,IAAIE,8BAAmB;gBAC9DjJ,IAAI,EAAE;kBACJgK,SAAS,EAAExC,QAAQ,CAACC;gBACtB,CAAC;gBACD2B,OAAO,EAAEC;cACX,CAAC;cAED/G,eAAG,CAACA,GAAG,qCAAAkC,MAAA,CAAqC8B,WAAW,GAAIW,aAAa,CAAC;cAAC,OAAA6C,SAAA,CAAA5J,MAAA,WAEnEwH,eAAe;YAAA;cAAAoC,SAAA,CAAAhK,IAAA;cAAA+J,GAAA,GAAAC,SAAA;cAEtBxH,eAAG,CAACgH,KAAK,6BAAA9E,MAAA,CAA6B,IAAAsC,UAAA,CAAAhJ,OAAA,EAAA+L,GAAkB,CAAC,GAAI5C,aAAa,CAAC;cAAC6C,SAAA,CAAA/J,IAAA;cAAA,OACtE,IAAAwJ,iBAAU,EAAC,CAAC;YAAA;cAEZ5B,SAAS,GAAAkC,GAAA;cAAA,OAAAC,SAAA,CAAA5J,MAAA,WAER,IAAAsJ,8BAAuB,EAAC7B,SAAS,EAAEV,aAAa,CAAC;YAAA;YAAA;cAAA,OAAA6C,SAAA,CAAAxJ,IAAA;UAAA;QAAA,GAAAqJ,QAAA;MAAA,CAE3D;MAAA,SAtCatD,YAAYA,CAAA4D,GAAA;QAAA,OAAAP,aAAA,CAAAnM,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAZ4I,YAAY;IAAA;IAwC1B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAZE;EAAA;IAAAzD,GAAA;IAAAC,KAAA;MAAA,IAAAqH,6BAAA,OAAA5K,kBAAA,CAAAxB,OAAA,eAAAyB,YAAA,CAAAzB,OAAA,CAAA0B,IAAA,CAaA,SAAA2K,SACExD,aAAqB,EACrB5D,OAA8B;QAAA,IAAAqH,qBAAA;QAAA,IAAAnD,aAAA,EAAAoD,YAAA,EAAAC,QAAA;QAAA,OAAA/K,YAAA,CAAAzB,OAAA,CAAA8B,IAAA,WAAA2K,SAAA;UAAA,kBAAAA,SAAA,CAAAzK,IAAA,GAAAyK,SAAA,CAAAxK,IAAA;YAAA;cAExBkH,aAAa,GAAG;gBACpBa,IAAI,EAAErF,+BAAmB;gBACzBsF,MAAM,EAAEC,mBAAO,CAACwC;cAClB,CAAC;cAEDlI,eAAG,CAAC4F,IAAI,IAAA1D,MAAA,CAAI2D,+BAAoB,0BAAA3D,MAAA,CAAuBmC,aAAa,GAAIM,aAAa,CAAC;cAACsD,SAAA,CAAAxK,IAAA;cAAA,OAE5D,IAAI,CAACoG,aAAa,CAACpD,OAAO,CAAC;YAAA;cAAhDsH,YAAY,GAAAE,SAAA,CAAA1B,IAAA;cAAA,MAEdwB,YAAY,CAACtB,UAAU,KAAKE,8BAAmB;gBAAAsB,SAAA,CAAAxK,IAAA;gBAAA;cAAA;cAAA,OAAAwK,SAAA,CAAArK,MAAA,WAC1CmK,YAAY;YAAA;cAGfC,QAAQ,GAAG,EAAAF,qBAAA,GAACC,YAAY,CAACrK,IAAI,CAACkJ,UAAU,cAAAkB,qBAAA,cAAAA,qBAAA,GAAI,EAAE,EAAEjN,MAAM,CAC1D,UAAC6M,SAAS;gBAAA,IAAAS,qBAAA;gBAAA,OAAK,EAAAA,qBAAA,GAAAT,SAAS,CAACU,WAAW,cAAAD,qBAAA,uBAArBA,qBAAA,CAAuB9D,aAAa,MAAKA,aAAa;cAAA,CACvE,CAAC;cAED,IAAI2D,QAAQ,CAAC5M,MAAM,KAAK,CAAC,EAAE;gBACzB4E,eAAG,CAAC4F,IAAI,CAACyC,uCAA2B,EAAE1D,aAAa,CAAC;cACtD,CAAC,MAAM;gBACL3E,eAAG,CAACA,GAAG,2BAAAkC,MAAA,CACqB8F,QAAQ,CAAC5M,MAAM,mCAAA8G,MAAA,CAAgCmC,aAAa,GACtFM,aACF,CAAC;cACH;cAAC,OAAAsD,SAAA,CAAArK,MAAA,WAEM;gBACL6I,UAAU,EAAEE,8BAAmB;gBAC/BjJ,IAAI,EAAE;kBACJkJ,UAAU,EAAEoB;gBACd,CAAC;gBACDlB,OAAO,EAAEC;cACX,CAAC;YAAA;YAAA;cAAA,OAAAkB,SAAA,CAAAjK,IAAA;UAAA;QAAA,GAAA6J,QAAA;MAAA,CACF;MAAA,SArCazD,4BAA4BA,CAAAkE,GAAA,EAAAC,GAAA;QAAA,OAAAX,6BAAA,CAAA3M,KAAA,OAAAE,SAAA;MAAA;MAAA,OAA5BiJ,4BAA4B;IAAA;IAuC1C;AACF;AACA;AACA;IAHE;EAAA;IAAA9D,GAAA;IAAAC,KAAA;MAAA,IAAAiI,qBAAA,OAAAxL,kBAAA,CAAAxB,OAAA,eAAAyB,YAAA,CAAAzB,OAAA,CAAA0B,IAAA,CAIA,SAAAuL,SAAmCzE,WAAmB;QAAA,IAAAW,aAAA,EAAA+D,kBAAA,EAAAzD,GAAA,EAAAC,QAAA,EAAAE,eAAA,EAAAC,SAAA,EAAAsD,GAAA;QAAA,OAAA1L,YAAA,CAAAzB,OAAA,CAAA8B,IAAA,WAAAsL,SAAA;UAAA,kBAAAA,SAAA,CAAApL,IAAA,GAAAoL,SAAA,CAAAnL,IAAA;YAAA;cAC9CkH,aAAa,GAAG;gBACpBa,IAAI,EAAErF,+BAAmB;gBACzBsF,MAAM,EAAEC,mBAAO,CAACmD;cAClB,CAAC;cAED7I,eAAG,CAAC4F,IAAI,IAAA1D,MAAA,CAAI2D,+BAAoB,wBAAA3D,MAAA,CAAqB8B,WAAW,GAAIW,aAAa,CAAC;cAACiE,SAAA,CAAApL,IAAA;cAG3EyH,GAAG,MAAA/C,MAAA,CAAM,IAAI,CAAC1C,mBAAmB,OAAA0C,MAAA,CAAImB,gCAAoB,OAAAnB,MAAA,CAAI8B,WAAW,OAAA9B,MAAA,CAAI+B,oBAAQ;cAAA2E,SAAA,CAAAnL,IAAA;cAAA,OAE9C,IAAI,CAAChB,KAAK,CAAC+G,OAAO,CAAC;gBAC7DsC,GAAG,EAAEb,GAAG;gBACRQ,MAAM,EAAEM,mBAAY,CAACC,GAAG;gBACxBC,OAAO,EAAEC,uBAAgB,CAACC;cAC5B,CAAC,CAAC;YAAA;cAJIjB,QAAQ,GAAA0D,SAAA,CAAArC,IAAA;cAMdvG,eAAG,CAACA,GAAG,yBAAAkC,MAAA,CAAyBgD,QAAQ,aAARA,QAAQ,wBAAAwD,kBAAA,GAARxD,QAAQ,CAAEmB,OAAO,cAAAqC,kBAAA,uBAAjBA,kBAAA,CAAmBlC,UAAU,GAAI7B,aAAa,CAAC;cAEzES,eAA0C,GAAG;gBACjDqB,UAAU,EAAEC,MAAM,CAACxB,QAAQ,CAACuB,UAAU,CAAC,IAAIE,8BAAmB;gBAC9DjJ,IAAI,EAAE;kBACJoL,QAAQ,EAAE5D,QAAQ,CAACC;gBACrB,CAAC;gBACD2B,OAAO,EAAEC;cACX,CAAC;cAED/G,eAAG,CAACA,GAAG,kDAAAkC,MAAA,CAAkD8B,WAAW,GAAIW,aAAa,CAAC;cAAC,OAAAiE,SAAA,CAAAhL,MAAA,WAEhFwH,eAAe;YAAA;cAAAwD,SAAA,CAAApL,IAAA;cAAAmL,GAAA,GAAAC,SAAA;cAEtB5I,eAAG,CAACgH,KAAK,sCAAA9E,MAAA,CAAsC,IAAAsC,UAAA,CAAAhJ,OAAA,EAAAmN,GAAkB,CAAC,GAAIhE,aAAa,CAAC;cAACiE,SAAA,CAAAnL,IAAA;cAAA,OAC/E,IAAAwJ,iBAAU,EAAC,CAAC;YAAA;cAEZ5B,SAAS,GAAAsD,GAAA;cAAA,OAAAC,SAAA,CAAAhL,MAAA,WAER,IAAAsJ,8BAAuB,EAC5B7B,SAAS,EACTV,aACF,CAAC;YAAA;YAAA;cAAA,OAAAiE,SAAA,CAAA5K,IAAA;UAAA;QAAA,GAAAyK,QAAA;MAAA,CAEJ;MAAA,SAzCavE,oBAAoBA,CAAA6E,GAAA;QAAA,OAAAP,qBAAA,CAAAvN,KAAA,OAAAE,SAAA;MAAA;MAAA,OAApB+I,oBAAoB;IAAA;IA2ClC;AACF;AACA;AACA;AACA;IAJE;EAAA;IAAA5D,GAAA;IAAAC,KAAA;MAAA,IAAAyI,gBAAA,OAAAhM,kBAAA,CAAAxB,OAAA,eAAAyB,YAAA,CAAAzB,OAAA,CAAA0B,IAAA,CAKA,SAAA+L,SACEjF,WAAmB,EACnBvD,OAAgC;QAAA,IAAAkE,aAAA,EAAAuE,kBAAA,EAAAjE,GAAA,EAAAE,IAAA,EAAAD,QAAA,EAAAE,eAAA,EAAAC,SAAA,EAAA8D,GAAA;QAAA,OAAAlM,YAAA,CAAAzB,OAAA,CAAA8B,IAAA,WAAA8L,SAAA;UAAA,kBAAAA,SAAA,CAAA5L,IAAA,GAAA4L,SAAA,CAAA3L,IAAA;YAAA;cAE1BkH,aAAa,GAAG;gBACpBa,IAAI,EAAErF,+BAAmB;gBACzBsF,MAAM,EAAEC,mBAAO,CAAC2D;cAClB,CAAC;cAEDrJ,eAAG,CAAC4F,IAAI,IAAA1D,MAAA,CAAI2D,+BAAoB,wBAAA3D,MAAA,CAAqB8B,WAAW,GAAIW,aAAa,CAAC;cAACyE,SAAA,CAAA5L,IAAA;cAG3EyH,GAAG,MAAA/C,MAAA,CAAM,IAAI,CAAC1C,mBAAmB,OAAA0C,MAAA,CAAImB,gCAAoB,OAAAnB,MAAA,CAAI8B,WAAW;cAExEmB,IAA4B,GAAG,CAAC,CAAC;cACvC,IAAI1E,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE6I,MAAM,EAAE;gBACnBnE,IAAI,CAACmE,MAAM,GAAG7I,OAAO,CAAC6I,MAAM;cAC9B;cACA,IAAI7I,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE8I,OAAO,EAAE;gBACpBpE,IAAI,CAACoE,OAAO,GAAG9I,OAAO,CAAC8I,OAAO;cAChC;cAACH,SAAA,CAAA3L,IAAA;cAAA,OAE2C,IAAI,CAAChB,KAAK,CAAC+G,OAAO,CAAAtI,aAAA;gBAC5D4K,GAAG,EAAEb,GAAG;gBACRQ,MAAM,EAAEM,mBAAY,CAACyD,MAAM;gBAC3BvD,OAAO,EAAEC,uBAAgB,CAACC;cAAmB,GACzC,IAAAsD,KAAA,CAAAjO,OAAA,EAAY2J,IAAI,CAAC,CAAC/J,MAAM,GAAG,CAAC,GAAG;gBAAC+J,IAAI,EAAJA;cAAI,CAAC,GAAG,CAAC,CAAC,CAC/C,CAAC;YAAA;cALID,QAAQ,GAAAkE,SAAA,CAAA7C,IAAA;cAOdvG,eAAG,CAACA,GAAG,yBAAAkC,MAAA,CAAyBgD,QAAQ,aAARA,QAAQ,wBAAAgE,kBAAA,GAARhE,QAAQ,CAAEmB,OAAO,cAAA6C,kBAAA,uBAAjBA,kBAAA,CAAmB1C,UAAU,GAAI7B,aAAa,CAAC;cAEzES,eAAwC,GAAG;gBAC/CqB,UAAU,EAAEC,MAAM,CAACxB,QAAQ,CAACuB,UAAU,CAAC,IAAIE,8BAAmB;gBAC9DjJ,IAAI,EAAE,CAAC,CAAC;gBACRoJ,OAAO,EAAEC;cACX,CAAC;cAED/G,eAAG,CAACA,GAAG,mCAAAkC,MAAA,CAAmC8B,WAAW,GAAIW,aAAa,CAAC;cAAC,OAAAyE,SAAA,CAAAxL,MAAA,WAEjEwH,eAAe;YAAA;cAAAgE,SAAA,CAAA5L,IAAA;cAAA2L,GAAA,GAAAC,SAAA;cAEtBpJ,eAAG,CAACgH,KAAK,gCAAA9E,MAAA,CAAgC,IAAAsC,UAAA,CAAAhJ,OAAA,EAAA2N,GAAkB,CAAC,GAAIxE,aAAa,CAAC;cAACyE,SAAA,CAAA3L,IAAA;cAAA,OACzE,IAAAwJ,iBAAU,EAAC,CAAC;YAAA;cAEZ5B,SAAS,GAAA8D,GAAA;cAAA,OAAAC,SAAA,CAAAxL,MAAA,WAER,IAAAsJ,8BAAuB,EAAC7B,SAAS,EAAEV,aAAa,CAAC;YAAA;YAAA;cAAA,OAAAyE,SAAA,CAAApL,IAAA;UAAA;QAAA,GAAAiL,QAAA;MAAA,CAE3D;MAAA,SAhDYS,eAAeA,CAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAZ,gBAAA,CAAA/N,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAfuO,eAAe;IAAA;EAAA;IAAApJ,GAAA;IAAAC,KAAA;IAmG5B;AACF;AACA;IACE,SAAQR,0BAA0BA,CAAA,EAAG;MACnC,IAAI,CAACX,YAAY,CAACyK,gBAAgB,CAChCC,yBAAiB,CAACC,uBAAuB,EACzC,IAAI,CAACC,2BACP,CAAC;MACD,IAAI,CAAC5K,YAAY,CAACyK,gBAAgB,CAChCC,yBAAiB,CAACG,uBAAuB,EACzC,IAAI,CAACC,2BACP,CAAC;MACD,IAAI,CAAC9K,YAAY,CAACyK,gBAAgB,CAChCC,yBAAiB,CAACK,uBAAuB,EACzC,IAAI,CAACC,2BACP,CAAC;IACH;EAAC;AAAA,EA3bOC,cAAQ","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_SDKConnector","_interopRequireDefault","require","_types","_Logger","_Utils","_constants","_types2","_impl","_types3","_constants2","ownKeys","e","r","t","_Object$keys","_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","_options","_response$headers4","_t5","_context8","DELETE_RECORDING","SOFT_DELETE","POST","recordingIds","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 SOFT_DELETE,\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 * Moves a recording to the recycle bin (soft delete). Matches native Webex user delete:\n * `POST /convergedRecordings/softDelete` with `recordingIds: [recordingId]`.\n * Requires `spark:recordings_write` on the access token.\n *\n * Mercury emits `convergedRecordings.updated` + `eventSubType: TRASH`, which this connector\n * surfaces as `callRecording:deleted`.\n *\n * @param recordingId - The recording id (`id`) to move to the recycle bin.\n * @param _options - Deprecated. Ignored. Compliance permanent delete uses a separate API.\n */\n public async deleteRecording(\n recordingId: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- kept for ICallRecording signature parity; soft delete ignores options\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}/${SOFT_DELETE}`;\n\n const response = <WebexRequestPayload>await this.webex.request({\n uri: url,\n method: HTTP_METHODS.POST,\n service: ALLOWED_SERVICES.HYDRA_DEVELOPER_API,\n body: {recordingIds: [recordingId]},\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 moved recording ${recordingId} to recycle bin`, 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":[]}
|
|
@@ -488,39 +488,41 @@ describe('WxcCallRecordingConnector tests', function () {
|
|
|
488
488
|
file: _constants.CALL_RECORDING_FILE,
|
|
489
489
|
method: _constants.METHODS.DELETE_RECORDING
|
|
490
490
|
};
|
|
491
|
-
it('successfully deletes a recording
|
|
491
|
+
it('successfully soft-deletes a recording via POST /convergedRecordings/softDelete', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14() {
|
|
492
492
|
var response, callArgs;
|
|
493
493
|
return _regenerator.default.wrap(function (_context14) {
|
|
494
494
|
while (1) switch (_context14.prev = _context14.next) {
|
|
495
495
|
case 0:
|
|
496
496
|
webex.request.mockResolvedValue({
|
|
497
|
-
statusCode:
|
|
497
|
+
statusCode: 204
|
|
498
498
|
});
|
|
499
499
|
_context14.next = 1;
|
|
500
500
|
return connector.deleteRecording(_callRecordingFixtures.RECORDING_ONE.id);
|
|
501
501
|
case 1:
|
|
502
502
|
response = _context14.sent;
|
|
503
|
-
expect(response.statusCode).toBe(
|
|
503
|
+
expect(response.statusCode).toBe(204);
|
|
504
504
|
expect(response.message).toBe('SUCCESS');
|
|
505
505
|
callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];
|
|
506
|
-
expect(callArgs.uri).toContain(
|
|
507
|
-
expect(callArgs.uri).not.toContain(
|
|
508
|
-
expect(callArgs.method).toBe(_types2.HTTP_METHODS.
|
|
506
|
+
expect(callArgs.uri).toContain('/convergedRecordings/softDelete');
|
|
507
|
+
expect(callArgs.uri).not.toContain("/convergedRecordings/".concat(_callRecordingFixtures.RECORDING_ONE.id));
|
|
508
|
+
expect(callArgs.method).toBe(_types2.HTTP_METHODS.POST);
|
|
509
509
|
expect(callArgs.service).toBe('hydraDeveloperApi');
|
|
510
|
-
expect(callArgs.body).
|
|
510
|
+
expect(callArgs.body).toStrictEqual({
|
|
511
|
+
recordingIds: [_callRecordingFixtures.RECORDING_ONE.id]
|
|
512
|
+
});
|
|
511
513
|
case 2:
|
|
512
514
|
case "end":
|
|
513
515
|
return _context14.stop();
|
|
514
516
|
}
|
|
515
517
|
}, _callee14);
|
|
516
518
|
})));
|
|
517
|
-
it('
|
|
519
|
+
it('ignores deprecated reason/comment options (compliance DELETE is not exposed)', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15() {
|
|
518
520
|
var callArgs;
|
|
519
521
|
return _regenerator.default.wrap(function (_context15) {
|
|
520
522
|
while (1) switch (_context15.prev = _context15.next) {
|
|
521
523
|
case 0:
|
|
522
524
|
webex.request.mockResolvedValue({
|
|
523
|
-
statusCode:
|
|
525
|
+
statusCode: 204
|
|
524
526
|
});
|
|
525
527
|
_context15.next = 1;
|
|
526
528
|
return connector.deleteRecording(_callRecordingFixtures.RECORDING_ONE.id, {
|
|
@@ -529,10 +531,9 @@ describe('WxcCallRecordingConnector tests', function () {
|
|
|
529
531
|
});
|
|
530
532
|
case 1:
|
|
531
533
|
callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];
|
|
532
|
-
expect(callArgs.method).toBe(_types2.HTTP_METHODS.
|
|
534
|
+
expect(callArgs.method).toBe(_types2.HTTP_METHODS.POST);
|
|
533
535
|
expect(callArgs.body).toStrictEqual({
|
|
534
|
-
|
|
535
|
-
comment: 'Maintain data privacy'
|
|
536
|
+
recordingIds: [_callRecordingFixtures.RECORDING_ONE.id]
|
|
536
537
|
});
|
|
537
538
|
case 2:
|
|
538
539
|
case "end":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_types","require","_testUtil","_types2","_WxcCallRecordingConnector","_types3","_callRecordingFixtures","_types4","_constants","utils","_interopRequireWildcard","_Logger","_interopRequireDefault","_constants2","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","webex","getTestUtilsWebex","uploadLogsSpy","serviceErrorCodeHandlerSpy","describe","connector","infoSpy","jest","spyOn","log","mockImplementation","errorSpy","beforeAll","WxcCallRecordingConnector","level","LOGGER","INFO","beforeEach","mockResolvedValue","afterEach","clearAllMocks","loggerContext","file","CALL_RECORDING_FILE","method","METHODS","GET_RECORDINGS","it","_asyncToGenerator2","_regenerator","mark","_callee","_response$data$record","payload","response","wrap","_context","prev","next","MOCK_RECORDING_LIST_BODY","request","getCallRecording","type","RecordingRequestType","LIST","sent","expect","statusCode","toBe","message","data","recordings","toHaveLength","id","RECORDING_ONE","not","toHaveBeenCalled","stop","_callee2","callArgs","_context2","options","from","to","status","RecordingStatus","DELETED","max","serviceType","format","ownerType","storageRegion","locationId","topic","webexUserRequest","mock","calls","length","HTTP_METHODS","GET","service","uri","toContain","headers","toEqual","WebexUserRequest","_callee3","_context3","_callee4","_context4","useFakeTimers","setSystemTime","Date","days","concat","encodeURIComponent","useRealTimers","_callee5","_context5","toBeUndefined","_callee6","_context6","MOCK_EMPTY_RECORDING_LIST_BODY","each","expected","ERROR_DETAILS_400","ERROR_DETAILS_401","ERROR_DETAILS_404","_ref8","_callee7","_ref7","failurePayload","_context7","mockRejectedValue","toStrictEqual","toBeCalledOnceWith","toHaveBeenCalledWith","stringContaining","toHaveBeenCalledTimes","_x","apply","arguments","GET_RECORDING","_callee8","_response$data$record2","_context8","MOCK_RECORDING_BODY","DETAIL","recordingId","recording","METHOD_START_MESSAGE","_callee9","_context9","_callee0","_response$data$record3","_context0","BY_CALL_SESSION","callSessionId","CALL_SESSION_ID","_callee1","_context1","_callee10","_context10","_callee11","_context11","GET_RECORDING_METADATA","_callee12","_response$data$metada","_context12","MOCK_RECORDING_METADATA_BODY","METADATA","metadata","_callee13","_context13","DELETE_RECORDING","_callee14","_context14","deleteRecording","DELETE","body","_callee15","_context15","reason","comment","_callee16","_context16","localConnector","mockOn","findHandler","eventKey","filter","internal","mercury","on","mockClear","registeredKeys","map","RECORDING_MERCURY_KEYS","CREATED","UPDATED","done","COMMON_EVENT_KEYS","CALL_RECORDING_CREATED","event","MOCK_RECORDING_CREATED_EVENT","updatedRoutingData","name","MOCK_RECORDING_TRASH_EVENT","expectedKey","CALL_RECORDING_DELETED","MOCK_RECORDING_PURGE_EVENT","MOCK_RECORDING_RESTORE_EVENT","MOCK_RECORDING_UPDATED_EVENT","CALL_RECORDING_UPDATED","_ref18","spy","fn","MOCK_RECORDING_DELETED_EVENT"],"sources":["WxcCallRecordingConnector.test.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {LOGGER} from '../Logger/types';\nimport {getTestUtilsWebex} from '../common/testUtil';\nimport {HTTP_METHODS, WebexRequestPayload} from '../common/types';\nimport {WxcCallRecordingConnector} from './WxcCallRecordingConnector';\nimport {RecordingRequestType, RecordingStatus} from './types';\nimport {\n CALL_SESSION_ID,\n ERROR_DETAILS_400,\n ERROR_DETAILS_401,\n ERROR_DETAILS_404,\n MOCK_EMPTY_RECORDING_LIST_BODY,\n MOCK_RECORDING_BODY,\n MOCK_RECORDING_CREATED_EVENT,\n MOCK_RECORDING_DELETED_EVENT,\n MOCK_RECORDING_LIST_BODY,\n MOCK_RECORDING_METADATA_BODY,\n MOCK_RECORDING_PURGE_EVENT,\n MOCK_RECORDING_RESTORE_EVENT,\n MOCK_RECORDING_TRASH_EVENT,\n MOCK_RECORDING_UPDATED_EVENT,\n RECORDING_MERCURY_KEYS,\n RECORDING_ONE,\n} from './callRecordingFixtures';\nimport {COMMON_EVENT_KEYS, RecordingEvent} from '../Events/types';\nimport {CALL_RECORDING_FILE, METHODS} from './constants';\nimport * as utils from '../common/Utils';\nimport log from '../Logger';\nimport {METHOD_START_MESSAGE} from '../common/constants';\n\nconst webex = getTestUtilsWebex();\nlet uploadLogsSpy: jest.SpyInstance;\nlet serviceErrorCodeHandlerSpy: jest.SpyInstance;\n\ndescribe('WxcCallRecordingConnector tests', () => {\n let connector: WxcCallRecordingConnector;\n const infoSpy = jest.spyOn(log, 'info').mockImplementation();\n const errorSpy = jest.spyOn(log, 'error').mockImplementation();\n\n beforeAll(() => {\n connector = new WxcCallRecordingConnector(webex, {level: LOGGER.INFO});\n });\n\n beforeEach(() => {\n uploadLogsSpy = jest.spyOn(utils, 'uploadLogs').mockResolvedValue();\n serviceErrorCodeHandlerSpy = jest.spyOn(utils, 'serviceErrorCodeHandler');\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n describe('getRecordings', () => {\n const loggerContext = {file: CALL_RECORDING_FILE, method: METHODS.GET_RECORDINGS};\n\n it('successfully fetches the list of recordings', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n expect(response.data.recordings).toHaveLength(2);\n expect(response.data.recordings?.[0].id).toBe(RECORDING_ONE.id);\n expect(errorSpy).not.toHaveBeenCalled();\n expect(uploadLogsSpy).not.toHaveBeenCalled();\n });\n\n it('builds the request URL with the provided filter/pagination query params', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n await connector.getCallRecording({\n type: RecordingRequestType.LIST,\n options: {\n from: '2024-05-01T00:00:00.000Z',\n to: '2024-05-31T00:00:00.000Z',\n status: RecordingStatus.DELETED,\n max: 25,\n serviceType: 'calling',\n format: 'MP3',\n ownerType: 'user',\n storageRegion: 'US',\n locationId: 'location-123',\n topic: 'Call with User7',\n webexUserRequest: true,\n },\n });\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.method).toBe(HTTP_METHODS.GET);\n expect(callArgs.service).toBe('hydraDeveloperApi');\n expect(callArgs.uri).toContain('/convergedRecordings?');\n expect(callArgs.uri).toContain('from=2024-05-01T00%3A00%3A00.000Z');\n expect(callArgs.uri).toContain('to=2024-05-31T00%3A00%3A00.000Z');\n expect(callArgs.uri).toContain('status=deleted');\n expect(callArgs.uri).toContain('max=25');\n expect(callArgs.uri).toContain('serviceType=calling');\n expect(callArgs.uri).toContain('format=MP3');\n expect(callArgs.uri).toContain('ownerType=user');\n expect(callArgs.uri).toContain('storageRegion=US');\n expect(callArgs.uri).toContain('locationId=location-123');\n expect(callArgs.uri).toContain('topic=Call+with+User7');\n expect(callArgs.uri).not.toContain('orderType');\n expect(callArgs.uri).not.toContain('orderBy');\n expect(callArgs.uri).not.toContain('offset');\n expect(callArgs.uri).not.toContain('actorID');\n expect(callArgs.uri).not.toContain('showAccessCount');\n expect(callArgs.headers).toEqual({WebexUserRequest: 'true'});\n });\n\n it('applies the default filter/pagination query params when no options are provided', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain('from=');\n expect(callArgs.uri).toContain('to=');\n expect(callArgs.uri).toContain('status=available');\n expect(callArgs.uri).toContain('max=30');\n expect(callArgs.uri).not.toContain('orderType');\n expect(callArgs.uri).not.toContain('orderBy');\n expect(callArgs.uri).not.toContain('offset');\n // Optional pass-through filters are omitted when not provided.\n expect(callArgs.uri).not.toContain('serviceType');\n expect(callArgs.uri).not.toContain('format');\n expect(callArgs.uri).not.toContain('ownerType');\n expect(callArgs.uri).not.toContain('storageRegion');\n expect(callArgs.uri).not.toContain('locationId');\n expect(callArgs.uri).not.toContain('topic');\n });\n\n it('derives the from date from the days lookback and defaults to to now when not provided', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n jest.useFakeTimers().setSystemTime(new Date('2024-06-15T12:00:00.000Z'));\n\n await connector.getCallRecording({type: RecordingRequestType.LIST, options: {days: 7}});\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain(`from=${encodeURIComponent('2024-06-08T12:00:00.000Z')}`);\n expect(callArgs.uri).toContain(`to=${encodeURIComponent('2024-06-15T12:00:00.000Z')}`);\n\n jest.useRealTimers();\n });\n\n it('does not send the WebexUserRequest header by default', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.headers).toBeUndefined();\n });\n\n it('returns an empty list when there are no recordings', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_EMPTY_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n expect(response.statusCode).toBe(200);\n expect(response.data.recordings).toEqual([]);\n });\n\n it.each([\n {statusCode: 400, expected: ERROR_DETAILS_400},\n {statusCode: 401, expected: ERROR_DETAILS_401},\n {statusCode: 404, expected: ERROR_DETAILS_404},\n ])('handles a $statusCode error', async ({statusCode, expected}) => {\n const failurePayload = {statusCode};\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>failurePayload));\n\n const response = await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n expect(response).toStrictEqual(expected);\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith({statusCode}, loggerContext);\n expect(errorSpy).toHaveBeenCalledWith(\n expect.stringContaining('Failed to get recordings'),\n loggerContext\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('getRecording', () => {\n const loggerContext = {file: CALL_RECORDING_FILE, method: METHODS.GET_RECORDING};\n\n it('successfully fetches a single recording', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.DETAIL,\n recordingId: RECORDING_ONE.id,\n });\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n expect(response.data.recording?.id).toBe(RECORDING_ONE.id);\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain(`/convergedRecordings/${RECORDING_ONE.id}`);\n expect(callArgs.method).toBe(HTTP_METHODS.GET);\n expect(callArgs.service).toBe('hydraDeveloperApi');\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with recordingId=${RECORDING_ONE.id}`,\n loggerContext\n );\n });\n\n it('handles a 404 error when the recording does not exist', async () => {\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>{statusCode: 404}));\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.DETAIL,\n recordingId: 'missing-id',\n });\n\n expect(response).toStrictEqual(ERROR_DETAILS_404);\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('getRecordingsByCallSessionId', () => {\n it('returns only the recordings matching the call session id', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.BY_CALL_SESSION,\n callSessionId: CALL_SESSION_ID,\n });\n\n expect(response.statusCode).toBe(200);\n expect(response.data.recordings).toHaveLength(1);\n expect(response.data.recordings?.[0].id).toBe(RECORDING_ONE.id);\n });\n\n it('returns an empty list when no recording matches', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.BY_CALL_SESSION,\n callSessionId: 'non-existent-session',\n });\n\n expect(response.statusCode).toBe(200);\n expect(response.data.recordings).toEqual([]);\n });\n\n it('propagates the error response from the underlying list call', async () => {\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>{statusCode: 401}));\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.BY_CALL_SESSION,\n callSessionId: CALL_SESSION_ID,\n });\n\n expect(response).toStrictEqual(ERROR_DETAILS_401);\n });\n\n it('forwards list options to the underlying list query to widen the scan', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n await connector.getCallRecording({\n type: RecordingRequestType.BY_CALL_SESSION,\n callSessionId: CALL_SESSION_ID,\n options: {\n from: '2024-05-01T00:00:00.000Z',\n to: '2024-05-31T00:00:00.000Z',\n status: RecordingStatus.DELETED,\n max: 100,\n },\n });\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain('from=2024-05-01T00%3A00%3A00.000Z');\n expect(callArgs.uri).toContain('to=2024-05-31T00%3A00%3A00.000Z');\n expect(callArgs.uri).toContain('status=deleted');\n expect(callArgs.uri).toContain('max=100');\n });\n });\n\n describe('getRecordingMetadata', () => {\n const loggerContext = {file: CALL_RECORDING_FILE, method: METHODS.GET_RECORDING_METADATA};\n\n it('successfully fetches the recording metadata', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_METADATA_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.METADATA,\n recordingId: RECORDING_ONE.id,\n });\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n expect(response.data.metadata?.callSessionId).toBe(CALL_SESSION_ID);\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain(`/convergedRecordings/${RECORDING_ONE.id}/metadata`);\n expect(callArgs.method).toBe(HTTP_METHODS.GET);\n expect(callArgs.service).toBe('hydraDeveloperApi');\n });\n\n it('handles a 400 error', async () => {\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>{statusCode: 400}));\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.METADATA,\n recordingId: 'bad-id',\n });\n\n expect(response).toStrictEqual(ERROR_DETAILS_400);\n expect(errorSpy).toHaveBeenCalledWith(\n expect.stringContaining('Failed to get recording metadata'),\n loggerContext\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('deleteRecording', () => {\n const loggerContext = {file: CALL_RECORDING_FILE, method: METHODS.DELETE_RECORDING};\n\n it('successfully deletes a recording without a body when no options are provided', async () => {\n webex.request.mockResolvedValue(<WebexRequestPayload>(<unknown>{statusCode: 200}));\n\n const response = await connector.deleteRecording(RECORDING_ONE.id);\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain(`/convergedRecordings/${RECORDING_ONE.id}`);\n expect(callArgs.uri).not.toContain('/metadata');\n expect(callArgs.method).toBe(HTTP_METHODS.DELETE);\n expect(callArgs.service).toBe('hydraDeveloperApi');\n expect(callArgs.body).toBeUndefined();\n });\n\n it('sends reason and comment in the body when provided (Compliance Officer deletion)', async () => {\n webex.request.mockResolvedValue(<WebexRequestPayload>(<unknown>{statusCode: 200}));\n\n await connector.deleteRecording(RECORDING_ONE.id, {\n reason: 'audit',\n comment: 'Maintain data privacy',\n });\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.method).toBe(HTTP_METHODS.DELETE);\n expect(callArgs.body).toStrictEqual({reason: 'audit', comment: 'Maintain data privacy'});\n });\n\n it('handles a 400 error', async () => {\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>{statusCode: 400}));\n\n const response = await connector.deleteRecording('bad-id');\n\n expect(response).toStrictEqual(ERROR_DETAILS_400);\n expect(errorSpy).toHaveBeenCalledWith(\n expect.stringContaining('Failed to delete recording'),\n loggerContext\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('URL resolution', () => {\n it('resolves the recording base URL from the services catalog (hydraDeveloperApi)', () => {\n const localConnector = new WxcCallRecordingConnector(getTestUtilsWebex(), {\n level: LOGGER.INFO,\n });\n\n expect(localConnector['recordingServiceUrl']).toBe('https://integration.webexapis.com/v1');\n });\n });\n\n describe('Recording Mercury events', () => {\n let mockOn: jest.Mock;\n\n const findHandler = (eventKey: string) => {\n const calls = mockOn.mock.calls.filter((call) => call[0] === eventKey);\n\n return calls[calls.length - 1][1];\n };\n\n beforeEach(() => {\n mockOn = webex.internal.mercury.on as unknown as jest.Mock;\n mockOn.mockClear();\n connector = new WxcCallRecordingConnector(webex, {level: LOGGER.INFO});\n });\n\n it('registers listeners for all three recording mercury events', () => {\n const registeredKeys = mockOn.mock.calls.map((call) => call[0]);\n\n expect(registeredKeys).toContain(RECORDING_MERCURY_KEYS.CREATED);\n expect(registeredKeys).toContain(RECORDING_MERCURY_KEYS.UPDATED);\n expect(registeredKeys).toContain(RECORDING_MERCURY_KEYS.DELETED);\n });\n\n it('emits the recording created event', (done) => {\n connector.on(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, (event: RecordingEvent) => {\n expect(event).toEqual(MOCK_RECORDING_CREATED_EVENT);\n done();\n });\n\n findHandler(RECORDING_MERCURY_KEYS.CREATED)(MOCK_RECORDING_CREATED_EVENT);\n });\n\n /**\n * The backend delivers the recording lifecycle through `convergedRecordings.updated` events\n * qualified by `eventSubType`. The connector routes them to the intuitive typed event:\n * name: TestCase name\n * event: the raw `updated` Mercury event (with its eventSubType)\n * expectedKey: the typed event the connector should emit\n */\n const updatedRoutingData: {\n name: string;\n event: RecordingEvent;\n expectedKey: COMMON_EVENT_KEYS;\n }[] = [\n {\n name: 'TRASH (soft delete) -> callRecording:deleted',\n event: MOCK_RECORDING_TRASH_EVENT,\n expectedKey: COMMON_EVENT_KEYS.CALL_RECORDING_DELETED,\n },\n {\n name: 'PURGE (permanent delete) -> callRecording:deleted',\n event: MOCK_RECORDING_PURGE_EVENT,\n expectedKey: COMMON_EVENT_KEYS.CALL_RECORDING_DELETED,\n },\n {\n name: 'RESTORE (restored from trash) -> callRecording:created',\n event: MOCK_RECORDING_RESTORE_EVENT,\n expectedKey: COMMON_EVENT_KEYS.CALL_RECORDING_CREATED,\n },\n {\n name: 'SUMMARY_CREATE (summary/transcript ready) -> callRecording:updated',\n event: MOCK_RECORDING_UPDATED_EVENT,\n expectedKey: COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED,\n },\n ];\n\n it.each(updatedRoutingData)(\n 'routes a convergedRecordings.updated event by eventSubType: $name',\n ({event, expectedKey}) => {\n const spy = jest.fn();\n connector.on(expectedKey, spy);\n\n findHandler(RECORDING_MERCURY_KEYS.UPDATED)(event);\n\n expect(spy).toHaveBeenCalledWith(event);\n }\n );\n\n it('emits the recording deleted event', (done) => {\n connector.on(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, (event: RecordingEvent) => {\n expect(event).toEqual(MOCK_RECORDING_DELETED_EVENT);\n done();\n });\n\n findHandler(RECORDING_MERCURY_KEYS.DELETED)(MOCK_RECORDING_DELETED_EVENT);\n });\n\n it('ignores malformed events without an activity payload', () => {\n const spy = jest.fn();\n connector.on(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, spy);\n\n findHandler(RECORDING_MERCURY_KEYS.CREATED)({} as RecordingEvent);\n\n expect(spy).not.toHaveBeenCalled();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_types","require","_testUtil","_types2","_WxcCallRecordingConnector","_types3","_callRecordingFixtures","_types4","_constants","utils","_interopRequireWildcard","_Logger","_interopRequireDefault","_constants2","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","webex","getTestUtilsWebex","uploadLogsSpy","serviceErrorCodeHandlerSpy","describe","connector","infoSpy","jest","spyOn","log","mockImplementation","errorSpy","beforeAll","WxcCallRecordingConnector","level","LOGGER","INFO","beforeEach","mockResolvedValue","afterEach","clearAllMocks","loggerContext","file","CALL_RECORDING_FILE","method","METHODS","GET_RECORDINGS","it","_asyncToGenerator2","_regenerator","mark","_callee","_response$data$record","payload","response","wrap","_context","prev","next","MOCK_RECORDING_LIST_BODY","request","getCallRecording","type","RecordingRequestType","LIST","sent","expect","statusCode","toBe","message","data","recordings","toHaveLength","id","RECORDING_ONE","not","toHaveBeenCalled","stop","_callee2","callArgs","_context2","options","from","to","status","RecordingStatus","DELETED","max","serviceType","format","ownerType","storageRegion","locationId","topic","webexUserRequest","mock","calls","length","HTTP_METHODS","GET","service","uri","toContain","headers","toEqual","WebexUserRequest","_callee3","_context3","_callee4","_context4","useFakeTimers","setSystemTime","Date","days","concat","encodeURIComponent","useRealTimers","_callee5","_context5","toBeUndefined","_callee6","_context6","MOCK_EMPTY_RECORDING_LIST_BODY","each","expected","ERROR_DETAILS_400","ERROR_DETAILS_401","ERROR_DETAILS_404","_ref8","_callee7","_ref7","failurePayload","_context7","mockRejectedValue","toStrictEqual","toBeCalledOnceWith","toHaveBeenCalledWith","stringContaining","toHaveBeenCalledTimes","_x","apply","arguments","GET_RECORDING","_callee8","_response$data$record2","_context8","MOCK_RECORDING_BODY","DETAIL","recordingId","recording","METHOD_START_MESSAGE","_callee9","_context9","_callee0","_response$data$record3","_context0","BY_CALL_SESSION","callSessionId","CALL_SESSION_ID","_callee1","_context1","_callee10","_context10","_callee11","_context11","GET_RECORDING_METADATA","_callee12","_response$data$metada","_context12","MOCK_RECORDING_METADATA_BODY","METADATA","metadata","_callee13","_context13","DELETE_RECORDING","_callee14","_context14","deleteRecording","POST","body","recordingIds","_callee15","_context15","reason","comment","_callee16","_context16","localConnector","mockOn","findHandler","eventKey","filter","internal","mercury","on","mockClear","registeredKeys","map","RECORDING_MERCURY_KEYS","CREATED","UPDATED","done","COMMON_EVENT_KEYS","CALL_RECORDING_CREATED","event","MOCK_RECORDING_CREATED_EVENT","updatedRoutingData","name","MOCK_RECORDING_TRASH_EVENT","expectedKey","CALL_RECORDING_DELETED","MOCK_RECORDING_PURGE_EVENT","MOCK_RECORDING_RESTORE_EVENT","MOCK_RECORDING_UPDATED_EVENT","CALL_RECORDING_UPDATED","_ref18","spy","fn","MOCK_RECORDING_DELETED_EVENT"],"sources":["WxcCallRecordingConnector.test.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {LOGGER} from '../Logger/types';\nimport {getTestUtilsWebex} from '../common/testUtil';\nimport {HTTP_METHODS, WebexRequestPayload} from '../common/types';\nimport {WxcCallRecordingConnector} from './WxcCallRecordingConnector';\nimport {RecordingRequestType, RecordingStatus} from './types';\nimport {\n CALL_SESSION_ID,\n ERROR_DETAILS_400,\n ERROR_DETAILS_401,\n ERROR_DETAILS_404,\n MOCK_EMPTY_RECORDING_LIST_BODY,\n MOCK_RECORDING_BODY,\n MOCK_RECORDING_CREATED_EVENT,\n MOCK_RECORDING_DELETED_EVENT,\n MOCK_RECORDING_LIST_BODY,\n MOCK_RECORDING_METADATA_BODY,\n MOCK_RECORDING_PURGE_EVENT,\n MOCK_RECORDING_RESTORE_EVENT,\n MOCK_RECORDING_TRASH_EVENT,\n MOCK_RECORDING_UPDATED_EVENT,\n RECORDING_MERCURY_KEYS,\n RECORDING_ONE,\n} from './callRecordingFixtures';\nimport {COMMON_EVENT_KEYS, RecordingEvent} from '../Events/types';\nimport {CALL_RECORDING_FILE, METHODS} from './constants';\nimport * as utils from '../common/Utils';\nimport log from '../Logger';\nimport {METHOD_START_MESSAGE} from '../common/constants';\n\nconst webex = getTestUtilsWebex();\nlet uploadLogsSpy: jest.SpyInstance;\nlet serviceErrorCodeHandlerSpy: jest.SpyInstance;\n\ndescribe('WxcCallRecordingConnector tests', () => {\n let connector: WxcCallRecordingConnector;\n const infoSpy = jest.spyOn(log, 'info').mockImplementation();\n const errorSpy = jest.spyOn(log, 'error').mockImplementation();\n\n beforeAll(() => {\n connector = new WxcCallRecordingConnector(webex, {level: LOGGER.INFO});\n });\n\n beforeEach(() => {\n uploadLogsSpy = jest.spyOn(utils, 'uploadLogs').mockResolvedValue();\n serviceErrorCodeHandlerSpy = jest.spyOn(utils, 'serviceErrorCodeHandler');\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n describe('getRecordings', () => {\n const loggerContext = {file: CALL_RECORDING_FILE, method: METHODS.GET_RECORDINGS};\n\n it('successfully fetches the list of recordings', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n expect(response.data.recordings).toHaveLength(2);\n expect(response.data.recordings?.[0].id).toBe(RECORDING_ONE.id);\n expect(errorSpy).not.toHaveBeenCalled();\n expect(uploadLogsSpy).not.toHaveBeenCalled();\n });\n\n it('builds the request URL with the provided filter/pagination query params', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n await connector.getCallRecording({\n type: RecordingRequestType.LIST,\n options: {\n from: '2024-05-01T00:00:00.000Z',\n to: '2024-05-31T00:00:00.000Z',\n status: RecordingStatus.DELETED,\n max: 25,\n serviceType: 'calling',\n format: 'MP3',\n ownerType: 'user',\n storageRegion: 'US',\n locationId: 'location-123',\n topic: 'Call with User7',\n webexUserRequest: true,\n },\n });\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.method).toBe(HTTP_METHODS.GET);\n expect(callArgs.service).toBe('hydraDeveloperApi');\n expect(callArgs.uri).toContain('/convergedRecordings?');\n expect(callArgs.uri).toContain('from=2024-05-01T00%3A00%3A00.000Z');\n expect(callArgs.uri).toContain('to=2024-05-31T00%3A00%3A00.000Z');\n expect(callArgs.uri).toContain('status=deleted');\n expect(callArgs.uri).toContain('max=25');\n expect(callArgs.uri).toContain('serviceType=calling');\n expect(callArgs.uri).toContain('format=MP3');\n expect(callArgs.uri).toContain('ownerType=user');\n expect(callArgs.uri).toContain('storageRegion=US');\n expect(callArgs.uri).toContain('locationId=location-123');\n expect(callArgs.uri).toContain('topic=Call+with+User7');\n expect(callArgs.uri).not.toContain('orderType');\n expect(callArgs.uri).not.toContain('orderBy');\n expect(callArgs.uri).not.toContain('offset');\n expect(callArgs.uri).not.toContain('actorID');\n expect(callArgs.uri).not.toContain('showAccessCount');\n expect(callArgs.headers).toEqual({WebexUserRequest: 'true'});\n });\n\n it('applies the default filter/pagination query params when no options are provided', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain('from=');\n expect(callArgs.uri).toContain('to=');\n expect(callArgs.uri).toContain('status=available');\n expect(callArgs.uri).toContain('max=30');\n expect(callArgs.uri).not.toContain('orderType');\n expect(callArgs.uri).not.toContain('orderBy');\n expect(callArgs.uri).not.toContain('offset');\n // Optional pass-through filters are omitted when not provided.\n expect(callArgs.uri).not.toContain('serviceType');\n expect(callArgs.uri).not.toContain('format');\n expect(callArgs.uri).not.toContain('ownerType');\n expect(callArgs.uri).not.toContain('storageRegion');\n expect(callArgs.uri).not.toContain('locationId');\n expect(callArgs.uri).not.toContain('topic');\n });\n\n it('derives the from date from the days lookback and defaults to to now when not provided', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n jest.useFakeTimers().setSystemTime(new Date('2024-06-15T12:00:00.000Z'));\n\n await connector.getCallRecording({type: RecordingRequestType.LIST, options: {days: 7}});\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain(`from=${encodeURIComponent('2024-06-08T12:00:00.000Z')}`);\n expect(callArgs.uri).toContain(`to=${encodeURIComponent('2024-06-15T12:00:00.000Z')}`);\n\n jest.useRealTimers();\n });\n\n it('does not send the WebexUserRequest header by default', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.headers).toBeUndefined();\n });\n\n it('returns an empty list when there are no recordings', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_EMPTY_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n expect(response.statusCode).toBe(200);\n expect(response.data.recordings).toEqual([]);\n });\n\n it.each([\n {statusCode: 400, expected: ERROR_DETAILS_400},\n {statusCode: 401, expected: ERROR_DETAILS_401},\n {statusCode: 404, expected: ERROR_DETAILS_404},\n ])('handles a $statusCode error', async ({statusCode, expected}) => {\n const failurePayload = {statusCode};\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>failurePayload));\n\n const response = await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n expect(response).toStrictEqual(expected);\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith({statusCode}, loggerContext);\n expect(errorSpy).toHaveBeenCalledWith(\n expect.stringContaining('Failed to get recordings'),\n loggerContext\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('getRecording', () => {\n const loggerContext = {file: CALL_RECORDING_FILE, method: METHODS.GET_RECORDING};\n\n it('successfully fetches a single recording', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.DETAIL,\n recordingId: RECORDING_ONE.id,\n });\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n expect(response.data.recording?.id).toBe(RECORDING_ONE.id);\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain(`/convergedRecordings/${RECORDING_ONE.id}`);\n expect(callArgs.method).toBe(HTTP_METHODS.GET);\n expect(callArgs.service).toBe('hydraDeveloperApi');\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with recordingId=${RECORDING_ONE.id}`,\n loggerContext\n );\n });\n\n it('handles a 404 error when the recording does not exist', async () => {\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>{statusCode: 404}));\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.DETAIL,\n recordingId: 'missing-id',\n });\n\n expect(response).toStrictEqual(ERROR_DETAILS_404);\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('getRecordingsByCallSessionId', () => {\n it('returns only the recordings matching the call session id', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.BY_CALL_SESSION,\n callSessionId: CALL_SESSION_ID,\n });\n\n expect(response.statusCode).toBe(200);\n expect(response.data.recordings).toHaveLength(1);\n expect(response.data.recordings?.[0].id).toBe(RECORDING_ONE.id);\n });\n\n it('returns an empty list when no recording matches', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.BY_CALL_SESSION,\n callSessionId: 'non-existent-session',\n });\n\n expect(response.statusCode).toBe(200);\n expect(response.data.recordings).toEqual([]);\n });\n\n it('propagates the error response from the underlying list call', async () => {\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>{statusCode: 401}));\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.BY_CALL_SESSION,\n callSessionId: CALL_SESSION_ID,\n });\n\n expect(response).toStrictEqual(ERROR_DETAILS_401);\n });\n\n it('forwards list options to the underlying list query to widen the scan', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n await connector.getCallRecording({\n type: RecordingRequestType.BY_CALL_SESSION,\n callSessionId: CALL_SESSION_ID,\n options: {\n from: '2024-05-01T00:00:00.000Z',\n to: '2024-05-31T00:00:00.000Z',\n status: RecordingStatus.DELETED,\n max: 100,\n },\n });\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain('from=2024-05-01T00%3A00%3A00.000Z');\n expect(callArgs.uri).toContain('to=2024-05-31T00%3A00%3A00.000Z');\n expect(callArgs.uri).toContain('status=deleted');\n expect(callArgs.uri).toContain('max=100');\n });\n });\n\n describe('getRecordingMetadata', () => {\n const loggerContext = {file: CALL_RECORDING_FILE, method: METHODS.GET_RECORDING_METADATA};\n\n it('successfully fetches the recording metadata', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_METADATA_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.METADATA,\n recordingId: RECORDING_ONE.id,\n });\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n expect(response.data.metadata?.callSessionId).toBe(CALL_SESSION_ID);\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain(`/convergedRecordings/${RECORDING_ONE.id}/metadata`);\n expect(callArgs.method).toBe(HTTP_METHODS.GET);\n expect(callArgs.service).toBe('hydraDeveloperApi');\n });\n\n it('handles a 400 error', async () => {\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>{statusCode: 400}));\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.METADATA,\n recordingId: 'bad-id',\n });\n\n expect(response).toStrictEqual(ERROR_DETAILS_400);\n expect(errorSpy).toHaveBeenCalledWith(\n expect.stringContaining('Failed to get recording metadata'),\n loggerContext\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('deleteRecording', () => {\n const loggerContext = {file: CALL_RECORDING_FILE, method: METHODS.DELETE_RECORDING};\n\n it('successfully soft-deletes a recording via POST /convergedRecordings/softDelete', async () => {\n webex.request.mockResolvedValue(<WebexRequestPayload>(<unknown>{statusCode: 204}));\n\n const response = await connector.deleteRecording(RECORDING_ONE.id);\n\n expect(response.statusCode).toBe(204);\n expect(response.message).toBe('SUCCESS');\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain('/convergedRecordings/softDelete');\n expect(callArgs.uri).not.toContain(`/convergedRecordings/${RECORDING_ONE.id}`);\n expect(callArgs.method).toBe(HTTP_METHODS.POST);\n expect(callArgs.service).toBe('hydraDeveloperApi');\n expect(callArgs.body).toStrictEqual({recordingIds: [RECORDING_ONE.id]});\n });\n\n it('ignores deprecated reason/comment options (compliance DELETE is not exposed)', async () => {\n webex.request.mockResolvedValue(<WebexRequestPayload>(<unknown>{statusCode: 204}));\n\n await connector.deleteRecording(RECORDING_ONE.id, {\n reason: 'audit',\n comment: 'Maintain data privacy',\n });\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.method).toBe(HTTP_METHODS.POST);\n expect(callArgs.body).toStrictEqual({recordingIds: [RECORDING_ONE.id]});\n });\n\n it('handles a 400 error', async () => {\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>{statusCode: 400}));\n\n const response = await connector.deleteRecording('bad-id');\n\n expect(response).toStrictEqual(ERROR_DETAILS_400);\n expect(errorSpy).toHaveBeenCalledWith(\n expect.stringContaining('Failed to delete recording'),\n loggerContext\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('URL resolution', () => {\n it('resolves the recording base URL from the services catalog (hydraDeveloperApi)', () => {\n const localConnector = new WxcCallRecordingConnector(getTestUtilsWebex(), {\n level: LOGGER.INFO,\n });\n\n expect(localConnector['recordingServiceUrl']).toBe('https://integration.webexapis.com/v1');\n });\n });\n\n describe('Recording Mercury events', () => {\n let mockOn: jest.Mock;\n\n const findHandler = (eventKey: string) => {\n const calls = mockOn.mock.calls.filter((call) => call[0] === eventKey);\n\n return calls[calls.length - 1][1];\n };\n\n beforeEach(() => {\n mockOn = webex.internal.mercury.on as unknown as jest.Mock;\n mockOn.mockClear();\n connector = new WxcCallRecordingConnector(webex, {level: LOGGER.INFO});\n });\n\n it('registers listeners for all three recording mercury events', () => {\n const registeredKeys = mockOn.mock.calls.map((call) => call[0]);\n\n expect(registeredKeys).toContain(RECORDING_MERCURY_KEYS.CREATED);\n expect(registeredKeys).toContain(RECORDING_MERCURY_KEYS.UPDATED);\n expect(registeredKeys).toContain(RECORDING_MERCURY_KEYS.DELETED);\n });\n\n it('emits the recording created event', (done) => {\n connector.on(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, (event: RecordingEvent) => {\n expect(event).toEqual(MOCK_RECORDING_CREATED_EVENT);\n done();\n });\n\n findHandler(RECORDING_MERCURY_KEYS.CREATED)(MOCK_RECORDING_CREATED_EVENT);\n });\n\n /**\n * The backend delivers the recording lifecycle through `convergedRecordings.updated` events\n * qualified by `eventSubType`. The connector routes them to the intuitive typed event:\n * name: TestCase name\n * event: the raw `updated` Mercury event (with its eventSubType)\n * expectedKey: the typed event the connector should emit\n */\n const updatedRoutingData: {\n name: string;\n event: RecordingEvent;\n expectedKey: COMMON_EVENT_KEYS;\n }[] = [\n {\n name: 'TRASH (soft delete) -> callRecording:deleted',\n event: MOCK_RECORDING_TRASH_EVENT,\n expectedKey: COMMON_EVENT_KEYS.CALL_RECORDING_DELETED,\n },\n {\n name: 'PURGE (permanent delete) -> callRecording:deleted',\n event: MOCK_RECORDING_PURGE_EVENT,\n expectedKey: COMMON_EVENT_KEYS.CALL_RECORDING_DELETED,\n },\n {\n name: 'RESTORE (restored from trash) -> callRecording:created',\n event: MOCK_RECORDING_RESTORE_EVENT,\n expectedKey: COMMON_EVENT_KEYS.CALL_RECORDING_CREATED,\n },\n {\n name: 'SUMMARY_CREATE (summary/transcript ready) -> callRecording:updated',\n event: MOCK_RECORDING_UPDATED_EVENT,\n expectedKey: COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED,\n },\n ];\n\n it.each(updatedRoutingData)(\n 'routes a convergedRecordings.updated event by eventSubType: $name',\n ({event, expectedKey}) => {\n const spy = jest.fn();\n connector.on(expectedKey, spy);\n\n findHandler(RECORDING_MERCURY_KEYS.UPDATED)(event);\n\n expect(spy).toHaveBeenCalledWith(event);\n }\n );\n\n it('emits the recording deleted event', (done) => {\n connector.on(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, (event: RecordingEvent) => {\n expect(event).toEqual(MOCK_RECORDING_DELETED_EVENT);\n done();\n });\n\n findHandler(RECORDING_MERCURY_KEYS.DELETED)(MOCK_RECORDING_DELETED_EVENT);\n });\n\n it('ignores malformed events without an activity payload', () => {\n const spy = jest.fn();\n connector.on(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, spy);\n\n findHandler(RECORDING_MERCURY_KEYS.CREATED)({} as RecordingEvent);\n\n expect(spy).not.toHaveBeenCalled();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,11 +4,12 @@ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/defi
|
|
|
4
4
|
_Object$defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.WEBEX_USER_REQUEST_HEADER = exports.TOPIC = exports.TO = exports.STORAGE_REGION = exports.STATUS = exports.SERVICE_TYPE = exports.RECORDING_NOT_FOUND_MESSAGE = exports.OWNER_TYPE = exports.METHODS = exports.METADATA = exports.MAX = exports.LOCATION_ID = exports.FROM = exports.FORMAT = exports.DEFAULT_STATUS = exports.DEFAULT_NUMBER_OF_DAYS = exports.DEFAULT_MAX = exports.CONVERGED_RECORDINGS = exports.CALL_RECORDING_FILE = void 0;
|
|
7
|
+
exports.WEBEX_USER_REQUEST_HEADER = exports.TOPIC = exports.TO = exports.STORAGE_REGION = exports.STATUS = exports.SOFT_DELETE = exports.SERVICE_TYPE = exports.RECORDING_NOT_FOUND_MESSAGE = exports.OWNER_TYPE = exports.METHODS = exports.METADATA = exports.MAX = exports.LOCATION_ID = exports.FROM = exports.FORMAT = exports.DEFAULT_STATUS = exports.DEFAULT_NUMBER_OF_DAYS = exports.DEFAULT_MAX = exports.CONVERGED_RECORDINGS = exports.CALL_RECORDING_FILE = void 0;
|
|
8
8
|
var CALL_RECORDING_FILE = exports.CALL_RECORDING_FILE = 'CallRecording';
|
|
9
9
|
|
|
10
10
|
// Recording API (hydra developer API) endpoint segments.
|
|
11
11
|
var CONVERGED_RECORDINGS = exports.CONVERGED_RECORDINGS = 'convergedRecordings';
|
|
12
|
+
var SOFT_DELETE = exports.SOFT_DELETE = 'softDelete';
|
|
12
13
|
var METADATA = exports.METADATA = 'metadata';
|
|
13
14
|
|
|
14
15
|
// Query parameter keys for the list request.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CALL_RECORDING_FILE","exports","CONVERGED_RECORDINGS","METADATA","FROM","TO","STATUS","MAX","SERVICE_TYPE","FORMAT","OWNER_TYPE","STORAGE_REGION","LOCATION_ID","TOPIC","DEFAULT_STATUS","DEFAULT_MAX","DEFAULT_NUMBER_OF_DAYS","WEBEX_USER_REQUEST_HEADER","RECORDING_NOT_FOUND_MESSAGE","METHODS","INITIALIZE_BACKEND_CONNECTOR","GET_CALL_RECORDING","GET_RECORDINGS","GET_RECORDING","GET_RECORDINGS_BY_CALL_SESSION_ID","GET_RECORDING_METADATA","DELETE_RECORDING"],"sources":["constants.ts"],"sourcesContent":["export const CALL_RECORDING_FILE = 'CallRecording';\n\n// Recording API (hydra developer API) endpoint segments.\nexport const CONVERGED_RECORDINGS = 'convergedRecordings';\nexport const METADATA = 'metadata';\n\n// Query parameter keys for the list request.\nexport const FROM = 'from';\nexport const TO = 'to';\nexport const STATUS = 'status';\nexport const MAX = 'max';\nexport const SERVICE_TYPE = 'serviceType';\nexport const FORMAT = 'format';\nexport const OWNER_TYPE = 'ownerType';\nexport const STORAGE_REGION = 'storageRegion';\nexport const LOCATION_ID = 'locationId';\nexport const TOPIC = 'topic';\n\n// Default list query values.\nexport const DEFAULT_STATUS = 'available';\nexport const DEFAULT_MAX = 30;\n\n// Default lookback window (in days) used to derive `from` when the caller does not provide one.\n// The Converged Recordings list API only accepts a `from`/`to` interval of at most 30 days, so the\n// default must stay within that limit; a larger default window would be rejected by the API.\nexport const DEFAULT_NUMBER_OF_DAYS = 30;\n\n// Header used to flag an explicit end-user request (rate-limit bypass). Off by default.\nexport const WEBEX_USER_REQUEST_HEADER = 'WebexUserRequest';\n\nexport const RECORDING_NOT_FOUND_MESSAGE = 'No recordings found for the given call session id.';\n\n// Method names (for structured logging).\nexport const METHODS = {\n INITIALIZE_BACKEND_CONNECTOR: 'initializeBackendConnector',\n GET_CALL_RECORDING: 'getCallRecording',\n GET_RECORDINGS: 'getRecordings',\n GET_RECORDING: 'getRecording',\n GET_RECORDINGS_BY_CALL_SESSION_ID: 'getRecordingsByCallSessionId',\n GET_RECORDING_METADATA: 'getRecordingMetadata',\n DELETE_RECORDING: 'deleteRecording',\n};\n"],"mappings":";;;;;;;AAAO,IAAMA,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,eAAe;;AAElD;AACO,IAAME,oBAAoB,GAAAD,OAAA,CAAAC,oBAAA,GAAG,qBAAqB;AAClD,IAAMC,
|
|
1
|
+
{"version":3,"names":["CALL_RECORDING_FILE","exports","CONVERGED_RECORDINGS","SOFT_DELETE","METADATA","FROM","TO","STATUS","MAX","SERVICE_TYPE","FORMAT","OWNER_TYPE","STORAGE_REGION","LOCATION_ID","TOPIC","DEFAULT_STATUS","DEFAULT_MAX","DEFAULT_NUMBER_OF_DAYS","WEBEX_USER_REQUEST_HEADER","RECORDING_NOT_FOUND_MESSAGE","METHODS","INITIALIZE_BACKEND_CONNECTOR","GET_CALL_RECORDING","GET_RECORDINGS","GET_RECORDING","GET_RECORDINGS_BY_CALL_SESSION_ID","GET_RECORDING_METADATA","DELETE_RECORDING"],"sources":["constants.ts"],"sourcesContent":["export const CALL_RECORDING_FILE = 'CallRecording';\n\n// Recording API (hydra developer API) endpoint segments.\nexport const CONVERGED_RECORDINGS = 'convergedRecordings';\nexport const SOFT_DELETE = 'softDelete';\nexport const METADATA = 'metadata';\n\n// Query parameter keys for the list request.\nexport const FROM = 'from';\nexport const TO = 'to';\nexport const STATUS = 'status';\nexport const MAX = 'max';\nexport const SERVICE_TYPE = 'serviceType';\nexport const FORMAT = 'format';\nexport const OWNER_TYPE = 'ownerType';\nexport const STORAGE_REGION = 'storageRegion';\nexport const LOCATION_ID = 'locationId';\nexport const TOPIC = 'topic';\n\n// Default list query values.\nexport const DEFAULT_STATUS = 'available';\nexport const DEFAULT_MAX = 30;\n\n// Default lookback window (in days) used to derive `from` when the caller does not provide one.\n// The Converged Recordings list API only accepts a `from`/`to` interval of at most 30 days, so the\n// default must stay within that limit; a larger default window would be rejected by the API.\nexport const DEFAULT_NUMBER_OF_DAYS = 30;\n\n// Header used to flag an explicit end-user request (rate-limit bypass). Off by default.\nexport const WEBEX_USER_REQUEST_HEADER = 'WebexUserRequest';\n\nexport const RECORDING_NOT_FOUND_MESSAGE = 'No recordings found for the given call session id.';\n\n// Method names (for structured logging).\nexport const METHODS = {\n INITIALIZE_BACKEND_CONNECTOR: 'initializeBackendConnector',\n GET_CALL_RECORDING: 'getCallRecording',\n GET_RECORDINGS: 'getRecordings',\n GET_RECORDING: 'getRecording',\n GET_RECORDINGS_BY_CALL_SESSION_ID: 'getRecordingsByCallSessionId',\n GET_RECORDING_METADATA: 'getRecordingMetadata',\n DELETE_RECORDING: 'deleteRecording',\n};\n"],"mappings":";;;;;;;AAAO,IAAMA,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,eAAe;;AAElD;AACO,IAAME,oBAAoB,GAAAD,OAAA,CAAAC,oBAAA,GAAG,qBAAqB;AAClD,IAAMC,WAAW,GAAAF,OAAA,CAAAE,WAAA,GAAG,YAAY;AAChC,IAAMC,QAAQ,GAAAH,OAAA,CAAAG,QAAA,GAAG,UAAU;;AAElC;AACO,IAAMC,IAAI,GAAAJ,OAAA,CAAAI,IAAA,GAAG,MAAM;AACnB,IAAMC,EAAE,GAAAL,OAAA,CAAAK,EAAA,GAAG,IAAI;AACf,IAAMC,MAAM,GAAAN,OAAA,CAAAM,MAAA,GAAG,QAAQ;AACvB,IAAMC,GAAG,GAAAP,OAAA,CAAAO,GAAA,GAAG,KAAK;AACjB,IAAMC,YAAY,GAAAR,OAAA,CAAAQ,YAAA,GAAG,aAAa;AAClC,IAAMC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,QAAQ;AACvB,IAAMC,UAAU,GAAAV,OAAA,CAAAU,UAAA,GAAG,WAAW;AAC9B,IAAMC,cAAc,GAAAX,OAAA,CAAAW,cAAA,GAAG,eAAe;AACtC,IAAMC,WAAW,GAAAZ,OAAA,CAAAY,WAAA,GAAG,YAAY;AAChC,IAAMC,KAAK,GAAAb,OAAA,CAAAa,KAAA,GAAG,OAAO;;AAE5B;AACO,IAAMC,cAAc,GAAAd,OAAA,CAAAc,cAAA,GAAG,WAAW;AAClC,IAAMC,WAAW,GAAAf,OAAA,CAAAe,WAAA,GAAG,EAAE;;AAE7B;AACA;AACA;AACO,IAAMC,sBAAsB,GAAAhB,OAAA,CAAAgB,sBAAA,GAAG,EAAE;;AAExC;AACO,IAAMC,yBAAyB,GAAAjB,OAAA,CAAAiB,yBAAA,GAAG,kBAAkB;AAEpD,IAAMC,2BAA2B,GAAAlB,OAAA,CAAAkB,2BAAA,GAAG,oDAAoD;;AAE/F;AACO,IAAMC,OAAO,GAAAnB,OAAA,CAAAmB,OAAA,GAAG;EACrBC,4BAA4B,EAAE,4BAA4B;EAC1DC,kBAAkB,EAAE,kBAAkB;EACtCC,cAAc,EAAE,eAAe;EAC/BC,aAAa,EAAE,cAAc;EAC7BC,iCAAiC,EAAE,8BAA8B;EACjEC,sBAAsB,EAAE,sBAAsB;EAC9CC,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
|
|
@@ -80,8 +80,8 @@ var AiGenerationStatus = exports.AiGenerationStatus = /*#__PURE__*/function (AiG
|
|
|
80
80
|
* `WebexUserRequest` header (ad-hoc rate-limit bypass), defaulting to `false`.
|
|
81
81
|
*/
|
|
82
82
|
/**
|
|
83
|
-
*
|
|
84
|
-
*
|
|
83
|
+
* @deprecated Ignored by {@link ICallRecording.deleteRecording}. Retained for backward-compatible
|
|
84
|
+
* signatures only. Compliance permanent delete is not exposed on the CallRecording client.
|
|
85
85
|
*/
|
|
86
86
|
/**
|
|
87
87
|
* Discriminator for {@link GetCallRecordingRequest}. Selects which read operation
|
|
@@ -131,6 +131,7 @@ var RecordingRequestType = exports.RecordingRequestType = /*#__PURE__*/function
|
|
|
131
131
|
*
|
|
132
132
|
* Provides read access to Post Call Recordings through a single {@link getCallRecording} method
|
|
133
133
|
* (listing, single fetch, lookup by call session, and metadata — selected by the request `type`),
|
|
134
|
-
*
|
|
134
|
+
* moves a recording to the recycle bin (soft delete), and emits recording lifecycle events received
|
|
135
|
+
* over Mercury.
|
|
135
136
|
*/
|
|
136
137
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RecordingStatus","exports","AiGenerationStatus","RecordingRequestType"],"sources":["types.ts"],"sourcesContent":["import {Eventing} from '../Events/impl';\nimport {CallRecordingEventTypes} from '../Events/types';\nimport {LOGGER} from '../Logger/types';\n\nexport interface LoggerInterface {\n level: LOGGER;\n}\n\n/**\n * Status of a converged recording, used both as the response field and as the list filter.\n *\n * - `available`: the recording is available (default).\n * - `deleted`: the recording has been moved into the recycle bin.\n */\nexport enum RecordingStatus {\n AVAILABLE = 'available',\n DELETED = 'deleted',\n}\n\n/**\n * Status of an AI-generated artifact (summary / suggested notes / action items).\n */\nexport enum AiGenerationStatus {\n NOT_STARTED = 'NOT_STARTED',\n IN_PROGRESS = 'IN_PROGRESS',\n COMPLETED = 'COMPLETED',\n FAILED = 'FAILED',\n}\n\n/**\n * Which side of the call the recording owner was on, as reported by `serviceData.personality`:\n * - `originator`: the owner placed the call (the remote party is `calledParty`).\n * - `terminator`: the owner received the call (the remote party is `callingParty`).\n *\n * Use {@link getRemoteParty} to resolve the other party without having to branch on this manually.\n */\nexport type RecordingPersonality = 'originator' | 'terminator';\n\n/**\n * The acting entity behind a call party. For Webex users `type` is `USER` and `id` is the Webex\n * person UUID — the identifier accepted by the avatar (`@webex/internal-plugin-avatar`) and\n * presence (DSS) services. External/PSTN parties may have only a `number`/`name` on the parent\n * {@link RecordingParty} and no `actor.id`.\n */\nexport type RecordingActor = {\n type?: string;\n id?: string;\n email?: string;\n};\n\n/**\n * A party (calling or called) involved in the recorded call. `actor.id` is the resolvable person\n * UUID when the party is a Webex user; `number`/`name` are the dialable number and display name.\n */\nexport type RecordingParty = {\n actor?: RecordingActor;\n number?: string;\n name?: string;\n};\n\n/**\n * Service-specific data attached to a converged recording. For calling recordings this carries the\n * `locationId` and the `callSessionId` shared with the originating call session.\n *\n * The party details (`personality`, `callingParty`, `calledParty`) identify who the call was with\n * and are returned by the metadata endpoint (`GET /convergedRecordings/{recordingId}/metadata`);\n * the list endpoint only populates `locationId`/`callSessionId`. Resolve the remote participant's\n * person UUID (for avatar/presence) via `getRemoteParty(serviceData)?.actor?.id`.\n */\nexport type RecordingServiceData = {\n callRecordingId?: string;\n locationId?: string;\n callSessionId?: string;\n personality?: RecordingPersonality;\n callingParty?: RecordingParty;\n calledParty?: RecordingParty;\n [key: string]: unknown;\n};\n\n/**\n * Temporary, direct download links for a recording's media, returned by\n * `GET /convergedRecordings/{recordingId}`. Only available for authorized users / Compliance\n * Officers and absent when downloading is prevented.\n */\nexport type TemporaryDirectDownloadLinks = {\n audioDownloadLink?: string;\n transcriptDownloadLink?: string;\n expiration?: string;\n};\n\n/**\n * A converged recording as returned by `GET /convergedRecordings` (list `items[]`) and\n * `GET /convergedRecordings/{recordingId}`.\n *\n * Field mapping note (matches the public Webex Converged Recordings API):\n * - `id` is the recording id used by {@link ICallRecording.getRecording}.\n * - `serviceData.callSessionId` is the call session id used by\n * {@link ICallRecording.getRecordingsByCallSessionId}.\n */\nexport type Recording = {\n id: string;\n topic?: string;\n createTime?: string;\n timeRecorded?: string;\n format?: string;\n serviceType?: string;\n durationSeconds?: number;\n sizeBytes?: number;\n status?: RecordingStatus;\n ownerId?: string;\n ownerEmail?: string;\n ownerType?: string;\n storageRegion?: string;\n serviceData?: RecordingServiceData;\n temporaryDirectDownloadLinks?: TemporaryDirectDownloadLinks;\n};\n\n/**\n * Raw list response body returned by `GET /convergedRecordings`.\n */\nexport type RecordingListBody = {\n items?: Recording[];\n};\n\n/**\n * Metadata returned by `GET /convergedRecordings/{recordingUUID}/metadata`.\n * The structure is preserved as returned by the backend; optional typed fields are provided\n * for the well-known properties.\n */\nexport type RecordingMetadataOwner = {\n ownerID?: string;\n ownerEmail?: string;\n ownerName?: string;\n orgID?: string;\n};\n\nexport type RecordingMetadataParticipant = {\n id?: string;\n name?: string;\n email?: string;\n phoneNumber?: string;\n joinTime?: string;\n leaveTime?: string;\n};\n\nexport type RecordingMediaStream = {\n streamId?: string;\n type?: string;\n codec?: string;\n durationMS?: number;\n};\n\nexport type RecordingExtensionData = {\n callData?: Record<string, unknown>;\n acd?: Record<string, unknown>;\n redirectInfo?: Record<string, unknown>;\n};\n\nexport type RecordingMetadata = {\n id?: string;\n callSessionId?: string;\n owner?: RecordingMetadataOwner;\n session?: Record<string, unknown>;\n participants?: RecordingMetadataParticipant[];\n mediaStreams?: RecordingMediaStream[];\n extensionData?: RecordingExtensionData;\n /**\n * Service-specific data, including the call party details (`personality`, `callingParty`,\n * `calledParty`) used to resolve the remote participant for avatar/presence. See\n * {@link getRemoteParty}.\n */\n serviceData?: RecordingServiceData;\n [key: string]: unknown;\n};\n\n/**\n * Options for {@link ICallRecording.getRecordings}. All fields are optional and are passed through\n * to the recording API as query parameters where supported. `webexUserRequest` toggles the\n * `WebexUserRequest` header (ad-hoc rate-limit bypass), defaulting to `false`.\n */\nexport type GetRecordingsOptions = {\n /**\n * ISO-8601 start of the time window (inclusive). When omitted, it is derived from `days`\n * (`now - days`), mirroring CallHistory's mandatory `from` date.\n */\n from?: string;\n /**\n * ISO-8601 end of the time window (inclusive). When omitted, it defaults to the current time\n * (`now`). The API requires both `from` and `to` to return results.\n */\n to?: string;\n /**\n * Lookback window in days used to derive `from` when `from` is not provided. Defaults to `30`.\n * The list API only accepts a `from`/`to` interval of at most 30 days; larger windows are\n * rejected, so callers must keep custom values within that limit.\n * Ignored when an explicit `from` is supplied.\n */\n days?: number;\n /** Filter by recording status. Defaults to `available`. */\n status?: RecordingStatus;\n /** Maximum number of records to return per page. Defaults to `30`. */\n max?: number;\n /**\n * Filter by the service that produced the recording (e.g. `'calling'`). Sent only when provided;\n * when omitted the API applies its own default.\n */\n serviceType?: string;\n /** Filter by recording media format (e.g. `'MP3'`, `'MP4'`). Sent only when provided. */\n format?: string;\n /** Filter by recording owner type (e.g. `'user'`). Sent only when provided. */\n ownerType?: string;\n /** Filter by storage region (e.g. `'US'`). Sent only when provided. */\n storageRegion?: string;\n /** Filter by the location id the recording belongs to. Sent only when provided. */\n locationId?: string;\n /** Filter by recording topic. Sent only when provided. */\n topic?: string;\n /** When true, sends the `WebexUserRequest: true` header. Defaults to false. */\n webexUserRequest?: boolean;\n};\n\nexport type RecordingListResponse = {\n statusCode: number;\n data: {\n recordings?: Recording[];\n error?: string;\n };\n message: string | null;\n};\n\nexport type RecordingResponse = {\n statusCode: number;\n data: {\n recording?: Recording;\n error?: string;\n };\n message: string | null;\n};\n\nexport type RecordingMetadataResponse = {\n statusCode: number;\n data: {\n metadata?: RecordingMetadata;\n error?: string;\n };\n message: string | null;\n};\n\nexport type RecordingDeleteResponse = {\n statusCode: number;\n data: {\n error?: string;\n };\n message: string | null;\n};\n\n/**\n * Optional request body for {@link ICallRecording.deleteRecording}. Both fields are only required\n * when a Compliance Officer deletes another user's recording.\n */\nexport type DeleteRecordingOptions = {\n /** Reason for deleting the recording (e.g. `audit`). */\n reason?: string;\n /** Compliance Officer's explanation for the deletion. Max 255 characters. */\n comment?: string;\n};\n\n/**\n * Discriminator for {@link GetCallRecordingRequest}. Selects which read operation\n * {@link ICallRecording.getCallRecording} performs based on the request body.\n *\n * - `LIST`: list the current user's recordings.\n * - `DETAIL`: fetch a single recording (with download/playback links).\n * - `METADATA`: fetch a single recording's metadata document.\n * - `BY_CALL_SESSION`: list recordings tied to a call session id (client-side filter).\n */\nexport enum RecordingRequestType {\n LIST = 'list',\n DETAIL = 'detail',\n METADATA = 'metadata',\n BY_CALL_SESSION = 'byCallSession',\n}\n\n/**\n * Lists the current user's converged recordings.\n * Maps to `GET /convergedRecordings` with the query params from {@link GetRecordingsOptions}.\n */\nexport type ListRecordingsRequest = {\n type: RecordingRequestType.LIST;\n options?: GetRecordingsOptions;\n};\n\n/**\n * Fetches a single converged recording by id.\n * Maps to `GET /convergedRecordings/{recordingId}`.\n */\nexport type DetailRecordingRequest = {\n type: RecordingRequestType.DETAIL;\n recordingId: string;\n};\n\n/**\n * Fetches the metadata document for a single recording.\n * Maps to `GET /convergedRecordings/{recordingId}/metadata`.\n */\nexport type MetadataRecordingRequest = {\n type: RecordingRequestType.METADATA;\n recordingId: string;\n};\n\n/**\n * Returns the recordings tied to a call session id (`serviceData.callSessionId`).\n * Fetches a list and filters client-side; `options` widen the scanned set.\n */\nexport type CallSessionRecordingsRequest = {\n type: RecordingRequestType.BY_CALL_SESSION;\n callSessionId: string;\n options?: GetRecordingsOptions;\n};\n\n/**\n * Discriminated union of every read request accepted by {@link ICallRecording.getCallRecording}.\n * The `type` field selects the operation and constrains the rest of the body, while\n * {@link RecordingResponseFor} maps each member to its concrete response type so the caller keeps\n * full type inference from a single method.\n */\nexport type GetCallRecordingRequest =\n | ListRecordingsRequest\n | DetailRecordingRequest\n | MetadataRecordingRequest\n | CallSessionRecordingsRequest;\n\n/**\n * Maps a {@link GetCallRecordingRequest} member to the response type\n * {@link ICallRecording.getCallRecording} resolves with for that request, preserving per-request\n * return-type inference behind the single method.\n */\nexport type RecordingResponseFor<T extends GetCallRecordingRequest> =\n T extends DetailRecordingRequest\n ? RecordingResponse\n : T extends MetadataRecordingRequest\n ? RecordingMetadataResponse\n : RecordingListResponse;\n\n/**\n * Interface for the CallRecording client.\n *\n * Provides read access to Post Call Recordings through a single {@link getCallRecording} method\n * (listing, single fetch, lookup by call session, and metadata — selected by the request `type`),\n * permanent deletion of a recording, and emits recording lifecycle events received over Mercury.\n */\nexport interface ICallRecording extends Eventing<CallRecordingEventTypes> {\n /**\n * Reads Post Call Recordings. The {@link GetCallRecordingRequest} `type` selects the operation\n * and constrains the rest of the request body; the resolved response type is inferred per\n * request via {@link RecordingResponseFor}:\n *\n * - `LIST` (`GET /convergedRecordings`) -> {@link RecordingListResponse}. The query params come\n * from {@link GetRecordingsOptions}; both a `from` lower bound (derived from `days` when not\n * provided) and a `to` upper bound (defaults to `now`) are always sent, because the API only\n * returns results when the time window is bounded on both ends.\n * - `DETAIL` (`GET /convergedRecordings/{recordingId}`) -> {@link RecordingResponse}.\n * - `METADATA` (`GET /convergedRecordings/{recordingId}/metadata`) ->\n * {@link RecordingMetadataResponse}.\n * - `BY_CALL_SESSION` -> {@link RecordingListResponse}. The recording API has no confirmed\n * server-side filter for call session id, so this fetches a list and filters client-side on\n * `serviceData.callSessionId`. The scan is bounded by the list query, so pass `options` to\n * widen the time window/status/page when the target session may fall outside the defaults.\n *\n * @param request - The discriminated read request.\n *\n * @example\n * ```javascript\n * const list = await callRecording.getCallRecording({type: RecordingRequestType.LIST, options: {max: 30}});\n * const one = await callRecording.getCallRecording({type: RecordingRequestType.DETAIL, recordingId});\n * const meta = await callRecording.getCallRecording({type: RecordingRequestType.METADATA, recordingId});\n * const bySession = await callRecording.getCallRecording({\n * type: RecordingRequestType.BY_CALL_SESSION,\n * callSessionId,\n * options: {days: 30, max: 100},\n * });\n * ```\n */\n getCallRecording<T extends GetCallRecordingRequest>(request: T): Promise<RecordingResponseFor<T>>;\n\n /**\n * Permanently deletes a single recording.\n *\n * Calls `DELETE /convergedRecordings/{recordingId}`. Per the API, the deleted recording\n * **cannot be recovered**; when a Compliance Officer deletes another user's recording it is\n * purged from Webex and becomes inaccessible to all parties. Requires the\n * `spark-compliance:recordings_write` scope on the access token.\n *\n * `options.reason` / `options.comment` are only required when a Compliance Officer deletes\n * another user's recording and are sent as the request body when provided.\n *\n * @param recordingId - The recording id (`id`) to delete.\n * @param options - Optional `reason`/`comment` (Compliance Officer deletions).\n *\n * @example\n * ```javascript\n * await callRecording.deleteRecording(recordingId);\n * await callRecording.deleteRecording(recordingId, {reason: 'audit', comment: 'Maintain data privacy'});\n * ```\n */\n deleteRecording(\n recordingId: string,\n options?: DeleteRecordingOptions\n ): Promise<RecordingDeleteResponse>;\n}\n"],"mappings":";;;;;;;AAQA;AACA;AACA;AACA;AACA;AACA;AALA,IAMYA,eAAe,GAAAC,OAAA,CAAAD,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAK3B;AACA;AACA;AAFA,IAGYE,kBAAkB,GAAAD,OAAA,CAAAC,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AAO9B;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAmBA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AA+CA;AACA;AACA;AACA;AACA;AA6EA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA,IASYC,oBAAoB,GAAAF,OAAA,CAAAE,oBAAA,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAOhC;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["RecordingStatus","exports","AiGenerationStatus","RecordingRequestType"],"sources":["types.ts"],"sourcesContent":["import {Eventing} from '../Events/impl';\nimport {CallRecordingEventTypes} from '../Events/types';\nimport {LOGGER} from '../Logger/types';\n\nexport interface LoggerInterface {\n level: LOGGER;\n}\n\n/**\n * Status of a converged recording, used both as the response field and as the list filter.\n *\n * - `available`: the recording is available (default).\n * - `deleted`: the recording has been moved into the recycle bin.\n */\nexport enum RecordingStatus {\n AVAILABLE = 'available',\n DELETED = 'deleted',\n}\n\n/**\n * Status of an AI-generated artifact (summary / suggested notes / action items).\n */\nexport enum AiGenerationStatus {\n NOT_STARTED = 'NOT_STARTED',\n IN_PROGRESS = 'IN_PROGRESS',\n COMPLETED = 'COMPLETED',\n FAILED = 'FAILED',\n}\n\n/**\n * Which side of the call the recording owner was on, as reported by `serviceData.personality`:\n * - `originator`: the owner placed the call (the remote party is `calledParty`).\n * - `terminator`: the owner received the call (the remote party is `callingParty`).\n *\n * Use {@link getRemoteParty} to resolve the other party without having to branch on this manually.\n */\nexport type RecordingPersonality = 'originator' | 'terminator';\n\n/**\n * The acting entity behind a call party. For Webex users `type` is `USER` and `id` is the Webex\n * person UUID — the identifier accepted by the avatar (`@webex/internal-plugin-avatar`) and\n * presence (DSS) services. External/PSTN parties may have only a `number`/`name` on the parent\n * {@link RecordingParty} and no `actor.id`.\n */\nexport type RecordingActor = {\n type?: string;\n id?: string;\n email?: string;\n};\n\n/**\n * A party (calling or called) involved in the recorded call. `actor.id` is the resolvable person\n * UUID when the party is a Webex user; `number`/`name` are the dialable number and display name.\n */\nexport type RecordingParty = {\n actor?: RecordingActor;\n number?: string;\n name?: string;\n};\n\n/**\n * Service-specific data attached to a converged recording. For calling recordings this carries the\n * `locationId` and the `callSessionId` shared with the originating call session.\n *\n * The party details (`personality`, `callingParty`, `calledParty`) identify who the call was with\n * and are returned by the metadata endpoint (`GET /convergedRecordings/{recordingId}/metadata`);\n * the list endpoint only populates `locationId`/`callSessionId`. Resolve the remote participant's\n * person UUID (for avatar/presence) via `getRemoteParty(serviceData)?.actor?.id`.\n */\nexport type RecordingServiceData = {\n callRecordingId?: string;\n locationId?: string;\n callSessionId?: string;\n personality?: RecordingPersonality;\n callingParty?: RecordingParty;\n calledParty?: RecordingParty;\n [key: string]: unknown;\n};\n\n/**\n * Temporary, direct download links for a recording's media, returned by\n * `GET /convergedRecordings/{recordingId}`. Only available for authorized users / Compliance\n * Officers and absent when downloading is prevented.\n */\nexport type TemporaryDirectDownloadLinks = {\n audioDownloadLink?: string;\n transcriptDownloadLink?: string;\n expiration?: string;\n};\n\n/**\n * A converged recording as returned by `GET /convergedRecordings` (list `items[]`) and\n * `GET /convergedRecordings/{recordingId}`.\n *\n * Field mapping note (matches the public Webex Converged Recordings API):\n * - `id` is the recording id used by {@link ICallRecording.getRecording}.\n * - `serviceData.callSessionId` is the call session id used by\n * {@link ICallRecording.getRecordingsByCallSessionId}.\n */\nexport type Recording = {\n id: string;\n topic?: string;\n createTime?: string;\n timeRecorded?: string;\n format?: string;\n serviceType?: string;\n durationSeconds?: number;\n sizeBytes?: number;\n status?: RecordingStatus;\n ownerId?: string;\n ownerEmail?: string;\n ownerType?: string;\n storageRegion?: string;\n serviceData?: RecordingServiceData;\n temporaryDirectDownloadLinks?: TemporaryDirectDownloadLinks;\n};\n\n/**\n * Raw list response body returned by `GET /convergedRecordings`.\n */\nexport type RecordingListBody = {\n items?: Recording[];\n};\n\n/**\n * Metadata returned by `GET /convergedRecordings/{recordingUUID}/metadata`.\n * The structure is preserved as returned by the backend; optional typed fields are provided\n * for the well-known properties.\n */\nexport type RecordingMetadataOwner = {\n ownerID?: string;\n ownerEmail?: string;\n ownerName?: string;\n orgID?: string;\n};\n\nexport type RecordingMetadataParticipant = {\n id?: string;\n name?: string;\n email?: string;\n phoneNumber?: string;\n joinTime?: string;\n leaveTime?: string;\n};\n\nexport type RecordingMediaStream = {\n streamId?: string;\n type?: string;\n codec?: string;\n durationMS?: number;\n};\n\nexport type RecordingExtensionData = {\n callData?: Record<string, unknown>;\n acd?: Record<string, unknown>;\n redirectInfo?: Record<string, unknown>;\n};\n\nexport type RecordingMetadata = {\n id?: string;\n callSessionId?: string;\n owner?: RecordingMetadataOwner;\n session?: Record<string, unknown>;\n participants?: RecordingMetadataParticipant[];\n mediaStreams?: RecordingMediaStream[];\n extensionData?: RecordingExtensionData;\n /**\n * Service-specific data, including the call party details (`personality`, `callingParty`,\n * `calledParty`) used to resolve the remote participant for avatar/presence. See\n * {@link getRemoteParty}.\n */\n serviceData?: RecordingServiceData;\n [key: string]: unknown;\n};\n\n/**\n * Options for {@link ICallRecording.getRecordings}. All fields are optional and are passed through\n * to the recording API as query parameters where supported. `webexUserRequest` toggles the\n * `WebexUserRequest` header (ad-hoc rate-limit bypass), defaulting to `false`.\n */\nexport type GetRecordingsOptions = {\n /**\n * ISO-8601 start of the time window (inclusive). When omitted, it is derived from `days`\n * (`now - days`), mirroring CallHistory's mandatory `from` date.\n */\n from?: string;\n /**\n * ISO-8601 end of the time window (inclusive). When omitted, it defaults to the current time\n * (`now`). The API requires both `from` and `to` to return results.\n */\n to?: string;\n /**\n * Lookback window in days used to derive `from` when `from` is not provided. Defaults to `30`.\n * The list API only accepts a `from`/`to` interval of at most 30 days; larger windows are\n * rejected, so callers must keep custom values within that limit.\n * Ignored when an explicit `from` is supplied.\n */\n days?: number;\n /** Filter by recording status. Defaults to `available`. */\n status?: RecordingStatus;\n /** Maximum number of records to return per page. Defaults to `30`. */\n max?: number;\n /**\n * Filter by the service that produced the recording (e.g. `'calling'`). Sent only when provided;\n * when omitted the API applies its own default.\n */\n serviceType?: string;\n /** Filter by recording media format (e.g. `'MP3'`, `'MP4'`). Sent only when provided. */\n format?: string;\n /** Filter by recording owner type (e.g. `'user'`). Sent only when provided. */\n ownerType?: string;\n /** Filter by storage region (e.g. `'US'`). Sent only when provided. */\n storageRegion?: string;\n /** Filter by the location id the recording belongs to. Sent only when provided. */\n locationId?: string;\n /** Filter by recording topic. Sent only when provided. */\n topic?: string;\n /** When true, sends the `WebexUserRequest: true` header. Defaults to false. */\n webexUserRequest?: boolean;\n};\n\nexport type RecordingListResponse = {\n statusCode: number;\n data: {\n recordings?: Recording[];\n error?: string;\n };\n message: string | null;\n};\n\nexport type RecordingResponse = {\n statusCode: number;\n data: {\n recording?: Recording;\n error?: string;\n };\n message: string | null;\n};\n\nexport type RecordingMetadataResponse = {\n statusCode: number;\n data: {\n metadata?: RecordingMetadata;\n error?: string;\n };\n message: string | null;\n};\n\nexport type RecordingDeleteResponse = {\n statusCode: number;\n data: {\n error?: string;\n };\n message: string | null;\n};\n\n/**\n * @deprecated Ignored by {@link ICallRecording.deleteRecording}. Retained for backward-compatible\n * signatures only. Compliance permanent delete is not exposed on the CallRecording client.\n */\nexport type DeleteRecordingOptions = {\n /** Reason for deleting the recording (e.g. `audit`). */\n reason?: string;\n /** Compliance Officer's explanation for the deletion. Max 255 characters. */\n comment?: string;\n};\n\n/**\n * Discriminator for {@link GetCallRecordingRequest}. Selects which read operation\n * {@link ICallRecording.getCallRecording} performs based on the request body.\n *\n * - `LIST`: list the current user's recordings.\n * - `DETAIL`: fetch a single recording (with download/playback links).\n * - `METADATA`: fetch a single recording's metadata document.\n * - `BY_CALL_SESSION`: list recordings tied to a call session id (client-side filter).\n */\nexport enum RecordingRequestType {\n LIST = 'list',\n DETAIL = 'detail',\n METADATA = 'metadata',\n BY_CALL_SESSION = 'byCallSession',\n}\n\n/**\n * Lists the current user's converged recordings.\n * Maps to `GET /convergedRecordings` with the query params from {@link GetRecordingsOptions}.\n */\nexport type ListRecordingsRequest = {\n type: RecordingRequestType.LIST;\n options?: GetRecordingsOptions;\n};\n\n/**\n * Fetches a single converged recording by id.\n * Maps to `GET /convergedRecordings/{recordingId}`.\n */\nexport type DetailRecordingRequest = {\n type: RecordingRequestType.DETAIL;\n recordingId: string;\n};\n\n/**\n * Fetches the metadata document for a single recording.\n * Maps to `GET /convergedRecordings/{recordingId}/metadata`.\n */\nexport type MetadataRecordingRequest = {\n type: RecordingRequestType.METADATA;\n recordingId: string;\n};\n\n/**\n * Returns the recordings tied to a call session id (`serviceData.callSessionId`).\n * Fetches a list and filters client-side; `options` widen the scanned set.\n */\nexport type CallSessionRecordingsRequest = {\n type: RecordingRequestType.BY_CALL_SESSION;\n callSessionId: string;\n options?: GetRecordingsOptions;\n};\n\n/**\n * Discriminated union of every read request accepted by {@link ICallRecording.getCallRecording}.\n * The `type` field selects the operation and constrains the rest of the body, while\n * {@link RecordingResponseFor} maps each member to its concrete response type so the caller keeps\n * full type inference from a single method.\n */\nexport type GetCallRecordingRequest =\n | ListRecordingsRequest\n | DetailRecordingRequest\n | MetadataRecordingRequest\n | CallSessionRecordingsRequest;\n\n/**\n * Maps a {@link GetCallRecordingRequest} member to the response type\n * {@link ICallRecording.getCallRecording} resolves with for that request, preserving per-request\n * return-type inference behind the single method.\n */\nexport type RecordingResponseFor<T extends GetCallRecordingRequest> =\n T extends DetailRecordingRequest\n ? RecordingResponse\n : T extends MetadataRecordingRequest\n ? RecordingMetadataResponse\n : RecordingListResponse;\n\n/**\n * Interface for the CallRecording client.\n *\n * Provides read access to Post Call Recordings through a single {@link getCallRecording} method\n * (listing, single fetch, lookup by call session, and metadata — selected by the request `type`),\n * moves a recording to the recycle bin (soft delete), and emits recording lifecycle events received\n * over Mercury.\n */\nexport interface ICallRecording extends Eventing<CallRecordingEventTypes> {\n /**\n * Reads Post Call Recordings. The {@link GetCallRecordingRequest} `type` selects the operation\n * and constrains the rest of the request body; the resolved response type is inferred per\n * request via {@link RecordingResponseFor}:\n *\n * - `LIST` (`GET /convergedRecordings`) -> {@link RecordingListResponse}. The query params come\n * from {@link GetRecordingsOptions}; both a `from` lower bound (derived from `days` when not\n * provided) and a `to` upper bound (defaults to `now`) are always sent, because the API only\n * returns results when the time window is bounded on both ends.\n * - `DETAIL` (`GET /convergedRecordings/{recordingId}`) -> {@link RecordingResponse}.\n * - `METADATA` (`GET /convergedRecordings/{recordingId}/metadata`) ->\n * {@link RecordingMetadataResponse}.\n * - `BY_CALL_SESSION` -> {@link RecordingListResponse}. The recording API has no confirmed\n * server-side filter for call session id, so this fetches a list and filters client-side on\n * `serviceData.callSessionId`. The scan is bounded by the list query, so pass `options` to\n * widen the time window/status/page when the target session may fall outside the defaults.\n *\n * @param request - The discriminated read request.\n *\n * @example\n * ```javascript\n * const list = await callRecording.getCallRecording({type: RecordingRequestType.LIST, options: {max: 30}});\n * const one = await callRecording.getCallRecording({type: RecordingRequestType.DETAIL, recordingId});\n * const meta = await callRecording.getCallRecording({type: RecordingRequestType.METADATA, recordingId});\n * const bySession = await callRecording.getCallRecording({\n * type: RecordingRequestType.BY_CALL_SESSION,\n * callSessionId,\n * options: {days: 30, max: 100},\n * });\n * ```\n */\n getCallRecording<T extends GetCallRecordingRequest>(request: T): Promise<RecordingResponseFor<T>>;\n\n /**\n * Moves a recording to the recycle bin (soft delete).\n *\n * Calls `POST /convergedRecordings/softDelete` with `{ recordingIds: [recordingId] }`.\n * The recording can be restored from the recycle bin via the platform restore API. Requires\n * `spark:recordings_write` on the access token (recording owner). Control Hub\n * \"Delete recordings and transcripts\" enables this for the user; it does **not** grant\n * compliance-officer permanent delete.\n *\n * Mercury emits `convergedRecordings.updated` + `TRASH`, surfaced as `callRecording:deleted`.\n *\n * @param recordingId - The recording id (`id`) to move to the recycle bin.\n * @param _options - Deprecated. Ignored.\n *\n * @example\n * ```javascript\n * await callRecording.deleteRecording(recordingId);\n * ```\n */\n deleteRecording(\n recordingId: string,\n _options?: DeleteRecordingOptions\n ): Promise<RecordingDeleteResponse>;\n}\n"],"mappings":";;;;;;;AAQA;AACA;AACA;AACA;AACA;AACA;AALA,IAMYA,eAAe,GAAAC,OAAA,CAAAD,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAK3B;AACA;AACA;AAFA,IAGYE,kBAAkB,GAAAD,OAAA,CAAAC,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AAO9B;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAmBA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AA+CA;AACA;AACA;AACA;AACA;AA6EA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA,IASYC,oBAAoB,GAAAF,OAAA,CAAAE,oBAAA,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAOhC;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
|
|
@@ -6,7 +6,7 @@ import { METHOD_START_MESSAGE, SUCCESS_MESSAGE, SUCCESS_STATUS_CODE } from '../c
|
|
|
6
6
|
import { COMMON_EVENT_KEYS, MOBIUS_EVENT_KEYS, RECORDING_EVENT_SUBTYPE, } from '../Events/types';
|
|
7
7
|
import { Eventing } from '../Events/impl';
|
|
8
8
|
import { RecordingRequestType, } from './types';
|
|
9
|
-
import { CALL_RECORDING_FILE, CONVERGED_RECORDINGS, DEFAULT_MAX, DEFAULT_NUMBER_OF_DAYS, DEFAULT_STATUS, FORMAT, FROM, LOCATION_ID, MAX, METADATA, METHODS, OWNER_TYPE, RECORDING_NOT_FOUND_MESSAGE, SERVICE_TYPE, STATUS, STORAGE_REGION, TO, TOPIC, WEBEX_USER_REQUEST_HEADER, } from './constants';
|
|
9
|
+
import { CALL_RECORDING_FILE, CONVERGED_RECORDINGS, DEFAULT_MAX, DEFAULT_NUMBER_OF_DAYS, DEFAULT_STATUS, FORMAT, FROM, LOCATION_ID, MAX, METADATA, METHODS, OWNER_TYPE, RECORDING_NOT_FOUND_MESSAGE, SERVICE_TYPE, SOFT_DELETE, STATUS, STORAGE_REGION, TO, TOPIC, WEBEX_USER_REQUEST_HEADER, } from './constants';
|
|
10
10
|
export class WxcCallRecordingConnector extends Eventing {
|
|
11
11
|
sdkConnector;
|
|
12
12
|
webex;
|
|
@@ -191,26 +191,19 @@ export class WxcCallRecordingConnector extends Eventing {
|
|
|
191
191
|
return serviceErrorCodeHandler(errorInfo, loggerContext);
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
|
-
async deleteRecording(recordingId,
|
|
194
|
+
async deleteRecording(recordingId, _options) {
|
|
195
195
|
const loggerContext = {
|
|
196
196
|
file: CALL_RECORDING_FILE,
|
|
197
197
|
method: METHODS.DELETE_RECORDING,
|
|
198
198
|
};
|
|
199
199
|
log.info(`${METHOD_START_MESSAGE} with recordingId=${recordingId}`, loggerContext);
|
|
200
200
|
try {
|
|
201
|
-
const url = `${this.recordingServiceUrl}/${CONVERGED_RECORDINGS}/${
|
|
202
|
-
const body = {};
|
|
203
|
-
if (options?.reason) {
|
|
204
|
-
body.reason = options.reason;
|
|
205
|
-
}
|
|
206
|
-
if (options?.comment) {
|
|
207
|
-
body.comment = options.comment;
|
|
208
|
-
}
|
|
201
|
+
const url = `${this.recordingServiceUrl}/${CONVERGED_RECORDINGS}/${SOFT_DELETE}`;
|
|
209
202
|
const response = await this.webex.request({
|
|
210
203
|
uri: url,
|
|
211
|
-
method: HTTP_METHODS.
|
|
204
|
+
method: HTTP_METHODS.POST,
|
|
212
205
|
service: ALLOWED_SERVICES.HYDRA_DEVELOPER_API,
|
|
213
|
-
|
|
206
|
+
body: { recordingIds: [recordingId] },
|
|
214
207
|
});
|
|
215
208
|
log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);
|
|
216
209
|
const responseDetails = {
|
|
@@ -218,7 +211,7 @@ export class WxcCallRecordingConnector extends Eventing {
|
|
|
218
211
|
data: {},
|
|
219
212
|
message: SUCCESS_MESSAGE,
|
|
220
213
|
};
|
|
221
|
-
log.log(`Successfully
|
|
214
|
+
log.log(`Successfully moved recording ${recordingId} to recycle bin`, loggerContext);
|
|
222
215
|
return responseDetails;
|
|
223
216
|
}
|
|
224
217
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallRecording.d.ts","sourceRoot":"","sources":["../../../src/CallRecording/CallRecording.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAK9D,OAAO,EAAC,uBAAuB,EAAoC,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAmBjB,qBAAa,aAAc,SAAQ,QAAQ,CAAC,uBAAuB,CAAE,YAAW,cAAc;IAYxD,MAAM,EAAE,eAAe;IAX3D,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,cAAc,CAAkB;IAExC,OAAO,CAAC,gBAAgB,CAAkB;gBAK9B,KAAK,EAAE,QAAQ,EAAS,MAAM,EAAE,eAAe;IAiB3D,OAAO,CAAC,0BAA0B;IAsBlC,OAAO,CAAC,sBAAsB;IAiBvB,gBAAgB,CAAC,CAAC,SAAS,uBAAuB,EACvD,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"CallRecording.d.ts","sourceRoot":"","sources":["../../../src/CallRecording/CallRecording.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAK9D,OAAO,EAAC,uBAAuB,EAAoC,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAmBjB,qBAAa,aAAc,SAAQ,QAAQ,CAAC,uBAAuB,CAAE,YAAW,cAAc;IAYxD,MAAM,EAAE,eAAe;IAX3D,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,cAAc,CAAkB;IAExC,OAAO,CAAC,gBAAgB,CAAkB;gBAK9B,KAAK,EAAE,QAAQ,EAAS,MAAM,EAAE,eAAe;IAiB3D,OAAO,CAAC,0BAA0B;IAsBlC,OAAO,CAAC,sBAAsB;IAiBvB,gBAAgB,CAAC,CAAC,SAAS,uBAAuB,EACvD,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAWtB,eAAe,CAC1B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,uBAAuB,CAAC;CAGpC;AAQD,eAAO,MAAM,yBAAyB,UAC7B,QAAQ,UACP,eAAe,KACtB,cAAkD,CAAC"}
|
|
@@ -14,7 +14,7 @@ export declare class WxcCallRecordingConnector extends Eventing<CallRecordingEve
|
|
|
14
14
|
private getRecording;
|
|
15
15
|
private getRecordingsByCallSessionId;
|
|
16
16
|
private getRecordingMetadata;
|
|
17
|
-
deleteRecording(recordingId: string,
|
|
17
|
+
deleteRecording(recordingId: string, _options?: DeleteRecordingOptions): Promise<RecordingDeleteResponse>;
|
|
18
18
|
handleRecordingCreatedEvent: (event?: RecordingEvent) => Promise<void>;
|
|
19
19
|
handleRecordingUpdatedEvent: (event?: RecordingEvent) => Promise<void>;
|
|
20
20
|
handleRecordingDeletedEvent: (event?: RecordingEvent) => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WxcCallRecordingConnector.d.ts","sourceRoot":"","sources":["../../../src/CallRecording/WxcCallRecordingConnector.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAK9D,OAAO,EACL,uBAAuB,EAIvB,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EAEvB,cAAc,EACd,eAAe,EAEf,uBAAuB,EAOvB,oBAAoB,EACrB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"WxcCallRecordingConnector.d.ts","sourceRoot":"","sources":["../../../src/CallRecording/WxcCallRecordingConnector.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAK9D,OAAO,EACL,uBAAuB,EAIvB,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EAEvB,cAAc,EACd,eAAe,EAEf,uBAAuB,EAOvB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAiCjB,qBAAa,yBACX,SAAQ,QAAQ,CAAC,uBAAuB,CACxC,YAAW,cAAc;IAEzB,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,mBAAmB,CAAS;gBAMxB,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe;IAmCpD,OAAO,CAAC,kBAAkB;IAyCnB,gBAAgB,CAAC,CAAC,SAAS,uBAAuB,EACvD,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAYnC,OAAO,CAAC,wBAAwB;YA4BlB,aAAa;YAqDb,YAAY;YAqDZ,4BAA4B;YA2C5B,oBAAoB;IAsDrB,eAAe,CAC1B,WAAW,EAAE,MAAM,EAEnB,QAAQ,CAAC,EAAE,sBAAsB,GAChC,OAAO,CAAC,uBAAuB,CAAC;IAyCnC,2BAA2B,WAAkB,cAAc,mBAMzD;IAaF,2BAA2B,WAAkB,cAAc,mBAkBzD;IAEF,2BAA2B,WAAkB,cAAc,mBAMzD;IAKF,OAAO,CAAC,0BAA0B;CAcnC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const CALL_RECORDING_FILE = "CallRecording";
|
|
2
2
|
export declare const CONVERGED_RECORDINGS = "convergedRecordings";
|
|
3
|
+
export declare const SOFT_DELETE = "softDelete";
|
|
3
4
|
export declare const METADATA = "metadata";
|
|
4
5
|
export declare const FROM = "from";
|
|
5
6
|
export declare const TO = "to";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/CallRecording/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAGnD,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAC1D,eAAO,MAAM,QAAQ,aAAa,CAAC;AAGnC,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,EAAE,OAAO,CAAC;AACvB,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,GAAG,QAAQ,CAAC;AACzB,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAC1C,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,UAAU,cAAc,CAAC;AACtC,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAC9C,eAAO,MAAM,WAAW,eAAe,CAAC;AACxC,eAAO,MAAM,KAAK,UAAU,CAAC;AAG7B,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,WAAW,KAAK,CAAC;AAK9B,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAGzC,eAAO,MAAM,yBAAyB,qBAAqB,CAAC;AAE5D,eAAO,MAAM,2BAA2B,uDAAuD,CAAC;AAGhG,eAAO,MAAM,OAAO;;;;;;;;CAQnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/CallRecording/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAGnD,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAC1D,eAAO,MAAM,WAAW,eAAe,CAAC;AACxC,eAAO,MAAM,QAAQ,aAAa,CAAC;AAGnC,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,EAAE,OAAO,CAAC;AACvB,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,GAAG,QAAQ,CAAC;AACzB,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAC1C,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,UAAU,cAAc,CAAC;AACtC,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAC9C,eAAO,MAAM,WAAW,eAAe,CAAC;AACxC,eAAO,MAAM,KAAK,UAAU,CAAC;AAG7B,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,WAAW,KAAK,CAAC;AAK9B,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAGzC,eAAO,MAAM,yBAAyB,qBAAqB,CAAC;AAE5D,eAAO,MAAM,2BAA2B,uDAAuD,CAAC;AAGhG,eAAO,MAAM,OAAO;;;;;;;;CAQnB,CAAC"}
|
|
@@ -171,6 +171,6 @@ export type GetCallRecordingRequest = ListRecordingsRequest | DetailRecordingReq
|
|
|
171
171
|
export type RecordingResponseFor<T extends GetCallRecordingRequest> = T extends DetailRecordingRequest ? RecordingResponse : T extends MetadataRecordingRequest ? RecordingMetadataResponse : RecordingListResponse;
|
|
172
172
|
export interface ICallRecording extends Eventing<CallRecordingEventTypes> {
|
|
173
173
|
getCallRecording<T extends GetCallRecordingRequest>(request: T): Promise<RecordingResponseFor<T>>;
|
|
174
|
-
deleteRecording(recordingId: string,
|
|
174
|
+
deleteRecording(recordingId: string, _options?: DeleteRecordingOptions): Promise<RecordingDeleteResponse>;
|
|
175
175
|
}
|
|
176
176
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/CallRecording/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/CallRecording/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -45,9 +45,9 @@
|
|
|
45
45
|
"@webex/common": "3.12.0-next.5",
|
|
46
46
|
"@webex/common-timers": "3.12.0-next.5",
|
|
47
47
|
"@webex/internal-media-core": "2.26.2",
|
|
48
|
-
"@webex/internal-plugin-device": "3.12.0-next.
|
|
49
|
-
"@webex/internal-plugin-feature": "3.12.0-next.
|
|
50
|
-
"@webex/internal-plugin-metrics": "3.12.0-next.
|
|
48
|
+
"@webex/internal-plugin-device": "3.12.0-next.30",
|
|
49
|
+
"@webex/internal-plugin-feature": "3.12.0-next.30",
|
|
50
|
+
"@webex/internal-plugin-metrics": "3.12.0-next.30",
|
|
51
51
|
"@webex/media-helpers": "3.12.0-next.10",
|
|
52
52
|
"async-mutex": "0.4.0",
|
|
53
53
|
"backoff": "2.5.0",
|
|
@@ -147,5 +147,5 @@
|
|
|
147
147
|
"staticpath": "docs",
|
|
148
148
|
"noprompt": true
|
|
149
149
|
},
|
|
150
|
-
"version": "3.12.0-next.
|
|
150
|
+
"version": "3.12.0-next.72"
|
|
151
151
|
}
|