@objectstack/console 17.1.0 → 17.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 (301) hide show
  1. package/CHANGELOG.md +731 -0
  2. package/README.md +26 -10
  3. package/dist/.objectstack-injection.json +2 -2
  4. package/dist/.objectui-sha +1 -1
  5. package/dist/assets/ActionResultDialog-CQwenjVA.js +9 -0
  6. package/dist/assets/AiPendingActionsPage-7gZ8zlOy.js +1 -0
  7. package/dist/assets/ApiConsolePage-DUF0ysH7.js +1 -0
  8. package/dist/assets/{AppDocsIndex-DVrJTsbv.js → AppDocsIndex-CP_AVG4X.js} +1 -1
  9. package/dist/assets/AppManagementPage-BJktnoa5.js +1 -0
  10. package/dist/assets/ApprovalsInboxPage-DlnxY-uy.js +1 -0
  11. package/dist/assets/{AuditLogPage-B-2e1YhN.js → AuditLogPage-DIJPRjji.js} +1 -1
  12. package/dist/assets/{ComponentNavView-BVbkfJfE.js → ComponentNavView-C84QByT7.js} +1 -1
  13. package/dist/assets/CreateViewDialog-Zbd9Cagm.js +1 -0
  14. package/dist/assets/DashboardView-UyKHklBx.js +1 -0
  15. package/dist/assets/{DeveloperHubPage-CWq2uYpr.js → DeveloperHubPage-BRyNdrCJ.js} +1 -1
  16. package/dist/assets/DocPage-Bx8ZXCYt.js +1 -0
  17. package/dist/assets/{DocShell-UFsFTSr-.js → DocShell-Ipy_IDvh.js} +1 -1
  18. package/dist/assets/DocsIndex-CmY-7OQR.js +1 -0
  19. package/dist/assets/DocsLayout-BNsSvaz2.js +1 -0
  20. package/dist/assets/DocsSlug-Cb_NMM1k.js +1 -0
  21. package/dist/assets/ExpressionProvider-DqGWVuxV.js +1 -0
  22. package/dist/assets/FlowRunsPage-B6ustUgi.js +1 -0
  23. package/dist/assets/{IntegrationsPage-DdKbqwGE.js → IntegrationsPage-chOxmiyU.js} +2 -2
  24. package/dist/assets/InterfaceListPage-DVETnQm5.js +1 -0
  25. package/dist/assets/MarketplaceInstalledPage-DA5pjhAz.js +1 -0
  26. package/dist/assets/MarketplacePackagePage-dCIVHBFi.js +4 -0
  27. package/dist/assets/MarketplacePage-wJb6g1p7.js +1 -0
  28. package/dist/assets/MetadataInspector-Cu-n1FYz.js +1 -0
  29. package/dist/assets/ObjectDataPage-CP-YSZYQ.js +1 -0
  30. package/dist/assets/PageView-B1_ibRuM.js +1 -0
  31. package/dist/assets/ProfilePage-DEr5iZVB.js +1 -0
  32. package/dist/assets/PublicFormsPage-CBcKQbNl.js +1 -0
  33. package/dist/assets/RecordDetailView-A8bbPnkK.js +3 -0
  34. package/dist/assets/RecordFormPage-CGQlYWDk.js +1 -0
  35. package/dist/assets/ReportDefaultInspector-R_p6YStL.js +1 -0
  36. package/dist/assets/ReportView-BTMrtcGH.js +2 -0
  37. package/dist/assets/RuntimeDraftBar-agGU39FL.js +1 -0
  38. package/dist/assets/SchemaForm-DJbupOno.js +3 -0
  39. package/dist/assets/SearchResultsPage-CHhZUc6L.js +1 -0
  40. package/dist/assets/SettingsHub-BGLR_gS7.js +1 -0
  41. package/dist/assets/SettingsView-Bq-7Zkzs.js +1 -0
  42. package/dist/assets/SkeletonDetail-B4-UKxai.js +1 -0
  43. package/dist/assets/SystemHubPage-CVZVag1e.js +1 -0
  44. package/dist/assets/{abnfDiagram-N423BO3Z-DfpQlDUF.js → abnfDiagram-VCTEODGH-DUS5D5dU.js} +1 -1
  45. package/dist/assets/app-shell-eager-leaves-BB0oaPx6.js +1 -0
  46. package/dist/assets/{utils-CJ4UwXMF.js → appRoute-DEVGXLLH.js} +1 -1
  47. package/dist/assets/architecture-7GRP2DOG-kzM7RUjO.js +1 -0
  48. package/dist/assets/{architectureDiagram-T3A2C74G-Ej_4n3NG.js → architectureDiagram-5GKGNRK7-mGW8P1lC.js} +1 -1
  49. package/dist/assets/blockDiagram-OSKFZWR5-Bz2hnVmp.js +129 -0
  50. package/dist/assets/c4Diagram-7LVT6UL2-DU3u1Y6c.js +38 -0
  51. package/dist/assets/channel-FD4s9EIH.js +1 -0
  52. package/dist/assets/{chunk-U6XO7XAA-D-dXvZaW.js → chunk-2ZTRR5NV-DXmA5XXf.js} +1 -1
  53. package/dist/assets/chunk-3NF5O7KM-B8Q7HUio.js +168 -0
  54. package/dist/assets/{chunk-YOTPTUD7-CDtXQZ13.js → chunk-3Z5EZCMW-D3OlaP15.js} +1 -1
  55. package/dist/assets/chunk-4HAMMTFA-BPKwX4iB.js +62 -0
  56. package/dist/assets/{chunk-BIQX33UG-DMScvo0C.js → chunk-5V3GS4D5-sE73jHoi.js} +1 -1
  57. package/dist/assets/{chunk-MOZMSUNE-DG70Besp.js → chunk-6AZGARVD-dsTIs5yl.js} +1 -1
  58. package/dist/assets/{chunk-5JV3BV7I-BrKM6vC-.js → chunk-6EIED4P4-BB4xaK3K.js} +1 -1
  59. package/dist/assets/{chunk-R7FJI6CG-DsJHM8am.js → chunk-6K3QC6MW-DaG1LefG.js} +1 -1
  60. package/dist/assets/{chunk-OSBZ3O6U-Dch_xyhf.js → chunk-6TQVIW2G-DL8WEcT0.js} +1 -1
  61. package/dist/assets/{chunk-JG7HCLWE-lCTbN-f1.js → chunk-747NJXEK-Bdie6H1T.js} +1 -1
  62. package/dist/assets/chunk-75Z2AOVW-CkSdnmiC.js +2 -0
  63. package/dist/assets/chunk-CLGD4ZFX-BTkDISwp.js +1 -0
  64. package/dist/assets/chunk-DU6HZSFF-BkY4hAzc.js +127 -0
  65. package/dist/assets/{chunk-2GRJ4B5K-D1if-ThW.js → chunk-F27PBJKO-DUKg0YWV.js} +1 -1
  66. package/dist/assets/{chunk-KEIR6QF5-ydf36Hye.js → chunk-FOHPRMQF-C65HoZVt.js} +2 -2
  67. package/dist/assets/chunk-GMAD6QVW-DZo_NykZ.js +72 -0
  68. package/dist/assets/chunk-GVQU2GXP-9ELY9S6X.js +1 -0
  69. package/dist/assets/chunk-H2I77ZZE-vCr_buP7.js +1 -0
  70. package/dist/assets/{chunk-GF5L2VYU-Dgjjn2FR.js → chunk-HLEWEB6X-iPkY2ESt.js} +1 -1
  71. package/dist/assets/{chunk-QBLGF6JB-CzQYydMJ.js → chunk-I5DQTOEV-Cz6Y6T9y.js} +1 -1
  72. package/dist/assets/{chunk-5FCAYU7R-BuOxxvKk.js → chunk-ICYGCRZG-DdtFYQ2l.js} +1 -1
  73. package/dist/assets/{chunk-CQNSW5MT-CCth14ZS.js → chunk-IH6LHLGP-DybuHD8B.js} +1 -1
  74. package/dist/assets/{chunk-CYSBUYHQ-DIigEFGo.js → chunk-KI3K4JFJ-CB_CI00L.js} +1 -1
  75. package/dist/assets/chunk-L3NEJ4N5-Bzz35TZJ.js +1 -0
  76. package/dist/assets/chunk-LNGE3PJU-DWpGwHrW.js +34 -0
  77. package/dist/assets/chunk-LQGUR6SS-iVI0GACK.js +1 -0
  78. package/dist/assets/chunk-OSK3NFVY-DcRwXCQD.js +10 -0
  79. package/dist/assets/{chunk-5TONJI2A-Bdh0MHqz.js → chunk-OUJLGHUK-TbeyE6CA.js} +1 -1
  80. package/dist/assets/chunk-P2QGCYS3-nx2-dM5t.js +1 -0
  81. package/dist/assets/{chunk-KBJHAD2P-DI4-lUt-.js → chunk-POPQ4Y6H-BxLOacOG.js} +1 -1
  82. package/dist/assets/{chunk-4I5QYGJK-DlrWrdEa.js → chunk-PWAF6VOD-2mst9kZu.js} +1 -1
  83. package/dist/assets/{chunk-6Q2QTUOP-C2vvuHlO.js → chunk-SVP7TREG-C3BMpr4x.js} +1 -1
  84. package/dist/assets/{chunk-EMLP6XTP-B4CrDa5p.js → chunk-UY3FDG6J-CDAtW6MI.js} +1 -1
  85. package/dist/assets/{chunk-5HE753X5-T_shrJhj.js → chunk-XHIXRSVI-CqmtoxrP.js} +1 -1
  86. package/dist/assets/chunk-XXDRQBXY-iNC8aYmk.js +1 -0
  87. package/dist/assets/{chunk-5RXB4S5H-JwFhdddt.js → chunk-ZLD2IHE6-ZFqtFJbj.js} +2 -2
  88. package/dist/assets/classDiagram-CYGNFDIV-D5Pd2TCl.js +1 -0
  89. package/dist/assets/classDiagram-v2-TLXNO2FR-D5Pd2TCl.js +1 -0
  90. package/dist/assets/{cose-bilkent-JH36ORCC-XP-DnSP5.js → cose-bilkent-JH36ORCC-CPQv9aQH.js} +1 -1
  91. package/dist/assets/createDerive-Best2JCj.js +2 -0
  92. package/dist/assets/cynefin-OW5HDTMX-Dtvf1C60.js +1 -0
  93. package/dist/assets/{cynefinDiagram-MW4NZA55-B8MvpqXe.js → cynefinDiagram-5FMLGOSQ-Lnly8IJd.js} +1 -1
  94. package/dist/assets/cytoscape.esm-CGd-uY3x.js +321 -0
  95. package/dist/assets/dagre-OS7QT2EB-CdXLxmTK.js +4 -0
  96. package/dist/assets/dagre-PrKaheQc.js +1 -0
  97. package/dist/assets/data-adapter-DL25qpAe.js +5 -0
  98. package/dist/assets/default-inspector-registry-DeEG98bO.js +1 -0
  99. package/dist/assets/{diagram-7IWD3JNH-Xj62y5BF.js → diagram-S7CK7UJ4-DE8I3gxQ.js} +4 -4
  100. package/dist/assets/{diagram-UB23O5K3-bseKIzhv.js → diagram-UQ7AKVKN-D2xQpbEq.js} +1 -1
  101. package/dist/assets/{diagram-B4RE2ZJO-mI-iOCGl.js → diagram-VSXAHHWV-DnttDSlO.js} +1 -1
  102. package/dist/assets/{diagram-Q27KOJAE-B98Knrnh.js → diagram-VX7I27RA-BSEwkn7K.js} +1 -1
  103. package/dist/assets/{diagram-LBJQPF4R-BMTSoZch.js → diagram-Z3DM3KII-BgB9f0Nv.js} +1 -1
  104. package/dist/assets/dist-BpPy7hlB.js +5 -0
  105. package/dist/assets/{ebnfDiagram-BXEA7PRR-Bgo10FP1.js → ebnfDiagram-PWID7BFC-32WvKbS2.js} +1 -1
  106. package/dist/assets/erDiagram-2YWLMYGG-Dwf8uAdl.js +99 -0
  107. package/dist/assets/eventmodeling-NTZA5JFV-CSwP2CpK.js +1 -0
  108. package/dist/assets/expressionUser-CASszt1z.js +1 -0
  109. package/dist/assets/flowDiagram-T62WH6J4-CqVSNJ8T.js +1 -0
  110. package/dist/assets/framework-BfSv4Kb0.js +36 -0
  111. package/dist/assets/{ganttDiagram-PKOTCBZU-CrmKcYGt.js → ganttDiagram-EL5Y4UJY-DqYIE0Cu.js} +2 -2
  112. package/dist/assets/getIcon-CgyYxSEC.js +1 -0
  113. package/dist/assets/gitGraph-4MIJSDKK--Dc33TN5.js +1 -0
  114. package/dist/assets/{gitGraphDiagram-DS77QQ5N-COu0mOui.js → gitGraphDiagram-WWUBYQGX-D1dYmoGu.js} +1 -1
  115. package/dist/assets/{highlighted-body-OFNGDK62-DUQut-ZU.js → highlighted-body-OFNGDK62-BxO9mjPI.js} +1 -1
  116. package/dist/assets/i18n-Cfqor-xb.js +9 -0
  117. package/dist/assets/i18n-locales-Bz4c8KXc.js +31 -0
  118. package/dist/assets/index-BU-FzlQ6.js +20 -0
  119. package/dist/assets/index-_VyGO4ms.css +2 -0
  120. package/dist/assets/info-A6RAGUB7-DBa3mCQO.js +1 -0
  121. package/dist/assets/{infoDiagram-6WML65LV-BT0Q6MIs.js → infoDiagram-FKFFQAWI-Cr1-5_Am.js} +1 -1
  122. package/dist/assets/infrastructure-CIpDEFyQ.js +3 -0
  123. package/dist/assets/{ishikawaDiagram-WSZJBQD7-kvPjMvBP.js → ishikawaDiagram-5VMMS53U-Bsjx7BsE.js} +1 -1
  124. package/dist/assets/{journeyDiagram-NVQOT4AX-DhXy7wxt.js → journeyDiagram-EYS64GPL-1scn5Z5c.js} +2 -2
  125. package/dist/assets/{kanban-definition-27J2QSJJ-CFDavpZY.js → kanban-definition-UXKFOSKX-DjLQAv5U.js} +2 -2
  126. package/dist/assets/mermaid-GHXKKRXX-NzEcDxBh.js +1 -0
  127. package/dist/assets/{mermaid-parser.core-Dd2B8Ckv.js → mermaid-parser.core-DUt1FNlO.js} +1 -1
  128. package/dist/assets/mermaid.core-pW40dd4u.js +10 -0
  129. package/dist/assets/metadata-admin-pawEBYI9.js +9 -0
  130. package/dist/assets/{mindmap-definition-FAOFIHXS-ITGoV4nW.js → mindmap-definition-THT77NOG-CUcYMB9H.js} +1 -1
  131. package/dist/assets/nav-selection-Dzm_mA3C.js +1 -0
  132. package/dist/assets/packet-AYTQ26CC-CPP93DZD.js +1 -0
  133. package/dist/assets/{pegDiagram-VL7TDLO6-BoRu9yvl.js → pegDiagram-XKGWAZYB-CT1r3sRa.js} +1 -1
  134. package/dist/assets/pie-WAS4IAKB-B-zzBvuc.js +1 -0
  135. package/dist/assets/{pieDiagram-7S7Q4E2Y-DVsM9krU.js → pieDiagram-E7YTZNPT-CSi-V1LQ.js} +3 -3
  136. package/dist/assets/plugin-calendar-BwiiCIjv.js +1 -0
  137. package/dist/assets/plugin-charts-CDGkx7z5.js +7 -0
  138. package/dist/assets/plugin-chatbot-BGnkLzFS.js +122 -0
  139. package/dist/assets/plugin-dashboard-Bj4ldCX6.js +6 -0
  140. package/dist/assets/plugin-form-_fjHxKTV.js +1 -0
  141. package/dist/assets/plugin-gantt-zR8DkpEg.js +63 -0
  142. package/dist/assets/plugin-grid-kkbz4uec.js +9 -0
  143. package/dist/assets/plugin-kanban-DA0eW6yj.js +1 -0
  144. package/dist/assets/plugin-map-DukneTNg.js +1 -0
  145. package/dist/assets/{plugin-markdown-7fyNN0UM.js → plugin-markdown-B7zwZHmn.js} +1 -1
  146. package/dist/assets/plugin-report-DaPtlsJr.js +59 -0
  147. package/dist/assets/plugin-timeline-B6rsNNAK.js +1 -0
  148. package/dist/assets/plugin-tree-DauauLFc.js +1 -0
  149. package/dist/assets/plugin-view-5qxxRyZZ.js +1 -0
  150. package/dist/assets/plugins-views-iYcMmImr.js +4 -0
  151. package/dist/assets/{quadrantDiagram-CIZ2JOQS-C4VzXHnp.js → quadrantDiagram-AXDQQJYC-DUJ_94hm.js} +1 -1
  152. package/dist/assets/radar-RG4KPBEZ-DWmbpYEk.js +1 -0
  153. package/dist/assets/railroad-74A4TZTK-xJ7dMu2F.js +1 -0
  154. package/dist/assets/railroad-abnf-HS5TGJTU-Cw4KG_nE.js +1 -0
  155. package/dist/assets/railroad-ebnf-LZEXJU2U-C0cgrfTl.js +1 -0
  156. package/dist/assets/railroad-peg-WCYAUIDC-DOEGG9oQ.js +1 -0
  157. package/dist/assets/{railroadDiagram-AXF67PYL-DqZ3yKWv.js → railroadDiagram-O6MQD6OU-CEyfAhzM.js} +1 -1
  158. package/dist/assets/{requirementDiagram-LRYGKXZP-BeH0P3vD.js → requirementDiagram-IS5BZ75X-CAK7hvBg.js} +2 -2
  159. package/dist/assets/{runtime-metadata-persistence-DpS5GXuQ.js → runtime-metadata-persistence-DYPxFzHI.js} +1 -1
  160. package/dist/assets/{sankeyDiagram-W5VNT64P-Bu_tPh-A.js → sankeyDiagram-P5KCCOFB-DgYJh7uz.js} +2 -2
  161. package/dist/assets/{sequenceDiagram-SI44F4Z6-BWEuLn1a.js → sequenceDiagram-WJ2MYXX4-DsQerPtC.js} +1 -1
  162. package/dist/assets/{src-CY2xhbXR.js → src-CVJP2nIc.js} +1 -1
  163. package/dist/assets/src-JX1BkhmR.js +17 -0
  164. package/dist/assets/{src-ClOOPIkS.js → src-S6pzKItc.js} +1 -1
  165. package/dist/assets/src-_DxAIBqo.js +1 -0
  166. package/dist/assets/{stateDiagram-OKZ733FA-Cp7aDYsZ.js → stateDiagram-XQSTLZYL-BJndPKik.js} +1 -1
  167. package/dist/assets/stateDiagram-v2-IH3M54BS-Bi94bTLl.js +1 -0
  168. package/dist/assets/studioEntry-C6G8U-LG.js +1 -0
  169. package/dist/assets/submitRedirect-UXd9NsjL.js +1 -0
  170. package/dist/assets/swimlanes-V6O3JKXN-BiKyiEJr.js +1 -0
  171. package/dist/assets/swimlanesDiagram-JKAHXJPX-DKIR852g.js +8 -0
  172. package/dist/assets/{timeline-definition-Z64GVDOM-BcUiJfLU.js → timeline-definition-24CTP7MA-CW5rY3PX.js} +2 -2
  173. package/dist/assets/treeView-Q6P3EWNA-BcWCBGcU.js +1 -0
  174. package/dist/assets/treemap-WGGIJYW6-DMTEJzXV.js +1 -0
  175. package/dist/assets/ui-components-D2lrjG-t.js +43 -0
  176. package/dist/assets/ui-layout-UUTFXV6S.js +1 -0
  177. package/dist/assets/use-book-data-qUZAxIs0.js +1 -0
  178. package/dist/assets/useActionModal-CkM-zGdy.js +1 -0
  179. package/dist/assets/usePackageL10n-F9isJ9pn.js +1 -0
  180. package/dist/assets/useSettingsLabel-CSZBfUiw.js +1 -0
  181. package/dist/assets/utils-MjUhYVsx.js +1 -0
  182. package/dist/assets/{vendor-charts-BEGSmcjR.js → vendor-charts-CY9WhhzX.js} +1 -1
  183. package/dist/assets/vendor-i18n-C1AQDWux.js +1 -0
  184. package/dist/assets/{vendor-markdown-C_Ip9E_I.js → vendor-markdown-BW_XFZ_b.js} +25 -25
  185. package/dist/assets/vendor-objectstack-BeKUVjuj.js +270 -0
  186. package/dist/assets/{vennDiagram-T6HMQDX7-BKJsL5fS.js → vennDiagram-4TSXK5OY-C79cMc25.js} +1 -1
  187. package/dist/assets/wardley-WFR3VGLG-BRyRizpT.js +1 -0
  188. package/dist/assets/{wardleyDiagram-T6FBY63Y-CZ0aMbYX.js → wardleyDiagram-VM6X3IG4-BAO0_jUk.js} +1 -1
  189. package/dist/assets/{xychartDiagram-ELKLHX3M-BpK2RmQ_.js → xychartDiagram-S5SC5T6Z-BIRd7YRo.js} +3 -3
  190. package/dist/eager-closure.json +318 -0
  191. package/dist/index.html +271 -15
  192. package/package.json +2 -2
  193. package/dist/assets/AdapterProvider-3zTVoQKF.js +0 -3
  194. package/dist/assets/AiPendingActionsPage-DD5DLXIK.js +0 -1
  195. package/dist/assets/ApiConsolePage-CSQNdOPN.js +0 -1
  196. package/dist/assets/AppManagementPage-vRCBT69X.js +0 -1
  197. package/dist/assets/ApprovalsInboxPage-Bft5QF0I.js +0 -1
  198. package/dist/assets/CreateViewDialog-CW0w7Nxc.js +0 -1
  199. package/dist/assets/DashboardView-CTBV4_tx.js +0 -1
  200. package/dist/assets/ExpressionProvider-X1OAB_O-.js +0 -1
  201. package/dist/assets/FlowRunsPage-CUhBLwm-.js +0 -1
  202. package/dist/assets/InterfaceListPage-FCdy-_Q-.js +0 -1
  203. package/dist/assets/ManagedByBadge-Bap9_dqR.js +0 -1
  204. package/dist/assets/MarketplaceAccessDenied-CrK7hygV.js +0 -1
  205. package/dist/assets/MarketplaceInstalledPage-Cv-qDRNA.js +0 -1
  206. package/dist/assets/MarketplacePackagePage-CMS--SE2.js +0 -4
  207. package/dist/assets/MarketplacePage-njErv-tN.js +0 -1
  208. package/dist/assets/MetadataInspector-CNeJqkLQ.js +0 -1
  209. package/dist/assets/MetadataProvider-DwMR1SMR.js +0 -1
  210. package/dist/assets/ObjectDataPage-BVV4yksz.js +0 -1
  211. package/dist/assets/PageView-XUBdr6tb.js +0 -1
  212. package/dist/assets/ProfilePage-ClU0WVRr.js +0 -1
  213. package/dist/assets/PublicFormsPage-a_MNzdQw.js +0 -1
  214. package/dist/assets/RecordDetailView-uf81gH3J.js +0 -11
  215. package/dist/assets/RecordFormPage-CLZcT8Z0.js +0 -1
  216. package/dist/assets/ReportDefaultInspector-DU2azDYd.js +0 -3
  217. package/dist/assets/ReportView-oFhBKNBE.js +0 -2
  218. package/dist/assets/SearchResultsPage-lgNcs7l7.js +0 -1
  219. package/dist/assets/SettingsHub-TQOc7wH3.js +0 -1
  220. package/dist/assets/SettingsView-DAje5pDB.js +0 -1
  221. package/dist/assets/SystemHubPage-DUE-2-vc.js +0 -1
  222. package/dist/assets/architecture-TIHT7OUA-B8Ln-u1a.js +0 -1
  223. package/dist/assets/blockDiagram-VBNYF7ZC-l_P_W7_Y.js +0 -132
  224. package/dist/assets/c4Diagram-5PPSVZJV-CE82HAlO.js +0 -10
  225. package/dist/assets/channel-DowAYf9b.js +0 -1
  226. package/dist/assets/chunk-3NCLNEKW-Z5ckM4mG.js +0 -1
  227. package/dist/assets/chunk-7BUUIJ7U-Bb538aSH.js +0 -1
  228. package/dist/assets/chunk-7Z6QIM7H-m6s_oalL.js +0 -10
  229. package/dist/assets/chunk-I66GZJ75-BsY3mBMx.js +0 -127
  230. package/dist/assets/chunk-J7OUQ5F2-Cl4FNR_k.js +0 -1
  231. package/dist/assets/chunk-JQJVKLGR-BApWxqMA.js +0 -156
  232. package/dist/assets/chunk-NSK5VX7P-BBTxIP6Z.js +0 -2
  233. package/dist/assets/chunk-QR6OTTB3-DJcD7xr-.js +0 -62
  234. package/dist/assets/chunk-RYQCIY6F-CnMsR_qh.js +0 -1
  235. package/dist/assets/chunk-UBXNYLIW-B7z1tp3V.js +0 -1
  236. package/dist/assets/chunk-W5SLKNZC-BnMc5i0B.js +0 -1
  237. package/dist/assets/chunk-WRU74C26-MrzCPX2E.js +0 -70
  238. package/dist/assets/chunk-XXDRQBXY-NKBlW2Dm.js +0 -1
  239. package/dist/assets/chunk-ZIRB5QZD-O39ZBUk3.js +0 -32
  240. package/dist/assets/classDiagram-JCYQIIEL-C4ADaKBz.js +0 -1
  241. package/dist/assets/classDiagram-v2-OCEON4UE-C4ADaKBz.js +0 -1
  242. package/dist/assets/createDerive-xZXxMz1g.js +0 -1
  243. package/dist/assets/cynefin-VYW2F7L2-exAq6djZ.js +0 -1
  244. package/dist/assets/cytoscape.esm-B-NFISlW.js +0 -321
  245. package/dist/assets/dagre-Buvkdvvj.js +0 -1
  246. package/dist/assets/dagre-VZM6K2ZE-B5E8-xuM.js +0 -4
  247. package/dist/assets/dist-jor1XT9f.js +0 -5
  248. package/dist/assets/erDiagram-JOGREHBK-BU4b8mUv.js +0 -85
  249. package/dist/assets/eventmodeling-45OFAUF4-DVTVIsGT.js +0 -1
  250. package/dist/assets/flowDiagram-UKHOOZJN-BDHHPApJ.js +0 -1
  251. package/dist/assets/framework-LCCQTTcs.js +0 -47
  252. package/dist/assets/getIcon-Bnm_i39L.js +0 -1
  253. package/dist/assets/gitGraph-TEB2WS4Q-DizXBl0d.js +0 -1
  254. package/dist/assets/i18n-DGSduXFT.js +0 -9
  255. package/dist/assets/index-ZtYnn1PE.css +0 -2
  256. package/dist/assets/index-mpVXni3j.js +0 -2
  257. package/dist/assets/info-DKCQHKI2-CfAGND28.js +0 -1
  258. package/dist/assets/infrastructure-CerjT_c2.js +0 -3
  259. package/dist/assets/map-BaFkSB1l.js +0 -1
  260. package/dist/assets/mermaid-GHXKKRXX-DQTMu5TJ.js +0 -1
  261. package/dist/assets/mermaid.core-BwiBFu_S.js +0 -10
  262. package/dist/assets/metadata-admin-C_DEFfDE.js +0 -25
  263. package/dist/assets/packet-7NZHBO7P-DeymwuCa.js +0 -1
  264. package/dist/assets/pie-RZYD4A2V-C2S5u8nr.js +0 -1
  265. package/dist/assets/plugin-calendar-ClpbcK3u.js +0 -1
  266. package/dist/assets/plugin-charts-Cq0LpABN.js +0 -7
  267. package/dist/assets/plugin-chatbot-Cq7rZtnW.js +0 -120
  268. package/dist/assets/plugin-dashboard-C8Ohdrxi.js +0 -6
  269. package/dist/assets/plugin-form-B7CBtYvZ.js +0 -1
  270. package/dist/assets/plugin-gantt-ChkG9_UG.js +0 -64
  271. package/dist/assets/plugin-grid-D49BBhCX.js +0 -8
  272. package/dist/assets/plugin-kanban-BsTsRjoP.js +0 -1
  273. package/dist/assets/plugin-map-CQAe4Yh6.js +0 -1
  274. package/dist/assets/plugin-report-01bEGHuR.js +0 -59
  275. package/dist/assets/plugin-timeline-Dw4Lj2Rz.js +0 -1
  276. package/dist/assets/plugin-tree-DW0XC55y.js +0 -1
  277. package/dist/assets/plugin-view-B9yCVdSX.js +0 -1
  278. package/dist/assets/plugins-views-BaBStVok.js +0 -4
  279. package/dist/assets/radar-I7S5WNFK-DzcfTC8k.js +0 -1
  280. package/dist/assets/railroad-3IZDKUUU-DT2-gzup.js +0 -1
  281. package/dist/assets/railroad-abnf-AHOZXSZD-BvCkhVdg.js +0 -1
  282. package/dist/assets/railroad-ebnf-EBAXGLYW-rvjxEE4k.js +0 -1
  283. package/dist/assets/railroad-peg-LSFZ7HO6-BIzZt1tD.js +0 -1
  284. package/dist/assets/skeletons-DVwGbFUS.js +0 -1
  285. package/dist/assets/src-BA9h8a8o.js +0 -1
  286. package/dist/assets/src-Ctj_ivDh.js +0 -19
  287. package/dist/assets/stateDiagram-v2-UEYNNEHI-DaTg8C5m.js +0 -1
  288. package/dist/assets/swimlanes-SLNWSIFB-wrx1JN6o.js +0 -1
  289. package/dist/assets/swimlanesDiagram-ULZ7WXOC-Bqz9GVuM.js +0 -8
  290. package/dist/assets/treeView-QDETBFTQ-DKZwqlNb.js +0 -1
  291. package/dist/assets/treemap-6X3UGDF4-Bqsldamv.js +0 -1
  292. package/dist/assets/ui-components-3mb69z8L.js +0 -42
  293. package/dist/assets/ui-layout-DpuFph25.js +0 -1
  294. package/dist/assets/use-book-data-BZg_051K.js +0 -1
  295. package/dist/assets/useActionModal-Z2yDiihK.js +0 -1
  296. package/dist/assets/usePackageL10n-Cy-u65Zo.js +0 -1
  297. package/dist/assets/useSettingsLabel-CvZKl8CQ.js +0 -1
  298. package/dist/assets/vendor-i18n-Cpia2wlg.js +0 -1
  299. package/dist/assets/vendor-objectstack-DGpW4oR-.js +0 -158
  300. package/dist/assets/wardley-OPB4EBWU-C_U_bbc2.js +0 -1
  301. /package/dist/assets/{sizeCapture-X5ZJPWSS-B0uUizjq.js → sizeCapture-INFHLROL-B0uUizjq.js} +0 -0
