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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1 -0
  3. package/dist/cjs/behavior/index.d.ts +7 -0
  4. package/dist/cjs/behavior/index.d.ts.map +1 -0
  5. package/dist/cjs/behavior/index.js +8 -0
  6. package/dist/cjs/behavior/index.js.map +6 -0
  7. package/dist/cjs/behavior/instrumentation.d.ts +11 -0
  8. package/dist/cjs/behavior/instrumentation.d.ts.map +1 -0
  9. package/dist/cjs/behavior/instrumentation.js +47 -0
  10. package/dist/cjs/behavior/instrumentation.js.map +6 -0
  11. package/dist/cjs/behavior/register.d.ts +7 -0
  12. package/dist/cjs/behavior/register.d.ts.map +1 -0
  13. package/dist/cjs/behavior/register.js +9 -0
  14. package/dist/cjs/behavior/register.js.map +6 -0
  15. package/dist/cjs/crypto/NodeJsCrypto.d.ts +29 -0
  16. package/dist/cjs/crypto/NodeJsCrypto.d.ts.map +1 -0
  17. package/dist/cjs/crypto/NodeJsCrypto.js +154 -0
  18. package/dist/cjs/crypto/NodeJsCrypto.js.map +6 -0
  19. package/dist/cjs/crypto/index.d.ts +8 -0
  20. package/dist/cjs/crypto/index.d.ts.map +1 -0
  21. package/dist/cjs/crypto/index.js +25 -0
  22. package/dist/cjs/crypto/index.js.map +6 -0
  23. package/dist/cjs/crypto/register.d.ts +7 -0
  24. package/dist/cjs/crypto/register.d.ts.map +1 -0
  25. package/dist/cjs/crypto/register.js +21 -0
  26. package/dist/cjs/crypto/register.js.map +6 -0
  27. package/dist/cjs/environment/NodeJsActionTracer.d.ts +15 -0
  28. package/dist/cjs/environment/NodeJsActionTracer.d.ts.map +1 -0
  29. package/dist/cjs/environment/NodeJsActionTracer.js +80 -0
  30. package/dist/cjs/environment/NodeJsActionTracer.js.map +6 -0
  31. package/dist/cjs/environment/NodeJsEnvironment.d.ts +55 -0
  32. package/dist/cjs/environment/NodeJsEnvironment.d.ts.map +1 -0
  33. package/dist/cjs/environment/NodeJsEnvironment.js +121 -0
  34. package/dist/cjs/environment/NodeJsEnvironment.js.map +6 -0
  35. package/dist/cjs/environment/ProcessManager.d.ts +45 -0
  36. package/dist/cjs/environment/ProcessManager.d.ts.map +1 -0
  37. package/dist/cjs/environment/ProcessManager.js +112 -0
  38. package/dist/cjs/environment/ProcessManager.js.map +6 -0
  39. package/dist/cjs/environment/index.d.ts +10 -0
  40. package/dist/cjs/environment/index.d.ts.map +1 -0
  41. package/dist/cjs/environment/index.js +27 -0
  42. package/dist/cjs/environment/index.js.map +6 -0
  43. package/dist/cjs/environment/register.d.ts +7 -0
  44. package/dist/cjs/environment/register.d.ts.map +1 -0
  45. package/dist/cjs/environment/register.js +10 -0
  46. package/dist/cjs/environment/register.js.map +6 -0
  47. package/dist/cjs/index.d.ts +12 -0
  48. package/dist/cjs/index.d.ts.map +1 -0
  49. package/dist/cjs/index.js +29 -0
  50. package/dist/cjs/index.js.map +6 -0
  51. package/dist/cjs/log/FileLogger.d.ts +13 -0
  52. package/dist/cjs/log/FileLogger.d.ts.map +1 -0
  53. package/dist/cjs/log/FileLogger.js +46 -0
  54. package/dist/cjs/log/FileLogger.js.map +6 -0
  55. package/dist/cjs/log/index.d.ts +7 -0
  56. package/dist/cjs/log/index.d.ts.map +1 -0
  57. package/dist/cjs/log/index.js +24 -0
  58. package/dist/cjs/log/index.js.map +6 -0
  59. package/dist/cjs/net/NodeJsNetwork.d.ts +27 -0
  60. package/dist/cjs/net/NodeJsNetwork.d.ts.map +1 -0
  61. package/dist/cjs/net/NodeJsNetwork.js +145 -0
  62. package/dist/cjs/net/NodeJsNetwork.js.map +6 -0
  63. package/dist/cjs/net/NodeJsUdpChannel.d.ts +23 -0
  64. package/dist/cjs/net/NodeJsUdpChannel.d.ts.map +1 -0
  65. package/dist/cjs/net/NodeJsUdpChannel.js +181 -0
  66. package/dist/cjs/net/NodeJsUdpChannel.js.map +6 -0
  67. package/dist/cjs/net/index.d.ts +9 -0
  68. package/dist/cjs/net/index.d.ts.map +1 -0
  69. package/dist/cjs/net/index.js +26 -0
  70. package/dist/cjs/net/index.js.map +6 -0
  71. package/dist/cjs/net/register.d.ts +7 -0
  72. package/dist/cjs/net/register.d.ts.map +1 -0
  73. package/dist/cjs/net/register.js +16 -0
  74. package/dist/cjs/net/register.js.map +6 -0
  75. package/dist/cjs/package.json +11 -0
  76. package/dist/cjs/storage/StorageBackendDisk.d.ts +27 -0
  77. package/dist/cjs/storage/StorageBackendDisk.d.ts.map +1 -0
  78. package/dist/cjs/storage/StorageBackendDisk.js +128 -0
  79. package/dist/cjs/storage/StorageBackendDisk.js.map +6 -0
  80. package/dist/cjs/storage/StorageBackendJsonFile.d.ts +27 -0
  81. package/dist/cjs/storage/StorageBackendJsonFile.d.ts.map +1 -0
  82. package/dist/cjs/storage/StorageBackendJsonFile.js +110 -0
  83. package/dist/cjs/storage/StorageBackendJsonFile.js.map +6 -0
  84. package/dist/cjs/storage/index.d.ts +8 -0
  85. package/dist/cjs/storage/index.d.ts.map +1 -0
  86. package/dist/cjs/storage/index.js +25 -0
  87. package/dist/cjs/storage/index.js.map +6 -0
  88. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  89. package/dist/esm/behavior/index.d.ts +7 -0
  90. package/dist/esm/behavior/index.d.ts.map +1 -0
  91. package/dist/esm/behavior/index.js +7 -0
  92. package/dist/esm/behavior/index.js.map +6 -0
  93. package/dist/esm/behavior/instrumentation.d.ts +11 -0
  94. package/dist/esm/behavior/instrumentation.d.ts.map +1 -0
  95. package/dist/esm/behavior/instrumentation.js +27 -0
  96. package/dist/esm/behavior/instrumentation.js.map +6 -0
  97. package/dist/esm/behavior/register.d.ts +7 -0
  98. package/dist/esm/behavior/register.d.ts.map +1 -0
  99. package/dist/esm/behavior/register.js +8 -0
  100. package/dist/esm/behavior/register.js.map +6 -0
  101. package/dist/esm/crypto/NodeJsCrypto.d.ts +29 -0
  102. package/dist/esm/crypto/NodeJsCrypto.d.ts.map +1 -0
  103. package/dist/esm/crypto/NodeJsCrypto.js +135 -0
  104. package/dist/esm/crypto/NodeJsCrypto.js.map +6 -0
  105. package/dist/esm/crypto/index.d.ts +8 -0
  106. package/dist/esm/crypto/index.d.ts.map +1 -0
  107. package/dist/esm/crypto/index.js +8 -0
  108. package/dist/esm/crypto/index.js.map +6 -0
  109. package/dist/esm/crypto/register.d.ts +7 -0
  110. package/dist/esm/crypto/register.d.ts.map +1 -0
  111. package/dist/esm/crypto/register.js +20 -0
  112. package/dist/esm/crypto/register.js.map +6 -0
  113. package/dist/esm/environment/NodeJsActionTracer.d.ts +15 -0
  114. package/dist/esm/environment/NodeJsActionTracer.d.ts.map +1 -0
  115. package/dist/esm/environment/NodeJsActionTracer.js +60 -0
  116. package/dist/esm/environment/NodeJsActionTracer.js.map +6 -0
  117. package/dist/esm/environment/NodeJsEnvironment.d.ts +55 -0
  118. package/dist/esm/environment/NodeJsEnvironment.d.ts.map +1 -0
  119. package/dist/esm/environment/NodeJsEnvironment.js +108 -0
  120. package/dist/esm/environment/NodeJsEnvironment.js.map +6 -0
  121. package/dist/esm/environment/ProcessManager.d.ts +45 -0
  122. package/dist/esm/environment/ProcessManager.d.ts.map +1 -0
  123. package/dist/esm/environment/ProcessManager.js +92 -0
  124. package/dist/esm/environment/ProcessManager.js.map +6 -0
  125. package/dist/esm/environment/index.d.ts +10 -0
  126. package/dist/esm/environment/index.d.ts.map +1 -0
  127. package/dist/esm/environment/index.js +10 -0
  128. package/dist/esm/environment/index.js.map +6 -0
  129. package/dist/esm/environment/register.d.ts +7 -0
  130. package/dist/esm/environment/register.d.ts.map +1 -0
  131. package/dist/esm/environment/register.js +9 -0
  132. package/dist/esm/environment/register.js.map +6 -0
  133. package/dist/esm/index.d.ts +12 -0
  134. package/dist/esm/index.d.ts.map +1 -0
  135. package/dist/esm/index.js +12 -0
  136. package/dist/esm/index.js.map +6 -0
  137. package/dist/esm/log/FileLogger.d.ts +13 -0
  138. package/dist/esm/log/FileLogger.d.ts.map +1 -0
  139. package/dist/esm/log/FileLogger.js +26 -0
  140. package/dist/esm/log/FileLogger.js.map +6 -0
  141. package/dist/esm/log/index.d.ts +7 -0
  142. package/dist/esm/log/index.d.ts.map +1 -0
  143. package/dist/esm/log/index.js +7 -0
  144. package/dist/esm/log/index.js.map +6 -0
  145. package/dist/esm/net/NodeJsNetwork.d.ts +27 -0
  146. package/dist/esm/net/NodeJsNetwork.d.ts.map +1 -0
  147. package/dist/esm/net/NodeJsNetwork.js +133 -0
  148. package/dist/esm/net/NodeJsNetwork.js.map +6 -0
  149. package/dist/esm/net/NodeJsUdpChannel.d.ts +23 -0
  150. package/dist/esm/net/NodeJsUdpChannel.d.ts.map +1 -0
  151. package/dist/esm/net/NodeJsUdpChannel.js +159 -0
  152. package/dist/esm/net/NodeJsUdpChannel.js.map +6 -0
  153. package/dist/esm/net/index.d.ts +9 -0
  154. package/dist/esm/net/index.d.ts.map +1 -0
  155. package/dist/esm/net/index.js +9 -0
  156. package/dist/esm/net/index.js.map +6 -0
  157. package/dist/esm/net/register.d.ts +7 -0
  158. package/dist/esm/net/register.d.ts.map +1 -0
  159. package/dist/esm/net/register.js +15 -0
  160. package/dist/esm/net/register.js.map +6 -0
  161. package/dist/esm/package.json +11 -0
  162. package/dist/esm/storage/StorageBackendDisk.d.ts +27 -0
  163. package/dist/esm/storage/StorageBackendDisk.d.ts.map +1 -0
  164. package/dist/esm/storage/StorageBackendDisk.js +108 -0
  165. package/dist/esm/storage/StorageBackendDisk.js.map +6 -0
  166. package/dist/esm/storage/StorageBackendJsonFile.d.ts +27 -0
  167. package/dist/esm/storage/StorageBackendJsonFile.d.ts.map +1 -0
  168. package/dist/esm/storage/StorageBackendJsonFile.js +90 -0
  169. package/dist/esm/storage/StorageBackendJsonFile.js.map +6 -0
  170. package/dist/esm/storage/index.d.ts +8 -0
  171. package/dist/esm/storage/index.d.ts.map +1 -0
  172. package/dist/esm/storage/index.js +8 -0
  173. package/dist/esm/storage/index.js.map +6 -0
  174. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  175. package/package.json +114 -0
  176. package/src/behavior/index.ts +7 -0
  177. package/src/behavior/instrumentation.ts +32 -0
  178. package/src/behavior/register.ts +9 -0
  179. package/src/crypto/NodeJsCrypto.ts +164 -0
  180. package/src/crypto/index.ts +8 -0
  181. package/src/crypto/register.ts +25 -0
  182. package/src/environment/NodeJsActionTracer.ts +70 -0
  183. package/src/environment/NodeJsEnvironment.ts +172 -0
  184. package/src/environment/ProcessManager.ts +128 -0
  185. package/src/environment/index.ts +10 -0
  186. package/src/environment/register.ts +10 -0
  187. package/src/index.ts +12 -0
  188. package/src/log/FileLogger.ts +30 -0
  189. package/src/log/index.ts +7 -0
  190. package/src/net/NodeJsNetwork.ts +157 -0
  191. package/src/net/NodeJsUdpChannel.ts +179 -0
  192. package/src/net/index.ts +9 -0
  193. package/src/net/register.ts +20 -0
  194. package/src/storage/StorageBackendDisk.ts +132 -0
  195. package/src/storage/StorageBackendJsonFile.ts +102 -0
  196. package/src/storage/index.ts +8 -0
  197. package/src/tsconfig.json +28 -0
