mindoodb 0.0.50 → 0.0.53

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 (198) hide show
  1. package/README-server.md +11 -2
  2. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts +13 -1
  3. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts.map +1 -1
  4. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js +45 -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 +24 -0
  11. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts.map +1 -1
  12. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js +75 -24
  13. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js.map +1 -1
  14. package/dist/browser/index.mjs +72 -0
  15. package/dist/core/BaseMindooDB.d.ts +89 -14
  16. package/dist/core/BaseMindooDB.d.ts.map +1 -1
  17. package/dist/core/BaseMindooDB.js +692 -201
  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 +427 -90
  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 +292 -16
  30. package/dist/core/BaseMindooTenantFactory.js.map +1 -1
  31. package/dist/core/accesscontrol/DirectoryStateNode.d.ts +68 -1
  32. package/dist/core/accesscontrol/DirectoryStateNode.d.ts.map +1 -1
  33. package/dist/core/accesscontrol/DirectoryStateNode.js +157 -4
  34. package/dist/core/accesscontrol/DirectoryStateNode.js.map +1 -1
  35. package/dist/core/accesscontrol/directoryProjection.d.ts.map +1 -1
  36. package/dist/core/accesscontrol/directoryProjection.js +14 -5
  37. package/dist/core/accesscontrol/directoryProjection.js.map +1 -1
  38. package/dist/core/accesscontrol/grantKeys.d.ts +17 -14
  39. package/dist/core/accesscontrol/grantKeys.d.ts.map +1 -1
  40. package/dist/core/accesscontrol/grantKeys.js +51 -21
  41. package/dist/core/accesscontrol/grantKeys.js.map +1 -1
  42. package/dist/core/accesscontrol/types.d.ts +13 -7
  43. package/dist/core/accesscontrol/types.d.ts.map +1 -1
  44. package/dist/core/accesscontrol/types.js +16 -10
  45. package/dist/core/accesscontrol/types.js.map +1 -1
  46. package/dist/core/appendonlystores/network/AuthenticationService.d.ts +7 -0
  47. package/dist/core/appendonlystores/network/AuthenticationService.d.ts.map +1 -1
  48. package/dist/core/appendonlystores/network/AuthenticationService.js +70 -14
  49. package/dist/core/appendonlystores/network/AuthenticationService.js.map +1 -1
  50. package/dist/core/appendonlystores/network/entryWireCodec.d.ts +51 -0
  51. package/dist/core/appendonlystores/network/entryWireCodec.d.ts.map +1 -0
  52. package/dist/core/appendonlystores/network/entryWireCodec.js +93 -0
  53. package/dist/core/appendonlystores/network/entryWireCodec.js.map +1 -0
  54. package/dist/core/builtinDbInvariants.d.ts +53 -0
  55. package/dist/core/builtinDbInvariants.d.ts.map +1 -0
  56. package/dist/core/builtinDbInvariants.js +147 -0
  57. package/dist/core/builtinDbInvariants.js.map +1 -0
  58. package/dist/core/copy/feasibility.d.ts.map +1 -1
  59. package/dist/core/copy/feasibility.js +3 -0
  60. package/dist/core/copy/feasibility.js.map +1 -1
  61. package/dist/core/copy/flatten.d.ts.map +1 -1
  62. package/dist/core/copy/flatten.js +7 -2
  63. package/dist/core/copy/flatten.js.map +1 -1
  64. package/dist/core/copy/host.d.ts +5 -0
  65. package/dist/core/copy/host.d.ts.map +1 -1
  66. package/dist/core/copy/preflight.d.ts.map +1 -1
  67. package/dist/core/copy/preflight.js +7 -1
  68. package/dist/core/copy/preflight.js.map +1 -1
  69. package/dist/core/copy/types.d.ts +8 -1
  70. package/dist/core/copy/types.d.ts.map +1 -1
  71. package/dist/core/crypto/EntrySignature.d.ts +8 -2
  72. package/dist/core/crypto/EntrySignature.d.ts.map +1 -1
  73. package/dist/core/crypto/EntrySignature.js +14 -5
  74. package/dist/core/crypto/EntrySignature.js.map +1 -1
  75. package/dist/core/crypto/MindooDocSigner.d.ts.map +1 -1
  76. package/dist/core/crypto/MindooDocSigner.js +11 -2
  77. package/dist/core/crypto/MindooDocSigner.js.map +1 -1
  78. package/dist/core/crypto/RSAEncryption.d.ts +19 -0
  79. package/dist/core/crypto/RSAEncryption.d.ts.map +1 -1
  80. package/dist/core/crypto/RSAEncryption.js +36 -3
  81. package/dist/core/crypto/RSAEncryption.js.map +1 -1
  82. package/dist/core/crypto/privateKeyEncryption.js +1 -1
  83. package/dist/core/crypto/privateKeyEncryption.js.map +1 -1
  84. package/dist/core/crypto/rsaOaep3072.d.ts +12 -0
  85. package/dist/core/crypto/rsaOaep3072.d.ts.map +1 -0
  86. package/dist/core/crypto/rsaOaep3072.js +30 -0
  87. package/dist/core/crypto/rsaOaep3072.js.map +1 -0
  88. package/dist/core/databaseIdValidation.d.ts +23 -0
  89. package/dist/core/databaseIdValidation.d.ts.map +1 -1
  90. package/dist/core/databaseIdValidation.js +59 -1
  91. package/dist/core/databaseIdValidation.js.map +1 -1
  92. package/dist/core/index.d.ts +9 -2
  93. package/dist/core/index.d.ts.map +1 -1
  94. package/dist/core/index.js +40 -4
  95. package/dist/core/index.js.map +1 -1
  96. package/dist/core/join/deviceJoinBootstrap.d.ts +23 -0
  97. package/dist/core/join/deviceJoinBootstrap.d.ts.map +1 -0
  98. package/dist/core/join/deviceJoinBootstrap.js +37 -0
  99. package/dist/core/join/deviceJoinBootstrap.js.map +1 -0
  100. package/dist/core/keys/KeyBag.d.ts +20 -2
  101. package/dist/core/keys/KeyBag.d.ts.map +1 -1
  102. package/dist/core/keys/KeyBag.js +22 -10
  103. package/dist/core/keys/KeyBag.js.map +1 -1
  104. package/dist/core/logging/MindooLogger.d.ts.map +1 -1
  105. package/dist/core/logging/MindooLogger.js +65 -40
  106. package/dist/core/logging/MindooLogger.js.map +1 -1
  107. package/dist/core/tenantIdValidation.d.ts.map +1 -1
  108. package/dist/core/tenantIdValidation.js +1 -1
  109. package/dist/core/tenantIdValidation.js.map +1 -1
  110. package/dist/core/tenantSetup.d.ts +109 -0
  111. package/dist/core/tenantSetup.d.ts.map +1 -0
  112. package/dist/core/tenantSetup.js +250 -0
  113. package/dist/core/tenantSetup.js.map +1 -0
  114. package/dist/core/types.d.ts +333 -43
  115. package/dist/core/types.d.ts.map +1 -1
  116. package/dist/core/types.js +27 -9
  117. package/dist/core/types.js.map +1 -1
  118. package/dist/core/uri/joinRequestUri.d.ts +37 -0
  119. package/dist/core/uri/joinRequestUri.d.ts.map +1 -0
  120. package/dist/core/uri/joinRequestUri.js +168 -0
  121. package/dist/core/uri/joinRequestUri.js.map +1 -0
  122. package/dist/core/userid/canonicalUsername.d.ts +66 -0
  123. package/dist/core/userid/canonicalUsername.d.ts.map +1 -0
  124. package/dist/core/userid/canonicalUsername.js +235 -0
  125. package/dist/core/userid/canonicalUsername.js.map +1 -0
  126. package/dist/core/userid/index.d.ts +9 -0
  127. package/dist/core/userid/index.d.ts.map +1 -1
  128. package/dist/core/userid/index.js +14 -0
  129. package/dist/core/userid/index.js.map +1 -1
  130. package/dist/core/userkeys/UserKeyDocument.d.ts +50 -0
  131. package/dist/core/userkeys/UserKeyDocument.d.ts.map +1 -0
  132. package/dist/core/userkeys/UserKeyDocument.js +145 -0
  133. package/dist/core/userkeys/UserKeyDocument.js.map +1 -0
  134. package/dist/core/userkeys/UserKeyManager.d.ts +170 -0
  135. package/dist/core/userkeys/UserKeyManager.d.ts.map +1 -0
  136. package/dist/core/userkeys/UserKeyManager.js +1277 -0
  137. package/dist/core/userkeys/UserKeyManager.js.map +1 -0
  138. package/dist/core/userkeys/fingerprint.d.ts +17 -0
  139. package/dist/core/userkeys/fingerprint.d.ts.map +1 -0
  140. package/dist/core/userkeys/fingerprint.js +59 -0
  141. package/dist/core/userkeys/fingerprint.js.map +1 -0
  142. package/dist/core/userkeys/index.d.ts +11 -0
  143. package/dist/core/userkeys/index.d.ts.map +1 -0
  144. package/dist/core/userkeys/index.js +49 -0
  145. package/dist/core/userkeys/index.js.map +1 -0
  146. package/dist/core/userkeys/recipients.d.ts +51 -0
  147. package/dist/core/userkeys/recipients.d.ts.map +1 -0
  148. package/dist/core/userkeys/recipients.js +292 -0
  149. package/dist/core/userkeys/recipients.js.map +1 -0
  150. package/dist/core/userkeys/resolveUserKeyDocument.d.ts +21 -0
  151. package/dist/core/userkeys/resolveUserKeyDocument.d.ts.map +1 -0
  152. package/dist/core/userkeys/resolveUserKeyDocument.js +98 -0
  153. package/dist/core/userkeys/resolveUserKeyDocument.js.map +1 -0
  154. package/dist/core/userkeys/sealedCrypto.d.ts +21 -0
  155. package/dist/core/userkeys/sealedCrypto.d.ts.map +1 -0
  156. package/dist/core/userkeys/sealedCrypto.js +79 -0
  157. package/dist/core/userkeys/sealedCrypto.js.map +1 -0
  158. package/dist/core/userkeys/sealedTypes.d.ts +72 -0
  159. package/dist/core/userkeys/sealedTypes.d.ts.map +1 -0
  160. package/dist/core/userkeys/sealedTypes.js +14 -0
  161. package/dist/core/userkeys/sealedTypes.js.map +1 -0
  162. package/dist/core/userkeys/types.d.ts +70 -0
  163. package/dist/core/userkeys/types.d.ts.map +1 -0
  164. package/dist/core/userkeys/types.js +48 -0
  165. package/dist/core/userkeys/types.js.map +1 -0
  166. package/dist/core/userkeys/validateUserKeyDocument.d.ts +19 -0
  167. package/dist/core/userkeys/validateUserKeyDocument.d.ts.map +1 -0
  168. package/dist/core/userkeys/validateUserKeyDocument.js +42 -0
  169. package/dist/core/userkeys/validateUserKeyDocument.js.map +1 -0
  170. package/dist/core/utils/idGeneration.d.ts +39 -20
  171. package/dist/core/utils/idGeneration.d.ts.map +1 -1
  172. package/dist/core/utils/idGeneration.js +82 -62
  173. package/dist/core/utils/idGeneration.js.map +1 -1
  174. package/dist/core/utils/index.d.ts +1 -1
  175. package/dist/core/utils/index.d.ts.map +1 -1
  176. package/dist/core/utils/index.js +4 -1
  177. package/dist/core/utils/index.js.map +1 -1
  178. package/dist/node/server/CapabilityMatcher.d.ts +5 -0
  179. package/dist/node/server/CapabilityMatcher.d.ts.map +1 -1
  180. package/dist/node/server/CapabilityMatcher.js +10 -1
  181. package/dist/node/server/CapabilityMatcher.js.map +1 -1
  182. package/dist/node/server/DeviceDiscoveryService.d.ts +36 -0
  183. package/dist/node/server/DeviceDiscoveryService.d.ts.map +1 -0
  184. package/dist/node/server/DeviceDiscoveryService.js +165 -0
  185. package/dist/node/server/DeviceDiscoveryService.js.map +1 -0
  186. package/dist/node/server/MindooDBServer.d.ts +13 -0
  187. package/dist/node/server/MindooDBServer.d.ts.map +1 -1
  188. package/dist/node/server/MindooDBServer.js +99 -61
  189. package/dist/node/server/MindooDBServer.js.map +1 -1
  190. package/dist/node/server/SystemAdminAuth.d.ts +7 -0
  191. package/dist/node/server/SystemAdminAuth.d.ts.map +1 -1
  192. package/dist/node/server/SystemAdminAuth.js +4 -1
  193. package/dist/node/server/SystemAdminAuth.js.map +1 -1
  194. package/dist/node/server/TenantManager.d.ts +29 -0
  195. package/dist/node/server/TenantManager.d.ts.map +1 -1
  196. package/dist/node/server/TenantManager.js +146 -7
  197. package/dist/node/server/TenantManager.js.map +1 -1
  198. package/package.json +5 -5
