diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..3004d2d --- /dev/null +++ b/.editorconfig @@ -0,0 +1,6 @@ +[*] +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +indent_style = space +indent_size = 4 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7f1de59..89eb401 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,6 +3,6 @@ ## Templating README files ``` -./scripts/template.sh +./_internal/scripts/template.sh ``` diff --git a/_internal/templater/src/main.rs b/_internal/templater/src/main.rs index 2e552e1..fcbb0a6 100644 --- a/_internal/templater/src/main.rs +++ b/_internal/templater/src/main.rs @@ -73,7 +73,9 @@ impl std::fmt::Display for ConfigMetaLanguage { #[derive(Clone, Debug, Serialize, Deserialize)] enum ConfigMetaNetworking { + WebRTC, SocketIo, + Colyseus, GodotHLMultiplayer, FishNet, UnrealReplication, @@ -82,7 +84,9 @@ enum ConfigMetaNetworking { impl ConfigMetaNetworking { fn url(&self) -> &'static str { match self { + Self::WebRTC => "https://webrtc.org", Self::SocketIo => "https://socket.io", + Self::Colyseus => "https://github.com/rivet-gg/plugin-colyseus-server'", Self::GodotHLMultiplayer => "https://docs.godotengine.org/en/stable/tutorials/networking/high_level_multiplayer.html", Self::FishNet => "https://fish-networking.gitbook.io/docs/", Self::UnrealReplication => "https://docs.unrealengine.com/en-US/Gameplay/Networking/Actors/Replication/index.html", @@ -93,7 +97,9 @@ impl ConfigMetaNetworking { impl std::fmt::Display for ConfigMetaNetworking { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { + Self::WebRTC => write!(f, "WebRTC"), Self::SocketIo => write!(f, "Socket.IO"), + Self::Colyseus => write!(f, "Colyseus"), Self::GodotHLMultiplayer => write!(f, "High-Level Multiplayer"), Self::FishNet => write!(f, "Fish-Networking"), Self::UnrealReplication => write!(f, "Actor Replication"), diff --git a/_internal/templater/tpl/README.md.tera b/_internal/templater/tpl/README.md.tera index 8b577a6..f5592fa 100644 --- a/_internal/templater/tpl/README.md.tera +++ b/_internal/templater/tpl/README.md.tera @@ -18,14 +18,14 @@ - [{{ feature.name }}]({{ feature.url }}) {% endfor %} -## Developing Locally +## Running locally 1. [Clone the GitHub repo](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) 2. Open this folder 3. Run: `rivet init` 4. Run `yarn start` -## Deploying +## Deploying to Rivet [Documentation]({{ deploy_docs_url }}) diff --git a/c/coredump/README.md b/c/coredump/README.md index fbd52a3..a987a29 100644 --- a/c/coredump/README.md +++ b/c/coredump/README.md @@ -13,14 +13,14 @@ - [🌐 Dynamic Servers](https://rivet.gg/docs/dynamic-servers) -## Developing Locally +## Running locally 1. [Clone the GitHub repo](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) 2. Open this folder 3. Run: `rivet init` 4. Run `yarn start` -## Deploying +## Deploying to Rivet [Documentation](https://rivet.gg/learn/html5/tutorials/crash-course#step-3-publish-your-game) diff --git a/godot/example-godot-bomber b/godot/example-godot-bomber new file mode 160000 index 0000000..bee5116 --- /dev/null +++ b/godot/example-godot-bomber @@ -0,0 +1 @@ +Subproject commit bee511612fbdf3a6fab6cac2d587bf1a324e2f87 diff --git a/html5/colyseus/.dockerignore b/html5/colyseus/.dockerignore new file mode 100644 index 0000000..d0bcdba --- /dev/null +++ b/html5/colyseus/.dockerignore @@ -0,0 +1,9 @@ +node_modules +npm-debug.log +lib +*.js +Dockerfile + +### Rivet ### +.rivet/ +.env diff --git a/html5/colyseus/.vscode/launch.json b/html5/colyseus/.vscode/launch.json new file mode 100644 index 0000000..0a853ff --- /dev/null +++ b/html5/colyseus/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug", + "type": "pwa-node", + "request": "launch", + "runtimeExecutable": "node", + "runtimeArgs": [ + "--nolazy", + "-r", + "ts-node/register/transpile-only" + ], + "args": ["src/index.ts"], + "cwd": "${workspaceRoot}", + "internalConsoleOptions": "openOnSessionStart", + "resolveSourceMapLocations": [ + "${workspaceFolder}/**", + "!**/node_modules/**" + ], + "skipFiles": ["/**", "node_modules/**"] + } + ] +} diff --git a/html5/colyseus/Dockerfile b/html5/colyseus/Dockerfile new file mode 100644 index 0000000..a284a63 --- /dev/null +++ b/html5/colyseus/Dockerfile @@ -0,0 +1,17 @@ +# === Build === +FROM node:16-alpine as build +WORKDIR /app +COPY ./package.json ./package-lock.json /app/ +RUN npm install +COPY . . +RUN npm run build + +# === Run === +FROM node:16-alpine +WORKDIR /app +# Enables uWebSockets to run on Alpine Linux +RUN apk add --no-cache libc6-compat && ln -s /lib/libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2 +COPY --from=build /app/package.json /app/package-lock.json /app/ +RUN npm install --production +COPY --from=build /app/lib/ /app/lib/ +CMD node lib/index.js diff --git a/html5/colyseus/LICENSE b/html5/colyseus/LICENSE new file mode 100644 index 0000000..cfa3809 --- /dev/null +++ b/html5/colyseus/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Rivet + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/html5/colyseus/README.md b/html5/colyseus/README.md new file mode 100644 index 0000000..21070a3 --- /dev/null +++ b/html5/colyseus/README.md @@ -0,0 +1,27 @@ +# Colyseus + + + + + +| Language | Networking | +| --- | --- | +| [TypeScript](https://www.typescriptlang.org) | [Colyseus](https://github.com/rivet-gg/plugin-colyseus-server') | + +**Rivet Features** + +- [♟️ Matchmaker](https://rivet.gg/docs/matchmaker) +- [🌐 Dynamic Servers](https://rivet.gg/docs/dynamic-servers) + + +## Running locally + +1. [Clone the GitHub repo](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) +2. Open this folder +3. Run: `rivet init` +4. Run `yarn start` + +## Deploying to Rivet + +[Documentation](https://rivet.gg/learn/html5/tutorials/crash-course#step-3-publish-your-game) + diff --git a/html5/colyseus/example.toml b/html5/colyseus/example.toml new file mode 100644 index 0000000..2803474 --- /dev/null +++ b/html5/colyseus/example.toml @@ -0,0 +1,15 @@ +[display] +title = "Colyseus" +description = """ +This repository provides examples of running Colyseus with the Rivet plugin. + +[**Live demo**](https://colyseus.rivet.game/) +"""" + +[meta] +engine = "HTML5" +language = "TypeScript" +networking = "Colyseus" +features = ["Matchmaker", "DynamicServers"] + + diff --git a/html5/colyseus/package-lock.json b/html5/colyseus/package-lock.json new file mode 100644 index 0000000..59af6fe --- /dev/null +++ b/html5/colyseus/package-lock.json @@ -0,0 +1,4228 @@ +{ + "name": "colyseus-examples", + "version": "1.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "colyseus-examples", + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "@colyseus/arena": "^0.14.24", + "@colyseus/monitor": "^0.14.22", + "@rivet-gg/plugin-colyseus-server": "^0.1.1", + "colyseus": "^0.14.23", + "cors": "^2.8.5", + "dotenv": "^16.0.3", + "express": "^4.16.4", + "serve-index": "^1.8.0", + "superagent": "^3.8.1" + }, + "devDependencies": { + "@types/cors": "^2.8.6", + "@types/express": "^4.17.14", + "copyfiles": "^2.4.1", + "http-server": "^14.1.1", + "prettier": "^2.8.7", + "rimraf": "^2.7.1", + "ts-node": "^8.1.0", + "ts-node-dev": "^1.0.0-pre.63", + "typescript": "^4.8.4", + "uwebsockets-express": "^1.1.14" + }, + "engines": { + "node": ">=14.x" + } + }, + "../plugin-colyseus-server/packages/server": { + "name": "@rivet-gg/plugin-colyseus-server", + "version": "0.1.1", + "extraneous": true, + "license": "MIT", + "dependencies": { + "@colyseus/core": "^0.14.36", + "@rivet-gg/api": "^0.0.1-rc15", + "@rivet-gg/plugin-colyseus-uwebsockets-transport": "^0.1.0" + }, + "devDependencies": { + "dotenv": "^16.0.3" + } + }, + "../plugin-colyseus-server/packages/transport/uwebsockets-transport": { + "name": "@rivet-gg/plugin-colyseus-uwebsockets-transport", + "version": "0.1.0", + "extraneous": true, + "license": "MIT", + "dependencies": { + "@colyseus/core": "^0.14.20", + "@colyseus/schema": "^1.0.15", + "@rivet-gg/api": "^0.0.1-rc17", + "uWebSockets.js": "github:uNetworking/uWebSockets.js#v19.2.0" + } + }, + "node_modules/@colyseus/arena": { + "version": "0.14.24", + "license": "MIT", + "dependencies": { + "@colyseus/core": "^0.14.20", + "cors": "^2.8.5", + "dotenv": "^8.2.0", + "express": "^4.16.2" + } + }, + "node_modules/@colyseus/arena/node_modules/dotenv": { + "version": "8.6.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/@colyseus/core": { + "version": "0.14.36", + "license": "MIT", + "dependencies": { + "@colyseus/greeting-banner": "^1.0.0", + "@colyseus/schema": "^1.0.15", + "@gamestdio/timer": "^1.3.0", + "@types/redis": "^2.8.12", + "debug": "^4.0.1", + "internal-ip": "^4.3.0", + "nanoid": "^2.0.0", + "notepack.io": "^2.2.0" + }, + "engines": { + "node": ">= 14.x" + } + }, + "node_modules/@colyseus/greeting-banner": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/@colyseus/mongoose-driver": { + "version": "0.14.22", + "license": "MIT", + "dependencies": { + "@colyseus/core": "^0.14.20", + "mongoose": "^5.11.3" + } + }, + "node_modules/@colyseus/monitor": { + "version": "0.14.22", + "license": "MIT", + "dependencies": { + "express": "^4.16.2", + "node-os-utils": "^1.2.0", + "superagent": "^3.8.2" + } + }, + "node_modules/@colyseus/redis-presence": { + "version": "0.14.22", + "license": "MIT", + "dependencies": { + "@colyseus/core": "^0.14.20", + "redis": "^3.1.1" + } + }, + "node_modules/@colyseus/schema": { + "version": "1.0.45", + "license": "MIT", + "bin": { + "schema-codegen": "bin/schema-codegen" + } + }, + "node_modules/@colyseus/ws-transport": { + "version": "0.14.21", + "license": "MIT", + "dependencies": { + "@colyseus/core": "^0.14.20", + "@colyseus/schema": "^1.0.15", + "@types/ws": "^7.4.4", + "ws": "^7.4.5" + } + }, + "node_modules/@gamestdio/clock": { + "version": "1.1.9", + "license": "MIT" + }, + "node_modules/@gamestdio/timer": { + "version": "1.3.2", + "license": "MIT", + "dependencies": { + "@gamestdio/clock": "^1.1.9" + } + }, + "node_modules/@rivet-gg/api": { + "version": "0.0.1-rc19", + "resolved": "https://registry.npmjs.org/@rivet-gg/api/-/api-0.0.1-rc19.tgz", + "integrity": "sha512-OWgNdcyZhbQkhTJI2zk/BsUf2p7dWyXaybI11UrJ5GZutn3GjxT0hI7Qi9NUjNL/gLR7qa6jDiM9sXXdb07mrA==", + "dependencies": { + "@types/url-join": "4.0.1", + "axios": "0.27.2", + "js-base64": "3.7.2", + "url-join": "4.0.1" + } + }, + "node_modules/@rivet-gg/plugin-colyseus-server": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@rivet-gg/plugin-colyseus-server/-/plugin-colyseus-server-0.1.1.tgz", + "integrity": "sha512-n81p3uyLut+auHDYQo26ny9XUCvTvamVDIsL87CmXkxmarTkMrEXvaVmKfrxDJdy14IRqmEWtyN7I6kgFL0EwQ==", + "dependencies": { + "@colyseus/core": "^0.14.36", + "@rivet-gg/api": "^0.0.1-rc15", + "@rivet-gg/plugin-colyseus-uwebsockets-transport": "^0.1.0" + } + }, + "node_modules/@rivet-gg/plugin-colyseus-uwebsockets-transport": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@rivet-gg/plugin-colyseus-uwebsockets-transport/-/plugin-colyseus-uwebsockets-transport-0.1.0.tgz", + "integrity": "sha512-/cVzJfDpOYh5BZF3Q8yRQC6SjIZczwP4kKF4tNqIfTMXA25vFS6DNNPiC1IxYItNHnmryLDp1Lhu//y/VPOTIA==", + "dependencies": { + "@colyseus/core": "^0.14.20", + "@colyseus/schema": "^1.0.15", + "@rivet-gg/api": "^0.0.1-rc17", + "uWebSockets.js": "github:uNetworking/uWebSockets.js#v19.2.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bson": { + "version": "4.0.5", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cors": { + "version": "2.8.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.17", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.33", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mongodb": { + "version": "3.6.20", + "license": "MIT", + "dependencies": { + "@types/bson": "*", + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "18.15.11", + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/redis": { + "version": "2.8.32", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/strip-json-comments": { + "version": "0.0.30", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-wDXw9LEEUHyV+7UWy7U315nrJGJ7p1BzaCxDpEoLr789Dk1WDVMMlf3iBfbG2F8NdWnYyFbtTxUn2ZNbm1Q4LQ==" + }, + "node_modules/@types/ws": { + "version": "7.4.7", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/async": { + "version": "2.6.4", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "license": "MIT" + }, + "node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/batch": { + "version": "0.6.1", + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "2.2.1", + "license": "MIT", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/bluebird": { + "version": "3.5.1", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "1.20.1", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bson": { + "version": "1.1.6", + "license": "Apache-2.0", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/colyseus": { + "version": "0.14.24", + "license": "MIT", + "dependencies": { + "@colyseus/core": "^0.14.33", + "@colyseus/mongoose-driver": "^0.14.22", + "@colyseus/redis-presence": "^0.14.21", + "@colyseus/ws-transport": "^0.14.21" + }, + "engines": { + "node": ">= 14.x" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "license": "MIT" + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "license": "MIT" + }, + "node_modules/copyfiles": { + "version": "2.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^7.0.5", + "minimatch": "^3.0.3", + "mkdirp": "^1.0.4", + "noms": "0.0.0", + "through2": "^2.0.1", + "untildify": "^4.0.0", + "yargs": "^16.1.0" + }, + "bin": { + "copyfiles": "copyfiles", + "copyup": "copyfiles" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/corser": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/default-gateway": { + "version": "4.2.0", + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/denque": { + "version": "1.5.1", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dotenv": { + "version": "16.0.3", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/dynamic-dedupe": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/extend": { + "version": "3.0.2", + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "2.5.1", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/formidable": { + "version": "1.2.6", + "license": "MIT", + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/he": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-server": { + "version": "14.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + }, + "bin": { + "http-server": "bin/http-server" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/http-status-codes": { + "version": "2.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/internal-ip": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/js-base64": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz", + "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==" + }, + "node_modules/kareem": { + "version": "2.3.2", + "license": "Apache-2.0" + }, + "node_modules/lodash": { + "version": "4.17.21", + "dev": true, + "license": "MIT" + }, + "node_modules/make-error": { + "version": "1.3.6", + "dev": true, + "license": "ISC" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "license": "MIT", + "optional": true + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/methods": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mongodb": { + "version": "3.7.3", + "license": "Apache-2.0", + "dependencies": { + "bl": "^2.2.1", + "bson": "^1.1.4", + "denque": "^1.4.1", + "optional-require": "^1.1.8", + "safe-buffer": "^5.1.2" + }, + "engines": { + "node": ">=4" + }, + "optionalDependencies": { + "saslprep": "^1.0.0" + }, + "peerDependenciesMeta": { + "aws4": { + "optional": true + }, + "bson-ext": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "mongodb-extjson": { + "optional": true + }, + "snappy": { + "optional": true + } + } + }, + "node_modules/mongodb/node_modules/optional-require": { + "version": "1.1.8", + "license": "Apache-2.0", + "dependencies": { + "require-at": "^1.0.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mongoose": { + "version": "5.13.16", + "license": "MIT", + "dependencies": { + "@types/bson": "1.x || 4.0.x", + "@types/mongodb": "^3.5.27", + "bson": "^1.1.4", + "kareem": "2.3.2", + "mongodb": "3.7.3", + "mongoose-legacy-pluralize": "1.0.2", + "mpath": "0.8.4", + "mquery": "3.2.5", + "ms": "2.1.2", + "optional-require": "1.0.x", + "regexp-clone": "1.0.0", + "safe-buffer": "5.2.1", + "sift": "13.5.2", + "sliced": "1.0.1" + }, + "engines": { + "node": ">=4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose-legacy-pluralize": { + "version": "1.0.2", + "license": "Apache-2.0", + "peerDependencies": { + "mongoose": "*" + } + }, + "node_modules/mpath": { + "version": "0.8.4", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "3.2.5", + "license": "MIT", + "dependencies": { + "bluebird": "3.5.1", + "debug": "3.1.0", + "regexp-clone": "^1.0.0", + "safe-buffer": "5.1.2", + "sliced": "1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery/node_modules/debug": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/mquery/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/mquery/node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "2.1.11", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/node-os-utils": { + "version": "1.3.7", + "license": "MIT" + }, + "node_modules/noms": { + "version": "0.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "~1.0.31" + } + }, + "node_modules/noms/node_modules/isarray": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/noms/node_modules/readable-stream": { + "version": "1.0.34", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/noms/node_modules/string_decoder": { + "version": "0.10.31", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/notepack.io": { + "version": "2.3.0", + "license": "MIT" + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "dev": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optional-require": { + "version": "1.0.3", + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "license": "MIT" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/portfinder": { + "version": "1.0.32", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/mkdirp": { + "version": "0.5.6", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/prettier": { + "version": "2.8.7", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/redis": { + "version": "3.1.2", + "license": "MIT", + "dependencies": { + "denque": "^1.5.0", + "redis-commands": "^1.7.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-redis" + } + }, + "node_modules/redis-commands": { + "version": "1.7.0", + "license": "MIT" + }, + "node_modules/redis-errors": { + "version": "1.2.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/redis-parser": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "redis-errors": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexp-clone": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/require-at": { + "version": "1.0.6", + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/saslprep": { + "version": "1.0.3", + "license": "MIT", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/secure-compare": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/semver": { + "version": "5.7.1", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.18.0", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "license": "MIT" + }, + "node_modules/serve-index": { + "version": "1.9.1", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "license": "ISC" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "license": "ISC" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "license": "MIT", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sift": { + "version": "13.5.2", + "license": "MIT" + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "license": "ISC" + }, + "node_modules/sliced": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "license": "MIT", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/superagent": { + "version": "3.8.3", + "license": "MIT", + "dependencies": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.2.0", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.3.5" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/superagent/node_modules/debug": { + "version": "3.2.7", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/through2": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-node": { + "version": "8.10.2", + "dev": true, + "license": "MIT", + "dependencies": { + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "typescript": ">=2.7" + } + }, + "node_modules/ts-node-dev": { + "version": "1.1.8", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.1", + "dynamic-dedupe": "^0.3.0", + "minimist": "^1.2.5", + "mkdirp": "^1.0.4", + "resolve": "^1.0.0", + "rimraf": "^2.6.1", + "source-map-support": "^0.5.12", + "tree-kill": "^1.2.2", + "ts-node": "^9.0.0", + "tsconfig": "^7.0.0" + }, + "bin": { + "ts-node-dev": "lib/bin.js", + "tsnd": "lib/bin.js" + }, + "engines": { + "node": ">=0.8.0" + }, + "peerDependencies": { + "node-notifier": "*", + "typescript": "*" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/ts-node-dev/node_modules/ts-node": { + "version": "9.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": ">=2.7" + } + }, + "node_modules/tsconfig": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/strip-bom": "^3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "^3.0.0", + "strip-json-comments": "^2.0.0" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/union": { + "version": "0.5.0", + "dev": true, + "dependencies": { + "qs": "^6.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/url-join": { + "version": "4.0.1", + "license": "MIT" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uwebsockets-express": { + "version": "1.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "http-status-codes": "^2.1.4", + "mime": "^2.5.2", + "path-to-regexp": "^0.1.7" + } + }, + "node_modules/uwebsockets-express/node_modules/mime": { + "version": "2.6.0", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/uWebSockets.js": { + "version": "19.2.0", + "resolved": "git+ssh://git@github.com/uNetworking/uWebSockets.js.git#77b1761c5a23ac6a5c2adf2bd808be0ae6b5000a" + }, + "node_modules/vary": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "license": "ISC" + }, + "node_modules/ws": { + "version": "7.5.9", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + } + }, + "dependencies": { + "@colyseus/arena": { + "version": "0.14.24", + "requires": { + "@colyseus/core": "^0.14.20", + "cors": "^2.8.5", + "dotenv": "^8.2.0", + "express": "^4.16.2" + }, + "dependencies": { + "dotenv": { + "version": "8.6.0" + } + } + }, + "@colyseus/core": { + "version": "0.14.36", + "requires": { + "@colyseus/greeting-banner": "^1.0.0", + "@colyseus/schema": "^1.0.15", + "@gamestdio/timer": "^1.3.0", + "@types/redis": "^2.8.12", + "debug": "^4.0.1", + "internal-ip": "^4.3.0", + "nanoid": "^2.0.0", + "notepack.io": "^2.2.0" + } + }, + "@colyseus/greeting-banner": { + "version": "1.0.0" + }, + "@colyseus/mongoose-driver": { + "version": "0.14.22", + "requires": { + "@colyseus/core": "^0.14.20", + "mongoose": "^5.11.3" + } + }, + "@colyseus/monitor": { + "version": "0.14.22", + "requires": { + "express": "^4.16.2", + "node-os-utils": "^1.2.0", + "superagent": "^3.8.2" + } + }, + "@colyseus/redis-presence": { + "version": "0.14.22", + "requires": { + "@colyseus/core": "^0.14.20", + "redis": "^3.1.1" + } + }, + "@colyseus/schema": { + "version": "1.0.45" + }, + "@colyseus/ws-transport": { + "version": "0.14.21", + "requires": { + "@colyseus/core": "^0.14.20", + "@colyseus/schema": "^1.0.15", + "@types/ws": "^7.4.4", + "ws": "^7.4.5" + } + }, + "@gamestdio/clock": { + "version": "1.1.9" + }, + "@gamestdio/timer": { + "version": "1.3.2", + "requires": { + "@gamestdio/clock": "^1.1.9" + } + }, + "@rivet-gg/api": { + "version": "0.0.1-rc19", + "resolved": "https://registry.npmjs.org/@rivet-gg/api/-/api-0.0.1-rc19.tgz", + "integrity": "sha512-OWgNdcyZhbQkhTJI2zk/BsUf2p7dWyXaybI11UrJ5GZutn3GjxT0hI7Qi9NUjNL/gLR7qa6jDiM9sXXdb07mrA==", + "requires": { + "@types/url-join": "4.0.1", + "axios": "0.27.2", + "js-base64": "3.7.2", + "url-join": "4.0.1" + } + }, + "@rivet-gg/plugin-colyseus-server": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@rivet-gg/plugin-colyseus-server/-/plugin-colyseus-server-0.1.1.tgz", + "integrity": "sha512-n81p3uyLut+auHDYQo26ny9XUCvTvamVDIsL87CmXkxmarTkMrEXvaVmKfrxDJdy14IRqmEWtyN7I6kgFL0EwQ==", + "requires": { + "@colyseus/core": "^0.14.36", + "@rivet-gg/api": "^0.0.1-rc15", + "@rivet-gg/plugin-colyseus-uwebsockets-transport": "^0.1.0" + } + }, + "@rivet-gg/plugin-colyseus-uwebsockets-transport": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@rivet-gg/plugin-colyseus-uwebsockets-transport/-/plugin-colyseus-uwebsockets-transport-0.1.0.tgz", + "integrity": "sha512-/cVzJfDpOYh5BZF3Q8yRQC6SjIZczwP4kKF4tNqIfTMXA25vFS6DNNPiC1IxYItNHnmryLDp1Lhu//y/VPOTIA==", + "requires": { + "@colyseus/core": "^0.14.20", + "@colyseus/schema": "^1.0.15", + "@rivet-gg/api": "^0.0.1-rc17", + "uWebSockets.js": "github:uNetworking/uWebSockets.js#v19.2.0" + } + }, + "@types/body-parser": { + "version": "1.19.2", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bson": { + "version": "4.0.5", + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/cors": { + "version": "2.8.13", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/express": { + "version": "4.17.17", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.33", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/mime": { + "version": "3.0.1", + "dev": true + }, + "@types/mongodb": { + "version": "3.6.20", + "requires": { + "@types/bson": "*", + "@types/node": "*" + } + }, + "@types/node": { + "version": "18.15.11" + }, + "@types/qs": { + "version": "6.9.7", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "dev": true + }, + "@types/redis": { + "version": "2.8.32", + "requires": { + "@types/node": "*" + } + }, + "@types/serve-static": { + "version": "1.15.1", + "dev": true, + "requires": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/strip-bom": { + "version": "3.0.0", + "dev": true + }, + "@types/strip-json-comments": { + "version": "0.0.30", + "dev": true + }, + "@types/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-wDXw9LEEUHyV+7UWy7U315nrJGJ7p1BzaCxDpEoLr789Dk1WDVMMlf3iBfbG2F8NdWnYyFbtTxUn2ZNbm1Q4LQ==" + }, + "@types/ws": { + "version": "7.4.7", + "requires": { + "@types/node": "*" + } + }, + "accepts": { + "version": "1.3.8", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "4.1.3", + "dev": true + }, + "array-flatten": { + "version": "1.1.1" + }, + "async": { + "version": "2.6.4", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "asynckit": { + "version": "0.4.0" + }, + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, + "balanced-match": { + "version": "1.0.2", + "dev": true + }, + "basic-auth": { + "version": "2.0.1", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "dev": true + } + } + }, + "batch": { + "version": "0.6.1" + }, + "binary-extensions": { + "version": "2.2.0", + "dev": true + }, + "bl": { + "version": "2.2.1", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "bluebird": { + "version": "3.5.1" + }, + "body-parser": { + "version": "1.20.1", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "bson": { + "version": "1.1.6" + }, + "buffer-from": { + "version": "1.1.2", + "dev": true + }, + "bytes": { + "version": "3.1.2" + }, + "call-bind": { + "version": "1.0.2", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.3", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "cliui": { + "version": "7.0.4", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "colyseus": { + "version": "0.14.24", + "requires": { + "@colyseus/core": "^0.14.33", + "@colyseus/mongoose-driver": "^0.14.22", + "@colyseus/redis-presence": "^0.14.21", + "@colyseus/ws-transport": "^0.14.21" + } + }, + "combined-stream": { + "version": "1.0.8", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "component-emitter": { + "version": "1.3.0" + }, + "concat-map": { + "version": "0.0.1", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5" + }, + "cookie": { + "version": "0.5.0" + }, + "cookie-signature": { + "version": "1.0.6" + }, + "cookiejar": { + "version": "2.1.4" + }, + "copyfiles": { + "version": "2.4.1", + "dev": true, + "requires": { + "glob": "^7.0.5", + "minimatch": "^3.0.3", + "mkdirp": "^1.0.4", + "noms": "0.0.0", + "through2": "^2.0.1", + "untildify": "^4.0.0", + "yargs": "^16.1.0" + } + }, + "core-util-is": { + "version": "1.0.3" + }, + "cors": { + "version": "2.8.5", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "corser": { + "version": "2.0.1", + "dev": true + }, + "create-require": { + "version": "1.1.1", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "4.3.4", + "requires": { + "ms": "2.1.2" + } + }, + "default-gateway": { + "version": "4.2.0", + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "delayed-stream": { + "version": "1.0.0" + }, + "denque": { + "version": "1.5.1" + }, + "depd": { + "version": "2.0.0" + }, + "destroy": { + "version": "1.2.0" + }, + "diff": { + "version": "4.0.2", + "dev": true + }, + "dotenv": { + "version": "16.0.3" + }, + "dynamic-dedupe": { + "version": "0.3.0", + "dev": true, + "requires": { + "xtend": "^4.0.0" + } + }, + "ee-first": { + "version": "1.1.1" + }, + "emoji-regex": { + "version": "8.0.0", + "dev": true + }, + "encodeurl": { + "version": "1.0.2" + }, + "end-of-stream": { + "version": "1.4.4", + "requires": { + "once": "^1.4.0" + } + }, + "escalade": { + "version": "3.1.1", + "dev": true + }, + "escape-html": { + "version": "1.0.3" + }, + "etag": { + "version": "1.8.1" + }, + "eventemitter3": { + "version": "4.0.7", + "dev": true + }, + "execa": { + "version": "1.0.0", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "express": { + "version": "4.18.2", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "extend": { + "version": "3.0.2" + }, + "fill-range": { + "version": "7.0.1", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "follow-redirects": { + "version": "1.15.2" + }, + "form-data": { + "version": "2.5.1", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "formidable": { + "version": "1.2.6" + }, + "forwarded": { + "version": "0.2.0" + }, + "fresh": { + "version": "0.5.2" + }, + "fs.realpath": { + "version": "1.0.0", + "dev": true + }, + "function-bind": { + "version": "1.1.1" + }, + "get-caller-file": { + "version": "2.0.5", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.0", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-stream": { + "version": "4.1.0", + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.2.3", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "has": { + "version": "1.0.3", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "has-symbols": { + "version": "1.0.3" + }, + "he": { + "version": "1.2.0", + "dev": true + }, + "html-encoding-sniffer": { + "version": "3.0.0", + "dev": true, + "requires": { + "whatwg-encoding": "^2.0.0" + } + }, + "http-errors": { + "version": "2.0.0", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-proxy": { + "version": "1.18.1", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-server": { + "version": "14.1.1", + "dev": true, + "requires": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + } + }, + "http-status-codes": { + "version": "2.2.0", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "inflight": { + "version": "1.0.6", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4" + }, + "internal-ip": { + "version": "4.3.0", + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "ip-regex": { + "version": "2.1.0" + }, + "ipaddr.js": { + "version": "1.9.1" + }, + "is-binary-path": { + "version": "2.1.0", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.11.0", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "dev": true + }, + "is-stream": { + "version": "1.1.0" + }, + "isarray": { + "version": "1.0.0" + }, + "isexe": { + "version": "2.0.0" + }, + "js-base64": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz", + "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==" + }, + "kareem": { + "version": "2.3.2" + }, + "lodash": { + "version": "4.17.21", + "dev": true + }, + "make-error": { + "version": "1.3.6", + "dev": true + }, + "media-typer": { + "version": "0.3.0" + }, + "memory-pager": { + "version": "1.5.0", + "optional": true + }, + "merge-descriptors": { + "version": "1.0.1" + }, + "methods": { + "version": "1.1.2" + }, + "mime": { + "version": "1.6.0" + }, + "mime-db": { + "version": "1.52.0" + }, + "mime-types": { + "version": "2.1.35", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.1.2", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "dev": true + }, + "mongodb": { + "version": "3.7.3", + "requires": { + "bl": "^2.2.1", + "bson": "^1.1.4", + "denque": "^1.4.1", + "optional-require": "^1.1.8", + "safe-buffer": "^5.1.2", + "saslprep": "^1.0.0" + }, + "dependencies": { + "optional-require": { + "version": "1.1.8", + "requires": { + "require-at": "^1.0.6" + } + } + } + }, + "mongoose": { + "version": "5.13.16", + "requires": { + "@types/bson": "1.x || 4.0.x", + "@types/mongodb": "^3.5.27", + "bson": "^1.1.4", + "kareem": "2.3.2", + "mongodb": "3.7.3", + "mongoose-legacy-pluralize": "1.0.2", + "mpath": "0.8.4", + "mquery": "3.2.5", + "ms": "2.1.2", + "optional-require": "1.0.x", + "regexp-clone": "1.0.0", + "safe-buffer": "5.2.1", + "sift": "13.5.2", + "sliced": "1.0.1" + } + }, + "mongoose-legacy-pluralize": { + "version": "1.0.2", + "requires": {} + }, + "mpath": { + "version": "0.8.4" + }, + "mquery": { + "version": "3.2.5", + "requires": { + "bluebird": "3.5.1", + "debug": "3.1.0", + "regexp-clone": "^1.0.0", + "safe-buffer": "5.1.2", + "sliced": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + }, + "safe-buffer": { + "version": "5.1.2" + } + } + }, + "ms": { + "version": "2.1.2" + }, + "nanoid": { + "version": "2.1.11" + }, + "negotiator": { + "version": "0.6.3" + }, + "nice-try": { + "version": "1.0.5" + }, + "node-os-utils": { + "version": "1.3.7" + }, + "noms": { + "version": "0.0.0", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "~1.0.31" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "dev": true + }, + "notepack.io": { + "version": "2.3.0" + }, + "npm-run-path": { + "version": "2.0.2", + "requires": { + "path-key": "^2.0.0" + } + }, + "object-assign": { + "version": "4.1.1" + }, + "object-inspect": { + "version": "1.12.3" + }, + "on-finished": { + "version": "2.4.1", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "requires": { + "wrappy": "1" + } + }, + "opener": { + "version": "1.5.2", + "dev": true + }, + "optional-require": { + "version": "1.0.3" + }, + "p-finally": { + "version": "1.0.0" + }, + "parseurl": { + "version": "1.3.3" + }, + "path-is-absolute": { + "version": "1.0.1", + "dev": true + }, + "path-key": { + "version": "2.0.1" + }, + "path-parse": { + "version": "1.0.7", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7" + }, + "picomatch": { + "version": "2.3.1", + "dev": true + }, + "portfinder": { + "version": "1.0.32", + "dev": true, + "requires": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "mkdirp": { + "version": "0.5.6", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + } + } + }, + "prettier": { + "version": "2.8.7", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1" + }, + "proxy-addr": { + "version": "2.0.7", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "pump": { + "version": "3.0.0", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "qs": { + "version": "6.11.0", + "requires": { + "side-channel": "^1.0.4" + } + }, + "range-parser": { + "version": "1.2.1" + }, + "raw-body": { + "version": "2.5.1", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "2.3.8", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2" + } + } + }, + "readdirp": { + "version": "3.6.0", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "redis": { + "version": "3.1.2", + "requires": { + "denque": "^1.5.0", + "redis-commands": "^1.7.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0" + } + }, + "redis-commands": { + "version": "1.7.0" + }, + "redis-errors": { + "version": "1.2.0" + }, + "redis-parser": { + "version": "3.0.0", + "requires": { + "redis-errors": "^1.0.0" + } + }, + "regexp-clone": { + "version": "1.0.0" + }, + "require-at": { + "version": "1.0.6" + }, + "require-directory": { + "version": "2.1.1", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "rimraf": { + "version": "2.7.1", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.2.1" + }, + "safer-buffer": { + "version": "2.1.2" + }, + "saslprep": { + "version": "1.0.3", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, + "secure-compare": { + "version": "3.0.1", + "dev": true + }, + "semver": { + "version": "5.7.1" + }, + "send": { + "version": "0.18.0", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0" + } + } + }, + "ms": { + "version": "2.1.3" + } + } + }, + "serve-index": { + "version": "1.9.1", + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2" + }, + "http-errors": { + "version": "1.6.3", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3" + }, + "ms": { + "version": "2.0.0" + }, + "setprototypeof": { + "version": "1.1.0" + }, + "statuses": { + "version": "1.5.0" + } + } + }, + "serve-static": { + "version": "1.15.0", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setprototypeof": { + "version": "1.2.0" + }, + "shebang-command": { + "version": "1.2.0", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0" + }, + "side-channel": { + "version": "1.0.4", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "sift": { + "version": "13.5.2" + }, + "signal-exit": { + "version": "3.0.7" + }, + "sliced": { + "version": "1.0.1" + }, + "source-map": { + "version": "0.6.1", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sparse-bitfield": { + "version": "3.0.3", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, + "statuses": { + "version": "2.0.1" + }, + "string_decoder": { + "version": "1.1.1", + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2" + } + } + }, + "string-width": { + "version": "4.2.3", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "dev": true + }, + "strip-eof": { + "version": "1.0.0" + }, + "strip-json-comments": { + "version": "2.0.1", + "dev": true + }, + "superagent": { + "version": "3.8.3", + "requires": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.2.0", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true + }, + "through2": { + "version": "2.0.5", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1" + }, + "tree-kill": { + "version": "1.2.2", + "dev": true + }, + "ts-node": { + "version": "8.10.2", + "dev": true, + "requires": { + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + } + }, + "ts-node-dev": { + "version": "1.1.8", + "dev": true, + "requires": { + "chokidar": "^3.5.1", + "dynamic-dedupe": "^0.3.0", + "minimist": "^1.2.5", + "mkdirp": "^1.0.4", + "resolve": "^1.0.0", + "rimraf": "^2.6.1", + "source-map-support": "^0.5.12", + "tree-kill": "^1.2.2", + "ts-node": "^9.0.0", + "tsconfig": "^7.0.0" + }, + "dependencies": { + "ts-node": { + "version": "9.1.1", + "dev": true, + "requires": { + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + } + } + } + }, + "tsconfig": { + "version": "7.0.0", + "dev": true, + "requires": { + "@types/strip-bom": "^3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "^3.0.0", + "strip-json-comments": "^2.0.0" + } + }, + "type-is": { + "version": "1.6.18", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typescript": { + "version": "4.9.5", + "dev": true + }, + "union": { + "version": "0.5.0", + "dev": true, + "requires": { + "qs": "^6.4.0" + } + }, + "unpipe": { + "version": "1.0.0" + }, + "untildify": { + "version": "4.0.0", + "dev": true + }, + "url-join": { + "version": "4.0.1" + }, + "util-deprecate": { + "version": "1.0.2" + }, + "utils-merge": { + "version": "1.0.1" + }, + "uwebsockets-express": { + "version": "1.3.1", + "dev": true, + "requires": { + "http-status-codes": "^2.1.4", + "mime": "^2.5.2", + "path-to-regexp": "^0.1.7" + }, + "dependencies": { + "mime": { + "version": "2.6.0", + "dev": true + } + } + }, + "uWebSockets.js": { + "version": "git+ssh://git@github.com/uNetworking/uWebSockets.js.git#77b1761c5a23ac6a5c2adf2bd808be0ae6b5000a", + "from": "uWebSockets.js@github:uNetworking/uWebSockets.js#v19.2.0" + }, + "vary": { + "version": "1.1.2" + }, + "whatwg-encoding": { + "version": "2.0.0", + "dev": true, + "requires": { + "iconv-lite": "0.6.3" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "which": { + "version": "1.3.1", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2" + }, + "ws": { + "version": "7.5.9", + "requires": {} + }, + "xtend": { + "version": "4.0.2", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "dev": true + }, + "yn": { + "version": "3.1.1", + "dev": true + } + } +} diff --git a/html5/colyseus/package.json b/html5/colyseus/package.json new file mode 100644 index 0000000..72d35f7 --- /dev/null +++ b/html5/colyseus/package.json @@ -0,0 +1,42 @@ +{ + "name": "colyseus-examples", + "version": "1.0.1", + "description": "Usage Examples of Colyseus Game Server with Arena Hosting", + "main": "lib/index.js", + "scripts": { + "start": "ts-node-dev --respawn --transpile-only src/index.ts", + "serve": "http-server static/", + "build": "npm run clean && tsc && node node_modules/copyfiles/copyfiles package.json ./lib && node node_modules/copyfiles/copyfiles arena.env ./lib && node node_modules/copyfiles/copyfiles -u 1 src/static/* ./lib", + "clean": "node node_modules/rimraf/bin lib", + "test": "echo \"Error: no test specified\" && exit 1", + "format": "prettier --write ." + }, + "engines": { + "node": ">=14.x" + }, + "author": "Rivet Gaming, Inc.", + "license": "MIT", + "devDependencies": { + "@types/cors": "^2.8.6", + "@types/express": "^4.17.14", + "copyfiles": "^2.4.1", + "http-server": "^14.1.1", + "prettier": "^2.8.7", + "rimraf": "^2.7.1", + "ts-node": "^8.1.0", + "ts-node-dev": "^1.0.0-pre.63", + "typescript": "^4.8.4", + "uwebsockets-express": "^1.1.14" + }, + "dependencies": { + "@colyseus/arena": "^0.14.24", + "@colyseus/monitor": "^0.14.22", + "@rivet-gg/plugin-colyseus-server": "^0.1.1", + "colyseus": "^0.14.23", + "cors": "^2.8.5", + "dotenv": "^16.0.3", + "express": "^4.16.4", + "serve-index": "^1.8.0", + "superagent": "^3.8.1" + } +} diff --git a/html5/colyseus/rivet.toml b/html5/colyseus/rivet.toml new file mode 100644 index 0000000..3c9f037 --- /dev/null +++ b/html5/colyseus/rivet.toml @@ -0,0 +1,62 @@ +# === Rivet Version Configuration === +# +# - More info: https://docs.rivet.gg/general/concepts/rivet-version-config +# - Reference: https://docs.rivet.gg/cloud/api/post-games-versions#body +# - Publish a new version with `rivet publish` +# + +# How the game lobbies run and how players connect to the game. +# +# https://docs.rivet.gg/matchmaker/introduction +[matchmaker] + # How many players can join a specific lobby. + # + # Read more about matchmaking: https://docs.rivet.gg/matchmaker/concepts/finding-lobby + max_players = 32 + + # The hardware to provide for lobbies. + # + # Available tiers: https://docs.rivet.gg/serverless-lobbies/concepts/available-tiers + tier = "basic-1d1" + +# Which regions the game should be available in. +# +# Available regions: https://docs.rivet.gg/serverless-lobbies/concepts/available-regions +[matchmaker.regions] + lnd-sfo = {} + lnd-fra = {} + +# Runtime configuration for the lobby's Docker container. +[matchmaker.docker] + # If you're unfamiliar with Docker, here's how to write your own + # Dockerfile: + # https://docker-curriculum.com/#dockerfile + dockerfile = "Dockerfile" + + # Which ports to allow players to connect to. Multiple ports can be defined + # with different protocols. + # + # How ports work: https://docs.rivet.gg/serverless-lobbies/concepts/ports + ports.default = { port = 2567, protocol = "https" } + +# What game modes are avaiable. +# +# Properties like `max_players`, `tier`, `dockerfile`, `regions`, and more can +# be overriden for specific game modes. +[matchmaker.game_modes] + default = {} + +# How Rivet CDN should host your static assets on our CDN. +# +# https://docs.rivet.gg/cdn/introduction +[cdn] + # The folder to upload to Rivet. + # + # If you're hosting a website, ensure that `index.html` is in the root of + # this folder. + build_output = "static/" + +[kv] + +[identity] + diff --git a/html5/colyseus/src/config.ts b/html5/colyseus/src/config.ts new file mode 100644 index 0000000..e2eaf3c --- /dev/null +++ b/html5/colyseus/src/config.ts @@ -0,0 +1,58 @@ +// Import demo room handlers +import { LobbyRoom, RelayRoom } from "colyseus"; +import { ChatRoom } from "./rooms/01-chat-room"; +import { StateHandlerRoom } from "./rooms/02-state-handler"; +import { AuthRoom } from "./rooms/03-auth"; +import { ReconnectionRoom } from "./rooms/04-reconnection"; +import { CustomLobbyRoom } from "./rooms/07-custom-lobby-room"; + +export default { + getId: () => "My Colyseus App", + + // initializeTransport: (options) => new uWebSocketsTransport(options), + + initializeGameServer: async (gameServer) => { + // Define "lobby" room + gameServer.define("lobby", LobbyRoom); + + // Define "relay" room + gameServer + .define("relay", RelayRoom, { maxClients: 4 }) + .enableRealtimeListing(); + + // Define "chat" room + gameServer.define("chat", ChatRoom).enableRealtimeListing(); + + // Register ChatRoom with initial options, as "chat_with_options" + // onInit(options) will receive client join options + options registered here. + gameServer.define("chat_with_options", ChatRoom, { + custom_options: "you can use me on Room#onCreate", + }); + + // Define "state_handler" room + gameServer + .define("state_handler", StateHandlerRoom) + .enableRealtimeListing(); + + // Define "auth" room + gameServer.define("auth", AuthRoom).enableRealtimeListing(); + + // Define "reconnection" room + gameServer + .define("reconnection", ReconnectionRoom) + .enableRealtimeListing(); + + // Define "custom_lobby" room + gameServer.define("custom_lobby", CustomLobbyRoom); + + gameServer.onShutdown(function () { + console.log(`game server is going down.`); + }); + }, + + beforeListen: async () => { + /** + * Before before gameServer.listen() is called. + */ + }, +}; diff --git a/html5/colyseus/src/index.ts b/html5/colyseus/src/index.ts new file mode 100644 index 0000000..fa07f27 --- /dev/null +++ b/html5/colyseus/src/index.ts @@ -0,0 +1,7 @@ +import dotenv from "dotenv"; +dotenv.config(); + +import { listen } from "@rivet-gg/plugin-colyseus-server"; +import config from "./config"; + +listen(config); diff --git a/html5/colyseus/src/rooms/01-chat-room.ts b/html5/colyseus/src/rooms/01-chat-room.ts new file mode 100644 index 0000000..4a620c5 --- /dev/null +++ b/html5/colyseus/src/rooms/01-chat-room.ts @@ -0,0 +1,32 @@ +import { Room } from "colyseus"; + +export class ChatRoom extends Room { + // this room supports only 4 clients connected + maxClients = 4; + + onCreate(options) { + console.log("ChatRoom created!", options); + + this.onMessage("message", (client, message) => { + console.log( + "ChatRoom received message from", + client.sessionId, + ":", + message + ); + this.broadcast("messages", `(${client.sessionId}) ${message}`); + }); + } + + onJoin(client) { + this.broadcast("messages", `${client.sessionId} joined.`); + } + + onLeave(client) { + this.broadcast("messages", `${client.sessionId} left.`); + } + + onDispose() { + console.log("Dispose ChatRoom"); + } +} diff --git a/html5/colyseus/src/rooms/02-state-handler.ts b/html5/colyseus/src/rooms/02-state-handler.ts new file mode 100644 index 0000000..5c61274 --- /dev/null +++ b/html5/colyseus/src/rooms/02-state-handler.ts @@ -0,0 +1,70 @@ +import { Room, Client } from "colyseus"; +import { Schema, type, MapSchema } from "@colyseus/schema"; + +export class Player extends Schema { + @type("number") + x = Math.floor(Math.random() * 400); + + @type("number") + y = Math.floor(Math.random() * 400); +} + +export class State extends Schema { + @type({ map: Player }) + players = new MapSchema(); + + something = "This attribute won't be sent to the client-side"; + + createPlayer(sessionId: string) { + this.players.set(sessionId, new Player()); + } + + removePlayer(sessionId: string) { + this.players.delete(sessionId); + } + + movePlayer(sessionId: string, movement: any) { + if (movement.x) { + this.players.get(sessionId).x += movement.x * 10; + } else if (movement.y) { + this.players.get(sessionId).y += movement.y * 10; + } + } +} + +export class StateHandlerRoom extends Room { + maxClients = 4; + + onCreate(options) { + console.log("StateHandlerRoom created!", options); + + this.setState(new State()); + + this.onMessage("move", (client, data) => { + console.log( + "StateHandlerRoom received message from", + client.sessionId, + ":", + data + ); + this.state.movePlayer(client.sessionId, data); + }); + } + + onAuth(client, options, req) { + return true; + } + + onJoin(client: Client) { + client.send("hello", "world"); + this.state.createPlayer(client.sessionId); + } + + onLeave(client) { + this.state.removePlayer(client.sessionId); + } + + onDispose() { + console.log("Dispose StateHandlerRoom"); + } +} diff --git a/html5/colyseus/src/rooms/03-auth.ts b/html5/colyseus/src/rooms/03-auth.ts new file mode 100644 index 0000000..484ef86 --- /dev/null +++ b/html5/colyseus/src/rooms/03-auth.ts @@ -0,0 +1,44 @@ +import { Room, Client } from "colyseus"; +import request from "superagent"; + +const FACEBOOK_APP_TOKEN = "135829507120512|3a97320bee18f2286d6243dcf4cc7a23"; + +export class AuthRoom extends Room { + onCreate(options: any) { + console.log("StateHandlerRoom created!", options); + + this.onMessage("*", (client, type, message) => { + console.log( + "AuthRoom received message from", + client.sessionId, + ":", + message + ); + }); + } + + async onAuth(client: Client, options: any) { + const response = await request + .get(`https://graph.facebook.com/debug_token`) + .query({ + input_token: options.accessToken, + access_token: FACEBOOK_APP_TOKEN, + }) + .set("Accept", "application/json"); + + return response.body.data; + } + + onJoin(client: Client, options: any, auth: any) { + console.log(client.sessionId, "joined successfully"); + console.log("Auth data: ", auth); + } + + onLeave(client: Client) { + console.log(client.sessionId, "left"); + } + + onDispose() { + console.log("Dispose AuthRoom"); + } +} diff --git a/html5/colyseus/src/rooms/04-reconnection.ts b/html5/colyseus/src/rooms/04-reconnection.ts new file mode 100644 index 0000000..477f252 --- /dev/null +++ b/html5/colyseus/src/rooms/04-reconnection.ts @@ -0,0 +1,32 @@ +import { Room, Client } from "colyseus"; + +export class ReconnectionRoom extends Room { + onCreate(options: any) {} + + onJoin(client: Client, options: any, auth: any) { + client.send("status", "Welcome!"); + } + + async onLeave(client: Client, consented?: boolean) { + console.log(client.sessionId, "left", { consented }); + + try { + if (consented) { + /* + * Optional: + * you may want to allow reconnection if the client manually closed the connection. + */ + throw new Error("left_manually"); + } + + await this.allowReconnection(client, 60); + console.log("Reconnected!"); + + client.send("status", "Welcome back!"); + } catch (e) { + console.log(e); + } + } + + onDispose() {} +} diff --git a/html5/colyseus/src/rooms/07-custom-lobby-room.ts b/html5/colyseus/src/rooms/07-custom-lobby-room.ts new file mode 100644 index 0000000..b280b51 --- /dev/null +++ b/html5/colyseus/src/rooms/07-custom-lobby-room.ts @@ -0,0 +1,23 @@ +import { Schema, type } from "@colyseus/schema"; +import { Client, LobbyRoom } from "colyseus"; + +class LobbyState extends Schema { + @type("string") custom: string; +} + +export class CustomLobbyRoom extends LobbyRoom { + async onCreate(options) { + await super.onCreate(options); + + this.setState(new LobbyState()); + } + + onJoin(client: Client, options) { + super.onJoin(client, options); + this.state.custom = client.sessionId; + } + + onLeave(client) { + super.onLeave(client); + } +} diff --git a/html5/colyseus/static/01-chat.html b/html5/colyseus/static/01-chat.html new file mode 100644 index 0000000..5a10dae --- /dev/null +++ b/html5/colyseus/static/01-chat.html @@ -0,0 +1,91 @@ + + + + + + + + + + + +

