mindoodb 0.0.51 → 0.0.54

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 (249) hide show
  1. package/README-server.md +136 -71
  2. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts +30 -1
  3. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts.map +1 -1
  4. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js +67 -20
  5. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js.map +1 -1
  6. package/dist/appendonlystores/network/HttpTransport.d.ts +2 -0
  7. package/dist/appendonlystores/network/HttpTransport.d.ts.map +1 -1
  8. package/dist/appendonlystores/network/HttpTransport.js +6 -62
  9. package/dist/appendonlystores/network/HttpTransport.js.map +1 -1
  10. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts +82 -0
  11. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts.map +1 -1
  12. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js +229 -25
  13. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js.map +1 -1
  14. package/dist/browser/index.mjs +59 -0
  15. package/dist/core/BaseMindooDB.d.ts +148 -80
  16. package/dist/core/BaseMindooDB.d.ts.map +1 -1
  17. package/dist/core/BaseMindooDB.js +890 -692
  18. package/dist/core/BaseMindooDB.js.map +1 -1
  19. package/dist/core/BaseMindooTenant.d.ts +59 -7
  20. package/dist/core/BaseMindooTenant.d.ts.map +1 -1
  21. package/dist/core/BaseMindooTenant.js +407 -86
  22. package/dist/core/BaseMindooTenant.js.map +1 -1
  23. package/dist/core/BaseMindooTenantDirectory.d.ts +61 -9
  24. package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
  25. package/dist/core/BaseMindooTenantDirectory.js +363 -35
  26. package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
  27. package/dist/core/BaseMindooTenantFactory.d.ts +17 -1
  28. package/dist/core/BaseMindooTenantFactory.d.ts.map +1 -1
  29. package/dist/core/BaseMindooTenantFactory.js +286 -17
  30. package/dist/core/BaseMindooTenantFactory.js.map +1 -1
  31. package/dist/core/MindooDBServerAdmin.d.ts +44 -22
  32. package/dist/core/MindooDBServerAdmin.d.ts.map +1 -1
  33. package/dist/core/MindooDBServerAdmin.js +45 -21
  34. package/dist/core/MindooDBServerAdmin.js.map +1 -1
  35. package/dist/core/accesscontrol/DirectoryStateNode.d.ts +68 -1
  36. package/dist/core/accesscontrol/DirectoryStateNode.d.ts.map +1 -1
  37. package/dist/core/accesscontrol/DirectoryStateNode.js +157 -4
  38. package/dist/core/accesscontrol/DirectoryStateNode.js.map +1 -1
  39. package/dist/core/accesscontrol/directoryProjection.d.ts.map +1 -1
  40. package/dist/core/accesscontrol/directoryProjection.js +14 -5
  41. package/dist/core/accesscontrol/directoryProjection.js.map +1 -1
  42. package/dist/core/accesscontrol/grantKeys.d.ts +17 -14
  43. package/dist/core/accesscontrol/grantKeys.d.ts.map +1 -1
  44. package/dist/core/accesscontrol/grantKeys.js +51 -21
  45. package/dist/core/accesscontrol/grantKeys.js.map +1 -1
  46. package/dist/core/accesscontrol/types.d.ts +2 -1
  47. package/dist/core/accesscontrol/types.d.ts.map +1 -1
  48. package/dist/core/accesscontrol/types.js +3 -2
  49. package/dist/core/accesscontrol/types.js.map +1 -1
  50. package/dist/core/appendonlystores/network/AuthenticationService.d.ts +7 -0
  51. package/dist/core/appendonlystores/network/AuthenticationService.d.ts.map +1 -1
  52. package/dist/core/appendonlystores/network/AuthenticationService.js +70 -14
  53. package/dist/core/appendonlystores/network/AuthenticationService.js.map +1 -1
  54. package/dist/core/appendonlystores/network/entryWireCodec.d.ts +51 -0
  55. package/dist/core/appendonlystores/network/entryWireCodec.d.ts.map +1 -0
  56. package/dist/core/appendonlystores/network/entryWireCodec.js +93 -0
  57. package/dist/core/appendonlystores/network/entryWireCodec.js.map +1 -0
  58. package/dist/core/appendonlystores/syncStores.d.ts +147 -0
  59. package/dist/core/appendonlystores/syncStores.d.ts.map +1 -0
  60. package/dist/core/appendonlystores/syncStores.js +612 -0
  61. package/dist/core/appendonlystores/syncStores.js.map +1 -0
  62. package/dist/core/builtinDbInvariants.d.ts +83 -0
  63. package/dist/core/builtinDbInvariants.d.ts.map +1 -0
  64. package/dist/core/builtinDbInvariants.js +244 -0
  65. package/dist/core/builtinDbInvariants.js.map +1 -0
  66. package/dist/core/copy/feasibility.d.ts.map +1 -1
  67. package/dist/core/copy/feasibility.js +3 -0
  68. package/dist/core/copy/feasibility.js.map +1 -1
  69. package/dist/core/copy/flatten.d.ts.map +1 -1
  70. package/dist/core/copy/flatten.js +6 -1
  71. package/dist/core/copy/flatten.js.map +1 -1
  72. package/dist/core/copy/host.d.ts +5 -0
  73. package/dist/core/copy/host.d.ts.map +1 -1
  74. package/dist/core/copy/preflight.d.ts.map +1 -1
  75. package/dist/core/copy/preflight.js +7 -1
  76. package/dist/core/copy/preflight.js.map +1 -1
  77. package/dist/core/copy/types.d.ts +7 -0
  78. package/dist/core/copy/types.d.ts.map +1 -1
  79. package/dist/core/crypto/EntrySignature.d.ts +8 -2
  80. package/dist/core/crypto/EntrySignature.d.ts.map +1 -1
  81. package/dist/core/crypto/EntrySignature.js +14 -5
  82. package/dist/core/crypto/EntrySignature.js.map +1 -1
  83. package/dist/core/crypto/MindooDocSigner.d.ts.map +1 -1
  84. package/dist/core/crypto/MindooDocSigner.js +11 -2
  85. package/dist/core/crypto/MindooDocSigner.js.map +1 -1
  86. package/dist/core/crypto/RSAEncryption.d.ts +19 -0
  87. package/dist/core/crypto/RSAEncryption.d.ts.map +1 -1
  88. package/dist/core/crypto/RSAEncryption.js +36 -3
  89. package/dist/core/crypto/RSAEncryption.js.map +1 -1
  90. package/dist/core/crypto/privateKeyEncryption.js +1 -1
  91. package/dist/core/crypto/privateKeyEncryption.js.map +1 -1
  92. package/dist/core/crypto/rsaOaep3072.d.ts +12 -0
  93. package/dist/core/crypto/rsaOaep3072.d.ts.map +1 -0
  94. package/dist/core/crypto/rsaOaep3072.js +30 -0
  95. package/dist/core/crypto/rsaOaep3072.js.map +1 -0
  96. package/dist/core/index.d.ts +7 -3
  97. package/dist/core/index.d.ts.map +1 -1
  98. package/dist/core/index.js +33 -4
  99. package/dist/core/index.js.map +1 -1
  100. package/dist/core/join/deviceJoinBootstrap.d.ts +23 -0
  101. package/dist/core/join/deviceJoinBootstrap.d.ts.map +1 -0
  102. package/dist/core/join/deviceJoinBootstrap.js +37 -0
  103. package/dist/core/join/deviceJoinBootstrap.js.map +1 -0
  104. package/dist/core/keys/KeyBag.d.ts +20 -2
  105. package/dist/core/keys/KeyBag.d.ts.map +1 -1
  106. package/dist/core/keys/KeyBag.js +22 -10
  107. package/dist/core/keys/KeyBag.js.map +1 -1
  108. package/dist/core/logging/MindooLogger.d.ts.map +1 -1
  109. package/dist/core/logging/MindooLogger.js +65 -40
  110. package/dist/core/logging/MindooLogger.js.map +1 -1
  111. package/dist/core/tenantIdValidation.d.ts.map +1 -1
  112. package/dist/core/tenantIdValidation.js +1 -1
  113. package/dist/core/tenantIdValidation.js.map +1 -1
  114. package/dist/core/tenantSetup.d.ts +94 -9
  115. package/dist/core/tenantSetup.d.ts.map +1 -1
  116. package/dist/core/tenantSetup.js +208 -20
  117. package/dist/core/tenantSetup.js.map +1 -1
  118. package/dist/core/types.d.ts +313 -33
  119. package/dist/core/types.d.ts.map +1 -1
  120. package/dist/core/types.js +14 -1
  121. package/dist/core/types.js.map +1 -1
  122. package/dist/core/uri/joinRequestUri.d.ts.map +1 -1
  123. package/dist/core/uri/joinRequestUri.js +12 -3
  124. package/dist/core/uri/joinRequestUri.js.map +1 -1
  125. package/dist/core/userid/canonicalUsername.d.ts +66 -0
  126. package/dist/core/userid/canonicalUsername.d.ts.map +1 -0
  127. package/dist/core/userid/canonicalUsername.js +235 -0
  128. package/dist/core/userid/canonicalUsername.js.map +1 -0
  129. package/dist/core/userid/index.d.ts +9 -0
  130. package/dist/core/userid/index.d.ts.map +1 -1
  131. package/dist/core/userid/index.js +14 -0
  132. package/dist/core/userid/index.js.map +1 -1
  133. package/dist/core/userkeys/UserKeyDocument.d.ts +50 -0
  134. package/dist/core/userkeys/UserKeyDocument.d.ts.map +1 -0
  135. package/dist/core/userkeys/UserKeyDocument.js +145 -0
  136. package/dist/core/userkeys/UserKeyDocument.js.map +1 -0
  137. package/dist/core/userkeys/UserKeyManager.d.ts +170 -0
  138. package/dist/core/userkeys/UserKeyManager.d.ts.map +1 -0
  139. package/dist/core/userkeys/UserKeyManager.js +1277 -0
  140. package/dist/core/userkeys/UserKeyManager.js.map +1 -0
  141. package/dist/core/userkeys/fingerprint.d.ts +17 -0
  142. package/dist/core/userkeys/fingerprint.d.ts.map +1 -0
  143. package/dist/core/userkeys/fingerprint.js +59 -0
  144. package/dist/core/userkeys/fingerprint.js.map +1 -0
  145. package/dist/core/userkeys/index.d.ts +11 -0
  146. package/dist/core/userkeys/index.d.ts.map +1 -0
  147. package/dist/core/userkeys/index.js +49 -0
  148. package/dist/core/userkeys/index.js.map +1 -0
  149. package/dist/core/userkeys/recipients.d.ts +51 -0
  150. package/dist/core/userkeys/recipients.d.ts.map +1 -0
  151. package/dist/core/userkeys/recipients.js +292 -0
  152. package/dist/core/userkeys/recipients.js.map +1 -0
  153. package/dist/core/userkeys/resolveUserKeyDocument.d.ts +21 -0
  154. package/dist/core/userkeys/resolveUserKeyDocument.d.ts.map +1 -0
  155. package/dist/core/userkeys/resolveUserKeyDocument.js +98 -0
  156. package/dist/core/userkeys/resolveUserKeyDocument.js.map +1 -0
  157. package/dist/core/userkeys/sealedCrypto.d.ts +21 -0
  158. package/dist/core/userkeys/sealedCrypto.d.ts.map +1 -0
  159. package/dist/core/userkeys/sealedCrypto.js +79 -0
  160. package/dist/core/userkeys/sealedCrypto.js.map +1 -0
  161. package/dist/core/userkeys/sealedTypes.d.ts +72 -0
  162. package/dist/core/userkeys/sealedTypes.d.ts.map +1 -0
  163. package/dist/core/userkeys/sealedTypes.js +14 -0
  164. package/dist/core/userkeys/sealedTypes.js.map +1 -0
  165. package/dist/core/userkeys/types.d.ts +70 -0
  166. package/dist/core/userkeys/types.d.ts.map +1 -0
  167. package/dist/core/userkeys/types.js +48 -0
  168. package/dist/core/userkeys/types.js.map +1 -0
  169. package/dist/core/userkeys/validateUserKeyDocument.d.ts +19 -0
  170. package/dist/core/userkeys/validateUserKeyDocument.d.ts.map +1 -0
  171. package/dist/core/userkeys/validateUserKeyDocument.js +42 -0
  172. package/dist/core/userkeys/validateUserKeyDocument.js.map +1 -0
  173. package/dist/node/server/CapabilityMatcher.d.ts +7 -2
  174. package/dist/node/server/CapabilityMatcher.d.ts.map +1 -1
  175. package/dist/node/server/CapabilityMatcher.js +12 -3
  176. package/dist/node/server/CapabilityMatcher.js.map +1 -1
  177. package/dist/node/server/DeviceDiscoveryService.d.ts +36 -0
  178. package/dist/node/server/DeviceDiscoveryService.d.ts.map +1 -0
  179. package/dist/node/server/DeviceDiscoveryService.js +165 -0
  180. package/dist/node/server/DeviceDiscoveryService.js.map +1 -0
  181. package/dist/node/server/MindooDBServer.d.ts +27 -1
  182. package/dist/node/server/MindooDBServer.d.ts.map +1 -1
  183. package/dist/node/server/MindooDBServer.js +265 -220
  184. package/dist/node/server/MindooDBServer.js.map +1 -1
  185. package/dist/node/server/SyncEventBus.d.ts +10 -0
  186. package/dist/node/server/SyncEventBus.d.ts.map +1 -1
  187. package/dist/node/server/SyncEventBus.js.map +1 -1
  188. package/dist/node/server/SystemAdminAuth.d.ts +7 -0
  189. package/dist/node/server/SystemAdminAuth.d.ts.map +1 -1
  190. package/dist/node/server/SystemAdminAuth.js +4 -1
  191. package/dist/node/server/SystemAdminAuth.js.map +1 -1
  192. package/dist/node/server/TenantManager.d.ts +86 -5
  193. package/dist/node/server/TenantManager.d.ts.map +1 -1
  194. package/dist/node/server/TenantManager.js +235 -71
  195. package/dist/node/server/TenantManager.js.map +1 -1
  196. package/dist/node/server/add-to-network.d.ts.map +1 -1
  197. package/dist/node/server/add-to-network.js +33 -15
  198. package/dist/node/server/add-to-network.js.map +1 -1
  199. package/dist/node/server/canonicalSetupName.d.ts +22 -0
  200. package/dist/node/server/canonicalSetupName.d.ts.map +1 -0
  201. package/dist/node/server/canonicalSetupName.js +38 -0
  202. package/dist/node/server/canonicalSetupName.js.map +1 -0
  203. package/dist/node/server/config.d.ts.map +1 -1
  204. package/dist/node/server/config.js +33 -1
  205. package/dist/node/server/config.js.map +1 -1
  206. package/dist/node/server/peer/ClusterAuditLog.d.ts +64 -0
  207. package/dist/node/server/peer/ClusterAuditLog.d.ts.map +1 -0
  208. package/dist/node/server/peer/ClusterAuditLog.js +99 -0
  209. package/dist/node/server/peer/ClusterAuditLog.js.map +1 -0
  210. package/dist/node/server/peer/ClusterJobRunner.d.ts +43 -0
  211. package/dist/node/server/peer/ClusterJobRunner.d.ts.map +1 -0
  212. package/dist/node/server/peer/ClusterJobRunner.js +119 -0
  213. package/dist/node/server/peer/ClusterJobRunner.js.map +1 -0
  214. package/dist/node/server/peer/ClusterManager.d.ts +116 -0
  215. package/dist/node/server/peer/ClusterManager.d.ts.map +1 -0
  216. package/dist/node/server/peer/ClusterManager.js +274 -0
  217. package/dist/node/server/peer/ClusterManager.js.map +1 -0
  218. package/dist/node/server/peer/PeerAuthService.d.ts +69 -0
  219. package/dist/node/server/peer/PeerAuthService.d.ts.map +1 -0
  220. package/dist/node/server/peer/PeerAuthService.js +208 -0
  221. package/dist/node/server/peer/PeerAuthService.js.map +1 -0
  222. package/dist/node/server/peer/PeerReplicator.d.ts +232 -0
  223. package/dist/node/server/peer/PeerReplicator.d.ts.map +1 -0
  224. package/dist/node/server/peer/PeerReplicator.js +879 -0
  225. package/dist/node/server/peer/PeerReplicator.js.map +1 -0
  226. package/dist/node/server/peer/routes.d.ts +66 -0
  227. package/dist/node/server/peer/routes.d.ts.map +1 -0
  228. package/dist/node/server/peer/routes.js +322 -0
  229. package/dist/node/server/peer/routes.js.map +1 -0
  230. package/dist/node/server/peer/types.d.ts +244 -0
  231. package/dist/node/server/peer/types.d.ts.map +1 -0
  232. package/dist/node/server/peer/types.js +189 -0
  233. package/dist/node/server/peer/types.js.map +1 -0
  234. package/dist/node/server/server.d.ts +1 -1
  235. package/dist/node/server/server.js +18 -37
  236. package/dist/node/server/server.js.map +1 -1
  237. package/dist/node/server/serverinit.d.ts +2 -1
  238. package/dist/node/server/serverinit.d.ts.map +1 -1
  239. package/dist/node/server/serverinit.js +34 -12
  240. package/dist/node/server/serverinit.js.map +1 -1
  241. package/dist/node/server/types.d.ts +42 -30
  242. package/dist/node/server/types.d.ts.map +1 -1
  243. package/dist/node/server/types.js +1 -7
  244. package/dist/node/server/types.js.map +1 -1
  245. package/dist/node/server/validation.d.ts +0 -6
  246. package/dist/node/server/validation.d.ts.map +1 -1
  247. package/dist/node/server/validation.js +1 -7
  248. package/dist/node/server/validation.js.map +1 -1
  249. package/package.json +5 -5
