@grest-ts/http 0.0.23 → 0.0.25
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 +45 -0
- package/dist/src/client/GGHttpSchema.createClient.d.ts +26 -0
- package/dist/src/client/GGHttpSchema.createClient.d.ts.map +1 -1
- package/dist/src/client/GGHttpSchema.createClient.js +11 -3
- package/dist/src/client/GGHttpSchema.createClient.js.map +1 -1
- package/dist/src/index-node.d.ts +2 -0
- package/dist/src/index-node.d.ts.map +1 -1
- package/dist/src/index-node.js +2 -0
- package/dist/src/index-node.js.map +1 -1
- package/dist/src/rpc/GGHttpRouteRPC.d.ts +19 -6
- package/dist/src/rpc/GGHttpRouteRPC.d.ts.map +1 -1
- package/dist/src/rpc/GGHttpRouteRPC.js +27 -5
- package/dist/src/rpc/GGHttpRouteRPC.js.map +1 -1
- package/dist/src/rpc/openApiHelpers.d.ts +21 -0
- package/dist/src/rpc/openApiHelpers.d.ts.map +1 -0
- package/dist/src/rpc/openApiHelpers.js +70 -0
- package/dist/src/rpc/openApiHelpers.js.map +1 -0
- package/dist/src/rpc/openApiSuccessResponse.d.ts +15 -0
- package/dist/src/rpc/openApiSuccessResponse.d.ts.map +1 -0
- package/dist/src/rpc/openApiSuccessResponse.js +32 -0
- package/dist/src/rpc/openApiSuccessResponse.js.map +1 -0
- package/dist/src/schema/GGHttpSchema.d.ts +66 -1
- package/dist/src/schema/GGHttpSchema.d.ts.map +1 -1
- package/dist/src/schema/GGHttpSchema.js.map +1 -1
- package/dist/src/schema/httpSchema.d.ts.map +1 -1
- package/dist/src/schema/httpSchema.js +14 -3
- package/dist/src/schema/httpSchema.js.map +1 -1
- package/dist/src/server/GGHttp.d.ts +6 -1
- package/dist/src/server/GGHttp.d.ts.map +1 -1
- package/dist/src/server/GGHttp.js +5 -0
- package/dist/src/server/GGHttp.js.map +1 -1
- package/dist/src/server/GGHttpSchema.startServer.js +15 -0
- package/dist/src/server/GGHttpSchema.startServer.js.map +1 -1
- package/dist/src/server/GGHttpServer.d.ts +43 -0
- package/dist/src/server/GGHttpServer.d.ts.map +1 -1
- package/dist/src/server/GGHttpServer.js +70 -2
- package/dist/src/server/GGHttpServer.js.map +1 -1
- package/dist/tsconfig.publish.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/client/GGHttpSchema.createClient.ts +45 -4
- package/src/index-node.ts +2 -0
- package/src/rpc/GGHttpRouteRPC.ts +34 -6
- package/src/rpc/openApiHelpers.ts +87 -0
- package/src/rpc/openApiSuccessResponse.ts +38 -0
- package/src/schema/GGHttpSchema.ts +73 -1
- package/src/schema/httpSchema.ts +16 -4
- package/src/server/GGHttp.ts +6 -1
- package/src/server/GGHttpSchema.startServer.ts +14 -0
- package/src/server/GGHttpServer.ts +84 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpSchema.js","sourceRoot":"","sources":["../../../src/schema/httpSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAKzD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,UAAU,CACtB,QAAoC;IAEpC,OAAO,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,mBAAmB;IAEJ,SAAS,CAA4B;IAC9C,WAAW,GAAW,EAAE,CAAA;IACxB,YAAY,GAAgC,EAAE,CAAA;IAEtD,YAAY,QAAoC;QAC5C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAED,UAAU,CAAC,MAAc;QACrB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAA;QACzB,OAAO,IAAI,CAAA;IACf,CAAC;IAED,GAAG,CAAsC,UAAa;QAClD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAClC,OAAO,IAA+D,CAAA;IAC1E,CAAC;IAED,SAAS,CAAQ,UAA+B;QAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,gBAAgB,UAAU,CAAC,IAAI,oDAAoD,CAAC,CAAC;QACzG,CAAC;QAED,MAAM,UAAU,GAA8B;YAC1C,aAAa,CAAC,GAAkB;gBAC5B,
|
|
1
|
+
{"version":3,"file":"httpSchema.js","sourceRoot":"","sources":["../../../src/schema/httpSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,12 @@ import { GGContractApiDefinition, GGContractImplementation } from "@grest-ts/sch
|
|
|
3
3
|
import { GGHttpServerMiddleware } from "./GGHttpSchema.startServer";
|
|
4
4
|
import { GGHttpServer } from "./GGHttpServer";
|
|
5
5
|
export declare class GGHttp<TContext = undefined> {
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Protected (not private) so that plugin modules can access the underlying server
|
|
8
|
+
* via module augmentation (e.g. @grest-ts/openapi adds .openApi() to the builder).
|
|
9
|
+
* Do not tighten back to private.
|
|
10
|
+
*/
|
|
11
|
+
protected readonly httpServer: GGHttpServer;
|
|
7
12
|
private readonly middlewares;
|
|
8
13
|
constructor(httpServer: GGHttpServer);
|
|
9
14
|
use<M extends GGHttpServerMiddleware>(middleware: M): GGHttp<TContext | M>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GGHttp.d.ts","sourceRoot":"","sources":["../../../src/server/GGHttp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAC,uBAAuB,EAAE,wBAAwB,EAAC,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,qBAAa,MAAM,CAAC,QAAQ,GAAG,SAAS;IAEpC,
|
|
1
|
+
{"version":3,"file":"GGHttp.d.ts","sourceRoot":"","sources":["../../../src/server/GGHttp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAC,uBAAuB,EAAE,wBAAwB,EAAC,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,qBAAa,MAAM,CAAC,QAAQ,GAAG,SAAS;IAEpC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAA;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;gBAEhD,UAAU,EAAE,YAAY;IAI7B,GAAG,CAAC,CAAC,SAAS,sBAAsB,EAAE,UAAU,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;IAK1E,IAAI,CAAC,SAAS,SAAS,uBAAuB,EAAE,cAAc,EACjE,MAAM,EAAE,YAAY,CAAC,SAAS,EAAE,cAAc,CAAC,EAC/C,cAAc,EAAE,wBAAwB,CAAC,SAAS,CAAC,GACpD,IAAI;CAIV"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
export class GGHttp {
|
|
2
|
+
/**
|
|
3
|
+
* Protected (not private) so that plugin modules can access the underlying server
|
|
4
|
+
* via module augmentation (e.g. @grest-ts/openapi adds .openApi() to the builder).
|
|
5
|
+
* Do not tighten back to private.
|
|
6
|
+
*/
|
|
2
7
|
httpServer;
|
|
3
8
|
middlewares = [];
|
|
4
9
|
constructor(httpServer) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GGHttp.js","sourceRoot":"","sources":["../../../src/server/GGHttp.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,MAAM;
|
|
1
|
+
{"version":3,"file":"GGHttp.js","sourceRoot":"","sources":["../../../src/server/GGHttp.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,MAAM;IAEf;;;;OAIG;IACgB,UAAU,CAAc;IAC1B,WAAW,GAA6B,EAAE,CAAC;IAE5D,YAAY,UAAwB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAEM,GAAG,CAAmC,UAAa;QACtD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,OAAO,IAAW,CAAC;IACvB,CAAC;IAEM,IAAI,CACP,MAA+C,EAC/C,cAAmD;QAEnD,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAC,CAAC,CAAC;QACxF,OAAO,IAAW,CAAC;IACvB,CAAC;CACJ"}
|
|
@@ -24,10 +24,25 @@ function setupRoutes(httpSchema, implementation, config) {
|
|
|
24
24
|
const server = config.http ?? GGLocator.getScope().get(GG_HTTP_SERVER);
|
|
25
25
|
if (!server)
|
|
26
26
|
throw new Error(`No HTTP server found. Make sure to register GGHttpServerAdapter in the scope or pass handler via config`);
|
|
27
|
+
server._registerSchema(httpSchema);
|
|
27
28
|
const pathPrefix = "/" + httpSchema.pathPrefix + "/";
|
|
28
29
|
const apiMiddlewares = httpSchema.apiMiddlewares;
|
|
29
30
|
const scope = GGLocator.getScope();
|
|
30
31
|
const parentContext = GGContextStore.tryGetContext();
|
|
32
|
+
for (const mw of apiMiddlewares) {
|
|
33
|
+
const hKeys = Object.keys(mw.headers);
|
|
34
|
+
const rhKeys = Object.keys(mw.responseHeaders);
|
|
35
|
+
if (hKeys.length)
|
|
36
|
+
server.registerCorsHeaders(hKeys);
|
|
37
|
+
if (rhKeys.length)
|
|
38
|
+
server.registerCorsExposeHeaders(rhKeys);
|
|
39
|
+
}
|
|
40
|
+
for (const methodName in httpSchema.codec) {
|
|
41
|
+
const codec = httpSchema.codec[methodName];
|
|
42
|
+
const rhKeys = Object.keys(codec?.responseHeaders ?? {});
|
|
43
|
+
if (rhKeys.length)
|
|
44
|
+
server.registerCorsExposeHeaders(rhKeys);
|
|
45
|
+
}
|
|
31
46
|
server.onStart(() => {
|
|
32
47
|
GG_DISCOVERY.tryGet()?.registerRoutes([{
|
|
33
48
|
runtime: scope.serviceName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GGHttpSchema.startServer.js","sourceRoot":"","sources":["../../../src/server/GGHttpSchema.startServer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GGHttpSchema.startServer.js","sourceRoot":"","sources":["../../../src/server/GGHttpSchema.startServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import http from "http";
|
|
2
2
|
import { HttpMethod } from "@grest-ts/common";
|
|
3
3
|
import { GGLocatorKey, GGLocatorScope } from "@grest-ts/locator";
|
|
4
|
+
import type { GGHttpSchema } from "../schema/GGHttpSchema";
|
|
5
|
+
type AnyWebSocketSchema = {
|
|
6
|
+
name: string;
|
|
7
|
+
path: string;
|
|
8
|
+
contract: unknown;
|
|
9
|
+
middlewares: readonly unknown[];
|
|
10
|
+
};
|
|
4
11
|
export interface GGHttpServerAdapterConfig {
|
|
5
12
|
key?: GGLocatorKey<GGHttpServer>;
|
|
6
13
|
port?: number;
|
|
@@ -25,15 +32,50 @@ export declare class GGHttpServer {
|
|
|
25
32
|
private readonly configuredPort;
|
|
26
33
|
private readonly _onStart;
|
|
27
34
|
private readonly _onTeardown;
|
|
35
|
+
/**
|
|
36
|
+
* Mutable during compose(); frozen and exposed as ReadonlyArray once the server starts.
|
|
37
|
+
* Framework-internal — only setupRoutes() (in GGHttpSchema.startServer.ts) should push here.
|
|
38
|
+
*/
|
|
39
|
+
private readonly _registeredSchemas;
|
|
40
|
+
/**
|
|
41
|
+
* All GGHttpSchema instances registered on this server, in registration order.
|
|
42
|
+
* Available from the moment compose() begins; frozen (no further push allowed) once start() is called.
|
|
43
|
+
*/
|
|
44
|
+
get registeredSchemas(): ReadonlyArray<GGHttpSchema<any, any>>;
|
|
28
45
|
readonly httpServer: http.Server;
|
|
29
46
|
private activeRequests;
|
|
30
47
|
private router;
|
|
48
|
+
private static readonly DEFAULT_CORS_HEADERS;
|
|
49
|
+
private readonly _corsHeaders;
|
|
50
|
+
private _corsHeadersCache;
|
|
51
|
+
private readonly _corsExposeHeaders;
|
|
52
|
+
private _corsExposeHeadersCache;
|
|
31
53
|
constructor(config?: GGHttpServerAdapterConfig);
|
|
54
|
+
/**
|
|
55
|
+
* Register custom header names for CORS Access-Control-Allow-Headers.
|
|
56
|
+
* Called automatically during schema registration based on middleware declarations.
|
|
57
|
+
*/
|
|
58
|
+
registerCorsHeaders(headers: readonly string[]): void;
|
|
59
|
+
/**
|
|
60
|
+
* Register custom header names for CORS Access-Control-Expose-Headers.
|
|
61
|
+
* Called automatically during schema registration based on codec and middleware declarations.
|
|
62
|
+
*/
|
|
63
|
+
registerCorsExposeHeaders(headers: readonly string[]): void;
|
|
32
64
|
/**
|
|
33
65
|
* Current port the server is listening to.
|
|
34
66
|
* May be undefined before start() is called.
|
|
35
67
|
*/
|
|
36
68
|
get port(): number | undefined;
|
|
69
|
+
/** @internal Called by setupRoutes() during compose(). Do not call directly. */
|
|
70
|
+
_registerSchema(schema: GGHttpSchema<any, any>): void;
|
|
71
|
+
private readonly _registeredWebSocketSchemas;
|
|
72
|
+
/**
|
|
73
|
+
* All GGWebSocketSchema instances registered on this server, in registration order.
|
|
74
|
+
* Populated automatically by GGWebSocketSchema.startServer() / .register().
|
|
75
|
+
*/
|
|
76
|
+
get registeredWebSocketSchemas(): ReadonlyArray<AnyWebSocketSchema>;
|
|
77
|
+
/** @internal Called by GGWebSocketSchema.startServer(). Do not call directly. */
|
|
78
|
+
_registerWebSocketSchema(schema: AnyWebSocketSchema): void;
|
|
37
79
|
registerRoute(method: HttpMethod, path: string, handler: GGHttpRequestCallback): void;
|
|
38
80
|
start(): Promise<void>;
|
|
39
81
|
teardown(): Promise<void>;
|
|
@@ -41,4 +83,5 @@ export declare class GGHttpServer {
|
|
|
41
83
|
onTeardown(callback: () => Promise<void> | void): this;
|
|
42
84
|
}
|
|
43
85
|
export type GGHttpRequestCallback = (req: http.IncomingMessage, res: http.ServerResponse) => Promise<void>;
|
|
86
|
+
export {};
|
|
44
87
|
//# sourceMappingURL=GGHttpServer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GGHttpServer.d.ts","sourceRoot":"","sources":["../../../src/server/GGHttpServer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAC,UAAU,EAAiB,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAY,YAAY,EAAE,cAAc,EAAuB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"GGHttpServer.d.ts","sourceRoot":"","sources":["../../../src/server/GGHttpServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,9 +13,26 @@ export class GGHttpServer {
|
|
|
13
13
|
configuredPort;
|
|
14
14
|
_onStart = [];
|
|
15
15
|
_onTeardown = [];
|
|
16
|
+
/**
|
|
17
|
+
* Mutable during compose(); frozen and exposed as ReadonlyArray once the server starts.
|
|
18
|
+
* Framework-internal — only setupRoutes() (in GGHttpSchema.startServer.ts) should push here.
|
|
19
|
+
*/
|
|
20
|
+
_registeredSchemas = [];
|
|
21
|
+
/**
|
|
22
|
+
* All GGHttpSchema instances registered on this server, in registration order.
|
|
23
|
+
* Available from the moment compose() begins; frozen (no further push allowed) once start() is called.
|
|
24
|
+
*/
|
|
25
|
+
get registeredSchemas() {
|
|
26
|
+
return this._registeredSchemas;
|
|
27
|
+
}
|
|
16
28
|
httpServer;
|
|
17
29
|
activeRequests = 0;
|
|
18
30
|
router = findMyWay();
|
|
31
|
+
static DEFAULT_CORS_HEADERS = ['Content-Type'];
|
|
32
|
+
_corsHeaders = new Set(GGHttpServer.DEFAULT_CORS_HEADERS);
|
|
33
|
+
_corsHeadersCache = GGHttpServer.DEFAULT_CORS_HEADERS.join(', ');
|
|
34
|
+
_corsExposeHeaders = new Set();
|
|
35
|
+
_corsExposeHeadersCache = '';
|
|
19
36
|
constructor(config) {
|
|
20
37
|
this.runtimeName = GGLocator.getScope().serviceName;
|
|
21
38
|
this.scope = GGLocator.getScope();
|
|
@@ -36,8 +53,10 @@ export class GGHttpServer {
|
|
|
36
53
|
if (req.headers.origin) { // For browsers
|
|
37
54
|
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
38
55
|
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS');
|
|
39
|
-
res.setHeader('Access-Control-Allow-Headers',
|
|
40
|
-
|
|
56
|
+
res.setHeader('Access-Control-Allow-Headers', this._corsHeadersCache);
|
|
57
|
+
if (this._corsExposeHeadersCache) {
|
|
58
|
+
res.setHeader('Access-Control-Expose-Headers', this._corsExposeHeadersCache);
|
|
59
|
+
}
|
|
41
60
|
}
|
|
42
61
|
if (req.method === 'OPTIONS') {
|
|
43
62
|
res.writeHead(204);
|
|
@@ -67,6 +86,38 @@ export class GGHttpServer {
|
|
|
67
86
|
? https.createServer({ cert: config.tls.cert, key: config.tls.key }, handler)
|
|
68
87
|
: http.createServer(handler);
|
|
69
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Register custom header names for CORS Access-Control-Allow-Headers.
|
|
91
|
+
* Called automatically during schema registration based on middleware declarations.
|
|
92
|
+
*/
|
|
93
|
+
registerCorsHeaders(headers) {
|
|
94
|
+
let changed = false;
|
|
95
|
+
for (const h of headers) {
|
|
96
|
+
if (!this._corsHeaders.has(h)) {
|
|
97
|
+
this._corsHeaders.add(h);
|
|
98
|
+
changed = true;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (changed) {
|
|
102
|
+
this._corsHeadersCache = Array.from(this._corsHeaders).join(', ');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Register custom header names for CORS Access-Control-Expose-Headers.
|
|
107
|
+
* Called automatically during schema registration based on codec and middleware declarations.
|
|
108
|
+
*/
|
|
109
|
+
registerCorsExposeHeaders(headers) {
|
|
110
|
+
let changed = false;
|
|
111
|
+
for (const h of headers) {
|
|
112
|
+
if (!this._corsExposeHeaders.has(h)) {
|
|
113
|
+
this._corsExposeHeaders.add(h);
|
|
114
|
+
changed = true;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (changed) {
|
|
118
|
+
this._corsExposeHeadersCache = Array.from(this._corsExposeHeaders).join(', ');
|
|
119
|
+
}
|
|
120
|
+
}
|
|
70
121
|
/**
|
|
71
122
|
* Current port the server is listening to.
|
|
72
123
|
* May be undefined before start() is called.
|
|
@@ -77,10 +128,27 @@ export class GGHttpServer {
|
|
|
77
128
|
// =========================================================================
|
|
78
129
|
// Common implementation
|
|
79
130
|
// =========================================================================
|
|
131
|
+
/** @internal Called by setupRoutes() during compose(). Do not call directly. */
|
|
132
|
+
_registerSchema(schema) {
|
|
133
|
+
this._registeredSchemas.push(schema);
|
|
134
|
+
}
|
|
135
|
+
_registeredWebSocketSchemas = [];
|
|
136
|
+
/**
|
|
137
|
+
* All GGWebSocketSchema instances registered on this server, in registration order.
|
|
138
|
+
* Populated automatically by GGWebSocketSchema.startServer() / .register().
|
|
139
|
+
*/
|
|
140
|
+
get registeredWebSocketSchemas() {
|
|
141
|
+
return this._registeredWebSocketSchemas;
|
|
142
|
+
}
|
|
143
|
+
/** @internal Called by GGWebSocketSchema.startServer(). Do not call directly. */
|
|
144
|
+
_registerWebSocketSchema(schema) {
|
|
145
|
+
this._registeredWebSocketSchemas.push(schema);
|
|
146
|
+
}
|
|
80
147
|
registerRoute(method, path, handler) {
|
|
81
148
|
this.router.on(method, path, handler);
|
|
82
149
|
}
|
|
83
150
|
async start() {
|
|
151
|
+
Object.freeze(this._registeredSchemas);
|
|
84
152
|
this._port = await new Promise((resolve) => {
|
|
85
153
|
this.httpServer.listen(this.configuredPort, '0.0.0.0', () => {
|
|
86
154
|
const port = this.httpServer.address().port;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GGHttpServer.js","sourceRoot":"","sources":["../../../src/server/GGHttpServer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAa,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAC,SAAS,EAAgC,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAChG,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAC;AACvC,OAAO,SAAuB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"GGHttpServer.js","sourceRoot":"","sources":["../../../src/server/GGHttpServer.ts"],"names":[],"mappings":"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"}
|