@matter/node 0.15.2-alpha.0-20250717-3607eeac6 → 0.15.2-alpha.0-20250718-7e661c331

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 (170) hide show
  1. package/dist/cjs/behavior/internal/BehaviorBacking.d.ts +2 -2
  2. package/dist/cjs/behavior/internal/BehaviorBacking.d.ts.map +1 -1
  3. package/dist/cjs/behavior/internal/BehaviorBacking.js +6 -1
  4. package/dist/cjs/behavior/internal/BehaviorBacking.js.map +1 -1
  5. package/dist/cjs/behavior/internal/ClientBehaviorBacking.d.ts +1 -6
  6. package/dist/cjs/behavior/internal/ClientBehaviorBacking.d.ts.map +1 -1
  7. package/dist/cjs/behavior/internal/ClientBehaviorBacking.js +0 -5
  8. package/dist/cjs/behavior/internal/ClientBehaviorBacking.js.map +1 -1
  9. package/dist/cjs/behavior/internal/ServerBehaviorBacking.d.ts +0 -3
  10. package/dist/cjs/behavior/internal/ServerBehaviorBacking.d.ts.map +1 -1
  11. package/dist/cjs/behavior/internal/ServerBehaviorBacking.js +0 -15
  12. package/dist/cjs/behavior/internal/ServerBehaviorBacking.js.map +1 -1
  13. package/dist/cjs/behavior/state/managed/Datasource.js +7 -3
  14. package/dist/cjs/behavior/state/managed/Datasource.js.map +1 -1
  15. package/dist/cjs/behavior/supervision/RootSupervisor.d.ts +2 -2
  16. package/dist/cjs/behavior/supervision/RootSupervisor.d.ts.map +1 -1
  17. package/dist/cjs/behavior/supervision/RootSupervisor.js +12 -10
  18. package/dist/cjs/behavior/supervision/RootSupervisor.js.map +1 -1
  19. package/dist/cjs/node/ClientNode.d.ts.map +1 -1
  20. package/dist/cjs/node/ClientNode.js +2 -2
  21. package/dist/cjs/node/ClientNode.js.map +1 -1
  22. package/dist/cjs/node/ServerNode.js +2 -2
  23. package/dist/cjs/node/ServerNode.js.map +1 -1
  24. package/dist/cjs/node/client/ClientEndpointInitializer.d.ts.map +1 -1
  25. package/dist/cjs/node/client/ClientEndpointInitializer.js +5 -4
  26. package/dist/cjs/node/client/ClientEndpointInitializer.js.map +2 -2
  27. package/dist/cjs/node/client/ClientStructure.d.ts +14 -2
  28. package/dist/cjs/node/client/ClientStructure.d.ts.map +1 -1
  29. package/dist/cjs/node/client/ClientStructure.js +21 -3
  30. package/dist/cjs/node/client/ClientStructure.js.map +1 -1
  31. package/dist/cjs/node/server/ServerEndpointInitializer.d.ts.map +1 -1
  32. package/dist/cjs/node/server/ServerEndpointInitializer.js +2 -1
  33. package/dist/cjs/node/server/ServerEndpointInitializer.js.map +1 -1
  34. package/dist/cjs/node/server/ServerEnvironment.d.ts.map +1 -1
  35. package/dist/cjs/node/server/ServerEnvironment.js +0 -2
  36. package/dist/cjs/node/server/ServerEnvironment.js.map +1 -1
  37. package/dist/cjs/storage/EndpointStore.d.ts +4 -4
  38. package/dist/cjs/storage/EndpointStore.d.ts.map +1 -1
  39. package/dist/cjs/storage/EndpointStore.js +9 -7
  40. package/dist/cjs/storage/EndpointStore.js.map +1 -1
  41. package/dist/cjs/storage/client/ClientEndpointStore.d.ts +24 -0
  42. package/dist/cjs/storage/client/ClientEndpointStore.d.ts.map +1 -0
  43. package/dist/cjs/storage/client/ClientEndpointStore.js +67 -0
  44. package/dist/cjs/storage/client/ClientEndpointStore.js.map +6 -0
  45. package/dist/cjs/storage/client/ClientNodeStore.d.ts +13 -3
  46. package/dist/cjs/storage/client/ClientNodeStore.d.ts.map +1 -1
  47. package/dist/cjs/storage/client/ClientNodeStore.js +24 -3
  48. package/dist/cjs/storage/client/ClientNodeStore.js.map +1 -1
  49. package/dist/cjs/storage/client/ClientNodeStores.d.ts +2 -2
  50. package/dist/cjs/storage/client/ClientNodeStores.d.ts.map +1 -1
  51. package/dist/cjs/storage/client/ClientNodeStores.js +1 -1
  52. package/dist/cjs/storage/client/ClientNodeStores.js.map +1 -1
  53. package/dist/cjs/storage/client/DatasourceCache.d.ts +2 -2
  54. package/dist/cjs/storage/client/DatasourceCache.d.ts.map +1 -1
  55. package/dist/cjs/storage/client/DatasourceCache.js +5 -3
  56. package/dist/cjs/storage/client/DatasourceCache.js.map +1 -1
  57. package/dist/cjs/storage/client/RemoteWriteParticipant.d.ts +30 -0
  58. package/dist/cjs/storage/client/RemoteWriteParticipant.d.ts.map +1 -0
  59. package/dist/cjs/storage/client/RemoteWriteParticipant.js +66 -0
  60. package/dist/cjs/storage/client/RemoteWriteParticipant.js.map +6 -0
  61. package/dist/cjs/storage/client/RemoteWriter.d.ts +29 -0
  62. package/dist/cjs/storage/client/RemoteWriter.d.ts.map +1 -0
  63. package/dist/cjs/storage/client/RemoteWriter.js +73 -0
  64. package/dist/cjs/storage/client/RemoteWriter.js.map +6 -0
  65. package/dist/cjs/storage/server/DatasourceStore.d.ts +0 -3
  66. package/dist/cjs/storage/server/DatasourceStore.d.ts.map +1 -1
  67. package/dist/cjs/storage/server/DatasourceStore.js.map +1 -1
  68. package/dist/cjs/storage/server/ServerEndpointStore.d.ts +4 -0
  69. package/dist/cjs/storage/server/ServerEndpointStore.d.ts.map +1 -1
  70. package/dist/cjs/storage/server/ServerEndpointStore.js +8 -0
  71. package/dist/cjs/storage/server/ServerEndpointStore.js.map +1 -1
  72. package/dist/cjs/storage/server/ServerNodeStore.d.ts +3 -2
  73. package/dist/cjs/storage/server/ServerNodeStore.d.ts.map +1 -1
  74. package/dist/cjs/storage/server/ServerNodeStore.js.map +1 -1
  75. package/dist/esm/behavior/internal/BehaviorBacking.d.ts +2 -2
  76. package/dist/esm/behavior/internal/BehaviorBacking.d.ts.map +1 -1
  77. package/dist/esm/behavior/internal/BehaviorBacking.js +6 -1
  78. package/dist/esm/behavior/internal/BehaviorBacking.js.map +1 -1
  79. package/dist/esm/behavior/internal/ClientBehaviorBacking.d.ts +1 -6
  80. package/dist/esm/behavior/internal/ClientBehaviorBacking.d.ts.map +1 -1
  81. package/dist/esm/behavior/internal/ClientBehaviorBacking.js +0 -5
  82. package/dist/esm/behavior/internal/ClientBehaviorBacking.js.map +1 -1
  83. package/dist/esm/behavior/internal/ServerBehaviorBacking.d.ts +0 -3
  84. package/dist/esm/behavior/internal/ServerBehaviorBacking.d.ts.map +1 -1
  85. package/dist/esm/behavior/internal/ServerBehaviorBacking.js +0 -15
  86. package/dist/esm/behavior/internal/ServerBehaviorBacking.js.map +1 -1
  87. package/dist/esm/behavior/state/managed/Datasource.js +7 -3
  88. package/dist/esm/behavior/state/managed/Datasource.js.map +1 -1
  89. package/dist/esm/behavior/supervision/RootSupervisor.d.ts +2 -2
  90. package/dist/esm/behavior/supervision/RootSupervisor.d.ts.map +1 -1
  91. package/dist/esm/behavior/supervision/RootSupervisor.js +12 -10
  92. package/dist/esm/behavior/supervision/RootSupervisor.js.map +1 -1
  93. package/dist/esm/node/ClientNode.d.ts.map +1 -1
  94. package/dist/esm/node/ClientNode.js +2 -2
  95. package/dist/esm/node/ClientNode.js.map +1 -1
  96. package/dist/esm/node/ServerNode.js +2 -2
  97. package/dist/esm/node/ServerNode.js.map +1 -1
  98. package/dist/esm/node/client/ClientEndpointInitializer.d.ts.map +1 -1
  99. package/dist/esm/node/client/ClientEndpointInitializer.js +5 -4
  100. package/dist/esm/node/client/ClientEndpointInitializer.js.map +2 -2
  101. package/dist/esm/node/client/ClientStructure.d.ts +14 -2
  102. package/dist/esm/node/client/ClientStructure.d.ts.map +1 -1
  103. package/dist/esm/node/client/ClientStructure.js +21 -3
  104. package/dist/esm/node/client/ClientStructure.js.map +1 -1
  105. package/dist/esm/node/server/ServerEndpointInitializer.d.ts.map +1 -1
  106. package/dist/esm/node/server/ServerEndpointInitializer.js +2 -1
  107. package/dist/esm/node/server/ServerEndpointInitializer.js.map +1 -1
  108. package/dist/esm/node/server/ServerEnvironment.d.ts.map +1 -1
  109. package/dist/esm/node/server/ServerEnvironment.js +0 -2
  110. package/dist/esm/node/server/ServerEnvironment.js.map +1 -1
  111. package/dist/esm/storage/EndpointStore.d.ts +4 -4
  112. package/dist/esm/storage/EndpointStore.d.ts.map +1 -1
  113. package/dist/esm/storage/EndpointStore.js +9 -7
  114. package/dist/esm/storage/EndpointStore.js.map +1 -1
  115. package/dist/esm/storage/client/ClientEndpointStore.d.ts +24 -0
  116. package/dist/esm/storage/client/ClientEndpointStore.d.ts.map +1 -0
  117. package/dist/esm/storage/client/ClientEndpointStore.js +47 -0
  118. package/dist/esm/storage/client/ClientEndpointStore.js.map +6 -0
  119. package/dist/esm/storage/client/ClientNodeStore.d.ts +13 -3
  120. package/dist/esm/storage/client/ClientNodeStore.d.ts.map +1 -1
  121. package/dist/esm/storage/client/ClientNodeStore.js +24 -3
  122. package/dist/esm/storage/client/ClientNodeStore.js.map +1 -1
  123. package/dist/esm/storage/client/ClientNodeStores.d.ts +2 -2
  124. package/dist/esm/storage/client/ClientNodeStores.d.ts.map +1 -1
  125. package/dist/esm/storage/client/ClientNodeStores.js +1 -1
  126. package/dist/esm/storage/client/ClientNodeStores.js.map +1 -1
  127. package/dist/esm/storage/client/DatasourceCache.d.ts +2 -2
  128. package/dist/esm/storage/client/DatasourceCache.d.ts.map +1 -1
  129. package/dist/esm/storage/client/DatasourceCache.js +5 -3
  130. package/dist/esm/storage/client/DatasourceCache.js.map +1 -1
  131. package/dist/esm/storage/client/RemoteWriteParticipant.d.ts +30 -0
  132. package/dist/esm/storage/client/RemoteWriteParticipant.d.ts.map +1 -0
  133. package/dist/esm/storage/client/RemoteWriteParticipant.js +46 -0
  134. package/dist/esm/storage/client/RemoteWriteParticipant.js.map +6 -0
  135. package/dist/esm/storage/client/RemoteWriter.d.ts +29 -0
  136. package/dist/esm/storage/client/RemoteWriter.d.ts.map +1 -0
  137. package/dist/esm/storage/client/RemoteWriter.js +53 -0
  138. package/dist/esm/storage/client/RemoteWriter.js.map +6 -0
  139. package/dist/esm/storage/server/DatasourceStore.d.ts +0 -3
  140. package/dist/esm/storage/server/DatasourceStore.d.ts.map +1 -1
  141. package/dist/esm/storage/server/DatasourceStore.js.map +1 -1
  142. package/dist/esm/storage/server/ServerEndpointStore.d.ts +4 -0
  143. package/dist/esm/storage/server/ServerEndpointStore.d.ts.map +1 -1
  144. package/dist/esm/storage/server/ServerEndpointStore.js +8 -0
  145. package/dist/esm/storage/server/ServerEndpointStore.js.map +1 -1
  146. package/dist/esm/storage/server/ServerNodeStore.d.ts +3 -2
  147. package/dist/esm/storage/server/ServerNodeStore.d.ts.map +1 -1
  148. package/dist/esm/storage/server/ServerNodeStore.js.map +1 -1
  149. package/package.json +7 -7
  150. package/src/behavior/internal/BehaviorBacking.ts +3 -2
  151. package/src/behavior/internal/ClientBehaviorBacking.ts +0 -15
  152. package/src/behavior/internal/ServerBehaviorBacking.ts +0 -19
  153. package/src/behavior/state/managed/Datasource.ts +10 -3
  154. package/src/behavior/supervision/RootSupervisor.ts +18 -15
  155. package/src/node/ClientNode.ts +4 -2
  156. package/src/node/ServerNode.ts +2 -2
  157. package/src/node/client/ClientEndpointInitializer.ts +7 -3
  158. package/src/node/client/ClientStructure.ts +26 -6
  159. package/src/node/server/ServerEndpointInitializer.ts +3 -1
  160. package/src/node/server/ServerEnvironment.ts +0 -2
  161. package/src/storage/EndpointStore.ts +9 -9
  162. package/src/storage/client/ClientEndpointStore.ts +53 -0
  163. package/src/storage/client/ClientNodeStore.ts +38 -6
  164. package/src/storage/client/ClientNodeStores.ts +3 -4
  165. package/src/storage/client/DatasourceCache.ts +10 -7
  166. package/src/storage/client/RemoteWriteParticipant.ts +62 -0
  167. package/src/storage/client/RemoteWriter.ts +81 -0
  168. package/src/storage/server/DatasourceStore.ts +1 -6
  169. package/src/storage/server/ServerEndpointStore.ts +9 -0
  170. package/src/storage/server/ServerNodeStore.ts +4 -2
