@harperfast/harper 5.1.27 → 5.1.29

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 (247) hide show
  1. package/dist/resources/RocksTransactionLogStore.d.ts +4 -2
  2. package/dist/resources/RocksTransactionLogStore.js +12 -6
  3. package/dist/resources/RocksTransactionLogStore.js.map +1 -1
  4. package/dist/resources/Table.js +66 -16
  5. package/dist/resources/Table.js.map +1 -1
  6. package/dist/resources/replayLogs.js +25 -21
  7. package/dist/resources/replayLogs.js.map +1 -1
  8. package/dist/resources/transactionBroadcast.js +4 -6
  9. package/dist/resources/transactionBroadcast.js.map +1 -1
  10. package/dist/security/user.js +5 -1
  11. package/dist/security/user.js.map +1 -1
  12. package/dist/utility/coalesceRefresh.d.ts +6 -0
  13. package/dist/utility/coalesceRefresh.js +42 -0
  14. package/dist/utility/coalesceRefresh.js.map +1 -0
  15. package/npm-shrinkwrap.json +2 -2
  16. package/package.json +1 -1
  17. package/resources/DESIGN.md +5 -0
  18. package/resources/RocksTransactionLogStore.ts +12 -6
  19. package/resources/Table.ts +65 -19
  20. package/resources/replayLogs.ts +25 -22
  21. package/resources/transactionBroadcast.ts +4 -4
  22. package/security/user.ts +6 -1
  23. package/studio/web/404.html +79 -0
  24. package/studio/web/assets/Chat-CSSJ_LuP.js +2294 -0
  25. package/studio/web/assets/FloatingChat-C-5i9pB-.js +23 -0
  26. package/studio/web/assets/_basePickBy-QJXUw_pr.js +1 -0
  27. package/studio/web/assets/_baseUniq-DR4vVjyC.js +1 -0
  28. package/studio/web/assets/{abnfDiagram-VCTEODGH-C0_BAZyO.js → abnfDiagram-O67JEVCF-DpPZWMOf.js} +1 -1
  29. package/studio/web/assets/{alertDialog-DIHt7Z0r.js → alertDialog-UrbiMgQt.js} +1 -1
  30. package/studio/web/assets/{apiToken-BnjVwGyX.js → apiToken-_BwddeaY.js} +1 -1
  31. package/studio/web/assets/applications-EoXf0cg8.js +296 -0
  32. package/studio/web/assets/architecture-7GRP2DOG-11l4Ny1l.js +1 -0
  33. package/studio/web/assets/architectureDiagram-NJMV4G6O-OmgLraID.js +36 -0
  34. package/studio/web/assets/authStore-5jSS5pTW.js +3 -0
  35. package/studio/web/assets/{blockDiagram-NRAW4CY4-BdJX9Khj.js → blockDiagram-BEXU5L5S-Cv7CD3Ai.js} +16 -5
  36. package/studio/web/assets/{button-DhiX-njv.js → button-MFP9n8Ck.js} +2 -2
  37. package/studio/web/assets/c4Diagram-YGBWAQC7-Ds1vKYnN.js +38 -0
  38. package/studio/web/assets/channel-BDtouPd6.js +1 -0
  39. package/studio/web/assets/chevron-up-CFe8x5Bp.js +1 -0
  40. package/studio/web/assets/chunk-3FUC2YCW-DpnBPH8B.js +2 -0
  41. package/studio/web/assets/{chunk-OBVCFTLP-D4wWOqDQ.js → chunk-5DYCD2WN-LLLCQSzg.js} +1 -1
  42. package/studio/web/assets/{chunk-PWAF6VOD-2zB6IW9i.js → chunk-742MDFTN-BL8J_pIO.js} +1 -1
  43. package/studio/web/assets/chunk-7INBJB4K-C-hJHiiK.js +62 -0
  44. package/studio/web/assets/chunk-7M6MHVWA-C6ZqkFbA.js +213 -0
  45. package/studio/web/assets/chunk-7PRAP22T-CUXM8BG6.js +1 -0
  46. package/studio/web/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
  47. package/studio/web/assets/{chunk-FOHPRMQF-DHwB1DNv.js → chunk-FOHPRMQF-DzxwRta7.js} +9 -9
  48. package/studio/web/assets/{chunk-SVP7TREG-FwtbH2QC.js → chunk-GTNCS2PH-DJ2BFvS1.js} +1 -1
  49. package/studio/web/assets/{chunk-F27PBJKO-BW7ao8AY.js → chunk-GWA4HPMP-C42bSqLL.js} +1 -1
  50. package/studio/web/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
  51. package/studio/web/assets/chunk-MBY4JIJT-C-5jz6Lo.js +72 -0
  52. package/studio/web/assets/chunk-NETBCI7D-D-bzlN4r.js +1 -0
  53. package/studio/web/assets/chunk-O7XYJQB3-ep14zA23.js +128 -0
  54. package/studio/web/assets/chunk-UA2S7LBM-BMRWRHED.js +1 -0
  55. package/studio/web/assets/{chunk-POPQ4Y6H-BPrvMyKz.js → chunk-WEXAMYUT-DdLYVdX1.js} +1 -1
  56. package/studio/web/assets/{chunk-XXDRQBXY-BoGZu3HH.js → chunk-XXDRQBXY-CbPh2l8S.js} +1 -1
  57. package/studio/web/assets/chunk-Z7XXMR3K-BmKEDjcP.js +10 -0
  58. package/studio/web/assets/{chunk-75Z2AOVW-BT8tVmks.js → chunk-ZIGJFQKS-DLZgdNxA.js} +2 -2
  59. package/studio/web/assets/classDiagram-v2-NBCMYWYE-DOI5vgKT.js +217 -0
  60. package/studio/web/assets/cose-bilkent-JH36ORCC-BSOszL11.js +1 -0
  61. package/studio/web/assets/createLucideIcon-bziYxJli.js +1 -0
  62. package/studio/web/assets/{css.worker-BD9HbRGW.js → css.worker-l1psR_wG.js} +13 -10
  63. package/studio/web/assets/{cssMode-BcnWGrZ7.js → cssMode-lBlR-7LH.js} +1 -1
  64. package/studio/web/assets/cynefin-OW5HDTMX-BSW-DB7S.js +1 -0
  65. package/studio/web/assets/cynefinDiagram-VND7K2PF-CbAHEwxt.js +62 -0
  66. package/studio/web/assets/cytoscape.esm-BZkf-uXn.js +321 -0
  67. package/studio/web/assets/dagre-6A5THRUB-Csxewgs4.js +4 -0
  68. package/studio/web/assets/diagram-22UHCM2B-a0rt8tY4.js +200 -0
  69. package/studio/web/assets/{diagram-VX7I27RA-BpOqCFca.js → diagram-3UASUU5V-lEj2SVNh.js} +2 -2
  70. package/studio/web/assets/{diagram-VSXAHHWV-CoCAg3M9.js → diagram-ATOU4E4O-HcrAeB-q.js} +3 -3
  71. package/studio/web/assets/{diagram-S7CK7UJ4-BuymVFZT.js → diagram-CDSNMT55-CYxiuyEx.js} +3 -3
  72. package/studio/web/assets/{diagram-Z3DM3KII-Bfpw7Vbj.js → diagram-MLGK6HIB-ChbCJTgJ.js} +1 -1
  73. package/studio/web/assets/diagram-MPIPVDR6-DaX9Y-N3.js +41 -0
  74. package/studio/web/assets/dialog-DTepachC.js +1 -0
  75. package/studio/web/assets/{dist-kYfyPZP9.js → dist-BRuBKNNy.js} +1 -1
  76. package/studio/web/assets/{dist-lkA3O3eM.js → dist-Cz2Y6-6G.js} +2 -2
  77. package/studio/web/assets/download-CtostjYn.js +1 -0
  78. package/studio/web/assets/{ebnfDiagram-PWID7BFC-DS_6aWqL.js → ebnfDiagram-ZINNZB2B-CwAsENB1.js} +1 -1
  79. package/studio/web/assets/{editor-BpwT7NMH.js → editor-DD13jWk4.js} +1 -1
  80. package/studio/web/assets/editor.worker-CkkvdXvO.js +33 -0
  81. package/studio/web/assets/elk-276RUBZZ-Hexg9E4D.js +27 -0
  82. package/studio/web/assets/{erDiagram-SSCWMZ5O-DJNk6Fgw.js → erDiagram-OPXOYQCR-CeC-wwO1.js} +15 -15
  83. package/studio/web/assets/eventmodeling-NTZA5JFV-CFb03e0o.js +1 -0
  84. package/studio/web/assets/flowDiagram-KWPJA3E3-Cidi00_Y.js +1 -0
  85. package/studio/web/assets/{ganttDiagram-EL5Y4UJY-2pOExxMY.js → ganttDiagram-FUAMR5RP-C2_Hhl1-.js} +2 -2
  86. package/studio/web/assets/{getAnalytics-D4LKGeVy.js → getAnalytics-CjthMQqF.js} +1 -1
  87. package/studio/web/assets/gitGraph-4MIJSDKK-xIk5Vuew.js +1 -0
  88. package/studio/web/assets/{gitGraphDiagram-WWUBYQGX-DVIsIhbO.js → gitGraphDiagram-X574FWY7-CMxJ34up.js} +4 -4
  89. package/studio/web/assets/graphlib-C9Tl7QrK.js +1 -0
  90. package/studio/web/assets/{html-BrgdgRGR.js → html-D-yZFVDJ.js} +1 -1
  91. package/studio/web/assets/{html.worker-DsMmVtuG.js → html.worker-DdwM4IrA.js} +12 -9
  92. package/studio/web/assets/{htmlMode-JHLbSnTh.js → htmlMode-CcX-hDcn.js} +1 -1
  93. package/studio/web/assets/index-BiEuS38J.js +824 -0
  94. package/studio/web/assets/index-CPoDzQTe.css +1 -0
  95. package/studio/web/assets/index.lazy-BmFnCdF7.js +2 -0
  96. package/studio/web/assets/info-A6RAGUB7-o49TEbj-.js +1 -0
  97. package/studio/web/assets/infoDiagram-VRGFBTTK-Cjhh7yzZ.js +2 -0
  98. package/studio/web/assets/{ishikawaDiagram-5VMMS53U-BRXRp29U.js → ishikawaDiagram-OU5B5YK6-C63aXRmh.js} +2 -2
  99. package/studio/web/assets/{javascript-DdiFlcph.js → javascript-C_Qb7VgS.js} +1 -1
  100. package/studio/web/assets/{journeyDiagram-EYS64GPL-B0ou8k0n.js → journeyDiagram-ZHPQQLJL-D_o0P5Mu.js} +4 -4
  101. package/studio/web/assets/json.worker-CSi2hF-a.js +65 -0
  102. package/studio/web/assets/{jsonMode-y-tjAvy2.js → jsonMode-Bu06LimW.js} +1 -1
  103. package/studio/web/assets/{kanban-definition-3QL26DDD-uYg7iYzp.js → kanban-definition-PNTS6WVX-CTI9SSxY.js} +7 -7
  104. package/studio/web/assets/{katex-CXMH3UgJ.js → katex-ZlcWpGUi.js} +2 -2
  105. package/studio/web/assets/languageServices-Ca1R1u3j.js +1 -0
  106. package/studio/web/assets/linear-Ds1AeO4V.js +1 -0
  107. package/studio/web/assets/{lspLanguageFeatures-BLONDcH7.js → lspLanguageFeatures-DlK675B0.js} +2 -2
  108. package/studio/web/assets/{mermaid-parser.core-Ck-fC8b7.js → mermaid-parser.core-C2lcH_jP.js} +3 -3
  109. package/studio/web/assets/mermaid.core-BG5bjfIG.js +44 -0
  110. package/studio/web/assets/{mindmap-definition-FBJOCRG2-CgTZ-rit.js → mindmap-definition-NLK3R4M7-BK7ho6JD.js} +24 -24
  111. package/studio/web/assets/{notifications-CD-AioQq.js → notifications-ByFMWGKr.js} +1 -1
  112. package/studio/web/assets/notifications-Dlp-DUlc.js +1 -0
  113. package/studio/web/assets/packet-AYTQ26CC-BHPy6KBV.js +1 -0
  114. package/studio/web/assets/{pegDiagram-XKGWAZYB-DrD-7sD9.js → pegDiagram-GJSIUBJH-DzjwG3jO.js} +1 -1
  115. package/studio/web/assets/pie-WAS4IAKB-D0cP-DTU.js +1 -0
  116. package/studio/web/assets/{pieDiagram-E7YTZNPT-GntqDCzv.js → pieDiagram-5QR66LMP-C_hOP9Lv.js} +2 -2
  117. package/studio/web/assets/profile-CGlJ4T3_.js +1 -0
  118. package/studio/web/assets/{quadrantDiagram-AXDQQJYC-0UeqXQGd.js → quadrantDiagram-O4NWA36T-CZW8PbV1.js} +3 -3
  119. package/studio/web/assets/radar-RG4KPBEZ-C8fk0U81.js +1 -0
  120. package/studio/web/assets/railroad-74A4TZTK-B60FWm17.js +1 -0
  121. package/studio/web/assets/railroad-abnf-HS5TGJTU-CLMVZvH0.js +1 -0
  122. package/studio/web/assets/railroad-ebnf-LZEXJU2U--tlwFoVB.js +1 -0
  123. package/studio/web/assets/railroad-peg-WCYAUIDC-Dpuslblm.js +1 -0
  124. package/studio/web/assets/{railroadDiagram-O6MQD6OU-yHUELZaV.js → railroadDiagram-XR7U4H2S-DyyNmgbU.js} +1 -1
  125. package/studio/web/assets/regions-DTTjgYbw.js +1 -0
  126. package/studio/web/assets/{register-aPXx7u_R.js → register-BEBUrRqE.js} +39 -39
  127. package/studio/web/assets/{requirementDiagram-EFPCY7ZU-DNEGFjuW.js → requirementDiagram-PLB6GJNP-C4H-mLKu.js} +11 -11
  128. package/studio/web/assets/{rolldown-runtime-hePW80VL.js → rolldown-runtime-Dd_uD5pT.js} +1 -1
  129. package/studio/web/assets/sankeyDiagram-IPEJSGJF-DHDyga4c.js +40 -0
  130. package/studio/web/assets/sequenceDiagram-PO4LG4MO-CdNcHXRI.js +169 -0
  131. package/studio/web/assets/setComponentFile-C28rPBf4.js +1 -0
  132. package/studio/web/assets/{setup-flP_i7Na.js → setup-6gEOddyI.js} +2 -2
  133. package/studio/web/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
  134. package/studio/web/assets/{src-CMc7m_Ut.js → src-D0vMJQRr.js} +1 -1
  135. package/studio/web/assets/stateDiagram-v2-GCMORJYK-CpKuXq15.js +291 -0
  136. package/studio/web/assets/status-1KvBgL5x.js +61 -0
  137. package/studio/web/assets/swimlanes-2SLR337P-NRHa2D8I.js +1 -0
  138. package/studio/web/assets/swimlanesDiagram-TC7HE7FX-BBk4t4hO.js +8 -0
  139. package/studio/web/assets/{tabs-B_G5zscN.js → tabs-CnQ_zenf.js} +1 -1
  140. package/studio/web/assets/{time-Cclkb7kQ.js → time-Ci1v4fvT.js} +1 -1
  141. package/studio/web/assets/timeline-definition-EJHVYXUP-D39Y-xpq.js +120 -0
  142. package/studio/web/assets/toggleHighContrast-CXlv5tpg.js +49 -0
  143. package/studio/web/assets/treeView-Q6P3EWNA-CRWR9OqD.js +1 -0
  144. package/studio/web/assets/treemap-WGGIJYW6-ZfXyJgLO.js +1 -0
  145. package/studio/web/assets/{ts.worker-DpaaFKhy.js → ts.worker-DDMUrpqh.js} +118 -115
  146. package/studio/web/assets/{tsMode-MuMR2idI.js → tsMode-BHepKavV.js} +5 -5
  147. package/studio/web/assets/{typescript-oRqW34s_.js → typescript-C9CHPLmr.js} +1 -1
  148. package/studio/web/assets/{useEntityRestURL-CL8txIs9.js → useEntityRestURL-BNUVRoP4.js} +1 -1
  149. package/studio/web/assets/useLocalStorage-BYoZF60G.js +1 -0
  150. package/studio/web/assets/usecaseDiagram-POWQR4AR-jf-zIDZ_.js +328 -0
  151. package/studio/web/assets/vendor-core-BdkdbUek.js +63 -0
  152. package/studio/web/assets/vendor-datadog-fCQhBHGk.js +6 -0
  153. package/studio/web/assets/vendor-react-izWchTRL.js +9 -0
  154. package/studio/web/assets/vendor-tanstack-CQ1aRjVa.js +2 -0
  155. package/studio/web/assets/vendor-ui-aE1tHcW7.js +41 -0
  156. package/studio/web/assets/vennDiagram-UO4OBE2U-BKYAZUh_.js +34 -0
  157. package/studio/web/assets/wardley-WFR3VGLG-BO7f36ci.js +1 -0
  158. package/studio/web/assets/{wardleyDiagram-VM6X3IG4-BylmIGSg.js → wardleyDiagram-VNRHLVJA-Djb0JDQc.js} +3 -3
  159. package/studio/web/assets/{workers-DLjwoG6x.js → workers-B0sIl4Uq.js} +1 -1
  160. package/studio/web/assets/x-vYntCxm4.js +1 -0
  161. package/studio/web/assets/{xml-3AYuspMz.js → xml-BX3ACYE-.js} +1 -1
  162. package/studio/web/assets/{xychartDiagram-S5SC5T6Z-CoKALMXr.js → xychartDiagram-PMCCYNJV-BQh9ubvb.js} +3 -3
  163. package/studio/web/assets/{yaml-UbiHrEpT.js → yaml-CTtQqCZf.js} +1 -1
  164. package/studio/web/assets/yaml.worker-DAK2o_H1.js +479 -0
  165. package/studio/web/auth/fabric-globe-dark.png +0 -0
  166. package/studio/web/auth/fabric-globe-light.png +0 -0
  167. package/studio/web/auth/fabric-platform-dark.png +0 -0
  168. package/studio/web/auth/fabric-platform-light.png +0 -0
  169. package/studio/web/index.html +15 -15
  170. package/utility/coalesceRefresh.ts +37 -0
  171. package/studio/web/assets/Chat-BkQZUW_u.js +0 -2067
  172. package/studio/web/assets/FloatingChat-CgzPnxV-.js +0 -23
  173. package/studio/web/assets/applications-V4u8yfT1.js +0 -296
  174. package/studio/web/assets/architecture-7GRP2DOG-DNdx5tEU.js +0 -1
  175. package/studio/web/assets/architectureDiagram-5GKGNRK7-BWzrASgm.js +0 -36
  176. package/studio/web/assets/authStore-qKmCZcaf.js +0 -3
  177. package/studio/web/assets/c4Diagram-UCG6FXSJ-CI6MzGmQ.js +0 -38
  178. package/studio/web/assets/channel-DtCV8PTL.js +0 -1
  179. package/studio/web/assets/chevron-up-Df2c8uoU.js +0 -1
  180. package/studio/web/assets/chunk-DU6HZSFF-9kAOOmI6.js +0 -127
  181. package/studio/web/assets/chunk-G27WJ6UU-COyLMcgK.js +0 -231
  182. package/studio/web/assets/chunk-GMAD6QVW-BNyXpoQO.js +0 -72
  183. package/studio/web/assets/chunk-JQ64N6SF-Cyz1IeLf.js +0 -1
  184. package/studio/web/assets/chunk-LCL6LL3I-HOzK_ppE.js +0 -206
  185. package/studio/web/assets/chunk-P2QGCYS3-DmIFY4d7.js +0 -1
  186. package/studio/web/assets/chunk-R7TYR2AO-Irip67yr.js +0 -10
  187. package/studio/web/assets/chunk-RHFEMEQ7-2FgyI8YU.js +0 -168
  188. package/studio/web/assets/chunk-TEH6E4GO-P87k5mNi.js +0 -62
  189. package/studio/web/assets/classDiagram-DTDB5LWJ-DbO_dCNE.js +0 -1
  190. package/studio/web/assets/classDiagram-v2-JRS7N3AN-DbO_dCNE.js +0 -1
  191. package/studio/web/assets/cose-bilkent-JH36ORCC-Cuuf67Bh.js +0 -1
  192. package/studio/web/assets/createLucideIcon-BKGPfjm2.js +0 -1
  193. package/studio/web/assets/cynefin-OW5HDTMX-BRkpLFQV.js +0 -1
  194. package/studio/web/assets/cynefinDiagram-5FMLGOSQ-CHT1DaX6.js +0 -62
  195. package/studio/web/assets/cytoscape.esm-C2x7inlt.js +0 -321
  196. package/studio/web/assets/dagre-3AP2YEHR-DpUXBh63.js +0 -4
  197. package/studio/web/assets/dagre-PrKaheQc.js +0 -1
  198. package/studio/web/assets/diagram-UQ7AKVKN-CyP148RM.js +0 -41
  199. package/studio/web/assets/dialog-CBf0Mr1d.js +0 -1
  200. package/studio/web/assets/download-BtTOBem-.js +0 -1
  201. package/studio/web/assets/editor.worker-DwcOiOeP.js +0 -30
  202. package/studio/web/assets/eventmodeling-NTZA5JFV-5jbe4A5P.js +0 -1
  203. package/studio/web/assets/flowDiagram-A5DVABFB-Dp9Ezlow.js +0 -1
  204. package/studio/web/assets/gitGraph-4MIJSDKK-CH5ZxwzF.js +0 -1
  205. package/studio/web/assets/graphlib-DS17s2tU.js +0 -1
  206. package/studio/web/assets/index-Cxj2_wsl.css +0 -1
  207. package/studio/web/assets/index-nvKFTYif.js +0 -824
  208. package/studio/web/assets/index.lazy-BvCjZaOM.js +0 -2
  209. package/studio/web/assets/info-A6RAGUB7-CPQfTnaG.js +0 -1
  210. package/studio/web/assets/infoDiagram-RXCK75RN-DlwLYlwm.js +0 -2
  211. package/studio/web/assets/json.worker-fO_hOLCP.js +0 -62
  212. package/studio/web/assets/languageServices-BpWu4JeF.js +0 -1
  213. package/studio/web/assets/linear-Cnt8506Q.js +0 -1
  214. package/studio/web/assets/mermaid.core-CP8aNNYm.js +0 -44
  215. package/studio/web/assets/notifications-Drk24Aro.js +0 -1
  216. package/studio/web/assets/packet-AYTQ26CC-DEyoPtPb.js +0 -1
  217. package/studio/web/assets/pie-WAS4IAKB-wjj-EI1d.js +0 -1
  218. package/studio/web/assets/profile-D2UPY_7W.js +0 -1
  219. package/studio/web/assets/radar-RG4KPBEZ-DFSA5h7k.js +0 -1
  220. package/studio/web/assets/railroad-74A4TZTK-CaOUG9wR.js +0 -1
  221. package/studio/web/assets/railroad-abnf-HS5TGJTU-Bc0Qi0WH.js +0 -1
  222. package/studio/web/assets/railroad-ebnf-LZEXJU2U-G8rVVZ2C.js +0 -1
  223. package/studio/web/assets/railroad-peg-WCYAUIDC-CrehKBhC.js +0 -1
  224. package/studio/web/assets/regions-CRxU70wx.js +0 -1
  225. package/studio/web/assets/sankeyDiagram-P5KCCOFB-DpyAmSVR.js +0 -40
  226. package/studio/web/assets/sequenceDiagram-WJ2MYXX4-TyaT7xNk.js +0 -162
  227. package/studio/web/assets/setComponentFile-DhSuHoa4.js +0 -1
  228. package/studio/web/assets/sizeCapture-X5ZJPWSS-B0uUizjq.js +0 -1
  229. package/studio/web/assets/stateDiagram-HBIQ2CUA-CeEdTArZ.js +0 -1
  230. package/studio/web/assets/stateDiagram-v2-4QOOHH4V-D4tuw9Su.js +0 -1
  231. package/studio/web/assets/status-CPJlcpUL.js +0 -61
  232. package/studio/web/assets/swimlanes-XN3QIQJK-B54FmF46.js +0 -1
  233. package/studio/web/assets/swimlanesDiagram-VK2B7HYN-XOhmNEvq.js +0 -8
  234. package/studio/web/assets/timeline-definition-24CTP7MA-D-a9ujbo.js +0 -120
  235. package/studio/web/assets/toggleHighContrast-hzY5eJz1.js +0 -49
  236. package/studio/web/assets/treeView-Q6P3EWNA-CrW_6JnS.js +0 -1
  237. package/studio/web/assets/treemap-WGGIJYW6-BxyYLdP_.js +0 -1
  238. package/studio/web/assets/useLocalStorage-Dtj1QS8_.js +0 -1
  239. package/studio/web/assets/vendor-core-RCcadM3e.js +0 -73
  240. package/studio/web/assets/vendor-datadog-BRv-mOv1.js +0 -6
  241. package/studio/web/assets/vendor-react-Dyj4O3HE.js +0 -9
  242. package/studio/web/assets/vendor-tanstack-BiFWSB3W.js +0 -1
  243. package/studio/web/assets/vendor-ui-vhu-UHhF.js +0 -41
  244. package/studio/web/assets/vennDiagram-4TSXK5OY-Cy7s7Mpy.js +0 -34
  245. package/studio/web/assets/wardley-WFR3VGLG-BeBL35g2.js +0 -1
  246. package/studio/web/assets/x-B9o9hsep.js +0 -1
  247. package/studio/web/assets/yaml.worker-BDL8_iuk.js +0 -454
