mindoodb 0.0.24 → 0.0.32

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 (340) hide show
  1. package/README-server.md +9 -1
  2. package/README.md +5 -3
  3. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts +1 -1
  4. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts.map +1 -1
  5. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js +24 -5
  6. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js.map +1 -1
  7. package/dist/appendonlystores/network/HttpTransport.d.ts +14 -2
  8. package/dist/appendonlystores/network/HttpTransport.d.ts.map +1 -1
  9. package/dist/appendonlystores/network/HttpTransport.js +124 -27
  10. package/dist/appendonlystores/network/HttpTransport.js.map +1 -1
  11. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts +159 -4
  12. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts.map +1 -1
  13. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js +334 -25
  14. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js.map +1 -1
  15. package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.d.ts +9 -0
  16. package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.d.ts.map +1 -1
  17. package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.js +77 -5
  18. package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.js.map +1 -1
  19. package/dist/browser/index.mjs +103 -0
  20. package/dist/core/BaseMindooDB.d.ts +662 -4
  21. package/dist/core/BaseMindooDB.d.ts.map +1 -1
  22. package/dist/core/BaseMindooDB.js +2769 -144
  23. package/dist/core/BaseMindooDB.js.map +1 -1
  24. package/dist/core/BaseMindooTenant.d.ts +192 -1
  25. package/dist/core/BaseMindooTenant.d.ts.map +1 -1
  26. package/dist/core/BaseMindooTenant.js +633 -88
  27. package/dist/core/BaseMindooTenant.js.map +1 -1
  28. package/dist/core/BaseMindooTenantDirectory.d.ts +770 -10
  29. package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
  30. package/dist/core/BaseMindooTenantDirectory.js +2715 -292
  31. package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
  32. package/dist/core/BaseMindooTenantFactory.d.ts +2 -0
  33. package/dist/core/BaseMindooTenantFactory.d.ts.map +1 -1
  34. package/dist/core/BaseMindooTenantFactory.js +20 -0
  35. package/dist/core/BaseMindooTenantFactory.js.map +1 -1
  36. package/dist/core/accesscontrol/AccessDeniedError.d.ts +22 -0
  37. package/dist/core/accesscontrol/AccessDeniedError.d.ts.map +1 -0
  38. package/dist/core/accesscontrol/AccessDeniedError.js +28 -0
  39. package/dist/core/accesscontrol/AccessDeniedError.js.map +1 -0
  40. package/dist/core/accesscontrol/DirectoryStateNode.d.ts +220 -0
  41. package/dist/core/accesscontrol/DirectoryStateNode.d.ts.map +1 -0
  42. package/dist/core/accesscontrol/DirectoryStateNode.js +297 -0
  43. package/dist/core/accesscontrol/DirectoryStateNode.js.map +1 -0
  44. package/dist/core/accesscontrol/DirectoryTimeTravelIndex.d.ts +118 -0
  45. package/dist/core/accesscontrol/DirectoryTimeTravelIndex.d.ts.map +1 -0
  46. package/dist/core/accesscontrol/DirectoryTimeTravelIndex.js +173 -0
  47. package/dist/core/accesscontrol/DirectoryTimeTravelIndex.js.map +1 -0
  48. package/dist/core/accesscontrol/directoryProjection.d.ts +26 -0
  49. package/dist/core/accesscontrol/directoryProjection.d.ts.map +1 -0
  50. package/dist/core/accesscontrol/directoryProjection.js +174 -0
  51. package/dist/core/accesscontrol/directoryProjection.js.map +1 -0
  52. package/dist/core/accesscontrol/evaluate.d.ts +77 -0
  53. package/dist/core/accesscontrol/evaluate.d.ts.map +1 -0
  54. package/dist/core/accesscontrol/evaluate.js +206 -0
  55. package/dist/core/accesscontrol/evaluate.js.map +1 -0
  56. package/dist/core/accesscontrol/grantKeys.d.ts +113 -0
  57. package/dist/core/accesscontrol/grantKeys.d.ts.map +1 -0
  58. package/dist/core/accesscontrol/grantKeys.js +302 -0
  59. package/dist/core/accesscontrol/grantKeys.js.map +1 -0
  60. package/dist/core/accesscontrol/keyBagReconciler.d.ts +22 -0
  61. package/dist/core/accesscontrol/keyBagReconciler.d.ts.map +1 -0
  62. package/dist/core/accesscontrol/keyBagReconciler.js +3 -0
  63. package/dist/core/accesscontrol/keyBagReconciler.js.map +1 -0
  64. package/dist/core/accesscontrol/materializationGuard.d.ts +89 -0
  65. package/dist/core/accesscontrol/materializationGuard.d.ts.map +1 -0
  66. package/dist/core/accesscontrol/materializationGuard.js +69 -0
  67. package/dist/core/accesscontrol/materializationGuard.js.map +1 -0
  68. package/dist/core/accesscontrol/quarantine.d.ts +65 -0
  69. package/dist/core/accesscontrol/quarantine.d.ts.map +1 -0
  70. package/dist/core/accesscontrol/quarantine.js +79 -0
  71. package/dist/core/accesscontrol/quarantine.js.map +1 -0
  72. package/dist/core/accesscontrol/receiptValidation.d.ts +113 -0
  73. package/dist/core/accesscontrol/receiptValidation.d.ts.map +1 -0
  74. package/dist/core/accesscontrol/receiptValidation.js +142 -0
  75. package/dist/core/accesscontrol/receiptValidation.js.map +1 -0
  76. package/dist/core/accesscontrol/timestamp/Ed25519WitnessProvider.d.ts +31 -0
  77. package/dist/core/accesscontrol/timestamp/Ed25519WitnessProvider.d.ts.map +1 -0
  78. package/dist/core/accesscontrol/timestamp/Ed25519WitnessProvider.js +66 -0
  79. package/dist/core/accesscontrol/timestamp/Ed25519WitnessProvider.js.map +1 -0
  80. package/dist/core/accesscontrol/timestamp/TimestampProvider.d.ts +79 -0
  81. package/dist/core/accesscontrol/timestamp/TimestampProvider.d.ts.map +1 -0
  82. package/dist/core/accesscontrol/timestamp/TimestampProvider.js +22 -0
  83. package/dist/core/accesscontrol/timestamp/TimestampProvider.js.map +1 -0
  84. package/dist/core/accesscontrol/types.d.ts +825 -0
  85. package/dist/core/accesscontrol/types.d.ts.map +1 -0
  86. package/dist/core/accesscontrol/types.js +534 -0
  87. package/dist/core/accesscontrol/types.js.map +1 -0
  88. package/dist/core/appendonlystores/InMemoryContentAddressedStore.d.ts +9 -0
  89. package/dist/core/appendonlystores/InMemoryContentAddressedStore.d.ts.map +1 -1
  90. package/dist/core/appendonlystores/InMemoryContentAddressedStore.js +54 -0
  91. package/dist/core/appendonlystores/InMemoryContentAddressedStore.js.map +1 -1
  92. package/dist/core/appendonlystores/network/AuthenticationService.d.ts +38 -2
  93. package/dist/core/appendonlystores/network/AuthenticationService.d.ts.map +1 -1
  94. package/dist/core/appendonlystores/network/AuthenticationService.js +199 -26
  95. package/dist/core/appendonlystores/network/AuthenticationService.js.map +1 -1
  96. package/dist/core/appendonlystores/network/NetworkTransport.d.ts +17 -3
  97. package/dist/core/appendonlystores/network/NetworkTransport.d.ts.map +1 -1
  98. package/dist/core/appendonlystores/network/types.d.ts +58 -4
  99. package/dist/core/appendonlystores/network/types.d.ts.map +1 -1
  100. package/dist/core/appendonlystores/network/types.js +4 -0
  101. package/dist/core/appendonlystores/network/types.js.map +1 -1
  102. package/dist/core/appendonlystores/scanUtils.d.ts +27 -0
  103. package/dist/core/appendonlystores/scanUtils.d.ts.map +1 -0
  104. package/dist/core/appendonlystores/scanUtils.js +87 -0
  105. package/dist/core/appendonlystores/scanUtils.js.map +1 -0
  106. package/dist/core/appendonlystores/types.d.ts +23 -2
  107. package/dist/core/appendonlystores/types.d.ts.map +1 -1
  108. package/dist/core/cache/CacheManager.d.ts +13 -3
  109. package/dist/core/cache/CacheManager.d.ts.map +1 -1
  110. package/dist/core/cache/CacheManager.js +7 -4
  111. package/dist/core/cache/CacheManager.js.map +1 -1
  112. package/dist/core/crypto/EntrySignature.d.ts +137 -0
  113. package/dist/core/crypto/EntrySignature.d.ts.map +1 -0
  114. package/dist/core/crypto/EntrySignature.js +210 -0
  115. package/dist/core/crypto/EntrySignature.js.map +1 -0
  116. package/dist/core/crypto/MindooDocSigner.d.ts.map +1 -1
  117. package/dist/core/crypto/MindooDocSigner.js +6 -2
  118. package/dist/core/crypto/MindooDocSigner.js.map +1 -1
  119. package/dist/core/crypto/WitnessReceipt.d.ts +137 -0
  120. package/dist/core/crypto/WitnessReceipt.d.ts.map +1 -0
  121. package/dist/core/crypto/WitnessReceipt.js +182 -0
  122. package/dist/core/crypto/WitnessReceipt.js.map +1 -0
  123. package/dist/core/crypto/encryptedFields.d.ts +27 -0
  124. package/dist/core/crypto/encryptedFields.d.ts.map +1 -0
  125. package/dist/core/crypto/encryptedFields.js +58 -0
  126. package/dist/core/crypto/encryptedFields.js.map +1 -0
  127. package/dist/core/crypto/pbkdf2Iterations.d.ts +12 -0
  128. package/dist/core/crypto/pbkdf2Iterations.d.ts.map +1 -1
  129. package/dist/core/crypto/pbkdf2Iterations.js +23 -0
  130. package/dist/core/crypto/pbkdf2Iterations.js.map +1 -1
  131. package/dist/core/crypto/privateKeyEncryption.d.ts.map +1 -1
  132. package/dist/core/crypto/privateKeyEncryption.js +3 -1
  133. package/dist/core/crypto/privateKeyEncryption.js.map +1 -1
  134. package/dist/core/databaseIdValidation.d.ts +1 -1
  135. package/dist/core/databaseIdValidation.d.ts.map +1 -1
  136. package/dist/core/databaseIdValidation.js +4 -4
  137. package/dist/core/databaseIdValidation.js.map +1 -1
  138. package/dist/core/errors.d.ts +26 -0
  139. package/dist/core/errors.d.ts.map +1 -1
  140. package/dist/core/errors.js +42 -1
  141. package/dist/core/errors.js.map +1 -1
  142. package/dist/core/expressions/builder.d.ts +102 -0
  143. package/dist/core/expressions/builder.d.ts.map +1 -0
  144. package/dist/core/expressions/builder.js +249 -0
  145. package/dist/core/expressions/builder.js.map +1 -0
  146. package/dist/core/expressions/evaluateExpression.d.ts +78 -0
  147. package/dist/core/expressions/evaluateExpression.d.ts.map +1 -0
  148. package/dist/core/expressions/evaluateExpression.js +386 -0
  149. package/dist/core/expressions/evaluateExpression.js.map +1 -0
  150. package/dist/core/expressions/formulaSource.d.ts +24 -0
  151. package/dist/core/expressions/formulaSource.d.ts.map +1 -0
  152. package/dist/core/expressions/formulaSource.js +765 -0
  153. package/dist/core/expressions/formulaSource.js.map +1 -0
  154. package/dist/core/expressions/index.d.ts +8 -0
  155. package/dist/core/expressions/index.d.ts.map +1 -0
  156. package/dist/core/expressions/index.js +46 -0
  157. package/dist/core/expressions/index.js.map +1 -0
  158. package/dist/core/expressions/metadata.d.ts +23 -0
  159. package/dist/core/expressions/metadata.d.ts.map +1 -0
  160. package/dist/core/expressions/metadata.js +191 -0
  161. package/dist/core/expressions/metadata.js.map +1 -0
  162. package/dist/core/expressions/types.d.ts +164 -0
  163. package/dist/core/expressions/types.d.ts.map +1 -0
  164. package/dist/core/expressions/types.js +3 -0
  165. package/dist/core/expressions/types.js.map +1 -0
  166. package/dist/core/extraction/types.d.ts +47 -0
  167. package/dist/core/extraction/types.d.ts.map +1 -0
  168. package/dist/core/extraction/types.js +42 -0
  169. package/dist/core/extraction/types.js.map +1 -0
  170. package/dist/core/index.d.ts +13 -3
  171. package/dist/core/index.d.ts.map +1 -1
  172. package/dist/core/index.js +113 -4
  173. package/dist/core/index.js.map +1 -1
  174. package/dist/core/indexing/createViewDataProvider.d.ts +84 -0
  175. package/dist/core/indexing/createViewDataProvider.d.ts.map +1 -0
  176. package/dist/core/indexing/createViewDataProvider.js +139 -0
  177. package/dist/core/indexing/createViewDataProvider.js.map +1 -0
  178. package/dist/core/indexing/fulltext/DocumentFullTextIndex.d.ts +180 -0
  179. package/dist/core/indexing/fulltext/DocumentFullTextIndex.d.ts.map +1 -0
  180. package/dist/core/indexing/fulltext/DocumentFullTextIndex.js +548 -0
  181. package/dist/core/indexing/fulltext/DocumentFullTextIndex.js.map +1 -0
  182. package/dist/core/indexing/fulltext/SearchEngineAdapter.d.ts +69 -0
  183. package/dist/core/indexing/fulltext/SearchEngineAdapter.d.ts.map +1 -0
  184. package/dist/core/indexing/fulltext/SearchEngineAdapter.js +183 -0
  185. package/dist/core/indexing/fulltext/SearchEngineAdapter.js.map +1 -0
  186. package/dist/core/indexing/fulltext/extractFulltextText.d.ts +34 -0
  187. package/dist/core/indexing/fulltext/extractFulltextText.d.ts.map +1 -0
  188. package/dist/core/indexing/fulltext/extractFulltextText.js +129 -0
  189. package/dist/core/indexing/fulltext/extractFulltextText.js.map +1 -0
  190. package/dist/core/indexing/fulltext/index.d.ts +5 -0
  191. package/dist/core/indexing/fulltext/index.d.ts.map +1 -0
  192. package/dist/core/indexing/fulltext/index.js +20 -0
  193. package/dist/core/indexing/fulltext/index.js.map +1 -0
  194. package/dist/core/indexing/fulltext/types.d.ts +168 -0
  195. package/dist/core/indexing/fulltext/types.d.ts.map +1 -0
  196. package/dist/core/indexing/fulltext/types.js +89 -0
  197. package/dist/core/indexing/fulltext/types.js.map +1 -0
  198. package/dist/core/indexing/summary/DocumentSummaryStore.d.ts +137 -0
  199. package/dist/core/indexing/summary/DocumentSummaryStore.d.ts.map +1 -0
  200. package/dist/core/indexing/summary/DocumentSummaryStore.js +438 -0
  201. package/dist/core/indexing/summary/DocumentSummaryStore.js.map +1 -0
  202. package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.d.ts +72 -0
  203. package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.d.ts.map +1 -0
  204. package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.js +221 -0
  205. package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.js.map +1 -0
  206. package/dist/core/indexing/summary/extractSummaryFields.d.ts +75 -0
  207. package/dist/core/indexing/summary/extractSummaryFields.d.ts.map +1 -0
  208. package/dist/core/indexing/summary/extractSummaryFields.js +266 -0
  209. package/dist/core/indexing/summary/extractSummaryFields.js.map +1 -0
  210. package/dist/core/indexing/summary/index.d.ts +5 -0
  211. package/dist/core/indexing/summary/index.d.ts.map +1 -0
  212. package/dist/core/indexing/summary/index.js +23 -0
  213. package/dist/core/indexing/summary/index.js.map +1 -0
  214. package/dist/core/indexing/summary/types.d.ts +119 -0
  215. package/dist/core/indexing/summary/types.d.ts.map +1 -0
  216. package/dist/core/indexing/summary/types.js +81 -0
  217. package/dist/core/indexing/summary/types.js.map +1 -0
  218. package/dist/core/indexing/virtualviews/IVirtualViewDataProvider.d.ts +47 -1
  219. package/dist/core/indexing/virtualviews/IVirtualViewDataProvider.d.ts.map +1 -1
  220. package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts +24 -8
  221. package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts.map +1 -1
  222. package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js +96 -41
  223. package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js.map +1 -1
  224. package/dist/core/indexing/virtualviews/ViewEntrySortKey.d.ts +2 -0
  225. package/dist/core/indexing/virtualviews/ViewEntrySortKey.d.ts.map +1 -1
  226. package/dist/core/indexing/virtualviews/ViewEntrySortKey.js +8 -3
  227. package/dist/core/indexing/virtualviews/ViewEntrySortKey.js.map +1 -1
  228. package/dist/core/indexing/virtualviews/VirtualView.d.ts +111 -5
  229. package/dist/core/indexing/virtualviews/VirtualView.d.ts.map +1 -1
  230. package/dist/core/indexing/virtualviews/VirtualView.js +266 -75
  231. package/dist/core/indexing/virtualviews/VirtualView.js.map +1 -1
  232. package/dist/core/indexing/virtualviews/VirtualViewColumn.d.ts +12 -0
  233. package/dist/core/indexing/virtualviews/VirtualViewColumn.d.ts.map +1 -1
  234. package/dist/core/indexing/virtualviews/VirtualViewColumn.js +1 -0
  235. package/dist/core/indexing/virtualviews/VirtualViewColumn.js.map +1 -1
  236. package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts +12 -0
  237. package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts.map +1 -1
  238. package/dist/core/indexing/virtualviews/VirtualViewEntryData.js +66 -5
  239. package/dist/core/indexing/virtualviews/VirtualViewEntryData.js.map +1 -1
  240. package/dist/core/indexing/virtualviews/VirtualViewFactory.d.ts +50 -6
  241. package/dist/core/indexing/virtualviews/VirtualViewFactory.d.ts.map +1 -1
  242. package/dist/core/indexing/virtualviews/VirtualViewFactory.js +54 -12
  243. package/dist/core/indexing/virtualviews/VirtualViewFactory.js.map +1 -1
  244. package/dist/core/indexing/virtualviews/index.d.ts +3 -3
  245. package/dist/core/indexing/virtualviews/index.d.ts.map +1 -1
  246. package/dist/core/indexing/virtualviews/index.js.map +1 -1
  247. package/dist/core/indexing/virtualviews/types.d.ts +6 -0
  248. package/dist/core/indexing/virtualviews/types.d.ts.map +1 -1
  249. package/dist/core/indexing/virtualviews/types.js +11 -3
  250. package/dist/core/indexing/virtualviews/types.js.map +1 -1
  251. package/dist/core/keys/KeyBag.d.ts +25 -0
  252. package/dist/core/keys/KeyBag.d.ts.map +1 -1
  253. package/dist/core/keys/KeyBag.js +37 -1
  254. package/dist/core/keys/KeyBag.js.map +1 -1
  255. package/dist/core/query/executeQuery.d.ts +18 -0
  256. package/dist/core/query/executeQuery.d.ts.map +1 -0
  257. package/dist/core/query/executeQuery.js +313 -0
  258. package/dist/core/query/executeQuery.js.map +1 -0
  259. package/dist/core/query/index.d.ts +5 -0
  260. package/dist/core/query/index.d.ts.map +1 -0
  261. package/dist/core/query/index.js +14 -0
  262. package/dist/core/query/index.js.map +1 -0
  263. package/dist/core/query/queryLive.d.ts +27 -0
  264. package/dist/core/query/queryLive.d.ts.map +1 -0
  265. package/dist/core/query/queryLive.js +104 -0
  266. package/dist/core/query/queryLive.js.map +1 -0
  267. package/dist/core/query/queryView.d.ts +156 -0
  268. package/dist/core/query/queryView.d.ts.map +1 -0
  269. package/dist/core/query/queryView.js +266 -0
  270. package/dist/core/query/queryView.js.map +1 -0
  271. package/dist/core/query/types.d.ts +121 -0
  272. package/dist/core/query/types.d.ts.map +1 -0
  273. package/dist/core/query/types.js +18 -0
  274. package/dist/core/query/types.js.map +1 -0
  275. package/dist/core/storeEntryTime.d.ts +57 -0
  276. package/dist/core/storeEntryTime.d.ts.map +1 -0
  277. package/dist/core/storeEntryTime.js +72 -0
  278. package/dist/core/storeEntryTime.js.map +1 -0
  279. package/dist/core/types.d.ts +1371 -34
  280. package/dist/core/types.d.ts.map +1 -1
  281. package/dist/core/types.js +13 -1
  282. package/dist/core/types.js.map +1 -1
  283. package/dist/core/uri/MindooURI.d.ts +53 -1
  284. package/dist/core/uri/MindooURI.d.ts.map +1 -1
  285. package/dist/core/uri/MindooURI.js +135 -0
  286. package/dist/core/uri/MindooURI.js.map +1 -1
  287. package/dist/core/utils/urlSafety.d.ts +46 -0
  288. package/dist/core/utils/urlSafety.d.ts.map +1 -0
  289. package/dist/core/utils/urlSafety.js +144 -0
  290. package/dist/core/utils/urlSafety.js.map +1 -0
  291. package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.d.ts +14 -0
  292. package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.d.ts.map +1 -1
  293. package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js +95 -4
  294. package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js.map +1 -1
  295. package/dist/node/server/CapabilityMatcher.d.ts +10 -0
  296. package/dist/node/server/CapabilityMatcher.d.ts.map +1 -1
  297. package/dist/node/server/CapabilityMatcher.js +14 -2
  298. package/dist/node/server/CapabilityMatcher.js.map +1 -1
  299. package/dist/node/server/MindooDBServer.d.ts.map +1 -1
  300. package/dist/node/server/MindooDBServer.js +117 -8
  301. package/dist/node/server/MindooDBServer.js.map +1 -1
  302. package/dist/node/server/PurgedDocRegistry.d.ts +32 -0
  303. package/dist/node/server/PurgedDocRegistry.d.ts.map +1 -0
  304. package/dist/node/server/PurgedDocRegistry.js +94 -0
  305. package/dist/node/server/PurgedDocRegistry.js.map +1 -0
  306. package/dist/node/server/ServerSync.d.ts.map +1 -1
  307. package/dist/node/server/ServerSync.js +5 -2
  308. package/dist/node/server/ServerSync.js.map +1 -1
  309. package/dist/node/server/SystemAdminAuth.d.ts +10 -0
  310. package/dist/node/server/SystemAdminAuth.d.ts.map +1 -1
  311. package/dist/node/server/SystemAdminAuth.js +25 -0
  312. package/dist/node/server/SystemAdminAuth.js.map +1 -1
  313. package/dist/node/server/TenantManager.d.ts +95 -1
  314. package/dist/node/server/TenantManager.d.ts.map +1 -1
  315. package/dist/node/server/TenantManager.js +382 -15
  316. package/dist/node/server/TenantManager.js.map +1 -1
  317. package/dist/node/server/config.d.ts.map +1 -1
  318. package/dist/node/server/config.js +5 -1
  319. package/dist/node/server/config.js.map +1 -1
  320. package/dist/node/server/types.d.ts +29 -3
  321. package/dist/node/server/types.d.ts.map +1 -1
  322. package/dist/node/server/types.js +12 -0
  323. package/dist/node/server/types.js.map +1 -1
  324. package/dist/node/server/validation.d.ts +6 -0
  325. package/dist/node/server/validation.d.ts.map +1 -1
  326. package/dist/node/server/validation.js +7 -1
  327. package/dist/node/server/validation.js.map +1 -1
  328. package/package.json +4 -3
  329. package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.d.ts +0 -8
  330. package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.d.ts.map +0 -1
  331. package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.js +0 -16
  332. package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.js.map +0 -1
  333. package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.d.ts +0 -68
  334. package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.d.ts.map +0 -1
  335. package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.js +0 -659
  336. package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.js.map +0 -1
  337. package/dist/node/attachments/writeAttachmentToFile.d.ts +0 -15
  338. package/dist/node/attachments/writeAttachmentToFile.d.ts.map +0 -1
  339. package/dist/node/attachments/writeAttachmentToFile.js +0 -73
  340. package/dist/node/attachments/writeAttachmentToFile.js.map +0 -1
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DirectoryTimeTravelIndex = exports.DIR_TT_CACHE_VERSION = exports.DIR_TT_CACHE_TYPE = void 0;
4
+ const DirectoryStateNode_1 = require("./DirectoryStateNode");
5
+ /** LocalCacheStore `type` namespace for the persisted time-travel chain. */
6
+ exports.DIR_TT_CACHE_TYPE = "dir-tt";
7
+ /** Bump when {@link PersistedTimeTravelState} layout changes (forces rebuild). */
8
+ exports.DIR_TT_CACHE_VERSION = 2;
9
+ /**
10
+ * Owns the access-control time-travel directory-state chain (docs/accesscontrol.md
11
+ * §8): the {@link DirectoryStateChainBuilder}, its resume cursor in the
12
+ * revision-grain changefeed, and the bookkeeping needed to keep it current and
13
+ * persist it.
14
+ *
15
+ * Revisions are accumulated keyed by store entry id ({@link upsertRevision}) and
16
+ * the chain is (re)built by replaying them through the projection in
17
+ * `(trustedTime, entryId)` order ({@link rebuild}). Keying by entry id makes
18
+ * out-of-order arrivals and witness re-stamps correct without any special-casing
19
+ * in the chain builder: a later, earlier-trusted-time revision (or a re-stamped
20
+ * one) just replaces the prior record and the chain is replayed in sorted order,
21
+ * so every node — head and intermediate — reflects the correct trusted-time
22
+ * frontier. Replaying is pure in-memory (no decryption / Automerge), so it is
23
+ * cheap relative to the (incremental) feed that produces the revisions.
24
+ */
25
+ class DirectoryTimeTravelIndex {
26
+ constructor(cachePrefix) {
27
+ this.cachePrefix = cachePrefix;
28
+ /** The copy-on-write chain. Rebuilt from {@link revisions} via the projection. */
29
+ this.builder = new DirectoryStateNode_1.DirectoryStateChainBuilder();
30
+ /** Revisions the chain is built from, keyed by store entry id. */
31
+ this.revisions = new Map();
32
+ /** Resume position in the revision feed; `null` means "scan from genesis". */
33
+ this.cursor = null;
34
+ /**
35
+ * The directory DB's latest `changeSeq` observed at the last build. Persisted
36
+ * and restored so the directory's fast-path gate (see
37
+ * `BaseMindooTenantDirectory.ensureTimeTravelCurrent`) can short-circuit on a
38
+ * cold start when nothing has changed since the chain was flushed.
39
+ */
40
+ this.lastChangeSeq = null;
41
+ /**
42
+ * Entry ids of folded revisions that are still un-witnessed (their trusted
43
+ * time is the provisional `now`). Exposed via {@link hasUnwitnessed} so the
44
+ * directory knows the head overlay may still move when the entries are
45
+ * witnessed.
46
+ */
47
+ this.unwitnessedIds = new Set();
48
+ this.dirty = false;
49
+ }
50
+ /** The head node ("now"). */
51
+ getHead() {
52
+ return this.builder.getHead();
53
+ }
54
+ /** The node covering trusted time `T`. */
55
+ getStateAt(T) {
56
+ return this.builder.getStateAt(T);
57
+ }
58
+ /** Reset to an empty chain (full rebuild from genesis). */
59
+ reset() {
60
+ this.builder.reset();
61
+ this.revisions.clear();
62
+ this.cursor = null;
63
+ this.lastChangeSeq = null;
64
+ this.unwitnessedIds.clear();
65
+ this.dirty = true;
66
+ }
67
+ /**
68
+ * Record the directory DB's latest `changeSeq` as of this build so it can be
69
+ * persisted alongside the chain and consulted by the cold-start gate.
70
+ */
71
+ recordChangeSeq(changeSeq) {
72
+ if (this.lastChangeSeq !== changeSeq) {
73
+ this.lastChangeSeq = changeSeq;
74
+ this.dirty = true;
75
+ }
76
+ }
77
+ /**
78
+ * True while any folded revision is still un-witnessed: its provisional
79
+ * trusted time (`now`) may move when the entry is later witnessed, so consumers
80
+ * should not treat the head as final for those entries.
81
+ */
82
+ hasUnwitnessed() {
83
+ return this.unwitnessedIds.size > 0;
84
+ }
85
+ /**
86
+ * Insert or replace a revision (keyed by entry id) and advance the resume
87
+ * cursor. Replacing an existing entry id is how out-of-order arrivals and
88
+ * witness re-stamps are absorbed; the chain is rebuilt separately via
89
+ * {@link rebuild}. Returns true if the stored set changed.
90
+ */
91
+ upsertRevision(revision, cursor) {
92
+ this.cursor = cursor;
93
+ if (revision.witnessed) {
94
+ this.unwitnessedIds.delete(revision.entryId);
95
+ }
96
+ else {
97
+ this.unwitnessedIds.add(revision.entryId);
98
+ }
99
+ const prev = this.revisions.get(revision.entryId);
100
+ const changed = !prev ||
101
+ prev.trustedTime !== revision.trustedTime ||
102
+ prev.deleted !== revision.deleted ||
103
+ prev.witnessed !== revision.witnessed ||
104
+ prev.docId !== revision.docId ||
105
+ JSON.stringify(prev.data) !== JSON.stringify(revision.data);
106
+ this.revisions.set(revision.entryId, revision);
107
+ this.dirty = true;
108
+ return changed;
109
+ }
110
+ /**
111
+ * Rebuild the chain by replaying every stored revision through `project` in
112
+ * `(trustedTime, entryId)` order. Pure in-memory: no decryption, no Automerge.
113
+ */
114
+ rebuild(project) {
115
+ const sorted = [...this.revisions.values()].sort((a, b) => a.trustedTime !== b.trustedTime
116
+ ? a.trustedTime - b.trustedTime
117
+ : a.entryId.localeCompare(b.entryId));
118
+ this.builder.reset();
119
+ for (const revision of sorted) {
120
+ project(this.builder, revision);
121
+ }
122
+ this.dirty = true;
123
+ }
124
+ // ---- ICacheable -------------------------------------------------------
125
+ getCachePrefix() {
126
+ return this.cachePrefix;
127
+ }
128
+ hasDirtyState() {
129
+ return this.dirty;
130
+ }
131
+ clearDirty() {
132
+ this.dirty = false;
133
+ }
134
+ async flushToCache(store) {
135
+ const state = {
136
+ version: exports.DIR_TT_CACHE_VERSION,
137
+ cursor: this.cursor,
138
+ unwitnessedIds: [...this.unwitnessedIds],
139
+ revisions: [...this.revisions.values()],
140
+ lastChangeSeq: this.lastChangeSeq,
141
+ };
142
+ await store.put(exports.DIR_TT_CACHE_TYPE, this.cachePrefix, new TextEncoder().encode(JSON.stringify(state)));
143
+ return 1;
144
+ }
145
+ /**
146
+ * Restore the persisted revisions and cursor. Returns false (leaving the index
147
+ * empty) on a cache miss or version mismatch, so the caller does a full
148
+ * rebuild. The caller must invoke {@link rebuild} afterwards to materialize the
149
+ * chain (this index does not own the projection).
150
+ */
151
+ async restoreFromCache(store) {
152
+ const bytes = await store.get(exports.DIR_TT_CACHE_TYPE, this.cachePrefix);
153
+ if (!bytes)
154
+ return false;
155
+ let state;
156
+ try {
157
+ state = JSON.parse(new TextDecoder().decode(bytes));
158
+ }
159
+ catch {
160
+ return false;
161
+ }
162
+ if (state.version !== exports.DIR_TT_CACHE_VERSION)
163
+ return false;
164
+ this.revisions = new Map((state.revisions ?? []).map((r) => [r.entryId, r]));
165
+ this.cursor = state.cursor ?? null;
166
+ this.lastChangeSeq = state.lastChangeSeq ?? null;
167
+ this.unwitnessedIds = new Set(state.unwitnessedIds ?? []);
168
+ this.dirty = false;
169
+ return true;
170
+ }
171
+ }
172
+ exports.DirectoryTimeTravelIndex = DirectoryTimeTravelIndex;
173
+ //# sourceMappingURL=DirectoryTimeTravelIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectoryTimeTravelIndex.js","sourceRoot":"","sources":["../../../src/core/accesscontrol/DirectoryTimeTravelIndex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { AclRuleDoc, DefaultAccessPolicyDoc, RuleType } from "./types";
2
+ import { DirectoryStateChainBuilder } from "./DirectoryStateNode";
3
+ /** Parse a policy document's fields into a {@link DefaultAccessPolicyDoc}. */
4
+ export declare function parsePolicyDoc(data: Record<string, unknown>): DefaultAccessPolicyDoc;
5
+ /** Parse a rule document's fields into an {@link AclRuleDoc}. */
6
+ export declare function parseRuleDoc(data: Record<string, unknown>, ruleType: RuleType): AclRuleDoc;
7
+ /** A single directory document revision to project onto the time-travel chain. */
8
+ export interface DirectoryRevisionInput {
9
+ docId: string;
10
+ data: Record<string, unknown>;
11
+ deleted: boolean;
12
+ trustedTime: number;
13
+ /** Normalizes a raw group name (e.g. lowercase) for keying group snapshots. */
14
+ normalizeGroupName: (name: string) => string;
15
+ }
16
+ /**
17
+ * Classify a single directory document revision and feed it into the
18
+ * time-travel {@link DirectoryStateChainBuilder} at the revision's trusted time
19
+ * (docs/accesscontrol.md §6, §8).
20
+ *
21
+ * This is the revision-grain projection: it is called once per persisted change
22
+ * (not once per merged document), so every intermediate policy/grant/group
23
+ * state becomes its own chain node.
24
+ */
25
+ export declare function projectDirectoryRevision(builder: DirectoryStateChainBuilder, input: DirectoryRevisionInput): void;
26
+ //# sourceMappingURL=directoryProjection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directoryProjection.d.ts","sourceRoot":"","sources":["../../../src/core/accesscontrol/directoryProjection.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,UAAU,EACV,sBAAsB,EAEtB,QAAQ,EAIT,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,0BAA0B,EAE3B,MAAM,sBAAsB,CAAC;AAI9B,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,sBAAsB,CA+BpF;AAED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,UAAU,CAmB1F;AAED,kFAAkF;AAClF,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC9C;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,0BAA0B,EACnC,KAAK,EAAE,sBAAsB,GAC5B,IAAI,CAyCN"}
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parsePolicyDoc = parsePolicyDoc;
4
+ exports.parseRuleDoc = parseRuleDoc;
5
+ exports.projectDirectoryRevision = projectDirectoryRevision;
6
+ const grantKeys_1 = require("./grantKeys");
7
+ const types_1 = require("./types");
8
+ const ACL_DB_POLICY_PREFIX = "acl_dbpolicy_";
9
+ /** Parse a policy document's fields into a {@link DefaultAccessPolicyDoc}. */
10
+ function parsePolicyDoc(data) {
11
+ const bool = (v) => (typeof v === "boolean" ? v : undefined);
12
+ // An array of strings, or undefined when absent/malformed (treated as
13
+ // unconstrained). Non-string members are dropped defensively.
14
+ const stringArray = (v) => Array.isArray(v) ? v.filter((s) => typeof s === "string") : undefined;
15
+ return {
16
+ form: types_1.ACCESS_CONTROL_FORM,
17
+ type: "defaultpolicy",
18
+ disableAllAccessChecksAndPolicies: bool(data.disableAllAccessChecksAndPolicies),
19
+ denyDocCreate: bool(data.denyDocCreate),
20
+ denyDocChange: bool(data.denyDocChange),
21
+ denyDocDelete: bool(data.denyDocDelete),
22
+ denyDocUndelete: bool(data.denyDocUndelete),
23
+ denyDocSnapshot: bool(data.denyDocSnapshot),
24
+ denyDocRead: bool(data.denyDocRead),
25
+ defaultCreateKeyId: typeof data.defaultCreateKeyId === "string" ? data.defaultCreateKeyId : undefined,
26
+ databaseCreationPolicy: data.databaseCreationPolicy === "directory-restricted"
27
+ ? "directory-restricted"
28
+ : data.databaseCreationPolicy === "open"
29
+ ? "open"
30
+ : undefined,
31
+ allowedDbIds: stringArray(data.allowedDbIds),
32
+ requireMetadataSignatureSince: typeof data.requireMetadataSignatureSince === "number" &&
33
+ Number.isFinite(data.requireMetadataSignatureSince)
34
+ ? data.requireMetadataSignatureSince
35
+ : undefined,
36
+ };
37
+ }
38
+ /** Parse a rule document's fields into an {@link AclRuleDoc}. */
39
+ function parseRuleDoc(data, ruleType) {
40
+ const usersHashes = Array.isArray(data.users_hashes)
41
+ ? data.users_hashes.filter((h) => typeof h === "string")
42
+ : [];
43
+ const withfields = Array.isArray(data.withfields)
44
+ ? data.withfields.filter((c) => !!c && typeof c === "object" && typeof c.key === "string")
45
+ : undefined;
46
+ return {
47
+ form: types_1.ACCESS_CONTROL_FORM,
48
+ type: ruleType,
49
+ ruleId: data.ruleId,
50
+ description: typeof data.description === "string" ? data.description : undefined,
51
+ dbid: typeof data.dbid === "string" ? data.dbid : "*",
52
+ withfields,
53
+ users_hashes: usersHashes,
54
+ users_encrypted: typeof data.users_encrypted === "string" ? data.users_encrypted : "",
55
+ action: data.action === "deny" ? "deny" : "allow",
56
+ };
57
+ }
58
+ /**
59
+ * Classify a single directory document revision and feed it into the
60
+ * time-travel {@link DirectoryStateChainBuilder} at the revision's trusted time
61
+ * (docs/accesscontrol.md §6, §8).
62
+ *
63
+ * This is the revision-grain projection: it is called once per persisted change
64
+ * (not once per merged document), so every intermediate policy/grant/group
65
+ * state becomes its own chain node.
66
+ */
67
+ function projectDirectoryRevision(builder, input) {
68
+ const { docId, data, deleted, trustedTime } = input;
69
+ // Grant documents (`useroperation`/`grantaccess`). Revocation is expressed by
70
+ // removing keys from the grant in place (§6.5), so applyGrant with an empty
71
+ // key array deactivates the user.
72
+ if (data.form === "useroperation" && data.type === "grantaccess") {
73
+ if (typeof data.username_hash === "string") {
74
+ const signingKeys = (0, grantKeys_1.extractSigningPublicKeys)(data);
75
+ const grant = {
76
+ usernameHash: data.username_hash,
77
+ signingKeys,
78
+ encryptionKeys: (0, grantKeys_1.extractEncryptionPublicKeys)(data),
79
+ wipeRequestedSigningKeys: (0, grantKeys_1.extractWipeRequestedSigningKeys)(data),
80
+ active: signingKeys.length > 0,
81
+ };
82
+ builder.applyGrant(grant, trustedTime);
83
+ }
84
+ return;
85
+ }
86
+ // Access-control documents (policies, rules, trusted witnesses), §6.
87
+ if (data.form === types_1.ACCESS_CONTROL_FORM) {
88
+ projectAccessControlDoc(builder, docId, data, deleted, trustedTime);
89
+ return;
90
+ }
91
+ // Group documents (§8.1): each document's members contribute to the
92
+ // union-by-name group snapshot, keyed by the document id so revisions and
93
+ // deletions are tracked per document.
94
+ if (data.form === "group" && data.type === "group" && typeof data.groupName === "string") {
95
+ const name = input.normalizeGroupName(data.groupName);
96
+ if (deleted) {
97
+ builder.removeGroupDoc(docId, trustedTime);
98
+ }
99
+ else {
100
+ const memberHashes = Array.isArray(data.members_hashes)
101
+ ? data.members_hashes.filter((h) => typeof h === "string")
102
+ : [];
103
+ builder.applyGroupDoc(docId, name, memberHashes, trustedTime);
104
+ }
105
+ }
106
+ }
107
+ /** Project an `accesscontrol` document onto the chain. Deletions remove. */
108
+ function projectAccessControlDoc(builder, docId, data, deleted, trustedTime) {
109
+ // Default tenant policy / per-database policy share the same shape and are
110
+ // distinguished by their fixed document id (§6.1, §6.2).
111
+ if (data.type === "defaultpolicy") {
112
+ if (deleted)
113
+ return;
114
+ const policy = parsePolicyDoc(data);
115
+ if (docId === types_1.ACL_DEFAULT_POLICY_DOC_ID) {
116
+ builder.applyDefaultPolicy(policy, trustedTime);
117
+ }
118
+ else if (docId.startsWith(ACL_DB_POLICY_PREFIX)) {
119
+ const dbid = (0, types_1.decodeAclIdComponent)(docId.slice(ACL_DB_POLICY_PREFIX.length));
120
+ builder.applyDbPolicy(dbid, policy, trustedTime);
121
+ }
122
+ return;
123
+ }
124
+ // Key-distribution documents carry no directory-state projection (they are
125
+ // read directly by recipient clients during reconcile); skip them here.
126
+ if (data.type === "keydistribution") {
127
+ return;
128
+ }
129
+ // App-distribution documents likewise carry no directory-state projection
130
+ // (recipient Haven clients read them directly during the post-sync reconcile);
131
+ // skip them here.
132
+ if (data.type === "appdistribution") {
133
+ return;
134
+ }
135
+ // Sync-setup-policy documents likewise carry no directory-state projection
136
+ // (recipient Haven clients read them directly during the post-sync Sync-page
137
+ // reconcile); skip them here.
138
+ if (data.type === "syncsetuppolicy") {
139
+ return;
140
+ }
141
+ // Document-history purge requests carry no directory-state projection (clients
142
+ // and the sync server read them directly during the post-sync purge reconcile);
143
+ // skip them here.
144
+ if (data.type === "dochistorypurge") {
145
+ return;
146
+ }
147
+ // Trusted witness (§6.4).
148
+ if (data.type === "trustedwitness" && typeof data.witnessPublicKey === "string") {
149
+ if (deleted) {
150
+ builder.removeTrustedWitness(data.witnessPublicKey, trustedTime);
151
+ }
152
+ else {
153
+ const witness = {
154
+ form: types_1.ACCESS_CONTROL_FORM,
155
+ type: "trustedwitness",
156
+ witnessPublicKey: data.witnessPublicKey,
157
+ serverUrl: typeof data.serverUrl === "string" ? data.serverUrl : undefined,
158
+ };
159
+ builder.applyTrustedWitness(witness, trustedTime);
160
+ }
161
+ return;
162
+ }
163
+ // Access-control rule (§6.3).
164
+ if (types_1.RULE_TYPES.includes(data.type) && typeof data.ruleId === "string") {
165
+ const ruleType = data.type;
166
+ if (deleted) {
167
+ builder.removeRule(data.ruleId, ruleType, trustedTime);
168
+ }
169
+ else {
170
+ builder.applyRule(parseRuleDoc(data, ruleType), trustedTime);
171
+ }
172
+ }
173
+ }
174
+ //# sourceMappingURL=directoryProjection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directoryProjection.js","sourceRoot":"","sources":["../../../src/core/accesscontrol/directoryProjection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import { AccessDecision, PSEUDO_TOKEN_ADMIN, PSEUDO_TOKEN_AUTHOR, RuleType, WithFieldWhen } from "./types";
2
+ import { DirectoryStateNode } from "./DirectoryStateNode";
3
+ /**
4
+ * The pure access-control evaluation engine (docs/accesscontrol.md §7).
5
+ *
6
+ * `evaluateAccess` is a **pure, deterministic function** of its inputs: the
7
+ * operation, the acting user's identity set, the directory-state node covering
8
+ * the entry's trusted time, and the before/after document states. This purity
9
+ * is what makes "quarantine on receipt" compatible with eventual consistency —
10
+ * every honest replica that has synced to the same point computes the identical
11
+ * verdict (§10). There is deliberately no wall-clock input.
12
+ */
13
+ /**
14
+ * The acting user's resolved identity, used for rule matching and placeholder
15
+ * resolution (§7 step 3). The caller (directory) resolves these from grants,
16
+ * groups, and the username-hash scheme; the engine only consumes them.
17
+ */
18
+ export interface IdentitySet {
19
+ /** Canonical username, for `${user.username}`. */
20
+ username: string;
21
+ /** Canonical + wildcard variants + groups, for `${user.usernames}`. */
22
+ usernames: string[];
23
+ /** Group names the user belongs to (incl. nested), for `${user.groups}`. */
24
+ groups: string[];
25
+ /**
26
+ * All hashes/tokens the user's identity matches against `users_hashes`:
27
+ * the username hash (v1 + v2), every group hash (incl. nested), and the
28
+ * applicable pseudo-tokens — always `$everyone`; `$admin` if the user is the
29
+ * tenant admin; `$author` if the user authored the document being modified.
30
+ */
31
+ hashes: Set<string>;
32
+ }
33
+ /** Inputs to {@link evaluateAccess}. */
34
+ export interface EvaluateAccessInput {
35
+ /** The operation being attempted. */
36
+ op: RuleType;
37
+ /** Target database id. */
38
+ dbid: string;
39
+ /** The acting user's identity set. */
40
+ identity: IdentitySet;
41
+ /** Directory-state node covering the entry's trusted time (§8). */
42
+ node: DirectoryStateNode;
43
+ /**
44
+ * The document as it currently exists, before the candidate change
45
+ * (the "before" state). Required to evaluate `when: "before"` clauses.
46
+ */
47
+ beforeDoc?: Record<string, unknown> | null;
48
+ /**
49
+ * The document with the candidate change applied (the "after" state).
50
+ * Required to evaluate `when: "after"` clauses, including all `doc_create`
51
+ * clauses. The caller computes this (e.g. via `Automerge.clone()` + apply).
52
+ */
53
+ afterDoc?: Record<string, unknown> | null;
54
+ /**
55
+ * When true, the evaluator runs in **server/Tier 1 mode**: it cannot read
56
+ * encrypted document content, so it ignores Tier 2 rules (those with
57
+ * `withfields`) for the purpose of *denying*, and treats an entry as
58
+ * Tier 1-allowed whenever the only thing that could deny/allow it is a Tier 2
59
+ * rule — leaving that check to clients (§7, §10).
60
+ */
61
+ isServer?: boolean;
62
+ }
63
+ /** The default `when` for a clause, given the operation (§6.3). */
64
+ export declare function defaultWhenForOp(op: RuleType): WithFieldWhen;
65
+ /**
66
+ * Evaluate access for an operation (§7). The result is fully determined by the
67
+ * inputs; see {@link EvaluateAccessInput}.
68
+ */
69
+ export declare function evaluateAccess(input: EvaluateAccessInput): AccessDecision;
70
+ /**
71
+ * Convenience: the set of reserved pseudo-tokens an identity always/optionally
72
+ * carries. `$everyone` is always present for registered users; `$admin` and
73
+ * `$author` are added by the caller when applicable.
74
+ */
75
+ export declare const ALWAYS_PRESENT_PSEUDO_TOKENS: readonly string[];
76
+ export { PSEUDO_TOKEN_ADMIN, PSEUDO_TOKEN_AUTHOR };
77
+ //# sourceMappingURL=evaluate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../../src/core/accesscontrol/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAGd,kBAAkB,EAClB,mBAAmB,EAGnB,QAAQ,EAER,aAAa,EAGd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;;;;GASG;AAEH;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;OAKG;IACH,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACrB;AAED,wCAAwC;AACxC,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,EAAE,EAAE,QAAQ,CAAC;IACb,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,QAAQ,EAAE,WAAW,CAAC;IACtB,mEAAmE;IACnE,IAAI,EAAE,kBAAkB,CAAC;IACzB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1C;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,aAAa,CAE5D;AAUD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CAuFzE;AA8GD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,SAAS,MAAM,EAA4B,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,CAAC"}