@@ -4,13 +4,23 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { Endpoint } from "#endpoint/Endpoint.js";
7
- import { EndpointStore } from "#storage/EndpointStore.js";
7
+ import { StorageContextFactory } from "#general";
8
8
  import { NodeStore } from "../NodeStore.js";
9
+ import { ClientEndpointStore } from "./ClientEndpointStore.js";
10
+ import type { RemoteWriter } from "./RemoteWriter.js";
11
+ /**
12
+ * {@link ClientNode} persistence.
13
+ */
9
14
  export declare class ClientNodeStore extends NodeStore {
10
15
  #private;
11
- get endpointStores(): MapIterator<EndpointStore>;
16
+ constructor(id: string, storage: StorageContextFactory);
17
+ toString(): string;
18
+ get id(): string;
19
+ get write(): RemoteWriter;
20
+ set write(write: RemoteWriter);
21
+ get endpointStores(): MapIterator<ClientEndpointStore>;
12
22
  erase(): void | Promise<void> | undefined;
13
- storeForEndpoint(endpoint: Endpoint): EndpointStore;
23
+ storeForEndpoint(endpoint: Endpoint): ClientEndpointStore;
14
24
  protected load(): Promise<void>;
15
25
  }
16
26
  //# sourceMappingURL=ClientNodeStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClientNodeStore.d.ts","sourceRoot":"","sources":["../../../../src/storage/client/ClientNodeStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,eAAgB,SAAQ,SAAS;;IAI1C,IAAI,cAAc,+BAEjB;IAEQ,KAAK;IAKL,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa;cAgBnC,IAAI;CAahC"}
