Index: trip-planner-front/node_modules/socket.io/dist/index.js
===================================================================
--- trip-planner-front/node_modules/socket.io/dist/index.js	(revision 6a3a178323fd905112b5392bd9d3cb83b66ef2d3)
+++ trip-planner-front/node_modules/socket.io/dist/index.js	(revision e29cc2ea91f8c99a4329f6d20188305dfd752279)
@@ -30,5 +30,5 @@
 const stream_1 = require("stream");
 const path = require("path");
-const engine = require("engine.io");
+const engine_io_1 = require("engine.io");
 const client_1 = require("./client");
 const events_1 = require("events");
@@ -41,8 +41,10 @@
 const socket_1 = require("./socket");
 Object.defineProperty(exports, "Socket", { enumerable: true, get: function () { return socket_1.Socket; } });
-const debug = debug_1.default("socket.io:server");
+const typed_events_1 = require("./typed-events");
+const uws_js_1 = require("./uws.js");
+const debug = (0, debug_1.default)("socket.io:server");
 const clientVersion = require("../package.json").version;
 const dotMapRegex = /\.map/;
-class Server extends events_1.EventEmitter {
+class Server extends typed_events_1.StrictEventEmitter {
     constructor(srv, opts = {}) {
         super();
@@ -66,5 +68,5 @@
         this.sockets = this.of("/");
         this.opts = opts;
-        if (srv)
+        if (srv || typeof srv == "number")
             this.attach(srv);
     }
@@ -95,9 +97,16 @@
             nextFn.value(name, auth, (err, allow) => {
                 if (err || !allow) {
-                    run();
+                    return run();
                 }
-                else {
-                    fn(this.parentNsps.get(nextFn.value).createChild(name));
+                if (this._nsps.has(name)) {
+                    // the namespace was created in the meantime
+                    debug("dynamic namespace %s already exists", name);
+                    return fn(this._nsps.get(name));
                 }
+                const namespace = this.parentNsps.get(nextFn.value).createChild(name);
+                debug("dynamic namespace %s was created", name);
+                // @ts-ignore
+                this.sockets.emitReserved("new_namespace", namespace);
+                fn(namespace);
             });
         };
@@ -111,5 +120,5 @@
         this.clientPathRegex = new RegExp("^" +
             escapedPath +
-            "/socket\\.io(\\.min|\\.msgpack\\.min)?\\.js(\\.map)?$");
+            "/socket\\.io(\\.msgpack|\\.esm)?(\\.min)?\\.js(\\.map)?(?:\\?|$)");
         return this;
     }
@@ -174,4 +183,52 @@
         return this;
     }
+    attachApp(app /*: TemplatedApp */, opts = {}) {
+        // merge the options passed to the Socket.IO server
+        Object.assign(opts, this.opts);
+        // set engine.io path to `/socket.io`
+        opts.path = opts.path || this._path;
+        // initialize engine
+        debug("creating uWebSockets.js-based engine with opts %j", opts);
+        const engine = new engine_io_1.uServer(opts);
+        engine.attach(app, opts);
+        // bind to engine events
+        this.bind(engine);
+        if (this._serveClient) {
+            // attach static file serving
+            app.get(`${this._path}/*`, (res, req) => {
+                if (!this.clientPathRegex.test(req.getUrl())) {
+                    req.setYield(true);
+                    return;
+                }
+                const filename = req
+                    .getUrl()
+                    .replace(this._path, "")
+                    .replace(/\?.*$/, "")
+                    .replace(/^\//, "");
+                const isMap = dotMapRegex.test(filename);
+                const type = isMap ? "map" : "source";
+                // Per the standard, ETags must be quoted:
+                // https://tools.ietf.org/html/rfc7232#section-2.3
+                const expectedEtag = '"' + clientVersion + '"';
+                const weakEtag = "W/" + expectedEtag;
+                const etag = req.getHeader("if-none-match");
+                if (etag) {
+                    if (expectedEtag === etag || weakEtag === etag) {
+                        debug("serve client %s 304", type);
+                        res.writeStatus("304 Not Modified");
+                        res.end();
+                        return;
+                    }
+                }
+                debug("serve client %s", type);
+                res.writeHeader("cache-control", "public, max-age=0");
+                res.writeHeader("content-type", "application/" + (isMap ? "json" : "javascript"));
+                res.writeHeader("etag", expectedEtag);
+                const filepath = path.join(__dirname, "../client-dist/", filename);
+                (0, uws_js_1.serveFile)(res, filepath);
+            });
+        }
+        (0, uws_js_1.patchAdapter)(app);
+    }
     /**
      * Initialize engine
@@ -184,5 +241,5 @@
         // initialize engine
         debug("creating engine.io instance with opts %j", opts);
-        this.eio = engine.attach(srv, opts);
+        this.eio = (0, engine_io_1.attach)(srv, opts);
         // attach static file serving
         if (this._serveClient)
@@ -222,5 +279,5 @@
      */
     serve(req, res) {
-        const filename = req.url.replace(this._path, "");
+        const filename = req.url.replace(this._path, "").replace(/\?.*$/, "");
         const isMap = dotMapRegex.test(filename);
         const type = isMap ? "map" : "source";
@@ -242,7 +299,4 @@
         res.setHeader("Content-Type", "application/" + (isMap ? "json" : "javascript"));
         res.setHeader("ETag", expectedEtag);
-        if (!isMap) {
-            res.setHeader("X-SourceMap", filename.substring(1) + ".map");
-        }
         Server.sendFile(filename, req, res);
     }
@@ -254,5 +308,5 @@
      */
     static sendFile(filename, req, res) {
-        const readStream = fs_1.createReadStream(path.join(__dirname, "../client-dist/", filename));
+        const readStream = (0, fs_1.createReadStream)(path.join(__dirname, "../client-dist/", filename));
         const encoding = accepts(req).encodings(["br", "gzip", "deflate"]);
         const onError = (err) => {
@@ -264,18 +318,18 @@
             case "br":
                 res.writeHead(200, { "content-encoding": "br" });
-                readStream.pipe(zlib_1.createBrotliCompress()).pipe(res);
-                stream_1.pipeline(readStream, zlib_1.createBrotliCompress(), res, onError);
+                readStream.pipe((0, zlib_1.createBrotliCompress)()).pipe(res);
+                (0, stream_1.pipeline)(readStream, (0, zlib_1.createBrotliCompress)(), res, onError);
                 break;
             case "gzip":
                 res.writeHead(200, { "content-encoding": "gzip" });
-                stream_1.pipeline(readStream, zlib_1.createGzip(), res, onError);
+                (0, stream_1.pipeline)(readStream, (0, zlib_1.createGzip)(), res, onError);
                 break;
             case "deflate":
                 res.writeHead(200, { "content-encoding": "deflate" });
-                stream_1.pipeline(readStream, zlib_1.createDeflate(), res, onError);
+                (0, stream_1.pipeline)(readStream, (0, zlib_1.createDeflate)(), res, onError);
                 break;
             default:
                 res.writeHead(200);
-                stream_1.pipeline(readStream, res, onError);
+                (0, stream_1.pipeline)(readStream, res, onError);
         }
     }
@@ -338,4 +392,8 @@
             nsp = new namespace_1.Namespace(this, name);
             this._nsps.set(name, nsp);
+            if (name !== "/") {
+                // @ts-ignore
+                this.sockets.emitReserved("new_namespace", nsp);
+            }
         }
         if (fn)
