mindoodb 0.0.23 → 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 +697 -4
  21. package/dist/core/BaseMindooDB.d.ts.map +1 -1
  22. package/dist/core/BaseMindooDB.js +3273 -180
  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 +1509 -39
  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,548 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DocumentFullTextIndex = void 0;
4
+ const types_1 = require("../summary/types");
5
+ const types_2 = require("./types");
6
+ const extractFulltextText_1 = require("./extractFulltextText");
7
+ const SearchEngineAdapter_1 = require("./SearchEngineAdapter");
8
+ /**
9
+ * Attachments above this size are skipped during text extraction: they
10
+ * would have to be fully materialized in memory, and extractable text
11
+ * that large exceeds any sensible per-field cap anyway.
12
+ */
13
+ const MAX_ATTACHMENT_EXTRACT_BYTES = 16 * 1024 * 1024;
14
+ /**
15
+ * The document full-text index: a changefeed-maintained, encrypted-at-rest
16
+ * search index over extracted document text (see docs/fulltext-search.md).
17
+ *
18
+ * Sits next to the {@link DocumentSummaryStore} as a second derived index:
19
+ * same changefeed pipeline (cursor, resumable backfill, config
20
+ * fingerprint), same encrypted persistence through the tenant's
21
+ * {@link LocalCacheStore}, same `dbsetup` reconciliation (field
22
+ * `fulltextSetup`). Unlike the summary it is OPT-IN (`enabled: true`);
23
+ * text is extracted from the materialized documents the changefeed yields
24
+ * anyway — including long-text and rich-text fields that must stay out of
25
+ * the RAM-resident summary buffer.
26
+ *
27
+ * E2EE note: the index is built client-side from decrypted content, so
28
+ * devices whose KeyBag lacks certain decryption keys index (and find)
29
+ * fewer documents. Purge paths remove entries immediately so plaintext
30
+ * tokens never outlive key revocation.
31
+ */
32
+ class DocumentFullTextIndex {
33
+ constructor(db, config, options) {
34
+ /** Whether the setup document was already consulted (once per instance). */
35
+ this.setupDocSeeded = false;
36
+ this.cursor = null;
37
+ // --- persistence state ---
38
+ this.cacheManager = null;
39
+ this.cachePrefix = null;
40
+ this.engineDirty = false;
41
+ this.metaDirty = false;
42
+ this.restorePromise = null;
43
+ this.restored = false;
44
+ // --- backfill state (config changed while the index already has content) ---
45
+ this.needsBackfill = false;
46
+ this.backfillCursor = null;
47
+ // --- single-flight update ---
48
+ this.updatePromise = null;
49
+ this.db = db;
50
+ this.hasExplicitConfig = config !== undefined;
51
+ this.config = (0, types_2.resolveFulltextConfig)(config);
52
+ this.configFingerprint = (0, types_2.computeFulltextConfigFingerprint)(this.config);
53
+ this.getAttachmentExtractors = options?.getAttachmentExtractors ?? (() => []);
54
+ this.engine = this.createEngine();
55
+ }
56
+ createEngine() {
57
+ return new SearchEngineAdapter_1.MiniSearchAdapter(this.config.language, this.config.include);
58
+ }
59
+ // ---------------------------------------------------------------------------
60
+ // Configuration
61
+ // ---------------------------------------------------------------------------
62
+ getConfig() {
63
+ return this.config;
64
+ }
65
+ getConfigFingerprint() {
66
+ return this.configFingerprint;
67
+ }
68
+ isEnabled() {
69
+ return this.config.enabled;
70
+ }
71
+ /**
72
+ * Replace the full-text configuration. When the fingerprint changes,
73
+ * the engine is recreated (tokenizer/language and field extraction may
74
+ * differ) and a resumable backfill re-indexes all documents on the next
75
+ * `update()` run. Until the backfill finishes the index reports
76
+ * `"rebuilding"` and serves the (growing) partial result.
77
+ *
78
+ * Calling this marks the configuration as explicit: the index stops
79
+ * following the {@link DB_SETUP_DOC_ID} document.
80
+ */
81
+ setConfig(config) {
82
+ this.hasExplicitConfig = true;
83
+ this.applyConfig(config);
84
+ }
85
+ /** Shared config-swap logic for explicit and setup-document paths. */
86
+ applyConfig(config) {
87
+ const resolved = (0, types_2.resolveFulltextConfig)(config);
88
+ const fingerprint = (0, types_2.computeFulltextConfigFingerprint)(resolved);
89
+ if (fingerprint === this.configFingerprint) {
90
+ return;
91
+ }
92
+ const hadContent = this.engine.getDocumentCount() > 0 || this.cursor !== null;
93
+ this.config = resolved;
94
+ this.configFingerprint = fingerprint;
95
+ // Unlike the summary the engine state is tokenizer-dependent, so a
96
+ // config change always starts over with a fresh engine.
97
+ this.engine = this.createEngine();
98
+ this.engineDirty = true;
99
+ if (hadContent && this.config.enabled) {
100
+ this.scheduleBackfill();
101
+ }
102
+ this.metaDirty = true;
103
+ this.cacheManager?.markDirty();
104
+ }
105
+ scheduleBackfill() {
106
+ this.needsBackfill = true;
107
+ this.backfillCursor = null;
108
+ }
109
+ /**
110
+ * Adopt the configuration from the synced {@link DB_SETUP_DOC_ID}
111
+ * document (its `fulltextSetup` field) unless an explicit configuration
112
+ * was provided in code. Runs once per instance, BEFORE the persisted
113
+ * state is restored, so the fingerprint comparison on restore already
114
+ * sees the setup-document configuration.
115
+ */
116
+ async seedConfigFromSetupDoc() {
117
+ if (this.setupDocSeeded || this.hasExplicitConfig) {
118
+ this.setupDocSeeded = true;
119
+ return;
120
+ }
121
+ this.setupDocSeeded = true;
122
+ await this.reloadConfigFromSetupDoc();
123
+ }
124
+ /** Fresh read of the setup document (no-op with an explicit config). */
125
+ async reloadConfigFromSetupDoc() {
126
+ if (this.hasExplicitConfig) {
127
+ return;
128
+ }
129
+ try {
130
+ const doc = await this.db.getDocument(types_1.DB_SETUP_DOC_ID);
131
+ const config = (0, types_2.sanitizeFulltextConfig)(doc.getData()[types_2.FULLTEXT_SETUP_FIELD]);
132
+ this.applyConfig(config);
133
+ }
134
+ catch {
135
+ // No setup document (or not readable) → keep the current config.
136
+ }
137
+ }
138
+ /**
139
+ * Make sure the effective configuration is settled: consults the
140
+ * {@link DB_SETUP_DOC_ID} document once (unless the config was provided
141
+ * in code) and returns the resolved configuration.
142
+ */
143
+ async ensureConfigLoaded() {
144
+ await this.seedConfigFromSetupDoc();
145
+ return this.config;
146
+ }
147
+ /**
148
+ * `"full"` when the index reflects the current configuration,
149
+ * `"rebuilding"` while a configuration-change backfill is in progress.
150
+ */
151
+ getCoverage() {
152
+ return this.needsBackfill ? "rebuilding" : "full";
153
+ }
154
+ // ---------------------------------------------------------------------------
155
+ // Reads
156
+ // ---------------------------------------------------------------------------
157
+ getSize() {
158
+ return this.engine.getDocumentCount();
159
+ }
160
+ getCursor() {
161
+ return this.cursor;
162
+ }
163
+ /** Index field names currently known (document paths + `_attachments`). */
164
+ getFieldNames() {
165
+ return this.engine.getFieldNames();
166
+ }
167
+ /**
168
+ * Full-text search. Brings the index up to date first (same catch-up
169
+ * semantics as queries against the summary buffer), then returns
170
+ * matching documents best-score-first.
171
+ *
172
+ * @throws Error when full-text indexing is not enabled for this
173
+ * database (neither via `fulltextSetup` nor an explicit config).
174
+ */
175
+ async search(query, options) {
176
+ await this.update(options);
177
+ if (!this.config.enabled) {
178
+ throw new Error(`Full-text search is not enabled for this database. ` +
179
+ `Enable it via setFulltextSetup({ enabled: true }) or pass an explicit config to getFullTextIndex().`);
180
+ }
181
+ return {
182
+ hits: this.engine.search(query, options),
183
+ coverage: this.getCoverage(),
184
+ };
185
+ }
186
+ /**
187
+ * Search without a catch-up run — evaluates against the current index
188
+ * state. Used by the query engine, which coordinates update passes
189
+ * itself.
190
+ */
191
+ searchSync(query, options) {
192
+ return {
193
+ hits: this.engine.search(query, options),
194
+ coverage: this.getCoverage(),
195
+ };
196
+ }
197
+ // ---------------------------------------------------------------------------
198
+ // Incremental update
199
+ // ---------------------------------------------------------------------------
200
+ /**
201
+ * Bring the index up to date with the changefeed. Restores persisted
202
+ * state on first use, then consumes `iterateChangesSince` from the
203
+ * saved cursor and finally works down a pending configuration backfill.
204
+ * While the configuration has `enabled: false` this is a cheap no-op
205
+ * (one setup-document read to detect a later enable).
206
+ *
207
+ * Accepts the same batching/progress/cancellation options as summary
208
+ * updates; an interrupted run resumes from the saved cursors. Calls are
209
+ * single-flight: concurrent callers share one run.
210
+ */
211
+ async update(options) {
212
+ if (this.updatePromise) {
213
+ return this.updatePromise;
214
+ }
215
+ this.updatePromise = this.runUpdate(options).finally(() => {
216
+ this.updatePromise = null;
217
+ });
218
+ return this.updatePromise;
219
+ }
220
+ async runUpdate(options) {
221
+ await this.seedConfigFromSetupDoc();
222
+ if (!this.config.enabled) {
223
+ // Disabled: don't touch the changefeed (that would materialize
224
+ // documents for nothing). Re-check the setup document so an enable
225
+ // arriving via sync is picked up by the next update call.
226
+ await this.reloadConfigFromSetupDoc();
227
+ if (!this.config.enabled) {
228
+ return;
229
+ }
230
+ }
231
+ await this.ensureRestored();
232
+ const applyBatchSize = options?.applyBatchSize ?? 100;
233
+ const onProgress = options?.onProgress;
234
+ const signal = options?.signal;
235
+ const countAfter = (cursor) => this.db.countChangesSince?.(cursor) ?? 0;
236
+ const total = onProgress
237
+ ? countAfter(this.cursor) + (this.needsBackfill ? countAfter(this.backfillCursor) : 0)
238
+ : 0;
239
+ let processed = 0;
240
+ let processedInBatch = 0;
241
+ // Returns true when the run should stop after the current batch.
242
+ const stopRequested = () => {
243
+ const callbackStop = onProgress?.({ processed, total, origin: "fulltext" }) === false;
244
+ return callbackStop || signal?.aborted === true;
245
+ };
246
+ if (signal?.aborted) {
247
+ return;
248
+ }
249
+ // Pass 1: incremental changefeed consumption from the main cursor.
250
+ for await (const { doc, cursor } of this.db.iterateChangesSince(this.cursor)) {
251
+ await this.applyDocument(doc.getId(), doc);
252
+ this.cursor = cursor;
253
+ processed++;
254
+ processedInBatch++;
255
+ if (processedInBatch >= applyBatchSize) {
256
+ processedInBatch = 0;
257
+ this.cacheManager?.markDirty();
258
+ if (stopRequested()) {
259
+ return;
260
+ }
261
+ }
262
+ if (!this.config.enabled) {
263
+ // A dbsetup change in the feed disabled the index: stop consuming.
264
+ return;
265
+ }
266
+ }
267
+ // Pass 2: configuration backfill (re-index everything with the new
268
+ // config/engine). The feed yields each document's latest state once,
269
+ // so plain re-adds converge; docs changing mid-backfill are
270
+ // re-processed by the next pass 1 anyway.
271
+ if (this.needsBackfill) {
272
+ for await (const { doc, cursor } of this.db.iterateChangesSince(this.backfillCursor)) {
273
+ await this.applyDocument(doc.getId(), doc);
274
+ this.backfillCursor = cursor;
275
+ processed++;
276
+ processedInBatch++;
277
+ if (processedInBatch >= applyBatchSize) {
278
+ processedInBatch = 0;
279
+ this.cacheManager?.markDirty();
280
+ if (stopRequested()) {
281
+ return;
282
+ }
283
+ }
284
+ if (!this.config.enabled) {
285
+ return;
286
+ }
287
+ }
288
+ this.needsBackfill = false;
289
+ this.backfillCursor = null;
290
+ this.metaDirty = true;
291
+ }
292
+ this.cacheManager?.markDirty();
293
+ if (onProgress) {
294
+ onProgress({ processed, total, origin: "fulltext" });
295
+ }
296
+ }
297
+ async applyDocument(docId, doc) {
298
+ if (docId === types_1.DB_SETUP_DOC_ID) {
299
+ // The setup document configures the index instead of appearing in
300
+ // it. Config changes (also arriving via sync) recreate the engine
301
+ // and schedule a backfill; a deleted setup document falls back to
302
+ // the default (disabled) config.
303
+ if (!this.hasExplicitConfig) {
304
+ const config = doc.isDeleted()
305
+ ? undefined
306
+ : (0, types_2.sanitizeFulltextConfig)(doc.getData()[types_2.FULLTEXT_SETUP_FIELD]);
307
+ this.applyConfig(config);
308
+ }
309
+ if (this.engine.has(docId)) {
310
+ this.engine.remove(docId);
311
+ this.markEngineDirty();
312
+ }
313
+ return;
314
+ }
315
+ if (doc.isDeleted()) {
316
+ if (this.engine.has(docId)) {
317
+ this.engine.remove(docId);
318
+ this.markEngineDirty();
319
+ }
320
+ return;
321
+ }
322
+ const fields = (0, extractFulltextText_1.extractFulltextFields)(doc.getData(), this.config);
323
+ const attachmentText = await this.collectAttachmentText(doc);
324
+ if (attachmentText !== null) {
325
+ fields[types_2.FULLTEXT_ATTACHMENT_FIELD] = attachmentText;
326
+ }
327
+ if (Object.keys(fields).length === 0) {
328
+ if (this.engine.has(docId)) {
329
+ this.engine.remove(docId);
330
+ this.markEngineDirty();
331
+ }
332
+ return;
333
+ }
334
+ this.engine.add(docId, fields);
335
+ this.markEngineDirty();
336
+ }
337
+ /**
338
+ * Collect the searchable text of a document's attachments into the
339
+ * synthetic {@link FULLTEXT_ATTACHMENT_FIELD} (capped at
340
+ * `maxFieldBytes` like every other index field). Two sources feed it:
341
+ *
342
+ * 1. **Persisted extraction results** (`extractedText` on the
343
+ * attachment entry, written via
344
+ * `MindooDoc.setAttachmentExtractedText()`, e.g. by Haven's OCR
345
+ * service). These are always indexed — the text is already there,
346
+ * costs nothing, and is obviously meant to be searchable.
347
+ * 2. **Registered extractors** (cheap formats: plain text, PDF text
348
+ * layer, Office) — only when `config.attachments` is enabled, and
349
+ * only for attachments without a persisted result (a persisted
350
+ * "failed"/"skipped" marker also suppresses the extractor run).
351
+ *
352
+ * Extraction failures skip the attachment — a broken PDF must never
353
+ * stall the changefeed pipeline.
354
+ */
355
+ async collectAttachmentText(doc) {
356
+ if (typeof doc.getAttachments !== "function") {
357
+ return null;
358
+ }
359
+ const attachments = doc.getAttachments();
360
+ if (attachments.length === 0) {
361
+ return null;
362
+ }
363
+ const extractors = this.config.attachments ? this.getAttachmentExtractors() : [];
364
+ const parts = [];
365
+ let budget = this.config.maxFieldBytes;
366
+ for (const attachment of attachments) {
367
+ if (budget <= 0) {
368
+ break;
369
+ }
370
+ // Source 1: persisted extraction result at the attachment entry.
371
+ if (typeof attachment.extractedText === "string") {
372
+ const persisted = attachment.extractedText;
373
+ if (persisted.trim().length > 0) {
374
+ const clipped = persisted.length > budget ? persisted.slice(0, budget) : persisted;
375
+ parts.push(clipped);
376
+ budget -= clipped.length;
377
+ }
378
+ continue;
379
+ }
380
+ if (attachment.extractionStatus !== undefined) {
381
+ // "failed"/"skipped" marker without text: deliberate outcome —
382
+ // don't burn extractor time on it.
383
+ continue;
384
+ }
385
+ // Source 2: registered extractors (config.attachments only).
386
+ if (extractors.length === 0) {
387
+ continue;
388
+ }
389
+ if (attachment.size > MAX_ATTACHMENT_EXTRACT_BYTES) {
390
+ continue;
391
+ }
392
+ const extractor = extractors.find((candidate) => candidate.supports(attachment.mimeType ?? "", attachment.fileName ?? ""));
393
+ if (!extractor) {
394
+ continue;
395
+ }
396
+ try {
397
+ const bytes = await doc.getAttachment(attachment.attachmentId);
398
+ const text = await extractor.extract(bytes, {
399
+ mimeType: attachment.mimeType ?? "",
400
+ fileName: attachment.fileName ?? "",
401
+ });
402
+ if (text && text.trim().length > 0) {
403
+ const clipped = text.length > budget ? text.slice(0, budget) : text;
404
+ parts.push(clipped);
405
+ budget -= clipped.length;
406
+ }
407
+ }
408
+ catch {
409
+ // Skip unreadable/unsupported attachments; document fields are
410
+ // still indexed.
411
+ }
412
+ }
413
+ return parts.length > 0 ? parts.join(" ") : null;
414
+ }
415
+ /**
416
+ * Drop a document's index entry immediately (called from the DB's purge
417
+ * paths so extracted plaintext tokens never outlive key
418
+ * revocation/purges; the changefeed tombstone would remove it anyway,
419
+ * but only on the next update run).
420
+ */
421
+ removeDocument(docId) {
422
+ if (this.engine.has(docId)) {
423
+ this.engine.remove(docId);
424
+ this.markEngineDirty();
425
+ this.cacheManager?.markDirty();
426
+ }
427
+ }
428
+ /** Drop all indexed content and cursors (e.g. after the underlying store was cleared). */
429
+ reset() {
430
+ this.engine.clear();
431
+ this.cursor = null;
432
+ this.needsBackfill = false;
433
+ this.backfillCursor = null;
434
+ this.engineDirty = true;
435
+ this.metaDirty = true;
436
+ this.cacheManager?.markDirty();
437
+ }
438
+ // ---------------------------------------------------------------------------
439
+ // Persistence (ICacheable)
440
+ // ---------------------------------------------------------------------------
441
+ /**
442
+ * Attach cache persistence. `cachePrefix` scopes all records of this
443
+ * index (recommended: `<dbCachePrefix>/fulltext`). Registers with the
444
+ * CacheManager for periodic flushing; the persisted state is restored
445
+ * lazily on the first `update()` call.
446
+ */
447
+ attachCache(cacheManager, cachePrefix) {
448
+ this.cacheManager = cacheManager;
449
+ this.cachePrefix = cachePrefix;
450
+ cacheManager.register(this);
451
+ }
452
+ getCachePrefix() {
453
+ return this.cachePrefix ?? "fulltext";
454
+ }
455
+ hasDirtyState() {
456
+ return this.engineDirty || this.metaDirty;
457
+ }
458
+ clearDirty() {
459
+ this.engineDirty = false;
460
+ this.metaDirty = false;
461
+ }
462
+ markEngineDirty() {
463
+ this.engineDirty = true;
464
+ this.metaDirty = true;
465
+ }
466
+ async flushToCache(store, _options) {
467
+ const prefix = this.getCachePrefix();
468
+ let written = 0;
469
+ if (this.engineDirty) {
470
+ await store.put("fulltext", `${prefix}/engine`, this.engine.serialize());
471
+ written++;
472
+ }
473
+ const meta = {
474
+ cursor: this.cursor,
475
+ configFingerprint: this.configFingerprint,
476
+ needsBackfill: this.needsBackfill,
477
+ backfillCursor: this.backfillCursor,
478
+ };
479
+ await store.put("fulltext", `${prefix}/meta`, new TextEncoder().encode(JSON.stringify(meta)));
480
+ written++;
481
+ return written;
482
+ }
483
+ async ensureRestored() {
484
+ if (this.restored || !this.cacheManager) {
485
+ this.restored = true;
486
+ return;
487
+ }
488
+ if (!this.restorePromise) {
489
+ this.restorePromise = this.restoreFromCache().finally(() => {
490
+ this.restored = true;
491
+ });
492
+ }
493
+ return this.restorePromise;
494
+ }
495
+ /**
496
+ * Restore persisted state. Unlike the summary, index content is only
497
+ * usable when the config fingerprint matches exactly (tokenization is
498
+ * config-dependent); a mismatch or unreadable blob starts empty and
499
+ * schedules a full backfill instead.
500
+ */
501
+ async restoreFromCache() {
502
+ const store = this.cacheManager?.getStore();
503
+ if (!store) {
504
+ return;
505
+ }
506
+ const prefix = this.getCachePrefix();
507
+ let meta;
508
+ try {
509
+ const metaBytes = await store.get("fulltext", `${prefix}/meta`);
510
+ if (!metaBytes) {
511
+ return;
512
+ }
513
+ meta = JSON.parse(new TextDecoder().decode(metaBytes));
514
+ }
515
+ catch {
516
+ return;
517
+ }
518
+ if (meta.configFingerprint !== this.configFingerprint) {
519
+ // Index was built with a different configuration/engine version:
520
+ // start empty, re-index everything in the background.
521
+ this.scheduleBackfill();
522
+ this.metaDirty = true;
523
+ return;
524
+ }
525
+ try {
526
+ const engineBytes = await store.get("fulltext", `${prefix}/engine`);
527
+ if (engineBytes) {
528
+ this.engine.load(engineBytes);
529
+ }
530
+ }
531
+ catch {
532
+ // A corrupt blob only loses the cached index; rebuild from the feed.
533
+ this.engine = this.createEngine();
534
+ this.cursor = null;
535
+ this.scheduleBackfill();
536
+ this.metaDirty = true;
537
+ return;
538
+ }
539
+ this.cursor = meta.cursor ?? null;
540
+ if (meta.needsBackfill) {
541
+ // Resume an interrupted backfill where it left off.
542
+ this.needsBackfill = true;
543
+ this.backfillCursor = meta.backfillCursor ?? null;
544
+ }
545
+ }
546
+ }
547
+ exports.DocumentFullTextIndex = DocumentFullTextIndex;
548
+ //# sourceMappingURL=DocumentFullTextIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentFullTextIndex.js","sourceRoot":"","sources":["../../../../src/core/indexing/fulltext/DocumentFullTextIndex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import type { FulltextSearchHit, FulltextSearchOptions } from "./types";
2
+ /**
3
+ * Narrow interface between the {@link DocumentFullTextIndex} and the
4
+ * underlying search engine. Everything engine-specific (MiniSearch today;
5
+ * Orama, vector search, ... later) stays behind this seam — including the
6
+ * serialization format, so an engine swap is just a format-version bump
7
+ * that triggers a rebuild.
8
+ */
9
+ export interface SearchEngineAdapter {
10
+ /** Add or replace the indexed text fields of a document. */
11
+ add(docId: string, fields: Record<string, string>): void;
12
+ /** Remove a document from the index (no-op when absent). */
13
+ remove(docId: string): void;
14
+ has(docId: string): boolean;
15
+ search(query: string, options?: FulltextSearchOptions): FulltextSearchHit[];
16
+ getDocumentCount(): number;
17
+ /** All field names the index currently knows. */
18
+ getFieldNames(): string[];
19
+ /** Serialize the full engine state (loadable via {@link load}). */
20
+ serialize(): Uint8Array;
21
+ /**
22
+ * Restore state produced by {@link serialize}. Throws when the payload
23
+ * is unreadable or from an incompatible format version — callers treat
24
+ * that as "start empty and rebuild".
25
+ */
26
+ load(bytes: Uint8Array): void;
27
+ /** Drop all indexed documents. */
28
+ clear(): void;
29
+ }
30
+ /**
31
+ * Build the tokenizer for a language: `Intl.Segmenter` word segmentation
32
+ * where available (correct for CJK and other scripts without word
33
+ * spaces), otherwise a Unicode letters/digits fallback (e.g. React
34
+ * Native/Hermes without `Intl.Segmenter`).
35
+ */
36
+ export declare function createTokenizer(language: string): (text: string) => string[];
37
+ /**
38
+ * MiniSearch-backed {@link SearchEngineAdapter}.
39
+ *
40
+ * MiniSearch requires the indexed field list at construction time, but
41
+ * mindoodb documents are schemaless (auto mode indexes whatever string
42
+ * fields documents have). The adapter therefore keeps the extracted
43
+ * source texts per document and transparently rebuilds the MiniSearch
44
+ * instance when a previously unseen field name appears — rare in
45
+ * practice, since real databases converge on a stable field set quickly.
46
+ * The kept source texts also make the serialized state self-contained.
47
+ */
48
+ export declare class MiniSearchAdapter implements SearchEngineAdapter {
49
+ private readonly language;
50
+ private readonly tokenize;
51
+ private fieldNames;
52
+ private docs;
53
+ private engine;
54
+ constructor(language: string, initialFields?: string[]);
55
+ private engineOptions;
56
+ private createEngine;
57
+ /** Rebuild the MiniSearch instance over a grown field list. */
58
+ private rebuildWithFields;
59
+ add(docId: string, fields: Record<string, string>): void;
60
+ remove(docId: string): void;
61
+ has(docId: string): boolean;
62
+ search(query: string, options?: FulltextSearchOptions): FulltextSearchHit[];
63
+ getDocumentCount(): number;
64
+ getFieldNames(): string[];
65
+ serialize(): Uint8Array;
66
+ load(bytes: Uint8Array): void;
67
+ clear(): void;
68
+ }
69
+ //# sourceMappingURL=SearchEngineAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchEngineAdapter.d.ts","sourceRoot":"","sources":["../../../../src/core/indexing/fulltext/SearchEngineAdapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAGxE;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,4DAA4D;IAC5D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACzD,4DAA4D;IAC5D,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,iBAAiB,EAAE,CAAC;IAC5E,gBAAgB,IAAI,MAAM,CAAC;IAC3B,iDAAiD;IACjD,aAAa,IAAI,MAAM,EAAE,CAAC;IAC1B,mEAAmE;IACnE,SAAS,IAAI,UAAU,CAAC;IACxB;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,kCAAkC;IAClC,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAkC5E;AAqBD;;;;;;;;;;GAUG;AACH,qBAAa,iBAAkB,YAAW,mBAAmB;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,UAAU,CAAW;IAC7B,OAAO,CAAC,IAAI,CAAkD;IAC9D,OAAO,CAAC,MAAM,CAA6B;gBAE/B,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAE,MAAM,EAAO;IAO1D,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,YAAY;IAIpB,+DAA+D;IAC/D,OAAO,CAAC,iBAAiB;IAQzB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAuBxD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ3B,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI3B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,iBAAiB,EAAE;IA0B3E,gBAAgB,IAAI,MAAM;IAI1B,aAAa,IAAI,MAAM,EAAE;IAIzB,SAAS,IAAI,UAAU;IAWvB,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAoB7B,KAAK,IAAI,IAAI;CAId"}