@matter/node 0.11.9 → 0.12.0-alpha.0-20241213-fcd71a96d

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 (221) hide show
  1. package/dist/cjs/behavior/internal/BehaviorBacking.d.ts +6 -1
  2. package/dist/cjs/behavior/internal/BehaviorBacking.d.ts.map +1 -1
  3. package/dist/cjs/behavior/internal/BehaviorBacking.js +2 -1
  4. package/dist/cjs/behavior/internal/BehaviorBacking.js.map +1 -1
  5. package/dist/cjs/behavior/internal/ClientBehaviorBacking.d.ts +2 -1
  6. package/dist/cjs/behavior/internal/ClientBehaviorBacking.d.ts.map +1 -1
  7. package/dist/cjs/behavior/internal/ClientBehaviorBacking.js +4 -0
  8. package/dist/cjs/behavior/internal/ClientBehaviorBacking.js.map +1 -1
  9. package/dist/cjs/behavior/internal/ServerBehaviorBacking.d.ts +2 -0
  10. package/dist/cjs/behavior/internal/ServerBehaviorBacking.d.ts.map +1 -1
  11. package/dist/cjs/behavior/internal/ServerBehaviorBacking.js +37 -0
  12. package/dist/cjs/behavior/internal/ServerBehaviorBacking.js.map +1 -1
  13. package/dist/cjs/behavior/state/transaction/Transaction.d.ts +18 -18
  14. package/dist/cjs/behavior/system/events/EventsBehavior.d.ts +26 -0
  15. package/dist/cjs/behavior/system/events/EventsBehavior.d.ts.map +1 -0
  16. package/dist/cjs/behavior/system/events/EventsBehavior.js +74 -0
  17. package/dist/cjs/behavior/system/events/EventsBehavior.js.map +6 -0
  18. package/dist/cjs/behavior/system/events/index.d.ts +7 -0
  19. package/dist/cjs/behavior/system/events/index.d.ts.map +1 -0
  20. package/dist/cjs/behavior/system/events/index.js +24 -0
  21. package/dist/cjs/behavior/system/events/index.js.map +6 -0
  22. package/dist/cjs/behavior/system/network/ServerNetworkRuntime.d.ts.map +1 -1
  23. package/dist/cjs/behavior/system/network/ServerNetworkRuntime.js +3 -0
  24. package/dist/cjs/behavior/system/network/ServerNetworkRuntime.js.map +1 -1
  25. package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts +8 -0
  26. package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts.map +1 -1
  27. package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.js +12 -4
  28. package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.js.map +1 -1
  29. package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.d.ts +2 -4
  30. package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.d.ts.map +1 -1
  31. package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.js +6 -8
  32. package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.js.map +1 -1
  33. package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
  34. package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js +23 -20
  35. package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
  36. package/dist/cjs/endpoint/Agent.d.ts +1 -1
  37. package/dist/cjs/endpoint/Agent.js +1 -1
  38. package/dist/cjs/endpoint/index.d.ts +1 -1
  39. package/dist/cjs/endpoint/index.d.ts.map +1 -1
  40. package/dist/cjs/endpoint/index.js +1 -1
  41. package/dist/cjs/endpoint/index.js.map +1 -1
  42. package/dist/cjs/endpoint/properties/Behaviors.d.ts +13 -0
  43. package/dist/cjs/endpoint/properties/Behaviors.d.ts.map +1 -1
  44. package/dist/cjs/endpoint/properties/Behaviors.js +37 -24
  45. package/dist/cjs/endpoint/properties/Behaviors.js.map +2 -2
  46. package/dist/cjs/endpoint/properties/EndpointInitializer.d.ts +8 -3
  47. package/dist/cjs/endpoint/properties/EndpointInitializer.d.ts.map +1 -1
  48. package/dist/cjs/endpoint/properties/EndpointInitializer.js +5 -0
  49. package/dist/cjs/endpoint/properties/EndpointInitializer.js.map +1 -1
  50. package/dist/cjs/endpoint/server/BehaviorServer.d.ts +21 -0
  51. package/dist/cjs/endpoint/server/BehaviorServer.d.ts.map +1 -0
  52. package/dist/cjs/endpoint/server/BehaviorServer.js +272 -0
  53. package/dist/cjs/endpoint/server/BehaviorServer.js.map +6 -0
  54. package/dist/{esm/endpoint → cjs/endpoint/server}/EndpointServer.d.ts +5 -6
  55. package/dist/cjs/endpoint/server/EndpointServer.d.ts.map +1 -0
  56. package/dist/cjs/endpoint/{EndpointServer.js → server/EndpointServer.js} +38 -14
  57. package/dist/cjs/endpoint/server/EndpointServer.js.map +6 -0
  58. package/dist/cjs/{node → endpoint}/server/ServerEndpointInitializer.d.ts +4 -4
  59. package/dist/cjs/endpoint/server/ServerEndpointInitializer.d.ts.map +1 -0
  60. package/dist/cjs/{node → endpoint}/server/ServerEndpointInitializer.js +7 -7
  61. package/dist/cjs/endpoint/server/ServerEndpointInitializer.js.map +6 -0
  62. package/dist/cjs/endpoint/server/index.d.ts +8 -0
  63. package/dist/cjs/endpoint/server/index.d.ts.map +1 -0
  64. package/dist/cjs/endpoint/server/index.js +25 -0
  65. package/dist/cjs/endpoint/server/index.js.map +6 -0
  66. package/dist/cjs/endpoint/type/MutableEndpoint.d.ts.map +1 -1
  67. package/dist/cjs/endpoint/type/MutableEndpoint.js +3 -0
  68. package/dist/cjs/endpoint/type/MutableEndpoint.js.map +1 -1
  69. package/dist/cjs/node/Node.d.ts +5 -0
  70. package/dist/cjs/node/Node.d.ts.map +1 -1
  71. package/dist/cjs/node/Node.js +17 -2
  72. package/dist/cjs/node/Node.js.map +1 -1
  73. package/dist/cjs/node/NodeLifecycle.d.ts +11 -1
  74. package/dist/cjs/node/NodeLifecycle.d.ts.map +1 -1
  75. package/dist/cjs/node/NodeLifecycle.js +14 -0
  76. package/dist/cjs/node/NodeLifecycle.js.map +1 -1
  77. package/dist/cjs/node/ServerNode.d.ts +3 -2
  78. package/dist/cjs/node/ServerNode.d.ts.map +1 -1
  79. package/dist/cjs/node/ServerNode.js +9 -9
  80. package/dist/cjs/node/ServerNode.js.map +1 -1
  81. package/dist/cjs/node/server/ServerEnvironment.js +1 -1
  82. package/dist/cjs/node/server/ServerEnvironment.js.map +1 -1
  83. package/dist/cjs/node/server/TransactionalInteractionServer.d.ts +2 -2
  84. package/dist/cjs/node/server/TransactionalInteractionServer.d.ts.map +1 -1
  85. package/dist/cjs/node/server/TransactionalInteractionServer.js +9 -4
  86. package/dist/cjs/node/server/TransactionalInteractionServer.js.map +2 -2
  87. package/dist/cjs/node/server/index.d.ts +0 -1
  88. package/dist/cjs/node/server/index.d.ts.map +1 -1
  89. package/dist/cjs/node/server/index.js +0 -1
  90. package/dist/cjs/node/server/index.js.map +1 -1
  91. package/dist/esm/behavior/internal/BehaviorBacking.d.ts +6 -1
  92. package/dist/esm/behavior/internal/BehaviorBacking.d.ts.map +1 -1
  93. package/dist/esm/behavior/internal/BehaviorBacking.js +2 -1
  94. package/dist/esm/behavior/internal/BehaviorBacking.js.map +1 -1
  95. package/dist/esm/behavior/internal/ClientBehaviorBacking.d.ts +2 -1
  96. package/dist/esm/behavior/internal/ClientBehaviorBacking.d.ts.map +1 -1
  97. package/dist/esm/behavior/internal/ClientBehaviorBacking.js +4 -0
  98. package/dist/esm/behavior/internal/ClientBehaviorBacking.js.map +1 -1
  99. package/dist/esm/behavior/internal/ServerBehaviorBacking.d.ts +2 -0
  100. package/dist/esm/behavior/internal/ServerBehaviorBacking.d.ts.map +1 -1
  101. package/dist/esm/behavior/internal/ServerBehaviorBacking.js +37 -0
  102. package/dist/esm/behavior/internal/ServerBehaviorBacking.js.map +1 -1
  103. package/dist/esm/behavior/state/transaction/Transaction.d.ts +18 -18
  104. package/dist/esm/behavior/system/events/EventsBehavior.d.ts +26 -0
  105. package/dist/esm/behavior/system/events/EventsBehavior.d.ts.map +1 -0
  106. package/dist/esm/behavior/system/events/EventsBehavior.js +54 -0
  107. package/dist/esm/behavior/system/events/EventsBehavior.js.map +6 -0
  108. package/dist/esm/behavior/system/events/index.d.ts +7 -0
  109. package/dist/esm/behavior/system/events/index.d.ts.map +1 -0
  110. package/dist/esm/behavior/system/events/index.js +7 -0
  111. package/dist/esm/behavior/system/events/index.js.map +6 -0
  112. package/dist/esm/behavior/system/network/ServerNetworkRuntime.d.ts.map +1 -1
  113. package/dist/esm/behavior/system/network/ServerNetworkRuntime.js +3 -0
  114. package/dist/esm/behavior/system/network/ServerNetworkRuntime.js.map +1 -1
  115. package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts +8 -0
  116. package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts.map +1 -1
  117. package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.js +12 -4
  118. package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.js.map +1 -1
  119. package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.d.ts +2 -4
  120. package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.d.ts.map +1 -1
  121. package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.js +6 -8
  122. package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.js.map +1 -1
  123. package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
  124. package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js +23 -20
  125. package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
  126. package/dist/esm/endpoint/Agent.d.ts +1 -1
  127. package/dist/esm/endpoint/Agent.js +1 -1
  128. package/dist/esm/endpoint/index.d.ts +1 -1
  129. package/dist/esm/endpoint/index.d.ts.map +1 -1
  130. package/dist/esm/endpoint/index.js +1 -1
  131. package/dist/esm/endpoint/properties/Behaviors.d.ts +13 -0
  132. package/dist/esm/endpoint/properties/Behaviors.d.ts.map +1 -1
  133. package/dist/esm/endpoint/properties/Behaviors.js +38 -27
  134. package/dist/esm/endpoint/properties/Behaviors.js.map +2 -2
  135. package/dist/esm/endpoint/properties/EndpointInitializer.d.ts +8 -3
  136. package/dist/esm/endpoint/properties/EndpointInitializer.d.ts.map +1 -1
  137. package/dist/esm/endpoint/properties/EndpointInitializer.js +5 -0
  138. package/dist/esm/endpoint/properties/EndpointInitializer.js.map +1 -1
  139. package/dist/esm/endpoint/server/BehaviorServer.d.ts +21 -0
  140. package/dist/esm/endpoint/server/BehaviorServer.d.ts.map +1 -0
  141. package/dist/esm/endpoint/server/BehaviorServer.js +269 -0
  142. package/dist/esm/endpoint/server/BehaviorServer.js.map +6 -0
  143. package/dist/{cjs/endpoint → esm/endpoint/server}/EndpointServer.d.ts +5 -6
  144. package/dist/esm/endpoint/server/EndpointServer.d.ts.map +1 -0
  145. package/dist/esm/endpoint/{EndpointServer.js → server/EndpointServer.js} +38 -14
  146. package/dist/esm/endpoint/server/EndpointServer.js.map +6 -0
  147. package/dist/esm/{node → endpoint}/server/ServerEndpointInitializer.d.ts +4 -4
  148. package/dist/esm/endpoint/server/ServerEndpointInitializer.d.ts.map +1 -0
  149. package/dist/esm/{node → endpoint}/server/ServerEndpointInitializer.js +7 -7
  150. package/dist/esm/endpoint/server/ServerEndpointInitializer.js.map +6 -0
  151. package/dist/esm/endpoint/server/index.d.ts +8 -0
  152. package/dist/esm/endpoint/server/index.d.ts.map +1 -0
  153. package/dist/esm/endpoint/server/index.js +8 -0
  154. package/dist/esm/endpoint/server/index.js.map +6 -0
  155. package/dist/esm/endpoint/type/MutableEndpoint.d.ts.map +1 -1
  156. package/dist/esm/endpoint/type/MutableEndpoint.js +3 -0
  157. package/dist/esm/endpoint/type/MutableEndpoint.js.map +1 -1
  158. package/dist/esm/node/Node.d.ts +5 -0
  159. package/dist/esm/node/Node.d.ts.map +1 -1
  160. package/dist/esm/node/Node.js +17 -2
  161. package/dist/esm/node/Node.js.map +1 -1
  162. package/dist/esm/node/NodeLifecycle.d.ts +11 -1
  163. package/dist/esm/node/NodeLifecycle.d.ts.map +1 -1
  164. package/dist/esm/node/NodeLifecycle.js +15 -1
  165. package/dist/esm/node/NodeLifecycle.js.map +1 -1
  166. package/dist/esm/node/ServerNode.d.ts +3 -2
  167. package/dist/esm/node/ServerNode.d.ts.map +1 -1
  168. package/dist/esm/node/ServerNode.js +10 -10
  169. package/dist/esm/node/ServerNode.js.map +1 -1
  170. package/dist/esm/node/server/ServerEnvironment.js +1 -1
  171. package/dist/esm/node/server/ServerEnvironment.js.map +1 -1
  172. package/dist/esm/node/server/TransactionalInteractionServer.d.ts +2 -2
  173. package/dist/esm/node/server/TransactionalInteractionServer.d.ts.map +1 -1
  174. package/dist/esm/node/server/TransactionalInteractionServer.js +9 -4
  175. package/dist/esm/node/server/TransactionalInteractionServer.js.map +2 -2
  176. package/dist/esm/node/server/index.d.ts +0 -1
  177. package/dist/esm/node/server/index.d.ts.map +1 -1
  178. package/dist/esm/node/server/index.js +0 -1
  179. package/dist/esm/node/server/index.js.map +1 -1
  180. package/package.json +7 -7
  181. package/src/behavior/internal/BehaviorBacking.ts +9 -1
  182. package/src/behavior/internal/ClientBehaviorBacking.ts +6 -1
  183. package/src/behavior/internal/ServerBehaviorBacking.ts +51 -0
  184. package/src/behavior/system/events/EventsBehavior.ts +60 -0
  185. package/src/behavior/system/events/index.ts +7 -0
  186. package/src/behavior/system/network/ServerNetworkRuntime.ts +6 -0
  187. package/src/behaviors/administrator-commissioning/AdministratorCommissioningServer.ts +14 -4
  188. package/src/behaviors/general-diagnostics/GeneralDiagnosticsServer.ts +16 -9
  189. package/src/behaviors/operational-credentials/OperationalCredentialsServer.ts +26 -20
  190. package/src/endpoint/Agent.ts +1 -1
  191. package/src/endpoint/index.ts +1 -1
  192. package/src/endpoint/properties/Behaviors.ts +56 -28
  193. package/src/endpoint/properties/EndpointInitializer.ts +9 -3
  194. package/src/endpoint/server/BehaviorServer.ts +387 -0
  195. package/src/endpoint/{EndpointServer.ts → server/EndpointServer.ts} +50 -20
  196. package/src/{node → endpoint}/server/ServerEndpointInitializer.ts +7 -7
  197. package/src/endpoint/server/index.ts +8 -0
  198. package/src/endpoint/type/MutableEndpoint.ts +4 -0
  199. package/src/node/Node.ts +22 -4
  200. package/src/node/NodeLifecycle.ts +17 -1
  201. package/src/node/ServerNode.ts +11 -13
  202. package/src/node/server/ServerEnvironment.ts +1 -1
  203. package/src/node/server/TransactionalInteractionServer.ts +13 -7
  204. package/src/node/server/index.ts +0 -1
  205. package/dist/cjs/behavior/internal/ClusterServerBacking.d.ts +0 -36
  206. package/dist/cjs/behavior/internal/ClusterServerBacking.d.ts.map +0 -1
  207. package/dist/cjs/behavior/internal/ClusterServerBacking.js +0 -342
  208. package/dist/cjs/behavior/internal/ClusterServerBacking.js.map +0 -6
  209. package/dist/cjs/endpoint/EndpointServer.d.ts.map +0 -1
  210. package/dist/cjs/endpoint/EndpointServer.js.map +0 -6
  211. package/dist/cjs/node/server/ServerEndpointInitializer.d.ts.map +0 -1
  212. package/dist/cjs/node/server/ServerEndpointInitializer.js.map +0 -6
  213. package/dist/esm/behavior/internal/ClusterServerBacking.d.ts +0 -36
  214. package/dist/esm/behavior/internal/ClusterServerBacking.d.ts.map +0 -1
  215. package/dist/esm/behavior/internal/ClusterServerBacking.js +0 -330
  216. package/dist/esm/behavior/internal/ClusterServerBacking.js.map +0 -6
  217. package/dist/esm/endpoint/EndpointServer.d.ts.map +0 -1
  218. package/dist/esm/endpoint/EndpointServer.js.map +0 -6
  219. package/dist/esm/node/server/ServerEndpointInitializer.d.ts.map +0 -1
  220. package/dist/esm/node/server/ServerEndpointInitializer.js.map +0 -6
  221. package/src/behavior/internal/ClusterServerBacking.ts +0 -446
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ClusterBehavior } from "#behavior/cluster/ClusterBehavior.js";
7
+ import { ClusterServer } from "#protocol";
8
+ import type { EndpointServer } from "./EndpointServer.js";
9
+ export interface BehaviorServer extends ClusterServer {
10
+ close(): void;
11
+ }
12
+ /**
13
+ * Create a {@link ClusterServer} for a {@link ClusterBehavior}.
14
+ *
15
+ * Note that we only create servers for cluster behaviors. Other {@link Behavior} implementations do not have proper
16
+ * metadata to go online.
17
+ *
18
+ * TODO - refactor element server management after we remove the old API
19
+ */
20
+ export declare function BehaviorServer(endpointServer: EndpointServer, type: ClusterBehavior.Type): BehaviorServer;
21
+ //# sourceMappingURL=BehaviorServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BehaviorServer.d.ts","sourceRoot":"","sources":["../../../../src/endpoint/server/BehaviorServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAkBvE,OAAO,EAGH,aAAa,EAQhB,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,MAAM,WAAW,cAAe,SAAQ,aAAa;IACjD,KAAK,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,cAAc,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,GAAG,cAAc,CA2DzG"}
@@ -0,0 +1,272 @@
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 BehaviorServer_exports = {};
20
+ __export(BehaviorServer_exports, {
21
+ BehaviorServer: () => BehaviorServer
22
+ });
23
+ module.exports = __toCommonJS(BehaviorServer_exports);
24
+ var import_AccessControl = require("#behavior/AccessControl.js");
25
+ var import_behavior = require("#behavior/index.js");
26
+ var import_StructManager = require("#behavior/state/managed/values/StructManager.js");
27
+ var import_Status = require("#behavior/state/transaction/Status.js");
28
+ var import_general = require("#general");
29
+ var import_model = require("#model");
30
+ var import_protocol = require("#protocol");
31
+ /**
32
+ * @license
33
+ * Copyright 2022-2024 Matter.js Authors
34
+ * SPDX-License-Identifier: Apache-2.0
35
+ */
36
+ const logger = import_general.Logger.get("BehaviorServer");
37
+ function BehaviorServer(endpointServer, type) {
38
+ const { id, name, attributes, commands, events } = type.cluster;
39
+ const { endpoint } = endpointServer;
40
+ const datasource = createClusterDatasource(endpoint, type);
41
+ const observers = new import_general.ObserverGroup();
42
+ const clusterServer = {
43
+ id,
44
+ name,
45
+ datasource,
46
+ attributes: {},
47
+ commands: {},
48
+ events: {},
49
+ close() {
50
+ observers.close();
51
+ }
52
+ };
53
+ const stateView = endpoint.stateOf(type);
54
+ const observables = endpoint.eventsOf(type);
55
+ const elements = endpointServer.endpoint.behaviors.elementsOf(type);
56
+ for (const name2 of elements.attributes) {
57
+ const attribute = attributes[name2];
58
+ const server = createAttributeServer(
59
+ name2,
60
+ attribute,
61
+ endpoint,
62
+ type,
63
+ datasource,
64
+ stateView,
65
+ observables,
66
+ observers
67
+ );
68
+ clusterServer.attributes[name2] = server;
69
+ server.assignToEndpoint(endpointServer);
70
+ }
71
+ for (const name2 of elements.commands) {
72
+ const command = commands[name2];
73
+ clusterServer.commands[name2] = createCommandServer(name2, command, endpoint, type);
74
+ }
75
+ for (const name2 of elements.events) {
76
+ const server = createEventServer(name2, events[name2], endpoint, type, observables, observers);
77
+ clusterServer.events[name2] = server;
78
+ server.assignToEndpoint(endpointServer);
79
+ }
80
+ return clusterServer;
81
+ }
82
+ function createClusterDatasource(endpoint, type) {
83
+ const env = endpoint.env;
84
+ return {
85
+ get version() {
86
+ return endpoint.behaviors.versionOf(type);
87
+ },
88
+ get eventHandler() {
89
+ return env.get(import_protocol.OccurrenceManager);
90
+ },
91
+ get fabrics() {
92
+ return env.get(import_protocol.FabricManager).fabrics;
93
+ },
94
+ // We handle change management ourselves
95
+ changed() {
96
+ },
97
+ // We handle version management ourselves
98
+ increaseVersion() {
99
+ return this.version;
100
+ }
101
+ };
102
+ }
103
+ function createAttributeServer(name, definition, endpoint, type, datasource, stateView, observables, observers) {
104
+ function getter(_session, _endpoint, _isFabricFiltered, message) {
105
+ if (!message) {
106
+ return stateView[name];
107
+ }
108
+ const behavior = behaviorFor(endpoint, type, message);
109
+ behavior.context.activity?.frame(`read ${name}`);
110
+ const trace = behavior.context.trace;
111
+ if (trace) {
112
+ trace.path = endpoint.path.at(name);
113
+ }
114
+ logger.debug("Read", import_general.Diagnostic.strong(`${endpoint}.state.${name}`), "via", behavior.context.transaction.via);
115
+ const state = behavior.state;
116
+ import_StructManager.StructManager.assertDirectReadAuthorized(state, name);
117
+ if (trace) {
118
+ trace.output = state[name];
119
+ }
120
+ return state[name];
121
+ }
122
+ function setter(value, _session, _endpoint, message) {
123
+ const behavior = behaviorFor(endpoint, type, message);
124
+ behavior.context.activity?.frame(`write ${name}`);
125
+ logger.info("Write", import_general.Diagnostic.strong(`${endpoint}.state.${name}`), "via", behavior.context.transaction.via);
126
+ const trace = behavior.context.trace;
127
+ if (trace) {
128
+ trace.path = endpoint.path.at(name);
129
+ trace.input = value;
130
+ }
131
+ const state = behavior.state;
132
+ state[name] = value;
133
+ return behavior.context.transaction?.status === import_Status.Status.Exclusive;
134
+ }
135
+ const server = (0, import_protocol.createAttributeServer)(
136
+ type.cluster,
137
+ definition,
138
+ name,
139
+ stateView[name],
140
+ datasource,
141
+ getter,
142
+ setter
143
+ );
144
+ if (server instanceof import_protocol.AttributeServer) {
145
+ const observable = observables[`${name}$Changed`];
146
+ if (observable !== void 0) {
147
+ observers.on(observable, (_value, _oldValue, context) => {
148
+ const session = context.session;
149
+ if (session instanceof import_protocol.SecureSession) {
150
+ server.updated(session);
151
+ } else {
152
+ server.updatedLocal();
153
+ }
154
+ });
155
+ }
156
+ }
157
+ return server;
158
+ }
159
+ function createCommandServer(name, definition, endpoint, type) {
160
+ const schema = type.schema?.member((0, import_general.camelize)(name, true), [import_model.ElementTag.Command]);
161
+ if (schema === void 0) {
162
+ throw new import_general.ImplementationError(`There is no metadata for command ${name}`);
163
+ }
164
+ const access = (0, import_AccessControl.AccessControl)(schema);
165
+ const handler = (request, _session, message) => {
166
+ let requestDiagnostic;
167
+ if ((0, import_general.isObject)(request)) {
168
+ requestDiagnostic = import_general.Diagnostic.dict(request);
169
+ } else if (request !== void 0) {
170
+ requestDiagnostic = request;
171
+ } else {
172
+ requestDiagnostic = import_general.Diagnostic.weak("(no payload)");
173
+ }
174
+ const behavior = behaviorFor(endpoint, type, message);
175
+ const path = endpoint.path.at(name);
176
+ const trace = behavior.context.trace;
177
+ if (trace) {
178
+ trace.path = endpoint.path.at(name);
179
+ trace.input = request;
180
+ }
181
+ logger.info("Invoke", import_general.Diagnostic.strong(path.toString()), behavior.context.transaction.via, requestDiagnostic);
182
+ access.authorizeInvoke(behavior.context, {
183
+ path,
184
+ cluster: behavior.cluster.id
185
+ });
186
+ let isAsync = false;
187
+ let activity;
188
+ let result;
189
+ try {
190
+ activity = behavior.context?.activity?.frame(`invoke ${name}`);
191
+ const invoke = behavior[name].bind(behavior);
192
+ if (behavior.constructor.lockOnInvoke) {
193
+ const tx = behavior.context.transaction;
194
+ if (import_behavior.Resource.isLocked(behavior)) {
195
+ result = async function invokeAsync() {
196
+ await tx.addResources(behavior);
197
+ await tx.begin();
198
+ return invoke(request);
199
+ }();
200
+ } else {
201
+ tx.addResourcesSync(behavior);
202
+ tx.beginSync();
203
+ result = invoke(request);
204
+ }
205
+ } else {
206
+ result = invoke(request);
207
+ }
208
+ if (import_general.MaybePromise.is(result)) {
209
+ isAsync = true;
210
+ result = Promise.resolve(result).then((result2) => {
211
+ if (trace) {
212
+ trace.output = result2;
213
+ }
214
+ return result2;
215
+ }).finally(() => activity?.[Symbol.dispose]());
216
+ } else if (trace) {
217
+ trace.output = result;
218
+ }
219
+ } finally {
220
+ if (!isAsync) {
221
+ activity?.[Symbol.dispose]();
222
+ }
223
+ }
224
+ return result;
225
+ };
226
+ const server = new import_protocol.CommandServer(
227
+ definition.requestId,
228
+ definition.responseId,
229
+ name,
230
+ definition.requestSchema,
231
+ definition.responseSchema,
232
+ definition.timed,
233
+ definition.invokeAcl,
234
+ handler
235
+ );
236
+ server.debug = () => {
237
+ };
238
+ return server;
239
+ }
240
+ function createEventServer(name, definition, endpoint, type, observables, observers) {
241
+ const observable = observables[name];
242
+ const server = new import_protocol.EventServer(
243
+ definition.id,
244
+ type.cluster.id,
245
+ name,
246
+ definition.schema,
247
+ definition.priority,
248
+ definition.readAcl
249
+ );
250
+ if (observable !== void 0) {
251
+ observers.on(observable, (payload, _context) => {
252
+ const maybePromise = server.triggerEvent(payload);
253
+ if (import_general.MaybePromise.is(maybePromise)) {
254
+ endpoint.env.runtime.add(maybePromise);
255
+ }
256
+ });
257
+ }
258
+ const promise = server.bindToEventHandler(endpoint.env.get(import_protocol.OccurrenceManager));
259
+ if (import_general.MaybePromise.is(promise)) {
260
+ throw new import_general.InternalError("Event handler binding returned a promise");
261
+ }
262
+ return server;
263
+ }
264
+ function behaviorFor(endpoint, type, message) {
265
+ const context = import_behavior.Contextual.contextOf(message);
266
+ if (!context) {
267
+ throw new import_general.InternalError("Message context not installed");
268
+ }
269
+ const agent = context.agentFor(endpoint);
270
+ return agent.get(type);
271
+ }
272
+ //# sourceMappingURL=BehaviorServer.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/endpoint/server/BehaviorServer.ts"],
4
+ "mappings": "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",
5
+ "names": ["name", "ConstructAttributeServer", "result"]
6
+ }
@@ -3,22 +3,21 @@
3
3
  * Copyright 2022-2024 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { Behavior } from "#behavior/Behavior.js";