@@ -4,6 +4,10 @@ exports.BaseMindooTenantFactory = void 0;
4
4
  const types_1 = require("./types");
5
5
  const BaseMindooTenant_1 = require("./BaseMindooTenant");
6
6
  const privateKeyEncryption_1 = require("./crypto/privateKeyEncryption");
7
+ const rsaOaep3072_1 = require("./crypto/rsaOaep3072");
8
+ const types_2 = require("./userkeys/types");
9
+ const RSAEncryption_1 = require("./crypto/RSAEncryption");
10
+ const deviceJoinBootstrap_1 = require("./join/deviceJoinBootstrap");
7
11
  const pbkdf2Iterations_1 = require("./crypto/pbkdf2Iterations");
8
12
  const KeyBag_1 = require("./keys/KeyBag");
9
13
  const logging_1 = require("./logging");
@@ -12,6 +16,7 @@ const joinRequestUri_1 = require("./uri/joinRequestUri");
12
16
  const tenantIdValidation_1 = require("./tenantIdValidation");
13
17
  const timeSource_1 = require("./utils/timeSource");
14
18
  const tenantSetup_1 = require("./tenantSetup");
19
+ const types_3 = require("./appendonlystores/types");
15
20
  /**
16
21
  * BaseTenantFactory is a platform-agnostic implementation of TenantFactory
17
22
  * that creates and manages tenants and users.
@@ -70,6 +75,7 @@ class BaseMindooTenantFactory {
70
75
  signingKey: options.preDecryptedUserKeys.signingKey,
71
76
  encryptionKey: options.preDecryptedUserKeys.encryptionKey,
72
77
  cacheEncryptionKey: options.preDecryptedUserKeys.cacheEncryptionKey,
78
+ userKeyPrivateBytes: options.preDecryptedUserKeys.userKeyPrivateBytes,
73
79
  }
74
80
  : undefined);
75
81
  // Initialize the tenant
@@ -158,6 +164,17 @@ class BaseMindooTenantFactory {
158
164
  this.logger.debug(`Created user ID: ${username}`);
159
165
  return privateUserId;
160
166
  }
167
+ async ensureUserKeyPair(user, password) {
168
+ if (user.userKeyPair)
169
+ return user.userKeyPair;
170
+ const generated = await (0, rsaOaep3072_1.generateRsaOaep3072)(this.cryptoAdapter);
171
+ const encrypted = await (0, privateKeyEncryption_1.encryptPrivateKey)(this.cryptoAdapter, generated.privateKeyBytes, password, types_2.USERKEY_PRIVATE_SALT);
172
+ user.userKeyPair = {
173
+ publicKey: generated.publicKeyPem,
174
+ privateKey: encrypted,
175
+ };
176
+ return user.userKeyPair;
177
+ }
161
178
  /**
162
179
  * Removes the private information from a private user ID and returns a public user ID.
163
180
  */
