@matter/nodejs 0.16.0-alpha.0-20251006-3fe1e7c57 → 0.16.0-alpha.0-20251013-89bb7099d
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/config.d.ts +1 -1
- package/dist/cjs/config.js +1 -1
- package/dist/cjs/environment/NodeJsEnvironment.d.ts +2 -0
- package/dist/cjs/environment/NodeJsEnvironment.d.ts.map +1 -1
- package/dist/cjs/environment/NodeJsEnvironment.js +15 -3
- package/dist/cjs/environment/NodeJsEnvironment.js.map +1 -1
- package/dist/cjs/environment/ProcessManager.d.ts +1 -0
- package/dist/cjs/environment/ProcessManager.d.ts.map +1 -1
- package/dist/cjs/environment/ProcessManager.js +8 -0
- package/dist/cjs/environment/ProcessManager.js.map +1 -1
- package/dist/cjs/net/NodeJsHttpEndpoint.d.ts +42 -0
- package/dist/cjs/net/NodeJsHttpEndpoint.d.ts.map +1 -0
- package/dist/cjs/net/NodeJsHttpEndpoint.js +304 -0
- package/dist/cjs/net/NodeJsHttpEndpoint.js.map +6 -0
- package/dist/cjs/net/NodeJsUdpChannel.d.ts +1 -1
- package/dist/cjs/net/NodeJsUdpChannel.d.ts.map +1 -1
- package/dist/cjs/net/NodeJsUdpChannel.js +31 -3
- package/dist/cjs/net/NodeJsUdpChannel.js.map +1 -1
- package/dist/cjs/net/WsAdapter.d.ts +25 -0
- package/dist/cjs/net/WsAdapter.d.ts.map +1 -0
- package/dist/cjs/net/WsAdapter.js +33 -0
- package/dist/cjs/net/WsAdapter.js.map +6 -0
- package/dist/cjs/net/index.d.ts +2 -0
- package/dist/cjs/net/index.d.ts.map +1 -1
- package/dist/cjs/net/index.js +2 -0
- package/dist/cjs/net/index.js.map +1 -1
- package/dist/esm/config.d.ts +1 -1
- package/dist/esm/config.js +1 -1
- package/dist/esm/environment/NodeJsEnvironment.d.ts +2 -0
- package/dist/esm/environment/NodeJsEnvironment.d.ts.map +1 -1
- package/dist/esm/environment/NodeJsEnvironment.js +16 -3
- package/dist/esm/environment/NodeJsEnvironment.js.map +1 -1
- package/dist/esm/environment/ProcessManager.d.ts +1 -0
- package/dist/esm/environment/ProcessManager.d.ts.map +1 -1
- package/dist/esm/environment/ProcessManager.js +8 -0
- package/dist/esm/environment/ProcessManager.js.map +1 -1
- package/dist/esm/net/NodeJsHttpEndpoint.d.ts +42 -0
- package/dist/esm/net/NodeJsHttpEndpoint.d.ts.map +1 -0
- package/dist/esm/net/NodeJsHttpEndpoint.js +284 -0
- package/dist/esm/net/NodeJsHttpEndpoint.js.map +6 -0
- package/dist/esm/net/NodeJsUdpChannel.d.ts +1 -1
- package/dist/esm/net/NodeJsUdpChannel.d.ts.map +1 -1
- package/dist/esm/net/NodeJsUdpChannel.js +34 -3
- package/dist/esm/net/NodeJsUdpChannel.js.map +1 -1
- package/dist/esm/net/WsAdapter.d.ts +25 -0
- package/dist/esm/net/WsAdapter.d.ts.map +1 -0
- package/dist/esm/net/WsAdapter.js +13 -0
- package/dist/esm/net/WsAdapter.js.map +6 -0
- package/dist/esm/net/index.d.ts +2 -0
- package/dist/esm/net/index.d.ts.map +1 -1
- package/dist/esm/net/index.js +2 -0
- package/dist/esm/net/index.js.map +1 -1
- package/package.json +10 -10
- package/src/config.ts +1 -1
- package/src/environment/NodeJsEnvironment.ts +21 -3
- package/src/environment/ProcessManager.ts +12 -0
- package/src/net/NodeJsHttpEndpoint.ts +358 -0
- package/src/net/NodeJsUdpChannel.ts +42 -3
- package/src/net/WsAdapter.ts +30 -0
- package/src/net/index.ts +2 -0
package/dist/cjs/config.d.ts
CHANGED
|
@@ -69,7 +69,7 @@ export declare const config: {
|
|
|
69
69
|
*/
|
|
70
70
|
initializeStorage: boolean;
|
|
71
71
|
/**
|
|
72
|
-
* Enables handling of SIGINT, SIGTERM and
|
|
72
|
+
* Enables handling of SIGINT, SIGTERM, SIGUSR2 and SIGABRT (depending on platform; default: true).
|
|
73
73
|
*/
|
|
74
74
|
trapProcessSignals: boolean;
|
|
75
75
|
/**
|
package/dist/cjs/config.js
CHANGED
|
@@ -142,7 +142,7 @@ const config = {
|
|
|
142
142
|
initializeStorage = value;
|
|
143
143
|
},
|
|
144
144
|
/**
|
|
145
|
-
* Enables handling of SIGINT, SIGTERM and
|
|
145
|
+
* Enables handling of SIGINT, SIGTERM, SIGUSR2 and SIGABRT (depending on platform; default: true).
|
|
146
146
|
*/
|
|
147
147
|
get trapProcessSignals() {
|
|
148
148
|
return trapProcessSignals;
|
|
@@ -43,6 +43,8 @@ import { Environment, VariableService } from "#general";
|
|
|
43
43
|
* * `runtime.signals` - By default register SIGINT and SIGUSR2 (diag) handlers, set to false if not wanted
|
|
44
44
|
* * `runtime.exitcode` - By default we set the process.exitcode to 0 (ok) or 1 (crash); set to false to disable
|
|
45
45
|
* * `runtime.unhandlederrors` - By default we log unhandled errors to matter.js log; set to false to disable
|
|
46
|
+
*
|
|
47
|
+
* TODO - this should go away. Node.js services should register with {@link ServiceBundle.default}
|
|
46
48
|
*/
|
|
47
49
|
export declare function NodeJsEnvironment(): Environment;
|
|
48
50
|
export declare function loadConfigFile(vars: VariableService): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeJsEnvironment.d.ts","sourceRoot":"","sources":["../../../src/environment/NodeJsEnvironment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAIH,WAAW,
|
|
1
|
+
{"version":3,"file":"NodeJsEnvironment.d.ts","sourceRoot":"","sources":["../../../src/environment/NodeJsEnvironment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAIH,WAAW,EAQX,eAAe,EAClB,MAAM,UAAU,CAAC;AASlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,iBAAiB,gBAqBhC;AAkGD,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe;;;EAsBnD;AAoBD,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe;;;;;;;;;;;EAiBhD"}
|
|
@@ -26,6 +26,7 @@ module.exports = __toCommonJS(NodeJsEnvironment_exports);
|
|
|
26
26
|
var import_config = require("#config.js");
|
|
27
27
|
var import_NodeJsCrypto = require("#crypto/NodeJsCrypto.js");
|
|
28
28
|
var import_general = require("#general");
|
|
29
|
+
var import_NodeJsHttpEndpoint = require("#net/NodeJsHttpEndpoint.js");
|
|
29
30
|
var import_node_fs = require("node:fs");
|
|
30
31
|
var import_promises = require("node:fs/promises");
|
|
31
32
|
var import_node_path = require("node:path");
|
|
@@ -78,6 +79,9 @@ function loadVariables(env) {
|
|
|
78
79
|
await (0, import_promises.writeFile)(configPath, JSON.stringify(configVars, void 0, 4));
|
|
79
80
|
};
|
|
80
81
|
}
|
|
82
|
+
function rootDirOf(env) {
|
|
83
|
+
return env.vars.get("path.root", ".");
|
|
84
|
+
}
|
|
81
85
|
function configureCrypto(env) {
|
|
82
86
|
import_general.Boot.init(() => {
|
|
83
87
|
if (import_config.config.installCrypto || (env.vars.boolean("nodejs.crypto") ?? true)) {
|
|
@@ -93,9 +97,16 @@ function configureNetwork(env) {
|
|
|
93
97
|
}
|
|
94
98
|
import_general.Boot.init(() => {
|
|
95
99
|
if (import_config.config.installNetwork || (env.vars.boolean("nodejs.network") ?? true)) {
|
|
100
|
+
const basePathForUnixSockets = rootDirOf(env);
|
|
96
101
|
env.set(import_general.Network, new import_NodeJsNetwork.NodeJsNetwork());
|
|
97
|
-
|
|
98
|
-
|
|
102
|
+
env.set(import_general.HttpEndpointFactory, new import_NodeJsHttpEndpoint.NodeJsHttpEndpoint.Factory(basePathForUnixSockets));
|
|
103
|
+
} else {
|
|
104
|
+
if (import_general.Environment.default.has(import_general.Network)) {
|
|
105
|
+
env.set(import_general.Network, import_general.Environment.default.get(import_general.Network));
|
|
106
|
+
}
|
|
107
|
+
if (import_general.Environment.default.has(import_general.HttpEndpointFactory)) {
|
|
108
|
+
env.set(import_general.HttpEndpointFactory, import_general.Environment.default.get(import_general.HttpEndpointFactory));
|
|
109
|
+
}
|
|
99
110
|
}
|
|
100
111
|
});
|
|
101
112
|
}
|
|
@@ -109,9 +120,10 @@ function configureStorage(env) {
|
|
|
109
120
|
}
|
|
110
121
|
const service = env.get(import_general.StorageService);
|
|
111
122
|
env.vars.use(() => {
|
|
112
|
-
service.location = env.vars.get("storage.path", env
|
|
123
|
+
service.location = env.vars.get("storage.path", rootDirOf(env));
|
|
113
124
|
});
|
|
114
125
|
service.factory = (namespace) => new import_StorageBackendDisk.StorageBackendDisk((0, import_node_path.resolve)(service.location ?? ".", namespace), env.vars.get("storage.clear", false));
|
|
126
|
+
service.resolve = (...paths) => (0, import_node_path.resolve)(rootDirOf(env), ...paths);
|
|
115
127
|
}
|
|
116
128
|
function loadConfigFile(vars) {
|
|
117
129
|
const configPath = vars.get("path.config", "config.json");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/environment/NodeJsEnvironment.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAAuB;AACvB,0BAA6B;AAC7B,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAAuB;AACvB,0BAA6B;AAC7B,qBAaO;AACP,gCAAmC;AACnC,qBAAyC;AACzC,sBAA0B;AAC1B,uBAAwB;AACxB,2BAA8B;AAC9B,gCAAmC;AACnC,4BAA+B;AA5B/B;AAAA;AAAA;AAAA;AAAA;AAwEO,SAAS,oBAAoB;AAChC,QAAM,MAAM,IAAI,2BAAY,SAAS;AAErC,gBAAc,GAAG;AACjB,kBAAgB,GAAG;AACnB,mBAAiB,GAAG;AACpB,mBAAiB,GAAG;AACpB,mBAAiB,GAAG;AAKpB,MAAI,CAAC,IAAI,KAAK,IAAI,eAAe,KAAK,sBAAO,WAAW,yBAAU,SAAS,QAAQ,OAAO,OAAO;AAC7F,QAAI,KAAK,IAAI,iBAAiB,yBAAU,IAAI;AAAA,EAChD;AAEA,+BAAc,QAAQ,OAAO,GAAG;AAEhC,uBAAO,gBAAgB;AAEvB,SAAO;AACX;AAEA,SAAS,cAAc,KAAkB;AACrC,QAAM,OAAO,IAAI;AAGjB,OAAK,eAAe,YAAY,IAAI,CAAC;AAGrC,MAAI,qBAAO,iBAAiB;AACxB,SAAK,gBAAgB,QAAQ,GAAG;AAAA,EACpC;AACA,MAAI,qBAAO,gBAAgB;AACvB,SAAK,aAAa,QAAQ,IAAI;AAAA,EAClC;AAGA,QAAM,EAAE,YAAY,WAAW,IAAI,eAAe,IAAI;AACtD,MAAI,qBAAO,gBAAgB;AACvB,SAAK,eAAe,UAAU;AAAA,EAClC;AAGA,MAAI,qBAAO,iBAAiB;AACxB,SAAK,gBAAgB,QAAQ,GAAG;AAAA,EACpC;AACA,MAAI,qBAAO,gBAAgB;AACvB,SAAK,aAAa,QAAQ,IAAI;AAAA,EAClC;AAGA,OAAK,qBAAqB,OAAO,MAAc,UAAiC;AAC5E,QAAI,UAAU,QAAW;AACrB,aAAO,WAAW,IAAI;AAAA,IAC1B;AACA,eAAW,IAAI,IAAI;AACnB,cAAM,2BAAU,YAAY,KAAK,UAAU,YAAY,QAAW,CAAC,CAAC;AAAA,EACxE;AACJ;AAEA,SAAS,UAAU,KAAkB;AAEjC,SAAO,IAAI,KAAK,IAAI,aAAa,GAAG;AACxC;AAEA,SAAS,gBAAgB,KAAkB;AACvC,sBAAK,KAAK,MAAM;AACZ,QAAI,qBAAO,kBAAkB,IAAI,KAAK,QAAQ,eAAe,KAAK,OAAO;AACrE,UAAI,IAAI,uBAAQ,IAAI,iCAAa,CAAC;AAAA,IACtC,WAAW,2BAAY,QAAQ,IAAI,qBAAM,GAAG;AACxC,UAAI,IAAI,uBAAQ,2BAAY,QAAQ,IAAI,qBAAM,CAAC;AAAA,IACnD;AAAA,EACJ,CAAC;AACL;AAEA,SAAS,iBAAiB,KAAkB;AACxC,MAAI,CAAC,qBAAO,kBAAkB,EAAE,IAAI,KAAK,QAAQ,gBAAgB,KAAK,OAAO;AACzE;AAAA,EACJ;AAEA,sBAAK,KAAK,MAAM;AACZ,QAAI,qBAAO,mBAAmB,IAAI,KAAK,QAAQ,gBAAgB,KAAK,OAAO;AACvE,YAAM,yBAAyB,UAAU,GAAG;AAC5C,UAAI,IAAI,wBAAS,IAAI,mCAAc,CAAC;AACpC,UAAI,IAAI,oCAAqB,IAAI,6CAAmB,QAAQ,sBAAsB,CAAC;AAAA,IACvF,OAAO;AACH,UAAI,2BAAY,QAAQ,IAAI,sBAAO,GAAG;AAClC,YAAI,IAAI,wBAAS,2BAAY,QAAQ,IAAI,sBAAO,CAAC;AAAA,MACrD;AACA,UAAI,2BAAY,QAAQ,IAAI,kCAAmB,GAAG;AAC9C,YAAI,IAAI,oCAAqB,2BAAY,QAAQ,IAAI,kCAAmB,CAAC;AAAA,MAC7E;AAAA,IACJ;AAAA,EACJ,CAAC;AACL;AAEA,SAAS,iBAAiB,KAAkB;AACxC,QAAM,iBAAiB,IAAI,qCAAe,GAAG;AAC7C,MAAI,IAAI,sCAAgB,cAAc;AAC1C;AAEA,SAAS,iBAAiB,KAAkB;AACxC,MAAI,CAAC,qBAAO,qBAAqB,EAAE,IAAI,KAAK,QAAQ,gBAAgB,KAAK,OAAO;AAC5E;AAAA,EACJ;AAEA,QAAM,UAAU,IAAI,IAAI,6BAAc;AAEtC,MAAI,KAAK,IAAI,MAAM;AACf,YAAQ,WAAW,IAAI,KAAK,IAAI,gBAAgB,UAAU,GAAG,CAAC;AAAA,EAClE,CAAC;AAED,UAAQ,UAAU,eACd,IAAI,iDAAmB,0BAAQ,QAAQ,YAAY,KAAK,SAAS,GAAG,IAAI,KAAK,IAAI,iBAAiB,KAAK,CAAC;AAE5G,UAAQ,UAAU,IAAI,cAAU,0BAAQ,UAAU,GAAG,GAAG,GAAG,KAAK;AACpE;AAEO,SAAS,eAAe,MAAuB;AAClD,QAAM,aAAa,KAAK,IAAI,eAAe,aAAa;AAExD,MAAI,KAAC,2BAAW,UAAU,GAAG;AACzB,WAAO,EAAE,YAAY,YAAY,CAAC,EAAE;AAAA,EACxC;AAEA,MAAI;AACJ,MAAI;AACA,qBAAa,6BAAa,UAAU,EAAE,SAAS;AAAA,EACnD,SAAS,GAAG;AACR,UAAM,IAAI,mCAAoB,oCAAoC,UAAU,SAAK,wBAAQ,CAAC,EAAE,OAAO,EAAE;AAAA,EACzG;AAEA,MAAI;AACJ,MAAI;AACA,iBAAa,KAAK,MAAM,UAAU;AAAA,EACtC,SAAS,GAAG;AACR,UAAM,IAAI,mCAAoB,oCAAoC,UAAU,SAAK,wBAAQ,CAAC,EAAE,OAAO,EAAE;AAAA,EACzG;AAEA,SAAO,EAAE,YAAY,WAAW;AACpC;AAEA,SAAS,eAAe,SAAiB;AACrC,MAAI,qBAAO,uBAAuB,QAAW;AACzC,WAAO,qBAAO;AAAA,EAClB;AACA,MAAI;AACJ,MAAI,QAAQ,aAAa,SAAS;AAC9B,oBAAY,0BAAQ,QAAQ,IAAI,WAAW,KAAK,QAAQ;AAAA,EAC5D,OAAO;AACH,oBAAY,0BAAQ,QAAQ,IAAI,QAAQ,KAAK,SAAS;AAAA,EAC1D;AAEA,MAAI,YAAY,WAAW;AACvB,gBAAY,GAAG,SAAS,IAAI,OAAO;AAAA,EACvC;AAEA,SAAO;AACX;AAEO,SAAS,YAAY,MAAuB;AAC/C,QAAM,UAAU,KAAK,IAAI,eAAe,qBAAO,sBAAsB;AACrE,QAAM,WAAW,KAAK,IAAI,aAAa,eAAe,OAAO,CAAC;AAC9D,QAAM,iBAAa,0BAAQ,UAAU,KAAK,IAAI,eAAe,qBAAO,qBAAqB,CAAC;AAE1F,SAAO;AAAA,IACH,aAAa;AAAA,IACb,MAAM;AAAA,MACF,MAAM;AAAA,MACN,QAAQ;AAAA,IACZ;AAAA,IACA,SAAS;AAAA,MACL,SAAS,qBAAO;AAAA,MAChB,UAAU,qBAAO;AAAA,MACjB,iBAAiB,qBAAO;AAAA,IAC5B;AAAA,EACJ;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -39,6 +39,7 @@ export declare class ProcessManager implements Destructable {
|
|
|
39
39
|
protected stopListener: () => void;
|
|
40
40
|
protected crashListener: () => void;
|
|
41
41
|
protected interruptHandler: () => void;
|
|
42
|
+
protected abortHandler: () => never;
|
|
42
43
|
protected exitHandler: () => void;
|
|
43
44
|
protected diagnosticHandler: () => void;
|
|
44
45
|
protected installInterruptHandlers: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcessManager.d.ts","sourceRoot":"","sources":["../../../src/environment/ProcessManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAU,cAAc,EAAwB,MAAM,UAAU,CAAC;AAKnG;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,cAAe,YAAW,YAAY;;IAInC,SAAS,CAAC,GAAG,EAAE,WAAW;IAHtC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC;gBAGZ,GAAG,EAAE,WAAW;IActC,KAAK;IAOL,CAAC,MAAM,CAAC,OAAO,CAAC;IAIhB,SAAS,KAAK,gBAAgB,SAE7B;IAED,SAAS,KAAK,kBAAkB,SAE/B;IAED,SAAS,KAAK,wBAAwB,SAErC;IAED,SAAS,CAAC,aAAa,aAiBrB;IAEF,SAAS,CAAC,YAAY,aAMpB;IAEF,SAAS,CAAC,aAAa,aAIrB;IAEF,SAAS,CAAC,gBAAgB,aAIxB;IAEF,SAAS,CAAC,WAAW,aAInB;IAEF,SAAS,CAAC,iBAAiB,aAEzB;IAEF,SAAS,CAAC,wBAAwB,
|
|
1
|
+
{"version":3,"file":"ProcessManager.d.ts","sourceRoot":"","sources":["../../../src/environment/ProcessManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAU,cAAc,EAAwB,MAAM,UAAU,CAAC;AAKnG;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,cAAe,YAAW,YAAY;;IAInC,SAAS,CAAC,GAAG,EAAE,WAAW;IAHtC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC;gBAGZ,GAAG,EAAE,WAAW;IActC,KAAK;IAOL,CAAC,MAAM,CAAC,OAAO,CAAC;IAIhB,SAAS,KAAK,gBAAgB,SAE7B;IAED,SAAS,KAAK,kBAAkB,SAE/B;IAED,SAAS,KAAK,wBAAwB,SAErC;IAED,SAAS,CAAC,aAAa,aAiBrB;IAEF,SAAS,CAAC,YAAY,aAMpB;IAEF,SAAS,CAAC,aAAa,aAIrB;IAEF,SAAS,CAAC,gBAAgB,aAIxB;IAEF,SAAS,CAAC,YAAY,cAQpB;IAEF,SAAS,CAAC,WAAW,aAInB;IAEF,SAAS,CAAC,iBAAiB,aAEzB;IAEF,SAAS,CAAC,wBAAwB,aAIhC;IAEF,SAAS,CAAC,0BAA0B,aAIlC;CAUL"}
|
|
@@ -92,6 +92,12 @@ class ProcessManager {
|
|
|
92
92
|
this.installInterruptHandlers();
|
|
93
93
|
this.runtime.interrupt();
|
|
94
94
|
};
|
|
95
|
+
abortHandler = () => {
|
|
96
|
+
this.uninstallInterruptHandlers();
|
|
97
|
+
logger.fatal("Terminating due to SIGABRT of JS runtime, diagnostics follow");
|
|
98
|
+
logger.info(JSON.stringify(process.report.getReport(), void 0, 2));
|
|
99
|
+
process.exit(-66);
|
|
100
|
+
};
|
|
95
101
|
exitHandler = () => {
|
|
96
102
|
if (process.exitCode === 13) {
|
|
97
103
|
logger.error("Internal error: Premature process exit because ongoing work has stalled");
|
|
@@ -103,10 +109,12 @@ class ProcessManager {
|
|
|
103
109
|
installInterruptHandlers = () => {
|
|
104
110
|
process.on("SIGINT", this.interruptHandler);
|
|
105
111
|
process.on("SIGTERM", this.interruptHandler);
|
|
112
|
+
process.on("SIGABRT", this.abortHandler);
|
|
106
113
|
};
|
|
107
114
|
uninstallInterruptHandlers = () => {
|
|
108
115
|
process.off("SIGINT", this.interruptHandler);
|
|
109
116
|
process.off("SIGTERM", this.interruptHandler);
|
|
117
|
+
process.off("SIGABRT", this.abortHandler);
|
|
110
118
|
};
|
|
111
119
|
#ignoreSignals() {
|
|
112
120
|
if (this.#signalHandlersInstalled) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/environment/ProcessManager.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAwF;AANxF;AAAA;AAAA;AAAA;AAAA;AASA,MAAM,SAAS,sBAAO,IAAI,gBAAgB;AAuBnC,MAAM,eAAuC;AAAA,EAIhD,YAAsB,KAAkB;AAAlB;AAClB,SAAK,UAAU,IAAI,IAAI,6BAAc;AAErC,SAAK,QAAQ,QAAQ,GAAG,KAAK,aAAa;AAC1C,SAAK,QAAQ,QAAQ,GAAG,KAAK,YAAY;AACzC,SAAK,QAAQ,QAAQ,GAAG,KAAK,aAAa;AAE1C,QAAI,KAAK,0BAA0B;AAC/B,cAAQ,YAAY,4BAA4B,WAAS;AACrD,8BAAO,qBAAqB,KAAK;AAAA,MACrC,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EAfU;AAAA,EACV,2BAA2B;AAAA,EAgB3B,QAAQ;AACJ,SAAK,QAAQ,QAAQ,IAAI,KAAK,aAAa;AAC3C,SAAK,QAAQ,QAAQ,IAAI,KAAK,YAAY;AAC1C,SAAK,QAAQ,QAAQ,IAAI,KAAK,aAAa;AAC3C,SAAK,eAAe;AAAA,EACxB;AAAA,EAEA,CAAC,OAAO,OAAO,IAAI;AACf,SAAK,MAAM;AAAA,EACf;AAAA,EAEA,IAAc,mBAAmB;AAC7B,WAAO,KAAK,IAAI,KAAK,IAAI,mBAAmB,IAAI;AAAA,EACpD;AAAA,EAEA,IAAc,qBAAqB;AAC/B,WAAO,KAAK,IAAI,KAAK,IAAI,oBAAoB,IAAI;AAAA,EACrD;AAAA,EAEA,IAAc,2BAA2B;AACrC,WAAO,KAAK,IAAI,KAAK,IAAI,2BAA2B,IAAI;AAAA,EAC5D;AAAA,EAEU,gBAAgB,MAAM;AAC5B,SAAK,IAAI,KAAK,IAAI,MAAM;AACpB,UAAI,KAAK,kBAAkB;AACvB,YAAI,KAAK,0BAA0B;AAC/B;AAAA,QACJ;AAEA,aAAK,yBAAyB;AAE9B,gBAAQ,GAAG,WAAW,KAAK,iBAAiB;AAC5C,gBAAQ,GAAG,QAAQ,KAAK,WAAW;AAEnC,aAAK,2BAA2B;AAAA,MACpC,OAAO;AACH,aAAK,eAAe;AAAA,MACxB;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEU,eAAe,MAAM;AAC3B,SAAK,eAAe;AAEpB,QAAI,KAAK,sBAAsB,QAAQ,aAAa,QAAW;AAC3D,cAAQ,WAAW;AAAA,IACvB;AAAA,EACJ;AAAA,EAEU,gBAAgB,MAAM;AAC5B,QAAI,KAAK,oBAAoB;AACzB,cAAQ,WAAW;AAAA,IACvB;AAAA,EACJ;AAAA,EAEU,mBAAmB,MAAM;AAC/B,SAAK,2BAA2B;AAChC,SAAK,yBAAyB;AAC9B,SAAK,QAAQ,UAAU;AAAA,EAC3B;AAAA,EAEU,cAAc,MAAM;AAC1B,QAAI,QAAQ,aAAa,IAAI;AACzB,aAAO,MAAM,yEAAyE;AAAA,IAC1F;AAAA,EACJ;AAAA,EAEU,oBAAoB,MAAM;AAChC,SAAK,IAAI,SAAS;AAAA,EACtB;AAAA,EAEU,2BAA2B,MAAM;AACvC,YAAQ,GAAG,UAAU,KAAK,gBAAgB;AAC1C,YAAQ,GAAG,WAAW,KAAK,gBAAgB;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { HttpEndpoint, HttpEndpointFactory } from "#general";
|
|
7
|
+
import { IncomingMessage, Server, ServerResponse } from "node:http";
|
|
8
|
+
/**
|
|
9
|
+
* An implementation of {@link HttpEndpoint} that uses Node.js's standard {@link Server}.
|
|
10
|
+
*
|
|
11
|
+
* WebSocket support is optional. You can install by importing `@matter/nodejs-ws`.
|
|
12
|
+
*
|
|
13
|
+
* This implementation is a little ugly because the native Node.js HTTP server API is pre-async and has some design
|
|
14
|
+
* flaws. Other runtimes tend build on WinterTC standards and adapters will be much simpler.
|
|
15
|
+
*/
|
|
16
|
+
export declare class NodeJsHttpEndpoint implements HttpEndpoint {
|
|
17
|
+
#private;
|
|
18
|
+
static create(options: NodeJsHttpEndpoint.Options): Promise<NodeJsHttpEndpoint>;
|
|
19
|
+
/**
|
|
20
|
+
* Create a new endpoint.
|
|
21
|
+
*
|
|
22
|
+
* You may pass an existing {@link Server} or pass {@link NodeJsHttpEndpoint.Options} to create a server dedicated
|
|
23
|
+
* to this endpoint.
|
|
24
|
+
*/
|
|
25
|
+
constructor(optionsOrServer: Server | NodeJsHttpEndpoint.Options);
|
|
26
|
+
get server(): Server<typeof IncomingMessage, typeof ServerResponse>;
|
|
27
|
+
get ready(): Promise<void>;
|
|
28
|
+
set http(handler: HttpEndpoint.HttpHandler | undefined);
|
|
29
|
+
set ws(handler: HttpEndpoint.WsHandler | undefined);
|
|
30
|
+
close: () => Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export declare namespace NodeJsHttpEndpoint {
|
|
33
|
+
interface Options extends HttpEndpoint.Options {
|
|
34
|
+
basePathForUnixSockets?: string;
|
|
35
|
+
}
|
|
36
|
+
class Factory extends HttpEndpointFactory {
|
|
37
|
+
#private;
|
|
38
|
+
constructor(basePathForUnixSockets?: string);
|
|
39
|
+
create(options: HttpEndpoint.Options): Promise<NodeJsHttpEndpoint>;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=NodeJsHttpEndpoint.d.ts.map
|
|
@@ -0,0 +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,EAAgB,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAWlF;;;;;;;GAOG;AACH,qBAAa,kBAAmB,YAAW,YAAY;;WAYtC,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAMrF;;;;;OAKG;gBACS,eAAe,EAAE,MAAM,GAAG,kBAAkB,CAAC,OAAO;IAehE,IAAI,MAAM,0DAET;IAsGD,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,OAAQ,SAAQ,YAAY,CAAC,OAAO;QACjD,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACnC;IAED,MAAa,OAAQ,SAAQ,mBAAmB;;oBAGhC,sBAAsB,CAAC,EAAE,MAAM;QAKrC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO;KAM7C;CACJ"}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var NodeJsHttpEndpoint_exports = {};
|
|
20
|
+
__export(NodeJsHttpEndpoint_exports, {
|
|
21
|
+
NodeJsHttpEndpoint: () => NodeJsHttpEndpoint
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(NodeJsHttpEndpoint_exports);
|
|
24
|
+
var import_general = require("#general");
|
|
25
|
+
var import_node_fs = require("node:fs");
|
|
26
|
+
var import_node_http = require("node:http");
|
|
27
|
+
var import_node_path = require("node:path");
|
|
28
|
+
var import_WsAdapter = require("./WsAdapter.js");
|
|
29
|
+
/**
|
|
30
|
+
* @license
|
|
31
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
32
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
33
|
+
*/
|
|
34
|
+
const logger = new import_general.Logger("NodeJsHttpEndpoint");
|
|
35
|
+
class NodeJsHttpEndpoint {
|
|
36
|
+
#server;
|
|
37
|
+
#ready;
|
|
38
|
+
#http;
|
|
39
|
+
#httpListener;
|
|
40
|
+
#ws;
|
|
41
|
+
#wsListener;
|
|
42
|
+
#notFound;
|
|
43
|
+
#wsAdapter;
|
|
44
|
+
#wsAdapterFactory;
|
|
45
|
+
static async create(options) {
|
|
46
|
+
const endpoint = new NodeJsHttpEndpoint(options);
|
|
47
|
+
await endpoint.ready;
|
|
48
|
+
return endpoint;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Create a new endpoint.
|
|
52
|
+
*
|
|
53
|
+
* You may pass an existing {@link Server} or pass {@link NodeJsHttpEndpoint.Options} to create a server dedicated
|
|
54
|
+
* to this endpoint.
|
|
55
|
+
*/
|
|
56
|
+
constructor(optionsOrServer) {
|
|
57
|
+
let close, ready, server, notFound;
|
|
58
|
+
if ("on" in optionsOrServer) {
|
|
59
|
+
({ close, ready, server, notFound } = this.#bindToServer(optionsOrServer));
|
|
60
|
+
} else {
|
|
61
|
+
({ close, ready, server, notFound } = this.#createDedicatedServer(optionsOrServer));
|
|
62
|
+
}
|
|
63
|
+
this.#server = server;
|
|
64
|
+
this.#ready = ready;
|
|
65
|
+
this.close = close;
|
|
66
|
+
this.#notFound = notFound;
|
|
67
|
+
}
|
|
68
|
+
get server() {
|
|
69
|
+
return this.#server;
|
|
70
|
+
}
|
|
71
|
+
#bindToServer(server) {
|
|
72
|
+
return {
|
|
73
|
+
server,
|
|
74
|
+
ready: Promise.resolve(),
|
|
75
|
+
close: async () => {
|
|
76
|
+
this.http = void 0;
|
|
77
|
+
this.ws = void 0;
|
|
78
|
+
},
|
|
79
|
+
notFound: () => void 0
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
#createDedicatedServer(options) {
|
|
83
|
+
const server = (0, import_node_http.createServer)({ keepAlive: true });
|
|
84
|
+
const opts = {};
|
|
85
|
+
const address = import_general.AppAddress.for(options.address);
|
|
86
|
+
const { transport } = address;
|
|
87
|
+
switch (transport.kind) {
|
|
88
|
+
case "ip":
|
|
89
|
+
if (!address.isWildcardHost) {
|
|
90
|
+
opts.host = address.host;
|
|
91
|
+
}
|
|
92
|
+
if (!address.isWildcardPort) {
|
|
93
|
+
opts.port = address.portNum;
|
|
94
|
+
}
|
|
95
|
+
break;
|
|
96
|
+
case "unix":
|
|
97
|
+
const path = decodeURIComponent(address.hostname);
|
|
98
|
+
if (options.basePathForUnixSockets) {
|
|
99
|
+
opts.path = (0, import_node_path.resolve)(options.basePathForUnixSockets, (0, import_node_path.normalize)(path));
|
|
100
|
+
} else {
|
|
101
|
+
opts.path = (0, import_node_path.normalize)(path);
|
|
102
|
+
}
|
|
103
|
+
if ((0, import_node_fs.existsSync)(opts.path)) {
|
|
104
|
+
if ((0, import_node_fs.statSync)(opts.path).isSocket()) {
|
|
105
|
+
try {
|
|
106
|
+
(0, import_node_fs.rmSync)(opts.path);
|
|
107
|
+
} catch (e) {
|
|
108
|
+
throw new import_general.NetworkError(
|
|
109
|
+
`Error deleting previous socket at ${opts.path}: ${(0, import_general.asError)(e).message}`
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
} else {
|
|
113
|
+
throw new import_general.NetworkError(`UNIX socket path ${opts.path} exists and is not a socket`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
break;
|
|
117
|
+
default:
|
|
118
|
+
throw new import_general.NetworkError(
|
|
119
|
+
`Unsupported address type "${options.address?.type}" for HTTP endpoint`
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
server.listen(opts);
|
|
123
|
+
return {
|
|
124
|
+
server,
|
|
125
|
+
ready: new Promise((resolve2, reject) => {
|
|
126
|
+
let settled = false;
|
|
127
|
+
server.once("listening", () => {
|
|
128
|
+
if (settled) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
settled = true;
|
|
132
|
+
resolve2();
|
|
133
|
+
});
|
|
134
|
+
server.on("error", (error) => {
|
|
135
|
+
if (settled) {
|
|
136
|
+
logger.warn("HTTP server error:", error.message);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
settled = true;
|
|
140
|
+
reject(error);
|
|
141
|
+
});
|
|
142
|
+
}),
|
|
143
|
+
close: async () => {
|
|
144
|
+
return new Promise((resolve2, reject) => {
|
|
145
|
+
server.close((err) => {
|
|
146
|
+
if (err) {
|
|
147
|
+
reject(err);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
resolve2();
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
},
|
|
154
|
+
notFound: (res) => respondError(res, 404)
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
get ready() {
|
|
158
|
+
return this.#ready;
|
|
159
|
+
}
|
|
160
|
+
set http(handler) {
|
|
161
|
+
this.#http = handler;
|
|
162
|
+
if (!this.#http) {
|
|
163
|
+
if (this.#httpListener) {
|
|
164
|
+
this.#server.off("request", this.#httpListener);
|
|
165
|
+
}
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (this.#httpListener) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
this.#httpListener = (req, res) => {
|
|
172
|
+
this.#handleHttp(req, res).catch((error) => {
|
|
173
|
+
logger.error("Unhandled error in HTTP endpoint handler", error);
|
|
174
|
+
respondError(res, 500);
|
|
175
|
+
});
|
|
176
|
+
};
|
|
177
|
+
this.#server.on("request", this.#httpListener);
|
|
178
|
+
}
|
|
179
|
+
set ws(handler) {
|
|
180
|
+
this.#ws = handler;
|
|
181
|
+
if (!this.#ws) {
|
|
182
|
+
if (this.#wsListener) {
|
|
183
|
+
this.#server.off("upgrade", this.#wsListener);
|
|
184
|
+
}
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
let adapter = this.#wsAdapter;
|
|
188
|
+
if (!adapter) {
|
|
189
|
+
const factory = this.#wsAdapterFactory ?? import_WsAdapter.WsAdapter.defaultFactory;
|
|
190
|
+
if (!factory) {
|
|
191
|
+
logger.warn(
|
|
192
|
+
"WebSocket support disabled because no adapter is installed; please import @matter/nodejs-ws or equivalent"
|
|
193
|
+
);
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
adapter = this.#wsAdapter = factory();
|
|
197
|
+
}
|
|
198
|
+
this.#wsListener = (req, socket, head) => {
|
|
199
|
+
this.#handleUpgrade(adapter, req, socket, head).catch((error) => {
|
|
200
|
+
logger.error("Unhandled error WebSocket endpoint", error);
|
|
201
|
+
});
|
|
202
|
+
};
|
|
203
|
+
this.#server.on("upgrade", this.#wsListener);
|
|
204
|
+
}
|
|
205
|
+
close;
|
|
206
|
+
async #handleHttp(req, res) {
|
|
207
|
+
if (!this.#http) {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
const request = new NodeJsHttpRequest(req);
|
|
211
|
+
const response = await this.#http(request);
|
|
212
|
+
if (!response) {
|
|
213
|
+
this.#notFound(res);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
res.statusCode = response.status;
|
|
217
|
+
res.statusMessage = response.statusText;
|
|
218
|
+
response.headers.forEach(([name, value]) => res.appendHeader(name, value));
|
|
219
|
+
if (response.body === null) {
|
|
220
|
+
res.end();
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
const nodeBodyStream = import_node_fs.ReadStream.fromWeb(response.body);
|
|
224
|
+
nodeBodyStream.on("error", (error) => {
|
|
225
|
+
logger.error("Error transmitting HTTP body", error);
|
|
226
|
+
respondError(res, 500);
|
|
227
|
+
});
|
|
228
|
+
nodeBodyStream.pipe(res);
|
|
229
|
+
}
|
|
230
|
+
async #handleUpgrade(adapter, req, socket, head) {
|
|
231
|
+
if (req.headers.upgrade !== "websocket") {
|
|
232
|
+
socket.destroy();
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
if (!this.#ws) {
|
|
236
|
+
socket.destroy();
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
const request = new NodeJsHttpRequest(req);
|
|
240
|
+
try {
|
|
241
|
+
await this.#ws(request, async () => {
|
|
242
|
+
return adapter.handle(req, socket, head);
|
|
243
|
+
});
|
|
244
|
+
} finally {
|
|
245
|
+
if (!socket.destroyed) {
|
|
246
|
+
socket.destroy();
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
class NodeJsHttpRequest extends Request {
|
|
252
|
+
constructor(message) {
|
|
253
|
+
const { method, rawHeaders } = message;
|
|
254
|
+
const url = `http://${message.headers.host ?? "unknown"}${message.url ?? "/"}`;
|
|
255
|
+
const headers = new Headers();
|
|
256
|
+
for (let i = 0; i < message.rawHeaders.length; i += 2) {
|
|
257
|
+
headers.append(rawHeaders[i], rawHeaders[i + 1]);
|
|
258
|
+
}
|
|
259
|
+
const init = {
|
|
260
|
+
method,
|
|
261
|
+
headers,
|
|
262
|
+
duplex: "half"
|
|
263
|
+
// Not in RequestInit type but required by node
|
|
264
|
+
};
|
|
265
|
+
if (method !== "GET" && method !== "HEAD") {
|
|
266
|
+
init.body = import_node_http.IncomingMessage.toWeb(message);
|
|
267
|
+
}
|
|
268
|
+
super(url, init);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
function respondError(res, code) {
|
|
272
|
+
if (res.closed) {
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
try {
|
|
276
|
+
if (!res.headersSent) {
|
|
277
|
+
res.statusCode = code;
|
|
278
|
+
res.setHeader("Content-Type", "text/plain");
|
|
279
|
+
res.end(`HTTP error ${code}
|
|
280
|
+
`);
|
|
281
|
+
} else {
|
|
282
|
+
res.end();
|
|
283
|
+
}
|
|
284
|
+
} catch (e) {
|
|
285
|
+
logger.warn(`Error conveying ${code} error:`, (0, import_general.asError)(e).message);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
((NodeJsHttpEndpoint2) => {
|
|
289
|
+
class Factory extends import_general.HttpEndpointFactory {
|
|
290
|
+
#basePathForUnixSockets;
|
|
291
|
+
constructor(basePathForUnixSockets) {
|
|
292
|
+
super();
|
|
293
|
+
this.#basePathForUnixSockets = basePathForUnixSockets;
|
|
294
|
+
}
|
|
295
|
+
async create(options) {
|
|
296
|
+
return NodeJsHttpEndpoint2.create({
|
|
297
|
+
basePathForUnixSockets: this.#basePathForUnixSockets,
|
|
298
|
+
...options
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
NodeJsHttpEndpoint2.Factory = Factory;
|
|
303
|
+
})(NodeJsHttpEndpoint || (NodeJsHttpEndpoint = {}));
|
|
304
|
+
//# sourceMappingURL=NodeJsHttpEndpoint.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/net/NodeJsHttpEndpoint.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["resolve", "NodeJsHttpEndpoint"]
|
|
6
|
+
}
|
|
@@ -7,7 +7,7 @@ import { Bytes, ChannelType, UdpChannel, UdpChannelOptions, UdpSocketType } from
|
|
|
7
7
|
import * as dgram from "node:dgram";
|
|
8
8
|
export declare class NodeJsUdpChannel implements UdpChannel {
|
|
9
9
|
#private;
|
|
10
|
-
static create({ listeningPort, type, listeningAddress, netInterface }: UdpChannelOptions): Promise<NodeJsUdpChannel>;
|
|
10
|
+
static create({ listeningPort, type, listeningAddress, netInterface, reuseAddress }: UdpChannelOptions): Promise<NodeJsUdpChannel>;
|
|
11
11
|
readonly maxPayloadSize: number;
|
|
12
12
|
constructor(type: UdpSocketType, socket: dgram.Socket, netInterface?: string);
|
|
13
13
|
addMembership(membershipAddress: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeJsUdpChannel.d.ts","sourceRoot":"","sources":["../../../src/net/NodeJsUdpChannel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"NodeJsUdpChannel.d.ts","sourceRoot":"","sources":["../../../src/net/NodeJsUdpChannel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAGH,KAAK,EACL,WAAW,EAcX,UAAU,EACV,iBAAiB,EACjB,aAAa,EAChB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAqDpC,qBAAa,gBAAiB,YAAW,UAAU;;WAKlC,MAAM,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,iBAAiB;IAuD5G,QAAQ,CAAC,cAAc,SAAwB;gBAWnC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IAM5E,aAAa,CAAC,iBAAiB,EAAE,MAAM;IAkBvC,cAAc,CAAC,iBAAiB,EAAE,MAAM;IAkBxC,MAAM,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI;;;IAoCzG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK;IAsC5C,KAAK;IAUX,IAAI,IAAI,WAEP;IAED,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM;CAiB/C"}
|
|
@@ -49,7 +49,20 @@ function createDgramSocket(host, port, options) {
|
|
|
49
49
|
try {
|
|
50
50
|
socket.close();
|
|
51
51
|
} catch (error2) {
|
|
52
|
-
logger.debug("Error closing socket", error2);
|
|
52
|
+
logger.debug("Error closing socket:", error2);
|
|
53
|
+
}
|
|
54
|
+
const code = error?.code;
|
|
55
|
+
let desc = `${host ? host : options.type === "udp4" ? "0.0.0.0" : "{::}"}`;
|
|
56
|
+
if (port !== void 0) {
|
|
57
|
+
desc = `${desc}:${port}`;
|
|
58
|
+
}
|
|
59
|
+
switch (code) {
|
|
60
|
+
case "EADDRINUSE":
|
|
61
|
+
error = new import_general.AddressInUseError(`Cannot bind ${desc} because port is already in use`);
|
|
62
|
+
break;
|
|
63
|
+
default:
|
|
64
|
+
error = new import_general.BindError(`Cannot bind to ${desc} (code ${code})`);
|
|
65
|
+
break;
|
|
53
66
|
}
|
|
54
67
|
reject(error);
|
|
55
68
|
};
|
|
@@ -73,11 +86,26 @@ class NodeJsUdpChannel {
|
|
|
73
86
|
#type;
|
|
74
87
|
#socket;
|
|
75
88
|
#netInterface;
|
|
76
|
-
static async create({ listeningPort, type, listeningAddress, netInterface }) {
|
|
77
|
-
|
|
89
|
+
static async create({ listeningPort, type, listeningAddress, netInterface, reuseAddress }) {
|
|
90
|
+
let dgramType;
|
|
91
|
+
switch (type) {
|
|
92
|
+
case "udp":
|
|
93
|
+
case "udp6":
|
|
94
|
+
dgramType = "udp6";
|
|
95
|
+
break;
|
|
96
|
+
case "udp4":
|
|
97
|
+
dgramType = "udp4";
|
|
98
|
+
break;
|
|
99
|
+
default:
|
|
100
|
+
throw new import_general.ImplementationError(`Unrecognized UDP socket type ${type}`);
|
|
101
|
+
}
|
|
102
|
+
const socketOptions = { type: dgramType };
|
|
78
103
|
if (type === "udp6") {
|
|
79
104
|
socketOptions.ipv6Only = true;
|
|
80
105
|
}
|
|
106
|
+
if (reuseAddress) {
|
|
107
|
+
socketOptions.reuseAddr = true;
|
|
108
|
+
}
|
|
81
109
|
const socket = await createDgramSocket(listeningAddress, listeningPort, socketOptions);
|
|
82
110
|
socket.setBroadcast(true);
|
|
83
111
|
let netInterfaceZone;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/net/NodeJsUdpChannel.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["error"]
|
|
6
6
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { HttpEndpoint } from "#general";
|
|
7
|
+
import { IncomingMessage } from "node:http";
|
|
8
|
+
import { Duplex } from "node:stream";
|
|
9
|
+
/**
|
|
10
|
+
* This is a pluggable component that handles the upgrade to a WsConnection.
|
|
11
|
+
*
|
|
12
|
+
* We do not implement directly here because Node.js does not support WebSocket servers natively, so we must use a
|
|
13
|
+
* third-party dependency.
|
|
14
|
+
*/
|
|
15
|
+
export interface WsAdapter {
|
|
16
|
+
handle(req: IncomingMessage, socket: Duplex, head: Buffer): Promise<HttpEndpoint.WsConnection>;
|
|
17
|
+
close(): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
export declare namespace WsAdapter {
|
|
20
|
+
let defaultFactory: undefined | Factory;
|
|
21
|
+
interface Factory {
|
|
22
|
+
(): WsAdapter;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=WsAdapter.d.ts.map
|