@@ -0,0 +1,159 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import {
7
+ ChannelType,
8
+ Diagnostic,
9
+ isIPv4,
10
+ isIPv6,
11
+ Logger,
12
+ MAX_UDP_MESSAGE_SIZE,
13
+ NetworkError
14
+ } from "#general";
15
+ import { RetransmissionLimitReachedError } from "#protocol";
16
+ import * as dgram from "dgram";
17
+ import { NodeJsNetwork } from "./NodeJsNetwork.js";
18
+ const logger = Logger.get("UdpChannelNode");
19
+ function createDgramSocket(host, port, options) {
20
+ const socket = dgram.createSocket(options);
21
+ return new Promise((resolve, reject) => {
22
+ const handleBindError = (error) => {
23
+ try {
24
+ socket.close();
25
+ } catch (error2) {
26
+ logger.debug("Error on closing socket", error2);
27
+ }
28
+ reject(error);
29
+ };
30
+ socket.on("error", handleBindError);
31
+ socket.bind(port, host, () => {
32
+ const { address: localHost, port: localPort } = socket.address();
33
+ logger.debug(
34
+ "Socket created and bound ",
35
+ Diagnostic.dict({
36
+ remoteAddress: `${host}:${port}`,
37
+ localAddress: `${localHost}:${localPort}`
38
+ })
39
+ );
40
+ socket.removeListener("error", handleBindError);
41
+ socket.on("error", (error) => logger.error(error));
42
+ resolve(socket);
43
+ });
44
+ });
45
+ }
46
+ class NodeJsUdpChannel {
47
+ constructor(type, socket, netInterface) {
48
+ this.type = type;
49
+ this.socket = socket;
50
+ this.netInterface = netInterface;
51
+ }
52
+ static async create({
53
+ listeningPort,
54
+ type,
55
+ listeningAddress,
56
+ netInterface,
57
+ membershipAddresses
58
+ }) {
59
+ const socketOptions = { type, reuseAddr: true };
60
+ if (type === "udp6") {
61
+ socketOptions.ipv6Only = true;
62
+ }
63
+ const socket = await createDgramSocket(listeningAddress, listeningPort, socketOptions);
64
+ socket.setBroadcast(true);
65
+ let netInterfaceZone;
66
+ if (netInterface !== void 0) {
67
+ netInterfaceZone = NodeJsNetwork.getNetInterfaceZoneIpv6(netInterface);
68
+ let multicastInterface;
69
+ if (type === "udp4") {
70
+ multicastInterface = NodeJsNetwork.getMulticastInterfaceIpv4(netInterface);
71
+ if (multicastInterface === void 0) {
72
+ throw new NetworkError(`No IPv4 addresses on interface: ${netInterface}`);
73
+ }
74
+ } else {
75
+ if (netInterfaceZone === void 0) {
76
+ throw new NetworkError(`No IPv6 addresses on interface: ${netInterface}`);
77
+ }
78
+ multicastInterface = `::%${netInterfaceZone}`;
79
+ }
80
+ logger.debug(
81
+ "Initialize multicast",
82
+ Diagnostic.dict({
83
+ address: `${multicastInterface}:${listeningPort}`,
84
+ interface: netInterface,
85
+ type
86
+ })
87
+ );
88
+ socket.setMulticastInterface(multicastInterface);
89
+ }
90
+ if (membershipAddresses !== void 0) {
91
+ const multicastInterfaces = NodeJsNetwork.getMembershipMulticastInterfaces(netInterface, type === "udp4");
92
+ for (const address of membershipAddresses) {
93
+ for (const multicastInterface of multicastInterfaces) {
94
+ try {
95
+ socket.addMembership(address, multicastInterface);
96
+ } catch (error) {
97
+ logger.warn(
98
+ `Error adding membership for address ${address}${multicastInterface ? ` with interface ${multicastInterface}` : ""}: ${error}`
99
+ );
100
+ }
101
+ }
102
+ }
103
+ }
104
+ return new NodeJsUdpChannel(type, socket, netInterfaceZone);
105
+ }
106
+ maxPayloadSize = MAX_UDP_MESSAGE_SIZE;
107
+ onData(listener) {
108
+ const messageListener = (data, { address, port }) => {
109
+ const netInterface = this.netInterface ?? NodeJsNetwork.getNetInterfaceForIp(address);
110
+ if (netInterface === void 0) return;
111
+ listener(netInterface, address, port, data);
112
+ };
113
+ this.socket.on("message", messageListener);
114
+ return {
115
+ close: async () => {
116
+ this.socket.removeListener("message", messageListener);
117
+ }
118
+ };
119
+ }
120
+ async send(host, port, data) {
121
+ return new Promise((resolve, reject) => {
122
+ this.socket.send(data, port, host, (error) => {
123
+ if (error !== null) {
124
+ const netError = error instanceof Error && "code" in error && error.code === "EHOSTUNREACH" ? new RetransmissionLimitReachedError(error.message) : new NetworkError(error.message);
125
+ netError.stack = error.stack;
126
+ reject(netError);
127
+ return;
128
+ }
129
+ resolve();
130
+ });
131
+ });
132
+ }
133
+ async close() {
134
+ try {
135
+ this.socket.close();
136
+ } catch (error) {
137
+ logger.debug("Error on closing socket", error);
138
+ }
139
+ }
140
+ get port() {
141
+ return this.socket.address().port;
142
+ }
143
+ supports(type, address) {
144
+ if (type !== ChannelType.UDP) {
145
+ return false;
146
+ }
147
+ if (address === void 0) {
148
+ return true;
149
+ }
150
+ if (this.type === "udp4") {
151
+ return isIPv4(address);
152
+ }
153
+ return isIPv6(address);
154
+ }
155
+ }
156
+ export {
157
+ NodeJsUdpChannel
158
+ };
159
+ //# sourceMappingURL=NodeJsUdpChannel.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/net/NodeJsUdpChannel.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGG;AACP,SAAS,uCAAuC;AAChD,YAAY,WAAW;AACvB,SAAS,qBAAqB;AAE9B,MAAM,SAAS,OAAO,IAAI,gBAAgB;AAE1C,SAAS,kBAAkB,MAA0B,MAA0B,SAA8B;AACzG,QAAM,SAAS,MAAM,aAAa,OAAO;AACzC,SAAO,IAAI,QAAsB,CAAC,SAAS,WAAW;AAClD,UAAM,kBAAkB,CAAC,UAAiB;AACtC,UAAI;AACA,eAAO,MAAM;AAAA,MACjB,SAASA,QAAO;AACZ,eAAO,MAAM,2BAA2BA,MAAK;AAAA,MACjD;AACA,aAAO,KAAK;AAAA,IAChB;AACA,WAAO,GAAG,SAAS,eAAe;AAClC,WAAO,KAAK,MAAM,MAAM,MAAM;AAC1B,YAAM,EAAE,SAAS,WAAW,MAAM,UAAU,IAAI,OAAO,QAAQ;AAC/D,aAAO;AAAA,QACH;AAAA,QACA,WAAW,KAAK;AAAA,UACZ,eAAe,GAAG,IAAI,IAAI,IAAI;AAAA,UAC9B,cAAc,GAAG,SAAS,IAAI,SAAS;AAAA,QAC3C,CAAC;AAAA,MACL;AACA,aAAO,eAAe,SAAS,eAAe;AAC9C,aAAO,GAAG,SAAS,WAAS,OAAO,MAAM,KAAK,CAAC;AAC/C,cAAQ,MAAM;AAAA,IAClB,CAAC;AAAA,EACL,CAAC;AACL;AAEO,MAAM,iBAAuC;AAAA,EA4DhD,YACqB,MACA,QACA,cACnB;AAHmB;AACA;AACA;AAAA,EAClB;AAAA,EA/DH,aAAa,OAAO;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAAsB;AAClB,UAAM,gBAAqC,EAAE,MAAM,WAAW,KAAK;AACnE,QAAI,SAAS,QAAQ;AACjB,oBAAc,WAAW;AAAA,IAC7B;AACA,UAAM,SAAS,MAAM,kBAAkB,kBAAkB,eAAe,aAAa;AACrF,WAAO,aAAa,IAAI;AACxB,QAAI;AACJ,QAAI,iBAAiB,QAAW;AAC5B,yBAAmB,cAAc,wBAAwB,YAAY;AACrE,UAAI;AACJ,UAAI,SAAS,QAAQ;AACjB,6BAAqB,cAAc,0BAA0B,YAAY;AACzE,YAAI,uBAAuB,QAAW;AAClC,gBAAM,IAAI,aAAa,mCAAmC,YAAY,EAAE;AAAA,QAC5E;AAAA,MACJ,OAAO;AACH,YAAI,qBAAqB,QAAW;AAChC,gBAAM,IAAI,aAAa,mCAAmC,YAAY,EAAE;AAAA,QAC5E;AACA,6BAAqB,MAAM,gBAAgB;AAAA,MAC/C;AACA,aAAO;AAAA,QACH;AAAA,QACA,WAAW,KAAK;AAAA,UACZ,SAAS,GAAG,kBAAkB,IAAI,aAAa;AAAA,UAC/C,WAAW;AAAA,UACX;AAAA,QACJ,CAAC;AAAA,MACL;AACA,aAAO,sBAAsB,kBAAkB;AAAA,IACnD;AACA,QAAI,wBAAwB,QAAW;AACnC,YAAM,sBAAsB,cAAc,iCAAiC,cAAc,SAAS,MAAM;AACxG,iBAAW,WAAW,qBAAqB;AACvC,mBAAW,sBAAsB,qBAAqB;AAClD,cAAI;AACA,mBAAO,cAAc,SAAS,kBAAkB;AAAA,UACpD,SAAS,OAAO;AACZ,mBAAO;AAAA,cACH,uCAAuC,OAAO,GAC1C,qBAAqB,mBAAmB,kBAAkB,KAAK,EACnE,KAAK,KAAK;AAAA,YACd;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AACA,WAAO,IAAI,iBAAiB,MAAM,QAAQ,gBAAgB;AAAA,EAC9D;AAAA,EAES,iBAAiB;AAAA,EAQ1B,OAAO,UAAmG;AACtG,UAAM,kBAAkB,CAAC,MAAkB,EAAE,SAAS,KAAK,MAAwB;AAC/E,YAAM,eAAe,KAAK,gBAAgB,cAAc,qBAAqB,OAAO;AACpF,UAAI,iBAAiB,OAAW;AAChC,eAAS,cAAc,SAAS,MAAM,IAAI;AAAA,IAC9C;AAEA,SAAK,OAAO,GAAG,WAAW,eAAe;AACzC,WAAO;AAAA,MACH,OAAO,YAAY;AACf,aAAK,OAAO,eAAe,WAAW,eAAe;AAAA,MACzD;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,KAAK,MAAc,MAAc,MAAkB;AACrD,WAAO,IAAI,QAAc,CAAC,SAAS,WAAW;AAC1C,WAAK,OAAO,KAAK,MAAM,MAAM,MAAM,WAAS;AACxC,YAAI,UAAU,MAAM;AAChB,gBAAM,WACF,iBAAiB,SAAS,UAAU,SAAS,MAAM,SAAS,iBACtD,IAAI,gCAAgC,MAAM,OAAO,IACjD,IAAI,aAAa,MAAM,OAAO;AACxC,mBAAS,QAAQ,MAAM;AACvB,iBAAO,QAAQ;AACf;AAAA,QACJ;AACA,gBAAQ;AAAA,MACZ,CAAC;AAAA,IACL,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,QAAQ;AACV,QAAI;AACA,WAAK,OAAO,MAAM;AAAA,IACtB,SAAS,OAAO;AACZ,aAAO,MAAM,2BAA2B,KAAK;AAAA,IACjD;AAAA,EACJ;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK,OAAO,QAAQ,EAAE;AAAA,EACjC;AAAA,EAEA,SAAS,MAAmB,SAAkB;AAC1C,QAAI,SAAS,YAAY,KAAK;AAC1B,aAAO;AAAA,IACX;AAEA,QAAI,YAAY,QAAW;AACvB,aAAO;AAAA,IACX;AAIA,QAAI,KAAK,SAAS,QAAQ;AACtB,aAAO,OAAO,OAAO;AAAA,IACzB;AAEA,WAAO,OAAO,OAAO;AAAA,EACzB;AACJ;",
5
+ "names": ["error"]
6
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "./register.js";
7
+ export * from "./NodeJsNetwork.js";
8
+ export * from "./NodeJsUdpChannel.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/net/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,eAAe,CAAC;AACvB,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "./register.js";
7
+ export * from "./NodeJsNetwork.js";
8
+ export * from "./NodeJsUdpChannel.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/net/index.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO;AACP,cAAc;AACd,cAAc;",
5
+ "names": []
6
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/net/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Network, NoProviderError, singleton } from "#general";
7
+ import { NodeJsNetwork } from "./NodeJsNetwork.js";
8
+ try {
9
+ Network.get();
10
+ } catch (error) {
11
+ NoProviderError.accept(error);
12
+ Network.get = singleton(() => new NodeJsNetwork());
13
+ process.on("beforeExit", () => void Network.get().close());
14
+ }
15
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/net/register.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,SAAS,iBAAiB,iBAAiB;AACpD,SAAS,qBAAqB;AAG9B,IAAI;AACA,UAAQ,IAAI;AAChB,SAAS,OAAO;AACZ,kBAAgB,OAAO,KAAK;AAE5B,UAAQ,MAAM,UAAU,MAAM,IAAI,cAAc,CAAC;AAGjD,UAAQ,GAAG,cAAc,MAAM,KAAK,QAAQ,IAAI,EAAE,MAAM,CAAC;AAC7D;",
5
+ "names": []
6
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "type": "module",
3
+ "imports": {
4
+ "#general": "@matter/general",
5
+ "#types": "@matter/types",
6
+ "#clusters/*": "@matter/types/clusters/*",
7
+ "#node": "@matter/node",
8
+ "#protocol": "@matter/protocol",
9
+ "#*": "./*"
10
+ }
11
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { SupportedStorageTypes, SyncStorage } from "#general";
7
+ export declare class StorageBackendDisk extends SyncStorage {
8
+ private readonly localStorage;
9
+ protected isInitialized: boolean;
10
+ constructor(path: string, clear?: boolean);
11
+ get initialized(): boolean;
12
+ initialize(): void;
13
+ close(): void;
14
+ clear(): void;
15
+ getContextBaseKey(contexts: string[], allowEmptyContext?: boolean): string;
16
+ buildStorageKey(contexts: string[], key: string): string;
17
+ get<T extends SupportedStorageTypes>(contexts: string[], key: string): T | undefined;
18
+ set(contexts: string[], key: string, value: SupportedStorageTypes): void;
19
+ set(contexts: string[], values: Record<string, SupportedStorageTypes>): void;
20
+ delete(contexts: string[], key: string): void;
21
+ /** Returns all keys of a storage context without keys of sub-contexts */
22
+ keys(contexts: string[]): string[];
23
+ values(contexts: string[]): Record<string, SupportedStorageTypes>;
24
+ contexts(contexts: string[]): string[];
25
+ clearAll(contexts: string[]): void;
26
+ }
27
+ //# sourceMappingURL=StorageBackendDisk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageBackendDisk.d.ts","sourceRoot":"","sources":["../../../src/storage/StorageBackendDisk.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAA0B,qBAAqB,EAAE,WAAW,EAAU,MAAM,UAAU,CAAC;AAG9F,qBAAa,kBAAmB,SAAQ,WAAW;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC9B,SAAS,CAAC,aAAa,UAAS;gBAEpB,IAAI,EAAE,MAAM,EAAE,KAAK,UAAQ;IAMvC,IAAI,WAAW,YAEd;IAED,UAAU;IAIV,KAAK;IAIL,KAAK;IAIL,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,iBAAiB,UAAQ;IAY/D,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM;IAQ/C,GAAG,CAAC,CAAC,SAAS,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAMpF,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,IAAI;IACxE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,IAAI;IAe5E,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM;IAItC,yEAAyE;IACzE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;IAavB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE;IASzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;IAkB3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;CAS9B"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { fromJson, StorageError, SyncStorage, toJson } from "#general";
7
+ import { LocalStorage } from "node-localstorage";
8
+ class StorageBackendDisk extends SyncStorage {
9
+ localStorage;
10
+ isInitialized = false;
11
+ constructor(path, clear = false) {
12
+ super();
13
+ this.localStorage = new LocalStorage(path);
14
+ if (clear) this.clear();
15
+ }
16
+ get initialized() {
17
+ return this.isInitialized;
18
+ }
19
+ initialize() {
20
+ this.isInitialized = true;
21
+ }
22
+ close() {
23
+ this.isInitialized = false;
24
+ }
25
+ clear() {
26
+ this.localStorage.clear();
27
+ }
28
+ getContextBaseKey(contexts, allowEmptyContext = false) {
29
+ const contextKey = contexts.join(".");
30
+ if (!contextKey.length && !allowEmptyContext || contextKey.includes("..") || contextKey.startsWith(".") || contextKey.endsWith("."))
31
+ throw new StorageError("Context must not be an empty and not contain dots.");
32
+ return contextKey;
33
+ }
34
+ buildStorageKey(contexts, key) {
35
+ if (!key.length) {
36
+ throw new StorageError("Key must not be an empty string.");
37
+ }
38
+ const contextKey = this.getContextBaseKey(contexts);
39
+ return `${contextKey}.${key}`;
40
+ }
41
+ get(contexts, key) {
42
+ const value = this.localStorage.getItem(this.buildStorageKey(contexts, key));
43
+ if (value === null) return void 0;
44
+ return fromJson(value);
45
+ }
46
+ set(contexts, keyOrValues, value) {
47
+ if (typeof keyOrValues === "string") {
48
+ this.localStorage.setItem(this.buildStorageKey(contexts, keyOrValues), toJson(value));
49
+ } else {
50
+ for (const [key, value2] of Object.entries(keyOrValues)) {
51
+ this.localStorage.setItem(this.buildStorageKey(contexts, key), toJson(value2));
52
+ }
53
+ }
54
+ }
55
+ delete(contexts, key) {
56
+ this.localStorage.removeItem(this.buildStorageKey(contexts, key));
57
+ }
58
+ /** Returns all keys of a storage context without keys of sub-contexts */
59
+ keys(contexts) {
60
+ const contextKey = this.getContextBaseKey(contexts);
61
+ const keys = [];
62
+ const contextKeyStart = `${contextKey}.`;
63
+ const len = contextKeyStart.length;
64
+ for (const key of Object.keys(this.localStorage)) {
65
+ if (key.startsWith(contextKeyStart) && !key.includes(".", len)) {
66
+ keys.push(key.substring(len));
67
+ }
68
+ }
69
+ return keys;
70
+ }
71
+ values(contexts) {
72
+ const values = {};
73
+ for (const key of this.keys(contexts)) {
74
+ values[key] = this.get(contexts, key);
75
+ }
76
+ return values;
77
+ }
78
+ contexts(contexts) {
79
+ const contextKey = this.getContextBaseKey(contexts, true);
80
+ const startContextKey = contextKey.length ? `${contextKey}.` : "";
81
+ const len = startContextKey.length;
82
+ const foundContexts = new Array();
83
+ for (const key of Object.keys(this.localStorage)) {
84
+ if (key.startsWith(startContextKey)) {
85
+ const subKeys = key.substring(len).split(".");
86
+ if (subKeys.length === 1) continue;
87
+ const context = subKeys[0];
88
+ if (!foundContexts.includes(context)) {
89
+ foundContexts.push(context);
90
+ }
91
+ }
92
+ }
93
+ return foundContexts;
94
+ }
95
+ clearAll(contexts) {
96
+ const contextKey = this.getContextBaseKey(contexts, true);
97
+ const startContextKey = contextKey.length ? `${contextKey}.` : "";
98
+ for (const key of Object.keys(this.localStorage)) {
99
+ if (key.startsWith(startContextKey)) {
100
+ this.localStorage.removeItem(key);
101
+ }
102
+ }
103
+ }
104
+ }
105
+ export {
106
+ StorageBackendDisk
107
+ };
108
+ //# sourceMappingURL=StorageBackendDisk.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/storage/StorageBackendDisk.ts"],
4
+ "mappings": "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",
5
+ "names": ["value"]
6
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { StorageBackendMemory, SupportedStorageTypes } from "#general";
7
+ export declare class StorageBackendJsonFile extends StorageBackendMemory {
8
+ private readonly path;
9
+ /** We store changes after a value was set to the storage, but not more often than this setting (in ms). */
10
+ static commitDelay: number;
11
+ committed: Promise<void>;
12
+ private readonly commitTimer;
13
+ private closed;
14
+ private resolveCommitted?;
15
+ constructor(path: string);
16
+ static create(path: string): Promise<StorageBackendJsonFile>;
17
+ initialize(): Promise<void>;
18
+ private triggerCommit;
19
+ set(contexts: string[], keyOrValues: string | Record<string, SupportedStorageTypes>, value?: SupportedStorageTypes): void;
20
+ delete(contexts: string[], key: string): void;
21
+ clear(): void;
22
+ private commit;
23
+ close(): Promise<void>;
24
+ private toJson;
25
+ private fromJson;
26
+ }
27
+ //# sourceMappingURL=StorageBackendJsonFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageBackendJsonFile.d.ts","sourceRoot":"","sources":["../../../src/storage/StorageBackendJsonFile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAY,oBAAoB,EAAgB,qBAAqB,EAAgB,MAAM,UAAU,CAAC;AAG7G,qBAAa,sBAAuB,SAAQ,oBAAoB;IAWhD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAVjC,2GAA2G;IAC3G,MAAM,CAAC,WAAW,SAAQ;IAC1B,SAAS,gBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAE1B;IACF,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAC,CAAa;gBAET,IAAI,EAAE,MAAM;WAInB,MAAM,CAAC,IAAI,EAAE,MAAM;IAM1B,UAAU;IAczB,OAAO,CAAC,aAAa;IASZ,GAAG,CACR,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC3D,KAAK,CAAC,EAAE,qBAAqB,GAC9B,IAAI;IAKE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAK7C,KAAK,IAAI,IAAI;YAKR,MAAM;IAcL,KAAK;IAQpB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,QAAQ;CAGnB"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { fromJson, StorageBackendMemory, StorageError, Time, toJson } from "#general";
7
+ import { readFile, writeFile } from "fs/promises";
8
+ class StorageBackendJsonFile extends StorageBackendMemory {
9
+ constructor(path) {
10
+ super();
11
+ this.path = path;
12
+ }
13
+ /** We store changes after a value was set to the storage, but not more often than this setting (in ms). */
14
+ static commitDelay = 1e3;
15
+ committed = Promise.resolve();
16
+ commitTimer = Time.getTimer(
17
+ "Storage commit",
18
+ StorageBackendJsonFile.commitDelay,
19
+ () => this.commit()
20
+ );
21
+ closed = false;
22
+ resolveCommitted;
23
+ static async create(path) {
24
+ const storage = new this(path);
25
+ await storage.initialize();
26
+ return storage;
27
+ }
28
+ async initialize() {
29
+ if (this.initialized) throw new StorageError("Storage already initialized!");
30
+ super.initialize();
31
+ try {
32
+ this.store = this.fromJson(await readFile(this.path, "utf-8"));
33
+ } catch (error) {
34
+ if (error.code !== "ENOENT") {
35
+ throw error;
36
+ }
37
+ }
38
+ this.isInitialized = true;
39
+ }
40
+ triggerCommit() {
41
+ if (!this.commitTimer.isRunning) {
42
+ this.committed = new Promise((resolve) => {
43
+ this.resolveCommitted = resolve;
44
+ });
45
+ this.commitTimer.start();
46
+ }
47
+ }
48
+ set(contexts, keyOrValues, value) {
49
+ super.set(contexts, keyOrValues, value);
50
+ this.triggerCommit();
51
+ }
52
+ delete(contexts, key) {
53
+ super.delete(contexts, key);
54
+ this.triggerCommit();
55
+ }
56
+ clear() {
57
+ super.clear();
58
+ this.triggerCommit();
59
+ }
60
+ async commit() {
61
+ if (!this.initialized || this.closed) return;
62
+ if (this.commitTimer.isRunning) {
63
+ this.commitTimer.stop();
64
+ }
65
+ try {
66
+ await writeFile(this.path, this.toJson(this.store), "utf-8");
67
+ } finally {
68
+ if (this.resolveCommitted !== void 0) {
69
+ this.resolveCommitted?.();
70
+ }
71
+ }
72
+ }
73
+ async close() {
74
+ this.commitTimer.stop();
75
+ await this.commit();
76
+ super.close();
77
+ this.closed = true;
78
+ this.isInitialized = false;
79
+ }
80
+ toJson(object) {
81
+ return toJson(object, 1);
82
+ }
83
+ fromJson(json) {
84
+ return fromJson(json);
85
+ }
86
+ }
87
+ export {
88
+ StorageBackendJsonFile
89
+ };
90
+ //# sourceMappingURL=StorageBackendJsonFile.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/storage/StorageBackendJsonFile.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,UAAU,sBAAsB,cAAqC,MAAM,cAAc;AAClG,SAAS,UAAU,iBAAiB;AAE7B,MAAM,+BAA+B,qBAAqB;AAAA,EAW7D,YAA6B,MAAc;AACvC,UAAM;AADmB;AAAA,EAE7B;AAAA;AAAA,EAXA,OAAO,cAAc;AAAA,EACrB,YAAY,QAAQ,QAAQ;AAAA,EAEX,cAAc,KAAK;AAAA,IAAS;AAAA,IAAkB,uBAAuB;AAAA,IAAa,MAC/F,KAAK,OAAO;AAAA,EAChB;AAAA,EACQ,SAAS;AAAA,EACT;AAAA,EAMR,aAAsB,OAAO,MAAc;AACvC,UAAM,UAAU,IAAI,KAAK,IAAI;AAC7B,UAAM,QAAQ,WAAW;AACzB,WAAO;AAAA,EACX;AAAA,EAEA,MAAe,aAAa;AACxB,QAAI,KAAK,YAAa,OAAM,IAAI,aAAa,8BAA8B;AAC3E,UAAM,WAAW;AACjB,QAAI;AACA,WAAK,QAAQ,KAAK,SAAS,MAAM,SAAS,KAAK,MAAM,OAAO,CAAC;AAAA,IACjE,SAAS,OAAY;AAEjB,UAAI,MAAM,SAAS,UAAU;AACzB,cAAM;AAAA,MACV;AAAA,IACJ;AACA,SAAK,gBAAgB;AAAA,EACzB;AAAA,EAEQ,gBAAgB;AACpB,QAAI,CAAC,KAAK,YAAY,WAAW;AAC7B,WAAK,YAAY,IAAI,QAAQ,aAAW;AACpC,aAAK,mBAAmB;AAAA,MAC5B,CAAC;AACD,WAAK,YAAY,MAAM;AAAA,IAC3B;AAAA,EACJ;AAAA,EAES,IACL,UACA,aACA,OACI;AACJ,UAAM,IAAI,UAAU,aAAa,KAAK;AACtC,SAAK,cAAc;AAAA,EACvB;AAAA,EAES,OAAO,UAAoB,KAAmB;AACnD,UAAM,OAAO,UAAU,GAAG;AAC1B,SAAK,cAAc;AAAA,EACvB;AAAA,EAES,QAAc;AACnB,UAAM,MAAM;AACZ,SAAK,cAAc;AAAA,EACvB;AAAA,EAEA,MAAc,SAAS;AACnB,QAAI,CAAC,KAAK,eAAe,KAAK,OAAQ;AACtC,QAAI,KAAK,YAAY,WAAW;AAC5B,WAAK,YAAY,KAAK;AAAA,IAC1B;AACA,QAAI;AACA,YAAM,UAAU,KAAK,MAAM,KAAK,OAAO,KAAK,KAAK,GAAG,OAAO;AAAA,IAC/D,UAAE;AACE,UAAI,KAAK,qBAAqB,QAAW;AACrC,aAAK,mBAAmB;AAAA,MAC5B;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAe,QAAQ;AACnB,SAAK,YAAY,KAAK;AACtB,UAAM,KAAK,OAAO;AAClB,UAAM,MAAM;AACZ,SAAK,SAAS;AACd,SAAK,gBAAgB;AAAA,EACzB;AAAA,EAEQ,OAAO,QAAqB;AAChC,WAAO,OAAO,QAAQ,CAAC;AAAA,EAC3B;AAAA,EAEQ,SAAS,MAAmB;AAChC,WAAO,SAAS,IAAI;AAAA,EACxB;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export * from "./StorageBackendDisk.js";
7
+ export * from "./StorageBackendJsonFile.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export * from "./StorageBackendDisk.js";
7
+ export * from "./StorageBackendJsonFile.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/storage/index.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;",
5
+ "names": []
6
+ }