@harperfast/harper 5.3.0-beta.4 → 5.3.0

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 (314) hide show
  1. package/bin/backup.ts +6 -1
  2. package/components/Application.ts +486 -115
  3. package/components/DESIGN.md +109 -21
  4. package/components/deploymentProvenance.ts +28 -0
  5. package/components/operations.js +14 -7
  6. package/components/packageComponent.ts +5 -1
  7. package/config-root.schema.json +1 -1
  8. package/dataLayer/DESIGN.md +35 -7
  9. package/dataLayer/blobBackup.ts +71 -30
  10. package/dataLayer/harperBridge/ResourceBridge.ts +16 -2
  11. package/dataLayer/rocksdbBackup.ts +88 -34
  12. package/dataLayer/schemaDescribe.ts +45 -1
  13. package/dist/bin/backup.js +1 -1
  14. package/dist/bin/backup.js.map +1 -1
  15. package/dist/components/Application.d.ts +11 -21
  16. package/dist/components/Application.js +436 -105
  17. package/dist/components/Application.js.map +1 -1
  18. package/dist/components/deploymentProvenance.d.ts +4 -0
  19. package/dist/components/deploymentProvenance.js +32 -0
  20. package/dist/components/deploymentProvenance.js.map +1 -0
  21. package/dist/components/operations.js +14 -7
  22. package/dist/components/operations.js.map +1 -1
  23. package/dist/components/packageComponent.js +6 -1
  24. package/dist/components/packageComponent.js.map +1 -1
  25. package/dist/dataLayer/blobBackup.d.ts +30 -3
  26. package/dist/dataLayer/blobBackup.js +73 -36
  27. package/dist/dataLayer/blobBackup.js.map +1 -1
  28. package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +1 -0
  29. package/dist/dataLayer/harperBridge/ResourceBridge.js +15 -3
  30. package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
  31. package/dist/dataLayer/rocksdbBackup.d.ts +4 -1
  32. package/dist/dataLayer/rocksdbBackup.js +74 -36
  33. package/dist/dataLayer/rocksdbBackup.js.map +1 -1
  34. package/dist/dataLayer/schemaDescribe.js +45 -1
  35. package/dist/dataLayer/schemaDescribe.js.map +1 -1
  36. package/dist/resources/DatabaseTransaction.d.ts +1 -0
  37. package/dist/resources/DatabaseTransaction.js +33 -8
  38. package/dist/resources/DatabaseTransaction.js.map +1 -1
  39. package/dist/resources/ResourceInterface.d.ts +7 -3
  40. package/dist/resources/ResourceInterface.js +2 -0
  41. package/dist/resources/ResourceInterface.js.map +1 -1
  42. package/dist/resources/Table.d.ts +151 -445
  43. package/dist/resources/Table.js +209 -8
  44. package/dist/resources/Table.js.map +1 -1
  45. package/dist/resources/analytics/write.d.ts +11 -0
  46. package/dist/resources/analytics/write.js +3 -0
  47. package/dist/resources/analytics/write.js.map +1 -1
  48. package/dist/resources/blob.d.ts +30 -0
  49. package/dist/resources/blob.js +189 -1
  50. package/dist/resources/blob.js.map +1 -1
  51. package/dist/resources/databases.d.ts +1 -0
  52. package/dist/resources/databases.js +80 -15
  53. package/dist/resources/databases.js.map +1 -1
  54. package/dist/resources/derivedIndexRuntime.d.ts +13 -0
  55. package/dist/resources/derivedIndexRuntime.js +57 -5
  56. package/dist/resources/derivedIndexRuntime.js.map +1 -1
  57. package/dist/resources/derivedIndexes.d.ts +1 -0
  58. package/dist/resources/derivedIndexes.js +116 -15
  59. package/dist/resources/derivedIndexes.js.map +1 -1
  60. package/dist/resources/fullTextSchema.d.ts +5 -3
  61. package/dist/resources/fullTextSchema.js +48 -5
  62. package/dist/resources/fullTextSchema.js.map +1 -1
  63. package/dist/resources/fullTextSchemaLifecycle.d.ts +2 -0
  64. package/dist/resources/fullTextSchemaLifecycle.js +33 -0
  65. package/dist/resources/fullTextSchemaLifecycle.js.map +1 -1
  66. package/dist/resources/graphql.js +30 -12
  67. package/dist/resources/graphql.js.map +1 -1
  68. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +21 -1
  69. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +114 -5
  70. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  71. package/dist/resources/indexes/fullTextDerivedIndex.d.ts +11 -2
  72. package/dist/resources/indexes/fullTextDerivedIndex.js +187 -24
  73. package/dist/resources/indexes/fullTextDerivedIndex.js.map +1 -1
  74. package/dist/resources/indexes/fullTextNativeBinding.d.ts +99 -1
  75. package/dist/resources/indexes/fullTextNativeBinding.js +35 -1
  76. package/dist/resources/indexes/fullTextNativeBinding.js.map +1 -1
  77. package/dist/resources/indexes/fullTextQueryIndex.d.ts +58 -0
  78. package/dist/resources/indexes/fullTextQueryIndex.js +943 -0
  79. package/dist/resources/indexes/fullTextQueryIndex.js.map +1 -0
  80. package/dist/resources/indexes/fullTextQueryProtocol.d.ts +6 -0
  81. package/dist/resources/indexes/fullTextQueryProtocol.js +32 -0
  82. package/dist/resources/indexes/fullTextQueryProtocol.js.map +1 -0
  83. package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.d.ts +4 -1
  84. package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.js +30 -7
  85. package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.js.map +1 -1
  86. package/dist/resources/search.d.ts +41 -0
  87. package/dist/resources/search.js +468 -26
  88. package/dist/resources/search.js.map +1 -1
  89. package/dist/resources/transactionBroadcast.js +101 -50
  90. package/dist/resources/transactionBroadcast.js.map +1 -1
  91. package/dist/resources/typeParity.d.ts +9 -0
  92. package/dist/resources/typeParity.js +3 -0
  93. package/dist/resources/typeParity.js.map +1 -0
  94. package/dist/server/REST.js.map +1 -1
  95. package/dist/server/itc/serverHandlers.js +48 -8
  96. package/dist/server/itc/serverHandlers.js.map +1 -1
  97. package/dist/server/serverHelpers/contentTypes.d.ts +7 -0
  98. package/dist/server/serverHelpers/contentTypes.js +36 -23
  99. package/dist/server/serverHelpers/contentTypes.js.map +1 -1
  100. package/dist/server/serverHelpers/uwsServer.js +28 -5
  101. package/dist/server/serverHelpers/uwsServer.js.map +1 -1
  102. package/dist/server/threads/itc.js +19 -0
  103. package/dist/server/threads/itc.js.map +1 -1
  104. package/dist/server/threads/manageThreads.d.ts +3 -0
  105. package/dist/server/threads/manageThreads.js +90 -23
  106. package/dist/server/threads/manageThreads.js.map +1 -1
  107. package/dist/utility/operation_authorization.js +25 -7
  108. package/dist/utility/operation_authorization.js.map +1 -1
  109. package/dist/utility/signalling.js +3 -0
  110. package/dist/utility/signalling.js.map +1 -1
  111. package/dist/validation/searchValidator.js +22 -2
  112. package/dist/validation/searchValidator.js.map +1 -1
  113. package/npm-shrinkwrap.json +22 -22
  114. package/package.json +2 -4
  115. package/resources/DESIGN.md +19 -2
  116. package/resources/DatabaseTransaction.ts +40 -10
  117. package/resources/FULL_TEXT.md +97 -0
  118. package/resources/ResourceInterface.ts +8 -2
  119. package/resources/Table.ts +767 -17
  120. package/resources/analytics/write.ts +3 -3
  121. package/resources/blob.ts +183 -1
  122. package/resources/databases.ts +126 -14
  123. package/resources/derivedIndexRuntime.ts +79 -6
  124. package/resources/derivedIndexes.ts +142 -18
  125. package/resources/fullTextSchema.ts +55 -9
  126. package/resources/fullTextSchemaLifecycle.ts +45 -0
  127. package/resources/graphql.ts +33 -12
  128. package/resources/indexes/DESIGN.md +167 -15
  129. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +125 -5
  130. package/resources/indexes/fullTextDerivedIndex.ts +216 -32
  131. package/resources/indexes/fullTextNativeBinding.ts +133 -3
  132. package/resources/indexes/fullTextQueryIndex.ts +1120 -0
  133. package/resources/indexes/fullTextQueryProtocol.ts +35 -0
  134. package/resources/indexes/nativeFullTextDerivedIndexLifecycle.ts +28 -8
  135. package/resources/search.ts +513 -26
  136. package/resources/transactionBroadcast.ts +86 -47
  137. package/resources/typeParity.ts +20 -0
  138. package/schema.graphql +18 -5
  139. package/server/DESIGN.md +18 -0
  140. package/server/REST.ts +1 -1
  141. package/server/itc/serverHandlers.js +61 -8
  142. package/server/serverHelpers/contentTypes.ts +31 -26
  143. package/server/serverHelpers/uwsServer.ts +35 -7
  144. package/server/threads/itc.js +21 -0
  145. package/server/threads/manageThreads.js +95 -21
  146. package/studio/web/assets/{Chat-Bq60AO-g.js → Chat-CNEKMllJ.js} +13 -13
  147. package/studio/web/assets/FloatingChat-CEnWhHeR.js +23 -0
  148. package/studio/web/assets/SearchDialog-CwhJdEdY.js +1 -0
  149. package/studio/web/assets/{abnfDiagram-O67JEVCF-DpPZWMOf.js → abnfDiagram-O67JEVCF-raXE027J.js} +1 -1
  150. package/studio/web/assets/alertDialog-BbWD9Xxa.js +1 -0
  151. package/studio/web/assets/apiToken-DC5vsaaO.js +1 -0
  152. package/studio/web/assets/applications-DQZxDy0x.js +296 -0
  153. package/studio/web/assets/architecture-7GRP2DOG-DDmz3hpI.js +1 -0
  154. package/studio/web/assets/{architectureDiagram-NJMV4G6O-OmgLraID.js → architectureDiagram-NJMV4G6O-C8_Eet7w.js} +1 -1
  155. package/studio/web/assets/arrow-up-D2g_57vT.js +1 -0
  156. package/studio/web/assets/authStore-CJCaADw9.js +3 -0
  157. package/studio/web/assets/{blockDiagram-BEXU5L5S-Cv7CD3Ai.js → blockDiagram-BEXU5L5S-DR6S5-1D.js} +1 -1
  158. package/studio/web/assets/{button-MFP9n8Ck.js → button-DWwfgGWI.js} +2 -2
  159. package/studio/web/assets/{c4Diagram-YGBWAQC7-Ds1vKYnN.js → c4Diagram-YGBWAQC7-BAfZ1G01.js} +1 -1
  160. package/studio/web/assets/channel-D0AkPjJ8.js +1 -0
  161. package/studio/web/assets/{chevron-up-CFe8x5Bp.js → chevron-up-CFxbMGv2.js} +1 -1
  162. package/studio/web/assets/{chunk-3FUC2YCW-DpnBPH8B.js → chunk-3FUC2YCW-DuRp-j19.js} +1 -1
  163. package/studio/web/assets/{chunk-5DYCD2WN-LLLCQSzg.js → chunk-5DYCD2WN-BceBfIHT.js} +1 -1
  164. package/studio/web/assets/{chunk-742MDFTN-BL8J_pIO.js → chunk-742MDFTN-CIkt8ijt.js} +1 -1
  165. package/studio/web/assets/{chunk-7INBJB4K-C-hJHiiK.js → chunk-7INBJB4K-BpeAXyOi.js} +1 -1
  166. package/studio/web/assets/{chunk-7M6MHVWA-C6ZqkFbA.js → chunk-7M6MHVWA-h6WlaTzO.js} +1 -1
  167. package/studio/web/assets/{chunk-7PRAP22T-CUXM8BG6.js → chunk-7PRAP22T-KyqX6x3f.js} +1 -1
  168. package/studio/web/assets/{chunk-GTNCS2PH-DJ2BFvS1.js → chunk-GTNCS2PH-DGHLXyow.js} +1 -1
  169. package/studio/web/assets/{chunk-GWA4HPMP-C42bSqLL.js → chunk-GWA4HPMP-DsejB6gA.js} +1 -1
  170. package/studio/web/assets/{chunk-MBY4JIJT-C-5jz6Lo.js → chunk-MBY4JIJT-BwSGweQP.js} +1 -1
  171. package/studio/web/assets/{chunk-NETBCI7D-D-bzlN4r.js → chunk-NETBCI7D-C8UnOw_f.js} +1 -1
  172. package/studio/web/assets/{chunk-O7XYJQB3-ep14zA23.js → chunk-O7XYJQB3-CBS3nZYV.js} +1 -1
  173. package/studio/web/assets/{chunk-UA2S7LBM-BMRWRHED.js → chunk-UA2S7LBM-BHpEdH8D.js} +1 -1
  174. package/studio/web/assets/{chunk-WEXAMYUT-DdLYVdX1.js → chunk-WEXAMYUT-BAIhTwyh.js} +1 -1
  175. package/studio/web/assets/{chunk-Z7XXMR3K-BmKEDjcP.js → chunk-Z7XXMR3K-DSHbImdf.js} +1 -1
  176. package/studio/web/assets/{chunk-ZIGJFQKS-DLZgdNxA.js → chunk-ZIGJFQKS-Cs8fUn7y.js} +1 -1
  177. package/studio/web/assets/{classDiagram-v2-NBCMYWYE-DOI5vgKT.js → classDiagram-v2-NBCMYWYE-DmDPkt2u.js} +1 -1
  178. package/studio/web/assets/cn-6T8VranJ.js +1 -0
  179. package/studio/web/assets/{codicon-Brq4_Ui5.ttf → codicon-DF1abBS2.ttf} +0 -0
  180. package/studio/web/assets/{createLucideIcon-bziYxJli.js → createLucideIcon-fO5dL7D5.js} +1 -1
  181. package/studio/web/assets/{css.worker-l1psR_wG.js → css.worker-DoT-OOzx.js} +36 -36
  182. package/studio/web/assets/{cssMode-DJyc9mHj.js → cssMode-Dz2DxF4e.js} +1 -1
  183. package/studio/web/assets/{cynefin-OW5HDTMX-BSW-DB7S.js → cynefin-OW5HDTMX-DIvbXLSj.js} +1 -1
  184. package/studio/web/assets/{cynefinDiagram-VND7K2PF-CbAHEwxt.js → cynefinDiagram-VND7K2PF-BdtaXiCE.js} +1 -1
  185. package/studio/web/assets/{dagre-6A5THRUB-Csxewgs4.js → dagre-6A5THRUB-C7RUWHyz.js} +1 -1
  186. package/studio/web/assets/{diagram-22UHCM2B-a0rt8tY4.js → diagram-22UHCM2B-DJCvcaWP.js} +1 -1
  187. package/studio/web/assets/{diagram-3UASUU5V-lEj2SVNh.js → diagram-3UASUU5V-Du6VKWln.js} +1 -1
  188. package/studio/web/assets/{diagram-ATOU4E4O-HcrAeB-q.js → diagram-ATOU4E4O-dxRfeG4B.js} +1 -1
  189. package/studio/web/assets/{diagram-CDSNMT55-CYxiuyEx.js → diagram-CDSNMT55-l5Ga0u-W.js} +1 -1
  190. package/studio/web/assets/{diagram-MLGK6HIB-ChbCJTgJ.js → diagram-MLGK6HIB-CNQY47LA.js} +1 -1
  191. package/studio/web/assets/{diagram-MPIPVDR6-DaX9Y-N3.js → diagram-MPIPVDR6-7prveD1B.js} +1 -1
  192. package/studio/web/assets/{dist-Cz2Y6-6G.js → dist-BrRuMUzt.js} +1 -1
  193. package/studio/web/assets/{download-CtostjYn.js → download-Cn6tPG4L.js} +1 -1
  194. package/studio/web/assets/{ebnfDiagram-ZINNZB2B-CwAsENB1.js → ebnfDiagram-ZINNZB2B-5OnkTpfi.js} +1 -1
  195. package/studio/web/assets/{editor-DDIsQfj6.js → editor-B3mjd3tz.js} +1 -1
  196. package/studio/web/assets/editor.worker-Yd1NR0QT.js +33 -0
  197. package/studio/web/assets/{elk-276RUBZZ-Hexg9E4D.js → elk-276RUBZZ-DxDQPjQT.js} +1 -1
  198. package/studio/web/assets/{erDiagram-OPXOYQCR-CeC-wwO1.js → erDiagram-OPXOYQCR-CQlCX84D.js} +1 -1
  199. package/studio/web/assets/eventmodeling-NTZA5JFV-DONQf5aG.js +1 -0
  200. package/studio/web/assets/flowDiagram-KWPJA3E3-BoZ8_QR1.js +1 -0
  201. package/studio/web/assets/{ganttDiagram-FUAMR5RP-C2_Hhl1-.js → ganttDiagram-FUAMR5RP-bloX3Voy.js} +1 -1
  202. package/studio/web/assets/{getAnalytics-CjthMQqF.js → getAnalytics-C0FHjtdQ.js} +1 -1
  203. package/studio/web/assets/{gitGraph-4MIJSDKK-xIk5Vuew.js → gitGraph-4MIJSDKK-BrXWmJt2.js} +1 -1
  204. package/studio/web/assets/{gitGraphDiagram-X574FWY7-CMxJ34up.js → gitGraphDiagram-X574FWY7-C2KnnZeY.js} +1 -1
  205. package/studio/web/assets/{html-g1BJHxLy.js → html-BsRGM7tp.js} +1 -1
  206. package/studio/web/assets/{html.worker-DdwM4IrA.js → html.worker-B1dwY0Ay.js} +27 -27
  207. package/studio/web/assets/{htmlMode-Vh5IglCQ.js → htmlMode-tUKJaA3o.js} +1 -1
  208. package/studio/web/assets/index-72cEH474.css +1 -0
  209. package/studio/web/assets/index-BuqFjN5K.js +828 -0
  210. package/studio/web/assets/index.lazy-CcpfQFY_.js +2 -0
  211. package/studio/web/assets/{info-A6RAGUB7-o49TEbj-.js → info-A6RAGUB7-BhzBHe4U.js} +1 -1
  212. package/studio/web/assets/{infoDiagram-VRGFBTTK-Cjhh7yzZ.js → infoDiagram-VRGFBTTK-B0J1132p.js} +1 -1
  213. package/studio/web/assets/{ishikawaDiagram-OU5B5YK6-C63aXRmh.js → ishikawaDiagram-OU5B5YK6-BNk0tuQx.js} +1 -1
  214. package/studio/web/assets/{javascript-5VIolqf7.js → javascript-BZ_uRGHl.js} +1 -1
  215. package/studio/web/assets/{journeyDiagram-ZHPQQLJL-D_o0P5Mu.js → journeyDiagram-ZHPQQLJL-Be79RMQM.js} +1 -1
  216. package/studio/web/assets/json.worker-BQqXGI3X.js +65 -0
  217. package/studio/web/assets/{jsonMode-DG4zQraI.js → jsonMode-DgB-aFMj.js} +1 -1
  218. package/studio/web/assets/{kanban-definition-PNTS6WVX-CTI9SSxY.js → kanban-definition-PNTS6WVX-4uuoQP9W.js} +1 -1
  219. package/studio/web/assets/{languageServices-t5FBpX-i.js → languageServices-BleuBw17.js} +1 -1
  220. package/studio/web/assets/localStorageKeys-etzFY_xV.js +1 -0
  221. package/studio/web/assets/{lspLanguageFeatures-DgVnNPh-.js → lspLanguageFeatures-ByVYLSsQ.js} +1 -1
  222. package/studio/web/assets/{mermaid-parser.core-C2lcH_jP.js → mermaid-parser.core-V1UYMeXV.js} +3 -3
  223. package/studio/web/assets/{mermaid.core-BG5bjfIG.js → mermaid.core-1PX6R49U.js} +4 -4
  224. package/studio/web/assets/{mindmap-definition-NLK3R4M7-BK7ho6JD.js → mindmap-definition-NLK3R4M7-C70Ctm0J.js} +1 -1
  225. package/studio/web/assets/notifications-D1Nf-Edn.js +1 -0
  226. package/studio/web/assets/notifications-TuzN0IMi.js +1 -0
  227. package/studio/web/assets/{packet-AYTQ26CC-BHPy6KBV.js → packet-AYTQ26CC-DWbXHx5g.js} +1 -1
  228. package/studio/web/assets/{pegDiagram-GJSIUBJH-DzjwG3jO.js → pegDiagram-GJSIUBJH-d6z1cc7W.js} +1 -1
  229. package/studio/web/assets/{pie-WAS4IAKB-D0cP-DTU.js → pie-WAS4IAKB-DjoTm3yr.js} +1 -1
  230. package/studio/web/assets/{pieDiagram-5QR66LMP-C_hOP9Lv.js → pieDiagram-5QR66LMP-Dz3RHpDA.js} +1 -1
  231. package/studio/web/assets/profile-D7C7Lupz.js +1 -0
  232. package/studio/web/assets/{quadrantDiagram-O4NWA36T-CZW8PbV1.js → quadrantDiagram-O4NWA36T-CIF5Qkou.js} +1 -1
  233. package/studio/web/assets/{radar-RG4KPBEZ-C8fk0U81.js → radar-RG4KPBEZ-CVBgjCOj.js} +1 -1
  234. package/studio/web/assets/{railroad-74A4TZTK-B60FWm17.js → railroad-74A4TZTK-BdhXw10Q.js} +1 -1
  235. package/studio/web/assets/railroad-abnf-HS5TGJTU-BcoQPN39.js +1 -0
  236. package/studio/web/assets/railroad-ebnf-LZEXJU2U-B1Lke2JN.js +1 -0
  237. package/studio/web/assets/railroad-peg-WCYAUIDC-D-oJFkiV.js +1 -0
  238. package/studio/web/assets/{railroadDiagram-XR7U4H2S-DyyNmgbU.js → railroadDiagram-XR7U4H2S-y3Jv2U6N.js} +1 -1
  239. package/studio/web/assets/regions-nGQCm-v8.js +1 -0
  240. package/studio/web/assets/register-C3x9Ze6P.js +909 -0
  241. package/studio/web/assets/register-DjpsE8to.css +1 -0
  242. package/studio/web/assets/{requirementDiagram-PLB6GJNP-C4H-mLKu.js → requirementDiagram-PLB6GJNP-ChINZEmu.js} +1 -1
  243. package/studio/web/assets/restartGate-nHAFLDh-.js +1 -0
  244. package/studio/web/assets/{sankeyDiagram-IPEJSGJF-DHDyga4c.js → sankeyDiagram-IPEJSGJF-D9AyLce2.js} +1 -1
  245. package/studio/web/assets/{sequenceDiagram-PO4LG4MO-CdNcHXRI.js → sequenceDiagram-PO4LG4MO-hfk4aIEm.js} +1 -1
  246. package/studio/web/assets/{setComponentFile-z4-qJCbA.js → setComponentFile-DpjrRqeG.js} +1 -1
  247. package/studio/web/assets/{setup-CS50uJ4x.js → setup-CGiKLZ9e.js} +2 -2
  248. package/studio/web/assets/{stateDiagram-v2-GCMORJYK-CpKuXq15.js → stateDiagram-v2-GCMORJYK-Bs8RIb9K.js} +1 -1
  249. package/studio/web/assets/status-CGJwrNPH.js +61 -0
  250. package/studio/web/assets/{swimlanes-2SLR337P-NRHa2D8I.js → swimlanes-2SLR337P-B52xrf6t.js} +1 -1
  251. package/studio/web/assets/swimlanesDiagram-TC7HE7FX-DfN7BAP5.js +8 -0
  252. package/studio/web/assets/tabs-BCTQzoQK.js +1 -0
  253. package/studio/web/assets/{timeline-definition-EJHVYXUP-D39Y-xpq.js → timeline-definition-EJHVYXUP-DJSITpQX.js} +1 -1
  254. package/studio/web/assets/toggleHighContrast-C-Ne6P7T.js +51 -0
  255. package/studio/web/assets/toggleHighContrast-n7clI0si.css +1 -0
  256. package/studio/web/assets/{treeView-Q6P3EWNA-CRWR9OqD.js → treeView-Q6P3EWNA-C-epdxRo.js} +1 -1
  257. package/studio/web/assets/{treemap-WGGIJYW6-ZfXyJgLO.js → treemap-WGGIJYW6-DOVyp_zw.js} +1 -1
  258. package/studio/web/assets/{ts.worker-DDMUrpqh.js → ts.worker-Clm12uY6.js} +131 -131
  259. package/studio/web/assets/{tsMode-D83Gg3cq.js → tsMode-CSreYTys.js} +1 -1
  260. package/studio/web/assets/{typescript-Dfp-GrNq.js → typescript-MnxBk89W.js} +1 -1
  261. package/studio/web/assets/{useEntityRestURL-BKetlINf.js → useEntityRestURL-TNrh77-s.js} +1 -1
  262. package/studio/web/assets/{usecaseDiagram-POWQR4AR-jf-zIDZ_.js → usecaseDiagram-POWQR4AR-B6252cbq.js} +1 -1
  263. package/studio/web/assets/{vendor-core-BdkdbUek.js → vendor-core-6LhfJlRC.js} +1 -1
  264. package/studio/web/assets/vendor-datadog-ozKf-pts.js +6 -0
  265. package/studio/web/assets/{vendor-react-izWchTRL.js → vendor-react-BOliS0BL.js} +1 -1
  266. package/studio/web/assets/vendor-tanstack-Bntfka-M.js +2 -0
  267. package/studio/web/assets/vendor-ui-9EYYDgoN.js +41 -0
  268. package/studio/web/assets/{vennDiagram-UO4OBE2U-BKYAZUh_.js → vennDiagram-UO4OBE2U-DZTsDA4k.js} +1 -1
  269. package/studio/web/assets/{wardley-WFR3VGLG-BO7f36ci.js → wardley-WFR3VGLG-Cfqoe6z4.js} +1 -1
  270. package/studio/web/assets/{wardleyDiagram-VNRHLVJA-Djb0JDQc.js → wardleyDiagram-VNRHLVJA-qu_f7Tvl.js} +1 -1
  271. package/studio/web/assets/{workers-CCvmDLH3.js → workers-BfZlUNVI.js} +3 -3
  272. package/studio/web/assets/{xml-06pZp00U.js → xml-BHd6qGH7.js} +1 -1
  273. package/studio/web/assets/{xychartDiagram-PMCCYNJV-BQh9ubvb.js → xychartDiagram-PMCCYNJV-UrOKRsmR.js} +1 -1
  274. package/studio/web/assets/{yaml-iSnWMVlV.js → yaml-C53R8OQq.js} +1 -1
  275. package/studio/web/assets/{yaml.worker-DAK2o_H1.js → yaml.worker-D9JekGdp.js} +183 -183
  276. package/studio/web/index.html +15 -15
  277. package/utility/operation_authorization.ts +27 -7
  278. package/utility/signalling.ts +3 -0
  279. package/validation/searchValidator.ts +22 -13
  280. package/studio/web/assets/FloatingChat-D4560T0p.js +0 -23
  281. package/studio/web/assets/alertDialog-UrbiMgQt.js +0 -1
  282. package/studio/web/assets/apiToken-BEvbFPMc.js +0 -1
  283. package/studio/web/assets/applications-CSUVTH4E.js +0 -296
  284. package/studio/web/assets/architecture-7GRP2DOG-11l4Ny1l.js +0 -1
  285. package/studio/web/assets/authStore-5jSS5pTW.js +0 -3
  286. package/studio/web/assets/channel-BDtouPd6.js +0 -1
  287. package/studio/web/assets/dialog-DTepachC.js +0 -1
  288. package/studio/web/assets/editor.worker-CkkvdXvO.js +0 -33
  289. package/studio/web/assets/eventmodeling-NTZA5JFV-CFb03e0o.js +0 -1
  290. package/studio/web/assets/flowDiagram-KWPJA3E3-Cidi00_Y.js +0 -1
  291. package/studio/web/assets/index-CPoDzQTe.css +0 -1
  292. package/studio/web/assets/index-DGRAzvO4.js +0 -824
  293. package/studio/web/assets/index.lazy-vgSic7et.js +0 -2
  294. package/studio/web/assets/json.worker-CSi2hF-a.js +0 -65
  295. package/studio/web/assets/notifications-BeWcX04m.js +0 -1
  296. package/studio/web/assets/notifications-DUGWrWoO.js +0 -1
  297. package/studio/web/assets/profile-BvUEDBzW.js +0 -1
  298. package/studio/web/assets/railroad-abnf-HS5TGJTU-CLMVZvH0.js +0 -1
  299. package/studio/web/assets/railroad-ebnf-LZEXJU2U--tlwFoVB.js +0 -1
  300. package/studio/web/assets/railroad-peg-WCYAUIDC-Dpuslblm.js +0 -1
  301. package/studio/web/assets/regions-CB-_2m7M.js +0 -1
  302. package/studio/web/assets/register-1w1Zr3b2.js +0 -848
  303. package/studio/web/assets/register-jjEx9u7D.css +0 -1
  304. package/studio/web/assets/setLocalStorage-D_kflv4U.js +0 -1
  305. package/studio/web/assets/status-CI0wOdOE.js +0 -61
  306. package/studio/web/assets/swimlanesDiagram-TC7HE7FX-BBk4t4hO.js +0 -8
  307. package/studio/web/assets/tabs-CnQ_zenf.js +0 -1
  308. package/studio/web/assets/toggleHighContrast--ixms01u.css +0 -1
  309. package/studio/web/assets/toggleHighContrast-BsAE4jPe.js +0 -49
  310. package/studio/web/assets/useLocalStorage-BYoZF60G.js +0 -1
  311. package/studio/web/assets/vendor-datadog-fCQhBHGk.js +0 -6
  312. package/studio/web/assets/vendor-tanstack-CQ1aRjVa.js +0 -2
  313. package/studio/web/assets/vendor-ui-aE1tHcW7.js +0 -41
  314. package/studio/web/assets/x-vYntCxm4.js +0 -1
