Urara-Blog/node_modules/.pnpm-store/v3/files/84/27132de9a8f9e121751d01f95ddbada8ec3f991fe332f332417504e600ac90973ed80bbfe2d24749785c3c4d1ef5a90d16f69af079226fd1a1dc96eb3d1e23-exec
2022-08-14 01:14:53 +08:00

41 lines
No EOL
1.6 KiB
Text
Executable file

function isSecure(wsComponents) {
return typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === "wss";
}
//RFC 6455
const handler = {
scheme: "ws",
domainHost: true,
parse: function (components, options) {
const wsComponents = components;
//indicate if the secure flag is set
wsComponents.secure = isSecure(wsComponents);
//construct resouce name
wsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '');
wsComponents.path = undefined;
wsComponents.query = undefined;
return wsComponents;
},
serialize: function (wsComponents, options) {
//normalize the default port
if (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === "") {
wsComponents.port = undefined;
}
//ensure scheme matches secure flag
if (typeof wsComponents.secure === 'boolean') {
wsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws');
wsComponents.secure = undefined;
}
//reconstruct path from resource name
if (wsComponents.resourceName) {
const [path, query] = wsComponents.resourceName.split('?');
wsComponents.path = (path && path !== '/' ? path : undefined);
wsComponents.query = query;
wsComponents.resourceName = undefined;
}
//forbid fragment component
wsComponents.fragment = undefined;
return wsComponents;
}
};
export default handler;
//# sourceMappingURL=ws.js.map