tinny-backend 1.0.0

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.
Files changed (86) hide show
  1. package/README.md +207 -0
  2. package/dist/admin/auth.d.ts +2 -0
  3. package/dist/admin/auth.d.ts.map +1 -0
  4. package/dist/admin/auth.js +2 -0
  5. package/dist/admin/auth.js.map +1 -0
  6. package/dist/admin/monitor.d.ts +2 -0
  7. package/dist/admin/monitor.d.ts.map +1 -0
  8. package/dist/admin/monitor.js +2 -0
  9. package/dist/admin/monitor.js.map +1 -0
  10. package/dist/admin/routes.d.ts +2 -0
  11. package/dist/admin/routes.d.ts.map +1 -0
  12. package/dist/admin/routes.js +2 -0
  13. package/dist/admin/routes.js.map +1 -0
  14. package/dist/app/index.d.ts +2 -0
  15. package/dist/app/index.d.ts.map +1 -0
  16. package/dist/app/index.js +19 -0
  17. package/dist/app/index.js.map +1 -0
  18. package/dist/core/Request.d.ts +4 -0
  19. package/dist/core/Request.d.ts.map +1 -0
  20. package/dist/core/Request.js +24 -0
  21. package/dist/core/Request.js.map +1 -0
  22. package/dist/core/Response.d.ts +4 -0
  23. package/dist/core/Response.d.ts.map +1 -0
  24. package/dist/core/Response.js +78 -0
  25. package/dist/core/Response.js.map +1 -0
  26. package/dist/core/Server.d.ts +30 -0
  27. package/dist/core/Server.d.ts.map +1 -0
  28. package/dist/core/Server.js +533 -0
  29. package/dist/core/Server.js.map +1 -0
  30. package/dist/core/types.d.ts +89 -0
  31. package/dist/core/types.d.ts.map +1 -0
  32. package/dist/core/types.js +3 -0
  33. package/dist/core/types.js.map +1 -0
  34. package/dist/examples/example.d.ts +2 -0
  35. package/dist/examples/example.d.ts.map +1 -0
  36. package/dist/examples/example.js +11 -0
  37. package/dist/examples/example.js.map +1 -0
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +11 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/server.d.ts +127 -0
  43. package/dist/server.d.ts.map +1 -0
  44. package/dist/server.js +625 -0
  45. package/dist/server.js.map +1 -0
  46. package/dist/src/admin/auth.d.ts +13 -0
  47. package/dist/src/admin/auth.d.ts.map +1 -0
  48. package/dist/src/admin/auth.js +60 -0
  49. package/dist/src/admin/auth.js.map +1 -0
  50. package/dist/src/admin/monitor.d.ts +3 -0
  51. package/dist/src/admin/monitor.d.ts.map +1 -0
  52. package/dist/src/admin/monitor.js +83 -0
  53. package/dist/src/admin/monitor.js.map +1 -0
  54. package/dist/src/admin/routes.d.ts +14 -0
  55. package/dist/src/admin/routes.d.ts.map +1 -0
  56. package/dist/src/admin/routes.js +150 -0
  57. package/dist/src/admin/routes.js.map +1 -0
  58. package/dist/src/core/Request.d.ts +4 -0
  59. package/dist/src/core/Request.d.ts.map +1 -0
  60. package/dist/src/core/Request.js +24 -0
  61. package/dist/src/core/Request.js.map +1 -0
  62. package/dist/src/core/Response.d.ts +4 -0
  63. package/dist/src/core/Response.d.ts.map +1 -0
  64. package/dist/src/core/Response.js +78 -0
  65. package/dist/src/core/Response.js.map +1 -0
  66. package/dist/src/core/Server.d.ts +34 -0
  67. package/dist/src/core/Server.d.ts.map +1 -0
  68. package/dist/src/core/Server.js +290 -0
  69. package/dist/src/core/Server.js.map +1 -0
  70. package/dist/src/core/types.d.ts +89 -0
  71. package/dist/src/core/types.d.ts.map +1 -0
  72. package/dist/src/core/types.js +3 -0
  73. package/dist/src/core/types.js.map +1 -0
  74. package/dist/src/index.d.ts +16 -0
  75. package/dist/src/index.d.ts.map +1 -0
  76. package/dist/src/index.js +17 -0
  77. package/dist/src/index.js.map +1 -0
  78. package/dist/src/utils/constants.d.ts +12 -0
  79. package/dist/src/utils/constants.d.ts.map +1 -0
  80. package/dist/src/utils/constants.js +12 -0
  81. package/dist/src/utils/constants.js.map +1 -0
  82. package/dist/utils/constants.d.ts +12 -0
  83. package/dist/utils/constants.d.ts.map +1 -0
  84. package/dist/utils/constants.js +12 -0
  85. package/dist/utils/constants.js.map +1 -0
  86. package/package.json +89 -0