@@ -174,6 +191,26 @@ class BaseMindooTenantFactory {
174
191
  const decryptedEncryptionKey = await (0, privateKeyEncryption_1.decryptPrivateKey)(this.cryptoAdapter, identity.userEncryptionKeyPair.privateKey, oldPassword, "encryption");
175
192
  const encryptedSigningKey = await (0, privateKeyEncryption_1.encryptPrivateKey)(this.cryptoAdapter, new Uint8Array(decryptedSigningKey), newPassword, "signing");
176
193
  const encryptedEncryptionKey = await (0, privateKeyEncryption_1.encryptPrivateKey)(this.cryptoAdapter, new Uint8Array(decryptedEncryptionKey), newPassword, "encryption");
194
+ let userKeyPair;
195
+ if (identity.userKeyPair) {
196
+ try {
197
+ userKeyPair = {
198
+ publicKey: identity.userKeyPair.publicKey,
199
+ privateKey: await (0, privateKeyEncryption_1.encryptPrivateKey)(this.cryptoAdapter, new Uint8Array(await (0, privateKeyEncryption_1.decryptPrivateKey)(this.cryptoAdapter, identity.userKeyPair.privateKey, oldPassword, types_2.USERKEY_PRIVATE_SALT)), newPassword, types_2.USERKEY_PRIVATE_SALT),
200
+ };
201
+ }
202
+ catch (error) {
203
+ // Haven verifies the password by calling this with old === new.
204
+ // A stored User-Key that cannot be opened (wrong salt, truncated JSON)
205
+ // must not block unlocking the signing/encryption keys.
206
+ try {
207
+ this.logger.warn(`Skipping User-Key re-encrypt for ${identity.username}; signing/encryption keys still opened`, error);
208
+ }
209
+ catch {
210
+ // Logging a DOMException must never fail password change / unlock.
211
+ }
212
+ }
213
+ }
177
214
  return {
178
215
  username: identity.username,
179
216
  userSigningKeyPair: {
@@ -184,6 +221,7 @@ class BaseMindooTenantFactory {
184
221
  publicKey: identity.userEncryptionKeyPair.publicKey,
185
222
  privateKey: encryptedEncryptionKey,
186
223
  },
224
+ ...(userKeyPair ? { userKeyPair } : {}),
187
225
  };
188
226
  }
189
227
  /**
@@ -270,13 +308,33 @@ class BaseMindooTenantFactory {
270
308
  // (no merge step needed) and returned as-is in the result, so the
271
309
  // caller can persist it once after createTenant returns.
272
310
  const keyBag = options.existingKeyBag ?? new KeyBag_1.KeyBag(appUser.userEncryptionKeyPair.privateKey, options.userPassword, this.cryptoAdapter, this.logger.createChild("KeyBag"));
273
- await keyBag.createDocKey(tenantId, types_1.DEFAULT_TENANT_KEY_ID);
274
- await keyBag.createDocKey(tenantId, types_1.PUBLIC_INFOS_KEY_ID);
311
+ // Stamp the founding keys: `createdAt` is the version identity travelling
312
+ // with every delivery and join response, so leaving it unset would make all
313
+ // versions of a key indistinguishable to delivery dedupe.
314
+ const keyCreatedAt = Date.now();
315
+ await keyBag.createDocKey(tenantId, types_1.DEFAULT_TENANT_KEY_ID, keyCreatedAt);
316
+ await keyBag.createDocKey(tenantId, types_1.PUBLIC_INFOS_KEY_ID, keyCreatedAt);
275
317
  // 3. Open tenant
276
318
  const tenant = await this.openTenant(tenantId, adminUser.userSigningKeyPair.publicKey, adminUser.userEncryptionKeyPair.publicKey, appUser, options.userPassword, keyBag, options.preDecryptedAppUserKeys ? { preDecryptedUserKeys: options.preDecryptedAppUserKeys } : undefined);
277
319
  // 4. Register the app user in the directory
278
320
  const directory = await tenant.openDirectory();
279
- await directory.registerUser(this.toPublicUserId(appUser), adminUser.userSigningKeyPair.privateKey, options.adminPassword);
321
+ await directory.registerUser(this.toPublicUserId(appUser), adminUser.userSigningKeyPair.privateKey, options.adminPassword, undefined, "First device");
322
+ // Mint the founder's User-Key while admin can still sign the `default`
323
+ // wrap into `acl_keydistribution_default` (User-Key target, not per
324
+ // device). Later devices import `default` from that document after they
325
+ // receive the User-Key.
326
+ tenant.noteUserDirectoryFetched?.();
327
+ // Open (or mint) the identity User-Key *before* reconcile so a live-bag
328
+ // empty password cannot generate a throwaway pair and wrap `default` to it.
329
+ if (typeof tenant.ensureLocalUserKeyPair === "function") {
330
+ await tenant.ensureLocalUserKeyPair();
331
+ }
332
+ if (typeof tenant.reconcileUserKeys === "function") {
333
+ await tenant.reconcileUserKeys({ allowSelfCreate: true });
334
+ }
335
+ if (typeof directory.autoDistributeKeysToUser === "function") {
336
+ await directory.autoDistributeKeysToUser(this.toPublicUserId(appUser).username, [types_1.DEFAULT_TENANT_KEY_ID], adminUser.userSigningKeyPair.privateKey, options.adminPassword);
337
+ }
280
338
  // 5. Enforce the v2 storage format from creation (default on). We write an
281
339
  // admin-signed default policy carrying `requireMetadataSignatureSince =
282
340
  // now`, but with `disableAllAccessChecksAndPolicies: true` so this turns
@@ -292,10 +350,21 @@ class BaseMindooTenantFactory {
292
350
  }, adminUser.userSigningKeyPair.privateKey, options.adminPassword);
293
351
  }
294
352
  const tenantLabel = typeof options.tenantLabel === "string" ? options.tenantLabel.trim() : "";
353
+ const setupDb = await tenant.openDB("directory", { adminOnlyDb: true });
295
354
  if (tenantLabel) {
296
- const directoryDb = await tenant.openDB("directory", { adminOnlyDb: true });
297
- await (0, tenantSetup_1.writeTenantSetupLabel)(directoryDb, tenantLabel, adminUser.userSigningKeyPair, options.adminPassword);
355
+ await (0, tenantSetup_1.writeTenantSetupLabel)(setupDb, tenantLabel, adminUser.userSigningKeyPair, options.adminPassword, tenant);
298
356
  }
357
+ // The admin holds no grantaccess document, so `tenantsetup` is the only
358
+ // place members can learn who administers the tenant.
359
+ await (0, tenantSetup_1.writeTenantSetupAdministrator)(setupDb, {
360
+ username: adminUser.username,
361
+ keyPairs: [
362
+ {
363
+ signingPublicKey: adminUser.userSigningKeyPair.publicKey,
364
+ encryptionPublicKey: adminUser.userEncryptionKeyPair.publicKey,
365
+ },
366
+ ],
367
+ }, adminUser.userSigningKeyPair, options.adminPassword, tenant);
299
368
  console.log(`[createTenant] ✓ Tenant "${tenantId}" created successfully`);
300
369
  this.logger.info(`Tenant "${tenantId}" created successfully`);
301
370
  return { tenant, adminUser, appUser, keyBag };
@@ -324,6 +393,9 @@ class BaseMindooTenantFactory {
324
393
  if (trimmedLabel.length > 0) {
325
394
  joinRequest.label = trimmedLabel;
326
395
  }
396
+ if (user.userKeyPair?.publicKey) {
397
+ joinRequest.userPublicKey = user.userKeyPair.publicKey;
398
+ }
327
399
  if (options?.format === "uri") {
328
400
  return (0, joinRequestUri_1.encodeJoinRequestUri)(joinRequest);
329
401
  }
@@ -354,8 +426,8 @@ class BaseMindooTenantFactory {
354
426
  // supplied, the joined tenant's keys are added to the existing bag
355
427
  // in place; the same bag instance is returned to the caller.
356
428
  const keyBag = options.existingKeyBag ?? new KeyBag_1.KeyBag(options.user.userEncryptionKeyPair.privateKey, options.password, this.cryptoAdapter, this.logger.createChild("KeyBag"));
357
- if (response.v !== 2 || !Array.isArray(response.encryptedDocKeys)) {
358
- throw new Error("Invalid join response: expected a v2 encryptedDocKeys payload");
429
+ if ((response.v !== 2 && response.v !== 3) || !Array.isArray(response.encryptedDocKeys)) {
430
+ throw new Error("Invalid join response: expected a v2 or v3 encryptedDocKeys payload");
359
431
  }
360
432
  if (!response.encryptedDocKeys.some((entry) => entry.keyId === types_1.PUBLIC_INFOS_KEY_ID)) {
361
433
  throw new Error(`Invalid join response: missing required "${types_1.PUBLIC_INFOS_KEY_ID}" document key`);
@@ -363,16 +435,11 @@ class BaseMindooTenantFactory {
363
435
  // 2. Import all encrypted document key versions from the join response.
364
436
  // Preserve the version timestamps so key rotation ordering remains stable
365
437
  // in the recipient's KeyBag.
366
- for (const entry of response.encryptedDocKeys) {
367
- if (!entry.keyId || !Array.isArray(entry.versions) || entry.versions.length === 0) {
368
- throw new Error("Invalid join response: encryptedDocKeys entries must include a keyId and versions");
369
- }
370
- for (const version of entry.versions) {
371
- await keyBag.decryptAndImportKey("doc", response.tenantId, entry.keyId, {
372
- ...version.encryptedKey,
373
- createdAt: version.createdAt ?? version.encryptedKey.createdAt,
374
- }, options.sharePassword);
375
- }
438
+ if (response.v === 3) {
439
+ await this.importRsaWrappedJoinKeys(response, options, keyBag);
440
+ }
441
+ else {
442
+ await this.importPasswordWrappedJoinKeys(response, options, keyBag);
376
443
  }
377
444
  // 3. Adopt the username the admin registered. It may differ from the one
378
445
  // this device asked for (corrected spelling, or supplied for a nameless
@@ -392,6 +459,208 @@ class BaseMindooTenantFactory {
392
459
  this.logger.info(`Joined tenant "${response.tenantId}" successfully`);
393
460
  return { tenant, keyBag, user: effectiveUser };
394
461
  }
462
+ /**
463
+ * Prove device signing-key possession and discover tenants on a MindooDB server
464
+ * (`POST /device/challenge` + `POST /device/discover`).
465
+ */
466
+ async discoverTenantsOnServer(serverUrl, options) {
467
+ const baseUrl = serverUrl.replace(/\/$/, "");
468
+ const subtle = this.cryptoAdapter.getSubtle();
469
+ const signingKey = options.preDecryptedUserKeys?.signingKey
470
+ ?? await subtle.importKey("pkcs8", await (0, privateKeyEncryption_1.decryptPrivateKey)(this.cryptoAdapter, options.user.userSigningKeyPair.privateKey, options.password, "signing"), { name: "Ed25519" }, false, ["sign"]);
471
+ const challengeRes = await fetch(`${baseUrl}/device/challenge`, {
472
+ method: "POST",
473
+ headers: { "Content-Type": "application/json" },
474
+ body: JSON.stringify({
475
+ signingPublicKey: options.user.userSigningKeyPair.publicKey,
476
+ }),
477
+ });
478
+ if (!challengeRes.ok) {
479
+ const errorBody = await challengeRes.text();
480
+ throw new Error(`Device discovery challenge failed (HTTP ${challengeRes.status}): ${errorBody}`);
481
+ }
482
+ const { challenge } = (await challengeRes.json());
483
+ if (typeof challenge !== "string" || !challenge) {
484
+ throw new Error("Device discovery challenge response missing challenge");
485
+ }
486
+ const messageBytes = new TextEncoder().encode(challenge);
487
+ const signatureBuffer = await subtle.sign({ name: "Ed25519" }, signingKey, messageBytes);
488
+ const signature = this.uint8ArrayToBase64(new Uint8Array(signatureBuffer));
489
+ const discoverRes = await fetch(`${baseUrl}/device/discover`, {
490
+ method: "POST",
491
+ headers: { "Content-Type": "application/json" },
492
+ body: JSON.stringify({ challenge, signature }),
493
+ });
494
+ if (!discoverRes.ok) {
495
+ const errorBody = await discoverRes.text();
496
+ throw new Error(`Device discovery failed (HTTP ${discoverRes.status}): ${errorBody}`);
497
+ }
498
+ const body = (await discoverRes.json());
499
+ return Array.isArray(body.tenants) ? body.tenants : [];
500
+ }
501
+ /**
502
+ * Bootstrap a tenant from a device-discovery delivery: unwrap `$publicinfos`,
503
+ * adopt the registered username from the per-device join bootstrap (when
504
+ * present), open the tenant, optionally pull the directory and reconcile
505
+ * distributions.
506
+ */
507
+ async bootstrapTenantFromDelivery(delivery, options) {
508
+ if (!delivery.tenantId || !delivery.wrappedPublicInfosKey) {
509
+ throw new Error("Invalid device delivery: tenantId and wrappedPublicInfosKey are required");
510
+ }
511
+ (0, tenantIdValidation_1.validateTenantId)(delivery.tenantId);
512
+ const keyBag = options.existingKeyBag ??
513
+ new KeyBag_1.KeyBag(options.user.userEncryptionKeyPair.privateKey, options.password, this.cryptoAdapter, this.logger.createChild("KeyBag"));
514
+ const decryptKey = await this.resolveJoinRecipientEncryptionKey({
515
+ user: options.user,
516
+ password: options.password,
517
+ preDecryptedUserKeys: options.preDecryptedUserKeys,
518
+ });
519
+ const rsa = new RSAEncryption_1.RSAEncryption(this.cryptoAdapter, this.logger.createChild("RSAEncryption"));
520
+ const wrappedList = delivery.wrappedPublicInfosKeys && delivery.wrappedPublicInfosKeys.length > 0
521
+ ? delivery.wrappedPublicInfosKeys
522
+ : [delivery.wrappedPublicInfosKey];
523
+ try {
524
+ for (let index = 0; index < wrappedList.length; index++) {
525
+ const rawPublicInfos = await rsa.unwrapKeyFromBase64(wrappedList[index], decryptKey);
526
+ // wrappedList is newest-first (server getAllKeys order) and the KeyBag
527
+ // sorts stably, so inserting in that order already yields newest-first
528
+ // without a `createdAt`. The delivery does not carry the real rotation
529
+ // stamps; a synthetic rank would masquerade as both a creation date
530
+ // (epoch 0 + n ms) and a version identity in delivery dedupe.
531
+ await keyBag.set("doc", delivery.tenantId, types_1.PUBLIC_INFOS_KEY_ID, rawPublicInfos);
532
+ }
533
+ this.logger.info(`Unwrapped ${wrappedList.length} $publicinfos version(s) from device discovery for tenant ${delivery.tenantId}`);
534
+ }
535
+ catch (error) {
536
+ const message = error instanceof Error ? error.message : String(error);
537
+ throw new Error(`Cannot unwrap device discovery delivery: it is bound to a different device's encryption key (${message})`);
538
+ }
539
+ let user = options.user;
540
+ let bootstrapTenantLabel;
541
+ let bootstrapAdminUsername;
542
+ const wrappedJoinResponse = typeof delivery.wrappedJoinResponse === "string" ? delivery.wrappedJoinResponse.trim() : "";
543
+ if (wrappedJoinResponse) {
544
+ try {
545
+ const bootstrap = await (0, deviceJoinBootstrap_1.unwrapDeviceJoinBootstrap)(rsa, wrappedJoinResponse, decryptKey);
546
+ const registeredUsername = bootstrap.username.trim();
547
+ if (registeredUsername.length > 0 && registeredUsername !== user.username) {
548
+ this.logger.info(`Adopting registered username "${registeredUsername}" from device join bootstrap (was "${user.username}")`);
549
+ user = { ...user, username: registeredUsername };
550
+ }
551
+ if (bootstrap.tenantLabel)
552
+ bootstrapTenantLabel = bootstrap.tenantLabel;
553
+ if (bootstrap.adminUsername)
554
+ bootstrapAdminUsername = bootstrap.adminUsername;
555
+ }
556
+ catch (error) {
557
+ const message = error instanceof Error ? error.message : String(error);
558
+ throw new Error(`Cannot unwrap device join bootstrap: it is bound to a different device's encryption key (${message})`);
559
+ }
560
+ }
561
+ const tenant = await this.openTenant(delivery.tenantId, delivery.adminSigningPublicKey, delivery.adminEncryptionPublicKey, user, options.password, keyBag, options.preDecryptedUserKeys
562
+ ? { preDecryptedUserKeys: options.preDecryptedUserKeys }
563
+ : undefined);
564
+ if (options.serverUrl) {
565
+ const remoteDirectory = await tenant.connectToServer(options.serverUrl, "directory", types_3.StoreKind.docs);
566
+ const directoryDb = await tenant.openDB("directory", { adminOnlyDb: true });
567
+ try {
568
+ await directoryDb.pullChangesFrom(remoteDirectory);
569
+ }
570
+ catch (error) {
571
+ const name = error instanceof Error ? error.name : "Error";
572
+ const message = error instanceof Error ? error.message : String(error);
573
+ throw new Error(`Cannot pull directory after device discovery (${name}: ${message})`);
574
+ }
575
+ if (typeof tenant.reconcileKeyDistributionsForCurrentUser === "function") {
576
+ const reconcile = await tenant.reconcileKeyDistributionsForCurrentUser();
577
+ if (reconcile.adoptedUsername && reconcile.adoptedUsername !== user.username) {
578
+ user = { ...user, username: reconcile.adoptedUsername };
579
+ }
580
+ }
581
+ // User-Key lives in `userdirectory` (encrypted with `$publicinfos`).
582
+ // Dist unwrap needs that private key; pulling directory alone leaves
583
+ // Device 2 trying its locally generated pair against the published wrap.
584
+ try {
585
+ const remoteUserDirectory = await tenant.connectToServer(options.serverUrl, types_1.USER_DIRECTORY_DB_ID, types_3.StoreKind.docs);
586
+ const userDirectoryDb = await tenant.openDB(types_1.USER_DIRECTORY_DB_ID);
587
+ await userDirectoryDb.pullChangesFrom(remoteUserDirectory);
588
+ tenant.noteUserDirectoryFetched?.();
589
+ await tenant.reconcileUserKeys?.({ allowSelfCreate: false });
590
+ if (typeof tenant.reconcileKeyDistributionsForCurrentUser === "function") {
591
+ await tenant.reconcileKeyDistributionsForCurrentUser();
592
+ }
593
+ }
594
+ catch (error) {
595
+ this.logger.warn(`bootstrapTenantFromDelivery: userdirectory pull/reconcile failed: ${error}`);
596
+ }
597
+ }
598
+ let tenantLabel = bootstrapTenantLabel;
599
+ try {
600
+ const directoryDb = await tenant.openDB("directory", { adminOnlyDb: true });
601
+ const liveLabel = await (0, tenantSetup_1.readTenantSetupLabel)(directoryDb, tenant);
602
+ if (liveLabel)
603
+ tenantLabel = liveLabel;
604
+ }
605
+ catch {
606
+ // Label needs `default`; the join-bootstrap snapshot is the fallback.
607
+ }
608
+ return {
609
+ tenant,
610
+ keyBag,
611
+ user,
612
+ ...(tenantLabel ? { tenantLabel } : {}),
613
+ ...(bootstrapAdminUsername ? { adminUsername: bootstrapAdminUsername } : {}),
614
+ };
615
+ }
616
+ async importRsaWrappedJoinKeys(response, options, keyBag) {
617
+ const decryptKey = await this.resolveJoinRecipientEncryptionKey(options);
618
+ const rsa = new RSAEncryption_1.RSAEncryption(this.cryptoAdapter, this.logger.createChild("RSAEncryption"));
619
+ for (const entry of response.encryptedDocKeys) {
620
+ if (!entry.keyId || !Array.isArray(entry.versions) || entry.versions.length === 0) {
621
+ throw new Error("Invalid join response: encryptedDocKeys entries must include a keyId and versions");
622
+ }
623
+ for (const version of entry.versions) {
624
+ if (!version.wrappedKey) {
625
+ throw new Error("Invalid join response: v3 versions must include wrappedKey");
626
+ }
627
+ try {
628
+ const rawKey = await rsa.unwrapKeyFromBase64(version.wrappedKey, decryptKey);
629
+ await keyBag.set("doc", response.tenantId, entry.keyId, rawKey, version.createdAt);
630
+ }
631
+ catch (error) {
632
+ const message = error instanceof Error ? error.message : String(error);
633
+ throw new Error(`Cannot decrypt join response: it is bound to a different device's encryption key (${message})`);
634
+ }
635
+ }
636
+ }
637
+ }
638
+ async importPasswordWrappedJoinKeys(response, options, keyBag) {
639
+ if (!options.sharePassword) {
640
+ throw new Error("This join response requires a sharePassword (legacy v2)");
641
+ }
642
+ for (const entry of response.encryptedDocKeys) {
643
+ if (!entry.keyId || !Array.isArray(entry.versions) || entry.versions.length === 0) {
644
+ throw new Error("Invalid join response: encryptedDocKeys entries must include a keyId and versions");
645
+ }
646
+ for (const version of entry.versions) {
647
+ if (!version.encryptedKey) {
648
+ throw new Error("Invalid join response: v2 versions must include encryptedKey");
649
+ }
650
+ await keyBag.decryptAndImportKey("doc", response.tenantId, entry.keyId, {
651
+ ...version.encryptedKey,
652
+ createdAt: version.createdAt ?? version.encryptedKey.createdAt,
653
+ }, options.sharePassword);
654
+ }
655
+ }
656
+ }
657
+ async resolveJoinRecipientEncryptionKey(options) {
658
+ if (options.preDecryptedUserKeys?.encryptionKey) {
659
+ return options.preDecryptedUserKeys.encryptionKey;
660
+ }
661
+ const decryptedKeyBuffer = await (0, privateKeyEncryption_1.decryptPrivateKey)(this.cryptoAdapter, options.user.userEncryptionKeyPair.privateKey, options.password, "encryption");
662
+ return this.cryptoAdapter.getSubtle().importKey("pkcs8", decryptedKeyBuffer, { name: "RSA-OAEP", hash: "SHA-256" }, false, ["decrypt"]);
663
+ }
395
664
  /**
396
665
  * Internal method to encrypt a private key using password-based key derivation.
397
666
  * This is the reverse of BaseMindooTenant.decryptPrivateKey().
@@ -1 +1 @@
1
- {"version":3,"file":"BaseMindooTenantFactory.js","sourceRoot":"","sources":["../../src/core/BaseMindooTenantFactory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseMindooTenantFactory.js","sourceRoot":"","sources":["../../src/core/BaseMindooTenantFactory.ts"],"names":[],"mappings":"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"}
@@ -41,16 +41,25 @@ export interface MindooDBServerAdminOptions {
41
41
  /** Platform crypto (e.g. `NodeCryptoAdapter`, browser `createCryptoAdapter()`, RN adapter). */
42
42
  cryptoAdapter: CryptoAdapter;
43
43
  }
