@webex/calling 3.12.0-next.28 → 3.12.0-next.29
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/CallingClient.js +408 -194
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +119 -25
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +11 -8
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +45 -4
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +53 -30
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +35 -0
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/calling/types.js +2 -0
- package/dist/CallingClient/calling/types.js.map +1 -1
- package/dist/CallingClient/constants.js +20 -2
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +16 -1
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/registration/register.js +694 -406
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +202 -21
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.js +41 -104
- package/dist/CallingClient/registration/webWorker.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.test.js +39 -153
- package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
- package/dist/CallingClient/registration/webWorkerStr.js +1 -1
- package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
- package/dist/CallingClient/utils/constants.js +46 -0
- package/dist/CallingClient/utils/constants.js.map +1 -0
- package/dist/CallingClient/utils/index.js +63 -0
- package/dist/CallingClient/utils/index.js.map +1 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.test.js +211 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
- package/dist/CallingClient/utils/request.js +349 -0
- package/dist/CallingClient/utils/request.js.map +1 -0
- package/dist/CallingClient/utils/request.test.js +881 -0
- package/dist/CallingClient/utils/request.test.js.map +1 -0
- package/dist/CallingClient/utils/types.js +7 -0
- package/dist/CallingClient/utils/types.js.map +1 -0
- package/dist/CallingClient/utils/wsFeatureFlag.js +28 -0
- package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
- package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
- package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
- package/dist/Contacts/ContactsClient.test.js +3 -8
- package/dist/Contacts/ContactsClient.test.js.map +1 -1
- package/dist/Metrics/index.js +60 -0
- package/dist/Metrics/index.js.map +1 -1
- package/dist/Metrics/index.test.js +356 -0
- package/dist/Metrics/index.test.js.map +1 -1
- package/dist/Metrics/types.js +11 -1
- package/dist/Metrics/types.js.map +1 -1
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/common/Utils.js +136 -40
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/testUtil.js +8 -4
- package/dist/common/testUtil.js.map +1 -1
- package/dist/common/types.js +2 -0
- package/dist/common/types.js.map +1 -1
- package/dist/mobius-socket/config.js +24 -0
- package/dist/mobius-socket/config.js.map +1 -0
- package/dist/mobius-socket/errors.js +150 -0
- package/dist/mobius-socket/errors.js.map +1 -0
- package/dist/mobius-socket/index.js +57 -0
- package/dist/mobius-socket/index.js.map +1 -0
- package/dist/mobius-socket/mobius-socket-events.test.js +485 -0
- package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
- package/dist/mobius-socket/mobius-socket.js +804 -0
- package/dist/mobius-socket/mobius-socket.js.map +1 -0
- package/dist/mobius-socket/mobius-socket.test.js +1833 -0
- package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
- package/dist/mobius-socket/socket/constants.js +34 -0
- package/dist/mobius-socket/socket/constants.js.map +1 -0
- package/dist/mobius-socket/socket/index.js +15 -0
- package/dist/mobius-socket/socket/index.js.map +1 -0
- package/dist/mobius-socket/socket/socket-base.js +604 -0
- package/dist/mobius-socket/socket/socket-base.js.map +1 -0
- package/dist/mobius-socket/socket/socket.js +19 -0
- package/dist/mobius-socket/socket/socket.js.map +1 -0
- package/dist/mobius-socket/socket/socket.shim.js +26 -0
- package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
- package/dist/mobius-socket/socket/types.js +7 -0
- package/dist/mobius-socket/socket/types.js.map +1 -0
- package/dist/mobius-socket/socket.test.js +727 -0
- package/dist/mobius-socket/socket.test.js.map +1 -0
- package/dist/mobius-socket/test/mocha-helpers.js +23 -0
- package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
- package/dist/mobius-socket/test/promise-tick.js +28 -0
- package/dist/mobius-socket/test/promise-tick.js.map +1 -0
- package/dist/mobius-socket/types.js +7 -0
- package/dist/mobius-socket/types.js.map +1 -0
- package/dist/module/CallingClient/CallingClient.js +102 -5
- package/dist/module/CallingClient/calling/call.js +9 -6
- package/dist/module/CallingClient/calling/callManager.js +27 -7
- package/dist/module/CallingClient/calling/types.js +2 -0
- package/dist/module/CallingClient/constants.js +18 -0
- package/dist/module/CallingClient/registration/register.js +226 -62
- package/dist/module/CallingClient/registration/webWorker.js +42 -61
- package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
- package/dist/module/CallingClient/utils/constants.js +30 -0
- package/dist/module/CallingClient/utils/index.js +5 -0
- package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
- package/dist/module/CallingClient/utils/request.js +162 -0
- package/dist/module/CallingClient/utils/types.js +1 -0
- package/dist/module/CallingClient/utils/wsFeatureFlag.js +12 -0
- package/dist/module/Metrics/index.js +46 -0
- package/dist/module/Metrics/types.js +10 -0
- package/dist/module/common/Utils.js +51 -8
- package/dist/module/common/testUtil.js +5 -1
- package/dist/module/common/types.js +2 -0
- package/dist/module/mobius-socket/config.js +15 -0
- package/dist/module/mobius-socket/errors.js +64 -0
- package/dist/module/mobius-socket/index.js +24 -0
- package/dist/module/mobius-socket/mobius-socket.js +571 -0
- package/dist/module/mobius-socket/socket/constants.js +10 -0
- package/dist/module/mobius-socket/socket/index.js +4 -0
- package/dist/module/mobius-socket/socket/socket-base.js +368 -0
- package/dist/module/mobius-socket/socket/socket.js +9 -0
- package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
- package/dist/module/mobius-socket/socket/types.js +1 -0
- package/dist/module/mobius-socket/types.js +1 -0
- package/dist/types/CallingClient/CallingClient.d.ts +5 -0
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts +1 -0
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts +3 -2
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/types.d.ts +21 -9
- package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +18 -0
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +6 -0
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +3 -1
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
- package/dist/types/CallingClient/utils/constants.d.ts +30 -0
- package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/index.d.ts +6 -0
- package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
- package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/request.d.ts +23 -0
- package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/types.d.ts +29 -0
- package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
- package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
- package/dist/types/Metrics/index.d.ts.map +1 -1
- package/dist/types/Metrics/types.d.ts +11 -1
- package/dist/types/Metrics/types.d.ts.map +1 -1
- package/dist/types/SDKConnector/types.d.ts +24 -0
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +8 -2
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +4 -1
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/dist/types/common/types.d.ts +3 -0
- package/dist/types/common/types.d.ts.map +1 -1
- package/dist/types/mobius-socket/config.d.ts +17 -0
- package/dist/types/mobius-socket/config.d.ts.map +1 -0
- package/dist/types/mobius-socket/errors.d.ts +32 -0
- package/dist/types/mobius-socket/errors.d.ts.map +1 -0
- package/dist/types/mobius-socket/index.d.ts +14 -0
- package/dist/types/mobius-socket/index.d.ts.map +1 -0
- package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
- package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/constants.d.ts +11 -0
- package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/index.d.ts +5 -0
- package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
- package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
- package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
- package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/types.d.ts +61 -0
- package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
- package/dist/types/mobius-socket/types.d.ts +21 -0
- package/dist/types/mobius-socket/types.d.ts.map +1 -0
- package/package.json +16 -2
- package/src/mobius-socket/socket/socket.shim.ts +22 -0
- package/src/mobius-socket/socket/socket.ts +14 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_events","require","_common","_commonTimers","_errors","_constants","_createForOfIteratorHelper","r","e","t","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","Object","forEach","_defineProperty3","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","Boolean","prototype","valueOf","sockets","_weakMap","createTrackingId","concat","crypto","randomUUID","Socket","exports","_EventEmitter","_this","_classCallCheck2","domain","pendingResponses","_map","onmessage","bind","onclose","setMaxListeners","_inherits2","_createClass2","key","get","_sockets$get","binaryType","_sockets$get2","bufferedAmount","_sockets$get3","extensions","_sockets$get4","protocol","_sockets$get5","readyState","_sockets$get6","url","close","options","_this2","_promise","resolve","reject","socket","logger","info","SOCKET_READY_STATE","CLOSING","CLOSED","originalCode","code","originalReason","reason","resolvedOptions","_defaults2","Error","closeTimer","safeSetTimeout","error","warn","forceCloseDelay","event","clearTimeout","CONNECTING","closeEvent","open","_this3","URL","hostname","_unused","checkRequired","_keys","_defineProperty2","WebSocket","getWebSocketConstructor","fixCloseCode","UnknownResponse","BadRequest","NotAuthorized","Forbidden","ConnectionError","onopen","authorize","token","then","catch","onerror","set","rejectPendingResponses","emit","removeAllListeners","_this4","data","JSON","parse","processedEvent","type","acknowledge","handlePendingResponse","send","_this5","OPEN","_isObject2","_stringify","sendRequest","_this6","undefined","request","trackingId","timeout","wssResponseTimeout","has","timeoutId","clearPendingResponse","createTimeoutError","pendingResponse","response","_has2","MESSAGE_TYPES","EVENT_ACK","eventId","message","refresh","refreshedToken","String","AUTH","delete","size","_iterator","values","_step","err","_this7","subtype","statusCode","statusMessage","refreshToken","createWssResponseError","toLowerCase","EventEmitter"],"sources":["socket-base.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {EventEmitter} from 'events';\n\n// @ts-ignore - type not available\nimport {checkRequired} from '@webex/common';\n// @ts-ignore - type not available\nimport {safeSetTimeout} from '@webex/common-timers';\nimport {defaults, has, isObject} from 'lodash';\n\nimport {\n BadRequest,\n ConnectionError,\n createTimeoutError,\n createWssResponseError,\n Forbidden,\n NotAuthorized,\n UnknownResponse,\n} from '../errors';\nimport {MESSAGE_TYPES, SOCKET_READY_STATE} from './constants';\nimport type {\n SocketCloseEvent,\n SocketLogger,\n SocketMessageEvent,\n PendingResponseEntry,\n SendRequestOptions,\n SocketOpenOptions,\n SocketResponse,\n SocketTransport,\n SocketTransportConstructor,\n} from './types';\n\nconst sockets = new WeakMap<Socket, SocketTransport>();\n\nfunction createTrackingId() {\n return `webex-js-sdk_${crypto.randomUUID()}`;\n}\n\n/**\n * Generalized socket abstraction\n */\nexport default class Socket extends EventEmitter {\n private domain: string;\n\n private pendingResponses: Map<string, PendingResponseEntry>;\n\n forceCloseDelay!: number;\n\n logger!: SocketLogger;\n\n refreshToken?: (response: SocketResponse) => unknown;\n\n token!: string;\n\n trackingId!: string;\n\n wssResponseTimeout?: number;\n\n /**\n * Creates a new Socket instance.\n */\n public constructor() {\n super();\n this.domain = 'unknown-domain';\n this.pendingResponses = new Map();\n this.onmessage = this.onmessage.bind(this);\n this.onclose = this.onclose.bind(this);\n this.setMaxListeners(10);\n }\n\n // TODO: Circle back and check if we are using binaryType and related getters. If not, we can remove these.\n /**\n * Gets the binary type of the WebSocket connection.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n */\n public get binaryType() {\n return sockets.get(this)?.binaryType || '';\n }\n\n /**\n * Gets the number of bytes of data that have been queued but not yet transmitted.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n */\n public get bufferedAmount() {\n return sockets.get(this)?.bufferedAmount || 0;\n }\n\n /**\n * Gets the extensions selected by the server.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n */\n public get extensions() {\n return sockets.get(this)?.extensions || '';\n }\n\n /**\n * Gets the sub-protocol selected by the server.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n */\n public get protocol() {\n return sockets.get(this)?.protocol || '';\n }\n\n /**\n * Gets the current state of the WebSocket connection.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n */\n public get readyState() {\n return sockets.get(this)?.readyState || 0;\n }\n\n /**\n * Gets the URL of the WebSocket connection.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n */\n public get url() {\n return sockets.get(this)?.url || '';\n }\n\n /**\n * Provides the environmentally appropriate WebSocket constructor.\n *\n * @returns The WebSocket constructor (ws in NodeJS, WebSocket in browsers)\n */\n public static getWebSocketConstructor(): unknown {\n throw new Error(\n 'Socket.getWebSocketConstructor() must be implemented in an environmentally appropriate way'\n );\n }\n\n /**\n * Closes the socket.\n * @param options - Close options containing code and reason\n * @returns Promise that resolves when the socket is closed\n */\n public close(options?: {reason?: string; code?: number}) {\n return new Promise<SocketCloseEvent | void>((resolve, reject) => {\n const socket = sockets.get(this);\n\n if (!socket) {\n // Open has not been called yet so there is no socket to close\n resolve();\n\n return;\n }\n // logger is defined once open is called\n this.logger.info(`socket,${this.domain}: closing`);\n\n if (\n socket.readyState === SOCKET_READY_STATE.CLOSING ||\n socket.readyState === SOCKET_READY_STATE.CLOSED\n ) {\n this.logger.info(`socket,${this.domain}: already closed`);\n resolve();\n\n return;\n }\n\n const originalCode = options?.code;\n const originalReason = options?.reason;\n\n const resolvedOptions = defaults(options || {}, {\n code: 1000,\n reason: 'Done',\n }) as {code: number; reason: string};\n\n if (\n resolvedOptions.code &&\n resolvedOptions.code !== 1000 &&\n (resolvedOptions.code < 3000 || resolvedOptions.code > 4999)\n ) {\n reject(new Error('`options.code` must be 1000 or between 3000 and 4999 (inclusive)'));\n\n return;\n }\n\n const closeTimer = safeSetTimeout(() => {\n try {\n this.logger.info(`socket,${this.domain}: no close event received, forcing closure`);\n resolve(\n this.onclose(\n originalCode\n ? {code: originalCode, reason: originalReason || 'Done (unknown)'}\n : {\n code: 1000,\n reason: 'Done (forced)',\n }\n )\n );\n } catch (error) {\n this.logger.warn(`socket,${this.domain}: force-close failed`, error);\n }\n }, this.forceCloseDelay);\n\n socket.onclose = (event) => {\n this.logger.info(`socket,${this.domain}: close event fired`, event.code, event.reason);\n clearTimeout(closeTimer);\n this.onclose(event);\n resolve(event);\n };\n\n // If socket is still connecting, manually trigger close handler with desired code\n // because calling close() on a CONNECTING socket may not preserve custom codes\n if (socket.readyState === SOCKET_READY_STATE.CONNECTING) {\n this.logger.info(\n `socket,${this.domain}: socket still connecting, triggering close manually`\n );\n clearTimeout(closeTimer);\n const closeEvent: SocketCloseEvent = {\n code: resolvedOptions.code,\n reason: resolvedOptions.reason,\n };\n this.onclose(closeEvent);\n resolve(closeEvent);\n try {\n socket.close(resolvedOptions.code, resolvedOptions.reason);\n } catch (error) {\n this.logger.info(\n `socket,${this.domain}: error while closing CONNECTING socket, likely due to browser incompatibility with custom close codes`,\n error\n );\n }\n } else {\n socket.close(resolvedOptions.code, resolvedOptions.reason);\n }\n });\n }\n\n /**\n * Opens a WebSocket connection and performs authentication.\n *\n * @param url - WebSocket URL to connect to\n * @param options - Socket connection options including token, logger, and timeout settings\n * @returns Promise that resolves when socket is opened and authenticated\n */\n public open(url: string, options?: SocketOpenOptions) {\n try {\n this.domain = new URL(url).hostname;\n } catch {\n this.domain = url;\n }\n\n return new Promise<void>((resolve, reject) => {\n /* eslint complexity: [0] */\n if (!url) {\n reject(new Error('`url` is required'));\n\n return;\n }\n\n if (sockets.get(this)) {\n reject(new Error('Socket#open() can only be called once per instance'));\n\n return;\n }\n\n const resolvedOptions = (options || {}) as SocketOpenOptions;\n\n checkRequired(['forceCloseDelay', 'token', 'trackingId', 'logger'], resolvedOptions);\n\n Object.keys(resolvedOptions).forEach((key) => {\n Reflect.defineProperty(this, key, {\n enumerable: false,\n value: resolvedOptions[key],\n });\n });\n\n const WebSocket = Socket.getWebSocketConstructor() as SocketTransportConstructor;\n\n this.logger.info(`socket,${this.domain}: creating WebSocket`);\n const socket = new WebSocket(url, [], resolvedOptions);\n\n socket.binaryType = 'arraybuffer';\n socket.onmessage = this.onmessage;\n\n socket.onclose = (event) => {\n event = this.fixCloseCode(event);\n this.logger.info(`socket,${this.domain}: closed before open`, event.code, event.reason);\n switch (event.code) {\n case 1005:\n // IE 11 doesn't seem to allow 4XXX codes, so if we get a 1005, assume\n // it's a bad websocket url. That'll trigger a device refresh; if it\n // turns out we had a bad token, the device refresh should 401 and\n // trigger a token refresh.\n return reject(new UnknownResponse(event));\n case 4400:\n return reject(new BadRequest(event));\n case 4401:\n return reject(new NotAuthorized(event));\n case 4403:\n return reject(new Forbidden(event));\n default:\n return reject(new ConnectionError(event));\n }\n };\n\n socket.onopen = () => {\n this.logger.info(`socket,${this.domain}: connected`);\n this.authorize(this.token)\n .then(() => {\n this.logger.info(`socket,${this.domain}: authorized`);\n socket.onclose = this.onclose;\n resolve();\n })\n .catch(reject);\n };\n\n socket.onerror = (event) => {\n this.logger.warn(`socket,${this.domain}: error event fired`, event);\n };\n\n sockets.set(this, socket);\n this.logger.info(`socket,${this.domain}: waiting for server`);\n });\n }\n\n /**\n * Handles incoming CloseEvents.\n * @param event - The close event containing code and reason\n */\n public onclose(event: SocketCloseEvent) {\n this.logger.info(`socket,${this.domain}: closed`, event.code, event.reason);\n\n event = this.fixCloseCode(event);\n this.rejectPendingResponses(new ConnectionError(event));\n this.emit('close', event);\n\n // Remove all listeners to (a) avoid reacting to late pongs and (b) ensure\n // we don't have a retain cycle.\n this.removeAllListeners();\n }\n\n /**\n * Handles incoming message events from the WebSocket.\n * @param event - The message event containing the data\n */\n public onmessage(event: SocketMessageEvent<string>) {\n try {\n const data = JSON.parse(event.data) as SocketResponse;\n const processedEvent = {data};\n\n if (data.type === 'async_event') {\n this.acknowledge(processedEvent).catch((error) => {\n this.logger.warn(`socket,${this.domain}: failed to acknowledge async event`, error);\n });\n }\n\n // Match pending request/response promises before emitting the public message event.\n // The message is still emitted afterward for any external listeners that care about it.\n this.handlePendingResponse(data);\n this.emit('message', processedEvent);\n } catch (error) {\n /* istanbul ignore next */\n this.logger.warn(`socket,${this.domain}: error while receiving WebSocket message`, error);\n }\n }\n\n /**\n * Sends a message up the socket.\n * @param data - Data to send (string or object that will be JSON stringified)\n * @returns Promise that resolves when the message is sent\n */\n public send(data: string | Record<string, unknown>) {\n return new Promise<void>((resolve, reject) => {\n if (this.readyState !== SOCKET_READY_STATE.OPEN) {\n reject(new Error('INVALID_STATE_ERROR'));\n\n return;\n }\n\n if (isObject(data)) {\n data = JSON.stringify(data);\n }\n\n const socket = sockets.get(this);\n\n if (!socket) {\n reject(new Error('INVALID_STATE_ERROR'));\n\n return;\n }\n\n socket.send(data);\n\n resolve();\n });\n }\n\n /**\n * Sends a request and resolves when the matching response arrives.\n *\n * @param data - Request data to send over the socket\n * @param options - Request options including timeout and error handlers\n * @returns Promise that resolves with the response data\n */\n public sendRequest(data: SocketResponse, options: SendRequestOptions = {}) {\n if (!isObject(data)) {\n return Promise.reject(new Error('`data` is required'));\n }\n\n const request = {...data};\n const trackingId = request.trackingId || createTrackingId();\n const timeout = options.timeout || this.wssResponseTimeout || 10000;\n\n if (this.pendingResponses.has(trackingId)) {\n return Promise.reject(new Error(`socket request already sent for trackingId ${trackingId}`));\n }\n\n request.trackingId = trackingId;\n\n return new Promise<SocketResponse>((resolve, reject) => {\n const timeoutId = safeSetTimeout(() => {\n this.clearPendingResponse(trackingId);\n reject(createTimeoutError(request));\n }, timeout) as NodeJS.Timeout;\n\n const pendingResponse: PendingResponseEntry = {\n request,\n resolve: (response: SocketResponse) => {\n this.clearPendingResponse(trackingId);\n resolve(response);\n },\n reject: (error: unknown) => {\n this.clearPendingResponse(trackingId);\n reject(error);\n },\n timeoutId,\n };\n\n this.pendingResponses.set(trackingId, pendingResponse);\n\n this.send(request).catch((error) => {\n this.clearPendingResponse(trackingId);\n reject(error);\n });\n });\n }\n\n /**\n * Sends an acknowledgment for a specific async event.\n * @param event - Message event containing the async event to acknowledge\n * @returns Promise that resolves when acknowledgment is sent\n */\n private acknowledge(event: SocketMessageEvent<SocketResponse>) {\n if (!event) {\n return Promise.reject(new Error('`event` is required'));\n }\n\n if (!has(event, 'data.eventId')) {\n return Promise.reject(new Error('`event.data.eventId` is required'));\n }\n\n // Don't try to acknowledge if socket is not in open state\n if (this.readyState !== SOCKET_READY_STATE.OPEN) {\n return Promise.resolve();\n }\n\n return this.send({\n type: MESSAGE_TYPES.EVENT_ACK,\n trackingId: event.data.trackingId || createTrackingId(),\n eventId: event.data.eventId,\n }).catch((error) => {\n if (error.message === 'INVALID_STATE_ERROR') {\n return Promise.resolve();\n }\n throw error;\n });\n }\n\n public refresh(token: string | {toString(): string}) {\n if (!token) {\n return Promise.reject(new Error('`token` is required for Socket#refresh()'));\n }\n\n let refreshedToken;\n\n if (typeof token === 'string') {\n refreshedToken = token;\n } else if (token && typeof token.toString === 'function') {\n refreshedToken = token.toString();\n } else {\n refreshedToken = String(token);\n }\n\n return this.authorize(refreshedToken);\n }\n\n /**\n * Sends an auth message up the socket with a refreshed token.\n * @param token - Authentication token to send\n * @returns Promise that resolves when authentication succeeds\n */\n private authorize(token: string) {\n this.logger.info(`socket,${this.domain}: authorizing`);\n\n return this.sendRequest({\n type: MESSAGE_TYPES.AUTH,\n data: {token},\n });\n }\n\n /**\n * Clears a pending response entry.\n * @param trackingId - Tracking ID of the response to clear\n */\n private clearPendingResponse(trackingId: string) {\n const pendingResponse = this.pendingResponses.get(trackingId);\n\n if (pendingResponse?.timeoutId) {\n clearTimeout(pendingResponse.timeoutId);\n }\n\n this.pendingResponses.delete(trackingId);\n }\n\n /**\n * Rejects all pending responses with the provided error.\n * @param error - Error to reject pending responses with\n */\n private rejectPendingResponses(error: unknown) {\n if (!this.pendingResponses.size) {\n return;\n }\n\n for (const pendingResponse of this.pendingResponses.values()) {\n pendingResponse.reject(error);\n }\n }\n\n /**\n * Handles incoming responses for pending requests.\n * @param response - Response data to match against pending requests\n * @returns True if a matching pending request was found and handled\n */\n private handlePendingResponse(response: SocketResponse) {\n if (!response) {\n return false;\n }\n\n // Pending request correlation currently requires trackingId on the response.\n const pendingResponse = this.pendingResponses.get(response.trackingId || '');\n\n if (!pendingResponse) {\n return false;\n }\n\n if (response.subtype !== pendingResponse.request.type) {\n return false;\n }\n\n const statusCode = response?.statusCode;\n const statusMessage = response?.statusMessage;\n\n if (statusCode === 440 && response?.subtype !== MESSAGE_TYPES.AUTH) {\n if (typeof this.refreshToken === 'function') {\n Promise.resolve(this.refreshToken(response)).catch((error) => {\n this.logger.warn(`socket,${this.domain}: failed token-expiry re-auth`, error);\n });\n } else {\n this.logger.warn(\n `socket,${this.domain}: refreshToken callback is unavailable for statusCode 440`\n );\n }\n }\n\n if (statusCode === undefined) {\n const error = createWssResponseError(\n response,\n statusCode,\n statusMessage || 'Socket response missing status code'\n );\n pendingResponse.reject(error);\n } else if (statusCode >= 200 && statusCode < 300) {\n pendingResponse.resolve(response);\n } else {\n pendingResponse.reject(createWssResponseError(response, statusCode, statusMessage));\n }\n\n return true;\n }\n\n /**\n * Deals with the fact that some browsers drop some close codes (but not close reasons).\n *\n * @param event - Close event to fix\n * @returns Fixed close event with corrected code if necessary\n */\n private fixCloseCode(event: SocketCloseEvent) {\n if (event.code === 1005 && event.reason) {\n switch (event.reason.toLowerCase()) {\n case 'replaced':\n this.logger.info(\n `socket,${this.domain}: fixing CloseEvent code for reason: `,\n event.reason\n );\n event.code = 4000;\n break;\n case 'authentication failed':\n case 'authentication did not happen within the timeout window of 30000 seconds.':\n this.logger.info(\n `socket,${this.domain}: fixing CloseEvent code for reason: `,\n event.reason\n );\n event.code = 1008;\n break;\n default:\n // do nothing\n }\n }\n\n return event;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
5
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _ws = _interopRequireDefault(require("ws"));
|
|
10
|
+
var _socketBase = _interopRequireDefault(require("./socket-base"));
|
|
11
|
+
/*!
|
|
12
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
_socketBase.default.getWebSocketConstructor = function getWebSocketConstructor() {
|
|
16
|
+
return _ws.default;
|
|
17
|
+
};
|
|
18
|
+
var _default = exports.default = _socketBase.default;
|
|
19
|
+
//# sourceMappingURL=socket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_ws","_interopRequireDefault","require","_socketBase","Socket","getWebSocketConstructor","WS","_default","exports","default"],"sources":["socket.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport WS from 'ws';\n\nimport Socket from './socket-base';\nimport type {SocketTransportConstructor} from './types';\n\nSocket.getWebSocketConstructor = function getWebSocketConstructor() {\n return WS as unknown as SocketTransportConstructor;\n};\n\nexport default Socket;\n"],"mappings":";;;;;;;;AAIA,IAAAA,GAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AANA;AACA;AACA;;AAOAE,mBAAM,CAACC,uBAAuB,GAAG,SAASA,uBAAuBA,CAAA,EAAG;EAClE,OAAOC,WAAE;AACX,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaL,mBAAM","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
5
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _socketBase = _interopRequireDefault(require("./socket-base"));
|
|
10
|
+
/* eslint-disable no-restricted-globals */
|
|
11
|
+
|
|
12
|
+
/*!
|
|
13
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/* eslint-env browser */
|
|
17
|
+
|
|
18
|
+
_socketBase.default.getWebSocketConstructor = function getWebSocketConstructor() {
|
|
19
|
+
if (typeof WebSocket !== 'undefined') {
|
|
20
|
+
return WebSocket;
|
|
21
|
+
}
|
|
22
|
+
var scope = typeof globalThis !== 'undefined' ? globalThis : undefined;
|
|
23
|
+
return (scope === null || scope === void 0 ? void 0 : scope.WebSocket) || (scope === null || scope === void 0 ? void 0 : scope.MozWebSocket);
|
|
24
|
+
};
|
|
25
|
+
var _default = exports.default = _socketBase.default;
|
|
26
|
+
//# sourceMappingURL=socket.shim.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_socketBase","_interopRequireDefault","require","Socket","getWebSocketConstructor","WebSocket","scope","globalThis","undefined","MozWebSocket","_default","exports","default"],"sources":["socket.shim.ts"],"sourcesContent":["/* eslint-disable no-restricted-globals */\n\n/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-env browser */\n\nimport Socket from './socket-base';\nimport type {BrowserWebSocketConstructor, ShimGlobalScope} from './types';\n\nSocket.getWebSocketConstructor = function getWebSocketConstructor() {\n if (typeof WebSocket !== 'undefined') {\n return WebSocket;\n }\n\n const scope = typeof globalThis !== 'undefined' ? (globalThis as ShimGlobalScope) : undefined;\n\n return (scope?.WebSocket || scope?.MozWebSocket) as BrowserWebSocketConstructor;\n};\n\nexport default Socket;\n"],"mappings":";;;;;;;;AAQA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AARA;;AAEA;AACA;AACA;;AAEA;;AAKAC,mBAAM,CAACC,uBAAuB,GAAG,SAASA,uBAAuBA,CAAA,EAAG;EAClE,IAAI,OAAOC,SAAS,KAAK,WAAW,EAAE;IACpC,OAAOA,SAAS;EAClB;EAEA,IAAMC,KAAK,GAAG,OAAOC,UAAU,KAAK,WAAW,GAAIA,UAAU,GAAuBC,SAAS;EAE7F,OAAQ,CAAAF,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAED,SAAS,MAAIC,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEG,YAAY;AACjD,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaT,mBAAM","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["/**\n * Type for the browser WebSocket constructor.\n */\nexport type BrowserWebSocketConstructor = typeof WebSocket;\n\n/**\n * Global scope interface for accessing WebSocket constructors across environments.\n */\nexport type ShimGlobalScope = {\n /** Firefox's WebSocket constructor */\n MozWebSocket?: BrowserWebSocketConstructor;\n /** Standard WebSocket constructor */\n WebSocket?: BrowserWebSocketConstructor;\n};\n\n/**\n * Socket close event data.\n */\nexport type SocketCloseEvent = {\n /** WebSocket close code */\n code?: number;\n /** Human-readable close reason */\n reason?: string;\n};\n\n/**\n * Socket message event wrapper.\n */\nexport type SocketMessageEvent<T = unknown> = {\n /** Message data payload */\n data: T;\n};\n\n/**\n * Logger interface for socket operations.\n */\nexport type SocketLogger = {\n /** Log informational messages */\n info: (...args: unknown[]) => void;\n /** Log warning messages */\n warn: (...args: unknown[]) => void;\n};\n\n/**\n * Socket response/request message structure.\n */\nexport type SocketResponse = {\n /** Unique tracking ID for request/response correlation */\n trackingId?: string;\n /** Message type identifier */\n type?: string;\n /** Message subtype identifier */\n subtype?: string;\n /** HTTP-style status code */\n statusCode?: number;\n /** Human-readable status message */\n statusMessage?: string;\n /** Reason for error or closure */\n reason?: string;\n /** Event ID for async events */\n eventId?: string;\n /** Additional properties */\n [key: string]: unknown;\n};\n\n/**\n * Entry for tracking pending request/response pairs.\n */\nexport type PendingResponseEntry = {\n /** Original request data */\n request: SocketResponse;\n /** Resolve function for the pending promise */\n resolve: (response: SocketResponse) => void;\n /** Reject function for the pending promise */\n reject: (error: unknown) => void;\n /** Timeout handle for the request */\n timeoutId: ReturnType<typeof setTimeout>;\n};\n\n/**\n * Options for configuring socket requests.\n */\nexport type SendRequestOptions = {\n /** Optional custom timeout error factory */\n createTimeoutError?: (request: SocketResponse) => unknown;\n /** Request timeout in milliseconds */\n timeout?: number;\n};\n\n/**\n * Options required for opening a socket connection.\n */\nexport type SocketOpenOptions = {\n /** Milliseconds to wait for close frame before forcing closure */\n forceCloseDelay: number;\n /** Authentication token */\n token: string;\n /** Tracking ID for this connection */\n trackingId: string;\n /** Logger instance for socket operations */\n logger: SocketLogger;\n /** Optional timeout for websocket responses */\n wssResponseTimeout?: number;\n /** Optional token refresh callback */\n refreshToken?: (response: SocketResponse) => unknown;\n /** Additional options */\n [key: string]: unknown;\n};\n\n/**\n * Interface for the underlying WebSocket transport.\n */\nexport type SocketTransport = {\n /** Binary data type */\n binaryType: string;\n /** Number of bytes queued but not sent */\n bufferedAmount: number;\n /** Extensions negotiated with server */\n extensions: string;\n /** Sub-protocol negotiated with server */\n protocol: string;\n /** Current connection state */\n readyState: number;\n /** WebSocket URL */\n url: string;\n /** Message event handler */\n onmessage: ((event: SocketMessageEvent<string>) => void) | null;\n /** Close event handler */\n onclose: ((event: SocketCloseEvent) => void) | null;\n /** Open event handler */\n onopen: (() => void) | null;\n /** Error event handler */\n onerror: ((event: unknown) => void) | null;\n /** Close the connection */\n close: (code?: number, reason?: string) => void;\n /** Send data through the socket */\n send: (data: string) => void;\n};\n\n/**\n * Constructor type for creating socket transports.\n */\nexport type SocketTransportConstructor = new (...args: unknown[]) => SocketTransport;\n"],"mappings":"","ignoreList":[]}
|