@matter/nodejs 0.11.0-alpha.0-20241005-e3e4e4a7a

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 (197) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1 -0
  3. package/dist/cjs/behavior/index.d.ts +7 -0
  4. package/dist/cjs/behavior/index.d.ts.map +1 -0
  5. package/dist/cjs/behavior/index.js +8 -0
  6. package/dist/cjs/behavior/index.js.map +6 -0
  7. package/dist/cjs/behavior/instrumentation.d.ts +11 -0
  8. package/dist/cjs/behavior/instrumentation.d.ts.map +1 -0
  9. package/dist/cjs/behavior/instrumentation.js +47 -0
  10. package/dist/cjs/behavior/instrumentation.js.map +6 -0
  11. package/dist/cjs/behavior/register.d.ts +7 -0
  12. package/dist/cjs/behavior/register.d.ts.map +1 -0
  13. package/dist/cjs/behavior/register.js +9 -0
  14. package/dist/cjs/behavior/register.js.map +6 -0
  15. package/dist/cjs/crypto/NodeJsCrypto.d.ts +29 -0
  16. package/dist/cjs/crypto/NodeJsCrypto.d.ts.map +1 -0
  17. package/dist/cjs/crypto/NodeJsCrypto.js +154 -0
  18. package/dist/cjs/crypto/NodeJsCrypto.js.map +6 -0
  19. package/dist/cjs/crypto/index.d.ts +8 -0
  20. package/dist/cjs/crypto/index.d.ts.map +1 -0
  21. package/dist/cjs/crypto/index.js +25 -0
  22. package/dist/cjs/crypto/index.js.map +6 -0
  23. package/dist/cjs/crypto/register.d.ts +7 -0
  24. package/dist/cjs/crypto/register.d.ts.map +1 -0
  25. package/dist/cjs/crypto/register.js +21 -0
  26. package/dist/cjs/crypto/register.js.map +6 -0
  27. package/dist/cjs/environment/NodeJsActionTracer.d.ts +15 -0
  28. package/dist/cjs/environment/NodeJsActionTracer.d.ts.map +1 -0
  29. package/dist/cjs/environment/NodeJsActionTracer.js +80 -0
  30. package/dist/cjs/environment/NodeJsActionTracer.js.map +6 -0
  31. package/dist/cjs/environment/NodeJsEnvironment.d.ts +55 -0
  32. package/dist/cjs/environment/NodeJsEnvironment.d.ts.map +1 -0
  33. package/dist/cjs/environment/NodeJsEnvironment.js +121 -0
  34. package/dist/cjs/environment/NodeJsEnvironment.js.map +6 -0
  35. package/dist/cjs/environment/ProcessManager.d.ts +45 -0
  36. package/dist/cjs/environment/ProcessManager.d.ts.map +1 -0
  37. package/dist/cjs/environment/ProcessManager.js +112 -0
  38. package/dist/cjs/environment/ProcessManager.js.map +6 -0
  39. package/dist/cjs/environment/index.d.ts +10 -0
  40. package/dist/cjs/environment/index.d.ts.map +1 -0
  41. package/dist/cjs/environment/index.js +27 -0
  42. package/dist/cjs/environment/index.js.map +6 -0
  43. package/dist/cjs/environment/register.d.ts +7 -0
  44. package/dist/cjs/environment/register.d.ts.map +1 -0
  45. package/dist/cjs/environment/register.js +10 -0
  46. package/dist/cjs/environment/register.js.map +6 -0
  47. package/dist/cjs/index.d.ts +12 -0
  48. package/dist/cjs/index.d.ts.map +1 -0
  49. package/dist/cjs/index.js +29 -0
  50. package/dist/cjs/index.js.map +6 -0
  51. package/dist/cjs/log/FileLogger.d.ts +13 -0
  52. package/dist/cjs/log/FileLogger.d.ts.map +1 -0
  53. package/dist/cjs/log/FileLogger.js +46 -0
  54. package/dist/cjs/log/FileLogger.js.map +6 -0
  55. package/dist/cjs/log/index.d.ts +7 -0
  56. package/dist/cjs/log/index.d.ts.map +1 -0
  57. package/dist/cjs/log/index.js +24 -0
  58. package/dist/cjs/log/index.js.map +6 -0
  59. package/dist/cjs/net/NodeJsNetwork.d.ts +27 -0
  60. package/dist/cjs/net/NodeJsNetwork.d.ts.map +1 -0
  61. package/dist/cjs/net/NodeJsNetwork.js +145 -0
  62. package/dist/cjs/net/NodeJsNetwork.js.map +6 -0
  63. package/dist/cjs/net/NodeJsUdpChannel.d.ts +23 -0
  64. package/dist/cjs/net/NodeJsUdpChannel.d.ts.map +1 -0
  65. package/dist/cjs/net/NodeJsUdpChannel.js +181 -0
  66. package/dist/cjs/net/NodeJsUdpChannel.js.map +6 -0
  67. package/dist/cjs/net/index.d.ts +9 -0
  68. package/dist/cjs/net/index.d.ts.map +1 -0
  69. package/dist/cjs/net/index.js +26 -0
  70. package/dist/cjs/net/index.js.map +6 -0
  71. package/dist/cjs/net/register.d.ts +7 -0
  72. package/dist/cjs/net/register.d.ts.map +1 -0
  73. package/dist/cjs/net/register.js +16 -0
  74. package/dist/cjs/net/register.js.map +6 -0
  75. package/dist/cjs/package.json +11 -0
  76. package/dist/cjs/storage/StorageBackendDisk.d.ts +27 -0
  77. package/dist/cjs/storage/StorageBackendDisk.d.ts.map +1 -0
  78. package/dist/cjs/storage/StorageBackendDisk.js +128 -0
  79. package/dist/cjs/storage/StorageBackendDisk.js.map +6 -0
  80. package/dist/cjs/storage/StorageBackendJsonFile.d.ts +27 -0
  81. package/dist/cjs/storage/StorageBackendJsonFile.d.ts.map +1 -0
  82. package/dist/cjs/storage/StorageBackendJsonFile.js +110 -0
  83. package/dist/cjs/storage/StorageBackendJsonFile.js.map +6 -0
  84. package/dist/cjs/storage/index.d.ts +8 -0
  85. package/dist/cjs/storage/index.d.ts.map +1 -0
  86. package/dist/cjs/storage/index.js +25 -0
  87. package/dist/cjs/storage/index.js.map +6 -0
  88. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  89. package/dist/esm/behavior/index.d.ts +7 -0
  90. package/dist/esm/behavior/index.d.ts.map +1 -0
  91. package/dist/esm/behavior/index.js +7 -0
  92. package/dist/esm/behavior/index.js.map +6 -0
  93. package/dist/esm/behavior/instrumentation.d.ts +11 -0
  94. package/dist/esm/behavior/instrumentation.d.ts.map +1 -0
  95. package/dist/esm/behavior/instrumentation.js +27 -0
  96. package/dist/esm/behavior/instrumentation.js.map +6 -0
  97. package/dist/esm/behavior/register.d.ts +7 -0
  98. package/dist/esm/behavior/register.d.ts.map +1 -0
  99. package/dist/esm/behavior/register.js +8 -0
  100. package/dist/esm/behavior/register.js.map +6 -0
  101. package/dist/esm/crypto/NodeJsCrypto.d.ts +29 -0
  102. package/dist/esm/crypto/NodeJsCrypto.d.ts.map +1 -0
  103. package/dist/esm/crypto/NodeJsCrypto.js +135 -0
  104. package/dist/esm/crypto/NodeJsCrypto.js.map +6 -0
  105. package/dist/esm/crypto/index.d.ts +8 -0
  106. package/dist/esm/crypto/index.d.ts.map +1 -0
  107. package/dist/esm/crypto/index.js +8 -0
  108. package/dist/esm/crypto/index.js.map +6 -0
  109. package/dist/esm/crypto/register.d.ts +7 -0
  110. package/dist/esm/crypto/register.d.ts.map +1 -0
  111. package/dist/esm/crypto/register.js +20 -0
  112. package/dist/esm/crypto/register.js.map +6 -0
  113. package/dist/esm/environment/NodeJsActionTracer.d.ts +15 -0
  114. package/dist/esm/environment/NodeJsActionTracer.d.ts.map +1 -0
  115. package/dist/esm/environment/NodeJsActionTracer.js +60 -0
  116. package/dist/esm/environment/NodeJsActionTracer.js.map +6 -0
  117. package/dist/esm/environment/NodeJsEnvironment.d.ts +55 -0
  118. package/dist/esm/environment/NodeJsEnvironment.d.ts.map +1 -0
  119. package/dist/esm/environment/NodeJsEnvironment.js +108 -0
  120. package/dist/esm/environment/NodeJsEnvironment.js.map +6 -0
  121. package/dist/esm/environment/ProcessManager.d.ts +45 -0
  122. package/dist/esm/environment/ProcessManager.d.ts.map +1 -0
  123. package/dist/esm/environment/ProcessManager.js +92 -0
  124. package/dist/esm/environment/ProcessManager.js.map +6 -0
  125. package/dist/esm/environment/index.d.ts +10 -0
  126. package/dist/esm/environment/index.d.ts.map +1 -0
  127. package/dist/esm/environment/index.js +10 -0
  128. package/dist/esm/environment/index.js.map +6 -0
  129. package/dist/esm/environment/register.d.ts +7 -0
  130. package/dist/esm/environment/register.d.ts.map +1 -0
  131. package/dist/esm/environment/register.js +9 -0
  132. package/dist/esm/environment/register.js.map +6 -0
  133. package/dist/esm/index.d.ts +12 -0
  134. package/dist/esm/index.d.ts.map +1 -0
  135. package/dist/esm/index.js +12 -0
  136. package/dist/esm/index.js.map +6 -0
  137. package/dist/esm/log/FileLogger.d.ts +13 -0
  138. package/dist/esm/log/FileLogger.d.ts.map +1 -0
  139. package/dist/esm/log/FileLogger.js +26 -0
  140. package/dist/esm/log/FileLogger.js.map +6 -0
  141. package/dist/esm/log/index.d.ts +7 -0
  142. package/dist/esm/log/index.d.ts.map +1 -0
  143. package/dist/esm/log/index.js +7 -0
  144. package/dist/esm/log/index.js.map +6 -0
  145. package/dist/esm/net/NodeJsNetwork.d.ts +27 -0
  146. package/dist/esm/net/NodeJsNetwork.d.ts.map +1 -0
  147. package/dist/esm/net/NodeJsNetwork.js +133 -0
  148. package/dist/esm/net/NodeJsNetwork.js.map +6 -0
  149. package/dist/esm/net/NodeJsUdpChannel.d.ts +23 -0
  150. package/dist/esm/net/NodeJsUdpChannel.d.ts.map +1 -0
  151. package/dist/esm/net/NodeJsUdpChannel.js +159 -0
  152. package/dist/esm/net/NodeJsUdpChannel.js.map +6 -0
  153. package/dist/esm/net/index.d.ts +9 -0
  154. package/dist/esm/net/index.d.ts.map +1 -0
  155. package/dist/esm/net/index.js +9 -0
  156. package/dist/esm/net/index.js.map +6 -0
  157. package/dist/esm/net/register.d.ts +7 -0
  158. package/dist/esm/net/register.d.ts.map +1 -0
  159. package/dist/esm/net/register.js +15 -0
  160. package/dist/esm/net/register.js.map +6 -0
  161. package/dist/esm/package.json +11 -0
  162. package/dist/esm/storage/StorageBackendDisk.d.ts +27 -0
  163. package/dist/esm/storage/StorageBackendDisk.d.ts.map +1 -0
  164. package/dist/esm/storage/StorageBackendDisk.js +108 -0
  165. package/dist/esm/storage/StorageBackendDisk.js.map +6 -0
  166. package/dist/esm/storage/StorageBackendJsonFile.d.ts +27 -0
  167. package/dist/esm/storage/StorageBackendJsonFile.d.ts.map +1 -0
  168. package/dist/esm/storage/StorageBackendJsonFile.js +90 -0
  169. package/dist/esm/storage/StorageBackendJsonFile.js.map +6 -0
  170. package/dist/esm/storage/index.d.ts +8 -0
  171. package/dist/esm/storage/index.d.ts.map +1 -0
  172. package/dist/esm/storage/index.js +8 -0
  173. package/dist/esm/storage/index.js.map +6 -0
  174. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  175. package/package.json +114 -0
  176. package/src/behavior/index.ts +7 -0
  177. package/src/behavior/instrumentation.ts +32 -0
  178. package/src/behavior/register.ts +9 -0
  179. package/src/crypto/NodeJsCrypto.ts +164 -0
  180. package/src/crypto/index.ts +8 -0
  181. package/src/crypto/register.ts +25 -0
  182. package/src/environment/NodeJsActionTracer.ts +70 -0
  183. package/src/environment/NodeJsEnvironment.ts +172 -0
  184. package/src/environment/ProcessManager.ts +128 -0
  185. package/src/environment/index.ts +10 -0
  186. package/src/environment/register.ts +10 -0
  187. package/src/index.ts +12 -0
  188. package/src/log/FileLogger.ts +30 -0
  189. package/src/log/index.ts +7 -0
  190. package/src/net/NodeJsNetwork.ts +157 -0
  191. package/src/net/NodeJsUdpChannel.ts +179 -0
  192. package/src/net/index.ts +9 -0
  193. package/src/net/register.ts +20 -0
  194. package/src/storage/StorageBackendDisk.ts +132 -0
  195. package/src/storage/StorageBackendJsonFile.ts +102 -0
  196. package/src/storage/index.ts +8 -0
  197. package/src/tsconfig.json +28 -0
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Destructable, Environment, RuntimeService } from "#general";
7
+ /**
8
+ * ProcessManager watches Node.js signals SIGINT and SIGUSR2 to terminate the Matter.js runtime and trigger Matter.js
9
+ * diagnostics respectively. It sets the process exit code to 0 if the runtime completes without error and to 1 if the
10
+ * runtime crashes.
11
+ *
12
+ * If enabled, SIGINT will perform a soft interrupt of the runtime once. ProcessManager will not process subsequent
13
+ * interrupts so they will result in forced exit if no other handler exists.
14
+ *
15
+ * {@link NodeJsEnvironment} installs a ProcessManager into the default Matter.js {@link Environment}.
16
+ *
17
+ * You can modify behavior by:
18
+ *
19
+ * - Passing an {@link Environment} other than {@link Environment.default} to your components
20
+ *
21
+ * - Disabling signal and exit code support with {@link VariableService} variables "runtime.signals" and
22
+ * "runtime.exitcode" respectively
23
+ *
24
+ * - Destroying ProcessManager in the default environment using {@link ProcessManager.close}
25
+ *
26
+ * - Subclassing ProcessManager, overriding specific functionality, and installing with {@link Environment.set}
27
+ */
28
+ export declare class ProcessManager implements Destructable {
29
+ #private;
30
+ protected env: Environment;
31
+ protected runtime: RuntimeService;
32
+ constructor(env: Environment);
33
+ close(): void;
34
+ [Symbol.dispose](): void;
35
+ protected get hasSignalSupport(): true;
36
+ protected get hasExitCodeSupport(): true;
37
+ protected get hasUnhandledErrorSupport(): true;
38
+ protected startListener: () => void;
39
+ protected stopListener: () => void;
40
+ protected crashListener: () => void;
41
+ protected interruptHandler: (signal: string) => void;
42
+ protected exitHandler: () => void;
43
+ protected diagnosticHandler: () => void;
44
+ }
45
+ //# sourceMappingURL=ProcessManager.d.ts.map
@@ -0,0 +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,EAAmB,MAAM,UAAU,CAAC;AAK9F;;;;;;;;;;;;;;;;;;;;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,aAcrB;IAEF,SAAS,CAAC,YAAY,aAMpB;IAEF,SAAS,CAAC,aAAa,aAIrB;IAEF,SAAS,CAAC,gBAAgB,WAAY,MAAM,UAG1C;IAEF,SAAS,CAAC,WAAW,aAInB;IAEF,SAAS,CAAC,iBAAiB,aAEzB;CAWL"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Logger, RuntimeService } from "#general";
7
+ const logger = Logger.get("ProcessManager");
8
+ class ProcessManager {
9
+ constructor(env) {
10
+ this.env = env;
11
+ this.runtime = env.get(RuntimeService);
12
+ this.runtime.started.on(this.startListener);
13
+ this.runtime.stopped.on(this.stopListener);
14
+ this.runtime.crashed.on(this.crashListener);
15
+ if (this.hasUnhandledErrorSupport) {
16
+ process.addListener("uncaughtExceptionMonitor", (event) => {
17
+ Logger.reportUnhandledError(event);
18
+ });
19
+ }
20
+ }
21
+ runtime;
22
+ #signalHandlersInstalled = false;
23
+ close() {
24
+ this.runtime.started.off(this.startListener);
25
+ this.runtime.stopped.off(this.stopListener);
26
+ this.runtime.crashed.off(this.crashListener);
27
+ this.#ignoreSignals();
28
+ }
29
+ [Symbol.dispose]() {
30
+ this.close();
31
+ }
32
+ get hasSignalSupport() {
33
+ return this.env.vars.get("runtime.signals", true);
34
+ }
35
+ get hasExitCodeSupport() {
36
+ return this.env.vars.get("runtime.exitcode", true);
37
+ }
38
+ get hasUnhandledErrorSupport() {
39
+ return this.env.vars.get("runtime.unhandlederrors", true);
40
+ }
41
+ startListener = () => {
42
+ this.env.vars.use(() => {
43
+ if (this.hasSignalSupport) {
44
+ if (this.#signalHandlersInstalled) {
45
+ return;
46
+ }
47
+ process.on("SIGINT", this.interruptHandler);
48
+ process.on("SIGTERM", this.interruptHandler);
49
+ process.on("SIGUSR2", this.diagnosticHandler);
50
+ process.on("exit", this.exitHandler);
51
+ } else {
52
+ this.#ignoreSignals();
53
+ }
54
+ });
55
+ };
56
+ stopListener = () => {
57
+ this.#ignoreSignals();
58
+ if (this.hasExitCodeSupport && process.exitCode === void 0) {
59
+ process.exitCode = 0;
60
+ }
61
+ };
62
+ crashListener = () => {
63
+ if (this.hasExitCodeSupport) {
64
+ process.exitCode = 1;
65
+ }
66
+ };
67
+ interruptHandler = (signal) => {
68
+ process.off(signal, this.interruptHandler);
69
+ this.runtime.cancel();
70
+ };
71
+ exitHandler = () => {
72
+ if (process.exitCode === 13) {
73
+ logger.error("Internal error: Premature process exit because ongoing work has stalled");
74
+ }
75
+ };
76
+ diagnosticHandler = () => {
77
+ this.env.diagnose();
78
+ };
79
+ #ignoreSignals() {
80
+ if (this.#signalHandlersInstalled) {
81
+ process.off("SIGINT", this.interruptHandler);
82
+ process.off("SIGTERM", this.interruptHandler);
83
+ process.off("SIGUSR2", this.diagnosticHandler);
84
+ process.off("exit", this.exitHandler);
85
+ this.#signalHandlersInstalled = false;
86
+ }
87
+ }
88
+ }
89
+ export {
90
+ ProcessManager
91
+ };
92
+ //# sourceMappingURL=ProcessManager.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/environment/ProcessManager.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAoC,QAAQ,sBAAuC;AAGnF,MAAM,SAAS,OAAO,IAAI,gBAAgB;AAuBnC,MAAM,eAAuC;AAAA,EAIhD,YAAsB,KAAkB;AAAlB;AAClB,SAAK,UAAU,IAAI,IAAI,cAAc;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,eAAO,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;AACA,gBAAQ,GAAG,UAAU,KAAK,gBAAgB;AAC1C,gBAAQ,GAAG,WAAW,KAAK,gBAAgB;AAC3C,gBAAQ,GAAG,WAAW,KAAK,iBAAiB;AAC5C,gBAAQ,GAAG,QAAQ,KAAK,WAAW;AAAA,MACvC,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,CAAC,WAAmB;AAC7C,YAAQ,IAAI,QAAQ,KAAK,gBAAgB;AACzC,SAAK,QAAQ,OAAO;AAAA,EACxB;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,EAEA,iBAAiB;AACb,QAAI,KAAK,0BAA0B;AAC/B,cAAQ,IAAI,UAAU,KAAK,gBAAgB;AAC3C,cAAQ,IAAI,WAAW,KAAK,gBAAgB;AAC5C,cAAQ,IAAI,WAAW,KAAK,iBAAiB;AAC7C,cAAQ,IAAI,QAAQ,KAAK,WAAW;AACpC,WAAK,2BAA2B;AAAA,IACpC;AAAA,EACJ;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "./register.js";
7
+ export * from "./NodeJsActionTracer.js";
8
+ export * from "./NodeJsEnvironment.js";
9
+ export * from "./ProcessManager.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/environment/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,eAAe,CAAC;AACvB,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "./register.js";
7
+ export * from "./NodeJsActionTracer.js";
8
+ export * from "./NodeJsEnvironment.js";
9
+ export * from "./ProcessManager.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/environment/index.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO;AACP,cAAc;AACd,cAAc;AACd,cAAc;",
5
+ "names": []
6
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/environment/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Environment } from "#general";
7
+ import { NodeJsEnvironment } from "./NodeJsEnvironment.js";
8
+ Environment.default = NodeJsEnvironment();
9
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/environment/register.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAElC,YAAY,UAAU,kBAAkB;",
5
+ "names": []
6
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export * from "./behavior/index.js";
7
+ export * from "./crypto/index.js";
8
+ export * from "./environment/index.js";
9
+ export * from "./log/index.js";
10
+ export * from "./net/index.js";
11
+ export * from "./storage/index.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export * from "./behavior/index.js";
7
+ export * from "./crypto/index.js";
8
+ export * from "./environment/index.js";
9
+ export * from "./log/index.js";
10
+ export * from "./net/index.js";
11
+ export * from "./storage/index.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
5
+ "names": []
6
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { LogLevel } from "#general";
7
+ /**
8
+ * Creates a file based logger to append to the given path.
9
+ * The file is opened on start and closed when the process shuts down.
10
+ * Errors are logged to the console.
11
+ */
12
+ export declare function createFileLogger(path: string): Promise<(_level: LogLevel, formattedLog: string) => void>;
13
+ //# sourceMappingURL=FileLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileLogger.d.ts","sourceRoot":"","sources":["../../../src/log/FileLogger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,oBAQ/B,QAAQ,gBAAgB,MAAM,WAOjD"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { open } from "fs/promises";
7
+ async function createFileLogger(path) {
8
+ const fileHandle = await open(path, "a");
9
+ const writer = fileHandle.createWriteStream();
10
+ process.on(
11
+ "beforeExit",
12
+ () => void fileHandle.close().catch((err) => err && console.error(`Failed to close log file: ${err}`))
13
+ );
14
+ return (_level, formattedLog) => {
15
+ try {
16
+ writer.write(`${formattedLog}
17
+ `);
18
+ } catch (error) {
19
+ console.error(`Failed to write to log file: ${error}`);
20
+ }
21
+ };
22
+ }
23
+ export {
24
+ createFileLogger
25
+ };
26
+ //# sourceMappingURL=FileLogger.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/log/FileLogger.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,YAAY;AAOrB,eAAsB,iBAAiB,MAAc;AACjD,QAAM,aAAa,MAAM,KAAK,MAAM,GAAG;AACvC,QAAM,SAAS,WAAW,kBAAkB;AAC5C,UAAQ;AAAA,IACJ;AAAA,IACA,MAAM,KAAK,WAAW,MAAM,EAAE,MAAM,SAAO,OAAO,QAAQ,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAAA,EACvG;AAEA,SAAO,CAAC,QAAkB,iBAAyB;AAC/C,QAAI;AACA,aAAO,MAAM,GAAG,YAAY;AAAA,CAAI;AAAA,IACpC,SAAS,OAAO;AACZ,cAAQ,MAAM,gCAAgC,KAAK,EAAE;AAAA,IACzD;AAAA,EACJ;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export * from "./FileLogger.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/log/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export * from "./FileLogger.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/log/index.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;",
5
+ "names": []
6
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Network, NetworkInterface, NetworkInterfaceDetails, UdpChannel, UdpChannelOptions } from "#general";
7
+ export declare class NodeJsNetwork extends Network {
8
+ static getMulticastInterfaceIpv4(netInterface: string): string | undefined;
9
+ static getMembershipMulticastInterfaces(netInterface: string | undefined, ipv4: boolean): (string | undefined)[];
10
+ static getNetInterfaceZoneIpv6(netInterface: string): string | undefined;
11
+ static getNetInterfaceForIp(ip: string): string | undefined;
12
+ private static readonly netInterfaces;
13
+ close(): Promise<void>;
14
+ private static getNetInterfaceForRemoteAddress;
15
+ private static getNetInterfaceZoneIpv6Internal;
16
+ /**
17
+ * Get all network interfaces.
18
+ * The optional configuration parameter allows to map interface names to types if this mapping is known.
19
+ * Each network interface which has no mapped type is returned as Ethernet for now.
20
+ *
21
+ * @param configuration - An array of objects with the name and type properties.
22
+ */
23
+ getNetInterfaces(configuration?: NetworkInterface[]): NetworkInterface[];
24
+ getIpMac(netInterface: string): NetworkInterfaceDetails | undefined;
25
+ createUdpChannel(options: UdpChannelOptions): Promise<UdpChannel>;
26
+ }
27
+ //# sourceMappingURL=NodeJsNetwork.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeJsNetwork.d.ts","sourceRoot":"","sources":["../../../src/net/NodeJsNetwork.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAKH,OAAO,EAEP,gBAAgB,EAChB,uBAAuB,EAEvB,UAAU,EACV,iBAAiB,EACpB,MAAM,UAAU,CAAC;AAMlB,qBAAa,aAAc,SAAQ,OAAO;IACtC,MAAM,CAAC,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAW1E,MAAM,CAAC,gCAAgC,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE;IAwBhH,MAAM,CAAC,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMxE,MAAM,CAAC,oBAAoB,CAAC,EAAE,EAAE,MAAM;IAMtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAInC;IAEa,KAAK;IAIpB,OAAO,CAAC,MAAM,CAAC,+BAA+B;IAwB9C,OAAO,CAAC,MAAM,CAAC,+BAA+B;IAa9C;;;;;;OAMG;IACH,gBAAgB,CAAC,aAAa,GAAE,gBAAgB,EAAO,GAAG,gBAAgB,EAAE;IAmB5E,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS;IAQ1D,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;CAG7E"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import {
7
+ Cache,
8
+ InterfaceType,
9
+ isIPv6,
10
+ Logger,
11
+ Network,
12
+ NetworkError,
13
+ onSameNetwork
14
+ } from "#general";
15
+ import { networkInterfaces } from "os";
16
+ import { NodeJsUdpChannel } from "./NodeJsUdpChannel.js";
17
+ const logger = Logger.get("NetworkNode");
18
+ class NodeJsNetwork extends Network {
19
+ static getMulticastInterfaceIpv4(netInterface) {
20
+ const netInterfaceInfo = networkInterfaces()[netInterface];
21
+ if (netInterfaceInfo === void 0) throw new NetworkError(`Unknown interface: ${netInterface}`);
22
+ for (const { address, family } of netInterfaceInfo) {
23
+ if (family === "IPv4") {
24
+ return address;
25
+ }
26
+ }
27
+ return void 0;
28
+ }
29
+ static getMembershipMulticastInterfaces(netInterface, ipv4) {
30
+ if (ipv4) {
31
+ return [void 0];
32
+ } else {
33
+ let networkInterfaceEntries = Object.entries(networkInterfaces());
34
+ if (netInterface !== void 0) {
35
+ networkInterfaceEntries = networkInterfaceEntries.filter(([name]) => name === netInterface);
36
+ }
37
+ const multicastInterfaces = networkInterfaceEntries.flatMap(([netInterface2, netInterfaceInfo]) => {
38
+ if (netInterfaceInfo === void 0) return [];
39
+ const zone = this.getNetInterfaceZoneIpv6Internal(netInterface2, netInterfaceInfo);
40
+ return zone === void 0 ? [] : [`::%${zone}`];
41
+ });
42
+ if (multicastInterfaces.length === 0) {
43
+ logger.warn(
44
+ `No IPv6 multicast interface found${netInterface !== void 0 ? ` for interface ${netInterface}` : ""}.`
45
+ );
46
+ }
47
+ return multicastInterfaces;
48
+ }
49
+ }
50
+ static getNetInterfaceZoneIpv6(netInterface) {
51
+ const netInterfaceInfo = networkInterfaces()[netInterface];
52
+ if (netInterfaceInfo === void 0) throw new NetworkError(`Unknown interface: ${netInterface}`);
53
+ return this.getNetInterfaceZoneIpv6Internal(netInterface, netInterfaceInfo);
54
+ }
55
+ static getNetInterfaceForIp(ip) {
56
+ return this.netInterfaces.get(ip);
57
+ }
58
+ static netInterfaces = new Cache(
59
+ "Network interface",
60
+ (ip) => this.getNetInterfaceForRemoteAddress(ip),
61
+ 5 * 60 * 1e3
62
+ );
63
+ async close() {
64
+ await NodeJsNetwork.netInterfaces.close();
65
+ }
66
+ static getNetInterfaceForRemoteAddress(ip) {
67
+ if (ip.includes("%")) {
68
+ return ip.split("%")[1];
69
+ } else {
70
+ const interfaces = networkInterfaces();
71
+ for (const name in interfaces) {
72
+ const netInterfaces = interfaces[name];
73
+ for (const { address, netmask } of netInterfaces) {
74
+ if (onSameNetwork(ip, address, netmask)) {
75
+ return this.getNetInterfaceZoneIpv6Internal(name, netInterfaces);
76
+ }
77
+ }
78
+ }
79
+ if (isIPv6(ip)) {
80
+ if (ip.startsWith("fd")) {
81
+ return "";
82
+ }
83
+ }
84
+ return void 0;
85
+ }
86
+ }
87
+ static getNetInterfaceZoneIpv6Internal(netInterface, netInterfaceInfos) {
88
+ if (process.platform !== "win32") {
89
+ return netInterface;
90
+ }
91
+ if (netInterfaceInfos === void 0) return void 0;
92
+ return netInterfaceInfos.find(({ address, family }) => family === "IPv6" && address.startsWith("fe80::"))?.scopeid?.toString();
93
+ }
94
+ /**
95
+ * Get all network interfaces.
96
+ * The optional configuration parameter allows to map interface names to types if this mapping is known.
97
+ * Each network interface which has no mapped type is returned as Ethernet for now.
98
+ *
99
+ * @param configuration - An array of objects with the name and type properties.
100
+ */
101
+ getNetInterfaces(configuration = []) {
102
+ const result = new Array();
103
+ const interfaces = networkInterfaces();
104
+ for (const name in interfaces) {
105
+ const netInterfaces = interfaces[name];
106
+ if (netInterfaces.length === 0) continue;
107
+ if (netInterfaces[0].internal) continue;
108
+ let type = InterfaceType.Ethernet;
109
+ if (configuration.length > 0) {
110
+ const nameType = configuration.find(({ name: mapName }) => name === mapName);
111
+ if (nameType !== void 0 && nameType.type !== void 0) {
112
+ type = nameType.type;
113
+ }
114
+ }
115
+ result.push({ name, type });
116
+ }
117
+ return result;
118
+ }
119
+ getIpMac(netInterface) {
120
+ const netInterfaceInfo = networkInterfaces()[netInterface];
121
+ if (netInterfaceInfo === void 0) return void 0;
122
+ const ipV4 = netInterfaceInfo.filter(({ family }) => family === "IPv4").map(({ address }) => address);
123
+ const ipV6 = netInterfaceInfo.filter(({ family }) => family === "IPv6").map(({ address }) => address);
124
+ return { mac: netInterfaceInfo[0].mac, ipV4, ipV6 };
125
+ }
126
+ createUdpChannel(options) {
127
+ return NodeJsUdpChannel.create(options);
128
+ }
129
+ }
130
+ export {
131
+ NodeJsNetwork
132
+ };
133
+ //# sourceMappingURL=NodeJsNetwork.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/net/NodeJsNetwork.ts"],
4
+ "mappings": "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",
5
+ "names": ["netInterface"]
6
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ChannelType, UdpChannel, UdpChannelOptions } from "#general";
7
+ import * as dgram from "dgram";
8
+ export declare class NodeJsUdpChannel implements UdpChannel {
9
+ private readonly type;
10
+ private readonly socket;
11
+ private readonly netInterface?;
12
+ static create({ listeningPort, type, listeningAddress, netInterface, membershipAddresses, }: UdpChannelOptions): Promise<NodeJsUdpChannel>;
13
+ readonly maxPayloadSize: number;
14
+ constructor(type: "udp4" | "udp6", socket: dgram.Socket, netInterface?: string | undefined);
15
+ onData(listener: (netInterface: string, peerAddress: string, peerPort: number, data: Uint8Array) => void): {
16
+ close: () => Promise<void>;
17
+ };
18
+ send(host: string, port: number, data: Uint8Array): Promise<void>;
19
+ close(): Promise<void>;
20
+ get port(): number;
21
+ supports(type: ChannelType, address?: string): boolean;
22
+ }
23
+ //# sourceMappingURL=NodeJsUdpChannel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeJsUdpChannel.d.ts","sourceRoot":"","sources":["../../../src/net/NodeJsUdpChannel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,WAAW,EAOX,UAAU,EACV,iBAAiB,EACpB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiC/B,qBAAa,gBAAiB,YAAW,UAAU;IA6D3C,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;WA9DrB,MAAM,CAAC,EAChB,aAAa,EACb,IAAI,EACJ,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,GACtB,EAAE,iBAAiB;IAmDpB,QAAQ,CAAC,cAAc,SAAwB;gBAG1B,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,YAAA;IAG1C,MAAM,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI;;;IAelG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU;IAiBjD,KAAK;IAQX,IAAI,IAAI,WAEP;IAED,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM;CAiB/C"}