controller and vsorc data viewers done
[VSoRC/.git] / node_modules / express-ws / lib / add-ws-method.js
1 'use strict';
2
3 Object.defineProperty(exports, "__esModule", {
4   value: true
5 });
6 exports.default = addWsMethod;
7
8 var _wrapMiddleware = require('./wrap-middleware');
9
10 var _wrapMiddleware2 = _interopRequireDefault(_wrapMiddleware);
11
12 var _websocketUrl = require('./websocket-url');
13
14 var _websocketUrl2 = _interopRequireDefault(_websocketUrl);
15
16 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
18 function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
19
20 function addWsMethod(target) {
21   /* This prevents conflict with other things setting `.ws`. */
22   if (target.ws === null || target.ws === undefined) {
23     target.ws = function addWsRoute(route) {
24       for (var _len = arguments.length, middlewares = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
25         middlewares[_key - 1] = arguments[_key];
26       }
27
28       var wrappedMiddlewares = middlewares.map(_wrapMiddleware2.default);
29
30       /* We append `/.websocket` to the route path here. Why? To prevent conflicts when
31        * a non-WebSocket request is made to the same GET route - after all, we are only
32        * interested in handling WebSocket requests.
33        *
34        * Whereas the original `express-ws` prefixed this path segment, we suffix it -
35        * this makes it possible to let requests propagate through Routers like normal,
36        * which allows us to specify WebSocket routes on Routers as well \o/! */
37       var wsRoute = (0, _websocketUrl2.default)(route);
38
39       /* Here we configure our new GET route. It will never get called by a client
40        * directly, it's just to let our request propagate internally, so that we can
41        * leave the regular middleware execution and error handling to Express. */
42       this.get.apply(this, _toConsumableArray([wsRoute].concat(wrappedMiddlewares)));
43
44       /*
45        * Return `this` to allow for chaining:
46        */
47       return this;
48     };
49   }
50 }