zyket 1.0.12 → 1.0.13
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/bin/cli.js +0 -0
- package/package.json +3 -1
- package/src/kernel/HTTPServer.js +32 -0
- package/src/kernel/index.js +10 -3
- package/src/services/express/Express.js +33 -0
- package/src/services/express/Middleware.js +2 -0
- package/src/services/express/Route.js +2 -0
- package/src/services/express/index.js +3 -0
- package/src/services/index.js +3 -1
- package/src/services/socketio/SocketIO.js +4 -6
package/bin/cli.js
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zyket",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.13",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
"description": "",
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"colors": "^1.4.0",
|
|
17
|
+
"cors": "^2.8.5",
|
|
17
18
|
"dotenv": "^16.4.7",
|
|
19
|
+
"express": "^5.1.0",
|
|
18
20
|
"fast-glob": "^3.3.3",
|
|
19
21
|
"mariadb": "^3.4.0",
|
|
20
22
|
"minio": "^8.0.5",
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const http = require('http')
|
|
2
|
+
|
|
3
|
+
module.exports = class HTTPServer {
|
|
4
|
+
#server
|
|
5
|
+
#port
|
|
6
|
+
|
|
7
|
+
constructor ({ port }) {
|
|
8
|
+
if (!port || typeof port !== 'number' || port < 1) {
|
|
9
|
+
throw new Error('port must be a positive number')
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
this.#port = port
|
|
13
|
+
this.#server = http.createServer()
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
start () {
|
|
17
|
+
if (this.isStarted) {
|
|
18
|
+
throw new Error('Server is already started. Review your code')
|
|
19
|
+
}
|
|
20
|
+
console.log(`HTTP Server listening on port ${this.#port}`)
|
|
21
|
+
|
|
22
|
+
this.#server.listen(this.#port, () => {})
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
get server () {
|
|
26
|
+
return this.#server
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
get isStarted () {
|
|
30
|
+
return this.#server?.listening === true
|
|
31
|
+
}
|
|
32
|
+
}
|
package/src/kernel/index.js
CHANGED
|
@@ -2,15 +2,16 @@ const {ContainerBuilder} = require("node-dependency-injection");
|
|
|
2
2
|
const EnvManager = require("../utils/EnvManager");
|
|
3
3
|
const fs = require("fs");
|
|
4
4
|
const path = require("path");
|
|
5
|
+
const HTTPServer = require("./HTTPServer");
|
|
5
6
|
|
|
6
7
|
module.exports = class Kernel {
|
|
7
8
|
container;
|
|
8
9
|
#services;
|
|
9
10
|
#onSocketConnection;
|
|
11
|
+
#httpServer;
|
|
10
12
|
|
|
11
13
|
constructor({
|
|
12
|
-
services = []
|
|
13
|
-
onConnection = () => { },
|
|
14
|
+
services = []
|
|
14
15
|
} = { }) {
|
|
15
16
|
this.container = new ContainerBuilder();
|
|
16
17
|
this.#services = services;
|
|
@@ -24,14 +25,20 @@ module.exports = class Kernel {
|
|
|
24
25
|
async boot(clearConsole = true, secretsPath = `${process.cwd()}/.env`) {
|
|
25
26
|
EnvManager.load(secretsPath, false);
|
|
26
27
|
if(clearConsole) process.stdout.write("\u001b[2J\u001b[0;0H");
|
|
28
|
+
this.#httpServer = new HTTPServer({ port: Number(process.env.PORT) || 3000 });
|
|
29
|
+
await this.#httpServer.start();
|
|
30
|
+
|
|
27
31
|
const services = require("../services");
|
|
28
32
|
|
|
29
33
|
await this.#registerServices(services);
|
|
30
34
|
await this.#registerServices(this.#services);
|
|
31
35
|
|
|
36
|
+
|
|
32
37
|
for (const [name] of [...services, ...this.#services]) {
|
|
33
38
|
this.container.get('logger').debug(`Booting service ${name}`);
|
|
34
|
-
await this.container.get(name).boot(
|
|
39
|
+
await this.container.get(name).boot({
|
|
40
|
+
httpServer: this.#httpServer.server,
|
|
41
|
+
});
|
|
35
42
|
}
|
|
36
43
|
}
|
|
37
44
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
const Service = require("../Service");
|
|
2
|
+
const express = require("express");
|
|
3
|
+
const cors = require("cors");
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
module.exports = class Express extends Service {
|
|
7
|
+
#container;
|
|
8
|
+
#app;
|
|
9
|
+
#httpServer;
|
|
10
|
+
|
|
11
|
+
constructor(container) {
|
|
12
|
+
super("express");
|
|
13
|
+
this.#container = container;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
async boot({ httpServer } = {}) {
|
|
17
|
+
if (!httpServer) {
|
|
18
|
+
throw new Error("HTTP server is not available");
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
this.#httpServer = httpServer;
|
|
22
|
+
this.#app = express();
|
|
23
|
+
|
|
24
|
+
this.#app.use(express.json({ limit: `100mb` }))
|
|
25
|
+
this.#app.use(cors({
|
|
26
|
+
origin: '*'
|
|
27
|
+
}))
|
|
28
|
+
|
|
29
|
+
this.#httpServer.on("request", this.#app);
|
|
30
|
+
|
|
31
|
+
this.#container.get('logger').info(`Express is running on http://localhost:${httpServer.address().port}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
package/src/services/index.js
CHANGED
|
@@ -2,6 +2,7 @@ const Database = require("./database");
|
|
|
2
2
|
const Cache = require("./cache");
|
|
3
3
|
const S3 = require("./s3");
|
|
4
4
|
const { SocketIO } = require("./socketio");
|
|
5
|
+
const { Express } = require("./express");
|
|
5
6
|
|
|
6
7
|
module.exports = [
|
|
7
8
|
["logger", require("./logger"), ["@service_container", process.env.LOG_DIRECTORY || `${process.cwd()}/logs`, process.env.DEBUG === "true"]],
|
|
@@ -9,5 +10,6 @@ module.exports = [
|
|
|
9
10
|
process.env.DATABASE_URL ? ["database", Database, ["@service_container", process.env.DATABASE_URL]] : null,
|
|
10
11
|
process.env.CACHE_URL ? ["cache", Cache, ["@service_container", process.env.CACHE_URL]] : null,
|
|
11
12
|
(process.env.S3_ENDPOINT && process.env.S3_ACCESS_KEY && process.env.S3_SECRET_KEY) ? ["s3", S3, ["@service_container", process.env.S3_ENDPOINT, process.env.S3_PORT, process.env.S3_USE_SSL === "true", process.env.S3_ACCESS_KEY, process.env.S3_SECRET_KEY]] : null,
|
|
12
|
-
["socketio", SocketIO, ["@service_container"
|
|
13
|
+
["socketio", SocketIO, ["@service_container"]],
|
|
14
|
+
["express", Express, ["@service_container"]]
|
|
13
15
|
].filter(Boolean);
|
|
@@ -8,18 +8,16 @@ const Middleware = require("./Middleware");
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
module.exports = class SocketIO extends Service {
|
|
11
|
-
port;
|
|
12
11
|
#container;
|
|
13
12
|
io;
|
|
14
13
|
middlewares = {};
|
|
15
14
|
|
|
16
|
-
constructor(container
|
|
15
|
+
constructor(container) {
|
|
17
16
|
super("socketio");
|
|
18
|
-
this.port = port || 3000;
|
|
19
17
|
this.#container = container;
|
|
20
18
|
}
|
|
21
19
|
|
|
22
|
-
async boot() {
|
|
20
|
+
async boot({ httpServer } = {}) {
|
|
23
21
|
const middlewares = await this.#loadMiddlewaresFromFolder(path.join(process.cwd(), "src", "middlewares"));
|
|
24
22
|
for (const middleware of middlewares) {
|
|
25
23
|
this.middlewares[middleware.name] = middleware;
|
|
@@ -59,8 +57,8 @@ module.exports = class SocketIO extends Service {
|
|
|
59
57
|
});
|
|
60
58
|
});
|
|
61
59
|
|
|
62
|
-
this.io.listen(
|
|
63
|
-
this.#container.get('logger').info(`Socket.IO is running on
|
|
60
|
+
this.io.listen(httpServer);
|
|
61
|
+
this.#container.get('logger').info(`Socket.IO is running on ws://localhost:${httpServer.address().port}`);
|
|
64
62
|
}
|
|
65
63
|
|
|
66
64
|
async #loadConnectionHandler() {
|