@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.
Files changed (60) hide show
  1. package/dist/cjs/config.d.ts +1 -1
  2. package/dist/cjs/config.js +1 -1
  3. package/dist/cjs/environment/NodeJsEnvironment.d.ts +2 -0
  4. package/dist/cjs/environment/NodeJsEnvironment.d.ts.map +1 -1
  5. package/dist/cjs/environment/NodeJsEnvironment.js +15 -3
  6. package/dist/cjs/environment/NodeJsEnvironment.js.map +1 -1
  7. package/dist/cjs/environment/ProcessManager.d.ts +1 -0
  8. package/dist/cjs/environment/ProcessManager.d.ts.map +1 -1
  9. package/dist/cjs/environment/ProcessManager.js +8 -0
  10. package/dist/cjs/environment/ProcessManager.js.map +1 -1
  11. package/dist/cjs/net/NodeJsHttpEndpoint.d.ts +42 -0
  12. package/dist/cjs/net/NodeJsHttpEndpoint.d.ts.map +1 -0
  13. package/dist/cjs/net/NodeJsHttpEndpoint.js +304 -0
  14. package/dist/cjs/net/NodeJsHttpEndpoint.js.map +6 -0
  15. package/dist/cjs/net/NodeJsUdpChannel.d.ts +1 -1
  16. package/dist/cjs/net/NodeJsUdpChannel.d.ts.map +1 -1
  17. package/dist/cjs/net/NodeJsUdpChannel.js +31 -3
  18. package/dist/cjs/net/NodeJsUdpChannel.js.map +1 -1
  19. package/dist/cjs/net/WsAdapter.d.ts +25 -0
  20. package/dist/cjs/net/WsAdapter.d.ts.map +1 -0
  21. package/dist/cjs/net/WsAdapter.js +33 -0
  22. package/dist/cjs/net/WsAdapter.js.map +6 -0
  23. package/dist/cjs/net/index.d.ts +2 -0
  24. package/dist/cjs/net/index.d.ts.map +1 -1
  25. package/dist/cjs/net/index.js +2 -0
  26. package/dist/cjs/net/index.js.map +1 -1
  27. package/dist/esm/config.d.ts +1 -1
  28. package/dist/esm/config.js +1 -1
  29. package/dist/esm/environment/NodeJsEnvironment.d.ts +2 -0
  30. package/dist/esm/environment/NodeJsEnvironment.d.ts.map +1 -1
  31. package/dist/esm/environment/NodeJsEnvironment.js +16 -3
  32. package/dist/esm/environment/NodeJsEnvironment.js.map +1 -1
  33. package/dist/esm/environment/ProcessManager.d.ts +1 -0
  34. package/dist/esm/environment/ProcessManager.d.ts.map +1 -1
  35. package/dist/esm/environment/ProcessManager.js +8 -0
  36. package/dist/esm/environment/ProcessManager.js.map +1 -1
  37. package/dist/esm/net/NodeJsHttpEndpoint.d.ts +42 -0
  38. package/dist/esm/net/NodeJsHttpEndpoint.d.ts.map +1 -0
  39. package/dist/esm/net/NodeJsHttpEndpoint.js +284 -0
  40. package/dist/esm/net/NodeJsHttpEndpoint.js.map +6 -0
  41. package/dist/esm/net/NodeJsUdpChannel.d.ts +1 -1
  42. package/dist/esm/net/NodeJsUdpChannel.d.ts.map +1 -1
  43. package/dist/esm/net/NodeJsUdpChannel.js +34 -3
  44. package/dist/esm/net/NodeJsUdpChannel.js.map +1 -1
  45. package/dist/esm/net/WsAdapter.d.ts +25 -0
  46. package/dist/esm/net/WsAdapter.d.ts.map +1 -0
  47. package/dist/esm/net/WsAdapter.js +13 -0
  48. package/dist/esm/net/WsAdapter.js.map +6 -0
  49. package/dist/esm/net/index.d.ts +2 -0
  50. package/dist/esm/net/index.d.ts.map +1 -1
  51. package/dist/esm/net/index.js +2 -0
  52. package/dist/esm/net/index.js.map +1 -1
  53. package/package.json +10 -10
  54. package/src/config.ts +1 -1
  55. package/src/environment/NodeJsEnvironment.ts +21 -3
  56. package/src/environment/ProcessManager.ts +12 -0
  57. package/src/net/NodeJsHttpEndpoint.ts +358 -0
  58. package/src/net/NodeJsUdpChannel.ts +42 -3
  59. package/src/net/WsAdapter.ts +30 -0
  60. package/src/net/index.ts +2 -0
