@fc3/server 0.1.1 → 0.1.3

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 (60) hide show
  1. package/dist/.last-compile-time +1 -1
  2. package/dist/.last-publish-time +1 -1
  3. package/dist/src/http/endpoint.d.ts +3 -3
  4. package/dist/src/http/endpoint.js.map +1 -1
  5. package/dist/src/http/utility/create-server.d.ts +3 -3
  6. package/dist/src/http/utility/create-server.js +4 -7
  7. package/dist/src/http/utility/create-server.js.map +1 -1
  8. package/dist/src/http-server/endpoint/ping.d.ts +12 -0
  9. package/dist/src/http-server/endpoint/ping.js +22 -0
  10. package/dist/src/http-server/endpoint/ping.js.map +1 -0
  11. package/dist/src/http-server/endpoint.d.ts +47 -0
  12. package/dist/src/http-server/endpoint.js +216 -0
  13. package/dist/src/http-server/endpoint.js.map +1 -0
  14. package/dist/src/http-server/interface/endpoint-constructor.d.ts +5 -0
  15. package/dist/src/http-server/interface/endpoint-constructor.js +4 -0
  16. package/dist/src/http-server/interface/endpoint-constructor.js.map +1 -0
  17. package/dist/src/http-server/interface/result-serializer.d.ts +4 -0
  18. package/dist/src/http-server/interface/result-serializer.js +3 -0
  19. package/dist/src/http-server/interface/result-serializer.js.map +1 -0
  20. package/dist/src/http-server/middleware.d.ts +6 -0
  21. package/dist/src/http-server/middleware.js +9 -0
  22. package/dist/src/http-server/middleware.js.map +1 -0
  23. package/dist/src/http-server/result-serializer/html.d.ts +16 -0
  24. package/dist/src/http-server/result-serializer/html.js +74 -0
  25. package/dist/src/http-server/result-serializer/html.js.map +1 -0
  26. package/dist/src/http-server/result-serializer/json.d.ts +8 -0
  27. package/dist/src/http-server/result-serializer/json.js +17 -0
  28. package/dist/src/http-server/result-serializer/json.js.map +1 -0
  29. package/dist/src/http-server/route.d.ts +21 -0
  30. package/dist/src/http-server/route.js +73 -0
  31. package/dist/src/http-server/route.js.map +1 -0
  32. package/dist/src/http-server/router.d.ts +20 -0
  33. package/dist/src/http-server/router.js +78 -0
  34. package/dist/src/http-server/router.js.map +1 -0
  35. package/dist/src/http-server/type/session-resolver.d.ts +6 -0
  36. package/dist/src/http-server/type/session-resolver.js +3 -0
  37. package/dist/src/http-server/type/session-resolver.js.map +1 -0
  38. package/dist/src/http-server/utility/create-server.d.ts +10 -0
  39. package/dist/src/http-server/utility/create-server.js +24 -0
  40. package/dist/src/http-server/utility/create-server.js.map +1 -0
  41. package/dist/src/http-server/utility/path-parser.d.ts +11 -0
  42. package/dist/src/http-server/utility/path-parser.js +34 -0
  43. package/dist/src/http-server/utility/path-parser.js.map +1 -0
  44. package/dist/src/http-server/utility/standardize-html-indentation.d.ts +2 -0
  45. package/dist/src/http-server/utility/standardize-html-indentation.js +44 -0
  46. package/dist/src/http-server/utility/standardize-html-indentation.js.map +1 -0
  47. package/dist/src/http-server/websocket-wrapper.d.ts +21 -0
  48. package/dist/src/http-server/websocket-wrapper.js +56 -0
  49. package/dist/src/http-server/websocket-wrapper.js.map +1 -0
  50. package/dist/src/http-server.d.ts +40 -0
  51. package/dist/src/http-server.js +209 -0
  52. package/dist/src/http-server.js.map +1 -0
  53. package/dist/src/index.d.ts +5 -5
  54. package/dist/src/index.js +6 -6
  55. package/dist/src/index.js.map +1 -1
  56. package/dist/src/tcp-server.d.ts +13 -0
  57. package/dist/src/tcp-server.js +41 -0
  58. package/dist/src/tcp-server.js.map +1 -0
  59. package/dist/tsconfig.tsbuildinfo +1 -1
  60. package/package.json +1 -1
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const http_1 = __importDefault(require("./http.js"));
7
+ const util_1 = __importDefault(require("util"));
8
+ const https_1 = __importDefault(require("https"));
9
+ const ws_1 = __importDefault(require("ws"));
10
+ const time_1 = require("@fc3/time");
11
+ const errors_1 = require("@fc3/errors");
12
+ const http_2 = require("@fc3/http");
13
+ const network_1 = require("@fc3/network");
14
+ const execution_context_1 = __importDefault(require("@fc3/execution-context"));
15
+ const tcp_1 = require("@fc3/tcp");
16
+ const route_1 = __importDefault(require("./http-server/route.js"));
17
+ const router_1 = __importDefault(require("./http-server/router.js"));
18
+ const base_1 = __importDefault(require("./base.js"));
19
+ const server_event_1 = __importDefault(require("./enum/server-event.js"));
20
+ const ping_1 = __importDefault(require("./http-server/endpoint/ping.js"));
21
+ const websocket_wrapper_1 = __importDefault(require("./http-server/websocket-wrapper.js"));
22
+ class HttpServer extends base_1.default {
23
+ constructor(options, raw_server) {
24
+ if (raw_server === undefined) {
25
+ raw_server = http_1.default.createServer();
26
+ }
27
+ super(options, raw_server);
28
+ const logger = this.getLogger();
29
+ const router = new router_1.default(logger, (endpoint) => {
30
+ return this.setupEndpoint(endpoint);
31
+ });
32
+ this.router = router;
33
+ this.middlewares = [router];
34
+ this.connections = [];
35
+ }
36
+ async stop() {
37
+ await super.stop();
38
+ await this.drain();
39
+ }
40
+ addEndpoint(endpoint_constructor) {
41
+ const router = this.getRouter();
42
+ const route = new route_1.default(endpoint_constructor);
43
+ router.addRoute(route);
44
+ return this;
45
+ }
46
+ prependMiddleware(middleware) {
47
+ const middlewares = this.getMiddlewares();
48
+ middlewares.unshift(middleware);
49
+ return this;
50
+ }
51
+ appendMiddleware(middleware) {
52
+ const middlewares = this.getMiddlewares();
53
+ middlewares.push(middleware);
54
+ return this;
55
+ }
56
+ enablePingEndpoint() {
57
+ this.addEndpoint(ping_1.default);
58
+ return this;
59
+ }
60
+ setSessionResolver(session_resolver) {
61
+ this.session_resolver = session_resolver;
62
+ }
63
+ bindHandlers() {
64
+ const raw_server = this.getRawServer();
65
+ raw_server.on('request', this.handleRawRequest.bind(this));
66
+ raw_server.on('upgrade', this.handleUpgrade.bind(this));
67
+ }
68
+ getProtocol() {
69
+ const raw_server = this.getRawServer();
70
+ if (raw_server instanceof https_1.default.Server) {
71
+ return network_1.NetworkProtocol.HTTPS;
72
+ }
73
+ else if (raw_server instanceof http_1.default.Server) {
74
+ return network_1.NetworkProtocol.HTTP;
75
+ }
76
+ else {
77
+ throw new Error('Unable to determine server protocol');
78
+ }
79
+ }
80
+ async setupEndpoint(endpoint) {
81
+ }
82
+ handleRawRequest(raw_request, raw_response) {
83
+ const config = this.getConfig();
84
+ const execution_context = new execution_context_1.default(config);
85
+ const request = new http_2.IncomingRequest(raw_request, execution_context);
86
+ const response = new http_2.OutgoingResponse(raw_response);
87
+ response.setExecutionContext(execution_context);
88
+ response.setPath(request.getPath());
89
+ response.setMethod(request.getMethod());
90
+ const promise = this.handleRequestAsync(request, response);
91
+ promise.catch((error) => {
92
+ response.error(error);
93
+ });
94
+ }
95
+ async handleRequestAsync(request, response) {
96
+ await this.assignSessionToRequest(request);
97
+ const middlewares = this.getMiddlewares();
98
+ const logger = this.getLogger();
99
+ let index = 0;
100
+ let error = undefined;
101
+ while (index < middlewares.length) {
102
+ const middleware = middlewares[index];
103
+ if (error) {
104
+ if (await middleware.handleError(error, request, response)) {
105
+ return;
106
+ }
107
+ }
108
+ else {
109
+ try {
110
+ if (await middleware.handleRequest(request, response)) {
111
+ return;
112
+ }
113
+ }
114
+ catch (middleware_error) {
115
+ error = middleware_error;
116
+ logger.error(error);
117
+ }
118
+ }
119
+ index++;
120
+ }
121
+ if (error === undefined) {
122
+ error = new errors_1.NotFoundError('Unable to find a matching resource for this request');
123
+ }
124
+ response.error(error);
125
+ }
126
+ handleUpgrade(raw_request, socket, head) {
127
+ const promise = this.handleUpgradeAsync(raw_request, socket, head);
128
+ promise.catch((error) => {
129
+ const logger = this.getLogger();
130
+ logger.error(`
131
+ Error occurred when upgrading websocket connection:
132
+ ${error.message}
133
+ `);
134
+ socket.end();
135
+ });
136
+ }
137
+ async handleUpgradeAsync(raw_request, socket, head) {
138
+ const config = this.getConfig();
139
+ const execution_context = new execution_context_1.default(config);
140
+ const request = new http_2.IncomingRequest(raw_request, execution_context);
141
+ await this.assignSessionToRequest(request);
142
+ const websocket_server = this.getWebsocketServer();
143
+ websocket_server.handleUpgrade(raw_request, socket, head, (websocket) => {
144
+ const wrapper = new websocket_wrapper_1.default(websocket);
145
+ const connection = new tcp_1.IncomingConnection(wrapper, execution_context);
146
+ this.addConnection(connection);
147
+ });
148
+ }
149
+ async assignSessionToRequest(request) {
150
+ if (!this.hasSessionResolver()) {
151
+ return;
152
+ }
153
+ const resolver = this.getSessionResolver();
154
+ const session = await resolver(request);
155
+ const execution_context = request.getExecutionContext();
156
+ if (session) {
157
+ execution_context.setSession(session);
158
+ }
159
+ }
160
+ async drain() {
161
+ const connections = this.getConnections();
162
+ connections.forEach((connection) => {
163
+ connection.end();
164
+ });
165
+ const raw_server = this.getRawServer();
166
+ const bound_method = raw_server.getConnections.bind(raw_server);
167
+ // eslint-disable-next-line @typescript-eslint/naming-convention
168
+ const getRawConnections = util_1.default.promisify(bound_method);
169
+ let raw_connection_count = await getRawConnections();
170
+ while (raw_connection_count > 0) {
171
+ await (0, time_1.sleep)(time_1.TimeInterval.ONE_SECOND);
172
+ raw_connection_count = await getRawConnections();
173
+ }
174
+ }
175
+ getRouter() {
176
+ return this.router;
177
+ }
178
+ getMiddlewares() {
179
+ return this.middlewares;
180
+ }
181
+ getWebsocketServer() {
182
+ if (this.websocket_server === undefined) {
183
+ this.websocket_server = new ws_1.default.Server({
184
+ // eslint-disable-next-line @typescript-eslint/naming-convention
185
+ noServer: true
186
+ });
187
+ }
188
+ return this.websocket_server;
189
+ }
190
+ hasSessionResolver() {
191
+ return this.session_resolver !== undefined;
192
+ }
193
+ getSessionResolver() {
194
+ if (this.session_resolver === undefined) {
195
+ throw new Error('Tried to read session resolver, but it was not set');
196
+ }
197
+ return this.session_resolver;
198
+ }
199
+ addConnection(connection) {
200
+ const connections = this.getConnections();
201
+ connections.push(connection);
202
+ this.emit(server_event_1.default.CONNECTION, connection);
203
+ }
204
+ getConnections() {
205
+ return this.connections;
206
+ }
207
+ }
208
+ exports.default = HttpServer;
209
+ //# sourceMappingURL=http-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-server.js","sourceRoot":"","sources":["../../src/http-server.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- export { default as HttpServer } from './http';
2
- export { default as Middleware } from './http/middleware';
3
- export { default as Endpoint } from './http/endpoint';
4
- export { default as createServer } from './http/utility/create-server';
5
- export { default as HtmlResultSerializer } from './http/result-serializer/html';
1
+ export { default as HttpServer } from './http-server';
2
+ export { default as Middleware } from './http-server/middleware';
3
+ export { default as Endpoint } from './http-server/endpoint';
4
+ export { default as createServer } from './http-server/utility/create-server';
5
+ export { default as HtmlResultSerializer } from './http-server/result-serializer/html';
package/dist/src/index.js CHANGED
@@ -4,14 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.HtmlResultSerializer = exports.createServer = exports.Endpoint = exports.Middleware = exports.HttpServer = void 0;
7
- var http_1 = require("./http.js");
8
- Object.defineProperty(exports, "HttpServer", { enumerable: true, get: function () { return __importDefault(http_1).default; } });
9
- var middleware_1 = require("./http/middleware.js");
7
+ var http_server_1 = require("./http-server.js");
8
+ Object.defineProperty(exports, "HttpServer", { enumerable: true, get: function () { return __importDefault(http_server_1).default; } });
9
+ var middleware_1 = require("./http-server/middleware.js");
10
10
  Object.defineProperty(exports, "Middleware", { enumerable: true, get: function () { return __importDefault(middleware_1).default; } });