7
- import { BehaviorBacking } from "#behavior/internal/BehaviorBacking.js";
8
6
  import { ClusterClientObj, ClusterServer, EndpointInterface } from "#protocol";
9
7
  import { ClusterId, ClusterType, EndpointNumber } from "#types";
10
- import { Endpoint } from "./Endpoint.js";
8
+ import { Endpoint } from "../Endpoint.js";
9
+ import { BehaviorServer } from "./BehaviorServer.js";
11
10
  /**
12
11
  * EndpointServer makes an {@link Endpoint} available for remote access as an Endpoint on a Matter network.
13
12
  */
14
13
  export declare class EndpointServer implements EndpointInterface {
15
14
  #private;
16
- get endpoint(): Endpoint<import("./index.js").EndpointType.Empty>;
15
+ get endpoint(): Endpoint<import("../index.js").EndpointType.Empty>;
17
16
  get deviceType(): import("#types").DeviceTypeId;
18
17
  constructor(endpoint: Endpoint);
19
- createBacking(type: Behavior.Type): BehaviorBacking;
20
18
  get number(): EndpointNumber;
21
19
  get name(): string;
20
+ updateServers(): void;
22
21
  getNumber(): EndpointNumber;
23
22
  removeFromStructure(): void;
24
23
  updatePartsList(): EndpointNumber[];
@@ -28,7 +27,7 @@ export declare class EndpointServer implements EndpointInterface {
28
27
  close(): void;
29
28
  [Symbol.asyncDispose](): Promise<void>;
30
29
  setStructureChangedCallback(): void;
31
- addClusterServer(server: ClusterServer): void;
30
+ addClusterServer(server: BehaviorServer): void;
32
31
  hasClusterServer(cluster: ClusterType): boolean;
33
32
  getClusterServer(cluster: ClusterType): ClusterServer | undefined;
34
33
  getClusterServerById(clusterId: ClusterId): ClusterServer | undefined;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EndpointServer.d.ts","sourceRoot":"","sources":["../../../../src/endpoint/server/EndpointServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAOrD;;GAEG;AACH,qBAAa,cAAe,YAAW,iBAAiB;;IAKpD,IAAI,QAAQ,uDAEX;IAED,IAAI,UAAU,kCAEb;gBAEW,QAAQ,EAAE,QAAQ;IAqB9B,IAAI,MAAM,mBAET;IAED,IAAI,IAAI,WAEP;IAED,aAAa;IAcb,SAAS,IAAI,cAAc;IAO3B,mBAAmB,IAAI,IAAI;IAI3B,eAAe,IAAI,cAAc,EAAE;IAKnC,iBAAiB,IAAI,iBAAiB,EAAE;IAQxC,iBAAiB,IAAI,MAAM,GAAG,SAAS;IAIvC,sBAAsB,IAAI,IAAI;IAI9B,KAAK,IAAI,IAAI;IAIP,CAAC,MAAM,CAAC,YAAY,CAAC;IAc3B,2BAA2B,IAAI,IAAI;IAInC,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAI9C,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO;IAI/C,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS;IAOjE,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS;IAIrE,oBAAoB,IAAI,aAAa,EAAE;IAIvC,oBAAoB,IAAI,gBAAgB,EAAE;IAK1C,gBAAgB,IAAI,IAAI;IAIxB,gBAAgB,IAAI,GAAG;IAIvB,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAQnD,gBAAgB,CAAC,EAAE,EAAE,cAAc,GAAG,iBAAiB,GAAG,SAAS;IA6BnE;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ;CAOxC"}
@@ -22,9 +22,8 @@ __export(EndpointServer_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(EndpointServer_exports);
24
24
  var import_ClusterBehavior = require("#behavior/cluster/ClusterBehavior.js");
25
- var import_ClusterServerBacking = require("#behavior/internal/ClusterServerBacking.js");
26
- var import_ServerBehaviorBacking = require("#behavior/internal/ServerBehaviorBacking.js");
27
25
  var import_general = require("#general");
26
+ var import_BehaviorServer = require("./BehaviorServer.js");
28
27
  /**
29
28
  * @license
30
29
  * Copyright 2022-2024 Matter.js Authors
@@ -42,22 +41,19 @@ class EndpointServer {
42
41
  return this.#endpoint.type.deviceType;
43
42
  }
44
43
  constructor(endpoint) {
45
- endpoint[SERVER] = this;
44
+ if (endpoint[SERVER] !== void 0) {
45
+ throw new import_general.InternalError(`Endpoint ${endpoint} cluster server is already initialized`);
46
+ }
47
+ endpoint.construction.assert();
46
48
  this.#endpoint = endpoint;
47
49
  this.#name = endpoint.type.name;
48
- }
49
- createBacking(type) {
50
- let backing;
51
- if (type.prototype instanceof import_ClusterBehavior.ClusterBehavior) {
52
- const cluster = type.cluster;
53
- if (this.#clusterServers.has(cluster.id)) {
54
- throw new import_general.InternalError(`${this.#endpoint}.${cluster.id} initialized multiple times`);
50
+ endpoint[SERVER] = this;
51
+ for (const type of Object.values(endpoint.behaviors.supported)) {
52
+ if (!(type.prototype instanceof import_ClusterBehavior.ClusterBehavior)) {
53
+ continue;
55
54
  }
56
- backing = new import_ClusterServerBacking.ClusterServerBacking(this, type);
57
- } else {
58
- backing = new import_ServerBehaviorBacking.ServerBehaviorBacking(this.#endpoint, type, this.#endpoint.behaviors.optionsFor(type));
55
+ this.#serve(type);
59
56
  }
60
- return backing;
61
57
  }
62
58
  get number() {
63
59
  return this.#endpoint.number;
@@ -65,6 +61,17 @@ class EndpointServer {
65
61
  get name() {
66
62
  return this.#name;
67
63
  }
64
+ updateServers() {
65
+ for (const type of Object.values(this.#endpoint.behaviors.supported)) {
66
+ if (!(type.prototype instanceof import_ClusterBehavior.ClusterBehavior)) {
67
+ continue;
68
+ }
69
+ if (this.#clusterServers.has(type.cluster?.id)) {
70
+ continue;
71
+ }
72
+ this.#serve(type);
73
+ }
74
+ }
68
75
  getNumber() {
69
76
  if (this.number === void 0) {
70
77
  throw new import_general.InternalError("Endpoint ID has not been assigned yet");
@@ -92,6 +99,9 @@ class EndpointServer {
92
99
  close() {
93
100
  }
94
101
  async [Symbol.asyncDispose]() {
102
+ for (const server of this.#clusterServers.values()) {
103
+ server.close();
104
+ }
95
105
  this.#clusterServers.clear();
96
106
  delete this.#endpoint[SERVER];
97
107
  for (const endpoint of this.#endpoint.parts) {
@@ -147,6 +157,20 @@ class EndpointServer {
147
157
  }
148
158
  }
149
159
  }
160
+ /**
161
+ * Install a ClusterServer for a behavior.
162
+ */
163
+ #serve(type) {
164
+ const { cluster } = type;
165
+ if (cluster === void 0) {
166
+ throw new import_general.InternalError(`Cannot serve ${this.endpoint} behavior ${type.id}} because it is not a cluster`);
167
+ }
168
+ if (this.#clusterServers.has(cluster.id)) {
169
+ throw new import_general.ImplementationError(`Duplicate behaviors for ${this.endpoint} define cluster ${cluster.id}`);
170
+ }
171
+ const clusterServer = (0, import_BehaviorServer.BehaviorServer)(this, type);
172
+ this.#clusterServers.set(cluster.id, clusterServer);
173
+ }
150
174
  /**
151
175
  * Retrieve the server for an endpoint.
152
176
  */
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/endpoint/server/EndpointServer.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -15,11 +15,11 @@ export declare class ServerEndpointInitializer extends EndpointInitializer {
15
15
  eraseDescendant(endpoint: Endpoint): Promise<void>;
16
16
  deactivateDescendant(endpoint: Endpoint): Promise<void>;
17
17
  /**
18
- * If a {@link Endpoint} does not yet have a {@link EndpointServer}, create one now, then create a
19
- * {@link BehaviorBacking} for a specific {@link Behavior}.
18
+ * Create the backing.
20
19
  *
21
- * This is where we adapt endpoints and behaviors for a server role.
20
+ * If the behavior is a cluster behavior and the node is already initialized, create a server when the behavior
21
+ * initializes.
22
22
  */
23
- createBacking(endpoint: Endpoint, behavior: Behavior.Type): BehaviorBacking;
23
+ createBacking(endpoint: Endpoint, type: Behavior.Type): BehaviorBacking;
24
24
  }
25
25
  //# sourceMappingURL=ServerEndpointInitializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerEndpointInitializer.d.ts","sourceRoot":"","sources":["../../../../src/endpoint/server/ServerEndpointInitializer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,WAAW,EAAyB,MAAM,UAAU,CAAC;AAM9D,qBAAa,yBAA0B,SAAQ,mBAAmB;;gBAGlD,WAAW,EAAE,WAAW;IAK3B,oBAAoB,CAAC,QAAQ,EAAE,QAAQ;IAU1C,eAAe,CAAC,QAAQ,EAAE,QAAQ;IAQlC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ;IAQ7C;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG,eAAe;CA6C1E"}
@@ -21,12 +21,12 @@ __export(ServerEndpointInitializer_exports, {
21
21
  ServerEndpointInitializer: () => ServerEndpointInitializer
22
22
  });
23
23
  module.exports = __toCommonJS(ServerEndpointInitializer_exports);
24
+ var import_ServerBehaviorBacking = require("#behavior/internal/ServerBehaviorBacking.js");
24
25
  var import_Endpoint = require("#endpoint/Endpoint.js");
25
- var import_EndpointServer = require("#endpoint/EndpointServer.js");
26
26
  var import_EndpointInitializer = require("#endpoint/properties/EndpointInitializer.js");
27
27
  var import_general = require("#general");
28
28
  var import_DescriptorServer = require("../../behaviors/descriptor/DescriptorServer.js");
29
- var import_ServerNodeStore = require("../storage/ServerNodeStore.js");
29
+ var import_ServerNodeStore = require("../../node/storage/ServerNodeStore.js");
30
30
  /**
31
31
  * @license
32
32
  * Copyright 2022-2024 Matter.js Authors
@@ -59,13 +59,13 @@ class ServerEndpointInitializer extends import_EndpointInitializer.EndpointIniti
59
59
  this.#store.endpointStores.deactivateStoreForEndpoint(endpoint);
60
60
  }
61
61
  /**
62
- * If a {@link Endpoint} does not yet have a {@link EndpointServer}, create one now, then create a
63
- * {@link BehaviorBacking} for a specific {@link Behavior}.
62
+ * Create the backing.
64
63
  *
65
- * This is where we adapt endpoints and behaviors for a server role.
64
+ * If the behavior is a cluster behavior and the node is already initialized, create a server when the behavior
65
+ * initializes.
66
66
  */
67
- createBacking(endpoint, behavior) {
68
- return import_EndpointServer.EndpointServer.forEndpoint(endpoint).createBacking(behavior);
67
+ createBacking(endpoint, type) {
68
+ return new import_ServerBehaviorBacking.ServerBehaviorBacking(endpoint, type, endpoint.behaviors.optionsFor(type));
69
69
  }
70
70
  /**
71
71
  * Select an ID for an endpoint automatically based on available metadata.
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/endpoint/server/ServerEndpointInitializer.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,mCAAsC;AACtC,sBAAyB;AACzB,iCAAoC;AACpC,qBAAmD;AACnD,8BAAiC;AACjC,6BAAgC;AAbhC;AAAA;AAAA;AAAA;AAAA;AAeA,MAAM,SAAS,sBAAO,IAAI,cAAc;AAEjC,MAAM,kCAAkC,+CAAoB;AAAA,EAC/D;AAAA,EAEA,YAAY,aAA0B;AAClC,UAAM;AACN,SAAK,SAAS,YAAY,IAAI,sCAAe;AAAA,EACjD;AAAA,EAES,qBAAqB,UAAoB;AAC9C,QAAI,CAAC,SAAS,UAAU,OAAO;AAC3B,eAAS,KAAK,KAAK,cAAc,QAAQ;AAAA,IAC7C;AAEA,SAAK,OAAO,eAAe,aAAa,QAAQ;AAEhD,aAAS,UAAU,QAAQ,wCAAgB;AAAA,EAC/C;AAAA,EAEA,MAAM,gBAAgB,UAAoB;AACtC,QAAI,CAAC,SAAS,UAAU,OAAO;AAC3B;AAAA,IACJ;AAEA,UAAM,KAAK,OAAO,eAAe,sBAAsB,QAAQ;AAAA,EACnE;AAAA,EAEA,MAAM,qBAAqB,UAAoB;AAC3C,QAAI,CAAC,SAAS,UAAU,SAAS,SAAS,WAAW,GAAG;AACpD;AAAA,IACJ;AAEA,SAAK,OAAO,eAAe,2BAA2B,QAAQ;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,cAAc,UAAoB,MAAsC;AACpE,WAAO,IAAI,mDAAsB,UAAU,MAAM,SAAS,UAAU,WAAW,IAAI,CAAC;AAAA,EACxF;AAAA;AAAA;AAAA;AAAA,EAKA,cAAc,UAAoB;AAC9B,UAAM,YACF,SAAS,UAAU,UAAU,oBAAoB,SAAS,UAAU,UAAU;AAClF,QAAI,WAAW;AACX,YAAM,WAAW;AAAA,QACb,GAAG,IAAI,UAAU,MAAM;AAAA,QACvB,GAAG,SAAS,UAAU,YAAY,SAAS;AAAA,MAC/C;AAEA,UAAIA,MAAM,SAAoC;AAC9C,UAAIA,KAAI;AACJ,eAAOA;AAAA,MACX;AAEA,MAAAA,MAAM,SAAoC;AAC1C,UAAIA,KAAI;AACJ,eAAOA;AAAA,MACX;AAAA,IACJ;AAEA,QAAI,EAAE,SAAS,iBAAiB,2BAAW;AACvC,YAAM,IAAI,6BAAc,2DAA2D;AAAA,IACvF;AACA,QAAI,CAAC,SAAS,MAAM,UAAU,OAAO;AACjC,YAAM,IAAI,6BAAc,2DAA2D;AAAA,IACvF;AAEA,UAAM,QAAQ,SAAS,MAAM,MAAM,QAAQ,QAAQ;AACnD,QAAI,UAAU,IAAI;AACd,YAAM,IAAI,6BAAc,wEAAwE;AAAA,IACpG;AAGA,UAAM,KAAK,OAAO,KAAK;AACvB,WAAO,KAAK,wBAAwB,EAAE,iBAAiB,SAAS,KAAK,oCAAoC;AAEzG,WAAO;AAAA,EACX;AACJ;",
5
+ "names": ["id"]
6
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export * from "./EndpointServer.js";
7
+ export * from "./ServerEndpointInitializer.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/endpoint/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC"}
@@ -0,0 +1,25 @@
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 __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var server_exports = {};
17
+ module.exports = __toCommonJS(server_exports);
18
+ __reExport(server_exports, require("./EndpointServer.js"), module.exports);
19
+ __reExport(server_exports, require("./ServerEndpointInitializer.js"), module.exports);
20
+ /**
21
+ * @license
22
+ * Copyright 2022-2024 Matter.js Authors
23
+ * SPDX-License-Identifier: Apache-2.0
24
+ */
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/endpoint/server/index.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,2BAAc,gCANd;AAOA,2BAAc,2CAPd;AAAA;AAAA;AAAA;AAAA;AAAA;",
5
+ "names": []
6
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"MutableEndpoint.d.ts","sourceRoot":"","sources":["../../../../src/endpoint/type/MutableEndpoint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACjD;;OAEG;IACH,QAAQ,EAAE,EAAE,CAAC;IAEb;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,eAAe,CAAC;IAEnC;;OAEG;IACH,aAAa,CAAC,GAAG,SAAS,EAAE,kBAAkB,CAAC,IAAI,GAAG,eAAe,CAAC;IAEtE;;OAEG;IACH,IAAI,CAAC,GAAG,SAAS,EAAE,kBAAkB,CAAC,IAAI,GAAG,eAAe,CAAC;CAChE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,CAAC,CAAC,SAAS,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,GAuC5D,eAAe,CAAC,IAAI,CAChC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EACnB,CAAC,CAAC,WAAW,CAAC,SAAS,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAClE,CACJ;AAED,yBAAiB,eAAe,CAAC;IAC7B,KAAY,IAAI,CAAC,CAAC,SAAS,YAAY,EAAE,EAAE,SAAS,kBAAkB,IAAI,IAAI,CAC1E,CAAC,EACD,WAAW,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,CAC5C,GAAG;QACA,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;QAE/B;;WAEG;QACH,QAAQ,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEzC;;WAEG;QACH,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhE;;WAEG;QACH,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,kBAAkB,CAAC,IAAI,EAClD,GAAG,SAAS,EAAE,EAAE,GACjB,IAAI,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAE5C;;WAEG;QACH,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,kBAAkB,CAAC,IAAI,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;KAC9G,CAAC;CACL"}
1
+ {"version":3,"file":"MutableEndpoint.d.ts","sourceRoot":"","sources":["../../../../src/endpoint/type/MutableEndpoint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACjD;;OAEG;IACH,QAAQ,EAAE,EAAE,CAAC;IAEb;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,eAAe,CAAC;IAEnC;;OAEG;IACH,aAAa,CAAC,GAAG,SAAS,EAAE,kBAAkB,CAAC,IAAI,GAAG,eAAe,CAAC;IAEtE;;OAEG;IACH,IAAI,CAAC,GAAG,SAAS,EAAE,kBAAkB,CAAC,IAAI,GAAG,eAAe,CAAC;CAChE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,CAAC,CAAC,SAAS,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,GA2C5D,eAAe,CAAC,IAAI,CAChC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EACnB,CAAC,CAAC,WAAW,CAAC,SAAS,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAClE,CACJ;AAED,yBAAiB,eAAe,CAAC;IAC7B,KAAY,IAAI,CAAC,CAAC,SAAS,YAAY,EAAE,EAAE,SAAS,kBAAkB,IAAI,IAAI,CAC1E,CAAC,EACD,WAAW,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,CAC5C,GAAG;QACA,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;QAE/B;;WAEG;QACH,QAAQ,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEzC;;WAEG;QACH,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhE;;WAEG;QACH,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,kBAAkB,CAAC,IAAI,EAClD,GAAG,SAAS,EAAE,EAAE,GACjB,IAAI,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAE5C;;WAEG;QACH,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,kBAAkB,CAAC,IAAI,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;KAC9G,CAAC;CACL"}
@@ -58,6 +58,9 @@ function MutableEndpoint(options) {
58
58
  ...options,
59
59
  behaviors: import_SupportedBehaviors.SupportedBehaviors.extend(this.behaviors, behaviors)
60
60
  });
61
+ },
62
+ withBehaviors(...behaviors) {
63
+ return this.with(...behaviors);
61
64
  }
62
65
  };
63
66
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/endpoint/type/MutableEndpoint.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,gCAAmC;AACnC,0BAA6B;AAR7B;AAAA;AAAA;AAAA;AAAA;AAsCO,SAAS,gBAAsD,SAAY;AAC9E,QAAM,WAAO,kCAAa,OAAO;AACjC,MAAI;AAEJ,SAAO;AAAA,IACH,GAAG;AAAA,IAEH,IAAI,WAAW;AACX,UAAI,CAAC,UAAU;AACX,mBAAW,CAAC;AAEZ,mBAAW,QAAQ,KAAK,WAAW;AAC/B,mBAAS,IAAI,IAAK,KAAK,UAAU,IAAI,EAAoB;AAAA,QAC7D;AAAA,MACJ;AAEA,aAAO;AAAA,IACX;AAAA,IAEA,IAA2BA,WAAkE;AACzF,YAAM,eAAe,MAAqB;AAE1C,iBAAW,QAAQ,KAAK,WAAW;AAC/B,cAAM,UAAWA,UAAiB,IAAI;AACtC,cAAM,WAAW,KAAK,UAAU,IAAI;AACpC,YAAI,SAAS;AACT,uBAAa,KAAK,SAAS,IAAI,OAAO,CAAC;AAAA,QAC3C;AAAA,MACJ;AAEA,aAAO,KAAK,KAAK,GAAG,YAAY;AAAA,IACpC;AAAA,IAEA,QAA+B,WAA4B;AACvD,aAAO,gBAAgB;AAAA,QACnB,GAAG;AAAA,QACH,WAAW,6CAAmB,OAAO,KAAK,WAAW,SAAS;AAAA,MAClE,CAAC;AAAA,IACL;AAAA,EACJ;AAIJ;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,gCAAmC;AACnC,0BAA6B;AAR7B;AAAA;AAAA;AAAA;AAAA;AAsCO,SAAS,gBAAsD,SAAY;AAC9E,QAAM,WAAO,kCAAa,OAAO;AACjC,MAAI;AAEJ,SAAO;AAAA,IACH,GAAG;AAAA,IAEH,IAAI,WAAW;AACX,UAAI,CAAC,UAAU;AACX,mBAAW,CAAC;AAEZ,mBAAW,QAAQ,KAAK,WAAW;AAC/B,mBAAS,IAAI,IAAK,KAAK,UAAU,IAAI,EAAoB;AAAA,QAC7D;AAAA,MACJ;AAEA,aAAO;AAAA,IACX;AAAA,IAEA,IAA2BA,WAAkE;AACzF,YAAM,eAAe,MAAqB;AAE1C,iBAAW,QAAQ,KAAK,WAAW;AAC/B,cAAM,UAAWA,UAAiB,IAAI;AACtC,cAAM,WAAW,KAAK,UAAU,IAAI;AACpC,YAAI,SAAS;AACT,uBAAa,KAAK,SAAS,IAAI,OAAO,CAAC;AAAA,QAC3C;AAAA,MACJ;AAEA,aAAO,KAAK,KAAK,GAAG,YAAY;AAAA,IACpC;AAAA,IAEA,QAA+B,WAA4B;AACvD,aAAO,gBAAgB;AAAA,QACnB,GAAG;AAAA,QACH,WAAW,6CAAmB,OAAO,KAAK,WAAW,SAAS;AAAA,MAClE,CAAC;AAAA,IACL;AAAA,IAEA,iBAAwC,WAA4B;AAChE,aAAO,KAAK,KAAK,GAAG,SAAS;AAAA,IACjC;AAAA,EACJ;AAIJ;",
5
5
  "names": ["defaults"]
6
6
  }
