@abtnode/blocklet-services 1.16.29-next-680cf137 → 1.16.30-beta-00e8bdd1

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 (265) hide show
  1. package/api/index.js +20 -4
  2. package/api/libs/connect/session.js +5 -4
  3. package/api/libs/env.js +2 -0
  4. package/api/routes/federated.js +2 -1
  5. package/api/routes/oauth.js +3 -2
  6. package/api/routes/openembed.js +164 -0
  7. package/api/routes/user-session.js +3 -2
  8. package/api/routes/user.js +5 -4
  9. package/api/services/auth/connect/invite.js +2 -1
  10. package/api/services/auth/connect/issue-passport.js +2 -1
  11. package/api/services/auth/connect/receive-transfer-app-owner.js +3 -2
  12. package/api/services/auth/connect/setup.js +3 -2
  13. package/api/services/auth/session.js +2 -1
  14. package/api/services/static.js +5 -6
  15. package/api/util/federated.js +2 -2
  16. package/dist/assets/{Add-DUVzKYFm.js → Add-BN237Fn5.js} +1 -1
  17. package/dist/assets/{AddBox-CT33z_Zw.js → AddBox-3LaPVxwU.js} +1 -1
  18. package/dist/assets/Alert-D6ASJuaD.js +1 -0
  19. package/dist/assets/{ArrowDropDown-D8Cz7Mn2.js → ArrowDropDown-BHT7uJ-_.js} +1 -1
  20. package/dist/assets/Avatar-CaF_-TIa.js +1 -0
  21. package/dist/assets/{ButtonGroup-D4mZO4Fl.js → ButtonGroup-BJxGB-mf.js} +1 -1
  22. package/dist/assets/{CheckCircle-Ocnhk6Zm.js → CheckCircle-CczUamTZ.js} +1 -1
  23. package/dist/assets/{ChevronRight-DTp0tWJx.js → ChevronRight-Cg14uJfK.js} +1 -1
  24. package/dist/assets/{Close-Dv0WBlnZ.js → Close-x7Tkk0S3.js} +1 -1
  25. package/dist/assets/CloseOutlined-QOb8qkQe.js +1 -0
  26. package/dist/assets/{Delete-DVuHYKCF.js → Delete-C6X9S_ep.js} +1 -1
  27. package/dist/assets/{DeleteOutline-Djc7fx6t.js → DeleteOutline-DPoIruJ5.js} +1 -1
  28. package/dist/assets/{Done-hVgZPg46.js → Done-CoG4jV3h.js} +1 -1
  29. package/dist/assets/{Download-CaohbVSv.js → Download-CgS76hkn.js} +1 -1
  30. package/dist/assets/{Edit-B6Q6agid.js → Edit-CuIVEZdJ.js} +1 -1
  31. package/dist/assets/{EditIcon-CoTYxPVa.js → EditIcon-Ca6HYpZk.js} +1 -1
  32. package/dist/assets/{Error-DPX7wzQI.js → Error-DPYTfE3e.js} +1 -1
  33. package/dist/assets/{ExpandMore-Dlsr2tPH.js → ExpandMore-D04IjVlX.js} +1 -1
  34. package/dist/assets/FilterList-DUOw_RoL.js +26 -0
  35. package/dist/assets/FormControl-Bh9aSU12.js +1 -0
  36. package/dist/assets/{FormControlLabel-C0hZddbx.js → FormControlLabel-BpMix3qK.js} +1 -1
  37. package/dist/assets/FormGroup-BfB-iN7c.js +1 -0
  38. package/dist/assets/{Google-BlxdY2rj.js → Google-DIEocVvQ.js} +4 -4
  39. package/dist/assets/{Hidden-B431iBU_.js → Hidden-BLcFQ9WU.js} +1 -1
  40. package/dist/assets/{InfoOutlined-v3x0TY6V.js → InfoOutlined-C5vT7BTM.js} +1 -1
  41. package/dist/assets/InputAdornment-4EnHL3SV.js +1 -0
  42. package/dist/assets/{InputLabel-B1CW0pkO.js → InputLabel-BY35PBOn.js} +1 -1
  43. package/dist/assets/{LastPage-C4NAdMRF.js → LastPage-DSqwop6h.js} +1 -1
  44. package/dist/assets/{Launch-ByMOsCzr.js → Launch-BYwPKhG2.js} +1 -1
  45. package/dist/assets/{LaunchOutlined-D4Flylz3.js → LaunchOutlined-DkrAS-ts.js} +1 -1
  46. package/dist/assets/{Link-C3mczvyl.js → Link-CHkL2_F8.js} +1 -1
  47. package/dist/assets/{ListItemText-CgBEGXWT.js → ListItemText-TxfvzIQH.js} +1 -1
  48. package/dist/assets/LoadingButton-_EYRn4Wx.js +1 -0
  49. package/dist/assets/{LockIcon-sRezRxDg.js → LockIcon-Bz8VQwMT.js} +1 -1
  50. package/dist/assets/{Loop-B8_3BEHM.js → Loop-D0mtfhOu.js} +1 -1
  51. package/dist/assets/{MoreVert-a-kv_ER7.js → MoreVert-xcNzKdjG.js} +1 -1
  52. package/dist/assets/{OpenInNew-CzbN8XuL.js → OpenInNew-DLQ33Rpf.js} +1 -1
  53. package/dist/assets/{Pagination-DFx6ff11.js → Pagination-IIYxtOn3.js} +2 -2
  54. package/dist/assets/PlayArrow-BdFq1DDL.js +1 -0
  55. package/dist/assets/{QuestionMarkCircle-B_rw-f43.js → QuestionMarkCircle-BfRCnC--.js} +1 -1
  56. package/dist/assets/{RadioGroup-BfWqVp9t.js → RadioGroup-sdHfzBzc.js} +1 -1
  57. package/dist/assets/{Search-M7JhBg8T.js → Search-Dg-t_NHQ.js} +1 -1
  58. package/dist/assets/Select-0bmPPjw1.js +2 -0
  59. package/dist/assets/{ServerLogo-CmEIITqo.js → ServerLogo-CXDpSA8g.js} +1 -1
  60. package/dist/assets/{Skeleton-DSmw4PBH.js → Skeleton-DuHnu_TW.js} +4 -4
  61. package/dist/assets/Slider-DaijA7CN.js +1 -0
  62. package/dist/assets/{Stepper-LW_MLyom.js → Stepper-QmSO1CtE.js} +1 -1
  63. package/dist/assets/{TextField-tzVHCyGP.js → TextField-BBIigLRk.js} +1 -1
  64. package/dist/assets/{Toolbar-DJupn0f9.js → Toolbar-DT4-YRKk.js} +1 -1
  65. package/dist/assets/{ViewList-C1U7sxhd.js → ViewList-BU2uRr73.js} +1 -1
  66. package/dist/assets/access-control-C4ERDDDO.js +13 -0
  67. package/dist/assets/{actions-BVhLyZpR.js → actions-Ds_jVVND.js} +1 -1
  68. package/dist/assets/add-component-core-CCOhSWQB.js +979 -0
  69. package/dist/assets/add-resource-Do98YBVD.js +1 -0
  70. package/dist/assets/{addon-B0cj0mfg.js → addon-BcSb2Zzp.js} +1 -1
  71. package/dist/assets/{analytics-Ct3JnUhl.js → analytics-Ce187M51.js} +8 -8
  72. package/dist/assets/api-CWevC1Kw.js +1 -0
  73. package/dist/assets/ar-CYspPmSu.js +1 -0
  74. package/dist/assets/audit-logs-LoED-8gk.js +58 -0
  75. package/dist/assets/{button-BTJqPnHF.js → button-Dfb9hD8n.js} +1 -1
  76. package/dist/assets/{click-to-copy-eJ8KblZ5.js → click-to-copy-D62iwIju.js} +1 -1
  77. package/dist/assets/{complete-C1e5FlMJ.js → complete-CRtPvgDa.js} +4 -4
  78. package/dist/assets/{component-BacRXbI5.js → component-BS6BClYg.js} +48 -48
  79. package/dist/assets/{config-BKEljyRy.js → config-2JcKGcTt.js} +2 -2
  80. package/dist/assets/{config-7HPh0OPK.js → config-DRlEBb7g.js} +1 -1
  81. package/dist/assets/{config-navigation-9PNvdTi2.js → config-navigation-BecqFtHY.js} +2 -2
  82. package/dist/assets/confirm-DK53kjF4.js +7 -0
  83. package/dist/assets/{connect-C-nA2wuT.js → connect-BSc706Qe.js} +1 -1
  84. package/dist/assets/{connect-Cis6vi3E.js → connect-CmVMyWtw.js} +1 -1
  85. package/dist/assets/{connect-to-CmyzTb62.js → connect-to-B7lXTaqa.js} +2 -2
  86. package/dist/assets/{content-layout-DimpCafz.js → content-layout-fifpb2hF.js} +1 -1
  87. package/dist/assets/dashboard-zGeemO7s.js +165 -0
  88. package/dist/assets/de-DIG5UukX.js +1 -0
  89. package/dist/assets/{did-address-2bWEhCPb.js → did-address-CuLpyDcV.js} +1 -1
  90. package/dist/assets/domain-Eb-kKi8N.js +9 -0
  91. package/dist/assets/{domain-list-SF-C3yfn.js → domain-list-B2eOAUf9.js} +2 -2
  92. package/dist/assets/es-iIE-oygq.js +1 -0
  93. package/dist/assets/exchange-passport-D5yUNMgm.js +1 -0
  94. package/dist/assets/{fallback-26RC6JHo.js → fallback-DnwN40Eu.js} +1 -1
  95. package/dist/assets/format-error-eqRBGF1p.js +2 -0
  96. package/dist/assets/fr-D8XyKysR.js +1 -0
  97. package/dist/assets/fuel-DL8WMBx8.js +32 -0
  98. package/dist/assets/{fullpage-Cjsv3Wf9.js → fullpage-4QhjDOeH.js} +1 -1
  99. package/dist/assets/hi-C12r029w.js +1 -0
  100. package/dist/assets/{home-C5blY9H6.js → home-BWibX2vn.js} +1 -1
  101. package/dist/assets/id-BM1nX889.js +1 -0
  102. package/dist/assets/{iframe-B-dRGYkN.js → iframe-BmoLkGVE.js} +1 -1
  103. package/dist/assets/{index-BDw9WR4Y.js → index-AiTSrLp-.js} +1 -1
  104. package/dist/assets/{index-B0FNhvZR.js → index-BEHMH1Pr.js} +1 -1
  105. package/dist/assets/{index-24yb3A6v.js → index-BLek-3-t.js} +12 -12
  106. package/dist/assets/{index-CIjX7CkA.js → index-BN8ZIYdG.js} +1 -1
  107. package/dist/assets/{index-Cj8_nBBf.js → index-BU0saRrz.js} +7 -7
  108. package/dist/assets/{index-BhroV0sn.js → index-Bg9DIh8M.js} +1 -1
  109. package/dist/assets/{index-CEIhpkQ8.js → index-Bhy-Ufb6.js} +1 -1
  110. package/dist/assets/{index-BnDpXkQD.js → index-Bp8EriMk.js} +1 -1
  111. package/dist/assets/{index-JXy24O4H.js → index-BykkL-cr.js} +1 -1
  112. package/dist/assets/{index-CBouf4h_.js → index-C7BxfHre.js} +1 -1
  113. package/dist/assets/index-CCgZIcqf.js +16 -0
  114. package/dist/assets/index-CJ9qEL1_.js +262 -0
  115. package/dist/assets/{index-XJYhE0w4.js → index-CKBTEFra.js} +1 -1
  116. package/dist/assets/index-CQ5dtdkj.js +1290 -0
  117. package/dist/assets/{index-CEzHaZQX.js → index-CTW4nb9G.js} +26 -61
  118. package/dist/assets/{index-BRh4m4iG.js → index-CekjYFHx.js} +1 -1
  119. package/dist/assets/index-CoBC9oVU.js +54 -0
  120. package/dist/assets/{index-D03FwDOh.js → index-CuX6Kr95.js} +1 -1
  121. package/dist/assets/{index-Hr_Wbh6L.js → index-Cxiv-wGv.js} +1 -1
  122. package/dist/assets/{index-B-WWT0RB.js → index-D0sxPxR3.js} +1 -1
  123. package/dist/assets/{index-Cs_U4e7a.js → index-DIJWsYQq.js} +1 -1
  124. package/dist/assets/index-Dbbnbznm.js +1 -0
  125. package/dist/assets/index-DdoI0wbz.js +1 -0
  126. package/dist/assets/index-DkVlOvts.js +11 -0
  127. package/dist/assets/{index-p63x9Zq5.js → index-DpuZJtBf.js} +4 -4
  128. package/dist/assets/index-DuOVToRf.js +1 -0
  129. package/dist/assets/{index-CrOnhTCB.js → index-FHIuVSDt.js} +1 -1
  130. package/dist/assets/index-QDFDl478.js +288 -0
  131. package/dist/assets/index-QU1KoDg_.js +4 -0
  132. package/dist/assets/{index-DTwcC2c1.js → index-UZz8l3in.js} +8 -8
  133. package/dist/assets/index-dIqjPoOB.js +222 -0
  134. package/dist/assets/{index-BvABiWhK.js → index-iEN5H5Ls.js} +1 -1
  135. package/dist/assets/{index.es-CM1Yp6_h.js → index.es-BJiRNQw2.js} +2 -2
  136. package/dist/assets/index.esm-DCtFyquI.js +1 -0
  137. package/dist/assets/{invitation-DrXYTbOJ.js → invitation-CWO1OGzi.js} +8 -8
  138. package/dist/assets/invite-BybXZqJ_.js +10 -0
  139. package/dist/assets/issue-passport-_8jsDZ5J.js +1 -0
  140. package/dist/assets/{item-CADE3Q1i.js → item-_msBYiLo.js} +1 -1
  141. package/dist/assets/ja-D8yfIRFO.js +1 -0
  142. package/dist/assets/{jss-plugin-props-sort.esm-BLFIN_3Q.js → jss-plugin-props-sort.esm-CuwRRnMZ.js} +1 -1
  143. package/dist/assets/ko-BYDKCXC0.js +1 -0
  144. package/dist/assets/{launch-result-message-ePDZL2vD.js → launch-result-message-nnQ4Z0fd.js} +1 -1
  145. package/dist/assets/{layout-FpvhR73S.js → layout-0mxgsXb8.js} +1 -1
  146. package/dist/assets/{list-header-DXsvXmu-.js → list-header-CbhWtFvh.js} +1 -1
  147. package/dist/assets/localization-Ck45g-8d.js +1 -0
  148. package/dist/assets/{log-BRlbvBGI.js → log-ydyp6rKH.js} +8 -8
  149. package/dist/assets/{login-CWtJouqB.js → login-CgXrWK_2.js} +1 -1
  150. package/dist/assets/{login-oauth-callback-BZ0EO56v.js → login-oauth-callback-B-Y4WGSI.js} +1 -1
  151. package/dist/assets/logo-uploader-B0LO5vvb.js +122 -0
  152. package/dist/assets/{lost-passport-YsMU9JSe.js → lost-passport-BhsqypQO.js} +3 -3
  153. package/dist/assets/{lottie-BoxmSqiv.js → lottie-DadbWVpc.js} +1 -1
  154. package/dist/assets/notifications-DuPGt4pQ.js +62 -0
  155. package/dist/assets/{open-window-CocULKZD.js → open-window-CrkLeex9.js} +1 -1
  156. package/dist/assets/overview-Y5W0VfGN.js +12 -0
  157. package/dist/assets/{page-header-DHrt0NLM.js → page-header-CSU48K3Q.js} +1 -1
  158. package/dist/assets/{permission-DC5jJJsJ.js → permission-BNHM2xAP.js} +1 -1
  159. package/dist/assets/{preferences-CeJNU9ax.js → preferences-Ccc7r_v8.js} +1 -1
  160. package/dist/assets/pt-B9DRiZEN.js +1 -0
  161. package/dist/assets/publish-resource-BfHdYGQt.js +1 -0
  162. package/dist/assets/react-Z_lC3NCb.js +56 -0
  163. package/dist/assets/{redux-BxhlcuLd.js → redux-Nz09j_eP.js} +1 -1
  164. package/dist/assets/resource-dialog-TfZOe9lD.js +57 -0
  165. package/dist/assets/ru-CUxGgO8D.js +1 -0
  166. package/dist/assets/sdk-DtesNhKW.js +1 -0
  167. package/dist/assets/{selector-Bgt80Coe.js → selector-Bbx9AGcC.js} +3 -3
  168. package/dist/assets/session-CPBKqm92.js +1 -0
  169. package/dist/assets/{setup-DQJXHOhw.js → setup-ClQU62xP.js} +3 -3
  170. package/dist/assets/{shorten-label-Cykg6Lz7.js → shorten-label-BlugIeNc.js} +1 -1
  171. package/dist/assets/{slicedToArray-BZ87qXGO.js → slicedToArray-BDmAXaQb.js} +2 -2
  172. package/dist/assets/{spaces-fGVCv7ID.js → spaces-0FuTU5il.js} +1 -1
  173. package/dist/assets/{start-DHS9hXkS.js → start-BF5svAaM.js} +2 -2
  174. package/dist/assets/{step-actions-O0ph47PU.js → step-actions-RI-mCX0p.js} +1 -1
  175. package/dist/assets/{studio-DVDs4sAk.js → studio-Bjf7gAq8.js} +1 -1
  176. package/dist/assets/{switch-control-PRHugKgV.js → switch-control-C1_R7-zR.js} +1 -1
  177. package/dist/assets/th-D6abaOt7.js +1 -0
  178. package/dist/assets/{toUpper-BfLoBzn-.js → toUpper-uyyCk01r.js} +1 -1
  179. package/dist/assets/{transfer-NH0JDMM6.js → transfer-DkniK5Ag.js} +2 -2
  180. package/dist/assets/{uniqBy-5dSXPjpT.js → uniqBy-nqPJ5tkT.js} +1 -1
  181. package/dist/assets/unsubscribe-BAK1nb4o.js +1 -0
  182. package/dist/assets/{url-join-slhKS0RS.js → url-join-xP4FWyyN.js} +1 -1
  183. package/dist/assets/use-blocklet-info-for-connect-did-spaces-ChbGnu2B.js +1 -0
  184. package/dist/assets/{use-mobile-D7_VFCeM.js → use-mobile-BOCpywmu.js} +1 -1
  185. package/dist/assets/{useAsync-xzt4qFZd.js → useAsync-D7PX5RWx.js} +1 -1
  186. package/dist/assets/{useFormControl-DzLIycge.js → useFormControl-B5XnXwzO.js} +1 -1
  187. package/dist/assets/{useLocalStorage-C42lOP94.js → useLocalStorage-t8zs4VAz.js} +1 -1
  188. package/dist/assets/{useSetState-Cg2fSW48.js → useSetState-Br77TPgt.js} +1 -1
  189. package/dist/assets/useSlot-CeeEaDXE.js +1 -0
  190. package/dist/assets/useSlotProps-CSBBXTuv.js +1 -0
  191. package/dist/assets/useThemeProps-Bp8oreMA.js +1 -0
  192. package/dist/assets/{user-center-BPr1Hwe7.js → user-center-CvySLBqs.js} +1 -1
  193. package/dist/assets/user-sessions-B1MeydkJ.js +1 -0
  194. package/dist/assets/{util-DEsBTM-7.js → util-BWib46eW.js} +1 -1
  195. package/dist/assets/vi-BsX5AAJJ.js +1 -0
  196. package/dist/assets/wrap-locale-WOY0-059.js +1 -0
  197. package/dist/assets/{zh-DMGrvlv0.js → zh-CIqkKG4c.js} +1 -1
  198. package/dist/assets/zh-tw-D7VeUoit.js +1 -0
  199. package/dist/index.html +1 -1
  200. package/dist/service-worker.js +1 -1
  201. package/package.json +37 -37
  202. package/dist/assets/Alert-bNqYhcqn.js +0 -1
  203. package/dist/assets/Avatar-BOUPLUwk.js +0 -1
  204. package/dist/assets/CloseOutlined-D-KrmlLZ.js +0 -1
  205. package/dist/assets/FilterList-CxPULTD0.js +0 -26
  206. package/dist/assets/FormControl-DS4KaFHq.js +0 -1
  207. package/dist/assets/FormGroup-C3fjarrl.js +0 -1
  208. package/dist/assets/InputAdornment-DobS7Kox.js +0 -1
  209. package/dist/assets/LoadingButton-Dlsz1Ms3.js +0 -1
  210. package/dist/assets/PlayArrow-aNY7jbBC.js +0 -1
  211. package/dist/assets/Select-D9POEHyN.js +0 -2
  212. package/dist/assets/Slider-DwSRUy4d.js +0 -1
  213. package/dist/assets/access-control-DOWWWYql.js +0 -13
  214. package/dist/assets/add-component-core-DDx1WDjh.js +0 -952
  215. package/dist/assets/add-resource-CBt30k1E.js +0 -1
  216. package/dist/assets/api-CkjkeCdA.js +0 -1
  217. package/dist/assets/ar-DAUz5_Ej.js +0 -1
  218. package/dist/assets/audit-logs-CfrqWHnt.js +0 -58
  219. package/dist/assets/blocklet-storage-DHTHeqHC.js +0 -1
  220. package/dist/assets/confirm-BUGn-2W8.js +0 -7
  221. package/dist/assets/dashboard--jZHvPJB.js +0 -165
  222. package/dist/assets/de-JXmbvsP-.js +0 -1
  223. package/dist/assets/domain-C7z_PdCP.js +0 -9
  224. package/dist/assets/es-D_uIRKnu.js +0 -1
  225. package/dist/assets/exchange-passport-bFf5UOyl.js +0 -1
  226. package/dist/assets/format-error-HsQXURX_.js +0 -2
  227. package/dist/assets/fr-BocLckhV.js +0 -1
  228. package/dist/assets/fuel-BTmuGQUQ.js +0 -32
  229. package/dist/assets/hi-Bn38t0nX.js +0 -1
  230. package/dist/assets/id-DuC9mOr4.js +0 -1
  231. package/dist/assets/index-B0pqmro3.js +0 -1
  232. package/dist/assets/index-Bo6_cvnJ.js +0 -4
  233. package/dist/assets/index-C8pZezDf.js +0 -11
  234. package/dist/assets/index-C97B1afx.js +0 -288
  235. package/dist/assets/index-CM5JeGjL.js +0 -54
  236. package/dist/assets/index-DATcoDW2.js +0 -222
  237. package/dist/assets/index-DhM5yf8I.js +0 -1
  238. package/dist/assets/index-DuTXpR60.js +0 -1
  239. package/dist/assets/index-DzOteYvH.js +0 -1
  240. package/dist/assets/index-IcQQOgM-.js +0 -1290
  241. package/dist/assets/index-UfxSCCrt.js +0 -16
  242. package/dist/assets/index-lx_CUTL7.js +0 -262
  243. package/dist/assets/index.esm-ChzwWoAD.js +0 -1
  244. package/dist/assets/info-outline-rounded-DSoVZkGR.js +0 -1
  245. package/dist/assets/invite-DuTRLxo9.js +0 -10
  246. package/dist/assets/issue-passport-BlE3WUbc.js +0 -1
  247. package/dist/assets/ja-B2J7-ZGM.js +0 -1
  248. package/dist/assets/ko-TAMb2jXz.js +0 -1
  249. package/dist/assets/localization-SCjgzakh.js +0 -1
  250. package/dist/assets/logo-uploader-CmT8ckaw.js +0 -122
  251. package/dist/assets/notifications-W8YDjym1.js +0 -62
  252. package/dist/assets/overview-DFBre46m.js +0 -12
  253. package/dist/assets/pt-DAmg1w9n.js +0 -1
  254. package/dist/assets/publish-resource-Bv1oefVi.js +0 -1
  255. package/dist/assets/react-Bq9Lc-LH.js +0 -379
  256. package/dist/assets/resource-dialog-DFiUROrY.js +0 -57
  257. package/dist/assets/ru-BqJl8PYs.js +0 -1
  258. package/dist/assets/session-CxUjHNzI.js +0 -1
  259. package/dist/assets/th-CGcwcZWK.js +0 -1
  260. package/dist/assets/unsubscribe-DHLJvqL7.js +0 -1
  261. package/dist/assets/use-blocklet-info-for-connect-did-spaces-CGcx0VhM.js +0 -1
  262. package/dist/assets/useSlot-D6gCQKPz.js +0 -1
  263. package/dist/assets/vi-lYszmNr_.js +0 -1
  264. package/dist/assets/wrap-locale-HDcgra7k.js +0 -1
  265. package/dist/assets/zh-tw-BkGc-T4k.js +0 -1