+ colyseus +

+ +

+ This room doesn't use the room's state. It just broadcast messages + through "broadcast" method. +

+ + Messages
+ +
+ + +
+ +
+ + + + diff --git a/html5/colyseus/static/02-state-handler.html b/html5/colyseus/static/02-state-handler.html new file mode 100644 index 0000000..7610b03 --- /dev/null +++ b/html5/colyseus/static/02-state-handler.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + +

+ colyseus +

+ +

+ This example shows how to use custom data structures in your room's + state. +

+ + commands
+ + + +
+ + + + + + diff --git a/html5/colyseus/static/04-reconnection.html b/html5/colyseus/static/04-reconnection.html new file mode 100644 index 0000000..1a43435 --- /dev/null +++ b/html5/colyseus/static/04-reconnection.html @@ -0,0 +1,105 @@ + + + + + + + + + + + +

+ colyseus +

+ +

This example shows how to use

+
    +
  • allowReconection() - server-side
  • +
  • reconnect() - client-side
  • +
+

...to reestablish a connection into a Room.

+ +

Open Developer Tools for log messages.

+ +

Commands

+ + + + + + + + diff --git a/html5/colyseus/static/05-lobby-room.html b/html5/colyseus/static/05-lobby-room.html new file mode 100644 index 0000000..32a655e --- /dev/null +++ b/html5/colyseus/static/05-lobby-room.html @@ -0,0 +1,140 @@ + + + + + + + + + + + +

