@matter/nodejs 0.16.10 → 0.16.11-alpha.0-20260225-033797f3c
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/dist/cjs/net/NodeJsHttpEndpoint.d.ts +7 -6
- package/dist/cjs/net/NodeJsHttpEndpoint.d.ts.map +1 -1
- package/dist/cjs/net/NodeJsHttpEndpoint.js +27 -12
- package/dist/cjs/net/NodeJsHttpEndpoint.js.map +2 -2
- package/dist/esm/net/NodeJsHttpEndpoint.d.ts +7 -6
- package/dist/esm/net/NodeJsHttpEndpoint.d.ts.map +1 -1
- package/dist/esm/net/NodeJsHttpEndpoint.js +28 -13
- package/dist/esm/net/NodeJsHttpEndpoint.js.map +1 -1
- package/package.json +10 -10
- package/src/net/NodeJsHttpEndpoint.ts +32 -15
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { HttpEndpoint, HttpEndpointFactory } from "#general";
|
|
7
|
-
import {
|
|
7
|
+
import type { Server, ServerResponse } from "node:http";
|
|
8
|
+
import { IncomingMessage } from "node:http";
|
|
8
9
|
/**
|
|
9
10
|
* An implementation of {@link HttpEndpoint} that uses Node.js's standard {@link Server}.
|
|
10
11
|
*
|
|
@@ -15,14 +16,14 @@ import { IncomingMessage, Server, ServerResponse } from "node:http";
|
|
|
15
16
|
*/
|
|
16
17
|
export declare class NodeJsHttpEndpoint implements HttpEndpoint {
|
|
17
18
|
#private;
|
|
18
|
-
static create(
|
|
19
|
+
static create(config: NodeJsHttpEndpoint.Configuration): Promise<NodeJsHttpEndpoint>;
|
|
19
20
|
/**
|
|
20
21
|
* Create a new endpoint.
|
|
21
22
|
*
|
|
22
|
-
* You may pass an existing {@link Server} or pass {@link NodeJsHttpEndpoint.
|
|
23
|
+
* You may pass an existing {@link Server} or pass {@link NodeJsHttpEndpoint.Configuration} to create a server dedicated
|
|
23
24
|
* to this endpoint.
|
|
24
25
|
*/
|
|
25
|
-
constructor(
|
|
26
|
+
constructor(config: Server | NodeJsHttpEndpoint.Configuration);
|
|
26
27
|
get server(): Server<typeof IncomingMessage, typeof ServerResponse>;
|
|
27
28
|
get ready(): Promise<void>;
|
|
28
29
|
set http(handler: HttpEndpoint.HttpHandler | undefined);
|
|
@@ -30,13 +31,13 @@ export declare class NodeJsHttpEndpoint implements HttpEndpoint {
|
|
|
30
31
|
close: () => Promise<void>;
|
|
31
32
|
}
|
|
32
33
|
export declare namespace NodeJsHttpEndpoint {
|
|
33
|
-
interface
|
|
34
|
+
interface Configuration extends HttpEndpoint.Configuration {
|
|
34
35
|
basePathForUnixSockets?: string;
|
|
35
36
|
}
|
|
36
37
|
class Factory extends HttpEndpointFactory {
|
|
37
38
|
#private;
|
|
38
39
|
constructor(basePathForUnixSockets?: string);
|
|
39
|
-
create(
|
|
40
|
+
create(config: HttpEndpoint.Configuration): Promise<NodeJsHttpEndpoint>;
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
43
|
//# sourceMappingURL=NodeJsHttpEndpoint.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeJsHttpEndpoint.d.ts","sourceRoot":"","sources":["../../../src/net/NodeJsHttpEndpoint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAuB,YAAY,EAAE,mBAAmB,EAAwB,MAAM,UAAU,CAAC;AAExG,OAAO,
|
|
1
|
+
{"version":3,"file":"NodeJsHttpEndpoint.d.ts","sourceRoot":"","sources":["../../../src/net/NodeJsHttpEndpoint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAuB,YAAY,EAAE,mBAAmB,EAAwB,MAAM,UAAU,CAAC;AAExG,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAoC,eAAe,EAAE,MAAM,WAAW,CAAC;AAY9E;;;;;;;GAOG;AACH,qBAAa,kBAAmB,YAAW,YAAY;;WAYtC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAM1F;;;;;OAKG;gBACS,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAAC,aAAa;IAe7D,IAAI,MAAM,0DAET;IAqHD,IAAI,KAAK,kBAER;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,WAAW,GAAG,SAAS,EAsBrD;IAED,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,GAAG,SAAS,EA6BjD;IAED,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CA8D9B;AA8CD,yBAAiB,kBAAkB,CAAC;IAChC,UAAiB,aAAc,SAAQ,YAAY,CAAC,aAAa;QAC7D,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACnC;IAED,MAAa,OAAQ,SAAQ,mBAAmB;;oBAGhC,sBAAsB,CAAC,EAAE,MAAM;QAKrC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,aAAa;KAMlD;CACJ"}
|
|
@@ -24,6 +24,7 @@ module.exports = __toCommonJS(NodeJsHttpEndpoint_exports);
|
|
|
24
24
|
var import_general = require("#general");
|
|
25
25
|
var import_node_fs = require("node:fs");
|
|
26
26
|
var import_node_http = require("node:http");
|
|
27
|
+
var import_node_https = require("node:https");
|
|
27
28
|
var import_node_path = require("node:path");
|
|
28
29
|
var import_WsAdapter = require("./WsAdapter.js");
|
|
29
30
|
/**
|
|
@@ -42,23 +43,23 @@ class NodeJsHttpEndpoint {
|
|
|
42
43
|
#notFound;
|
|
43
44
|
#wsAdapter;
|
|
44
45
|
#wsAdapterFactory;
|
|
45
|
-
static async create(
|
|
46
|
-
const endpoint = new NodeJsHttpEndpoint(
|
|
46
|
+
static async create(config) {
|
|
47
|
+
const endpoint = new NodeJsHttpEndpoint(config);
|
|
47
48
|
await endpoint.ready;
|
|
48
49
|
return endpoint;
|
|
49
50
|
}
|
|
50
51
|
/**
|
|
51
52
|
* Create a new endpoint.
|
|
52
53
|
*
|
|
53
|
-
* You may pass an existing {@link Server} or pass {@link NodeJsHttpEndpoint.
|
|
54
|
+
* You may pass an existing {@link Server} or pass {@link NodeJsHttpEndpoint.Configuration} to create a server dedicated
|
|
54
55
|
* to this endpoint.
|
|
55
56
|
*/
|
|
56
|
-
constructor(
|
|
57
|
+
constructor(config) {
|
|
57
58
|
let close, ready, server, notFound;
|
|
58
|
-
if ("on" in
|
|
59
|
-
({ close, ready, server, notFound } = this.#bindToServer(
|
|
59
|
+
if ("on" in config) {
|
|
60
|
+
({ close, ready, server, notFound } = this.#bindToServer(config));
|
|
60
61
|
} else {
|
|
61
|
-
({ close, ready, server, notFound } = this.#createDedicatedServer(
|
|
62
|
+
({ close, ready, server, notFound } = this.#createDedicatedServer(config));
|
|
62
63
|
}
|
|
63
64
|
this.#server = server;
|
|
64
65
|
this.#ready = ready;
|
|
@@ -80,14 +81,28 @@ class NodeJsHttpEndpoint {
|
|
|
80
81
|
};
|
|
81
82
|
}
|
|
82
83
|
#createDedicatedServer(options) {
|
|
83
|
-
const server = (0, import_node_http.createServer)({ keepAlive: true });
|
|
84
|
-
const opts = {};
|
|
85
84
|
const address = import_general.AppAddress.for(options.address);
|
|
85
|
+
let server;
|
|
86
|
+
if (address.isTls) {
|
|
87
|
+
if (options.certificate === void 0 || options.key === void 0) {
|
|
88
|
+
throw new import_general.NetworkError(
|
|
89
|
+
`Cannot create HTTPS endpoint for ${address} because no certificate and/or key is present`
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
server = (0, import_node_https.createServer)({
|
|
93
|
+
keepAlive: true,
|
|
94
|
+
cert: options.certificate,
|
|
95
|
+
key: options.key
|
|
96
|
+
});
|
|
97
|
+
} else {
|
|
98
|
+
server = (0, import_node_http.createServer)({ keepAlive: true });
|
|
99
|
+
}
|
|
100
|
+
const opts = {};
|
|
86
101
|
const { transport } = address;
|
|
87
102
|
switch (transport.kind) {
|
|
88
103
|
case "ip":
|
|
89
104
|
if (!address.isWildcardHost) {
|
|
90
|
-
opts.host = address.
|
|
105
|
+
opts.host = address.hostname;
|
|
91
106
|
}
|
|
92
107
|
if (!address.isWildcardPort) {
|
|
93
108
|
opts.port = address.portNum;
|
|
@@ -292,10 +307,10 @@ function respondError(res, code) {
|
|
|
292
307
|
super();
|
|
293
308
|
this.#basePathForUnixSockets = basePathForUnixSockets;
|
|
294
309
|
}
|
|
295
|
-
async create(
|
|
310
|
+
async create(config) {
|
|
296
311
|
return NodeJsHttpEndpoint2.create({
|
|
297
312
|
basePathForUnixSockets: this.#basePathForUnixSockets,
|
|
298
|
-
...
|
|
313
|
+
...config
|
|
299
314
|
});
|
|
300
315
|
}
|
|
301
316
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/net/NodeJsHttpEndpoint.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAA6F;AAC7F,qBAAyD;
|
|
5
|
-
"names": ["resolve", "NodeJsHttpEndpoint"]
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["createHttpsServer", "createHttpServer", "resolve", "NodeJsHttpEndpoint"]
|
|
6
6
|
}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { HttpEndpoint, HttpEndpointFactory } from "#general";
|
|
7
|
-
import {
|
|
7
|
+
import type { Server, ServerResponse } from "node:http";
|
|
8
|
+
import { IncomingMessage } from "node:http";
|
|
8
9
|
/**
|
|
9
10
|
* An implementation of {@link HttpEndpoint} that uses Node.js's standard {@link Server}.
|
|
10
11
|
*
|
|
@@ -15,14 +16,14 @@ import { IncomingMessage, Server, ServerResponse } from "node:http";
|
|
|
15
16
|
*/
|
|
16
17
|
export declare class NodeJsHttpEndpoint implements HttpEndpoint {
|
|
17
18
|
#private;
|
|
18
|
-
static create(
|
|
19
|
+
static create(config: NodeJsHttpEndpoint.Configuration): Promise<NodeJsHttpEndpoint>;
|
|
19
20
|
/**
|
|
20
21
|
* Create a new endpoint.
|
|
21
22
|
*
|
|
22
|
-
* You may pass an existing {@link Server} or pass {@link NodeJsHttpEndpoint.
|
|
23
|
+
* You may pass an existing {@link Server} or pass {@link NodeJsHttpEndpoint.Configuration} to create a server dedicated
|
|
23
24
|
* to this endpoint.
|
|
24
25
|
*/
|
|
25
|
-
constructor(
|
|
26
|
+
constructor(config: Server | NodeJsHttpEndpoint.Configuration);
|
|
26
27
|
get server(): Server<typeof IncomingMessage, typeof ServerResponse>;
|
|
27
28
|
get ready(): Promise<void>;
|
|
28
29
|
set http(handler: HttpEndpoint.HttpHandler | undefined);
|
|
@@ -30,13 +31,13 @@ export declare class NodeJsHttpEndpoint implements HttpEndpoint {
|
|
|
30
31
|
close: () => Promise<void>;
|
|
31
32
|
}
|
|
32
33
|
export declare namespace NodeJsHttpEndpoint {
|
|
33
|
-
interface
|
|
34
|
+
interface Configuration extends HttpEndpoint.Configuration {
|
|
34
35
|
basePathForUnixSockets?: string;
|
|
35
36
|
}
|
|
36
37
|
class Factory extends HttpEndpointFactory {
|
|
37
38
|
#private;
|
|
38
39
|
constructor(basePathForUnixSockets?: string);
|
|
39
|
-
create(
|
|
40
|
+
create(config: HttpEndpoint.Configuration): Promise<NodeJsHttpEndpoint>;
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
43
|
//# sourceMappingURL=NodeJsHttpEndpoint.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeJsHttpEndpoint.d.ts","sourceRoot":"","sources":["../../../src/net/NodeJsHttpEndpoint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAuB,YAAY,EAAE,mBAAmB,EAAwB,MAAM,UAAU,CAAC;AAExG,OAAO,
|
|
1
|
+
{"version":3,"file":"NodeJsHttpEndpoint.d.ts","sourceRoot":"","sources":["../../../src/net/NodeJsHttpEndpoint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAuB,YAAY,EAAE,mBAAmB,EAAwB,MAAM,UAAU,CAAC;AAExG,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAoC,eAAe,EAAE,MAAM,WAAW,CAAC;AAY9E;;;;;;;GAOG;AACH,qBAAa,kBAAmB,YAAW,YAAY;;WAYtC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAM1F;;;;;OAKG;gBACS,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAAC,aAAa;IAe7D,IAAI,MAAM,0DAET;IAqHD,IAAI,KAAK,kBAER;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,WAAW,GAAG,SAAS,EAsBrD;IAED,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,GAAG,SAAS,EA6BjD;IAED,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CA8D9B;AA8CD,yBAAiB,kBAAkB,CAAC;IAChC,UAAiB,aAAc,SAAQ,YAAY,CAAC,aAAa;QAC7D,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACnC;IAED,MAAa,OAAQ,SAAQ,mBAAmB;;oBAGhC,sBAAsB,CAAC,EAAE,MAAM;QAKrC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,aAAa;KAMlD;CACJ"}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { AppAddress, asError, HttpEndpointFactory, Logger, NetworkError } from "#general";
|
|
7
7
|
import { existsSync, ReadStream, rmSync, statSync } from "node:fs";
|
|
8
|
-
import { createServer, IncomingMessage } from "node:http";
|
|
8
|
+
import { createServer as createHttpServer, IncomingMessage } from "node:http";
|
|
9
|
+
import { createServer as createHttpsServer } from "node:https";
|
|
9
10
|
import { normalize, resolve } from "node:path";
|
|
10
11
|
import { WsAdapter } from "./WsAdapter.js";
|
|
11
12
|
const logger = new Logger("NodeJsHttpEndpoint");
|
|
@@ -19,23 +20,23 @@ class NodeJsHttpEndpoint {
|
|
|
19
20
|
#notFound;
|
|
20
21
|
#wsAdapter;
|
|
21
22
|
#wsAdapterFactory;
|
|
22
|
-
static async create(
|
|
23
|
-
const endpoint = new NodeJsHttpEndpoint(
|
|
23
|
+
static async create(config) {
|
|
24
|
+
const endpoint = new NodeJsHttpEndpoint(config);
|
|
24
25
|
await endpoint.ready;
|
|
25
26
|
return endpoint;
|
|
26
27
|
}
|
|
27
28
|
/**
|
|
28
29
|
* Create a new endpoint.
|
|
29
30
|
*
|
|
30
|
-
* You may pass an existing {@link Server} or pass {@link NodeJsHttpEndpoint.
|
|
31
|
+
* You may pass an existing {@link Server} or pass {@link NodeJsHttpEndpoint.Configuration} to create a server dedicated
|
|
31
32
|
* to this endpoint.
|
|
32
33
|
*/
|
|
33
|
-
constructor(
|
|
34
|
+
constructor(config) {
|
|
34
35
|
let close, ready, server, notFound;
|
|
35
|
-
if ("on" in
|
|
36
|
-
({ close, ready, server, notFound } = this.#bindToServer(
|
|
36
|
+
if ("on" in config) {
|
|
37
|
+
({ close, ready, server, notFound } = this.#bindToServer(config));
|
|
37
38
|
} else {
|
|
38
|
-
({ close, ready, server, notFound } = this.#createDedicatedServer(
|
|
39
|
+
({ close, ready, server, notFound } = this.#createDedicatedServer(config));
|
|
39
40
|
}
|
|
40
41
|
this.#server = server;
|
|
41
42
|
this.#ready = ready;
|
|
@@ -57,14 +58,28 @@ class NodeJsHttpEndpoint {
|
|
|
57
58
|
};
|
|
58
59
|
}
|
|
59
60
|
#createDedicatedServer(options) {
|
|
60
|
-
const server = createServer({ keepAlive: true });
|
|
61
|
-
const opts = {};
|
|
62
61
|
const address = AppAddress.for(options.address);
|
|
62
|
+
let server;
|
|
63
|
+
if (address.isTls) {
|
|
64
|
+
if (options.certificate === void 0 || options.key === void 0) {
|
|
65
|
+
throw new NetworkError(
|
|
66
|
+
`Cannot create HTTPS endpoint for ${address} because no certificate and/or key is present`
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
server = createHttpsServer({
|
|
70
|
+
keepAlive: true,
|
|
71
|
+
cert: options.certificate,
|
|
72
|
+
key: options.key
|
|
73
|
+
});
|
|
74
|
+
} else {
|
|
75
|
+
server = createHttpServer({ keepAlive: true });
|
|
76
|
+
}
|
|
77
|
+
const opts = {};
|
|
63
78
|
const { transport } = address;
|
|
64
79
|
switch (transport.kind) {
|
|
65
80
|
case "ip":
|
|
66
81
|
if (!address.isWildcardHost) {
|
|
67
|
-
opts.host = address.
|
|
82
|
+
opts.host = address.hostname;
|
|
68
83
|
}
|
|
69
84
|
if (!address.isWildcardPort) {
|
|
70
85
|
opts.port = address.portNum;
|
|
@@ -269,10 +284,10 @@ function respondError(res, code) {
|
|
|
269
284
|
super();
|
|
270
285
|
this.#basePathForUnixSockets = basePathForUnixSockets;
|
|
271
286
|
}
|
|
272
|
-
async create(
|
|
287
|
+
async create(config) {
|
|
273
288
|
return NodeJsHttpEndpoint2.create({
|
|
274
289
|
basePathForUnixSockets: this.#basePathForUnixSockets,
|
|
275
|
-
...
|
|
290
|
+
...config
|
|
276
291
|
});
|
|
277
292
|
}
|
|
278
293
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/net/NodeJsHttpEndpoint.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,YAAY,SAAuB,qBAAqB,QAAQ,oBAAoB;AAC7F,SAAS,YAAY,YAAY,QAAQ,gBAAgB;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["resolve", "NodeJsHttpEndpoint"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/nodejs",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.11-alpha.0-20260225-033797f3c",
|
|
4
4
|
"description": "Node.js platform support for matter.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -44,17 +44,17 @@
|
|
|
44
44
|
"#*": "./src/*"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@matter/general": "0.16.
|
|
48
|
-
"@matter/node": "0.16.
|
|
49
|
-
"@matter/protocol": "0.16.
|
|
50
|
-
"@matter/types": "0.16.
|
|
47
|
+
"@matter/general": "0.16.11-alpha.0-20260225-033797f3c",
|
|
48
|
+
"@matter/node": "0.16.11-alpha.0-20260225-033797f3c",
|
|
49
|
+
"@matter/protocol": "0.16.11-alpha.0-20260225-033797f3c",
|
|
50
|
+
"@matter/types": "0.16.11-alpha.0-20260225-033797f3c"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@matter/model": "0.16.
|
|
54
|
-
"@matter/protocol": "0.16.
|
|
55
|
-
"@matter/testing": "0.16.
|
|
56
|
-
"@matter/tools": "0.16.
|
|
57
|
-
"@project-chip/matter.js": "0.16.
|
|
53
|
+
"@matter/model": "0.16.11-alpha.0-20260225-033797f3c",
|
|
54
|
+
"@matter/protocol": "0.16.11-alpha.0-20260225-033797f3c",
|
|
55
|
+
"@matter/testing": "0.16.11-alpha.0-20260225-033797f3c",
|
|
56
|
+
"@matter/tools": "0.16.11-alpha.0-20260225-033797f3c",
|
|
57
|
+
"@project-chip/matter.js": "0.16.11-alpha.0-20260225-033797f3c",
|
|
58
58
|
"@types/bytebuffer": "^5.0.49"
|
|
59
59
|
},
|
|
60
60
|
"files": [
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
import { AppAddress, asError, HttpEndpoint, HttpEndpointFactory, Logger, NetworkError } from "#general";
|
|
8
8
|
import { existsSync, ReadStream, rmSync, statSync } from "node:fs";
|
|
9
|
-
import {
|
|
9
|
+
import type { Server, ServerResponse } from "node:http";
|
|
10
|
+
import { createServer as createHttpServer, IncomingMessage } from "node:http";
|
|
11
|
+
import { createServer as createHttpsServer } from "node:https";
|
|
10
12
|
import { ListenOptions } from "node:net";
|
|
11
13
|
import { normalize, resolve } from "node:path";
|
|
12
14
|
import { Duplex } from "node:stream";
|
|
@@ -37,8 +39,8 @@ export class NodeJsHttpEndpoint implements HttpEndpoint {
|
|
|
37
39
|
#wsAdapter?: WsAdapter;
|
|
38
40
|
#wsAdapterFactory?: WsAdapter.Factory;
|
|
39
41
|
|
|
40
|
-
static async create(
|
|
41
|
-
const endpoint = new NodeJsHttpEndpoint(
|
|
42
|
+
static async create(config: NodeJsHttpEndpoint.Configuration): Promise<NodeJsHttpEndpoint> {
|
|
43
|
+
const endpoint = new NodeJsHttpEndpoint(config);
|
|
42
44
|
await endpoint.ready;
|
|
43
45
|
return endpoint;
|
|
44
46
|
}
|
|
@@ -46,16 +48,16 @@ export class NodeJsHttpEndpoint implements HttpEndpoint {
|
|
|
46
48
|
/**
|
|
47
49
|
* Create a new endpoint.
|
|
48
50
|
*
|
|
49
|
-
* You may pass an existing {@link Server} or pass {@link NodeJsHttpEndpoint.
|
|
51
|
+
* You may pass an existing {@link Server} or pass {@link NodeJsHttpEndpoint.Configuration} to create a server dedicated
|
|
50
52
|
* to this endpoint.
|
|
51
53
|
*/
|
|
52
|
-
constructor(
|
|
54
|
+
constructor(config: Server | NodeJsHttpEndpoint.Configuration) {
|
|
53
55
|
let close, ready, server, notFound;
|
|
54
56
|
|
|
55
|
-
if ("on" in
|
|
56
|
-
({ close, ready, server, notFound } = this.#bindToServer(
|
|
57
|
+
if ("on" in config) {
|
|
58
|
+
({ close, ready, server, notFound } = this.#bindToServer(config));
|
|
57
59
|
} else {
|
|
58
|
-
({ close, ready, server, notFound } = this.#createDedicatedServer(
|
|
60
|
+
({ close, ready, server, notFound } = this.#createDedicatedServer(config));
|
|
59
61
|
}
|
|
60
62
|
|
|
61
63
|
this.#server = server;
|
|
@@ -80,17 +82,32 @@ export class NodeJsHttpEndpoint implements HttpEndpoint {
|
|
|
80
82
|
};
|
|
81
83
|
}
|
|
82
84
|
|
|
83
|
-
#createDedicatedServer(options: NodeJsHttpEndpoint.
|
|
84
|
-
const
|
|
85
|
+
#createDedicatedServer(options: NodeJsHttpEndpoint.Configuration) {
|
|
86
|
+
const address = AppAddress.for(options.address);
|
|
87
|
+
|
|
88
|
+
let server;
|
|
89
|
+
if (address.isTls) {
|
|
90
|
+
if (options.certificate === undefined || options.key === undefined) {
|
|
91
|
+
throw new NetworkError(
|
|
92
|
+
`Cannot create HTTPS endpoint for ${address} because no certificate and/or key is present`,
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
server = createHttpsServer({
|
|
96
|
+
keepAlive: true,
|
|
97
|
+
cert: options.certificate,
|
|
98
|
+
key: options.key,
|
|
99
|
+
});
|
|
100
|
+
} else {
|
|
101
|
+
server = createHttpServer({ keepAlive: true });
|
|
102
|
+
}
|
|
85
103
|
|
|
86
104
|
const opts = {} as ListenOptions;
|
|
87
105
|
|
|
88
|
-
const address = AppAddress.for(options.address);
|
|
89
106
|
const { transport } = address;
|
|
90
107
|
switch (transport.kind) {
|
|
91
108
|
case "ip":
|
|
92
109
|
if (!address.isWildcardHost) {
|
|
93
|
-
opts.host = address.
|
|
110
|
+
opts.host = address.hostname;
|
|
94
111
|
}
|
|
95
112
|
if (!address.isWildcardPort) {
|
|
96
113
|
opts.port = address.portNum;
|
|
@@ -336,7 +353,7 @@ function respondError(res: ServerResponse, code: number) {
|
|
|
336
353
|
}
|
|
337
354
|
|
|
338
355
|
export namespace NodeJsHttpEndpoint {
|
|
339
|
-
export interface
|
|
356
|
+
export interface Configuration extends HttpEndpoint.Configuration {
|
|
340
357
|
basePathForUnixSockets?: string;
|
|
341
358
|
}
|
|
342
359
|
|
|
@@ -348,10 +365,10 @@ export namespace NodeJsHttpEndpoint {
|
|
|
348
365
|
this.#basePathForUnixSockets = basePathForUnixSockets;
|
|
349
366
|
}
|
|
350
367
|
|
|
351
|
-
async create(
|
|
368
|
+
async create(config: HttpEndpoint.Configuration) {
|
|
352
369
|
return NodeJsHttpEndpoint.create({
|
|
353
370
|
basePathForUnixSockets: this.#basePathForUnixSockets,
|
|
354
|
-
...
|
|
371
|
+
...config,
|
|
355
372
|
});
|
|
356
373
|
}
|
|
357
374
|
}
|