harper 5.3.2 → 5.3.4

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 (261) hide show
  1. package/bin/cliOperations.ts +3 -3
  2. package/bin/copyDb.ts +4 -3
  3. package/components/DESIGN.md +12 -0
  4. package/components/packageComponent.ts +42 -17
  5. package/config/DESIGN.md +4 -0
  6. package/config/configUtils.ts +8 -8
  7. package/config/parseConfigFile.ts +11 -7
  8. package/dist/bin/cliOperations.js +3 -3
  9. package/dist/bin/cliOperations.js.map +1 -1
  10. package/dist/bin/copyDb.js +3 -3
  11. package/dist/bin/copyDb.js.map +1 -1
  12. package/dist/components/packageComponent.d.ts +9 -7
  13. package/dist/components/packageComponent.js +41 -16
  14. package/dist/components/packageComponent.js.map +1 -1
  15. package/dist/config/configUtils.js +4 -3
  16. package/dist/config/configUtils.js.map +1 -1
  17. package/dist/config/parseConfigFile.d.ts +1 -0
  18. package/dist/config/parseConfigFile.js +7 -3
  19. package/dist/config/parseConfigFile.js.map +1 -1
  20. package/dist/resources/DatabaseTransaction.d.ts +80 -11
  21. package/dist/resources/DatabaseTransaction.js +1100 -281
  22. package/dist/resources/DatabaseTransaction.js.map +1 -1
  23. package/dist/resources/LMDBTransaction.d.ts +1 -1
  24. package/dist/resources/LMDBTransaction.js +4 -3
  25. package/dist/resources/LMDBTransaction.js.map +1 -1
  26. package/dist/resources/Resource.js +40 -14
  27. package/dist/resources/Resource.js.map +1 -1
  28. package/dist/resources/RocksTransactionLogStore.js +1 -0
  29. package/dist/resources/RocksTransactionLogStore.js.map +1 -1
  30. package/dist/resources/Table.js +97 -34
  31. package/dist/resources/Table.js.map +1 -1
  32. package/dist/resources/analytics/write.js +34 -16
  33. package/dist/resources/analytics/write.js.map +1 -1
  34. package/dist/resources/databases.d.ts +5 -0
  35. package/dist/resources/databases.js +38 -4
  36. package/dist/resources/databases.js.map +1 -1
  37. package/dist/resources/recordLock.d.ts +9 -4
  38. package/dist/resources/recordLock.js +79 -19
  39. package/dist/resources/recordLock.js.map +1 -1
  40. package/dist/server/DurableSubscriptionsSession.d.ts +2 -0
  41. package/dist/server/DurableSubscriptionsSession.js +24 -24
  42. package/dist/server/DurableSubscriptionsSession.js.map +1 -1
  43. package/dist/server/mqtt.js +59 -29
  44. package/dist/server/mqtt.js.map +1 -1
  45. package/dist/server/serverHelpers/NodeAdapterResponse.js +18 -0
  46. package/dist/server/serverHelpers/NodeAdapterResponse.js.map +1 -1
  47. package/dist/server/serverHelpers/contentTypes.js +8 -2
  48. package/dist/server/serverHelpers/contentTypes.js.map +1 -1
  49. package/dist/server/serverHelpers/sharedMessageEncoding.js +3 -2
  50. package/dist/server/serverHelpers/sharedMessageEncoding.js.map +1 -1
  51. package/dist/utility/npmUtilities.js +18 -7
  52. package/dist/utility/npmUtilities.js.map +1 -1
  53. package/package.json +1 -1
  54. package/resources/DESIGN.md +46 -10
  55. package/resources/DatabaseTransaction.ts +1268 -279
  56. package/resources/LMDBTransaction.ts +4 -3
  57. package/resources/Resource.ts +39 -14
  58. package/resources/RocksTransactionLogStore.ts +1 -0
  59. package/resources/Table.ts +120 -41
  60. package/resources/analytics/DESIGN.md +17 -0
  61. package/resources/analytics/write.ts +28 -15
  62. package/resources/databases.ts +40 -4
  63. package/resources/record-locks.md +34 -17
  64. package/resources/recordLock.ts +89 -22
  65. package/server/DESIGN.md +9 -1
  66. package/server/DurableSubscriptionsSession.ts +22 -23
  67. package/server/mqtt.ts +54 -29
  68. package/server/serverHelpers/NodeAdapterResponse.ts +19 -1
  69. package/server/serverHelpers/contentTypes.ts +8 -1
  70. package/server/serverHelpers/sharedMessageEncoding.ts +3 -2
  71. package/studio/web/assets/Chat-DjZNWwwA.js +2100 -0
  72. package/studio/web/assets/FloatingChat-BWfKK_RX.js +23 -0
  73. package/studio/web/assets/SearchDialog-CdlNxWef.js +1 -0
  74. package/studio/web/assets/{abnfDiagram-O67JEVCF-raXE027J.js → abnfDiagram-YUKMZFIV-DPR2lFRk.js} +1 -1
  75. package/studio/web/assets/{apiToken-DNrfij0E.js → apiToken-DyI8IwU3.js} +1 -1
  76. package/studio/web/assets/applications-DgGopKJq.js +296 -0
  77. package/studio/web/assets/architecture-WOLXFQ4H-DtJHIK0_.js +1 -0
  78. package/studio/web/assets/{architectureDiagram-NJMV4G6O-C8_Eet7w.js → architectureDiagram-47P4ROYG-MDymp2dh.js} +3 -3
  79. package/studio/web/assets/authStore-DE1HFvVP.js +3 -0
  80. package/studio/web/assets/{blockDiagram-BEXU5L5S-DR6S5-1D.js → blockDiagram-E7TT5TSB-O5qRgZmd.js} +3 -3
  81. package/studio/web/assets/button-C37w80Uk.js +21 -0
  82. package/studio/web/assets/{c4Diagram-YGBWAQC7-BAfZ1G01.js → c4Diagram-CRA5TL53-BdPORGHo.js} +2 -2
  83. package/studio/web/assets/channel-yCStoq0_.js +1 -0
  84. package/studio/web/assets/{chevron-up-CFxbMGv2.js → chevron-up-DozwrIz-.js} +1 -1
  85. package/studio/web/assets/chunk-2BW5OAIV-DJ-iXJAw.js +10 -0
  86. package/studio/web/assets/{chunk-ZIGJFQKS-Cs8fUn7y.js → chunk-3YJQHVM4-BOgacqS1.js} +2 -2
  87. package/studio/web/assets/{chunk-7PRAP22T-KyqX6x3f.js → chunk-4EA7E6EY-C-7xqUBl.js} +1 -1
  88. package/studio/web/assets/{chunk-GWA4HPMP-DsejB6gA.js → chunk-7TKQ45FW-C3XA1bIN.js} +1 -1
  89. package/studio/web/assets/{chunk-GTNCS2PH-DGHLXyow.js → chunk-AW2ZBBNX-BdvgD1UW.js} +3 -3
  90. package/studio/web/assets/{chunk-5DYCD2WN-BceBfIHT.js → chunk-DBDB3WZW-CKKxIc6F.js} +1 -1
  91. package/studio/web/assets/{chunk-MBY4JIJT-BwSGweQP.js → chunk-E2ZNV5FY-bVefNHvz.js} +3 -3
  92. package/studio/web/assets/chunk-EU5HNXII-BHv2kWp4.js +213 -0
  93. package/studio/web/assets/chunk-FVRAUYC3-BoL_NO6b.js +2 -0
  94. package/studio/web/assets/{chunk-742MDFTN-CIkt8ijt.js → chunk-HJ2JQQFS-N_98oMRS.js} +1 -1
  95. package/studio/web/assets/{chunk-NETBCI7D-C8UnOw_f.js → chunk-HTAEGDNF-BQ1fSjPs.js} +1 -1
  96. package/studio/web/assets/{chunk-WEXAMYUT-BAIhTwyh.js → chunk-KQW6MTUR-qP0QiQAg.js} +1 -1
  97. package/studio/web/assets/chunk-NGNAAXSQ-DqoPQk1a.js +136 -0
  98. package/studio/web/assets/{chunk-UA2S7LBM-BHpEdH8D.js → chunk-NTY3LDVX-CSBFjlJg.js} +1 -1
  99. package/studio/web/assets/chunk-VPRB5NB3-BVHOe9Q-.js +129 -0
  100. package/studio/web/assets/{chunk-7INBJB4K-BpeAXyOi.js → chunk-XC4XBNZT-46uQwtF4.js} +10 -10
  101. package/studio/web/assets/{classDiagram-v2-NBCMYWYE-DmDPkt2u.js → classDiagram-v2-K4WV4PDN-Da0ps1Ui.js} +3 -3
  102. package/studio/web/assets/cn-DpF1PxBT.js +1 -0
  103. package/studio/web/assets/{createLucideIcon-fO5dL7D5.js → createLucideIcon-DLWRoWN-.js} +1 -1
  104. package/studio/web/assets/{cssMode-DBucrQdT.js → cssMode-4ddO86ey.js} +1 -1
  105. package/studio/web/assets/cynefin-EF2NZ3EQ-jQ2eCUaU.js +1 -0
  106. package/studio/web/assets/cynefinDiagram-3GCD6N5R-TNi5iS0E.js +62 -0
  107. package/studio/web/assets/dagre-W4DXFKR2-BnLHmA44.js +4 -0
  108. package/studio/web/assets/{diagram-22UHCM2B-DJCvcaWP.js → diagram-2UJZ2QOL-r_jehhZR.js} +7 -7
  109. package/studio/web/assets/{diagram-3UASUU5V-Du6VKWln.js → diagram-OVF4WLC6-BSUXGVh8.js} +11 -11
  110. package/studio/web/assets/{diagram-CDSNMT55-l5Ga0u-W.js → diagram-PFPMY2P6-BrVedycw.js} +3 -3
  111. package/studio/web/assets/{diagram-MLGK6HIB-CNQY47LA.js → diagram-UMYRVEAY-CBIaakBB.js} +1 -1
  112. package/studio/web/assets/diagram-YEKJPTXX-DFmmDXCl.js +41 -0
  113. package/studio/web/assets/diagram-ZIFT7M5P-CQfOWxOi.js +3 -0
  114. package/studio/web/assets/dist-9lpzt2Hn.js +11 -0
  115. package/studio/web/assets/{ebnfDiagram-ZINNZB2B-5OnkTpfi.js → ebnfDiagram-VR2GEFS7-FXA3Xe6e.js} +1 -1
  116. package/studio/web/assets/{editor-CHpQCuBq.js → editor-DATuu7_v.js} +1 -1
  117. package/studio/web/assets/elk-IJKZMXRS-CC4gfVRU.js +27 -0
  118. package/studio/web/assets/{erDiagram-OPXOYQCR-CQlCX84D.js → erDiagram-O2IAPWRE-C-BkDTPl.js} +2 -2
  119. package/studio/web/assets/errorText-8xV8WZBt.js +1 -0
  120. package/studio/web/assets/eventmodeling-K75KTNOO-D0dJ_PbR.js +1 -0
  121. package/studio/web/assets/flowDiagram-OXPTDLAJ-C1LEc_Hf.js +1 -0
  122. package/studio/web/assets/{ganttDiagram-FUAMR5RP-bloX3Voy.js → ganttDiagram-R7TSEDQI-85F44BIo.js} +4 -4
  123. package/studio/web/assets/{getAnalytics-C0FHjtdQ.js → getAnalytics-B1xpd4kG.js} +1 -1
  124. package/studio/web/assets/gitGraph-VSP46ZUC-BBmqrmjK.js +1 -0
  125. package/studio/web/assets/gitGraphDiagram-XJZIOB7I-CFY6iMwg.js +106 -0
  126. package/studio/web/assets/graphlib-DS17s2tU.js +1 -0
  127. package/studio/web/assets/{html-B1iA8q38.js → html-c4OKnEF1.js} +1 -1
  128. package/studio/web/assets/{htmlMode-CrL3YO5Y.js → htmlMode-yXjqUsW9.js} +1 -1
  129. package/studio/web/assets/index-CDnn0-PN.css +1 -0
  130. package/studio/web/assets/index-CIK9Nhgo.js +833 -0
  131. package/studio/web/assets/index.lazy-DQpKL_QQ.js +1 -0
  132. package/studio/web/assets/info-OHQRW6UA-Bs2aEco7.js +1 -0
  133. package/studio/web/assets/{infoDiagram-VRGFBTTK-B0J1132p.js → infoDiagram-5W2HQ5XZ-d6yG1yfZ.js} +1 -1
  134. package/studio/web/assets/invalidateEntityQueries-BkWXiqjz.js +1 -0
  135. package/studio/web/assets/{ishikawaDiagram-OU5B5YK6-BNk0tuQx.js → ishikawaDiagram-K3B6WC7H-CSYz-WRA.js} +2 -2
  136. package/studio/web/assets/{javascript-CXgQMkoa.js → javascript-CP1WPkLu.js} +1 -1
  137. package/studio/web/assets/{journeyDiagram-ZHPQQLJL-Be79RMQM.js → journeyDiagram-COXZFDF6-BDj6Wqcj.js} +3 -3
  138. package/studio/web/assets/{jsonMode-DycqRKOv.js → jsonMode-BWsIHqbb.js} +1 -1
  139. package/studio/web/assets/{kanban-definition-PNTS6WVX-4uuoQP9W.js → kanban-definition-P3RFRI5V-C2Bjfbp-.js} +6 -6
  140. package/studio/web/assets/{languageServices-HYHV1wDJ.js → languageServices-Ca72n4Ql.js} +1 -1
  141. package/studio/web/assets/{lspLanguageFeatures-CH_6SYiA.js → lspLanguageFeatures-BQdsSDeh.js} +1 -1
  142. package/studio/web/assets/{mermaid-parser.core-V1UYMeXV.js → mermaid-parser.core-Ch_T61iL.js} +6 -6
  143. package/studio/web/assets/mermaid.core-BOAgKzo5.js +44 -0
  144. package/studio/web/assets/{mindmap-definition-NLK3R4M7-C70Ctm0J.js → mindmap-definition-LZFPQGKD-DzOapzMM.js} +3 -3
  145. package/studio/web/assets/notifications-BYgO5-yk.js +1 -0
  146. package/studio/web/assets/notifications-DsGk-TnW.js +1 -0
  147. package/studio/web/assets/operations-Dy69AlTr.js +4 -0
  148. package/studio/web/assets/packet-JDAUHWVQ-CGHB_EIE.js +1 -0
  149. package/studio/web/assets/{pegDiagram-GJSIUBJH-d6z1cc7W.js → pegDiagram-BGZESJAR-ADzOIKrz.js} +1 -1
  150. package/studio/web/assets/pie-XZMESJXO-Bijz5Y2o.js +1 -0
  151. package/studio/web/assets/pieDiagram-CAPJLFHJ-VM7fvbwO.js +39 -0
  152. package/studio/web/assets/profile-DzQvoYBF.js +1 -0
  153. package/studio/web/assets/{quadrantDiagram-O4NWA36T-CIF5Qkou.js → quadrantDiagram-GDMTTRAM-Bmza84_j.js} +3 -3
  154. package/studio/web/assets/radar-ABXABTNO-IaC8pB63.js +1 -0
  155. package/studio/web/assets/railroad-I3PHUGI6-CCrSUqeq.js +1 -0
  156. package/studio/web/assets/railroad-abnf-LNEFI6M7-BhobVp-t.js +1 -0
  157. package/studio/web/assets/railroad-ebnf-DWYD2UWJ-OHhGUTEh.js +1 -0
  158. package/studio/web/assets/railroad-peg-JR7BVNR7-FupC3Jcn.js +1 -0
  159. package/studio/web/assets/{railroadDiagram-XR7U4H2S-y3Jv2U6N.js → railroadDiagram-SM67HX2B-CgFGOVI5.js} +1 -1
  160. package/studio/web/assets/regions-Sv_IN7XA.js +1 -0
  161. package/studio/web/assets/{register-DCN4QUii.js → register-AM2_79FO.js} +3 -3
  162. package/studio/web/assets/request-BJj8dbdU.js +2 -0
  163. package/studio/web/assets/{requirementDiagram-PLB6GJNP-ChINZEmu.js → requirementDiagram-X7JNWC4A-BHoQgkoT.js} +4 -4
  164. package/studio/web/assets/restartGate-D_e93lFE.js +1 -0
  165. package/studio/web/assets/restartUnconfirmed-BqcDZ__Y.js +1 -0
  166. package/studio/web/assets/sankeyDiagram-UM26HJRW-8tFu_oUe.js +40 -0
  167. package/studio/web/assets/sequenceDiagram-ZO4K6R2Y-jryb1rwT.js +169 -0
  168. package/studio/web/assets/setComponentFile-BCnAnxjR.js +1 -0
  169. package/studio/web/assets/setup-Ca4RpPzm.js +2 -0
  170. package/studio/web/assets/{stateDiagram-v2-GCMORJYK-Bs8RIb9K.js → stateDiagram-v2-TBUQTH76-CnWE5yFn.js} +2 -2
  171. package/studio/web/assets/status-D05eZ5pQ.js +61 -0
  172. package/studio/web/assets/{swimlanes-2SLR337P-B52xrf6t.js → swimlanes-N4OXWK64-CBlFzDJn.js} +1 -1
  173. package/studio/web/assets/swimlanesDiagram-K3J5GTZL-DvFLtUPi.js +8 -0
  174. package/studio/web/assets/{timeline-definition-EJHVYXUP-DJSITpQX.js → timeline-definition-YOQAKGHF-CFWqHrqI.js} +4 -4
  175. package/studio/web/assets/{toggleHighContrast-CfAp6Sxb.js → toggleHighContrast-JRkLfyfb.js} +1 -1
  176. package/studio/web/assets/treeView-D4JQ5SDB-CpV9zuVb.js +1 -0
  177. package/studio/web/assets/treemap-SAJKECNS-Bc94Tqiq.js +1 -0
  178. package/studio/web/assets/{tsMode-HZR0bfq4.js → tsMode-C_-eSRVR.js} +1 -1
  179. package/studio/web/assets/{typescript-UMJSfZyF.js → typescript-BYXigM_n.js} +1 -1
  180. package/studio/web/assets/{useEntityRestURL-B379CS-h.js → useEntityRestURL-HHmjsRm9.js} +1 -1
  181. package/studio/web/assets/usecaseDiagram-VIAY4XPW-Brf2xP3S.js +328 -0
  182. package/studio/web/assets/{vendor-core-6LhfJlRC.js → vendor-core-PejxhUWQ.js} +1 -1
  183. package/studio/web/assets/vendor-datadog-GjET_Cbn.js +6 -0
  184. package/studio/web/assets/{vendor-react-BOliS0BL.js → vendor-react-DSIx92Ld.js} +1 -1
  185. package/studio/web/assets/vendor-tanstack-C5Y-nrd2.js +2 -0
  186. package/studio/web/assets/vendor-ui-BBWHOEoQ.js +41 -0
  187. package/studio/web/assets/{vennDiagram-UO4OBE2U-DZTsDA4k.js → vennDiagram-BLWOH2XV-XxOyJPq_.js} +3 -3
  188. package/studio/web/assets/wardley-7MLQ67FV-DRW0zuE4.js +1 -0
  189. package/studio/web/assets/{wardleyDiagram-VNRHLVJA-qu_f7Tvl.js → wardleyDiagram-YMQ3BMBF-B3WskJ9W.js} +3 -3
  190. package/studio/web/assets/wasAReleasedBeforeB-D5grAaGM.js +1 -0
  191. package/studio/web/assets/{workers-Bn_0_L1R.js → workers-DY0ka4Y7.js} +1 -1
  192. package/studio/web/assets/{xml-CG2N-1r1.js → xml-CdGINpmN.js} +1 -1
  193. package/studio/web/assets/xychartDiagram-TAQBALBS-D5NV4Env.js +7 -0
  194. package/studio/web/assets/{yaml-68pda6Av.js → yaml-DYeF07_w.js} +1 -1
  195. package/studio/web/index.html +17 -15
  196. package/utility/npmUtilities.ts +17 -7
  197. package/studio/web/assets/Chat-CrxPD4ph.js +0 -2294
  198. package/studio/web/assets/FloatingChat-EXzoUQ-9.js +0 -23
  199. package/studio/web/assets/SearchDialog-7qRL8Yqx.js +0 -1
  200. package/studio/web/assets/_basePickBy-QJXUw_pr.js +0 -1
  201. package/studio/web/assets/_baseUniq-DR4vVjyC.js +0 -1
  202. package/studio/web/assets/alertDialog-BbWD9Xxa.js +0 -1
  203. package/studio/web/assets/applications-CdqjiSQe.js +0 -296
  204. package/studio/web/assets/architecture-7GRP2DOG-DDmz3hpI.js +0 -1
  205. package/studio/web/assets/arrow-up-D2g_57vT.js +0 -1
  206. package/studio/web/assets/authStore-CJCaADw9.js +0 -3
  207. package/studio/web/assets/button-DWwfgGWI.js +0 -21
  208. package/studio/web/assets/channel-D0AkPjJ8.js +0 -1
  209. package/studio/web/assets/chunk-3FUC2YCW-DuRp-j19.js +0 -2
  210. package/studio/web/assets/chunk-7M6MHVWA-h6WlaTzO.js +0 -213
  211. package/studio/web/assets/chunk-FOHPRMQF-DzxwRta7.js +0 -161
  212. package/studio/web/assets/chunk-O7XYJQB3-CBS3nZYV.js +0 -128
  213. package/studio/web/assets/chunk-Z7XXMR3K-DSHbImdf.js +0 -10
  214. package/studio/web/assets/cn-6T8VranJ.js +0 -1
  215. package/studio/web/assets/cynefin-OW5HDTMX-DIvbXLSj.js +0 -1
  216. package/studio/web/assets/cynefinDiagram-VND7K2PF-BdtaXiCE.js +0 -62
  217. package/studio/web/assets/dagre-6A5THRUB-C7RUWHyz.js +0 -4
  218. package/studio/web/assets/diagram-ATOU4E4O-dxRfeG4B.js +0 -3
  219. package/studio/web/assets/diagram-MPIPVDR6-7prveD1B.js +0 -41
  220. package/studio/web/assets/dist-BrRuMUzt.js +0 -11
  221. package/studio/web/assets/download-Cn6tPG4L.js +0 -1
  222. package/studio/web/assets/elk-276RUBZZ-DxDQPjQT.js +0 -27
  223. package/studio/web/assets/errorText-NpBmvk9I.js +0 -1
  224. package/studio/web/assets/eventmodeling-NTZA5JFV-DONQf5aG.js +0 -1
  225. package/studio/web/assets/flowDiagram-KWPJA3E3-BoZ8_QR1.js +0 -1
  226. package/studio/web/assets/gitGraph-4MIJSDKK-BrXWmJt2.js +0 -1
  227. package/studio/web/assets/gitGraphDiagram-X574FWY7-C2KnnZeY.js +0 -106
  228. package/studio/web/assets/graphlib-C9Tl7QrK.js +0 -1
  229. package/studio/web/assets/index-QLZw6xrU.css +0 -1
  230. package/studio/web/assets/index-qCLyhyah.js +0 -828
  231. package/studio/web/assets/index.lazy-DCx-DxIV.js +0 -2
  232. package/studio/web/assets/info-A6RAGUB7-BhzBHe4U.js +0 -1
  233. package/studio/web/assets/mermaid.core-1PX6R49U.js +0 -44
  234. package/studio/web/assets/notifications-BSObVIY1.js +0 -1
  235. package/studio/web/assets/notifications-DFLXk68b.js +0 -1
  236. package/studio/web/assets/packet-AYTQ26CC-DWbXHx5g.js +0 -1
  237. package/studio/web/assets/pie-WAS4IAKB-DjoTm3yr.js +0 -1
  238. package/studio/web/assets/pieDiagram-5QR66LMP-Dz3RHpDA.js +0 -39
  239. package/studio/web/assets/profile-TBjzOMIy.js +0 -1
  240. package/studio/web/assets/radar-RG4KPBEZ-CVBgjCOj.js +0 -1
  241. package/studio/web/assets/railroad-74A4TZTK-BdhXw10Q.js +0 -1
  242. package/studio/web/assets/railroad-abnf-HS5TGJTU-BcoQPN39.js +0 -1
  243. package/studio/web/assets/railroad-ebnf-LZEXJU2U-B1Lke2JN.js +0 -1
  244. package/studio/web/assets/railroad-peg-WCYAUIDC-D-oJFkiV.js +0 -1
  245. package/studio/web/assets/regions-C4an4H7e.js +0 -1
  246. package/studio/web/assets/restartGate-nHAFLDh-.js +0 -1
  247. package/studio/web/assets/sankeyDiagram-IPEJSGJF-D9AyLce2.js +0 -40
  248. package/studio/web/assets/sequenceDiagram-PO4LG4MO-hfk4aIEm.js +0 -169
  249. package/studio/web/assets/setComponentFile-BrqOM1Zm.js +0 -1
  250. package/studio/web/assets/setup-0v2MCm-E.js +0 -2
  251. package/studio/web/assets/status-DdezofUu.js +0 -61
  252. package/studio/web/assets/swimlanesDiagram-TC7HE7FX-DfN7BAP5.js +0 -8
  253. package/studio/web/assets/tabs-BCTQzoQK.js +0 -1
  254. package/studio/web/assets/treeView-Q6P3EWNA-C-epdxRo.js +0 -1
  255. package/studio/web/assets/treemap-WGGIJYW6-DOVyp_zw.js +0 -1
  256. package/studio/web/assets/usecaseDiagram-POWQR4AR-B6252cbq.js +0 -328
  257. package/studio/web/assets/vendor-datadog-ozKf-pts.js +0 -6
  258. package/studio/web/assets/vendor-tanstack-Bntfka-M.js +0 -2
  259. package/studio/web/assets/vendor-ui-9EYYDgoN.js +0 -41
  260. package/studio/web/assets/wardley-WFR3VGLG-Cfqoe6z4.js +0 -1
  261. package/studio/web/assets/xychartDiagram-PMCCYNJV-UrOKRsmR.js +0 -7
