src/helpers/protocol-verification.js
import { ERROR_PREFIX } from '../constants';
export default function protocolVerification(protocols = []) {
if (!Array.isArray(protocols) && typeof protocols !== 'string') {
throw new SyntaxError(`${ERROR_PREFIX.CONSTRUCTOR_ERROR} The subprotocol '${protocols.toString()}' is invalid.`);
}
if (typeof protocols === 'string') {
protocols = [protocols];
}
const uniq = protocols
.map(p => ({ count: 1, protocol: p }))
.reduce((a, b) => {
a[b.protocol] = (a[b.protocol] || 0) + b.count;
return a;
}, {});
const duplicates = Object.keys(uniq).filter(a => uniq[a] > 1);
if (duplicates.length > 0) {
throw new SyntaxError(`${ERROR_PREFIX.CONSTRUCTOR_ERROR} The subprotocol '${duplicates[0]}' is duplicated.`);
}
return protocols;
}