package/api/index.js CHANGED
@@ -16,7 +16,13 @@ const {
16
16
  EVENTS,
17
17
  MAX_UPLOAD_FILE_SIZE,
18
18
  } = require('@abtnode/constant');
19
- const { BlockletEvents, BlockletInternalEvents, TeamEvents, BLOCKLET_TENANT_MODES } = require('@blocklet/constant');
19
+ const {
20
+ BlockletEvents,
21
+ BlockletInternalEvents,
22
+ TeamEvents,
23
+ BLOCKLET_TENANT_MODES,
24
+ RESOURCE_PATTERN,
25
+ } = require('@blocklet/constant');
20
26
  const { getAppOgCacheDir } = require('@abtnode/util/lib/blocklet');
21
27
  const normalizePathPrefix = require('@abtnode/util/lib/normalize-path-prefix');
22
28
  const createInvite = require('@abtnode/auth/lib/invitation');
@@ -29,7 +35,7 @@ const { getAccessLogStream } = require('./libs/logger');
29
35
  require('./libs/fetch');
30
36
  const cache = require('./cache');
31
37
  const { ensureProxyUrl } = require('./util');
32
- const { isProduction, isE2E } = require('./libs/env');
38
+ const { isProduction, isE2E, isFeDev } = require('./libs/env');
33
39
  const states = require('./state/index');
