You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					41 lines
				
				1.6 KiB
			
		
		
			
		
	
	
					41 lines
				
				1.6 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								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
							 |