@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
@@ -1 +1 @@
1
- 1764495321
1
+ 1764497100
@@ -1 +1 @@
1
- 1764495336
1
+ 1764497111
@@ -1,4 +1,4 @@
1
- import HTTP from './../http';
1
+ import { IncomingMessage as HttpIncomingMessage, ServerResponse as HttpServerResponse } from './../http';
2
2
  import Logger from '@fc3/logger';
3
3
  import ExecutionContext, { Session } from '@fc3/execution-context';
4
4
  import { HttpMethod, StatusCode, ContentType, IncomingRequest, OutgoingResponse } from '@fc3/http';
@@ -16,9 +16,9 @@ declare abstract class Endpoint<Input, Output extends AllowedOutputs> {
16
16
  setResponse(response: OutgoingResponse): void;
17
17
  serve(): Promise<void>;
18
18
  protected getRequest(): IncomingRequest;
19
- protected getNativeRequest(): HTTP.IncomingMessage;
19
+ protected getNativeRequest(): HttpIncomingMessage;
20
20
  protected getResponse(): OutgoingResponse;
21
- protected getNativeResponse(): HTTP.ServerResponse;
21
+ protected getNativeResponse(): HttpServerResponse;
22
22
  protected getPathParameter(parameter: string): string;
23
23
  protected getQueryParameter(parameter: string): string | string[] | undefined;
24
24
  protected getNumericParameter(parameter: string, fallback?: number): number;
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../../src/http/endpoint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../../src/http/endpoint.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import HTTP from './../../http';
2
- import HTTPS from 'https';
1
+ import { Server as HttpServer } from './../../http';
2
+ import { Server as HttpsServer } from 'https';
3
3
  import { NetworkProtocol } from '@fc3/network';
4
4
  interface ServerConfig {
5
5
  readonly key: string | Buffer | undefined;
6
6
  readonly cert: string | Buffer | undefined;
7
7
  readonly protocol: NetworkProtocol;
8
8
  }
9
- declare function createServer(config: ServerConfig): HTTP.Server | HTTPS.Server;
9
+ declare function createServer(config: ServerConfig): HttpServer | HttpsServer;
10
10
  export default createServer;
@@ -1,10 +1,7 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const http_1 = __importDefault(require("./../../http.js"));
7
- const https_1 = __importDefault(require("https"));
3
+ const http_1 = require("./../../http.js");
4
+ const https_1 = require("https");
8
5
  const errors_1 = require("@fc3/errors");
9
6
  const network_1 = require("@fc3/network");
10
7
  function createServer(config) {
@@ -13,7 +10,7 @@ function createServer(config) {
13
10
  if (key === undefined || cert === undefined) {
14
11
  throw new errors_1.InvalidError('Must specify a key and cert when using HTTPS');
15
12
  }
16
- return https_1.default.createServer({
13
+ return (0, https_1.createServer)({
17
14
  key,
18
15
  cert
19
16
  });
@@ -21,7 +18,7 @@ function createServer(config) {
21
18
  if (key !== undefined || cert !== undefined) {
22
19
  throw new errors_1.InvalidError('SSL key/cert were supplied, but protocol was HTTP');
23
20
  }
24
- return http_1.default.createServer();
21
+ return (0, http_1.createServer)();
25
22
  }
26
23
  exports.default = createServer;
27
24
  //# sourceMappingURL=create-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-server.js","sourceRoot":"","sources":["../../../../src/http/utility/create-server.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,kDAA0B;AAE1B,wCAAyC;AACzC,0CAA6C;AAQ7C,SAAS,YAAY,CAAC,MAAoB;IACzC,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAC,GAAG,MAAM,CAAC;IAErC,IAAI,QAAQ,KAAK,yBAAe,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7C,MAAM,IAAI,qBAAY,CAAC,8CAA8C,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,eAAK,CAAC,YAAY,CAAC;YACzB,GAAG;YACH,IAAI;SACJ,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7C,MAAM,IAAI,qBAAY,CAAC,mDAAmD,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,cAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,CAAC;AAED,kBAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"create-server.js","sourceRoot":"","sources":["../../../../src/http/utility/create-server.ts"],"names":[],"mappings":";;AAAA,+BAA4E;AAC5E,iCAA+E;AAE/E,wCAAyC;AACzC,0CAA6C;AAQ7C,SAAS,YAAY,CAAC,MAAoB;IACzC,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAC,GAAG,MAAM,CAAC;IAErC,IAAI,QAAQ,KAAK,yBAAe,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7C,MAAM,IAAI,qBAAY,CAAC,8CAA8C,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,IAAA,oBAAiB,EAAC;YACxB,GAAG;YACH,IAAI;SACJ,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7C,MAAM,IAAI,qBAAY,CAAC,mDAAmD,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,IAAA,mBAAgB,GAAE,CAAC;AAC3B,CAAC;AAED,kBAAe,YAAY,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { HttpMethod, ContentType } from '@fc3/http';
2
+ import Endpoint from './../endpoint';
3
+ interface PingResult {
4
+ status: string;
5
+ }
6
+ declare class PingEndpoint extends Endpoint<unknown, PingResult> {
7
+ path: string;
8
+ method: HttpMethod;
9
+ content_types: ContentType[];
10
+ protected process(): Promise<PingResult>;
11
+ }
12
+ export default PingEndpoint;
@@ -0,0 +1,22 @@
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 = require("@fc3/http");
7
+ const endpoint_1 = __importDefault(require("./../endpoint.js"));
8
+ class PingEndpoint extends endpoint_1.default {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.path = '/ping';
12
+ this.method = http_1.HttpMethod.GET;
13
+ this.content_types = [http_1.ContentType.JSON];
14
+ }
15
+ process() {
16
+ return Promise.resolve({
17
+ status: 'OK'
18
+ });
19
+ }
20
+ }
21
+ exports.default = PingEndpoint;
22
+ //# sourceMappingURL=ping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ping.js","sourceRoot":"","sources":["../../../../src/http-server/endpoint/ping.ts"],"names":[],"mappings":";;;;;AAAA,oCAAkD;AAElD,oEAA4C;AAM5C,MAAM,YAAa,SAAQ,kBAA6B;IAAxD;;QACQ,SAAI,GAAG,OAAO,CAAC;QACf,WAAM,GAAG,iBAAU,CAAC,GAAG,CAAC;QACxB,kBAAa,GAAG,CAAC,kBAAW,CAAC,IAAI,CAAC,CAAC;IAO3C,CAAC;IALU,OAAO;QAChB,OAAO,OAAO,CAAC,OAAO,CAAC;YACtB,MAAM,EAAE,IAAI;SACZ,CAAC,CAAC;IACJ,CAAC;CACD;AAED,kBAAe,YAAY,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { IncomingMessage as HttpIncomingMessage, ServerResponse as HttpServerResponse } from './../http';
2
+ import Logger from '@fc3/logger';
3
+ import ExecutionContext, { Session } from '@fc3/execution-context';
4
+ import { HttpMethod, StatusCode, ContentType, IncomingRequest, OutgoingResponse } from '@fc3/http';
5
+ import JsonResultSerializer from './result-serializer/json';
6
+ import HtmlResultSerializer from './result-serializer/html';
7
+ export type AllowedOutputs = string | Buffer | object;
8
+ declare abstract class Endpoint<Input, Output extends AllowedOutputs> {
9
+ private request;
10
+ private response;
11
+ private content_type;
12
+ abstract path: string;
13
+ abstract method: HttpMethod;
14
+ abstract content_types: ContentType[];
15
+ setRequest(request: IncomingRequest): void;
16
+ setResponse(response: OutgoingResponse): void;
17
+ serve(): Promise<void>;
18
+ protected getRequest(): IncomingRequest;
19
+ protected getNativeRequest(): HttpIncomingMessage;
20
+ protected getResponse(): OutgoingResponse;
21
+ protected getNativeResponse(): HttpServerResponse;
22
+ protected getPathParameter(parameter: string): string;
23
+ protected getQueryParameter(parameter: string): string | string[] | undefined;
24
+ protected getNumericParameter(parameter: string, fallback?: number): number;
25
+ protected setStatusCode(status_code: StatusCode): void;
26
+ protected getRequestBody(): Input;
27
+ protected getLogger(): Logger;
28
+ protected getExecutionContext(): ExecutionContext;
29
+ protected applyCorsHeaders(request: IncomingRequest, response: OutgoingResponse): void;
30
+ protected getSessionId(): string;
31
+ protected setSession(session: Session): Session;
32
+ protected getSession(): Session;
33
+ protected getJsonResultSerializer(result: object): JsonResultSerializer<object>;
34
+ protected getHtmlResultSerializer(_result: object): HtmlResultSerializer<object> | Promise<HtmlResultSerializer<object>>;
35
+ protected authorize(): Promise<void>;
36
+ private serveInternal;
37
+ private serializeResult;
38
+ private getResultSerializer;
39
+ private parseBody;
40
+ private applyNecessaryHeaders;
41
+ private applyContentTypeHeader;
42
+ private getContentType;
43
+ private determineContentType;
44
+ private getContentTypes;
45
+ protected abstract process(): Promise<Output | void>;
46
+ }
47
+ export default Endpoint;
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/ban-types */
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const key_generator_1 = __importDefault(require("@fc3/key-generator"));
8
+ const http_1 = require("@fc3/http");
9
+ const errors_1 = require("@fc3/errors");
10
+ const json_1 = __importDefault(require("./result-serializer/json.js"));
11
+ class Endpoint {
12
+ setRequest(request) {
13
+ this.request = request;
14
+ }
15
+ setResponse(response) {
16
+ this.response = response;
17
+ }
18
+ async serve() {
19
+ const result = await this.serveInternal();
20
+ if (result === undefined) {
21
+ return;
22
+ }
23
+ this.applyNecessaryHeaders();
24
+ const response = this.getResponse();
25
+ if (typeof result === 'string' || result instanceof Buffer) {
26
+ response.send(result);
27
+ return;
28
+ }
29
+ const serialized_result = await this.serializeResult(result);
30
+ response.send(serialized_result);
31
+ }
32
+ getRequest() {
33
+ if (this.request === undefined) {
34
+ throw new errors_1.InvariantViolation('Tried to read request, but it was not set');
35
+ }
36
+ return this.request;
37
+ }
38
+ getNativeRequest() {
39
+ const request = this.getRequest();
40
+ return request.getNativeRequest();
41
+ }
42
+ getResponse() {
43
+ if (this.response === undefined) {
44
+ throw new errors_1.InvariantViolation(`
45
+ Tried to read response, but it was not setttt
46
+ `);
47
+ }
48
+ return this.response;
49
+ }
50
+ getNativeResponse() {
51
+ const response = this.getResponse();
52
+ return response.getNativeResponse();
53
+ }
54
+ getPathParameter(parameter) {
55
+ const request = this.getRequest();
56
+ const value = request.getPathParameter(parameter);
57
+ if (value === undefined) {
58
+ throw new errors_1.InvalidError(`
59
+ No value found for path parameter "${parameter}"
60
+ `);
61
+ }
62
+ return value;
63
+ }
64
+ getQueryParameter(parameter) {
65
+ const request = this.getRequest();
66
+ return request.getQueryParameter(parameter);
67
+ }
68
+ getNumericParameter(parameter, fallback) {
69
+ const raw_value = this.getQueryParameter(parameter);
70
+ if (raw_value === undefined) {
71
+ if (fallback === undefined) {
72
+ throw new errors_1.InvalidError(`Query parameter not found: ${parameter}`);
73
+ }
74
+ return fallback;
75
+ }
76
+ if (typeof raw_value !== 'string') {
77
+ throw new errors_1.InvalidError(`
78
+ Invalid numeric value for parameter ${parameter}: ${raw_value}
79
+ `);
80
+ }
81
+ const parsed_value = parseFloat(raw_value);
82
+ if (isNaN(parsed_value)) {
83
+ throw new errors_1.InvalidError(`
84
+ Invalid numeric value for parameter ${parameter}: ${raw_value}
85
+ `);
86
+ }
87
+ return parsed_value;
88
+ }
89
+ setStatusCode(status_code) {
90
+ const response = this.getResponse();
91
+ response.setStatusCode(status_code);
92
+ }
93
+ getRequestBody() {
94
+ const request = this.getRequest();
95
+ const data = request.getData();
96
+ return data;
97
+ }
98
+ getLogger() {
99
+ const execution_context = this.getExecutionContext();
100
+ return execution_context.getLogger();
101
+ }
102
+ getExecutionContext() {
103
+ const request = this.getRequest();
104
+ return request.getExecutionContext();
105
+ }
106
+ applyCorsHeaders(request, response) {
107
+ const origin = request.getAllowedCorsOrigin();
108
+ response.setHeaderValue(http_1.HttpHeader.ACCESS_CONTROL_ALLOW_ORIGIN, origin);
109
+ const allowed_headers = request.getAllowedCorsHeaders();
110
+ const header_string = allowed_headers.join(',');
111
+ response.setHeaderValue(http_1.HttpHeader.ACCESS_CONTROL_ALLOW_HEADERS, header_string);
112
+ response.setHeaderValue(http_1.HttpHeader.ACCESS_CONTROL_ALLOW_CREDENTIALS, 'true');
113
+ }
114
+ getSessionId() {
115
+ const { id } = this.getSession();
116
+ return id;
117
+ }
118
+ setSession(session) {
119
+ const response = this.getResponse();
120
+ const serializer = new http_1.CookieSerializer(session.id);
121
+ const cookie_value = serializer.serialize();
122
+ const execution_context = this.getExecutionContext();
123
+ execution_context.setSession(session);
124
+ response.setHeaderValue(http_1.HttpHeader.SET_COOKIE, cookie_value);
125
+ return session;
126
+ }
127
+ getSession() {
128
+ const request = this.getRequest();
129
+ const execution_context = this.getExecutionContext();
130
+ const session = execution_context.getSession();
131
+ const session_id = request.getSessionIdFromCookie();
132
+ if (session_id === undefined || session === undefined || session_id !== session.id) {
133
+ return this.setSession({
134
+ id: key_generator_1.default.generateToken(),
135
+ account_id: null,
136
+ username: null
137
+ });
138
+ }
139
+ return session;
140
+ }
141
+ getJsonResultSerializer(result) {
142
+ return new json_1.default(result);
143
+ }
144
+ getHtmlResultSerializer(_result) {
145
+ throw new errors_1.NotImplementedError('Must implement getHtmlResultSerializer in child class');
146
+ }
147
+ async authorize() {
148
+ // Noop by default, override this in child classes.
149
+ }
150
+ async serveInternal() {
151
+ await this.authorize();
152
+ await this.parseBody();
153
+ return this.process();
154
+ }
155
+ async serializeResult(result) {
156
+ const serializer = await this.getResultSerializer(result);
157
+ return serializer.serialize();
158
+ }
159
+ getResultSerializer(result) {
160
+ const content_type = this.getContentType();
161
+ switch (content_type) {
162
+ case http_1.ContentType.JSON:
163
+ return this.getJsonResultSerializer(result);
164
+ case http_1.ContentType.HTML:
165
+ return this.getHtmlResultSerializer(result);
166
+ default:
167
+ throw new Error(`Unable to serialize result for content type: ${content_type}`);
168
+ }
169
+ }
170
+ parseBody() {
171
+ const request = this.getRequest();
172
+ return request.parseBody();
173
+ }
174
+ applyNecessaryHeaders() {
175
+ this.applyContentTypeHeader();
176
+ }
177
+ applyContentTypeHeader() {
178
+ const content_type = this.getContentType();
179
+ const response = this.getResponse();
180
+ response.setHeaderValue(http_1.HttpHeader.CONTENT_TYPE, content_type);
181
+ }
182
+ getContentType() {
183
+ if (this.content_type === undefined) {
184
+ this.content_type = this.determineContentType();
185
+ }
186
+ return this.content_type;
187
+ }
188
+ determineContentType() {
189
+ const supported_content_types = this.getContentTypes();
190
+ if (supported_content_types.length === 1) {
191
+ return supported_content_types[0];
192
+ }
193
+ const request = this.getRequest();
194
+ const accepted_content_types = request.getAcceptedContentTypes();
195
+ const has_any_type = accepted_content_types.includes(http_1.ContentType.ANY);
196
+ const matching_type = accepted_content_types.find((content_type) => {
197
+ return supported_content_types.includes(content_type);
198
+ });
199
+ if (matching_type !== undefined) {
200
+ return matching_type;
201
+ }
202
+ if (has_any_type && supported_content_types.includes(http_1.ContentType.JSON)) {
203
+ return http_1.ContentType.JSON;
204
+ }
205
+ throw new errors_1.NotFoundError(`
206
+ No matching content types found for this request
207
+ supported content types: ${supported_content_types}
208
+ accepted content types: ${accepted_content_types}
209
+ `);
210
+ }
211
+ getContentTypes() {
212
+ return this.content_types;
213
+ }
214
+ }
215
+ exports.default = Endpoint;
216
+ //# sourceMappingURL=endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../../src/http-server/endpoint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import Endpoint from './../endpoint';
2
+ interface EndpointConstructor {
3
+ new (): Endpoint<object | unknown, string | object | Buffer>;
4
+ }
5
+ export default EndpointConstructor;
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/ban-types */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=endpoint-constructor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-constructor.js","sourceRoot":"","sources":["../../../../src/http-server/interface/endpoint-constructor.ts"],"names":[],"mappings":";AAAA,iDAAiD"}
@@ -0,0 +1,4 @@
1
+ interface ResultSerializer {
2
+ serialize(): string;
3
+ }
4
+ export default ResultSerializer;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=result-serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-serializer.js","sourceRoot":"","sources":["../../../../src/http-server/interface/result-serializer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { IncomingRequest, OutgoingResponse } from '@fc3/http';
2
+ declare abstract class Middleware {
3
+ abstract handleRequest(request: IncomingRequest, response: OutgoingResponse): Promise<boolean>;
4
+ handleError(error: Error, request: IncomingRequest, response: OutgoingResponse): Promise<boolean>;
5
+ }
6
+ export default Middleware;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class Middleware {
4
+ async handleError(error, request, response) {
5
+ return false;
6
+ }
7
+ }
8
+ exports.default = Middleware;
9
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/http-server/middleware.ts"],"names":[],"mappings":";;AAEA,MAAe,UAAU;IAMjB,KAAK,CAAC,WAAW,CACvB,KAAY,EACZ,OAAwB,EACxB,QAA0B;QAE1B,OAAO,KAAK,CAAC;IACd,CAAC;CACD;AAED,kBAAe,UAAU,CAAC"}
@@ -0,0 +1,16 @@
1
+ import ResultSerializer from './../interface/result-serializer';
2
+ declare abstract class HtmlResultSerializer<ResultType extends object> implements ResultSerializer {
3
+ private result;
4
+ constructor(result: ResultType);
5
+ serialize(): string;
6
+ protected getResult(): ResultType;
7
+ protected getCssUrls(): string[];
8
+ protected serializeCss(): string;
9
+ protected getBodyClass(): string;
10
+ private serializeLinkTags;
11
+ protected serializeMetaTags(): string;
12
+ protected getMetaMappings(): Record<string, string | number | boolean>;
13
+ abstract serializeContent(): string;
14
+ protected abstract getTitle(): string;
15
+ }
16
+ export default HtmlResultSerializer;
@@ -0,0 +1,74 @@
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 standardize_html_indentation_1 = __importDefault(require("./../utility/standardize-html-indentation.js"));
7
+ // eslint-disable-next-line @typescript-eslint/ban-types
8
+ class HtmlResultSerializer {
9
+ constructor(result) {
10
+ this.result = result;
11
+ }
12
+ serialize() {
13
+ const title = this.getTitle();
14
+ const content = this.serializeContent();
15
+ const link_tags = this.serializeLinkTags();
16
+ const meta_tags = this.serializeMetaTags();
17
+ const body_class = this.getBodyClass();
18
+ const css = this.serializeCss();
19
+ const html = `
20
+ <!doctype html>
21
+ <html>
22
+ <head>
23
+ <meta charset="UTF-8">
24
+ <meta content="text/html;charset=utf-8" http-equiv="Content-Type" />
25
+ <meta content="utf-8" http-equiv="encoding" />
26
+ <meta name="viewport" content="width=640, user-scalable=no">
27
+ <meta name="robots" content="noindex" />
28
+ <link rel="icon" href="/public/favicon.ico" type="image/x-icon">
29
+ <title>${title}</title>
30
+ ${meta_tags}
31
+ ${link_tags}
32
+ ${css}
33
+ </head>
34
+ <body class="${body_class}">
35
+ ${content}
36
+ </body>
37
+ </html>
38
+ `;
39
+ return (0, standardize_html_indentation_1.default)(html);
40
+ }
41
+ getResult() {
42
+ return this.result;
43
+ }
44
+ // Override this as necessary on child classes:
45
+ getCssUrls() {
46
+ return [];
47
+ }
48
+ serializeCss() {
49
+ return '';
50
+ }
51
+ getBodyClass() {
52
+ return '';
53
+ }
54
+ serializeLinkTags() {
55
+ const css_urls = this.getCssUrls();
56
+ const serialized_links = css_urls.map((url) => {
57
+ return `<link rel="stylesheet" href="${url}">`;
58
+ });
59
+ return serialized_links.join('\n');
60
+ }
61
+ serializeMetaTags() {
62
+ const meta_mappings = this.getMetaMappings();
63
+ const serialized_tags = Object.entries(meta_mappings).map((tuple) => {
64
+ const [key, value] = tuple;
65
+ return `<meta name="${key}" content="${value}" />`;
66
+ });
67
+ return serialized_tags.join('\n');
68
+ }
69
+ getMetaMappings() {
70
+ return {};
71
+ }
72
+ }
73
+ exports.default = HtmlResultSerializer;
74
+ //# sourceMappingURL=html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../../../src/http-server/result-serializer/html.ts"],"names":[],"mappings":";;;;;AACA,oHAA0F;AAE1F,wDAAwD;AACxD,MAAe,oBAAoB;IAIlC,YAAmB,MAAkB;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAEM,SAAS;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEhC,MAAM,IAAI,GAAG;;;;;;;;;;cAUD,KAAK;OACZ,SAAS;OACT,SAAS;OACT,GAAG;;mBAES,UAAU;OACtB,OAAO;;;GAGX,CAAC;QAEF,OAAO,IAAA,sCAA0B,EAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAES,SAAS;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,+CAA+C;IACrC,UAAU;QACnB,OAAO,EAAE,CAAC;IACX,CAAC;IAES,YAAY;QACrB,OAAO,EAAE,CAAC;IACX,CAAC;IAES,YAAY;QACrB,OAAO,EAAE,CAAC;IACX,CAAC;IAEO,iBAAiB;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAEnC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7C,OAAO,gCAAgC,GAAG,IAAI,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAES,iBAAiB;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAE7C,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACnE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;YAE3B,OAAO,eAAe,GAAG,cAAc,KAAK,MAAM,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAES,eAAe;QACxB,OAAO,EAAE,CAAC;IACX,CAAC;CAID;AAED,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import ResultSerializer from './../interface/result-serializer';
2
+ declare class JsonResultSerializer<ResultType extends object> implements ResultSerializer {
3
+ private result;
4
+ constructor(result: ResultType);
5
+ serialize(): string;
6
+ protected getResult(): ResultType;
7
+ }
8
+ export default JsonResultSerializer;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // eslint-disable-next-line @typescript-eslint/ban-types
4
+ class JsonResultSerializer {
5
+ constructor(result) {
6
+ this.result = result;
7
+ }
8
+ serialize() {
9
+ const result = this.getResult();
10
+ return JSON.stringify(result);
11
+ }
12
+ getResult() {
13
+ return this.result;
14
+ }
15
+ }
16
+ exports.default = JsonResultSerializer;
17
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../../src/http-server/result-serializer/json.ts"],"names":[],"mappings":";;AAEA,wDAAwD;AACxD,MAAM,oBAAoB;IAIzB,YAAmB,MAAkB;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAEM,SAAS;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEhC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAES,SAAS;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;CACD;AAED,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { HttpMethod, ContentType, PathParameters, IncomingRequest, OutgoingResponse } from '@fc3/http';
2
+ import EndpointConstructor from './interface/endpoint-constructor';
3
+ import Endpoint from './endpoint';
4
+ declare class Route {
5
+ private endpoint_constructor;
6
+ private method;
7
+ private content_types;
8
+ private regex;
9
+ private parameter_keys;
10
+ constructor(endpoint_constructor: EndpointConstructor);
11
+ getMethod(): HttpMethod;
12
+ matchesPath(path: string): boolean;
13
+ matchesContentTypes(content_types: ContentType[]): boolean;
14
+ buildEndpoint(request: IncomingRequest, response: OutgoingResponse): Promise<Endpoint<any, any>>;
15
+ getPathParametersForRequest(request: IncomingRequest): PathParameters;
16
+ private getEndpointConstructor;
17
+ private getParameterKeys;
18
+ private getRegex;
19
+ private getContentTypes;
20
+ }
21
+ export default Route;