@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.
- package/dist/cjs/behavior/internal/BehaviorBacking.d.ts +6 -1
- package/dist/cjs/behavior/internal/BehaviorBacking.d.ts.map +1 -1
- package/dist/cjs/behavior/internal/BehaviorBacking.js +2 -1
- package/dist/cjs/behavior/internal/BehaviorBacking.js.map +1 -1
- package/dist/cjs/behavior/internal/ClientBehaviorBacking.d.ts +2 -1
- package/dist/cjs/behavior/internal/ClientBehaviorBacking.d.ts.map +1 -1
- package/dist/cjs/behavior/internal/ClientBehaviorBacking.js +4 -0
- package/dist/cjs/behavior/internal/ClientBehaviorBacking.js.map +1 -1
- package/dist/cjs/behavior/internal/ServerBehaviorBacking.d.ts +2 -0
- package/dist/cjs/behavior/internal/ServerBehaviorBacking.d.ts.map +1 -1
- package/dist/cjs/behavior/internal/ServerBehaviorBacking.js +37 -0
- package/dist/cjs/behavior/internal/ServerBehaviorBacking.js.map +1 -1
- package/dist/cjs/behavior/state/transaction/Transaction.d.ts +18 -18
- package/dist/cjs/behavior/system/events/EventsBehavior.d.ts +26 -0
- package/dist/cjs/behavior/system/events/EventsBehavior.d.ts.map +1 -0
- package/dist/cjs/behavior/system/events/EventsBehavior.js +74 -0
- package/dist/cjs/behavior/system/events/EventsBehavior.js.map +6 -0
- package/dist/cjs/behavior/system/events/index.d.ts +7 -0
- package/dist/cjs/behavior/system/events/index.d.ts.map +1 -0
- package/dist/cjs/behavior/system/events/index.js +24 -0
- package/dist/cjs/behavior/system/events/index.js.map +6 -0
- package/dist/cjs/behavior/system/network/ServerNetworkRuntime.d.ts.map +1 -1
- package/dist/cjs/behavior/system/network/ServerNetworkRuntime.js +3 -0
- package/dist/cjs/behavior/system/network/ServerNetworkRuntime.js.map +1 -1
- package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts +8 -0
- package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.js +12 -4
- package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.js.map +1 -1
- package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.d.ts +2 -4
- package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.js +6 -8
- package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.js.map +1 -1
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js +23 -20
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
- package/dist/cjs/endpoint/Agent.d.ts +1 -1
- package/dist/cjs/endpoint/Agent.js +1 -1
- package/dist/cjs/endpoint/index.d.ts +1 -1
- package/dist/cjs/endpoint/index.d.ts.map +1 -1
- package/dist/cjs/endpoint/index.js +1 -1
- package/dist/cjs/endpoint/index.js.map +1 -1
- package/dist/cjs/endpoint/properties/Behaviors.d.ts +13 -0
- package/dist/cjs/endpoint/properties/Behaviors.d.ts.map +1 -1
- package/dist/cjs/endpoint/properties/Behaviors.js +37 -24
- package/dist/cjs/endpoint/properties/Behaviors.js.map +2 -2
- package/dist/cjs/endpoint/properties/EndpointInitializer.d.ts +8 -3
- package/dist/cjs/endpoint/properties/EndpointInitializer.d.ts.map +1 -1
- package/dist/cjs/endpoint/properties/EndpointInitializer.js +5 -0
- package/dist/cjs/endpoint/properties/EndpointInitializer.js.map +1 -1
- package/dist/cjs/endpoint/server/BehaviorServer.d.ts +21 -0
- package/dist/cjs/endpoint/server/BehaviorServer.d.ts.map +1 -0
- package/dist/cjs/endpoint/server/BehaviorServer.js +272 -0
- package/dist/cjs/endpoint/server/BehaviorServer.js.map +6 -0
- package/dist/{esm/endpoint → cjs/endpoint/server}/EndpointServer.d.ts +5 -6
- package/dist/cjs/endpoint/server/EndpointServer.d.ts.map +1 -0
- package/dist/cjs/endpoint/{EndpointServer.js → server/EndpointServer.js} +38 -14
- package/dist/cjs/endpoint/server/EndpointServer.js.map +6 -0
- package/dist/cjs/{node → endpoint}/server/ServerEndpointInitializer.d.ts +4 -4
- package/dist/cjs/endpoint/server/ServerEndpointInitializer.d.ts.map +1 -0
- package/dist/cjs/{node → endpoint}/server/ServerEndpointInitializer.js +7 -7
- package/dist/cjs/endpoint/server/ServerEndpointInitializer.js.map +6 -0
- package/dist/cjs/endpoint/server/index.d.ts +8 -0
- package/dist/cjs/endpoint/server/index.d.ts.map +1 -0
- package/dist/cjs/endpoint/server/index.js +25 -0
- package/dist/cjs/endpoint/server/index.js.map +6 -0
- package/dist/cjs/endpoint/type/MutableEndpoint.d.ts.map +1 -1
- package/dist/cjs/endpoint/type/MutableEndpoint.js +3 -0
- package/dist/cjs/endpoint/type/MutableEndpoint.js.map +1 -1
- package/dist/cjs/node/Node.d.ts +5 -0
- package/dist/cjs/node/Node.d.ts.map +1 -1
- package/dist/cjs/node/Node.js +17 -2
- package/dist/cjs/node/Node.js.map +1 -1
- package/dist/cjs/node/NodeLifecycle.d.ts +11 -1
- package/dist/cjs/node/NodeLifecycle.d.ts.map +1 -1
- package/dist/cjs/node/NodeLifecycle.js +14 -0
- package/dist/cjs/node/NodeLifecycle.js.map +1 -1
- package/dist/cjs/node/ServerNode.d.ts +3 -2
- package/dist/cjs/node/ServerNode.d.ts.map +1 -1
- package/dist/cjs/node/ServerNode.js +9 -9
- package/dist/cjs/node/ServerNode.js.map +1 -1
- package/dist/cjs/node/server/ServerEnvironment.js +1 -1
- package/dist/cjs/node/server/ServerEnvironment.js.map +1 -1
- package/dist/cjs/node/server/TransactionalInteractionServer.d.ts +2 -2
- package/dist/cjs/node/server/TransactionalInteractionServer.d.ts.map +1 -1
- package/dist/cjs/node/server/TransactionalInteractionServer.js +9 -4
- package/dist/cjs/node/server/TransactionalInteractionServer.js.map +2 -2
- package/dist/cjs/node/server/index.d.ts +0 -1
- package/dist/cjs/node/server/index.d.ts.map +1 -1
- package/dist/cjs/node/server/index.js +0 -1
- package/dist/cjs/node/server/index.js.map +1 -1
- package/dist/esm/behavior/internal/BehaviorBacking.d.ts +6 -1
- package/dist/esm/behavior/internal/BehaviorBacking.d.ts.map +1 -1
- package/dist/esm/behavior/internal/BehaviorBacking.js +2 -1
- package/dist/esm/behavior/internal/BehaviorBacking.js.map +1 -1
- package/dist/esm/behavior/internal/ClientBehaviorBacking.d.ts +2 -1
- package/dist/esm/behavior/internal/ClientBehaviorBacking.d.ts.map +1 -1
- package/dist/esm/behavior/internal/ClientBehaviorBacking.js +4 -0
- package/dist/esm/behavior/internal/ClientBehaviorBacking.js.map +1 -1
- package/dist/esm/behavior/internal/ServerBehaviorBacking.d.ts +2 -0
- package/dist/esm/behavior/internal/ServerBehaviorBacking.d.ts.map +1 -1
- package/dist/esm/behavior/internal/ServerBehaviorBacking.js +37 -0
- package/dist/esm/behavior/internal/ServerBehaviorBacking.js.map +1 -1
- package/dist/esm/behavior/state/transaction/Transaction.d.ts +18 -18
- package/dist/esm/behavior/system/events/EventsBehavior.d.ts +26 -0
- package/dist/esm/behavior/system/events/EventsBehavior.d.ts.map +1 -0
- package/dist/esm/behavior/system/events/EventsBehavior.js +54 -0
- package/dist/esm/behavior/system/events/EventsBehavior.js.map +6 -0
- package/dist/esm/behavior/system/events/index.d.ts +7 -0
- package/dist/esm/behavior/system/events/index.d.ts.map +1 -0
- package/dist/esm/behavior/system/events/index.js +7 -0
- package/dist/esm/behavior/system/events/index.js.map +6 -0
- package/dist/esm/behavior/system/network/ServerNetworkRuntime.d.ts.map +1 -1
- package/dist/esm/behavior/system/network/ServerNetworkRuntime.js +3 -0
- package/dist/esm/behavior/system/network/ServerNetworkRuntime.js.map +1 -1
- package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts +8 -0
- package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts.map +1 -1
- package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.js +12 -4
- package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.js.map +1 -1
- package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.d.ts +2 -4
- package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.d.ts.map +1 -1
- package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.js +6 -8
- package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.js.map +1 -1
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js +23 -20
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
- package/dist/esm/endpoint/Agent.d.ts +1 -1
- package/dist/esm/endpoint/Agent.js +1 -1
- package/dist/esm/endpoint/index.d.ts +1 -1
- package/dist/esm/endpoint/index.d.ts.map +1 -1
- package/dist/esm/endpoint/index.js +1 -1
- package/dist/esm/endpoint/properties/Behaviors.d.ts +13 -0
- package/dist/esm/endpoint/properties/Behaviors.d.ts.map +1 -1
- package/dist/esm/endpoint/properties/Behaviors.js +38 -27
- package/dist/esm/endpoint/properties/Behaviors.js.map +2 -2
- package/dist/esm/endpoint/properties/EndpointInitializer.d.ts +8 -3
- package/dist/esm/endpoint/properties/EndpointInitializer.d.ts.map +1 -1
- package/dist/esm/endpoint/properties/EndpointInitializer.js +5 -0
- package/dist/esm/endpoint/properties/EndpointInitializer.js.map +1 -1
- package/dist/esm/endpoint/server/BehaviorServer.d.ts +21 -0
- package/dist/esm/endpoint/server/BehaviorServer.d.ts.map +1 -0
- package/dist/esm/endpoint/server/BehaviorServer.js +269 -0
- package/dist/esm/endpoint/server/BehaviorServer.js.map +6 -0
- package/dist/{cjs/endpoint → esm/endpoint/server}/EndpointServer.d.ts +5 -6
- package/dist/esm/endpoint/server/EndpointServer.d.ts.map +1 -0
- package/dist/esm/endpoint/{EndpointServer.js → server/EndpointServer.js} +38 -14
- package/dist/esm/endpoint/server/EndpointServer.js.map +6 -0
- package/dist/esm/{node → endpoint}/server/ServerEndpointInitializer.d.ts +4 -4
- package/dist/esm/endpoint/server/ServerEndpointInitializer.d.ts.map +1 -0
- package/dist/esm/{node → endpoint}/server/ServerEndpointInitializer.js +7 -7
- package/dist/esm/endpoint/server/ServerEndpointInitializer.js.map +6 -0
- package/dist/esm/endpoint/server/index.d.ts +8 -0
- package/dist/esm/endpoint/server/index.d.ts.map +1 -0
- package/dist/esm/endpoint/server/index.js +8 -0
- package/dist/esm/endpoint/server/index.js.map +6 -0
- package/dist/esm/endpoint/type/MutableEndpoint.d.ts.map +1 -1
- package/dist/esm/endpoint/type/MutableEndpoint.js +3 -0
- package/dist/esm/endpoint/type/MutableEndpoint.js.map +1 -1
- package/dist/esm/node/Node.d.ts +5 -0
- package/dist/esm/node/Node.d.ts.map +1 -1
- package/dist/esm/node/Node.js +17 -2
- package/dist/esm/node/Node.js.map +1 -1
- package/dist/esm/node/NodeLifecycle.d.ts +11 -1
- package/dist/esm/node/NodeLifecycle.d.ts.map +1 -1
- package/dist/esm/node/NodeLifecycle.js +15 -1
- package/dist/esm/node/NodeLifecycle.js.map +1 -1
- package/dist/esm/node/ServerNode.d.ts +3 -2
- package/dist/esm/node/ServerNode.d.ts.map +1 -1
- package/dist/esm/node/ServerNode.js +10 -10
- package/dist/esm/node/ServerNode.js.map +1 -1
- package/dist/esm/node/server/ServerEnvironment.js +1 -1
- package/dist/esm/node/server/ServerEnvironment.js.map +1 -1
- package/dist/esm/node/server/TransactionalInteractionServer.d.ts +2 -2
- package/dist/esm/node/server/TransactionalInteractionServer.d.ts.map +1 -1
- package/dist/esm/node/server/TransactionalInteractionServer.js +9 -4
- package/dist/esm/node/server/TransactionalInteractionServer.js.map +2 -2
- package/dist/esm/node/server/index.d.ts +0 -1
- package/dist/esm/node/server/index.d.ts.map +1 -1
- package/dist/esm/node/server/index.js +0 -1
- package/dist/esm/node/server/index.js.map +1 -1
- package/package.json +7 -7
- package/src/behavior/internal/BehaviorBacking.ts +9 -1
- package/src/behavior/internal/ClientBehaviorBacking.ts +6 -1
- package/src/behavior/internal/ServerBehaviorBacking.ts +51 -0
- package/src/behavior/system/events/EventsBehavior.ts +60 -0
- package/src/behavior/system/events/index.ts +7 -0
- package/src/behavior/system/network/ServerNetworkRuntime.ts +6 -0
- package/src/behaviors/administrator-commissioning/AdministratorCommissioningServer.ts +14 -4
- package/src/behaviors/general-diagnostics/GeneralDiagnosticsServer.ts +16 -9
- package/src/behaviors/operational-credentials/OperationalCredentialsServer.ts +26 -20
- package/src/endpoint/Agent.ts +1 -1
- package/src/endpoint/index.ts +1 -1
- package/src/endpoint/properties/Behaviors.ts +56 -28
- package/src/endpoint/properties/EndpointInitializer.ts +9 -3
- package/src/endpoint/server/BehaviorServer.ts +387 -0
- package/src/endpoint/{EndpointServer.ts → server/EndpointServer.ts} +50 -20
- package/src/{node → endpoint}/server/ServerEndpointInitializer.ts +7 -7
- package/src/endpoint/server/index.ts +8 -0
- package/src/endpoint/type/MutableEndpoint.ts +4 -0
- package/src/node/Node.ts +22 -4
- package/src/node/NodeLifecycle.ts +17 -1
- package/src/node/ServerNode.ts +11 -13
- package/src/node/server/ServerEnvironment.ts +1 -1
- package/src/node/server/TransactionalInteractionServer.ts +13 -7
- package/src/node/server/index.ts +0 -1
- package/dist/cjs/behavior/internal/ClusterServerBacking.d.ts +0 -36
- package/dist/cjs/behavior/internal/ClusterServerBacking.d.ts.map +0 -1
- package/dist/cjs/behavior/internal/ClusterServerBacking.js +0 -342
- package/dist/cjs/behavior/internal/ClusterServerBacking.js.map +0 -6
- package/dist/cjs/endpoint/EndpointServer.d.ts.map +0 -1
- package/dist/cjs/endpoint/EndpointServer.js.map +0 -6
- package/dist/cjs/node/server/ServerEndpointInitializer.d.ts.map +0 -1
- package/dist/cjs/node/server/ServerEndpointInitializer.js.map +0 -6
- package/dist/esm/behavior/internal/ClusterServerBacking.d.ts +0 -36
- package/dist/esm/behavior/internal/ClusterServerBacking.d.ts.map +0 -1
- package/dist/esm/behavior/internal/ClusterServerBacking.js +0 -330
- package/dist/esm/behavior/internal/ClusterServerBacking.js.map +0 -6
- package/dist/esm/endpoint/EndpointServer.d.ts.map +0 -1
- package/dist/esm/endpoint/EndpointServer.js.map +0 -6
- package/dist/esm/node/server/ServerEndpointInitializer.d.ts.map +0 -1
- package/dist/esm/node/server/ServerEndpointInitializer.js.map +0 -6
- package/src/behavior/internal/ClusterServerBacking.ts +0 -446
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { AccessControl } from "#behavior/AccessControl.js";
|
|
7
|
+
import { Contextual, Resource } from "#behavior/index.js";
|
|
8
|
+
import { StructManager } from "#behavior/state/managed/values/StructManager.js";
|
|
9
|
+
import { Status } from "#behavior/state/transaction/Status.js";
|
|
10
|
+
import {
|
|
11
|
+
camelize,
|
|
12
|
+
Diagnostic,
|
|
13
|
+
ImplementationError,
|
|
14
|
+
InternalError,
|
|
15
|
+
isObject,
|
|
16
|
+
Logger,
|
|
17
|
+
MaybePromise,
|
|
18
|
+
ObserverGroup
|
|
19
|
+
} from "#general";
|
|
20
|
+
import { ElementTag } from "#model";
|
|
21
|
+
import {
|
|
22
|
+
AttributeServer,
|
|
23
|
+
CommandServer,
|
|
24
|
+
createAttributeServer as ConstructAttributeServer,
|
|
25
|
+
EventServer,
|
|
26
|
+
FabricManager,
|
|
27
|
+
OccurrenceManager,
|
|
28
|
+
SecureSession
|
|
29
|
+
} from "#protocol";
|
|
30
|
+
const logger = Logger.get("BehaviorServer");
|
|
31
|
+
function BehaviorServer(endpointServer, type) {
|
|
32
|
+
const { id, name, attributes, commands, events } = type.cluster;
|
|
33
|
+
const { endpoint } = endpointServer;
|
|
34
|
+
const datasource = createClusterDatasource(endpoint, type);
|
|
35
|
+
const observers = new ObserverGroup();
|
|
36
|
+
const clusterServer = {
|
|
37
|
+
id,
|
|
38
|
+
name,
|
|
39
|
+
datasource,
|
|
40
|
+
attributes: {},
|
|
41
|
+
commands: {},
|
|
42
|
+
events: {},
|
|
43
|
+
close() {
|
|
44
|
+
observers.close();
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const stateView = endpoint.stateOf(type);
|
|
48
|
+
const observables = endpoint.eventsOf(type);
|
|
49
|
+
const elements = endpointServer.endpoint.behaviors.elementsOf(type);
|
|
50
|
+
for (const name2 of elements.attributes) {
|
|
51
|
+
const attribute = attributes[name2];
|
|
52
|
+
const server = createAttributeServer(
|
|
53
|
+
name2,
|
|
54
|
+
attribute,
|
|
55
|
+
endpoint,
|
|
56
|
+
type,
|
|
57
|
+
datasource,
|
|
58
|
+
stateView,
|
|
59
|
+
observables,
|
|
60
|
+
observers
|
|
61
|
+
);
|
|
62
|
+
clusterServer.attributes[name2] = server;
|
|
63
|
+
server.assignToEndpoint(endpointServer);
|
|
64
|
+
}
|
|
65
|
+
for (const name2 of elements.commands) {
|
|
66
|
+
const command = commands[name2];
|
|
67
|
+
clusterServer.commands[name2] = createCommandServer(name2, command, endpoint, type);
|
|
68
|
+
}
|
|
69
|
+
for (const name2 of elements.events) {
|
|
70
|
+
const server = createEventServer(name2, events[name2], endpoint, type, observables, observers);
|
|
71
|
+
clusterServer.events[name2] = server;
|
|
72
|
+
server.assignToEndpoint(endpointServer);
|
|
73
|
+
}
|
|
74
|
+
return clusterServer;
|
|
75
|
+
}
|
|
76
|
+
function createClusterDatasource(endpoint, type) {
|
|
77
|
+
const env = endpoint.env;
|
|
78
|
+
return {
|
|
79
|
+
get version() {
|
|
80
|
+
return endpoint.behaviors.versionOf(type);
|
|
81
|
+
},
|
|
82
|
+
get eventHandler() {
|
|
83
|
+
return env.get(OccurrenceManager);
|
|
84
|
+
},
|
|
85
|
+
get fabrics() {
|
|
86
|
+
return env.get(FabricManager).fabrics;
|
|
87
|
+
},
|
|
88
|
+
// We handle change management ourselves
|
|
89
|
+
changed() {
|
|
90
|
+
},
|
|
91
|
+
// We handle version management ourselves
|
|
92
|
+
increaseVersion() {
|
|
93
|
+
return this.version;
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function createAttributeServer(name, definition, endpoint, type, datasource, stateView, observables, observers) {
|
|
98
|
+
function getter(_session, _endpoint, _isFabricFiltered, message) {
|
|
99
|
+
if (!message) {
|
|
100
|
+
return stateView[name];
|
|
101
|
+
}
|
|
102
|
+
const behavior = behaviorFor(endpoint, type, message);
|
|
103
|
+
behavior.context.activity?.frame(`read ${name}`);
|
|
104
|
+
const trace = behavior.context.trace;
|
|
105
|
+
if (trace) {
|
|
106
|
+
trace.path = endpoint.path.at(name);
|
|
107
|
+
}
|
|
108
|
+
logger.debug("Read", Diagnostic.strong(`${endpoint}.state.${name}`), "via", behavior.context.transaction.via);
|
|
109
|
+
const state = behavior.state;
|
|
110
|
+
StructManager.assertDirectReadAuthorized(state, name);
|
|
111
|
+
if (trace) {
|
|
112
|
+
trace.output = state[name];
|
|
113
|
+
}
|
|
114
|
+
return state[name];
|
|
115
|
+
}
|
|
116
|
+
function setter(value, _session, _endpoint, message) {
|
|
117
|
+
const behavior = behaviorFor(endpoint, type, message);
|
|
118
|
+
behavior.context.activity?.frame(`write ${name}`);
|
|
119
|
+
logger.info("Write", Diagnostic.strong(`${endpoint}.state.${name}`), "via", behavior.context.transaction.via);
|
|
120
|
+
const trace = behavior.context.trace;
|
|
121
|
+
if (trace) {
|
|
122
|
+
trace.path = endpoint.path.at(name);
|
|
123
|
+
trace.input = value;
|
|
124
|
+
}
|
|
125
|
+
const state = behavior.state;
|
|
126
|
+
state[name] = value;
|
|
127
|
+
return behavior.context.transaction?.status === Status.Exclusive;
|
|
128
|
+
}
|
|
129
|
+
const server = ConstructAttributeServer(
|
|
130
|
+
type.cluster,
|
|
131
|
+
definition,
|
|
132
|
+
name,
|
|
133
|
+
stateView[name],
|
|
134
|
+
datasource,
|
|
135
|
+
getter,
|
|
136
|
+
setter
|
|
137
|
+
);
|
|
138
|
+
if (server instanceof AttributeServer) {
|
|
139
|
+
const observable = observables[`${name}$Changed`];
|
|
140
|
+
if (observable !== void 0) {
|
|
141
|
+
observers.on(observable, (_value, _oldValue, context) => {
|
|
142
|
+
const session = context.session;
|
|
143
|
+
if (session instanceof SecureSession) {
|
|
144
|
+
server.updated(session);
|
|
145
|
+
} else {
|
|
146
|
+
server.updatedLocal();
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return server;
|
|
152
|
+
}
|
|
153
|
+
function createCommandServer(name, definition, endpoint, type) {
|
|
154
|
+
const schema = type.schema?.member(camelize(name, true), [ElementTag.Command]);
|
|
155
|
+
if (schema === void 0) {
|
|
156
|
+
throw new ImplementationError(`There is no metadata for command ${name}`);
|
|
157
|
+
}
|
|
158
|
+
const access = AccessControl(schema);
|
|
159
|
+
const handler = (request, _session, message) => {
|
|
160
|
+
let requestDiagnostic;
|
|
161
|
+
if (isObject(request)) {
|
|
162
|
+
requestDiagnostic = Diagnostic.dict(request);
|
|
163
|
+
} else if (request !== void 0) {
|
|
164
|
+
requestDiagnostic = request;
|
|
165
|
+
} else {
|
|
166
|
+
requestDiagnostic = Diagnostic.weak("(no payload)");
|
|
167
|
+
}
|
|
168
|
+
const behavior = behaviorFor(endpoint, type, message);
|
|
169
|
+
const path = endpoint.path.at(name);
|
|
170
|
+
const trace = behavior.context.trace;
|
|
171
|
+
if (trace) {
|
|
172
|
+
trace.path = endpoint.path.at(name);
|
|
173
|
+
trace.input = request;
|
|
174
|
+
}
|
|
175
|
+
logger.info("Invoke", Diagnostic.strong(path.toString()), behavior.context.transaction.via, requestDiagnostic);
|
|
176
|
+
access.authorizeInvoke(behavior.context, {
|
|
177
|
+
path,
|
|
178
|
+
cluster: behavior.cluster.id
|
|
179
|
+
});
|
|
180
|
+
let isAsync = false;
|
|
181
|
+
let activity;
|
|
182
|
+
let result;
|
|
183
|
+
try {
|
|
184
|
+
activity = behavior.context?.activity?.frame(`invoke ${name}`);
|
|
185
|
+
const invoke = behavior[name].bind(behavior);
|
|
186
|
+
if (behavior.constructor.lockOnInvoke) {
|
|
187
|
+
const tx = behavior.context.transaction;
|
|
188
|
+
if (Resource.isLocked(behavior)) {
|
|
189
|
+
result = async function invokeAsync() {
|
|
190
|
+
await tx.addResources(behavior);
|
|
191
|
+
await tx.begin();
|
|
192
|
+
return invoke(request);
|
|
193
|
+
}();
|
|
194
|
+
} else {
|
|
195
|
+
tx.addResourcesSync(behavior);
|
|
196
|
+
tx.beginSync();
|
|
197
|
+
result = invoke(request);
|
|
198
|
+
}
|
|
199
|
+
} else {
|
|
200
|
+
result = invoke(request);
|
|
201
|
+
}
|
|
202
|
+
if (MaybePromise.is(result)) {
|
|
203
|
+
isAsync = true;
|
|
204
|
+
result = Promise.resolve(result).then((result2) => {
|
|
205
|
+
if (trace) {
|
|
206
|
+
trace.output = result2;
|
|
207
|
+
}
|
|
208
|
+
return result2;
|
|
209
|
+
}).finally(() => activity?.[Symbol.dispose]());
|
|
210
|
+
} else if (trace) {
|
|
211
|
+
trace.output = result;
|
|
212
|
+
}
|
|
213
|
+
} finally {
|
|
214
|
+
if (!isAsync) {
|
|
215
|
+
activity?.[Symbol.dispose]();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return result;
|
|
219
|
+
};
|
|
220
|
+
const server = new CommandServer(
|
|
221
|
+
definition.requestId,
|
|
222
|
+
definition.responseId,
|
|
223
|
+
name,
|
|
224
|
+
definition.requestSchema,
|
|
225
|
+
definition.responseSchema,
|
|
226
|
+
definition.timed,
|
|
227
|
+
definition.invokeAcl,
|
|
228
|
+
handler
|
|
229
|
+
);
|
|
230
|
+
server.debug = () => {
|
|
231
|
+
};
|
|
232
|
+
return server;
|
|
233
|
+
}
|
|
234
|
+
function createEventServer(name, definition, endpoint, type, observables, observers) {
|
|
235
|
+
const observable = observables[name];
|
|
236
|
+
const server = new EventServer(
|
|
237
|
+
definition.id,
|
|
238
|
+
type.cluster.id,
|
|
239
|
+
name,
|
|
240
|
+
definition.schema,
|
|
241
|
+
definition.priority,
|
|
242
|
+
definition.readAcl
|
|
243
|
+
);
|
|
244
|
+
if (observable !== void 0) {
|
|
245
|
+
observers.on(observable, (payload, _context) => {
|
|
246
|
+
const maybePromise = server.triggerEvent(payload);
|
|
247
|
+
if (MaybePromise.is(maybePromise)) {
|
|
248
|
+
endpoint.env.runtime.add(maybePromise);
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
const promise = server.bindToEventHandler(endpoint.env.get(OccurrenceManager));
|
|
253
|
+
if (MaybePromise.is(promise)) {
|
|
254
|
+
throw new InternalError("Event handler binding returned a promise");
|
|
255
|
+
}
|
|
256
|
+
return server;
|
|
257
|
+
}
|
|
258
|
+
function behaviorFor(endpoint, type, message) {
|
|
259
|
+
const context = Contextual.contextOf(message);
|
|
260
|
+
if (!context) {
|
|
261
|
+
throw new InternalError("Message context not installed");
|
|
262
|
+
}
|
|
263
|
+
const agent = context.agentFor(endpoint);
|
|
264
|
+
return agent.get(type);
|
|
265
|
+
}
|
|
266
|
+
export {
|
|
267
|
+
BehaviorServer
|
|
268
|
+
};
|
|
269
|
+
//# 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", "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 "
|
|
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("
|
|
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:
|
|
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"}
|
|
@@ -4,9 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { ClusterBehavior } from "#behavior/cluster/ClusterBehavior.js";
|
|
7
|
-
import { ClusterServerBacking } from "#behavior/internal/ClusterServerBacking.js";
|
|
8
|
-
import { ServerBehaviorBacking } from "#behavior/internal/ServerBehaviorBacking.js";
|
|
9
7
|
import { ImplementationError, InternalError, NotImplementedError } from "#general";
|
|
8
|
+
import { BehaviorServer } from "./BehaviorServer.js";
|
|
10
9
|
const SERVER = Symbol("server");
|
|
11
10
|
class EndpointServer {
|
|
12
11
|
#endpoint;
|
|
@@ -19,22 +18,19 @@ class EndpointServer {
|
|
|
19
18
|
return this.#endpoint.type.deviceType;
|
|
20
19
|
}
|
|
21
20
|
constructor(endpoint) {
|
|
22
|
-
endpoint[SERVER]
|
|
21
|
+
if (endpoint[SERVER] !== void 0) {
|
|
22
|
+
throw new InternalError(`Endpoint ${endpoint} cluster server is already initialized`);
|
|
23
|
+
}
|
|
24
|
+
endpoint.construction.assert();
|
|
23
25
|
this.#endpoint = endpoint;
|
|
24
26
|
this.#name = endpoint.type.name;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const cluster = type.cluster;
|
|
30
|
-
if (this.#clusterServers.has(cluster.id)) {
|
|
31
|
-
throw new InternalError(`${this.#endpoint}.${cluster.id} initialized multiple times`);
|
|
27
|
+
endpoint[SERVER] = this;
|
|
28
|
+
for (const type of Object.values(endpoint.behaviors.supported)) {
|
|
29
|
+
if (!(type.prototype instanceof ClusterBehavior)) {
|
|
30
|
+
continue;
|
|
32
31
|
}
|
|
33
|
-
|
|
34
|
-
} else {
|
|
35
|
-
backing = new ServerBehaviorBacking(this.#endpoint, type, this.#endpoint.behaviors.optionsFor(type));
|
|
32
|
+
this.#serve(type);
|
|
36
33
|
}
|
|
37
|
-
return backing;
|
|
38
34
|
}
|
|
39
35
|
get number() {
|
|
40
36
|
return this.#endpoint.number;
|
|
@@ -42,6 +38,17 @@ class EndpointServer {
|
|
|
42
38
|
get name() {
|
|
43
39
|
return this.#name;
|
|
44
40
|
}
|
|
41
|
+
updateServers() {
|
|
42
|
+
for (const type of Object.values(this.#endpoint.behaviors.supported)) {
|
|
43
|
+
if (!(type.prototype instanceof ClusterBehavior)) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (this.#clusterServers.has(type.cluster?.id)) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
this.#serve(type);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
45
52
|
getNumber() {
|
|
46
53
|
if (this.number === void 0) {
|
|
47
54
|
throw new InternalError("Endpoint ID has not been assigned yet");
|
|
@@ -69,6 +76,9 @@ class EndpointServer {
|
|
|
69
76
|
close() {
|
|
70
77
|
}
|
|
71
78
|
async [Symbol.asyncDispose]() {
|
|
79
|
+
for (const server of this.#clusterServers.values()) {
|
|
80
|
+
server.close();
|
|
81
|
+
}
|
|
72
82
|
this.#clusterServers.clear();
|
|
73
83
|
delete this.#endpoint[SERVER];
|
|
74
84
|
for (const endpoint of this.#endpoint.parts) {
|
|
@@ -124,6 +134,20 @@ class EndpointServer {
|
|
|
124
134
|
}
|
|
125
135
|
}
|
|
126
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Install a ClusterServer for a behavior.
|
|
139
|
+
*/
|
|
140
|
+
#serve(type) {
|
|
141
|
+
const { cluster } = type;
|
|
142
|
+
if (cluster === void 0) {
|
|
143
|
+
throw new InternalError(`Cannot serve ${this.endpoint} behavior ${type.id}} because it is not a cluster`);
|
|
144
|
+
}
|
|
145
|
+
if (this.#clusterServers.has(cluster.id)) {
|
|
146
|
+
throw new ImplementationError(`Duplicate behaviors for ${this.endpoint} define cluster ${cluster.id}`);
|
|
147
|
+
}
|
|
148
|
+
const clusterServer = BehaviorServer(this, type);
|
|
149
|
+
this.#clusterServers.set(cluster.id, clusterServer);
|
|
150
|
+
}
|
|
127
151
|
/**
|
|
128
152
|
* Retrieve the server for an endpoint.
|
|
129
153
|
*/
|
|
@@ -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
|
-
*
|
|
19
|
-
* {@link BehaviorBacking} for a specific {@link Behavior}.
|
|
18
|
+
* Create the backing.
|
|
20
19
|
*
|
|
21
|
-
*
|
|
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,
|
|
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"}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* Copyright 2022-2024 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { ServerBehaviorBacking } from "#behavior/internal/ServerBehaviorBacking.js";
|
|
6
7
|
import { Endpoint } from "#endpoint/Endpoint.js";
|
|
7
|
-
import { EndpointServer } from "#endpoint/EndpointServer.js";
|
|
8
8
|
import { EndpointInitializer } from "#endpoint/properties/EndpointInitializer.js";
|
|
9
9
|
import { InternalError, Logger } from "#general";
|
|
10
10
|
import { DescriptorServer } from "../../behaviors/descriptor/DescriptorServer.js";
|
|
11
|
-
import { ServerNodeStore } from "
|
|
11
|
+
import { ServerNodeStore } from "../../node/storage/ServerNodeStore.js";
|
|
12
12
|
const logger = Logger.get("BehaviorInit");
|
|
13
13
|
class ServerEndpointInitializer extends EndpointInitializer {
|
|
14
14
|
#store;
|
|
@@ -36,13 +36,13 @@ class ServerEndpointInitializer extends EndpointInitializer {
|
|
|
36
36
|
this.#store.endpointStores.deactivateStoreForEndpoint(endpoint);
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
*
|
|
40
|
-
* {@link BehaviorBacking} for a specific {@link Behavior}.
|
|
39
|
+
* Create the backing.
|
|
41
40
|
*
|
|
42
|
-
*
|
|
41
|
+
* If the behavior is a cluster behavior and the node is already initialized, create a server when the behavior
|
|
42
|
+
* initializes.
|
|
43
43
|
*/
|
|
44
|
-
createBacking(endpoint,
|
|
45
|
-
return
|
|
44
|
+
createBacking(endpoint, type) {
|
|
45
|
+
return new ServerBehaviorBacking(endpoint, type, endpoint.behaviors.optionsFor(type));
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
48
|
* 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,SAAS,6BAA6B;AACtC,SAAS,gBAAgB;AACzB,SAAS,2BAA2B;AACpC,SAAsB,eAAe,cAAc;AACnD,SAAS,wBAAwB;AACjC,SAAS,uBAAuB;AAEhC,MAAM,SAAS,OAAO,IAAI,cAAc;AAEjC,MAAM,kCAAkC,oBAAoB;AAAA,EAC/D;AAAA,EAEA,YAAY,aAA0B;AAClC,UAAM;AACN,SAAK,SAAS,YAAY,IAAI,eAAe;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,gBAAgB;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,sBAAsB,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,WAAW;AACvC,YAAM,IAAI,cAAc,2DAA2D;AAAA,IACvF;AACA,QAAI,CAAC,SAAS,MAAM,UAAU,OAAO;AACjC,YAAM,IAAI,cAAc,2DAA2D;AAAA,IACvF;AAEA,UAAM,QAAQ,SAAS,MAAM,MAAM,QAAQ,QAAQ;AACnD,QAAI,UAAU,IAAI;AACd,YAAM,IAAI,cAAc,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 @@
|
|
|
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"}
|
|
@@ -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,
|
|
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"}
|
|
@@ -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,SAAS,0BAA0B;AACnC,SAAS,oBAAoB;AA8BtB,SAAS,gBAAsD,SAAY;AAC9E,QAAM,OAAO,aAAa,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,mBAAmB,OAAO,KAAK,WAAW,SAAS;AAAA,MAClE,CAAC;AAAA,IACL;AAAA,EACJ;AAIJ;",
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,0BAA0B;AACnC,SAAS,oBAAoB;AA8BtB,SAAS,gBAAsD,SAAY;AAC9E,QAAM,OAAO,aAAa,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,mBAAmB,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
|
}
|
package/dist/esm/node/Node.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/esm/node/Node.js
CHANGED
|
@@ -103,6 +103,9 @@ class Node extends Endpoint {
|
|
|
103
103
|
* Bring the node online.
|
|
104
104
|
*/
|
|
105
105
|
async start() {
|
|
106
|
+
await this.lifecycle.mutex.produce(this.startWithMutex.bind(this));
|
|
107
|
+
}
|
|
108
|
+
async startWithMutex() {
|
|
106
109
|
this.env.runtime.add(this);
|
|
107
110
|
try {
|
|
108
111
|
await this.construction.ready;
|
|
@@ -137,6 +140,9 @@ class Node extends Endpoint {
|
|
|
137
140
|
* Once the node is offline you may use {@link start} to bring the node online again.
|
|
138
141
|
*/
|
|
139
142
|
async cancel() {
|
|
143
|
+
await this.lifecycle.mutex.produce(this.cancelWithMutex.bind(this));
|
|
144
|
+
}
|
|
145
|
+
async cancelWithMutex() {
|
|
140
146
|
if (!this.#runtime) {
|
|
141
147
|
return;
|
|
142
148
|
}
|
|
@@ -145,11 +151,20 @@ class Node extends Endpoint {
|
|
|
145
151
|
this.#runtime = void 0;
|
|
146
152
|
}
|
|
147
153
|
async close() {
|
|
154
|
+
await this.lifecycle.mutex.produce(this.closeWithMutex.bind(this));
|
|
155
|
+
}
|
|
156
|
+
async closeWithMutex() {
|
|
148
157
|
if (this.#runtime) {
|
|
149
|
-
await this.
|
|
158
|
+
await this.cancelWithMutex();
|
|
150
159
|
}
|
|
151
160
|
await super.close();
|
|
152
161
|
}
|
|
162
|
+
async reset() {
|
|
163
|
+
await this.lifecycle.mutex.produce(this.resetWithMutex.bind(this));
|
|
164
|
+
}
|
|
165
|
+
async resetWithMutex() {
|
|
166
|
+
return super.reset();
|
|
167
|
+
}
|
|
153
168
|
get [RuntimeService.label]() {
|
|
154
169
|
return ["Runtime for", Diagnostic.strong(this.toString())];
|
|
155
170
|
}
|
|
@@ -179,7 +194,7 @@ class Node extends Endpoint {
|
|
|
179
194
|
logger.notice(Diagnostic.strong(this.toString()), message);
|
|
180
195
|
}
|
|
181
196
|
async [Construction.destruct]() {
|
|
182
|
-
await this.
|
|
197
|
+
await this.cancelWithMutex();
|
|
183
198
|
await super[Construction.destruct]();
|
|
184
199
|
DiagnosticSource.delete(this);
|
|
185
200
|
}
|