@@ -26,6 +26,7 @@ export declare abstract class Node<T extends Node.CommonRootEndpoint = Node.Comm
26
26
  * Bring the node online.
27
27
  */
28
28
  start(): Promise<void>;
29
+ protected startWithMutex(): Promise<void>;
29
30
  /**
30
31
  * @deprecated use {@link start}
31
32
  */
@@ -40,7 +41,11 @@ export declare abstract class Node<T extends Node.CommonRootEndpoint = Node.Comm
40
41
  * Once the node is offline you may use {@link start} to bring the node online again.
41
42
  */
42
43
  cancel(): Promise<void>;
44
+ protected cancelWithMutex(): Promise<void>;
43
45
  close(): Promise<void>;
46
+ protected closeWithMutex(): Promise<void>;
47
+ reset(): Promise<void>;
48
+ protected resetWithMutex(): Promise<void>;
44
49
  /**
45
50
  * Create the network runtime.
46
51
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Node.d.ts","sourceRoot":"","sources":["../../../src/node/Node.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EACH,YAAY,EACZ,UAAU,EAEV,WAAW,EACX,QAAQ,EAGR,cAAc,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD;;;;GAIG;AACH,8BAAsB,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;;gBAI3F,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAmCzC,IAAa,GAAG,gBAEf;cAEkB,eAAe,IAAI,aAAa;IAInD;;OAEG;IACG,KAAK;IAqBX;;OAEG;IACG,WAAW;IAIjB;;OAEG;IACG,GAAG;IAKT;;;;OAIG;IACG,MAAM;IAUG,KAAK;IAYpB;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,cAAc;IAElD,QAAQ,CAAC,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAEhD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,4BAEzB;IAED,IAAa,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAWzC;IAED,IAAa,SAAS,IAAI,aAAa,CAEtC;IAED,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM;IAIvB,CAAC,YAAY,CAAC,QAAQ,CAAC;CAKzC;AAED,yBAAiB,IAAI,CAAC;IAClB,UAAiB,WAAY,SAAQ,QAAQ,CAAC,eAAe;QACzD,WAAW,CAAC,EAAE,WAAW,CAAC;KAC7B;IAED,KAAY,OAAO,CAAC,CAAC,SAAS,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAEpH,KAAY,aAAa,CAAC,CAAC,SAAS,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,QAAQ,CAAC,aAAa,CAC3G,CAAC,EACD,WAAW,CACd,CAAC;IAEF,SAAgB,aAAa,CAAC,CAAC,SAAS,YAAY,EAChD,WAAW,EAAE,CAAC,EACd,aAAa,EAAE,SAAS,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAC/C,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GACrB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAoBvB;IAED;;OAEG;IACI,MAAM,kBAAkB;;;;;;;;;;;;;MAU7B,CAAC;IAEH,UAAiB,kBAAmB,SAAQ,QAAQ,CAAC,OAAO,kBAAkB,CAAC;KAAG;CACrF"}
1
+ {"version":3,"file":"Node.d.ts","sourceRoot":"","sources":["../../../src/node/Node.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EACH,YAAY,EACZ,UAAU,EAEV,WAAW,EACX,QAAQ,EAGR,cAAc,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD;;;;GAIG;AACH,8BAAsB,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;;gBAI3F,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAmCzC,IAAa,GAAG,gBAEf;cAEkB,eAAe,IAAI,aAAa;IAInD;;OAEG;IACG,KAAK;cAIK,cAAc;IAqB9B;;OAEG;IACG,WAAW;IAIjB;;OAEG;IACG,GAAG;IAKT;;;;OAIG;IACG,MAAM;cAII,eAAe;IAUhB,KAAK;cAIJ,cAAc;IAUf,KAAK;cAIJ,cAAc;IAI9B;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,cAAc;IAElD,QAAQ,CAAC,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAEhD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,4BAEzB;IAED,IAAa,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAWzC;IAED,IAAa,SAAS,IAAI,aAAa,CAEtC;IAED,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM;IAIvB,CAAC,YAAY,CAAC,QAAQ,CAAC;CAKzC;AAED,yBAAiB,IAAI,CAAC;IAClB,UAAiB,WAAY,SAAQ,QAAQ,CAAC,eAAe;QACzD,WAAW,CAAC,EAAE,WAAW,CAAC;KAC7B;IAED,KAAY,OAAO,CAAC,CAAC,SAAS,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAEpH,KAAY,aAAa,CAAC,CAAC,SAAS,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,QAAQ,CAAC,aAAa,CAC3G,CAAC,EACD,WAAW,CACd,CAAC;IAEF,SAAgB,aAAa,CAAC,CAAC,SAAS,YAAY,EAChD,WAAW,EAAE,CAAC,EACd,aAAa,EAAE,SAAS,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAC/C,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GACrB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAoBvB;IAED;;OAEG;IACI,MAAM,kBAAkB;;;;;;;;;;;;;MAU7B,CAAC;IAEH,UAAiB,kBAAmB,SAAQ,QAAQ,CAAC,OAAO,kBAAkB,CAAC;KAAG;CACrF"}