44
+ /**
45
+ * One entry of `trusted-servers.json`.
46
+ *
47
+ * The keys establish trust; the optional fields turn that trust into an active
48
+ * replication link. Without a `url` this server accepts the peer's inbound
49
+ * connections but never dials out to it.
50
+ */
44
51
  interface TrustedServer {
45
52
  name: string;
46
53
  signingPublicKey: string;
47
54
  encryptionPublicKey: string;
48
- }
49
- interface SyncServerConfig {
50
- name: string;
51
- url: string;
52
- syncIntervalMs?: number;
53
- databases: string[];
55
+ /** Base URL of the peer. Omit for a trust-only entry. */
56
+ url?: string;
57
+ /** Which way entries flow. Defaults to `bidirectional`. */
58
+ direction?: "bidirectional" | "push" | "pull" | "disabled";
59
+ /** Mesh shape. Defaults to `peer`; two spokes never dial each other. */
60
+ role?: "peer" | "hub" | "spoke";
61
+ /** How eagerly attachment blobs follow their documents. Defaults to `eager`. */
62
+ attachments?: "eager" | "lazy" | "never";
54
63
  }
55
64
  /**
56
65
  * One system-admin identity as stored in server `config.json`.
@@ -163,30 +172,43 @@ export declare class MindooDBServerAdmin {
163
172
  success: boolean;
164
173
  message?: string;
165
174
  }>;
175
+ /** This node's peers, their roles and whether a session is live. */
176
+ getClusterTopology(): Promise<unknown>;
177
+ /** Health, lag, retry depth and last error per peer. */
178
+ getClusterStatus(): Promise<unknown>;
179
+ /** Per-peer replication state for one tenant. */
180
+ getClusterTenantStatus(tenantId: string): Promise<unknown>;
166
181
  /**
167
- * List sync server targets configured for one tenant.
168
- */
169
- listTenantSyncServers(tenantId: string): Promise<SyncServerConfig[]>;
170
- /**
171
- * Add one sync target for a tenant.
182
+ * Dispatch a cluster action. Returns a `jobId` immediately; poll
183
+ * {@link getClusterJob} for progress and the result.
184
+ *
185
+ * Omit `scope.peer` to act on every peer.
172
186
  */
