@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,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "./register.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/behavior/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,eAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "./register.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/behavior/index.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO;",
5
+ "names": []
6
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Node's default console formatting makes it difficult to view the value of managed collections. This function
8
+ * instruments values to make inspection work more naturally.
9
+ */
10
+ export declare function installInspectionInstrumentation(): void;
11
+ //# sourceMappingURL=instrumentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/behavior/instrumentation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;;GAGG;AACH,wBAAgB,gCAAgC,SAkB/C"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Instrumentation } from "#node";
7
+ import { inspect } from "util";
8
+ function installInspectionInstrumentation() {
9
+ Instrumentation.instrumentStruct = (constructor) => {
10
+ constructor.prototype[inspect.custom] = function() {
11
+ return { ...this };
12
+ };
13
+ return constructor;
14
+ };
15
+ Instrumentation.instrumentList = (factory) => {
16
+ return (handlers, target) => {
17
+ target[inspect.custom] = function() {
18
+ return [...this];
19
+ };
20
+ return factory(handlers, target);
21
+ };
22
+ };
23
+ }
24
+ export {
25
+ installInspectionInstrumentation
26
+ };
27
+ //# sourceMappingURL=instrumentation.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/behavior/instrumentation.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,uBAA4B;AACrC,SAAS,eAAe;AAMjB,SAAS,mCAAmC;AAC/C,kBAAgB,mBAAmB,iBAAe;AAC9C,gBAAY,UAAU,QAAQ,MAAM,IAAI,WAA4B;AAChE,aAAO,EAAE,GAAG,KAAK;AAAA,IACrB;AAEA,WAAO;AAAA,EACX;AAEA,kBAAgB,iBAAiB,CAAC,YAAyC;AACvE,WAAO,CAAC,UAAU,WAAW;AACzB,MAAC,OAAe,QAAQ,MAAM,IAAI,WAA0B;AACxD,eAAO,CAAC,GAAG,IAAI;AAAA,MACnB;AAEA,aAAO,QAAQ,UAAU,MAAM;AAAA,IACnC;AAAA,EACJ;AACJ;",
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/behavior/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { installInspectionInstrumentation } from "./instrumentation.js";
7
+ installInspectionInstrumentation();
8
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/behavior/register.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,wCAAwC;AAEjD,iCAAiC;",
5
+ "names": []
6
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Crypto, CryptoDsaEncoding, PrivateKey } from "#general";
7
+ import * as crypto from "crypto";
8
+ export declare class NodeJsCrypto extends Crypto {
9
+ encrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array;
10
+ decrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array;
11
+ getRandomData(length: number): Uint8Array;
12
+ ecdhGeneratePublicKey(): {
13
+ publicKey: Uint8Array;
14
+ ecdh: any;
15
+ };
16
+ ecdhGeneratePublicKeyAndSecret(peerPublicKey: Uint8Array): {
17
+ publicKey: Uint8Array;
18
+ sharedSecret: Uint8Array;
19
+ };
20
+ ecdhGenerateSecret(peerPublicKey: Uint8Array, ecdh: crypto.ECDH): Uint8Array;
21
+ hash(data: Uint8Array | Uint8Array[]): Uint8Array;
22
+ pbkdf2(secret: Uint8Array, salt: Uint8Array, iteration: number, keyLength: number): Promise<Uint8Array>;
23
+ hkdf(secret: Uint8Array, salt: Uint8Array, info: Uint8Array, length?: number): Promise<Uint8Array>;
24
+ hmac(key: Uint8Array, data: Uint8Array): Uint8Array;
25
+ sign(privateKey: JsonWebKey, data: Uint8Array | Uint8Array[], dsaEncoding?: CryptoDsaEncoding): Uint8Array;
26
+ verify(publicKey: JsonWebKey, data: Uint8Array, signature: Uint8Array, dsaEncoding?: CryptoDsaEncoding): void;
27
+ createKeyPair(): PrivateKey;
28
+ }
29
+ //# sourceMappingURL=NodeJsCrypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeJsCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/NodeJsCrypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAQH,MAAM,EACN,iBAAiB,EAEjB,UAAU,EACb,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,qBAAa,YAAa,SAAQ,MAAM;IACpC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,UAAU;IAY3F,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,UAAU;IAc3F,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAIzC,qBAAqB,IAAI;QAAE,SAAS,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE;IAM7D,8BAA8B,CAAC,aAAa,EAAE,UAAU,GAAG;QAAE,SAAS,EAAE,UAAU,CAAC;QAAC,YAAY,EAAE,UAAU,CAAA;KAAE;IAS9G,kBAAkB,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU;IAI5E,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,GAAG,UAAU;IAUjD,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IASvG,IAAI,CACA,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,UAAU,EAChB,MAAM,GAAE,MAAoC,GAC7C,OAAO,CAAC,UAAU,CAAC;IAStB,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IAMnD,IAAI,CACA,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,EAC/B,WAAW,GAAE,iBAAgC,GAC9C,UAAU;IAiBb,MAAM,CACF,SAAS,EAAE,UAAU,EACrB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,UAAU,EACrB,WAAW,GAAE,iBAAgC;IAgBjD,aAAa;CAYhB"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import {
7
+ Bytes,
8
+ CRYPTO_AUTH_TAG_LENGTH,
9
+ CRYPTO_EC_CURVE,
10
+ CRYPTO_EC_KEY_BYTES,
11
+ CRYPTO_ENCRYPT_ALGORITHM,
12
+ CRYPTO_HASH_ALGORITHM,
13
+ CRYPTO_SYMMETRIC_KEY_LENGTH,
14
+ Crypto,
15
+ CryptoVerifyError,
16
+ PrivateKey
17
+ } from "#general";
18
+ import * as crypto from "crypto";
19
+ class NodeJsCrypto extends Crypto {
20
+ encrypt(key, data, nonce, aad) {
21
+ const cipher = crypto.createCipheriv(CRYPTO_ENCRYPT_ALGORITHM, key, nonce, {
22
+ authTagLength: CRYPTO_AUTH_TAG_LENGTH
23
+ });
24
+ if (aad !== void 0) {
25
+ cipher.setAAD(aad, { plaintextLength: data.length });
26
+ }
27
+ const encrypted = cipher.update(data);
28
+ cipher.final();
29
+ return Bytes.concat(encrypted, cipher.getAuthTag());
30
+ }
31
+ decrypt(key, data, nonce, aad) {
32
+ const cipher = crypto.createDecipheriv(CRYPTO_ENCRYPT_ALGORITHM, key, nonce, {
33
+ authTagLength: CRYPTO_AUTH_TAG_LENGTH
34
+ });
35
+ const plaintextLength = data.length - CRYPTO_AUTH_TAG_LENGTH;
36
+ if (aad !== void 0) {
37
+ cipher.setAAD(aad, { plaintextLength });
38
+ }
39
+ cipher.setAuthTag(data.slice(plaintextLength));
40
+ const result = cipher.update(data.slice(0, plaintextLength));
41
+ cipher.final();
42
+ return new Uint8Array(result);
43
+ }
44
+ getRandomData(length) {
45
+ return new Uint8Array(crypto.randomBytes(length));
46
+ }
47
+ ecdhGeneratePublicKey() {
48
+ const ecdh = crypto.createECDH(CRYPTO_EC_CURVE);
49
+ ecdh.generateKeys();
50
+ return { publicKey: new Uint8Array(ecdh.getPublicKey()), ecdh };
51
+ }
52
+ ecdhGeneratePublicKeyAndSecret(peerPublicKey) {
53
+ const ecdh = crypto.createECDH(CRYPTO_EC_CURVE);
54
+ ecdh.generateKeys();
55
+ return {
56
+ publicKey: new Uint8Array(ecdh.getPublicKey()),
57
+ sharedSecret: new Uint8Array(ecdh.computeSecret(peerPublicKey))
58
+ };
59
+ }
60
+ ecdhGenerateSecret(peerPublicKey, ecdh) {
61
+ return new Uint8Array(ecdh.computeSecret(peerPublicKey));
62
+ }
63
+ hash(data) {
64
+ const hasher = crypto.createHash(CRYPTO_HASH_ALGORITHM);
65
+ if (Array.isArray(data)) {
66
+ data.forEach((chunk) => hasher.update(chunk));
67
+ } else {
68
+ hasher.update(data);
69
+ }
70
+ return new Uint8Array(hasher.digest());
71
+ }
72
+ pbkdf2(secret, salt, iteration, keyLength) {
73
+ return new Promise((resolver, rejecter) => {
74
+ crypto.pbkdf2(secret, salt, iteration, keyLength, CRYPTO_HASH_ALGORITHM, (error, key) => {
75
+ if (error !== null) rejecter(error);
76
+ resolver(new Uint8Array(key));
77
+ });
78
+ });
79
+ }
80
+ hkdf(secret, salt, info, length = CRYPTO_SYMMETRIC_KEY_LENGTH) {
81
+ return new Promise((resolver, rejecter) => {
82
+ crypto.hkdf(CRYPTO_HASH_ALGORITHM, secret, salt, info, length, (error, key) => {
83
+ if (error !== null) rejecter(error);
84
+ resolver(new Uint8Array(key));
85
+ });
86
+ });
87
+ }
88
+ hmac(key, data) {
89
+ const hmac = crypto.createHmac(CRYPTO_HASH_ALGORITHM, key);
90
+ hmac.update(data);
91
+ return new Uint8Array(hmac.digest());
92
+ }
93
+ sign(privateKey, data, dsaEncoding = "ieee-p1363") {
94
+ const signer = crypto.createSign(CRYPTO_HASH_ALGORITHM);
95
+ if (Array.isArray(data)) {
96
+ data.forEach((chunk) => signer.update(chunk));
97
+ } else {
98
+ signer.update(data);
99
+ }
100
+ return new Uint8Array(
101
+ signer.sign({
102
+ key: privateKey,
103
+ format: "jwk",
104
+ type: "pkcs8",
105
+ dsaEncoding
106
+ })
107
+ );
108
+ }
109
+ verify(publicKey, data, signature, dsaEncoding = "ieee-p1363") {
110
+ const verifier = crypto.createVerify(CRYPTO_HASH_ALGORITHM);
111
+ verifier.update(data);
112
+ const success = verifier.verify(
113
+ {
114
+ key: publicKey,
115
+ format: "jwk",
116
+ type: "spki",
117
+ dsaEncoding
118
+ },
119
+ signature
120
+ );
121
+ if (!success) throw new CryptoVerifyError("Signature verification failed");
122
+ }
123
+ createKeyPair() {
124
+ const ecdh = crypto.createECDH(CRYPTO_EC_CURVE);
125
+ ecdh.generateKeys();
126
+ const privateKey = new Uint8Array(CRYPTO_EC_KEY_BYTES);
127
+ const nodePrivateKey = ecdh.getPrivateKey();
128
+ privateKey.set(nodePrivateKey, CRYPTO_EC_KEY_BYTES - nodePrivateKey.length);
129
+ return PrivateKey(privateKey, { publicKey: ecdh.getPublicKey() });
130
+ }
131
+ }
132
+ export {
133
+ NodeJsCrypto
134
+ };
135
+ //# sourceMappingURL=NodeJsCrypto.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/crypto/NodeJsCrypto.ts"],
4
+ "mappings": "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",
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
+ import "./register.js";
7
+ export * from "./NodeJsCrypto.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,eAAe,CAAC;AACvB,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,8 @@
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 "./NodeJsCrypto.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/crypto/index.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO;AACP,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/crypto/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Crypto, NoProviderError, singleton } from "#general";
7
+ import { NodeJsCrypto } from "./NodeJsCrypto.js";
8
+ let needCrypto = true;
9
+ try {
10
+ const crypto = Crypto.get();
11
+ if (crypto.mock !== true) {
12
+ needCrypto = false;
13
+ }
14
+ } catch (error) {
15
+ NoProviderError.accept(error);
16
+ }
17
+ if (needCrypto) {
18
+ Crypto.get = singleton(() => new NodeJsCrypto());
19
+ }
20
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/crypto/register.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,QAAQ,iBAAiB,iBAAiB;AACnD,SAAS,oBAAoB;AAG7B,IAAI,aAAa;AACjB,IAAI;AACA,QAAM,SAAS,OAAO,IAAI;AAE1B,MAAK,OAA8B,SAAS,MAAM;AAC9C,iBAAa;AAAA,EACjB;AACJ,SAAS,OAAO;AACZ,kBAAgB,OAAO,KAAK;AAChC;AAGA,IAAI,YAAY;AACZ,SAAO,MAAM,UAAU,MAAM,IAAI,aAAa,CAAC;AACnD;",
5
+ "names": []
6
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Environment } from "#general";
7
+ import { ActionTracer } from "#node";
8
+ export declare class NodeJsActionTracer extends ActionTracer {
9
+ #private;
10
+ constructor(path: string);
11
+ static configure(env: Environment): void;
12
+ [Symbol.asyncDispose](): void;
13
+ record(action: ActionTracer.Action): void;
14
+ }
15
+ //# sourceMappingURL=NodeJsActionTracer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeJsActionTracer.d.ts","sourceRoot":"","sources":["../../../src/environment/NodeJsActionTracer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAA2B,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAIrC,qBAAa,kBAAmB,SAAQ,YAAY;;gBAKpC,IAAI,EAAE,MAAM;IAMxB,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW;IAkBjC,CAAC,MAAM,CAAC,YAAY,CAAC;IAIZ,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM;CAkB9C"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { MaybePromise, serialize } from "#general";
7
+ import { ActionTracer } from "#node";
8
+ import { open } from "fs/promises";
9
+ import { resolve } from "path";
10
+ class NodeJsActionTracer extends ActionTracer {
11
+ #path;
12
+ #output;
13
+ #write;
14
+ constructor(path) {
15
+ super();
16
+ this.#path = path;
17
+ }
18
+ static configure(env) {
19
+ env.vars.use(() => {
20
+ if (env.has(ActionTracer)) {
21
+ env.delete(env.get(ActionTracer).constructor);
22
+ }
23
+ if (!env.vars.boolean("trace.enable")) {
24
+ return;
25
+ }
26
+ const path = resolve(env.vars.get("path.root", "."), env.vars.get("trace.path", "trace.jsonl"));
27
+ const tracer = new NodeJsActionTracer(path);
28
+ env.set(ActionTracer, tracer);
29
+ env.runtime.add(tracer);
30
+ });
31
+ }
32
+ [Symbol.asyncDispose]() {
33
+ MaybePromise.then(this.#write, () => this.#output?.close());
34
+ }
35
+ record(action) {
36
+ const raw = {
37
+ ...action,
38
+ path: action.path?.toString(false),
39
+ mutations: action.mutations ? action.mutations.map((m) => ({ ...m, path: m.path.toString(false) })) : void 0
40
+ };
41
+ this.#write = MaybePromise.then(this.#write, () => this.#record(raw));
42
+ }
43
+ async #record(action) {
44
+ if (this.#output === void 0) {
45
+ this.#output = await open(this.#path, "w");
46
+ }
47
+ await this.#output.write(JSON.stringify(action, replacer));
48
+ await this.#output.write("\n");
49
+ }
50
+ }
51
+ function replacer(_key, value) {
52
+ if (typeof value === "bigint" || ArrayBuffer.isView(value)) {
53
+ return serialize(value);
54
+ }
55
+ return value;
56
+ }
57
+ export {
58
+ NodeJsActionTracer
59
+ };
60
+ //# sourceMappingURL=NodeJsActionTracer.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/environment/NodeJsActionTracer.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAsB,cAAc,iBAAiB;AACrD,SAAS,oBAAoB;AAC7B,SAAqB,YAAY;AACjC,SAAS,eAAe;AAEjB,MAAM,2BAA2B,aAAa;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,MAAc;AACtB,UAAM;AAEN,SAAK,QAAQ;AAAA,EACjB;AAAA,EAEA,OAAO,UAAU,KAAkB;AAC/B,QAAI,KAAK,IAAI,MAAM;AACf,UAAI,IAAI,IAAI,YAAY,GAAG;AACvB,YAAI,OAAO,IAAI,IAAI,YAAY,EAAE,WAAqC;AAAA,MAC1E;AAEA,UAAI,CAAC,IAAI,KAAK,QAAQ,cAAc,GAAG;AACnC;AAAA,MACJ;AAEA,YAAM,OAAO,QAAQ,IAAI,KAAK,IAAI,aAAa,GAAG,GAAG,IAAI,KAAK,IAAI,cAAc,aAAa,CAAC;AAE9F,YAAM,SAAS,IAAI,mBAAmB,IAAI;AAC1C,UAAI,IAAI,cAAc,MAAM;AAC5B,UAAI,QAAQ,IAAI,MAAM;AAAA,IAC1B,CAAC;AAAA,EACL;AAAA,EAEA,CAAC,OAAO,YAAY,IAAI;AACpB,iBAAa,KAAK,KAAK,QAAQ,MAAM,KAAK,SAAS,MAAM,CAAC;AAAA,EAC9D;AAAA,EAES,OAAO,QAA6B;AACzC,UAAM,MAAM;AAAA,MACR,GAAG;AAAA,MACH,MAAM,OAAO,MAAM,SAAS,KAAK;AAAA,MACjC,WAAW,OAAO,YACZ,OAAO,UAAU,IAAI,QAAM,EAAE,GAAG,GAAG,MAAM,EAAE,KAAK,SAAS,KAAK,EAAE,EAAE,IAClE;AAAA,IACV;AACA,SAAK,SAAS,aAAa,KAAK,KAAK,QAAQ,MAAM,KAAK,QAAQ,GAAG,CAAC;AAAA,EACxE;AAAA,EAEA,MAAM,QAAQ,QAAgB;AAC1B,QAAI,KAAK,YAAY,QAAW;AAC5B,WAAK,UAAU,MAAM,KAAK,KAAK,OAAO,GAAG;AAAA,IAC7C;AACA,UAAM,KAAK,QAAQ,MAAM,KAAK,UAAU,QAAQ,QAAQ,CAAC;AACzD,UAAM,KAAK,QAAQ,MAAM,IAAI;AAAA,EACjC;AACJ;AAEA,SAAS,SAAS,MAAc,OAAY;AACxC,MAAI,OAAO,UAAU,YAAY,YAAY,OAAO,KAAK,GAAG;AACxD,WAAO,UAAU,KAAK;AAAA,EAC1B;AACA,SAAO;AACX;",
5
+ "names": []
6
+ }
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Environment, VariableService } from "#general";
7
+ /**
8
+ * This is the default environment implementation for Node.js:
9
+ *
10
+ * - Sets variables using rudimentary command line, environment and configuration file parsers.
11
+ *
12
+ * - Processes UNIX-style signals and sets process exit codes via {@link ProcessManager}
13
+ *
14
+ * - Creates a default storage pool using the loaded configuration.
15
+ *
16
+ * You can modify this behavior:
17
+ *
18
+ * - Via configuration
19
+ *
20
+ * - By modifying {@link Environment.default}
21
+ *
22
+ * - By providing an {@link Environment} to your components other than {@link Environment.default}
23
+ *
24
+ * The settings are applied in this order (the higher numbers overwrite lower numbers):
25
+ * 1. Some internal Defaults (mainly Loglevel and such)
26
+ * 2. Config file
27
+ * 3. Environment variables (MATTER_*)
28
+ * 4. Command line parameters
29
+ *
30
+ * The following variables are defined by this class additionally to {@link Environment}:
31
+ * * `environment` - Name of the environment, Default "default"
32
+ * * `path.root` - Path considered as root for any files to store, Fallback: ".", Default: APPDATA/.matter (Windows), HOME/.matter else (or .matter-<envname>)
33
+ * * `path.config` - Path to config file, Default: "config.json"
34
+ * * `trace.path` - Path of the trace file to write, Default: "trace.jsonl" relative to path.root
35
+ * * `trace.enable` - Enable writing a trace file
36
+ * * `storage.path` - Where to store storage files, Default: "path.root"
37
+ * * `storage.clear` - Clear storage on start? Default: false
38
+ * * `runtime.signals` - By default register SIGINT and SIGUSR2 (diag) handlers, set to false if not wanted
39
+ * * `runtime.exitcode` - By default we set the process.exitcode to 0 (ok) or 1 (crash); set to false to disable
40
+ * * `runtime.unhandlederrors` - By default we log unhandled errors to matter.js log; set to false to disable
41
+ */
42
+ export declare function NodeJsEnvironment(): Environment;
43
+ export declare function loadConfigFile(vars: VariableService): any;
44
+ export declare function getDefaults(vars: VariableService): {
45
+ environment: "default";
46
+ path: {
47
+ root: string;
48
+ config: string;
49
+ };
50
+ runtime: {
51
+ signals: boolean;
52
+ exitcode: boolean;
53
+ };
54
+ };
55
+ //# sourceMappingURL=NodeJsEnvironment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeJsEnvironment.d.ts","sourceRoot":"","sources":["../../../src/environment/NodeJsEnvironment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,WAAW,EAMX,eAAe,EAClB,MAAM,UAAU,CAAC;AAQlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,iBAAiB,gBAkBhC;AAyCD,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,OAsBnD;AAiBD,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe;;;;;;;;;;EAgBhD"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import {
7
+ Environment,
8
+ ImplementationError,
9
+ LogFormat,
10
+ Logger,
11
+ Network,
12
+ StorageService
13
+ } from "#general";
14
+ import { existsSync, readFileSync } from "fs";
15
+ import { resolve } from "path";
16
+ import { NodeJsNetwork } from "../net/NodeJsNetwork.js";
17
+ import { StorageBackendDisk } from "../storage/StorageBackendDisk.js";
18
+ import { NodeJsActionTracer } from "./NodeJsActionTracer.js";
19
+ import { ProcessManager } from "./ProcessManager.js";
20
+ function NodeJsEnvironment() {
21
+ const env = new Environment("default");
22
+ loadVariables(env);
23
+ configureRuntime(env);
24
+ configureStorage(env);
25
+ configureNetwork(env);
26
+ if (!env.vars.has("logger.format") && Logger.format === LogFormat.PLAIN && process.stdin?.isTTY) {
27
+ env.vars.set("logger.format", LogFormat.ANSI);
28
+ }
29
+ NodeJsActionTracer.configure(env);
30
+ return env;
31
+ }
32
+ function loadVariables(env) {
33
+ const vars = env.vars;
34
+ vars.addConfigStyle(getDefaults(vars));
35
+ vars.addUnixEnvStyle(process.env);
36
+ vars.addArgvStyle(process.argv);
37
+ vars.addConfigStyle(loadConfigFile(vars));
38
+ vars.addUnixEnvStyle(process.env);
39
+ vars.addArgvStyle(process.argv);
40
+ }
41
+ function configureRuntime(env) {
42
+ const processManager = new ProcessManager(env);
43
+ env.set(ProcessManager, processManager);
44
+ }
45
+ function configureStorage(env) {
46
+ const service = env.get(StorageService);
47
+ env.vars.use(() => {
48
+ const location = env.vars.get("storage.path", env.vars.get("path.root", "."));
49
+ service.location = location;
50
+ });
51
+ service.factory = (namespace) => new StorageBackendDisk(resolve(service.location ?? ".", namespace), env.vars.get("storage.clear", false));
52
+ }
53
+ function configureNetwork(env) {
54
+ env.set(Network, new NodeJsNetwork());
55
+ }
56
+ function loadConfigFile(vars) {
57
+ const path = vars.get("path.config", "config.json");
58
+ if (!existsSync(path)) {
59
+ return {};
60
+ }
61
+ let configJson;
62
+ try {
63
+ configJson = readFileSync(path).toString();
64
+ } catch (e) {
65
+ throw new ImplementationError(`Error reading configuration file ${path}: ${e.message}`);
66
+ }
67
+ let configVars;
68
+ try {
69
+ configVars = JSON.parse(configJson);
70
+ } catch (e) {
71
+ throw new ImplementationError(`Error parsing configuration file ${path}: ${e.message}`);
72
+ }
73
+ return configVars;
74
+ }
75
+ function getDefaultRoot(envName) {
76
+ let matterDir;
77
+ if (process.platform === "win32") {
78
+ matterDir = resolve(process.env.APPDATA ?? ".", "matter");
79
+ } else {
80
+ matterDir = resolve(process.env.HOME ?? ".", ".matter");
81
+ }
82
+ if (envName !== "default") {
83
+ matterDir = `${matterDir}-${envName}`;
84
+ }
85
+ return matterDir;
86
+ }
87
+ function getDefaults(vars) {
88
+ const envName = vars.get("environment", "default");
89
+ const rootPath = vars.get("path.root", getDefaultRoot(envName));
90
+ const configPath = resolve(rootPath, vars.get("path.config", "config.json"));
91
+ return {
92
+ environment: envName,
93
+ path: {
94
+ root: rootPath,
95
+ config: configPath
96
+ },
97
+ runtime: {
98
+ signals: true,
99
+ exitcode: true
100
+ }
101
+ };
102
+ }
103
+ export {
104
+ NodeJsEnvironment,
105
+ getDefaults,
106
+ loadConfigFile
107
+ };
108
+ //# sourceMappingURL=NodeJsEnvironment.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/environment/NodeJsEnvironment.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEG;AACP,SAAS,YAAY,oBAAoB;AACzC,SAAS,eAAe;AACxB,SAAS,qBAAqB;AAC9B,SAAS,0BAA0B;AACnC,SAAS,0BAA0B;AACnC,SAAS,sBAAsB;AAqCxB,SAAS,oBAAoB;AAChC,QAAM,MAAM,IAAI,YAAY,SAAS;AAErC,gBAAc,GAAG;AACjB,mBAAiB,GAAG;AACpB,mBAAiB,GAAG;AACpB,mBAAiB,GAAG;AAKpB,MAAI,CAAC,IAAI,KAAK,IAAI,eAAe,KAAK,OAAO,WAAW,UAAU,SAAS,QAAQ,OAAO,OAAO;AAC7F,QAAI,KAAK,IAAI,iBAAiB,UAAU,IAAI;AAAA,EAChD;AAEA,qBAAmB,UAAU,GAAG;AAEhC,SAAO;AACX;AAEA,SAAS,cAAc,KAAkB;AACrC,QAAM,OAAO,IAAI;AAGjB,OAAK,eAAe,YAAY,IAAI,CAAC;AAGrC,OAAK,gBAAgB,QAAQ,GAAG;AAChC,OAAK,aAAa,QAAQ,IAAI;AAG9B,OAAK,eAAe,eAAe,IAAI,CAAC;AAGxC,OAAK,gBAAgB,QAAQ,GAAG;AAChC,OAAK,aAAa,QAAQ,IAAI;AAClC;AAEA,SAAS,iBAAiB,KAAkB;AACxC,QAAM,iBAAiB,IAAI,eAAe,GAAG;AAC7C,MAAI,IAAI,gBAAgB,cAAc;AAC1C;AAEA,SAAS,iBAAiB,KAAkB;AACxC,QAAM,UAAU,IAAI,IAAI,cAAc;AAEtC,MAAI,KAAK,IAAI,MAAM;AACf,UAAM,WAAW,IAAI,KAAK,IAAI,gBAAgB,IAAI,KAAK,IAAI,aAAa,GAAG,CAAC;AAC5E,YAAQ,WAAW;AAAA,EACvB,CAAC;AAED,UAAQ,UAAU,eACd,IAAI,mBAAmB,QAAQ,QAAQ,YAAY,KAAK,SAAS,GAAG,IAAI,KAAK,IAAI,iBAAiB,KAAK,CAAC;AAChH;AAEA,SAAS,iBAAiB,KAAkB;AACxC,MAAI,IAAI,SAAS,IAAI,cAAc,CAAC;AACxC;AAEO,SAAS,eAAe,MAAuB;AAClD,QAAM,OAAO,KAAK,IAAI,eAAe,aAAa;AAElD,MAAI,CAAC,WAAW,IAAI,GAAG;AACnB,WAAO,CAAC;AAAA,EACZ;AAEA,MAAI;AACJ,MAAI;AACA,iBAAa,aAAa,IAAI,EAAE,SAAS;AAAA,EAC7C,SAAS,GAAG;AACR,UAAM,IAAI,oBAAoB,oCAAoC,IAAI,KAAM,EAAY,OAAO,EAAE;AAAA,EACrG;AAEA,MAAI;AACJ,MAAI;AACA,iBAAa,KAAK,MAAM,UAAU;AAAA,EACtC,SAAS,GAAG;AACR,UAAM,IAAI,oBAAoB,oCAAoC,IAAI,KAAM,EAAY,OAAO,EAAE;AAAA,EACrG;AAEA,SAAO;AACX;AAEA,SAAS,eAAe,SAAiB;AACrC,MAAI;AACJ,MAAI,QAAQ,aAAa,SAAS;AAC9B,gBAAY,QAAQ,QAAQ,IAAI,WAAW,KAAK,QAAQ;AAAA,EAC5D,OAAO;AACH,gBAAY,QAAQ,QAAQ,IAAI,QAAQ,KAAK,SAAS;AAAA,EAC1D;AAEA,MAAI,YAAY,WAAW;AACvB,gBAAY,GAAG,SAAS,IAAI,OAAO;AAAA,EACvC;AAEA,SAAO;AACX;AAEO,SAAS,YAAY,MAAuB;AAC/C,QAAM,UAAU,KAAK,IAAI,eAAe,SAAS;AACjD,QAAM,WAAW,KAAK,IAAI,aAAa,eAAe,OAAO,CAAC;AAC9D,QAAM,aAAa,QAAQ,UAAU,KAAK,IAAI,eAAe,aAAa,CAAC;AAE3E,SAAO;AAAA,IACH,aAAa;AAAA,IACb,MAAM;AAAA,MACF,MAAM;AAAA,MACN,QAAQ;AAAA,IACZ;AAAA,IACA,SAAS;AAAA,MACL,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AACJ;",
5
+ "names": []
6
+ }