@objectstack/console 17.5.0 → 17.7.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 (282) hide show
  1. package/CHANGELOG.md +806 -0
  2. package/dist/.objectstack-injection.json +2 -2
  3. package/dist/.objectui-sha +1 -1
  4. package/dist/assets/{ActionResultDialog-CLdIyOW6.js → ActionResultDialog-ChYnuROr.js} +3 -3
  5. package/dist/assets/{AiPendingActionsPage-OKYz66yR.js → AiPendingActionsPage-Dh3-i4BB.js} +1 -1
  6. package/dist/assets/{ApiConsolePage-CcrKovu8.js → ApiConsolePage-CKYEqlMs.js} +1 -1
  7. package/dist/assets/AppDocsIndex-B5Tky2xg.js +1 -0
  8. package/dist/assets/{AppManagementPage-D_xz8cTZ.js → AppManagementPage-ZwyvnHpM.js} +1 -1
  9. package/dist/assets/ApprovalsInboxPage-DD4fe0Em.js +1 -0
  10. package/dist/assets/{AuditLogPage-CoghqsZb.js → AuditLogPage-Sed6iMqP.js} +1 -1
  11. package/dist/assets/BookPage-DYjUsQIc.js +1 -0
  12. package/dist/assets/{ComponentNavView-BxsixSU9.js → ComponentNavView-DrlxM4SY.js} +1 -1
  13. package/dist/assets/CreateViewDialog-Cp72x_O7.js +1 -0
  14. package/dist/assets/DashboardView-juicRxcP.js +1 -0
  15. package/dist/assets/DocPage-CxJaQ-pC.js +1 -0
  16. package/dist/assets/{DocsIndex-B2zw_HAp.js → DocsIndex-LALVtIVR.js} +1 -1
  17. package/dist/assets/{DocsLayout-DezZ8x7_.js → DocsLayout-BAwlJQQf.js} +1 -1
  18. package/dist/assets/DocsSlug-CkF1E-Zs.js +1 -0
  19. package/dist/assets/ExpressionProvider-Dr0e99r1.js +1 -0
  20. package/dist/assets/FlowRunsPage-R3W3t2s4.js +1 -0
  21. package/dist/assets/{IntegrationsPage-2leVkVDH.js → IntegrationsPage-DIuFLEbF.js} +2 -2
  22. package/dist/assets/InterfaceListPage-BfoCldGu.js +1 -0
  23. package/dist/assets/{MarketplaceInstalledPage-EPPHSitW.js → MarketplaceInstalledPage-DyjhcUNB.js} +1 -1
  24. package/dist/assets/MarketplacePackagePage-BbO27Pgs.js +4 -0
  25. package/dist/assets/{MarketplacePage-BnQKykgv.js → MarketplacePage-DO2_b64U.js} +1 -1
  26. package/dist/assets/{MetadataInspector-BWxLkr0O.js → MetadataInspector-BQyu9pOE.js} +1 -1
  27. package/dist/assets/ObjectDataPage-DIY-yefK.js +1 -0
  28. package/dist/assets/PageView-C-qWu3Jw.js +1 -0
  29. package/dist/assets/ProfilePage-Qp8DL8CF.js +1 -0
  30. package/dist/assets/{PublicFormsPage-DlE6tck_.js → PublicFormsPage-D3AT2EH9.js} +1 -1
  31. package/dist/assets/RecordDetailView-B3XBEgk2.js +3 -0
  32. package/dist/assets/RecordFormPage-CcoZfUJ3.js +1 -0
  33. package/dist/assets/ReportDefaultInspector-DVcWM6sh.js +1 -0
  34. package/dist/assets/ReportView-pJCFptzp.js +2 -0
  35. package/dist/assets/RuntimeDraftBar-DObTyFu2.js +1 -0
  36. package/dist/assets/SchemaForm-BWSWYMLE.js +3 -0
  37. package/dist/assets/SearchResultsPage-ChVIzFob.js +1 -0
  38. package/dist/assets/{SettingsHub-BGKIj-Zq.js → SettingsHub-CPP9FDe8.js} +1 -1
  39. package/dist/assets/SettingsView-CrHAROu9.js +1 -0
  40. package/dist/assets/{SkeletonDetail-C8fMI-Mu.js → SkeletonDetail-CP-35B8x.js} +1 -1
  41. package/dist/assets/{af-BfSmLD34.js → af-Bhbso4Pg.js} +1 -1
  42. package/dist/assets/ai-BAPiCsNk.js +3 -0
  43. package/dist/assets/app-shell-eager-leaves-D9tgfJOe.js +1 -0
  44. package/dist/assets/{ar-B9ttrM75.js → ar-DG8TAFtm.js} +1 -1
  45. package/dist/assets/{ar-DZ-C1rn-cyl.js → ar-DZ-BtSien-d.js} +1 -1
  46. package/dist/assets/{ar-EG-BaDxKP_o.js → ar-EG-DpXC0zoY.js} +1 -1
  47. package/dist/assets/{ar-MA-DbxNEcmd.js → ar-MA-D1qVJLyE.js} +1 -1
  48. package/dist/assets/{ar-SA-DeC5LXcX.js → ar-SA-BIYKNgv8.js} +1 -1
  49. package/dist/assets/{ar-TN-C9KpTFJz.js → ar-TN-mUR5Mq3s.js} +1 -1
  50. package/dist/assets/{az-cMerDwRO.js → az-B7IqwHGK.js} +1 -1
  51. package/dist/assets/{be-ZTSbszQh.js → be-CnZyPaSX.js} +1 -1
  52. package/dist/assets/{be-tarask-BXZEUrgX.js → be-tarask--uMMCC7l.js} +1 -1
  53. package/dist/assets/{bg-BDogpmn5.js → bg-CZwuirtY.js} +1 -1
  54. package/dist/assets/{bn-Cz04uxmh.js → bn-BbOX0r-z.js} +1 -1
  55. package/dist/assets/{bs-CpFnCl-j.js → bs-B5W75cYR.js} +1 -1
  56. package/dist/assets/{ca-CHC4M52Z.js → ca-Be69LdIM.js} +1 -1
  57. package/dist/assets/{ckb-Dxw-RNm8.js → ckb-B-nKM1Vn.js} +1 -1
  58. package/dist/assets/contracts-DieHW666.js +1 -0
  59. package/dist/assets/{createDerive-DvA_JGNq.js → createDerive-CynsXU-B.js} +1 -1
  60. package/dist/assets/{cs-DsFaJ5Z7.js → cs-qHngxH7l.js} +1 -1
  61. package/dist/assets/{cy-FH4JFDTs.js → cy-DscO2Pgf.js} +1 -1
  62. package/dist/assets/{da-D1pVjaAq.js → da-vibkaLMF.js} +1 -1
  63. package/dist/assets/data-adapter-BDsrq0TX.js +2 -0
  64. package/dist/assets/{de-AT-DUMQCisj.js → de-AT--JneEuBw.js} +1 -1
  65. package/dist/assets/{de-DKrxSvnP.js → de-BCT78XYW.js} +1 -1
  66. package/dist/assets/default-inspector-registry-Dktr6x_q.js +1 -0
  67. package/dist/assets/dist-yh3dYtHt.js +14 -0
  68. package/dist/assets/drillUrlFilters-N0RngQg6.js +1 -0
  69. package/dist/assets/{el-l3-bHySV.js → el-Cl0y9T2b.js} +1 -1
  70. package/dist/assets/en-AU-By42tTB7.js +1 -0
  71. package/dist/assets/{en-CA-DGH5NF0a.js → en-CA-BqEEoj-Y.js} +1 -1
  72. package/dist/assets/en-GB-Cx8B9nkB.js +1 -0
  73. package/dist/assets/en-IE-CX9nv6uO.js +1 -0
  74. package/dist/assets/en-IN-ByGSBHa4.js +1 -0
  75. package/dist/assets/en-NZ-BPMwa2ZN.js +1 -0
  76. package/dist/assets/en-ZA-lj_N4R6c.js +1 -0
  77. package/dist/assets/{eo-CL6CXHZx.js → eo-oOXROuhF.js} +1 -1
  78. package/dist/assets/{es-BIJ0rksI.js → es-EudscwjH.js} +1 -1
  79. package/dist/assets/{et-BGgMzjm1.js → et-CB-5LLh6.js} +1 -1
  80. package/dist/assets/{eu-CqvAoRrX.js → eu-B4-hcseX.js} +1 -1
  81. package/dist/assets/{fa-IR-DNz3oA1-.js → fa-IR-CogavcMJ.js} +1 -1
  82. package/dist/assets/{fi-DNSfKWuW.js → fi-CIBE0mYa.js} +1 -1
  83. package/dist/assets/{formatLong-CHb9WA3O.js → formatLong-qqgm7lV1.js} +1 -1
  84. package/dist/assets/{fr-CA-CotiswPx.js → fr-CA-BugXMutW.js} +1 -1
  85. package/dist/assets/{fr-DYRJCirJ.js → fr-CDReXYWW.js} +1 -1
  86. package/dist/assets/{fr-CH-CpiEYWpc.js → fr-CH-fiTiB6X1.js} +1 -1
  87. package/dist/assets/framework-CAuH4h0L.js +35 -0
  88. package/dist/assets/{fy-B69yM3FE.js → fy-t_GzIAg_.js} +1 -1
  89. package/dist/assets/{gd-BAy8AsX6.js → gd-CSncIxtN.js} +1 -1
  90. package/dist/assets/{getIcon-BEVyC4y3.js → getIcon-BDkBRQFw.js} +1 -1
  91. package/dist/assets/{gl-soLn_weL.js → gl-_138Mj2S.js} +1 -1
  92. package/dist/assets/{gu-B19Yo9yC.js → gu-COfH-YUT.js} +1 -1
  93. package/dist/assets/{he-DYTPo33p.js → he-BXL4lOKY.js} +1 -1
  94. package/dist/assets/{hi-D2dIK7Oy.js → hi-kXuYI0TJ.js} +1 -1
  95. package/dist/assets/{highlighted-body-OFNGDK62-CExufvVt.js → highlighted-body-OFNGDK62-CK7x7Gzm.js} +1 -1
  96. package/dist/assets/{hr-BV-VOPMu.js → hr-DAOsQWzI.js} +1 -1
  97. package/dist/assets/{ht-C7MM4qkS.js → ht-Ch8SKz8p.js} +1 -1
  98. package/dist/assets/{hu-Rha1m2Ym.js → hu-q6W_rWPT.js} +1 -1
  99. package/dist/assets/{hy-CiTNgbdV.js → hy-0M8OmwnM.js} +1 -1
  100. package/dist/assets/i18n-DTfZonAM.js +17 -0
  101. package/dist/assets/i18n-locale-ar-O6rs-Cir.js +4 -0
  102. package/dist/assets/i18n-locale-de-CMc1jk4a.js +4 -0
  103. package/dist/assets/i18n-locale-en-CbRQO81h.js +4 -0
  104. package/dist/assets/i18n-locale-es-t47nyoCX.js +4 -0
  105. package/dist/assets/i18n-locale-fr-E425EqJM.js +4 -0
  106. package/dist/assets/i18n-locale-ja-y_fk77fz.js +4 -0
  107. package/dist/assets/i18n-locale-ko-CdnY2uCg.js +4 -0
  108. package/dist/assets/i18n-locale-pt-BaUOXS6y.js +4 -0
  109. package/dist/assets/i18n-locale-ru-pFlhX9wg.js +4 -0
  110. package/dist/assets/i18n-locale-zh-Dkj4ROTN.js +4 -0
  111. package/dist/assets/i18n-runtime-CdWyaiOD.js +1 -0
  112. package/dist/assets/{id-Cijsfjt-.js → id-BM_H1_jv.js} +1 -1
  113. package/dist/assets/index-ocmkyCt6.js +19 -0
  114. package/dist/assets/index-v2Ijn9Gr.css +2 -0
  115. package/dist/assets/{infrastructure-BHSync5f.js → infrastructure-CSnL6ntj.js} +2 -2
  116. package/dist/assets/integration-7NqwVHuJ.js +1 -0
  117. package/dist/assets/{is-xS1WTyeC.js → is-B_7jXZfS.js} +1 -1
  118. package/dist/assets/isSameWeek-D90tBsli.js +1 -0
  119. package/dist/assets/{it-C2i_c9sd.js → it-CBM0J9cD.js} +1 -1
  120. package/dist/assets/{it-CH-l516ZNXj.js → it-CH-BQltCNsR.js} +1 -1
  121. package/dist/assets/{ja-D9_ewLny.js → ja-DBjnsx21.js} +1 -1
  122. package/dist/assets/{ja-Hira-D_6ExgHw.js → ja-Hira-BZfSmj1i.js} +1 -1
  123. package/dist/assets/{ka-BYHGyees.js → ka-HwpuKgUY.js} +1 -1
  124. package/dist/assets/{kk-CbTFtuqb.js → kk-DLKA9paj.js} +1 -1
  125. package/dist/assets/{km-Dr2gwhIn.js → km-BU5kermq.js} +1 -1
  126. package/dist/assets/{kn-CprH8JD7.js → kn-BNFqbCoi.js} +1 -1
  127. package/dist/assets/{ko-CsFS2u5i.js → ko-D8n4uMqQ.js} +1 -1
  128. package/dist/assets/{lb-CbFKN7Ob.js → lb-B1empQ7m.js} +1 -1
  129. package/dist/assets/{lt-Bq0xkLp0.js → lt-gMukpK3G.js} +1 -1
  130. package/dist/assets/{lv-Cj6vg6Qo.js → lv-D2O5AnsZ.js} +1 -1
  131. package/dist/assets/{match-CiPp9BME.js → match-BTF6WqJh.js} +1 -1
  132. package/dist/assets/{match-C_jFGO9e.js → match-Cyum2eeW.js} +1 -1
  133. package/dist/assets/{match-Co4ivumx.js → match-ScHH8kYk.js} +1 -1
  134. package/dist/assets/mermaid-GHXKKRXX-D4H6EVJQ.js +1 -0
  135. package/dist/assets/metadata-admin-CEhVmXFv.js +9 -0
  136. package/dist/assets/{mk-MXFM99YL.js → mk-D-Zl0xVN.js} +1 -1
  137. package/dist/assets/{mn-D5Q9B6Jt.js → mn-jJbTslgD.js} +1 -1
  138. package/dist/assets/{ms-CCzPRldx.js → ms-CUuJHLA4.js} +1 -1
  139. package/dist/assets/{mt-mjJpN6xW.js → mt-yIcbfxKY.js} +1 -1
  140. package/dist/assets/{nb-BIlNqdEb.js → nb-D9WNypoj.js} +1 -1
  141. package/dist/assets/{nl-BE-FwXjQsmV.js → nl-BE-B1vKiw2h.js} +1 -1
  142. package/dist/assets/{nl-D2uBtIxG.js → nl-DC7b5e90.js} +1 -1
  143. package/dist/assets/{nn-B0loJ7SV.js → nn-uP4yJ9s0.js} +1 -1
  144. package/dist/assets/{oc-U7-yH1sO.js → oc-DHTqadJI.js} +1 -1
  145. package/dist/assets/{pl-mTy0JYgi.js → pl-Bxnnizf5.js} +1 -1
  146. package/dist/assets/plugin-calendar-b7C35ANT.js +1 -0
  147. package/dist/assets/plugin-charts-b-yVtmdI.js +7 -0
  148. package/dist/assets/plugin-chatbot-D1KW_oIO.js +122 -0
  149. package/dist/assets/plugin-dashboard-DTkPoPEb.js +6 -0
  150. package/dist/assets/plugin-form-UIRm-FpQ.js +1 -0
  151. package/dist/assets/plugin-gantt-9dtc8zzX.js +63 -0
  152. package/dist/assets/plugin-grid-Cp4RKtMJ.js +10 -0
  153. package/dist/assets/plugin-kanban-B2JOPZIJ.js +1 -0
  154. package/dist/assets/plugin-map-CBJcVJYk.js +1 -0
  155. package/dist/assets/{plugin-markdown-D1nTQc1T.js → plugin-markdown-CNlDzqP-.js} +1 -1
  156. package/dist/assets/plugin-report-IZzgQb-Q.js +59 -0
  157. package/dist/assets/plugin-timeline-DsmtjcJ3.js +1 -0
  158. package/dist/assets/plugin-tree-DTRPBdhe.js +1 -0
  159. package/dist/assets/plugin-view-D9ixsNDG.js +1 -0
  160. package/dist/assets/plugins-views-CnvkdSJK.js +3 -0
  161. package/dist/assets/{pt-BR-2KtO5Js1.js → pt-BR-D416seHT.js} +1 -1
  162. package/dist/assets/{pt-Bet5OOQf.js → pt-DwHBy9_c.js} +1 -1
  163. package/dist/assets/{ro-37U6sgzi.js → ro-DDf1X3Np.js} +1 -1
  164. package/dist/assets/{ru-CyuAY-5E.js → ru-8eM3mcgK.js} +1 -1
  165. package/dist/assets/{runtime-metadata-persistence-afAW-MeD.js → runtime-metadata-persistence-DX29lQ62.js} +1 -1
  166. package/dist/assets/{se-DeJabuC6.js → se-D4JvQeRX.js} +1 -1
  167. package/dist/assets/{sk-DWEpjfkR.js → sk-DvpgttGI.js} +1 -1
  168. package/dist/assets/{sl-4oSvNhIR.js → sl-B3gCZ-_a.js} +1 -1
  169. package/dist/assets/{sq-BjkBCaXW.js → sq-CVaTmL0V.js} +1 -1
  170. package/dist/assets/{sr-Dxm1DsRS.js → sr-CnH5Ffyz.js} +1 -1
  171. package/dist/assets/{sr-Latn-Dawg6oP2.js → sr-Latn-Dw9w61q6.js} +1 -1
  172. package/dist/assets/src-BUry7633.js +2 -0
  173. package/dist/assets/{src-C8NYjdVm.js → src-DMDT5a27.js} +1 -1
  174. package/dist/assets/src-ZxH3AOCu.js +16 -0
  175. package/dist/assets/{studioEntry-nXQP3iL0.js → studioEntry-DAqcBFtr.js} +1 -1
  176. package/dist/assets/{submitRedirect-jK-cEIbP.js → submitRedirect-iy0oOi7I.js} +1 -1
  177. package/dist/assets/{sv-CROOGJGz.js → sv-CU7wdxyK.js} +1 -1
  178. package/dist/assets/{ta-BZnTmFI_.js → ta-DPH6q0HR.js} +1 -1
  179. package/dist/assets/{te-BN0v0x5t.js → te-BSaThkGV.js} +1 -1
  180. package/dist/assets/{th-CBjKhp_U.js → th-NXP8_Qb8.js} +1 -1
  181. package/dist/assets/{tr-x0Ne4N4H.js → tr-DDXoH663.js} +1 -1
  182. package/dist/assets/types-zod-ChJ30y25.js +1 -0
  183. package/dist/assets/{ug-sgzNhsKo.js → ug-Guus6pPe.js} +1 -1
  184. package/dist/assets/ui-components-D8wcRNrt.js +37 -0
  185. package/dist/assets/ui-layout-BYO3rRIl.js +1 -0
  186. package/dist/assets/{uk-o_DQ5VHJ.js → uk-uiy4vsp8.js} +1 -1
  187. package/dist/assets/use-book-data-DFTswcKm.js +1 -0
  188. package/dist/assets/{useActionModal-CSvbHkQ7.js → useActionModal-h52Z5Pkl.js} +1 -1
  189. package/dist/assets/useCanAuthorMetadata-TDrVrYGB.js +1 -0
  190. package/dist/assets/useDatasetCatalog-BOd0Ybr1.js +1 -0
  191. package/dist/assets/useNavSelDeepLink-67Y4qCNO.js +1 -0
  192. package/dist/assets/useNavTargetLabel-D8lRdb6O.js +1 -0
  193. package/dist/assets/useOpenRecordList-C7oqUD3F.js +1 -0
  194. package/dist/assets/{usePackageL10n-CMx66am-.js → usePackageL10n-Jl2XiF2F.js} +1 -1
  195. package/dist/assets/{useSettingsLabel-Kkr2q0Oo.js → useSettingsLabel-CSpBDTdy.js} +1 -1
  196. package/dist/assets/{uz-Cyrl-DbtkQtz_.js → uz-Cyrl-Cmb5bvbf.js} +1 -1
  197. package/dist/assets/{uz-Be41d4jl.js → uz-DJWxoTz4.js} +1 -1
  198. package/dist/assets/vendor-objectstack-C4eD5dbT.js +139 -0
  199. package/dist/assets/{vi-84mZmklk.js → vi-Bb3QoIJC.js} +1 -1
  200. package/dist/assets/{zh-CN-DD1reegJ.js → zh-CN-C-Hts1ZR.js} +1 -1
  201. package/dist/assets/{zh-HK-B05u30WI.js → zh-HK-CtBAZ_ZS.js} +1 -1
  202. package/dist/assets/{zh-TW-Bb-WimPD.js → zh-TW-B7DDahD-.js} +1 -1
  203. package/dist/chunk-membership.json +116 -104
  204. package/dist/eager-closure.json +126 -120
  205. package/dist/index.html +4 -4
  206. package/dist/sdui.manifest.json +998 -115
  207. package/package.json +1 -1
  208. package/dist/assets/AppDocsIndex-F4zDq2zz.js +0 -1
  209. package/dist/assets/ApprovalsInboxPage-DrEUmaDb.js +0 -1
  210. package/dist/assets/CreateViewDialog-xyKlpLEW.js +0 -1
  211. package/dist/assets/DashboardView-CGC-_Om8.js +0 -1
  212. package/dist/assets/DocPage-CIZE5kdj.js +0 -1
  213. package/dist/assets/DocsSlug-DXdFdwlS.js +0 -1
  214. package/dist/assets/ExpressionProvider-DZfMwyMs.js +0 -1
  215. package/dist/assets/FlowRunsPage-CvY3nJMF.js +0 -1
  216. package/dist/assets/InterfaceListPage-BdECC_i3.js +0 -1
  217. package/dist/assets/MarketplacePackagePage-C7NOu2Ir.js +0 -4
  218. package/dist/assets/ObjectDataPage-BIzp65Mo.js +0 -1
  219. package/dist/assets/PageView-CVLgCRSF.js +0 -1
  220. package/dist/assets/ProfilePage-D2qGgxPK.js +0 -1
  221. package/dist/assets/RecordDetailView-DQKydU7X.js +0 -3
  222. package/dist/assets/RecordFormPage-BTjwxJIA.js +0 -1
  223. package/dist/assets/ReportDefaultInspector-DdsQAkd7.js +0 -1
  224. package/dist/assets/ReportView-GIdKJdOt.js +0 -2
  225. package/dist/assets/RuntimeDraftBar-BbMdi3Kp.js +0 -1
  226. package/dist/assets/SchemaForm-C8X1ve4p.js +0 -3
  227. package/dist/assets/SearchResultsPage-Jwhqsdyo.js +0 -1
  228. package/dist/assets/SettingsView-D8SMKdrc.js +0 -1
  229. package/dist/assets/app-shell-eager-leaves-CDVclng4.js +0 -1
  230. package/dist/assets/appRoute-DbnWDEa1.js +0 -1
  231. package/dist/assets/data-adapter-DMbe6Njk.js +0 -1
  232. package/dist/assets/default-inspector-registry-CpL3fFhl.js +0 -1
  233. package/dist/assets/dist-BXrEV1ag.js +0 -13
  234. package/dist/assets/drillUrlFilters-hi-2d3DW.js +0 -1
  235. package/dist/assets/en-AU-C6x7mDhH.js +0 -1
  236. package/dist/assets/en-GB-0-nho2eK.js +0 -1
  237. package/dist/assets/en-IE-2fC3BkfV.js +0 -1
  238. package/dist/assets/en-IN-C1QcFhxn.js +0 -1
  239. package/dist/assets/en-NZ-C80ptZT7.js +0 -1
  240. package/dist/assets/en-ZA-ByZDrjeb.js +0 -1
  241. package/dist/assets/framework-DcWkeiND.js +0 -35
  242. package/dist/assets/i18n-CEKxYdmD.js +0 -9
  243. package/dist/assets/i18n-locale-ar-DN7sl3GF.js +0 -4
  244. package/dist/assets/i18n-locale-de-C40JErvb.js +0 -4
  245. package/dist/assets/i18n-locale-en-CITPDIHy.js +0 -4
  246. package/dist/assets/i18n-locale-es-C8DdWN6c.js +0 -4
  247. package/dist/assets/i18n-locale-fr-COIdEZZl.js +0 -4
  248. package/dist/assets/i18n-locale-ja-DYF_rU_s.js +0 -4
  249. package/dist/assets/i18n-locale-ko-B-ODYAtX.js +0 -4
  250. package/dist/assets/i18n-locale-pt-CK1SyBIm.js +0 -4
  251. package/dist/assets/i18n-locale-ru-jLzvShMO.js +0 -4
  252. package/dist/assets/i18n-locale-zh-Bf9Gbbvl.js +0 -4
  253. package/dist/assets/i18n-runtime-CTgAQF4N.js +0 -1
  254. package/dist/assets/index-CLyvpiGc.css +0 -2
  255. package/dist/assets/index-CfnfGw5W.js +0 -20
  256. package/dist/assets/isSameWeek-DWYeNyh8.js +0 -1
  257. package/dist/assets/mermaid-GHXKKRXX-DVLc_uym.js +0 -1
  258. package/dist/assets/metadata-admin-CybaOCdO.js +0 -9
  259. package/dist/assets/nav-selection-Dzm_mA3C.js +0 -1
  260. package/dist/assets/plugin-calendar-CKRBcML7.js +0 -1
  261. package/dist/assets/plugin-charts-DGTJxXCB.js +0 -7
  262. package/dist/assets/plugin-chatbot-DwtwNA-y.js +0 -122
  263. package/dist/assets/plugin-dashboard-C1AYKmGX.js +0 -6
  264. package/dist/assets/plugin-form-CV8ZY04-.js +0 -1
  265. package/dist/assets/plugin-gantt-BRIb2_8G.js +0 -63
  266. package/dist/assets/plugin-grid-C9h7mRVv.js +0 -11
  267. package/dist/assets/plugin-kanban-BcJ0Dhys.js +0 -1
  268. package/dist/assets/plugin-map-D24ZUOUj.js +0 -1
  269. package/dist/assets/plugin-report-BfGintAq.js +0 -59
  270. package/dist/assets/plugin-timeline-CbBRq_qt.js +0 -1
  271. package/dist/assets/plugin-tree-BNX2A5J5.js +0 -1
  272. package/dist/assets/plugin-view-DzWQWYyH.js +0 -1
  273. package/dist/assets/plugins-views-DraK4xz0.js +0 -3
  274. package/dist/assets/src-B8lv0plz.js +0 -18
  275. package/dist/assets/src-DoDvT77T.js +0 -1
  276. package/dist/assets/types-zod-Y2RwUUeJ.js +0 -1
  277. package/dist/assets/ui-components-BTB1NkUW.js +0 -37
  278. package/dist/assets/ui-layout-bZfafwJa.js +0 -1
  279. package/dist/assets/use-book-data-C3eyZJSG.js +0 -1
  280. package/dist/assets/useOpenRecordList-B5-qaFUx.js +0 -1
  281. package/dist/assets/vendor-objectstack-XuWC71M9.js +0 -266
  282. package/dist/assets/vendor-zod-CHLW1iCr.js +0 -64