34
40
 
35
41
  const { init: initNotification } = require('./services/notification');
@@ -52,6 +58,7 @@ const createConnectSessionRoutes = require('./routes/connect/session');
52
58
  const createDnsResolver = require('./routes/dns-resolver');
53
59
  const createOpenAPIRoutes = require('./routes/openapi');
54
60
  const createOpenComponentRoutes = require('./routes/opencomponent');
61
+ const createOpenEmbedRoutes = require('./routes/openembed');
55
62
  const checkRunning = require('./middlewares/check-running');
56
63
  const { checkMemberPermission, checkGuestPermission } = require('./middlewares/check-permission');
57
64
  const checkBlocklet = require('./middlewares/check-blocklet');
@@ -285,6 +292,7 @@ module.exports = function createServer(node, serverOptions = {}) {
285
292
  // openapi & opencomponent
286
293
  createOpenAPIRoutes.init(server, node, options);
287
294
  createOpenComponentRoutes.init(server, node, options);
295
+ createOpenEmbedRoutes.init(server, node, options);
288
296
 
289
297
  // API: auth
290
298
  createOAuthRoutes.init(server, node, options);
@@ -343,8 +351,16 @@ module.exports = function createServer(node, serverOptions = {}) {
343
351
  });
344
352
 
345
353
  // Web Page