@@ -354,4 +412,6 @@
         }
         this.engine.close();
+        // restore the Adapter prototype
+        (0, uws_js_1.restoreAdapter)();
         if (this.httpServer) {
             this.httpServer.close(fn);
@@ -374,22 +434,30 @@
      * Targets a room when emitting.
      *
+     * @param room
+     * @return self
+     * @public
+     */
+    to(room) {
+        return this.sockets.to(room);
+    }
+    /**
+     * Targets a room when emitting.
+     *
+     * @param room
+     * @return self
+     * @public
+     */
+    in(room) {
+        return this.sockets.in(room);
+    }
+    /**
+     * Excludes a room when emitting.
+     *
      * @param name
      * @return self
      * @public
      */
-    to(name) {
-        this.sockets.to(name);
-        return this;
-    }
-    /**
-     * Targets a room when emitting.
-     *
-     * @param name
-     * @return self
-     * @public
-     */
-    in(name) {
-        this.sockets.in(name);
-        return this;
+    except(name) {
+        return this.sockets.except(name);
     }
     /**
@@ -414,4 +482,14 @@
     }
     /**
+     * Emit a packet to other Socket.IO servers
+     *
+     * @param ev - the event name
+     * @param args - an array of arguments, which may include an acknowledgement callback at the end
+     * @public
+     */
+    serverSideEmit(ev, ...args) {
+        return this.sockets.serverSideEmit(ev, ...args);
+    }
+    /**
      * Gets a list of socket ids.
      *
@@ -429,6 +507,5 @@
      */
     compress(compress) {
-        this.sockets.compress(compress);
-        return this;
+        return this.sockets.compress(compress);
     }
     /**
@@ -441,6 +518,5 @@
      */
     get volatile() {
-        this.sockets.volatile;
-        return this;
+        return this.sockets.volatile;
     }
     /**
@@ -451,6 +527,40 @@
      */
     get local() {
-        this.sockets.local;
-        return this;
+        return this.sockets.local;
+    }
+    /**
+     * Returns the matching socket instances
+     *
+     * @public
+     */
+    fetchSockets() {
+        return this.sockets.fetchSockets();
+    }
+    /**
+     * Makes the matching socket instances join the specified rooms
+     *
+     * @param room
+     * @public
+     */
+    socketsJoin(room) {
+        return this.sockets.socketsJoin(room);
+    }
+    /**
+     * Makes the matching socket instances leave the specified rooms
+     *
+     * @param room
+     * @public
+     */
+    socketsLeave(room) {
+        return this.sockets.socketsLeave(room);
+    }
+    /**
+     * Makes the matching socket instances disconnect
+     *
+     * @param close - whether to close the underlying connection
+     * @public
+     */
+    disconnectSockets(close = false) {
+        return this.sockets.disconnectSockets(close);
     }
 }
@@ -469,2 +579,4 @@
 module.exports = (srv, opts) => new Server(srv, opts);
 module.exports.Server = Server;
+module.exports.Namespace = namespace_1.Namespace;
+module.exports.Socket = socket_1.Socket;