@@ -75,8 +75,9 @@ export function replayLogs(rootStore: RocksDatabase, tables: any): Promise<void>
75
75
  tableById.set(table.tableId, table);
76
76
  }
77
77
  // replay all the logs
78
- let transaction: DatabaseTransaction;
78
+ let transaction: DatabaseTransaction | undefined;
79
79
  let lastTimestamp = 0;
80
+ let openCommitEnded = false;
80
81
  let writes = 0;
81
82
  let skipped = 0;
82
83
  // Track forward progress so a backlog of unwritable entries can't grind the boot thread
@@ -110,8 +111,27 @@ export function replayLogs(rootStore: RocksDatabase, tables: any): Promise<void>
110
111
  originatingOperation,
111
112
  username,
112
113
  extendedType,
114
+ endTxn,
113
115
  } = auditRecord;
114
116
  try {
117
+ // A replay transaction is one native commit ("Boot replay transactions" in DESIGN.md).
118
+ if (transaction && (openCommitEnded || lastTimestamp !== version)) {
119
+ const ending = transaction;
120
+ transaction = undefined;
121
+ try {
122
+ ending.directCommitSync();
123
+ } catch (error) {
124
+ logger.error('Error committing replay transaction', error);
125
+ }
126
+ // The wall-clock budget (harper#1316) is checked only here, between native commits with
127
+ // nothing staged, so aborting never tears a commit in half.
128
+ if (shouldAbortSlowReplay(performance.now() - replayStartTime, replayTimeoutMs)) {
129
+ logger.fatal(
130
+ `Aborting transaction-log replay in ${(rootStore as any).databaseName} database: replay has exceeded the wall-clock time limit (${writes} written, ${skipped} skipped). The transaction log contains a pathologically deep out-of-order write history that is too expensive to reconcile during boot (harper#1316). Re-clone this node from a healthy leader to recover the unreplayed data.`
131
+ );
132
+ break;
133
+ }
134
+ }
115
135
  if (classifyAuditEntryForReplay(extendedType, tableId, true) === 'corrupt-header') {
116
136
  skipped++;
117
137
  noProgressRun++;
@@ -165,28 +185,9 @@ export function replayLogs(rootStore: RocksDatabase, tables: any): Promise<void>
165
185
  warnedReplayHappening = true;
166
186
  console.warn('Harper was not properly shutdown, replaying transaction logs to synchronize database');
167
187
  }
168
- if (lastTimestamp !== version) {
188
+ if (!transaction) {
169
189
  lastTimestamp = version;
170
- try {
171
- // commit the last transaction since we are starting a new one
172
- transaction?.directCommitSync();
173
- } catch (error) {
174
- logger.error('Error committing replay transaction', error);
175
- }
176
- // Abort if replay has exceeded the total wall-clock budget even while making progress
177
- // (harper#1316, facet a). shouldAbortStalledReplay resets its counters on every write,
178
- // so a slow-but-progressing replay (deep out-of-order audit chain walk per entry) can
179
- // peg the boot thread indefinitely without tripping it. Checked only here, at a version
180
- // boundary: the prior version's transaction was just committed in full and the new one
181
- // is not yet staged, so aborting never tears a same-version (same source-transaction)
182
- // write batch in half. Re-clone to recover the unreplayed remainder.
183
- if (shouldAbortSlowReplay(performance.now() - replayStartTime, replayTimeoutMs)) {
184
- logger.fatal(
185
- `Aborting transaction-log replay in ${(rootStore as any).databaseName} database: replay has exceeded the wall-clock time limit (${writes} written, ${skipped} skipped). The transaction log contains a pathologically deep out-of-order write history that is too expensive to reconcile during boot (harper#1316). Re-clone this node from a healthy leader to recover the unreplayed data.`
186
- );
187
- transaction = undefined as any; // already committed above; nothing staged for the new version
188
- break;
189
- }
190
+ openCommitEnded = false;
190
191
  transaction = new DatabaseTransaction();
191
192
  transaction.db = primaryStore;
192
193
  transaction.timestamp = version;
@@ -280,6 +281,8 @@ export function replayLogs(rootStore: RocksDatabase, tables: any): Promise<void>
280
281
  logger.error(`Error writing from replay of log`, err, {
281
282
  version,
282
283
  });
284
+ } finally {
285
+ if (endTxn) openCommitEnded = true;
283
286
  }
284
287
  }
285
288
  try {
@@ -187,7 +187,7 @@ function notifyFromTransactionData(subscriptions, auditLogIterable?, allowYield
187
187
  let ancestorLevel = 0;
188
188
  do {
189
189
  // we iterate through the key hierarchy, notifying all subscribers for each key,
190
- // so for an id like resource/foo/bar, we notify subscribers for resource/foo/bar, resource/foo/, resource/foo, resource/, and resource
190
+ // so for an id like resource/foo/bar, we notify subscribers for resource/foo/bar, resource/foo/, resource/, and the root (null)
191
191
  // this allows for efficient subscriptions to children ids/topics
192
192
  const keySubscriptions = tableSubscriptions.get(matchingKey);
193
193
  if (keySubscriptions) {
@@ -228,9 +228,9 @@ function notifyFromTransactionData(subscriptions, auditLogIterable?, allowYield
228
228
  if (lastSlash !== matchingKey.length - 1) {
229
229
  ancestorLevel++; // don't increase the ancestor level for this going from resource/ to resource
230
230
  }
231
- if (lastSlash > -1) {
232
- matchingKey = matchingKey.slice(0, lastSlash + 1);
233
- } else matchingKey = null;
231
+ // lastIndexOf clamps a negative fromIndex to 0, so '/' would otherwise yield itself forever
232
+ const parentKey = lastSlash > -1 ? matchingKey.slice(0, lastSlash + 1) : null;
233
+ matchingKey = parentKey === matchingKey ? null : parentKey;
234
234
  } while (true);
235
235
  }
236
236
  } else if (auditRecord.type === 'reload') {
package/security/user.ts CHANGED
@@ -105,6 +105,7 @@ import * as password from '../utility/password.ts';
105
105
  import { server } from '../server/Server.ts';
106
106
  import * as terms from '../utility/hdbTerms.ts';
107
107
  import { expandOperationsPerms } from '../utility/operationPermissions.ts';
108
+ import { coalesceRefresh } from '../utility/coalesceRefresh.ts';
108
109
 
109
110
  server.getUser = (username: string, password?: string | null): Promise<User> => {
110
111
  return findAndValidateUser(username, password, password != null);
@@ -371,9 +372,13 @@ function cacheExpandedOperationsPerms(userRole: UserRole) {
371
372
  userRole.permission._expandedOperations = expandOperationsPerms(userRole.permission.operations);
372
373
  }
373
374
 
375
+ const refreshUsersWithRolesCache = coalesceRefresh(async () => {
376
+ usersWithRolesMap = await listUsers();
377
+ });
378
+
374
379
  async function setUsersWithRolesCache(cache = undefined) {
375
380
  if (cache) usersWithRolesMap = cache;
376
- else usersWithRolesMap = await listUsers();
381
+ else await refreshUsersWithRolesCache();
377
382
  }
378
383
 
379
384
  async function getUsersWithRolesCache() {
@@ -0,0 +1,79 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <title>Page Not Found — Harper Fabric</title>
6
+ <link rel="icon" type="image/svg+xml" href="/HDBDogOnly.svg" />
7
+ <link rel="icon" type="dynamic-favicon" href="/favicon_purple.png" />
8
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
+ <meta name="robots" content="noindex" />
10
+ <!-- Self-contained on purpose: this page is served when a URL matched nothing, so it must not
11
+ depend on a hashed bundle, a stylesheet, or a font that might itself be the thing missing. -->
12
+ <style>
13
+ * {
14
+ margin: 0;
15
+ padding: 0;
16
+ }
17
+
18
+ body {
19
+ align-items: center;
20
+ background: linear-gradient(45deg, #312556, #403b8a, #7a3a87);
21
+ box-sizing: border-box;
22
+ color: #efefef;
23
+ display: flex;
24
+ font-family: helvetica, sans-serif;
25
+ justify-content: center;
26
+ line-height: 1.5;
27
+ min-height: 100vh;
28
+ padding: 2rem 1.5rem;
29
+ }
30
+
31
+ main {
32
+ max-width: 30rem;
33
+ text-align: center;
34
+ }
35
+
36
+ img {
37
+ height: 84px;
38
+ width: 84px;
39
+ }
40
+
41
+ h1 {
42
+ font-size: 1.75rem;
43
+ font-weight: 400;
44
+ margin: 1.5rem 0 0.75rem;
45
+ }
46
+
47
+ p {
48
+ color: hsl(0, 0%, 85%);
49
+ }
50
+
51
+ a {
52
+ background-color: hsla(0, 0%, 0%, 0.35);
53
+ border-radius: 0.375rem;
54
+ color: #fff;
55
+ display: inline-block;
56
+ margin-top: 1.75rem;
57
+ padding: 0.625rem 1.25rem;
58
+ text-decoration: none;
59
+ }
60
+
61
+ a:hover,
62
+ a:focus-visible {
63
+ background-color: hsla(0, 0%, 0%, 0.6);
64
+ }
65
+ </style>
66
+ </head>
67
+
68
+ <body>
69
+ <main>
70
+ <img src="/HDBDogOnly.svg" alt="" width="84" height="84" />
71
+ <h1>Page not found</h1>
72
+ <p>
73
+ That address isn't part of Harper Fabric. If you followed a link from
74
+ outside Studio, it may have pointed somewhere that has since moved.
75
+ </p>
76
+ <a href="/">Go to Harper Fabric</a>
77
+ </main>
78
+ </body>
79
+ </html>