@matter/general 0.16.0-alpha.0-20251001-7eb06da95 → 0.16.0-alpha.0-20251003-dc6d5523d

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 (153) hide show
  1. package/dist/cjs/MatterError.d.ts +2 -2
  2. package/dist/cjs/MatterError.d.ts.map +1 -1
  3. package/dist/cjs/MatterError.js +0 -1
  4. package/dist/cjs/MatterError.js.map +1 -1
  5. package/dist/cjs/environment/Environment.d.ts +12 -0
  6. package/dist/cjs/environment/Environment.d.ts.map +1 -1
  7. package/dist/cjs/environment/Environment.js +48 -7
  8. package/dist/cjs/environment/Environment.js.map +1 -1
  9. package/dist/cjs/environment/Environmental.d.ts +1 -1
  10. package/dist/cjs/environment/Environmental.d.ts.map +1 -1
  11. package/dist/cjs/environment/RuntimeService.d.ts +9 -2
  12. package/dist/cjs/environment/RuntimeService.d.ts.map +1 -1
  13. package/dist/cjs/environment/RuntimeService.js +10 -1
  14. package/dist/cjs/environment/RuntimeService.js.map +1 -1
  15. package/dist/cjs/net/AppAddress.d.ts +46 -0
  16. package/dist/cjs/net/AppAddress.d.ts.map +1 -0
  17. package/dist/cjs/net/AppAddress.js +117 -0
  18. package/dist/cjs/net/AppAddress.js.map +6 -0
  19. package/dist/cjs/net/Channel.d.ts +2 -2
  20. package/dist/cjs/net/Channel.d.ts.map +1 -1
  21. package/dist/cjs/net/{TransportInterface.d.ts → ConnectionlessTransport.d.ts} +9 -8
  22. package/dist/cjs/net/ConnectionlessTransport.d.ts.map +1 -0
  23. package/dist/cjs/net/{TransportInterface.js → ConnectionlessTransport.js} +9 -8
  24. package/dist/cjs/net/ConnectionlessTransport.js.map +6 -0
  25. package/dist/cjs/net/Network.d.ts +2 -2
  26. package/dist/cjs/net/Network.d.ts.map +1 -1
  27. package/dist/cjs/net/ServerAddress.d.ts +7 -2
  28. package/dist/cjs/net/ServerAddress.d.ts.map +1 -1
  29. package/dist/cjs/net/ServerAddress.js +20 -5
  30. package/dist/cjs/net/ServerAddress.js.map +1 -1
  31. package/dist/cjs/net/index.d.ts +3 -5
  32. package/dist/cjs/net/index.d.ts.map +1 -1
  33. package/dist/cjs/net/index.js +3 -5
  34. package/dist/cjs/net/index.js.map +1 -1
  35. package/dist/cjs/net/mock/MockNetwork.d.ts +1 -1
  36. package/dist/cjs/net/mock/MockNetwork.d.ts.map +1 -1
  37. package/dist/cjs/net/mock/MockUdpChannel.d.ts +1 -1
  38. package/dist/cjs/net/mock/MockUdpChannel.d.ts.map +1 -1
  39. package/dist/cjs/net/mock/MockUdpChannel.js +1 -1
  40. package/dist/{esm/net → cjs/net/udp}/UdpChannel.d.ts +3 -3
  41. package/dist/cjs/net/udp/UdpChannel.d.ts.map +1 -0
  42. package/dist/cjs/net/{UdpChannel.js.map → udp/UdpChannel.js.map} +1 -1
  43. package/dist/{esm/net → cjs/net/udp}/UdpInterface.d.ts +9 -10
  44. package/dist/cjs/net/udp/UdpInterface.d.ts.map +1 -0
  45. package/dist/cjs/net/{UdpInterface.js → udp/UdpInterface.js} +2 -2
  46. package/dist/cjs/net/{UdpInterface.js.map → udp/UdpInterface.js.map} +2 -2
  47. package/dist/{esm/net → cjs/net/udp}/UdpMulticastServer.d.ts +1 -1
  48. package/dist/cjs/net/udp/UdpMulticastServer.d.ts.map +1 -0
  49. package/dist/cjs/net/{UdpMulticastServer.js → udp/UdpMulticastServer.js} +5 -5
  50. package/dist/cjs/net/{UdpMulticastServer.js.map → udp/UdpMulticastServer.js.map} +1 -1
  51. package/dist/cjs/net/udp/index.d.ts +9 -0
  52. package/dist/cjs/net/udp/index.d.ts.map +1 -0
  53. package/dist/cjs/net/udp/index.js +26 -0
  54. package/dist/cjs/net/udp/index.js.map +6 -0
  55. package/dist/cjs/time/Duration.d.ts.map +1 -1
  56. package/dist/cjs/time/Duration.js +4 -1
  57. package/dist/cjs/time/Duration.js.map +1 -1
  58. package/dist/esm/MatterError.d.ts +2 -2
  59. package/dist/esm/MatterError.d.ts.map +1 -1
  60. package/dist/esm/MatterError.js +0 -1
  61. package/dist/esm/MatterError.js.map +1 -1
  62. package/dist/esm/environment/Environment.d.ts +12 -0
  63. package/dist/esm/environment/Environment.d.ts.map +1 -1
  64. package/dist/esm/environment/Environment.js +48 -7
  65. package/dist/esm/environment/Environment.js.map +1 -1
  66. package/dist/esm/environment/Environmental.d.ts +1 -1
  67. package/dist/esm/environment/Environmental.d.ts.map +1 -1
  68. package/dist/esm/environment/RuntimeService.d.ts +9 -2
  69. package/dist/esm/environment/RuntimeService.d.ts.map +1 -1
  70. package/dist/esm/environment/RuntimeService.js +10 -1
  71. package/dist/esm/environment/RuntimeService.js.map +1 -1
  72. package/dist/esm/net/AppAddress.d.ts +46 -0
  73. package/dist/esm/net/AppAddress.d.ts.map +1 -0
  74. package/dist/esm/net/AppAddress.js +97 -0
  75. package/dist/esm/net/AppAddress.js.map +6 -0
  76. package/dist/esm/net/Channel.d.ts +2 -2
  77. package/dist/esm/net/Channel.d.ts.map +1 -1
  78. package/dist/esm/net/{TransportInterface.d.ts → ConnectionlessTransport.d.ts} +9 -8
  79. package/dist/esm/net/ConnectionlessTransport.d.ts.map +1 -0
  80. package/dist/esm/net/{TransportInterface.js → ConnectionlessTransport.js} +6 -5
  81. package/dist/esm/net/ConnectionlessTransport.js.map +6 -0
  82. package/dist/esm/net/Network.d.ts +2 -2
  83. package/dist/esm/net/Network.d.ts.map +1 -1
  84. package/dist/esm/net/ServerAddress.d.ts +7 -2
  85. package/dist/esm/net/ServerAddress.d.ts.map +1 -1
  86. package/dist/esm/net/ServerAddress.js +20 -5
  87. package/dist/esm/net/ServerAddress.js.map +1 -1
  88. package/dist/esm/net/index.d.ts +3 -5
  89. package/dist/esm/net/index.d.ts.map +1 -1
  90. package/dist/esm/net/index.js +3 -5
  91. package/dist/esm/net/index.js.map +1 -1
  92. package/dist/esm/net/mock/MockNetwork.d.ts +1 -1
  93. package/dist/esm/net/mock/MockNetwork.d.ts.map +1 -1
  94. package/dist/esm/net/mock/MockUdpChannel.d.ts +1 -1
  95. package/dist/esm/net/mock/MockUdpChannel.d.ts.map +1 -1
  96. package/dist/esm/net/mock/MockUdpChannel.js +1 -1
  97. package/dist/{cjs/net → esm/net/udp}/UdpChannel.d.ts +3 -3
  98. package/dist/esm/net/udp/UdpChannel.d.ts.map +1 -0
  99. package/dist/esm/net/{UdpChannel.js.map → udp/UdpChannel.js.map} +1 -1
  100. package/dist/{cjs/net → esm/net/udp}/UdpInterface.d.ts +9 -10
  101. package/dist/esm/net/udp/UdpInterface.d.ts.map +1 -0
  102. package/dist/esm/net/{UdpInterface.js → udp/UdpInterface.js} +2 -2
  103. package/dist/esm/net/{UdpInterface.js.map → udp/UdpInterface.js.map} +2 -2
  104. package/dist/{cjs/net → esm/net/udp}/UdpMulticastServer.d.ts +1 -1
  105. package/dist/esm/net/udp/UdpMulticastServer.d.ts.map +1 -0
  106. package/dist/esm/net/{UdpMulticastServer.js → udp/UdpMulticastServer.js} +5 -5
  107. package/dist/esm/net/{UdpMulticastServer.js.map → udp/UdpMulticastServer.js.map} +1 -1
  108. package/dist/esm/net/udp/index.d.ts +9 -0
  109. package/dist/esm/net/udp/index.d.ts.map +1 -0
  110. package/dist/esm/net/udp/index.js +9 -0
  111. package/dist/esm/net/udp/index.js.map +6 -0
  112. package/dist/esm/time/Duration.d.ts.map +1 -1
  113. package/dist/esm/time/Duration.js +4 -1
  114. package/dist/esm/time/Duration.js.map +1 -1
  115. package/package.json +2 -2
  116. package/src/MatterError.ts +6 -3
  117. package/src/environment/Environment.ts +66 -8
  118. package/src/environment/Environmental.ts +1 -1
  119. package/src/environment/RuntimeService.ts +21 -2
  120. package/src/net/AppAddress.ts +136 -0
  121. package/src/net/Channel.ts +2 -2
  122. package/src/net/{TransportInterface.ts → ConnectionlessTransport.ts} +12 -8
  123. package/src/net/Network.ts +2 -2
  124. package/src/net/ServerAddress.ts +32 -7
  125. package/src/net/index.ts +3 -5
  126. package/src/net/mock/MockNetwork.ts +1 -1
  127. package/src/net/mock/MockUdpChannel.ts +1 -1
  128. package/src/net/{UdpChannel.ts → udp/UdpChannel.ts} +3 -3
  129. package/src/net/{UdpInterface.ts → udp/UdpInterface.ts} +7 -8
  130. package/src/net/{UdpMulticastServer.ts → udp/UdpMulticastServer.ts} +5 -5
  131. package/src/net/udp/index.ts +9 -0
  132. package/src/time/Duration.ts +8 -1
  133. package/dist/cjs/net/NetInterface.d.ts +0 -25
  134. package/dist/cjs/net/NetInterface.d.ts.map +0 -1
  135. package/dist/cjs/net/NetInterface.js +0 -42
  136. package/dist/cjs/net/NetInterface.js.map +0 -6
  137. package/dist/cjs/net/TransportInterface.d.ts.map +0 -1
  138. package/dist/cjs/net/TransportInterface.js.map +0 -6
  139. package/dist/cjs/net/UdpChannel.d.ts.map +0 -1
  140. package/dist/cjs/net/UdpInterface.d.ts.map +0 -1
  141. package/dist/cjs/net/UdpMulticastServer.d.ts.map +0 -1
  142. package/dist/esm/net/NetInterface.d.ts +0 -25
  143. package/dist/esm/net/NetInterface.d.ts.map +0 -1
  144. package/dist/esm/net/NetInterface.js +0 -22
  145. package/dist/esm/net/NetInterface.js.map +0 -6
  146. package/dist/esm/net/TransportInterface.d.ts.map +0 -1
  147. package/dist/esm/net/TransportInterface.js.map +0 -6
  148. package/dist/esm/net/UdpChannel.d.ts.map +0 -1
  149. package/dist/esm/net/UdpInterface.d.ts.map +0 -1
  150. package/dist/esm/net/UdpMulticastServer.d.ts.map +0 -1
  151. package/src/net/NetInterface.ts +0 -34
  152. /package/dist/cjs/net/{UdpChannel.js → udp/UdpChannel.js} +0 -0
  153. /package/dist/esm/net/{UdpChannel.js → udp/UdpChannel.js} +0 -0