@@ -69,7 +69,7 @@ export declare const config: {
69
69
  */
70
70
  initializeStorage: boolean;
71
71
  /**
72
- * Enables handling of SIGINT, SIGTERM and SIGUSR2 (depending on platform; default: true).
72
+ * Enables handling of SIGINT, SIGTERM, SIGUSR2 and SIGABRT (depending on platform; default: true).
73
73
  */
74
74
  trapProcessSignals: boolean;
75
75
  /**
@@ -142,7 +142,7 @@ const config = {
142
142
  initializeStorage = value;
143
143
  },
144
144
  /**
145
- * Enables handling of SIGINT, SIGTERM and SIGUSR2 (depending on platform; default: true).
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,EAOX,eAAe,EAClB,MAAM,UAAU,CAAC;AAQlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,iBAAiB,gBAqBhC;AAoFD,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe;;;EAsBnD;AAoBD,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe;;;;;;;;;;;EAiBhD"}
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
- } else if (import_general.Environment.default.has(import_general.Network)) {
98
- env.set(import_general.Network, import_general.Environment.default.get(import_general.Network));
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.vars.get("path.root", "."));
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": "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",
4
+ "mappings": "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",
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,aAGhC;IAEF,SAAS,CAAC,0BAA0B,aAGlC;CAUL"}
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,EAC/C;AAAA,EAEU,6BAA6B,MAAM;AACzC,YAAQ,IAAI,UAAU,KAAK,gBAAgB;AAC3C,YAAQ,IAAI,WAAW,KAAK,gBAAgB;AAAA,EAChD;AAAA,EAEA,iBAAiB;AACb,QAAI,KAAK,0BAA0B;AAC/B,WAAK,2BAA2B;AAChC,cAAQ,IAAI,WAAW,KAAK,iBAAiB;AAC7C,cAAQ,IAAI,QAAQ,KAAK,WAAW;AACpC,WAAK,2BAA2B;AAAA,IACpC;AAAA,EACJ;AACJ;",
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,eAAe,MAAM;AAC3B,SAAK,2BAA2B;AAEhC,WAAO,MAAM,8DAA8D;AAC3E,WAAO,KAAK,KAAK,UAAU,QAAQ,OAAO,UAAU,GAAG,QAAW,CAAC,CAAC;AAGpE,YAAQ,KAAK,GAAG;AAAA,EACpB;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;AAC3C,YAAQ,GAAG,WAAW,KAAK,YAAY;AAAA,EAC3C;AAAA,EAEU,6BAA6B,MAAM;AACzC,YAAQ,IAAI,UAAU,KAAK,gBAAgB;AAC3C,YAAQ,IAAI,WAAW,KAAK,gBAAgB;AAC5C,YAAQ,IAAI,WAAW,KAAK,YAAY;AAAA,EAC5C;AAAA,EAEA,iBAAiB;AACb,QAAI,KAAK,0BAA0B;AAC/B,WAAK,2BAA2B;AAChC,cAAQ,IAAI,WAAW,KAAK,iBAAiB;AAC7C,cAAQ,IAAI,QAAQ,KAAK,WAAW;AACpC,WAAK,2BAA2B;AAAA,IACpC;AAAA,EACJ;AACJ;",
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,EACH,KAAK,EACL,WAAW,EAaX,UAAU,EACV,iBAAiB,EACjB,aAAa,EAChB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAqCpC,qBAAa,gBAAiB,YAAW,UAAU;;WAKlC,MAAM,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,iBAAiB;IAmC9F,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"}
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
- const socketOptions = { type, reuseAddr: true };
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": "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",
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