@@ -0,0 +1,4 @@
1
+ import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{t}from"./src-CVJP2nIc.js";import{x as n}from"./chunk-DU6HZSFF-BkY4hAzc.js";import"./chunk-PWAF6VOD-2mst9kZu.js";import"./chunk-75Z2AOVW-CkSdnmiC.js";import"./chunk-GMAD6QVW-DZo_NykZ.js";import"./chunk-P2QGCYS3-nx2-dM5t.js";import{s as r}from"./chunk-4HAMMTFA-BPKwX4iB.js";import{a as i,i as a,n as o}from"./chunk-GVQU2GXP-9ELY9S6X.js";import{a as s,c,i as l}from"./chunk-OSK3NFVY-DcRwXCQD.js";import{t as u}from"./graphlib-DS17s2tU.js";import{t as d}from"./dagre-PrKaheQc.js";import{n as f}from"./chunk-L3NEJ4N5-Bzz35TZJ.js";import{a as p,c as m,i as h,r as g,s as _,t as v,u as y}from"./chunk-H2I77ZZE-vCr_buP7.js";var b=e((e,t,n)=>Math.max(t,Math.min(n,e)),`clamp`),x=e((e=`TB`)=>{switch(e){case`BT`:return`bottom`;case`LR`:return`right`;case`RL`:return`left`;default:return`top`}},`getDefaultSelfLoopSide`),S=e(e=>e===`flowchart`||e===`flowchart-v2`||e===`stateDiagram`||e===`er`||e===`classDiagram`,`shouldMergeSelfLoopSegments`),C=[`x`,`y`,`width`,`height`,`labelBBox`,`intersect`,`calcIntersect`,`diff`,`clusterNode`],w=e((e,t,n,r,i)=>{let a=[],o=new Set;if(n.forEach(({start:e,end:t})=>{e!==r&&o.add(e),t!==r&&o.add(t)}),o.forEach(t=>{let n=e.node(t);typeof n?.x==`number`&&typeof n?.y==`number`&&a.push(n)}),a.length===0&&n.forEach(({edge:e})=>{(e.points??[]).forEach(e=>{typeof e?.x==`number`&&typeof e?.y==`number`&&a.push(e)})}),a.length===0)return x(i);let s=a.reduce((e,t)=>({x:e.x+t.x/a.length,y:e.y+t.y/a.length}),{x:0,y:0}),c=s.x-t.x,l=s.y-t.y;return Math.abs(c)>Math.abs(l)?c>0?`right`:`left`:Math.abs(l)>0?l>0?`bottom`:`top`:x(i)},`getSelfLoopSide`),T=e((e,t=`top`,n=0,r=0)=>{let i=e.x,a=e.y-n,o=e.width/2,s=e.height/2,c=Math.max(36,Math.min(100,e.width*.8)),l=b(Math.max(r,e.width*.35),36,c),u=b(Math.min(e.width,e.height)*.45,24,48);switch(t){case`bottom`:{let e=a+s;return[{x:i-l/2,y:e},{x:i-l/2,y:e+u},{x:i+l/2,y:e+u},{x:i+l/2,y:e}]}case`right`:{let e=i+o;return[{x:e,y:a-l/2},{x:e+u,y:a-l/2},{x:e+u,y:a+l/2},{x:e,y:a+l/2}]}case`left`:{let e=i-o;return[{x:e,y:a-l/2},{x:e-u,y:a-l/2},{x:e-u,y:a+l/2},{x:e,y:a+l/2}]}default:{let e=a-s;return[{x:i-l/2,y:e},{x:i-l/2,y:e-u},{x:i+l/2,y:e-u},{x:i+l/2,y:e}]}}},`getSelfLoopPoints`),E=e((e,t,n=`top`,r=0,i={})=>{let a=e.x,o=e.y-r,s=i.width??0,c=i.height??0;switch(n){case`bottom`:return{x:a,y:Math.max(...t.map(e=>e.y))+c/2+4};case`right`:return{x:Math.max(...t.map(e=>e.x))+s/2+4,y:o};case`left`:return{x:Math.min(...t.map(e=>e.x))-s/2-4,y:o};default:return{x:a,y:Math.min(...t.map(e=>e.y))-c/2-4}}},`getSelfLoopLabelPosition`),D=e((e,t=0,{mergeSelfLoops:n=!0}={})=>{let r=new Map,i=[],a=e.graph()?.rankdir;return e.edges().forEach(t=>{let a=e.edge(t);if(n&&a.selfLoop){let e=a.selfLoop.id;r.has(e)||r.set(e,[]),r.get(e).push({edge:a,start:t.v,end:t.w})}else i.push({edge:a,start:t.v,end:t.w})}),r.forEach(n=>{if(n.length!==3){n.forEach(e=>i.push(e));return}n.sort((e,t)=>e.edge.selfLoop.order-t.edge.selfLoop.order);let[r,o,s]=n,c=r.edge.originalEdge??o.edge.originalEdge??s.edge.originalEdge??o.edge,l=e.node(c.start);if(!l){n.forEach(e=>i.push(e));return}let u={width:o.edge.width,height:o.edge.height},d=w(e,l,n,c.start,a),f=T(l,d,t,u.width??0),p=E(l,f,d,t,u),m={...o.edge,...c,id:c.id,points:f,start:c.start,end:c.end,x:p.x,y:p.y,width:u.width,height:u.height,labelStyle:o.edge.labelStyle,fromCluster:r.edge.fromCluster??o.edge.fromCluster??s.edge.fromCluster,toCluster:r.edge.toCluster??o.edge.toCluster??s.edge.toCluster};delete m.selfLoop,delete m.originalEdge,i.push({edge:m,start:m.start,end:m.end})}),i},`getEdgesToRender`),O=e(async({element:n,graph:a,diagramType:c,id:l,parentCluster:u,siteConfig:d})=>{let f=a.graph().rankdir;t.trace(`Dir in recursive render - dir:`,f);let{clusters:h,edgePaths:v,edgeLabels:y,nodes:b,rootGroups:x}=p(n,{edgePathsClass:`edgePaths`});a.nodes()?t.info(`Recursive render XXX`,a.nodes()):t.info(`No nodes found for`,a),a.edges().length>0&&t.info(`Recursive edges`,a.edge(a.edges()[0]));let C=S(c);await Promise.all(a.nodes().map(async function(e){let n=a.node(e);if(u!==void 0){let n=JSON.parse(JSON.stringify(u.clusterData));t.trace(`Setting data for parent cluster XXX
2
+ Node.id = `,e,`
3
+ data=`,n.height,`
4
+ Parent cluster`,u.height),a.setNode(u.id,n),a.parent(e)||(t.trace(`Setting parent`,e,u.id),a.setParent(e,u.id,n))}if(t.info(`(Insert) Node XXX`+e+`: `+JSON.stringify(a.node(e))),n?.clusterNode){t.info(`Cluster identified XBX`,e,n.width,a.node(e));let{ranksep:o,nodesep:s}=a.graph();n.graph.setGraph({...n.graph.graph(),ranksep:o+25,nodesep:s});let u=await F({element:b,graph:n.graph,diagramType:c,id:l,parentCluster:a.node(e),siteConfig:d}),f=u.elem;r(n,f),n.diff=u.diff||0,t.info(`New compound node after recursive render XAX`,e,`width`,n.width,`height`,n.height),i(f,n)}else a.children(e).length>0?(t.trace(`Cluster - the non recursive path XBX`,e,n.id,n,n.width,`Graph:`,a),t.trace(_(n.id,a)),g.set(n.id,{id:_(n.id,a),node:n})):(t.trace(`Node - the non recursive path XAX`,e,b,a.node(e),f),await m(b,a.node(e),{config:d,dir:f}))})),await e(async()=>{let e=a.edges().map(async function(e){let n=a.edge(e.v,e.w,e.name);if(t.info(`Edge `+e.v+` -> `+e.w+`: `+JSON.stringify(e)),t.info(`Edge `+e.v+` -> `+e.w+`: `,e,` `,JSON.stringify(a.edge(e))),t.info(`Fix`,g,`ids:`,e.v,e.w,`Translating: `,g.get(e.v),g.get(e.w)),C&&n.selfLoop){if(n.selfLoop.order!==1)return;let e={...n.originalEdge,...n,id:n.selfLoop.id,startLabelLeft:n.originalEdge?.startLabelLeft??n.startLabelLeft,startLabelRight:n.originalEdge?.startLabelRight??n.startLabelRight,endLabelLeft:n.originalEdge?.endLabelLeft??n.endLabelLeft,endLabelRight:n.originalEdge?.endLabelRight??n.endLabelRight};await s(y,e),n.width=e.width,n.height=e.height,n.labelStyle=e.labelStyle;return}await s(y,n)});await Promise.all(e)},`processEdges`)();let{subGraphTitleTotalMargin:w}=o(d);return{elem:x,graph:a,groups:{clusters:h,edgePaths:v,edgeLabels:y,nodes:b,rootGroups:x},diagramType:c,id:l,mergeSelfLoops:C,subGraphTitleTotalMargin:w}},`measureDagreGraph`),k=e(e=>{t.info(`############################################# XXX`),t.info(`### Layout ### XXX`),t.info(`############################################# XXX`),d(e)},`runDagreGraphLayout`),A=e((e,t,n)=>{let r=e.node(t);if(!r)return;let i={...r};return r?.clusterNode?i.y=(r.y??0)+n:e.children(t).length>0?i.height=(r.height??0)+n:i.y=(r.y??0)+n/2,i},`normalizeDagreNode`),j=e((e,t)=>{C.forEach(n=>{t[n]!==void 0&&(e[n]=t[n])})},`applyDagreNodeLayout`),M=e((e,t,n,r)=>({...e,start:e.start??t,end:e.end??n,points:(e.points??[]).map(e=>({...e,y:typeof e.y==`number`?e.y+r:e.y}))}),`normalizeDagreEdge`),N=e((e,t)=>{let{graph:n,mergeSelfLoops:r,subGraphTitleTotalMargin:i=0}=t,a=new Map(e.nodes.map(e=>[e.id,e]));y(n).forEach(e=>{let t=A(n,e,i);if(!t)return;j(n.node(e),t);let r=a.get(e);r&&j(r,t)});let o=i/2;return e.edges=D(n,o,{mergeSelfLoops:r}).map(({edge:e,start:t,end:n})=>M(e,t,n,o)),e},`applyDagreLayoutResult`),P=e(async({elem:e,graph:n,groups:{clusters:r,edgePaths:i},diagramType:o,id:s,mergeSelfLoops:u,subGraphTitleTotalMargin:d})=>{let p=0;await Promise.all(y(n).map(async function(e){let i=n.node(e);if(t.info(`Position XBX => `+e+`: (`+i.x,`,`+i.y,`) width: `,i.width,` height: `,i.height),i?.clusterNode)i.y+=d,t.info(`A tainted cluster node XBX1`,e,i.id,i.width,i.height,i.x,i.y,n.parent(e)),g.get(i.id).node=i,a(i);else if(n.children(e).length>0){t.info(`A pure cluster node XBX1`,e,i.id,i.x,i.y,i.width,i.height,n.parent(e)),i.height+=d,n.node(i.parentId);let a=i?.padding/2||0,o=i?.labelBBox?.height||0,s=o-a||0;t.debug(`OffsetY`,s,`labelHeight`,o,`halfPadding`,a),await f(r,i),g.get(i.id).node=i}else{let e=n.node(i.parentId);i.y+=d/2,t.info(`A regular node XBX1 - using the padding`,i.id,`parent`,i.parentId,i.width,i.height,i.x,i.y,`offsetY`,i.offsetY,`parent`,e,e?.offsetY,i),a(i)}}));let m=d/2;return D(n,m,{mergeSelfLoops:u}).forEach(function({edge:e,start:r,end:a}){t.info(`Edge `+r+` -> `+a+`: `+JSON.stringify(e),e),e.points.forEach(e=>e.y+=m);let u=n.node(r),d=n.node(a),f=l(i,e,g,o,u,d,s);c(e,f)}),n.nodes().forEach(function(e){let r=n.node(e);t.info(e,r.type,r.diff),r.isGroup&&(p=r.diff)}),t.warn(`Returning from recursive render XAX`,e,p),{elem:e,diff:p}},`paintDagreLayoutCore`),F=e(async e=>{let t=await O(e);return k(t.graph),await P(t)},`renderDagreSubgraph`),I=e(e=>{let n=new u({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:e.config?.nodeSpacing||e.nodeSpacing||e.config?.flowchart?.nodeSpacing,ranksep:e.config?.rankSpacing||e.rankSpacing||e.config?.flowchart?.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});return e.nodes.forEach(e=>{n.setNode(e.id,{...e}),e.parentId&&n.setParent(e.id,e.parentId)}),t.debug(`Edges:`,e.edges),e.edges.forEach(e=>{if(e.start===e.end){let t=e.start,r=t+`---`+t+`---1`,i=t+`---`+t+`---2`,a=n.node(t);n.setNode(r,{domId:r,id:r,parentId:a.parentId,labelStyle:``,label:``,padding:0,shape:`labelRect`,style:``,width:10,height:10}),n.setParent(r,a.parentId),n.setNode(i,{domId:i,id:i,parentId:a.parentId,labelStyle:``,padding:0,shape:`labelRect`,label:``,style:``,width:10,height:10}),n.setParent(i,a.parentId);let o=structuredClone(e),s=structuredClone(e),c=structuredClone(e),l=structuredClone(e);s.originalEdge=o,s.selfLoop={id:o.id,order:0},c.originalEdge=o,c.selfLoop={id:o.id,order:1},l.originalEdge=o,l.selfLoop={id:o.id,order:2},s.label=``,s.arrowTypeEnd=`none`,s.endLabelLeft=``,s.endLabelRight=``,s.startLabelLeft=``,s.id=t+`-cyclic-special-1`,c.startLabelRight=``,c.startLabelLeft=``,c.endLabelLeft=``,c.endLabelRight=``,c.arrowTypeStart=`none`,c.arrowTypeEnd=`none`,c.id=t+`-cyclic-special-mid`,l.label=``,l.startLabelRight=``,l.startLabelLeft=``,l.arrowTypeStart=`none`,a.isGroup&&(s.fromCluster=t,l.toCluster=t),l.id=t+`-cyclic-special-2`,l.arrowTypeStart=`none`,n.setEdge(t,r,s,t+`-cyclic-special-0`),n.setEdge(r,i,c,t+`-cyclic-special-1`),n.setEdge(i,t,l,t+`-cyclic-special-2`)}else n.setEdge(e.start,e.end,{...e},e.id)}),v(n),{graph:n}},`prepareLayoutForDagre`),L=e(async(e,{element:t,preparedLayout:r})=>{let i=r??I(e),a=n(),o=await O({element:t,graph:i.graph,diagramType:e.type,id:e.diagramId,parentCluster:void 0,siteConfig:a});return i.measuredLayout=o,o},`measureDagreLayout`),R=e((e,t)=>{let n=t.preparedLayout?.measuredLayout;if(!n)throw Error(`runDagreLayoutCore requires measureDagreLayout to run first`);return k(n.graph),N(e,n),n},`runDagreLayoutCore`),z=h({prepareLayout:I,measureLayout:L,runLayoutCore:R,paintOptions:{clusterDb:g,getNodes:e((e,{measure:t})=>y(t.graph).map(e=>t.graph.node(e)).filter(Boolean),`getDagrePaintNodes`),getEdgeNode:e((e,t,{measure:n})=>e?n.graph.node(e):void 0,`getDagreEdgeNode`),skipNode:e((e,{measure:t})=>!t.graph.hasNode(e.id),`skipNode`),isCluster:e((e,{measure:t})=>t.graph.hasNode(e.id)&&(t.graph.children(e.id)??[]).length>0,`isCluster`)}});export{N as applyDagreLayoutResult,D as getEdgesToRender,L as measureDagreLayout,I as prepareLayoutForDagre,z as render,R as runDagreLayoutCore};
@@ -0,0 +1 @@
1
+ import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,Q as _,R as v,S as ee,T as te,U as ne,V as re,W as ie,X as ae,Y as oe,Z as y,_ as b,a as x,b as se,c as ce,d as le,et as S,f as C,g as ue,h as de,i as w,it as fe,j as pe,k as me,l as he,m as ge,n as T,nt as _e,o as E,p as ve,q as ye,r as D,rt as be,s as xe,t as O,tt as k,u as Se,v as Ce,w as we,x as Te,y as Ee,z as A}from"./graphlib-DS17s2tU.js";var De=/\s/;function Oe(e){for(var t=e.length;t--&&De.test(e.charAt(t)););return t}var ke=/^\s+/;function Ae(e){return e&&e.slice(0,Oe(e)+1).replace(ke,``)}var je=NaN,Me=/^[-+]0x[0-9a-f]+$/i,Ne=/^0b[01]+$/i,Pe=/^0o[0-7]+$/i,Fe=parseInt;function Ie(e){if(typeof e==`number`)return e;if(S(e))return je;if(y(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=y(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=Ae(e);var n=Ne.test(e);return n||Pe.test(e)?Fe(e.slice(2),n?2:8):Me.test(e)?je:+e}var Le=1/0,Re=17976931348623157e292;function j(e){return e?(e=Ie(e),e===Le||e===-Le?(e<0?-1:1)*Re:e===e?e:0):e===0?e:0}function ze(e){var t=j(e),n=t%1;return t===t?n?t-n:t:0}var Be=Object.create,Ve=function(){function e(){}return function(t){if(!y(t))return{};if(Be)return Be(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function He(e,t){var n=-1,r=e.length;for(t||=Array(r);++n<r;)t[n]=e[n];return t}function M(e,t,n){t==`__proto__`&&ye?ye(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}var Ue=Object.prototype.hasOwnProperty;function N(e,t,n){var r=e[t];(!(Ue.call(e,t)&&c(r,n))||n===void 0&&!(t in e))&&M(e,t,n)}function P(e,t,n,r){var i=!n;n||={};for(var a=-1,o=t.length;++a<o;){var s=t[a],c=r?r(n[s],e[s],s,n,e):void 0;c===void 0&&(c=e[s]),i?M(n,s,c):N(n,s,c)}return n}function F(e,t,n){if(!y(n))return!1;var r=typeof t;return(r==`number`?A(n)&&ne(t,n.length):r==`string`&&t in n)?c(n[t],e):!1}function We(e){return n(function(t,n){var r=-1,i=n.length,a=i>1?n[i-1]:void 0,o=i>2?n[2]:void 0;for(a=e.length>3&&typeof a==`function`?(i--,a):void 0,o&&F(n[0],n[1],o)&&(a=i<3?void 0:a,i=1),t=Object(t);++r<i;){var s=n[r];s&&e(t,s,r,a)}return t})}function Ge(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}var Ke=Object.prototype.hasOwnProperty;function qe(e){if(!y(e))return Ge(e);var t=v(e),n=[];for(var r in e)r==`constructor`&&(t||!Ke.call(e,r))||n.push(r);return n}function I(e){return A(e)?p(e,!0):qe(e)}function L(e){return e!=null&&e.length?r(e,1):[]}function Je(e){return d(re(e,void 0,L),e+``)}var Ye=pe(Object.getPrototypeOf,Object),Xe=`[object Object]`,Ze=Function.prototype,Qe=Object.prototype,$e=Ze.toString,et=Qe.hasOwnProperty,tt=$e.call(Object);function nt(e){if(!k(e)||_e(e)!=Xe)return!1;var t=Ye(e);if(t===null)return!0;var n=et.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n instanceof n&&$e.call(n)==tt}var rt=RegExp(`[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]`);function it(e){return rt.test(e)}function at(e,t){return e&&P(t,me(t),e)}function ot(e,t){return e&&P(t,I(t),e)}var st=typeof exports==`object`&&exports&&!exports.nodeType&&exports,ct=st&&typeof module==`object`&&module&&!module.nodeType&&module,lt=ct&&ct.exports===st?fe.Buffer:void 0,ut=lt?lt.allocUnsafe:void 0;function dt(e,t){if(t)return e.slice();var n=e.length,r=ut?ut(n):new e.constructor(n);return e.copy(r),r}function ft(e,t){return P(e,se(e),t)}var pt=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)we(t,se(e)),e=Ye(e);return t}:Te;function mt(e,t){return P(e,pt(e),t)}function ht(e){return Ee(e,I,pt)}var gt=Object.prototype.hasOwnProperty;function _t(e){var t=e.length,n=new e.constructor(t);return t&&typeof e[0]==`string`&&gt.call(e,`index`)&&(n.index=e.index,n.input=e.input),n}function vt(e){var t=new e.constructor(e.byteLength);return new ue(t).set(new ue(e)),t}function yt(e,t){var n=t?vt(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}var bt=/\w*$/;function xt(e){var t=new e.constructor(e.source,bt.exec(e));return t.lastIndex=e.lastIndex,t}var St=be?be.prototype:void 0,Ct=St?St.valueOf:void 0;function wt(e){return Ct?Object(Ct.call(e)):{}}function Tt(e,t){var n=t?vt(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}var Et=`[object Boolean]`,Dt=`[object Date]`,Ot=`[object Map]`,kt=`[object Number]`,At=`[object RegExp]`,jt=`[object Set]`,Mt=`[object String]`,Nt=`[object Symbol]`,Pt=`[object ArrayBuffer]`,Ft=`[object DataView]`,It=`[object Float32Array]`,Lt=`[object Float64Array]`,Rt=`[object Int8Array]`,zt=`[object Int16Array]`,Bt=`[object Int32Array]`,Vt=`[object Uint8Array]`,Ht=`[object Uint8ClampedArray]`,Ut=`[object Uint16Array]`,Wt=`[object Uint32Array]`;function Gt(e,t,n){var r=e.constructor;switch(t){case Pt:return vt(e);case Et:case Dt:return new r(+e);case Ft:return yt(e,n);case It:case Lt:case Rt:case zt:case Bt:case Vt:case Ht:case Ut:case Wt:return Tt(e,n);case Ot:return new r;case kt:case Mt:return new r(e);case At:return xt(e);case jt:return new r;case Nt:return wt(e)}}function Kt(e){return typeof e.constructor==`function`&&!v(e)?Ve(Ye(e)):{}}var qt=`[object Map]`;function Jt(e){return k(e)&&b(e)==qt}var Yt=g&&g.isMap,Xt=Yt?o(Yt):Jt,Zt=`[object Set]`;function Qt(e){return k(e)&&b(e)==Zt}var $t=g&&g.isSet,en=$t?o($t):Qt,tn=1,nn=2,rn=4,an=`[object Arguments]`,on=`[object Array]`,sn=`[object Boolean]`,cn=`[object Date]`,ln=`[object Error]`,un=`[object Function]`,dn=`[object GeneratorFunction]`,fn=`[object Map]`,pn=`[object Number]`,mn=`[object Object]`,hn=`[object RegExp]`,gn=`[object Set]`,_n=`[object String]`,vn=`[object Symbol]`,yn=`[object WeakMap]`,bn=`[object ArrayBuffer]`,xn=`[object DataView]`,Sn=`[object Float32Array]`,Cn=`[object Float64Array]`,wn=`[object Int8Array]`,Tn=`[object Int16Array]`,En=`[object Int32Array]`,Dn=`[object Uint8Array]`,On=`[object Uint8ClampedArray]`,kn=`[object Uint16Array]`,An=`[object Uint32Array]`,R={};R[an]=R[on]=R[bn]=R[xn]=R[sn]=R[cn]=R[Sn]=R[Cn]=R[wn]=R[Tn]=R[En]=R[fn]=R[pn]=R[mn]=R[hn]=R[gn]=R[_n]=R[vn]=R[Dn]=R[On]=R[kn]=R[An]=!0,R[ln]=R[un]=R[yn]=!1;function z(e,t,n,r,i,a){var o,c=t&tn,u=t&nn,d=t&rn;if(n&&(o=i?n(e,r,i,a):n(e)),o!==void 0)return o;if(!y(e))return e;var f=_(e);if(f){if(o=_t(e),!c)return He(e,o)}else{var p=b(e),m=p==un||p==dn;if(l(e))return dt(e,c);if(p==mn||p==an||m&&!i){if(o=u||m?{}:Kt(e),!c)return u?mt(e,ot(o,e)):ft(e,at(o,e))}else{if(!R[p])return i?e:{};o=Gt(e,p,c)}}a||=new ee;var h=a.get(e);if(h)return h;a.set(e,o),en(e)?e.forEach(function(r){o.add(z(r,t,n,r,e,a))}):Xt(e)&&e.forEach(function(r,i){o.set(i,z(r,t,n,i,e,a))});var g=f?void 0:(d?u?ht:Ce:u?I:me)(e);return s(g||e,function(r,i){g&&(i=r,r=e[i]),N(o,i,z(r,t,n,i,e,a))}),o}var jn=1,Mn=4;function Nn(e){return z(e,jn|Mn)}var Pn=function(){return fe.Date.now()},Fn=Object.prototype,In=Fn.hasOwnProperty,Ln=n(function(e,t){e=Object(e);var n=-1,r=t.length,i=r>2?t[2]:void 0;for(i&&F(t[0],t[1],i)&&(r=1);++n<r;)for(var a=t[n],o=I(a),s=-1,l=o.length;++s<l;){var u=o[s],d=e[u];(d===void 0||c(d,Fn[u])&&!In.call(e,u))&&(e[u]=a[u])}return e});function Rn(e,t,n){(n!==void 0&&!c(e[t],n)||n===void 0&&!(t in e))&&M(e,t,n)}function zn(e,t){if((t!==`constructor`||typeof e[t]!=`function`)&&t!=`__proto__`)return e[t]}function Bn(e){return P(e,I(e))}function Vn(e,t,n,r,i,a,o){var s=zn(e,n),c=zn(t,n),u=o.get(c);if(u){Rn(e,n,u);return}var d=a?a(s,c,n+``,e,t,o):void 0,p=d===void 0;if(p){var h=_(c),g=!h&&l(c),v=!h&&!g&&m(c);d=c,h||g||v?_(s)?d=s:ce(s)?d=He(s):g?(p=!1,d=dt(c,!0)):v?(p=!1,d=Tt(c,!0)):d=[]:nt(c)||f(c)?(d=s,f(s)?d=Bn(s):(!y(s)||oe(s))&&(d=Kt(c))):p=!1}p&&(o.set(c,d),i(d,c,r,a,o),o.delete(c)),Rn(e,n,d)}function Hn(e,t,n,r,i){e!==t&&le(t,function(a,o){if(i||=new ee,y(a))Vn(e,t,o,n,Hn,r,i);else{var s=r?r(zn(e,o),a,o+``,e,t,i):void 0;s===void 0&&(s=a),Rn(e,o,s)}},I)}function B(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}function Un(e){return function(t,n,r){var i=Object(t);if(!A(t)){var a=C(n,3);t=me(t),n=function(e){return a(i[e],e,i)}}var o=e(t,n,r);return o>-1?i[a?t[o]:o]:void 0}}var Wn=Math.max;function Gn(e,t,n){var r=e==null?0:e.length;if(!r)return-1;var i=n==null?0:ze(n);return i<0&&(i=Wn(r+i,0)),ie(e,C(t,3),i)}var Kn=Un(Gn);function qn(e,t){var n=-1,r=A(e)?Array(e.length):[];return he(e,function(e,i,a){r[++n]=t(e,i,a)}),r}function V(t,n){return(_(t)?e:qn)(t,C(n,3))}function Jn(e,t){return e==null?e:le(e,xe(t),I)}function Yn(e,t){return e&&Se(e,xe(t))}function Xn(e,t){return e>t}var Zn=Object.prototype.hasOwnProperty;function Qn(e,t){return e!=null&&Zn.call(e,t)}function $n(e,t){return e!=null&&de(e,t,Qn)}var er=`[object String]`;function tr(e){return typeof e==`string`||!_(e)&&k(e)&&_e(e)==er}function nr(e,t){return e<t}function H(e,t){var n={};return t=C(t,3),Se(e,function(e,r,i){M(n,r,t(e,r,i))}),n}function rr(e,t,n){for(var r=-1,i=e.length;++r<i;){var a=e[r],o=t(a);if(o!=null&&(s===void 0?o===o&&!S(o):n(o,s)))var s=o,c=a}return c}function U(e){return e&&e.length?rr(e,ae,Xn):void 0}var ir=We(function(e,t,n){Hn(e,t,n)});function W(e){return e&&e.length?rr(e,ae,nr):void 0}function ar(e,t){return e&&e.length?rr(e,C(t,2),nr):void 0}function or(e,t,n,r){if(!y(e))return e;t=i(t,e);for(var o=-1,s=t.length,c=s-1,l=e;l!=null&&++o<s;){var u=a(t[o]),d=n;if(u===`__proto__`||u===`constructor`||u===`prototype`)return e;if(o!=c){var f=l[u];d=r?r(f,u,l):void 0,d===void 0&&(d=y(f)?f:ne(t[o+1])?[]:{})}N(l,u,d),l=l[u]}return e}function sr(e,t,n){for(var r=-1,a=t.length,o={};++r<a;){var s=t[r],c=te(e,s);n(c,s)&&or(o,i(s,e),c)}return o}function cr(e,t){var n=e.length;for(e.sort(t);n--;)e[n]=e[n].value;return e}function lr(e,t){if(e!==t){var n=e!==void 0,r=e===null,i=e===e,a=S(e),o=t!==void 0,s=t===null,c=t===t,l=S(t);if(!s&&!l&&!a&&e>t||a&&o&&c&&!s&&!l||r&&o&&c||!n&&c||!i)return 1;if(!r&&!a&&!l&&e<t||l&&n&&i&&!r&&!a||s&&n&&i||!o&&i||!c)return-1}return 0}function ur(e,t,n){for(var r=-1,i=e.criteria,a=t.criteria,o=i.length,s=n.length;++r<o;){var c=lr(i[r],a[r]);if(c)return r>=s?c:c*(n[r]==`desc`?-1:1)}return e.index-t.index}function dr(t,n,r){n=n.length?e(n,function(e){return _(e)?function(t){return te(t,e.length===1?e[0]:e)}:e}):[ae];var i=-1;return n=e(n,o(C)),cr(qn(t,function(t,r,a){return{criteria:e(n,function(e){return e(t)}),index:++i,value:t}}),function(e,t){return ur(e,t,r)})}var fr=ve(`length`),pr=`\\ud800-\\udfff`,mr=`\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff`,hr=`\\ufe0e\\ufe0f`,gr=`[`+pr+`]`,_r=`[`+mr+`]`,vr=`\\ud83c[\\udffb-\\udfff]`,yr=`(?:`+_r+`|`+vr+`)`,br=`[^`+pr+`]`,xr=`(?:\\ud83c[\\udde6-\\uddff]){2}`,Sr=`[\\ud800-\\udbff][\\udc00-\\udfff]`,Cr=`\\u200d`,wr=yr+`?`,Tr=`[`+hr+`]?`,Er=`(?:`+Cr+`(?:`+[br,xr,Sr].join(`|`)+`)`+Tr+wr+`)*`,Dr=Tr+wr+Er,Or=`(?:`+[br+_r+`?`,_r,xr,Sr,gr].join(`|`)+`)`,kr=RegExp(vr+`(?=`+vr+`)|`+Or+Dr,`g`);function Ar(e){for(var t=kr.lastIndex=0;kr.test(e);)++t;return t}function jr(e){return it(e)?Ar(e):fr(e)}function Mr(e,t){return sr(e,t,function(t,n){return ge(e,n)})}var G=Je(function(e,t){return e==null?{}:Mr(e,t)}),Nr=Math.ceil,Pr=Math.max;function Fr(e,t,n,r){for(var i=-1,a=Pr(Nr((t-e)/(n||1)),0),o=Array(a);a--;)o[r?a:++i]=e,e+=n;return o}function Ir(e){return function(t,n,r){return r&&typeof r!=`number`&&F(t,n,r)&&(n=r=void 0),t=j(t),n===void 0?(n=t,t=0):n=j(n),r=r===void 0?t<n?1:-1:j(r),Fr(t,n,r,e)}}var K=Ir(),Lr=`[object Map]`,Rr=`[object Set]`;function zr(e){if(e==null)return 0;if(A(e))return tr(e)?jr(e):e.length;var n=b(e);return n==Lr||n==Rr?e.size:t(e).length}var q=n(function(e,t){if(e==null)return[];var n=t.length;return n>1&&F(e,t[0],t[1])?t=[]:n>2&&F(t[0],t[1],t[2])&&(t=[t[0]]),dr(e,r(t,1),[])}),Br=0;function Vr(e){var t=++Br;return h(e)+t}function Hr(e,t,n){for(var r=-1,i=e.length,a=t.length,o={};++r<i;){var s=r<a?t[r]:void 0;n(o,e[r],s)}return o}function Ur(e,t){return Hr(e||[],t||[],N)}var Wr=class{constructor(){var e={};e._next=e._prev=e,this._sentinel=e}dequeue(){var e=this._sentinel,t=e._prev;if(t!==e)return Gr(t),t}enqueue(e){var t=this._sentinel;e._prev&&e._next&&Gr(e),e._next=t._next,t._next._prev=e,t._next=e,e._prev=t}toString(){for(var e=[],t=this._sentinel,n=t._prev;n!==t;)e.push(JSON.stringify(n,Kr)),n=n._prev;return`[`+e.join(`, `)+`]`}};function Gr(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function Kr(e,t){if(e!==`_next`&&e!==`_prev`)return t}var qr=u(1);function Jr(e,t){if(e.nodeCount()<=1)return[];var n=Zr(e,t||qr);return L(V(Yr(n.graph,n.buckets,n.zeroIdx),function(t){return e.outEdges(t.v,t.w)}))}function Yr(e,t,n){for(var r=[],i=t[t.length-1],a=t[0],o;e.nodeCount();){for(;o=a.dequeue();)Xr(e,t,n,o);for(;o=i.dequeue();)Xr(e,t,n,o);if(e.nodeCount()){for(var s=t.length-2;s>0;--s)if(o=t[s].dequeue(),o){r=r.concat(Xr(e,t,n,o,!0));break}}}return r}function Xr(e,t,n,r,i){var a=i?[]:void 0;return E(e.inEdges(r.v),function(r){var o=e.edge(r),s=e.node(r.v);i&&a.push({v:r.v,w:r.w}),s.out-=o,Qr(t,n,s)}),E(e.outEdges(r.v),function(r){var i=e.edge(r),a=r.w,o=e.node(a);o.in-=i,Qr(t,n,o)}),e.removeNode(r.v),a}function Zr(e,t){var n=new O,r=0,i=0;E(e.nodes(),function(e){n.setNode(e,{v:e,in:0,out:0})}),E(e.edges(),function(e){var a=n.edge(e.v,e.w)||0,o=t(e),s=a+o;n.setEdge(e.v,e.w,s),i=Math.max(i,n.node(e.v).out+=o),r=Math.max(r,n.node(e.w).in+=o)});var a=K(i+r+3).map(function(){return new Wr}),o=r+1;return E(n.nodes(),function(e){Qr(a,o,n.node(e))}),{graph:n,buckets:a,zeroIdx:o}}function Qr(e,t,n){n.out?n.in?e[n.out-n.in+t].enqueue(n):e[e.length-1].enqueue(n):e[0].enqueue(n)}function $r(e){var t=e.graph().acyclicer===`greedy`?Jr(e,n(e)):ei(e);E(t,function(t){var n=e.edge(t);e.removeEdge(t),n.forwardName=t.name,n.reversed=!0,e.setEdge(t.w,t.v,n,Vr(`rev`))});function n(e){return function(t){return e.edge(t).weight}}}function ei(e){var t=[],n={},r={};function i(a){Object.prototype.hasOwnProperty.call(r,a)||(r[a]=!0,n[a]=!0,E(e.outEdges(a),function(e){Object.prototype.hasOwnProperty.call(n,e.w)?t.push(e):i(e.w)}),delete n[a])}return E(e.nodes(),i),t}function ti(e){E(e.edges(),function(t){var n=e.edge(t);if(n.reversed){e.removeEdge(t);var r=n.forwardName;delete n.reversed,delete n.forwardName,e.setEdge(t.w,t.v,n,r)}})}function J(e,t,n,r){var i;do i=Vr(r);while(e.hasNode(i));return n.dummy=t,e.setNode(i,n),i}function ni(e){var t=new O().setGraph(e.graph());return E(e.nodes(),function(n){t.setNode(n,e.node(n))}),E(e.edges(),function(n){var r=t.edge(n.v,n.w)||{weight:0,minlen:1},i=e.edge(n);t.setEdge(n.v,n.w,{weight:r.weight+i.weight,minlen:Math.max(r.minlen,i.minlen)})}),t}function ri(e){var t=new O({multigraph:e.isMultigraph()}).setGraph(e.graph());return E(e.nodes(),function(n){e.children(n).length||t.setNode(n,e.node(n))}),E(e.edges(),function(n){t.setEdge(n,e.edge(n))}),t}function ii(e,t){var n=e.x,r=e.y,i=t.x-n,a=t.y-r,o=e.width/2,s=e.height/2;if(!i&&!a)throw Error(`Not possible to find intersection inside of the rectangle`);var c,l;return Math.abs(a)*o>Math.abs(i)*s?(a<0&&(s=-s),c=s*i/a,l=s):(i<0&&(o=-o),c=o,l=o*a/i),{x:n+c,y:r+l}}function Y(e){var t=V(K(ci(e)+1),function(){return[]});return E(e.nodes(),function(n){var r=e.node(n),i=r.rank;D(i)||(t[i][r.order]=n)}),t}function ai(e){var t=W(V(e.nodes(),function(t){return e.node(t).rank}));E(e.nodes(),function(n){var r=e.node(n);$n(r,`rank`)&&(r.rank-=t)})}function oi(e){var t=W(V(e.nodes(),function(t){return e.node(t).rank})),n=[];E(e.nodes(),function(r){var i=e.node(r).rank-t;n[i]||(n[i]=[]),n[i].push(r)});var r=0,i=e.graph().nodeRankFactor;E(n,function(t,n){D(t)&&n%i!==0?--r:r&&E(t,function(t){e.node(t).rank+=r})})}function si(e,t,n,r){var i={width:0,height:0};return arguments.length>=4&&(i.rank=n,i.order=r),J(e,`border`,i,t)}function ci(e){return U(V(e.nodes(),function(t){var n=e.node(t).rank;if(!D(n))return n}))}function li(e,t){var n={lhs:[],rhs:[]};return E(e,function(e){t(e)?n.lhs.push(e):n.rhs.push(e)}),n}function ui(e,t){var n=Pn();try{return t()}finally{console.log(e+` time: `+(Pn()-n)+`ms`)}}function di(e,t){return t()}function fi(e){function t(n){var r=e.children(n),i=e.node(n);if(r.length&&E(r,t),Object.prototype.hasOwnProperty.call(i,`minRank`)){i.borderLeft=[],i.borderRight=[];for(var a=i.minRank,o=i.maxRank+1;a<o;++a)pi(e,`borderLeft`,`_bl`,n,i,a),pi(e,`borderRight`,`_br`,n,i,a)}}E(e.children(),t)}function pi(e,t,n,r,i,a){var o={width:0,height:0,rank:a,borderType:t},s=i[t][a-1],c=J(e,`border`,o,n);i[t][a]=c,e.setParent(c,r),s&&e.setEdge(s,c,{weight:1})}function mi(e){var t=e.graph().rankdir.toLowerCase();(t===`lr`||t===`rl`)&&gi(e)}function hi(e){var t=e.graph().rankdir.toLowerCase();(t===`bt`||t===`rl`)&&vi(e),(t===`lr`||t===`rl`)&&(bi(e),gi(e))}function gi(e){E(e.nodes(),function(t){_i(e.node(t))}),E(e.edges(),function(t){_i(e.edge(t))})}function _i(e){var t=e.width;e.width=e.height,e.height=t}function vi(e){E(e.nodes(),function(t){yi(e.node(t))}),E(e.edges(),function(t){var n=e.edge(t);E(n.points,yi),Object.prototype.hasOwnProperty.call(n,`y`)&&yi(n)})}function yi(e){e.y=-e.y}function bi(e){E(e.nodes(),function(t){xi(e.node(t))}),E(e.edges(),function(t){var n=e.edge(t);E(n.points,xi),Object.prototype.hasOwnProperty.call(n,`x`)&&xi(n)})}function xi(e){var t=e.x;e.x=e.y,e.y=t}function Si(e){e.graph().dummyChains=[],E(e.edges(),function(t){Ci(e,t)})}function Ci(e,t){var n=t.v,r=e.node(n).rank,i=t.w,a=e.node(i).rank,o=t.name,s=e.edge(t),c=s.labelRank;if(a!==r+1){e.removeEdge(t);var l=void 0,u,d;for(d=0,++r;r<a;++d,++r)s.points=[],l={width:0,height:0,edgeLabel:s,edgeObj:t,rank:r},u=J(e,`edge`,l,`_d`),r===c&&(l.width=s.width,l.height=s.height,l.dummy=`edge-label`,l.labelpos=s.labelpos),e.setEdge(n,u,{weight:s.weight},o),d===0&&e.graph().dummyChains.push(u),n=u;e.setEdge(n,i,{weight:s.weight},o)}}function wi(e){E(e.graph().dummyChains,function(t){var n=e.node(t),r=n.edgeLabel,i;for(e.setEdge(n.edgeObj,r);n.dummy;)i=e.successors(t)[0],e.removeNode(t),r.points.push({x:n.x,y:n.y}),n.dummy===`edge-label`&&(r.x=n.x,r.y=n.y,r.width=n.width,r.height=n.height),t=i,n=e.node(t)})}function X(e){var t={};function n(r){var i=e.node(r);if(Object.prototype.hasOwnProperty.call(t,r))return i.rank;t[r]=!0;var a=W(V(e.outEdges(r),function(t){return n(t.w)-e.edge(t).minlen}));return(a===1/0||a==null)&&(a=0),i.rank=a}E(e.sources(),n)}function Z(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}function Ti(e){var t=new O({directed:!1}),n=e.nodes()[0],r=e.nodeCount();t.setNode(n,{});for(var i,a;Ei(t,e)<r;)i=Di(t,e),a=t.hasNode(i.v)?Z(e,i):-Z(e,i),Oi(t,e,a);return t}function Ei(e,t){function n(r){E(t.nodeEdges(r),function(i){var a=i.v,o=r===a?i.w:a;!e.hasNode(o)&&!Z(t,i)&&(e.setNode(o,{}),e.setEdge(r,o,{}),n(o))})}return E(e.nodes(),n),e.nodeCount()}function Di(e,t){return ar(t.edges(),function(n){if(e.hasNode(n.v)!==e.hasNode(n.w))return Z(t,n)})}function Oi(e,t,n){E(e.nodes(),function(e){t.node(e).rank+=n})}u(1),u(1),ki.CycleException=Q;function ki(e){var t={},n={},r=[];function i(a){if(Object.prototype.hasOwnProperty.call(n,a))throw new Q;Object.prototype.hasOwnProperty.call(t,a)||(n[a]=!0,t[a]=!0,E(e.predecessors(a),i),delete n[a],r.push(a))}if(E(e.sinks(),i),zr(t)!==e.nodeCount())throw new Q;return r}function Q(){}Q.prototype=Error();function Ai(e,t,n){_(t)||(t=[t]);var r=(e.isDirected()?e.successors:e.neighbors).bind(e),i=[],a={};return E(t,function(t){if(!e.hasNode(t))throw Error(`Graph does not have node: `+t);ji(e,t,n===`post`,a,r,i)}),i}function ji(e,t,n,r,i,a){Object.prototype.hasOwnProperty.call(r,t)||(r[t]=!0,n||a.push(t),E(i(t),function(t){ji(e,t,n,r,i,a)}),n&&a.push(t))}function Mi(e,t){return Ai(e,t,`post`)}function Ni(e,t){return Ai(e,t,`pre`)}$.initLowLimValues=Li,$.initCutValues=Pi,$.calcCutValue=Ii,$.leaveEdge=zi,$.enterEdge=Bi,$.exchangeEdges=Vi;function $(e){e=ni(e),X(e);var t=Ti(e);Li(t),Pi(t,e);for(var n,r;n=zi(t);)r=Bi(t,e,n),Vi(t,e,n,r)}function Pi(e,t){var n=Mi(e,e.nodes());n=n.slice(0,n.length-1),E(n,function(n){Fi(e,t,n)})}function Fi(e,t,n){var r=e.node(n).parent;e.edge(n,r).cutvalue=Ii(e,t,n)}function Ii(e,t,n){var r=e.node(n).parent,i=!0,a=t.edge(n,r),o=0;return a||=(i=!1,t.edge(r,n)),o=a.weight,E(t.nodeEdges(n),function(a){var s=a.v===n,c=s?a.w:a.v;if(c!==r){var l=s===i,u=t.edge(a).weight;if(o+=l?u:-u,Ui(e,n,c)){var d=e.edge(n,c).cutvalue;o+=l?-d:d}}}),o}function Li(e,t){arguments.length<2&&(t=e.nodes()[0]),Ri(e,{},1,t)}function Ri(e,t,n,r,i){var a=n,o=e.node(r);return t[r]=!0,E(e.neighbors(r),function(i){Object.prototype.hasOwnProperty.call(t,i)||(n=Ri(e,t,n,i,r))}),o.low=a,o.lim=n++,i?o.parent=i:delete o.parent,n}function zi(e){return Kn(e.edges(),function(t){return e.edge(t).cutvalue<0})}function Bi(e,t,n){var r=n.v,i=n.w;t.hasEdge(r,i)||(r=n.w,i=n.v);var a=e.node(r),o=e.node(i),s=a,c=!1;return a.lim>o.lim&&(s=o,c=!0),ar(x(t.edges(),function(t){return c===Wi(e,e.node(t.v),s)&&c!==Wi(e,e.node(t.w),s)}),function(e){return Z(t,e)})}function Vi(e,t,n,r){var i=n.v,a=n.w;e.removeEdge(i,a),e.setEdge(r.v,r.w,{}),Li(e),Pi(e,t),Hi(e,t)}function Hi(e,t){var n=Ni(e,Kn(e.nodes(),function(e){return!t.node(e).parent}));n=n.slice(1),E(n,function(n){var r=e.node(n).parent,i=t.edge(n,r),a=!1;i||(i=t.edge(r,n),a=!0),t.node(n).rank=t.node(r).rank+(a?i.minlen:-i.minlen)})}function Ui(e,t,n){return e.hasEdge(t,n)}function Wi(e,t,n){return n.low<=t.lim&&t.lim<=n.lim}function Gi(e){switch(e.graph().ranker){case`network-simplex`:Ji(e);break;case`tight-tree`:qi(e);break;case`longest-path`:Ki(e);break;default:Ji(e)}}var Ki=X;function qi(e){X(e),Ti(e)}function Ji(e){$(e)}function Yi(e){var t=J(e,`root`,{},`_root`),n=Zi(e),r=U(w(n))-1,i=2*r+1;e.graph().nestingRoot=t,E(e.edges(),function(t){e.edge(t).minlen*=i});var a=Qi(e)+1;E(e.children(),function(o){Xi(e,t,i,a,r,n,o)}),e.graph().nodeRankFactor=i}function Xi(e,t,n,r,i,a,o){var s=e.children(o);if(!s.length){o!==t&&e.setEdge(t,o,{weight:0,minlen:n});return}var c=si(e,`_bt`),l=si(e,`_bb`),u=e.node(o);e.setParent(c,o),u.borderTop=c,e.setParent(l,o),u.borderBottom=l,E(s,function(s){Xi(e,t,n,r,i,a,s);var u=e.node(s),d=u.borderTop?u.borderTop:s,f=u.borderBottom?u.borderBottom:s,p=u.borderTop?r:2*r,m=d===f?i-a[o]+1:1;e.setEdge(c,d,{weight:p,minlen:m,nestingEdge:!0}),e.setEdge(f,l,{weight:p,minlen:m,nestingEdge:!0})}),e.parent(o)||e.setEdge(t,c,{weight:0,minlen:i+a[o]})}function Zi(e){var t={};function n(r,i){var a=e.children(r);a&&a.length&&E(a,function(e){n(e,i+1)}),t[r]=i}return E(e.children(),function(e){n(e,1)}),t}function Qi(e){return T(e.edges(),function(t,n){return t+e.edge(n).weight},0)}function $i(e){var t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,E(e.edges(),function(t){e.edge(t).nestingEdge&&e.removeEdge(t)})}function ea(e,t,n){var r={},i;E(n,function(n){for(var a=e.parent(n),o,s;a;){if(o=e.parent(a),o?(s=r[o],r[o]=a):(s=i,i=a),s&&s!==a){t.setEdge(s,a);return}a=o}})}function ta(e,t,n){var r=na(e),i=new O({compound:!0}).setGraph({root:r}).setDefaultNodeLabel(function(t){return e.node(t)});return E(e.nodes(),function(a){var o=e.node(a),s=e.parent(a);(o.rank===t||o.minRank<=t&&t<=o.maxRank)&&(i.setNode(a),i.setParent(a,s||r),E(e[n](a),function(t){var n=t.v===a?t.w:t.v,r=i.edge(n,a),o=D(r)?0:r.weight;i.setEdge(n,a,{weight:e.edge(t).weight+o})}),Object.prototype.hasOwnProperty.call(o,`minRank`)&&i.setNode(a,{borderLeft:o.borderLeft[t],borderRight:o.borderRight[t]}))}),i}function na(e){for(var t;e.hasNode(t=Vr(`_root`)););return t}function ra(e,t){for(var n=0,r=1;r<t.length;++r)n+=ia(e,t[r-1],t[r]);return n}function ia(e,t,n){for(var r=Ur(n,V(n,function(e,t){return t})),i=L(V(t,function(t){return q(V(e.outEdges(t),function(t){return{pos:r[t.w],weight:e.edge(t).weight}}),`pos`)})),a=1;a<n.length;)a<<=1;var o=2*a-1;--a;var s=V(Array(o),function(){return 0}),c=0;return E(i.forEach(function(e){var t=e.pos+a;s[t]+=e.weight;for(var n=0;t>0;)t%2&&(n+=s[t+1]),t=t-1>>1,s[t]+=e.weight;c+=e.weight*n})),c}function aa(e){var t={},n=x(e.nodes(),function(t){return!e.children(t).length}),r=V(K(U(V(n,function(t){return e.node(t).rank}))+1),function(){return[]});function i(n){$n(t,n)||(t[n]=!0,r[e.node(n).rank].push(n),E(e.successors(n),i))}var a=q(n,function(t){return e.node(t).rank});return E(a,i),r}function oa(e,t){return V(t,function(t){var n=e.inEdges(t);if(n.length){var r=T(n,function(t,n){var r=e.edge(n),i=e.node(n.v);return{sum:t.sum+r.weight*i.order,weight:t.weight+r.weight}},{sum:0,weight:0});return{v:t,barycenter:r.sum/r.weight,weight:r.weight}}return{v:t}})}function sa(e,t){var n={};return E(e,function(e,t){var r=n[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:t};D(e.barycenter)||(r.barycenter=e.barycenter,r.weight=e.weight)}),E(t.edges(),function(e){var t=n[e.v],r=n[e.w];!D(t)&&!D(r)&&(r.indegree++,t.out.push(n[e.w]))}),ca(x(n,function(e){return!e.indegree}))}function ca(e){var t=[];function n(e){return function(t){t.merged||(D(t.barycenter)||D(e.barycenter)||t.barycenter>=e.barycenter)&&la(e,t)}}function r(t){return function(n){n.in.push(t),--n.indegree===0&&e.push(n)}}for(;e.length;){var i=e.pop();t.push(i),E(i.in.reverse(),n(i)),E(i.out,r(i))}return V(x(t,function(e){return!e.merged}),function(e){return G(e,[`vs`,`i`,`barycenter`,`weight`])})}function la(e,t){var n=0,r=0;e.weight&&(n+=e.barycenter*e.weight,r+=e.weight),t.weight&&(n+=t.barycenter*t.weight,r+=t.weight),e.vs=t.vs.concat(e.vs),e.barycenter=n/r,e.weight=r,e.i=Math.min(t.i,e.i),t.merged=!0}function ua(e,t){var n=li(e,function(e){return Object.prototype.hasOwnProperty.call(e,`barycenter`)}),r=n.lhs,i=q(n.rhs,function(e){return-e.i}),a=[],o=0,s=0,c=0;r.sort(fa(!!t)),c=da(a,i,c),E(r,function(e){c+=e.vs.length,a.push(e.vs),o+=e.barycenter*e.weight,s+=e.weight,c=da(a,i,c)});var l={vs:L(a)};return s&&(l.barycenter=o/s,l.weight=s),l}function da(e,t,n){for(var r;t.length&&(r=B(t)).i<=n;)t.pop(),e.push(r.vs),n++;return n}function fa(e){return function(t,n){return t.barycenter<n.barycenter?-1:t.barycenter>n.barycenter?1:e?n.i-t.i:t.i-n.i}}function pa(e,t,n,r){var i=e.children(t),a=e.node(t),o=a?a.borderLeft:void 0,s=a?a.borderRight:void 0,c={};o&&(i=x(i,function(e){return e!==o&&e!==s}));var l=oa(e,i);E(l,function(t){if(e.children(t.v).length){var i=pa(e,t.v,n,r);c[t.v]=i,Object.prototype.hasOwnProperty.call(i,`barycenter`)&&ha(t,i)}});var u=sa(l,n);ma(u,c);var d=ua(u,r);if(o&&(d.vs=L([o,d.vs,s]),e.predecessors(o).length)){var f=e.node(e.predecessors(o)[0]),p=e.node(e.predecessors(s)[0]);Object.prototype.hasOwnProperty.call(d,`barycenter`)||(d.barycenter=0,d.weight=0),d.barycenter=(d.barycenter*d.weight+f.order+p.order)/(d.weight+2),d.weight+=2}return d}function ma(e,t){E(e,function(e){e.vs=L(e.vs.map(function(e){return t[e]?t[e].vs:e}))})}function ha(e,t){D(e.barycenter)?(e.barycenter=t.barycenter,e.weight=t.weight):(e.barycenter=(e.barycenter*e.weight+t.barycenter*t.weight)/(e.weight+t.weight),e.weight+=t.weight)}function ga(e){var t=ci(e),n=_a(e,K(1,t+1),`inEdges`),r=_a(e,K(t-1,-1,-1),`outEdges`),i=aa(e);ya(e,i);for(var a=1/0,o,s=0,c=0;c<4;++s,++c){va(s%2?n:r,s%4>=2),i=Y(e);var l=ra(e,i);l<a&&(c=0,o=Nn(i),a=l)}ya(e,o)}function _a(e,t,n){return V(t,function(t){return ta(e,t,n)})}function va(e,t){var n=new O;E(e,function(e){var r=e.graph().root,i=pa(e,r,n,t);E(i.vs,function(t,n){e.node(t).order=n}),ea(e,n,i.vs)})}function ya(e,t){E(t,function(t){E(t,function(t,n){e.node(t).order=n})})}function ba(e){var t=Sa(e);E(e.graph().dummyChains,function(n){for(var r=e.node(n),i=r.edgeObj,a=xa(e,t,i.v,i.w),o=a.path,s=a.lca,c=0,l=o[c],u=!0;n!==i.w;){if(r=e.node(n),u){for(;(l=o[c])!==s&&e.node(l).maxRank<r.rank;)c++;l===s&&(u=!1)}if(!u){for(;c<o.length-1&&e.node(l=o[c+1]).minRank<=r.rank;)c++;l=o[c]}e.setParent(n,l),n=e.successors(n)[0]}})}function xa(e,t,n,r){var i=[],a=[],o=Math.min(t[n].low,t[r].low),s=Math.max(t[n].lim,t[r].lim),c=n,l;do c=e.parent(c),i.push(c);while(c&&(t[c].low>o||s>t[c].lim));for(l=c,c=r;(c=e.parent(c))!==l;)a.push(c);return{path:i.concat(a.reverse()),lca:l}}function Sa(e){var t={},n=0;function r(i){var a=n;E(e.children(i),r),t[i]={low:a,lim:n++}}return E(e.children(),r),t}function Ca(e,t){var n={};function r(t,r){var i=0,a=0,o=t.length,s=B(r);return E(r,function(t,c){var l=Ta(e,t),u=l?e.node(l).order:o;(l||t===s)&&(E(r.slice(a,c+1),function(t){E(e.predecessors(t),function(r){var a=e.node(r),o=a.order;(o<i||u<o)&&!(a.dummy&&e.node(t).dummy)&&Ea(n,r,t)})}),a=c+1,i=u)}),r}return T(t,r),n}function wa(e,t){var n={};function r(t,r,i,a,o){var s;E(K(r,i),function(r){s=t[r],e.node(s).dummy&&E(e.predecessors(s),function(t){var r=e.node(t);r.dummy&&(r.order<a||r.order>o)&&Ea(n,t,s)})})}function i(t,n){var i=-1,a,o=0;return E(n,function(s,c){if(e.node(s).dummy===`border`){var l=e.predecessors(s);l.length&&(a=e.node(l[0]).order,r(n,o,c,i,a),o=c,i=a)}r(n,o,n.length,a,t.length)}),n}return T(t,i),n}function Ta(e,t){if(e.node(t).dummy)return Kn(e.predecessors(t),function(t){return e.node(t).dummy})}function Ea(e,t,n){if(t>n){var r=t;t=n,n=r}Object.prototype.hasOwnProperty.call(e,t)||Object.defineProperty(e,t,{enumerable:!0,configurable:!0,value:{},writable:!0});var i=e[t];Object.defineProperty(i,n,{enumerable:!0,configurable:!0,value:!0,writable:!0})}function Da(e,t,n){if(t>n){var r=t;t=n,n=r}return!!e[t]&&Object.prototype.hasOwnProperty.call(e[t],n)}function Oa(e,t,n,r){var i={},a={},o={};return E(t,function(e){E(e,function(e,t){i[e]=e,a[e]=e,o[e]=t})}),E(t,function(e){var t=-1;E(e,function(e){var s=r(e);if(s.length){s=q(s,function(e){return o[e]});for(var c=(s.length-1)/2,l=Math.floor(c),u=Math.ceil(c);l<=u;++l){var d=s[l];a[e]===e&&t<o[d]&&!Da(n,e,d)&&(a[d]=e,a[e]=i[e]=i[d],t=o[d])}}})}),{root:i,align:a}}function ka(e,t,n,r,i){var a={},o=Aa(e,t,n,i),s=i?`borderLeft`:`borderRight`;function c(e,t){for(var n=o.nodes(),r=n.pop(),i={};r;)i[r]?e(r):(i[r]=!0,n.push(r),n=n.concat(t(r))),r=n.pop()}function l(e){a[e]=o.inEdges(e).reduce(function(e,t){return Math.max(e,a[t.v]+o.edge(t))},0)}function u(t){var n=o.outEdges(t).reduce(function(e,t){return Math.min(e,a[t.w]-o.edge(t))},1/0),r=e.node(t);n!==1/0&&r.borderType!==s&&(a[t]=Math.max(a[t],n))}return c(l,o.predecessors.bind(o)),c(u,o.successors.bind(o)),E(r,function(e){a[e]=a[n[e]]}),a}function Aa(e,t,n,r){var i=new O,a=e.graph(),o=Fa(a.nodesep,a.edgesep,r);return E(t,function(t){var r;E(t,function(t){var a=n[t];if(i.setNode(a),r){var s=n[r],c=i.edge(s,a);i.setEdge(s,a,Math.max(o(e,t,r),c||0))}r=t})}),i}function ja(e,t){return ar(w(t),function(t){var n=-1/0,r=1/0;return Jn(t,function(t,i){var a=Ia(e,i)/2;n=Math.max(t+a,n),r=Math.min(t-a,r)}),n-r})}function Ma(e,t){var n=w(t),r=W(n),i=U(n);E([`u`,`d`],function(n){E([`l`,`r`],function(a){var o=n+a,s=e[o],c;if(s!==t){var l=w(s);c=a===`l`?r-W(l):i-U(l),c&&(e[o]=H(s,function(e){return e+c}))}})})}function Na(e,t){return H(e.ul,function(n,r){if(t)return e[t.toLowerCase()][r];var i=q(V(e,r));return(i[1]+i[2])/2})}function Pa(e){var t=Y(e),n=ir(Ca(e,t),wa(e,t)),r={},i;return E([`u`,`d`],function(a){i=a===`u`?t:w(t).reverse(),E([`l`,`r`],function(t){t===`r`&&(i=V(i,function(e){return w(e).reverse()}));var o=(a===`u`?e.predecessors:e.successors).bind(e),s=Oa(e,i,n,o),c=ka(e,i,s.root,s.align,t===`r`);t===`r`&&(c=H(c,function(e){return-e})),r[a+t]=c})}),Ma(r,ja(e,r)),Na(r,e.graph().align)}function Fa(e,t,n){return function(r,i,a){var o=r.node(i),s=r.node(a),c=0,l;if(c+=o.width/2,Object.prototype.hasOwnProperty.call(o,`labelpos`))switch(o.labelpos.toLowerCase()){case`l`:l=-o.width/2;break;case`r`:l=o.width/2}if(l&&(c+=n?l:-l),l=0,c+=(o.dummy?t:e)/2,c+=(s.dummy?t:e)/2,c+=s.width/2,Object.prototype.hasOwnProperty.call(s,`labelpos`))switch(s.labelpos.toLowerCase()){case`l`:l=s.width/2;break;case`r`:l=-s.width/2}return l&&(c+=n?l:-l),l=0,c}}function Ia(e,t){return e.node(t).width}function La(e){e=ri(e),Ra(e),Yn(Pa(e),function(t,n){e.node(n).x=t})}function Ra(e){var t=Y(e),n=e.graph().ranksep,r=0;E(t,function(t){var i=U(V(t,function(t){return e.node(t).height}));E(t,function(t){e.node(t).y=r+i/2}),r+=i+n})}function za(e,t){var n=t&&t.debugTiming?ui:di;n(`layout`,()=>{var t=n(` buildLayoutGraph`,()=>Xa(e));n(` runLayout`,()=>Ba(t,n)),n(` updateInputGraph`,()=>Va(e,t))})}function Ba(e,t){t(` makeSpaceForEdgeLabels`,()=>Za(e)),t(` removeSelfEdges`,()=>oo(e)),t(` acyclic`,()=>$r(e)),t(` nestingGraph.run`,()=>Yi(e)),t(` rank`,()=>Gi(ri(e))),t(` injectEdgeLabelProxies`,()=>Qa(e)),t(` removeEmptyRanks`,()=>oi(e)),t(` nestingGraph.cleanup`,()=>$i(e)),t(` normalizeRanks`,()=>ai(e)),t(` assignRankMinMax`,()=>$a(e)),t(` removeEdgeLabelProxies`,()=>eo(e)),t(` normalize.run`,()=>Si(e)),t(` parentDummyChains`,()=>ba(e)),t(` addBorderSegments`,()=>fi(e)),t(` order`,()=>ga(e)),t(` insertSelfEdges`,()=>so(e)),t(` adjustCoordinateSystem`,()=>mi(e)),t(` position`,()=>La(e)),t(` positionSelfEdges`,()=>co(e)),t(` removeBorderNodes`,()=>ao(e)),t(` normalize.undo`,()=>wi(e)),t(` fixupEdgeLabelCoords`,()=>ro(e)),t(` undoCoordinateSystem`,()=>hi(e)),t(` translateGraph`,()=>to(e)),t(` assignNodeIntersects`,()=>no(e)),t(` reversePoints`,()=>io(e)),t(` acyclic.undo`,()=>ti(e))}function Va(e,t){E(e.nodes(),function(n){var r=e.node(n),i=t.node(n);r&&(r.x=i.x,r.y=i.y,t.children(n).length&&(r.width=i.width,r.height=i.height))}),E(e.edges(),function(n){var r=e.edge(n),i=t.edge(n);r.points=i.points,Object.prototype.hasOwnProperty.call(i,`x`)&&(r.x=i.x,r.y=i.y)}),e.graph().width=t.graph().width,e.graph().height=t.graph().height}var Ha=[`nodesep`,`edgesep`,`ranksep`,`marginx`,`marginy`],Ua={ranksep:50,edgesep:20,nodesep:50,rankdir:`tb`},Wa=[`acyclicer`,`ranker`,`rankdir`,`align`],Ga=[`width`,`height`],Ka={width:0,height:0},qa=[`minlen`,`weight`,`width`,`height`,`labeloffset`],Ja={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:`r`},Ya=[`labelpos`];function Xa(e){var t=new O({multigraph:!0,compound:!0}),n=uo(e.graph());return t.setGraph(ir({},Ua,lo(n,Ha),G(n,Wa))),E(e.nodes(),function(n){var r=uo(e.node(n));t.setNode(n,Ln(lo(r,Ga),Ka)),t.setParent(n,e.parent(n))}),E(e.edges(),function(n){var r=uo(e.edge(n));t.setEdge(n,ir({},Ja,lo(r,qa),G(r,Ya)))}),t}function Za(e){var t=e.graph();t.ranksep/=2,E(e.edges(),function(n){var r=e.edge(n);r.minlen*=2,r.labelpos.toLowerCase()!==`c`&&(t.rankdir===`TB`||t.rankdir===`BT`?r.width+=r.labeloffset:r.height+=r.labeloffset)})}function Qa(e){E(e.edges(),function(t){var n=e.edge(t);if(n.width&&n.height){var r=e.node(t.v);J(e,`edge-proxy`,{rank:(e.node(t.w).rank-r.rank)/2+r.rank,e:t},`_ep`)}})}function $a(e){var t=0;E(e.nodes(),function(n){var r=e.node(n);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,t=U(t,r.maxRank))}),e.graph().maxRank=t}function eo(e){E(e.nodes(),function(t){var n=e.node(t);n.dummy===`edge-proxy`&&(e.edge(n.e).labelRank=n.rank,e.removeNode(t))})}function to(e){var t=1/0,n=0,r=1/0,i=0,a=e.graph(),o=a.marginx||0,s=a.marginy||0;function c(e){var a=e.x,o=e.y,s=e.width,c=e.height;t=Math.min(t,a-s/2),n=Math.max(n,a+s/2),r=Math.min(r,o-c/2),i=Math.max(i,o+c/2)}E(e.nodes(),function(t){c(e.node(t))}),E(e.edges(),function(t){var n=e.edge(t);Object.prototype.hasOwnProperty.call(n,`x`)&&c(n)}),t-=o,r-=s,E(e.nodes(),function(n){var i=e.node(n);i.x-=t,i.y-=r}),E(e.edges(),function(n){var i=e.edge(n);E(i.points,function(e){e.x-=t,e.y-=r}),Object.prototype.hasOwnProperty.call(i,`x`)&&(i.x-=t),Object.prototype.hasOwnProperty.call(i,`y`)&&(i.y-=r)}),a.width=n-t+o,a.height=i-r+s}function no(e){E(e.edges(),function(t){var n=e.edge(t),r=e.node(t.v),i=e.node(t.w),a,o;n.points?(a=n.points[0],o=n.points[n.points.length-1]):(n.points=[],a=i,o=r),n.points.unshift(ii(r,a)),n.points.push(ii(i,o))})}function ro(e){E(e.edges(),function(t){var n=e.edge(t);if(Object.prototype.hasOwnProperty.call(n,`x`))switch((n.labelpos===`l`||n.labelpos===`r`)&&(n.width-=n.labeloffset),n.labelpos){case`l`:n.x-=n.width/2+n.labeloffset;break;case`r`:n.x+=n.width/2+n.labeloffset}})}function io(e){E(e.edges(),function(t){var n=e.edge(t);n.reversed&&n.points.reverse()})}function ao(e){E(e.nodes(),function(t){if(e.children(t).length){var n=e.node(t),r=e.node(n.borderTop),i=e.node(n.borderBottom),a=e.node(B(n.borderLeft)),o=e.node(B(n.borderRight));n.width=Math.abs(o.x-a.x),n.height=Math.abs(i.y-r.y),n.x=a.x+n.width/2,n.y=r.y+n.height/2}}),E(e.nodes(),function(t){e.node(t).dummy===`border`&&e.removeNode(t)})}function oo(e){E(e.edges(),function(t){if(t.v===t.w){var n=e.node(t.v);n.selfEdges||=[],n.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}})}function so(e){var t=Y(e);E(t,function(t){var n=0;E(t,function(t,r){var i=e.node(t);i.order=r+n,E(i.selfEdges,function(t){J(e,`selfedge`,{width:t.label.width,height:t.label.height,rank:i.rank,order:r+ ++n,e:t.e,label:t.label},`_se`)}),delete i.selfEdges})})}function co(e){E(e.nodes(),function(t){var n=e.node(t);if(n.dummy===`selfedge`){var r=e.node(n.e.v),i=r.x+r.width/2,a=r.y,o=n.x-i,s=r.height/2;e.setEdge(n.e,n.label),e.removeNode(t),n.label.points=[{x:i+2*o/3,y:a-s},{x:i+5*o/6,y:a-s},{x:i+o,y:a},{x:i+5*o/6,y:a+s},{x:i+2*o/3,y:a+s}],n.label.x=n.x,n.label.y=n.y}})}function lo(e,t){return H(G(e,t),Number)}function uo(e){var t={};return E(e,function(e,n){t[n.toLowerCase()]=e}),t}export{za as t};
@@ -0,0 +1,5 @@
1
+ import{i as e,t}from"./rolldown-runtime-C0FnF6B9.js";import{Ct as n,Mt as r,Ot as i,at as a,jn as o,nt as s,rt as c,tt as l}from"./vendor-objectstack-BeKUVjuj.js";var u=class extends Error{code=`INVALID_FILTER`;httpStatus=400;constructor(e){super(e),this.name=`FilterOperatorError`}};function d(e){return{$eq:`=`,$ne:`!=`,$gt:`>`,$gte:`>=`,$lt:`<`,$lte:`<=`,$in:`in`,$nin:`nin`,$notin:`nin`,$between:`between`,$contains:`contains`,$notContains:`notcontains`,$notcontains:`notcontains`,$startsWith:`startswith`,$startswith:`startswith`,$endsWith:`endswith`,$endswith:`endswith`}[e]||null}function f(e){let t=[];for(let[n,r]of Object.entries(e))if(r!=null){if(typeof r==`object`&&!Array.isArray(r))for(let[e,i]of Object.entries(r)){if(e===`$regex`)throw new u(`[ObjectUI] The '\$regex' filter operator is not supported. It used to be converted to 'contains', which matches a literal substring rather than a pattern — a different result, not a degraded one. Field: '${n}', Value: ${JSON.stringify(i)}. Use $contains, $startsWith or $endsWith.`);if(e===`$null`){t.push([n,i?`is_null`:`is_not_null`,!0]);continue}if(e===`$exists`){t.push([n,i?`is_not_null`:`is_null`,!0]);continue}let r=d(e);if(r)t.push([n,r,i]);else throw new u(`[ObjectUI] Unknown filter operator '${e}' for field '${n}'. Supported operators: $eq, $ne, $gt, $gte, $lt, $lte, $in, $nin, $between, $contains, $notContains, $startsWith, $endsWith, $null, $exists. If you need exact object matching, use the value directly without an operator.`)}else t.push([n,`=`,r])}return t.length===0?e:t.length===1?t[0]:[`and`,...t]}function p(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=e.field;return typeof t==`string`&&t!==``}function m(e){let t=o(e.operator);return e.value===void 0?[e.field,t]:[e.field,t,e.value]}function h(e){if(e==null)return;if(Array.isArray(e))return e.length===0?void 0:e.some(p)?e.map(e=>p(e)?m(e):e):e;if(typeof e!=`object`)return;let t=e;if(Object.keys(t).length!==0)return f(t)}function g(...e){let t=e.map(h).filter(e=>e!==void 0);if(t.length!==0)return t.length===1?t[0]:[`and`,...t]}var _=Symbol.for(`objectui.objectSortability`);function v(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e.sortable;if(typeof t!=`boolean`)return;let n=e.reason,r=e.caveat;return{sortable:t,...typeof n==`string`?{reason:n}:{},...typeof r==`string`?{caveat:r}:{}}}function y(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e.fields;if(!t||typeof t!=`object`||Array.isArray(t))return;let n={};for(let[e,r]of Object.entries(t)){let t=v(r);t&&(n[e]=t)}return{fields:n}}function b(e,t){let n=y(t);return!n||!e||typeof e!=`object`||Object.defineProperty(e,_,{value:n,enumerable:!1,configurable:!0,writable:!0}),e}function x(e){if(!e||typeof e!=`object`)return;let t=e[_];if(!t||typeof t!=`object`)return;let n=t.fields;if(!(!n||typeof n!=`object`||Array.isArray(n)))return t}function S(e,t){if(typeof t!=`string`||t.length===0)return!1;let n=e.fields?.[t];return v(n)?.sortable===!0}function C(e,t){return Array.isArray(e)?e.filter(e=>S(t,e?.field)):[]}function w(e,t){let n=e?.code;return typeof n!=`string`||n.length===0?!1:n.toUpperCase()===t.toUpperCase()}function T(e,t){return t.some(t=>w(e,t))}function E(e){if(e!=null)return e.id??e._id??e.recordId}function D(e,t){let n={};for(let[r,i]of Object.entries(e))if(i&&typeof i==`object`&&!Array.isArray(i)&&typeof i.$ref==`number`){let e=i.$ref,a=E(t[e]);if(a===void 0)throw Error(`batchTransaction: field "${r}" references operation ${e}, which has not produced an id (forward or invalid $ref)`);n[r]=a}else n[r]=i;return n}async function O(e,t){let n=[],r=[];try{for(let i of t){let t=i.action??`create`;if(t===`create`){let t=await e.create(i.object,D(i.data??{},n));n.push(t);let a=E(t);a&&r.push({object:i.object,id:a})}else if(t===`update`){if(i.id==null)throw Error(`batchTransaction: update on "${i.object}" requires an id`);n.push(await e.update(i.object,i.id,D(i.data??{},n)))}else{if(i.id==null)throw Error(`batchTransaction: delete on "${i.object}" requires an id`);n.push(await e.delete(i.object,i.id))}}return{results:n}}catch(t){throw r.length>0&&await Promise.allSettled([...r].reverse().map(t=>e.delete(t.object,t.id))),t}}function k(e,t){return typeof e.batchTransaction==`function`?e.batchTransaction(t):O(e,t)}var A=new Set,j=()=>!1,M=[`reference_to`,`referenceTo`];function N(e,t,n){if(!j()||e.reference!==void 0)return;let r=M.filter(t=>e[t]!==void 0&&e[t]!==``);if(r.length===0)return;let i=t??(typeof e.name==`string`?e.name:`(unnamed field)`),a=n??`(unknown object)`;for(let t of r){let n=`${a}:${i}:${t}:${String(e[t])}`;A.has(n)||(A.add(n),console.warn(`[ObjectUI] Object \`${a}\`, field \`${i}\` declares its relationship target as \`${t}: '${String(e[t])}'\` and does NOT carry \`reference\`. \`reference\` is the only spelling the protocol declares: \`@objectstack/spec\`'s \`FieldSchema\` refuses \`${t}\` by name with \`unrecognized_keys\` ("Did you mean \`${t}\` -> \`reference\`?"). ObjectUI stamps \`reference\` here so this def still renders, but the readers no longer carry a \`${t}\` fallback of their own — fix the PRODUCER to emit \`reference\`, or serve the def through a backend that normalizes it (objectstack#13847 does this on the serve path and in \`os migrate meta\`). Maintainer ruling 2026-08-31: protocol normalization belongs on the server, the front end just executes the protocol. (objectui#6837)`))}}function P(e,t,n){if(!e||typeof e!=`object`)return e;let r=e,i=r.reference_to??r.reference??r.referenceTo;return i==null||i===``?e:(N(r,t,n),r.reference_to===void 0&&(r.reference_to=i),r.reference===void 0&&(r.reference=i),e)}function ee(e){let t=e&&typeof e==`object`?e.fields:null;if(!t||typeof t!=`object`)return e;let n=typeof e.name==`string`?e.name:void 0;if(Array.isArray(t))for(let e of t)P(e,void 0,n);else for(let[e,r]of Object.entries(t))P(r,e,n);return e}var te=t(((t,n)=>{var r=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,s=(e,t)=>{for(var n in t)r(e,n,{get:t[n],enumerable:!0})},c=(e,t,n,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let c of a(t))!o.call(e,c)&&c!==n&&r(e,c,{get:()=>t[c],enumerable:!(s=i(t,c))||s.enumerable});return e},l=e=>c(r({},`__esModule`,{value:!0}),e),u={};s(u,{ObjectLogger:()=>S,createLogger:()=>C}),n.exports=l(u);var d={debug:0,info:1,warn:2,error:3,fatal:4,silent:5},f={debug:`\x1B[36m`,info:`\x1B[32m`,warn:`\x1B[33m`,error:`\x1B[31m`,fatal:`\x1B[35m`,silent:``},p=`\x1B[0m`;function m(e){return e.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/([A-Z]+)([A-Z][a-z])/g,`$1 $2`).replace(/([a-zA-Z])([0-9])/g,`$1 $2`).split(/[^A-Za-z0-9]+/).filter(Boolean).map(e=>e.toLowerCase())}function h(e){return/(?:ss|us|is)$/.test(e)?e:/(?:ch|sh|s|x|z)es$/.test(e)?e.slice(0,-2):/[a-z0-9]s$/.test(e)?e.slice(0,-1):e}var g=new Set(`access.account.admin.api.app.auth.bearer.client.csrf.db.database.encryption.id.jwt.master.oauth.private.public.refresh.root.secret.service.session.shared.sign.signing.ssh.token.user.webhook.xsrf`.split(`.`));function _(e,t){for(let n of[e,h(e)])if(!(n.length<=t.length||!n.endsWith(t))&&g.has(n.slice(0,n.length-t.length)))return!0;return!1}function v(e,t){for(let n=0;n+t.length<=e.length;n++)if(t.every((t,r)=>e[n+r]===t))return!0;return!1}function y(e,t){if(t.length===0||e.length===0)return!1;if(t.length>1){let n=t.join(``);return v(e,t)||e.some(e=>e===n||h(e)===n)}let n=t[0],r=e.filter(e=>/[a-z]/.test(e)).length>1;return e.some(e=>e===n||r&&h(e)===n||_(e,n))}function b(e){if(typeof process<`u`){let e={}.NO_COLOR;if(e!==void 0&&e!==``)return!1}return!!e?.isTTY}function x(t){if(typeof process>`u`)return;let n=process.getBuiltinModule;if(typeof n==`function`)try{return n.call(process,`node:${t}`)}catch{return}try{return e(t)}catch{return}}var S=class e{constructor(e={},t={}){this.ownsFileStream=!1,this.fileLoggingDisabled=!1,this.config={name:e.name,level:e.level??`info`,format:e.format??`pretty`,redact:e.redact??[`password`,`token`,`secret`,`key`],sourceLocation:e.sourceLocation??!1,file:e.file,rotation:{maxSize:e.rotation?.maxSize??`10m`,maxFiles:e.rotation?.maxFiles??5}},this.bindings=t,this.redactPatterns=this.config.redact.map(m).filter(e=>e.length>0),this.config.file&&typeof process<`u`&&this.openFileStream(this.config.file)}openFileStream(e){let t=x(`fs`),n=x(`path`);if(!t||!n){this.disableFileLogging(e,`no filesystem access in this runtime`);return}try{t.mkdirSync(n.dirname(e),{recursive:!0});let r=t.createWriteStream(e,{flags:`a`});r.on(`error`,t=>this.disableFileLogging(e,t.message)),this.fileStream=r,this.ownsFileStream=!0}catch(t){this.disableFileLogging(e,t.message)}}disableFileLogging(e,t){if(this.fileStream=void 0,this.ownsFileStream=!1,this.fileLoggingDisabled)return;this.fileLoggingDisabled=!0;let n=`${this.config.name?`[${this.config.name}] `:``}logger: file logging disabled \u2014 cannot write to ${e}: ${t}`;typeof process<`u`&&process.stderr?process.stderr.write(n+`
2
+ `):typeof console<`u`&&console.warn(n)}isEnabled(e){return d[e]>=d[this.config.level]}isRedactedFieldName(e){let t=m(e);return this.redactPatterns.some(e=>y(t,e))}redactSensitive(e){if(!e||typeof e!=`object`)return e;let t=Array.isArray(e)?[...e]:{...e};for(let e in t)this.isRedactedFieldName(e)?t[e]=`***REDACTED***`:typeof t[e]==`object`&&t[e]!==null&&(t[e]=this.redactSensitive(t[e]));return t}write(e,t,n,r){if(!this.isEnabled(e))return;let i=this.redactSensitive({...this.bindings,...n,...r?{error:{message:r.message,stack:r.stack}}:{}}),a=Object.keys(i).length>0,o=new Date().toISOString(),s=e===`error`||e===`fatal`,c=typeof process<`u`?process:void 0,l=c?s?c.stderr:c.stdout:void 0,u,d;if(this.config.format===`json`)u=d=JSON.stringify({time:o,level:e,...this.config.name?{name:this.config.name}:{},msg:t,...i});else if(this.config.format===`text`){let n=[o,e.toUpperCase(),t];a&&n.push(JSON.stringify(i)),u=d=n.join(` | `)}else{let n=this.config.name?`[${this.config.name}] `:``,r=`${o} ${e.toUpperCase()}`,s=` ${n}${t}`;a&&(s+=` ${JSON.stringify(i)}`),d=r+s;let c=f[e]||``;u=c&&b(l)?`${c}${r}${p}${s}`:d}l?l.write(u+`
3
+ `):typeof console<`u`&&(e===`error`||e===`fatal`?console.error:e===`warn`?console.warn:e===`debug`?console.debug:console.log)(u),this.fileStream&&this.fileStream.write(d+`
4
+ `)}debug(e,t){this.write(`debug`,e,t)}info(e,t){this.write(`info`,e,t)}warn(e,t){this.write(`warn`,e,t)}error(e,t,n){this.writeErrorLike(`error`,e,t,n)}fatal(e,t,n){this.writeErrorLike(`fatal`,e,t,n)}writeErrorLike(e,t,n,r){if(n instanceof Error){this.write(e,t,r,n);return}let i=n&&r?{...n,...r}:n??r;this.write(e,t,i)}log(e,...t){this.info(e,t.length>0?{args:t}:void 0)}child(t){let n=new e({...this.config,file:void 0},{...this.bindings,...t});return n.config.file=this.config.file,n.fileStream=this.fileStream,n}withTrace(e,t){return this.child({traceId:e,spanId:t})}async destroy(){let e=this.fileStream;this.fileStream=void 0,!(!e||!this.ownsFileStream)&&(this.ownsFileStream=!1,await new Promise(t=>e.end(t)))}};function C(e){return new S(e)}0&&(n.exports={ObjectLogger:S,createLogger:C})})),ne=t(((e,t)=>{var r=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,l=Object.prototype.hasOwnProperty,u=(e,t)=>{for(var n in t)r(e,n,{get:t[n],enumerable:!0})},d=(e,t,n,i)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let s of o(t))!l.call(e,s)&&s!==n&&r(e,s,{get:()=>t[s],enumerable:!(i=a(t,s))||i.enumerable});return e},f=e=>d(r({},`__esModule`,{value:!0}),e),p={};u(p,{FilterBuilder:()=>y,ObjectStackClient:()=>N,QueryBuilder:()=>b,RealtimeAPI:()=>v,ScopedEnvironmentClient:()=>P,createFilter:()=>S,createQuery:()=>x}),t.exports=f(p);var m=(i(),f(n)),h=(c(),f(s)),g=te(),_=(c(),f(s)),v=class{constructor(e,t){this.subscriptions=new Map,this.eventBuffer=[],this._baseUrl=e,this._token=t}subscribeMetadata(e,t,n){let r=`metadata-${e}-${Date.now()}`,i=[`metadata.${e}.created`,`metadata.${e}.updated`,`metadata.${e}.deleted`];return this.subscriptions.set(r,{filter:{type:e,packageId:n?.packageId,eventTypes:i},handler:n=>{if(!n.type.startsWith(`metadata.`))return;let r=_.MetadataEventSchema.safeParse(n.payload);if(!r.success)throw Error(`subscribeMetadata('${e}'): event '${n.type}' payload does not satisfy MetadataEventSchema \u2014 rejecting off-contract event (fix the producer): ${r.error.message}`);t(r.data)}}),this.startPolling(),()=>{this.subscriptions.delete(r),this.subscriptions.size===0&&this.stopPolling()}}subscribeData(e,t,n){let r=`data-${e}-${Date.now()}`;return this.subscriptions.set(r,{filter:{type:e,recordId:n?.recordId,eventTypes:[`data.record.created`,`data.record.updated`,`data.record.deleted`]},handler:r=>{if(!r.type.startsWith(`data.`)||r.object!==e||r.type.startsWith(`data.records.`))return;let i=_.DataEventSchema.safeParse(r.payload);if(!i.success)throw Error(`subscribeData('${e}'): event '${r.type}' payload does not satisfy DataEventSchema \u2014 rejecting off-contract event (fix the producer): ${i.error.message}`);n?.recordId&&i.data.recordId!==n.recordId||t(i.data)}}),this.startPolling(),()=>{this.subscriptions.delete(r),this.subscriptions.size===0&&this.stopPolling()}}subscribeBulkData(e,t){let n=`bulk-data-${e}-${Date.now()}`;return this.subscriptions.set(n,{filter:{type:e,eventTypes:[`data.records.updated`,`data.records.deleted`]},handler:n=>{if(!n.type.startsWith(`data.records.`)||n.object!==e)return;let r=_.BulkDataEventSchema.safeParse(n.payload);if(!r.success)throw Error(`subscribeBulkData('${e}'): event '${n.type}' payload does not satisfy BulkDataEventSchema \u2014 rejecting off-contract event (fix the producer): ${r.error.message}`);t(r.data)}}),this.startPolling(),()=>{this.subscriptions.delete(n),this.subscriptions.size===0&&this.stopPolling()}}emitEvent(e){for(let t of this.subscriptions.values()){let n=!t.filter.type||e.type.includes(t.filter.type)||e.object===t.filter.type,r=!t.filter.eventTypes?.length||t.filter.eventTypes.includes(e.type),i=!t.filter.packageId||e.payload?.packageId===t.filter.packageId;if(n&&r&&i)try{t.handler(e)}catch(e){console.error(`Error in realtime event handler:`,e)}}}startPolling(){this.pollInterval||=setInterval(()=>{for(;this.eventBuffer.length>0;){let e=this.eventBuffer.shift();e&&this.emitEvent(e)}},2e3)}stopPolling(){this.pollInterval&&=(clearInterval(this.pollInterval),void 0)}_bufferEvent(e){this.eventBuffer.push(e)}disconnect(){this.stopPolling(),this.subscriptions.clear(),this.eventBuffer=[]}},y=class{constructor(){this.conditions=[]}equals(e,t){return this.conditions.push([e,`=`,t]),this}notEquals(e,t){return this.conditions.push([e,`!=`,t]),this}greaterThan(e,t){return this.conditions.push([e,`>`,t]),this}greaterThanOrEqual(e,t){return this.conditions.push([e,`>=`,t]),this}lessThan(e,t){return this.conditions.push([e,`<`,t]),this}lessThanOrEqual(e,t){return this.conditions.push([e,`<=`,t]),this}in(e,t){return this.conditions.push([e,`in`,t]),this}notIn(e,t){return this.conditions.push([e,`not_in`,t]),this}like(e,t){return this.conditions.push([e,`like`,t]),this}isNull(e){return this.conditions.push([e,`is_null`,null]),this}isNotNull(e){return this.conditions.push([e,`is_not_null`,null]),this}between(e,t,n){return this.conditions.push([`and`,[e,`>=`,t],[e,`<=`,n]]),this}contains(e,t){return this.conditions.push([e,`contains`,t]),this}ilike(e,t){return this.conditions.push([e,`ilike`,t]),this}startsWith(e,t){return this.conditions.push([e,`starts_with`,t]),this}endsWith(e,t){return this.conditions.push([e,`ends_with`,t]),this}exists(e){return this.conditions.push([e,`is_not_null`,null]),this}build(){if(this.conditions.length===0)throw Error(`Filter builder has no conditions`);return this.conditions.length===1?this.conditions[0]:[`and`,...this.conditions]}getConditions(){return this.conditions}},b=class{constructor(e){this.query={},this._object=e,this.query.object=e}select(...e){return this.query.fields=e,this}where(e){let t=new y;e(t);let n=t.getConditions();return n.length===1?this.query.where=n[0]:n.length>1&&(this.query.where=[`and`,...n]),this}filter(e){return this.query.where=e,this}orderBy(e,t=`asc`){return this.query.orderBy||(this.query.orderBy=[]),this.query.orderBy.push({field:e,order:t}),this}limit(e){return this.query.limit=e,this}skip(e){return this.query.offset=e,this}offset(e){return this.query.offset=e,this}paginate(e,t){return this.query.limit=t,this.query.offset=(e-1)*t,this}groupBy(...e){return this.query.groupBy=e,this}expand(e,t){return this.query.expand||(this.query.expand={}),this.query.expand[e]=t||{},this}search(e,t){return this.query.search={query:e,...t},this}build(){return{object:this._object,...this.query}}getQuery(){return{...this.query}}};function x(e){return new b(e)}function S(){return new y}var C={where:!0,fields:!0,orderBy:!0,limit:!0,offset:!0,expand:!0};function w(e){return Object.keys(C).some(t=>t in e)}function T(e){if(e==null)return;let t;if(Array.isArray(e))t=e.map(e=>String(e).trim()).filter(Boolean);else if(typeof e==`object`){for(let[t,n]of Object.entries(e)){let e=typeof n==`object`&&n&&!Array.isArray(n)?Object.keys(n):[];if(e.length>0)throw Error(`data.find(): expand['${t}'] carries a nested query (${e.slice().sort().join(`, `)}), but the list route accepts only \`expand=<comma-separated relation names>\` \u2014 a nested per-relation query has no transport spelling on a GET, so it would be dropped rather than applied. Pass relation names only, or use data.query() with a QueryAST \`expand\` for nested detail.`)}t=Object.keys(e).map(e=>e.trim()).filter(Boolean)}else return;return t.length>0?t.join(`,`):void 0}async function*E(e){let t=e.body;if(!t)throw Error("Streaming response carried no body — this runtime's fetch does not expose `Response.body`");let n=new TextDecoder,r=``,i=function*(e){r+=e;let t;for(;(t=r.indexOf(`
5
+ `))!==-1;){let e=r.slice(0,t).trim();if(r=r.slice(t+1),!e.startsWith(`data:`))continue;let n=e.slice(5).trim();if(!(!n||n===`[DONE]`))try{yield JSON.parse(n)}catch{}}};if(typeof t.getReader==`function`){let e=t.getReader();try{for(;;){let{done:t,value:r}=await e.read();if(t)break;yield*i(n.decode(r,{stream:!0}))}}finally{e.releaseLock?.()}}else for await(let e of t)yield*i(n.decode(e,{stream:!0}));yield*i(n.decode())}function D(e){return typeof e==`string`&&e?e:typeof e?.message==`string`&&e.message?e.message:`Action failed`}function O(e){let t=new Set([`success`,`data`,`error`,`code`,`fields`]);return e&&typeof e==`object`&&!Array.isArray(e)&&typeof e.success==`boolean`&&Object.keys(e).every(e=>t.has(e))?e.success===!1?{success:!1,error:D(e.error)}:{success:!0,data:e.data}:{success:!0,data:e}}function k(e){if(!e)return``;let t=new URLSearchParams;e.force&&t.set(`force`,`true`),e.packageId&&t.set(`package`,e.packageId),e.mode===`draft`&&t.set(`mode`,`draft`);let n=t.toString();return n?`?${n}`:``}function A(e){if(e?.ifMatch)return{"If-Match":String(e.ifMatch)}}function j(e){if(!e)return``;let t=new URLSearchParams;e.state===`draft`&&t.set(`state`,`draft`);let n=t.toString();return n?`?${n}`:``}function M(e){if(e?.ifMatch)return{"If-Match":String(e.ifMatch)}}var N=class{constructor(e){this.meta={getTypes:async()=>{let e=this.getRoute(`metadata`),t=await this.fetch(`${this.baseUrl}${e}`);return this.unwrapResponse(t)},getItems:async(e,t)=>{let n=this.getRoute(`metadata`),r=new URLSearchParams;t?.packageId&&r.set(`package`,t.packageId);let i=r.toString(),a=`${this.baseUrl}${n}/${e}${i?`?${i}`:``}`,o=await this.fetch(a);return this.unwrapResponse(o)},getItem:async(e,t,n)=>{let r=this.getRoute(`metadata`),i=new URLSearchParams;n?.packageId&&i.set(`package`,n.packageId);let a=i.toString(),o=`${this.baseUrl}${r}/${encodeURIComponent(e)}/${encodeURIComponent(t)}${a?`?${a}`:``}`,s=await this.fetch(o);return this.unwrapResponse(s)},saveItem:async(e,t,n,r)=>{let i=this.getRoute(`metadata`),a=k(r),o=A(r),s=await this.fetch(`${this.baseUrl}${i}/${encodeURIComponent(e)}/${encodeURIComponent(t)}${a}`,{method:`PUT`,body:JSON.stringify(n),...o?{headers:o}:{}});return this.unwrapResponse(s)},deleteItem:async(e,t,n)=>{let r=this.getRoute(`metadata`),i=j(n),a=M(n),o=await this.fetch(`${this.baseUrl}${r}/${encodeURIComponent(e)}/${encodeURIComponent(t)}${i}`,{method:`DELETE`,...a?{headers:a}:{}});return this.unwrapResponse(o)},getHistory:async(e,t,n)=>{let r=this.getRoute(`metadata`),i=new URLSearchParams;n?.sinceSeq!==void 0&&i.set(`sinceSeq`,String(n.sinceSeq)),n?.limit!==void 0&&i.set(`limit`,String(n.limit));let a=i.toString(),o=`${this.baseUrl}${r}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/history${a?`?${a}`:``}`,s=await this.fetch(o);return this.unwrapResponse(s)},getCached:async(e,t)=>{let n=this.getRoute(`metadata`),r={};t?.ifNoneMatch&&(r[`If-None-Match`]=t.ifNoneMatch),t?.ifModifiedSince&&(r[`If-Modified-Since`]=t.ifModifiedSince);let i=await this.fetch(`${this.baseUrl}${n}/object/${e}`,{headers:r});if(i.status===304)return{notModified:!0,etag:t?.ifNoneMatch?{value:t.ifNoneMatch.replace(/^W\/|"/g,``),weak:t.ifNoneMatch.startsWith(`W/`)}:void 0};let a=await i.json(),o=i.headers.get(`ETag`),s=i.headers.get(`Last-Modified`);return{data:a,etag:o?{value:o.replace(/^W\/|"/g,``),weak:o.startsWith(`W/`)}:void 0,lastModified:s||void 0,notModified:!1}},getView:async(e,t=`list`)=>{let n=this.getRoute(`ui`),r=await this.fetch(`${this.baseUrl}${n}/view/${encodeURIComponent(e)}/${t}`);return this.unwrapResponse(r)},getPublished:async(e,t)=>{let n=this.getRoute(`metadata`),r=await this.fetch(`${this.baseUrl}${n}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/published`);return this.unwrapResponse(r)},listDrafts:async e=>{let t=this.getRoute(`metadata`),n=new URLSearchParams;e?.packageId&&n.set(`packageId`,e.packageId),e?.type&&n.set(`type`,e.type);let r=n.toString(),i=await this.fetch(`${this.baseUrl}${t}/_drafts${r?`?${r}`:``}`);return this.unwrapResponse(i)},migrateStored:async e=>{let t=this.getRoute(`metadata`),n=await this.fetch(`${this.baseUrl}${t}/_migrate-stored`,{method:`POST`,body:JSON.stringify({...e?.apply===!0?{apply:!0}:{},...e?.types&&e.types.length>0?{types:e.types}:{}})});return this.unwrapResponse(n)},getLegalNextStates:async(e,t,n)=>{let r=this.getRoute(`metadata`),i=n===void 0?``:`?from=${encodeURIComponent(n)}`,a=await this.fetch(`${this.baseUrl}${r}/object/${encodeURIComponent(e)}/state/${encodeURIComponent(t)}${i}`);return this.unwrapResponse(a)},getDiagnostics:async e=>{let t=this.getRoute(`metadata`),n=new URLSearchParams;e?.type&&n.set(`type`,e.type),e?.severity&&n.set(`severity`,e.severity),e?.packageId&&n.set(`package`,e.packageId);let r=n.toString(),i=await this.fetch(`${this.baseUrl}${t}/diagnostics${r?`?${r}`:``}`);return this.unwrapResponse(i)},getReferences:async(e,t)=>{let n=this.getRoute(`metadata`),r=await this.fetch(`${this.baseUrl}${n}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/references`);return this.unwrapResponse(r)},getBookTree:async(e,t)=>{let n=this.getRoute(`metadata`),r=t?.packageId?`?package=${encodeURIComponent(t.packageId)}`:``,i=await this.fetch(`${this.baseUrl}${n}/book/${encodeURIComponent(e)}/tree${r}`);return this.unwrapResponse(i)},getAudit:async(e,t,n)=>{let r=this.getRoute(`metadata`),i=n?.limit===void 0?``:`?limit=${n.limit}`,a=await this.fetch(`${this.baseUrl}${r}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/audit${i}`);return this.unwrapResponse(a)},publishItem:async(e,t,n)=>{let r=this.getRoute(`metadata`),i=await this.fetch(`${this.baseUrl}${r}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/publish`,{method:`POST`,body:JSON.stringify(n?.message?{message:n.message}:{})});return this.unwrapResponse(i)},rollbackItem:async(e,t,n,r)=>{let i=this.getRoute(`metadata`),a=await this.fetch(`${this.baseUrl}${i}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/rollback`,{method:`POST`,body:JSON.stringify({toVersion:n,...r?.message?{message:r.message}:{}})});return this.unwrapResponse(a)},diffItem:async(e,t,n)=>{let r=this.getRoute(`metadata`),i=new URLSearchParams;n?.from!==void 0&&i.set(`from`,String(n.from)),n?.to!==void 0&&i.set(`to`,String(n.to));let a=i.toString(),o=await this.fetch(`${this.baseUrl}${r}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/diff${a?`?${a}`:``}`);return this.unwrapResponse(o)}},this.analytics={query:async e=>{let t=this.getRoute(`analytics`),n=await this.fetch(`${this.baseUrl}${t}/query`,{method:`POST`,body:JSON.stringify(e)});return this.unwrapResponse(n)},meta:async e=>{let t=this.getRoute(`analytics`),n=e?`?cube=${encodeURIComponent(e)}`:``,r=await this.fetch(`${this.baseUrl}${t}/meta${n}`);return this.unwrapResponse(r)},explain:async e=>{let t=this.getRoute(`analytics`),n=await this.fetch(`${this.baseUrl}${t}/sql`,{method:`POST`,body:JSON.stringify(e)});return this.unwrapResponse(n)},queryDataset:async e=>{let t=this.getRoute(`analytics`);return(await this.fetch(`${this.baseUrl}${t}/dataset/query`,{method:`POST`,body:JSON.stringify(e)})).json()}},this.email={send:async e=>{let t=this.getRoute(`email`),n=await this.fetch(`${this.baseUrl}${t}/send`,{method:`POST`,body:JSON.stringify(e)});return this.unwrapResponse(n)}},this.datasources={external:{listTables:async(e,t)=>{let n=t?.schema?`?schema=${encodeURIComponent(t.schema)}`:``,r=this.getRoute(`datasources`),i=await this.fetch(`${this.baseUrl}${r}/${encodeURIComponent(e)}/external/tables${n}`);return this.unwrapResponse(i)},draft:async(e,t,n)=>{let r=this.getRoute(`datasources`),i=await this.fetch(`${this.baseUrl}${r}/${encodeURIComponent(e)}/external/tables/${encodeURIComponent(t)}/draft`,{method:`POST`,body:JSON.stringify(n??{})});return this.unwrapResponse(i)},import:async(e,t,n)=>{let r=this.getRoute(`datasources`),i=await this.fetch(`${this.baseUrl}${r}/${encodeURIComponent(e)}/external/tables/${encodeURIComponent(t)}/import`,{method:`POST`,body:JSON.stringify(n??{})});return this.unwrapResponse(i)},refreshCatalog:async e=>{let t=this.getRoute(`datasources`),n=await this.fetch(`${this.baseUrl}${t}/${encodeURIComponent(e)}/external/refresh-catalog`,{method:`POST`,body:JSON.stringify({})});return this.unwrapResponse(n)},validate:async e=>{let t=this.getRoute(`datasources`),n=await this.fetch(`${this.baseUrl}${t}/${encodeURIComponent(e)}/external/validate`,{method:`POST`,body:JSON.stringify({})});return this.unwrapResponse(n)}}},this.packages={list:async e=>{let t=this.getRoute(`packages`),n=new URLSearchParams;e?.status&&n.set(`status`,e.status),e?.type&&n.set(`type`,e.type),e?.enabled!==void 0&&n.set(`enabled`,String(e.enabled));let r=n.toString(),i=`${this.baseUrl}${t}${r?`?`+r:``}`,a=await this.fetch(i);return this.unwrapResponse(a)},get:async e=>{let t=this.getRoute(`packages`),n=await this.fetch(`${this.baseUrl}${t}/${encodeURIComponent(e)}`);return this.unwrapResponse(n)},install:async(e,t)=>{let n=this.getRoute(`packages`),r=await this.fetch(`${this.baseUrl}${n}`,{method:`POST`,body:JSON.stringify({manifest:e,settings:t?.settings,enableOnInstall:t?.enableOnInstall,...t?.overwrite===void 0?{}:{overwrite:t.overwrite}})});return this.unwrapResponse(r)},uninstall:async e=>{let t=this.getRoute(`packages`),n=await this.fetch(`${this.baseUrl}${t}/${encodeURIComponent(e)}`,{method:`DELETE`});return this.unwrapResponse(n)},enable:async e=>{let t=this.getRoute(`packages`),n=await this.fetch(`${this.baseUrl}${t}/${encodeURIComponent(e)}/enable`,{method:`PATCH`});return this.unwrapResponse(n)},disable:async e=>{let t=this.getRoute(`packages`),n=await this.fetch(`${this.baseUrl}${t}/${encodeURIComponent(e)}/disable`,{method:`PATCH`});return this.unwrapResponse(n)},update:async(e,t)=>{let n=this.getRoute(`packages`),r=await this.fetch(`${this.baseUrl}${n}/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)});return this.unwrapResponse(r)},publish:async(e,t)=>{let n=this.getRoute(`packages`),r=await this.fetch(`${this.baseUrl}${n}/${encodeURIComponent(e)}/publish`,{method:`POST`,body:JSON.stringify(t??{})});return this.unwrapResponse(r)},publishDrafts:async(e,t)=>{let n=this.getRoute(`packages`),r=await this.fetch(`${this.baseUrl}${n}/${encodeURIComponent(e)}/publish-drafts`,{method:`POST`,body:JSON.stringify(t??{})});return this.unwrapResponse(r)},discardDrafts:async(e,t)=>{let n=this.getRoute(`packages`),r=await this.fetch(`${this.baseUrl}${n}/${encodeURIComponent(e)}/discard-drafts`,{method:`POST`,body:JSON.stringify(t??{})});return this.unwrapResponse(r)},listCommits:async e=>{let t=this.getRoute(`packages`),n=await this.fetch(`${this.baseUrl}${t}/${encodeURIComponent(e)}/commits`);return this.unwrapResponse(n)},revertCommit:async(e,t,n)=>{let r=this.getRoute(`packages`),i=await this.fetch(`${this.baseUrl}${r}/${encodeURIComponent(e)}/commits/${encodeURIComponent(t)}/revert`,{method:`POST`,body:JSON.stringify(n??{})});return this.unwrapResponse(i)},rollback:async(e,t,n)=>{let r=this.getRoute(`packages`),i=await this.fetch(`${this.baseUrl}${r}/${encodeURIComponent(e)}/rollback`,{method:`POST`,body:JSON.stringify({commitId:t,...n??{}})});return this.unwrapResponse(i)},revert:async e=>{let t=this.getRoute(`packages`),n=await this.fetch(`${this.baseUrl}${t}/${encodeURIComponent(e)}/revert`,{method:`POST`});return this.unwrapResponse(n)},export:async e=>{let t=this.getRoute(`packages`),n=await this.fetch(`${this.baseUrl}${t}/${encodeURIComponent(e)}/export`);return this.unwrapResponse(n)},adoptOrphans:async(e,t)=>{let n=this.getRoute(`packages`),r=await this.fetch(`${this.baseUrl}${n}/${encodeURIComponent(e)}/adopt-orphans`,{method:`POST`,body:JSON.stringify(t??{})});return this.unwrapResponse(r)},duplicate:async(e,t,n)=>{let r=this.getRoute(`packages`),i=await this.fetch(`${this.baseUrl}${r}/${encodeURIComponent(e)}/duplicate`,{method:`POST`,body:JSON.stringify({targetPackageId:t,...n??{}})});return this.unwrapResponse(i)}},this.environments={list:async e=>{let t=new URLSearchParams;e?.organization_id&&t.set(`organizationId`,e.organization_id),e?.env_type&&t.set(`envType`,e.env_type),e?.status&&t.set(`status`,e.status);let n=t.toString(),r=`${this.baseUrl}/api/v1/cloud/environments${n?`?`+n:``}`,i=await this.fetch(r);return this.unwrapResponse(i)},get:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}`);return this.unwrapResponse(t)},create:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments`,{method:`POST`,body:JSON.stringify(e)});return this.unwrapResponse(t)},update:async(e,t)=>{let n=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)});return this.unwrapResponse(n)},delete:async(e,t)=>{let n=t?.force?`?force=1`:``,r=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}${n}`,{method:`DELETE`});return this.unwrapResponse(r)},activate:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}/activate`,{method:`POST`});return this.unwrapResponse(t)},rotateCredential:async(e,t)=>{let n=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}/credentials/rotate`,{method:`POST`,body:JSON.stringify({plaintext:t})});return this.unwrapResponse(n)},updateHostname:async(e,t)=>{let n=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}/hostname`,{method:`POST`,body:JSON.stringify({hostname:t})});return this.unwrapResponse(n)},updateVisibility:async(e,t)=>{let n=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({visibility:t})});return this.unwrapResponse(n)},listRevisions:async(e,t)=>{let n=new URLSearchParams;t?.limit&&n.set(`limit`,String(t.limit)),t?.cursor&&n.set(`cursor`,t.cursor),t?.branch&&n.set(`branch`,t.branch);let r=n.toString(),i=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}/revisions${r?`?${r}`:``}`);return this.unwrapResponse(i)},listBranches:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}/branches`);return this.unwrapResponse(t)},renameBranch:async(e,t,n)=>{let r=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}/branches/${encodeURIComponent(t)}/rename`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({newName:n})});return this.unwrapResponse(r)},deleteBranch:async(e,t)=>{let n=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}/branches/${encodeURIComponent(t)}`,{method:`DELETE`});return this.unwrapResponse(n)},retryProvisioning:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}/retry`,{method:`POST`});return this.unwrapResponse(t)},listDrivers:async()=>{let e=await this.fetch(`${this.baseUrl}/api/v1/cloud/drivers`);return this.unwrapResponse(e)},packages:{list:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}/packages`);return this.unwrapResponse(t)},install:async(e,t)=>{let n=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}/packages`,{method:`POST`,body:JSON.stringify(t)});return this.unwrapResponse(n)},get:async(e,t)=>{let n=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}/packages/${encodeURIComponent(t)}`);return this.unwrapResponse(n)},enable:async(e,t)=>{let n=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}/packages/${encodeURIComponent(t)}/enable`,{method:`PATCH`});return this.unwrapResponse(n)},disable:async(e,t)=>{let n=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}/packages/${encodeURIComponent(t)}/disable`,{method:`PATCH`});return this.unwrapResponse(n)},uninstall:async(e,t)=>{let n=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}/packages/${encodeURIComponent(t)}`,{method:`DELETE`});return this.unwrapResponse(n)},upgrade:async(e,t,n)=>{let r=await this.fetch(`${this.baseUrl}/api/v1/cloud/environments/${encodeURIComponent(e)}/packages/${encodeURIComponent(t)}/upgrade`,{method:`POST`,body:JSON.stringify({targetVersion:n})});return this.unwrapResponse(r)}}},this.organizations={list:async()=>{let e=this.getRoute(`auth`),t=await(await this.fetch(`${this.baseUrl}${e}/organization/list`)).json();return{organizations:Array.isArray(t)?t:t?.data??[]}},create:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/organization/create`,{method:`POST`,body:JSON.stringify(e)})).json()},update:async(e,t)=>{let n=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${n}/organization/update`,{method:`POST`,body:JSON.stringify({organizationId:e,data:t})})).json()},setActive:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/organization/set-active`,{method:`POST`,body:JSON.stringify({organizationId:e})})).json()},get:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/organization/get-full-organization?organizationId=${encodeURIComponent(e)}`)).json()},listMembers:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/organization/list-members?organizationId=${encodeURIComponent(e)}`)).json()},invite:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/organization/invite-member`,{method:`POST`,body:JSON.stringify(e)})).json()},leave:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/organization/leave`,{method:`POST`,body:JSON.stringify({organizationId:e})})).json()},delete:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/organization/delete`,{method:`POST`,body:JSON.stringify({organizationId:e})})).json()},removeMember:async(e,t)=>{let n=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${n}/organization/remove-member`,{method:`POST`,body:JSON.stringify({memberIdOrEmail:t.memberIdOrEmail,organizationId:e})})).json()},updateMemberRole:async(e,t)=>{let n=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${n}/organization/update-member-role`,{method:`POST`,body:JSON.stringify({memberId:t.memberId,role:t.role,organizationId:e})})).json()},getActiveMember:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/organization/get-active-member?organizationId=${encodeURIComponent(e)}`)).json()},invitations:{list:async e=>{let t=this.getRoute(`auth`),n=await(await this.fetch(`${this.baseUrl}${t}/organization/list-invitations?organizationId=${encodeURIComponent(e)}`)).json();return{invitations:Array.isArray(n)?n:n?.data??n?.invitations??[]}},listMine:async()=>{let e=this.getRoute(`auth`),t=await(await this.fetch(`${this.baseUrl}${e}/organization/list-user-invitations`)).json();return{invitations:Array.isArray(t)?t:t?.data??t?.invitations??[]}},cancel:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/organization/cancel-invitation`,{method:`POST`,body:JSON.stringify({invitationId:e})})).json()},accept:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/organization/accept-invitation`,{method:`POST`,body:JSON.stringify({invitationId:e})})).json()},reject:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/organization/reject-invitation`,{method:`POST`,body:JSON.stringify({invitationId:e})})).json()},resend:async e=>{if(e.id)try{await this.organizations.invitations.cancel(e.id)}catch{}return this.organizations.invite({email:e.email,role:e.role??`member`,organizationId:e.organizationId})}},teams:{list:async e=>{let t=this.getRoute(`auth`),n=await(await this.fetch(`${this.baseUrl}${t}/organization/list-teams?organizationId=${encodeURIComponent(e)}`)).json();return{teams:Array.isArray(n)?n:n?.data??n?.teams??[]}},create:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/organization/create-team`,{method:`POST`,body:JSON.stringify(e)})).json()},update:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/organization/update-team`,{method:`POST`,body:JSON.stringify(e)})).json()},delete:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/organization/remove-team`,{method:`POST`,body:JSON.stringify(e)})).json()},listMembers:async e=>{let t=this.getRoute(`auth`),n=await(await this.fetch(`${this.baseUrl}${t}/organization/list-team-members?teamId=${encodeURIComponent(e)}`)).json();return{members:Array.isArray(n)?n:n?.data??n?.members??[]}},addMember:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/organization/add-team-member`,{method:`POST`,body:JSON.stringify(e)})).json()},removeMember:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/organization/remove-team-member`,{method:`POST`,body:JSON.stringify(e)})).json()}}},this.oauth={applications:{register:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/oauth2/create-client`,{method:`POST`,body:JSON.stringify(e)})).json()},get:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/oauth2/get-client?client_id=${encodeURIComponent(e)}`)).json()},getPublic:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/oauth2/public-client?client_id=${encodeURIComponent(e)}`)).json()},list:async()=>{let e=this.getRoute(`auth`),t=await(await this.fetch(`${this.baseUrl}${e}/oauth2/get-clients`)).json();return{applications:Array.isArray(t)?t:t?.clients??t?.data??[]}},delete:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/oauth2/delete-client`,{method:`POST`,body:JSON.stringify({client_id:e})})).json()}},consent:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/oauth2/consent`,{method:`POST`,body:JSON.stringify(e)})).json()}},this.auth={getConfig:async()=>{let e=this.getRoute(`auth`),t=await this.fetch(`${this.baseUrl}${e}/config`);return this.unwrapResponse(t)},login:async e=>{let t=this.getRoute(`auth`),n=await this.fetch(`${this.baseUrl}${t}/sign-in/email`,{method:`POST`,headers:{Origin:this.baseUrl},body:JSON.stringify(e)}),r=await n.json().catch(()=>({}));if(!n.ok){let e=r?.message||r?.error?.message||`Login failed (HTTP ${n.status})`,t=Error(e);throw r?.code&&(t.code=r.code),t.status=n.status,t}let i=r&&(r.data??(r.token||r.user?{token:r.token,user:r.user}:void 0)),a=i?{...r,data:i}:r;return a.data?.token&&(this.token=a.data.token),a},logout:async()=>{let e=this.getRoute(`auth`);await this.fetch(`${this.baseUrl}${e}/sign-out`,{method:`POST`,headers:{"Content-Type":`application/json`,Origin:this.baseUrl},body:`{}`}),this.token=void 0},me:async()=>{let e=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${e}/get-session`,{headers:{Origin:this.baseUrl}})).json()},register:async e=>{let t=this.getRoute(`auth`),n=await(await this.fetch(`${this.baseUrl}${t}/sign-up/email`,{method:`POST`,headers:{Origin:this.baseUrl},body:JSON.stringify(e)})).json(),r=n&&(n.data??(n.token||n.user?{token:n.token,user:n.user}:void 0)),i=r?{...n,data:r}:n;return i.data?.token&&(this.token=i.data.token),i},signInWithProvider:async(e,t)=>{if(typeof window>`u`)throw Error(`signInWithProvider requires a browser environment`);let n=this.getRoute(`auth`),r=t?.callbackURL??window.location.href,i=t?.type===`oidc`,a=i?`/sign-in/oauth2`:`/sign-in/social`,o=i?{providerId:e,callbackURL:r}:{provider:e,callbackURL:r};t?.errorCallbackURL&&(o.errorCallbackURL=t.errorCallbackURL);let s=await(await this.fetch(`${this.baseUrl}${n}${a}`,{method:`POST`,body:JSON.stringify(o)})).json(),c=s?.url??s?.data?.url;if(c)window.location.assign(c);else throw Error(`signInWithProvider: no redirect URL returned for provider "${e}"`)},refreshToken:async e=>{let t=this.getRoute(`auth`),n=await(await this.fetch(`${this.baseUrl}${t}/get-session`,{method:`GET`})).json();return n.data?.token&&(this.token=n.data.token),n},bootstrapStatus:async()=>{let e=this.getRoute(`auth`),t=await(await this.fetch(`${this.baseUrl}${e}/bootstrap-status`)).json();return{hasOwner:!!(t?.data??t)?.hasOwner}},updateUser:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/update-user`,{method:`POST`,body:JSON.stringify(e)})).json()},changePassword:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/change-password`,{method:`POST`,body:JSON.stringify(e)})).json()},setInitialPassword:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/set-initial-password`,{method:`POST`,body:JSON.stringify(e)})).json()},changeEmail:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/change-email`,{method:`POST`,body:JSON.stringify(e)})).json()},sendVerificationEmail:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/send-verification-email`,{method:`POST`,body:JSON.stringify(e)})).json()},verifyEmail:async e=>{let t=this.getRoute(`auth`),n=new URL(`${this.baseUrl}${t}/verify-email`);return n.searchParams.set(`token`,e.token),e.callbackURL&&n.searchParams.set(`callbackURL`,e.callbackURL),(await this.fetch(n.toString())).json()},deleteUser:async e=>{let t=this.getRoute(`auth`),n=await this.fetch(`${this.baseUrl}${t}/delete-user`,{method:`POST`,body:JSON.stringify(e)});return this.token=void 0,n.json()},sessions:{list:async()=>{let e=this.getRoute(`auth`),t=await(await this.fetch(`${this.baseUrl}${e}/list-sessions`)).json();return{sessions:Array.isArray(t)?t:t?.data??t?.sessions??[]}},revoke:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/revoke-session`,{method:`POST`,body:JSON.stringify({token:e})})).json()},revokeOthers:async()=>{let e=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${e}/revoke-other-sessions`,{method:`POST`,body:`{}`})).json()},revokeAll:async()=>{let e=this.getRoute(`auth`),t=await this.fetch(`${this.baseUrl}${e}/revoke-sessions`,{method:`POST`,body:`{}`});return this.token=void 0,t.json()}},twoFactor:{enable:async e=>{let t=this.getRoute(`auth`),n=await(await this.fetch(`${this.baseUrl}${t}/two-factor/enable`,{method:`POST`,body:JSON.stringify(e)})).json();return n?.data??n},verifyTotp:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/two-factor/verify-totp`,{method:`POST`,body:JSON.stringify(e)})).json()},disable:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/two-factor/disable`,{method:`POST`,body:JSON.stringify(e)})).json()},generateBackupCodes:async e=>{let t=this.getRoute(`auth`),n=await(await this.fetch(`${this.baseUrl}${t}/two-factor/generate-backup-codes`,{method:`POST`,body:JSON.stringify(e)})).json();return n?.data??n},verifyBackupCode:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/two-factor/verify-backup-code`,{method:`POST`,body:JSON.stringify(e)})).json()}},accounts:{list:async()=>{let e=this.getRoute(`auth`),t=await(await this.fetch(`${this.baseUrl}${e}/list-accounts`)).json();return{accounts:Array.isArray(t)?t:t?.data??t?.accounts??[]}},unlink:async e=>{let t=this.getRoute(`auth`);return(await this.fetch(`${this.baseUrl}${t}/unlink-account`,{method:`POST`,body:JSON.stringify(e)})).json()},linkSocial:async e=>{let t=this.getRoute(`auth`),n=e.callbackURL??(typeof window<`u`?window.location.href:void 0),r=await(await this.fetch(`${this.baseUrl}${t}/link-social`,{method:`POST`,body:JSON.stringify({provider:e.provider,callbackURL:n})})).json();return r?.data??r}}},this.storage={upload:async(e,t=`user`)=>{let n={filename:e.name,mimeType:e.type,size:e.size,scope:t},r=this.getRoute(`storage`),{data:i}=await(await this.fetch(`${this.baseUrl}${r}/upload/presigned`,{method:`POST`,body:JSON.stringify(n)})).json(),a=await this.fetchImpl(i.uploadUrl,{method:i.method,headers:i.headers,body:e});if(!a.ok)throw Error(`Storage Upload Failed: ${a.statusText}`);let o={fileId:i.fileId},s=await(await this.fetch(`${this.baseUrl}${r}/upload/complete`,{method:`POST`,body:JSON.stringify(o)})).json();return s?.data&&s.data.fileId==null&&(s.data.fileId=i.fileId),s},getDownloadUrl:async e=>{let t=this.getRoute(`storage`),n=await this.fetch(`${this.baseUrl}${t}/files/${e}/url`),{url:r}=await this.unwrapResponse(n);return r},getPresignedUrl:async e=>{let t=this.getRoute(`storage`);return(await this.fetch(`${this.baseUrl}${t}/upload/presigned`,{method:`POST`,body:JSON.stringify(e)})).json()},initChunkedUpload:async e=>{let t=this.getRoute(`storage`);return(await this.fetch(`${this.baseUrl}${t}/upload/chunked`,{method:`POST`,body:JSON.stringify(e)})).json()},uploadPart:async(e,t,n,r)=>{let i=this.getRoute(`storage`);return(await this.fetch(`${this.baseUrl}${i}/upload/chunked/${e}/chunk/${t}`,{method:`PUT`,headers:{"x-resume-token":n},body:r})).json()},completeChunkedUpload:async e=>{let t=this.getRoute(`storage`);return(await this.fetch(`${this.baseUrl}${t}/upload/chunked/${e.uploadId}/complete`,{method:`POST`,body:JSON.stringify(e)})).json()},resumeUpload:async(e,t,n,r)=>{let i=this.getRoute(`storage`),{totalChunks:a,uploadedChunks:o,status:s,expiresAt:c}=(await(await this.fetch(`${this.baseUrl}${i}/upload/chunked/${e}/progress`)).json()).data;if(s===`expired`){let t=Error(`Upload session ${e} expired${c?` at ${c}`:``}; start a new chunked upload`);throw t.code=`UPLOAD_SESSION_EXPIRED`,t.httpStatus=410,t.details={uploadId:e,expiresAt:c},t}let l=[],u=t instanceof ArrayBuffer?t:await t.arrayBuffer();for(let t=o;t<a;t++){let i=t*n,a=Math.min(i+n,u.byteLength),o=new Blob([u.slice(i,a)]),s=await this.storage.uploadPart(e,t,r,o);l.push({chunkIndex:t,eTag:s.data.eTag})}return this.storage.completeChunkedUpload({uploadId:e,parts:l})}},this.automation={trigger:async(e,t)=>{let n=this.getRoute(`automation`),r=await this.fetch(`${this.baseUrl}${n}/trigger/${e}`,{method:`POST`,body:JSON.stringify(t)});return this.unwrapResponse(r)},list:async()=>{let e=this.getRoute(`automation`),t=await this.fetch(`${this.baseUrl}${e}`);return this.unwrapResponse(t)},get:async e=>{let t=this.getRoute(`automation`),n=await this.fetch(`${this.baseUrl}${t}/${e}`);return this.unwrapResponse(n)},create:async(e,t)=>{let n=this.getRoute(`automation`),r=await this.fetch(`${this.baseUrl}${n}`,{method:`POST`,body:JSON.stringify({name:e,...t})});return this.unwrapResponse(r)},update:async(e,t)=>{let n=this.getRoute(`automation`),r=await this.fetch(`${this.baseUrl}${n}/${e}`,{method:`PUT`,body:JSON.stringify({definition:t})});return this.unwrapResponse(r)},delete:async e=>{let t=this.getRoute(`automation`),n=await this.fetch(`${this.baseUrl}${t}/${e}`,{method:`DELETE`});return this.unwrapResponse(n)},listActions:async e=>{let t=this.getRoute(`automation`),n=new URLSearchParams;e?.paradigm&&n.set(`paradigm`,e.paradigm),e?.source&&n.set(`source`,e.source),e?.category&&n.set(`category`,e.category);let r=n.toString(),i=await this.fetch(`${this.baseUrl}${t}/actions${r?`?${r}`:``}`);return this.unwrapResponse(i)},listConnectors:async e=>{let t=this.getRoute(`automation`),n=e?.type?`?type=${encodeURIComponent(e.type)}`:``,r=await this.fetch(`${this.baseUrl}${t}/connectors${n}`);return this.unwrapResponse(r)},getRuntimeStatus:async()=>{let e=this.getRoute(`automation`),t=await this.fetch(`${this.baseUrl}${e}/_status`);return this.unwrapResponse(t)},toggle:async(e,t)=>{let n=this.getRoute(`automation`),r=await this.fetch(`${this.baseUrl}${n}/${e}/toggle`,{method:`POST`,body:JSON.stringify({enabled:t})});return this.unwrapResponse(r)},runs:{list:async(e,t)=>{let n=this.getRoute(`automation`),r=new URLSearchParams;t?.limit&&r.set(`limit`,String(t.limit)),t?.cursor&&r.set(`cursor`,t.cursor);let i=r.toString(),a=await this.fetch(`${this.baseUrl}${n}/${e}/runs${i?`?${i}`:``}`);return this.unwrapResponse(a)},get:async(e,t)=>{let n=this.getRoute(`automation`),r=await this.fetch(`${this.baseUrl}${n}/${e}/runs/${t}`);return this.unwrapResponse(r)}},getFlow:async e=>{let t=this.getRoute(`automation`),n=await this.fetch(`${this.baseUrl}${t}/${encodeURIComponent(e)}`);return this.unwrapResponse(n)},execute:async(e,t)=>{let n=this.getRoute(`automation`),r=await this.fetch(`${this.baseUrl}${n}/${encodeURIComponent(e)}/trigger`,{method:`POST`,body:JSON.stringify(t??{})});return this.unwrapResponse(r)},listRuns:async(e,t)=>{let n=this.getRoute(`automation`),r=new URLSearchParams;t?.limit!=null&&r.set(`limit`,String(t.limit)),t?.cursor&&r.set(`cursor`,t.cursor),t?.status&&r.set(`status`,t.status);let i=r.toString(),a=await this.fetch(`${this.baseUrl}${n}/${encodeURIComponent(e)}/runs${i?`?${i}`:``}`);return this.unwrapResponse(a)},getRun:async(e,t)=>{let n=this.getRoute(`automation`),r=await this.fetch(`${this.baseUrl}${n}/${encodeURIComponent(e)}/runs/${encodeURIComponent(t)}`);return this.unwrapResponse(r)},resume:async(e,t,n)=>{let r=this.getRoute(`automation`),i=await this.fetch(`${this.baseUrl}${r}/${encodeURIComponent(e)}/runs/${encodeURIComponent(t)}/resume`,{method:`POST`,body:JSON.stringify(n??{})});return this.unwrapResponse(i)},getScreen:async(e,t)=>{let n=this.getRoute(`automation`),r=await this.fetch(`${this.baseUrl}${n}/${encodeURIComponent(e)}/runs/${encodeURIComponent(t)}/screen`);return this.unwrapResponse(r)}},this.actions={invoke:async(e,t,n)=>{try{let r=await this.fetch(`${this.baseUrl}/api/v1/actions/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{method:`POST`,body:JSON.stringify({recordId:n?.recordId,params:n?.params??{}})});return O(await this.unwrapResponse(r))}catch(e){return{success:!1,error:D(e)}}},invokeGlobal:async(e,t)=>this.actions.invoke(`global`,e,t)},this.keys={create:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/keys`,{method:`POST`,body:JSON.stringify({...e?.name==null?{}:{name:e.name},...e?.expiresAt==null?{}:{expires_at:e.expiresAt}})});return this.unwrapResponse(t)}},this.shareLinks={create:async(e,t,n)=>{let r=await this.fetch(`${this.baseUrl}/api/v1/share-links`,{method:`POST`,body:JSON.stringify({object:e,recordId:t,...n??{}})});return this.unwrapResponse(r)},list:async e=>{let t=new URLSearchParams;e?.object&&t.set(`object`,e.object),e?.recordId&&t.set(`recordId`,e.recordId),e?.includeRevoked&&t.set(`includeRevoked`,`true`);let n=t.toString(),r=await this.fetch(`${this.baseUrl}/api/v1/share-links${n?`?${n}`:``}`);return this.unwrapResponse(r)},revoke:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/share-links/${encodeURIComponent(e)}`,{method:`DELETE`});return this.unwrapResponse(t)}},this.security={explain:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/security/explain`,{method:`POST`,body:JSON.stringify(e)});return this.unwrapResponse(t)},describeDelegableScope:async()=>{let e=await this.fetch(`${this.baseUrl}/api/v1/security/my-delegable-scope`);return this.unwrapResponse(e)},suggestedBindings:{list:async e=>{let t=new URLSearchParams;e?.status&&t.set(`status`,e.status),e?.packageId&&t.set(`packageId`,e.packageId);let n=t.toString(),r=await this.fetch(`${this.baseUrl}/api/v1/security/suggested-bindings${n?`?${n}`:``}`);return this.unwrapResponse(r)},confirm:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/security/suggested-bindings/${encodeURIComponent(e)}/confirm`,{method:`POST`});return this.unwrapResponse(t)},dismiss:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/security/suggested-bindings/${encodeURIComponent(e)}/dismiss`,{method:`POST`});return this.unwrapResponse(t)}}},this.approvals={listRequests:async e=>{let t=this.getRoute(`approvals`),n=new URLSearchParams;e?.object&&n.set(`object`,e.object),e?.recordId&&n.set(`recordId`,e.recordId),e?.status&&n.set(`status`,Array.isArray(e.status)?e.status.join(`,`):e.status),e?.approverId&&n.set(`approverId`,Array.isArray(e.approverId)?e.approverId.join(`,`):e.approverId),e?.submitterId&&n.set(`submitterId`,e.submitterId);let r=n.toString(),i=await this.fetch(`${this.baseUrl}${t}/requests${r?`?${r}`:``}`),a=await this.unwrapResponse(i);return Array.isArray(a)?a:a?.data??[]},getRequest:async e=>{let t=this.getRoute(`approvals`),n=await this.fetch(`${this.baseUrl}${t}/requests/${encodeURIComponent(e)}`);return this.unwrapResponse(n)},approve:async(e,t)=>{let n=this.getRoute(`approvals`),r=await this.fetch(`${this.baseUrl}${n}/requests/${encodeURIComponent(e)}/approve`,{method:`POST`,body:JSON.stringify({actorId:t?.actorId,comment:t?.comment,attachments:t?.attachments})});return this.unwrapResponse(r)},reject:async(e,t)=>{let n=this.getRoute(`approvals`),r=await this.fetch(`${this.baseUrl}${n}/requests/${encodeURIComponent(e)}/reject`,{method:`POST`,body:JSON.stringify({actorId:t?.actorId,comment:t?.comment,attachments:t?.attachments})});return this.unwrapResponse(r)},reassign:async(e,t)=>{let n=this.getRoute(`approvals`),r=await this.fetch(`${this.baseUrl}${n}/requests/${encodeURIComponent(e)}/reassign`,{method:`POST`,body:JSON.stringify({to:t.to,from:t.from,actorId:t.actorId,comment:t.comment})});return this.unwrapResponse(r)},recall:async(e,t)=>{let n=this.getRoute(`approvals`),r=await this.fetch(`${this.baseUrl}${n}/requests/${encodeURIComponent(e)}/recall`,{method:`POST`,body:JSON.stringify({actorId:t?.actorId,comment:t?.comment})});return this.unwrapResponse(r)},revise:async(e,t)=>{let n=this.getRoute(`approvals`),r=await this.fetch(`${this.baseUrl}${n}/requests/${encodeURIComponent(e)}/revise`,{method:`POST`,body:JSON.stringify({actorId:t?.actorId,comment:t?.comment})});return this.unwrapResponse(r)},resubmit:async(e,t)=>{let n=this.getRoute(`approvals`),r=await this.fetch(`${this.baseUrl}${n}/requests/${encodeURIComponent(e)}/resubmit`,{method:`POST`,body:JSON.stringify({actorId:t?.actorId,comment:t?.comment})});return this.unwrapResponse(r)},remind:async(e,t)=>{let n=this.getRoute(`approvals`),r=await this.fetch(`${this.baseUrl}${n}/requests/${encodeURIComponent(e)}/remind`,{method:`POST`,body:JSON.stringify({actorId:t?.actorId,comment:t?.comment})});return this.unwrapResponse(r)},requestInfo:async(e,t)=>{let n=this.getRoute(`approvals`),r=await this.fetch(`${this.baseUrl}${n}/requests/${encodeURIComponent(e)}/request-info`,{method:`POST`,body:JSON.stringify({actorId:t?.actorId,comment:t?.comment})});return this.unwrapResponse(r)},comment:async(e,t)=>{let n=this.getRoute(`approvals`),r=await this.fetch(`${this.baseUrl}${n}/requests/${encodeURIComponent(e)}/comment`,{method:`POST`,body:JSON.stringify({actorId:t.actorId,comment:t.comment,attachments:t.attachments})});return this.unwrapResponse(r)},listActions:async e=>{let t=this.getRoute(`approvals`),n=await this.fetch(`${this.baseUrl}${t}/requests/${encodeURIComponent(e)}/actions`),r=await this.unwrapResponse(n);return Array.isArray(r)?r:r?.data??[]}},this.shares={list:async(e,t)=>{let n=this.getRoute(`data`),r=await this.fetch(`${this.baseUrl}${n}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/shares`),i=await this.unwrapResponse(r);return Array.isArray(i)?i:i?.data??[]},grant:async(e,t,n)=>{let r=this.getRoute(`data`),i=await this.fetch(`${this.baseUrl}${r}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/shares`,{method:`POST`,body:JSON.stringify(n)});return this.unwrapResponse(i)},revoke:async(e,t,n)=>{let r=this.getRoute(`data`),i=await this.fetch(`${this.baseUrl}${r}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/shares/${encodeURIComponent(n)}`,{method:`DELETE`});return i.status===204?{deleted:!0}:this.unwrapResponse(i)},rules:{list:async e=>{let t=new URLSearchParams;e?.object&&t.set(`object`,e.object),e?.activeOnly!==void 0&&t.set(`activeOnly`,String(e.activeOnly));let n=t.toString(),r=await this.fetch(`${this.baseUrl}/api/v1/sharing/rules${n?`?${n}`:``}`),i=await this.unwrapResponse(r);return Array.isArray(i)?i:i?.data??[]},save:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/sharing/rules`,{method:`POST`,body:JSON.stringify(e)});return this.unwrapResponse(t)},get:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/sharing/rules/${encodeURIComponent(e)}`);return this.unwrapResponse(t)},delete:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/sharing/rules/${encodeURIComponent(e)}`,{method:`DELETE`});return t.status===204?{deleted:!0}:this.unwrapResponse(t)},evaluate:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/sharing/rules/${encodeURIComponent(e)}/evaluate`,{method:`POST`,body:JSON.stringify({})});return this.unwrapResponse(t)}}},this.search=async(e,t)=>{let n=new URLSearchParams;n.set(`q`,e),t?.objects?.length&&n.set(`objects`,t.objects.join(`,`)),t?.limit!==void 0&&n.set(`limit`,String(t.limit)),t?.perObject!==void 0&&n.set(`perObject`,String(t.perObject));let r=await this.fetch(`${this.baseUrl}/api/v1/search?${n.toString()}`);return this.unwrapResponse(r)},this.reports={list:async e=>{let t=new URLSearchParams;e?.object&&t.set(`object`,e.object),e?.ownerId&&t.set(`ownerId`,e.ownerId);let n=t.toString(),r=await this.fetch(`${this.baseUrl}/api/v1/reports${n?`?${n}`:``}`),i=await this.unwrapResponse(r);return Array.isArray(i)?i:i?.data??[]},save:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/reports`,{method:`POST`,body:JSON.stringify(e??{})});return this.unwrapResponse(t)},get:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/reports/${encodeURIComponent(e)}`);return this.unwrapResponse(t)},delete:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/reports/${encodeURIComponent(e)}`,{method:`DELETE`});return t.status===204?{deleted:!0}:this.unwrapResponse(t)},run:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/reports/${encodeURIComponent(e)}/run`,{method:`POST`,body:JSON.stringify({})});return this.unwrapResponse(t)},schedule:async(e,t)=>{let n=await this.fetch(`${this.baseUrl}/api/v1/reports/${encodeURIComponent(e)}/schedule`,{method:`POST`,body:JSON.stringify(t)});return this.unwrapResponse(n)},listSchedules:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/reports/${encodeURIComponent(e)}/schedules`),n=await this.unwrapResponse(t);return Array.isArray(n)?n:n?.data??[]},unschedule:async e=>{let t=await this.fetch(`${this.baseUrl}/api/v1/reports/schedules/${encodeURIComponent(e)}`,{method:`DELETE`});return t.status===204?{deleted:!0}:this.unwrapResponse(t)}},this.notifications={list:async e=>{let t=this.getRoute(`notifications`),n=new URLSearchParams;e?.read!==void 0&&n.set(`read`,String(e.read)),e?.type&&n.set(`type`,e.type),e?.limit&&n.set(`limit`,String(e.limit));let r=n.toString(),i=await this.fetch(`${this.baseUrl}${t}${r?`?${r}`:``}`);return this.unwrapResponse(i)},markRead:async e=>{let t=this.getRoute(`notifications`),n=await this.fetch(`${this.baseUrl}${t}/read`,{method:`POST`,body:JSON.stringify({ids:e})});return this.unwrapResponse(n)},markAllRead:async()=>{let e=this.getRoute(`notifications`),t=await this.fetch(`${this.baseUrl}${e}/read/all`,{method:`POST`});return this.unwrapResponse(t)}},this.ai={chat:async e=>{let t=this.getRoute(`ai`),n=await this.fetch(`${this.baseUrl}${t}/chat`,{method:`POST`,body:JSON.stringify({...e,stream:!1})});return this.unwrapResponse(n)},chatStream:async e=>{let t=this.getRoute(`ai`);return E(await this.fetch(`${this.baseUrl}${t}/chat`,{method:`POST`,headers:{Accept:`text/event-stream`},body:JSON.stringify({...e,stream:!0})}))},complete:async e=>{let t=this.getRoute(`ai`),n=await this.fetch(`${this.baseUrl}${t}/complete`,{method:`POST`,body:JSON.stringify(e)});return this.unwrapResponse(n)},models:async()=>{let e=this.getRoute(`ai`),t=await this.fetch(`${this.baseUrl}${e}/models`);return this.unwrapResponse(t)},conversations:{create:async e=>{let t=this.getRoute(`ai`),n=await this.fetch(`${this.baseUrl}${t}/conversations`,{method:`POST`,body:JSON.stringify(e??{})});return this.unwrapResponse(n)},list:async e=>{let t=this.getRoute(`ai`),n=new URLSearchParams;e?.agentId&&n.set(`agentId`,e.agentId),e?.limit!==void 0&&n.set(`limit`,String(e.limit)),e?.cursor&&n.set(`cursor`,e.cursor);let r=n.toString(),i=await this.fetch(`${this.baseUrl}${t}/conversations${r?`?${r}`:``}`);return(await this.unwrapResponse(i))?.conversations??[]},get:async e=>{let t=this.getRoute(`ai`),n=await this.fetch(`${this.baseUrl}${t}/conversations/${encodeURIComponent(e)}`);return this.unwrapResponse(n)},update:async(e,t)=>{let n=this.getRoute(`ai`),r=await this.fetch(`${this.baseUrl}${n}/conversations/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)});return this.unwrapResponse(r)},delete:async e=>{let t=this.getRoute(`ai`),n=await this.fetch(`${this.baseUrl}${t}/conversations/${encodeURIComponent(e)}`,{method:`DELETE`});return n.status===204?{deleted:!0}:this.unwrapResponse(n)},addMessage:async(e,t)=>{let n=this.getRoute(`ai`),r=await this.fetch(`${this.baseUrl}${n}/conversations/${encodeURIComponent(e)}/messages`,{method:`POST`,body:JSON.stringify(t)});return this.unwrapResponse(r)}},agents:{list:async()=>{let e=this.getRoute(`ai`),t=await this.fetch(`${this.baseUrl}${e}/agents`);return(await this.unwrapResponse(t))?.agents??[]},chat:async(e,t)=>{let n=this.getRoute(`ai`),r=await this.fetch(`${this.baseUrl}${n}/agents/${encodeURIComponent(e)}/chat`,{method:`POST`,body:JSON.stringify({...t,stream:!1})});return this.unwrapResponse(r)},chatStream:async(e,t)=>{let n=this.getRoute(`ai`);return E(await this.fetch(`${this.baseUrl}${n}/agents/${encodeURIComponent(e)}/chat`,{method:`POST`,headers:{Accept:`text/event-stream`},body:JSON.stringify({...t,stream:!0})}))}},pendingActions:{list:async e=>{let t=this.getRoute(`ai`),n=new URLSearchParams;e?.status&&n.set(`status`,e.status),e?.conversationId&&n.set(`conversationId`,e.conversationId),e?.limit!==void 0&&n.set(`limit`,String(e.limit));let r=n.toString(),i=await this.fetch(`${this.baseUrl}${t}/pending-actions${r?`?${r}`:``}`);return(await this.unwrapResponse(i))?.items??[]},get:async e=>{let t=this.getRoute(`ai`),n=await this.fetch(`${this.baseUrl}${t}/pending-actions/${encodeURIComponent(e)}`);return this.unwrapResponse(n)},approve:async e=>{let t=this.getRoute(`ai`),n=await this.fetch(`${this.baseUrl}${t}/pending-actions/${encodeURIComponent(e)}/approve`,{method:`POST`,body:JSON.stringify({})});return this.unwrapResponse(n)},reject:async(e,t)=>{let n=this.getRoute(`ai`),r=await this.fetch(`${this.baseUrl}${n}/pending-actions/${encodeURIComponent(e)}/reject`,{method:`POST`,body:JSON.stringify(t===void 0?{}:{reason:t})});return this.unwrapResponse(r)}}},this.i18n={getLocales:async()=>{let e=this.getRoute(`i18n`),t=await this.fetch(`${this.baseUrl}${e}/locales`);return this.unwrapResponse(t)},getTranslations:async e=>{let t=this.getRoute(`i18n`),n=await this.fetch(`${this.baseUrl}${t}/translations/${encodeURIComponent(e)}`);return this.unwrapResponse(n)},getFieldLabels:async(e,t)=>{let n=this.getRoute(`i18n`),r=await this.fetch(`${this.baseUrl}${n}/labels/${encodeURIComponent(e)}/${encodeURIComponent(t)}`);return this.unwrapResponse(r)}},this.data={query:async(e,t)=>{let n=this.getRoute(`data`),r=await this.fetch(`${this.baseUrl}${n}/${e}/query`,{method:`POST`,body:JSON.stringify(t)});return this.unwrapResponse(r)},find:async(e,t={})=>{let n=this.getRoute(`data`),r=new URLSearchParams,i=t,a={},o;if(w(t)?(i.where&&(a.filter=i.where),i.fields&&(a.select=i.fields),i.orderBy&&(a.sort=i.orderBy),i.limit!=null&&(a.top=i.limit),i.offset!=null&&(a.skip=i.offset),o=T(i.expand),i.aggregations&&(a.aggregations=i.aggregations),i.groupBy&&(a.groupBy=i.groupBy)):Object.assign(a,t),a.top!=null&&r.set(`top`,a.top.toString()),a.skip!=null&&r.set(`skip`,a.skip.toString()),a.sort){if(Array.isArray(a.sort)&&typeof a.sort[0]==`object`)r.set(`sort`,JSON.stringify(a.sort));else{let e=Array.isArray(a.sort)?a.sort.join(`,`):a.sort;r.set(`sort`,e)}}a.select&&r.set(`select`,a.select.join(`,`));let s=a.filter??a.filters;s&&(this.isFilterAST(s)||Array.isArray(s)?r.set(`filter`,JSON.stringify(s)):typeof s==`object`&&s&&Object.entries(s).forEach(([e,t])=>{t!=null&&r.append(e,String(t))})),a.aggregations&&r.set(`aggregations`,JSON.stringify(a.aggregations)),a.groupBy&&r.set(`groupBy`,a.groupBy.join(`,`)),o&&r.set(`expand`,o);let c=await this.fetch(`${this.baseUrl}${n}/${e}?${r.toString()}`);return this.unwrapResponse(c)},get:async(e,t)=>{let n=this.getRoute(`data`),r=await this.fetch(`${this.baseUrl}${n}/${e}/${t}`);return this.unwrapResponse(r)},create:async(e,t)=>{let n=this.getRoute(`data`),r=await this.fetch(`${this.baseUrl}${n}/${e}`,{method:`POST`,body:JSON.stringify(t)});return this.unwrapResponse(r)},createMany:async(e,t)=>{let n=this.getRoute(`data`),r=await this.fetch(`${this.baseUrl}${n}/${e}/createMany`,{method:`POST`,body:JSON.stringify(t)});return this.unwrapResponse(r)},import:async(e,t)=>{let n=this.getRoute(`data`),r=await this.fetch(`${this.baseUrl}${n}/${e}/import`,{method:`POST`,body:JSON.stringify(t)});return this.unwrapResponse(r)},createImportJob:async(e,t)=>{let n=this.getRoute(`data`),r=await this.fetch(`${this.baseUrl}${n}/${e}/import/jobs`,{method:`POST`,body:JSON.stringify(t)});return this.unwrapResponse(r)},getImportJobProgress:async e=>{let t=this.getRoute(`data`),n=await this.fetch(`${this.baseUrl}${t}/import/jobs/${encodeURIComponent(e)}`);return this.unwrapResponse(n)},getImportJobResults:async e=>{let t=this.getRoute(`data`),n=await this.fetch(`${this.baseUrl}${t}/import/jobs/${encodeURIComponent(e)}/results`);return this.unwrapResponse(n)},listImportJobs:async(e={})=>{let t=this.getRoute(`data`),n=new URLSearchParams;e.object&&n.set(`object`,e.object),e.status&&n.set(`status`,e.status),e.limit!=null&&n.set(`limit`,String(e.limit)),e.offset!=null&&n.set(`offset`,String(e.offset));let r=n.toString()?`?${n.toString()}`:``,i=await this.fetch(`${this.baseUrl}${t}/import/jobs${r}`);return(await this.unwrapResponse(i)).jobs},cancelImportJob:async e=>{let t=this.getRoute(`data`),n=await this.fetch(`${this.baseUrl}${t}/import/jobs/${encodeURIComponent(e)}/cancel`,{method:`POST`});return this.unwrapResponse(n)},undoImportJob:async e=>{let t=this.getRoute(`data`),n=await this.fetch(`${this.baseUrl}${t}/import/jobs/${encodeURIComponent(e)}/undo`,{method:`POST`});return this.unwrapResponse(n)},update:async(e,t,n,r)=>{let i=this.getRoute(`data`),a={};r?.ifMatch&&(a[`If-Match`]=String(r.ifMatch));let o=await this.fetch(`${this.baseUrl}${i}/${e}/${t}`,{method:`PATCH`,body:JSON.stringify(n),...Object.keys(a).length?{headers:a}:{}});return this.unwrapResponse(o)},batch:async(e,t)=>{let n=this.getRoute(`data`),r=await this.fetch(`${this.baseUrl}${n}/${e}/batch`,{method:`POST`,body:JSON.stringify(t)});return this.unwrapResponse(r)},batchTransaction:async e=>{let t=this.getRoute(`data`).replace(/\/[^/]+\/?$/,``)||`/api/v1`,n={operations:e,atomic:!0},r=await this.fetch(`${this.baseUrl}${t}/batch`,{method:`POST`,body:JSON.stringify(n)});return this.unwrapResponse(r)},updateMany:async(e,t,n)=>{let r=this.getRoute(`data`),i={records:t,options:n},a=await this.fetch(`${this.baseUrl}${r}/${e}/updateMany`,{method:`POST`,body:JSON.stringify(i)});return this.unwrapResponse(a)},delete:async(e,t,n)=>{let r=this.getRoute(`data`),i={};n?.ifMatch&&(i[`If-Match`]=String(n.ifMatch));let a=await this.fetch(`${this.baseUrl}${r}/${e}/${t}`,{method:`DELETE`,...Object.keys(i).length?{headers:i}:{}});return this.unwrapResponse(a)},deleteMany:async(e,t,n)=>{let r=this.getRoute(`data`),i={ids:t,options:n},a=await this.fetch(`${this.baseUrl}${r}/${e}/deleteMany`,{method:`POST`,body:JSON.stringify(i)});return this.unwrapResponse(a)},clone:async(e,t,n)=>{let r=this.getRoute(`data`),i=await this.fetch(`${this.baseUrl}${r}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/clone`,{method:`POST`,body:JSON.stringify(n?{overrides:n}:{})});return this.unwrapResponse(i)},export:async(e,t)=>{let n=this.getRoute(`data`),r=new URLSearchParams;t?.format&&r.set(`format`,t.format),t?.limit!==void 0&&r.set(`limit`,String(t.limit)),t?.filter!==void 0&&r.set(`filter`,typeof t.filter==`string`?t.filter:JSON.stringify(t.filter)),t?.orderby!==void 0&&r.set(`orderby`,typeof t.orderby==`string`?t.orderby:JSON.stringify(t.orderby)),t?.header!==void 0&&r.set(`header`,String(t.header));let i=r.toString();return this.fetch(`${this.baseUrl}${n}/${encodeURIComponent(e)}/export${i?`?${i}`:``}`)}},this.baseUrl=e.baseUrl.replace(/\/$/,``),this.token=e.token,this.environmentId=e.environmentId,this.locale=e.locale,this.fetchImpl=e.fetch||globalThis.fetch.bind(globalThis),this.logger=e.logger||(0,g.createLogger)({level:e.debug?`debug`:`info`,format:`pretty`}),this.realtimeAPI=new v(this.baseUrl,this.token),this.logger.debug(`ObjectStack client created`,{baseUrl:this.baseUrl})}async connect(){this.logger.debug(`Connecting to ObjectStack server`,{baseUrl:this.baseUrl});try{let e;try{let t=`${this.baseUrl}/api/v1/discovery`;this.logger.debug(`Probing protocol-standard discovery endpoint`,{url:t});let n=await this.fetchImpl(t);if(n.ok){let t=await n.json();e=t.data||t,this.logger.debug(`Discovered via /api/v1/discovery`)}}catch(e){this.logger.debug(`Protocol-standard discovery probe failed`,{error:e.message})}if(!e){let t;try{t=`${new URL(this.baseUrl).origin}/.well-known/objectstack`}catch{t=`/.well-known/objectstack`}this.logger.debug(`Falling back to .well-known discovery`,{url:t});let n=await this.fetchImpl(t);if(!n.ok)throw Error(`Failed to connect to ${t}: ${n.statusText}`);let r=await n.json();e=r.data||r}if(!e)throw Error(`Connection failed: No discovery data returned`);return this.discoveryInfo=e,this.logger.info(`Connected to ObjectStack server`,{version:e.version,apiName:e.apiName,services:e.services}),e}catch(e){throw this.logger.error(`Failed to connect to ObjectStack server`,e,{baseUrl:this.baseUrl}),e}}get capabilities(){let e=this.discoveryInfo?.capabilities;if(!e)return;let t=e,n={};for(let e of h.WELL_KNOWN_CAPABILITY_KEYS){let r=t[e];n[e]=typeof r==`object`&&r?r.enabled===!0:r===!0}return n}environment(e){if(!e)throw Error(`[ObjectStack] environment(id): environmentId is required`);return new P(this,e)}_baseUrl(){return this.baseUrl}_fetch(e,t){return this.fetch(e,t)}_unwrap(e){return this.unwrapResponse(e)}_isFilterAST(e){return this.isFilterAST(e)}_apiBase(){let e=this.discoveryInfo?.routes?.data;if(typeof e==`string`&&e.endsWith(`/data`)){let t=e.slice(0,-5),n=this.discoveryInfo?.scoping;if(n?.scoped){let e=typeof n.environmentId==`string`&&n.environmentId?`/environments/${n.environmentId}`:void 0;if(e&&t.endsWith(e))t=t.slice(0,-e.length);else{let e=t.replace(/\/environments\/[^/]+$/,``);if(e===t)return`/api/v1`;t=e}}if(t)return t}return`/api/v1`}setProjectId(e){this.environmentId=e,this.logger.debug(`Active project changed`,{environmentId:e})}getProjectId(){return this.environmentId}setLocale(e){this.locale=e,this.logger.debug(`Active locale changed`,{locale:e})}getLocale(){return this.locale}get events(){return this.realtimeAPI}isFilterAST(e){return(0,m.isFilterAST)(e)}async unwrapResponse(e){let t=await e.json();return t&&typeof t.success==`boolean`&&`data`in t?t.data:t}async fetch(e,t={}){this.logger.debug(`HTTP request`,{method:t.method||`GET`,url:e,hasBody:!!t.body});let n={"Content-Type":`application/json`,...t.headers||{}};this.token&&(n.Authorization=`Bearer ${this.token}`),this.environmentId&&(n[`X-Environment-Id`]=this.environmentId),this.locale&&!Object.keys(n).some(e=>e.toLowerCase()===`accept-language`)&&(n[`Accept-Language`]=this.locale);let r=await this.fetchImpl(e,{...t,headers:n});if(this.logger.debug(`HTTP response`,{method:t.method||`GET`,url:e,status:r.status,ok:r.ok}),!r.ok){let n;try{n=await r.json()}catch{n={message:r.statusText}}this.logger.error(`HTTP request failed`,void 0,{method:t.method||`GET`,url:e,status:r.status,error:n});let i=n?.message??n?.error?.message??(typeof n?.error==`string`?n.error:void 0)??r.statusText,a=e=>typeof e==`string`&&e?e:void 0,o=a(n?.code)??a(n?.error?.code),s=Array.isArray(n?.fields)?n.fields:Array.isArray(n?.error?.details?.fields)?n.error.details.fields:void 0,c=Error(i);c.code=o,c.category=n?.error?.category,c.httpStatus=r.status,c.retryable=n?.error?.retryable,c.details=n?.details??n?.error?.details??n,s&&(c.fields=s);let l=e=>typeof e==`string`&&e.trim()?e:void 0,u=l(n?.userMessage)??l(n?.error?.userMessage);throw u&&(c.userMessage=u),c}return r}getRoute(e){let t=this.discoveryInfo?.routes;if(t){let n=t[e];if(n)return n}return{data:`/api/v1/data`,metadata:`/api/v1/meta`,discovery:`/api/v1/discovery`,ui:`/api/v1/ui`,auth:`/api/v1/auth`,analytics:`/api/v1/analytics`,storage:`/api/v1/storage`,automation:`/api/v1/automation`,packages:`/api/v1/packages`,realtime:`/api/v1/realtime`,approvals:`/api/v1/approvals`,notifications:`/api/v1/notifications`,ai:`/api/v1/ai`,i18n:`/api/v1/i18n`,mcp:`/api/v1/mcp`,datasources:`/api/v1/datasources`,email:`/api/v1/email`}[e]||`/api/v1/${e}`}},P=class{constructor(e,t){this.meta={getTypes:async()=>{let e=await this.parent._fetch(this.url(`/meta`));return this.parent._unwrap(e)},getItems:async(e,t)=>{let n=new URLSearchParams;t?.packageId&&n.set(`package`,t.packageId);let r=n.toString(),i=await this.parent._fetch(this.url(`/meta/${e}${r?`?${r}`:``}`));return this.parent._unwrap(i)},getItem:async(e,t,n)=>{let r=new URLSearchParams;n?.packageId&&r.set(`package`,n.packageId);let i=r.toString(),a=await this.parent._fetch(this.url(`/meta/${encodeURIComponent(e)}/${encodeURIComponent(t)}${i?`?${i}`:``}`));return this.parent._unwrap(a)},saveItem:async(e,t,n,r)=>{let i=k(r),a=A(r),o=await this.parent._fetch(this.url(`/meta/${encodeURIComponent(e)}/${encodeURIComponent(t)}${i}`),{method:`PUT`,body:JSON.stringify(n),...a?{headers:a}:{}});return this.parent._unwrap(o)},deleteItem:async(e,t,n)=>{let r=j(n),i=M(n),a=await this.parent._fetch(this.url(`/meta/${encodeURIComponent(e)}/${encodeURIComponent(t)}${r}`),{method:`DELETE`,...i?{headers:i}:{}});return this.parent._unwrap(a)},getHistory:async(e,t,n)=>{let r=new URLSearchParams;n?.sinceSeq!==void 0&&r.set(`sinceSeq`,String(n.sinceSeq)),n?.limit!==void 0&&r.set(`limit`,String(n.limit));let i=r.toString(),a=await this.parent._fetch(this.url(`/meta/${encodeURIComponent(e)}/${encodeURIComponent(t)}/history${i?`?${i}`:``}`));return this.parent._unwrap(a)}},this.data={query:async(e,t)=>{let n=await this.parent._fetch(this.url(`/data/${e}/query`),{method:`POST`,body:JSON.stringify(t)});return this.parent._unwrap(n)},find:async(e,t={})=>{let n=new URLSearchParams,r=t,i={},a;if(w(t)?(r.where&&(i.filter=r.where),r.fields&&(i.select=r.fields),r.orderBy&&(i.sort=r.orderBy),r.limit!=null&&(i.top=r.limit),r.offset!=null&&(i.skip=r.offset),a=T(r.expand),r.aggregations&&(i.aggregations=r.aggregations),r.groupBy&&(i.groupBy=r.groupBy)):Object.assign(i,t),i.top!=null&&n.set(`top`,i.top.toString()),i.skip!=null&&n.set(`skip`,i.skip.toString()),i.sort){if(Array.isArray(i.sort)&&typeof i.sort[0]==`object`)n.set(`sort`,JSON.stringify(i.sort));else{let e=Array.isArray(i.sort)?i.sort.join(`,`):i.sort;n.set(`sort`,e)}}i.select&&n.set(`select`,i.select.join(`,`));let o=i.filter??i.filters;o&&(this.parent._isFilterAST(o)||Array.isArray(o)?n.set(`filter`,JSON.stringify(o)):typeof o==`object`&&o&&Object.entries(o).forEach(([e,t])=>{t!=null&&n.append(e,String(t))})),i.aggregations&&n.set(`aggregations`,JSON.stringify(i.aggregations)),i.groupBy&&n.set(`groupBy`,i.groupBy.join(`,`)),a&&n.set(`expand`,a);let s=n.toString(),c=await this.parent._fetch(this.url(`/data/${e}${s?`?${s}`:``}`));return this.parent._unwrap(c)},get:async(e,t)=>{let n=await this.parent._fetch(this.url(`/data/${e}/${t}`));return this.parent._unwrap(n)},create:async(e,t)=>{let n=await this.parent._fetch(this.url(`/data/${e}`),{method:`POST`,body:JSON.stringify(t)});return this.parent._unwrap(n)},createMany:async(e,t)=>{let n=await this.parent._fetch(this.url(`/data/${e}/createMany`),{method:`POST`,body:JSON.stringify(t)});return this.parent._unwrap(n)},import:async(e,t)=>{let n=await this.parent._fetch(this.url(`/data/${e}/import`),{method:`POST`,body:JSON.stringify(t)});return this.parent._unwrap(n)},createImportJob:async(e,t)=>{let n=await this.parent._fetch(this.url(`/data/${e}/import/jobs`),{method:`POST`,body:JSON.stringify(t)});return this.parent._unwrap(n)},getImportJobProgress:async e=>{let t=await this.parent._fetch(this.url(`/data/import/jobs/${encodeURIComponent(e)}`));return this.parent._unwrap(t)},getImportJobResults:async e=>{let t=await this.parent._fetch(this.url(`/data/import/jobs/${encodeURIComponent(e)}/results`));return this.parent._unwrap(t)},listImportJobs:async(e={})=>{let t=new URLSearchParams;e.object&&t.set(`object`,e.object),e.status&&t.set(`status`,e.status),e.limit!=null&&t.set(`limit`,String(e.limit)),e.offset!=null&&t.set(`offset`,String(e.offset));let n=t.toString()?`?${t.toString()}`:``,r=await this.parent._fetch(this.url(`/data/import/jobs${n}`));return(await this.parent._unwrap(r)).jobs},cancelImportJob:async e=>{let t=await this.parent._fetch(this.url(`/data/import/jobs/${encodeURIComponent(e)}/cancel`),{method:`POST`});return this.parent._unwrap(t)},undoImportJob:async e=>{let t=await this.parent._fetch(this.url(`/data/import/jobs/${encodeURIComponent(e)}/undo`),{method:`POST`});return this.parent._unwrap(t)},update:async(e,t,n)=>{let r=await this.parent._fetch(this.url(`/data/${e}/${t}`),{method:`PATCH`,body:JSON.stringify(n)});return this.parent._unwrap(r)},batch:async(e,t)=>{let n=await this.parent._fetch(this.url(`/data/${e}/batch`),{method:`POST`,body:JSON.stringify(t)});return this.parent._unwrap(n)},batchTransaction:async e=>{let t={operations:e,atomic:!0},n=await this.parent._fetch(this.url(`/batch`),{method:`POST`,body:JSON.stringify(t)});return this.parent._unwrap(n)},updateMany:async(e,t,n)=>{let r={records:t,options:n},i=await this.parent._fetch(this.url(`/data/${e}/updateMany`),{method:`POST`,body:JSON.stringify(r)});return this.parent._unwrap(i)},delete:async(e,t)=>{let n=await this.parent._fetch(this.url(`/data/${e}/${t}`),{method:`DELETE`});return this.parent._unwrap(n)},deleteMany:async(e,t,n)=>{let r={ids:t,options:n},i=await this.parent._fetch(this.url(`/data/${e}/deleteMany`),{method:`POST`,body:JSON.stringify(r)});return this.parent._unwrap(i)}},this.packages={list:async()=>{let e=await this.parent._fetch(this.url(`/packages`));return this.parent._unwrap(e)},get:async(e,t)=>{let n=t?`?version=${encodeURIComponent(t)}`:``,r=await this.parent._fetch(this.url(`/packages/${encodeURIComponent(e)}${n}`));return this.parent._unwrap(r)}},this.automation={getFlow:async e=>{let t=await this.parent._fetch(this.url(`/automation/${encodeURIComponent(e)}`));return this.parent._unwrap(t)},execute:async(e,t)=>{let n=await this.parent._fetch(this.url(`/automation/${encodeURIComponent(e)}/trigger`),{method:`POST`,body:JSON.stringify(t??{})});return this.parent._unwrap(n)},listRuns:async(e,t)=>{let n=new URLSearchParams;t?.limit!=null&&n.set(`limit`,String(t.limit)),t?.cursor&&n.set(`cursor`,t.cursor),t?.status&&n.set(`status`,t.status);let r=n.toString(),i=await this.parent._fetch(this.url(`/automation/${encodeURIComponent(e)}/runs${r?`?${r}`:``}`));return this.parent._unwrap(i)},getRun:async(e,t)=>{let n=await this.parent._fetch(this.url(`/automation/${encodeURIComponent(e)}/runs/${encodeURIComponent(t)}`));return this.parent._unwrap(n)},resume:async(e,t,n)=>{let r=await this.parent._fetch(this.url(`/automation/${encodeURIComponent(e)}/runs/${encodeURIComponent(t)}/resume`),{method:`POST`,body:JSON.stringify(n??{})});return this.parent._unwrap(r)},getScreen:async(e,t)=>{let n=await this.parent._fetch(this.url(`/automation/${encodeURIComponent(e)}/runs/${encodeURIComponent(t)}/screen`));return this.parent._unwrap(n)}},this.parent=e,this.environmentId=t}getProjectId(){return this.environmentId}scope(){return`${this.parent._apiBase()}/environments/${encodeURIComponent(this.environmentId)}`}url(e){return`${this.parent._baseUrl()}${this.scope()}${e}`}};0&&(t.exports={FilterBuilder:y,ObjectStackClient:N,QueryBuilder:b,RealtimeAPI:v,ScopedEnvironmentClient:P,createFilter:S,createQuery:x})}));i();var re=ne();c();function ie(e){if(!e||typeof e!=`object`)return[];let t=e.advisories;return Array.isArray(t)?t.filter(e=>{if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.rule==`string`&&typeof t.path==`string`&&typeof t.where==`string`&&typeof t.message==`string`&&typeof t.hint==`string`&&typeof t.severity==`string`}):[]}var ae=[`overlayScope`,`lock`,`lockReason`,`lockSource`,`lockDocsUrl`,`provenance`,`packageId`,`packageVersion`,`editable`,`deletable`,`resettable`];function oe(e){let t=l.shape;return ae.filter(n=>e[n]!==void 0&&!t[n].safeParse(e[n]).success)}var F=`/meta`,I=`/api/v1`;function se(e){let t=e.baseUrl.replace(/\/+$/,``),n=e.environmentId?`${I}/environments/${encodeURIComponent(e.environmentId)}${F}`:`${I}${F}`;return/\/api\/v\d+$/i.test(t)?`${t.replace(/\/api\/v\d+$/i,``)}${e.environmentId?`${I}/environments/${encodeURIComponent(e.environmentId)}${F}`:`${I}${F}`}`:`${t}${n}`}async function L(e){let t;try{t=await e.json()}catch{t=await e.text().catch(()=>void 0)}let n=t&&typeof t==`object`?t:void 0,r=n?.error,i=(r&&typeof r==`object`?r.message:r)??n?.message??`Metadata request failed: ${e.status} ${e.statusText}`,a=Error(String(i));a.status=e.status,a.body=t;let o=r&&typeof r==`object`?r.details:void 0,s=o?.issues??(r&&typeof r==`object`?r.issues:void 0)??n?.issues;Array.isArray(s)&&(a.issues=s);let c=o?.code??(r&&typeof r==`object`?r.code:void 0)??n?.code;return c!=null&&(a.code=String(c)),a}function ce(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return typeof t.type==`string`&&typeof t.name==`string`&&`item`in t}var le=class e{base;fetchImpl;headers;previewDrafts;onSaveAdvisory;constructor(e){this.base=se(e),this.fetchImpl=e.fetch??globalThis.fetch.bind(globalThis),this.headers={Accept:`application/json`,...e.headers??{}},this.previewDrafts=e.previewDrafts===!0,this.onSaveAdvisory=e.onSaveAdvisory}withEnvironment(t){return new e({baseUrl:this.base.replace(/\/api\/v\d+(?:\/environments\/[^/]+)?\/meta$/,``).replace(/\/+$/,``),environmentId:t,fetch:this.fetchImpl,headers:this.headers,previewDrafts:this.previewDrafts,...this.onSaveAdvisory?{onSaveAdvisory:this.onSaveAdvisory}:{}})}withPreviewDrafts(t){if(t===this.previewDrafts)return this;let n=this.base.match(/\/api\/v\d+\/environments\/([^/]+)\/meta$/);return new e({baseUrl:this.base.replace(/\/api\/v\d+(?:\/environments\/[^/]+)?\/meta$/,``).replace(/\/+$/,``),...n?{environmentId:decodeURIComponent(n[1])}:{},fetch:this.fetchImpl,headers:this.headers,previewDrafts:t,...this.onSaveAdvisory?{onSaveAdvisory:this.onSaveAdvisory}:{}})}async listTypes(){let e=await this.fetchImpl(this.base,{method:`GET`,headers:this.headers,cache:`no-store`});if(!e.ok)throw await L(e);let t=await e.json();return Array.isArray(t)?t:t&&Array.isArray(t.entries)?t.entries:t&&Array.isArray(t.items)?t.items:t&&Array.isArray(t.types)?t.types.map(e=>({type:e})):[]}async list(e,t={}){let n=[];t.packageId&&n.push(`package=${encodeURIComponent(t.packageId)}`),this.previewDrafts&&n.push(`preview=draft`);let r=n.length?`?${n.join(`&`)}`:``,i=`${this.base}/${encodeURIComponent(e)}${r}`,a=await this.fetchImpl(i,{method:`GET`,headers:this.headers,cache:`no-store`});if(!a.ok)throw await L(a);let o=await a.json();return Array.isArray(o)?o:o&&Array.isArray(o.items)?o.items:[]}async listDrafts(e={}){let t=[];e.packageId&&t.push(`packageId=${encodeURIComponent(e.packageId)}`),e.type&&t.push(`type=${encodeURIComponent(e.type)}`);let n=t.length?`?${t.join(`&`)}`:``,r=`${this.base}/_drafts${n}`,i=await this.fetchImpl(r,{method:`GET`,headers:this.headers,cache:`no-store`});if(!i.ok)throw await L(i);let a=await i.json();return Array.isArray(a)?a:a?.drafts??a?.data?.drafts??[]}async readItemResponse(e,t,n={}){let r=[];n.state===`draft`?r.push(`state=draft`):this.previewDrafts&&r.push(`preview=draft`),n.packageId&&r.push(`package=${encodeURIComponent(n.packageId)}`);let i=r.length?`?${r.join(`&`)}`:``,a=`${this.base}/${encodeURIComponent(e)}/${encodeURIComponent(t)}${i}`,o=await this.fetchImpl(a,{method:`GET`,headers:this.headers,cache:`no-store`});if(o.status===404)return null;if(!o.ok)throw await L(o);return await o.json()}async get(e,t,n={}){let r=await this.readItemResponse(e,t,n);return ce(r)?r.item??null:r}async getDraft(e,t,n={}){return this.readItemResponse(e,t,{state:`draft`,...n.packageId?{packageId:n.packageId}:{}})}emitAdvisories(e,t){if(this.onSaveAdvisory)try{let n=ie(e);n.length>0&&this.onSaveAdvisory({...t,advisories:n})}catch{}}async save(e,t,n,r={}){if(!t||!String(t).trim())throw Error(`MetadataClient.save: name must be non-empty (type="${e}"). The PUT /meta/:type/:name route requires a name segment.`);let i=[];r.force&&i.push(`force=true`),r.mode===`draft`&&i.push(`mode=draft`),r.packageId&&i.push(`package=${encodeURIComponent(r.packageId)}`);let a=i.length?`?${i.join(`&`)}`:``,o=`${this.base}/${encodeURIComponent(e)}/${encodeURIComponent(t)}${a}`,s={...this.headers,"Content-Type":`application/json`};r.ifMatch&&(s[`If-Match`]=r.ifMatch);let c=await this.fetchImpl(o,{method:`PUT`,headers:s,body:JSON.stringify(n)});if(!c.ok)throw await L(c);let l=await c.json();return this.emitAdvisories(l,{type:e,name:t,door:`save`,mode:r.mode===`draft`?`draft`:`publish`}),l}async publishDraft(e,t){let n=`${this.base}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/publish`,r=await this.fetchImpl(n,{method:`POST`,headers:{...this.headers,"Content-Type":`application/json`,Accept:`application/json`},body:`{}`});if(!r.ok)throw await L(r);let i=await r.json().catch(()=>({})),a=i?.data&&typeof i.data==`object`?i.data:i;return this.emitAdvisories(a,{type:e,name:t,door:`publish`,mode:`publish`}),a}async layered(e,t,n={}){let r=n.packageId?`?package=${encodeURIComponent(n.packageId)}`:``,i=`${this.base}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/layers${r}`,a=await this.fetchImpl(i,{method:`GET`,headers:this.headers,cache:`no-store`});if(a.status===404)return{code:null,overlay:null,overlayScope:null,effective:null};if(!a.ok)throw await L(a);let o=await a.json();if(!(typeof o==`object`&&o&&(`code`in o||`overlay`in o||`effective`in o)))return{code:null,overlay:null,overlayScope:null,effective:o};let s=l.safeParse(o);if(s.success){let e=s.data;return{code:e.code??null,overlay:e.overlay??null,overlayScope:e.overlayScope,effective:e.effective??null,...o._diagnostics?{_diagnostics:o._diagnostics}:{},lock:e.lock,...e.lockReason===void 0?{}:{lockReason:e.lockReason},...e.lockSource===void 0?{}:{lockSource:e.lockSource},...e.lockDocsUrl===void 0?{}:{lockDocsUrl:e.lockDocsUrl},...e.provenance===void 0?{}:{provenance:e.provenance},...e.packageId===void 0?{}:{packageId:e.packageId},...e.packageVersion===void 0?{}:{packageVersion:e.packageVersion},editable:e.editable,deletable:e.deletable,resettable:e.resettable}}let c=oe(o);return{code:o.code??null,overlay:o.overlay??null,overlayScope:o.overlayScope??null,effective:o.effective??null,...o._diagnostics?{_diagnostics:o._diagnostics}:{},...o.lock===void 0?{}:{lock:o.lock},...o.lockReason===void 0?{}:{lockReason:o.lockReason},...o.lockSource===void 0?{}:{lockSource:o.lockSource},...o.lockDocsUrl===void 0?{}:{lockDocsUrl:o.lockDocsUrl},...o.provenance===void 0?{}:{provenance:o.provenance},...o.packageId===void 0?{}:{packageId:o.packageId},...o.packageVersion===void 0?{}:{packageVersion:o.packageVersion},...o.editable===void 0?{}:{editable:o.editable},...o.deletable===void 0?{}:{deletable:o.deletable},...o.resettable===void 0?{}:{resettable:o.resettable},...c.length>0?{_unrecognized:c}:{}}}async diagnostics(e={}){let t=[];e.type&&t.push(`type=${encodeURIComponent(e.type)}`),e.severity&&t.push(`severity=${encodeURIComponent(e.severity)}`),e.packageId&&t.push(`package=${encodeURIComponent(e.packageId)}`);let n=t.length?`?${t.join(`&`)}`:``,r=`${this.base}/diagnostics${n}`,i=await this.fetchImpl(r,{method:`GET`,headers:this.headers,cache:`no-store`});if(i.status===404)return{entries:[],total:0,scannedTypes:0,scannedItems:0,stats:{}};if(!i.ok)throw await L(i);let a=await i.json();return{entries:Array.isArray(a.entries)?a.entries:[],total:typeof a.total==`number`?a.total:0,scannedTypes:typeof a.scannedTypes==`number`?a.scannedTypes:0,scannedItems:typeof a.scannedItems==`number`?a.scannedItems:0,stats:a.stats&&typeof a.stats==`object`?a.stats:{}}}async references(e,t){let n=`${this.base}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/references`,r=await this.fetchImpl(n,{method:`GET`,headers:this.headers,cache:`no-store`});if(r.status===404)return[];if(!r.ok)throw await L(r);let i=await r.json();return Array.isArray(i)?i:i?.items??[]}async reset(e,t,n={}){let r=n.state===`draft`?`?state=draft`:``,i=`${this.base}/${encodeURIComponent(e)}/${encodeURIComponent(t)}${r}`,a={...this.headers};n.ifMatch&&(a[`If-Match`]=n.ifMatch);let o=await this.fetchImpl(i,{method:`DELETE`,headers:a});if(!o.ok)throw await L(o);return await o.json()}async publish(e,t,n={}){let r=n.packageId?`?package=${encodeURIComponent(n.packageId)}`:``,i=`${this.base}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/publish${r}`,a={...this.headers,"Content-Type":`application/json`},o=await this.fetchImpl(i,{method:`POST`,headers:a,body:JSON.stringify(n.message?{message:n.message}:{})});if(!o.ok)throw await L(o);let s=await o.json();return this.emitAdvisories(s,{type:e,name:t,door:`publish`,mode:`publish`}),s}async rollback(e,t,n,r={}){let i=`${this.base}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/rollback`,a={...this.headers,"Content-Type":`application/json`},o=await this.fetchImpl(i,{method:`POST`,headers:a,body:JSON.stringify({toVersion:n,...r.message?{message:r.message}:{}})});if(!o.ok)throw await L(o);return await o.json()}async diff(e,t,n,r){let i=new URLSearchParams;n!==void 0&&i.set(`from`,String(n)),r!==void 0&&i.set(`to`,String(r));let a=i.toString(),o=`${this.base}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/diff${a?`?${a}`:``}`,s=await this.fetchImpl(o,{method:`GET`,headers:this.headers,cache:`no-store`});if(!s.ok)throw await L(s);return await s.json()}async history(e,t,n={}){let r=new URLSearchParams;n.sinceSeq!==void 0&&r.set(`sinceSeq`,String(n.sinceSeq)),n.limit!==void 0&&r.set(`limit`,String(n.limit));let i=r.toString(),a=`${this.base}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/history${i?`?${i}`:``}`,o=await this.fetchImpl(a,{method:`GET`,headers:this.headers,cache:`no-store`});if(!o.ok)throw await L(o);return await o.json()}async audit(e,t,n={}){let r=new URLSearchParams;n.limit!==void 0&&r.set(`limit`,String(n.limit));let i=r.toString(),a=`${this.base}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/audit${i?`?${i}`:``}`,o=await this.fetchImpl(a,{method:`GET`,headers:this.headers,cache:`no-store`});if(!o.ok)throw await L(o);return await o.json()}},ue=class{cache;inflight;maxSize;ttl;stats;constructor(e={}){this.cache=new Map,this.inflight=new Map,this.maxSize=e.maxSize||100,this.ttl=e.ttl||3e5,this.stats={hits:0,misses:0,evictions:0,coalesced:0}}async get(e,t){let n=Date.now(),r=this.cache.get(e);if(r){if(n-r.timestamp<this.ttl)return r.accessCount++,r.lastAccessed=n,this.stats.hits++,this.cache.delete(e),this.cache.set(e,r),r.data;this.cache.delete(e)}let i=this.inflight.get(e);if(i)return this.stats.coalesced++,i;this.stats.misses++;let a=(async()=>{try{let n=await t();return this.set(e,n),n}finally{this.inflight.delete(e)}})();return this.inflight.set(e,a),a}prime(e,t){this.set(e,t)}set(e,t){let n=Date.now();this.cache.size>=this.maxSize&&!this.cache.has(e)&&this.evictLRU(),this.cache.set(e,{data:t,timestamp:n,accessCount:1,lastAccessed:n})}evictLRU(){let e=this.cache.keys().next().value;e!==void 0&&(this.cache.delete(e),this.stats.evictions++)}invalidate(e){e?this.cache.delete(e):this.cache.clear()}clear(){this.cache.clear(),this.inflight.clear(),this.stats={hits:0,misses:0,evictions:0,coalesced:0}}getStats(){let e=this.stats.hits+this.stats.misses,t=e>0?this.stats.hits/e:0;return{size:this.cache.size,maxSize:this.maxSize,hits:this.stats.hits,misses:this.stats.misses,evictions:this.stats.evictions,coalesced:this.stats.coalesced,hitRate:t}}getCachedSync(e){let t=this.cache.get(e);if(t){if(this.ttl>0&&Date.now()-t.timestamp>this.ttl){this.cache.delete(e);return}return this.cache.delete(e),this.cache.set(e,t),this.stats.hits++,t.data}}has(e){let t=this.cache.get(e);return t?Date.now()-t.timestamp>=this.ttl?(this.cache.delete(e),!1):!0:!1}},R=class extends Error{code;statusCode;details;constructor(e,t,n,r){super(e),this.code=t,this.statusCode=n,this.details=r,this.name=`ObjectStackError`,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}toJSON(){return{name:this.name,message:this.message,code:this.code,statusCode:this.statusCode,details:this.details,stack:this.stack}}},de=class extends R{constructor(e,t){super(`Metadata not found for object: ${e}`,`METADATA_NOT_FOUND`,404,{objectName:e,...t}),this.name=`MetadataNotFoundError`}},z=class extends R{successCount;failureCount;errors;constructor(e,t,n,r,i){super(`Bulk ${e} operation failed: ${t} succeeded, ${n} failed`,`BULK_OPERATION_ERROR`,500,{operation:e,successCount:t,failureCount:n,errors:r,...i}),this.successCount=t,this.failureCount=n,this.errors=r,this.name=`BulkOperationError`}getSummary(){let e=this.successCount+this.failureCount,t=e>0?this.failureCount/e:0;return{operation:this.details?.operation,total:e,successful:this.successCount,failed:this.failureCount,failureRate:t,errors:this.errors}}},B=class extends R{url;constructor(e,t,n,r){super(`Connection error: ${e}`,`CONNECTION_ERROR`,r||503,{url:t,...n}),this.url=t,this.name=`ConnectionError`}},V=class extends R{constructor(e=`Authentication failed`,t,n){super(e,`AUTHENTICATION_ERROR`,n||401,t),this.name=`AuthenticationError`}},H=class extends R{field;validationErrors;constructor(e,t,n,r){super(e,`VALIDATION_ERROR`,400,{field:t,validationErrors:n,...r}),this.field=t,this.validationErrors=n,this.name=`ValidationError`}getValidationErrors(){return this.validationErrors||[]}};function fe(e,t){let n=e?.status||e?.statusCode||500,r=e?.message||e?.statusText||`Unknown error`,i={context:t,response:{status:n,data:e?.data,headers:e?.headers}};switch(n){case 401:return new V(r,i,401);case 403:return new V(r,i,403);case 404:return t?.includes(`metadata`)||t?.includes(`schema`)||t?.includes(`getObjectSchema`)?new de(pe(t),i):new R(r,`NOT_FOUND`,404,i);case 400:return new H(r,void 0,e?.data?.errors,i);case 503:return new B(r,e?.config?.url,i,503);case 504:return new B(r,e?.config?.url,i,504);default:return new R(r,`UNKNOWN_ERROR`,n,i)}}function pe(e){if(!e)return`unknown`;let t=e.match(/\(([^)]+)\)/);return t?t[1]:`unknown`}var me=`sys_user_preference`;function he(e){let{dataSource:t,userId:n,key:r,resource:i=me,onError:a=()=>{}}=e,o=null,s=Promise.resolve(),c=async()=>{let e={$filter:{user_id:n,key:r},$top:1};return((await t.find(i,e))?.data??[]).find(e=>{if(!e)return!1;let t=e.user_id!==void 0&&e.user_id!==n,i=e.key!==void 0&&e.key!==r;return!t&&!i})??null},l=e=>{if(Array.isArray(e))return e;if(typeof e==`string`)try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}return[]},u=async e=>{if(o!==null)try{await t.update(i,o,{value:e});return}catch(e){o=null,a(`save`,e)}let s=await c();if(s&&s.id!==void 0&&s.id!==null){o=s.id,await t.update(i,s.id,{value:e});return}try{let a=(await t.create(i,{user_id:n,key:r,value:e}))?.id;a!=null&&(o=a)}catch(n){let r=await c();if(r&&r.id!==void 0&&r.id!==null){o=r.id,await t.update(i,r.id,{value:e});return}throw n}};return{async load(){try{let e=await c();return e?(e.id!==void 0&&e.id!==null&&(o=e.id),l(e.value)):(o=null,[])}catch(e){return a(`load`,e),[]}},async save(e){let t=s.then(()=>u(e)).catch(e=>{a(`save`,e)});return s=t,t}}}var ge={equals:`=`,eq:`=`,"==":`=`,not_equals:`!=`,notequals:`!=`,ne:`!=`,greater_than:`>`,greaterthan:`>`,gt:`>`,greater_than_or_equal:`>=`,greater_than_or_equals:`>=`,greaterthanorequal:`>=`,gte:`>=`,less_than:`<`,lessthan:`<`,lt:`<`,less_than_or_equal:`<=`,less_than_or_equals:`<=`,lessthanorequal:`<=`,lte:`<=`,in:`in`,not_in:`nin`,notin:`nin`,nin:`nin`,contains:`contains`,icontains:`icontains`,not_contains:`notcontains`,notcontains:`notcontains`,starts_with:`startswith`,startswith:`startswith`,ends_with:`endswith`,endswith:`endswith`,between:`between`,is_null:`isnull`,isnull:`isnull`,is_not_null:`isnotnull`,isnotnull:`isnotnull`,before:`<`,after:`>`};function _e(e){return typeof e==`string`?ge[e.toLowerCase()]??ge[e]??e:null}var ve=class extends Error{code=`INVALID_FILTER`;httpStatus=400;entry;index;constructor(e,t){let n=JSON.stringify(e)??String(e);super(`Filter entry ${t} is not a usable filter rule (${n}). Expected { field, operator, value } with a non-empty field.`),this.name=`MalformedFilterError`,this.entry=e,this.index=t}},ye=class extends Error{code=`INVALID_FILTER`;httpStatus=400;where;resource;constructor(e,t){let n=JSON.stringify(e)??String(e);super(`aggregate('${t}'): the spec-shape branch received a \`where\` array that is not a filter — ${n}. This branch posts \`where\` to POST /data/:object/query verbatim, so it must ALREADY be lowered: either a FilterCondition object (\`QuerySchema.where\`, @objectstack/spec data/query.zod.ts), or a FilterArray the ingress can lower — a comparison tuple (['stage','=','won']), a logical node (['and',[..],[..]]), or an array of nodes (data/filter.zod.ts, gate \`isFilterAST\`). A ViewFilterRule[] ([{ field, operator, value }, ...]) is authoring sugar, not a filter: lower it in the producer that built these aggregate params, not here. Nothing was sent to the server, so no unfiltered numbers came back.`),this.name=`UnloweredAggregateWhereError`,this.where=e,this.resource=t}};function be(e,t){if(Array.isArray(e)&&e.length!==0&&!r(e))throw new ye(e,t)}function xe(e){if(!e||typeof e!=`object`)return null;let t=e.field,n=_e(e.operator??e.op??`=`);return!t||!n?null:[String(t),n,e.value]}function Se(e){let t=e[0];return e.length>0&&typeof t==`object`&&!!t&&!Array.isArray(t)&&t.field!==void 0}function Ce(e){let t=e.map((e,t)=>{if(Array.isArray(e))return W(e);let n=xe(e);if(!n)throw new ve(e,t);return n});return t.length===1?t[0]:[`and`,...t]}var we=new Set([`and`,`or`]);function U(e){if(Se(e))return Ce(e);let t=e[0];return typeof t==`string`&&we.has(t.toLowerCase())?[t,...e.slice(1).map(W)]:e.every(e=>Array.isArray(e))?e.map(W):e}function W(e){if(Array.isArray(e))return e.length>0?U(e):e;if(e&&typeof e==`object`&&e.field!==void 0){let t=xe(e);if(t)return t}return e}function Te(e){if(e!=null){if(Array.isArray(e))return e.length===0?void 0:U(e);if(typeof e==`object`)return Object.keys(e).length===0?void 0:f(e)}}function Ee(e){if(e==null)return;if(typeof e==`string`){let t=e.trim();return t.length>0?t:void 0}let t=(e,t)=>String(t).toLowerCase()===`desc`?`-${e}`:e;if(Array.isArray(e)){let n=e.map(e=>typeof e==`string`?e.trim():t(e.field,e.order)).filter(e=>e.length>0);return n.length>0?n.join(`,`):void 0}if(typeof e==`object`){let n=Object.entries(e).map(([e,n])=>t(e,n));return n.length>0?n.join(`,`):void 0}}var G=new Map;async function De(e,t){let n=e||`<default>`,r=G.get(n);if(r)return r;let i=t().catch(e=>{throw G.delete(n),e});return G.set(n,i),i}function Oe(e){let t=e?.capabilities;if(!t||typeof t!=`object`)return;let n=t.transactionalBatch;if(typeof n==`boolean`)return n;if(n&&typeof n==`object`&&typeof n.enabled==`boolean`)return n.enabled}function K(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.httpStatus===404||t.status===404||t.statusCode===404||T({code:typeof t.code==`string`?t.code:``},[`OBJECT_NOT_FOUND`,`RECORD_NOT_FOUND`])}var ke=[`OBJECT_API_DISABLED`,`OBJECT_API_METHOD_NOT_ALLOWED`];function Ae(e){return T(e,ke)}var je=`PERMISSION_DENIED`;function Me(e){return w(e,je)}var q=`manage_metadata`,Ne=class extends Error{code=`VIEW_CONFIG_PERMISSION_DENIED`;capability=q;objectName;viewId;constructor(e,t){super(`View configuration is shared: changing "${t}" changes it for everyone who uses this view. That requires the "${q}" capability, which this session does not hold.`),this.name=`ViewConfigPermissionDeniedError`,this.objectName=e,this.viewId=t}};function Pe(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.code===`VIEW_CONFIG_PERMISSION_DENIED`||t.name===`ViewConfigPermissionDeniedError`}var Fe=class extends Error{code=`ANALYTICS_NOT_INSTALLED`;surface;serverCode;constructor(e,t,n){super(`Analytics capability is not installed on this deployment — ${e} is unavailable. Install @objectstack/service-analytics and mount AnalyticsServicePlugin to enable it.`+(t?` (server said: ${t})`:``)),this.name=`AnalyticsNotInstalledError`,this.surface=e,this.serverCode=n}},Ie=class extends Error{code=`ANALYTICS_DATASET_NOT_FOUND`;datasetName;serverCode;serverMessage;constructor(e){let t=e.datasetName?`Dataset "${e.datasetName}"`:`The requested dataset`;super(`${t} is not defined in this environment — the app that defines it is missing or out of date. Analytics itself is installed and answering, so the fix is to upgrade the installed app, not to install a server plugin.`+(e.serverMessage?` (server said: ${e.serverMessage})`:``)),this.name=`AnalyticsDatasetNotFoundError`,this.datasetName=e.datasetName,this.serverCode=e.serverCode,this.serverMessage=e.serverMessage}},J=class extends Error{code=`ANALYTICS_UNAUTHENTICATED`;serverCode;serverMessage;constructor(e={}){super(`Analytics query refused: this session is not authenticated. Sign in again and retry — the request was refused before it ran, so it says nothing about whether the analytics capability is installed.`+(e.serverMessage?` (server said: ${e.serverMessage})`:``)),this.name=`AnalyticsUnauthenticatedError`,this.serverCode=e.serverCode,this.serverMessage=e.serverMessage}};function Le(e){if(!e||typeof e!=`object`)return{};let t=e,n=(t.error&&typeof t.error==`object`?t.error:void 0)??t;return{code:typeof n.code==`string`&&n.code.length>0?n.code:void 0,message:typeof n.message==`string`&&n.message.length>0?n.message:typeof t.error==`string`&&t.error.length>0?t.error:void 0}}var Re=[404,501],ze=class extends Error{code=`ANALYTICS_QUERY_REJECTED`;serverCode;constructor(e,t){super(`Analytics rejected the query: ${e??`the request body does not match the AnalyticsQuery contract`}`),this.name=`AnalyticsQueryRejectedError`,this.serverCode=t}};function Be(e){let t=e??{},n=typeof t.code==`string`&&t.code.length>0?t.code:void 0,r=typeof t.message==`string`?t.message:void 0,i=typeof t.httpStatus==`number`?t.httpStatus:typeof t.status==`number`?t.status:typeof t.statusCode==`number`?t.statusCode:void 0;if(T({code:n},[`NOT_IMPLEMENTED`,`ROUTE_NOT_FOUND`]))return{kind:`not-installed`,code:n,message:r};if(w({code:n},`VALIDATION_FAILED`))return{kind:`rejected`,code:n,message:r};if(w({code:n},`UNAUTHENTICATED`))return{kind:`unauthenticated`,code:n,message:r};if(w({code:n},`CUBE_NOT_FOUND`))return{kind:`cube-not-found`,code:n,message:r};if(n===void 0){if(i!==void 0&&Re.includes(i))return{kind:`not-installed`,code:n,message:r};if(i===400)return{kind:`rejected`,code:n,message:r};if(i===401)return{kind:`unauthenticated`,code:n,message:r}}return{kind:`unknown`,code:n,message:r}}var Ve=class extends Error{code=`CONCURRENT_UPDATE`;httpStatus=409;currentVersion;currentRecord;userMessage;constructor(e){super(e.message??`Record was modified by another user`),this.name=`ConcurrentUpdateError`,this.currentVersion=e.currentVersion,this.currentRecord=e.currentRecord,this.userMessage=e.userMessage??null}};function He(e,t){return typeof e.userMessage==`string`&&e.userMessage.trim()?e.userMessage:typeof t.userMessage==`string`&&t.userMessage.trim()?t.userMessage:null}function Y(e){if(!e||typeof e!=`object`)return e;let t=e,n=t.details??{},r=He(t,n);if(t.code===`VALIDATION_FAILED`||t.name===`ValidationError`){let e=Array.isArray(n.fields)?n.fields:Array.isArray(t.fields)?t.fields:[],i=e.map(e=>{let t=e??{},n=typeof t.field==`string`?t.field:void 0;return n?{field:n,message:typeof t.message==`string`&&t.message.trim()?t.message:typeof t.code==`string`?t.code:``}:null}).filter(e=>e!==null);return new H(typeof t.message==`string`?t.message:`Validation failed`,i[0]?.field,i,r===null?{fields:e}:{fields:e,userMessage:r})}return t.code===`CONCURRENT_UPDATE`?new Ve({currentVersion:typeof n.currentVersion==`string`?n.currentVersion:null,currentRecord:n.currentRecord??null,message:typeof t.message==`string`?t.message:void 0,userMessage:r}):e}function X(e,t){if(!t||typeof t!=`object`)return null;let n=typeof t.method==`string`&&t.method?t.method:void 0,r=typeof t.url==`string`&&t.url?t.url:void 0,i=typeof t.status==`number`?t.status:typeof t.statusCode==`number`?t.statusCode:void 0;if(!n&&!r&&i===void 0)return null;let a=t.error&&typeof t.error==`object`?t.error:void 0,o=typeof t.code==`string`&&t.code||(a&&typeof a.code==`string`?a.code:void 0),s=[n??`GET`,r??`<unknown url>`];return s.push(`-> ${i??`no status`}`),o&&s.push(`[${o}]`),`${e}: ${s.join(` `)}`}function Ue(){let e=e=>{if(!e||typeof e!=`object`)return!1;if(e.status===404||e.statusCode===404)return!0;let t=e.error;if(t&&typeof t==`object`){let e=t.code;if(T({code:e},[`OBJECT_NOT_FOUND`,`RECORD_NOT_FOUND`]))return!0}return!1},t={debug:(e,t)=>console.debug(e,t??``),info:(e,t)=>console.info(e,t??``),warn:(e,t)=>console.warn(e,t??``),error:(t,n,r)=>{if(e(r)){console.debug(`[ObjectStack] ${X(t,r)??t} (suppressed expected 404)`,r);return}console.error(X(t,r)??t,n??``,r??``)},fatal:(e,t,n)=>console.error(X(e,n)??e,t??``,n??``),log:(e,...t)=>console.log(e,...t),child:()=>t,withTrace:()=>t};return t}var We=new Set(a.shape.reason.options),Ge=`objectui:unrecognized-drop-reason`;function Ke(e){return We.has(e)}function Z(e){return!!e&&typeof e==`object`&&Array.isArray(e.fields)&&e.fields.some(e=>typeof e==`string`)}function qe(e,t){let n=e.fields.filter(e=>typeof e==`string`),r=typeof e.object==`string`?e.object:t;return Ke(e.reason)?{...e,object:r,fields:n,reason:e.reason}:{...e,object:r,fields:n,reason:Ge,unrecognizedReason:e.reason}}var Je=``;function Q(e){if(typeof e!=`object`||!e)return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(Q).join(`,`)}]`;let t=e;return`{${Object.keys(t).sort().map(e=>`${JSON.stringify(e)}:${Q(t[e])}`).join(`,`)}}`}function Ye(e,t){if(e===t)return!0;let n=e==null,r=t==null;return n||r?n&&r:Q(e)===Q(t)}function Xe(e,t,n){if(!t||!n||typeof t!=`object`||typeof n!=`object`)return e;let r=[];for(let i of e){let e=i.fields.filter(e=>!Object.prototype.hasOwnProperty.call(t,e)||!Object.prototype.hasOwnProperty.call(n,e)||!Ye(t[e],n[e]));e.length>0&&r.push({...i,fields:e})}return r}function Ze(e){let t=e?.list??e;return t?.data?.object??t?.object??t?.objectName}var $=`_isOverride`;function Qe(e,t){return t&&t.config&&typeof t.config==`object`?!1:(e?.viewKind??t?.viewKind)===`list`}function $e(e,t){return e?.[$]===!0||t?.[$]===!0||Qe(e,t)}var et=Object.freeze([`rowHeight`,`sort`,`hiddenFields`,`columnState`,`inlineEdit`]),tt=Object.freeze([`name`,`object`,`viewKind`,$]);function nt(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;if(!$e(t,t.list??t))return e;let n={};for(let e of tt)t[e]!==void 0&&(n[e]=t[e]);for(let e of et)t[e]!==void 0&&(n[e]=t[e]);return n}function rt(e){if(!e||typeof e!=`object`)return null;let t=e,n=`item`in t?t.item:t;if(!n||typeof n!=`object`)return null;let r=n.list??n;return!r||typeof r!=`object`?null:Object.keys(r).length>0?r:null}function it(e){let t=e??void 0;return{removed:!!(t?.deleted??t?.reset??!0),...typeof t?.reset==`boolean`?{reset:t.reset}:{},...typeof t?.message==`string`?{message:t.message}:{}}}function at(e,t,n,r){return{...e,...t,name:n,object:e?.object||e?.data?.object||r}}var ot=class{client;connected=!1;connectPromise=null;metadataCache;connectionState=`disconnected`;connectionStateListeners=[];batchProgressListeners=[];autoReconnect;maxReconnectAttempts;reconnectDelay;reconnectAttempts=0;baseUrl;token;analyticsCapabilityWarned=!1;fetchImpl;inflightFinds=new Map;missingResources=new Set;batchUnsupported=!1;atomicBatchCapability;mutationListeners=new Set;writeWarningListeners=new Set;saveAdvisoryListeners=new Set;systemCapabilities;constructor(e){this.client=new re.ObjectStackClient({...e,logger:Ue()}),this.installSaveAdvisoryInterceptor(),this.metadataCache=new ue(e.cache),this.autoReconnect=e.autoReconnect??!0,this.maxReconnectAttempts=e.maxReconnectAttempts??3,this.reconnectDelay=e.reconnectDelay??1e3,this.baseUrl=e.baseUrl,this.token=e.token,this.systemCapabilities=e.systemCapabilities,this.fetchImpl=e.fetch||globalThis.fetch.bind(globalThis)}async connect(){if(!this.connected)return this.connectPromise?this.connectPromise:(this.setConnectionState(`connecting`),this.connectPromise=(async()=>{try{let e=this.baseUrl||``,t=e?`${e.replace(/\/$/,``)}/api/v1/discovery`:`/api/v1/discovery`,n=await De(e,async()=>{let e=await this.fetchImpl(t,{method:`GET`,headers:this.token?{Authorization:`Bearer ${this.token}`}:void 0});if(!e.ok)throw Error(`discovery ${e.status} ${e.statusText}`);let n=await e.json();return n&&typeof n.success==`boolean`&&`data`in n?n.data:n});this.client.discoveryInfo=n,this.atomicBatchCapability=Oe(n),this.connected=!0,this.reconnectAttempts=0,this.setConnectionState(`connected`)}catch(e){let t=new B(e instanceof Error?e.message:`Failed to connect to ObjectStack server`,void 0,{originalError:e});if(this.setConnectionState(`error`,t),this.autoReconnect&&this.reconnectAttempts<this.maxReconnectAttempts)await this.attemptReconnect();else throw t}finally{this.connectPromise=null}})(),this.connectPromise)}async attemptReconnect(){this.reconnectAttempts++,this.setConnectionState(`reconnecting`);let e=this.reconnectDelay*2**(this.reconnectAttempts-1);await new Promise(t=>setTimeout(t,e)),this.connected=!1,await this.connect()}getConnectionState(){return this.connectionState}isConnected(){return this.connected&&this.connectionState===`connected`}onConnectionStateChange(e){return this.connectionStateListeners.push(e),()=>{let t=this.connectionStateListeners.indexOf(e);t>-1&&this.connectionStateListeners.splice(t,1)}}onBatchProgress(e){return this.batchProgressListeners.push(e),()=>{let t=this.batchProgressListeners.indexOf(e);t>-1&&this.batchProgressListeners.splice(t,1)}}setConnectionState(e,t){this.connectionState=e;let n={state:e,timestamp:Date.now(),error:t};this.connectionStateListeners.forEach(e=>{try{e(n)}catch(e){console.error(`Error in connection state listener:`,e)}})}emitBatchProgress(e){this.batchProgressListeners.forEach(t=>{try{t(e)}catch(e){console.error(`Error in batch progress listener:`,e)}})}async find(e,t){if(this.missingResources.has(e))return{data:[],total:0};let n=`${e}::${Q(t)}`,r=this.inflightFinds.get(n);if(r)return r;let i=(async()=>{if(await this.connect(),t?.$expand&&t.$expand.length>0||t?.$search!=null&&String(t.$search).trim()!==``){let n=await this.rawFindWithPopulate(e,t);return this.normalizeQueryResult(n,t)}let n=this.convertQueryParams(t);try{let r=await this.client.data.find(e,n);return this.normalizeQueryResult(r,t)}catch(t){if(!Ae(t)&&K(t))return this.missingResources.add(e),{data:[],total:0};throw t}})();this.inflightFinds.set(n,i);let a=()=>{this.inflightFinds.get(n)===i&&this.inflightFinds.delete(n)};return i.then(a,a),i}async searchAll(e,t){let n=(e??``).trim();if(n===``)return{query:``,hits:[]};await this.connect();let r=new URLSearchParams;r.set(`q`,n),t?.limit!=null&&t.limit>0&&r.set(`limit`,String(t.limit)),t?.objects&&t.objects.length>0&&r.set(`objects`,t.objects.join(`,`));let i=(this.baseUrl||``).replace(/\/$/,``),a=`${i}${/\/api\/v\d+$/i.test(i)?`/search`:`/api/v1/search`}?${r.toString()}`,o={"Content-Type":`application/json`};this.token&&(o.Authorization=`Bearer ${this.token}`);let s=await this.fetchImpl(a,{method:`GET`,headers:o});if(!s.ok){if(s.status===404)return{query:n,hits:[]};let e=await s.json().catch(()=>({message:s.statusText})),t=Error(e?.error?.message||e?.message||s.statusText);throw t.status=s.status,t}let c=await s.json(),l=c&&typeof c==`object`&&typeof c.success==`boolean`&&`data`in c?c.data:c,u=Array.isArray(l?.hits)?l.hits:Array.isArray(l)?l:[],d=[];for(let e of u){if(!e||typeof e!=`object`)continue;let t=e,n=t.object??t.objectName??t.object_name,r=t.id??t.record?.id??t.record?._id;typeof n==`string`&&r!=null&&d.push({object:n,id:String(r),title:typeof t.title==`string`?t.title:void 0,snippet:typeof t.snippet==`string`?t.snippet:void 0,record:t.record&&typeof t.record==`object`?t.record:void 0})}return{query:typeof l?.query==`string`?l.query:n,hits:d}}async findOne(e,t,n){if(await this.connect(),n?.$expand&&n.$expand.length>0)try{let r={...n,$filter:{id:String(t)},$top:1},i=await this.rawFindWithPopulate(e,r);if(Array.isArray(i))return i[0]||null;let a=i;return(a.records||a.value||[])[0]||null}catch(e){if(K(e))return null}try{return(await this.client.data.get(e,String(t))).record}catch(e){if(K(e))return null;throw e}}emitMutation(e){for(let t of this.mutationListeners)try{t(e)}catch(e){console.warn(`ObjectStackAdapter: mutation listener error`,e)}}onMutation(e){return this.mutationListeners.add(e),()=>{this.mutationListeners.delete(e)}}emitWriteWarning(e){for(let t of this.writeWarningListeners)try{t(e)}catch(e){console.warn(`ObjectStackAdapter: write-warning listener error`,e)}}notifyDroppedFields(e,t,n,r,i){let a=n?.droppedFields;if(!Array.isArray(a)||a.length===0)return;let o=a.filter(Z).map(e=>qe(e,t)),s=n?.record,c=Xe(o,i,s);c.length!==0&&this.emitWriteWarning({operation:e,resource:t,...r===void 0?{}:{id:r},droppedFields:c})}notifyBatchDroppedFields(e,t){let n=t?.droppedFields;if(!Array.isArray(n)||n.length===0)return;let r=t?.results;for(let t of n){if(!Z(t))continue;let n=t,i=typeof n.index==`number`?e[n.index]:void 0,a=typeof n.object==`string`?n.object:typeof i?.object==`string`?i.object:Je,o=typeof n.index==`number`&&Array.isArray(r)?r[n.index]:void 0,[s]=Xe([qe({fields:n.fields,reason:n.reason},a)],i?.data,o);if(!s)continue;let c=(i?.action??`create`)===`create`?`create`:`update`;this.emitWriteWarning({operation:c,resource:a,...i?.id!==void 0&&i?.id!==null?{id:i.id}:{},droppedFields:[s]})}}onWriteWarning(e){return this.writeWarningListeners.add(e),()=>{this.writeWarningListeners.delete(e)}}onSaveAdvisory(e){return this.saveAdvisoryListeners.add(e),()=>{this.saveAdvisoryListeners.delete(e)}}emitSaveAdvisory(e){for(let t of this.saveAdvisoryListeners)try{t(e)}catch(e){console.warn(`ObjectStackAdapter: save-advisory listener error`,e)}}installSaveAdvisoryInterceptor(){let e=this.client.meta,t=e.saveItem.bind(e);e.saveItem=async(e,n,r)=>{let i=await t(e,n,r);try{let t=ie(i);t.length>0&&this.emitSaveAdvisory({type:e,name:n,door:`save`,mode:i?.state===`draft`?`draft`:`publish`,advisories:t})}catch(e){console.warn(`ObjectStackAdapter: save-advisory read error`,e)}return i}}async create(e,t){await this.connect();try{let n=await this.client.data.create(e,t);return this.emitMutation({type:`create`,resource:e,record:{...n.record}}),this.notifyDroppedFields(`create`,e,n,n.record?.id,t),n.record}catch(e){throw Y(e)}}async update(e,t,n,r){await this.connect();try{let i=await this.client.data.update(e,String(t),n,r?.ifMatch?{ifMatch:r.ifMatch}:void 0);return this.emitMutation({type:`update`,resource:e,id:t,record:{...i.record}}),this.notifyDroppedFields(`update`,e,i,t,n),i.record}catch(e){throw Y(e)}}async delete(e,t,n){await this.connect();try{let r=await this.client.data.delete(e,String(t),n?.ifMatch?{ifMatch:n.ifMatch}:void 0);return r.success&&this.emitMutation({type:`delete`,resource:e,id:t}),r.success}catch(e){throw Y(e)}}async bulkUpdate(e,t,n){if(await this.connect(),!t||t.length===0)return 0;let r=t.map(e=>({id:String(e),data:n})),i=t=>(t>0&&this.emitMutation({type:`update`,resource:e}),t),a=this.client.data.updateMany;if(typeof a==`function`)try{let n=await a(e,r,{continueOnError:!0});return n&&typeof n==`object`&&typeof n.succeeded==`number`?i(n.succeeded):i(Array.isArray(n)?n.length:t.length)}catch(e){throw Y(e)}let o=0;for(let r of t)try{await this.client.data.update(e,String(r),n),o++}catch{}return i(o)}async bulkDelete(e,t){if(await this.connect(),!t||t.length===0)return 0;let n=t.map(e=>String(e)),r=t=>(t>0&&this.emitMutation({type:`delete`,resource:e}),t),i=this.client.data.deleteMany;if(typeof i==`function`)try{let t=await i(e,n,{continueOnError:!0});return t&&typeof t==`object`&&typeof t.succeeded==`number`?r(t.succeeded):r(Array.isArray(t)?t.length:n.length)}catch(e){throw Y(e)}let a=0;for(let t of n)try{await this.client.data.delete(e,t),a++}catch{}return r(a)}async batchTransaction(e){await this.connect();let t=this.atomicBatchCapability===!0;if(!t&&this.batchUnsupported)return O(this,e);try{let t=await this.client.data.batchTransaction(e);return this.emitBatchMutations(e,t?.results),this.notifyBatchDroppedFields(e,t),t}catch(n){let r=this.errorStatusOf(n);if(!t&&this.batchStatusUnsupported(r))return this.fallbackToEmulation(e,r);throw n}}batchStatusUnsupported(e){return e===404||e===405||e===501}errorStatusOf(e){if(!e||typeof e!=`object`)return;let t=e,n=t.httpStatus??t.status??t.statusCode;return typeof n==`number`?n:void 0}fallbackToEmulation(e,t){return this.batchUnsupported||(this.batchUnsupported=!0,console.warn(`ObjectStackAdapter: POST /api/v1/batch unavailable (HTTP ${t??`?`}) — falling back to non-atomic client-side batch emulation. Cross-object saves on this backend are best-effort, not transactional.`)),O(this,e)}emitBatchMutations(e,t){let n=Array.isArray(t)?t:[];e.forEach((e,t)=>{let r=e.action??`create`,i=n[t];r===`create`?this.emitMutation({type:`create`,resource:e.object,record:i}):r===`update`?this.emitMutation({type:`update`,resource:e.object,id:e.id??i?.id??i?._id,record:i}):r===`delete`&&this.emitMutation({type:`delete`,resource:e.object,id:e.id})})}async bulk(e,t,n){if(await this.connect(),!n||n.length===0)return[];let r=n.length,i=0,a=0,o=()=>{this.emitBatchProgress({operation:t,total:r,completed:i,failed:a,percentage:r>0?(i+a)/r*100:0})};try{switch(t){case`create`:{o();let t=await this.client.data.createMany(e,n);return i=t.length,a=r-i,o(),i>0&&this.emitMutation({type:`create`,resource:e}),t}case`delete`:{let t=n.map(e=>e.id).filter(Boolean);if(t.length===0){let e=n.map((e,t)=>({index:t,error:`Missing ID for item at index ${t}`}));throw a=n.length,o(),new z(`delete`,0,n.length,e)}return o(),await this.client.data.deleteMany(e,t),i=t.length,a=r-i,o(),i>0&&this.emitMutation({type:`delete`,resource:e}),[]}case`update`:{if(typeof this.client.data.updateMany==`function`)try{o();let t=this.client.data.updateMany,s=await t(e,n);return i=s.length,a=r-i,o(),i>0&&this.emitMutation({type:`update`,resource:e}),s}catch{}let t=[],s=[];for(let r=0;r<n.length;r++){let c=n[r],l=c.id;if(!l){s.push({index:r,error:`Missing ID`}),a++,o();continue}try{let n=await this.client.data.update(e,String(l),c);t.push(n.record),i++,o()}catch(e){let t=e instanceof Error?e.message:String(e);s.push({index:r,error:t}),a++,o()}}if(i>0&&this.emitMutation({type:`update`,resource:e}),s.length>0)throw new z(`update`,t.length,s.length,s,{resource:e,totalRecords:n.length});return t}default:throw new R(`Unsupported bulk operation: ${t}`,`UNSUPPORTED_OPERATION`,400)}}catch(r){if(o(),r instanceof z||r instanceof R)throw r;let i=r instanceof Error?r.message:String(r),a=n.map((e,t)=>({index:t,error:i}));throw new z(t,0,n.length,a,{resource:e,originalError:r})}}async importRecords(e,t){await this.connect();let n=this.client.data.import;if(typeof n!=`function`)throw new R(`The connected @objectstack/client does not support data.import(). Upgrade the client, or import via a per-row create fallback.`,`UNSUPPORTED_OPERATION`,400);try{return await n.call(this.client.data,e,t)}catch(e){throw Y(e)}}importJobApi(){let e=this.client.data;if(typeof e.createImportJob==`function`)return e}async createImportJob(e,t){await this.connect();let n=this.importJobApi();if(!n)throw new R(`The connected @objectstack/client does not support async import jobs (data.createImportJob). Upgrade the client, or use the synchronous importRecords() path.`,`UNSUPPORTED_OPERATION`,400);try{return await n.createImportJob.call(this.client.data,e,t)}catch(e){throw Y(e)}}async getImportJobProgress(e){await this.connect();let t=this.importJobApi();if(!t)throw new R(`The connected @objectstack/client does not support async import jobs.`,`UNSUPPORTED_OPERATION`,400);try{return await t.getImportJobProgress.call(this.client.data,e)}catch(e){throw Y(e)}}async getImportJobResults(e){await this.connect();let t=this.importJobApi();if(!t)throw new R(`The connected @objectstack/client does not support async import jobs.`,`UNSUPPORTED_OPERATION`,400);try{return await t.getImportJobResults.call(this.client.data,e)}catch(e){throw Y(e)}}async listImportJobs(e={}){await this.connect();let t=this.importJobApi();if(!t)throw new R(`The connected @objectstack/client does not support async import jobs.`,`UNSUPPORTED_OPERATION`,400);try{return await t.listImportJobs.call(this.client.data,e)}catch(e){throw Y(e)}}async cancelImportJob(e){await this.connect();let t=this.importJobApi();if(!t)throw new R(`The connected @objectstack/client does not support async import jobs.`,`UNSUPPORTED_OPERATION`,400);try{await t.cancelImportJob.call(this.client.data,e)}catch(e){throw Y(e)}}async undoImportJob(e){await this.connect();let t=this.importJobApi();if(!t||typeof t.undoImportJob!=`function`)throw new R(`The connected @objectstack/client does not support undoing import jobs (data.undoImportJob).`,`UNSUPPORTED_OPERATION`,400);try{return await t.undoImportJob.call(this.client.data,e)}catch(e){throw Y(e)}}normalizeQueryResult(e,t){if(Array.isArray(e))return{data:e,total:e.length,page:1,pageSize:e.length,hasMore:!1};let n=e,r=n.records||n.value||[],i=n.total??n.count??r.length,a=typeof n.hasMore==`boolean`?n.hasMore:t?.$top?r.length===t.$top:!1;return{data:r,total:i,page:t?.$skip&&t.$top?Math.floor(t.$skip/t.$top)+1:1,pageSize:t?.$top,hasMore:a}}async rawFindWithPopulate(e,t){let n=new URLSearchParams;if(t.$expand&&t.$expand.length>0&&n.set(`populate`,t.$expand.join(`,`)),t.$top!==void 0&&n.set(`top`,String(t.$top)),t.$skip!==void 0&&n.set(`skip`,String(t.$skip)),t.$search!=null&&String(t.$search).trim()!==``&&n.set(`search`,String(t.$search).trim()),t.$searchFields&&t.$searchFields.length>0&&n.set(`searchFields`,t.$searchFields.join(`,`)),t.$select&&t.$select.length>0){let e=t.$select.includes(`id`)?t.$select:[`id`,...t.$select];n.set(`select`,e.join(`,`))}let r=Ee(t.$orderby);if(r&&n.set(`sort`,r),t.$filter!==void 0&&t.$filter!==null){let e=Te(t.$filter);e!==void 0&&n.set(`filter`,JSON.stringify(e))}let i=this.baseUrl.replace(/\/$/,``),a=n.toString(),o=`${i}${/\/api\/v\d+$/i.test(i)?`/data`:`/api/v1/data`}/${e}${a?`?${a}`:``}`,s={"Content-Type":`application/json`};this.token&&(s.Authorization=`Bearer ${this.token}`);let c=await this.fetchImpl(o,{method:`GET`,headers:s});if(!c.ok){let e=await c.json().catch(()=>({message:c.statusText})),t=Error(e?.error?.message||e?.message||c.statusText);throw t.status=c.status,t.code=e?.code??e?.error?.code,t.httpStatus=c.status,t}let l=await c.json();return l&&typeof l.success==`boolean`&&`data`in l?l.data:l}async exportDownload(e,t={}){let n=new URLSearchParams,r=t.format===`xlsx`?`xlsx`:t.format===`json`?`json`:`csv`;if(n.set(`format`,r),t.fields&&t.fields.length>0&&n.set(`fields`,t.fields.join(`,`)),t.limit&&t.limit>0&&n.set(`limit`,String(t.limit)),t.includeHeaders===!1&&n.set(`header`,`false`),t.sort&&t.sort.length>0){let e=t.sort.filter(e=>e&&e.field).map(e=>`${e.field}:${e.direction===`desc`?`desc`:`asc`}`).join(`,`);e&&n.set(`orderby`,e)}if(t.filter!==void 0&&t.filter!==null){let e=Te(t.filter);e!==void 0&&n.set(`filter`,JSON.stringify(e))}let i=typeof t.search==`string`?t.search.trim():``;i&&(n.set(`search`,i),t.searchFields&&t.searchFields.length>0&&n.set(`searchFields`,t.searchFields.join(`,`)));let a=this.baseUrl.replace(/\/$/,``),o=`${a}${/\/api\/v\d+$/i.test(a)?`/data`:`/api/v1/data`}/${encodeURIComponent(e)}/export?${n.toString()}`,s={...this.getAuthHeaders()},c=await this.fetchImpl(o,{method:`GET`,headers:s,credentials:`include`});if(!c.ok){let e=await c.json().catch(()=>({message:c.statusText})),t=Error(e?.error?.message||e?.message||c.statusText);throw t.status=c.status,t}return await c.blob()}convertQueryParams(e){if(!e)return{};let t={};e.$select&&(t.select=e.$select.includes(`id`)?e.$select:[`id`,...e.$select]),e.$filter!==void 0&&e.$filter!==null&&((Array.isArray(e.$filter)?e.$filter.length===0:typeof e.$filter==`object`&&Object.keys(e.$filter).length===0)||(t.filters=Array.isArray(e.$filter)?U(e.$filter):f(e.$filter)));let n=Ee(e.$orderby);return n&&(t.sort=n),e.$skip!==void 0&&(t.skip=e.$skip),e.$top!==void 0&&(t.top=e.$top),e.$search!=null&&String(e.$search).trim()!==``&&(t.search=String(e.$search).trim()),e.$searchFields&&e.$searchFields.length>0&&(t.searchFields=e.$searchFields),t}async getObjectSchema(e){await this.connect();try{let t=await this.metadataCache.get(e,()=>this.fetchObjectSchemaFresh(e));return ee(t),this.applyFieldWidgetOverrides(e,t),t}catch(t){let n=t;throw K(n)?new de(e,{originalError:t}):t instanceof R?t:fe(n,`getObjectSchema(${e})`)}}applyFieldWidgetOverrides(e,t){let n={sys_permission_set:{object_permissions:`permission-facet-link`,field_permissions:`permission-facet-link`,system_permissions:`permission-facet-link`,row_level_security:`permission-facet-link`,tab_permissions:`permission-facet-link`,admin_scope:`permission-facet-link`}}[e],r=t&&typeof t==`object`?t.fields:null;if(!(!n||!r))for(let[e,t]of Object.entries(n))if(Array.isArray(r)){let n=r.find(t=>t?.name===e);n&&!n.widget&&(n.widget=t)}else{let n=r[e];n&&!n.widget&&(n.widget=t)}}async fetchObjectSchemaFresh(e){let t=(this.baseUrl||``).replace(/\/$/,``),n=`${t}${/\/api\/v\d+$/i.test(t)?`/meta`:`/api/v1/meta`}/object/${encodeURIComponent(e)}`,r={"Content-Type":`application/json`};this.token&&(r.Authorization=`Bearer ${this.token}`);let i=await this.fetchImpl(n,{method:`GET`,headers:r,cache:`no-cache`});if(!i.ok){let e=await i.json().catch(()=>({message:i.statusText})),t=Error(e?.error?.message||e?.message||i.statusText);throw t.status=i.status,t}let a=await i.json(),o=a&&typeof a==`object`&&`success`in a&&`data`in a?a.data:a;return b(o&&typeof o==`object`&&`item`in o?o.item:o,o&&typeof o==`object`?o.sortability:void 0)}async getObjects(){try{await this.connect();let e=(this.baseUrl||``).replace(/\/$/,``),t=`${e}${/\/api\/v\d+$/i.test(e)?`/meta`:`/api/v1/meta`}/object`,n={"Content-Type":`application/json`};this.token&&(n.Authorization=`Bearer ${this.token}`);let r=await this.fetchImpl(t,{method:`GET`,headers:n});if(!r.ok)return[];let i=await r.json(),a=i&&typeof i==`object`&&`success`in i&&`data`in i?i.data:i;return(Array.isArray(a)?a:Array.isArray(a?.items)?a.items:[]).map(e=>({name:String(e?.name??``),label:e?.label==null?void 0:String(e.label)})).filter(e=>e.name)}catch{return[]}}getClient(){return this.client}async getDiscovery(){try{return await this.connect(),this.client.discoveryInfo||null}catch{return null}}invalidateViewKeys(e,t){this.metadataCache.invalidate?.(`view:${e}:${t}`),this.metadataCache.invalidate?.(`view-overrides:${e}`)}async listViewOverrides(e){await this.connect();let t=`view-overrides:${e}`;return await this.metadataCache.get(t,async()=>{let t=await this.client.meta.getItems(`view`),n=Array.isArray(t?.items)?t.items:Array.isArray(t)?t:[],r={};for(let t of n){if(!t||typeof t!=`object`||Ze(t)!==e)continue;let n=t.name;typeof n==`string`&&n&&(r[n]=t)}return r})}async getView(e,t){await this.connect();try{let n=`view:${e}:${t}`;return await this.metadataCache.get(n,async()=>{let e=await this.client.meta.getItem(`view`,t);return e&&e.item?e.item:e??null})}catch{return null}}setSystemCapabilities(e){this.systemCapabilities=e?[...e]:void 0}maySetViewConfig(){return this.systemCapabilities===void 0||this.systemCapabilities.includes(q)}async updateViewConfig(e,t,n,r){if(!this.maySetViewConfig())throw new Ne(e,t);await this.connect();let i={...n||{},object:n?.object||e,name:t,...r?.isSavedView?{}:{[$]:!0}},a=await this.client.meta.saveItem(`view`,t,i);return this.invalidateViewKeys(e,t),a&&a.item?a.item:a??void 0}async listViews(e,t){await this.connect();try{let n;if(t?.previewDrafts){let e=await this.metadataClient().withPreviewDrafts(!0).list(`view`);n=Array.isArray(e)?e:[]}else{let e=await this.client.meta.getItems(`view`);n=Array.isArray(e?.items)?e.items:Array.isArray(e)?e:[]}let r=new Set([`form`,`detail`]);return n.filter(t=>{if(!t)return!1;let n=t.list??t;if(Ze(t)!==e)return!1;let i=t.viewKind??n?.viewKind;return!(i&&r.has(i)||$e(t,n))}).map(e=>{let t=e.list??e,n=e._draft===!0||t?._draft===!0;return t&&t.config&&typeof t.config==`object`?{...t.config,name:t.name??t.config.name,label:t.label??t.config.label,isDefault:!!t.isDefault,...n?{_draft:!0}:{}}:n?{...t,_draft:!0}:t})}catch(e){return console.warn(`[OBJECTSTACKDataSource] listViews failed:`,e),[]}}metadataClient(){return new le({baseUrl:this.baseUrl,fetch:this.fetchImpl,...this.token?{headers:{Authorization:`Bearer ${this.token}`}}:{}})}async listImportMappings(e){await this.connect();try{let t=await this.client.meta.getItems(`mapping`);return(Array.isArray(t?.items)?t.items:Array.isArray(t)?t:[]).filter(t=>t&&t.targetObject===e)}catch(e){return console.warn(`[OBJECTSTACKDataSource] listImportMappings failed:`,e),[]}}async createView(e,t){await this.connect();let n=String(t?.name||``).trim();if(!n){let r=String(t?.label||e||`view`).toLowerCase().replace(/[^a-z0-9_]+/g,`_`).replace(/^_+|_+$/g,``).slice(0,40);(!r||/^[0-9]/.test(r))&&(r=r?`view_${r}`:`view`);let i=Date.now().toString(36);n=`${r}_${i}`}let r={...t,name:n,object:t?.object||e,data:t?.data||{provider:`object`,object:e}},i=await this.client.meta.saveItem(`view`,n,r);return this.invalidateViewKeys(e,n),i&&i.item?i.item:r}async updateView(e,t,n){await this.connect();let r=this.metadataClient(),i=rt(await r.get(`view`,t,{state:`draft`}));if(i){let a=at(i,n,t,e);return await r.save(`view`,t,a,{mode:`draft`}),this.invalidateViewKeys(e,t),a}let a;try{let e=await this.client.meta.getItem(`view`,t);a=e&&(e.item||e)||{},a?.list&&(a=a.list)}catch(n){throw K(n)?Object.assign(Error(`updateView: view "${t}" not found on object "${e}" — no pending draft and no published overlay. Use createView() to create one.`),{cause:n}):n}let o=at(a,n,t,e),s=await this.client.meta.saveItem(`view`,t,o);return this.invalidateViewKeys(e,t),s&&s.item?s.item:o}async deleteView(e,t){await this.connect();let n=this.metadataClient();try{let r=it(await n.reset(`view`,t,{state:`draft`})),i;try{i=it(await n.reset(`view`,t))}catch(n){let i={deleted:!1,draft:r,published:{removed:!1}};throw Object.assign(Error(`deleteView: view "${t}" on object "${e}" is NOT fully removed — the draft home was ${r.removed?`discarded`:`already absent`}, but deleting the published overlay failed. The published row is still serving the view; retry the delete.`),{cause:n,outcome:i})}return{deleted:r.removed||i.removed,draft:r,published:i}}finally{this.invalidateViewKeys(e,t)}}async getApp(e){await this.connect();try{let t=`app:${e}`;return await this.metadataCache.get(t,async()=>{let t=await this.client.meta.getItem(`app`,e);return t&&t.item?t.item:t??null})}catch{return null}}async probeAppAccess(e){if(!e)return`unknown`;try{return await this.client.meta.getItem(`app`,e),`granted`}catch(e){return Me(e)?`denied`:`unknown`}}async getPage(e){await this.connect();try{let t=`page:${e}`;return await this.metadataCache.get(t,async()=>{let t=await this.client.meta.getItem(`page`,e);return t&&t.item?t.item:t??null})}catch{return null}}async updateDashboard(e,t){await this.connect();let n=await this.client.meta.saveItem(`dashboard`,e,t);return this.metadataCache.invalidate?.(`dashboards`),this.metadataCache.invalidate?.(`dashboard:${e}`),n&&n.item?n.item:n??void 0}async aggregate(e,t){if(await this.connect(),t!=null&&(Array.isArray(t.groupBy)||Array.isArray(t.aggregations)||t.where!==void 0)){let n={};Array.isArray(t.groupBy)&&(n.groupBy=t.groupBy),Array.isArray(t.aggregations)&&(n.aggregations=t.aggregations),t.where!==void 0&&(be(t.where,e),n.where=t.where),typeof t.limit==`number`&&(n.limit=t.limit);let r=await this.client.data.query(e,n);return Array.isArray(r)?r:Array.isArray(r?.records)?r.records:Array.isArray(r?.data)?r.data:[]}try{let n=t.function===`count`?`count`:`${t.field}_${t.function}`,r=this.aggregateValueKey(t),i={cube:e,measures:[n],dimensions:t.groupBy&&t.groupBy!==`_all`?[t.groupBy]:[]};t.filter&&(i.where=Array.isArray(t.filter)?U(t.filter):t.filter);let a=await this.client.analytics.query(i),o=Array.isArray(a)?a:a?.rows&&Array.isArray(a.rows)?a.rows:a?.data&&Array.isArray(a.data)?a.data:a?.data?.rows&&Array.isArray(a.data.rows)?a.data.rows:a?.results&&Array.isArray(a.results)?a.results:[];return o.length>0&&o.every(e=>e==null||!(n in e&&e[n]!=null||r in e&&e[r]!=null))?await this.aggregateViaFind(e,t):o.map(e=>{let t={...e};return n!==r&&n in t&&(t[r]=t[n],delete t[n]),t})}catch(n){let r=Be(n);if(r.kind===`rejected`)throw new ze(r.message,r.code);if(r.kind===`unauthenticated`)throw new J({serverCode:r.code,serverMessage:r.message});if(r.kind===`cube-not-found`)throw n;return r.kind===`not-installed`&&this.warnAnalyticsCapabilityOnce(r.message),await this.aggregateViaFind(e,t)}}async aggregateViaFind(e,t){let n=(await this.find(e,t.filter?{$filter:t.filter}:void 0)).data||[];return n.length===0?[]:this.aggregateClientSide(n,t)}warnAnalyticsCapabilityOnce(e){this.analyticsCapabilityWarned||(this.analyticsCapabilityWarned=!0,console.warn(`[OBJECTSTACKDataSource] analytics capability unavailable — aggregating client-side from a scoped find(). Numbers stay correct but the semantic layer (cubes, joins, server-side rollups) is off. Install @objectstack/service-analytics to enable it.`+(e?` Server said: ${e}`:``)))}async queryDataset(e,t){await this.connect();let n=`${(this.baseUrl||``).replace(/\/$/,``)}/api/v1/analytics/dataset/query`,r=typeof window<`u`&&new URLSearchParams(window.location.search).get(`preview`)===`draft`,i=typeof e==`string`?{datasetName:e,selection:t,...r?{previewDrafts:!0}:{}}:{dataset:e,selection:t,...r?{previewDrafts:!0}:{}},a=await this.fetchImpl(n,{method:`POST`,headers:{"Content-Type":`application/json`,...this.token?{Authorization:`Bearer ${this.token}`}:{}},body:JSON.stringify(i)});if(!a.ok){let t;try{t=await a.json()}catch{}let{code:n,message:r}=Le(t),i=r||(t===void 0?``:JSON.stringify(t)),o=`POST /analytics/dataset/query`,s=typeof e==`string`?e:typeof e?.name==`string`?String(e.name):void 0;if(T({code:n},[`NOT_IMPLEMENTED`,`ROUTE_NOT_FOUND`]))throw new Fe(o,r,n);if(w({code:n},`NOT_FOUND`))throw new Ie({datasetName:s,serverCode:n,serverMessage:r});if(w({code:n},`UNAUTHENTICATED`))throw new J({serverCode:n,serverMessage:r});if(n===void 0){if(Re.includes(a.status))throw new Fe(o,i||void 0);if(a.status===401)throw new J({serverMessage:r})}throw Error(`Dataset query failed: ${a.status} ${a.statusText}${i?` — ${i}`:``}`)}let o=await a.json(),s=o&&typeof o==`object`&&`success`in o&&`data`in o?o.data:o;return{rows:Array.isArray(s?.rows)?s.rows:Array.isArray(s)?s:[],fields:Array.isArray(s?.fields)?s.fields:[],object:typeof s?.object==`string`?s.object:void 0,dimensionFields:s?.dimensionFields&&typeof s.dimensionFields==`object`?s.dimensionFields:void 0,drillRawRows:Array.isArray(s?.drillRawRows)?s.drillRawRows:void 0,drillRanges:Array.isArray(s?.drillRanges)?s.drillRanges:void 0,totals:Array.isArray(s?.totals)?s.totals:void 0}}aggregateValueKey(e){return e.field||e.function||`count`}aggregateClientSide(e,t){let{field:n,function:r,groupBy:i}=t,a=this.aggregateValueKey(t),o={};for(let t of e){let e=String(t[i]??`Unknown`);o[e]||(o[e]=[]),o[e].push(t)}return Object.entries(o).map(([e,t])=>{let o=n?t.map(e=>Number(e[n])||0):[],s;switch(r){case`count`:s=t.length;break;case`avg`:s=o.length>0?o.reduce((e,t)=>e+t,0)/o.length:0;break;case`min`:s=o.length>0?Math.min(...o):0;break;case`max`:s=o.length>0?Math.max(...o):0;break;default:s=o.reduce((e,t)=>e+t,0)}return{[i]:e,[a]:s}})}async getItems(e,t){return await this.connect(),await Promise.all(t.map(async t=>{let n=`${e}:${t}`;return this.metadataCache.get(n,async()=>{let n=await this.client.meta.getItem(e,t);return n&&n.item?n.item:n})}))}getCached(e){return this.metadataCache.getCachedSync(e)}getCacheStats(){return this.metadataCache.getStats()}invalidateCache(e){this.metadataCache.invalidate(e)}clearCache(){this.metadataCache.clear()}async uploadFile(e,t,n){await this.connect();let r=new FormData;r.append(`file`,t),n?.recordId&&r.append(`recordId`,n.recordId),n?.fieldName&&r.append(`fieldName`,n.fieldName),n?.metadata&&r.append(`metadata`,JSON.stringify(n.metadata));let i=`${this.baseUrl}/api/data/${encodeURIComponent(e)}/upload`,a=await fetch(i,{method:`POST`,body:r,headers:{...this.getAuthHeaders()}});if(!a.ok)throw new R((await a.json().catch(()=>({message:a.statusText}))).message||`Upload failed with status ${a.status}`,`UPLOAD_ERROR`,a.status);return a.json()}async uploadFiles(e,t,n){await this.connect();let r=new FormData;t.forEach((e,t)=>{r.append(`files`,e,e.name||`file-${t}`)}),n?.recordId&&r.append(`recordId`,n.recordId),n?.fieldName&&r.append(`fieldName`,n.fieldName),n?.metadata&&r.append(`metadata`,JSON.stringify(n.metadata));let i=`${this.baseUrl}/api/data/${encodeURIComponent(e)}/upload`,a=await fetch(i,{method:`POST`,body:r,headers:{...this.getAuthHeaders()}});if(!a.ok)throw new R((await a.json().catch(()=>({message:a.statusText}))).message||`Upload failed with status ${a.status}`,`UPLOAD_ERROR`,a.status);return a.json()}async cancelPendingApproval(e,t){await this.connect();let n=`${this.baseUrl}/api/v1/approvals/requests?recordId=${encodeURIComponent(t)}&object=${encodeURIComponent(e)}`,r=await this.fetchImpl(n,{method:`GET`,headers:{"Content-Type":`application/json`,...this.getAuthHeaders()}});if(!r.ok)throw new R(`Failed to look up approval requests (status ${r.status})`,`APPROVAL_LOOKUP_FAILED`,r.status);let i=await r.json().catch(()=>({})),a=(Array.isArray(i)?i:i?.data??[]).find(e=>e?.status===`pending`||e?.status===`in_approval`);if(!a?.id)throw new R(`No pending approval request found for this record`,`NO_PENDING_REQUEST`,404);let o=`${this.baseUrl}/api/v1/approvals/requests/${encodeURIComponent(a.id)}/recall`,s=await this.fetchImpl(o,{method:`POST`,headers:{"Content-Type":`application/json`,...this.getAuthHeaders()},body:JSON.stringify({})});if(!s.ok){let e=await s.json().catch(()=>({}));throw new R(e?.error||e?.message||`Recall failed with status ${s.status}`,e?.code||`APPROVAL_RECALL_FAILED`,s.status)}let c=await s.json().catch(()=>({}));return{requestId:a.id,status:c?.data?.request?.status??`recalled`}}getAuthHeaders(){let e={};return this.token&&(e.Authorization=`Bearer ${this.token}`),e}};export{he as a,O as c,T as d,C as f,h as g,g as h,nt as i,k as l,x as m,Ae as n,le as o,S as p,Pe as r,ee as s,ot as t,w as u};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{a as t,b as n,f as r,h as i,p as a,r as o}from"./vendor-react-CsWFRkED.js";import{L as s,N as c,z as l}from"./vendor-objectstack-BeKUVjuj.js";import{u}from"./data-adapter-DL25qpAe.js";import{Bn as d,Cn as f,Cr as p,Da as m,Ea as h,Fs as g,Gt as _,In as v,Ja as y,Jt as b,Kt as x,Lo as S,Os as C,Pa as w,Pr as T,Qc as E,Si as D,Sn as O,Sr as k,Ss as A,Ta as j,Ut as M,Wt as N,Xr as P,Yt as ee,_i as F,aa as te,bn as I,br as L,fa as ne,gn as re,hi as R,ht as ie,ls as z,mt as ae,pc as B,qt as oe,va as se,vn as ce,vo as le,vr as ue,vt as de,ws as fe,xn as pe,xr as me,yi as he,yn as ge,yr as _e}from"./ui-components-D2lrjG-t.js";import{o as ve,s as ye}from"./createDerive-Best2JCj.js";import{C as be}from"./vendor-zod-r9lyeyrU.js";import{r as xe}from"./SchemaForm-DJbupOno.js";import{a as V,g as H,i as U,l as Se,o as Ce,r as W,u as we}from"./i18n-Cfqor-xb.js";import{r as Te}from"./dist-BK-OswHQ.js";function Ee(e){let t=(Array.isArray(e)?e:[e]).map(e=>e.split(`.`));return(e,n)=>{for(let r of t){let t=e;for(let e of r)if(t&&typeof t==`object`&&e in t)t=t[e];else{t=void 0;break}if(t===n)return!0}return!1}}var G=new Map;function De(e){let t=G.get(e.type);if(!t){G.set(e.type,e);return}let n={...t};for(let[t,r]of Object.entries(e))r!==void 0&&(n[t]=r);G.set(e.type,n)}function Oe(e){return G.get(e)}function ke(e){let t=[];for(let n of G.values())if(n.anchors?.length)for(let r of n.anchors)r.anchorType===e&&t.push({type:n.type,config:n,anchor:r});return t.sort((e,t)=>{let n=e.anchor.order??100,r=t.anchor.order??100;if(n!==r)return n-r;let i=e.anchor.groupLabel??e.config.label??e.type,a=t.anchor.groupLabel??t.config.label??t.type;return i.localeCompare(a)}),t}function Ae(e,t){let n=G.get(e)??{type:e};return{...n,type:e,label:n.label??t?.label??e,description:n.description??t?.description,domain:n.domain??t?.domain??`other`,allowOrgOverride:t?.allowOrgOverride,defaultSchema:n.defaultSchema}}var K=e(n(),1),q=o();function je({entry:e,readOnly:t,locale:n,compact:r}){let i=r?`text-[10px] h-5 px-1.5`:`text-[10px]`;return t?(0,q.jsx)(T,{variant:`outline`,className:`${i} text-muted-foreground`,title:W(`engine.studio.pkg.readonlyHint`,n),children:W(`engine.badge.readOnly`,n)}):e?.allowOrgOverride?(0,q.jsx)(T,{className:`${i} `+(e.overrideSource===`env`?`bg-amber-100 text-amber-800 hover:bg-amber-100`:`bg-emerald-100 text-emerald-800 hover:bg-emerald-100`),title:e.overrideSource===`env`?`Writable via OBJECTSTACK_METADATA_WRITABLE env var`:`Writable per ADR-0005 overlay opt-in`,children:W(`engine.badge.writable`,n)}):e?.allowRuntimeCreate?(0,q.jsx)(T,{className:`${i} bg-sky-100 text-sky-800 hover:bg-sky-100`,title:`Code-shipped items are locked; new items can be created at runtime`,children:W(`engine.badge.createOnly`,n)}):(0,q.jsx)(T,{variant:`outline`,className:`${i} text-muted-foreground`,children:W(`engine.badge.readOnly`,n)})}function Me({entry:e,itemName:n,subtitle:i,stats:a,actions:o,embedded:s=!1,readOnly:c=!1,children:l}){let u=e?.type??``,d=H(),f=we(u,d,e?.label),{pathname:p}=r(),m=K.useMemo(()=>{let e=p.indexOf(`/metadata`);return e>=0?p.slice(0,e+9):`/metadata`},[p]);return(0,q.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[n?(0,q.jsxs)(`div`,{className:`px-6 py-2.5 border-b bg-background flex items-center gap-3 min-h-[44px]`,children:[(0,q.jsxs)(`nav`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground min-w-0`,children:[s?(0,q.jsx)(`span`,{className:`shrink-0`,children:f}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(t,{to:m,className:`hover:text-foreground shrink-0`,children:W(`engine.breadcrumb.allTypes`,d)}),(0,q.jsx)(B,{className:`h-3 w-3 shrink-0`}),(0,q.jsx)(t,{to:`${m}/${encodeURIComponent(u)}`,className:`hover:text-foreground shrink-0`,children:f})]}),(0,q.jsx)(B,{className:`h-3 w-3 shrink-0`}),(0,q.jsx)(`span`,{className:`text-foreground font-medium font-mono truncate`,title:n,children:n})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0`,children:[e?.domain&&(0,q.jsx)(T,{variant:`outline`,className:`text-[10px] uppercase tracking-wider h-5 px-1.5`,children:Se(e.domain,d)}),(0,q.jsx)(je,{entry:e,readOnly:c,locale:d,compact:!0})]}),i&&(0,q.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:i}),(0,q.jsx)(`div`,{className:`flex-1`}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[a?.map((e,t)=>(0,q.jsxs)(`div`,{className:`flex items-baseline gap-1 px-2 py-0.5 rounded border bg-muted/30`,children:[(0,q.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground`,children:e.label}),(0,q.jsx)(`span`,{className:`text-xs font-semibold tabular-nums`,children:e.value})]},t)),o]})]}):(0,q.jsxs)(`div`,{className:`px-6 pt-5 pb-4 border-b bg-background`,children:[!s&&(0,q.jsxs)(`nav`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground mb-2`,children:[(0,q.jsx)(t,{to:m,className:`hover:text-foreground`,children:W(`engine.breadcrumb.allTypes`,d)}),(0,q.jsx)(B,{className:`h-3 w-3`}),(0,q.jsx)(`span`,{className:`text-foreground font-medium`,children:f})]}),(0,q.jsxs)(`div`,{className:`flex items-start justify-between gap-3 flex-wrap`,children:[(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,q.jsx)(`h1`,{className:`text-xl font-semibold truncate`,children:f}),(0,q.jsx)(`code`,{className:`text-xs font-mono text-muted-foreground`,children:u}),e?.domain&&(0,q.jsx)(T,{variant:`outline`,className:`text-[10px] uppercase tracking-wider`,children:Se(e.domain,d)}),(0,q.jsx)(je,{entry:e,readOnly:c,locale:d})]}),i&&(0,q.jsx)(`div`,{className:`text-sm text-muted-foreground mt-1`,children:i}),!i&&e?.description&&(0,q.jsx)(`div`,{className:`text-sm text-muted-foreground mt-1 max-w-3xl`,children:e.description})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[a?.map((e,t)=>(0,q.jsxs)(`div`,{className:`flex flex-col items-end px-3 py-1 rounded border bg-muted/30 min-w-[64px]`,children:[(0,q.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground`,children:e.label}),(0,q.jsx)(`span`,{className:`text-sm font-semibold tabular-nums`,children:e.value})]},t)),o]})]})]}),(0,q.jsx)(`div`,{className:`flex-1 overflow-auto`,children:l})]})}function Ne({type:e,name:t}){let n=i(),r=e??n.type??``,o=t??n.name??``,s=a(),c=ve(),l=H(),{entries:u}=ye(c),d=u.find(e=>e.type===r),[f,p]=K.useState(0),[m,h]=K.useState(0);return(0,q.jsx)(Me,{entry:d??{type:r,label:r},itemName:o,subtitle:W(`engine.edit.historySubtitle`,l),stats:[{label:W(`engine.edit.historyEvents`,l),value:m}],actions:(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(P,{variant:`ghost`,size:`sm`,onClick:()=>s(`../${encodeURIComponent(o)}`),children:[(0,q.jsx)(E,{className:`h-4 w-4 mr-1`}),`Back to item`]}),(0,q.jsx)(P,{variant:`ghost`,size:`sm`,onClick:()=>p(e=>e+1),children:(0,q.jsx)(se,{className:`h-4 w-4`})})]}),children:(0,q.jsx)(`div`,{className:`p-6 max-w-4xl`,children:(0,q.jsx)(Pe,{type:r,name:o,refreshKey:f,onCount:h,client:c,locale:l,onRollback:()=>p(e=>e+1)})})})}function Pe({type:e,name:t,refreshKey:n=0,onCount:r,client:i,onRollback:a,rollbackConfirm:o,rollbackLabel:s,locale:c}){let[l,u]=K.useState([]),[d,f]=K.useState(!0),[p,m]=K.useState(null),[h,g]=K.useState(null),[_,v]=K.useState(null),[y,b]=K.useState(0);K.useEffect(()=>{let n=!1;return f(!0),m(null),(async()=>{try{let a=await i.history(e,t,{limit:100});if(n)return;let o=[...Array.isArray(a)?a:Array.isArray(a?.events)?a.events:[]].sort((e,t)=>(t.seq??0)-(e.seq??0));u(o),r?.(o.length),f(!1)}catch(e){n||(m(e?.message??String(e)),f(!1))}})(),()=>{n=!0}},[i,e,t,n,y]);async function x(n){let r=o?o(n):`Restore version ${n}? This writes the historical body back as the current overlay.`;if(confirm(r)){v(n),m(null);try{await i.rollback(e,t,n),a?.(n),b(e=>e+1)}catch(e){m(e?.message??String(e))}finally{v(null)}}}return(0,q.jsxs)(q.Fragment,{children:[d&&(0,q.jsxs)(`div`,{className:`text-sm text-muted-foreground flex items-center gap-2`,children:[(0,q.jsx)(le,{className:`h-4 w-4 animate-spin`}),` Loading history…`]}),p&&(0,q.jsx)(`div`,{className:`text-sm text-destructive border border-destructive/30 rounded p-3 bg-destructive/5`,children:p}),!d&&!p&&l.length===0&&(0,q.jsxs)(ae,{children:[(0,q.jsx)(de,{children:W(`engine.edit.historyEmptyTitle`,c)}),(0,q.jsx)(ie,{children:W(`engine.edit.historyEmptyDesc`,c)})]}),!d&&l.length>0&&(0,q.jsx)(`ol`,{className:`space-y-2 relative pl-6 border-l`,children:l.map((e,t)=>{let n=h===t,r=e.op??e.kind,i=e.ts??e.at,o=!!a&&typeof e.version==`number`&&r!==`delete`&&r!==`tombstone`;return(0,q.jsxs)(`li`,{className:`relative`,children:[(0,q.jsx)(`span`,{className:`absolute -left-[27px] top-2 w-3 h-3 rounded-full bg-primary ring-4 ring-background`}),(0,q.jsxs)(`div`,{role:`button`,tabIndex:0,onClick:()=>g(n?null:t),onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&g(n?null:t)},className:`border rounded-lg p-3 hover:border-primary/50 cursor-pointer transition-colors`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,q.jsxs)(T,{variant:`outline`,className:`text-[10px] font-mono`,children:[`seq `,e.seq??`–`]}),typeof e.version==`number`&&(0,q.jsxs)(T,{variant:`outline`,className:`text-[10px] font-mono`,children:[`v`,e.version]}),r&&(0,q.jsx)(T,{className:`text-[10px] `+(r===`delete`||r===`tombstone`?`bg-red-100 text-red-800 hover:bg-red-100`:r===`create`?`bg-blue-100 text-blue-800 hover:bg-blue-100`:r===`publish`?`bg-emerald-100 text-emerald-800 hover:bg-emerald-100`:r===`revert`?`bg-amber-100 text-amber-900 hover:bg-amber-100`:`bg-emerald-100 text-emerald-800 hover:bg-emerald-100`),children:Ce(`op`,String(r),c)}),e.actor&&(0,q.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`by`,` `,(0,q.jsx)(`span`,{className:`font-mono`,children:String(e.actor)})]}),i&&(0,q.jsx)(`span`,{className:`text-xs text-muted-foreground ml-auto`,children:Fe(i)}),o&&(0,q.jsx)(P,{size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0`,title:s??`Rollback to this version`,disabled:_!==null,onClick:t=>{t.stopPropagation(),x(e.version)},children:_===e.version?(0,q.jsx)(le,{className:`h-3.5 w-3.5 animate-spin`}):(0,q.jsx)(ne,{className:`h-3.5 w-3.5`})})]}),n&&(0,q.jsx)(`pre`,{className:`mt-2 text-xs font-mono bg-muted/30 rounded p-2 overflow-auto max-h-[280px]`,children:Ie(e)})]})]},`${e.seq??t}-${t}`)})})]})}function Fe(e){try{let t=new Date(e);return Number.isNaN(t.getTime())?String(e):t.toLocaleString()}catch{return String(e)}}function Ie(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Le(e){let t=e?.data??e,n=Array.isArray(t)?t:t?.packages??[],r=[];for(let e of n){if(!e||typeof e!=`object`)continue;let t=e.manifest??{},n=String(t.id??e.id??``);if(!n)continue;let i=typeof t.scope==`string`?t.scope:``;if(i===`system`||i===`cloud`)continue;let a=typeof t.namespace==`string`&&t.namespace?t.namespace:s(n),o=typeof e.writable==`boolean`?e.writable:i!==`project`,c=(typeof t.name==`string`&&t.name.trim()?t.name:void 0)??(typeof e.name==`string`&&e.name.trim()?e.name:void 0);r.push({id:n,name:c??n,writable:o,namespace:a})}return r}async function Re(){let e=await fetch(`/api/v1/packages`,{credentials:`include`,headers:{Accept:`application/json`},cache:`no-store`});if(!e.ok)throw Error(`HTTP ${e.status}`);return Le(await e.json())}var ze=5;function Be(e){let t=Array.isArray(e.failed)?e.failed:[],n=typeof e.failedCount==`number`?e.failedCount:t.length,r=typeof e.copiedCount==`number`?e.copiedCount:0;if(n>0){let e=t.slice(0,ze).map(e=>`${e.type||`item`}/${e.name||`?`}: ${e.error||`copy failed`}`),i=t.length-e.length;return`Partial duplicate: ${r} item(s) copied, ${n} failed.${e.length?` ${e.join(`; `)}${i>0?`; +${i} more`:``}`:``}`}return`Nothing was copied: the duplicate is empty (0 items copied, 0 reported as failed). The source package may have no active items, or its rows may be outside this session's scope.`}async function Ve(e,t,n){let r=await fetch(`/api/v1/packages/${encodeURIComponent(e)}/duplicate`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({targetPackageId:t,...n?{targetName:n}:{}})}),i=await r.json().catch(()=>null);if(!r.ok){let e=i?.error?.message;throw Error(e||`HTTP ${r.status}`)}let a=i?.data??i??void 0;if(a?.success===!1)throw Error(Be(a))}var He=/^[a-z][a-z0-9_.-]*(\.[a-z0-9_-]+)+$/,Ue=/^[a-z][a-z0-9_]{1,19}$/;function We(e,t){return t&&l(e,t)?`${t}_${e}`:e}function Ge(e){let t=e.toLowerCase().replace(/[^a-z0-9_.-]/g,``);return{value:t,stripped:t.length!==e.length}}var Ke={io:`input`,unrepresentable:`any`},J,qe=!1;function Je(){if(J||qe)return J;try{J=be(c,Ke)}catch(e){qe=!0,typeof console<`u`&&console.warn(`[package-schema] failed to derive manifest JSONSchema from spec`,e)}return J}function Ye(e){return{type:`modal`,sections:[{label:W(`engine.packages.form.basics`,e),columns:1,fields:[{field:`name`,label:W(`engine.packages.create.name`,e),helpText:V(`engine.packages.form.help.name`,e),placeholder:`Acme CRM`},{field:`id`,label:W(`engine.packages.create.id`,e),helpText:V(`engine.packages.form.help.id`,e),placeholder:`com.acme.crm`,immutable:!0},{field:`namespace`,label:W(`engine.packages.create.namespace`,e),helpText:V(`engine.packages.form.help.namespace`,e),placeholder:`crm`,immutable:!0},{field:`version`,label:W(`engine.packages.create.version`,e),helpText:V(`engine.packages.form.help.version`,e),placeholder:`0.1.0`},{field:`type`,label:W(`engine.packages.detail.type`,e),helpText:V(`engine.packages.form.help.type`,e),immutable:!0},{field:`description`,label:W(`engine.packages.detail.description`,e),helpText:V(`engine.packages.form.help.description`,e)}]},{label:W(`engine.packages.form.advanced`,e),collapsible:!0,collapsed:!0,columns:1,fields:[{field:`defaultDatasource`,label:W(`engine.packages.form.defaultDatasource`,e),helpText:V(`engine.packages.form.help.defaultDatasource`,e),immutable:!0},{field:`scope`,label:W(`engine.packages.form.scope`,e),helpText:V(`engine.packages.form.help.scope`,e),immutable:!0},{field:`dependencies`,label:W(`engine.packages.form.dependencies`,e),helpText:V(`engine.packages.form.help.dependencies`,e),immutable:!0}]}]}}var Xe=`/api/v1/packages`,Ze=/^\d+\.\d+\.\d+$/;async function Qe(e,t){let n=await fetch(e,{credentials:`include`,headers:{Accept:`application/json`,...t?.headers||{}},...t}),r=await n.text(),i=r?JSON.parse(r):null;if(!n.ok||i?.success===!1){let e=i?.error?.message||i?.error||i?.message||`Request failed (${n.status})`,t=Error(typeof e==`string`?e:`Request failed (${n.status})`);throw t.status=n.status,t}return i?.data??i}function $e(){try{window.dispatchEvent(new CustomEvent(`objectui:packages-changed`))}catch{}}function Y({mode:e,open:t,onOpenChange:n,manifest:r,onSaved:i}){let a=H(),o=K.useMemo(()=>Je(),[]),l=K.useMemo(()=>Ye(a),[a]),u=e===`create`,d=e===`view`,[f,m]=K.useState({}),[h,g]=K.useState(!1),[_,v]=K.useState(null),y=K.useRef(!1);K.useEffect(()=>{t&&(y.current=!1,m(u?{version:`0.1.0`,type:`app`}:{...r??{}}),v(null),g(!1))},[t,u,r]);let b=K.useCallback(e=>{if(!u){m(e);return}m(t=>{let n=e.namespace;return n!==t.namespace&&(y.current=!0,n=String(n??``).toLowerCase().replace(/[^a-z0-9_]/g,``)),!y.current&&e.id!==t.id&&(n=s(String(e.id??``))??``),{...e,namespace:n}})},[u]),x=K.useMemo(()=>{if(d)return[];let e=c.safeParse(f);return e.success?[]:e.error.issues.map(e=>({path:e.path.join(`.`),message:e.message}))},[f,d]),S=!!String(f.name??``).trim(),C=String(f.version??``).trim(),w=u?Ze.test(C):!C||Ze.test(C),T=!u||!!String(f.id??``).trim(),E=!u||Ue.test(String(f.namespace??``).trim()),D=!d&&S&&w&&T&&E&&!h;async function O(){if(D){g(!0),v(null);try{let t;if(u){let n={...f,id:String(f.id??``).trim(),name:String(f.name??``).trim(),version:C,type:f.type??`app`},r=await Qe(Xe,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({manifest:n})});t={id:String(r?.manifest?.id??n.id),mode:e,package:r}}else{let n=String(r?.id??f.id??``);t={id:n,mode:e,package:await Qe(`${Xe}/${encodeURIComponent(n)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:String(f.name??``).trim(),description:String(f.description??``).trim(),version:C})})}}$e(),i?.(t),n(!1)}catch(e){let t=e?.message??``;e?.status===409||/already exists/i.test(t)?v(W(`engine.packages.create.exists`,a)):e?.status===403||/manage_metadata/i.test(t)?v(W(`engine.packages.noCapability`,a)):v(t||W(u?`engine.packages.create.failed`:`engine.packages.edit.failed`,a))}finally{g(!1)}}}let A=W(e===`create`?`engine.packages.create.title`:e===`edit`?`engine.packages.edit.title`:`engine.packages.view.title`,a);return(0,q.jsx)(ue,{open:t,onOpenChange:n,children:(0,q.jsxs)(_e,{className:`max-h-[85vh] overflow-y-auto`,children:[(0,q.jsxs)(k,{children:[(0,q.jsx)(p,{children:A}),e===`create`?(0,q.jsx)(L,{children:U(`engine.packages.create.description`,a,{example:`com.acme.crm`})}):(0,q.jsx)(L,{className:`font-mono text-xs`,children:String(r?.id??f.id??``)})]}),(0,q.jsx)(`div`,{className:`py-1`,"data-testid":`package-form`,children:(0,q.jsx)(xe,{schema:o,form:l,value:f,onChange:b,issues:x,readOnly:d,createMode:u})}),_&&(0,q.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border border-destructive/40 bg-destructive/10 p-2 text-sm text-destructive`,children:[(0,q.jsx)(he,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,q.jsx)(`span`,{children:_})]}),(0,q.jsx)(me,{children:d?(0,q.jsx)(P,{variant:`outline`,onClick:()=>n(!1),children:W(`engine.close`,a)}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(P,{variant:`outline`,onClick:()=>n(!1),disabled:h,children:W(`engine.cancel`,a)}),(0,q.jsx)(P,{onClick:O,disabled:!D,"data-testid":`package-form-submit`,children:W(h?u?`engine.packages.create.creating`:`engine.packages.edit.saving`:u?`engine.packages.create.submit`:`engine.packages.edit.save`,a)})]})})]})})}var X=`/api/v1/packages`;async function Z(e,t){let n=await fetch(e,{credentials:`include`,headers:{Accept:`application/json`,...t?.headers||{}},...t}),r=await n.text(),i=r?JSON.parse(r):null;if(!n.ok||i?.success===!1){let e=i?.error?.message||i?.error||i?.message||`Request failed (${n.status})`;throw Error(typeof e==`string`?e:`Request failed (${n.status})`)}return i?.data??i}function et({scope:e}){let t=H();if(!e)return(0,q.jsx)(T,{className:`bg-emerald-400/15 text-emerald-600 hover:bg-emerald-400/15 dark:text-emerald-300`,children:W(`engine.packages.scope.writable`,t)});let n=e===`project`?`default`:e===`system`?`secondary`:`outline`,r=e===`project`?`engine.packages.scope.project`:e===`system`?`engine.packages.scope.system`:e===`cloud`?`engine.packages.scope.cloud`:``;return(0,q.jsx)(T,{variant:n,children:r?W(r,t):e})}function tt({pkg:e}){let t=H(),n=e.enabled!==!1&&e.status!==`disabled`;return(0,q.jsx)(T,{variant:n?`default`:`outline`,children:W(n?`engine.packages.status.enabled`:`engine.packages.status.disabled`,t)})}function nt({open:e,onOpenChange:t,onCreated:n}){return(0,q.jsx)(Y,{mode:`create`,open:e,onOpenChange:t,onSaved:e=>n(e.id)})}function Q({label:e,children:t}){return(0,q.jsxs)(`div`,{className:`flex items-baseline justify-between gap-4 py-1.5`,children:[(0,q.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:e}),(0,q.jsx)(`span`,{className:`text-sm font-medium text-right break-all`,children:t})]})}function rt({pkg:e,open:t,onOpenChange:n,onSaved:r}){return(0,q.jsx)(Y,{mode:`edit`,open:t,onOpenChange:n,manifest:e?.manifest??null,onSaved:t=>r(t.package??e)})}function it({pkg:e,appBase:n,open:r,onOpenChange:i,onChanged:a}){let o=H(),[s,c]=K.useState(null),[l,d]=K.useState(null),[p,m]=K.useState(null),[_,v]=K.useState(!1),[b,x]=K.useState(!1);if(K.useEffect(()=>{d(null),c(null)},[e?.manifest.id]),K.useEffect(()=>{let t=e?.manifest.id;if(!r||!t){m(null);return}let n=!1;return Z(`/api/v1/meta/_drafts?packageId=${encodeURIComponent(t)}`).then(e=>{n||m(e?.drafts??[])}).catch(()=>{n||m([])}),()=>{n=!0}},[r,e?.manifest.id]),!e)return null;let E=e.manifest.id,k=e.enabled!==!1&&e.status!==`disabled`,M=e.manifest.scope===`system`||e.manifest.scope===`cloud`;async function N(e,t,n){c(e),d(null);try{await t(),d({kind:`ok`,text:n}),a()}catch(e){d({kind:`err`,text:e?.message??W(`engine.packages.detail.actionFailed`,o)})}finally{c(null)}}return(0,q.jsx)(ce,{open:r,onOpenChange:i,children:(0,q.jsxs)(ge,{className:`w-full sm:max-w-md overflow-y-auto`,children:[(0,q.jsxs)(pe,{children:[(0,q.jsxs)(O,{className:`flex items-center gap-2`,children:[(0,q.jsx)(y,{className:`h-4 w-4`}),e.manifest.name||E]}),(0,q.jsx)(I,{className:`font-mono text-xs`,children:E})]}),(0,q.jsxs)(`div`,{className:`mt-4`,children:[(0,q.jsx)(Q,{label:W(`engine.packages.col.version`,o),children:e.manifest.version||`—`}),(0,q.jsx)(Q,{label:W(`engine.packages.detail.type`,o),children:e.manifest.type||`—`}),(0,q.jsx)(Q,{label:W(`engine.packages.col.scope`,o),children:(0,q.jsx)(et,{scope:e.manifest.scope})}),(0,q.jsx)(Q,{label:W(`engine.packages.col.status`,o),children:(0,q.jsx)(tt,{pkg:e})}),e.manifest.description&&(0,q.jsx)(Q,{label:W(`engine.packages.detail.description`,o),children:e.manifest.description})]}),n&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(f,{className:`my-4`}),(0,q.jsxs)(t,{to:`${n}/metadata/object?package=${encodeURIComponent(E)}`,className:`inline-flex items-center gap-1.5 text-sm text-primary hover:underline`,onClick:()=>i(!1),children:[(0,q.jsx)(fe,{className:`h-3.5 w-3.5`}),W(`engine.packages.detail.browseMetadata`,o)]})]}),p&&p.length>0&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(f,{className:`my-4`}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsxs)(`p`,{className:`flex items-center gap-2 text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:[W(`engine.packages.detail.pendingChanges`,o),(0,q.jsx)(T,{variant:`secondary`,children:p.length})]}),(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:W(`engine.packages.detail.pendingHint`,o)}),!M&&(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,q.jsxs)(P,{size:`sm`,onClick:()=>N(`publish-drafts`,()=>Z(`${X}/${encodeURIComponent(E)}/publish-drafts`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({})}).then(async e=>{try{let e=await Z(`/api/v1/meta/_drafts?packageId=${encodeURIComponent(E)}`);m(e?.drafts??[])}catch{m([])}if(e?.failedCount){let t=Array.isArray(e.failed)?e.failed:[],n=t.find(e=>!u(e,`BATCH_ABORTED`)&&e?.error);throw t.some(e=>u(e,`BATCH_ABORTED`))?Error(U(`engine.packages.detail.publishDraftsRolledBack`,o,{cause:n?`${n.type??`?`}/${n.name??`?`}: ${n.error}`:String(e.failedCount)})):Error(U(`engine.packages.detail.publishDraftsPartial`,o,{published:e.publishedCount??0,failed:e.failedCount}))}return e}),W(`engine.packages.detail.publishDraftsOk`,o)),disabled:!!s,children:[(0,q.jsx)(R,{className:`mr-1.5 h-3.5 w-3.5`}),s===`publish-drafts`?W(`engine.packages.detail.publishing`,o):U(`engine.packages.detail.publishApp`,o,{count:p.length})]}),(0,q.jsxs)(P,{size:`sm`,variant:`outline`,onClick:()=>N(`discard-drafts`,()=>Z(`${X}/${encodeURIComponent(E)}/discard-drafts`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({})}).then(async e=>{try{let e=await Z(`/api/v1/meta/_drafts?packageId=${encodeURIComponent(E)}`);m(e?.drafts??[])}catch{m([])}if(e?.failedCount)throw Error(U(`engine.packages.detail.discardDraftsPartial`,o,{discarded:e.discardedCount??0,failed:e.failedCount}));return e}),W(`engine.packages.detail.discardDraftsOk`,o)),disabled:!!s,children:[(0,q.jsx)(F,{className:`mr-1.5 h-3.5 w-3.5`}),s===`discard-drafts`?W(`engine.packages.detail.discarding`,o):U(`engine.packages.detail.discardChanges`,o,{count:p.length})]})]}),(0,q.jsx)(`ul`,{className:`space-y-1`,children:p.map(e=>n?(0,q.jsx)(`li`,{children:(0,q.jsxs)(t,{to:`${n}/metadata/${encodeURIComponent(e.type)}/${encodeURIComponent(e.name)}?review=1`,className:`inline-flex items-center gap-1.5 text-sm text-primary hover:underline`,onClick:()=>i(!1),children:[(0,q.jsx)(z,{className:`h-3.5 w-3.5`}),(0,q.jsx)(`span`,{className:`font-mono text-xs`,children:e.type}),(0,q.jsx)(`span`,{className:`text-muted-foreground`,children:`·`}),e.name]})},`${e.type}/${e.name}`):(0,q.jsxs)(`li`,{className:`inline-flex items-center gap-1.5 text-sm`,children:[(0,q.jsx)(z,{className:`h-3.5 w-3.5 text-muted-foreground`}),(0,q.jsx)(`span`,{className:`font-mono text-xs`,children:e.type}),(0,q.jsx)(`span`,{className:`text-muted-foreground`,children:`·`}),e.name]},`${e.type}/${e.name}`))})]})]}),(0,q.jsx)(f,{className:`my-4`}),M?(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:W(`engine.packages.detail.kernelReadOnly`,o)}):(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:W(`engine.packages.detail.actions`,o)}),(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,q.jsxs)(P,{size:`sm`,variant:`outline`,onClick:()=>x(!0),disabled:!!s,children:[(0,q.jsx)(A,{className:`mr-1.5 h-3.5 w-3.5`}),W(`engine.packages.detail.viewInfo`,o)]}),(0,q.jsxs)(P,{size:`sm`,variant:`outline`,onClick:()=>v(!0),disabled:!!s,children:[(0,q.jsx)(w,{className:`mr-1.5 h-3.5 w-3.5`}),W(`engine.packages.detail.edit`,o)]}),(0,q.jsxs)(P,{size:`sm`,onClick:()=>N(`publish`,()=>Z(`${X}/${encodeURIComponent(E)}/publish`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({})}).then(e=>{if(e&&e.success===!1){let t=e.validationErrors?.length??0;throw Error(t?U(`engine.packages.detail.publishBlocked`,o,{count:t}):e.validationErrors?.[0]?.message||W(`engine.packages.detail.nothingToPublish`,o))}return e}),W(`engine.packages.detail.published`,o)),disabled:!!s,children:[(0,q.jsx)(R,{className:`mr-1.5 h-3.5 w-3.5`}),W(s===`publish`?`engine.packages.detail.publishing`:`engine.packages.detail.publish`,o)]}),(0,q.jsxs)(P,{size:`sm`,variant:`outline`,onClick:()=>N(`revert`,()=>Z(`${X}/${encodeURIComponent(E)}/revert`,{method:`POST`}),W(`engine.packages.detail.reverted`,o)),disabled:!!s,children:[(0,q.jsx)(F,{className:`mr-1.5 h-3.5 w-3.5`}),W(`engine.packages.detail.revert`,o)]}),(0,q.jsxs)(P,{size:`sm`,variant:`outline`,onClick:()=>N(`toggle`,()=>Z(`${X}/${encodeURIComponent(E)}/${k?`disable`:`enable`}`,{method:`PATCH`}),W(k?`engine.packages.detail.disabled`:`engine.packages.detail.enabled`,o)),disabled:!!s,children:[k?(0,q.jsx)(h,{className:`mr-1.5 h-3.5 w-3.5`}):(0,q.jsx)(j,{className:`mr-1.5 h-3.5 w-3.5`}),W(k?`engine.packages.detail.disable`:`engine.packages.detail.enable`,o)]}),(0,q.jsxs)(P,{size:`sm`,variant:`outline`,onClick:()=>N(`export`,async()=>{let e=await Z(`${X}/${encodeURIComponent(E)}/export`),t=new Blob([JSON.stringify(e,null,2)],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${E}.package.json`,document.body.appendChild(r),r.click(),r.remove(),URL.revokeObjectURL(n)},W(`engine.packages.detail.exported`,o)),disabled:!!s,children:[(0,q.jsx)(C,{className:`mr-1.5 h-3.5 w-3.5`}),W(s===`export`?`engine.packages.detail.exporting`:`engine.packages.detail.export`,o)]}),(0,q.jsxs)(P,{size:`sm`,variant:`outline`,onClick:async()=>{let t=window.prompt(W(`engine.packages.detail.duplicatePrompt`,o),`${E}-copy`);if(!(!t||!t.trim())){c(`duplicate`),d(null);try{await Z(`${X}/${encodeURIComponent(E)}/duplicate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({targetPackageId:t.trim(),targetName:`${e?.manifest.name??E} (copy)`})}),d({kind:`ok`,text:W(`engine.packages.detail.duplicated`,o)}),a()}catch(e){d({kind:`err`,text:e?.message??`Duplicate failed`})}finally{c(null)}}},disabled:!!s,children:[(0,q.jsx)(g,{className:`mr-1.5 h-3.5 w-3.5`}),W(s===`duplicate`?`engine.packages.detail.duplicating`:`engine.packages.detail.duplicate`,o)]}),(0,q.jsxs)(P,{size:`sm`,variant:`outline`,onClick:async()=>{if(window.confirm(U(`engine.packages.detail.adoptConfirm`,o,{name:e?.manifest.name||E}))){c(`adopt`),d(null);try{await Z(`${X}/${encodeURIComponent(E)}/adopt-orphans`,{method:`POST`}),d({kind:`ok`,text:W(`engine.packages.detail.adopted`,o)}),a()}catch(e){d({kind:`err`,text:e?.message??`Adopt failed`})}finally{c(null)}}},disabled:!!s,children:[(0,q.jsx)(S,{className:`mr-1.5 h-3.5 w-3.5`}),W(s===`adopt`?`engine.packages.detail.adopting`:`engine.packages.detail.adoptOrphans`,o)]}),(0,q.jsxs)(P,{size:`sm`,variant:`outline`,onClick:async()=>{if(!window.confirm(U(`engine.packages.detail.deleteConfirm`,o,{name:e?.manifest.name||E})))return;let t=window.confirm(W(`engine.packages.detail.deleteKeepData`,o))?``:`?keepData=true`;c(`delete`),d(null);try{await Z(`${X}/${encodeURIComponent(E)}${t}`,{method:`DELETE`}),a(),i(!1)}catch(e){d({kind:`err`,text:e?.message??W(`engine.packages.detail.deleteFailed`,o)})}finally{c(null)}},disabled:!!s,className:`text-destructive hover:bg-destructive/10 hover:text-destructive`,children:[(0,q.jsx)(D,{className:`mr-1.5 h-3.5 w-3.5`}),W(s===`delete`?`engine.packages.detail.deleting`:`engine.packages.detail.deleteApp`,o)]})]})]}),l&&(0,q.jsx)(`div`,{className:`mt-4 rounded-md border p-2 text-sm ${l.kind===`ok`?`border-emerald-500/40 bg-emerald-500/10 text-emerald-700 dark:text-emerald-400`:`border-destructive/40 bg-destructive/10 text-destructive`}`,children:l.text}),(0,q.jsx)(rt,{pkg:e,open:_,onOpenChange:v,onSaved:()=>{d({kind:`ok`,text:W(`engine.packages.edit.saved`,o)}),a()}}),(0,q.jsx)(Y,{mode:`view`,open:b,onOpenChange:x,manifest:e?.manifest??null})]})})}function at(){let e=H(),{pathname:t}=r(),n=K.useMemo(()=>{let e=t.indexOf(`/component`);return e>=0?t.slice(0,e):t},[t]),[i,a]=K.useState([]),[o,s]=K.useState(!0),[c,l]=K.useState(null),[u,f]=K.useState(``),[p,h]=K.useState(!1),[g,S]=K.useState(!1),[C,w]=K.useState(null),[T,E]=K.useState(!1),D=K.useRef(null),[O,k]=K.useState(!1),[A,j]=K.useState(null),F=K.useCallback(async()=>{s(!0),l(null);try{let e=await Z(X),t=Array.isArray(e?.packages)?e.packages:[];t.sort((e,t)=>{let n=e.manifest.scope===`project`?0:1,r=t.manifest.scope===`project`?0:1;return n===r?(e.manifest.name||e.manifest.id).localeCompare(t.manifest.name||t.manifest.id):n-r}),a(t)}catch(t){l(t?.message??W(`engine.packages.loadFailed`,e))}finally{s(!1)}},[e]);K.useEffect(()=>{F()},[F]),K.useEffect(()=>{if(!C)return;let e=i.find(e=>e.manifest.id===C.manifest.id);e&&e!==C&&w(e)},[i,C]);let I=K.useMemo(()=>{let e=u.trim().toLowerCase();return i.filter(t=>(t.manifest.scope===`system`||t.manifest.scope===`cloud`)&&!p?!1:!e||t.manifest.id.toLowerCase().includes(e)||(t.manifest.name||``).toLowerCase().includes(e))},[i,u,p]),L=e=>{w(e),E(!0)},ne=async t=>{let n=t.target.files?.[0];if(t.target.value=``,n){k(!0),j(null);try{let t=await n.text(),r;try{r=JSON.parse(t)}catch{throw Error(W(`engine.packages.import.invalidJson`,e))}if(!r||typeof r!=`object`||!r.id&&!r.name)throw Error(W(`engine.packages.import.invalidPackage`,e));let i=await Z(`/api/v1/marketplace/install-local`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({manifest:r})});j({kind:`ok`,text:U(`engine.packages.import.success`,e,{id:i?.manifestId??r.id})}),await F()}catch(t){j({kind:`err`,text:t?.message??W(`engine.packages.import.failed`,e)})}finally{k(!1)}}},R=i.filter(e=>e.manifest.scope===`system`||e.manifest.scope===`cloud`).length;return(0,q.jsxs)(`div`,{className:`mx-auto w-full max-w-5xl px-6 py-6`,children:[(0,q.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,q.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,q.jsx)(`div`,{className:`rounded-lg bg-primary/10 p-2 text-primary`,children:(0,q.jsx)(y,{className:`h-5 w-5`})}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{className:`text-xl font-semibold tracking-tight`,children:W(`engine.packages.title`,e)}),(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:W(`engine.packages.description`,e)})]})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsxs)(P,{variant:`outline`,size:`sm`,onClick:()=>void F(),disabled:o,children:[(0,q.jsx)(se,{className:`mr-1.5 h-3.5 w-3.5 ${o?`animate-spin`:``}`}),W(`engine.packages.refresh`,e)]}),(0,q.jsx)(`input`,{ref:D,type:`file`,accept:`application/json,.json`,className:`hidden`,onChange:ne}),(0,q.jsxs)(P,{variant:`outline`,size:`sm`,onClick:()=>D.current?.click(),disabled:O,children:[(0,q.jsx)(z,{className:`mr-1.5 h-3.5 w-3.5`}),W(O?`engine.packages.importing`:`engine.packages.import`,e)]}),(0,q.jsxs)(P,{size:`sm`,onClick:()=>S(!0),children:[(0,q.jsx)(m,{className:`mr-1.5 h-3.5 w-3.5`}),W(`engine.packages.new`,e)]})]})]}),A&&(0,q.jsx)(`div`,{className:`mt-4 rounded-md border p-2 text-sm ${A.kind===`ok`?`border-emerald-500/40 bg-emerald-500/10 text-emerald-700 dark:text-emerald-400`:`border-destructive/40 bg-destructive/10 text-destructive`}`,children:A.text}),(0,q.jsxs)(`div`,{className:`mt-5 flex flex-wrap items-center justify-between gap-3`,children:[(0,q.jsxs)(`div`,{className:`relative w-full max-w-xs`,children:[(0,q.jsx)(te,{className:`absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground`}),(0,q.jsx)(v,{className:`pl-8`,placeholder:W(`engine.packages.search`,e),value:u,onChange:e=>f(e.target.value)})]}),R>0&&(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(ee,{id:`show-kernel`,checked:p,onCheckedChange:h}),(0,q.jsx)(d,{htmlFor:`show-kernel`,className:`text-sm text-muted-foreground`,children:U(`engine.packages.showPlatform`,e,{count:R})})]})]}),(0,q.jsx)(`div`,{className:`mt-4 rounded-lg border`,children:o?(0,q.jsx)(`div`,{className:`space-y-2 p-4`,children:[0,1,2].map(e=>(0,q.jsx)(re,{className:`h-10 w-full`},e))}):c?(0,q.jsxs)(`div`,{className:`flex items-start gap-2 p-4 text-sm text-destructive`,children:[(0,q.jsx)(he,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,q.jsx)(`span`,{children:c})]}):I.length===0?(0,q.jsx)(`div`,{className:`p-8`,children:(0,q.jsxs)(ae,{children:[(0,q.jsx)(de,{children:W(`engine.packages.empty`,e)}),(0,q.jsx)(ie,{children:i.length===0?W(`engine.packages.emptyCreate`,e):W(`engine.packages.emptyFiltered`,e)})]})}):(0,q.jsxs)(M,{children:[(0,q.jsx)(oe,{children:(0,q.jsxs)(b,{children:[(0,q.jsx)(x,{children:W(`engine.packages.col.name`,e)}),(0,q.jsx)(x,{children:`ID`}),(0,q.jsx)(x,{className:`w-24`,children:W(`engine.packages.col.version`,e)}),(0,q.jsx)(x,{className:`w-24`,children:W(`engine.packages.col.scope`,e)}),(0,q.jsx)(x,{className:`w-24`,children:W(`engine.packages.col.status`,e)})]})}),(0,q.jsx)(N,{children:I.map(e=>(0,q.jsxs)(b,{className:`cursor-pointer`,onClick:()=>L(e),children:[(0,q.jsx)(_,{className:`font-medium`,children:e.manifest.name||e.manifest.id}),(0,q.jsx)(_,{className:`font-mono text-xs text-muted-foreground`,children:e.manifest.id}),(0,q.jsx)(_,{children:e.manifest.version||`—`}),(0,q.jsx)(_,{children:(0,q.jsx)(et,{scope:e.manifest.scope})}),(0,q.jsx)(_,{children:(0,q.jsx)(tt,{pkg:e})})]},e.manifest.id))})]})}),(0,q.jsx)(nt,{open:g,onOpenChange:S,onCreated:async()=>{await F()}}),(0,q.jsx)(it,{pkg:C,appBase:n,open:T,onOpenChange:E,onChanged:()=>void F()})]})}var $=new Map;function ot(e,t){$.set(e,t)}function st(e){return $.get(e)}function ct(){return Array.from($.keys()).sort()}function lt(e=4e3){let t=K.useRef(null),[n,r]=K.useState(!1);return K.useEffect(()=>{if(n)return;let e=!1,t=Te?.init?.();return t&&typeof t.catch==`function`&&t.catch(()=>{e||r(!0)}),()=>{e=!0}},[n]),K.useEffect(()=>{if(n)return;let i=setTimeout(()=>{let e=t.current;(!e||!e.querySelector(`.view-line`))&&r(!0)},e);return()=>clearTimeout(i)},[n,e]),[n,t]}var ut=new Map;function dt(e,t){ut.set(e,t)}function ft(e){return ut.get(e)}function pt(){return Array.from(ut.keys()).sort()}var mt=new Map;function ht(e,t){mt.set(e,t)}function gt(e){return mt.get(e)}export{Oe as C,Ae as E,Ee as S,De as T,We as _,dt as a,Ne as b,ct as c,it as d,at as f,Re as g,Ve as h,pt as i,ot as l,He as m,ht as n,lt as o,Y as p,ft as r,st as s,gt as t,nt as u,Ge as v,ke as w,Me as x,Pe as y};