1
+ {"version":3,"file":"ClientNodeStore.d.ts","sourceRoot":"","sources":["../../../../src/storage/client/ClientNodeStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAiC,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGhF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS;;gBAM9B,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB;IAK7C,QAAQ;IAIjB,IAAI,EAAE,WAEL;IAED,IAAI,KAAK,IAQQ,YAAY,CAF5B;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,YAAY,EAE5B;IAED,IAAI,cAAc,qCAEjB;IAEQ,KAAK;IAKL,gBAAgB,CAAC,QAAQ,EAAE,QAAQ;cAgBnB,IAAI;CAahC"}
@@ -4,11 +4,32 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { InternalError } from "#general";
7
- import { EndpointStore } from "#storage/EndpointStore.js";
8
7
  import { NodeStore } from "../NodeStore.js";
8
+ import { ClientEndpointStore } from "./ClientEndpointStore.js";
9
9
  class ClientNodeStore extends NodeStore {
10
+ #id;
10
11
  #storage;
11
12
  #stores = /* @__PURE__ */ new Map();
13
+ #write;
14
+ constructor(id, storage) {
15
+ super(storage);
16
+ this.#id = id;
17
+ }
18
+ toString() {
19
+ return `client-node-store#${this.#id}`;
20
+ }
21
+ get id() {
22
+ return this.#id;
23
+ }
24
+ get write() {
25
+ if (this.#write === void 0) {
26
+ throw new InternalError("Write attempt on ClientNodeStore without writer installed");
27
+ }
28
+ return this.#write;
29
+ }
30
+ set write(write) {
31
+ this.#write = write;
32
+ }
12
33
  get endpointStores() {
13
34
  return this.#stores.values();
14
35
  }
@@ -23,7 +44,7 @@ class ClientNodeStore extends NodeStore {
23
44
  }
24
45
  let store = this.#stores.get(number);
25
46
  if (store === void 0) {
26
- store = new EndpointStore(this.#storage.createContext(number.toString()));
47
+ store = new ClientEndpointStore(this, number, this.#storage.createContext(number.toString()));
27
48
  this.#stores.set(number, store);
28
49
  }
29
50
  return store;
@@ -35,7 +56,7 @@ class ClientNodeStore extends NodeStore {
35
56
  if (Number.isNaN(number)) {
36
57
  continue;
37
58
  }
38
- const store = new EndpointStore(this.#storage.createContext(id));
59
+ const store = new ClientEndpointStore(this, number, this.#storage.createContext(id));
39
60
  await store.load();
40
61
  this.#stores.set(number, store);
41
62
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/storage/client/ClientNodeStore.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,qBAAqC;AAC9C,SAAS,qBAAqB;AAE9B,SAAS,iBAAiB;AAEnB,MAAM,wBAAwB,UAAU;AAAA,EAC3C;AAAA,EACA,UAAU,oBAAI,IAAmC;AAAA,EAEjD,IAAI,iBAAiB;AACjB,WAAO,KAAK,QAAQ,OAAO;AAAA,EAC/B;AAAA,EAES,QAAQ;AACb,SAAK,UAAU,oBAAI,IAAI;AACvB,WAAO,KAAK,UAAU,SAAS;AAAA,EACnC;AAAA,EAES,iBAAiB,UAAmC;AACzD,UAAM,EAAE,OAAO,IAAI;AAEnB,QAAI,KAAK,aAAa,QAAW;AAC7B,YAAM,IAAI,cAAc,oBAAoB,KAAK,SAAS,CAAC,cAAc,MAAM,uBAAuB;AAAA,IAC1G;AAEA,QAAI,QAAQ,KAAK,QAAQ,IAAI,MAAM;AACnC,QAAI,UAAU,QAAW;AACrB,cAAQ,IAAI,cAAc,KAAK,SAAS,cAAc,OAAO,SAAS,CAAC,CAAC;AACxE,WAAK,QAAQ,IAAI,QAAQ,KAAK;AAAA,IAClC;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAyB,OAAO;AAC5B,SAAK,WAAW,KAAK,eAAe,cAAc,WAAW;AAC7D,eAAW,MAAM,MAAM,KAAK,SAAS,SAAS,GAAG;AAC7C,YAAM,SAAS,OAAO,SAAS,EAAE;AACjC,UAAI,OAAO,MAAM,MAAM,GAAG;AACtB;AAAA,MACJ;AAEA,YAAM,QAAQ,IAAI,cAAc,KAAK,SAAS,cAAc,EAAE,CAAC;AAC/D,YAAM,MAAM,KAAK;AACjB,WAAK,QAAQ,IAAI,QAAQ,KAAK;AAAA,IAClC;AAAA,EACJ;AACJ;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,qBAA4D;AAGrE,SAAS,iBAAiB;AAC1B,SAAS,2BAA2B;AAM7B,MAAM,wBAAwB,UAAU;AAAA,EAC3C;AAAA,EACA;AAAA,EACA,UAAU,oBAAI,IAAyC;AAAA,EACvD;AAAA,EAEA,YAAY,IAAY,SAAgC;AACpD,UAAM,OAAO;AACb,SAAK,MAAM;AAAA,EACf;AAAA,EAES,WAAW;AAChB,WAAO,qBAAqB,KAAK,GAAG;AAAA,EACxC;AAAA,EAEA,IAAI,KAAK;AACL,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,QAAQ;AACR,QAAI,KAAK,WAAW,QAAW;AAC3B,YAAM,IAAI,cAAc,2DAA2D;AAAA,IACvF;AAEA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,MAAM,OAAqB;AAC3B,SAAK,SAAS;AAAA,EAClB;AAAA,EAEA,IAAI,iBAAiB;AACjB,WAAO,KAAK,QAAQ,OAAO;AAAA,EAC/B;AAAA,EAES,QAAQ;AACb,SAAK,UAAU,oBAAI,IAAI;AACvB,WAAO,KAAK,UAAU,SAAS;AAAA,EACnC;AAAA,EAES,iBAAiB,UAAoB;AAC1C,UAAM,EAAE,OAAO,IAAI;AAEnB,QAAI,KAAK,aAAa,QAAW;AAC7B,YAAM,IAAI,cAAc,oBAAoB,KAAK,SAAS,CAAC,cAAc,MAAM,uBAAuB;AAAA,IAC1G;AAEA,QAAI,QAAQ,KAAK,QAAQ,IAAI,MAAM;AACnC,QAAI,UAAU,QAAW;AACrB,cAAQ,IAAI,oBAAoB,MAAM,QAAQ,KAAK,SAAS,cAAc,OAAO,SAAS,CAAC,CAAC;AAC5F,WAAK,QAAQ,IAAI,QAAQ,KAAK;AAAA,IAClC;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAyB,OAAO;AAC5B,SAAK,WAAW,KAAK,eAAe,cAAc,WAAW;AAC7D,eAAW,MAAM,MAAM,KAAK,SAAS,SAAS,GAAG;AAC7C,YAAM,SAAS,OAAO,SAAS,EAAE;AACjC,UAAI,OAAO,MAAM,MAAM,GAAG;AACtB;AAAA,MACJ;AAEA,YAAM,QAAQ,IAAI,oBAAoB,MAAM,QAAQ,KAAK,SAAS,cAAc,EAAE,CAAC;AACnF,YAAM,MAAM,KAAK;AACjB,WAAK,QAAQ,IAAI,QAAQ,KAAK;AAAA,IAClC;AAAA,EACJ;AACJ;",
5
5
  "names": []
6
6
  }
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { Construction, StorageContext } from "#general";
7
7
  import type { ClientNode } from "#node/ClientNode.js";
8
- import { NodeStore } from "../NodeStore.js";
8
+ import { ClientNodeStore } from "./ClientNodeStore.js";
9
9
  /**
10
10
  * Manages {@link ClientNodeStore}s for a {@link Node}.
11
11
  */
@@ -26,7 +26,7 @@ export declare class ClientNodeStores {
26
26
  *
27
27
  * These stores are cached internally by ID.
28
28
  */
29
- storeForNode(node: ClientNode): NodeStore;
29
+ storeForNode(node: ClientNode): ClientNodeStore;
30
30
  /**
31
31
  * List all nodes present.
32
32
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ClientNodeStores.d.ts","sourceRoot":"","sources":["../../../../src/storage/client/ClientNodeStores.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAwB,cAAc,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAK5C;;GAEG;AACH,qBAAa,gBAAgB;;IAMzB,IAAI,YAAY,mCAEf;gBAEW,OAAO,EAAE,cAAc;IAM7B,CAAC,YAAY,CAAC,SAAS,CAAC;IAwB9B;;;;;OAKG;IACH,UAAU;IAMV;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS;IAWzC;;OAEG;IACH,IAAI,QAAQ,aAIX;IAEK,KAAK;CAUd"}
1
+ {"version":3,"file":"ClientNodeStores.d.ts","sourceRoot":"","sources":["../../../../src/storage/client/ClientNodeStores.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAwB,cAAc,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD;;GAEG;AACH,qBAAa,gBAAgB;;IAMzB,IAAI,YAAY,mCAEf;gBAEW,OAAO,EAAE,cAAc;IAM7B,CAAC,YAAY,CAAC,SAAS,CAAC;IAwB9B;;;;;OAKG;IACH,UAAU;IAMV;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe;IAW/C;;OAEG;IACH,IAAI,QAAQ,aAIX;IAEK,KAAK;CAUd"}
@@ -72,7 +72,7 @@ class ClientNodeStores {
72
72
  await this.construction;
73
73
  }
74
74
  #createNodeStore(id) {
75
- const store = new ClientNodeStore(this.#storage.createContext(id));
75
+ const store = new ClientNodeStore(id, this.#storage.createContext(id));
76
76
  store.construction.start();
77
77
  this.#stores[id] = store;
78
78
  return store;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/storage/client/ClientNodeStores.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc,4BAA4C;AAInE,SAAS,uBAAuB;AAEhC,MAAM,mBAAmB;AAKlB,MAAM,iBAAiB;AAAA,EAC1B;AAAA,EACA,UAAU,CAAC;AAAA,EACX;AAAA,EACA,mBAAmB;AAAA,EAEnB,IAAI,eAAe;AACf,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,YAAY,SAAyB;AACjC,SAAK,WAAW;AAChB,SAAK,gBAAgB,aAAa,IAAI;AACtC,SAAK,cAAc,MAAM;AAAA,EAC7B;AAAA,EAEA,OAAO,aAAa,SAAS,IAAI;AAC7B,UAAM,WAAW,MAAM,KAAK,SAAS,SAAS;AAE9C,eAAW,MAAM,UAAU;AACvB,UAAI,CAAC,GAAG,WAAW,gBAAgB,GAAG;AAClC;AAAA,MACJ;AAEA,YAAM,MAAM,OAAO,SAAS,GAAG,MAAM,iBAAiB,MAAM,CAAC;AAC7D,UAAI,CAAC,OAAO,MAAM,GAAG,GAAG;AACpB,YAAI,KAAK,oBAAoB,KAAK;AAC9B,eAAK,mBAAmB,MAAM;AAAA,QAClC;AAAA,MACJ;AAEA,WAAK,iBAAiB,EAAE;AAAA,IAC5B;AAEA,UAAM,qBAAqB;AAAA,MACvB,OAAO,OAAO,KAAK,OAAO,EAAE,IAAI,WAAS,MAAM,aAAa,KAAK;AAAA,MACjE;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,aAAa;AACT,SAAK,cAAc,OAAO;AAE1B,WAAO,GAAG,gBAAgB,GAAG,KAAK,kBAAkB;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,MAA6B;AACtC,SAAK,cAAc,OAAO;AAE1B,UAAM,QAAQ,KAAK,QAAQ,KAAK,EAAE;AAClC,QAAI,OAAO;AACP,aAAO;AAAA,IACX;AAEA,WAAO,KAAK,iBAAiB,KAAK,EAAE;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,WAAW;AACX,SAAK,cAAc,OAAO;AAE1B,WAAO,OAAO,KAAK,KAAK,OAAO;AAAA,EACnC;AAAA,EAEA,MAAM,QAAQ;AACV,UAAM,KAAK;AAAA,EACf;AAAA,EAEA,iBAAiB,IAAY;AACzB,UAAM,QAAQ,IAAI,gBAAgB,KAAK,SAAS,cAAc,EAAE,CAAC;AACjE,UAAM,aAAa,MAAM;AACzB,SAAK,QAAQ,EAAE,IAAI;AACnB,WAAO;AAAA,EACX;AACJ;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc,4BAA4C;AAGnE,SAAS,uBAAuB;AAEhC,MAAM,mBAAmB;AAKlB,MAAM,iBAAiB;AAAA,EAC1B;AAAA,EACA,UAAU,CAAC;AAAA,EACX;AAAA,EACA,mBAAmB;AAAA,EAEnB,IAAI,eAAe;AACf,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,YAAY,SAAyB;AACjC,SAAK,WAAW;AAChB,SAAK,gBAAgB,aAAa,IAAI;AACtC,SAAK,cAAc,MAAM;AAAA,EAC7B;AAAA,EAEA,OAAO,aAAa,SAAS,IAAI;AAC7B,UAAM,WAAW,MAAM,KAAK,SAAS,SAAS;AAE9C,eAAW,MAAM,UAAU;AACvB,UAAI,CAAC,GAAG,WAAW,gBAAgB,GAAG;AAClC;AAAA,MACJ;AAEA,YAAM,MAAM,OAAO,SAAS,GAAG,MAAM,iBAAiB,MAAM,CAAC;AAC7D,UAAI,CAAC,OAAO,MAAM,GAAG,GAAG;AACpB,YAAI,KAAK,oBAAoB,KAAK;AAC9B,eAAK,mBAAmB,MAAM;AAAA,QAClC;AAAA,MACJ;AAEA,WAAK,iBAAiB,EAAE;AAAA,IAC5B;AAEA,UAAM,qBAAqB;AAAA,MACvB,OAAO,OAAO,KAAK,OAAO,EAAE,IAAI,WAAS,MAAM,aAAa,KAAK;AAAA,MACjE;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,aAAa;AACT,SAAK,cAAc,OAAO;AAE1B,WAAO,GAAG,gBAAgB,GAAG,KAAK,kBAAkB;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,MAAmC;AAC5C,SAAK,cAAc,OAAO;AAE1B,UAAM,QAAQ,KAAK,QAAQ,KAAK,EAAE;AAClC,QAAI,OAAO;AACP,aAAO;AAAA,IACX;AAEA,WAAO,KAAK,iBAAiB,KAAK,EAAE;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,WAAW;AACX,SAAK,cAAc,OAAO;AAE1B,WAAO,OAAO,KAAK,KAAK,OAAO;AAAA,EACnC;AAAA,EAEA,MAAM,QAAQ;AACV,UAAM,KAAK;AAAA,EACf;AAAA,EAEA,iBAAiB,IAAY;AACzB,UAAM,QAAQ,IAAI,gBAAgB,IAAI,KAAK,SAAS,cAAc,EAAE,CAAC;AACrE,UAAM,aAAa,MAAM;AACzB,SAAK,QAAQ,EAAE,IAAI;AACnB,WAAO;AAAA,EACX;AACJ;",
5
5
  "names": []
6
6
  }
@@ -5,13 +5,13 @@
5
5
  */
6
6
  import { Datasource } from "#behavior/state/managed/Datasource.js";
7
7
  import { Val } from "#protocol";
8
- import { EndpointStore } from "#storage/EndpointStore.js";
8
+ import type { ClientEndpointStore } from "./ClientEndpointStore.js";
9
9
  /**
10
10
  * Factory function for the default implementation of {@link Datasource.ExternallyMutableStore}.
11
11
  *
12
12
  * This implements storage for attribute values for a single cluster loaded from remote nodes.
13
13
  */
14
- export declare function DatasourceCache(store: EndpointStore, behaviorId: string, initialValues: Val.Struct | undefined): Datasource.ExternallyMutableStore;
14
+ export declare function DatasourceCache(store: ClientEndpointStore, behaviorId: string, initialValues: Val.Struct | undefined): Datasource.ExternallyMutableStore;
15
15
  export declare namespace DatasourceCache {
16
16
  /**
17
17
  * Standard key for storing the version.
@@ -1 +1 @@
1
- {"version":3,"file":"DatasourceCache.d.ts","sourceRoot":"","sources":["../../../../src/storage/client/DatasourceCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAEnE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D;;;;GAIG;AACH,wBAAgB,eAAe,CAC3B,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,GAAG,CAAC,MAAM,GAAG,SAAS,GACtC,UAAU,CAAC,sBAAsB,CAoCnC;AAID,yBAAiB,eAAe,CAAC;IAC7B;;;;OAIG;IACI,MAAM,WAAW,gBAAgB,CAAC;CAC5C"}
1
+ {"version":3,"file":"DatasourceCache.d.ts","sourceRoot":"","sources":["../../../../src/storage/client/DatasourceCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAEnE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGpE;;;;GAIG;AACH,wBAAgB,eAAe,CAC3B,KAAK,EAAE,mBAAmB,EAC1B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,GAAG,CAAC,MAAM,GAAG,SAAS,GACtC,UAAU,CAAC,sBAAsB,CAyCnC;AAED,yBAAiB,eAAe,CAAC;IAC7B;;;;OAIG;IACI,MAAM,WAAW,gBAAgB,CAAC;CAC5C"}
@@ -5,14 +5,17 @@
5
5
  */
6
6
  import { Datasource } from "#behavior/state/managed/Datasource.js";
7
7
  import { InternalError } from "#general";
8
- import { DatasourceStore } from "../server/DatasourceStore.js";
9
8
  function DatasourceCache(store, behaviorId, initialValues) {
10
9
  let version = initialValues?.[DatasourceCache.VERSION_KEY];
11
10
  if (typeof version !== "number") {
12
11
  version = Datasource.UNKNOWN_VERSION;
13
12
  }
14
13
  return {
15
- ...DatasourceStore(store, behaviorId, initialValues),
14
+ initialValues,
15
+ async set(transaction, values) {
16
+ const participant = store.participantFor(transaction);
17
+ participant.set(store.number, behaviorId, values);
18
+ },
16
19
  async externalSet(values) {
17
20
  if (typeof values[DatasourceCache.VERSION_KEY] === "number") {
18
21
  version = values[DatasourceCache.VERSION_KEY];
@@ -36,7 +39,6 @@ function DatasourceCache(store, behaviorId, initialValues) {
36
39
  }
37
40
  };
38
41
  }
39
- DatasourceCache;
40
42
  ((DatasourceCache2) => {
41
43
  DatasourceCache2.VERSION_KEY = "__version__";
42
44
  })(DatasourceCache || (DatasourceCache = {}));
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/storage/client/DatasourceCache.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAG9B,SAAS,uBAAuB;AAOzB,SAAS,gBACZ,OACA,YACA,eACiC;AACjC,MAAI,UAAU,gBAAgB,gBAAgB,WAAW;AACzD,MAAI,OAAO,YAAY,UAAU;AAC7B,cAAU,WAAW;AAAA,EACzB;AAEA,SAAO;AAAA,IACH,GAAG,gBAAgB,OAAO,YAAY,aAAa;AAAA,IAEnD,MAAM,YAAY,QAAoB;AAClC,UAAI,OAAO,OAAO,gBAAgB,WAAW,MAAM,UAAU;AACzD,kBAAU,OAAO,gBAAgB,WAAW;AAAA,MAChD;AAEA,YAAM,MAAM,IAAI,EAAE,CAAC,UAAU,GAAG,OAAO,CAAC;AAExC,UAAI,KAAK,wBAAwB;AAC7B,cAAM,KAAK,uBAAuB,MAAM;AAAA,MAC5C,OAAO;AACH,YAAI,CAAC,KAAK,eAAe;AACrB,eAAK,gBAAgB,CAAC;AAAA,QAC1B;AACA,eAAO,OAAO,KAAK,eAAe,MAAM;AAAA,MAC5C;AAAA,IACJ;AAAA,IAEA,wBAAwB;AAAA,IAExB,IAAI,UAAU;AACV,aAAO;AAAA,IACX;AAAA,IAEA,IAAI,QAAQ,UAAkB;AAC1B,YAAM,IAAI,cAAc,gDAAgD;AAAA,IAC5E;AAAA,EACJ;AACJ;AAEA;AAAA,CAEO,CAAUA,qBAAV;AAMI,EAAMA,iBAAA,cAAc;AAAA,GANd;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,kBAAkB;AAC3B,SAAS,qBAAkC;AAUpC,SAAS,gBACZ,OACA,YACA,eACiC;AACjC,MAAI,UAAU,gBAAgB,gBAAgB,WAAW;AACzD,MAAI,OAAO,YAAY,UAAU;AAC7B,cAAU,WAAW;AAAA,EACzB;AAEA,SAAO;AAAA,IACH;AAAA,IAEA,MAAM,IAAI,aAA0B,QAAoB;AACpD,YAAM,cAAc,MAAM,eAAe,WAAW;AACpD,kBAAY,IAAI,MAAM,QAAQ,YAAY,MAAM;AAAA,IACpD;AAAA,IAEA,MAAM,YAAY,QAAoB;AAClC,UAAI,OAAO,OAAO,gBAAgB,WAAW,MAAM,UAAU;AACzD,kBAAU,OAAO,gBAAgB,WAAW;AAAA,MAChD;AAEA,YAAM,MAAM,IAAI,EAAE,CAAC,UAAU,GAAG,OAAO,CAAC;AAExC,UAAI,KAAK,wBAAwB;AAC7B,cAAM,KAAK,uBAAuB,MAAM;AAAA,MAC5C,OAAO;AACH,YAAI,CAAC,KAAK,eAAe;AACrB,eAAK,gBAAgB,CAAC;AAAA,QAC1B;AACA,eAAO,OAAO,KAAK,eAAe,MAAM;AAAA,MAC5C;AAAA,IACJ;AAAA,IAEA,wBAAwB;AAAA,IAExB,IAAI,UAAU;AACV,aAAO;AAAA,IACX;AAAA,IAEA,IAAI,QAAQ,UAAkB;AAC1B,YAAM,IAAI,cAAc,gDAAgD;AAAA,IAC5E;AAAA,EACJ;AACJ;AAAA,CAEO,CAAUA,qBAAV;AAMI,EAAMA,iBAAA,cAAc;AAAA,GANd;",
5
5
  "names": ["DatasourceCache"]
6
6
  }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Transaction } from "#general";
7
+ import { Val } from "#protocol";
8
+ import { EndpointNumber } from "#types";
9
+ import type { ClientNodeStore } from "./ClientNodeStore.js";
10
+ /**
11
+ * A transaction participant that persists changes to a remote node.
12
+ *
13
+ * There is one of these for node/transaction pair. All attributes in a transaction commit with a single interaction.
14
+ */
15
+ export declare class RemoteWriteParticipant implements Transaction.Participant {
16
+ #private;
17
+ /**
18
+ * There is one participant for each transaction/client node pair. We therefore use the store as the role.
19
+ */
20
+ get role(): ClientNodeStore;
21
+ /**
22
+ * Add an attribute update to the write request.
23
+ */
24
+ set(endpointNumber: EndpointNumber, behaviorId: string, values: Val.Struct): void;
25
+ commit2(): Promise<void>;
26
+ rollback(): void;
27
+ toString(): string;
28
+ constructor(store: ClientNodeStore);
29
+ }
30
+ //# sourceMappingURL=RemoteWriteParticipant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteWriteParticipant.d.ts","sourceRoot":"","sources":["../../../../src/storage/client/RemoteWriteParticipant.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,WAAW,CAAC,WAAW;;IAIlE;;OAEG;IACH,IAAI,IAAI,oBAEP;IAED;;OAEG;IACH,GAAG,CAAC,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM;IAQpE,OAAO;IAWb,QAAQ;IAIR,QAAQ;gBAII,KAAK,EAAE,eAAe;CAGrC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ class RemoteWriteParticipant {
7
+ #request = [];
8
+ #store;
9
+ /**
10
+ * There is one participant for each transaction/client node pair. We therefore use the store as the role.
11
+ */
12
+ get role() {
13
+ return this.#store;
14
+ }
15
+ /**
16
+ * Add an attribute update to the write request.
17
+ */
18
+ set(endpointNumber, behaviorId, values) {
19
+ this.#request.push({
20
+ number: endpointNumber,
21
+ behaviorId,
22
+ values
23
+ });
24
+ }
25
+ async commit2() {
26
+ if (!this.#request.length) {
27
+ return;
28
+ }
29
+ const request = this.#request;
30
+ this.#request = [];
31
+ await this.#store.write(request);
32
+ }
33
+ rollback() {
34
+ this.#request = [];
35
+ }
36
+ toString() {
37
+ return `writer#${this.#store.id}`;
38
+ }
39
+ constructor(store) {
40
+ this.#store = store;
41
+ }
42
+ }
43
+ export {
44
+ RemoteWriteParticipant
45
+ };
46
+ //# sourceMappingURL=RemoteWriteParticipant.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/storage/client/RemoteWriteParticipant.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAiBO,MAAM,uBAA0D;AAAA,EACnE,WAAiC,CAAC;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,OAAO;AACP,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,gBAAgC,YAAoB,QAAoB;AACxE,SAAK,SAAS,KAAK;AAAA,MACf,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,UAAU;AACZ,QAAI,CAAC,KAAK,SAAS,QAAQ;AACvB;AAAA,IACJ;AAEA,UAAM,UAAU,KAAK;AACrB,SAAK,WAAW,CAAC;AAEjB,UAAM,KAAK,OAAO,MAAM,OAAO;AAAA,EACnC;AAAA,EAEA,WAAW;AACP,SAAK,WAAW,CAAC;AAAA,EACrB;AAAA,EAEA,WAAW;AACP,WAAO,UAAU,KAAK,OAAO,EAAE;AAAA,EACnC;AAAA,EAEA,YAAY,OAAwB;AAChC,SAAK,SAAS;AAAA,EAClB;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ClientStructure } from "#node/client/ClientStructure.js";
7
+ import type { ClientNode } from "#node/ClientNode.js";
8
+ import { type Val } from "#protocol";
9
+ import type { EndpointNumber } from "#types";
10
+ /**
11
+ * Persistence handler for {@link ClientNodeStore}.
12
+ *
13
+ * A remote writer conveys updates to the remote node. This performs actual persistence for client nodes where the
14
+ * local store is just a cache and the source of truth is on the remote device.
15
+ */
16
+ export interface RemoteWriter {
17
+ (request: RemoteWriter.Request): Promise<void>;
18
+ }
19
+ export declare function RemoteWriter(node: ClientNode, structure: ClientStructure): RemoteWriter;
20
+ export declare namespace RemoteWriter {
21
+ interface EndpointUpdateRequest {
22
+ number: EndpointNumber;
23
+ behaviorId: string;
24
+ values: Val.Struct;
25
+ }
26
+ interface Request extends Array<EndpointUpdateRequest> {
27
+ }
28
+ }
29
+ //# sourceMappingURL=RemoteWriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteWriter.d.ts","sourceRoot":"","sources":["../../../../src/storage/client/RemoteWriter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAsB,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,KAAK,EAA0B,cAAc,EAAE,MAAM,QAAQ,CAAC;AAGrE;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IACzB,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAID,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,GAAG,YAAY,CAmCvF;AAED,yBAAiB,YAAY,CAAC;IAC1B,UAAiB,qBAAqB;QAClC,MAAM,EAAE,cAAc,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;KACtB;IAED,UAAiB,OAAQ,SAAQ,KAAK,CAAC,qBAAqB,CAAC;KAAG;CACnE"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { InternalError } from "#general";
7
+ import { Write, WriteResult } from "#protocol";
8
+ const attrCache = /* @__PURE__ */ new WeakMap();
9
+ function RemoteWriter(node, structure) {
10
+ return async function writeRemote(request) {
11
+ const attrWrites = Array();
12
+ for (const { number, behaviorId, values } of request) {
13
+ const cluster = structure.clusterFor(number, Number.parseInt(behaviorId));
14
+ if (cluster === void 0) {
15
+ throw new InternalError(`Cannot remote write to non-cluster behavior ${behaviorId}`);
16
+ }
17
+ const attrs = attrsFor(cluster);
18
+ for (const id in values) {
19
+ const attr = attrs[id];
20
+ if (attr === void 0) {
21
+ if (id.startsWith("__")) {
22
+ continue;
23
+ }
24
+ throw new InternalError(`Cannot write unknown attribute ${id} for ${behaviorId}`);
25
+ }
26
+ attrWrites.push(
27
+ Write.Attribute({
28
+ endpoint: number,
29
+ cluster,
30
+ attributes: [attrs[id]],
31
+ value: values[id]
32
+ })
33
+ );
34
+ }
35
+ }
36
+ const write = Write(...attrWrites);
37
+ const response = await node.interaction.write(write);
38
+ WriteResult.assertSuccess(response);
39
+ };
40
+ }
41
+ function attrsFor(cluster) {
42
+ let attrs = attrCache.get(cluster);
43
+ if (attrs) {
44
+ return attrs;
45
+ }
46
+ attrs = Object.fromEntries(Object.values(cluster.attributes).map((attr) => [attr.id, attr]));
47
+ attrCache.set(cluster, attrs);
48
+ return attrs;
49
+ }
50
+ export {
51
+ RemoteWriter
52
+ };
53
+ //# sourceMappingURL=RemoteWriter.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/storage/client/RemoteWriter.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,qBAAqB;AAG9B,SAAS,OAAO,mBAA6B;AAc7C,MAAM,YAAY,oBAAI,QAA4D;AAE3E,SAAS,aAAa,MAAkB,WAA0C;AACrF,SAAO,eAAe,YAAY,SAA+B;AAC7D,UAAM,aAAa,MAAuB;AAC1C,eAAW,EAAE,QAAQ,YAAY,OAAO,KAAK,SAAS;AAClD,YAAM,UAAU,UAAU,WAAW,QAAQ,OAAO,SAAS,UAAU,CAAc;AACrF,UAAI,YAAY,QAAW;AACvB,cAAM,IAAI,cAAc,+CAA+C,UAAU,EAAE;AAAA,MACvF;AACA,YAAM,QAAQ,SAAS,OAAO;AAE9B,iBAAW,MAAM,QAAQ;AACrB,cAAM,OAAO,MAAM,EAAE;AACrB,YAAI,SAAS,QAAW;AACpB,cAAI,GAAG,WAAW,IAAI,GAAG;AACrB;AAAA,UACJ;AAEA,gBAAM,IAAI,cAAc,kCAAkC,EAAE,QAAQ,UAAU,EAAE;AAAA,QACpF;AAEA,mBAAW;AAAA,UACP,MAAM,UAAU;AAAA,YACZ,UAAU;AAAA,YACV;AAAA,YACA,YAAY,CAAC,MAAM,EAAE,CAAC;AAAA,YACtB,OAAO,OAAO,EAAE;AAAA,UACpB,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,QAAQ,MAAM,GAAG,UAAU;AACjC,UAAM,WAAW,MAAM,KAAK,YAAY,MAAM,KAAK;AACnD,gBAAY,cAAc,QAAQ;AAAA,EACtC;AACJ;AAYA,SAAS,SAAS,SAAsB;AACpC,MAAI,QAAQ,UAAU,IAAI,OAAO;AACjC,MAAI,OAAO;AACP,WAAO;AAAA,EACX;AACA,UAAQ,OAAO,YAAY,OAAO,OAAO,QAAQ,UAAU,EAAE,IAAI,UAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;AACzF,YAAU,IAAI,SAAS,KAAK;AAC5B,SAAO;AACX;",
5
+ "names": []
6
+ }
@@ -12,7 +12,4 @@ import type { EndpointStore } from "#storage/EndpointStore.js";
12
12
  * Performs read & write for non-volatile values for a single behavior via the {@link ServerEndpointStore} interface.
13
13
  */
14
14
  export declare function DatasourceStore(endpointStore: EndpointStore, behaviorId: string, initialValues: Val.Struct | undefined): Datasource.Store;
15
- export declare namespace DatasourceStore {
16
- type Type = typeof DatasourceStore;
17
- }
18
15
  //# sourceMappingURL=DatasourceStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatasourceStore.d.ts","sourceRoot":"","sources":["../../../../src/storage/server/DatasourceStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAEnE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAO/D;;;;GAIG;AACH,wBAAgB,eAAe,CAC3B,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,GAAG,CAAC,MAAM,GAAG,SAAS,GACtC,UAAU,CAAC,KAAK,CAsBlB;AA0CD,yBAAiB,eAAe,CAAC;IAC7B,KAAY,IAAI,GAAG,OAAO,eAAe,CAAC;CAC7C"}
1
+ {"version":3,"file":"DatasourceStore.d.ts","sourceRoot":"","sources":["../../../../src/storage/server/DatasourceStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAEnE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAO/D;;;;GAIG;AACH,wBAAgB,eAAe,CAC3B,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,GAAG,CAAC,MAAM,GAAG,SAAS,GACtC,UAAU,CAAC,KAAK,CAsBlB"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/storage/server/DatasourceStore.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAqBO,SAAS,gBACZ,eACA,YACA,eACgB;AAChB,SAAO;AAAA,IACH;AAAA,IAEA,MAAM,IAAI,aAA0B,QAAoB;AACpD,UAAI,eAAe,aAAa;AAC5B;AAAA,MACJ;AACA,YAAM,cAAc,eAAe,aAAa,aAAa;AAC7D,UAAI,CAAC,YAAY,WAAW;AACxB,oBAAY,YAAY,CAAC;AAAA,MAC7B;AACA,YAAM,oBAAoB,YAAY,UAAU,UAAU;AAC1D,UAAI,mBAAmB;AACnB,mBAAW,OAAO,QAAQ;AACtB,4BAAkB,GAAG,IAAI,OAAO,GAAG;AAAA,QACvC;AAAA,MACJ,OAAO;AACH,oBAAY,UAAU,UAAU,IAAI,EAAE,GAAG,OAAO;AAAA,MACpD;AAAA,IACJ;AAAA,EACJ;AACJ;AAMA,SAAS,eAAe,aAA0B,eAA8B;AAC5E,MAAI,cAAc,YAAY,eAAe,aAAa;AAC1D,MAAI,aAAa;AACb,WAAO;AAAA,EACX;AAEA,gBAAc;AAAA,IACV,MAAM;AAAA,IAEN,WAAW;AAAA,IAEX,WAAW;AACP,aAAO,cAAc,SAAS;AAAA,IAClC;AAAA,IAEA,UAAwB;AAAA,IAGxB;AAAA,IAEA,MAAM,UAAU;AACZ,UAAI,KAAK,WAAW;AAChB,cAAM,cAAc,IAAI,KAAK,SAAS;AAAA,MAC1C;AAAA,IACJ;AAAA,IAEA,WAAyB;AACrB,aAAO,KAAK;AAAA,IAChB;AAAA,EACJ;AAEA,cAAY,gBAAgB,WAAW;AAEvC,SAAO;AACX;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAqBO,SAAS,gBACZ,eACA,YACA,eACgB;AAChB,SAAO;AAAA,IACH;AAAA,IAEA,MAAM,IAAI,aAA0B,QAAoB;AACpD,UAAI,eAAe,aAAa;AAC5B;AAAA,MACJ;AACA,YAAM,cAAc,eAAe,aAAa,aAAa;AAC7D,UAAI,CAAC,YAAY,WAAW;AACxB,oBAAY,YAAY,CAAC;AAAA,MAC7B;AACA,YAAM,oBAAoB,YAAY,UAAU,UAAU;AAC1D,UAAI,mBAAmB;AACnB,mBAAW,OAAO,QAAQ;AACtB,4BAAkB,GAAG,IAAI,OAAO,GAAG;AAAA,QACvC;AAAA,MACJ,OAAO;AACH,oBAAY,UAAU,UAAU,IAAI,EAAE,GAAG,OAAO;AAAA,MACpD;AAAA,IACJ;AAAA,EACJ;AACJ;AAMA,SAAS,eAAe,aAA0B,eAA8B;AAC5E,MAAI,cAAc,YAAY,eAAe,aAAa;AAC1D,MAAI,aAAa;AACb,WAAO;AAAA,EACX;AAEA,gBAAc;AAAA,IACV,MAAM;AAAA,IAEN,WAAW;AAAA,IAEX,WAAW;AACP,aAAO,cAAc,SAAS;AAAA,IAClC;AAAA,IAEA,UAAwB;AAAA,IAExB;AAAA,IAEA,MAAM,UAAU;AACZ,UAAI,KAAK,WAAW;AAChB,cAAM,cAAc,IAAI,KAAK,SAAS;AAAA,MAC1C;AAAA,IACJ;AAAA,IAEA,WAAyB;AACrB,aAAO,KAAK;AAAA,IAChB;AAAA,EACJ;AAEA,cAAY,gBAAgB,WAAW;AAEvC,SAAO;AACX;",
5
5
  "names": []
6
6
  }
@@ -16,6 +16,10 @@ export declare class ServerEndpointStore extends EndpointStore {
16
16
  get number(): number | undefined;
17
17
  set number(number: number | undefined);
18
18
  constructor(storage: StorageContext);
19
+ /**
20
+ * Create a {@link Datasource.Store} for a behavior.
21
+ */
22
+ createStoreForBehavior(behaviorId: string): import("../../behavior/state/managed/Datasource.js").Datasource.Store;
19
23
  /**
20
24
  * Invoke a function on this store and the stores of descendant parts.
21
25
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ServerEndpointStore.d.ts","sourceRoot":"","sources":["../../../../src/storage/server/ServerEndpointStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAuB,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAI1D;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;;IAMlD,IAAI,MAAM,IAIS,MAAM,GAAG,SAAS,CAFpC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAIpC;gBAEW,OAAO,EAAE,cAAc;IAMnC;;OAEG;IACH,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI;IAO9C,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,mBAAmB;IAOtD,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM;IASjC,UAAU;IAID,IAAI;IAWnB;;OAEG;IACG,kBAAkB,CAAC,QAAQ,EAAE,QAAQ;CAmB9C"}
1
+ {"version":3,"file":"ServerEndpointStore.d.ts","sourceRoot":"","sources":["../../../../src/storage/server/ServerEndpointStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAuB,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAK1D;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;;IAMlD,IAAI,MAAM,IAIS,MAAM,GAAG,SAAS,CAFpC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAIpC;gBAEW,OAAO,EAAE,cAAc;IAMnC;;OAEG;IACH,sBAAsB,CAAC,UAAU,EAAE,MAAM;IAKzC;;OAEG;IACH,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI;IAO9C,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,mBAAmB;IAOtD,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM;IASjC,UAAU;IAID,IAAI;IAWnB;;OAEG;IACG,kBAAkB,CAAC,QAAQ,EAAE,QAAQ;CAmB9C"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { ImplementationError } from "#general";
7
7
  import { EndpointStore } from "#storage/EndpointStore.js";
8
+ import { DatasourceStore } from "./DatasourceStore.js";
8
9
  const NUMBER_KEY = "__number__";
9
10
  class ServerEndpointStore extends EndpointStore {
10
11
  #number;
@@ -22,6 +23,13 @@ class ServerEndpointStore extends EndpointStore {
22
23
  super(storage);
23
24
  this.#childStorage = storage.createContext("parts");
24
25
  }
26
+ /**
27
+ * Create a {@link Datasource.Store} for a behavior.
28
+ */
29
+ createStoreForBehavior(behaviorId) {
30
+ const initialValues = this.consumeInitialValues(behaviorId);
31
+ return DatasourceStore(this, behaviorId, initialValues);
32
+ }
25
33
  /**
26
34
  * Invoke a function on this store and the stores of descendant parts.
27
35
  */
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/storage/server/ServerEndpointStore.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,2BAA2C;AACpD,SAAS,qBAAqB;AAE9B,MAAM,aAAa;AAOZ,MAAM,4BAA4B,cAAc;AAAA,EACnD;AAAA,EAEA;AAAA,EACA,eAAe,CAAC;AAAA,EAEhB,IAAI,SAAS;AACT,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,OAAO,QAA4B;AACnC,QAAI,KAAK,YAAY,QAAQ;AACzB,WAAK,UAAU;AAAA,IACnB;AAAA,EACJ;AAAA,EAEA,YAAY,SAAyB;AACjC,UAAM,OAAO;AAEb,SAAK,gBAAgB,QAAQ,cAAc,OAAO;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,IAA0C;AAC5C,OAAG,IAAI;AACP,eAAW,SAAS,OAAO,OAAO,KAAK,YAAY,GAAG;AAClD,YAAM,MAAM,EAAE;AAAA,IAClB;AAAA,EACJ;AAAA,EAEA,cAAc,UAAyC;AACnD,QAAI,CAAC,SAAS,UAAU,OAAO;AAC3B,YAAM,IAAI,oBAAoB,oEAAoE;AAAA,IACtG;AACA,WAAO,KAAK,eAAe,SAAS,EAAE;AAAA,EAC1C;AAAA,EAEU,eAAe,QAAgB;AACrC,QAAI,QAAQ,KAAK,aAAa,MAAM;AACpC,QAAI,UAAU,QAAW;AACrB,cAAQ,KAAK,aAAa,MAAM,IAAI,IAAI,oBAAoB,KAAK,cAAc,cAAc,MAAM,CAAC;AAAA,IACxG;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,aAAa;AACf,UAAM,KAAK,QAAQ,IAAI,YAAY,KAAK,MAAM;AAAA,EAClD;AAAA,EAEA,MAAe,OAAO;AAClB,UAAM,MAAM,KAAK;AAEjB,UAAM,SAAS,MAAM,KAAK,QAAQ,IAAI,YAAY,EAAE;AACpD,QAAI,WAAW,IAAI;AACf,WAAK,UAAU;AAAA,IACnB;AAEA,UAAM,KAAK,cAAc;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,UAAoB;AACzC,UAAM,SAAS,SAAS;AACxB,UAAM,QAAQ,KAAK,aAAa,MAAM;AACtC,UAAM,MAAM,MAAM;AAClB,WAAO,KAAK,aAAa,MAAM;AAAA,EACnC;AAAA,EAEA,MAAM,gBAAgB;AAClB,UAAM,aAAa,MAAM,KAAK,cAAc,SAAS;AACrD,eAAW,UAAU,YAAY;AAC7B,YAAM,KAAK,sBAAsB,MAAM;AAAA,IAC3C;AAAA,EACJ;AAAA,EAEA,MAAM,sBAAsB,QAAgB;AACxC,UAAM,gBAAgB,IAAI,oBAAoB,KAAK,cAAc,cAAc,MAAM,CAAC;AACtF,SAAK,aAAa,MAAM,IAAI;AAC5B,UAAM,cAAc,KAAK;AAAA,EAC7B;AACJ;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,2BAA2C;AACpD,SAAS,qBAAqB;AAC9B,SAAS,uBAAuB;AAEhC,MAAM,aAAa;AAOZ,MAAM,4BAA4B,cAAc;AAAA,EACnD;AAAA,EAEA;AAAA,EACA,eAAe,CAAC;AAAA,EAEhB,IAAI,SAAS;AACT,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,OAAO,QAA4B;AACnC,QAAI,KAAK,YAAY,QAAQ;AACzB,WAAK,UAAU;AAAA,IACnB;AAAA,EACJ;AAAA,EAEA,YAAY,SAAyB;AACjC,UAAM,OAAO;AAEb,SAAK,gBAAgB,QAAQ,cAAc,OAAO;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA,EAKA,uBAAuB,YAAoB;AACvC,UAAM,gBAAgB,KAAK,qBAAqB,UAAU;AAC1D,WAAO,gBAAgB,MAAM,YAAY,aAAa;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,IAA0C;AAC5C,OAAG,IAAI;AACP,eAAW,SAAS,OAAO,OAAO,KAAK,YAAY,GAAG;AAClD,YAAM,MAAM,EAAE;AAAA,IAClB;AAAA,EACJ;AAAA,EAEA,cAAc,UAAyC;AACnD,QAAI,CAAC,SAAS,UAAU,OAAO;AAC3B,YAAM,IAAI,oBAAoB,oEAAoE;AAAA,IACtG;AACA,WAAO,KAAK,eAAe,SAAS,EAAE;AAAA,EAC1C;AAAA,EAEU,eAAe,QAAgB;AACrC,QAAI,QAAQ,KAAK,aAAa,MAAM;AACpC,QAAI,UAAU,QAAW;AACrB,cAAQ,KAAK,aAAa,MAAM,IAAI,IAAI,oBAAoB,KAAK,cAAc,cAAc,MAAM,CAAC;AAAA,IACxG;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,aAAa;AACf,UAAM,KAAK,QAAQ,IAAI,YAAY,KAAK,MAAM;AAAA,EAClD;AAAA,EAEA,MAAe,OAAO;AAClB,UAAM,MAAM,KAAK;AAEjB,UAAM,SAAS,MAAM,KAAK,QAAQ,IAAI,YAAY,EAAE;AACpD,QAAI,WAAW,IAAI;AACf,WAAK,UAAU;AAAA,IACnB;AAEA,UAAM,KAAK,cAAc;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,UAAoB;AACzC,UAAM,SAAS,SAAS;AACxB,UAAM,QAAQ,KAAK,aAAa,MAAM;AACtC,UAAM,MAAM,MAAM;AAClB,WAAO,KAAK,aAAa,MAAM;AAAA,EACnC;AAAA,EAEA,MAAM,gBAAgB;AAClB,UAAM,aAAa,MAAM,KAAK,cAAc,SAAS;AACrD,eAAW,UAAU,YAAY;AAC7B,YAAM,KAAK,sBAAsB,MAAM;AAAA,IAC3C;AAAA,EACJ;AAAA,EAEA,MAAM,sBAAsB,QAAgB;AACxC,UAAM,gBAAgB,IAAI,oBAAoB,KAAK,cAAc,cAAc,MAAM,CAAC;AACtF,SAAK,aAAa,MAAM,IAAI;AAC5B,UAAM,cAAc,KAAK;AAAA,EAC7B;AACJ;",
5
5
  "names": []
6
6
  }
@@ -9,8 +9,9 @@ import { NodeStore } from "../NodeStore.js";
9
9
  import { ClientNodeStores } from "../client/ClientNodeStores.js";
10
10
  import { ServerEndpointStores } from "./ServerEndpointStores.js";
11
11
  /**
12
- * The "server" node store is a {@link NodeStore} with storage for components shared by the server node and client
13
- * nodes.
12
+ * {@link ServerNode} persistence.
13
+ *
14
+ * Each {@link ServerNode} has an instance of this store.
14
15
  */
15
16
  export declare class ServerNodeStore extends NodeStore implements Destructable {
16
17
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"ServerNodeStore.d.ts","sourceRoot":"","sources":["../../../../src/storage/server/ServerNodeStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAEH,YAAY,EAEZ,WAAW,EAKd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAIjE;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,SAAU,YAAW,YAAY;;gBAQtD,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM;WAqBvC,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM;IAItD,KAAK;IAQX;;OAEG;IACH,IAAI,cAAc,yBAEjB;IAED;;OAEG;IACH,IAAI,YAAY,qBAEf;IAMD,gBAAgB,CAAC,QAAQ,EAAE,QAAQ;IAInC,KAAK;IAIC,IAAI;CAWb"}
1
+ {"version":3,"file":"ServerNodeStore.d.ts","sourceRoot":"","sources":["../../../../src/storage/server/ServerNodeStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAEH,YAAY,EAEZ,WAAW,EAKd,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAIjE;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,SAAU,YAAW,YAAY;;gBAQtD,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM;WAqBvC,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM;IAItD,KAAK;IAQX;;OAEG;IACH,IAAI,cAAc,yBAEjB;IAED;;OAEG;IACH,IAAI,YAAY,qBAEf;IAMD,gBAAgB,CAAC,QAAQ,EAAE,QAAQ;IAInC,KAAK;IAIC,IAAI;CAWb"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/storage/server/ServerNodeStore.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA,EACI;AAAA,EAEA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAS,iBAAiB;AAC1B,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AAErC,MAAM,SAAS,OAAO,IAAI,iBAAiB;AAMpC,MAAM,wBAAwB,UAAkC;AAAA,EACnE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,aAA0B,QAAgB;AAClD,UAAM;AAAA,MACF,eAAe,CAAC,SAAiB;AAC7B,YAAI,CAAC,KAAK,iBAAiB;AACvB,gBAAM,IAAI;AAAA,YACN,iCAAiC,IAAI;AAAA,UACzC;AAAA,QACJ;AACA,eAAO,KAAK,gBAAgB,cAAc,IAAI;AAAA,MAClD;AAAA,IACJ,CAAC;AAED,SAAK,kBAAkB,IAAI,qBAAqB;AAEhD,SAAK,OAAO;AACZ,SAAK,UAAU;AACf,SAAK,YAAY,KAAK,KAAK,IAAI,cAAc,EAAE,YAAY;AAE3D,SAAK,aAAa,MAAM;AAAA,EAC5B;AAAA,EAEA,aAAa,OAAO,aAA0B,QAAgB;AAC1D,WAAO,MAAM,SAAS,MAAM,aAAa,MAAM;AAAA,EACnD;AAAA,EAEA,MAAM,QAAQ;AACV,UAAM,KAAK,aAAa,MAAM,YAAY;AACtC,YAAM,KAAK,eAAe,MAAM;AAChC,YAAM,KAAK,iBAAiB,MAAM;AAClC,WAAK,WAAW,QAAQ;AAAA,IAC5B,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,iBAAiB;AACjB,WAAO,KAAK,aAAa,OAAO,mBAAmB,KAAK,eAAe;AAAA,EAC3E;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,eAAe;AACf,WAAO,KAAK,aAAa,OAAO,iBAAiB,KAAK,aAAa;AAAA,EACvE;AAAA,EAEA,WAAW,MAA2B;AAClC,WAAO,KAAK,MAAM,WAAW,OAAO,KAAK,WAAW,MAAM,GAAG,cAAc,GAAG,KAAK,SAAS,IAAI,KAAK,OAAO,EAAE;AAAA,EAClH;AAAA,EAEA,iBAAiB,UAAoB;AACjC,WAAO,KAAK,gBAAgB,iBAAiB,QAAQ;AAAA,EACzD;AAAA,EAEA,QAAQ;AACJ,WAAO,KAAK,gBAAgB,MAAM;AAAA,EACtC;AAAA,EAEA,MAAM,OAAO;AACT,SAAK,kBAAkB,MAAM,KAAK,KAAK,IAAI,cAAc,EAAE,KAAK,KAAK,OAAO;AAC5E,SAAK,KAAK,IAAI,gBAAgB,KAAK,eAAe;AAElD,SAAK,gBAAgB,MAAM,SAAS,kBAAkB,KAAK,gBAAgB,cAAc,OAAO,CAAC;AAEjG,UAAM,cAAc,KAAK,eAAe,cAAc,MAAM;AAC5D,UAAM,KAAK,gBAAgB,KAAK,WAAW;AAE3C,SAAK,WAAW,QAAQ;AAAA,EAC5B;AACJ;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA,EACI;AAAA,EAEA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAEP,SAAS,iBAAiB;AAC1B,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AAErC,MAAM,SAAS,OAAO,IAAI,iBAAiB;AAOpC,MAAM,wBAAwB,UAAkC;AAAA,EACnE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,aAA0B,QAAgB;AAClD,UAAM;AAAA,MACF,eAAe,CAAC,SAAiB;AAC7B,YAAI,CAAC,KAAK,iBAAiB;AACvB,gBAAM,IAAI;AAAA,YACN,iCAAiC,IAAI;AAAA,UACzC;AAAA,QACJ;AACA,eAAO,KAAK,gBAAgB,cAAc,IAAI;AAAA,MAClD;AAAA,IACJ,CAAC;AAED,SAAK,kBAAkB,IAAI,qBAAqB;AAEhD,SAAK,OAAO;AACZ,SAAK,UAAU;AACf,SAAK,YAAY,KAAK,KAAK,IAAI,cAAc,EAAE,YAAY;AAE3D,SAAK,aAAa,MAAM;AAAA,EAC5B;AAAA,EAEA,aAAa,OAAO,aAA0B,QAAgB;AAC1D,WAAO,MAAM,SAAS,MAAM,aAAa,MAAM;AAAA,EACnD;AAAA,EAEA,MAAM,QAAQ;AACV,UAAM,KAAK,aAAa,MAAM,YAAY;AACtC,YAAM,KAAK,eAAe,MAAM;AAChC,YAAM,KAAK,iBAAiB,MAAM;AAClC,WAAK,WAAW,QAAQ;AAAA,IAC5B,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,iBAAiB;AACjB,WAAO,KAAK,aAAa,OAAO,mBAAmB,KAAK,eAAe;AAAA,EAC3E;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,eAAe;AACf,WAAO,KAAK,aAAa,OAAO,iBAAiB,KAAK,aAAa;AAAA,EACvE;AAAA,EAEA,WAAW,MAA2B;AAClC,WAAO,KAAK,MAAM,WAAW,OAAO,KAAK,WAAW,MAAM,GAAG,cAAc,GAAG,KAAK,SAAS,IAAI,KAAK,OAAO,EAAE;AAAA,EAClH;AAAA,EAEA,iBAAiB,UAAoB;AACjC,WAAO,KAAK,gBAAgB,iBAAiB,QAAQ;AAAA,EACzD;AAAA,EAEA,QAAQ;AACJ,WAAO,KAAK,gBAAgB,MAAM;AAAA,EACtC;AAAA,EAEA,MAAM,OAAO;AACT,SAAK,kBAAkB,MAAM,KAAK,KAAK,IAAI,cAAc,EAAE,KAAK,KAAK,OAAO;AAC5E,SAAK,KAAK,IAAI,gBAAgB,KAAK,eAAe;AAElD,SAAK,gBAAgB,MAAM,SAAS,kBAAkB,KAAK,gBAAgB,cAAc,OAAO,CAAC;AAEjG,UAAM,cAAc,KAAK,eAAe,cAAc,MAAM;AAC5D,UAAM,KAAK,gBAAgB,KAAK,WAAW;AAE3C,SAAK,WAAW,QAAQ;AAAA,EAC5B;AACJ;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/node",
3
- "version": "0.15.2-alpha.0-20250717-3607eeac6",
3
+ "version": "0.15.2-alpha.0-20250718-7e661c331",
4
4
  "description": "API for building Matter nodes",
5
5
  "keywords": [
6
6
  "iot",
@@ -42,14 +42,14 @@
42
42
  "#*": "./src/*"
43
43
  },
44
44
  "dependencies": {
45
- "@matter/general": "0.15.2-alpha.0-20250717-3607eeac6",
46
- "@matter/model": "0.15.2-alpha.0-20250717-3607eeac6",
47
- "@matter/types": "0.15.2-alpha.0-20250717-3607eeac6",
48
- "@matter/protocol": "0.15.2-alpha.0-20250717-3607eeac6"
45
+ "@matter/general": "0.15.2-alpha.0-20250718-7e661c331",
46
+ "@matter/model": "0.15.2-alpha.0-20250718-7e661c331",
47
+ "@matter/types": "0.15.2-alpha.0-20250718-7e661c331",
48
+ "@matter/protocol": "0.15.2-alpha.0-20250718-7e661c331"
49
49
  },
50
50
  "devDependencies": {
51
- "@matter/tools": "0.15.2-alpha.0-20250717-3607eeac6",
52
- "@matter/testing": "0.15.2-alpha.0-20250717-3607eeac6"
51
+ "@matter/tools": "0.15.2-alpha.0-20250718-7e661c331",
52
+ "@matter/testing": "0.15.2-alpha.0-20250718-7e661c331"
53
53
  },
54
54
  "files": [
55
55
  "dist/**/*",
@@ -46,9 +46,10 @@ export abstract class BehaviorBacking {
46
46
  return this.#construction;
47
47
  }
48
48
 
49
- constructor(endpoint: Endpoint, type: Behavior.Type, options?: Behavior.Options) {
49
+ constructor(endpoint: Endpoint, type: Behavior.Type, store: Datasource.Store, options?: Behavior.Options) {
50
50
  this.#endpoint = endpoint;
51
51
  this.#type = type;
52
+ this.store = store;
52
53
  this.#options = options;
53
54
 
54
55
  this.#construction = Construction(this);
@@ -201,7 +202,7 @@ export abstract class BehaviorBacking {
201
202
  /**
202
203
  * The data provider for {@link datasource}.
203
204
  */
204
- protected abstract readonly store?: Datasource.Store;
205
+ protected readonly store: Datasource.Store;
205
206
 
206
207
  /**
207
208
  * Obtain internal state for a behavior instance.
@@ -4,10 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { Behavior } from "#behavior/Behavior.js";
8
7
  import { GlobalAttributeState } from "#behavior/cluster/ClusterState.js";
9
- import { Datasource } from "#behavior/state/managed/Datasource.js";
10
- import { Endpoint } from "#endpoint/Endpoint.js";
11
8
  import { SupportedElements } from "#endpoint/properties/Behaviors.js";
12
9
  import { camelize } from "#general";
13
10
  import { ClusterModel } from "#model";
@@ -18,20 +15,8 @@ import { BehaviorBacking } from "./BehaviorBacking.js";
18
15
  * This class backs the client implementation of a behavior.
19
16
  */
20
17
  export class ClientBehaviorBacking extends BehaviorBacking {
21
- protected override store: Datasource.ExternallyMutableStore;
22
18
  #elements?: SupportedElements;
23
19
 
24
- constructor(
25
- endpoint: Endpoint,
26
- behavior: Behavior.Type,
27
- store: Datasource.ExternallyMutableStore,
28
- options?: Behavior.Options,
29
- ) {
30
- super(endpoint, behavior, options);
31
-
32
- this.store = store;
33
- }
34
-
35
20
  get elements(): SupportedElements | undefined {
36
21
  if (this.#elements) {
37
22
  return this.#elements;