@webex/calling 3.12.0-next.38 → 3.12.0-next.39
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/CallingClient/line/index.js +4 -1
- package/dist/CallingClient/line/index.js.map +1 -1
- package/dist/CallingClient/registration/register.js +21 -3
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/CallingClient/utils/request.js +7 -2
- package/dist/CallingClient/utils/request.js.map +1 -1
- package/dist/mobius-socket/config.js +1 -1
- package/dist/mobius-socket/config.js.map +1 -1
- package/dist/mobius-socket/mobius-socket-events.test.js +10 -3
- package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -1
- package/dist/mobius-socket/mobius-socket.js +123 -82
- package/dist/mobius-socket/mobius-socket.js.map +1 -1
- package/dist/mobius-socket/mobius-socket.test.js +7 -0
- package/dist/mobius-socket/mobius-socket.test.js.map +1 -1
- package/dist/module/CallingClient/line/index.js +2 -2
- package/dist/module/CallingClient/registration/register.js +10 -2
- package/dist/module/CallingClient/utils/request.js +3 -0
- package/dist/module/mobius-socket/config.js +1 -1
- package/dist/module/mobius-socket/mobius-socket.js +39 -18
- package/dist/types/CallingClient/line/index.d.ts +1 -1
- package/dist/types/CallingClient/line/index.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +1 -1
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +1 -1
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/CallingClient/utils/request.d.ts +1 -0
- package/dist/types/CallingClient/utils/request.d.ts.map +1 -1
- package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_uuid","require","_mobiusSocket","_Logger","_interopRequireDefault","_mobiusSocketMapper","_constants","_wsFeatureFlag","_constants2","_Metrics","_types","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","normalizeWsResponse","wsResponse","_ref","_ref2","statusCode","body","data","undefined","headers","trackingid","trackingId","metadata","normalizeWsError","err","_ref3","_wsErr$response","_ref4","_wsErr$trackingId","_wsErr$response2","_ref5","_wsErr$response3","wsErr","response","APIRequest","exports","config","_classCallCheck2","logContext","file","REQUEST_FILE","method","METHODS","CONSTRUCTOR","webex","log","error","Error","isMobiusSocketEnabled","isMobiusWssEnabled","mobiusSocket","getMobiusSocketInstance","metricManager","getMetricManager","info","concat","_createClass2","key","value","isSocketEnabled","_connectToMobiusSocket","_asyncToGenerator2","_regenerator","mark","_callee","wssUrl","_this$metricManager","_this$metricManager2","_t","wrap","_context","prev","next","CONNECT_TO_MOBIUS_SOCKET","isConnected","abrupt","getConnectedWebSocketUrl","connect","submitMobiusSocketMetric","METRIC_EVENT","MOBIUS_SOCKET","MOBIUS_SOCKET_ACTION","CONNECT","METRIC_TYPE","BEHAVIORAL","warn","String","MOBIUS_SOCKET_ERROR","stop","connectToMobiusSocket","_x","_disconnectFromMobiusSocket","_callee2","options","_this$metricManager3","_this$metricManager4","_t2","_context2","DISCONNECT_FROM_MOBIUS_SOCKET","disconnect","DISCONNECT","disconnectFromMobiusSocket","_x2","_makeRequest","_callee3","request","socketType","isSupplementaryService","_t3","_t4","_t5","_t6","_t7","_t8","_t9","_t0","_t1","_t10","_t11","_t12","_t13","_t14","_context3","MAKE_REQUEST","uuid","deriveMobiusSocketMessageType","uri","MOBIUS_SOCKET_MESSAGE_TYPE","UNKNOWN","isSupplementaryServiceMessageType","CALLING_USER_AGENT","credentials","getUserToken","sent","call","userAgent","authorization","sendWssRequest","type","makeRequest","_x3","registerMobiusSocketListener","cb","_this$metricManager5","REGISTER_MOBIUS_SOCKET_LISTENER","on","_data$data$eventType","_data$data","trace","eventType","LISTENER_REGISTERED","unregisterMobiusSocketListener","_this$metricManager6","UNREGISTER_MOBIUS_SOCKET_LISTENER","off","LISTENER_UNREGISTERED","getInstance","instance","resetInstance","createAPIRequest"],"sources":["request.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\nimport {getMobiusSocketInstance} from '../../mobius-socket';\nimport {WebexRequestPayload} from '../../common/types';\nimport {WebexSDK} from '../../SDKConnector/types';\nimport log from '../../Logger';\nimport {APIRequestConfig, APIRequestOptions, MobiusAsyncEvent, MobiusSocketResponse} from './types';\nimport {\n deriveMobiusSocketMessageType,\n isSupplementaryServiceMessageType,\n} from './mobiusSocketMapper';\nimport {MOBIUS_SOCKET_MESSAGE_TYPE} from './constants';\nimport {isMobiusWssEnabled} from './wsFeatureFlag';\nimport {CALLING_USER_AGENT, METHODS, REQUEST_FILE} from '../constants';\nimport {getMetricManager} from '../../Metrics';\nimport {IMetricManager, METRIC_EVENT, METRIC_TYPE, MOBIUS_SOCKET_ACTION} from '../../Metrics/types';\n\n/**\n * Converts a MobiusSocketResponse into the WebexRequestPayload shape that\n * all callers (registration, call, keepalive error-handlers) expect.\n */\nfunction normalizeWsResponse(wsResponse: MobiusSocketResponse): WebexRequestPayload {\n return {\n statusCode: wsResponse.statusCode,\n body: (wsResponse.data as object) ?? undefined,\n headers: {\n trackingid: wsResponse.trackingId,\n ...((wsResponse.metadata as Record<string, string>) ?? {}),\n },\n };\n}\n\n/**\n * Converts a MobiusSocketResponseError rejection into a WebexRequestPayload-shaped\n * error so handleRegistrationErrors / handleCallErrors can process it identically.\n */\nfunction normalizeWsError(err: unknown): WebexRequestPayload {\n const wsErr = err as {\n statusCode?: number;\n statusMessage?: string;\n response?: MobiusSocketResponse;\n trackingId?: string;\n };\n\n return {\n statusCode: wsErr.statusCode,\n body: (wsErr.response?.data as object) ?? undefined,\n headers: {\n trackingid: wsErr.trackingId ?? wsErr.response?.trackingId ?? '',\n ...((wsErr.response?.metadata as Record<string, string>) ?? {}),\n },\n };\n}\n\n/**\n * APIRequest routes Mobius traffic over HTTP (`webex.request`) or the Mobius WebSocket path\n * (`mobiusSocketRequest`). `isMobiusSocketEnabled` is set in the constructor from WDM\n * `webrtc-calling-over-ws` and/or SDK config (interim until WDM is fully in prod).\n */\nexport class APIRequest {\n // eslint-disable-next-line no-use-before-define\n private static instance: APIRequest | undefined;\n private isMobiusSocketEnabled: boolean;\n private webex: WebexSDK;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private mobiusSocket: any;\n private metricManager: IMetricManager;\n\n static getInstance(config: APIRequestConfig): APIRequest {\n if (!APIRequest.instance) {\n APIRequest.instance = new APIRequest(config);\n }\n\n return APIRequest.instance;\n }\n\n static resetInstance(): void {\n APIRequest.instance = undefined;\n }\n\n /**\n * @param config - Webex instance plus optional SDK Mobius-socket override\n */\n constructor(config: APIRequestConfig) {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.CONSTRUCTOR,\n };\n\n if (!config.webex) {\n log.error('APIRequest instantiation failed: WebexSDK instance is required', logContext);\n throw new Error('WebexSDK instance is required');\n }\n\n this.webex = config.webex;\n this.isMobiusSocketEnabled = isMobiusWssEnabled(config.webex) || false;\n this.mobiusSocket = getMobiusSocketInstance(this.webex);\n this.metricManager = getMetricManager(this.webex);\n\n log.info(\n `APIRequest initialized with transport: ${this.isMobiusSocketEnabled ? 'WSS' : 'HTTP'}`,\n logContext\n );\n }\n\n /**\n * Whether the Mobius WebSocket transport is active for this instance.\n */\n public isSocketEnabled(): boolean {\n return this.isMobiusSocketEnabled;\n }\n\n /**\n * Ensures the Mobius WebSocket is connected before sending API requests.\n * If the socket is already connected, resolves immediately. Otherwise,\n * initiates a new connection to the provided WebSocket URL.\n * On failure, throws a normalized WebexRequestPayload-shaped error.\n *\n * @param wssUrl - The Mobius WebSocket URL to connect to.\n */\n public async connectToMobiusSocket(wssUrl: string): Promise<string | undefined> {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.CONNECT_TO_MOBIUS_SOCKET,\n };\n\n if (this.mobiusSocket.isConnected()) {\n log.info('Mobius WebSocket already connected', logContext);\n\n return this.mobiusSocket.getConnectedWebSocketUrl();\n }\n\n log.info('Mobius WebSocket not connected, initiating connection', logContext);\n\n try {\n await this.mobiusSocket.connect(wssUrl);\n log.log('Mobius WebSocket connected successfully', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.CONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl\n );\n\n return wssUrl;\n } catch (err) {\n log.warn(`Mobius WebSocket connection failed: ${String(err)}`, logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET_ERROR,\n MOBIUS_SOCKET_ACTION.CONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl,\n undefined,\n String(err)\n );\n\n throw normalizeWsError(err);\n }\n }\n\n /**\n * Disconnects the default session from the Mobius WebSocket.\n */\n public async disconnectFromMobiusSocket(options?: {code: number; reason: string}): Promise<void> {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.DISCONNECT_FROM_MOBIUS_SOCKET,\n };\n\n log.info('Disconnecting from Mobius WebSocket', logContext);\n\n const wssUrl = this.mobiusSocket.getConnectedWebSocketUrl();\n\n try {\n await this.mobiusSocket.disconnect(options);\n log.log('Mobius WebSocket disconnected successfully', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.DISCONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl\n );\n } catch (err) {\n // silent error - no need to throw an error\n log.warn(`Mobius WebSocket disconnection failed: ${String(err)}`, logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET_ERROR,\n MOBIUS_SOCKET_ACTION.DISCONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl,\n undefined, // add trackingId\n String(err)\n );\n }\n }\n\n /**\n * Makes a request using HTTP or WebSocket transport per the flag set in the constructor.\n * When using WebSocket, the response is normalized to the WebexRequestPayload shape\n * so callers do not need to know which transport was used.\n * @param request - Request options (uri, method, body, headers, service)\n * @returns Promise resolving to WebexRequestPayload\n */\n public async makeRequest(request: APIRequestOptions): Promise<WebexRequestPayload> {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.MAKE_REQUEST,\n };\n log.info(`Dispatching request via ${this.isMobiusSocketEnabled ? 'WSS' : 'HTTP'} `, logContext);\n\n if (this.isMobiusSocketEnabled) {\n const trackingId = `webex-js-sdk_${uuid()}`;\n const socketType = deriveMobiusSocketMessageType(request.uri, request.method);\n\n if (socketType === MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN) {\n log.error(\n `Unknown Mobius Socket message type for uri: ${request.uri}, httpMethod: ${request.method}`,\n logContext\n );\n throw new Error(`Unknown Mobius Socket message type: ${socketType}`);\n }\n\n const isSupplementaryService = isSupplementaryServiceMessageType(socketType);\n\n try {\n const wsResponse: MobiusSocketResponse = await this.mobiusSocket.sendWssRequest({\n type: socketType,\n trackingId,\n metadata: {\n ...request.headers,\n userAgent: CALLING_USER_AGENT,\n authorization: `${\n (isSupplementaryService && (await this.webex.credentials.getUserToken())) || ''\n }`,\n },\n data: request.body,\n });\n\n log.log(\n `WSS request succeeded - socketType: ${socketType}, trackingId: ${trackingId}, statusCode: ${wsResponse.statusCode}`,\n logContext\n );\n\n return normalizeWsResponse(wsResponse);\n } catch (err) {\n log.error(\n `WSS request failed - socketType: ${socketType}, trackingId: ${trackingId}, error: ${String(\n err\n )}`,\n logContext\n );\n throw normalizeWsError(err);\n }\n }\n\n return this.webex.request(request) as Promise<WebexRequestPayload>;\n }\n\n public registerMobiusSocketListener(cb: (data?: MobiusAsyncEvent) => void): void {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.REGISTER_MOBIUS_SOCKET_LISTENER,\n };\n\n log.info('Attaching Mobius async event listener', logContext);\n\n this.mobiusSocket.on('event:async_event', (data: MobiusAsyncEvent) => {\n log.trace(\n `Mobius async event received - eventType: ${data?.data?.eventType ?? 'unknown'}`,\n logContext\n );\n cb(data);\n });\n\n log.log('Mobius async event listener attached', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.LISTENER_REGISTERED,\n METRIC_TYPE.BEHAVIORAL\n );\n }\n\n public unregisterMobiusSocketListener(): void {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.UNREGISTER_MOBIUS_SOCKET_LISTENER,\n };\n\n log.info('Detaching Mobius async event listener', logContext);\n this.mobiusSocket.off('event:async_event');\n log.log('Mobius async event listener detached', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.LISTENER_UNREGISTERED,\n METRIC_TYPE.BEHAVIORAL\n );\n }\n}\n\n/**\n * Factory function to create a singleton APIRequest instance\n * @param config - Configuration object for APIRequest\n * @returns APIRequest instance\n */\nexport const createAPIRequest = (config: APIRequestConfig): APIRequest =>\n APIRequest.getInstance(config);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_uuid","require","_mobiusSocket","_Logger","_interopRequireDefault","_mobiusSocketMapper","_constants","_wsFeatureFlag","_constants2","_Metrics","_types","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","normalizeWsResponse","wsResponse","_ref","_ref2","statusCode","body","data","undefined","headers","trackingid","trackingId","metadata","normalizeWsError","err","_ref3","_wsErr$response","_ref4","_wsErr$trackingId","_wsErr$response2","_ref5","_wsErr$response3","wsErr","response","APIRequest","exports","config","_classCallCheck2","logContext","file","REQUEST_FILE","method","METHODS","CONSTRUCTOR","webex","log","error","Error","isMobiusSocketEnabled","isMobiusWssEnabled","mobiusSocket","getMobiusSocketInstance","metricManager","getMetricManager","info","concat","_createClass2","key","value","isSocketEnabled","_connectToMobiusSocket","_asyncToGenerator2","_regenerator","mark","_callee","wssUrl","_this$metricManager","_this$metricManager2","_t","wrap","_context","prev","next","CONNECT_TO_MOBIUS_SOCKET","isConnected","abrupt","getConnectedWebSocketUrl","connect","submitMobiusSocketMetric","METRIC_EVENT","MOBIUS_SOCKET","MOBIUS_SOCKET_ACTION","CONNECT","METRIC_TYPE","BEHAVIORAL","warn","String","MOBIUS_SOCKET_ERROR","stop","connectToMobiusSocket","_x","_disconnectFromMobiusSocket","_callee2","options","_this$metricManager3","_this$metricManager4","_t2","_context2","DISCONNECT_FROM_MOBIUS_SOCKET","disconnect","DISCONNECT","disconnectFromMobiusSocket","_x2","_makeRequest","_callee3","request","socketType","isSupplementaryService","_t3","_t4","_t5","_t6","_t7","_t8","_t9","_t0","_t1","_t10","_t11","_t12","_t13","_t14","_context3","MAKE_REQUEST","uuid","deriveMobiusSocketMessageType","uri","MOBIUS_SOCKET_MESSAGE_TYPE","UNKNOWN","isSupplementaryServiceMessageType","CALLING_USER_AGENT","credentials","getUserToken","sent","call","userAgent","authorization","sendWssRequest","type","makeRequest","_x3","registerMobiusSocketListener","cb","_this$metricManager5","REGISTER_MOBIUS_SOCKET_LISTENER","on","_data$data$eventType","_data$data","trace","eventType","LISTENER_REGISTERED","unregisterMobiusSocketListener","_this$metricManager6","UNREGISTER_MOBIUS_SOCKET_LISTENER","off","LISTENER_UNREGISTERED","getInstance","instance","resetInstance","createAPIRequest"],"sources":["request.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\nimport {getMobiusSocketInstance} from '../../mobius-socket';\nimport {WebexRequestPayload} from '../../common/types';\nimport {WebexSDK} from '../../SDKConnector/types';\nimport log from '../../Logger';\nimport {APIRequestConfig, APIRequestOptions, MobiusAsyncEvent, MobiusSocketResponse} from './types';\nimport {\n deriveMobiusSocketMessageType,\n isSupplementaryServiceMessageType,\n} from './mobiusSocketMapper';\nimport {MOBIUS_SOCKET_MESSAGE_TYPE} from './constants';\nimport {isMobiusWssEnabled} from './wsFeatureFlag';\nimport {CALLING_USER_AGENT, METHODS, REQUEST_FILE} from '../constants';\nimport {getMetricManager} from '../../Metrics';\nimport {IMetricManager, METRIC_EVENT, METRIC_TYPE, MOBIUS_SOCKET_ACTION} from '../../Metrics/types';\n\n/**\n * Converts a MobiusSocketResponse into the WebexRequestPayload shape that\n * all callers (registration, call, keepalive error-handlers) expect.\n */\nfunction normalizeWsResponse(wsResponse: MobiusSocketResponse): WebexRequestPayload {\n return {\n statusCode: wsResponse.statusCode,\n body: (wsResponse.data as object) ?? undefined,\n headers: {\n trackingid: wsResponse.trackingId,\n ...((wsResponse.metadata as Record<string, string>) ?? {}),\n },\n };\n}\n\n/**\n * Converts a MobiusSocketResponseError rejection into a WebexRequestPayload-shaped\n * error so handleRegistrationErrors / handleCallErrors can process it identically.\n */\nfunction normalizeWsError(err: unknown): WebexRequestPayload {\n const wsErr = err as {\n statusCode?: number;\n statusMessage?: string;\n response?: MobiusSocketResponse;\n trackingId?: string;\n };\n\n return {\n statusCode: wsErr.statusCode,\n body: (wsErr.response?.data as object) ?? undefined,\n headers: {\n trackingid: wsErr.trackingId ?? wsErr.response?.trackingId ?? '',\n ...((wsErr.response?.metadata as Record<string, string>) ?? {}),\n },\n };\n}\n\n/**\n * APIRequest routes Mobius traffic over HTTP (`webex.request`) or the Mobius WebSocket path\n * (`mobiusSocketRequest`). `isMobiusSocketEnabled` is set in the constructor from WDM\n * `webrtc-calling-over-ws` and/or SDK config (interim until WDM is fully in prod).\n */\nexport class APIRequest {\n // eslint-disable-next-line no-use-before-define\n private static instance: APIRequest | undefined;\n private isMobiusSocketEnabled: boolean;\n private webex: WebexSDK;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private mobiusSocket: any;\n private metricManager: IMetricManager;\n\n static getInstance(config: APIRequestConfig): APIRequest {\n if (!APIRequest.instance) {\n APIRequest.instance = new APIRequest(config);\n }\n\n return APIRequest.instance;\n }\n\n static resetInstance(): void {\n APIRequest.instance = undefined;\n }\n\n /**\n * @param config - Webex instance plus optional SDK Mobius-socket override\n */\n constructor(config: APIRequestConfig) {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.CONSTRUCTOR,\n };\n\n if (!config.webex) {\n log.error('APIRequest instantiation failed: WebexSDK instance is required', logContext);\n throw new Error('WebexSDK instance is required');\n }\n\n this.webex = config.webex;\n this.isMobiusSocketEnabled = isMobiusWssEnabled(config.webex) || false;\n this.mobiusSocket = getMobiusSocketInstance(this.webex);\n this.metricManager = getMetricManager(this.webex);\n\n log.info(\n `APIRequest initialized with transport: ${this.isMobiusSocketEnabled ? 'WSS' : 'HTTP'}`,\n logContext\n );\n }\n\n /**\n * Whether the Mobius WebSocket transport is active for this instance.\n */\n public isSocketEnabled(): boolean {\n return this.isMobiusSocketEnabled;\n }\n\n /**\n * Ensures the Mobius WebSocket is connected before sending API requests.\n * If the socket is already connected, resolves immediately. Otherwise,\n * initiates a new connection to the provided WebSocket URL.\n * On failure, throws a normalized WebexRequestPayload-shaped error.\n *\n * @param wssUrl - The Mobius WebSocket URL to connect to.\n */\n public async connectToMobiusSocket(wssUrl: string): Promise<string | undefined> {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.CONNECT_TO_MOBIUS_SOCKET,\n };\n\n if (this.mobiusSocket.isConnected()) {\n log.info('Mobius WebSocket already connected', logContext);\n\n return this.mobiusSocket.getConnectedWebSocketUrl();\n }\n\n log.info('Mobius WebSocket not connected, initiating connection', logContext);\n\n try {\n await this.mobiusSocket.connect(wssUrl);\n log.log('Mobius WebSocket connected successfully', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.CONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl\n );\n\n return wssUrl;\n } catch (err) {\n log.warn(`Mobius WebSocket connection failed: ${String(err)}`, logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET_ERROR,\n MOBIUS_SOCKET_ACTION.CONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl,\n undefined,\n String(err)\n );\n\n throw normalizeWsError(err);\n }\n }\n\n public getConnectedWebSocketUrl() {\n return this.mobiusSocket.getConnectedWebSocketUrl();\n }\n\n /**\n * Disconnects the default session from the Mobius WebSocket.\n */\n public async disconnectFromMobiusSocket(options?: {code: number; reason: string}): Promise<void> {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.DISCONNECT_FROM_MOBIUS_SOCKET,\n };\n\n log.info('Disconnecting from Mobius WebSocket', logContext);\n\n const wssUrl = this.mobiusSocket.getConnectedWebSocketUrl();\n\n try {\n await this.mobiusSocket.disconnect(options);\n log.log('Mobius WebSocket disconnected successfully', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.DISCONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl\n );\n } catch (err) {\n // silent error - no need to throw an error\n log.warn(`Mobius WebSocket disconnection failed: ${String(err)}`, logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET_ERROR,\n MOBIUS_SOCKET_ACTION.DISCONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl,\n undefined, // add trackingId\n String(err)\n );\n }\n }\n\n /**\n * Makes a request using HTTP or WebSocket transport per the flag set in the constructor.\n * When using WebSocket, the response is normalized to the WebexRequestPayload shape\n * so callers do not need to know which transport was used.\n * @param request - Request options (uri, method, body, headers, service)\n * @returns Promise resolving to WebexRequestPayload\n */\n public async makeRequest(request: APIRequestOptions): Promise<WebexRequestPayload> {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.MAKE_REQUEST,\n };\n log.info(`Dispatching request via ${this.isMobiusSocketEnabled ? 'WSS' : 'HTTP'} `, logContext);\n\n if (this.isMobiusSocketEnabled) {\n const trackingId = `webex-js-sdk_${uuid()}`;\n const socketType = deriveMobiusSocketMessageType(request.uri, request.method);\n\n if (socketType === MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN) {\n log.error(\n `Unknown Mobius Socket message type for uri: ${request.uri}, httpMethod: ${request.method}`,\n logContext\n );\n throw new Error(`Unknown Mobius Socket message type: ${socketType}`);\n }\n\n const isSupplementaryService = isSupplementaryServiceMessageType(socketType);\n\n try {\n const wsResponse: MobiusSocketResponse = await this.mobiusSocket.sendWssRequest({\n type: socketType,\n trackingId,\n metadata: {\n ...request.headers,\n userAgent: CALLING_USER_AGENT,\n authorization: `${\n (isSupplementaryService && (await this.webex.credentials.getUserToken())) || ''\n }`,\n },\n data: request.body,\n });\n\n log.log(\n `WSS request succeeded - socketType: ${socketType}, trackingId: ${trackingId}, statusCode: ${wsResponse.statusCode}`,\n logContext\n );\n\n return normalizeWsResponse(wsResponse);\n } catch (err) {\n log.error(\n `WSS request failed - socketType: ${socketType}, trackingId: ${trackingId}, error: ${String(\n err\n )}`,\n logContext\n );\n throw normalizeWsError(err);\n }\n }\n\n return this.webex.request(request) as Promise<WebexRequestPayload>;\n }\n\n public registerMobiusSocketListener(cb: (data?: MobiusAsyncEvent) => void): void {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.REGISTER_MOBIUS_SOCKET_LISTENER,\n };\n\n log.info('Attaching Mobius async event listener', logContext);\n\n this.mobiusSocket.on('event:async_event', (data: MobiusAsyncEvent) => {\n log.trace(\n `Mobius async event received - eventType: ${data?.data?.eventType ?? 'unknown'}`,\n logContext\n );\n cb(data);\n });\n\n log.log('Mobius async event listener attached', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.LISTENER_REGISTERED,\n METRIC_TYPE.BEHAVIORAL\n );\n }\n\n public unregisterMobiusSocketListener(): void {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.UNREGISTER_MOBIUS_SOCKET_LISTENER,\n };\n\n log.info('Detaching Mobius async event listener', logContext);\n this.mobiusSocket.off('event:async_event');\n log.log('Mobius async event listener detached', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.LISTENER_UNREGISTERED,\n METRIC_TYPE.BEHAVIORAL\n );\n }\n}\n\n/**\n * Factory function to create a singleton APIRequest instance\n * @param config - Configuration object for APIRequest\n * @returns APIRequest instance\n */\nexport const createAPIRequest = (config: APIRequestConfig): APIRequest =>\n APIRequest.getInstance(config);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["mobiusSocketConfig","wssResponseTimeout","backoffTimeMax","backoffTimeReset","initialConnectionMaxRetries","maxRetries","forceCloseDelay","dedupCacheMaxSize","_default","exports","default","mobiusSocket"],"sources":["config.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport interface MobiusSocketConfig {\n /** Milliseconds to wait for websocket request/response messages, including auth. */\n wssResponseTimeout: number;\n /** Maximum milliseconds between connection attempts. */\n backoffTimeMax: number;\n /** Initial milliseconds between connection attempts. */\n backoffTimeReset: number;\n /** Maximum number of retries for the initial connect() flow before rejecting. */\n initialConnectionMaxRetries: number;\n /** Maximum number of retries for reconnect attempts. 0 means unlimited. */\n maxRetries: number;\n /** Milliseconds to wait for a close frame before forcing closure. */\n forceCloseDelay: number;\n /** Maximum eventIds retained in the dedup cache to suppress duplicate async_event messages. */\n dedupCacheMaxSize: number;\n}\n\nconst mobiusSocketConfig: MobiusSocketConfig = {\n wssResponseTimeout: 10000,\n backoffTimeMax: 32000,\n backoffTimeReset: 1000,\n initialConnectionMaxRetries: 0,\n maxRetries:
|
|
1
|
+
{"version":3,"names":["mobiusSocketConfig","wssResponseTimeout","backoffTimeMax","backoffTimeReset","initialConnectionMaxRetries","maxRetries","forceCloseDelay","dedupCacheMaxSize","_default","exports","default","mobiusSocket"],"sources":["config.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport interface MobiusSocketConfig {\n /** Milliseconds to wait for websocket request/response messages, including auth. */\n wssResponseTimeout: number;\n /** Maximum milliseconds between connection attempts. */\n backoffTimeMax: number;\n /** Initial milliseconds between connection attempts. */\n backoffTimeReset: number;\n /** Maximum number of retries for the initial connect() flow before rejecting. */\n initialConnectionMaxRetries: number;\n /** Maximum number of retries for reconnect attempts. 0 means unlimited. */\n maxRetries: number;\n /** Milliseconds to wait for a close frame before forcing closure. */\n forceCloseDelay: number;\n /** Maximum eventIds retained in the dedup cache to suppress duplicate async_event messages. */\n dedupCacheMaxSize: number;\n}\n\nconst mobiusSocketConfig: MobiusSocketConfig = {\n wssResponseTimeout: 10000,\n backoffTimeMax: 32000,\n backoffTimeReset: 1000,\n initialConnectionMaxRetries: 0,\n maxRetries: 3,\n forceCloseDelay: 2000,\n dedupCacheMaxSize: 1000,\n};\n\nexport default {\n mobiusSocket: mobiusSocketConfig,\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;;AAmBA,IAAMA,kBAAsC,GAAG;EAC7CC,kBAAkB,EAAE,KAAK;EACzBC,cAAc,EAAE,KAAK;EACrBC,gBAAgB,EAAE,IAAI;EACtBC,2BAA2B,EAAE,CAAC;EAC9BC,UAAU,EAAE,CAAC;EACbC,eAAe,EAAE,IAAI;EACrBC,iBAAiB,EAAE;AACrB,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa;EACbC,YAAY,EAAEX;AAChB,CAAC","ignoreList":[]}
|
|
@@ -168,6 +168,13 @@ describe('plugin-mobiusSocket', function () {
|
|
|
168
168
|
return promise;
|
|
169
169
|
});
|
|
170
170
|
mobiusSocket = new _index.default(webex, _objectSpread({}, _config.default.mobiusSocket));
|
|
171
|
+
mobiusSocket.logger = {
|
|
172
|
+
debug: jest.fn(),
|
|
173
|
+
error: jest.fn(),
|
|
174
|
+
info: jest.fn(),
|
|
175
|
+
log: jest.fn(),
|
|
176
|
+
warn: jest.fn()
|
|
177
|
+
};
|
|
171
178
|
});
|
|
172
179
|
it('removes all listeners for an event when off() is called without a listener', function () {
|
|
173
180
|
var firstListener = _sinon.default.stub();
|
|
@@ -300,11 +307,11 @@ describe('plugin-mobiusSocket', function () {
|
|
|
300
307
|
var events = [{
|
|
301
308
|
code: 1000,
|
|
302
309
|
reason: 'idle',
|
|
303
|
-
action: '
|
|
310
|
+
action: 'close'
|
|
304
311
|
}, {
|
|
305
312
|
code: 1000,
|
|
306
313
|
reason: 'done (forced)',
|
|
307
|
-
action: '
|
|
314
|
+
action: 'close'
|
|
308
315
|
}, {
|
|
309
316
|
code: 1000,
|
|
310
317
|
reason: 'pong not received',
|
|
@@ -321,7 +328,7 @@ describe('plugin-mobiusSocket', function () {
|
|
|
321
328
|
action: 'close'
|
|
322
329
|
}, {
|
|
323
330
|
code: 1001,
|
|
324
|
-
action: '
|
|
331
|
+
action: 'close'
|
|
325
332
|
}, {
|
|
326
333
|
code: 1005,
|
|
327
334
|
action: 'reconnect'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_crypto","require","_sinon","_interopRequireDefault","_testHelperChai","_testHelperMockWebex","_testHelperMockWebSocket","_index","_config","_socket","_constants","_promiseTick","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty3","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty2","crypto","randomUUID","_defineProperty2","value","configurable","describe","createUuid","mobiusSocket","mockWebSocket","originalSendSpy","socketOpenStub","usingFakeTimers","webex","fakeTestMessage","id","data","eventType","timestamp","_now","trackingId","concat","statusStartTypingMessage","actor","conversationId","emitAuthResponse","_ref","undefined","_ref$statusCode","statusCode","_ref$statusMessage","statusMessage","sendSpy","send","lastCall","authRequest","JSON","parse","args","emit","_stringify","type","subtype","MESSAGE_TYPES","AUTH","beforeEach","jest","useFakeTimers","doNotFake","afterEach","_asyncToGenerator2","_regenerator","mark","_callee","_t","wrap","_context","prev","next","useRealTimers","disconnect","close","Socket","getWebSocketConstructor","restore","stop","MockWebex","internal","device","registered","metrics","submitClientMetrics","sinon","stub","logger","console","callsFake","_len","Array","_key","_construct2","MockWebSocket","origOpen","prototype","open","_len2","_key2","promise","_apply","process","nextTick","MobiusSocket","mobiusConfig","it","firstListener","secondListener","on","off","assert","notCalled","spy","connect","then","called","disconnectPromise","code","reason","calledOnce","calledTwice","resolveTest","rejectTest","bufferStateSpy","onlineSpy","_len3","_key3","_wrap2","fn","_this","_len4","sendArgs","_key4","isTrue","connecting","isFalse","connected","lengthOf","readyState","promiseTick","catch","_promise","resolve","reject","events","action","def","description","reconnect","offlineSpy","permanentSpy","transientSpy","replacedSpy","resetHistory","calledWith","url","startSpy","stopSpy"],"sources":["mobius-socket-events.test.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {randomUUID} from 'crypto';\nimport sinon from 'sinon';\nimport {assert} from '@webex/test-helper-chai';\nimport MockWebex from '@webex/test-helper-mock-webex';\nimport MockWebSocket from '@webex/test-helper-mock-web-socket';\nimport {wrap} from 'lodash';\nimport MobiusSocket from './index';\nimport mobiusConfig from './config';\nimport Socket from './socket';\nimport {MESSAGE_TYPES} from './socket/constants';\n\nimport promiseTick from './test/promise-tick';\n\nif (!crypto.randomUUID) {\n Object.defineProperty(crypto, 'randomUUID', {\n value: randomUUID,\n configurable: true,\n });\n}\n\ndescribe('plugin-mobiusSocket', () => {\n const createUuid = () => crypto.randomUUID();\n\n describe('MobiusSocket', () => {\n describe('Events', () => {\n let mobiusSocket;\n let mockWebSocket;\n let originalSendSpy;\n let socketOpenStub;\n let usingFakeTimers;\n let webex;\n\n const fakeTestMessage = {\n id: createUuid(),\n data: {\n eventType: 'fake.test',\n },\n timestamp: Date.now(),\n trackingId: `suffix_${createUuid()}_${Date.now()}`,\n };\n\n const statusStartTypingMessage = {\n id: createUuid(),\n data: {\n eventType: 'status.start_typing',\n actor: {\n id: 'actorId',\n },\n conversationId: createUuid(),\n },\n timestamp: Date.now(),\n trackingId: `suffix_${createUuid()}_${Date.now()}`,\n };\n\n const emitAuthResponse = ({statusCode = 200, statusMessage = 'OK'} = {}) => {\n const sendSpy = mockWebSocket.send.lastCall ? mockWebSocket.send : originalSendSpy;\n const authRequest = JSON.parse(sendSpy.lastCall.args[0]);\n\n mockWebSocket.emit('message', {\n data: JSON.stringify({\n type: 'response_event',\n subtype: MESSAGE_TYPES.AUTH,\n trackingId: authRequest.trackingId,\n statusCode,\n statusMessage,\n }),\n });\n };\n\n beforeEach(() => {\n jest.useFakeTimers({doNotFake: ['nextTick']});\n usingFakeTimers = true;\n });\n\n afterEach(async () => {\n if (usingFakeTimers) {\n jest.useRealTimers();\n usingFakeTimers = false;\n }\n if (mobiusSocket) {\n try {\n await mobiusSocket.disconnect();\n } catch (e) {\n // Ignore cleanup errors in tests.\n }\n }\n if (mockWebSocket && typeof mockWebSocket.close === 'function') {\n try {\n mockWebSocket.close();\n } catch (e) {\n // Ignore cleanup errors in tests.\n }\n }\n // Restore stubs\n if (Socket.getWebSocketConstructor.restore) {\n Socket.getWebSocketConstructor.restore();\n }\n if (socketOpenStub && socketOpenStub.restore) {\n socketOpenStub.restore();\n }\n });\n\n beforeEach(() => {\n webex = new MockWebex();\n\n webex.internal.device.registered = true;\n webex.internal.metrics.submitClientMetrics = sinon.stub();\n webex.trackingId = 'fakeTrackingId';\n\n webex.logger = console;\n\n sinon.stub(Socket, 'getWebSocketConstructor').callsFake(\n () =>\n function (...args) {\n mockWebSocket = new MockWebSocket(...args);\n originalSendSpy = mockWebSocket.send;\n\n return mockWebSocket;\n }\n );\n\n const origOpen = Socket.prototype.open;\n\n socketOpenStub = sinon.stub(Socket.prototype, 'open').callsFake(function (...args) {\n const promise = Reflect.apply(origOpen, this, args);\n\n process.nextTick(() => {\n mockWebSocket.open();\n // Simulate Mobius auth response after socket open\n process.nextTick(() => {\n emitAuthResponse();\n });\n });\n\n return promise;\n });\n\n mobiusSocket = new MobiusSocket(webex, {...mobiusConfig.mobiusSocket});\n });\n\n it('removes all listeners for an event when off() is called without a listener', () => {\n const firstListener = sinon.stub();\n const secondListener = sinon.stub();\n\n mobiusSocket.on('event:fake.test', firstListener);\n mobiusSocket.on('event:fake.test', secondListener);\n\n mobiusSocket.off('event:fake.test');\n mobiusSocket.emit('event:fake.test', fakeTestMessage);\n\n assert.notCalled(firstListener);\n assert.notCalled(secondListener);\n });\n\n afterEach(() => {\n if (socketOpenStub) {\n socketOpenStub.restore();\n }\n\n if (Socket.getWebSocketConstructor.restore) {\n Socket.getWebSocketConstructor.restore();\n }\n });\n\n describe('when connected', () => {\n it('emits the `online` event', () => {\n const spy = sinon.spy();\n\n mobiusSocket.on('online', spy);\n const promise = mobiusSocket.connect();\n\n return promise.then(() => assert.called(spy));\n });\n });\n\n describe('when disconnected', () => {\n it('emits the `offline` event', () => {\n const spy = sinon.spy();\n\n mobiusSocket.on('offline', spy);\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => {\n const disconnectPromise = mobiusSocket.disconnect();\n\n mockWebSocket.emit('close', {\n code: 1000,\n reason: 'Done',\n });\n\n return disconnectPromise;\n })\n .then(() => assert.calledOnce(spy));\n });\n\n describe('when reconnected', () => {\n it('emits the `online` event', () => {\n const spy = sinon.spy();\n\n mobiusSocket.on('online', spy);\n\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => assert.calledOnce(spy))\n .then(() => mockWebSocket.emit('close', {code: 1000, reason: 'Idle'}))\n .then(() => mobiusSocket.connect())\n .then(() => assert.calledTwice(spy));\n });\n });\n });\n\n describe('when `mercury.buffer_state` is received', () => {\n // This test is here because the buffer states message may arrive before\n // the mobiusSocket Promise resolves.\n it('gets emitted', () => {\n let sendSpy;\n let resolveTest;\n let rejectTest;\n const bufferStateSpy = sinon.spy();\n const onlineSpy = sinon.spy();\n\n mobiusSocket.on('event:mercury.buffer_state', bufferStateSpy);\n mobiusSocket.on('online', onlineSpy);\n\n Socket.getWebSocketConstructor.callsFake(\n () =>\n function (...args) {\n mockWebSocket = new MockWebSocket(...args);\n sendSpy = mockWebSocket.send;\n mockWebSocket.send = wrap(mockWebSocket.send, function (fn, ...sendArgs) {\n process.nextTick(() => {\n Reflect.apply(fn, this, sendArgs);\n });\n });\n\n process.nextTick(() => {\n assert.isTrue(mobiusSocket.connecting, 'MobiusSocket is still connecting');\n assert.isFalse(mobiusSocket.connected, 'MobiusSocket has not yet connected');\n assert.notCalled(onlineSpy);\n assert.lengthOf(sendSpy.args, 0, 'The client has not yet sent the auth message');\n // set websocket readystate to 1 to allow a successful send message\n mockWebSocket.readyState = 1;\n mockWebSocket.emit('open');\n mockWebSocket.emit('message', {\n data: JSON.stringify({\n id: createUuid(),\n data: {\n eventType: 'mercury.buffer_state',\n },\n }),\n });\n // using lengthOf because notCalled doesn't allow the helpful\n // string assertion\n assert.lengthOf(\n sendSpy.args,\n 0,\n 'The client has not acked the buffer_state message'\n );\n\n promiseTick(1)\n .then(() => {\n assert.called(bufferStateSpy);\n resolveTest();\n })\n .catch(rejectTest);\n });\n\n return mockWebSocket;\n }\n );\n\n return new Promise((resolve, reject) => {\n resolveTest = resolve;\n rejectTest = reject;\n mobiusSocket.connect().catch(() => {});\n });\n });\n });\n\n describe('when a CloseEvent is received', () => {\n const events = [\n {\n code: 1000,\n reason: 'idle',\n action: 'reconnect',\n },\n {\n code: 1000,\n reason: 'done (forced)',\n action: 'reconnect',\n },\n {\n code: 1000,\n reason: 'pong not received',\n action: 'close',\n },\n {\n code: 1000,\n reason: 'pong mismatch',\n action: 'close',\n },\n {\n code: 1000,\n action: 'close',\n },\n {\n code: 1003,\n action: 'close',\n },\n {\n code: 1001,\n action: 'reconnect',\n },\n {\n code: 1005,\n action: 'reconnect',\n },\n {\n code: 1006,\n action: 'reconnect',\n },\n {\n code: 1011,\n action: 'reconnect',\n },\n {\n code: 4000,\n action: 'replace',\n },\n {\n action: 'close',\n },\n ];\n\n events.forEach((def) => {\n const {action, reason, code} = def;\n let description;\n\n if (code && reason) {\n description = `with code \\`${code}\\` and reason \\`${reason}\\``;\n } else if (code) {\n description = `with code \\`${code}\\``;\n } else if (reason) {\n description = `with reason \\`${reason}\\``;\n }\n\n describe(`when an event ${description} is received`, () => {\n it(`takes the ${action} action`, () => {\n if (mobiusSocket.reconnect.restore) {\n mobiusSocket.reconnect.restore();\n }\n\n sinon.spy(mobiusSocket, 'connect');\n\n const offlineSpy = sinon.spy();\n const permanentSpy = sinon.spy();\n const transientSpy = sinon.spy();\n const replacedSpy = sinon.spy();\n\n mobiusSocket.on('offline', offlineSpy);\n mobiusSocket.on('offline.permanent', permanentSpy);\n mobiusSocket.on('offline.transient', transientSpy);\n mobiusSocket.on('offline.replaced', replacedSpy);\n\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => {\n // Make sure mobiusSocket.connect has a call count of zero\n mobiusSocket.connect.resetHistory();\n\n mockWebSocket.emit('close', {code, reason});\n\n return promiseTick(1);\n })\n .then(() => {\n assert.called(offlineSpy);\n assert.calledWith(offlineSpy, {\n code,\n reason,\n });\n switch (action) {\n case 'close':\n assert.called(permanentSpy);\n assert.notCalled(transientSpy);\n assert.notCalled(replacedSpy);\n break;\n case 'reconnect':\n assert.notCalled(permanentSpy);\n assert.called(transientSpy);\n assert.notCalled(replacedSpy);\n break;\n case 'replace':\n assert.notCalled(permanentSpy);\n assert.notCalled(transientSpy);\n assert.called(replacedSpy);\n break;\n default:\n assert(false, 'unreachable code reached');\n }\n assert.isFalse(mobiusSocket.connected, 'MobiusSocket is not connected');\n if (action === 'reconnect') {\n assert.called(mobiusSocket.connect);\n assert.calledWith(mobiusSocket.connect, mockWebSocket.url);\n assert.isTrue(mobiusSocket.connecting, 'MobiusSocket is connecting');\n\n // Block until reconnect completes so logs don't overlap\n return mobiusSocket.connect();\n }\n\n assert.notCalled(mobiusSocket.connect);\n assert.isFalse(mobiusSocket.connecting, 'MobiusSocket is not connecting');\n\n return Promise.resolve();\n });\n });\n });\n });\n });\n\n describe('when a MessageEvent is received', () => {\n it('emits the MobiusSocket envelope', () => {\n const startSpy = sinon.spy();\n const stopSpy = sinon.spy();\n\n mobiusSocket.on('event:status.start_typing', startSpy);\n mobiusSocket.on('event:status.stop_typing', stopSpy);\n\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => {\n mockWebSocket.emit('message', {data: JSON.stringify(statusStartTypingMessage)});\n\n return promiseTick(1);\n })\n .then(() => {\n assert.calledOnce(startSpy);\n assert.notCalled(stopSpy);\n assert.calledWith(startSpy, statusStartTypingMessage);\n });\n });\n\n it(\"emits the MobiusSocket envelope named by the MobiusSocket event's eventType\", () => {\n const startSpy = sinon.spy();\n const stopSpy = sinon.spy();\n\n mobiusSocket.on('event:status.start_typing', startSpy);\n mobiusSocket.on('event:status.stop_typing', stopSpy);\n\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => {\n mockWebSocket.emit('message', {data: JSON.stringify(statusStartTypingMessage)});\n\n return promiseTick(1);\n })\n .then(() => {\n assert.calledOnce(startSpy);\n assert.notCalled(stopSpy);\n assert.calledWith(startSpy, statusStartTypingMessage);\n });\n });\n });\n\n // Mobius does not use sequence numbers, so sequence-mismatch tests are not applicable\n });\n });\n\n /*\n // On mobiusSocket:\n online\n offline\n offline.transient\n offline.permanent\n offline.replaced\n event\n event:locus.participant_joined\n mockWebSocket.connection-failed\n mockWebSocket.sequence-mismatch\n\n // On webex:\n mobiusSocket.online\n mobiusSocket.offline\n mobiusSocket.offline.transient\n mobiusSocket.offline.permanent\n mobiusSocket.offline.replaced\n mobiusSocket.event\n mobiusSocket.event:locus.participant_joined\n mobiusSocket.mockWebSocket.connection-failed\n mobiusSocket.mockWebSocket.sequence-mismatch\n\n // TODO go through all it(`emits...`) and make sure corresponding tests are here\n */\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_crypto","require","_sinon","_interopRequireDefault","_testHelperChai","_testHelperMockWebex","_testHelperMockWebSocket","_index","_config","_socket","_constants","_promiseTick","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty3","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty2","crypto","randomUUID","_defineProperty2","value","configurable","describe","createUuid","mobiusSocket","mockWebSocket","originalSendSpy","socketOpenStub","usingFakeTimers","webex","fakeTestMessage","id","data","eventType","timestamp","_now","trackingId","concat","statusStartTypingMessage","actor","conversationId","emitAuthResponse","_ref","undefined","_ref$statusCode","statusCode","_ref$statusMessage","statusMessage","sendSpy","send","lastCall","authRequest","JSON","parse","args","emit","_stringify","type","subtype","MESSAGE_TYPES","AUTH","beforeEach","jest","useFakeTimers","doNotFake","afterEach","_asyncToGenerator2","_regenerator","mark","_callee","_t","wrap","_context","prev","next","useRealTimers","disconnect","close","Socket","getWebSocketConstructor","restore","stop","MockWebex","internal","device","registered","metrics","submitClientMetrics","sinon","stub","logger","console","callsFake","_len","Array","_key","_construct2","MockWebSocket","origOpen","prototype","open","_len2","_key2","promise","_apply","process","nextTick","MobiusSocket","mobiusConfig","debug","fn","error","info","log","warn","it","firstListener","secondListener","on","off","assert","notCalled","spy","connect","then","called","disconnectPromise","code","reason","calledOnce","calledTwice","resolveTest","rejectTest","bufferStateSpy","onlineSpy","_len3","_key3","_wrap2","_this","_len4","sendArgs","_key4","isTrue","connecting","isFalse","connected","lengthOf","readyState","promiseTick","catch","_promise","resolve","reject","events","action","def","description","reconnect","offlineSpy","permanentSpy","transientSpy","replacedSpy","resetHistory","calledWith","url","startSpy","stopSpy"],"sources":["mobius-socket-events.test.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {randomUUID} from 'crypto';\nimport sinon from 'sinon';\nimport {assert} from '@webex/test-helper-chai';\nimport MockWebex from '@webex/test-helper-mock-webex';\nimport MockWebSocket from '@webex/test-helper-mock-web-socket';\nimport {wrap} from 'lodash';\nimport MobiusSocket from './index';\nimport mobiusConfig from './config';\nimport Socket from './socket';\nimport {MESSAGE_TYPES} from './socket/constants';\n\nimport promiseTick from './test/promise-tick';\n\nif (!crypto.randomUUID) {\n Object.defineProperty(crypto, 'randomUUID', {\n value: randomUUID,\n configurable: true,\n });\n}\n\ndescribe('plugin-mobiusSocket', () => {\n const createUuid = () => crypto.randomUUID();\n\n describe('MobiusSocket', () => {\n describe('Events', () => {\n let mobiusSocket;\n let mockWebSocket;\n let originalSendSpy;\n let socketOpenStub;\n let usingFakeTimers;\n let webex;\n\n const fakeTestMessage = {\n id: createUuid(),\n data: {\n eventType: 'fake.test',\n },\n timestamp: Date.now(),\n trackingId: `suffix_${createUuid()}_${Date.now()}`,\n };\n\n const statusStartTypingMessage = {\n id: createUuid(),\n data: {\n eventType: 'status.start_typing',\n actor: {\n id: 'actorId',\n },\n conversationId: createUuid(),\n },\n timestamp: Date.now(),\n trackingId: `suffix_${createUuid()}_${Date.now()}`,\n };\n\n const emitAuthResponse = ({statusCode = 200, statusMessage = 'OK'} = {}) => {\n const sendSpy = mockWebSocket.send.lastCall ? mockWebSocket.send : originalSendSpy;\n const authRequest = JSON.parse(sendSpy.lastCall.args[0]);\n\n mockWebSocket.emit('message', {\n data: JSON.stringify({\n type: 'response_event',\n subtype: MESSAGE_TYPES.AUTH,\n trackingId: authRequest.trackingId,\n statusCode,\n statusMessage,\n }),\n });\n };\n\n beforeEach(() => {\n jest.useFakeTimers({doNotFake: ['nextTick']});\n usingFakeTimers = true;\n });\n\n afterEach(async () => {\n if (usingFakeTimers) {\n jest.useRealTimers();\n usingFakeTimers = false;\n }\n if (mobiusSocket) {\n try {\n await mobiusSocket.disconnect();\n } catch (e) {\n // Ignore cleanup errors in tests.\n }\n }\n if (mockWebSocket && typeof mockWebSocket.close === 'function') {\n try {\n mockWebSocket.close();\n } catch (e) {\n // Ignore cleanup errors in tests.\n }\n }\n // Restore stubs\n if (Socket.getWebSocketConstructor.restore) {\n Socket.getWebSocketConstructor.restore();\n }\n if (socketOpenStub && socketOpenStub.restore) {\n socketOpenStub.restore();\n }\n });\n\n beforeEach(() => {\n webex = new MockWebex();\n\n webex.internal.device.registered = true;\n webex.internal.metrics.submitClientMetrics = sinon.stub();\n webex.trackingId = 'fakeTrackingId';\n\n webex.logger = console;\n\n sinon.stub(Socket, 'getWebSocketConstructor').callsFake(\n () =>\n function (...args) {\n mockWebSocket = new MockWebSocket(...args);\n originalSendSpy = mockWebSocket.send;\n\n return mockWebSocket;\n }\n );\n\n const origOpen = Socket.prototype.open;\n\n socketOpenStub = sinon.stub(Socket.prototype, 'open').callsFake(function (...args) {\n const promise = Reflect.apply(origOpen, this, args);\n\n process.nextTick(() => {\n mockWebSocket.open();\n // Simulate Mobius auth response after socket open\n process.nextTick(() => {\n emitAuthResponse();\n });\n });\n\n return promise;\n });\n\n mobiusSocket = new MobiusSocket(webex, {...mobiusConfig.mobiusSocket});\n\n (mobiusSocket as any).logger = {\n debug: jest.fn(),\n error: jest.fn(),\n info: jest.fn(),\n log: jest.fn(),\n warn: jest.fn(),\n };\n });\n\n it('removes all listeners for an event when off() is called without a listener', () => {\n const firstListener = sinon.stub();\n const secondListener = sinon.stub();\n\n mobiusSocket.on('event:fake.test', firstListener);\n mobiusSocket.on('event:fake.test', secondListener);\n\n mobiusSocket.off('event:fake.test');\n mobiusSocket.emit('event:fake.test', fakeTestMessage);\n\n assert.notCalled(firstListener);\n assert.notCalled(secondListener);\n });\n\n afterEach(() => {\n if (socketOpenStub) {\n socketOpenStub.restore();\n }\n\n if (Socket.getWebSocketConstructor.restore) {\n Socket.getWebSocketConstructor.restore();\n }\n });\n\n describe('when connected', () => {\n it('emits the `online` event', () => {\n const spy = sinon.spy();\n\n mobiusSocket.on('online', spy);\n const promise = mobiusSocket.connect();\n\n return promise.then(() => assert.called(spy));\n });\n });\n\n describe('when disconnected', () => {\n it('emits the `offline` event', () => {\n const spy = sinon.spy();\n\n mobiusSocket.on('offline', spy);\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => {\n const disconnectPromise = mobiusSocket.disconnect();\n\n mockWebSocket.emit('close', {\n code: 1000,\n reason: 'Done',\n });\n\n return disconnectPromise;\n })\n .then(() => assert.calledOnce(spy));\n });\n\n describe('when reconnected', () => {\n it('emits the `online` event', () => {\n const spy = sinon.spy();\n\n mobiusSocket.on('online', spy);\n\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => assert.calledOnce(spy))\n .then(() => mockWebSocket.emit('close', {code: 1000, reason: 'Idle'}))\n .then(() => mobiusSocket.connect())\n .then(() => assert.calledTwice(spy));\n });\n });\n });\n\n describe('when `mercury.buffer_state` is received', () => {\n // This test is here because the buffer states message may arrive before\n // the mobiusSocket Promise resolves.\n it('gets emitted', () => {\n let sendSpy;\n let resolveTest;\n let rejectTest;\n const bufferStateSpy = sinon.spy();\n const onlineSpy = sinon.spy();\n\n mobiusSocket.on('event:mercury.buffer_state', bufferStateSpy);\n mobiusSocket.on('online', onlineSpy);\n\n Socket.getWebSocketConstructor.callsFake(\n () =>\n function (...args) {\n mockWebSocket = new MockWebSocket(...args);\n sendSpy = mockWebSocket.send;\n mockWebSocket.send = wrap(mockWebSocket.send, function (fn, ...sendArgs) {\n process.nextTick(() => {\n Reflect.apply(fn, this, sendArgs);\n });\n });\n\n process.nextTick(() => {\n assert.isTrue(mobiusSocket.connecting, 'MobiusSocket is still connecting');\n assert.isFalse(mobiusSocket.connected, 'MobiusSocket has not yet connected');\n assert.notCalled(onlineSpy);\n assert.lengthOf(sendSpy.args, 0, 'The client has not yet sent the auth message');\n // set websocket readystate to 1 to allow a successful send message\n mockWebSocket.readyState = 1;\n mockWebSocket.emit('open');\n mockWebSocket.emit('message', {\n data: JSON.stringify({\n id: createUuid(),\n data: {\n eventType: 'mercury.buffer_state',\n },\n }),\n });\n // using lengthOf because notCalled doesn't allow the helpful\n // string assertion\n assert.lengthOf(\n sendSpy.args,\n 0,\n 'The client has not acked the buffer_state message'\n );\n\n promiseTick(1)\n .then(() => {\n assert.called(bufferStateSpy);\n resolveTest();\n })\n .catch(rejectTest);\n });\n\n return mockWebSocket;\n }\n );\n\n return new Promise((resolve, reject) => {\n resolveTest = resolve;\n rejectTest = reject;\n mobiusSocket.connect().catch(() => {});\n });\n });\n });\n\n describe('when a CloseEvent is received', () => {\n const events = [\n {\n code: 1000,\n reason: 'idle',\n action: 'close',\n },\n {\n code: 1000,\n reason: 'done (forced)',\n action: 'close',\n },\n {\n code: 1000,\n reason: 'pong not received',\n action: 'close',\n },\n {\n code: 1000,\n reason: 'pong mismatch',\n action: 'close',\n },\n {\n code: 1000,\n action: 'close',\n },\n {\n code: 1003,\n action: 'close',\n },\n {\n code: 1001,\n action: 'close',\n },\n {\n code: 1005,\n action: 'reconnect',\n },\n {\n code: 1006,\n action: 'reconnect',\n },\n {\n code: 1011,\n action: 'reconnect',\n },\n {\n code: 4000,\n action: 'replace',\n },\n {\n action: 'close',\n },\n ];\n\n events.forEach((def) => {\n const {action, reason, code} = def;\n let description;\n\n if (code && reason) {\n description = `with code \\`${code}\\` and reason \\`${reason}\\``;\n } else if (code) {\n description = `with code \\`${code}\\``;\n } else if (reason) {\n description = `with reason \\`${reason}\\``;\n }\n\n describe(`when an event ${description} is received`, () => {\n it(`takes the ${action} action`, () => {\n if (mobiusSocket.reconnect.restore) {\n mobiusSocket.reconnect.restore();\n }\n\n sinon.spy(mobiusSocket, 'connect');\n\n const offlineSpy = sinon.spy();\n const permanentSpy = sinon.spy();\n const transientSpy = sinon.spy();\n const replacedSpy = sinon.spy();\n\n mobiusSocket.on('offline', offlineSpy);\n mobiusSocket.on('offline.permanent', permanentSpy);\n mobiusSocket.on('offline.transient', transientSpy);\n mobiusSocket.on('offline.replaced', replacedSpy);\n\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => {\n // Make sure mobiusSocket.connect has a call count of zero\n mobiusSocket.connect.resetHistory();\n\n mockWebSocket.emit('close', {code, reason});\n\n return promiseTick(1);\n })\n .then(() => {\n assert.called(offlineSpy);\n assert.calledWith(offlineSpy, {\n code,\n reason,\n });\n switch (action) {\n case 'close':\n assert.called(permanentSpy);\n assert.notCalled(transientSpy);\n assert.notCalled(replacedSpy);\n break;\n case 'reconnect':\n assert.notCalled(permanentSpy);\n assert.called(transientSpy);\n assert.notCalled(replacedSpy);\n break;\n case 'replace':\n assert.notCalled(permanentSpy);\n assert.notCalled(transientSpy);\n assert.called(replacedSpy);\n break;\n default:\n assert(false, 'unreachable code reached');\n }\n assert.isFalse(mobiusSocket.connected, 'MobiusSocket is not connected');\n if (action === 'reconnect') {\n assert.called(mobiusSocket.connect);\n assert.calledWith(mobiusSocket.connect, mockWebSocket.url);\n assert.isTrue(mobiusSocket.connecting, 'MobiusSocket is connecting');\n\n // Block until reconnect completes so logs don't overlap\n return mobiusSocket.connect();\n }\n\n assert.notCalled(mobiusSocket.connect);\n assert.isFalse(mobiusSocket.connecting, 'MobiusSocket is not connecting');\n\n return Promise.resolve();\n });\n });\n });\n });\n });\n\n describe('when a MessageEvent is received', () => {\n it('emits the MobiusSocket envelope', () => {\n const startSpy = sinon.spy();\n const stopSpy = sinon.spy();\n\n mobiusSocket.on('event:status.start_typing', startSpy);\n mobiusSocket.on('event:status.stop_typing', stopSpy);\n\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => {\n mockWebSocket.emit('message', {data: JSON.stringify(statusStartTypingMessage)});\n\n return promiseTick(1);\n })\n .then(() => {\n assert.calledOnce(startSpy);\n assert.notCalled(stopSpy);\n assert.calledWith(startSpy, statusStartTypingMessage);\n });\n });\n\n it(\"emits the MobiusSocket envelope named by the MobiusSocket event's eventType\", () => {\n const startSpy = sinon.spy();\n const stopSpy = sinon.spy();\n\n mobiusSocket.on('event:status.start_typing', startSpy);\n mobiusSocket.on('event:status.stop_typing', stopSpy);\n\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => {\n mockWebSocket.emit('message', {data: JSON.stringify(statusStartTypingMessage)});\n\n return promiseTick(1);\n })\n .then(() => {\n assert.calledOnce(startSpy);\n assert.notCalled(stopSpy);\n assert.calledWith(startSpy, statusStartTypingMessage);\n });\n });\n });\n\n // Mobius does not use sequence numbers, so sequence-mismatch tests are not applicable\n });\n });\n\n /*\n // On mobiusSocket:\n online\n offline\n offline.transient\n offline.permanent\n offline.replaced\n event\n event:locus.participant_joined\n mockWebSocket.connection-failed\n mockWebSocket.sequence-mismatch\n\n // On webex:\n mobiusSocket.online\n mobiusSocket.offline\n mobiusSocket.offline.transient\n mobiusSocket.offline.permanent\n mobiusSocket.offline.replaced\n mobiusSocket.event\n mobiusSocket.event:locus.participant_joined\n mobiusSocket.mockWebSocket.connection-failed\n mobiusSocket.mockWebSocket.sequence-mismatch\n\n // TODO go through all it(`emits...`) and make sure corresponding tests are here\n */\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,11 +12,13 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
12
12
|
value: true
|
|
13
13
|
});
|
|
14
14
|
exports.default = void 0;
|
|
15
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
15
16
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
|
|
16
17
|
var _isArray = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/is-array"));
|
|
17
18
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
18
19
|
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
19
20
|
var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
|
|
21
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
20
22
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
|
|
21
23
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof"));
|
|
22
24
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
@@ -660,100 +662,136 @@ var MobiusSocket = /*#__PURE__*/function (_EventEmitter) {
|
|
|
660
662
|
}
|
|
661
663
|
}, {
|
|
662
664
|
key: "onclose",
|
|
663
|
-
value: function
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
665
|
+
value: function () {
|
|
666
|
+
var _onclose = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(event, sourceSocket) {
|
|
667
|
+
var _this$socket4;
|
|
668
|
+
var loggerContext, reason, socketUrl, isActiveSocket, _t, _t2;
|
|
669
|
+
return _regenerator.default.wrap(function (_context) {
|
|
670
|
+
while (1) switch (_context.prev = _context.next) {
|
|
671
|
+
case 0:
|
|
672
|
+
loggerContext = {
|
|
673
|
+
file: 'mobius-socket.ts',
|
|
674
|
+
method: 'onclose'
|
|
675
|
+
};
|
|
676
|
+
_context.prev = 1;
|
|
677
|
+
reason = event.reason && event.reason.toLowerCase();
|
|
678
|
+
isActiveSocket = sourceSocket === this.socket;
|
|
679
|
+
if (sourceSocket) {
|
|
680
|
+
socketUrl = sourceSocket.url;
|
|
681
|
+
}
|
|
674
682
|
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
//
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
this.
|
|
723
|
-
}
|
|
724
|
-
break;
|
|
725
|
-
case 1000:
|
|
726
|
-
case 3050:
|
|
727
|
-
if (reason && normalReconnectReasons.includes(reason)) {
|
|
728
|
-
this.logger.info("".concat(MOBIUS_SOCKET_NAMESPACE, ": socket disconnected; reconnecting"));
|
|
683
|
+
// Only tear down state if the currently active socket closed
|
|
684
|
+
if (isActiveSocket) {
|
|
685
|
+
if (this.socket) {
|
|
686
|
+
this.socket.removeAllListeners();
|
|
687
|
+
this.socket = undefined;
|
|
688
|
+
this.emitEvent('offline', event);
|
|
689
|
+
}
|
|
690
|
+
this.connecting = false;
|
|
691
|
+
this.connected = false;
|
|
692
|
+
this.stopTokenRefreshTimer();
|
|
693
|
+
} else {
|
|
694
|
+
// Old socket closed; do not flip connection state
|
|
695
|
+
this.logger.info("[shutdown] non-active socket closed, code=".concat(event.code), loggerContext);
|
|
696
|
+
// Clean up listeners from old socket now that it's closed
|
|
697
|
+
if (sourceSocket) {
|
|
698
|
+
sourceSocket.removeAllListeners();
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
_t = event.code;
|
|
702
|
+
_context.next = _t === 1003 ? 2 : _t === 4000 ? 3 : _t === 4001 ? 4 : _t === 1000 ? 5 : _t === 1001 ? 5 : _t === 1005 ? 6 : _t === 1006 ? 6 : _t === 1011 ? 6 : _t === 1012 ? 6 : _t === 3050 ? 7 : _t === 4401 ? 8 : _t === 4403 ? 8 : _t === 4404 ? 8 : _t === 4429 ? 11 : 12;
|
|
703
|
+
break;
|
|
704
|
+
case 2:
|
|
705
|
+
this.logger.info("service rejected last message; will not reconnect: ".concat(event.reason), loggerContext);
|
|
706
|
+
if (isActiveSocket) this.emitEvent('offline.permanent', event);
|
|
707
|
+
return _context.abrupt("continue", 13);
|
|
708
|
+
case 3:
|
|
709
|
+
this.logger.info("socket replaced; will not reconnect", loggerContext);
|
|
710
|
+
if (isActiveSocket) this.emitEvent('offline.replaced', event);
|
|
711
|
+
return _context.abrupt("continue", 13);
|
|
712
|
+
case 4:
|
|
713
|
+
// replaced during shutdown
|
|
714
|
+
if (isActiveSocket) {
|
|
715
|
+
// Server closed active socket with 4001, meaning it expected this connection
|
|
716
|
+
// to be replaced, but the switchover in handleImminentShutdown failed.
|
|
717
|
+
this.logger.warn("active socket closed with 4001; shutdown switchover failed", loggerContext);
|
|
718
|
+
this.emitEvent('offline.permanent', event);
|
|
719
|
+
} else {
|
|
720
|
+
// Expected: old socket closed after successful switchover
|
|
721
|
+
this.logger.info("old socket closed with 4001 (replaced during shutdown); no reconnect needed", loggerContext);
|
|
722
|
+
this.emitEvent('offline.replaced', event);
|
|
723
|
+
}
|
|
724
|
+
return _context.abrupt("continue", 13);
|
|
725
|
+
case 5:
|
|
726
|
+
this.logger.info("socket disconnected; ".concat(event.reason), loggerContext);
|
|
727
|
+
if (isActiveSocket) this.emitEvent('offline.permanent', event);
|
|
728
|
+
return _context.abrupt("continue", 13);
|
|
729
|
+
case 6:
|
|
730
|
+
this.logger.info("socket disconnected; reconnecting", loggerContext);
|
|
729
731
|
if (isActiveSocket) {
|
|
730
732
|
this.emitEvent('offline.transient', event);
|
|
731
733
|
this.reconnect(socketUrl);
|
|
732
734
|
}
|
|
733
|
-
|
|
734
|
-
|
|
735
|
+
return _context.abrupt("continue", 13);
|
|
736
|
+
case 7:
|
|
737
|
+
if (reason && normalReconnectReasons.includes(reason)) {
|
|
738
|
+
this.logger.info("socket disconnected; reconnecting", loggerContext);
|
|
739
|
+
if (isActiveSocket) {
|
|
740
|
+
this.emitEvent('offline.transient', event);
|
|
741
|
+
this.reconnect(socketUrl);
|
|
742
|
+
}
|
|
743
|
+
} else {
|
|
744
|
+
this.logger.info("socket disconnected; will not reconnect: ".concat(event.reason), loggerContext);
|
|
745
|
+
if (isActiveSocket) this.emitEvent('offline.permanent', event);
|
|
746
|
+
}
|
|
747
|
+
return _context.abrupt("continue", 13);
|
|
748
|
+
case 8:
|
|
749
|
+
this.logger.error("onclose, statusCode=".concat(event.code), loggerContext);
|
|
750
|
+
_context.next = 9;
|
|
751
|
+
return this.refreshToken();
|
|
752
|
+
case 9:
|
|
753
|
+
_context.next = 10;
|
|
754
|
+
return this.reconnect((_this$socket4 = this.socket) === null || _this$socket4 === void 0 ? void 0 : _this$socket4.url);
|
|
755
|
+
case 10:
|
|
756
|
+
return _context.abrupt("continue", 13);
|
|
757
|
+
case 11:
|
|
758
|
+
// Silently ignore too many requests
|
|
759
|
+
this.logger.error("too many requests, statusCode=".concat(event.code), loggerContext);
|
|
760
|
+
return _context.abrupt("continue", 13);
|
|
761
|
+
case 12:
|
|
762
|
+
this.logger.info("socket disconnected unexpectedly; will not reconnect", loggerContext);
|
|
735
763
|
if (isActiveSocket) this.emitEvent('offline.permanent', event);
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
764
|
+
case 13:
|
|
765
|
+
_context.next = 15;
|
|
766
|
+
break;
|
|
767
|
+
case 14:
|
|
768
|
+
_context.prev = 14;
|
|
769
|
+
_t2 = _context["catch"](1);
|
|
770
|
+
this.logger.error("error occurred in close handler", _t2, loggerContext);
|
|
771
|
+
case 15:
|
|
772
|
+
case "end":
|
|
773
|
+
return _context.stop();
|
|
774
|
+
}
|
|
775
|
+
}, _callee, this, [[1, 14]]);
|
|
776
|
+
}));
|
|
777
|
+
function onclose(_x, _x2) {
|
|
778
|
+
return _onclose.apply(this, arguments);
|
|
744
779
|
}
|
|
745
|
-
|
|
780
|
+
return onclose;
|
|
781
|
+
}()
|
|
746
782
|
}, {
|
|
747
783
|
key: "onmessage",
|
|
748
784
|
value: function onmessage(event) {
|
|
785
|
+
var loggerContext = {
|
|
786
|
+
file: 'mobius-socket.ts',
|
|
787
|
+
method: 'onclose'
|
|
788
|
+
};
|
|
749
789
|
var envelope = event.data;
|
|
750
|
-
|
|
751
|
-
this.logger.debug("".concat(MOBIUS_SOCKET_NAMESPACE, ": message envelope: "), envelope);
|
|
752
|
-
}
|
|
790
|
+
this.logger.debug("message envelope: ", envelope, loggerContext);
|
|
753
791
|
|
|
754
792
|
// Handle shutdown message shape: { type: 'shutdown' }
|
|
755
793
|
if (envelope && envelope.type === 'shutdown') {
|
|
756
|
-
this.logger.info("
|
|
794
|
+
this.logger.info("[shutdown] imminent shutdown message received", loggerContext);
|
|
757
795
|
this.emitEvent('event:mobius_shutdown_imminent', envelope); // This is not yet not implemented, keeping for future support
|
|
758
796
|
|
|
759
797
|
this.handleImminentShutdown();
|
|
@@ -788,14 +826,17 @@ var MobiusSocket = /*#__PURE__*/function (_EventEmitter) {
|
|
|
788
826
|
this.emitEvent("event:".concat(eventType), envelope);
|
|
789
827
|
}
|
|
790
828
|
} catch (reason) {
|
|
791
|
-
this.logger.error("
|
|
829
|
+
this.logger.error("error occurred processing socket message", reason, loggerContext);
|
|
792
830
|
}
|
|
793
831
|
return _promise.default.resolve();
|
|
794
832
|
}
|
|
795
833
|
}, {
|
|
796
834
|
key: "reconnect",
|
|
797
835
|
value: function reconnect(webSocketUrl) {
|
|
798
|
-
this.logger.info(""
|
|
836
|
+
this.logger.info("reconnecting", {
|
|
837
|
+
file: 'mobius-socket.ts',
|
|
838
|
+
method: 'reconnect'
|
|
839
|
+
});
|
|
799
840
|
return this.connect(webSocketUrl || this.socketUrl);
|
|
800
841
|
}
|
|
801
842
|
}]);
|