package/README.md ADDED
@@ -0,0 +1,207 @@
1
+ # TinnyBackend
2
+
3
+ A lightweight routing system for Node.js with built-in file serving, JWT authentication, and monitoring capabilities.
4
+
5
+ ## Features
6
+
7
+ - HTTP routing with support for GET, POST, PUT, DELETE methods
8
+ - Dynamic route parameters (e.g., `/users/:id`)
9
+ - Middleware chain support
10
+ - Static file serving with automatic MIME type detection
11
+ - Cookie management
12
+ - JWT authentication and session management
13
+ - Built-in admin monitoring dashboard
14
+ - TypeScript support with full type definitions
15
+ - Session tracking and rate limiting
16
+
17
+ ## Installation
18
+
19
+ ```bash
20
+ npm install tinnybackend
21
+ ```
22
+
23
+ ## Quick Start
24
+
25
+ ```typescript
26
+ import Server from 'tinnybackend';
27
+
28
+ const server = new Server({
29
+ port: 3000,
30
+ hostname: 'localhost',
31
+ ServerName: 'MyApp'
32
+ });
33
+
34
+ // Basic route
35
+ server.add({
36
+ method: 'GET',
37
+ path: '/',
38
+ handler: (req, res) => {
39
+ res.send(200, { message: 'Hello World!' });
40
+ }
41
+ });
42
+
43
+ // Route with parameters
44
+ server.add({
45
+ method: 'GET',
46
+ path: '/users/:id',
47
+ handler: (req, res) => {
48
+ const userId = req.params.id;
49
+ res.send(200, { userId });
50
+ }
51
+ });
52
+
53
+ // Route with middleware
54
+ server.add({
55
+ method: 'POST',
56
+ path: '/api/data',
57
+ middelWares: [authMiddleware],
58
+ handler: (req, res) => {
59
+ res.send(200, { received: req.body });
60
+ }
61
+ });
62
+
63
+ // Serve static files
64
+ server.servDir('./public', 'static');
65
+
66
+ server.listen();
67
+ ```
68
+
69
+ ## API Reference
70
+
71
+ ### Server Constructor
72
+
73
+ ```typescript
74
+ new Server(options: ServerOptions)
75
+ ```
76
+
77
+ **Options:**
78
+
79
+ | Option | Type | Default | Description |
80
+ |--------|------|---------|-------------|
81
+ | `port` | number | 3000 | Server port |
82
+ | `hostname` | string | 'localhost' | Server hostname |
83
+ | `ServerName` | string | 'Server' | Server display name |
84
+ | `DefaultHandler` | HandlerFun | 404 handler | Default route handler |
85
+
86
+ ### Adding Routes
87
+
88
+ ```typescript
89
+ server.add({
90
+ method: 'GET' | 'POST' | 'PUT' | 'DELETE',
91
+ path: string,
92
+ handler: HandlerFun,
93
+ middelWares?: HandlerFun[],
94
+ next?: HandlerFun
95
+ })
96
+ ```
97
+
98
+ ### Request Object (ServerReq)
99
+
100
+ | Property | Type | Description |
101
+ |----------|------|-------------|
102
+ | `ReqUrl` | URL | Parsed request URL |
103
+ | `Query` | URLSearchParams | Query parameters |
104
+ | `queries` | object | Query parameters as object |
105
+ | `body` | any | Request body (parsed JSON) |
106
+ | `ip` | string | Client IP address |
107
+ | `params` | Record<string, string> | Route parameters |
108
+ | `server` | Server | Server instance |
109
+
110
+ ### Response Object (ServerRes)
111
+
112
+ | Method | Description |
113
+ |--------|-------------|
114
+ | `send(status, data?, headers?)` | Send JSON response |
115
+ | `sendFile(status, contentType, data, headers?)` | Send file response |
116
+ | `addCookie(name, value)` | Add cookie |
117
+ | `getCookie(name)` | Get cookie |
118
+ | `setCookie(name, value)` | Update cookie |
119
+ | `getAllCookies()` | Get all cookies |
120
+
121
+ ### File Serving
122
+
123
+ ```typescript
124
+ // Serve a directory
125
+ server.servDir('./public', 'static');
126
+
127
+ // Read directory contents
128
+ const files = await server.readDir('./public', 'static');
129
+ ```
130
+
131
+ ### Monitoring
132
+
133
+ The server includes a built-in monitoring system that provides an admin dashboard with real-time metrics.
134
+
135
+ Enable monitoring:
136
+
137
+ ```typescript
138
+ server.listen(true); // Enables monitoring
139
+ ```
140
+
141
+ **Environment Variables Required:**
142
+
143
+ ```
144
+ ADMIN_USERNAME=admin
145
+ ADMIN_PASSWORD=secure_password
146
+ ADMIN_KEY=your_jwt_secret_key
147
+ ```
148
+
149
+ **Monitoring Routes:**
150
+
151
+ - `/` - Admin dashboard
152
+ - `/api/login` - Login endpoint
153
+ - `/api/logout` - Logout endpoint
154
+ - `/admin/status` - Server status and metrics
155
+ - `/messages` - Server logs
156
+
157
+ ## Examples
158
+
159
+ ### Authentication Middleware
160
+
161
+ ```typescript
162
+ const authMiddleware = (req: ServerReq, res: ServerRes) => {
163
+ const token = res.getCookie('token');
164
+ if (!token) {
165
+ res.send(401, { error: 'Unauthorized' });
166
+ return;
167
+ }
168
+ // Verify token logic
169
+ };
170
+ ```
171
+
172
+ ### File Upload Handling
173
+
174
+ ```typescript
175
+ server.add({
176
+ method: 'POST',
177
+ path: '/upload',
178
+ handler: async (req, res) => {
179
+ // Handle file upload
180
+ const fileData = req.body;
181
+ res.send(200, { success: true });
182
+ }
183
+ });
184
+ ```
185
+
186
+ ## Configuration
187
+
188
+ Create a `.env` file for monitoring configuration:
189
+
190
+ ```env
191
+ ADMIN_USERNAME=admin
192
+ ADMIN_PASSWORD=your_password
193
+ ADMIN_KEY=your_jwt_secret
194
+ ```
195
+
196
+ ## License
197
+
198
+ MIT
199
+
200
+ ## Author
201
+
202
+ Yassine Ajagrou
203
+
204
+ ## Links
205
+
206
+ - [GitHub Repository](https://github.com/iaceene/TinnyBackend)
207
+ - [npm Package](https://www.npmjs.com/package/tinnybackend)
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/admin/auth.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/admin/auth.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor.d.ts","sourceRoot":"","sources":["../../src/admin/monitor.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/admin/monitor.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/admin/routes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/admin/routes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../app/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { uptime } from "node:process";
2
+ import Server from "../src/index.js";
3
+ const srv = new Server({});
4
+ srv.add({
5
+ path: "/",
6
+ handler: async (req, res) => {
7
+ return await srv.SendFile(res, "public/example/default.html", 200);
8
+ },
9
+ method: "GET"
10
+ });
11
+ srv.add({
12
+ path: "/api/info",
13
+ handler: async (req, res) => {
14
+ return res.send(200, { uptime: uptime() });
15
+ },
16
+ method: "GET"
17
+ });
18
+ srv.listen(true);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,CAAA;AAE1B,GAAG,CAAC,GAAG,CAAC;IACJ,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACxB,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,6BAA6B,EAAE,GAAG,CAAC,CAAA;IACtE,CAAC;IACD,MAAM,EAAE,KAAK;CAChB,CAAC,CAAA;AAEF,GAAG,CAAC,GAAG,CAAC;IACJ,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACxB,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAC,MAAM,EAAE,MAAM,EAAE,EAAC,CAAC,CAAA;IAC5C,CAAC;IACD,MAAM,EAAE,KAAK;CAChB,CAAC,CAAA;AAGF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import Server from "./Server.js";
2
+ import type { ServerReq } from "./types.js";
3
+ export default function RequestParser(req: ServerReq, server: Server): ServerReq;
4
+ //# sourceMappingURL=Request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Request.d.ts","sourceRoot":"","sources":["../../src/core/Request.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAO,aAAa,CAAA;AACjC,OAAO,KAAK,EACR,SAAS,EACZ,MAAM,YAAY,CAAA;AAEnB,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CA2B/E"}
@@ -0,0 +1,24 @@
1
+ import Server from "./Server.js";
2
+ export default function RequestParser(req, server) {
3
+ let body = "";
4
+ try {
5
+ const NewUrl = "http://" + server.getHost() + ":" + server.getPort() + (req.url ?? "");
6
+ req.ReqUrl = URL.parse(NewUrl);
7
+ req.ReqUrl.pathname = req.ReqUrl?.pathname.replace(/(?<=.)\/+$/, "");
8
+ req.Query = new URLSearchParams(req.ReqUrl.searchParams);
9
+ req.queries = Object.fromEntries(req.Query);
10
+ }
11
+ catch {
12
+ server.log(`Cannot parse ${req.url}`, "error");
13
+ req.ReqUrl.pathname = req.url;
14
+ req.queries = {};
15
+ }
16
+ req.ip = req.socket.remoteAddress?.split(':').pop() ?? "DEVICE IP";
17
+ req.server = server;
18
+ server.log(`${req.ip} requested METHOD ${req.method}, PATH ${req.ReqUrl?.pathname}`);
19
+ req.on("data", (chunk) => {
20
+ body += chunk.toString();
21
+ });
22
+ return req;
23
+ }
24
+ //# sourceMappingURL=Request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Request.js","sourceRoot":"","sources":["../../src/core/Request.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAO,aAAa,CAAA;AAKjC,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,GAAc,EAAE,MAAc;IAChE,IAAI,IAAI,GAAW,EAAE,CAAC;IAEtB,IACA,CAAC;QACG,MAAM,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QACvF,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9B,GAAG,CAAC,MAAc,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAC9E,GAAG,CAAC,KAAK,GAAG,IAAI,eAAe,CAAE,GAAG,CAAC,MAAc,CAAC,YAAY,CAAC,CAAC;QAClE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC/C,CAAC;IACD,MACA,CAAC;QACG,MAAM,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9C,GAAG,CAAC,MAAc,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC;QACvC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAA;IACpB,CAAC;IACD,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,WAAW,CAAC;IACnE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAA;IAEnB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,qBAAqB,GAAG,CAAC,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAErF,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QACrB,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -0,0 +1,4 @@
1
+ import Server from "./Server.js";
2
+ import type { ServerRes, ServerReq } from "./types.js";
3
+ export default function ResponseParser(res: ServerRes, req: ServerReq, server: Server): ServerRes;
4
+ //# sourceMappingURL=Response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Response.d.ts","sourceRoot":"","sources":["../../src/core/Response.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAEhC,OAAO,KAAK,EACR,SAAS,EACT,SAAS,EAEZ,MAAM,YAAY,CAAA;AAGnB,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CA4FhG"}
@@ -0,0 +1,78 @@
1
+ import Server from "./Server.js";
2
+ import fs from "fs";
3
+ export default function ResponseParser(res, req, server) {
4
+ let cookies = [];
5
+ res.isClosed = false;
6
+ res.ip = req.ip;
7
+ res.getCookie = (name) => {
8
+ if (cookies.length !== 0) {
9
+ for (let i = 0; i < cookies.length; i++)
10
+ if (cookies[i]?.key === name)
11
+ return cookies[i] ?? null;
12
+ }
13
+ return null;
14
+ };
15
+ res.setCookie = (name, value) => {
16
+ for (let i = 0; i < cookies.length; i++)
17
+ if (name === cookies[i]?.key)
18
+ cookies[i].value = value;
19
+ };
20
+ res.addCookie = (name, value) => {
21
+ if (name === "" || value === "")
22
+ return;
23
+ if (res.getCookie(name) != null)
24
+ return res.setCookie(name, value);
25
+ cookies.push({ key: name, value });
26
+ };
27
+ res.getAllCookies = () => {
28
+ const ArrayBuffer = [];
29
+ for (let i = 0; i < cookies.length; i++)
30
+ ArrayBuffer.push(`${cookies[i]?.key}=${cookies[i]?.value};`);
31
+ return ArrayBuffer;
32
+ };
33
+ const setCookies = (cookies) => {
34
+ if (!cookies || cookies === "")
35
+ return;
36
+ const pairs = cookies.split("; ");
37
+ if (!pairs)
38
+ return;
39
+ for (let i = 0; i < pairs.length; i++)
40
+ res.addCookie(pairs[i]?.split("=")[0] ?? "", pairs[i]?.split("=")[1] ?? "");
41
+ };
42
+ setCookies(req.headers["cookie"]);
43
+ res.server = server;
44
+ res.send = (status, data, headers) => {
45
+ if (!res.isClosed) {
46
+ res.writeHead(status, { 'Content-Type': 'application/json', ...headers });
47
+ res.end(data ? JSON.stringify(data) : "");
48
+ res.isClosed = true;
49
+ }
50
+ else {
51
+ server.log(`Multipple replays on ${req.url}`, "error");
52
+ }
53
+ };
54
+ res.sendFile = async (status, ContentType, data, headers) => {
55
+ if (!res.isClosed) {
56
+ try {
57
+ const fileData = await fs.promises.readFile(data.PATH);
58
+ if (res.isClosed)
59
+ return;
60
+ res.writeHead(status, { 'Content-Type': ContentType, ...headers });
61
+ res.end(fileData);
62
+ res.isClosed = true;
63
+ }
64
+ catch {
65
+ if (res.isClosed)
66
+ return;
67
+ res.writeHead(500, { 'Content-Type': 'text/plain' });
68
+ res.end('500 - Internal Error or File Not Found');
69
+ res.isClosed = true;
70
+ return;
71
+ }
72
+ }
73
+ else
74
+ server.log(`Multipple replays on ${req.url}`, "error");
75
+ };
76
+ return res;
77
+ }
78
+ //# sourceMappingURL=Response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Response.js","sourceRoot":"","sources":["../../src/core/Response.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { ServerOptions, ServerRes, AddOption, HandlerFun, Decorator, DirFiles } from "./types.js";
2
+ export default class Server {
3
+ private PORT;
4
+ private hostname;
5
+ private methodHandler;
6
+ private decorators;
7
+ private server;
8
+ private sessions;
9
+ private uptime;
10
+ private reqCount;
11
+ private logs;
12
+ private ServerName;
13
+ private defaultHandler;
14
+ private generateKey;
15
+ private generateSession;
16
+ private getSession;
17
+ getHost(): string;
18
+ getPort(): number;
19
+ add(opt: AddOption): void;
20
+ decorate(name: string, data: any): void;
21
+ useDecorator(name: string): Decorator | null | undefined;
22
+ readDir(DIR: string, prefix: string): Promise<DirFiles | null>;
23
+ servDir(DIR: string, pref: string, middelWares?: HandlerFun[]): Promise<void>;
24
+ SendFile(res: ServerRes, FILE: string, status: number): Promise<void>;
25
+ log(message: string, type?: "error" | "message"): void;
26
+ constructor(args: ServerOptions);
27
+ monitor(server: Server): void;
28
+ listen(enableMon?: boolean, callback?: () => void): void;
29
+ }
30
+ //# sourceMappingURL=Server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../../src/core/Server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,aAAa,EAEb,SAAS,EAET,SAAS,EAET,UAAU,EACV,SAAS,EAGT,QAAQ,EAIX,MAAM,YAAY,CAAC;AAkBpB,MAAM,CAAC,OAAO,OAAO,MAAM;IACvB,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAAA;IACd,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,cAAc,CAAY;IAElC,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,UAAU;IAIlB,OAAO;IAIP,OAAO;IAIP,GAAG,CAAC,GAAG,EAAE,SAAS;IAoBlB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAOhC,YAAY,CAAC,IAAI,EAAE,MAAM;IAKnB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgB9D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE;IA+D7D,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B3E,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS;gBAkBnC,IAAI,EAAE,aAAa;IAyF/B,OAAO,CAAC,MAAM,EAAE,MAAM;IA8StB,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI;CAOpD"}