346
- server.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/**`, (req, res) => {
347
- res.sendWebPage();
354
+ server.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/**`, (req, res, next) => {
355
+ if (isFeDev) {
356
+ return res.sendWebPage();
357
+ }
358
+
359
+ if (!RESOURCE_PATTERN.test(req.path) && req.accepts('html')) {
360
+ return res.sendWebPage();
361
+ }
362
+
363
+ return next();
348
364
  });
349
365
 
350
366
  server.use(checkBlocklet);
@@ -48,6 +48,7 @@ const {
48
48
  } = require('@blocklet/meta/lib/util');
49
49
  const { getSourceAppPid, getLoginProvider } = require('@blocklet/sdk/lib/util/login');
50
50
  const { getDidSpacesInfoByClaims, silentAuthorizationInConnect } = require('@abtnode/auth/lib/util/spaces');
51
+ const getRequestIP = require('@abtnode/util/lib/get-request-ip');
51
52
 
52
53
  const uniq = require('lodash/uniq');
53
54
  const semver = require('semver');
@@ -520,7 +521,7 @@ module.exports = {
520
521
  locale,
521
522
  passport,
522
523
  sourceAppPid,
523
- lastLoginIp: request.get('x-real-aip') || '',
524
+ lastLoginIp: getRequestIP(request),
524
525
  connectedAccount: [connectAccount, connectedNft],
525
526
  ...pick(profile, ['fullName', 'email', 'avatar', 'url']),
526
527
  },
@@ -550,7 +551,7 @@ module.exports = {
550
551
  locale,
551
552
  passport,
552
553
  sourceAppPid,
553
- lastLoginIp: request.get('x-real-ip') || '',
554
+ lastLoginIp: getRequestIP(request),
554
555
  connectedAccount: [connectAccount, connectedNft],
555
556
  },
556
557
  });
@@ -570,7 +571,7 @@ module.exports = {
570
571
  node
571
572
  );
572
573
  }
573
- const lastLoginIp = request.get('x-real-ip');
574
+ const lastLoginIp = getRequestIP(request);
574
575
  const walletDeviceMessageToken = request.get('wallet-device-message-token');
575
576
  const walletDeviceId = request.get('wallet-device-id');
576
577
  const ua = request.get('user-agent');
@@ -1184,7 +1185,7 @@ module.exports = {
1184
1185
  did: oauthUser.did,
1185
1186
  pk: oauthUser.pk,
1186
1187
  ...mergeProfile,
1187
- lastLoginIp: request.get('x-real-ap') || '',
1188
+ lastLoginIp: getRequestIP(request),
1188
1189
  connectedAccounts: [connectedAccount],
1189
1190
  passports: mergePassport,
1190
1191
  },
package/api/libs/env.js CHANGED
@@ -1,7 +1,9 @@
1
1
  const isProduction = process.env.NODE_ENV === 'production';
2
2
  const isE2E = process.env.NODE_ENV === 'e2e';
3
+ const isFeDev = !!process.env.ABT_NODE_SERVICE_FE_PORT;
3
4
 
4
5
  module.exports = {
5
6
  isProduction,
6
7
  isE2E,
8
+ isFeDev,
7
9
  };
@@ -10,6 +10,7 @@ const { joinURL } = require('ufo');
10
10
  const cors = require('cors');
11
11
  const { LOGIN_PROVIDER } = require('@blocklet/constant');
12
12
  const { getAvatarByUrl, extractUserAvatar } = require('@abtnode/util/lib/user');
13
+ const getRequestIP = require('@abtnode/util/lib/get-request-ip');
13
14
  const { getApplicationInfo } = require('@abtnode/auth/lib/auth');
14
15
  const pick = require('lodash/pick');
15
16
  const defaults = require('lodash/defaults');
@@ -560,7 +561,7 @@ module.exports = {
560
561
  });
561
562
 
562
563
  const user = pick(currentUser, ['did', 'pk', 'fullName', 'locale']);
563
- user.lastLoginIp = req.get('x-real-ip') || '';
564
+ user.lastLoginIp = getRequestIP(req);
564
565
 
565
566
  if (currentUser.email) {
566
567
  user.email = currentUser.email;
@@ -14,6 +14,7 @@ const { joinURL } = require('ufo');
14
14
  const { getWalletDid, getConnectedAccounts, getSourceProvider } = require('@blocklet/meta/lib/did-utils');
15
15
  const formatContext = require('@abtnode/util/lib/format-context');
16
16
  const createTranslator = require('@abtnode/util/lib/translate');
17
+ const getRequestIP = require('@abtnode/util/lib/get-request-ip');
17
18
  const { LOGIN_PROVIDER } = require('@blocklet/constant');
18
19
  const { withHttps, withTrailingSlash } = require('ufo');
19
20
 
@@ -186,7 +187,7 @@ async function login(req, node, options) {
186
187
  const { dataDir } = await getApplicationInfo({ node, nodeInfo, teamDid });
187
188
  const [invitedUserOnly] = await isInvitedUserOnly(config, node, teamDid);
188
189
 
189
- const lastLoginIp = req.get('x-real-ip') || '';
190
+ const lastLoginIp = getRequestIP(req);
190
191
  let passport = { name: 'Guest', role: 'guest' };
191
192
  let currentUser = await federatedUtil.getUserWithinFederated(
192
193
  { sourceAppPid, teamDid, userDid, userPk },
@@ -481,7 +482,7 @@ async function invite(req, node, options) {
481
482
  });
482
483
  }
483
484
  }
484
- const lastLoginIp = req.get('x-real-ip');
485
+ const lastLoginIp = getRequestIP(req);
485
486
  const ua = req.get('user-agent');
486
487
  const walletDeviceMessageToken = req.get('wallet-device-message-token');
487
488
  const walletDeviceId = req.get('wallet-device-id');
@@ -0,0 +1,164 @@
1
+ const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
2
+ const { BLOCKLET_OPENEMBED_PREFIX } = require('@blocklet/constant');
3
+ const pMap = require('p-map');
4
+ const YAML = require('yaml');
5
+ const { joinURL, withQuery } = require('ufo');
6
+ const { fromAppDid } = require('@arcblock/did-ext');
7
+ const { types } = require('@ocap/mcrypto');
8
+ const { hasStartEngine } = require('@blocklet/meta/lib/util');
9
+
10
+ const { api } = require('../libs/api');
11
+
12
+ async function getComponentOpenEmbedData(component, { generateDid }) {
13
+ const port = component?.ports?.BLOCKLET_PORT || component?.environmentObj?.BLOCKLET_PORT;
14
+ // NOTICE: 此处更倾向于使用本地地址,这也能达到更快的速度
15
+ const url = joinURL(`http://127.0.0.1:${port}`, BLOCKLET_OPENEMBED_PREFIX);
16
+ try {
17
+ // eslint-disable-next-line prefer-const
18
+ let { data: result, headers } = await api.get(url);
19
+ if (!headers?.['x-blocklet-openembed']) {
20
+ return null;
21
+ }
22
+
23
+ try {
24
+ if (typeof result === 'string') {
25
+ result = JSON.parse(result);
26
+ }
27
+ } catch (err) {
28
+ console.error('openembed.json parse error', err);
29
+ return null;
30
+ }
31
+
32
+ const { mountPoint } = component;
33
+ const { title, description, did } = component?.meta || {};
34
+
35
+ // // 将当前的分组到 component 相关的 tag 中
36
+ result.tags = [{ name: title, description }];
37
+
38
+ const mergedPrefixEmbeds = {};
39
+ Object.keys(result.embeds).forEach((pathname) => {
40
+ const mergedPathname = joinURL(mountPoint, pathname);
41
+ const pathItem = result.embeds[pathname];
42
+ pathItem.tags = [title];
43
+ const itemWallet = generateDid(JSON.stringify(['openembed', did, pathname]));
44
+ pathItem['x-meta'] = {
45
+ id: itemWallet.address,
46
+ did,
47
+ path: pathname,
48
+ };
49
+ mergedPrefixEmbeds[mergedPathname] = pathItem;
50
+ });
51
+ result.embeds = mergedPrefixEmbeds;
52
+ return result;
53
+ } catch (err) {
54
+ console.error('openembed.json fetch error', err);
55
+ return null;
56
+ }
57
+ }
58
+
59
+ async function mergeOpenEmbed(dataList, { blocklet, node }) {
60
+ const { title, description, version } = blocklet.meta || {};
61
+ const filteredDataList = dataList.filter(Boolean);
62
+ const embeds = {};
63
+ const tags = [];
64
+ const owner = blocklet?.settings?.owner;
65
+ let contact;
66
+ if (owner?.did) {
67
+ try {
68
+ const user = await node.getUser({ teamDid: blocklet.meta.did, user: { did: owner.did } });
69
+ if (user) {
70
+ contact = {
71
+ email: user.email,
72
+ name: user.fullName,
73
+ url: withQuery(joinURL(WELLKNOWN_SERVICE_PATH_PREFIX, 'user'), {
74
+ did: owner.did,
75
+ }),
76
+ };
77
+ }
78
+ } catch {
79
+ console.error('Failed to get owner info');
80
+ }
81
+ }
82
+ filteredDataList.forEach((x) => {
83
+ tags.push(...x.tags);
84
+ Object.keys(x.embeds).forEach((pathItem) => {
85
+ const embedItem = x.embeds[pathItem];
86
+ if (embedItem) {
87
+ embeds[pathItem] = embedItem;
88
+ }
89
+ });
90
+ });
91
+ return {
92
+ openembed: '0.1.0',
93
+ info: {
94
+ title,
95
+ description,
96
+ contact,
97
+ version,
98
+ },
99
+ tags,
100
+ embeds,
101
+ };
102
+ }
103
+
104
+ async function generateOpenEmbedData({ blocklet, did, generateDid, node }) {
105
+ const blockletCompontList = blocklet?.children || [];
106
+ const appUrl = blocklet?.environmentObj?.BLOCKLET_APP_URL;
107
+ const healthCheckUrl = joinURL(appUrl, '.well-known/service/health');
108
+ const { data: healthCheckData } = await api.get(healthCheckUrl);
109
+ const runningCompontList = blockletCompontList.filter((x) => {
110
+ const status = healthCheckData.components?.[x.meta.did];
111
+ return hasStartEngine(x?.meta) && status?.running === true;
112
+ });
113
+ // 单个 component
114
+ if (did) {
115
+ const findComponent = runningCompontList.find((component) => component?.meta?.did === did);
116
+ if (findComponent) {
117
+ const result = getComponentOpenEmbedData(findComponent, { baseUrl: appUrl, generateDid });
118
+ return result;
119
+ }
120
+ return null;
121
+ }
122
+ // 多个 component 组合
123
+ const componentListData = await pMap(
124
+ runningCompontList,
125
+ (x) => getComponentOpenEmbedData(x, { baseUrl: appUrl, generateDid }),
126
+ {
127
+ concurrency: 3,
128
+ }
129
+ );
130
+ const result = await mergeOpenEmbed(componentListData, { blocklet, node });
131
+ return result;
132
+ }
133
+
134
+ module.exports = {
135
+ // eslint-disable-next-line no-unused-vars
136
+ init(app, node, options) {
137
+ app.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/openembed.yaml`, async (req, res) => {
138
+ const { did } = req.query;
139
+ const blocklet = await req.getBlocklet({ useCache: false });
140
+ const { permanentWallet } = await req.getBlockletInfo();
141
+ const rootSk = permanentWallet.secretKey;
142
+ function generateDid(didPath) {
143
+ return fromAppDid(didPath, rootSk, types.RoleType.ROLE_ASSET);
144
+ }
145
+ const data = await generateOpenEmbedData({ blocklet, did, generateDid, node });
146
+ const ymlData = YAML.stringify(data);
147
+ res.setHeader('Content-Disposition', 'attachment; filename="openembed.yml"');
148
+ res.status(200).send(ymlData);
149
+ });
150
+
151
+ app.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/openembed.json`, async (req, res) => {
152
+ const { did } = req.query;
153
+ const blocklet = await req.getBlocklet({ useCache: false });
154
+ const { permanentWallet } = await req.getBlockletInfo();
155
+ const rootSk = permanentWallet.secretKey;
156
+ function generateDid(didPath) {
157
+ return fromAppDid(didPath, rootSk, types.RoleType.ROLE_ASSET);
158
+ }
159
+
160
+ const data = await generateOpenEmbedData({ blocklet, did, generateDid, node });
161
+ res.status(200).json(data);
162
+ });
163
+ },
164
+ };
@@ -8,6 +8,7 @@ const sortBy = require('lodash/sortBy');
8
8
  const omit = require('lodash/omit');
9
9
  const pLimit = require('p-limit');
10
10
  const { getSourceProvider } = require('@blocklet/meta/lib/did-utils');
11
+ const getRequestIP = require('@abtnode/util/lib/get-request-ip');
11
12
 
12
13
  const logger = require('../libs/logger')('blocklet-services:user-session');
13
14
  const ensureBlocklet = require('../middlewares/ensure-blocklet');
@@ -132,7 +133,7 @@ module.exports = {
132
133
 
133
134
  const memberSite = federated.sites.find((item) => item.appPid === appPid);
134
135
  const postUser = pick(user, ['did', 'pk', 'fullName', 'locale']);
135
- postUser.lastLoginAt = req.get('x-real-ip') || '';
136
+ postUser.lastLoginAt = getRequestIP(req);
136
137
 
137
138
  if (user.email) {
138
139
  postUser.email = user.email;
@@ -194,7 +195,7 @@ module.exports = {
194
195
  );
195
196
  }
196
197
 
197
- const lastLoginIp = req.get('x-real-ip');
198
+ const lastLoginIp = getRequestIP(req);
198
199
  const ua = req.get('user-agent');
199
200
  const walletDeviceMessageToken = req.get('wallet-device-message-token');
200
201
  const walletDeviceId = req.get('wallet-device-id');
@@ -15,6 +15,7 @@ const { verify, decode } = require('@arcblock/jwt');
15
15
  const { getWallet } = require('@blocklet/meta/lib/did-utils');
16
16
  const { Joi } = require('@arcblock/validator');
17
17
  const { parse } = require('@abtnode/core/lib/util/ua');
18
+ const getRequestIP = require('@abtnode/util/lib/get-request-ip');
18
19
 
19
20
  const { isInvitedUserOnly, createTokenFn, getDidConnectVersion } = require('../util');
20
21
  const initJwt = require('../libs/jwt');
@@ -155,7 +156,7 @@ async function loginWallet(
155
156
  profile = await composeProfileData({ avatar, email, fullName }, { node, req, teamDid, isCreate: true });
156
157
  }
157
158
 
158
- const lastLoginIp = req.get('x-real-ip');
159
+ const lastLoginIp = getRequestIP(req);
159
160
  const loginParams = {
160
161
  teamDid,
161
162
  user: {
@@ -217,7 +218,7 @@ async function loginOAuth(
217
218
  profile = await composeProfileData({ avatar, email, fullName }, { node, req, teamDid, isCreate: true });
218
219
  }
219
220
 
220
- const lastLoginIp = req.get('x-real-ip');
221
+ const lastLoginIp = getRequestIP(req);
221
222
 
222
223
  const loginParams = {
223
224
  teamDid,
@@ -304,7 +305,7 @@ async function login(req, node, options) {
304
305
  },
305
306
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
306
307
  );
307
- const lastLoginIp = req.get('x-real-ip');
308
+ const lastLoginIp = getRequestIP(req);
308
309
  const ua = req.get('user-agent');
309
310
  const walletDeviceMessageToken = req.get('wallet-device-message-token');
310
311
  const walletDeviceId = req.get('wallet-device-id');
@@ -491,7 +492,7 @@ module.exports = {
491
492
  passport = { name: 'Guest', role: 'guest' };
492
493
  }
493
494
 
494
- const lastLoginIp = req.get('x-real-ip');
495
+ const lastLoginIp = getRequestIP(req);
495
496
  const loginedUser = await node.loginUser({
496
497
  teamDid,
497
498
  user: {
@@ -10,6 +10,7 @@ const {
10
10
  const { getSourceAppPid } = require('@blocklet/sdk/lib/util/login');
11
11
  const { NODE_SERVICES, WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
12
12
  const { LOGIN_PROVIDER } = require('@blocklet/constant');
13
+ const getRequestIP = require('@abtnode/util/lib/get-request-ip');
13
14
 
14
15
  const { createTokenFn, getDidConnectVersion } = require('../../../util');
15
16
  const { getUserWithinFederated } = require('../../../util/federated');
@@ -101,7 +102,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
101
102
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
102
103
  );
103
104
 
104
- const lastLoginIp = req.get('x-real-ip');
105
+ const lastLoginIp = getRequestIP(req);
105
106
  const ua = req.get('user-agent');
106
107
  const walletDeviceMessageToken = req.get('wallet-device-message-token');
107
108
  const walletDeviceId = req.get('wallet-device-id');
@@ -8,6 +8,7 @@ const {
8
8
  const { getSourceAppPid } = require('@blocklet/sdk/lib/util/login');
9
9
  const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
10
10
  const { LOGIN_PROVIDER } = require('@blocklet/constant');
11
+ const getRequestIP = require('@abtnode/util/lib/get-request-ip');
11
12
 
12
13
  const { createTokenFn, getDidConnectVersion } = require('../../../util');
13
14
 
@@ -44,7 +45,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
44
45
  const statusEndpointBaseUrl = joinURL(baseUrl, WELLKNOWN_SERVICE_PATH_PREFIX);
45
46
  const endpoint = baseUrl;
46
47
  const walletOS = req.context?.didwallet?.os;
47
- const lastLoginIp = req.get('x-real-ip');
48
+ const lastLoginIp = getRequestIP(req);
48
49
  const ua = req.get('user-agent');
49
50
  const walletDeviceMessageToken = req.get('wallet-device-message-token');
50
51
  const walletDeviceId = req.get('wallet-device-id');
@@ -15,6 +15,7 @@ const {
15
15
  getRoleFromLocalPassport,
16
16
  } = require('@abtnode/auth/lib/passport');
17
17
  const getBlockletWallet = require('@blocklet/meta/lib/wallet');
18
+ const getRequestIP = require('@abtnode/util/lib/get-request-ip');
18
19
  const { getBlockletChainInfo, isInProgress } = require('@blocklet/meta/lib/util');
19
20
  const { ROLES } = require('@abtnode/constant');
20
21
  const { LOGIN_PROVIDER } = require('@blocklet/constant');
@@ -249,7 +250,7 @@ module.exports = function createRoutes(node, _, createSessionToken) {
249
250
  teamDid: appPid,
250
251
  user: {
251
252
  did: user.did,
252
- lastLoginIp: get(req, 'headers[x-real-ip]') || '',
253
+ lastLoginIp: getRequestIP(req),
253
254
  passports: [passport],
254
255
  connectedAccounts: [
255
256
  {
@@ -281,7 +282,7 @@ module.exports = function createRoutes(node, _, createSessionToken) {
281
282
  pk: userPk,
282
283
  locale,
283
284
  passport,
284
- lastLoginIp: get(req, 'headers[x-real-ip]') || '',
285
+ lastLoginIp: getRequestIP(req),
285
286
  connectedAccount: {
286
287
  provider: LOGIN_PROVIDER.WALLET,
287
288
  did: userDid,
@@ -5,6 +5,7 @@ const { extractUserAvatar } = require('@abtnode/util/lib/user');
5
5
  const formatContext = require('@abtnode/util/lib/format-context');
6
6
  const verifySignature = require('@abtnode/auth/lib/util/verify-signature');
7
7
  const { LOGIN_PROVIDER } = require('@blocklet/constant');
8
+ const getRequestIP = require('@abtnode/util/lib/get-request-ip');
8
9
 
9
10
  const logger = require('../../../libs/logger')('setup');
10
11
 
@@ -67,7 +68,7 @@ module.exports = function createRoutes(node, _authenticator, createSessionToken)
67
68
  pk: userPk,
68
69
  approved: true,
69
70
  lastLoginAt: new Date().toISOString(),
70
- lastLoginIp: get(req, 'headers[x-real-ip]') || '',
71
+ lastLoginIp: getRequestIP(req),
71
72
  extra: {
72
73
  baseUrl,
73
74
  },
@@ -87,7 +88,7 @@ module.exports = function createRoutes(node, _authenticator, createSessionToken)
87
88
  did: userDid,
88
89
  pk: userPk,
89
90
  locale,
90
- lastLoginIp: get(req, 'headers[x-real-ip]') || '',
91
+ lastLoginIp: getRequestIP(req),
91
92
  extra: {
92
93
  baseUrl,
93
94
  },
@@ -11,6 +11,7 @@ const {
11
11
  PASSPORT_STATUS,
12
12
  } = require('@abtnode/constant');
13
13
  const { LOGIN_PROVIDER } = require('@blocklet/constant');
14
+ const getRequestIP = require('@abtnode/util/lib/get-request-ip');
14
15
 
15
16
  const isUrl = require('is-url');
16
17
  const { PREFIXES } = require('../../util/constants');
@@ -214,7 +215,7 @@ module.exports = {
214
215
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
215
216
  );
216
217
  const ua = req.get('user-agent');
217
- const lastLoginIp = req.get('x-real-ip');
218
+ const lastLoginIp = getRequestIP(req);
218
219
  const walletDeviceMessageToken = req.get('wallet-device-message-token');
219
220
  const walletDeviceId = req.get('wallet-device-id');
220
221
  const userSession = await node.upsertUserSession({
@@ -3,15 +3,14 @@ const path = require('path');
3
3
  const serveStatic = require('serve-static');
4
4
 
5
5
  const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
6
-
7
- const isFeDevelopment = process.env.ABT_NODE_SERVICE_FE_PORT;
6
+ const { isFeDev } = require('../libs/env');
8
7
 
9
8
  const distDir = path.resolve(__dirname, '../../dist');
10
9
  const devDir = path.resolve(__dirname, '../../public');
11
10
 
12
11
  const attachUtils = ({ req, res, proxy }) => {
13
12
  res.sendWebPage = () => {
14
- if (isFeDevelopment) {
13
+ if (isFeDev) {
15
14
  proxy.safeWeb(req, res, {
16
15
  target: `http://127.0.0.1:${process.env.ABT_NODE_SERVICE_FE_PORT}`,
17
16
  });
@@ -24,7 +23,7 @@ const attachUtils = ({ req, res, proxy }) => {
24
23
  };
25
24
 
26
25
  res.sendStaticFile = (file, sendOptions) => {
27
- if (isFeDevelopment) {
26
+ if (isFeDev) {
28
27
  res.sendFile(path.join(devDir, file), sendOptions);
29
28
  } else {
30
29
  res.sendFile(path.join(distDir, file), sendOptions);
@@ -38,7 +37,7 @@ const attachStaticResources = ({ app, proxy, extraResources = [] }) => {
38
37
  app.use(x.prefix, serveStatic(x.dir, { index: false, maxAge: 0 }));
39
38
  });
40
39
 
41
- if (isFeDevelopment) {
40
+ if (isFeDev) {
42
41
  app.use('/static', (req, res) => {
43
42
  proxy.safeWeb(req, res, {
44
43
  target: `http://127.0.0.1:${process.env.ABT_NODE_SERVICE_FE_PORT}/static`,
@@ -53,7 +52,7 @@ const attachStaticResources = ({ app, proxy, extraResources = [] }) => {
53
52
  };
54
53
 
55
54
  const attachDevProxy = ({ wsRouter, proxy }) => {
56
- if (isFeDevelopment) {
55
+ if (isFeDev) {
57
56
  ['/sockjs-node', '/ws'].forEach((prefix) => {
58
57
  wsRouter.use(prefix, (req, socket, head) => {
59
58
  const target = 'http://127.0.0.1:3040';
@@ -1,7 +1,6 @@
1
1
  const { joinURL } = require('ufo');
2
2
  const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
3
3
  const pick = require('lodash/pick');
4
- const get = require('lodash/get');
5
4
  const { signV2 } = require('@arcblock/jwt');
6
5
  const {
7
6
  shouldSyncFederated,
@@ -9,6 +8,7 @@ const {
9
8
  getUserAvatarUrl,
10
9
  getFederatedMaster,
11
10
  } = require('@abtnode/auth/lib/util/federated');
11
+ const getRequestIP = require('@abtnode/util/lib/get-request-ip');
12
12
 
13
13
  const { api } = require('../libs/api');
14
14
  const { getDidConnectVersion } = require('./index');
@@ -63,7 +63,7 @@ async function loginByMember({ blockletInfo, blocklet, request, user, passport }
63
63
  const walletOS = request.context.didwallet.os;
64
64
  const { permanentWallet } = blockletInfo;
65
65
  const postUser = pick(user, ['did', 'pk', 'fullName', 'locale']);
66
- postUser.lastLoginAt = get(request, 'headers[x-real-ip]') || '';
66
+ postUser.lastLoginAt = getRequestIP(request);
67
67
 
68
68
  if (user.email) {
69
69
  postUser.email = user.email;
@@ -1 +1 @@
1
- import{X as r,Y as t,j as a}from"./index-IcQQOgM-.js";var e={},u=t;Object.defineProperty(e,"__esModule",{value:!0});var d=e.default=void 0,v=u(r()),o=a;d=e.default=(0,v.default)((0,o.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z"}),"Add");export{d};
1
+ import{X as r,Y as t,j as a}from"./index-CQ5dtdkj.js";var e={},u=t;Object.defineProperty(e,"__esModule",{value:!0});var d=e.default=void 0,v=u(r()),o=a;d=e.default=(0,v.default)((0,o.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z"}),"Add");export{d};
@@ -1 +1 @@
1
- import{X as r,Y as a,j as t}from"./index-IcQQOgM-.js";var e={},o=a;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,v=o(r()),d=t;u=e.default=(0,v.default)((0,d.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-2 10h-4v4h-2v-4H7v-2h4V7h2v4h4z"}),"AddBox");export{e as A,u as d};
1
+ import{X as r,Y as a,j as t}from"./index-CQ5dtdkj.js";var e={},o=a;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,v=o(r()),d=t;u=e.default=(0,v.default)((0,d.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-2 10h-4v4h-2v-4H7v-2h4V7h2v4h4z"}),"AddBox");export{e as A,u as d};
@@ -0,0 +1 @@
1
+ import{aA as w,aB as H,ao as c,j as e,aC as d,ae as T,aD as g,c9 as m,ca as I,aG as n,r as _,aE as F,aF as U,ay as V,aI as D,aJ as Z}from"./index-CQ5dtdkj.js";import{u as M}from"./useSlot-CeeEaDXE.js";function G(t){return H("MuiAlert",t)}const J=w("MuiAlert",["root","action","icon","message","filled","colorSuccess","colorInfo","colorWarning","colorError","filledSuccess","filledInfo","filledWarning","filledError","outlined","outlinedSuccess","outlinedInfo","outlinedWarning","outlinedError","standard","standardSuccess","standardInfo","standardWarning","standardError"]),S=J,q=c(e.jsx("path",{d:"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"}),"SuccessOutlined"),K=c(e.jsx("path",{d:"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"}),"ReportProblemOutlined"),Q=c(e.jsx("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"ErrorOutline"),X=c(e.jsx("path",{d:"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z"}),"InfoOutlined"),Y=c(e.jsx("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close"),tt=["action","children","className","closeText","color","components","componentsProps","icon","iconMapping","onClose","role","severity","slotProps","slots","variant"],ot=t=>{const{variant:s,color:r,severity:o,classes:l}=t,u={root:["root",`color${g(r||o)}`,`${s}${g(r||o)}`,`${s}`],icon:["icon"],message:["message"],action:["action"]};return Z(u,G,l)},st=d(T,{name:"MuiAlert",slot:"Root",overridesResolver:(t,s)=>{const{ownerState:r}=t;return[s.root,s[r.variant],s[`${r.variant}${g(r.color||r.severity)}`]]}})(({theme:t})=>{const s=t.palette.mode==="light"?m:I,r=t.palette.mode==="light"?I:m;return n({},t.typography.body2,{backgroundColor:"transparent",display:"flex",padding:"6px 16px",variants:[...Object.entries(t.palette).filter(([,o])=>o.main&&o.light).map(([o])=>({props:{colorSeverity:o,variant:"standard"},style:{color:t.vars?t.vars.palette.Alert[`${o}Color`]:s(t.palette[o].light,.6),backgroundColor:t.vars?t.vars.palette.Alert[`${o}StandardBg`]:r(t.palette[o].light,.9),[`& .${S.icon}`]:t.vars?{color:t.vars.palette.Alert[`${o}IconColor`]}:{color:t.palette[o].main}}})),...Object.entries(t.palette).filter(([,o])=>o.main&&o.light).map(([o])=>({props:{colorSeverity:o,variant:"outlined"},style:{color:t.vars?t.vars.palette.Alert[`${o}Color`]:s(t.palette[o].light,.6),border:`1px solid ${(t.vars||t).palette[o].light}`,[`& .${S.icon}`]:t.vars?{color:t.vars.palette.Alert[`${o}IconColor`]}:{color:t.palette[o].main}}})),...Object.entries(t.palette).filter(([,o])=>o.main&&o.dark).map(([o])=>({props:{colorSeverity:o,variant:"filled"},style:n({fontWeight:t.typography.fontWeightMedium},t.vars?{color:t.vars.palette.Alert[`${o}FilledColor`],backgroundColor:t.vars.palette.Alert[`${o}FilledBg`]}:{backgroundColor:t.palette.mode==="dark"?t.palette[o].dark:t.palette[o].main,color:t.palette.getContrastText(t.palette[o].main)})}))]})}),et=d("div",{name:"MuiAlert",slot:"Icon",overridesResolver:(t,s)=>s.icon})({marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9}),rt=d("div",{name:"MuiAlert",slot:"Message",overridesResolver:(t,s)=>s.message})({padding:"8px 0",minWidth:0,overflow:"auto"}),j=d("div",{name:"MuiAlert",slot:"Action",overridesResolver:(t,s)=>s.action})({display:"flex",alignItems:"flex-start",padding:"4px 0 0 16px",marginLeft:"auto",marginRight:-8}),$={success:e.jsx(q,{fontSize:"inherit"}),warning:e.jsx(K,{fontSize:"inherit"}),error:e.jsx(Q,{fontSize:"inherit"}),info:e.jsx(X,{fontSize:"inherit"})},at=_.forwardRef(function(s,r){const o=F({props:s,name:"MuiAlert"}),{action:l,children:u,className:z,closeText:v="Close",color:f,components:C={},componentsProps:L={},icon:x,iconMapping:b=$,onClose:A,role:h="alert",severity:p="success",slotProps:P={},slots:R={},variant:O="standard"}=o,k=U(o,tt),a=n({},o,{color:f,severity:p,variant:O,colorSeverity:f||p}),i=ot(a),y={slots:n({closeButton:C.CloseButton,closeIcon:C.CloseIcon},R),slotProps:n({},L,P)},[B,E]=M("closeButton",{elementType:V,externalForwardedProps:y,ownerState:a}),[W,N]=M("closeIcon",{elementType:Y,externalForwardedProps:y,ownerState:a});return e.jsxs(st,n({role:h,elevation:0,ownerState:a,className:D(i.root,z),ref:r},k,{children:[x!==!1?e.jsx(et,{ownerState:a,className:i.icon,children:x||b[p]||$[p]}):null,e.jsx(rt,{ownerState:a,className:i.message,children:u}),l!=null?e.jsx(j,{ownerState:a,className:i.action,children:l}):null,l==null&&A?e.jsx(j,{ownerState:a,className:i.action,children:e.jsx(B,n({size:"small","aria-label":v,title:v,color:"inherit",onClick:A},E,{children:e.jsx(W,n({fontSize:"small"},N))}))}):null]}))}),it=at;export{it as A,Y as C};
@@ -1 +1 @@
1
- import{X as r,Y as t,j as a}from"./index-IcQQOgM-.js";var e={},o=t;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(r()),p=a;u=e.default=(0,i.default)((0,p.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");export{u as d};
1
+ import{X as r,Y as t,j as a}from"./index-CQ5dtdkj.js";var e={},o=t;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(r()),p=a;u=e.default=(0,i.default)((0,p.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");export{u as d};
@@ -0,0 +1 @@
1
+ import{ao as j,j as u,aB as w,aA as D,aC as m,aG as l,r as g,aE as F,aF as M,aI as N,aJ as z}from"./index-CQ5dtdkj.js";import{u as E}from"./useSlot-CeeEaDXE.js";const U=j(u.jsx("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"}),"Person");function L(a){return w("MuiAvatar",a)}D("MuiAvatar",["root","colorDefault","circular","rounded","square","img","fallback"]);const _=["alt","children","className","component","slots","slotProps","imgProps","sizes","src","srcSet","variant"],q=a=>{const{classes:o,variant:t,colorDefault:r}=a;return z({root:["root",t,r&&"colorDefault"],img:["img"],fallback:["fallback"]},L,o)},B=m("div",{name:"MuiAvatar",slot:"Root",overridesResolver:(a,o)=>{const{ownerState:t}=a;return[o.root,o[t.variant],t.colorDefault&&o.colorDefault]}})(({theme:a})=>({position:"relative",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,width:40,height:40,fontFamily:a.typography.fontFamily,fontSize:a.typography.pxToRem(20),lineHeight:1,borderRadius:"50%",overflow:"hidden",userSelect:"none",variants:[{props:{variant:"rounded"},style:{borderRadius:(a.vars||a).shape.borderRadius}},{props:{variant:"square"},style:{borderRadius:0}},{props:{colorDefault:!0},style:l({color:(a.vars||a).palette.background.default},a.vars?{backgroundColor:a.vars.palette.Avatar.defaultBg}:l({backgroundColor:a.palette.grey[400]},a.applyStyles("dark",{backgroundColor:a.palette.grey[600]})))}]})),T=m("img",{name:"MuiAvatar",slot:"Img",overridesResolver:(a,o)=>o.img})({width:"100%",height:"100%",textAlign:"center",objectFit:"cover",color:"transparent",textIndent:1e4}),G=m(U,{name:"MuiAvatar",slot:"Fallback",overridesResolver:(a,o)=>o.fallback})({width:"75%",height:"75%"});function H({crossOrigin:a,referrerPolicy:o,src:t,srcSet:r}){const[n,s]=g.useState(!1);return g.useEffect(()=>{if(!t&&!r)return;s(!1);let i=!0;const e=new Image;return e.onload=()=>{i&&s("loaded")},e.onerror=()=>{i&&s("error")},e.crossOrigin=a,e.referrerPolicy=o,e.src=t,r&&(e.srcset=r),()=>{i=!1}},[a,o,t,r]),n}const J=g.forwardRef(function(o,t){const r=F({props:o,name:"MuiAvatar"}),{alt:n,children:s,className:i,component:e="div",slots:A={},slotProps:h={},imgProps:y,sizes:k,src:p,srcSet:f,variant:P="circular"}=r,R=M(r,_);let c=null;const C=H(l({},y,{src:p,srcSet:f})),b=p||f,x=b&&C!=="error",d=l({},r,{colorDefault:!x,component:e,variant:P}),v=q(d),[I,S]=E("img",{className:v.img,elementType:T,externalForwardedProps:{slots:A,slotProps:{img:l({},y,h.img)}},additionalProps:{alt:n,src:p,srcSet:f,sizes:k},ownerState:d});return x?c=u.jsx(I,l({},S)):s||s===0?c=s:b&&n?c=n[0]:c=u.jsx(G,{ownerState:d,className:v.fallback}),u.jsx(B,l({as:e,ownerState:d,className:N(v.root,i),ref:t},R,{children:c}))}),K=J;export{K as A};
@@ -1 +1 @@
1
- import{r as g,aB as j,aC as V,aD as M,aG as n,ch as N,aK as O,aF as _,j as R,c_ as y,c$ as F,aI as H,aE as a,aJ as U}from"./index-IcQQOgM-.js";function k(t){return g.Children.toArray(t).filter(o=>g.isValidElement(o))}function D(t){return V("MuiButtonGroup",t)}const i=j("MuiButtonGroup",["root","contained","outlined","text","disableElevation","disabled","firstButton","fullWidth","vertical","grouped","groupedHorizontal","groupedVertical","groupedText","groupedTextHorizontal","groupedTextVertical","groupedTextPrimary","groupedTextSecondary","groupedOutlined","groupedOutlinedHorizontal","groupedOutlinedVertical","groupedOutlinedPrimary","groupedOutlinedSecondary","groupedContained","groupedContainedHorizontal","groupedContainedVertical","groupedContainedPrimary","groupedContainedSecondary","lastButton","middleButton"]),A=["children","className","color","component","disabled","disableElevation","disableFocusRipple","disableRipple","fullWidth","orientation","size","variant"],I=(t,o)=>{const{ownerState:r}=t;return[{[`& .${i.grouped}`]:o.grouped},{[`& .${i.grouped}`]:o[`grouped${a(r.orientation)}`]},{[`& .${i.grouped}`]:o[`grouped${a(r.variant)}`]},{[`& .${i.grouped}`]:o[`grouped${a(r.variant)}${a(r.orientation)}`]},{[`& .${i.grouped}`]:o[`grouped${a(r.variant)}${a(r.color)}`]},{[`& .${i.firstButton}`]:o.firstButton},{[`& .${i.lastButton}`]:o.lastButton},{[`& .${i.middleButton}`]:o.middleButton},o.root,o[r.variant],r.disableElevation===!0&&o.disableElevation,r.fullWidth&&o.fullWidth,r.orientation==="vertical"&&o.vertical]},J=t=>{const{classes:o,color:r,disabled:s,disableElevation:v,fullWidth:b,orientation:d,variant:l}=t,u={root:["root",l,d==="vertical"&&"vertical",b&&"fullWidth",v&&"disableElevation"],grouped:["grouped",`grouped${a(d)}`,`grouped${a(l)}`,`grouped${a(l)}${a(d)}`,`grouped${a(l)}${a(r)}`,s&&"disabled"],firstButton:["firstButton"],lastButton:["lastButton"],middleButton:["middleButton"]};return U(u,D,o)},K=M("div",{name:"MuiButtonGroup",slot:"Root",overridesResolver:I})(({theme:t,ownerState:o})=>n({display:"inline-flex",borderRadius:(t.vars||t).shape.borderRadius},o.variant==="contained"&&{boxShadow:(t.vars||t).shadows[2]},o.disableElevation&&{boxShadow:"none"},o.fullWidth&&{width:"100%"},o.orientation==="vertical"&&{flexDirection:"column"},{[`& .${i.grouped}`]:n({minWidth:40,"&:hover":n({},o.variant==="contained"&&{boxShadow:"none"})},o.variant==="contained"&&{boxShadow:"none"}),[`& .${i.firstButton},& .${i.middleButton}`]:n({},o.orientation==="horizontal"&&{borderTopRightRadius:0,borderBottomRightRadius:0},o.orientation==="vertical"&&{borderBottomRightRadius:0,borderBottomLeftRadius:0},o.variant==="text"&&o.orientation==="horizontal"&&{borderRight:t.vars?`1px solid rgba(${t.vars.palette.common.onBackgroundChannel} / 0.23)`:`1px solid ${t.palette.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"}`,[`&.${i.disabled}`]:{borderRight:`1px solid ${(t.vars||t).palette.action.disabled}`}},o.variant==="text"&&o.orientation==="vertical"&&{borderBottom:t.vars?`1px solid rgba(${t.vars.palette.common.onBackgroundChannel} / 0.23)`:`1px solid ${t.palette.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"}`,[`&.${i.disabled}`]:{borderBottom:`1px solid ${(t.vars||t).palette.action.disabled}`}},o.variant==="text"&&o.color!=="inherit"&&{borderColor:t.vars?`rgba(${t.vars.palette[o.color].mainChannel} / 0.5)`:N(t.palette[o.color].main,.5)},o.variant==="outlined"&&o.orientation==="horizontal"&&{borderRightColor:"transparent"},o.variant==="outlined"&&o.orientation==="vertical"&&{borderBottomColor:"transparent"},o.variant==="contained"&&o.orientation==="horizontal"&&{borderRight:`1px solid ${(t.vars||t).palette.grey[400]}`,[`&.${i.disabled}`]:{borderRight:`1px solid ${(t.vars||t).palette.action.disabled}`}},o.variant==="contained"&&o.orientation==="vertical"&&{borderBottom:`1px solid ${(t.vars||t).palette.grey[400]}`,[`&.${i.disabled}`]:{borderBottom:`1px solid ${(t.vars||t).palette.action.disabled}`}},o.variant==="contained"&&o.color!=="inherit"&&{borderColor:(t.vars||t).palette[o.color].dark},{"&:hover":n({},o.variant==="outlined"&&o.orientation==="horizontal"&&{borderRightColor:"currentColor"},o.variant==="outlined"&&o.orientation==="vertical"&&{borderBottomColor:"currentColor"})}),[`& .${i.lastButton},& .${i.middleButton}`]:n({},o.orientation==="horizontal"&&{borderTopLeftRadius:0,borderBottomLeftRadius:0},o.orientation==="vertical"&&{borderTopRightRadius:0,borderTopLeftRadius:0},o.variant==="outlined"&&o.orientation==="horizontal"&&{marginLeft:-1},o.variant==="outlined"&&o.orientation==="vertical"&&{marginTop:-1})})),q=g.forwardRef(function(o,r){const s=O({props:o,name:"MuiButtonGroup"}),{children:v,className:b,color:d="primary",component:l="div",disabled:u=!1,disableElevation:B=!1,disableFocusRipple:$=!1,disableRipple:f=!1,fullWidth:x=!1,orientation:E="horizontal",size:h="medium",variant:C="outlined"}=s,T=_(s,A),m=n({},s,{color:d,component:l,disabled:u,disableElevation:B,disableFocusRipple:$,disableRipple:f,fullWidth:x,orientation:E,size:h,variant:C}),e=J(m),W=g.useMemo(()=>({className:e.grouped,color:d,disabled:u,disableElevation:B,disableFocusRipple:$,disableRipple:f,fullWidth:x,size:h,variant:C}),[d,u,B,$,f,x,h,C,e.grouped]),z=k(v),P=z.length,L=c=>{const p=c===0,G=c===P-1;return p&&G?"":p?e.firstButton:G?e.lastButton:e.middleButton};return R.jsx(K,n({as:l,role:"group",className:H(e.root,b),ref:r,ownerState:m},T,{children:R.jsx(y.Provider,{value:W,children:z.map((c,p)=>R.jsx(F.Provider,{value:L(p),children:c},p))})}))}),X=q;export{X as B,k as g};
1
+ import{r as g,aA as V,aB as j,aC as M,aG as n,cg as N,aE as O,aF as y,j as R,cV as F,cW as H,aI as U,aD as a,aJ as _}from"./index-CQ5dtdkj.js";function k(t){return g.Children.toArray(t).filter(o=>g.isValidElement(o))}function D(t){return j("MuiButtonGroup",t)}const i=V("MuiButtonGroup",["root","contained","outlined","text","disableElevation","disabled","firstButton","fullWidth","vertical","grouped","groupedHorizontal","groupedVertical","groupedText","groupedTextHorizontal","groupedTextVertical","groupedTextPrimary","groupedTextSecondary","groupedOutlined","groupedOutlinedHorizontal","groupedOutlinedVertical","groupedOutlinedPrimary","groupedOutlinedSecondary","groupedContained","groupedContainedHorizontal","groupedContainedVertical","groupedContainedPrimary","groupedContainedSecondary","lastButton","middleButton"]),A=["children","className","color","component","disabled","disableElevation","disableFocusRipple","disableRipple","fullWidth","orientation","size","variant"],I=(t,o)=>{const{ownerState:r}=t;return[{[`& .${i.grouped}`]:o.grouped},{[`& .${i.grouped}`]:o[`grouped${a(r.orientation)}`]},{[`& .${i.grouped}`]:o[`grouped${a(r.variant)}`]},{[`& .${i.grouped}`]:o[`grouped${a(r.variant)}${a(r.orientation)}`]},{[`& .${i.grouped}`]:o[`grouped${a(r.variant)}${a(r.color)}`]},{[`& .${i.firstButton}`]:o.firstButton},{[`& .${i.lastButton}`]:o.lastButton},{[`& .${i.middleButton}`]:o.middleButton},o.root,o[r.variant],r.disableElevation===!0&&o.disableElevation,r.fullWidth&&o.fullWidth,r.orientation==="vertical"&&o.vertical]},J=t=>{const{classes:o,color:r,disabled:s,disableElevation:v,fullWidth:b,orientation:d,variant:l}=t,u={root:["root",l,d==="vertical"&&"vertical",b&&"fullWidth",v&&"disableElevation"],grouped:["grouped",`grouped${a(d)}`,`grouped${a(l)}`,`grouped${a(l)}${a(d)}`,`grouped${a(l)}${a(r)}`,s&&"disabled"],firstButton:["firstButton"],lastButton:["lastButton"],middleButton:["middleButton"]};return _(u,D,o)},q=M("div",{name:"MuiButtonGroup",slot:"Root",overridesResolver:I})(({theme:t,ownerState:o})=>n({display:"inline-flex",borderRadius:(t.vars||t).shape.borderRadius},o.variant==="contained"&&{boxShadow:(t.vars||t).shadows[2]},o.disableElevation&&{boxShadow:"none"},o.fullWidth&&{width:"100%"},o.orientation==="vertical"&&{flexDirection:"column"},{[`& .${i.grouped}`]:n({minWidth:40,"&:hover":n({},o.variant==="contained"&&{boxShadow:"none"})},o.variant==="contained"&&{boxShadow:"none"}),[`& .${i.firstButton},& .${i.middleButton}`]:n({},o.orientation==="horizontal"&&{borderTopRightRadius:0,borderBottomRightRadius:0},o.orientation==="vertical"&&{borderBottomRightRadius:0,borderBottomLeftRadius:0},o.variant==="text"&&o.orientation==="horizontal"&&{borderRight:t.vars?`1px solid rgba(${t.vars.palette.common.onBackgroundChannel} / 0.23)`:`1px solid ${t.palette.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"}`,[`&.${i.disabled}`]:{borderRight:`1px solid ${(t.vars||t).palette.action.disabled}`}},o.variant==="text"&&o.orientation==="vertical"&&{borderBottom:t.vars?`1px solid rgba(${t.vars.palette.common.onBackgroundChannel} / 0.23)`:`1px solid ${t.palette.mode==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"}`,[`&.${i.disabled}`]:{borderBottom:`1px solid ${(t.vars||t).palette.action.disabled}`}},o.variant==="text"&&o.color!=="inherit"&&{borderColor:t.vars?`rgba(${t.vars.palette[o.color].mainChannel} / 0.5)`:N(t.palette[o.color].main,.5)},o.variant==="outlined"&&o.orientation==="horizontal"&&{borderRightColor:"transparent"},o.variant==="outlined"&&o.orientation==="vertical"&&{borderBottomColor:"transparent"},o.variant==="contained"&&o.orientation==="horizontal"&&{borderRight:`1px solid ${(t.vars||t).palette.grey[400]}`,[`&.${i.disabled}`]:{borderRight:`1px solid ${(t.vars||t).palette.action.disabled}`}},o.variant==="contained"&&o.orientation==="vertical"&&{borderBottom:`1px solid ${(t.vars||t).palette.grey[400]}`,[`&.${i.disabled}`]:{borderBottom:`1px solid ${(t.vars||t).palette.action.disabled}`}},o.variant==="contained"&&o.color!=="inherit"&&{borderColor:(t.vars||t).palette[o.color].dark},{"&:hover":n({},o.variant==="outlined"&&o.orientation==="horizontal"&&{borderRightColor:"currentColor"},o.variant==="outlined"&&o.orientation==="vertical"&&{borderBottomColor:"currentColor"})}),[`& .${i.lastButton},& .${i.middleButton}`]:n({},o.orientation==="horizontal"&&{borderTopLeftRadius:0,borderBottomLeftRadius:0},o.orientation==="vertical"&&{borderTopRightRadius:0,borderTopLeftRadius:0},o.variant==="outlined"&&o.orientation==="horizontal"&&{marginLeft:-1},o.variant==="outlined"&&o.orientation==="vertical"&&{marginTop:-1})})),K=g.forwardRef(function(o,r){const s=O({props:o,name:"MuiButtonGroup"}),{children:v,className:b,color:d="primary",component:l="div",disabled:u=!1,disableElevation:B=!1,disableFocusRipple:$=!1,disableRipple:f=!1,fullWidth:x=!1,orientation:E="horizontal",size:h="medium",variant:C="outlined"}=s,W=y(s,A),m=n({},s,{color:d,component:l,disabled:u,disableElevation:B,disableFocusRipple:$,disableRipple:f,fullWidth:x,orientation:E,size:h,variant:C}),e=J(m),T=g.useMemo(()=>({className:e.grouped,color:d,disabled:u,disableElevation:B,disableFocusRipple:$,disableRipple:f,fullWidth:x,size:h,variant:C}),[d,u,B,$,f,x,h,C,e.grouped]),z=k(v),P=z.length,L=c=>{const p=c===0,G=c===P-1;return p&&G?"":p?e.firstButton:G?e.lastButton:e.middleButton};return R.jsx(q,n({as:l,role:"group",className:U(e.root,b),ref:r,ownerState:m},W,{children:R.jsx(F.Provider,{value:T,children:z.map((c,p)=>R.jsx(H.Provider,{value:L(p),children:c},p))})}))}),X=K;export{X as B,k as g};
@@ -1 +1 @@
1
- import{X as r,Y as t,j as a}from"./index-IcQQOgM-.js";var e={},u=t;Object.defineProperty(e,"__esModule",{value:!0});var i=e.default=void 0,o=u(r()),l=a;i=e.default=(0,o.default)((0,l.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z"}),"CheckCircle");export{i as d};
1
+ import{X as r,Y as t,j as a}from"./index-CQ5dtdkj.js";var e={},u=t;Object.defineProperty(e,"__esModule",{value:!0});var i=e.default=void 0,o=u(r()),l=a;i=e.default=(0,o.default)((0,l.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z"}),"CheckCircle");export{i as d};