@colyseus/tools 0.15.24 → 0.15.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/build/index.js +6 -4
- package/build/index.js.map +2 -2
- package/build/index.mjs +6 -4
- package/build/index.mjs.map +2 -2
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -52,8 +52,8 @@ npm start
|
|
|
52
52
|
|
|
53
53
|
The sustainability of the project relies on **Colyseus Cloud** subscriptions and sponsorships. If you are not using Colyseus Cloud, please consider [sponsoring the project](https://github.com/sponsors/endel) 💖
|
|
54
54
|
|
|
55
|
-
<a href="https://
|
|
56
|
-
<img src="https://
|
|
55
|
+
<a href="https://colyseus.io/sponsorkit/sponsors.svg">
|
|
56
|
+
<img src="https://github.com/colyseus/colyseus.github.io/blob/master/sponsorkit/sponsors.svg?raw=1" width="100%" />
|
|
57
57
|
</a>
|
|
58
58
|
|
|
59
59
|
# Contributors ✨
|
package/build/index.js
CHANGED
|
@@ -191,7 +191,7 @@ async function getTransport(options) {
|
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
193
|
if (app) {
|
|
194
|
-
app.use((0, import_cors.default)());
|
|
194
|
+
app.use((0, import_cors.default)({ origin: true, credentials: true }));
|
|
195
195
|
app.use(import_express.default.json());
|
|
196
196
|
if (options.initializeExpress) {
|
|
197
197
|
await options.initializeExpress(app);
|
|
@@ -204,9 +204,11 @@ async function getTransport(options) {
|
|
|
204
204
|
res.status(401).end();
|
|
205
205
|
return;
|
|
206
206
|
}
|
|
207
|
-
const
|
|
208
|
-
|
|
209
|
-
|
|
207
|
+
const roomCountPerProcess = await import_core.matchMaker.presence.hgetall("roomcount");
|
|
208
|
+
let rooms = 0;
|
|
209
|
+
for (const processId in roomCountPerProcess) {
|
|
210
|
+
rooms += Number(roomCountPerProcess[processId]);
|
|
211
|
+
}
|
|
210
212
|
const ccu = await import_core.matchMaker.stats.getGlobalCCU();
|
|
211
213
|
const mem = await import_node_os_utils.default.mem.used();
|
|
212
214
|
const cpu = await import_node_os_utils.default.cpu.usage() / 100;
|
package/build/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["import fs from \"fs\";\nimport os from \"os\";\nimport http from \"http\";\nimport path from \"path\";\nimport cors from \"cors\";\nimport express from \"express\";\nimport dotenv from \"dotenv\";\nimport osUtils from \"node-os-utils\";\nimport { logger, Server, ServerOptions, Transport, matchMaker } from '@colyseus/core';\nimport { WebSocketTransport } from '@colyseus/ws-transport';\n\n// try to import uWebSockets-express compatibility layer.\nlet uWebSocketsExpressCompatibility: any = undefined;\ntry { uWebSocketsExpressCompatibility = require('uwebsockets-express').default; } catch (e) {}\n\nlet BunWebSockets: any = undefined;\ntry { BunWebSockets = require('@colyseus/bun-websockets'); } catch (e) {}\n\nfunction getNodeEnv() {\n return process.env.NODE_ENV || \"development\";\n}\n\nfunction getRegion() {\n // EU, NA, AS, AF, AU, SA, UNKNOWN\n return (process.env.REGION || \"unknown\").toLowerCase();\n}\n\nfunction loadEnvFile(envFileOptions: string[], log: 'none' | 'success' | 'both' = 'none') {\n const envPaths = [];\n envFileOptions.forEach((envFilename) => {\n envPaths.push(path.resolve(path.dirname(require?.main?.filename || process.cwd()), \"..\", envFilename));\n envPaths.push(path.resolve(process.cwd(), envFilename));\n });\n\n // return the first .env path found\n const envPath = envPaths.find((envPath) => fs.existsSync(envPath));\n\n if (envPath) {\n dotenv.config({ path: envPath });\n\n if (log !== \"none\") {\n logger.info(`\u2705 ${path.basename(envPath)} loaded.`);\n }\n\n } else if (log === \"both\") {\n logger.info(`\u2139\uFE0F optional .env file not found: ${envFileOptions.join(\", \")}`);\n }\n}\n\n// load .env.cloud defined on admin panel\nif (process.env.COLYSEUS_CLOUD !== undefined) {\n loadEnvFile([`.env.cloud`]);\n}\n\n// (overrides previous env configs)\nloadEnvFile([`.env.${getNodeEnv()}`, `.env`], 'both');\n\nif (process.env.REGION !== undefined) {\n loadEnvFile([`.env.${getRegion()}.${getNodeEnv()}`], 'success');\n}\n\nexport interface ConfigOptions {\n options?: ServerOptions,\n displayLogs?: boolean,\n getId?: () => string,\n initializeTransport?: (options: any) => Transport,\n initializeExpress?: (app: express.Express) => void,\n initializeGameServer?: (app: Server) => void,\n beforeListen?: () => void,\n}\n\nconst ALLOWED_KEYS: { [key in keyof ConfigOptions]: string } = {\n 'displayLogs': \"boolean\",\n 'options': \"object\",\n 'getId': \"function\",\n 'initializeTransport': \"function\",\n 'initializeExpress': \"function\",\n 'initializeGameServer': \"function\",\n 'beforeListen': \"function\"\n};\n\nexport default function (options: ConfigOptions) {\n for (const option in options) {\n if (!ALLOWED_KEYS[option]) {\n throw new Error(`\u274C Invalid option '${option}'. Allowed options are: ${Object.keys(ALLOWED_KEYS).join(\", \")}`);\n }\n if(options[option] !== undefined && typeof(options[option]) !== ALLOWED_KEYS[option]) {\n throw new Error(`\u274C Invalid type for ${option}: please provide a ${ALLOWED_KEYS[option]} value.`);\n }\n }\n\n return options;\n}\n\n/**\n * Listen on your development environment\n * @param options Application options\n * @param port Port number to bind Colyseus + Express\n */\nexport async function listen(\n options: ConfigOptions,\n port: number = Number(process.env.PORT || 2567),\n) {\n const serverOptions = options.options || {};\n options.displayLogs = options.displayLogs ?? true;\n\n // Force 2567 port on Colyseus Cloud\n if (process.env.COLYSEUS_CLOUD !== undefined) {\n port = 2567;\n }\n\n //\n // Handling multiple processes\n // Use NODE_APP_INSTANCE to play nicely with pm2\n //\n const processNumber = Number(process.env.NODE_APP_INSTANCE || \"0\");\n port += processNumber;\n\n // automatically configure for production under Colyseus Cloud\n if (process.env.COLYSEUS_CLOUD !== undefined) {\n // special configuration is required when using multiple processes\n const useRedisConfig = (os.cpus().length > 1) || (process.env.REDIS_URI !== undefined);\n\n if (!serverOptions.driver && useRedisConfig) {\n let RedisDriver: any = undefined;\n try {\n RedisDriver = require('@colyseus/redis-driver').RedisDriver;\n serverOptions.driver = new RedisDriver(process.env.REDIS_URI);\n } catch (e) {\n logger.warn(\"\");\n logger.warn(\"\u274C coult not initialize RedisDriver.\");\n logger.warn(\"\uD83D\uDC49 npm install --save @colyseus/redis-driver\");\n logger.warn(\"\");\n }\n }\n\n if (!serverOptions.presence && useRedisConfig) {\n let RedisPresence: any = undefined;\n try {\n RedisPresence = require('@colyseus/redis-presence').RedisPresence;\n serverOptions.presence = new RedisPresence(process.env.REDIS_URI);\n } catch (e) {\n logger.warn(\"\");\n logger.warn(\"\u274C coult not initialize RedisPresence.\");\n logger.warn(\"\uD83D\uDC49 npm install --save @colyseus/redis-presence\");\n logger.warn(\"\");\n }\n }\n\n // force \"publicAddress\" when deployed on \"Colyseus Cloud\".\n serverOptions.publicAddress = process.env.SUBDOMAIN + \".\" + process.env.SERVER_NAME;\n\n // nginx is responsible for forwarding /{port}/ to this process\n if (useRedisConfig) {\n serverOptions.publicAddress += \"/\" + port;\n }\n }\n\n const transport = await getTransport(options);\n const gameServer = new Server({\n ...serverOptions,\n transport,\n });\n await options.initializeGameServer?.(gameServer);\n await options.beforeListen?.();\n\n\n if (process.env.COLYSEUS_CLOUD !== undefined) {\n // listening on socket\n // @ts-ignore\n await gameServer.listen(`/run/colyseus/${port}.sock`);\n\n } else {\n // listening on port\n await gameServer.listen(port);\n }\n\n // notify process manager (production)\n if (typeof(process.send) === \"function\") {\n process.send('ready');\n }\n\n if (options.displayLogs) {\n logger.info(`\u2694\uFE0F Listening on http://localhost:${port}`);\n }\n return gameServer;\n}\n\n\nexport async function getTransport(options: ConfigOptions) {\n let transport: Transport;\n\n if (!options.initializeTransport) {\n if (BunWebSockets !== undefined) {\n // @colyseus/bun-websockets\n options.initializeTransport = (options: any) => new BunWebSockets.BunWebSockets(options);\n\n } else {\n // use WebSocketTransport by default\n options.initializeTransport = (options: any) => new WebSocketTransport(options);\n }\n }\n\n let app: express.Express | undefined = express();\n let server = http.createServer(app);\n\n transport = await options.initializeTransport({ server });\n\n //\n // TODO: refactor me!\n // BunWebSockets: There's no need to instantiate \"app\" and \"server\" above\n //\n if (transport['expressApp']) {\n app = transport['expressApp'];\n }\n\n if (options.initializeExpress) {\n // uWebSockets.js + Express compatibility layer.\n // @ts-ignore\n if (transport['app']) {\n if (typeof (uWebSocketsExpressCompatibility) === \"function\") {\n if (options.displayLogs){\n logger.info(\"\u2705 uWebSockets.js + Express compatibility enabled\");\n }\n\n // @ts-ignore\n server = undefined;\n // @ts-ignore\n app = uWebSocketsExpressCompatibility(transport['app']);\n\n } else {\n if (options.displayLogs) {\n logger.warn(\"\");\n logger.warn(\"\u274C uWebSockets.js + Express compatibility mode couldn't be loaded, run the following command to fix:\");\n logger.warn(\"\uD83D\uDC49 npm install --save uwebsockets-express\");\n logger.warn(\"\");\n }\n app = undefined;\n }\n }\n }\n\n if (app) {\n // Enable CORS
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import fs from \"fs\";\nimport os from \"os\";\nimport http from \"http\";\nimport path from \"path\";\nimport cors from \"cors\";\nimport express from \"express\";\nimport dotenv from \"dotenv\";\nimport osUtils from \"node-os-utils\";\nimport { logger, Server, ServerOptions, Transport, matchMaker } from '@colyseus/core';\nimport { WebSocketTransport } from '@colyseus/ws-transport';\n\n// try to import uWebSockets-express compatibility layer.\nlet uWebSocketsExpressCompatibility: any = undefined;\ntry { uWebSocketsExpressCompatibility = require('uwebsockets-express').default; } catch (e) {}\n\nlet BunWebSockets: any = undefined;\ntry { BunWebSockets = require('@colyseus/bun-websockets'); } catch (e) {}\n\nfunction getNodeEnv() {\n return process.env.NODE_ENV || \"development\";\n}\n\nfunction getRegion() {\n // EU, NA, AS, AF, AU, SA, UNKNOWN\n return (process.env.REGION || \"unknown\").toLowerCase();\n}\n\nfunction loadEnvFile(envFileOptions: string[], log: 'none' | 'success' | 'both' = 'none') {\n const envPaths = [];\n envFileOptions.forEach((envFilename) => {\n envPaths.push(path.resolve(path.dirname(require?.main?.filename || process.cwd()), \"..\", envFilename));\n envPaths.push(path.resolve(process.cwd(), envFilename));\n });\n\n // return the first .env path found\n const envPath = envPaths.find((envPath) => fs.existsSync(envPath));\n\n if (envPath) {\n dotenv.config({ path: envPath });\n\n if (log !== \"none\") {\n logger.info(`\u2705 ${path.basename(envPath)} loaded.`);\n }\n\n } else if (log === \"both\") {\n logger.info(`\u2139\uFE0F optional .env file not found: ${envFileOptions.join(\", \")}`);\n }\n}\n\n// load .env.cloud defined on admin panel\nif (process.env.COLYSEUS_CLOUD !== undefined) {\n loadEnvFile([`.env.cloud`]);\n}\n\n// (overrides previous env configs)\nloadEnvFile([`.env.${getNodeEnv()}`, `.env`], 'both');\n\nif (process.env.REGION !== undefined) {\n loadEnvFile([`.env.${getRegion()}.${getNodeEnv()}`], 'success');\n}\n\nexport interface ConfigOptions {\n options?: ServerOptions,\n displayLogs?: boolean,\n getId?: () => string,\n initializeTransport?: (options: any) => Transport,\n initializeExpress?: (app: express.Express) => void,\n initializeGameServer?: (app: Server) => void,\n beforeListen?: () => void,\n}\n\nconst ALLOWED_KEYS: { [key in keyof ConfigOptions]: string } = {\n 'displayLogs': \"boolean\",\n 'options': \"object\",\n 'getId': \"function\",\n 'initializeTransport': \"function\",\n 'initializeExpress': \"function\",\n 'initializeGameServer': \"function\",\n 'beforeListen': \"function\"\n};\n\nexport default function (options: ConfigOptions) {\n for (const option in options) {\n if (!ALLOWED_KEYS[option]) {\n throw new Error(`\u274C Invalid option '${option}'. Allowed options are: ${Object.keys(ALLOWED_KEYS).join(\", \")}`);\n }\n if(options[option] !== undefined && typeof(options[option]) !== ALLOWED_KEYS[option]) {\n throw new Error(`\u274C Invalid type for ${option}: please provide a ${ALLOWED_KEYS[option]} value.`);\n }\n }\n\n return options;\n}\n\n/**\n * Listen on your development environment\n * @param options Application options\n * @param port Port number to bind Colyseus + Express\n */\nexport async function listen(\n options: ConfigOptions,\n port: number = Number(process.env.PORT || 2567),\n) {\n const serverOptions = options.options || {};\n options.displayLogs = options.displayLogs ?? true;\n\n // Force 2567 port on Colyseus Cloud\n if (process.env.COLYSEUS_CLOUD !== undefined) {\n port = 2567;\n }\n\n //\n // Handling multiple processes\n // Use NODE_APP_INSTANCE to play nicely with pm2\n //\n const processNumber = Number(process.env.NODE_APP_INSTANCE || \"0\");\n port += processNumber;\n\n // automatically configure for production under Colyseus Cloud\n if (process.env.COLYSEUS_CLOUD !== undefined) {\n // special configuration is required when using multiple processes\n const useRedisConfig = (os.cpus().length > 1) || (process.env.REDIS_URI !== undefined);\n\n if (!serverOptions.driver && useRedisConfig) {\n let RedisDriver: any = undefined;\n try {\n RedisDriver = require('@colyseus/redis-driver').RedisDriver;\n serverOptions.driver = new RedisDriver(process.env.REDIS_URI);\n } catch (e) {\n logger.warn(\"\");\n logger.warn(\"\u274C coult not initialize RedisDriver.\");\n logger.warn(\"\uD83D\uDC49 npm install --save @colyseus/redis-driver\");\n logger.warn(\"\");\n }\n }\n\n if (!serverOptions.presence && useRedisConfig) {\n let RedisPresence: any = undefined;\n try {\n RedisPresence = require('@colyseus/redis-presence').RedisPresence;\n serverOptions.presence = new RedisPresence(process.env.REDIS_URI);\n } catch (e) {\n logger.warn(\"\");\n logger.warn(\"\u274C coult not initialize RedisPresence.\");\n logger.warn(\"\uD83D\uDC49 npm install --save @colyseus/redis-presence\");\n logger.warn(\"\");\n }\n }\n\n // force \"publicAddress\" when deployed on \"Colyseus Cloud\".\n serverOptions.publicAddress = process.env.SUBDOMAIN + \".\" + process.env.SERVER_NAME;\n\n // nginx is responsible for forwarding /{port}/ to this process\n if (useRedisConfig) {\n serverOptions.publicAddress += \"/\" + port;\n }\n }\n\n const transport = await getTransport(options);\n const gameServer = new Server({\n ...serverOptions,\n transport,\n });\n await options.initializeGameServer?.(gameServer);\n await options.beforeListen?.();\n\n\n if (process.env.COLYSEUS_CLOUD !== undefined) {\n // listening on socket\n // @ts-ignore\n await gameServer.listen(`/run/colyseus/${port}.sock`);\n\n } else {\n // listening on port\n await gameServer.listen(port);\n }\n\n // notify process manager (production)\n if (typeof(process.send) === \"function\") {\n process.send('ready');\n }\n\n if (options.displayLogs) {\n logger.info(`\u2694\uFE0F Listening on http://localhost:${port}`);\n }\n return gameServer;\n}\n\n\nexport async function getTransport(options: ConfigOptions) {\n let transport: Transport;\n\n if (!options.initializeTransport) {\n if (BunWebSockets !== undefined) {\n // @colyseus/bun-websockets\n options.initializeTransport = (options: any) => new BunWebSockets.BunWebSockets(options);\n\n } else {\n // use WebSocketTransport by default\n options.initializeTransport = (options: any) => new WebSocketTransport(options);\n }\n }\n\n let app: express.Express | undefined = express();\n let server = http.createServer(app);\n\n transport = await options.initializeTransport({ server });\n\n //\n // TODO: refactor me!\n // BunWebSockets: There's no need to instantiate \"app\" and \"server\" above\n //\n if (transport['expressApp']) {\n app = transport['expressApp'];\n }\n\n if (options.initializeExpress) {\n // uWebSockets.js + Express compatibility layer.\n // @ts-ignore\n if (transport['app']) {\n if (typeof (uWebSocketsExpressCompatibility) === \"function\") {\n if (options.displayLogs){\n logger.info(\"\u2705 uWebSockets.js + Express compatibility enabled\");\n }\n\n // @ts-ignore\n server = undefined;\n // @ts-ignore\n app = uWebSocketsExpressCompatibility(transport['app']);\n\n } else {\n if (options.displayLogs) {\n logger.warn(\"\");\n logger.warn(\"\u274C uWebSockets.js + Express compatibility mode couldn't be loaded, run the following command to fix:\");\n logger.warn(\"\uD83D\uDC49 npm install --save uwebsockets-express\");\n logger.warn(\"\");\n }\n app = undefined;\n }\n }\n }\n\n if (app) {\n // Enable CORS\n app.use(cors({ origin: true, credentials: true, }));\n\n // Enable JSON parsing.\n app.use(express.json());\n\n if (options.initializeExpress) {\n await options.initializeExpress(app);\n }\n\n // health check for load balancers\n app.get(\"/__healthcheck\", (req, res) => {\n res.status(200).end();\n });\n\n app.get(\"/__cloudstats\", async (req, res) => {\n if (\n process.env.CLOUD_SECRET &&\n req.headers.authorization !== process.env.CLOUD_SECRET\n ) {\n res.status(401).end();\n return;\n }\n\n const roomCountPerProcess = await matchMaker.presence.hgetall(\"roomcount\");\n let rooms = 0;\n for (const processId in roomCountPerProcess) {\n rooms += Number(roomCountPerProcess[processId]);\n }\n\n const ccu = await matchMaker.stats.getGlobalCCU();\n const mem = await osUtils.mem.used();\n const cpu = (await osUtils.cpu.usage()) / 100;\n\n res.json({\n version: 1,\n mem: (mem.usedMemMb / mem.totalMemMb),\n cpu,\n ccu,\n rooms,\n });\n });\n\n if (options.displayLogs) {\n logger.info(\"\u2705 Express initialized\");\n }\n }\n\n return transport;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["path", "envPath", "fs", "dotenv", "os", "options", "express", "http", "cors", "osUtils"]
|
|
7
7
|
}
|
package/build/index.mjs
CHANGED
|
@@ -161,7 +161,7 @@ async function getTransport(options) {
|
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
if (app) {
|
|
164
|
-
app.use(cors());
|
|
164
|
+
app.use(cors({ origin: true, credentials: true }));
|
|
165
165
|
app.use(express.json());
|
|
166
166
|
if (options.initializeExpress) {
|
|
167
167
|
await options.initializeExpress(app);
|
|
@@ -174,9 +174,11 @@ async function getTransport(options) {
|
|
|
174
174
|
res.status(401).end();
|
|
175
175
|
return;
|
|
176
176
|
}
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
177
|
+
const roomCountPerProcess = await matchMaker.presence.hgetall("roomcount");
|
|
178
|
+
let rooms = 0;
|
|
179
|
+
for (const processId in roomCountPerProcess) {
|
|
180
|
+
rooms += Number(roomCountPerProcess[processId]);
|
|
181
|
+
}
|
|
180
182
|
const ccu = await matchMaker.stats.getGlobalCCU();
|
|
181
183
|
const mem = await osUtils.mem.used();
|
|
182
184
|
const cpu = await osUtils.cpu.usage() / 100;
|
package/build/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["import fs from \"fs\";\nimport os from \"os\";\nimport http from \"http\";\nimport path from \"path\";\nimport cors from \"cors\";\nimport express from \"express\";\nimport dotenv from \"dotenv\";\nimport osUtils from \"node-os-utils\";\nimport { logger, Server, ServerOptions, Transport, matchMaker } from '@colyseus/core';\nimport { WebSocketTransport } from '@colyseus/ws-transport';\n\n// try to import uWebSockets-express compatibility layer.\nlet uWebSocketsExpressCompatibility: any = undefined;\ntry { uWebSocketsExpressCompatibility = require('uwebsockets-express').default; } catch (e) {}\n\nlet BunWebSockets: any = undefined;\ntry { BunWebSockets = require('@colyseus/bun-websockets'); } catch (e) {}\n\nfunction getNodeEnv() {\n return process.env.NODE_ENV || \"development\";\n}\n\nfunction getRegion() {\n // EU, NA, AS, AF, AU, SA, UNKNOWN\n return (process.env.REGION || \"unknown\").toLowerCase();\n}\n\nfunction loadEnvFile(envFileOptions: string[], log: 'none' | 'success' | 'both' = 'none') {\n const envPaths = [];\n envFileOptions.forEach((envFilename) => {\n envPaths.push(path.resolve(path.dirname(require?.main?.filename || process.cwd()), \"..\", envFilename));\n envPaths.push(path.resolve(process.cwd(), envFilename));\n });\n\n // return the first .env path found\n const envPath = envPaths.find((envPath) => fs.existsSync(envPath));\n\n if (envPath) {\n dotenv.config({ path: envPath });\n\n if (log !== \"none\") {\n logger.info(`\u2705 ${path.basename(envPath)} loaded.`);\n }\n\n } else if (log === \"both\") {\n logger.info(`\u2139\uFE0F optional .env file not found: ${envFileOptions.join(\", \")}`);\n }\n}\n\n// load .env.cloud defined on admin panel\nif (process.env.COLYSEUS_CLOUD !== undefined) {\n loadEnvFile([`.env.cloud`]);\n}\n\n// (overrides previous env configs)\nloadEnvFile([`.env.${getNodeEnv()}`, `.env`], 'both');\n\nif (process.env.REGION !== undefined) {\n loadEnvFile([`.env.${getRegion()}.${getNodeEnv()}`], 'success');\n}\n\nexport interface ConfigOptions {\n options?: ServerOptions,\n displayLogs?: boolean,\n getId?: () => string,\n initializeTransport?: (options: any) => Transport,\n initializeExpress?: (app: express.Express) => void,\n initializeGameServer?: (app: Server) => void,\n beforeListen?: () => void,\n}\n\nconst ALLOWED_KEYS: { [key in keyof ConfigOptions]: string } = {\n 'displayLogs': \"boolean\",\n 'options': \"object\",\n 'getId': \"function\",\n 'initializeTransport': \"function\",\n 'initializeExpress': \"function\",\n 'initializeGameServer': \"function\",\n 'beforeListen': \"function\"\n};\n\nexport default function (options: ConfigOptions) {\n for (const option in options) {\n if (!ALLOWED_KEYS[option]) {\n throw new Error(`\u274C Invalid option '${option}'. Allowed options are: ${Object.keys(ALLOWED_KEYS).join(\", \")}`);\n }\n if(options[option] !== undefined && typeof(options[option]) !== ALLOWED_KEYS[option]) {\n throw new Error(`\u274C Invalid type for ${option}: please provide a ${ALLOWED_KEYS[option]} value.`);\n }\n }\n\n return options;\n}\n\n/**\n * Listen on your development environment\n * @param options Application options\n * @param port Port number to bind Colyseus + Express\n */\nexport async function listen(\n options: ConfigOptions,\n port: number = Number(process.env.PORT || 2567),\n) {\n const serverOptions = options.options || {};\n options.displayLogs = options.displayLogs ?? true;\n\n // Force 2567 port on Colyseus Cloud\n if (process.env.COLYSEUS_CLOUD !== undefined) {\n port = 2567;\n }\n\n //\n // Handling multiple processes\n // Use NODE_APP_INSTANCE to play nicely with pm2\n //\n const processNumber = Number(process.env.NODE_APP_INSTANCE || \"0\");\n port += processNumber;\n\n // automatically configure for production under Colyseus Cloud\n if (process.env.COLYSEUS_CLOUD !== undefined) {\n // special configuration is required when using multiple processes\n const useRedisConfig = (os.cpus().length > 1) || (process.env.REDIS_URI !== undefined);\n\n if (!serverOptions.driver && useRedisConfig) {\n let RedisDriver: any = undefined;\n try {\n RedisDriver = require('@colyseus/redis-driver').RedisDriver;\n serverOptions.driver = new RedisDriver(process.env.REDIS_URI);\n } catch (e) {\n logger.warn(\"\");\n logger.warn(\"\u274C coult not initialize RedisDriver.\");\n logger.warn(\"\uD83D\uDC49 npm install --save @colyseus/redis-driver\");\n logger.warn(\"\");\n }\n }\n\n if (!serverOptions.presence && useRedisConfig) {\n let RedisPresence: any = undefined;\n try {\n RedisPresence = require('@colyseus/redis-presence').RedisPresence;\n serverOptions.presence = new RedisPresence(process.env.REDIS_URI);\n } catch (e) {\n logger.warn(\"\");\n logger.warn(\"\u274C coult not initialize RedisPresence.\");\n logger.warn(\"\uD83D\uDC49 npm install --save @colyseus/redis-presence\");\n logger.warn(\"\");\n }\n }\n\n // force \"publicAddress\" when deployed on \"Colyseus Cloud\".\n serverOptions.publicAddress = process.env.SUBDOMAIN + \".\" + process.env.SERVER_NAME;\n\n // nginx is responsible for forwarding /{port}/ to this process\n if (useRedisConfig) {\n serverOptions.publicAddress += \"/\" + port;\n }\n }\n\n const transport = await getTransport(options);\n const gameServer = new Server({\n ...serverOptions,\n transport,\n });\n await options.initializeGameServer?.(gameServer);\n await options.beforeListen?.();\n\n\n if (process.env.COLYSEUS_CLOUD !== undefined) {\n // listening on socket\n // @ts-ignore\n await gameServer.listen(`/run/colyseus/${port}.sock`);\n\n } else {\n // listening on port\n await gameServer.listen(port);\n }\n\n // notify process manager (production)\n if (typeof(process.send) === \"function\") {\n process.send('ready');\n }\n\n if (options.displayLogs) {\n logger.info(`\u2694\uFE0F Listening on http://localhost:${port}`);\n }\n return gameServer;\n}\n\n\nexport async function getTransport(options: ConfigOptions) {\n let transport: Transport;\n\n if (!options.initializeTransport) {\n if (BunWebSockets !== undefined) {\n // @colyseus/bun-websockets\n options.initializeTransport = (options: any) => new BunWebSockets.BunWebSockets(options);\n\n } else {\n // use WebSocketTransport by default\n options.initializeTransport = (options: any) => new WebSocketTransport(options);\n }\n }\n\n let app: express.Express | undefined = express();\n let server = http.createServer(app);\n\n transport = await options.initializeTransport({ server });\n\n //\n // TODO: refactor me!\n // BunWebSockets: There's no need to instantiate \"app\" and \"server\" above\n //\n if (transport['expressApp']) {\n app = transport['expressApp'];\n }\n\n if (options.initializeExpress) {\n // uWebSockets.js + Express compatibility layer.\n // @ts-ignore\n if (transport['app']) {\n if (typeof (uWebSocketsExpressCompatibility) === \"function\") {\n if (options.displayLogs){\n logger.info(\"\u2705 uWebSockets.js + Express compatibility enabled\");\n }\n\n // @ts-ignore\n server = undefined;\n // @ts-ignore\n app = uWebSocketsExpressCompatibility(transport['app']);\n\n } else {\n if (options.displayLogs) {\n logger.warn(\"\");\n logger.warn(\"\u274C uWebSockets.js + Express compatibility mode couldn't be loaded, run the following command to fix:\");\n logger.warn(\"\uD83D\uDC49 npm install --save uwebsockets-express\");\n logger.warn(\"\");\n }\n app = undefined;\n }\n }\n }\n\n if (app) {\n // Enable CORS
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import fs from \"fs\";\nimport os from \"os\";\nimport http from \"http\";\nimport path from \"path\";\nimport cors from \"cors\";\nimport express from \"express\";\nimport dotenv from \"dotenv\";\nimport osUtils from \"node-os-utils\";\nimport { logger, Server, ServerOptions, Transport, matchMaker } from '@colyseus/core';\nimport { WebSocketTransport } from '@colyseus/ws-transport';\n\n// try to import uWebSockets-express compatibility layer.\nlet uWebSocketsExpressCompatibility: any = undefined;\ntry { uWebSocketsExpressCompatibility = require('uwebsockets-express').default; } catch (e) {}\n\nlet BunWebSockets: any = undefined;\ntry { BunWebSockets = require('@colyseus/bun-websockets'); } catch (e) {}\n\nfunction getNodeEnv() {\n return process.env.NODE_ENV || \"development\";\n}\n\nfunction getRegion() {\n // EU, NA, AS, AF, AU, SA, UNKNOWN\n return (process.env.REGION || \"unknown\").toLowerCase();\n}\n\nfunction loadEnvFile(envFileOptions: string[], log: 'none' | 'success' | 'both' = 'none') {\n const envPaths = [];\n envFileOptions.forEach((envFilename) => {\n envPaths.push(path.resolve(path.dirname(require?.main?.filename || process.cwd()), \"..\", envFilename));\n envPaths.push(path.resolve(process.cwd(), envFilename));\n });\n\n // return the first .env path found\n const envPath = envPaths.find((envPath) => fs.existsSync(envPath));\n\n if (envPath) {\n dotenv.config({ path: envPath });\n\n if (log !== \"none\") {\n logger.info(`\u2705 ${path.basename(envPath)} loaded.`);\n }\n\n } else if (log === \"both\") {\n logger.info(`\u2139\uFE0F optional .env file not found: ${envFileOptions.join(\", \")}`);\n }\n}\n\n// load .env.cloud defined on admin panel\nif (process.env.COLYSEUS_CLOUD !== undefined) {\n loadEnvFile([`.env.cloud`]);\n}\n\n// (overrides previous env configs)\nloadEnvFile([`.env.${getNodeEnv()}`, `.env`], 'both');\n\nif (process.env.REGION !== undefined) {\n loadEnvFile([`.env.${getRegion()}.${getNodeEnv()}`], 'success');\n}\n\nexport interface ConfigOptions {\n options?: ServerOptions,\n displayLogs?: boolean,\n getId?: () => string,\n initializeTransport?: (options: any) => Transport,\n initializeExpress?: (app: express.Express) => void,\n initializeGameServer?: (app: Server) => void,\n beforeListen?: () => void,\n}\n\nconst ALLOWED_KEYS: { [key in keyof ConfigOptions]: string } = {\n 'displayLogs': \"boolean\",\n 'options': \"object\",\n 'getId': \"function\",\n 'initializeTransport': \"function\",\n 'initializeExpress': \"function\",\n 'initializeGameServer': \"function\",\n 'beforeListen': \"function\"\n};\n\nexport default function (options: ConfigOptions) {\n for (const option in options) {\n if (!ALLOWED_KEYS[option]) {\n throw new Error(`\u274C Invalid option '${option}'. Allowed options are: ${Object.keys(ALLOWED_KEYS).join(\", \")}`);\n }\n if(options[option] !== undefined && typeof(options[option]) !== ALLOWED_KEYS[option]) {\n throw new Error(`\u274C Invalid type for ${option}: please provide a ${ALLOWED_KEYS[option]} value.`);\n }\n }\n\n return options;\n}\n\n/**\n * Listen on your development environment\n * @param options Application options\n * @param port Port number to bind Colyseus + Express\n */\nexport async function listen(\n options: ConfigOptions,\n port: number = Number(process.env.PORT || 2567),\n) {\n const serverOptions = options.options || {};\n options.displayLogs = options.displayLogs ?? true;\n\n // Force 2567 port on Colyseus Cloud\n if (process.env.COLYSEUS_CLOUD !== undefined) {\n port = 2567;\n }\n\n //\n // Handling multiple processes\n // Use NODE_APP_INSTANCE to play nicely with pm2\n //\n const processNumber = Number(process.env.NODE_APP_INSTANCE || \"0\");\n port += processNumber;\n\n // automatically configure for production under Colyseus Cloud\n if (process.env.COLYSEUS_CLOUD !== undefined) {\n // special configuration is required when using multiple processes\n const useRedisConfig = (os.cpus().length > 1) || (process.env.REDIS_URI !== undefined);\n\n if (!serverOptions.driver && useRedisConfig) {\n let RedisDriver: any = undefined;\n try {\n RedisDriver = require('@colyseus/redis-driver').RedisDriver;\n serverOptions.driver = new RedisDriver(process.env.REDIS_URI);\n } catch (e) {\n logger.warn(\"\");\n logger.warn(\"\u274C coult not initialize RedisDriver.\");\n logger.warn(\"\uD83D\uDC49 npm install --save @colyseus/redis-driver\");\n logger.warn(\"\");\n }\n }\n\n if (!serverOptions.presence && useRedisConfig) {\n let RedisPresence: any = undefined;\n try {\n RedisPresence = require('@colyseus/redis-presence').RedisPresence;\n serverOptions.presence = new RedisPresence(process.env.REDIS_URI);\n } catch (e) {\n logger.warn(\"\");\n logger.warn(\"\u274C coult not initialize RedisPresence.\");\n logger.warn(\"\uD83D\uDC49 npm install --save @colyseus/redis-presence\");\n logger.warn(\"\");\n }\n }\n\n // force \"publicAddress\" when deployed on \"Colyseus Cloud\".\n serverOptions.publicAddress = process.env.SUBDOMAIN + \".\" + process.env.SERVER_NAME;\n\n // nginx is responsible for forwarding /{port}/ to this process\n if (useRedisConfig) {\n serverOptions.publicAddress += \"/\" + port;\n }\n }\n\n const transport = await getTransport(options);\n const gameServer = new Server({\n ...serverOptions,\n transport,\n });\n await options.initializeGameServer?.(gameServer);\n await options.beforeListen?.();\n\n\n if (process.env.COLYSEUS_CLOUD !== undefined) {\n // listening on socket\n // @ts-ignore\n await gameServer.listen(`/run/colyseus/${port}.sock`);\n\n } else {\n // listening on port\n await gameServer.listen(port);\n }\n\n // notify process manager (production)\n if (typeof(process.send) === \"function\") {\n process.send('ready');\n }\n\n if (options.displayLogs) {\n logger.info(`\u2694\uFE0F Listening on http://localhost:${port}`);\n }\n return gameServer;\n}\n\n\nexport async function getTransport(options: ConfigOptions) {\n let transport: Transport;\n\n if (!options.initializeTransport) {\n if (BunWebSockets !== undefined) {\n // @colyseus/bun-websockets\n options.initializeTransport = (options: any) => new BunWebSockets.BunWebSockets(options);\n\n } else {\n // use WebSocketTransport by default\n options.initializeTransport = (options: any) => new WebSocketTransport(options);\n }\n }\n\n let app: express.Express | undefined = express();\n let server = http.createServer(app);\n\n transport = await options.initializeTransport({ server });\n\n //\n // TODO: refactor me!\n // BunWebSockets: There's no need to instantiate \"app\" and \"server\" above\n //\n if (transport['expressApp']) {\n app = transport['expressApp'];\n }\n\n if (options.initializeExpress) {\n // uWebSockets.js + Express compatibility layer.\n // @ts-ignore\n if (transport['app']) {\n if (typeof (uWebSocketsExpressCompatibility) === \"function\") {\n if (options.displayLogs){\n logger.info(\"\u2705 uWebSockets.js + Express compatibility enabled\");\n }\n\n // @ts-ignore\n server = undefined;\n // @ts-ignore\n app = uWebSocketsExpressCompatibility(transport['app']);\n\n } else {\n if (options.displayLogs) {\n logger.warn(\"\");\n logger.warn(\"\u274C uWebSockets.js + Express compatibility mode couldn't be loaded, run the following command to fix:\");\n logger.warn(\"\uD83D\uDC49 npm install --save uwebsockets-express\");\n logger.warn(\"\");\n }\n app = undefined;\n }\n }\n }\n\n if (app) {\n // Enable CORS\n app.use(cors({ origin: true, credentials: true, }));\n\n // Enable JSON parsing.\n app.use(express.json());\n\n if (options.initializeExpress) {\n await options.initializeExpress(app);\n }\n\n // health check for load balancers\n app.get(\"/__healthcheck\", (req, res) => {\n res.status(200).end();\n });\n\n app.get(\"/__cloudstats\", async (req, res) => {\n if (\n process.env.CLOUD_SECRET &&\n req.headers.authorization !== process.env.CLOUD_SECRET\n ) {\n res.status(401).end();\n return;\n }\n\n const roomCountPerProcess = await matchMaker.presence.hgetall(\"roomcount\");\n let rooms = 0;\n for (const processId in roomCountPerProcess) {\n rooms += Number(roomCountPerProcess[processId]);\n }\n\n const ccu = await matchMaker.stats.getGlobalCCU();\n const mem = await osUtils.mem.used();\n const cpu = (await osUtils.cpu.usage()) / 100;\n\n res.json({\n version: 1,\n mem: (mem.usedMemMb / mem.totalMemMb),\n cpu,\n ccu,\n rooms,\n });\n });\n\n if (options.displayLogs) {\n logger.info(\"\u2705 Express initialized\");\n }\n }\n\n return transport;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["envPath", "options"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@colyseus/tools",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.26",
|
|
4
4
|
"description": "Colyseus Tools for Production",
|
|
5
5
|
"input": "./src/index.ts",
|
|
6
6
|
"main": "./build/index.js",
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
"uwebsockets-express": "^1.1.10"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@colyseus/core": "^0.15.
|
|
44
|
-
"@colyseus/ws-transport": "
|
|
43
|
+
"@colyseus/core": "^0.15.16",
|
|
44
|
+
"@colyseus/ws-transport": "0.15.1",
|
|
45
45
|
"cors": "^2.8.5",
|
|
46
46
|
"dotenv": "^8.2.0",
|
|
47
47
|
"express": "^4.16.2",
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"publishConfig": {
|
|
51
51
|
"access": "public"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "2d4b615f5063d337019b89aead5bf098d0b3b4c2"
|
|
54
54
|
}
|