| 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 |