@@ -0,0 +1,2 @@
1
+ import{An as e,Bn as t,Ct as n,Oi as r,Pn as i,Qn as a,Rt as o,Tt as s,it as c,ot as l,xn as u}from"./vendor-objectstack-C4eD5dbT.js";import{$n as d,Si as f,ra as p,tn as ee,xi as m,zr as te}from"./framework-CAuH4h0L.js";u(),s();var ne=l(),re=[`lookup`,`master_detail`],h=[`select`,`radio`];function ie(e){return typeof e==`string`&&e.trim()!==``}function ae(e){return e===void 0?"no `reference` key at all":e===null?"a `null` `reference`":typeof e==`string`?e===``?"an empty `reference`":"a whitespace-only `reference`":`a \`reference\` of type \`${typeof e}\``}function oe(e){return Array.isArray(e.options)&&e.options.length>0||typeof e.picklist==`string`}function se(e){return e===void 0?"no `options` key and no `picklist`":Array.isArray(e)?"an empty `options` list and no `picklist`":e===null?"a `null` `options` and no `picklist`":`an \`options\` value of type \`${typeof e}\` and no \`picklist\``}function ce(e){return Array.isArray(e)?e.flatMap((e,t)=>{if(!e||typeof e!=`object`)return[];let n=e;return[{name:typeof n.name==`string`&&n.name?n.name:`[${t}]`,def:n}]}):e&&typeof e==`object`?Object.entries(e).flatMap(([e,t])=>t&&typeof t==`object`?[{name:e,def:t}]:[]):[]}function g(e,t,n){if(String(e)!==`object`||!t||typeof t!=`object`)return;let r=t.fields;for(let{name:e,def:t}of ce(r)){if(h.includes(String(t.type))&&!oe(t))throw Error(`${n} refused this object metadata write: the field \`${e}\` is a \`${String(t.type)}\` with no options: it carries ${se(t.options)}, so it offers nothing to choose and nothing to check a stored value against. A choice field needs at least one option or a shared \`picklist\` (objectstack#20827), so this draft stays here until it has one. Add an option, or change the field to a non-choice type.`);if(re.includes(String(t.type))&&!ie(t.reference))throw Error(`${n} refused this object metadata write: the field \`${e}\` is a \`${String(t.type)}\` and carries ${ae(t.reference)}, so it names no object to link to. \`@objectstack/spec\` refuses the same document at the server with a 422 on \`fields.${e}.reference\`, and that refusal blocks every later save of this object for as long as the half-filled field rides along in the draft (objectui#7714). Pick the target object, or change the field to a non-relationship type.`)}}function le(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 ue=[`overlayScope`,`lock`,`lockReason`,`lockSource`,`lockDocsUrl`,`provenance`,`packageId`,`packageVersion`,`editable`,`deletable`,`resettable`];function de(e){let t=n.shape;return ue.filter(n=>e[n]!==void 0&&!t[n].safeParse(e[n]).success)}var _=`/meta`,v=`/api/v1`;function fe(e){let t=e.baseUrl.replace(/\/+$/,``),n=e.environmentId?`${v}/environments/${encodeURIComponent(e.environmentId)}${_}`:`${v}${_}`;return/\/api\/v\d+$/i.test(t)?`${t.replace(/\/api\/v\d+$/i,``)}${e.environmentId?`${v}/environments/${encodeURIComponent(e.environmentId)}${_}`:`${v}${_}`}`:`${t}${n}`}function pe(e){return`${e.replace(/\/api\/v\d+(?:\/environments\/[^/]+)?\/meta$/,``).replace(/\/+$/,``)}${v}/packages`}function me(e){if(!e||typeof e!=`object`)return{};let t=e,n=t.data;return n&&typeof n==`object`&&!Array.isArray(n)?n:t}async function y(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 he(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 b=class e{base;fetchImpl;headers;previewDrafts;onSaveAdvisory;constructor(e){this.base=fe(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 y(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 y(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 y(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 y(o);return await o.json()}async get(e,t,n={}){let r=await this.readItemResponse(e,t,n);return he(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=le(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.`);g(e,n,`MetadataClient.save`);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 y(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 y(r);let i=await r.json().catch(()=>({}));return this.emitAdvisories(i,{type:e,name:t,door:`publish`,mode:`publish`}),i}async publishPackageDrafts(e){if(!e||!String(e).trim())throw Error(`MetadataClient.publishPackageDrafts: packageId must be non-empty. The POST /packages/:id/publish-drafts route requires an id segment.`);let t=`${pe(this.base)}/${encodeURIComponent(e)}/publish-drafts`,n=await this.fetchImpl(t,{method:`POST`,credentials:`include`,headers:{...this.headers,"Content-Type":`application/json`,Accept:`application/json`},body:`{}`});if(!n.ok)throw await y(n);let r=me(await n.json().catch(()=>({})));for(let e of Array.isArray(r.published)?r.published:[]){if(!e||typeof e!=`object`)continue;let{type:t,name:n}=e;typeof t==`string`&&typeof n==`string`&&this.emitAdvisories(e,{type:t,name:n,door:`publish`,mode:`publish`})}return r}async layered(e,t,r={}){let i=r.packageId?`?package=${encodeURIComponent(r.packageId)}`:``,a=`${this.base}/${encodeURIComponent(e)}/${encodeURIComponent(t)}/layers${i}`,o=await this.fetchImpl(a,{method:`GET`,headers:this.headers,cache:`no-store`});if(o.status===404)return{code:null,overlay:null,overlayScope:null,effective:null};if(!o.ok)throw await y(o);let s=await o.json();if(!(typeof s==`object`&&s&&(`code`in s||`overlay`in s||`effective`in s)))return{code:null,overlay:null,overlayScope:null,effective:s};let c=n.safeParse(s);if(c.success){let e=c.data;return{code:e.code??null,overlay:e.overlay??null,overlayScope:e.overlayScope,effective:e.effective??null,...s._diagnostics?{_diagnostics:s._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 l=de(s);return{code:s.code??null,overlay:s.overlay??null,overlayScope:s.overlayScope??null,effective:s.effective??null,...s._diagnostics?{_diagnostics:s._diagnostics}:{},...s.lock===void 0?{}:{lock:s.lock},...s.lockReason===void 0?{}:{lockReason:s.lockReason},...s.lockSource===void 0?{}:{lockSource:s.lockSource},...s.lockDocsUrl===void 0?{}:{lockDocsUrl:s.lockDocsUrl},...s.provenance===void 0?{}:{provenance:s.provenance},...s.packageId===void 0?{}:{packageId:s.packageId},...s.packageVersion===void 0?{}:{packageVersion:s.packageVersion},...s.editable===void 0?{}:{editable:s.editable},...s.deletable===void 0?{}:{deletable:s.deletable},...s.resettable===void 0?{}:{resettable:s.resettable},...l.length>0?{_unrecognized:l}:{}}}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 y(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 y(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 y(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 y(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 y(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 y(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 y(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 y(o);return await o.json()}},ge=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}},x=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}}},_e=class extends x{constructor(e,t){super(`Metadata not found for object: ${e}`,`METADATA_NOT_FOUND`,404,{objectName:e,...t}),this.name=`MetadataNotFoundError`}},S=class extends x{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}}},C=class extends x{url;constructor(e,t,n,r){super(`Connection error: ${e}`,`CONNECTION_ERROR`,r||503,{url:t,...n}),this.url=t,this.name=`ConnectionError`}},w=class extends x{constructor(e=`Authentication failed`,t,n){super(e,`AUTHENTICATION_ERROR`,n||401,t),this.name=`AuthenticationError`}},T=class extends x{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 ve(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 w(r,i,401);case 403:return new w(r,i,403);case 404:return t?.includes(`metadata`)||t?.includes(`schema`)||t?.includes(`getObjectSchema`)?new _e(ye(t),i):new x(r,`NOT_FOUND`,404,i);case 400:return new T(r,void 0,e?.data?.errors,i);case 503:return new C(r,e?.config?.url,i,503);case 504:return new C(r,e?.config?.url,i,504);default:return new x(r,`UNKNOWN_ERROR`,n,i)}}function ye(e){if(!e)return`unknown`;let t=e.match(/\(([^)]+)\)/);return t?t[1]:`unknown`}function E(e){if(!e||typeof e!=`object`)return{};let t=e,n=t.error&&typeof t.error==`object`?t.error:void 0,r={},i=D(n?.message)??D(t.message)??D(t.error);i!==void 0&&(r.message=i);let a=O(t.code)??O(n?.code);return a!==void 0&&(r.code=a),r}function D(e){return typeof e==`string`&&e.trim()!==``?e:void 0}function O(e){return typeof e==`string`?e:void 0}var be=`sys_user_preference`;function xe(e){let{dataSource:t,userId:n,key:r,resource:i=be,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}}}function Se(e){if(!e||typeof e!=`object`)return null;let t=e;if(!(`item`in t))return null;let n=t.item;return!n||typeof n!=`object`||Object.keys(n).length===0?null:c(n)}function Ce(e){let t=e?.issues;return Array.isArray(t)?t:[]}function k(e){return`• ${e.path&&e.path.length>0?e.path:`(root)`} — ${e.message}`}function we(e){let t=Ce(e);return t.length>0?t.map(k).join(`
2
+ `):e?.message??String(e)}var A={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 Te(e){return typeof e==`string`?A[e.toLowerCase()]??A[e]??e:null}function Ee(e){try{return JSON.stringify(e,(e,t)=>typeof t==`bigint`?`${t}n`:t)??String(e)}catch{return String(e)}}var j=class extends Error{code=`INVALID_FILTER`;httpStatus=400;entry;index;constructor(e,t){let n=Ee(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}},De=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 Oe(t,n){if(Array.isArray(t)&&t.length!==0&&!e(t))throw new De(t,n)}var ke=[`filter`,`field`,`function`],Ae={filter:"`filter` is the ANALYTICS branch's filter and is lowered there through `parseFilterAST`; this branch's filter is `where` (`QuerySchema.where`, @objectstack/spec data/query.zod.ts) and is posted VERBATIM — rename it to `where` and lower it in the producer.",field:"`field` is half of the analytics branch's `${field}_${function}` measure; this branch's measure is `aggregations`, an AggregationNode[] such as [{ function: 'sum', field: 'amount', alias: 'amount_sum' }].",function:"`function` is the other half of that measure pair and belongs inside an `aggregations` node, not beside `groupBy`."};function je(e){let t=[];return Array.isArray(e?.groupBy)&&t.push("`groupBy` is an array"),Array.isArray(e?.aggregations)&&t.push("`aggregations` is an array"),e?.where!==void 0&&t.push("a `where` key is present"),t}var Me=class extends Error{code=`INVALID_FILTER`;httpStatus=400;keys;received;resource;constructor(e,t,n){let r={};for(let n of e)r[n]=t?.[n];let i=e.map(e=>`\`${e}\``).join(`, `),a=e.map(e=>`${e}=${JSON.stringify(t?.[e])??String(t?.[e])}`).join(`, `),o=je(t).join(` and `),s=Array.isArray(t?.aggregations)?``:" Because no `aggregations` was supplied either, the query this would have built is a grouping with NO MEASURE — the chart renders and its numbers mean nothing.";super(`aggregate('${n}'): the spec-shape branch received the analytics branch's ${i} — ${a} — and reads none of them. This call took the spec-shape branch because ${o}; the branch posts only \`groupBy\`, \`aggregations\`, \`where\` and \`limit\` to POST /data/:object/query, so those keys would have been dropped in silence.${s} `+e.map(e=>Ae[e]).join(` `)+" The two shapes are alternatives, not a mixture: the analytics branch (`{ field, function, groupBy, filter }`, which lowers its filter for you) is reached only when NONE of an array `groupBy`, an array `aggregations` or a `where` key is present. Nothing was sent to the server, so no unfiltered numbers came back."),this.name=`AnalyticsKeysOnSpecShapeError`,this.keys=e,this.received=r,this.resource=n}};function Ne(e,t){let n=ke.filter(t=>e?.[t]!=null);if(n.length!==0)throw new Me(n,e,t)}var M=class extends Error{code=`INVALID_FILTER`;httpStatus=400;filter;resource;constructor(e,t,n){let r=JSON.stringify(e)??String(e);super(`aggregate('${t}'): the analytics branch received a \`filter\` array that \`parseFilterAST\` cannot lower into a FilterCondition — ${r}.`+(n?` (${n})`:``)+" `where` on the analytics wire is a FilterCondition (`AnalyticsQuerySchema`, @objectstack/spec data/analytics.zod.ts), and a FilterArray is input-only sugar lowered into one at the single sink `parseFilterAST` (data/filter.zod.ts, objectstack#5158 ruling C). Lowerable shapes are a comparison tuple (['stage','=','won']), a logical node (['and',[..],[..]]), an array of such nodes, and a ViewFilterRule[] this adapter translates first. An infix join ([condA, 'or', condB]) is none of them. Nothing was sent to the server, so no unfiltered numbers came back."),this.name=`UnlowerableAnalyticsFilterError`,this.filter=e,this.resource=t}};function Pe(e,t,n,r){let i=`This is a { field, operator, value } rule entry, so it is refused as the filter is translated rather than sent: the spelling @objectstack/spec's FILTER_TEXT_CASES uses for this operator is the \$-dialect '\$icontains', which this form spells '${r}'. Remove the entry, or give it a non-empty string value (objectui#9048; the same refusal convertFiltersToAST and ValueDataSource already share).`,o=new j(e,t);throw o.message=`Filter entry ${t} is refused. The ${a(n,r,e.value)}. ${i}`,o}function Fe(e,t){if(!e||typeof e!=`object`)return null;let n=e.field,r=e.operator??e.op??`=`,a=Te(r);return!n||!a?null:(a===`icontains`&&i(e.value)&&Pe(e,t,String(n),r),[String(n),a,e.value])}function Ie(e){let t=e[0];return e.length>0&&typeof t==`object`&&!!t&&!Array.isArray(t)&&t.field!==void 0}function Le(e){let t=e.map((e,t)=>{if(Array.isArray(e))return P(e,t);let n=Fe(e,t);if(!n)throw new j(e,t);return n});return t.length===1?t[0]:[`and`,...t]}var Re=new Set([`and`,`or`]);function N(e){if(Ie(e))return Le(e);let t=e[0];return typeof t==`string`&&Re.has(t.toLowerCase())?[t,...e.slice(1).map((e,t)=>P(e,t+1))]:e.every(e=>Array.isArray(e))?e.map((e,t)=>P(e,t)):e}function P(e,t){if(Array.isArray(e))return e.length>0?N(e):e;if(e&&typeof e==`object`&&e.field!==void 0){let n=Fe(e,t);if(n)return n}return e}function F(e){if(e!=null){if(Array.isArray(e))return e.length===0?void 0:N(e);if(typeof e==`object`)return Object.keys(e).length===0?void 0:p(e)}}function ze(n,r){if(!Array.isArray(n))return n;if(n.length===0)return;let i=N(n);if(!e(i))throw new M(n,r);let a;try{a=t(i)}catch(e){throw new M(n,r,e instanceof Error?e.message:String(e))}if(a===void 0)throw new M(n,r,"`parseFilterAST` answered `undefined` for a non-empty filter");return a}function I(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 L=new Map;async function Be(e,t){let n=e||`<default>`,r=L.get(n);if(r)return r;let i=t().catch(e=>{throw L.delete(n),e});return L.set(n,i),i}function Ve(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 R(e){if(!e||typeof e!=`object`)return!1;let t=e;if(t.httpStatus===404||t.status===404||t.statusCode===404)return!0;let n=typeof t.code==`string`?t.code:``;return f({code:n},[`OBJECT_NOT_FOUND`,`RECORD_NOT_FOUND`])}var He=[`OBJECT_API_DISABLED`,`OBJECT_API_METHOD_NOT_ALLOWED`];function z(e){return f(e,He)}var Ue=`PERMISSION_DENIED`;function We(e){return m(e,Ue)}var Ge=`RESOURCE_NOT_FOUND`;function Ke(e){return m(e,Ge)}function qe(e){return typeof e!=`object`||!e?!1:e.item!=null}var B=`manage_metadata`,Je=class extends Error{code=`VIEW_CONFIG_PERMISSION_DENIED`;capability=B;objectName;viewId;constructor(e,t){super(`View configuration is shared: changing "${t}" changes it for everyone who uses this view. That requires the "${B}" capability, which this session does not hold.`),this.name=`ViewConfigPermissionDeniedError`,this.objectName=e,this.viewId=t}};function Ye(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.code===`VIEW_CONFIG_PERMISSION_DENIED`||t.name===`ViewConfigPermissionDeniedError`}var V=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}},Xe=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}},H=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}},Ze=class extends Error{code=`PERMISSION_DENIED`;httpStatus=403;serverCode;serverMessage;datasetName;constructor(e={}){super(`Analytics query refused: this user may not read the data behind ${e.datasetName?`dataset "${e.datasetName}"`:`this dataset`}.`+(e.serverMessage?` (server said: ${e.serverMessage})`:``)),this.name=`AnalyticsForbiddenError`,this.serverCode=e.serverCode,this.serverMessage=e.serverMessage,this.datasetName=e.datasetName}};function Qe(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 U=[404,501],$e=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}},W=class extends Error{code=`ANALYTICS_RESULT_SHAPE_INVALID`;resource;envelope;received;constructor(e,t){let n=t,r=Array.isArray(n?.data?.rows),i=t===null?`null`:Array.isArray(t)?`an array`:typeof t==`object`?`an object with keys [${Object.keys(t).join(`, `)}]`:typeof t;super(r?`aggregate('${e}'): client.analytics.query resolved to the \`{ data: { rows } }\` envelope, not to an AnalyticsResult. @objectstack/client resolves this method to the payload itself since 17.3.0 (objectstack#13079), and this adapter reads \`rows\` only: an older client is installed beside it, or something between the client and POST /analytics/query wraps the payload a second time. Install @objectstack/client 17.3.0 or later.`:`aggregate('${e}'): client.analytics.query resolved to ${i}, which has no \`rows\` array, so it is not an AnalyticsResult. This adapter reads \`rows\` only (objectui#7028).`),this.name=`AnalyticsResultShapeError`,this.resource=e,this.envelope=r,this.received=i}};function et(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(f({code:n},[`NOT_IMPLEMENTED`,`ROUTE_NOT_FOUND`]))return{kind:`not-installed`,code:n,message:r};if(m({code:n},`VALIDATION_FAILED`))return{kind:`rejected`,code:n,message:r};if(m({code:n},`UNAUTHENTICATED`))return{kind:`unauthenticated`,code:n,message:r};if(m({code:n},`CUBE_NOT_FOUND`))return{kind:`cube-not-found`,code:n,message:r};if(i===400)return{kind:`rejected`,code:n,message:r};if(n===void 0){if(i!==void 0&&U.includes(i))return{kind:`not-installed`,code:n,message:r};if(i===401)return{kind:`unauthenticated`,code:n,message:r}}return{kind:`unknown`,code:n,message:r}}var tt=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 nt(e,t){return typeof e.userMessage==`string`&&e.userMessage.trim()?e.userMessage:typeof t.userMessage==`string`&&t.userMessage.trim()?t.userMessage:null}function G(e){if(!e||typeof e!=`object`)return e;let t=e,n=t.details??{},r=nt(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 T(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 tt({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 K(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 rt(){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(f({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] ${K(t,r)??t} (suppressed expected 404)`,r);return}console.error(K(t,r)??t,n??``,r??``)},fatal:(e,t,n)=>console.error(K(e,n)??e,t??``,n??``),log:(e,...t)=>console.log(e,...t),child:()=>t,withTrace:()=>t};return t}var it=new Set(o.shape.reason.options),at=`objectui:unrecognized-drop-reason`;function ot(e){return it.has(e)}function q(e){return!!e&&typeof e==`object`&&Array.isArray(e.fields)&&e.fields.some(e=>typeof e==`string`)}function J(e,t){let n=e.fields.filter(e=>typeof e==`string`),r=typeof e.object==`string`?e.object:t;return ot(e.reason)?{...e,object:r,fields:n,reason:e.reason}:{...e,object:r,fields:n,reason:at,unrecognizedReason:e.reason}}var st=``,Y=[`ROUTE_NOT_FOUND`,`NOT_IMPLEMENTED`],ct=`INVALID_REQUEST`,lt=400,X=[404,501],Z=[`UNAUTHENTICATED`,`PERMISSION_DENIED`],ut=[401,403,405];function dt(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,a={code:n,status:i,message:r};return f({code:n},Y)||m({code:n},ct)&&i===lt?{kind:`not-served`,...a}:f({code:n},Z)||i!==void 0&&ut.includes(i)?{kind:`refused`,...a}:n===void 0&&i!==void 0&&X.includes(i)?{kind:`not-served`,...a}:{kind:`unreadable`,...a}}function ft(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,a={code:n,status:i,message:r};return f({code:n},Y)?{kind:`not-served`,...a}:f({code:n},Z)||i!==void 0&&ut.includes(i)?{kind:`refused`,...a}:n===void 0&&i!==void 0&&X.includes(i)?{kind:`not-served`,...a}:{kind:`unreadable`,...a}}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 pt(e,t){if(e===t)return!0;let n=e==null,r=t==null;return n||r?n&&r:Q(e)===Q(t)}function mt(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)||!pt(t[e],n[e]));e.length>0&&r.push({...i,fields:e})}return r}var ht=Object.keys(r).filter(e=>r[e].includes(`viewItem`));function gt(e){let t=e?.list??e;return t?.data?.object??t?.object}var $=`_isOverride`;function _t(e,t){return e?.[$]===!0||t?.[$]===!0}var vt=Object.freeze([`rowHeight`,`sort`,`hiddenFields`,`columnState`,`inlineEdit`]),yt=Object.freeze([`name`,`object`,`viewKind`,$]);function bt(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;if(!_t(t,t.list??t))return e;let n={};for(let e of yt)t[e]!==void 0&&(n[e]=t[e]);for(let e of vt)t[e]!==void 0&&(n[e]=t[e]);return n}function xt(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=c(n),i=r.list??r;return!i||typeof i!=`object`?null:Object.keys(i).length>0?i:null}function St(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 Ct(e,t,n,r){return{...e,...t,name:n,object:e?.object||e?.data?.object||r}}var wt=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;metadataReadWarningListeners=new Set;systemCapabilities;constructor(e){this.client=new ne.ObjectStackClient({...e,logger:rt()}),this.installSaveAdvisoryInterceptor(),this.metadataCache=new ge(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 Be(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=Ve(n),this.connected=!0,this.reconnectAttempts=0,this.setConnectionState(`connected`)}catch(e){let t=new C(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(!z(t)&&R(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=E(await s.json().catch(()=>({message:s.statusText}))),t=Error(e.message??s.statusText);throw t.status=s.status,t.code=e.code,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(R(e))return null}try{return(await this.client.data.get(e,String(t))).record}catch(e){if(R(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(q).map(e=>J(e,t)),s=n?.record,c=mt(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(!q(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:st,o=typeof n.index==`number`&&Array.isArray(r)?r[n.index]:void 0,[s]=mt([J({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)}}onMetadataReadWarning(e){return this.metadataReadWarningListeners.add(e),()=>{this.metadataReadWarningListeners.delete(e)}}emitMetadataReadWarning(e){for(let t of this.metadataReadWarningListeners)try{t(e)}catch(e){console.warn(`ObjectStackAdapter: metadata read-warning 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=le(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 G(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:String(t),record:{...i.record}}),this.notifyDroppedFields(`update`,e,i,t,n),i.record}catch(e){throw G(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:String(t)}),r.success}catch(e){throw G(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 G(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 G(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 d(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.`)),d(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 S(`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 S(`update`,t.length,s.length,s,{resource:e,totalRecords:n.length});return t}default:throw new x(`Unsupported bulk operation: ${t}`,`UNSUPPORTED_OPERATION`,400)}}catch(r){if(o(),r instanceof S||r instanceof x)throw r;let i=r instanceof Error?r.message:String(r),a=n.map((e,t)=>({index:t,error:i}));throw new S(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 x(`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 G(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 x(`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 G(e)}}async getImportJobProgress(e){await this.connect();let t=this.importJobApi();if(!t)throw new x(`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 G(e)}}async getImportJobResults(e){await this.connect();let t=this.importJobApi();if(!t)throw new x(`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 G(e)}}async listImportJobs(e={}){await this.connect();let t=this.importJobApi();if(!t)throw new x(`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 G(e)}}async cancelImportJob(e){await this.connect();let t=this.importJobApi();if(!t)throw new x(`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 G(e)}}async undoImportJob(e){await this.connect();let t=this.importJobApi();if(!t||typeof t.undoImportJob!=`function`)throw new x(`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 G(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=I(t.$orderby);if(r&&n.set(`sort`,r),t.$filter!==void 0&&t.$filter!==null){let e=F(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=E(await c.json().catch(()=>({message:c.statusText}))),t=Error(e.message??c.statusText);throw t.status=c.status,t.code=e.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=F(t.filter);e!==void 0&&n.set(`filter`,JSON.stringify(e))}let i=typeof t.search==`string`?t.search.trim():``;return i&&(n.set(`search`,i),t.searchFields&&t.searchFields.length>0&&n.set(`searchFields`,t.searchFields.join(`,`))),this.fetchExportBlob(e,n)}async downloadImportTemplate(e){let t=this.client.getLocale();return this.fetchExportBlob(e,new URLSearchParams({template:`true`}),t?{"Accept-Language":t}:void 0)}async fetchExportBlob(e,t,n){let r=this.baseUrl.replace(/\/$/,``),i=`${r}${/\/api\/v\d+$/i.test(r)?`/data`:`/api/v1/data`}/${encodeURIComponent(e)}/export?${t.toString()}`,a={...this.getAuthHeaders(),...n},o=await this.fetchImpl(i,{method:`GET`,headers:a,credentials:`include`});if(!o.ok){let e=E(await o.json().catch(()=>({message:o.statusText}))),t=Error(e.message??o.statusText);throw t.status=o.status,t.code=e.code,t}return await o.blob()}convertQueryParams(e){if(!e)return{};let t={};if(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)){if(Array.isArray(e.$filter))t.filters=N(e.$filter);else{let n=p(e.$filter);n!==void 0&&(t.filters=n)}}let n=I(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 R(n)?new _e(e,{originalError:t}):t instanceof x?t:ve(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=E(await i.json().catch(()=>({message:i.statusText}))),t=Error(e.message??i.statusText);throw t.status=i.status,t.code=e.code,t}let a=await i.json(),o=a&&typeof a==`object`&&`success`in a&&`data`in a?a.data:a,s=o&&typeof o==`object`&&`item`in o?o.item:o;return te(s,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`||gt(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(B)}async updateViewConfig(e,t,n,r){if(!this.maySetViewConfig())throw new Je(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(gt(t)!==e)return!1;let i=t.viewKind??n?.viewKind;return!(i&&r.has(i)||_t(t,n))}).map(e=>{let t=e.list??e,n=e._draft===!0||t?._draft===!0;if(t&&t.config&&typeof t.config==`object`){let e={...t.config,name:t.name??t.config.name,label:t.label??t.config.label};t.object!==void 0&&(e.object=t.object);for(let n of ht)t[n]!==void 0&&(e[n]=t[n]);return e.isDefault=!!t.isDefault,n&&(e._draft=!0),e}return n?{...t,_draft:!0}:t})}catch(t){console.warn(`[OBJECTSTACKDataSource] listViews failed:`,t);let n=ft(t);return n.kind!==`not-served`&&this.emitMetadataReadWarning({operation:`listViews`,kind:`view`,objectName:e,reason:n.kind,...n.code===void 0?{}:{code:n.code},...n.status===void 0?{}:{status:n.status},...n.message===void 0?{}:{message:n.message}}),[]}}metadataClient(){return new b({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(t){console.warn(`[OBJECTSTACKDataSource] listImportMappings failed:`,t);let n=dt(t);return n.kind!==`not-served`&&this.emitMetadataReadWarning({operation:`listImportMappings`,kind:`mapping`,objectName:e,reason:n.kind,...n.code===void 0?{}:{code:n.code},...n.status===void 0?{}:{status:n.status},...n.message===void 0?{}:{message:n.message}}),[]}}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=xt(await r.get(`view`,t,{state:`draft`}));if(i){let a=Ct(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 R(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=Ct(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=St(await n.reset(`view`,t,{state:`draft`})),i;try{i=St(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 qe(await this.client.meta.getItem(`app`,e))?`granted`:`not_found`}catch(e){return We(e)?`denied`:Ke(e)?`not_found`:`unreachable`}}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&&(Oe(t.where,e),n.where=t.where),Ne(t,e),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:[]}let n=t.filter?ze(t.filter,e):void 0;try{let r=t.function===`count`?`count`:`${t.field}_${t.function}`,i=this.aggregateValueKey(t),a={cube:e,measures:[r],dimensions:t.groupBy&&t.groupBy!==`_all`?[t.groupBy]:[]};n!==void 0&&(a.where=n);let o=await this.client.analytics.query(a);if(!Array.isArray(o?.rows))throw new W(e,o);let s=o.rows;return s.length>0&&s.every(e=>e==null||!(r in e&&e[r]!=null||i in e&&e[i]!=null))?await this.aggregateViaFind(e,t):s.map(e=>{let t={...e};return r!==i&&r in t&&(t[i]=t[r],delete t[r]),t})}catch(n){if(n instanceof W)throw n;let r=et(n);if(r.kind===`rejected`)throw new $e(r.message,r.code);if(r.kind===`unauthenticated`)throw new H({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 queryGroupHeaders(e,t){await this.connect();let n=(await this.client.data.query(e,t))?.records;if(!Array.isArray(n))throw Error(`queryGroupHeaders('${e}'): POST /data/${e}/query answered without a \`records\` array, so no group header can be read from it. The header query was sent verbatim; nothing was approximated from a page of rows.`);return n}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}=Qe(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(f({code:n},[`NOT_IMPLEMENTED`,`ROUTE_NOT_FOUND`]))throw new V(o,r,n);if(m({code:n},`NOT_FOUND`))throw new Xe({datasetName:s,serverCode:n,serverMessage:r});if(m({code:n},`UNAUTHENTICATED`))throw new H({serverCode:n,serverMessage:r});if(m({code:n},`PERMISSION_DENIED`))throw new Ze({serverCode:n,serverMessage:r,datasetName:s});if(n===void 0){if(U.includes(a.status))throw new V(o,i||void 0);if(a.status===401)throw new H({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 x(E(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 x(E(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 x(`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 x(`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 x(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{we as a,xe as c,g as d,bt as i,b as l,z as n,k as o,Ye as r,Se as s,wt as t,h as u};
@@ -1 +1 @@
1
- import{Yr as e}from"./ui-components-BTB1NkUW.js";import{i as t,n,r,t as i}from"./match-Co4ivumx.js";var a={narrow:[`v.Chr.`,`n.Chr.`],abbreviated:[`v.Chr.`,`n.Chr.`],wide:[`vor Christus`,`nach Christus`]},o={narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1. Quartal`,`2. Quartal`,`3. Quartal`,`4. Quartal`]},s={narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jän`,`Feb`,`Mär`,`Apr`,`Mai`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Dez`],wide:[`Jänner`,`Februar`,`März`,`April`,`Mai`,`Juni`,`Juli`,`August`,`September`,`Oktober`,`November`,`Dezember`]},c={narrow:s.narrow,abbreviated:[`Jän.`,`Feb.`,`März`,`Apr.`,`Mai`,`Juni`,`Juli`,`Aug.`,`Sep.`,`Okt.`,`Nov.`,`Dez.`],wide:s.wide},l={ordinalNumber:e=>Number(e)+`.`,era:e({values:a,defaultWidth:`wide`}),quarter:e({values:o,defaultWidth:`wide`,argumentCallback:e=>e-1}),month:e({values:s,formattingValues:c,defaultWidth:`wide`}),day:e({values:{narrow:[`S`,`M`,`D`,`M`,`D`,`F`,`S`],short:[`So`,`Mo`,`Di`,`Mi`,`Do`,`Fr`,`Sa`],abbreviated:[`So.`,`Mo.`,`Di.`,`Mi.`,`Do.`,`Fr.`,`Sa.`],wide:[`Sonntag`,`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`]},defaultWidth:`wide`}),dayPeriod:e({values:{narrow:{am:`vm.`,pm:`nm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachm.`,evening:`Abend`,night:`Nacht`},abbreviated:{am:`vorm.`,pm:`nachm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachmittag`,evening:`Abend`,night:`Nacht`},wide:{am:`vormittags`,pm:`nachmittags`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachmittag`,evening:`Abend`,night:`Nacht`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`vm.`,pm:`nm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachm.`,evening:`abends`,night:`nachts`},abbreviated:{am:`vorm.`,pm:`nachm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachmittags`,evening:`abends`,night:`nachts`},wide:{am:`vormittags`,pm:`nachmittags`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachmittags`,evening:`abends`,night:`nachts`}},defaultFormattingWidth:`wide`})},u={code:`de-AT`,formatDistance:t,formatLong:r,formatRelative:n,localize:l,match:i,options:{weekStartsOn:1,firstWeekContainsDate:4}};export{u as deAT,u as default};
1
+ import{Zr as e}from"./ui-components-D8wcRNrt.js";import{i as t,n,r,t as i}from"./match-ScHH8kYk.js";var a={narrow:[`v.Chr.`,`n.Chr.`],abbreviated:[`v.Chr.`,`n.Chr.`],wide:[`vor Christus`,`nach Christus`]},o={narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1. Quartal`,`2. Quartal`,`3. Quartal`,`4. Quartal`]},s={narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jän`,`Feb`,`Mär`,`Apr`,`Mai`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Dez`],wide:[`Jänner`,`Februar`,`März`,`April`,`Mai`,`Juni`,`Juli`,`August`,`September`,`Oktober`,`November`,`Dezember`]},c={narrow:s.narrow,abbreviated:[`Jän.`,`Feb.`,`März`,`Apr.`,`Mai`,`Juni`,`Juli`,`Aug.`,`Sep.`,`Okt.`,`Nov.`,`Dez.`],wide:s.wide},l={ordinalNumber:e=>Number(e)+`.`,era:e({values:a,defaultWidth:`wide`}),quarter:e({values:o,defaultWidth:`wide`,argumentCallback:e=>e-1}),month:e({values:s,formattingValues:c,defaultWidth:`wide`}),day:e({values:{narrow:[`S`,`M`,`D`,`M`,`D`,`F`,`S`],short:[`So`,`Mo`,`Di`,`Mi`,`Do`,`Fr`,`Sa`],abbreviated:[`So.`,`Mo.`,`Di.`,`Mi.`,`Do.`,`Fr.`,`Sa.`],wide:[`Sonntag`,`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`]},defaultWidth:`wide`}),dayPeriod:e({values:{narrow:{am:`vm.`,pm:`nm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachm.`,evening:`Abend`,night:`Nacht`},abbreviated:{am:`vorm.`,pm:`nachm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachmittag`,evening:`Abend`,night:`Nacht`},wide:{am:`vormittags`,pm:`nachmittags`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachmittag`,evening:`Abend`,night:`Nacht`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`vm.`,pm:`nm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachm.`,evening:`abends`,night:`nachts`},abbreviated:{am:`vorm.`,pm:`nachm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachmittags`,evening:`abends`,night:`nachts`},wide:{am:`vormittags`,pm:`nachmittags`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachmittags`,evening:`abends`,night:`nachts`}},defaultFormattingWidth:`wide`})},u={code:`de-AT`,formatDistance:t,formatLong:r,formatRelative:n,localize:l,match:i,options:{weekStartsOn:1,firstWeekContainsDate:4}};export{u as deAT,u as default};
@@ -1 +1 @@
1
- import{Yr as e}from"./ui-components-BTB1NkUW.js";import{i as t,n,r,t as i}from"./match-Co4ivumx.js";var a={narrow:[`v.Chr.`,`n.Chr.`],abbreviated:[`v.Chr.`,`n.Chr.`],wide:[`vor Christus`,`nach Christus`]},o={narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1. Quartal`,`2. Quartal`,`3. Quartal`,`4. Quartal`]},s={narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mär`,`Apr`,`Mai`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Dez`],wide:[`Januar`,`Februar`,`März`,`April`,`Mai`,`Juni`,`Juli`,`August`,`September`,`Oktober`,`November`,`Dezember`]},c={narrow:s.narrow,abbreviated:[`Jan.`,`Feb.`,`März`,`Apr.`,`Mai`,`Juni`,`Juli`,`Aug.`,`Sep.`,`Okt.`,`Nov.`,`Dez.`],wide:s.wide},l={ordinalNumber:e=>Number(e)+`.`,era:e({values:a,defaultWidth:`wide`}),quarter:e({values:o,defaultWidth:`wide`,argumentCallback:e=>e-1}),month:e({values:s,formattingValues:c,defaultWidth:`wide`}),day:e({values:{narrow:[`S`,`M`,`D`,`M`,`D`,`F`,`S`],short:[`So`,`Mo`,`Di`,`Mi`,`Do`,`Fr`,`Sa`],abbreviated:[`So.`,`Mo.`,`Di.`,`Mi.`,`Do.`,`Fr.`,`Sa.`],wide:[`Sonntag`,`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`]},defaultWidth:`wide`}),dayPeriod:e({values:{narrow:{am:`vm.`,pm:`nm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachm.`,evening:`Abend`,night:`Nacht`},abbreviated:{am:`vorm.`,pm:`nachm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachmittag`,evening:`Abend`,night:`Nacht`},wide:{am:`vormittags`,pm:`nachmittags`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachmittag`,evening:`Abend`,night:`Nacht`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`vm.`,pm:`nm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachm.`,evening:`abends`,night:`nachts`},abbreviated:{am:`vorm.`,pm:`nachm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachmittags`,evening:`abends`,night:`nachts`},wide:{am:`vormittags`,pm:`nachmittags`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachmittags`,evening:`abends`,night:`nachts`}},defaultFormattingWidth:`wide`})},u={code:`de`,formatDistance:t,formatLong:r,formatRelative:n,localize:l,match:i,options:{weekStartsOn:1,firstWeekContainsDate:4}};export{u as de,u as default};
1
+ import{Zr as e}from"./ui-components-D8wcRNrt.js";import{i as t,n,r,t as i}from"./match-ScHH8kYk.js";var a={narrow:[`v.Chr.`,`n.Chr.`],abbreviated:[`v.Chr.`,`n.Chr.`],wide:[`vor Christus`,`nach Christus`]},o={narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1. Quartal`,`2. Quartal`,`3. Quartal`,`4. Quartal`]},s={narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mär`,`Apr`,`Mai`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Dez`],wide:[`Januar`,`Februar`,`März`,`April`,`Mai`,`Juni`,`Juli`,`August`,`September`,`Oktober`,`November`,`Dezember`]},c={narrow:s.narrow,abbreviated:[`Jan.`,`Feb.`,`März`,`Apr.`,`Mai`,`Juni`,`Juli`,`Aug.`,`Sep.`,`Okt.`,`Nov.`,`Dez.`],wide:s.wide},l={ordinalNumber:e=>Number(e)+`.`,era:e({values:a,defaultWidth:`wide`}),quarter:e({values:o,defaultWidth:`wide`,argumentCallback:e=>e-1}),month:e({values:s,formattingValues:c,defaultWidth:`wide`}),day:e({values:{narrow:[`S`,`M`,`D`,`M`,`D`,`F`,`S`],short:[`So`,`Mo`,`Di`,`Mi`,`Do`,`Fr`,`Sa`],abbreviated:[`So.`,`Mo.`,`Di.`,`Mi.`,`Do.`,`Fr.`,`Sa.`],wide:[`Sonntag`,`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`]},defaultWidth:`wide`}),dayPeriod:e({values:{narrow:{am:`vm.`,pm:`nm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachm.`,evening:`Abend`,night:`Nacht`},abbreviated:{am:`vorm.`,pm:`nachm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachmittag`,evening:`Abend`,night:`Nacht`},wide:{am:`vormittags`,pm:`nachmittags`,midnight:`Mitternacht`,noon:`Mittag`,morning:`Morgen`,afternoon:`Nachmittag`,evening:`Abend`,night:`Nacht`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`vm.`,pm:`nm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachm.`,evening:`abends`,night:`nachts`},abbreviated:{am:`vorm.`,pm:`nachm.`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachmittags`,evening:`abends`,night:`nachts`},wide:{am:`vormittags`,pm:`nachmittags`,midnight:`Mitternacht`,noon:`Mittag`,morning:`morgens`,afternoon:`nachmittags`,evening:`abends`,night:`nachts`}},defaultFormattingWidth:`wide`})},u={code:`de`,formatDistance:t,formatLong:r,formatRelative:n,localize:l,match:i,options:{weekStartsOn:1,firstWeekContainsDate:4}};export{u as de,u as default};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{d as t,p as n,r,t as i,u as a,v as o}from"./vendor-react-BggL7APJ.js";import{Ka as s,Q as c,at as l,ha as u,nt as d}from"./vendor-objectstack-C4eD5dbT.js";import{$n as f,At as p,Dt as m,Et as h,Fn as g,Fr as _,In as v,Ir as y,Mn as b,Mr as x,Nn as S,Nr as C,Pn as w,Pr as T,Yn as E,an as D,bi as O,cn as ee,ii as k,in as A,jn as j,jr as M,kn as te,nn as ne,on as re,rn as ie,sn as ae}from"./ui-components-D8wcRNrt.js";import{xi as N}from"./framework-CAuH4h0L.js";import{t as P}from"./i18n-runtime-CdWyaiOD.js";import{t as oe}from"./vendor-icon-arrow-left-DmGEbpkA.js";import{t as F}from"./vendor-icon-chevron-right-DbnKwHYQ.js";import{t as I}from"./vendor-icon-copy-B5M-KdZo.js";import{t as se}from"./vendor-icon-download-C3csYSaD.js";import{t as ce}from"./vendor-icon-external-link-SBKz5x6R.js";import{t as le}from"./vendor-icon-eye-C3HaEGOo.js";import{t as L}from"./vendor-icon-file-up-CeHsRg2x.js";import{t as ue}from"./vendor-icon-inbox-ByVQ4l4S.js";import{t as de}from"./vendor-icon-loader-circle-D3PsuVaD.js";import{t as fe}from"./vendor-icon-package-B6zAlWd3.js";import{t as pe}from"./vendor-icon-pencil-CMubUBjW.js";import{t as me}from"./vendor-icon-plus-BlfcDDsa.js";import{t as he}from"./vendor-icon-power-off-4BJhC7rc.js";import{t as ge}from"./vendor-icon-power-CySrWbJV.js";import{t as _e}from"./vendor-icon-refresh-cw-BGjSPEfJ.js";import{t as ve}from"./vendor-icon-rotate-ccw-lr5YKsxC.js";import{t as ye}from"./vendor-icon-search-B2Uqtp_W.js";import{t as be}from"./vendor-icon-trash-BLsWkwB9.js";import{t as xe}from"./vendor-icon-triangle-alert-D5n0T3q_.js";import{t as Se}from"./vendor-icon-undo-2-C9MbW2Vb.js";import{t as Ce}from"./vendor-icon-upload-BZ3rElxe.js";import{o as we,s as Te}from"./createDerive-CynsXU-B.js";import{r as Ee}from"./SchemaForm-BWSWYMLE.js";import{a as R,g as z,i as B,l as De,o as Oe,r as V,u as ke}from"./i18n-DTfZonAM.js";import{r as Ae}from"./dist-Dc_9i5rZ.js";var H=e(o(),1),U=i();function W(e){let t=e?.error;if(!t||typeof t!=`object`)return null;let{code:n,message:r,userMessage:i}=t,a=(typeof i==`string`?i:``)||(typeof r==`string`?r:``);if(!a)return null;let o=typeof n==`string`?n:``;return o?`${a} (${o})`:a}function je(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 Me(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 Ne(e){return G.get(e)}function Pe(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 Fe(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}}function Ie({entry:e,readOnly:t,locale:n,compact:r}){let i=r?`text-[10px] h-5 px-1.5`:`text-[10px]`;return t?(0,U.jsx)(k,{variant:`outline`,className:`${i} text-muted-foreground`,title:V(`engine.studio.pkg.readonlyHint`,n),children:V(`engine.badge.readOnly`,n)}):e?.allowOrgOverride?(0,U.jsx)(k,{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:V(`engine.badge.writable`,n)}):e?.allowRuntimeCreate?(0,U.jsx)(k,{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:V(`engine.badge.createOnly`,n)}):(0,U.jsx)(k,{variant:`outline`,className:`${i} text-muted-foreground`,children:V(`engine.badge.readOnly`,n)})}function Le({entry:e,itemName:t,subtitle:n,stats:i,actions:o,embedded:s=!1,readOnly:c=!1,children:l}){let u=e?.type??``,d=z(),f=ke(u,d,e?.label),{pathname:p}=a(),m=H.useMemo(()=>{let e=p.indexOf(`/metadata`);return e>=0?p.slice(0,e+9):`/metadata`},[p]);return(0,U.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[t?(0,U.jsxs)(`div`,{className:`px-6 py-2.5 border-b bg-background flex items-center gap-3 min-h-[44px]`,children:[(0,U.jsxs)(`nav`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground min-w-0`,children:[s?(0,U.jsx)(`span`,{className:`shrink-0`,children:f}):(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(r,{to:m,className:`hover:text-foreground shrink-0`,children:V(`engine.breadcrumb.allTypes`,d)}),(0,U.jsx)(F,{className:`h-3 w-3 shrink-0`}),(0,U.jsx)(r,{to:`${m}/${encodeURIComponent(u)}`,className:`hover:text-foreground shrink-0`,children:f})]}),(0,U.jsx)(F,{className:`h-3 w-3 shrink-0`}),(0,U.jsx)(`span`,{className:`text-foreground font-medium font-mono truncate`,title:t,children:t})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0`,children:[e?.domain&&(0,U.jsx)(k,{variant:`outline`,className:`text-[10px] uppercase tracking-wider h-5 px-1.5`,children:De(e.domain,d)}),(0,U.jsx)(Ie,{entry:e,readOnly:c,locale:d,compact:!0})]}),n&&(0,U.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:n}),(0,U.jsx)(`div`,{className:`flex-1`}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[i?.map((e,t)=>(0,U.jsxs)(`div`,{className:`flex items-baseline gap-1 px-2 py-0.5 rounded border bg-muted/30`,children:[(0,U.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground`,children:e.label}),(0,U.jsx)(`span`,{className:`text-xs font-semibold tabular-nums`,children:e.value})]},t)),o]})]}):(0,U.jsxs)(`div`,{className:`px-6 pt-5 pb-4 border-b bg-background`,children:[!s&&(0,U.jsxs)(`nav`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground mb-2`,children:[(0,U.jsx)(r,{to:m,className:`hover:text-foreground`,children:V(`engine.breadcrumb.allTypes`,d)}),(0,U.jsx)(F,{className:`h-3 w-3`}),(0,U.jsx)(`span`,{className:`text-foreground font-medium`,children:f})]}),(0,U.jsxs)(`div`,{className:`flex items-start justify-between gap-3 flex-wrap`,children:[(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,U.jsx)(`h1`,{className:`text-xl font-semibold truncate`,children:f}),(0,U.jsx)(`code`,{className:`text-xs font-mono text-muted-foreground`,children:u}),e?.domain&&(0,U.jsx)(k,{variant:`outline`,className:`text-[10px] uppercase tracking-wider`,children:De(e.domain,d)}),(0,U.jsx)(Ie,{entry:e,readOnly:c,locale:d})]}),n&&(0,U.jsx)(`div`,{className:`text-sm text-muted-foreground mt-1`,children:n}),!n&&e?.description&&(0,U.jsx)(`div`,{className:`text-sm text-muted-foreground mt-1 max-w-3xl`,children:e.description})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[i?.map((e,t)=>(0,U.jsxs)(`div`,{className:`flex flex-col items-end px-3 py-1 rounded border bg-muted/30 min-w-[64px]`,children:[(0,U.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground`,children:e.label}),(0,U.jsx)(`span`,{className:`text-sm font-semibold tabular-nums`,children:e.value})]},t)),o]})]})]}),(0,U.jsx)(`div`,{className:`flex-1 overflow-auto`,children:l})]})}function Re({type:e,name:r}){let i=n(),a=e??i.type??``,o=r??i.name??``,s=t(),c=we(),l=z(),{entries:u}=Te(c),d=u.find(e=>e.type===a),[f,p]=H.useState(0),[m,h]=H.useState(0);return(0,U.jsx)(Le,{entry:d??{type:a,label:a},itemName:o,subtitle:V(`engine.edit.historySubtitle`,l),stats:[{label:V(`engine.edit.historyEvents`,l),value:m}],actions:(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(O,{variant:`ghost`,size:`sm`,onClick:()=>s(`../${encodeURIComponent(o)}`),children:[(0,U.jsx)(oe,{className:`h-4 w-4 mr-1`}),`Back to item`]}),(0,U.jsx)(O,{variant:`ghost`,size:`sm`,onClick:()=>p(e=>e+1),children:(0,U.jsx)(_e,{className:`h-4 w-4`})})]}),children:(0,U.jsx)(`div`,{className:`p-6 max-w-4xl`,children:(0,U.jsx)(ze,{type:a,name:o,refreshKey:f,onCount:h,client:c,locale:l,onRollback:()=>p(e=>e+1)})})})}function ze({type:e,name:t,refreshKey:n=0,onCount:r,client:i,onRollback:a,rollbackConfirm:o,rollbackLabel:s,locale:c}){let l=P(),[u,d]=H.useState([]),[f,g]=H.useState(!0),[_,v]=H.useState(null),[y,b]=H.useState(null),[x,S]=H.useState(null),[C,w]=H.useState(0);H.useEffect(()=>{let n=!1;return g(!0),v(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));d(o),r?.(o.length),g(!1)}catch(e){n||(v(e?.message??String(e)),g(!1))}})(),()=>{n=!0}},[i,e,t,n,C]);async function T(n){let r=o?o(n):`Restore version ${n}? This writes the historical body back as the current overlay.`;if(confirm(r)){S(n),v(null);try{await i.rollback(e,t,n),a?.(n),w(e=>e+1)}catch(e){v(e?.message??String(e))}finally{S(null)}}}return(0,U.jsxs)(U.Fragment,{children:[f&&(0,U.jsxs)(`div`,{className:`text-sm text-muted-foreground flex items-center gap-2`,children:[(0,U.jsx)(de,{className:`h-4 w-4 animate-spin`}),` Loading history…`]}),_&&(0,U.jsx)(`div`,{className:`text-sm text-destructive border border-destructive/30 rounded p-3 bg-destructive/5`,children:_}),!f&&!_&&u.length===0&&(0,U.jsxs)(h,{children:[(0,U.jsx)(p,{children:V(`engine.edit.historyEmptyTitle`,c)}),(0,U.jsx)(m,{children:V(`engine.edit.historyEmptyDesc`,c)})]}),!f&&u.length>0&&(0,U.jsx)(`ol`,{className:`space-y-2 relative pl-6 border-l`,children:u.map((e,t)=>{let n=y===t,r=e.op??e.kind,i=e.ts??e.at,o=!!a&&typeof e.version==`number`&&r!==`delete`&&r!==`tombstone`;return(0,U.jsxs)(`li`,{className:`relative`,children:[(0,U.jsx)(`span`,{className:`absolute -left-[27px] top-2 w-3 h-3 rounded-full bg-primary ring-4 ring-background`}),(0,U.jsxs)(`div`,{role:`button`,tabIndex:0,onClick:()=>b(n?null:t),onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&b(n?null:t)},className:`border rounded-lg p-3 hover:border-primary/50 cursor-pointer transition-colors`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,U.jsxs)(k,{variant:`outline`,className:`text-[10px] font-mono`,children:[`seq `,e.seq??`–`]}),typeof e.version==`number`&&(0,U.jsxs)(k,{variant:`outline`,className:`text-[10px] font-mono`,children:[`v`,e.version]}),r&&(0,U.jsx)(k,{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:Oe(`op`,String(r),c)}),e.actor&&(0,U.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`by`,` `,(0,U.jsx)(`span`,{className:`font-mono`,children:String(e.actor)})]}),i&&(0,U.jsx)(`span`,{className:`text-xs text-muted-foreground ml-auto`,children:Be(i,l)}),o&&(0,U.jsx)(O,{size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0`,title:s??`Rollback to this version`,disabled:x!==null,onClick:t=>{t.stopPropagation(),T(e.version)},children:x===e.version?(0,U.jsx)(de,{className:`h-3.5 w-3.5 animate-spin`}):(0,U.jsx)(ve,{className:`h-3.5 w-3.5`})})]}),n&&(0,U.jsx)(`pre`,{className:`mt-2 text-xs font-mono bg-muted/30 rounded p-2 overflow-auto max-h-[280px]`,children:Ve(e)})]})]},`${e.seq??t}-${t}`)})})]})}function Be(e,t){try{let n=new Date(e);return Number.isNaN(n.getTime())?String(e):n.toLocaleString(t)}catch{return String(e)}}function Ve(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function He(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:d(n),o=typeof e.writable==`boolean`?e.writable:i!==`project`,s=(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:s??n,writable:o,namespace:a})}return r}async function Ue(){let e=await fetch(`/api/v1/packages`,{credentials:`include`,headers:{Accept:`application/json`},cache:`no-store`});if(!e.ok){let t=await e.json().catch(()=>null);throw Error(W(t)??`HTTP ${e.status}`)}return He(await e.json())}var We=5;function Ge(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,We).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 Ke(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)throw Error(W(i)??`HTTP ${r.status}`);let a=i?.data??i??void 0;if(a?.success===!1)throw Error(Ge(a))}var qe=/^[a-z][a-z0-9_.-]*(\.[a-z0-9_-]+)+$/,Je=/^[a-z][a-z0-9_]{1,19}$/;function Ye(e,t){return t&&l(e,t)?`${t}_${e}`:e}function Xe(e){let t=e.toLowerCase().replace(/[^a-z0-9_.-]/g,``);return{value:t,stripped:t.length!==e.length}}u();var Ze={io:`input`,unrepresentable:`any`},K,Qe=!1;function $e(){if(K||Qe)return K;try{K=s(c,Ze)}catch(e){Qe=!0,typeof console<`u`&&console.warn(`[package-schema] failed to derive manifest JSONSchema from spec`,e)}return K}function et(e){return{type:`modal`,sections:[{label:V(`engine.packages.form.basics`,e),columns:1,fields:[{field:`name`,label:V(`engine.packages.create.name`,e),helpText:R(`engine.packages.form.help.name`,e),placeholder:`Acme CRM`},{field:`id`,label:V(`engine.packages.create.id`,e),helpText:R(`engine.packages.form.help.id`,e),placeholder:`com.acme.crm`,immutable:!0},{field:`namespace`,label:V(`engine.packages.create.namespace`,e),helpText:R(`engine.packages.form.help.namespace`,e),placeholder:`crm`,immutable:!0},{field:`version`,label:V(`engine.packages.create.version`,e),helpText:R(`engine.packages.form.help.version`,e),placeholder:`0.1.0`},{field:`type`,label:V(`engine.packages.detail.type`,e),helpText:R(`engine.packages.form.help.type`,e),immutable:!0},{field:`description`,label:V(`engine.packages.detail.description`,e),helpText:R(`engine.packages.form.help.description`,e)}]},{label:V(`engine.packages.form.advanced`,e),collapsible:!0,collapsed:!0,columns:1,fields:[{field:`defaultDatasource`,label:V(`engine.packages.form.defaultDatasource`,e),helpText:R(`engine.packages.form.help.defaultDatasource`,e),immutable:!0},{field:`scope`,label:V(`engine.packages.form.scope`,e),helpText:R(`engine.packages.form.help.scope`,e),immutable:!0},{field:`dependencies`,label:V(`engine.packages.form.dependencies`,e),helpText:R(`engine.packages.form.help.dependencies`,e),immutable:!0}]}]}}var tt=`/api/v1/packages`;function nt(e){return c.shape.version.safeParse(e).success}function rt(e){let t=e?.error;if(!t||typeof t!=`object`)return``;let{userMessage:n}=t;return typeof n==`string`?n:``}async function it(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=W(i)||i?.error||i?.message||`Request failed (${n.status})`,t=Error(typeof e==`string`?e:`Request failed (${n.status})`);throw t.status=n.status,t.userMessage=rt(i),t}return i?.data??i}function at(){try{window.dispatchEvent(new CustomEvent(`objectui:packages-changed`))}catch{}}function q({mode:e,open:t,onOpenChange:n,manifest:r,onSaved:i}){let a=z(),o=H.useMemo(()=>$e(),[]),s=H.useMemo(()=>et(a),[a]),l=e===`create`,u=e===`view`,[f,p]=H.useState({}),[m,h]=H.useState(!1),[g,v]=H.useState(null),b=H.useRef(!1);H.useEffect(()=>{t&&(b.current=!1,p(l?{version:`0.1.0`,type:`app`}:{...r??{}}),v(null),h(!1))},[t,l,r]);let S=H.useCallback(e=>{if(!l){p(e);return}p(t=>{let n=e.namespace;return n!==t.namespace&&(b.current=!0,n=String(n??``).toLowerCase().replace(/[^a-z0-9_]/g,``)),!b.current&&e.id!==t.id&&(n=d(String(e.id??``))??``),{...e,namespace:n}})},[l]),w=H.useMemo(()=>{if(u)return[];let e=c.safeParse(f);return e.success?[]:e.error.issues.map(e=>({path:e.path.join(`.`),message:e.message}))},[f,u]),E=!!String(f.name??``).trim(),D=String(f.version??``).trim(),ee=l?nt(D):!D||nt(D),k=!l||!!String(f.id??``).trim(),A=!l||Je.test(String(f.namespace??``).trim()),j=!u&&E&&ee&&k&&A&&!m;async function te(){if(j){h(!0),v(null);try{let t;if(l){let n={...f,id:String(f.id??``).trim(),name:String(f.name??``).trim(),version:D,type:f.type??`app`},r=await it(tt,{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 it(`${tt}/${encodeURIComponent(n)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:String(f.name??``).trim(),description:String(f.description??``).trim(),version:D})})}}at(),i?.(t),n(!1)}catch(e){let t=e?.message??``,n=typeof e?.userMessage==`string`&&e.userMessage!==``;e?.status===409||/already exists/i.test(t)?v(n?t:V(`engine.packages.create.exists`,a)):e?.status===403||/manage_metadata/i.test(t)?v(n?t:V(`engine.packages.noCapability`,a)):v(t||V(l?`engine.packages.create.failed`:`engine.packages.edit.failed`,a))}finally{h(!1)}}}let ne=V(e===`create`?`engine.packages.create.title`:e===`edit`?`engine.packages.edit.title`:`engine.packages.view.title`,a);return(0,U.jsx)(M,{open:t,onOpenChange:n,children:(0,U.jsxs)(x,{className:`max-h-[85vh] overflow-y-auto`,children:[(0,U.jsxs)(_,{children:[(0,U.jsx)(y,{children:ne}),e===`create`?(0,U.jsx)(C,{children:B(`engine.packages.create.description`,a,{example:`com.acme.crm`})}):(0,U.jsx)(C,{className:`font-mono text-xs`,children:String(r?.id??f.id??``)})]}),(0,U.jsx)(`div`,{className:`py-1`,"data-testid":`package-form`,children:(0,U.jsx)(Ee,{schema:o,form:s,value:f,onChange:S,issues:w,readOnly:u,createMode:l})}),g&&(0,U.jsxs)(`div`,{"data-testid":`package-form-error`,className:`flex items-start gap-2 rounded-md border border-destructive/40 bg-destructive/10 p-2 text-sm text-destructive`,children:[(0,U.jsx)(xe,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,U.jsx)(`span`,{children:g})]}),(0,U.jsx)(T,{children:u?(0,U.jsx)(O,{variant:`outline`,onClick:()=>n(!1),children:V(`engine.close`,a)}):(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(O,{variant:`outline`,onClick:()=>n(!1),disabled:m,children:V(`engine.cancel`,a)}),(0,U.jsx)(O,{onClick:te,disabled:!j,"data-testid":`package-form-submit`,children:V(m?l?`engine.packages.create.creating`:`engine.packages.edit.saving`:l?`engine.packages.create.submit`:`engine.packages.edit.save`,a)})]})})]})})}var J=`/api/v1/packages`;async function Y(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=W(i)||i?.error||i?.message||`Request failed (${n.status})`;throw Error(typeof e==`string`?e:`Request failed (${n.status})`)}return i?.data??i}function ot({scope:e}){let t=z();if(!e)return(0,U.jsx)(k,{className:`bg-emerald-400/15 text-emerald-600 hover:bg-emerald-400/15 dark:text-emerald-300`,children:V(`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,U.jsx)(k,{variant:n,children:r?V(r,t):e})}function st({pkg:e}){let t=z(),n=e.enabled!==!1&&e.status!==`disabled`;return(0,U.jsx)(k,{variant:n?`default`:`outline`,children:V(n?`engine.packages.status.enabled`:`engine.packages.status.disabled`,t)})}function X({open:e,onOpenChange:t,onCreated:n}){return(0,U.jsx)(q,{mode:`create`,open:e,onOpenChange:t,onSaved:e=>n(e.id)})}function Z({label:e,children:t}){return(0,U.jsxs)(`div`,{className:`flex items-baseline justify-between gap-4 py-1.5`,children:[(0,U.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:e}),(0,U.jsx)(`span`,{className:`text-sm font-medium text-right break-all`,children:t})]})}function ct({pkg:e,open:t,onOpenChange:n,onSaved:r}){return(0,U.jsx)(q,{mode:`edit`,open:t,onOpenChange:n,manifest:e?.manifest??null,onSaved:t=>r(t.package??e)})}function lt({pkg:e,appBase:t,open:n,onOpenChange:i,onChanged:a}){let o=z(),s=we(),[c,l]=H.useState(null),[u,d]=H.useState(null),[f,p]=H.useState(null),[m,h]=H.useState(!1),[_,y]=H.useState(!1);if(H.useEffect(()=>{d(null),l(null)},[e?.manifest.id]),H.useEffect(()=>{let t=e?.manifest.id;if(!n||!t){p(null);return}let r=!1;return Y(`/api/v1/meta/_drafts?packageId=${encodeURIComponent(t)}`).then(e=>{r||p(e?.drafts??[])}).catch(()=>{r||p([])}),()=>{r=!0}},[n,e?.manifest.id]),!e)return null;let x=e.manifest.id,C=e.enabled!==!1&&e.status!==`disabled`,T=e.manifest.scope===`system`||e.manifest.scope===`cloud`;async function E(e,t,n){l(e),d(null);try{await t(),d({kind:`ok`,text:n}),a()}catch(e){d({kind:`err`,text:e?.message??V(`engine.packages.detail.actionFailed`,o)})}finally{l(null)}}return(0,U.jsx)(j,{open:n,onOpenChange:i,children:(0,U.jsxs)(b,{className:`w-full sm:max-w-md overflow-y-auto`,children:[(0,U.jsxs)(w,{children:[(0,U.jsxs)(g,{className:`flex items-center gap-2`,children:[(0,U.jsx)(fe,{className:`h-4 w-4`}),e.manifest.name||x]}),(0,U.jsx)(S,{className:`font-mono text-xs`,children:x})]}),(0,U.jsxs)(`div`,{className:`mt-4`,children:[(0,U.jsx)(Z,{label:V(`engine.packages.col.version`,o),children:e.manifest.version||`—`}),(0,U.jsx)(Z,{label:V(`engine.packages.detail.type`,o),children:e.manifest.type||`—`}),(0,U.jsx)(Z,{label:V(`engine.packages.col.scope`,o),children:(0,U.jsx)(ot,{scope:e.manifest.scope})}),(0,U.jsx)(Z,{label:V(`engine.packages.col.status`,o),children:(0,U.jsx)(st,{pkg:e})}),e.manifest.description&&(0,U.jsx)(Z,{label:V(`engine.packages.detail.description`,o),children:e.manifest.description})]}),t&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(v,{className:`my-4`}),(0,U.jsxs)(r,{to:`${t}/metadata/object?package=${encodeURIComponent(x)}`,className:`inline-flex items-center gap-1.5 text-sm text-primary hover:underline`,onClick:()=>i(!1),children:[(0,U.jsx)(ce,{className:`h-3.5 w-3.5`}),V(`engine.packages.detail.browseMetadata`,o)]})]}),f&&f.length>0&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(v,{className:`my-4`}),(0,U.jsxs)(`div`,{className:`space-y-2`,children:[(0,U.jsxs)(`p`,{className:`flex items-center gap-2 text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:[V(`engine.packages.detail.pendingChanges`,o),(0,U.jsx)(k,{variant:`secondary`,children:f.length})]}),(0,U.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:V(`engine.packages.detail.pendingHint`,o)}),!T&&(0,U.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,U.jsxs)(O,{size:`sm`,onClick:()=>E(`publish-drafts`,async()=>{let e=await s.publishPackageDrafts(x).catch(e=>{let t=W(e?.body);throw t?Error(t):e});if(e.success===!1)throw Error(W(e)||(typeof e.error==`string`?e.error:``)||(typeof e.message==`string`?e.message:``)||V(`engine.packages.detail.actionFailed`,o));try{let e=await Y(`/api/v1/meta/_drafts?packageId=${encodeURIComponent(x)}`);p(e?.drafts??[])}catch{p([])}if(e?.failedCount){let t=Array.isArray(e.failed)?e.failed:[],n=t.find(e=>!N(e,`BATCH_ABORTED`)&&e?.error);throw t.some(e=>N(e,`BATCH_ABORTED`))?Error(B(`engine.packages.detail.publishDraftsRolledBack`,o,{cause:n?`${n.type??`?`}/${n.name??`?`}: ${n.error}`:String(e.failedCount)})):Error(B(`engine.packages.detail.publishDraftsPartial`,o,{published:e.publishedCount??0,failed:e.failedCount}))}return e},V(`engine.packages.detail.publishDraftsOk`,o)),disabled:!!c,children:[(0,U.jsx)(Ce,{className:`mr-1.5 h-3.5 w-3.5`}),c===`publish-drafts`?V(`engine.packages.detail.publishing`,o):B(`engine.packages.detail.publishApp`,o,{count:f.length})]}),(0,U.jsxs)(O,{size:`sm`,variant:`outline`,onClick:()=>E(`discard-drafts`,()=>Y(`${J}/${encodeURIComponent(x)}/discard-drafts`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({})}).then(async e=>{try{let e=await Y(`/api/v1/meta/_drafts?packageId=${encodeURIComponent(x)}`);p(e?.drafts??[])}catch{p([])}if(e?.failedCount)throw Error(B(`engine.packages.detail.discardDraftsPartial`,o,{discarded:e.discardedCount??0,failed:e.failedCount}));return e}),V(`engine.packages.detail.discardDraftsOk`,o)),disabled:!!c,children:[(0,U.jsx)(Se,{className:`mr-1.5 h-3.5 w-3.5`}),c===`discard-drafts`?V(`engine.packages.detail.discarding`,o):B(`engine.packages.detail.discardChanges`,o,{count:f.length})]})]}),(0,U.jsx)(`ul`,{className:`space-y-1`,children:f.map(e=>t?(0,U.jsx)(`li`,{children:(0,U.jsxs)(r,{to:`${t}/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,U.jsx)(L,{className:`h-3.5 w-3.5`}),(0,U.jsx)(`span`,{className:`font-mono text-xs`,children:e.type}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:`·`}),e.name]})},`${e.type}/${e.name}`):(0,U.jsxs)(`li`,{className:`inline-flex items-center gap-1.5 text-sm`,children:[(0,U.jsx)(L,{className:`h-3.5 w-3.5 text-muted-foreground`}),(0,U.jsx)(`span`,{className:`font-mono text-xs`,children:e.type}),(0,U.jsx)(`span`,{className:`text-muted-foreground`,children:`·`}),e.name]},`${e.type}/${e.name}`))})]})]}),(0,U.jsx)(v,{className:`my-4`}),T?(0,U.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:V(`engine.packages.detail.kernelReadOnly`,o)}):(0,U.jsxs)(`div`,{className:`space-y-2`,children:[(0,U.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:V(`engine.packages.detail.actions`,o)}),(0,U.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,U.jsxs)(O,{size:`sm`,variant:`outline`,onClick:()=>y(!0),disabled:!!c,children:[(0,U.jsx)(le,{className:`mr-1.5 h-3.5 w-3.5`}),V(`engine.packages.detail.viewInfo`,o)]}),(0,U.jsxs)(O,{size:`sm`,variant:`outline`,onClick:()=>h(!0),disabled:!!c,children:[(0,U.jsx)(pe,{className:`mr-1.5 h-3.5 w-3.5`}),V(`engine.packages.detail.edit`,o)]}),(0,U.jsxs)(O,{size:`sm`,onClick:()=>E(`publish`,()=>Y(`${J}/${encodeURIComponent(x)}/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?B(`engine.packages.detail.publishBlocked`,o,{count:t}):e.validationErrors?.[0]?.message||V(`engine.packages.detail.nothingToPublish`,o))}return e}),V(`engine.packages.detail.published`,o)),disabled:!!c,children:[(0,U.jsx)(Ce,{className:`mr-1.5 h-3.5 w-3.5`}),V(c===`publish`?`engine.packages.detail.publishing`:`engine.packages.detail.publish`,o)]}),(0,U.jsxs)(O,{size:`sm`,variant:`outline`,onClick:()=>E(`revert`,()=>Y(`${J}/${encodeURIComponent(x)}/revert`,{method:`POST`}),V(`engine.packages.detail.reverted`,o)),disabled:!!c,children:[(0,U.jsx)(Se,{className:`mr-1.5 h-3.5 w-3.5`}),V(`engine.packages.detail.revert`,o)]}),(0,U.jsxs)(O,{size:`sm`,variant:`outline`,onClick:()=>E(`toggle`,()=>Y(`${J}/${encodeURIComponent(x)}/${C?`disable`:`enable`}`,{method:`PATCH`}),V(C?`engine.packages.detail.disabled`:`engine.packages.detail.enabled`,o)),disabled:!!c,children:[C?(0,U.jsx)(he,{className:`mr-1.5 h-3.5 w-3.5`}):(0,U.jsx)(ge,{className:`mr-1.5 h-3.5 w-3.5`}),V(C?`engine.packages.detail.disable`:`engine.packages.detail.enable`,o)]}),(0,U.jsxs)(O,{size:`sm`,variant:`outline`,onClick:()=>E(`export`,async()=>{let e=await Y(`${J}/${encodeURIComponent(x)}/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=`${x}.package.json`,document.body.appendChild(r),r.click(),r.remove(),URL.revokeObjectURL(n)},V(`engine.packages.detail.exported`,o)),disabled:!!c,children:[(0,U.jsx)(se,{className:`mr-1.5 h-3.5 w-3.5`}),V(c===`export`?`engine.packages.detail.exporting`:`engine.packages.detail.export`,o)]}),(0,U.jsxs)(O,{size:`sm`,variant:`outline`,onClick:async()=>{let t=window.prompt(V(`engine.packages.detail.duplicatePrompt`,o),`${x}-copy`);if(t&&t.trim()){l(`duplicate`),d(null);try{await Y(`${J}/${encodeURIComponent(x)}/duplicate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({targetPackageId:t.trim(),targetName:`${e?.manifest.name??x} (copy)`})}),d({kind:`ok`,text:V(`engine.packages.detail.duplicated`,o)}),a()}catch(e){d({kind:`err`,text:e?.message??`Duplicate failed`})}finally{l(null)}}},disabled:!!c,children:[(0,U.jsx)(I,{className:`mr-1.5 h-3.5 w-3.5`}),V(c===`duplicate`?`engine.packages.detail.duplicating`:`engine.packages.detail.duplicate`,o)]}),(0,U.jsxs)(O,{size:`sm`,variant:`outline`,onClick:async()=>{if(window.confirm(B(`engine.packages.detail.adoptConfirm`,o,{name:e?.manifest.name||x}))){l(`adopt`),d(null);try{await Y(`${J}/${encodeURIComponent(x)}/adopt-orphans`,{method:`POST`}),d({kind:`ok`,text:V(`engine.packages.detail.adopted`,o)}),a()}catch(e){d({kind:`err`,text:e?.message??`Adopt failed`})}finally{l(null)}}},disabled:!!c,children:[(0,U.jsx)(ue,{className:`mr-1.5 h-3.5 w-3.5`}),V(c===`adopt`?`engine.packages.detail.adopting`:`engine.packages.detail.adoptOrphans`,o)]}),(0,U.jsxs)(O,{size:`sm`,variant:`outline`,onClick:async()=>{if(!window.confirm(B(`engine.packages.detail.deleteConfirm`,o,{name:e?.manifest.name||x})))return;let t=window.confirm(V(`engine.packages.detail.deleteKeepData`,o))?``:`?keepData=true`;l(`delete`),d(null);try{await Y(`${J}/${encodeURIComponent(x)}${t}`,{method:`DELETE`}),a(),i(!1)}catch(e){d({kind:`err`,text:e?.message??V(`engine.packages.detail.deleteFailed`,o)})}finally{l(null)}},disabled:!!c,className:`text-destructive hover:bg-destructive/10 hover:text-destructive`,children:[(0,U.jsx)(be,{className:`mr-1.5 h-3.5 w-3.5`}),V(c===`delete`?`engine.packages.detail.deleting`:`engine.packages.detail.deleteApp`,o)]})]})]}),u&&(0,U.jsx)(`div`,{className:`mt-4 rounded-md border p-2 text-sm ${u.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:u.text}),(0,U.jsx)(ct,{pkg:e,open:m,onOpenChange:h,onSaved:()=>{d({kind:`ok`,text:V(`engine.packages.edit.saved`,o)}),a()}}),(0,U.jsx)(q,{mode:`view`,open:_,onOpenChange:y,manifest:e?.manifest??null})]})})}function ut(){let e=z(),{pathname:t}=a(),n=H.useMemo(()=>{let e=t.indexOf(`/component`);return e>=0?t.slice(0,e):t},[t]),[r,i]=H.useState([]),[o,s]=H.useState(!0),[c,l]=H.useState(null),[u,d]=H.useState(``),[g,_]=H.useState(!1),[v,y]=H.useState(!1),[b,x]=H.useState(null),[S,C]=H.useState(!1),w=H.useRef(null),[T,k]=H.useState(!1),[j,M]=H.useState(null),N=H.useCallback(async()=>{s(!0),l(null);try{let e=await Y(J),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}),i(t)}catch(t){l(t?.message??V(`engine.packages.loadFailed`,e))}finally{s(!1)}},[e]);H.useEffect(()=>{N()},[N]),H.useEffect(()=>{if(!b)return;let e=r.find(e=>e.manifest.id===b.manifest.id);e&&e!==b&&x(e)},[r,b]);let P=H.useMemo(()=>{let e=u.trim().toLowerCase();return r.filter(t=>(t.manifest.scope===`system`||t.manifest.scope===`cloud`)&&!g?!1:!e||t.manifest.id.toLowerCase().includes(e)||(t.manifest.name||``).toLowerCase().includes(e))},[r,u,g]),oe=e=>{x(e),C(!0)},F=async t=>{let n=t.target.files?.[0];if(t.target.value=``,n){k(!0),M(null);try{let t=await n.text(),r;try{r=JSON.parse(t)}catch{throw Error(V(`engine.packages.import.invalidJson`,e))}if(!r||typeof r!=`object`||!r.id&&!r.name)throw Error(V(`engine.packages.import.invalidPackage`,e));let i=await Y(`/api/v1/marketplace/install-local`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({manifest:r})});M({kind:`ok`,text:B(`engine.packages.import.success`,e,{id:i?.manifestId??r.id})}),await N()}catch(t){M({kind:`err`,text:t?.message??V(`engine.packages.import.failed`,e)})}finally{k(!1)}}},I=r.filter(e=>e.manifest.scope===`system`||e.manifest.scope===`cloud`).length;return(0,U.jsxs)(`div`,{className:`mx-auto w-full max-w-5xl px-6 py-6`,children:[(0,U.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,U.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,U.jsx)(`div`,{className:`rounded-lg bg-primary/10 p-2 text-primary`,children:(0,U.jsx)(fe,{className:`h-5 w-5`})}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`h1`,{className:`text-xl font-semibold tracking-tight`,children:V(`engine.packages.title`,e)}),(0,U.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:V(`engine.packages.description`,e)})]})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsxs)(O,{variant:`outline`,size:`sm`,onClick:()=>void N(),disabled:o,children:[(0,U.jsx)(_e,{className:`mr-1.5 h-3.5 w-3.5 ${o?`animate-spin`:``}`}),V(`engine.packages.refresh`,e)]}),(0,U.jsx)(`input`,{ref:w,type:`file`,accept:`application/json,.json`,className:`hidden`,onChange:F}),(0,U.jsxs)(O,{variant:`outline`,size:`sm`,onClick:()=>w.current?.click(),disabled:T,children:[(0,U.jsx)(L,{className:`mr-1.5 h-3.5 w-3.5`}),V(T?`engine.packages.importing`:`engine.packages.import`,e)]}),(0,U.jsxs)(O,{size:`sm`,onClick:()=>y(!0),children:[(0,U.jsx)(me,{className:`mr-1.5 h-3.5 w-3.5`}),V(`engine.packages.new`,e)]})]})]}),j&&(0,U.jsx)(`div`,{className:`mt-4 rounded-md border p-2 text-sm ${j.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:j.text}),(0,U.jsxs)(`div`,{className:`mt-5 flex flex-wrap items-center justify-between gap-3`,children:[(0,U.jsxs)(`div`,{className:`relative w-full max-w-xs`,children:[(0,U.jsx)(ye,{className:`absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground`}),(0,U.jsx)(E,{className:`pl-8`,placeholder:V(`engine.packages.search`,e),value:u,onChange:e=>d(e.target.value)})]}),I>0&&(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(ee,{id:`show-kernel`,checked:g,onCheckedChange:_}),(0,U.jsx)(f,{htmlFor:`show-kernel`,className:`text-sm text-muted-foreground`,children:B(`engine.packages.showPlatform`,e,{count:I})})]})]}),(0,U.jsx)(`div`,{className:`mt-4 rounded-lg border`,children:o?(0,U.jsx)(`div`,{className:`space-y-2 p-4`,children:[0,1,2].map(e=>(0,U.jsx)(te,{className:`h-10 w-full`},e))}):c?(0,U.jsxs)(`div`,{className:`flex items-start gap-2 p-4 text-sm text-destructive`,children:[(0,U.jsx)(xe,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,U.jsx)(`span`,{"data-testid":`packages-load-error`,children:c})]}):P.length===0?(0,U.jsx)(`div`,{className:`p-8`,children:(0,U.jsxs)(h,{children:[(0,U.jsx)(p,{children:V(`engine.packages.empty`,e)}),(0,U.jsx)(m,{children:r.length===0?V(`engine.packages.emptyCreate`,e):V(`engine.packages.emptyFiltered`,e)})]})}):(0,U.jsxs)(ne,{children:[(0,U.jsx)(re,{children:(0,U.jsxs)(ae,{children:[(0,U.jsx)(D,{children:V(`engine.packages.col.name`,e)}),(0,U.jsx)(D,{children:`ID`}),(0,U.jsx)(D,{className:`w-24`,children:V(`engine.packages.col.version`,e)}),(0,U.jsx)(D,{className:`w-24`,children:V(`engine.packages.col.scope`,e)}),(0,U.jsx)(D,{className:`w-24`,children:V(`engine.packages.col.status`,e)})]})}),(0,U.jsx)(ie,{children:P.map(e=>(0,U.jsxs)(ae,{className:`cursor-pointer`,onClick:()=>oe(e),children:[(0,U.jsx)(A,{className:`font-medium`,children:e.manifest.name||e.manifest.id}),(0,U.jsx)(A,{className:`font-mono text-xs text-muted-foreground`,children:e.manifest.id}),(0,U.jsx)(A,{children:e.manifest.version||`—`}),(0,U.jsx)(A,{children:(0,U.jsx)(ot,{scope:e.manifest.scope})}),(0,U.jsx)(A,{children:(0,U.jsx)(st,{pkg:e})})]},e.manifest.id))})]})}),(0,U.jsx)(X,{open:v,onOpenChange:y,onCreated:async()=>{await N()}}),(0,U.jsx)(lt,{pkg:b,appBase:n,open:S,onOpenChange:C,onChanged:()=>void N()})]})}var Q=new Map;function dt(e,t){Q.set(e,t)}function ft(e){return Q.get(e)}function pt(){return Array.from(Q.keys()).sort()}function mt(e=4e3){let t=H.useRef(null),[n,r]=H.useState(!1);return H.useEffect(()=>{if(n)return;let e=!1,t=Ae?.init?.();return t&&typeof t.catch==`function`&&t.catch(()=>{e||r(!0)}),()=>{e=!0}},[n]),H.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 $=new Map;function ht(e,t){$.set(e,t)}function gt(e){return $.get(e)}function _t(){return Array.from($.keys()).sort()}var vt=new Map;function yt(e,t){vt.set(e,t)}function bt(e){return vt.get(e)}export{Ne as C,W as D,Fe as E,je as S,Me as T,Ye as _,ht as a,Re as b,pt as c,lt as d,ut as f,Ue as g,Ke as h,_t as i,dt as l,qe as m,yt as n,mt as o,q as p,gt as r,ft as s,bt as t,X as u,Xe as v,Pe as w,Le as x,ze as y};