@@ -3,6 +3,7 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { InternalError } from "#MatterError.js";
6
7
  import { Instant } from "#time/TimeUnit.js";
7
8
  import { DiagnosticSource } from "../log/DiagnosticSource.js";
8
9
  import { Logger } from "../log/Logger.js";
@@ -35,17 +36,31 @@ class Environment {
35
36
  }
36
37
  return mine !== void 0 || (this.#parent?.has(type) ?? false);
37
38
  }
39
+ /**
40
+ * Determine if an environmental services is owned by this environment (not an ancestor).
41
+ */
42
+ owns(type) {
43
+ return !!this.#services?.get(type);
44
+ }
38
45
  /**
39
46
  * Access an environmental service.
40
47
  */
41
48
  get(type) {
42
- let instance = this.#services?.get(type) ?? this.#parent?.maybeGet(type);
43
- if (instance !== void 0 && instance !== null) {
44
- return instance;
49
+ const mine = this.#services?.get(type);
50
+ if (mine !== void 0 && mine !== null) {
51
+ return mine;
45
52
  }
46
- if (instance !== null) {
53
+ if (mine === void 0) {
54
+ let instance = this.#parent?.maybeGet(type);
55
+ if (instance !== void 0 && instance !== null) {
56
+ return instance;
57
+ }
47
58
  if (type[Environmental.create]) {
48
- this.set(type, instance = type[Environmental.create](this));
59
+ instance = type[Environmental.create](this);
60
+ if (!(instance instanceof type)) {
61
+ throw new InternalError(`Service creation did not produce instance of ${type.name}`);
62
+ }
63
+ this.set(type, instance);
49
64
  return instance;
50
65
  }
51
66
  }
@@ -83,8 +98,14 @@ class Environment {
83
98
  * @param type the class of the service to block
84
99
  */
85
100
  block(type) {
86
- if (this.has(type)) {
87
- this.delete(type);
101
+ const instance = this.#services?.get(type);
102
+ if (instance !== void 0 && instance !== null) {
103
+ this.#services?.delete(type);
104
+ this.#deleted.emit(type, instance);
105
+ const serviceEvents = this.#serviceEvents.get(type);
106
+ if (serviceEvents) {
107
+ serviceEvents.deleted.emit(instance);
108
+ }
88
109
  }
89
110
  this.#services?.set(type, null);
90
111
  }
@@ -161,6 +182,26 @@ class Environment {
161
182
  }
162
183
  return events;
163
184
  }
185
+ /**
186
+ * Apply functions to a specific service type automatically.
187
+ *
188
+ * The environment invokes {@link added} immediately if the service is currently present. It then invokes
189
+ * {@link added} in the future if the service is added or replaced and/or {@link deleted} if the service is replaced
190
+ * or deleted.
191
+ */
192
+ applyTo(type, added, deleted) {
193
+ const events = this.eventsFor(type);
194
+ if (added) {
195
+ const existing = this.maybeGet(type);
196
+ if (existing) {
197
+ added(this, existing);
198
+ }
199
+ events.added.on((service) => this.runtime.add(() => added(this, service)));
200
+ }
201
+ if (deleted) {
202
+ events.deleted.on((service) => this.runtime.add(() => deleted(this, service)));
203
+ }
204
+ }
164
205
  /**
165
206
  * The default environment.
166
207
  *
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/environment/Environment.ts"],
4
- "mappings": "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",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,qBAAqB;AAC9B,SAAS,eAAe;AAExB,SAAS,wBAAwB;AACjC,SAAS,cAAc;AACvB,OAAO;AACP,SAAS,YAAY;AACrB,SAAuB,kCAAkC;AACzD,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAC/B,SAAS,uBAAuB;AAEhC,MAAM,SAAS,OAAO,IAAI,aAAa;AAehC,MAAM,YAAY;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,WAAsE;AAAA,EAC/E,WAAW,WAAsE;AAAA,EACjF,iBAAiB,oBAAI,IAA4E;AAAA,EAEjG,YAAY,MAAc,QAAsB;AAC5C,SAAK,QAAQ;AACb,SAAK,UAAU;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,MAAqD;AACrD,UAAM,OAAO,KAAK,WAAW,IAAI,IAAI;AAErC,QAAI,SAAS,MAAM;AACf,aAAO;AAAA,IACX;AAEA,WAAO,SAAS,WAAc,KAAK,SAAS,IAAI,IAAI,KAAK;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA,EAKA,KAAK,MAAqD;AACtD,WAAO,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,IAAsB,MAA6C;AAC/D,UAAM,OAAO,KAAK,WAAW,IAAI,IAAI;AAErC,QAAI,SAAS,UAAa,SAAS,MAAM;AACrC,aAAO;AAAA,IACX;AAGA,QAAI,SAAS,QAAW;AACpB,UAAI,WAAW,KAAK,SAAS,SAAS,IAAI;AAC1C,UAAI,aAAa,UAAa,aAAa,MAAM;AAE7C,eAAO;AAAA,MACX;AAGA,UAAK,KAAkC,cAAc,MAAM,GAAG;AAC1D,mBAAY,KAAa,cAAc,MAAM,EAAE,IAAI;AACnD,YAAI,EAAE,oBAAoB,OAAO;AAC7B,gBAAM,IAAI,cAAc,gDAAgD,KAAK,IAAI,EAAE;AAAA,QACvF;AACA,aAAK,IAAI,MAAM,QAAQ;AACvB,eAAO;AAAA,MACX;AAAA,IACJ;AAEA,UAAM,IAAI,2BAA2B,uBAAuB,KAAK,IAAI,IAAI,kBAAkB;AAAA,EAC/F;AAAA;AAAA;AAAA;AAAA,EAKA,SAA2B,MAAyD;AAChF,QAAI,KAAK,IAAI,IAAI,GAAG;AAChB,aAAO,KAAK,IAAI,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,MAA4C,UAAgB;AAC/D,QAAI,aAAa,UAAa,KAAK,WAAW,IAAI,IAAI,MAAM,UAAU;AAClE;AAAA,IACJ;AACA,SAAK,WAAW,OAAO,IAAI;AAC3B,SAAK,SAAS,OAAO,IAAI;AAEzB,SAAK,SAAS,KAAK,MAAM,QAAQ;AAEjC,UAAM,gBAAgB,KAAK,eAAe,IAAI,IAAI;AAClD,QAAI,eAAe;AACf,oBAAc,QAAQ,KAAK,QAAQ;AAAA,IACvC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,MAA4C;AAC9C,UAAM,WAAW,KAAK,WAAW,IAAI,IAAI;AAEzC,QAAI,aAAa,UAAa,aAAa,MAAM;AAC7C,WAAK,WAAW,OAAO,IAAI;AAE3B,WAAK,SAAS,KAAK,MAAM,QAAQ;AAEjC,YAAM,gBAAgB,KAAK,eAAe,IAAI,IAAI;AAClD,UAAI,eAAe;AACf,sBAAc,QAAQ,KAAK,QAAQ;AAAA,MACvC;AAAA,IACJ;AAEA,SAAK,WAAW,IAAI,MAAM,IAAI;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAKA,MACI,MACyE;AACzE,UAAM,WAAW,KAAK,SAAS,IAAI;AACnC,QAAI,aAAa,QAAW;AACxB,WAAK,OAAO,MAAM,QAAQ;AAC1B,aAAQ,SAAmC,QAAQ;AAAA,IAGvD;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,KAAsC,MAAgC;AACxE,UAAM,WAAW,KAAK,IAAI,IAAI;AAC9B,UAAM,SAAS;AACf,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,IAAkB,MAA0C,UAAa;AACrE,QAAI,CAAC,KAAK,WAAW;AACjB,WAAK,YAAY,oBAAI,IAAI;AAAA,IAC7B;AACA,SAAK,UAAU,IAAI,MAAM,QAAiC;AAC1D,SAAK,OAAO,KAAK,MAAM,QAAQ;AAC/B,UAAM,gBAAgB,KAAK,eAAe,IAAI,IAAI;AAClD,QAAI,eAAe;AACf,oBAAc,MAAM,KAAK,QAAQ;AAAA,IACrC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,OAAO;AACP,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,OAAoB;AACpB,WAAO,KAAK,SAAS,QAAQ;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,QAAQ;AACR,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,UAAU;AACV,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAgD,MAAS;AACrD,QAAI,SAAS,KAAK,eAAe,IAAI,IAAI;AACzC,QAAI,WAAW,QAAW;AACtB,eAAS;AAAA,QACL,OAAO,WAAW;AAAA,QAClB,SAAS,WAAW;AAAA,MACxB;AACA,WAAK,eAAe,IAAI,MAAM,MAAM;AAAA,IACxC;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,QACI,MACA,OACA,SACF;AACE,UAAM,SAAS,KAAK,UAAU,IAAI;AAElC,QAAI,OAAO;AACP,YAAM,WAAW,KAAK,SAAS,IAAI;AAEnC,UAAI,UAAU;AACV,cAAM,MAAM,QAAQ;AAAA,MACxB;AAEA,aAAO,MAAM,GAAG,aAAW,KAAK,QAAQ,IAAI,MAAM,MAAM,MAAM,OAAO,CAAC,CAAC;AAAA,IAC3E;AAEA,QAAI,SAAS;AACT,aAAO,QAAQ,GAAG,aAAW,KAAK,QAAQ,IAAI,MAAM,QAAQ,MAAM,OAAO,CAAC,CAAC;AAAA,IAC/E;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAW,UAAU;AACjB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,QAAQ,KAAkB;AACjC,aAAS;AAET,QAAI,KAAK,IAAI,MAAM;AACf,aAAO,QAAQ,IAAI,KAAK,IAAI,aAAa,OAAO,KAAK;AACrD,aAAO,SAAS,IAAI,KAAK,IAAI,cAAc,OAAO,MAAM;AAExD,YAAM,aAAa,OAAO,KAAK,OAAO,iBAAiB;AACvD,UAAI,eAAe,QAAW;AAC1B,QAAC,MAAuC,kBAAkB;AAAA,MAC9D;AAAA,IACJ,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,OAAO;AACP,WAAO,KAAK,IAAI,eAAe;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,UAAU;AACV,WAAO,KAAK,IAAI,cAAc;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW;AACP,SAAK,SAAS,eAAe,SAAS,MAAM;AACxC,UAAI;AACA,eAAO,OAAO,sBAAsB,gBAAgB;AAAA,MACxD,SAAS,GAAG;AACR,eAAO,MAAM,0CAA0C,CAAC;AAAA,MAC5D;AAAA,IACJ,CAAC,EAAE,MAAM;AAAA,EACb;AAAA,EAEU,gBAAqC;AAC3C,WAAO,CAAC;AAAA,EACZ;AACJ;AAEA,IAAI,SAAS,IAAI,YAAY,SAAS;",
5
5
  "names": []
6
6
  }
@@ -23,7 +23,7 @@ export declare namespace Environmental {
23
23
  *
24
24
  * A "factory" is just a class with a static {@link create} method that performs instantiation.
25
25
  */
26
- interface Factory<T extends object> {
26
+ interface Factory<T extends object = object> {
27
27
  new (...args: any[]): T;
28
28
  /**
29
29
  * Method the environment uses to instantiate the service.
@@ -1 +1 @@
1
- {"version":3,"file":"Environmental.d.ts","sourceRoot":"","sources":["../../../src/environment/Environmental.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,yBAAiB,aAAa,CAAC;IACpB,MAAM,MAAM,eAAmB,CAAC;IAEvC;;;;OAIG;IACH,UAAiB,OAAO;QACpB;;WAEG;QACH,YAAY,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;KAC/B;IAED;;;;OAIG;IACH,UAAiB,OAAO,CAAC,CAAC,SAAS,MAAM;QACrC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAExB;;;;;WAKG;QACH,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,CAAC,CAAC;KAC7C;IAED;;OAEG;IACH,UAAiB,aAAa,CAAC,CAAC,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;QACvE,KAAK,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACpD;CACJ"}
1
+ {"version":3,"file":"Environmental.d.ts","sourceRoot":"","sources":["../../../src/environment/Environmental.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,yBAAiB,aAAa,CAAC;IACpB,MAAM,MAAM,eAAmB,CAAC;IAEvC;;;;OAIG;IACH,UAAiB,OAAO;QACpB;;WAEG;QACH,YAAY,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;KAC/B;IAED;;;;OAIG;IACH,UAAiB,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;QAC9C,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAExB;;;;;WAKG;QACH,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,CAAC,CAAC;KAC7C;IAED;;OAEG;IACH,UAAiB,aAAa,CAAC,CAAC,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;QACvE,KAAK,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACpD;CACJ"}
@@ -18,7 +18,7 @@ export declare class RuntimeService implements Multiplex {
18
18
  [Diagnostic.value]: unknown[];
19
19
  constructor(environment: Environment);
20
20
  /**
21
- * Add a {@link Worker}.
21
+ * Add a {@link Worker}, either directly or by invoking an {@link Initiator}.
22
22
  *
23
23
  * The runtime considers itself "active" if there are one or more workers installed.
24
24
  *
@@ -28,7 +28,7 @@ export declare class RuntimeService implements Multiplex {
28
28
  * Once added, the {@link worker} is owned by the RuntimeService until closed, resolved or removed via
29
29
  * {@link delete}.
30
30
  */
31
- add(worker: RuntimeService.Worker | void): void;
31
+ add(worker: RuntimeService.NewWorker): void;
32
32
  /**
33
33
  * Remove a worker.
34
34
  */
@@ -105,5 +105,12 @@ export declare namespace RuntimeService {
105
105
  */
106
106
  [label]?: unknown;
107
107
  }
108
+ /**
109
+ * A function that initiates work.
110
+ */
111
+ interface Initiator {
112
+ (env: Environment): NewWorker;
113
+ }
114
+ type NewWorker = Worker | Initiator | void;
108
115
  }
109
116
  //# sourceMappingURL=RuntimeService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeService.d.ts","sourceRoot":"","sources":["../../../src/environment/RuntimeService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAsB,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,YAAY,EAAa,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD;;GAEG;AACH,qBAAa,cAAe,YAAW,SAAS;;IAkLxC,CAAC,UAAU,CAAC,KAAK,CAAC;gBAxKV,WAAW,EAAE,WAAW;IAMpC;;;;;;;;;;OAUG;IACH,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,GAAG,IAAI;IAsCxC;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM;IAsBpC;;OAEG;IACH,IAAI,OAAO,yBAEV;IAED;;OAEG;IACH,IAAI,OAAO,yBAEV;IAED;;OAEG;IACH,IAAI,OAAO,mCAEV;IAED,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,WAAW;IAItD;;;;OAIG;IACH,MAAM;IAeN;;;;OAIG;IACH,SAAS;IAQT;;OAEG;IACH,IAAI,QAAQ,kBAcX;IAEK,KAAK;IAOX,CAAC,MAAM,CAAC,YAAY,CAAC;CAgExB;AAED,yBAAiB,cAAc,CAAC;IACrB,MAAM,KAAK,eAAkB,CAAC;IAErC;;;;;;;OAOG;IACH,UAAiB,MAAO,SAAQ,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;QAClG;;;;;;;WAOG;QACH,YAAY,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;QAEjC;;;;;;;;;WASG;QACH,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnD;;WAEG;QACH,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC;QAE9B;;WAEG;QACH,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC;KACrB;CACJ"}
1
+ {"version":3,"file":"RuntimeService.d.ts","sourceRoot":"","sources":["../../../src/environment/RuntimeService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAsB,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,YAAY,EAAa,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD;;GAEG;AACH,qBAAa,cAAe,YAAW,SAAS;;IA2LxC,CAAC,UAAU,CAAC,KAAK,CAAC;gBAjLV,WAAW,EAAE,WAAW;IAMpC;;;;;;;;;;OAUG;IACH,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,SAAS;IA+CpC;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM;IAsBpC;;OAEG;IACH,IAAI,OAAO,yBAEV;IAED;;OAEG;IACH,IAAI,OAAO,yBAEV;IAED;;OAEG;IACH,IAAI,OAAO,mCAEV;IAED,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,WAAW;IAItD;;;;OAIG;IACH,MAAM;IAeN;;;;OAIG;IACH,SAAS;IAQT;;OAEG;IACH,IAAI,QAAQ,kBAcX;IAEK,KAAK;IAOX,CAAC,MAAM,CAAC,YAAY,CAAC;CAgExB;AAED,yBAAiB,cAAc,CAAC;IACrB,MAAM,KAAK,eAAkB,CAAC;IAErC;;;;;;;OAOG;IACH,UAAiB,MAAO,SAAQ,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;QAClG;;;;;;;WAOG;QACH,YAAY,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;QAEjC;;;;;;;;;WASG;QACH,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnD;;WAEG;QACH,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC;QAE9B;;WAEG;QACH,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC;KACrB;IAED;;OAEG;IACH,UAAiB,SAAS;QACtB,CAAC,GAAG,EAAE,WAAW,GAAG,SAAS,CAAC;KACjC;IAED,KAAY,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;CACrD"}
@@ -3,6 +3,7 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { asError } from "#util/Error.js";
6
7
  import { Diagnostic } from "../log/Diagnostic.js";
7
8
  import { DiagnosticSource } from "../log/DiagnosticSource.js";
8
9
  import { Logger } from "../log/Logger.js";
@@ -25,7 +26,7 @@ class RuntimeService {
25
26
  DiagnosticSource.add(this);
26
27
  }
27
28
  /**
28
- * Add a {@link Worker}.
29
+ * Add a {@link Worker}, either directly or by invoking an {@link Initiator}.
29
30
  *
30
31
  * The runtime considers itself "active" if there are one or more workers installed.
31
32
  *
@@ -39,6 +40,14 @@ class RuntimeService {
39
40
  if (!worker) {
40
41
  return;
41
42
  }
43
+ if (typeof worker === "function") {
44
+ try {
45
+ this.add(worker(this.#env));
46
+ } catch (e) {
47
+ this.#crash(asError(e));
48
+ }
49
+ return;
50
+ }
42
51
  if (this.#workers.has(worker)) {
43
52
  return;
44
53
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/environment/RuntimeService.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["RuntimeService"]
6
6
  }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Diagnostic } from "#log/Diagnostic.js";
7
+ import { NetworkError } from "./Network.js";
8
+ export declare class InvalidAppAddress extends NetworkError {
9
+ }
10
+ /**
11
+ * An application network address.
12
+ *
13
+ * This is an OSI layer 7 address representable as an object or URL.
14
+ */
15
+ export declare class AppAddress extends URL {
16
+ [Diagnostic.value]: string;
17
+ constructor(definition: AppAddress.Definition);
18
+ get appProtocol(): string;
19
+ get isTls(): boolean;
20
+ get protocolModifiers(): string[];
21
+ get transport(): AppAddress.TransportAddress;
22
+ get portNum(): number;
23
+ get isWildcardHost(): boolean;
24
+ get isWildcardPort(): boolean;
25
+ static for(definition: AppAddress.Definition): AppAddress;
26
+ }
27
+ export declare namespace AppAddress {
28
+ type Definition = Object | URL | string;
29
+ type TransportAddress = IpTransportAddress | UnixSocketTransportAddress;
30
+ interface IpTransportAddress {
31
+ kind: "ip";
32
+ host: string;
33
+ port: number;
34
+ }
35
+ interface UnixSocketTransportAddress {
36
+ kind: "unix";
37
+ path: string;
38
+ }
39
+ interface Object {
40
+ appProtocol: string;
41
+ transport: TransportAddress;
42
+ tls?: boolean;
43
+ path?: string;
44
+ }
45
+ }
46
+ //# sourceMappingURL=AppAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppAddress.d.ts","sourceRoot":"","sources":["../../../src/net/AppAddress.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,qBAAa,iBAAkB,SAAQ,YAAY;CAAG;AAEtD;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,GAAG;IA8B3B,CAAC,UAAU,CAAC,KAAK,CAAC;gBA7BV,UAAU,EAAE,UAAU,CAAC,UAAU;IAiC7C,IAAI,WAAW,WAEd;IAED,IAAI,KAAK,YAYR;IAED,IAAI,iBAAiB,aAIpB;IAED,IAAI,SAAS,IAAI,UAAU,CAAC,gBAAgB,CAa3C;IAED,IAAI,OAAO,WAKV;IAED,IAAI,cAAc,YAEjB;IAED,IAAI,cAAc,YAEjB;IAED,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU;CAO/C;AAED,yBAAiB,UAAU,CAAC;IACxB,KAAY,UAAU,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;IAE/C,KAAY,gBAAgB,GAAG,kBAAkB,GAAG,0BAA0B,CAAC;IAE/E,UAAiB,kBAAkB;QAC/B,IAAI,EAAE,IAAI,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KAChB;IAED,UAAiB,0BAA0B;QACvC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KAChB;IAED,UAAiB,MAAM;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,gBAAgB,CAAC;QAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB;CACJ"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Diagnostic } from "#log/Diagnostic.js";
7
+ import { NetworkError } from "./Network.js";
8
+ class InvalidAppAddress extends NetworkError {
9
+ }
10
+ class AppAddress extends URL {
11
+ constructor(definition) {
12
+ if (typeof definition === "object" && !(definition instanceof URL)) {
13
+ let protocol = definition.appProtocol;
14
+ let host;
15
+ if (definition.tls) {
16
+ protocol += "s";
17
+ }
18
+ if (definition.transport.kind === "unix") {
19
+ protocol += "+unix";
20
+ host = encodeURIComponent(definition.transport.path);
21
+ } else {
22
+ host = definition.transport.host;
23
+ if (definition.transport.port) {
24
+ host = `${host}:${definition.transport.port}`;
25
+ }
26
+ }
27
+ const path = definition.path ?? "/";
28
+ definition = `${protocol}://${host}${path}`;
29
+ }
30
+ try {
31
+ super(definition);
32
+ } catch (e) {
33
+ if (e instanceof SyntaxError) {
34
+ throw new InvalidAppAddress(`Invalid app address:${e.message}`);
35
+ }
36
+ throw e;
37
+ }
38
+ }
39
+ get [Diagnostic.value]() {
40
+ return this.toString();
41
+ }
42
+ get appProtocol() {
43
+ return this.protocol.replace(/[:+].*$/, "");
44
+ }
45
+ get isTls() {
46
+ switch (this.appProtocol) {
47
+ case "https":
48
+ case "mqtts":
49
+ case "wss":
50
+ return true;
51
+ case "mqtt":
52
+ return this.protocolModifiers.includes("wss");
53
+ }
54
+ return false;
55
+ }
56
+ get protocolModifiers() {
57
+ const segments = this.protocol.replace(/:$/, "").split("+");
58
+ segments.shift();
59
+ return segments;
60
+ }
61
+ get transport() {
62
+ if (this.protocolModifiers.includes("unix")) {
63
+ return {
64
+ kind: "unix",
65
+ path: decodeURIComponent(this.hostname)
66
+ };
67
+ }
68
+ return {
69
+ kind: "ip",
70
+ host: this.hostname,
71
+ port: this.portNum
72
+ };
73
+ }
74
+ get portNum() {
75
+ if (this.port !== "") {
76
+ return Number(this.port);
77
+ }
78
+ return 0;
79
+ }
80
+ get isWildcardHost() {
81
+ return this.host === "0.0.0.0" || this.host === "::";
82
+ }
83
+ get isWildcardPort() {
84
+ return this.port === "0";
85
+ }
86
+ static for(definition) {
87
+ if (definition instanceof AppAddress) {
88
+ return definition;
89
+ }
90
+ return new AppAddress(definition);
91
+ }
92
+ }
93
+ export {
94
+ AppAddress,
95
+ InvalidAppAddress
96
+ };
97
+ //# sourceMappingURL=AppAddress.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/net/AppAddress.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAEtB,MAAM,0BAA0B,aAAa;AAAC;AAO9C,MAAM,mBAAmB,IAAI;AAAA,EAChC,YAAY,YAAmC;AAC3C,QAAI,OAAO,eAAe,YAAY,EAAE,sBAAsB,MAAM;AAChE,UAAI,WAAW,WAAW;AAC1B,UAAI;AACJ,UAAI,WAAW,KAAK;AAChB,oBAAY;AAAA,MAChB;AACA,UAAI,WAAW,UAAU,SAAS,QAAQ;AACtC,oBAAY;AACZ,eAAO,mBAAmB,WAAW,UAAU,IAAI;AAAA,MACvD,OAAO;AACH,eAAO,WAAW,UAAU;AAC5B,YAAI,WAAW,UAAU,MAAM;AAC3B,iBAAO,GAAG,IAAI,IAAI,WAAW,UAAU,IAAI;AAAA,QAC/C;AAAA,MACJ;AACA,YAAM,OAAO,WAAW,QAAQ;AAChC,mBAAa,GAAG,QAAQ,MAAM,IAAI,GAAG,IAAI;AAAA,IAC7C;AACA,QAAI;AACA,YAAM,UAAU;AAAA,IACpB,SAAS,GAAG;AACR,UAAI,aAAa,aAAa;AAC1B,cAAM,IAAI,kBAAkB,uBAAuB,EAAE,OAAO,EAAE;AAAA,MAClE;AACA,YAAM;AAAA,IACV;AAAA,EACJ;AAAA,EAEA,KAAK,WAAW,KAAK,IAAI;AACrB,WAAO,KAAK,SAAS;AAAA,EACzB;AAAA,EAEA,IAAI,cAAc;AACd,WAAO,KAAK,SAAS,QAAQ,WAAW,EAAE;AAAA,EAC9C;AAAA,EAEA,IAAI,QAAQ;AACR,YAAQ,KAAK,aAAa;AAAA,MACtB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,eAAO;AAAA,MAEX,KAAK;AAED,eAAO,KAAK,kBAAkB,SAAS,KAAK;AAAA,IACpD;AACA,WAAO;AAAA,EACX;AAAA,EAEA,IAAI,oBAAoB;AACpB,UAAM,WAAW,KAAK,SAAS,QAAQ,MAAM,EAAE,EAAE,MAAM,GAAG;AAC1D,aAAS,MAAM;AACf,WAAO;AAAA,EACX;AAAA,EAEA,IAAI,YAAyC;AACzC,QAAI,KAAK,kBAAkB,SAAS,MAAM,GAAG;AACzC,aAAO;AAAA,QACH,MAAM;AAAA,QACN,MAAM,mBAAmB,KAAK,QAAQ;AAAA,MAC1C;AAAA,IACJ;AAEA,WAAO;AAAA,MACH,MAAM;AAAA,MACN,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,IACf;AAAA,EACJ;AAAA,EAEA,IAAI,UAAU;AACV,QAAI,KAAK,SAAS,IAAI;AAClB,aAAO,OAAO,KAAK,IAAI;AAAA,IAC3B;AACA,WAAO;AAAA,EACX;AAAA,EAEA,IAAI,iBAAiB;AACjB,WAAO,KAAK,SAAS,aAAa,KAAK,SAAS;AAAA,EACpD;AAAA,EAEA,IAAI,iBAAiB;AACjB,WAAO,KAAK,SAAS;AAAA,EACzB;AAAA,EAEA,OAAO,IAAI,YAAmC;AAC1C,QAAI,sBAAsB,YAAY;AAClC,aAAO;AAAA,IACX;AAEA,WAAO,IAAI,WAAW,UAAU;AAAA,EACpC;AACJ;",
5
+ "names": []
6
+ }
@@ -3,7 +3,7 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { ServerAddressIp } from "#net/ServerAddress.js";
6
+ import { ServerAddressUdp } from "#net/ServerAddress.js";
7
7
  export declare enum ChannelType {
8
8
  UDP = "udp",
9
9
  BLE = "ble",
@@ -23,7 +23,7 @@ export interface Channel<T> {
23
23
  close(): Promise<void>;
24
24
  }
25
25
  export interface IpNetworkChannel<T> extends Channel<T> {
26
- networkAddress: ServerAddressIp;
26
+ networkAddress: ServerAddressUdp;
27
27
  }
28
28
  export declare function isIpNetworkChannel<T>(channel: Channel<T>): channel is IpNetworkChannel<T>;
29
29
  //# sourceMappingURL=Channel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Channel.d.ts","sourceRoot":"","sources":["../../../src/net/Channel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,oBAAY,WAAW;IACnB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;CACd;AAED,MAAM,WAAW,OAAO,CAAC,CAAC;IACtB,4CAA4C;IAC5C,cAAc,EAAE,MAAM,CAAC;IAEvB,8DAA8D;IAC9D,UAAU,EAAE,OAAO,CAAC;IAEpB,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IAEb,IAAI,EAAE,WAAW,CAAC;IAElB,iDAAiD;IACjD,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B,kCAAkC;IAClC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IACnD,cAAc,EAAE,eAAe,CAAC;CACnC;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAEzF"}
1
+ {"version":3,"file":"Channel.d.ts","sourceRoot":"","sources":["../../../src/net/Channel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,oBAAY,WAAW;IACnB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;CACd;AAED,MAAM,WAAW,OAAO,CAAC,CAAC;IACtB,4CAA4C;IAC5C,cAAc,EAAE,MAAM,CAAC;IAEvB,8DAA8D;IAC9D,UAAU,EAAE,OAAO,CAAC;IAEpB,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IAEb,IAAI,EAAE,WAAW,CAAC;IAElB,iDAAiD;IACjD,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B,kCAAkC;IAClC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IACnD,cAAc,EAAE,gBAAgB,CAAC;CACpC;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAEzF"}
@@ -8,16 +8,17 @@ import { Environmental } from "#environment/Environmental.js";
8
8
  import { Bytes } from "#util/Bytes.js";
9
9
  import { BasicSet } from "#util/Set.js";
10
10
  import { Channel, ChannelType } from "./Channel.js";
11
+ import { ServerAddress } from "./ServerAddress.js";
11
12
  /**
12
- * A TransportInterface is a generic interface for sending and receiving data on an established incoming connection.
13
- * It cannot open new connections.
13
+ * A local network endpoint associated with a specific {@link ServerAddress} for a connectionless protocol.
14
14
  */
15
- export interface TransportInterface {
16
- onData(listener: (socket: Channel<Bytes>, data: Bytes) => void): TransportInterface.Listener;
15
+ export interface ConnectionlessTransport {
16
+ onData(listener: (socket: Channel<Bytes>, data: Bytes) => void): ConnectionlessTransport.Listener;
17
17
  close(): Promise<void>;
18
18
  supports(type: ChannelType, address?: string): boolean;
19
+ openChannel(address: ServerAddress): Promise<Channel<Bytes>>;
19
20
  }
20
- export declare namespace TransportInterface {
21
+ export declare namespace ConnectionlessTransport {
21
22
  interface Listener {
22
23
  close(): Promise<void>;
23
24
  }
@@ -25,9 +26,9 @@ export declare namespace TransportInterface {
25
26
  /**
26
27
  * A collection of {@link TransportInterfaces} managed as a unit.
27
28
  */
28
- export declare class TransportInterfaceSet<T extends TransportInterface = TransportInterface> extends BasicSet<T> {
29
+ export declare class ConnectionlessTransportSet<T extends ConnectionlessTransport = ConnectionlessTransport> extends BasicSet<T> {
29
30
  constructor(...initialInterfaces: T[]);
30
- static [Environmental.create](env: Environment): TransportInterfaceSet<TransportInterface>;
31
+ static [Environmental.create](env: Environment): ConnectionlessTransportSet<ConnectionlessTransport>;
31
32
  /**
32
33
  * Closes all interfaces.
33
34
  */
@@ -41,4 +42,4 @@ export declare class TransportInterfaceSet<T extends TransportInterface = Transp
41
42
  */
42
43
  hasInterfaceFor(type: ChannelType, address?: string): boolean;
43
44
  }
44
- //# sourceMappingURL=TransportInterface.d.ts.map
45
+ //# sourceMappingURL=ConnectionlessTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionlessTransport.d.ts","sourceRoot":"","sources":["../../../src/net/ConnectionlessTransport.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,GAAG,uBAAuB,CAAC,QAAQ,CAAC;IAClG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACvD,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;CAChE;AAED,yBAAiB,uBAAuB,CAAC;IACrC,UAAiB,QAAQ;QACrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1B;CACJ;AAED;;GAEG;AACH,qBAAa,0BAA0B,CACnC,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,CAC7D,SAAQ,QAAQ,CAAC,CAAC,CAAC;gBACL,GAAG,iBAAiB,EAAE,CAAC,EAAE;IAIrC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAM9C;;OAEG;IACG,KAAK;IAOX;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM;IAIhD;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM;CAGtD"}
@@ -5,13 +5,13 @@
5
5
  */
6
6
  import { Environmental } from "#environment/Environmental.js";
7
7
  import { BasicSet } from "#util/Set.js";
8
- class TransportInterfaceSet extends BasicSet {
8
+ class ConnectionlessTransportSet extends BasicSet {
9
9
  constructor(...initialInterfaces) {
10
10
  super(...initialInterfaces);
11
11
  }
12
12
  static [Environmental.create](env) {
13
- const instance = new TransportInterfaceSet();
14
- env.set(TransportInterfaceSet, instance);
13
+ const instance = new ConnectionlessTransportSet();
14
+ env.set(ConnectionlessTransportSet, instance);
15
15
  return instance;
16
16
  }
17
17
  /**
@@ -21,6 +21,7 @@ class TransportInterfaceSet extends BasicSet {
21
21
  for (const transportInterface of this) {
22
22
  await transportInterface.close();
23
23
  }
24
+ this.clear();
24
25
  }
25
26
  /**
26
27
  * Obtain an interface capable of routing an address.
@@ -36,6 +37,6 @@ class TransportInterfaceSet extends BasicSet {
36
37
  }
37
38
  }
38
39
  export {
39
- TransportInterfaceSet
40
+ ConnectionlessTransportSet
40
41
  };
41
- //# sourceMappingURL=TransportInterface.js.map
42
+ //# sourceMappingURL=ConnectionlessTransport.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/net/ConnectionlessTransport.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,qBAAqB;AAE9B,SAAS,gBAAgB;AAuBlB,MAAM,mCAEH,SAAY;AAAA,EAClB,eAAe,mBAAwB;AACnC,UAAM,GAAG,iBAAiB;AAAA,EAC9B;AAAA,EAEA,QAAQ,cAAc,MAAM,EAAE,KAAkB;AAC5C,UAAM,WAAW,IAAI,2BAA2B;AAChD,QAAI,IAAI,4BAA4B,QAAQ;AAC5C,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAQ;AACV,eAAW,sBAAsB,MAAM;AACnC,YAAM,mBAAmB,MAAM;AAAA,IACnC;AACA,SAAK,MAAM;AAAA,EACf;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,MAAmB,SAAkB;AAC9C,WAAO,KAAK,KAAK,wBAAsB,mBAAmB,SAAS,MAAM,OAAO,CAAC;AAAA,EACrF;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB,MAAmB,SAAkB;AACjD,WAAO,KAAK,aAAa,MAAM,OAAO,MAAM;AAAA,EAChD;AACJ;",
5
+ "names": []
6
+ }
@@ -4,8 +4,8 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { MatterError } from "../MatterError.js";
7
- import { MaybePromise } from "../util/Promises.js";
8
- import { UdpChannel, UdpChannelOptions } from "./UdpChannel.js";
7
+ import type { MaybePromise } from "../util/Promises.js";
8
+ import type { UdpChannel, UdpChannelOptions } from "./udp/UdpChannel.js";
9
9
  export declare class NetworkError extends MatterError {
10
10
  }
11
11
  export declare class NoAddressAvailableError extends NetworkError {
@@ -1 +1 @@
1
- {"version":3,"file":"Network.d.ts","sourceRoot":"","sources":["../../../src/net/Network.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,qBAAa,YAAa,SAAQ,WAAW;CAAG;AAEhD,qBAAa,uBAAwB,SAAQ,YAAY;CAAG;AAE5D,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC;;;GAGG;AACH,oBAAY,aAAa;IACrB;;OAEG;IACH,WAAW,IAAI;IAEf;;OAEG;IACH,IAAI,IAAI;IAER;;OAEG;IACH,QAAQ,IAAI;IAEZ;;OAEG;IACH,QAAQ,IAAI;IAEZ;;OAEG;IACH,MAAM,IAAI;CACb;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,aAAa,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,gBAAgB,GAAG,uBAAuB,CAAC;AAClF,8BAAsB,OAAO;IACzB,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,gBAAgB,EAAE,GAAG,YAAY,CAAC,gBAAgB,EAAE,CAAC;IAC/F,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAEpE,KAAK;CAGd"}
1
+ {"version":3,"file":"Network.d.ts","sourceRoot":"","sources":["../../../src/net/Network.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,qBAAa,YAAa,SAAQ,WAAW;CAAG;AAEhD,qBAAa,uBAAwB,SAAQ,YAAY;CAAG;AAE5D,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC;;;GAGG;AACH,oBAAY,aAAa;IACrB;;OAEG;IACH,WAAW,IAAI;IAEf;;OAEG;IACH,IAAI,IAAI;IAER;;OAEG;IACH,QAAQ,IAAI;IAEZ;;OAEG;IACH,QAAQ,IAAI;IAEZ;;OAEG;IACH,MAAM,IAAI;CACb;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,aAAa,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,gBAAgB,GAAG,uBAAuB,CAAC;AAClF,8BAAsB,OAAO;IACzB,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,gBAAgB,EAAE,GAAG,YAAY,CAAC,gBAAgB,EAAE,CAAC;IAC/F,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAEpE,KAAK;CAGd"}
@@ -6,11 +6,16 @@
6
6
  import { Diagnostic } from "#log/Diagnostic.js";
7
7
  import { Duration } from "#time/Duration.js";
8
8
  import { Timestamp } from "#time/Timestamp.js";
9
- export type ServerAddressIp = {
9
+ export type ServerAddressUdp = {
10
10
  type: "udp";
11
11
  ip: string;
12
12
  port: number;
13
13
  };
14
+ export type ServerAddressTcp = {
15
+ type: "tcp";
16
+ ip: string;
17
+ port: number;
18
+ };
14
19
  export type ServerAddressBle = {
15
20
  type: "ble";
16
21
  peripheralAddress: string;
@@ -21,7 +26,7 @@ export interface Lifespan {
21
26
  /** Length of lifespan, if known (seconds) */
22
27
  ttl: Duration;
23
28
  }
24
- export type ServerAddress = (ServerAddressIp | ServerAddressBle) & Partial<Lifespan>;
29
+ export type ServerAddress = (ServerAddressUdp | ServerAddressTcp | ServerAddressBle) & Partial<Lifespan>;
25
30
  export declare function ServerAddress(definition: ServerAddress.Definition): ServerAddress;
26
31
  export declare namespace ServerAddress {
27
32
  function urlFor(address: ServerAddress): string;
@@ -1 +1 @@
1
- {"version":3,"file":"ServerAddress.d.ts","sourceRoot":"","sources":["../../../src/net/ServerAddress.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,MAAM,eAAe,GAAG;IAC1B,IAAI,EAAE,KAAK,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,KAAK,CAAC;IACZ,iBAAiB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,QAAQ;IACrB,0DAA0D;IAC1D,YAAY,EAAE,SAAS,CAAC;IAExB,6CAA6C;IAC7C,GAAG,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,eAAe,GAAG,gBAAgB,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAErF,wBAAgB,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,UAAU,GAKzD,aAAa,CACrB;AAED,yBAAiB,aAAa,CAAC;IAC3B,SAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAErD;IAED,SAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,cAcnD;IAED,SAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,UAAU,CAE/D;IAED,UAAiB,UAAW,SAAQ,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;QAC1D,GAAG,CAAC,EAAE,QAAQ,CAAC;KAClB;CACJ"}
1
+ {"version":3,"file":"ServerAddress.d.ts","sourceRoot":"","sources":["../../../src/net/ServerAddress.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,KAAK,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,KAAK,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,KAAK,CAAC;IACZ,iBAAiB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,QAAQ;IACrB,0DAA0D;IAC1D,YAAY,EAAE,SAAS,CAAC;IAExB,6CAA6C;IAC7C,GAAG,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,gBAAgB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEzG,wBAAgB,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,UAAU,GAKzD,aAAa,CACrB;AAED,yBAAiB,aAAa,CAAC;IAC3B,SAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAYrD;IAED,SAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,cAuBnD;IAED,SAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,UAAU,CAE/D;IAED,UAAiB,UAAW,SAAQ,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;QAC1D,GAAG,CAAC,EAAE,QAAQ,CAAC;KAClB;CACJ"}
@@ -15,15 +15,30 @@ function ServerAddress(definition) {
15
15
  }
16
16
  ((ServerAddress2) => {
17
17
  function urlFor(address) {
18
- return address.type === "udp" ? `udp://[${address.ip}]:${address.port}` : `ble://${address.peripheralAddress}`;
18
+ switch (address.type) {
19
+ case "udp":
20
+ case "tcp":
21
+ return `${address.type}://${address.ip}:${address.port}`;
22
+ case "ble":
23
+ return `ble://${address.peripheralAddress}`;
24
+ default:
25
+ return `${address.type}://`;
26
+ }
19
27
  }
20
28
  ServerAddress2.urlFor = urlFor;
21
29
  function diagnosticFor(address) {
22
30
  const diagnostic = Array();
23
- if (address.type === "udp") {
24
- diagnostic.push("udp://", Diagnostic.strong(address.ip), ":", address.port);
25
- } else {
26
- diagnostic.push("ble://", Diagnostic.strong(address.peripheralAddress));
31
+ switch (address.type) {
32
+ case "udp":
33
+ case "tcp":
34
+ diagnostic.push(`${address.type}://`, Diagnostic.strong(address.ip), ":", address.port);
35
+ break;
36
+ case "ble":
37
+ diagnostic.push("ble://", Diagnostic.strong(address.peripheralAddress));
38
+ break;
39
+ default:
40
+ diagnostic.push(`${address.type}://`);
41
+ break;
27
42
  }
28
43
  if ("ttl" in address && typeof address.ttl === "number") {
29
44
  diagnostic.push(" ttl ", Duration.format(address.ttl));
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/net/ServerAddress.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AAEzB,SAAS,eAAe;AAuBjB,SAAS,cAAc,YAAsC;AAChE,SAAO;AAAA,IACH,cAAc;AAAA,IACd,GAAG;AAAA,IACH,KAAK,QAAQ,WAAW,GAAG;AAAA,EAC/B;AACJ;AAAA,CAEO,CAAUA,mBAAV;AACI,WAAS,OAAO,SAAgC;AACnD,WAAO,QAAQ,SAAS,QAAQ,UAAU,QAAQ,EAAE,KAAK,QAAQ,IAAI,KAAK,SAAS,QAAQ,iBAAiB;AAAA,EAChH;AAFO,EAAAA,eAAS;AAIT,WAAS,cAAc,SAAwB;AAClD,UAAM,aAAa,MAAe;AAElC,QAAI,QAAQ,SAAS,OAAO;AACxB,iBAAW,KAAK,UAAU,WAAW,OAAO,QAAQ,EAAE,GAAG,KAAK,QAAQ,IAAI;AAAA,IAC9E,OAAO;AACH,iBAAW,KAAK,UAAU,WAAW,OAAO,QAAQ,iBAAiB,CAAC;AAAA,IAC1E;AAEA,QAAI,SAAS,WAAW,OAAO,QAAQ,QAAQ,UAAU;AACrD,iBAAW,KAAK,SAAS,SAAS,OAAO,QAAQ,GAAG,CAAC;AAAA,IACzD;AAEA,WAAO,WAAW,OAAO,GAAG,UAAU;AAAA,EAC1C;AAdO,EAAAA,eAAS;AAgBT,WAAS,aAAa,SAAoC;AAC7D,WAAO;AAAA,EACX;AAFO,EAAAA,eAAS;AAAA,GArBH;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AAEzB,SAAS,eAAe;AA6BjB,SAAS,cAAc,YAAsC;AAChE,SAAO;AAAA,IACH,cAAc;AAAA,IACd,GAAG;AAAA,IACH,KAAK,QAAQ,WAAW,GAAG;AAAA,EAC/B;AACJ;AAAA,CAEO,CAAUA,mBAAV;AACI,WAAS,OAAO,SAAgC;AACnD,YAAQ,QAAQ,MAAM;AAAA,MAClB,KAAK;AAAA,MACL,KAAK;AACD,eAAO,GAAG,QAAQ,IAAI,MAAM,QAAQ,EAAE,IAAI,QAAQ,IAAI;AAAA,MAE1D,KAAK;AACD,eAAO,SAAS,QAAQ,iBAAiB;AAAA,MAE7C;AACI,eAAO,GAAI,QAAgB,IAAI;AAAA,IACvC;AAAA,EACJ;AAZO,EAAAA,eAAS;AAcT,WAAS,cAAc,SAAwB;AAClD,UAAM,aAAa,MAAe;AAElC,YAAQ,QAAQ,MAAM;AAAA,MAClB,KAAK;AAAA,MACL,KAAK;AACD,mBAAW,KAAK,GAAG,QAAQ,IAAI,OAAO,WAAW,OAAO,QAAQ,EAAE,GAAG,KAAK,QAAQ,IAAI;AACtF;AAAA,MAEJ,KAAK;AACD,mBAAW,KAAK,UAAU,WAAW,OAAO,QAAQ,iBAAiB,CAAC;AACtE;AAAA,MAEJ;AACI,mBAAW,KAAK,GAAI,QAAgB,IAAI,KAAK;AAC7C;AAAA,IACR;AAEA,QAAI,SAAS,WAAW,OAAO,QAAQ,QAAQ,UAAU;AACrD,iBAAW,KAAK,SAAS,SAAS,OAAO,QAAQ,GAAG,CAAC;AAAA,IACzD;AAEA,WAAO,WAAW,OAAO,GAAG,UAAU;AAAA,EAC1C;AAvBO,EAAAA,eAAS;AAyBT,WAAS,aAAa,SAAoC;AAC7D,WAAO;AAAA,EACX;AAFO,EAAAA,eAAS;AAAA,GAxCH;",
5
5
  "names": ["ServerAddress"]
6
6
  }
@@ -3,14 +3,12 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ export * from "./AppAddress.js";
6
7
  export * from "./Channel.js";
8
+ export * from "./ConnectionlessTransport.js";
7
9
  export * from "./mock/index.js";
8
- export * from "./NetInterface.js";
9
10
  export * from "./Network.js";
10
11
  export * from "./RetrySchedule.js";
11
12
  export * from "./ServerAddress.js";
12
- export * from "./TransportInterface.js";
13
- export * from "./UdpChannel.js";
14
- export * from "./UdpInterface.js";
15
- export * from "./UdpMulticastServer.js";
13
+ export * from "./udp/index.js";
16
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/net/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/net/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC"}