11
- var endpoint_1 = require("./http/endpoint.js");
11
+ var endpoint_1 = require("./http-server/endpoint.js");
12
12
  Object.defineProperty(exports, "Endpoint", { enumerable: true, get: function () { return __importDefault(endpoint_1).default; } });
13
- var create_server_1 = require("./http/utility/create-server.js");
13
+ var create_server_1 = require("./http-server/utility/create-server.js");
14
14
  Object.defineProperty(exports, "createServer", { enumerable: true, get: function () { return __importDefault(create_server_1).default; } });
15
- var html_1 = require("./http/result-serializer/html.js");
15
+ var html_1 = require("./http-server/result-serializer/html.js");
16
16
  Object.defineProperty(exports, "HtmlResultSerializer", { enumerable: true, get: function () { return __importDefault(html_1).default; } });
17
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,6BAA2C;AAAnC,mHAAA,OAAO,OAAc;AAC7B,8CAAsD;AAA9C,yHAAA,OAAO,OAAc;AAC7B,0CAAkD;AAA1C,qHAAA,OAAO,OAAY;AAC3B,4DAAmE;AAA3D,8HAAA,OAAO,OAAgB;AAC/B,oDAA4E;AAApE,6HAAA,OAAO,OAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAkD;AAA1C,0HAAA,OAAO,OAAc;AAC7B,qDAA6D;AAArD,yHAAA,OAAO,OAAc;AAC7B,iDAAyD;AAAjD,qHAAA,OAAO,OAAY;AAC3B,mEAA0E;AAAlE,8HAAA,OAAO,OAAgB;AAC/B,2DAAmF;AAA3E,6HAAA,OAAO,OAAwB"}
@@ -0,0 +1,13 @@
1
+ import { NetworkProtocol } from '@fc3/network';
2
+ import BaseServer from './base';
3
+ import ServerOptions from './type/server-options';
4
+ declare class TcpServer extends BaseServer {
5
+ private connections;
6
+ constructor(options: ServerOptions);
7
+ protected bindHandlers(): void;
8
+ protected getProtocol(): NetworkProtocol;
9
+ private handleSocket;
10
+ private addConnection;
11
+ private getConnections;
12
+ }
13
+ export default TcpServer;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const net_1 = __importDefault(require("net"));
7
+ const network_1 = require("@fc3/network");
8
+ const execution_context_1 = __importDefault(require("@fc3/execution-context"));
9
+ const tcp_1 = require("@fc3/tcp");
10
+ const base_1 = __importDefault(require("./base.js"));
11
+ const server_event_1 = __importDefault(require("./enum/server-event.js"));
12
+ class TcpServer extends base_1.default {
13
+ constructor(options) {
14
+ const raw_server = net_1.default.createServer();
15
+ super(options, raw_server);
16
+ this.connections = [];
17
+ }
18
+ bindHandlers() {
19
+ const raw_server = this.getRawServer();
20
+ raw_server.on('connection', this.handleSocket.bind(this));
21
+ }
22
+ getProtocol() {
23
+ return network_1.NetworkProtocol.TCP;
24
+ }
25
+ handleSocket(socket) {
26
+ const config = this.getConfig();
27
+ const execution_context = new execution_context_1.default(config);
28
+ const connection = new tcp_1.IncomingConnection(socket, execution_context);
29
+ this.addConnection(connection);
30
+ }
31
+ addConnection(connection) {
32
+ const connections = this.getConnections();
33
+ connections.push(connection);
34
+ this.emit(server_event_1.default.CONNECTION, connection);
35
+ }
36
+ getConnections() {
37
+ return this.connections;
38
+ }
39
+ }
40
+ exports.default = TcpServer;
41
+ //# sourceMappingURL=tcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tcp-server.js","sourceRoot":"","sources":["../../src/tcp-server.ts"],"names":[],"mappings":";;;;;AAAA,8CAAsB;AAEtB,0CAA6C;AAC7C,+EAAsD;AACtD,kCAA4C;AAE5C,gDAA8B;AAC9B,qEAA4C;AAG5C,MAAM,SAAU,SAAQ,cAAU;IAGjC,YAAmB,OAAsB;QACxC,MAAM,UAAU,GAAG,aAAG,CAAC,YAAY,EAAE,CAAC;QAEtC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAE3B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACvB,CAAC;IAES,YAAY;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEvC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;IAES,WAAW;QACpB,OAAO,yBAAe,CAAC,GAAG,CAAC;IAC5B,CAAC;IAEO,YAAY,CAAC,MAAkB;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,iBAAiB,GAAG,IAAI,2BAAgB,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,wBAAkB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAErE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAEO,aAAa,CAAC,UAA8B;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE1C,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7B,IAAI,CAAC,IAAI,CAAC,sBAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC;IAEO,cAAc;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;CACD;AAED,kBAAe,SAAS,CAAC"}