+ colyseus +

+ +

This example shows how to use LobbyRoom:

+
    +
  • + When you join a lobby, you'll receive the current list of rooms +
  • +
  • + Then, you'll receive updates when rooms are created, updated, or + removed. +
  • +
  • + (All rooms on colyseus-examples have + .enableRealtimeListing(), try joining other demos + to see realtime updates here) +
  • +
  • + See documentation +
  • +
+ +

Open Developer Tools for log messages.

+ +

Commands

+ + + + +

All rooms:

+
    + + + + diff --git a/html5/colyseus/static/06-relay-room.html b/html5/colyseus/static/06-relay-room.html new file mode 100644 index 0000000..0ce4a05 --- /dev/null +++ b/html5/colyseus/static/06-relay-room.html @@ -0,0 +1,192 @@ + + + + + + + + + + + + + +

    + colyseus +

    + +

    This example shows how to use RelayRoom:

    +
      +
    • Messages are broadcasted to all other clients.
    • +
    • + It is client-authoritative instead of + server-authoritative. +
    • +
    • + See documentation +
    • +
    + + commands
    + + + + + +
    + + +
    + + + + + + diff --git a/html5/colyseus/static/07-custom-lobby-room.html b/html5/colyseus/static/07-custom-lobby-room.html new file mode 100644 index 0000000..19cc163 --- /dev/null +++ b/html5/colyseus/static/07-custom-lobby-room.html @@ -0,0 +1,136 @@ + + + + + + + + + + + +

    + colyseus +

    + +

    This example shows how to use a custom LobbyRoom:

    + + +

    Open Developer Tools for log messages.

    + +

    Commands

    + + + + +

    All rooms:

    +
      + + + + diff --git a/html5/colyseus/static/index.html b/html5/colyseus/static/index.html new file mode 100644 index 0000000..87a2081 --- /dev/null +++ b/html5/colyseus/static/index.html @@ -0,0 +1,23 @@ + + + + + + + + +

      Examples

      + + + diff --git a/html5/colyseus/tsconfig.json b/html5/colyseus/tsconfig.json new file mode 100644 index 0000000..ed36f42 --- /dev/null +++ b/html5/colyseus/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "outDir": "lib", + "module": "commonjs", + "lib": ["es6"], + "target": "es2016", + "declaration": true, + "noImplicitAny": false, + "experimentalDecorators": true, + "sourceMap": false, + "esModuleInterop": true, + "strict": true, + "allowJs": true, + "strictNullChecks": false, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true + }, + "include": ["src"] +} diff --git a/html5/tanks-socketio-canvas/README.md b/html5/tanks-socketio-canvas/README.md index 7335977..2b70097 100644 --- a/html5/tanks-socketio-canvas/README.md +++ b/html5/tanks-socketio-canvas/README.md @@ -15,14 +15,14 @@ - [🌐 Dynamic Servers](https://rivet.gg/docs/dynamic-servers) -## Developing Locally +## Running locally 1. [Clone the GitHub repo](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) 2. Open this folder 3. Run: `rivet init` 4. Run `yarn start` -## Deploying +## Deploying to Rivet [Documentation](https://rivet.gg/learn/html5/tutorials/crash-course#step-3-publish-your-game) diff --git a/html5/webrtc/LICENSE b/html5/webrtc/LICENSE new file mode 100644 index 0000000..cfa3809 --- /dev/null +++ b/html5/webrtc/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Rivet + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/html5/webrtc/README.md b/html5/webrtc/README.md index 6dd2580..6e4f76e 100644 --- a/html5/webrtc/README.md +++ b/html5/webrtc/README.md @@ -1,14 +1,26 @@ # WebRTC -Demonstrates low latency UDP workload using a direct `RTCDataChannel` between the client and the server. -Leverages the [`wrtc`](https://www.npmjs.com/package/wrtc) NodeJS library to run WebRTC on the server. -## Running -``` -$ npm install -g node-pre-gyp -$ npm install -$ npm start -``` + +| Language | Networking | +| --- | --- | +| [TypeScript](https://www.typescriptlang.org) | [WebRTC](https://webrtc.org) | + +**Rivet Features** + +- [🌐 Dynamic Servers](https://rivet.gg/docs/dynamic-servers) + + +## Running locally + +1. [Clone the GitHub repo](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) +2. Open this folder +3. Run: `rivet init` +4. Run `yarn start` + +## Deploying to Rivet + +[Documentation](https://rivet.gg/learn/html5/tutorials/crash-course#step-3-publish-your-game) diff --git a/html5/webrtc/example.toml b/html5/webrtc/example.toml index 32e6d20..5148979 100644 --- a/html5/webrtc/example.toml +++ b/html5/webrtc/example.toml @@ -1,5 +1,5 @@ [display] -title = "Tanks" +title = "WebRTC" description = """ Demonstrates low latency UDP workload using a direct `RTCDataChannel` between the client and the server. diff --git a/rust/example-rust-cli-websocket b/rust/example-rust-cli-websocket new file mode 160000 index 0000000..5e63253 --- /dev/null +++ b/rust/example-rust-cli-websocket @@ -0,0 +1 @@ +Subproject commit 5e63253f8c738125ab526ae2f50001e54ec70a8e diff --git a/unity/tanks-fishnet/README.md b/unity/tanks-fishnet/README.md index eb0f85b..fd3da2d 100644 --- a/unity/tanks-fishnet/README.md +++ b/unity/tanks-fishnet/README.md @@ -2,7 +2,7 @@ -[Visit Tutorial](https://rivet.gg/learn/html5/tutorials/tanks-canvas-socketio) +[Visit Tutorial](https://rivet.gg/learn/unity/tutorials/fishnet/crash-course) | Engine Version | Language | Networking | @@ -15,14 +15,14 @@ - [🌐 Dynamic Servers](https://rivet.gg/docs/dynamic-servers) -## Developing Locally +## Running locally 1. [Clone the GitHub repo](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) 2. Open this folder 3. Run: `rivet init` 4. Run `yarn start` -## Deploying +## Deploying to Rivet [Documentation](https://rivet.gg/learn/unity/tutorials/fishnet/crash-course#deploying-to-rivet)