@@ -0,0 +1,170 @@
1
+ import type { BaseMindooTenant } from "../BaseMindooTenant";
2
+ import type { EncryptionKeyPair, MindooDB, MindooDoc, PrivateUserId, SigningKeyPair } from "../types";
3
+ import { type PendingUserKeyDevice, type UserKeyDeviceRow, type UserKeyDocumentPayload, type UserKeyEnrollmentStatus } from "./types";
4
+ export declare class UserKeyManager {
5
+ private readonly tenant;
6
+ private userDirectoryFetched;
7
+ private lastUserDirectoryFetchError;
8
+ private decryptedUserKeyCache;
9
+ private decryptedUserKeyBytes;
10
+ private seededBytesMatchLocalPublic;
11
+ private seededBytesVerifiedForPublicKey;
12
+ private resolvingOwnDeviceWrap;
13
+ private reconcileInFlight;
14
+ constructor(tenant: BaseMindooTenant);
15
+ noteUserDirectoryFetched(): void;
16
+ noteUserDirectoryFetchFailed(error: unknown): void;
17
+ /**
18
+ * Inject User-Key PKCS8 bytes already decrypted by the host (Haven unlock).
19
+ * Used when `currentUserPassword` is empty so mint/wrap does not generate a
20
+ * second pair.
21
+ */
22
+ seedDecryptedUserKeyBytes(bytes: Uint8Array): void;
23
+ /**
24
+ * RSA round-trip against `publicKeyPem`: seal a probe with the public key and
25
+ * open it with the seeded private bytes. Cheaper than deriving the public key
26
+ * from PKCS8 and works on every crypto adapter.
27
+ */
28
+ private seededBytesBelongToLocalPublicKey;
29
+ hasFetchedUserDirectory(): boolean;
30
+ ensureLocalUserKeyPair(user: PrivateUserId, password: string): Promise<EncryptionKeyPair>;
31
+ getLocalUserPublicKey(): Promise<string | null>;
32
+ private decryptUserKeyPairBytes;
33
+ getDecryptedUserKeyBytes(): Promise<Uint8Array | null>;
34
+ /**
35
+ * The User-Key private bytes taken from THIS device's wrap in the own
36
+ * User-Key document, verified against `publicKeyPem`. Returns null when no
37
+ * wrap for this device exists or it does not open the pair. Kept free of
38
+ * {@link getDecryptedUserKeyBytes} so the two cannot recurse.
39
+ */
40
+ private ownDeviceWrapPrivateKeyBytes;
41
+ getDecryptedUserKey(): Promise<CryptoKey | null>;
42
+ /**
43
+ * All epochs this device can open, newest first. Used by key-distribution
44
+ * reconcile so wraps addressed to a retired fingerprint still import.
45
+ */
46
+ getUserKeyCryptoKeysForReconcile(): Promise<CryptoKey[]>;
47
+ openUserDirectory(): Promise<MindooDB>;
48
+ resolveOwnUserKeyDocument(): Promise<{
49
+ doc: MindooDoc;
50
+ payload: UserKeyDocumentPayload;
51
+ } | null>;
52
+ /**
53
+ * Admin path: create a pending userkey document from a join-request public key.
54
+ */
55
+ createPendingFromJoin(input: {
56
+ username: string;
57
+ userPublicKey: string;
58
+ signingKeyPair: {
59
+ publicKey: string;
60
+ privateKey: import("../types").EncryptedPrivateKey;
61
+ };
62
+ signingKeyPassword: string;
63
+ }): Promise<MindooDoc>;
64
+ /**
65
+ * Self-create for legacy users who never sent a User-Key in a join request.
66
+ * Refuses unless userdirectory has been fetched this session (Trap 1).
67
+ * On mint, wraps the new private key to every active grant device so already
68
+ * enrolled devices can import without an approval dialog. Devices added to
69
+ * the grant afterwards still require explicit approval.
70
+ */
71
+ ensureOwnUserKeyDocument(options?: {
72
+ allowSelfCreate?: boolean;
73
+ }): Promise<{
74
+ doc: MindooDoc;
75
+ payload: UserKeyDocumentPayload;
76
+ } | null>;
77
+ /**
78
+ * Bootstrap / recreate: wrap the new private key to every active grant
79
+ * device. Later devices added to the grant still require explicit approval.
80
+ *
81
+ * `legacyUnstampedOnly` wraps only grant devices with no `addedAt` (pre-User-Keys
82
+ * fleet). Devices stamped with `addedAt` after the userkey document exists still
83
+ * need an explicit approve.
84
+ */
85
+ private wrapPrivateKeyForActiveGrantDevices;
86
+ private tryImportUserKeyFromWrap;
87
+ writeOwnDeviceWrap(doc: MindooDoc, payload: UserKeyDocumentPayload): Promise<void>;
88
+ /**
89
+ * A wrap-less userkey document cannot be imported by anyone. Replace its
90
+ * planted public key with this device's local pair and wrap the current
91
+ * grant (same outcome as a first mint).
92
+ */
93
+ private adoptPendingUserKeyDocument;
94
+ /**
95
+ * A wrap-less document cannot be used by any device. Either wrap it with the
96
+ * local pair that matches the planted public key, or replace that key and wrap.
97
+ * This is the recovery path for an already-minted pending document (the user's
98
+ * leftover `deviceWraps: {}` row).
99
+ */
100
+ private sealPendingUserKeyDocument;
101
+ isReconciling(): boolean;
102
+ /**
103
+ * True when userdirectory has been fetched this session, or is already fully
104
+ * initialized. In-flight `openDB` does **not** count: treating that as ready
105
+ * starts reconcile during initialize, which re-enters `updateUnifiedCache`
106
+ * and unbounded-allocates Automerge/AES heaps.
107
+ */
108
+ private canReconcileAgainstUserDirectory;
109
+ reconcile(options?: {
110
+ allowSelfCreate?: boolean;
111
+ }): Promise<UserKeyEnrollmentStatus>;
112
+ private reconcileInner;
113
+ listPendingUserKeyDevices(): Promise<PendingUserKeyDevice[]>;
114
+ listUserKeyDevices(): Promise<UserKeyDeviceRow[]>;
115
+ /**
116
+ * Wrap every User-Key epoch to `encryptionPublicKey` (the joining device).
117
+ * Does not look up the grant overview — join approval just registered the
118
+ * device, and the directory cache can still miss it.
119
+ */
120
+ wrapUserKeyForGrantDevice(encryptionPublicKey: string, label?: string): Promise<void>;
121
+ approveUserKeyDevice(fingerprint: string): Promise<void>;
122
+ declineUserKeyDevice(fingerprint: string): Promise<void>;
123
+ undoDeclineUserKeyDevice(fingerprint: string): Promise<void>;
124
+ rotateUserKey(): Promise<void>;
125
+ /**
126
+ * Admin-only delete of the published user-key document for `username`.
127
+ * Lookup uses the same grant-binding path as {@link publishedUserKeyFor}.
128
+ * Recovery path when every device that held the private key is gone.
129
+ * A remaining enrolled device keeps local access; it does not republish
130
+ * the tombstone on unlock while `default` is already wrapped to that user.
131
+ */
132
+ deletePublishedUserKeyFor(input: {
133
+ username: string;
134
+ signingKeyPair: SigningKeyPair;
135
+ signingKeyPassword: string;
136
+ }): Promise<void>;
137
+ publishedUserKeyFor(username: string): Promise<{
138
+ publicKey: string;
139
+ fingerprint: string;
140
+ pending: boolean;
141
+ } | null>;
142
+ /**
143
+ * Lookup only — Trap 1 (no mint from local emptiness) does not apply.
144
+ * Haven reopens a fresh tenant per action; blocking on
145
+ * `userDirectoryFetched` made wrapKeyForUser return null so
146
+ * `acl_keydistribution_default` never gained a User-Key wrap.
147
+ */
148
+ private resolvePublishedUserKeyDocument;
149
+ getEnrollmentStatus(): Promise<UserKeyEnrollmentStatus>;
150
+ private waitState;
151
+ private waitStateForDevice;
152
+ private enrollmentStatus;
153
+ private epochsNewestFirst;
154
+ private privateKeyBytesForEpoch;
155
+ private grantCreatedAtFallback;
156
+ private wrappedDeviceFingerprints;
157
+ private dropRevokedDeviceWraps;
158
+ private findActiveDeviceByFingerprint;
159
+ /**
160
+ * Bind a userkey document to the grant that names this person.
161
+ * Writes the grant's `username_hash` (not the current write-version hash) so
162
+ * the userdirectory invariant matches `resolveUsernameHashForSigningKey`.
163
+ * When `signingPublicKey` is set (self-mint), that key must be on the grant.
164
+ */
165
+ private mintBindingForUsername;
166
+ private labelForOwnEncryptionKey;
167
+ private defaultAlreadyWrappedForCurrentUser;
168
+ private directory;
169
+ }
170
+ //# sourceMappingURL=UserKeyManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserKeyManager.d.ts","sourceRoot":"","sources":["../../../src/core/userkeys/UserKeyManager.ts"],"names":[],"mappings":"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"}