173
- addTenantSyncServer(tenantId: string, config: SyncServerConfig): Promise<{
174
- success: boolean;
175
- message?: string;
187
+ runClusterAction(action: "sync" | "retry-rejected" | "refresh-intersection" | "pause" | "resume", scope?: {
188
+ peer?: string;
189
+ tenantId?: string;
190
+ dbId?: string;
191
+ }): Promise<{
192
+ jobId: string;
193
+ job: unknown;
176
194
  }>;
195
+ getClusterJob(jobId: string): Promise<unknown>;
196
+ listClusterJobs(limit?: number): Promise<unknown>;
177
197
  /**
178
- * Remove one tenant-specific sync target.
198
+ * Read the administrative audit log, newest first. `before` is the
199
+ * `nextCursor` of the previous page.
179
200
  */
180
- removeTenantSyncServer(tenantId: string, serverName: string): Promise<{
201
+ getClusterAudit(options?: {
202
+ limit?: number;
203
+ before?: string;
204
+ }): Promise<unknown>;
205
+ /** Create or replace a peer's replication settings (url, role, direction). */
206
+ saveClusterPeer(name: string, peer: Partial<TrustedServer>, mode?: "create" | "update"): Promise<{
181
207
  success: boolean;
182
- message?: string;
208
+ peer: TrustedServer;
183
209
  }>;
184
- /**
185
- * Trigger an on-demand sync for one tenant.
186
- */
187
- triggerTenantSync(tenantId: string): Promise<{
210
+ deleteClusterPeer(name: string): Promise<{
188
211
  success: boolean;
189
- message?: string;
190
212
  }>;
191
213
  /**
192
214
  * Fetch the currently active runtime server config.
@@ -1 +1 @@
1
- {"version":3,"file":"MindooDBServerAdmin.d.ts","sourceRoot":"","sources":["../../src/core/MindooDBServerAdmin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MindooDBServerAdmin.d.ts","sourceRoot":"","sources":["../../src/core/MindooDBServerAdmin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,aAAa,CAAC;IAC/B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,SAAS,CAAC;IAClC,+FAA+F;IAC/F,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,SAAS,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC3D,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;IAChC,gFAAgF;IAChF,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;CAC1C;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,UAAU,kBAAkB;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,gBAAgB,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IACvC,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC,CAAC;CACJ;AA+CD;;;;;;;;GAQG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,aAAa,CAAgB;IAErC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,cAAc,CAAa;IAEnC;;OAEG;gBACS,OAAO,EAAE,0BAA0B;IAkB/C;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKtC;;;;;OAKG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAyBpE;;OAEG;IACG,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAQlD;;OAEG;IACG,YAAY,CAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAWlD;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAKpD;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAI9F;;OAEG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAgB9F,oEAAoE;IAC9D,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI5C,wDAAwD;IAClD,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI1C,iDAAiD;IAC3C,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOhE;;;;;OAKG;IACG,gBAAgB,CACpB,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,sBAAsB,GAAG,OAAO,GAAG,QAAQ,EAC/E,KAAK,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAC9D,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;IAQrC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAO9C,eAAe,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAInD;;;OAGG;IACG,eAAe,CAAC,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAW1F,8EAA8E;IACxE,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,EAC5B,IAAI,GAAE,QAAQ,GAAG,QAAmB,GACnC,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,aAAa,CAAA;KAAE,CAAC;IAQ/C,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAWpE;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IAIxC;;;;;OAKG;IACG,YAAY,CAChB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAIvE;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAKtD;;OAEG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAOzE;;;;;OAKG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIxE;;;;;OAKG;IACG,qBAAqB,CACzB,SAAS,EAAE,oBAAoB,GAC9B,OAAO,CAAC;QAAE,SAAS,EAAE,oBAAoB,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAgBhE;;;;;OAKG;IACG,sBAAsB,CAC1B,SAAS,EAAE,oBAAoB,EAC/B,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,YAAY,CAAC;QACrB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,mBAAmB,EAAE,MAAM,EAAE,CAAC;QAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IAuCF;;;OAGG;IACG,uBAAuB,CAC3B,SAAS,EAAE,oBAAoB,EAC/B,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC7B,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,YAAY,CAAC;QACrB,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;YA0CY,oBAAoB;YA4BpB,mBAAmB;YA0FnB,eAAe;YA6Bf,qBAAqB;IAYnC;;OAEG;YACW,iBAAiB;CAYhC"}