Spaces:
Sleeping
Sleeping
classifieur
/
frontend
/node_modules
/@pmmmwh
/react-refresh-webpack-plugin
/sockets
/utils
/getWDSMetadata.js
/** | |
* @typedef {Object} WDSMetaObj | |
* @property {boolean} enforceWs | |
* @property {number} version | |
*/ | |
/** | |
* Derives WDS metadata from a compatible socket client. | |
* @param {Function} SocketClient A WDS socket client (SockJS/WebSocket). | |
* @returns {WDSMetaObj} The parsed WDS metadata object. | |
*/ | |
function getWDSMetadata(SocketClient) { | |
let enforceWs = false; | |
if ( | |
typeof SocketClient.name !== 'undefined' && | |
SocketClient.name !== null && | |
SocketClient.name.toLowerCase().includes('websocket') | |
) { | |
enforceWs = true; | |
} | |
let version; | |
// WDS versions <=3.5.0 | |
if (!('onMessage' in SocketClient.prototype)) { | |
version = 3; | |
} else { | |
// WDS versions >=3.5.0 <4 | |
if ( | |
'getClientPath' in SocketClient || | |
Object.getPrototypeOf(SocketClient).name === 'BaseClient' | |
) { | |
version = 3; | |
} else { | |
version = 4; | |
} | |
} | |
return { | |
enforceWs: enforceWs, | |
version: version, | |
}; | |
} | |
module.exports = getWDSMetadata; | |