@@ -1276,12 +1276,14 @@ function initStores(path, rootStore, databaseName, { defaultTable, auditPath, is
1276
1276
  else if (warnings.length === 0)
1277
1277
  warnedFullTextStates.delete(warningKey);
1278
1278
  }
1279
+ const fullTextFields = (0, fullTextSchemaLifecycle_ts_1.readPersistedFullTextFields)(primaryAttribute.fullTextFields, primaryAttribute.fullTextIndexes, attributes, (message) => logger.warn(`${databaseName}.${tableName}: ${message}`));
1279
1280
  const fullTextIndexGenerations = persistedFullTextIndexGenerations(primaryAttribute.fullTextIndexGenerations, fullTextIndexes);
1280
1281
  const fullTextIndexRetirements = (0, fullTextSchema_ts_1.persistedFullTextIndexNames)(primaryAttribute.fullTextIndexRetirements);
1281
1282
  if (table && !recreateTable) {
1282
1283
  if (primaryAttribute.audit === true && table.audit !== true)
1283
1284
  table.enableAuditing();
1284
1285
  table.fullTextIndexes = fullTextIndexes;
1286
+ table.fullTextFields = fullTextFields;
1285
1287
  table.fullTextIndexGenerations = fullTextIndexGenerations;
1286
1288
  table.fullTextIndexRetirements = fullTextIndexRetirements;
1287
1289
  indices = table.indices;
@@ -1430,6 +1432,7 @@ function initStores(path, rootStore, databaseName, { defaultTable, auditPath, is
1430
1432
  indices,
1431
1433
  attributes,
1432
1434
  fullTextIndexes,
1435
+ fullTextFields,
1433
1436
  fullTextIndexGenerations,
1434
1437
  fullTextIndexRetirements,
1435
1438
  schemaDefined: primaryAttribute.schemaDefined,
@@ -3036,7 +3039,7 @@ function reloadBranchAt(path) {
3036
3039
  return branch.tables;
3037
3040
  }
3038
3041
  function declareTable(target, tableDefinition) {
3039
- let { table: tableName, database: databaseName, expiration, eviction, scanInterval, attributes, audit, sealed, splitSegments, replicate, randomAccessFields, trackDeletes, schemaDefined, schemaRelationshipsDefined, origin, description, properties, hidden, cacheControl, isolatedApplicationOwner, fullTextIndexes, } = tableDefinition;
3042
+ let { table: tableName, database: databaseName, expiration, eviction, scanInterval, attributes, audit, sealed, splitSegments, replicate, randomAccessFields, trackDeletes, schemaDefined, schemaRelationshipsDefined, origin, description, properties, hidden, cacheControl, isolatedApplicationOwner, fullTextIndexes, fullTextFields, } = tableDefinition;
3040
3043
  const auditExplicitlyEnabled = audit === true;
3041
3044
  const auditExplicitlyDisabled = audit === false;
3042
3045
  const fullTextIndexesExplicit = tableDefinition.fullTextIndexes !== undefined;
@@ -3245,6 +3248,7 @@ function declareTable(target, tableDefinition) {
3245
3248
  let published = false;
3246
3249
  let fullTextValuesForPersistence;
3247
3250
  let fullTextPersistencePending = false;
3251
+ let fullTextFieldsForPersistence;
3248
3252
  let activeFullTextIndexes;
3249
3253
  let fullTextIndexGenerationMap = Object.create(null);
3250
3254
  let fullTextIndexRetirementNames;
@@ -3289,20 +3293,33 @@ function declareTable(target, tableDefinition) {
3289
3293
  validateHnswOptions(lockedAttributesDbi, auditExplicitlyEnabled || (!auditExplicitlyDisabled && persistedAuditUnderLock === true));
3290
3294
  }
3291
3295
  let persistedPrimary = persistedPrimaryDescriptor(Table.dbisDB);
3292
- let persistedFullTextValues = persistedPrimary.descriptor?.fullTextIndexes;
3296
+ const persistedFullTextState = (name, liveValue) => persistedPrimary.descriptor === undefined ? liveValue : persistedPrimary.descriptor[name];
3297
+ let persistedFullTextValues = persistedFullTextState('fullTextIndexes', Table.fullTextIndexes);
3298
+ if (origin === 'cluster') {
3299
+ const declaredFields = new Set((0, fullTextSchemaLifecycle_ts_1.readPersistedFullTextFields)(persistedFullTextState('fullTextFields', Table.fullTextFields), persistedFullTextValues, catalogAttributes(Table.dbisDB), fullTextWarning));
3300
+ attributes = attributes.filter((attribute) => {
3301
+ if (!declaredFields.has(attribute.name))
3302
+ return true;
3303
+ fullTextWarning(`Ignoring peer attribute '${attribute.name}'; the local full-text field is authoritative`);
3304
+ return false;
3305
+ });
3306
+ }
3293
3307
  const incomingFullTextValues = fullTextIndexesExplicit ? fullTextIndexes : [];
3294
3308
  let fullTextValidationAttributes;
3295
3309
  if ((persistedFullTextValues !== undefined && (rootStore instanceof rocksdb_js_1.RocksDatabase || fullTextIndexesExplicit)) ||
3296
- persistedPrimary.descriptor?.fullTextIndexRetirements !== undefined ||
3310
+ persistedFullTextState('fullTextIndexRetirements', Table.fullTextIndexRetirements) !== undefined ||
3311
+ (persistedFullTextState('fullTextFields', Table.fullTextFields) !== undefined &&
3312
+ (rootStore instanceof rocksdb_js_1.RocksDatabase || fullTextIndexesExplicit || fullTextFields !== undefined)) ||
3313
+ (fullTextFields !== undefined && (!Array.isArray(fullTextFields) || fullTextFields.length > 0)) ||
3297
3314
  Table.fullTextIndexes?.length > 0 ||
3298
3315
  (fullTextIndexesExplicit && (!Array.isArray(incomingFullTextValues) || incomingFullTextValues.length > 0))) {
3299
3316
  if (!(rootStore instanceof rocksdb_js_1.RocksDatabase)) {
3300
3317
  exclusiveLock();
3301
3318
  persistedPrimary = persistedPrimaryDescriptor(Table.dbisDB);
3302
- persistedFullTextValues = persistedPrimary.descriptor?.fullTextIndexes;
3319
+ persistedFullTextValues = persistedFullTextState('fullTextIndexes', Table.fullTextIndexes);
3303
3320
  }
3304
3321
  const originalAttributes = Table.attributes.slice();
3305
- fullTextIndexRetirementNames = (0, fullTextSchema_ts_1.persistedFullTextIndexNames)(persistedPrimary.descriptor?.fullTextIndexRetirements);
3322
+ fullTextIndexRetirementNames = (0, fullTextSchema_ts_1.persistedFullTextIndexNames)(persistedFullTextState('fullTextIndexRetirements', Table.fullTextIndexRetirements));
3306
3323
  const relationshipAttributes = originalAttributes.filter((attribute) => attribute.relationship);
3307
3324
  const originalMetadata = {
3308
3325
  description: Table.description,
@@ -3310,6 +3327,12 @@ function declareTable(target, tableDefinition) {
3310
3327
  cacheControl: Table.cacheControl,
3311
3328
  schemaDefined: Table.schemaDefined,
3312
3329
  };
3330
+ const originalFullTextState = {
3331
+ indexes: Table.fullTextIndexes.slice(),
3332
+ fields: [...Table.fullTextFields],
3333
+ generations: Object.assign(Object.create(null), Table.fullTextIndexGenerations),
3334
+ retirements: [...Table.fullTextIndexRetirements],
3335
+ };
3313
3336
  armFullTextLiveStateRestore = () => {
3314
3337
  if (restoreFullTextLiveState)
3315
3338
  return;
@@ -3323,12 +3346,23 @@ function declareTable(target, tableDefinition) {
3323
3346
  Object.assign(Table, originalMetadata);
3324
3347
  Table.properties = (0, jsonSchemaTypes_ts_1.projectAttributesToProperties)(restored);
3325
3348
  const restoredPrimary = persistedPrimaryDescriptor(Table.dbisDB).descriptor;
3326
- const restoredFullTextIndexes = rootStore instanceof rocksdb_js_1.RocksDatabase && restoredPrimary?.audit === true
3327
- ? (0, fullTextSchemaLifecycle_ts_1.readPersistedFullTextDefinitions)(restoredPrimary?.fullTextIndexes, restored, fullTextWarning)
3349
+ if (restoredPrimary === undefined) {
3350
+ Table.fullTextIndexes = originalFullTextState.indexes;
3351
+ Table.fullTextFields = originalFullTextState.fields;
3352
+ Table.fullTextIndexGenerations = originalFullTextState.generations;
3353
+ Table.fullTextIndexRetirements = originalFullTextState.retirements;
3354
+ Table.schemaVersion++;
3355
+ Table.updatedAttributes();
3356
+ (0, derivedIndexes_ts_1.refreshDerivedIndexes)(Table);
3357
+ return;
3358
+ }
3359
+ const restoredFullTextIndexes = rootStore instanceof rocksdb_js_1.RocksDatabase && restoredPrimary.audit === true
3360
+ ? (0, fullTextSchemaLifecycle_ts_1.readPersistedFullTextDefinitions)(restoredPrimary.fullTextIndexes, restored, fullTextWarning)
3328
3361
  : [];
3329
3362
  Table.fullTextIndexes = restoredFullTextIndexes;
3330
- Table.fullTextIndexGenerations = persistedFullTextIndexGenerations(restoredPrimary?.fullTextIndexGenerations, restoredFullTextIndexes);
3331
- Table.fullTextIndexRetirements = (0, fullTextSchema_ts_1.persistedFullTextIndexNames)(restoredPrimary?.fullTextIndexRetirements);
3363
+ Table.fullTextFields = (0, fullTextSchemaLifecycle_ts_1.readPersistedFullTextFields)(restoredPrimary.fullTextFields, restoredPrimary.fullTextIndexes, restored, fullTextWarning);
3364
+ Table.fullTextIndexGenerations = persistedFullTextIndexGenerations(restoredPrimary.fullTextIndexGenerations, restoredFullTextIndexes);
3365
+ Table.fullTextIndexRetirements = (0, fullTextSchema_ts_1.persistedFullTextIndexNames)(restoredPrimary.fullTextIndexRetirements);
3332
3366
  Table.schemaVersion++;
3333
3367
  Table.updatedAttributes();
3334
3368
  (0, derivedIndexes_ts_1.refreshDerivedIndexes)(Table);
@@ -3355,7 +3389,14 @@ function declareTable(target, tableDefinition) {
3355
3389
  // Before the full-text branches can write an interim descriptor; the check on the merged list
3356
3390
  // below stays authoritative.
3357
3391
  (0, embedHook_ts_1.assertDerivedFieldOwnership)(validationAttributes);
3358
- const persistedAudit = persistedPrimary.descriptor?.audit;
3392
+ const validateFullTextFields = (definitions) => {
3393
+ const names = (0, fullTextSchema_ts_1.persistedFullTextIndexNames)(definitions).map((name) => ({ name }));
3394
+ if (origin === 'cluster')
3395
+ return (0, fullTextSchemaLifecycle_ts_1.mergePeerFullTextFields)(persistedFullTextState('fullTextFields', Table.fullTextFields), fullTextFields, persistedFullTextValues, definitions, validationAttributes, fullTextWarning);
3396
+ const requestedNames = new Set(names.map(({ name }) => name));
3397
+ return (0, fullTextSchema_ts_1.compileFullTextFields)(fullTextFields === undefined ? [...requestedNames] : fullTextFields, names, validationAttributes, true);
3398
+ };
3399
+ const persistedAudit = persistedPrimary.descriptor === undefined ? Table.audit : persistedPrimary.descriptor.audit;
3359
3400
  const durableAudit = persistedAudit === true;
3360
3401
  const finalAudit = origin === 'cluster'
3361
3402
  ? durableAudit
@@ -3378,11 +3419,12 @@ function declareTable(target, tableDefinition) {
3378
3419
  }
3379
3420
  else if (fullTextIndexesExplicit) {
3380
3421
  const compiled = (0, fullTextSchema_ts_1.compileFullTextDefinitions)(incomingFullTextValues, validationAttributes);
3422
+ fullTextFieldsForPersistence = validateFullTextFields(compiled);
3381
3423
  if (compiled.length > 0 && !(rootStore instanceof rocksdb_js_1.RocksDatabase))
3382
3424
  throw new hdbError_ts_1.ClientError(`Table '${databaseName}.${tableName}' cannot use @fullText with the LMDB storage engine`, 400);
3383
3425
  if (compiled.length > 0 && !finalAudit)
3384
3426
  throw new hdbError_ts_1.ClientError(`Table '${databaseName}.${tableName}' must enable audit logging before using @fullText because its transaction log is the derived-index recovery source`, 400);
3385
- const pinAudit = compiled.length > 0 && persistedPrimary.descriptor?.audit !== true;
3427
+ const pinAudit = compiled.length > 0 && persistedAudit !== true;
3386
3428
  const requestedNames = new Set(compiled.map(({ name }) => name));
3387
3429
  const durableDefinitions = (0, fullTextSchemaLifecycle_ts_1.readPersistedFullTextDefinitions)(persistedFullTextValues, durableAttributes, fullTextWarning);
3388
3430
  const removedNames = durableDefinitions.map(({ name }) => name).filter((name) => !requestedNames.has(name));
@@ -3409,13 +3451,18 @@ function declareTable(target, tableDefinition) {
3409
3451
  const interimDefinitions = durableDefinitions.filter(({ name }) => requestedNames.has(name));
3410
3452
  if (interimDefinitions.length > 0) {
3411
3453
  interimPrimary.fullTextIndexes = interimDefinitions;
3412
- interimPrimary.fullTextIndexGenerations = persistedFullTextIndexGenerations(persistedPrimary.descriptor?.fullTextIndexGenerations, interimDefinitions);
3454
+ interimPrimary.fullTextIndexGenerations = persistedFullTextIndexGenerations(persistedFullTextState('fullTextIndexGenerations', Table.fullTextIndexGenerations), interimDefinitions);
3413
3455
  }
3414
3456
  else {
3415
3457
  delete interimPrimary.fullTextIndexes;
3416
3458
  delete interimPrimary.fullTextIndexGenerations;
3417
3459
  }
3418
- const retirements = new Set((0, fullTextSchema_ts_1.persistedFullTextIndexNames)(persistedPrimary.descriptor?.fullTextIndexRetirements));
3460
+ const interimFullTextFields = (0, fullTextSchemaLifecycle_ts_1.readPersistedFullTextFields)(persistedFullTextState('fullTextFields', Table.fullTextFields), persistedFullTextValues, durableAttributes, fullTextWarning).filter((name) => requestedNames.has(name));
3461
+ if (interimFullTextFields.length > 0)
3462
+ interimPrimary.fullTextFields = interimFullTextFields;
3463
+ else
3464
+ delete interimPrimary.fullTextFields;
3465
+ const retirements = new Set((0, fullTextSchema_ts_1.persistedFullTextIndexNames)(persistedFullTextState('fullTextIndexRetirements', Table.fullTextIndexRetirements)));
3419
3466
  for (const name of transitionRetirements)
3420
3467
  retirements.add(name);
3421
3468
  for (const name of requestedNames)
@@ -3444,11 +3491,12 @@ function declareTable(target, tableDefinition) {
3444
3491
  fullTextValuesForPersistence = persistedFullTextValues;
3445
3492
  activeFullTextIndexes = rootStore instanceof rocksdb_js_1.RocksDatabase && finalAudit ? retained : [];
3446
3493
  }
3494
+ fullTextFieldsForPersistence ??= validateFullTextFields(fullTextValuesForPersistence);
3447
3495
  }
3448
3496
  if (activeFullTextIndexes !== undefined) {
3449
3497
  const durableGenerationDefinitions = (0, fullTextSchemaLifecycle_ts_1.readPersistedFullTextDefinitions)(persistedFullTextValues, fullTextValidationAttributes ?? Table.attributes, fullTextWarning);
3450
3498
  const finalGenerationDefinitions = (0, fullTextSchemaLifecycle_ts_1.readPersistedFullTextDefinitions)(fullTextValuesForPersistence ?? persistedFullTextValues, fullTextValidationAttributes ?? Table.attributes, fullTextWarning);
3451
- fullTextIndexGenerationMap = (0, fullTextSchema_ts_1.reconcileFullTextIndexGenerations)(durableGenerationDefinitions, persistedPrimary.descriptor?.fullTextIndexGenerations, finalGenerationDefinitions, createFullTextIndexGeneration);
3499
+ fullTextIndexGenerationMap = (0, fullTextSchema_ts_1.reconcileFullTextIndexGenerations)(durableGenerationDefinitions, persistedFullTextState('fullTextIndexGenerations', Table.fullTextIndexGenerations), finalGenerationDefinitions, createFullTextIndexGeneration);
3452
3500
  (0, derivedIndexes_ts_1.assertFullTextActivationSupported)(rootStore, databaseName, tableName, activeFullTextIndexes);
3453
3501
  if (activeFullTextIndexes.length > 0 &&
3454
3502
  rootStore instanceof rocksdb_js_1.RocksDatabase &&
@@ -3528,12 +3576,20 @@ function declareTable(target, tableDefinition) {
3528
3576
  activeFullTextIndexes = compiled;
3529
3577
  }
3530
3578
  }
3579
+ fullTextFieldsForPersistence =
3580
+ origin === 'cluster'
3581
+ ? (0, fullTextSchemaLifecycle_ts_1.mergePeerFullTextFields)(undefined, fullTextFields, [], fullTextValuesForPersistence, attributes, fullTextWarning)
3582
+ : (0, fullTextSchema_ts_1.compileFullTextFields)(fullTextFields === undefined ? (0, fullTextSchema_ts_1.persistedFullTextIndexNames)(fullTextValuesForPersistence) : fullTextFields, (0, fullTextSchema_ts_1.persistedFullTextIndexNames)(fullTextValuesForPersistence).map((name) => ({ name })), attributes, true);
3531
3583
  const auditStore = rootStore.auditStore;
3532
3584
  primaryKeyAttribute = attributes.find((attribute) => attribute.isPrimaryKey) || {};
3533
3585
  primaryKey = primaryKeyAttribute.name;
3534
3586
  primaryKeyAttribute.isPrimaryKey = true;
3535
3587
  primaryKeyAttribute.is_hash_attribute = true; // backward-compat: harperdb@4.x reads this field to open the DBI with correct flags
3536
3588
  primaryKeyAttribute.schemaDefined = schemaDefined;
3589
+ if (fullTextFieldsForPersistence.length > 0)
3590
+ primaryKeyAttribute.fullTextFields = fullTextFieldsForPersistence;
3591
+ else
3592
+ delete primaryKeyAttribute.fullTextFields;
3537
3593
  // Old readers treat every attribute row as live schema, so relationships stay on the ignored primary descriptor.
3538
3594
  if (relationshipDefinitions)
3539
3595
  primaryKeyAttribute.relationships = relationshipDefinitions;
@@ -3676,6 +3732,7 @@ function declareTable(target, tableDefinition) {
3676
3732
  indices: {},
3677
3733
  attributes,
3678
3734
  fullTextIndexes: activeFullTextIndexes ?? [],
3735
+ fullTextFields: fullTextFieldsForPersistence,
3679
3736
  fullTextIndexGenerations: fullTextIndexGenerationMap,
3680
3737
  fullTextIndexRetirements: fullTextIndexRetirementNames ?? [],
3681
3738
  schemaDefined,
@@ -4100,17 +4157,22 @@ function declareTable(target, tableDefinition) {
4100
4157
  }
4101
4158
  if (!deferredPrimaryRow &&
4102
4159
  (fullTextPersistencePending ||
4160
+ fullTextFieldsForPersistence !== undefined ||
4103
4161
  (rootStore instanceof rocksdb_js_1.RocksDatabase &&
4104
4162
  activeFullTextIndexes !== undefined &&
4105
4163
  Array.isArray(fullTextValuesForPersistence)))) {
4106
4164
  const { key, descriptor } = persistedPrimaryDescriptor(attributesDbi);
4107
4165
  if (descriptor && !tableIsDropping(descriptor, key)) {
4108
4166
  const updatedPrimary = { ...descriptor };
4167
+ if (fullTextFieldsForPersistence?.length)
4168
+ updatedPrimary.fullTextFields = fullTextFieldsForPersistence;
4169
+ else if (fullTextFieldsForPersistence)
4170
+ delete updatedPrimary.fullTextFields;
4109
4171
  if (Array.isArray(fullTextValuesForPersistence) && fullTextValuesForPersistence.length > 0) {
4110
4172
  updatedPrimary.fullTextIndexes = fullTextValuesForPersistence;
4111
4173
  updatedPrimary.fullTextIndexGenerations = fullTextIndexGenerationMap;
4112
4174
  }
4113
- else {
4175
+ else if (Array.isArray(fullTextValuesForPersistence)) {
4114
4176
  delete updatedPrimary.fullTextIndexes;
4115
4177
  delete updatedPrimary.fullTextIndexGenerations;
4116
4178
  }
@@ -4127,6 +4189,7 @@ function declareTable(target, tableDefinition) {
4127
4189
  else
4128
4190
  delete updatedPrimary.fullTextIndexRetirements;
4129
4191
  if (!(0, fullTextSchemaLifecycle_ts_1.definitionsEqual)(descriptor.fullTextIndexes, updatedPrimary.fullTextIndexes) ||
4192
+ !(0, fullTextSchemaLifecycle_ts_1.definitionsEqual)(descriptor.fullTextFields, updatedPrimary.fullTextFields) ||
4130
4193
  JSON.stringify(descriptor.fullTextIndexGenerations ?? {}) !==
4131
4194
  JSON.stringify(updatedPrimary.fullTextIndexGenerations ?? {}) ||
4132
4195
  JSON.stringify(descriptor.fullTextIndexRetirements ?? []) !==
@@ -4199,6 +4262,8 @@ function declareTable(target, tableDefinition) {
4199
4262
  finally {
4200
4263
  releaseLock();
4201
4264
  }
4265
+ if (fullTextFieldsForPersistence !== undefined)
4266
+ Table.fullTextFields = fullTextFieldsForPersistence;
4202
4267
  if (activeFullTextIndexes !== undefined) {
4203
4268
  Table.fullTextIndexes = activeFullTextIndexes;
4204
4269
  Table.fullTextIndexGenerations = fullTextIndexGenerationMap;