@@ -118,6 +118,8 @@ const MAX_CONCURRENT_LMDB_HISTORY_REMOVALS = 1000;
118
118
  // Each evict otherwise pays a full transaction commit, so batching amortizes that cost. LMDB already
119
119
  // coalesces async writes per event turn (eventTurnBatching), so it keeps the per-record path.
120
120
  const EVICTION_BATCH_SIZE = 100;
121
+ const COMMITTED_READ = { uncachedRead: true };
122
+ const UNRESOLVED = Symbol('unresolved');
121
123
  // Cap on eviction-batch commits in flight at once, so commit I/O overlaps scan/staging without
122
124
  // letting an unbounded number of open transactions (and their snapshots) accumulate.
123
125
  const MAX_INFLIGHT_EVICTION_BATCHES = 4;
@@ -2969,10 +2971,22 @@ function makeTable(options) {
2969
2971
  before: this.constructor.source?.relocate && !context?.source
2970
2972
  ? this.constructor.source.relocate.bind(this.constructor.source, id, undefined, context)
2971
2973
  : undefined,
2972
- commit: (txnTime, existingEntry, _retry, transaction) => {
2974
+ commit: (txnTime, existingEntry, _retry, transaction, committedBy) => {
2973
2975
  const txnLogKey = isRocksDB && options?.version != null ? (transaction?.getTimestamp?.() ?? txnTime) : txnTime;
2974
- if (precedesExistingVersion(txnTime, existingEntry, options?.nodeId) < 0)
2976
+ write.skipped = false;
2977
+ const precedesExisting = precedesExistingVersion(txnTime, existingEntry, options?.nodeId);
2978
+ if (precedesExisting < 0)
2979
+ return;
2980
+ if (
2981
+ // a re-delivered relocate would restamp the committed head, which can be another write of its transaction
2982
+ precedesExisting === 0 &&
2983
+ committedBy?.sourceApply &&
2984
+ isRocksDB &&
2985
+ txnLogKey === txnTime &&
2986
+ isHeadIdentity(identityBase(write, existingEntry, committedBy), txnTime, options?.nodeId)) {
2987
+ write.skipped = true;
2975
2988
  return;
2989
+ }
2976
2990
  const residency = _a.getResidencyRecord(options.residencyId);
2977
2991
  let metadata = 0;
2978
2992
  let newRecord = null;
@@ -3477,7 +3491,9 @@ function makeTable(options) {
3477
3491
  return this;
3478
3492
  }
3479
3493
  /**
3480
- * Release the lock this instance holds. Resolves true when this call cleared the native key lock.
3494
+ * Release the lock this instance holds. Resolves true when this call cleared the native key lock;
3495
+ * false when it was already released, or when a commit of this lock's writes is still in flight
3496
+ * and the native key is returned once that commit settles.
3481
3497
  * Works for both held (`{ hold: true }`) and transaction-scoped locks. After unlock() the
3482
3498
  * instance is no longer lock-writable; writes through it require a fresh lock.
3483
3499
  */
@@ -3776,16 +3792,14 @@ function makeTable(options) {
3776
3792
  }
3777
3793
  },
3778
3794
  before: writeToSource(),
3779
- commit: (txnTime, existingEntry, retry, transaction) => {
3780
- // Whether a prior attempt of THIS write appended its own audit entry (sticky, set in
3781
- // save(); log entries are not part of the aborted rocks transaction, so they survive).
3782
- // Only such a write can find its own orphaned entry in the dedup lookups below and must
3783
- // not treat it as "already applied". Per-write on purpose: the transaction-wide retry
3784
- // flag would also suppress dedup for a genuine re-delivered duplicate co-batched with
3785
- // the conflicting write (double-applying it) and for fresh writes staged through a
3786
- // reused transaction whose retries counter is stale. Sticky on purpose: a proxy read
3787
- // from the last attempt's skipped state launders when a recommit round self-skips
3788
- // (walk identity tie against its own staged record) before a fresh-transaction replay.
3795
+ commit: (txnTime, existingEntry, retry, transaction, committedBy) => {
3796
+ // Whether a prior attempt of THIS write appended its audit entry (sticky, set in
3797
+ // save()). A retry cannot infer that its record mutation committed from an exact log
3798
+ // match alone, so keyed probes stay shielded and walk skips require committed provenance.
3799
+ // Per-write: a transaction-wide retry flag would also suppress dedup for unrelated
3800
+ // deliveries co-batched with the conflict or fresh writes in a reused transaction.
3801
+ // Sticky: a proxy read from the last attempt's skipped state launders when a recommit
3802
+ // round self-skips (walk identity tie against its own staged record) before a replay.
3789
3803
  const stagedOwnAuditEntry = retry && write.appendedAuditEntry === true;
3790
3804
  write.skipped = false; // reset on each retry; cleanup happens after commit if still true
3791
3805
  write.stagedEntry = undefined; // likewise: only set once this round actually stores a record
@@ -3867,6 +3881,16 @@ function makeTable(options) {
3867
3881
  let belowAuditFloor = false;
3868
3882
  let dedupVersionCouldBeRetained;
3869
3883
  if (audit) {
3884
+ let identityRecord = UNRESOLVED;
3885
+ if (committedBy?.sourceApply &&
3886
+ isRocksDB &&
3887
+ !replaying &&
3888
+ precedesExisting === 0 &&
3889
+ txnLogKey === txnTime &&
3890
+ isHeadIdentity((identityRecord = identityBase(write, existingEntry, committedBy)), txnTime, options?.nodeId)) {
3891
+ write.skipped = true;
3892
+ return;
3893
+ }
3870
3894
  // A re-delivered out-of-order write (full-copy audit-replay re-delivers writes) must not have
3871
3895
  // its commutative ops re-folded. additionalAuditRefs is the record's own list of folded
3872
3896
  // out-of-order versions, read with read-your-writes consistency, so this skips the duplicate up
@@ -3879,7 +3903,9 @@ function makeTable(options) {
3879
3903
  // best-effort keyed lookup in the capped block below — see #1148. precedesExistingVersion(...)
3880
3904
  // === 0 is the identity tie: same version AND same node (the local node is id 0, so an undefined
3881
3905
  // options?.nodeId resolves to the same 0 the ref stored).
3882
- if (existingEntry.additionalAuditRefs?.some((ref) => ref.version === txnLogKey &&
3906
+ if ((identityRecord === UNRESOLVED
3907
+ ? identityBase(write, existingEntry, committedBy)
3908
+ : identityRecord)?.additionalAuditRefs?.some((ref) => ref.version === txnLogKey &&
3883
3909
  precedesExistingVersion(txnTime, { version: txnTime, localTime: txnLogKey, key: id, nodeId: ref.nodeId }, options?.nodeId) === 0)) {
3884
3910
  write.skipped = true;
3885
3911
  return; // out-of-order write already folded into this record
@@ -3930,11 +3956,7 @@ function makeTable(options) {
3930
3956
  // RocksDB-only: LMDB audit entries are keyed by local audit time, so this lookup doesn't apply
3931
3957
  // there (LMDB keeps the exact unbounded walk). A miss (the keyed lookup can lag a back-to-back re-delivery — #1137)
3932
3958
  // simply falls through to the walk, so this never changes correctness; the additionalAuditRefs
3933
- // check above remains the read-your-writes guard. Never when this write staged in a prior
3934
- // failed attempt: that attempt already appended this write's own audit entry, so the lookup
3935
- // would find it and skip the write as "already applied" when the record was never committed.
3936
- // A recommit of the same transaction survived that skip only because the old write batch
3937
- // still carried the put; a fresh-transaction replay (ERR_TRY_AGAIN) would drop the write.
3959
+ // check above remains the read-your-writes guard. Not on a same-write retry (see stagedOwnAuditEntry).
3938
3960
  if (isRocksDB && !replaying && !stagedOwnAuditEntry && dedupVersionCouldBeRetained(txnLogKey)) {
3939
3961
  const priorAudit = auditStore.get(txnLogKey, tableId, id, options?.nodeId);
3940
3962
  if (priorAudit &&
@@ -3970,9 +3992,18 @@ function makeTable(options) {
3970
3992
  // `previousNodeId` is never encoded, so absent there means the log is unknown and only the
3971
3993
  // aggregate lookup can resolve a cross-origin predecessor.
3972
3994
  let nodeId = initialAuditHead.nodeId ?? 0;
3995
+ // A retry can load a base restamped by an earlier saved publish/relocate from this
3996
+ // transaction. Those writes do not set stagedEntry, so priorStaged alone cannot
3997
+ // establish that the base is committed.
3998
+ const retryBaseIsCommitted = !priorStaged && !(stagedOwnAuditEntry && hasSavedSameKeySibling(write, committedBy));
3999
+ let walkOriginKnown = retryBaseIsCommitted;
3973
4000
  const succeedingUpdates = []; // record the "future" updates, as we need to apply the updates in reverse order
3974
4001
  const auditRefsToVisit = existingEntry.additionalAuditRefs
3975
- ? existingEntry.additionalAuditRefs.map((ref) => ({ localTime: ref.version, nodeId: ref.nodeId }))
4002
+ ? existingEntry.additionalAuditRefs.map((ref) => ({
4003
+ localTime: ref.version,
4004
+ nodeId: ref.nodeId,
4005
+ originKnown: retryBaseIsCommitted,
4006
+ }))
3976
4007
  : [];
3977
4008
  // Out-of-order merges retain every existing branch head; per-origin log keys are not globally ordered.
3978
4009
  if (existingEntry.additionalAuditRefs) {
@@ -3983,11 +4014,11 @@ function makeTable(options) {
3983
4014
  let addedAuditRef = false;
3984
4015
  let nextRef;
3985
4016
  const visitedAuditRefs = new Set();
3986
- const queuePreviousAuditRefs = (auditRecord) => {
4017
+ const queuePreviousAuditRefs = (auditRecord, originKnown) => {
3987
4018
  const previousRefs = auditRecord.previousAdditionalAuditRefs;
3988
4019
  if (previousRefs) {
3989
4020
  for (const ref of previousRefs) {
3990
- auditRefsToVisit.push({ localTime: ref.version, nodeId: ref.nodeId });
4021
+ auditRefsToVisit.push({ localTime: ref.version, nodeId: ref.nodeId, originKnown });
3991
4022
  logger_ts_1.logger.debug?.('Adding audit ref from audit record to visit queue', {
3992
4023
  version: ref.version,
3993
4024
  nodeId: ref.nodeId,
@@ -4002,6 +4033,7 @@ function makeTable(options) {
4002
4033
  : { txnLogKey: auditRecord.previousVersion, nodeId: auditRecord.previousNodeId };
4003
4034
  localTime = previousHead.txnLogKey;
4004
4035
  nodeId = previousHead.nodeId;
4036
+ walkOriginKnown = walkOriginKnown && previousHead.nodeId != null;
4005
4037
  };
4006
4038
  let walkSteps = 0;
4007
4039
  let auditWalkCapped = false;
@@ -4017,9 +4049,7 @@ function makeTable(options) {
4017
4049
  // A re-delivered write whose exact (version, nodeId) is already in the audit log was already
4018
4050
  // applied; drop it rather than re-applying it (double-applying commutative ops) or writing a
4019
4051
  // duplicate audit-only record. Used by the early-out and the depth-cap block below.
4020
- // Never a duplicate for a write that staged in a prior failed attempt: that attempt already
4021
- // appended this write's own audit entry, so the lookup would match it while the record was
4022
- // never committed (see the up-front keyed dedup above).
4052
+ // Not for a same-write retry (see stagedOwnAuditEntry).
4023
4053
  const isReDeliveredDuplicate = () => {
4024
4054
  if (replaying || stagedOwnAuditEntry)
4025
4055
  return false;
@@ -4047,12 +4077,14 @@ function makeTable(options) {
4047
4077
  const auditRecord = auditStore.get(localTime, tableId, id, nodeId);
4048
4078
  if (!auditRecord)
4049
4079
  break;
4050
- queuePreviousAuditRefs(auditRecord);
4080
+ queuePreviousAuditRefs(auditRecord, walkOriginKnown);
4051
4081
  if (isRocksDB &&
4052
4082
  !replaying &&
4053
- !stagedOwnAuditEntry &&
4083
+ // on a retry only a link from committed state proves the write committed: an
4084
+ // orphaned log entry can match the identity but is never linked from a committed record
4085
+ (!stagedOwnAuditEntry || walkOriginKnown) &&
4054
4086
  localTime === txnLogKey &&
4055
- precedesExistingVersion(txnTime, { version: txnTime, localTime: txnLogKey, key: id, nodeId: auditRecord.nodeId }, options?.nodeId) === 0) {
4087
+ (auditRecord.nodeId ?? 0) === (options?.nodeId ?? (0, nodeIdMapping_ts_1.getThisNodeId)(auditStore))) {
4056
4088
  write.skipped = true;
4057
4089
  return;
4058
4090
  }
@@ -4066,9 +4098,8 @@ function makeTable(options) {
4066
4098
  // orders the otherwise non-unique record clock without comparing keys across origins.
4067
4099
  precedesExisting = txnLogKey > localTime ? 1 : -1;
4068
4100
  }
4069
- else if (replaying || stagedOwnAuditEntry) {
4070
- // The log entry being replayed (or staged by this write's failed attempt) is
4071
- // the write itself, not proof that its primary-store mutation committed.
4101
+ else if (replaying || (stagedOwnAuditEntry && !walkOriginKnown)) {
4102
+ // replayed, or reached on a retry without committed provenance: not proof it committed
4072
4103
  precedesExisting = 1;
4073
4104
  }
4074
4105
  else {
@@ -4150,6 +4181,7 @@ function makeTable(options) {
4150
4181
  if (nextRef) {
4151
4182
  localTime = auditedVersion = nextRef.localTime;
4152
4183
  nodeId = nextRef.nodeId;
4184
+ walkOriginKnown = nextRef.originKnown;
4153
4185
  logger_ts_1.logger.debug?.('Following additional audit ref to continue scanning', { localTime, nodeId });
4154
4186
  }
4155
4187
  } while (nextRef);
@@ -4975,6 +5007,7 @@ function makeTable(options) {
4975
5007
  // scans), the read transaction reads against the latest committed data without pinning a
4976
5008
  // consistent snapshot, so the scan doesn't hold a snapshot that blocks compaction.
4977
5009
  const readTxn = txn.useReadTxn(target.snapshot === false);
5010
+ const readTxnGeneration = txn.readTxnGeneration;
4978
5011
  // The explicit row filter participates in query execution: it is pushed into HNSW
4979
5012
  // traversal for vector sorts, applied after conditions otherwise, and checked again after
4980
5013
  // cache/source materialization below. A policy error aborts the query instead of silently
@@ -5093,7 +5126,8 @@ function makeTable(options) {
5093
5126
  finally {
5094
5127
  // We own the iteration here (no results.onDone consumer), so release the read
5095
5128
  // transaction unconditionally — including when the drain throws — or the snapshot leaks.
5096
- txn.doneReadTxn();
5129
+ if (readTxn)
5130
+ txn.doneReadTxn(readTxnGeneration);
5097
5131
  }
5098
5132
  let total;
5099
5133
  if (wantExact) {
@@ -5137,7 +5171,8 @@ function makeTable(options) {
5137
5171
  results.onDone = () => {
5138
5172
  results.onDone = null; // ensure that it isn't called twice
5139
5173
  txn.unregisterReadIterator(results);
5140
- txn.doneReadTxn();
5174
+ if (readTxn)
5175
+ txn.doneReadTxn(readTxnGeneration);
5141
5176
  };
5142
5177
  // Recorded ownership: if the request dies before anything consumes these results, the
5143
5178
  // transaction closes them itself rather than leaving its read snapshot pinned.
@@ -5147,7 +5182,8 @@ function makeTable(options) {
5147
5182
  return results;
5148
5183
  }
5149
5184
  catch (error) {
5150
- txn.doneReadTxn();
5185
+ if (readTxn)
5186
+ txn.doneReadTxn(readTxnGeneration);
5151
5187
  throw error;
5152
5188
  }
5153
5189
  }
@@ -6966,6 +7002,7 @@ function makeTable(options) {
6966
7002
  },
6967
7003
  };
6968
7004
  propertyResolvers.$highlights.directReturn = true;
7005
+ primaryKeyAttribute = undefined;
6969
7006
  for (const attribute of this.attributes) {
6970
7007
  if (attribute.isPrimaryKey)
6971
7008
  primaryKeyAttribute = attribute;
@@ -8137,6 +8174,32 @@ function makeTable(options) {
8137
8174
  if (!(existingEntry?.metadataFlags & exports.INVALIDATED))
8138
8175
  return existingEntry;
8139
8176
  }
8177
+ // The commit base is the committed record unless another write to the key already saved without being
8178
+ // skipped this round: a publish or relocate saves when it is added and restamps the base without staging it.
8179
+ function identityBase(write, existingEntry, transaction) {
8180
+ if (hasSavedSameKeySibling(write, transaction))
8181
+ return committedEntry(write.key);
8182
+ return existingEntry;
8183
+ }
8184
+ function hasSavedSameKeySibling(write, transaction) {
8185
+ for (let other = transaction?.writesByKey?.get(write.store)?.get(write.keyId); other; other = other.priorWrite) {
8186
+ if (other !== write &&
8187
+ other.saved &&
8188
+ !other.skipped &&
8189
+ other.committedOn === write.committedOn &&
8190
+ other.committedRound === write.committedRound)
8191
+ return true;
8192
+ }
8193
+ return false;
8194
+ }
8195
+ function committedEntry(id) {
8196
+ return primaryStore.getEntry(id, COMMITTED_READ);
8197
+ }
8198
+ function isHeadIdentity(entry, version, nodeId) {
8199
+ return (entry?.version === version &&
8200
+ (entry.nodeId ?? 0) === (nodeId ?? (0, nodeIdMapping_ts_1.getThisNodeId)(auditStore)) &&
8201
+ !entry.additionalAuditRefs?.length);
8202
+ }
8140
8203
  function precedesExistingVersion(txnTime, existingEntry, nodeId) {
8141
8204
  if (nodeId === undefined) {
8142
8205
  nodeId = (0, nodeIdMapping_ts_1.getThisNodeId)(auditStore);