@abtnode/blocklet-services 1.16.32-beta-4d47ae7f → 1.16.32-beta-17be26d7

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 (300) hide show
  1. package/api/index.js +9 -8
  2. package/api/libs/auth/index.js +2 -0
  3. package/api/libs/auth/utils.js +4 -1
  4. package/api/libs/connect/session.js +86 -97
  5. package/api/libs/connect/v1.js +2 -10
  6. package/api/libs/email.js +1 -1
  7. package/api/libs/jwt.js +17 -3
  8. package/api/libs/kyc.js +213 -0
  9. package/api/routes/federated.js +37 -4
  10. package/api/routes/oauth.js +65 -7
  11. package/api/routes/openapi.js +12 -21
  12. package/api/routes/opencomponent.js +12 -19
  13. package/api/routes/openembed.js +15 -26
  14. package/api/routes/user-session.js +2 -0
  15. package/api/routes/user.js +17 -2
  16. package/api/services/analytics/index.js +21 -24
  17. package/api/services/auth/connect/invite.js +38 -24
  18. package/api/services/auth/connect/issue-kyc.js +58 -0
  19. package/api/services/auth/connect/login.js +1 -0
  20. package/api/services/auth/connect/update-kyc.js +82 -0
  21. package/api/services/auth/index.js +34 -10
  22. package/api/services/auth/passport.js +11 -14
  23. package/api/services/auth/session.js +196 -197
  24. package/api/services/kyc/index.js +92 -0
  25. package/api/services/notification/index.js +6 -16
  26. package/api/services/relay/index.js +3 -7
  27. package/api/services/studio/index.js +62 -65
  28. package/api/socket/channel/did.js +1 -0
  29. package/api/util/get-static-service-config.js +2 -10
  30. package/dist/assets/{Add-D8_0U-mi.js → Add-DPWETbuH.js} +1 -1
  31. package/dist/assets/Alert-DDr4PUmN.js +1 -0
  32. package/dist/assets/{ArrowDropDown-exkF-BIK.js → ArrowDropDown-BCZ8iqaM.js} +1 -1
  33. package/dist/assets/Avatar-Der2Q3Zi.js +1 -0
  34. package/dist/assets/{ButtonGroup-CTrZ2Hyv.js → ButtonGroup-zMm3edlK.js} +1 -1
  35. package/dist/assets/{CheckCircle-BNxyw6NJ.js → CheckCircle-BfztTFob.js} +1 -1
  36. package/dist/assets/ChevronLeft-CrTHRIqK.js +1 -0
  37. package/dist/assets/{ChevronRight-DBpo88DV.js → ChevronRight-CIt5KDbd.js} +1 -1
  38. package/dist/assets/{Close-DgxsFA7q.js → Close-CgA7Qef8.js} +1 -1
  39. package/dist/assets/{CloseOutlined-CN4iKY7n.js → CloseOutlined-OBzuC30j.js} +1 -1
  40. package/dist/assets/{Delete-BaSq9RZZ.js → Delete-DVYTl7-n.js} +1 -1
  41. package/dist/assets/{DeleteOutline-Du2BPdlg.js → DeleteOutline-DKoxIRL9.js} +1 -1
  42. package/dist/assets/DialogContentText-BnQAOkxN.js +1 -0
  43. package/dist/assets/{Done-BG-Fw8ts.js → Done-D1_3yhtX.js} +1 -1
  44. package/dist/assets/{Download-C1y29u9K.js → Download-CvngcFRX.js} +1 -1
  45. package/dist/assets/{Edit-u2-N8rQN.js → Edit-DQ3aLTS3.js} +1 -1
  46. package/dist/assets/{EditIcon-B2Y7T-CN.js → EditIcon-C5DCIJQ3.js} +1 -1
  47. package/dist/assets/{Error-B1K0WhCp.js → Error-DOhq8cCM.js} +1 -1
  48. package/dist/assets/{ExpandMore-DBQIHjkB.js → ExpandMore-BgcTT2Bb.js} +1 -1
  49. package/dist/assets/FormControl-D00yHDcj.js +1 -0
  50. package/dist/assets/FormControlLabel-BJXWJJky.js +1 -0
  51. package/dist/assets/FormGroup-CBgybl1l.js +1 -0
  52. package/dist/assets/{Google-CvB2nYH_.js → Google-Be2TlnTX.js} +1 -1
  53. package/dist/assets/{Hidden-DJwWGZh0.js → Hidden-Bg6BPxEd.js} +1 -1
  54. package/dist/assets/{InfoOutlined-BIY-Lnxg.js → InfoOutlined-BxTwuqiu.js} +1 -1
  55. package/dist/assets/{InputAdornment-VVruavKc.js → InputAdornment-BGOXKboF.js} +1 -1
  56. package/dist/assets/{InputLabel-3M9sMlBq.js → InputLabel-BaHBEVm2.js} +1 -1
  57. package/dist/assets/{LastPage-CBInTPpp.js → LastPage-DyrTuTrl.js} +1 -1
  58. package/dist/assets/{Launch-Dhq-grBI.js → Launch-CNWKbDVj.js} +1 -1
  59. package/dist/assets/{LaunchOutlined-DnkKRXxH.js → LaunchOutlined-BuQ3n0Nq.js} +1 -1
  60. package/dist/assets/{Link-Cpnh7s1v.js → Link-CiVKLn7B.js} +1 -1
  61. package/dist/assets/{ListItemText-CHjUage1.js → ListItemText-BW_owdy0.js} +1 -1
  62. package/dist/assets/{LoadingButton-C47nsxMx.js → LoadingButton-AM-IIW_5.js} +1 -1
  63. package/dist/assets/{LockIcon-CoUaWmH-.js → LockIcon-0vWjHODV.js} +1 -1
  64. package/dist/assets/{Loop-CbcENVkw.js → Loop-C8sLBH67.js} +1 -1
  65. package/dist/assets/{MoreHoriz-B4gnOmnB.js → MoreHoriz-i1hLrklo.js} +1 -1
  66. package/dist/assets/{MoreVert-CBWkVJTE.js → MoreVert-D_g6Th6c.js} +1 -1
  67. package/dist/assets/{OpenInNew-svkkbJCn.js → OpenInNew-DBNjDxil.js} +1 -1
  68. package/dist/assets/{Pagination-BBwBFjSJ.js → Pagination-DLYy7jWI.js} +2 -2
  69. package/dist/assets/{PlayArrow-D-mvqfoj.js → PlayArrow-ywjbMR8A.js} +1 -1
  70. package/dist/assets/{QuestionMarkCircle-Duxt-AlB.js → QuestionMarkCircle-UZOXHzIe.js} +1 -1
  71. package/dist/assets/{RadioGroup-C4DI71vM.js → RadioGroup-BOq5mI1A.js} +1 -1
  72. package/dist/assets/{Search-BOxcXluh.js → Search-Cm2FDsnl.js} +1 -1
  73. package/dist/assets/{Select-drnrjZt8.js → Select-_ZzhxUOz.js} +2 -2
  74. package/dist/assets/{ServerLogo-CxVp5JLf.js → ServerLogo-DeFJVAh8.js} +1 -1
  75. package/dist/assets/{Skeleton-YurB3EC5.js → Skeleton-D6pzHOGJ.js} +4 -4
  76. package/dist/assets/{Slider-BX1l_Lvj.js → Slider-ZYL8jZ1U.js} +1 -1
  77. package/dist/assets/Stack-DuNNAX-1.js +1 -0
  78. package/dist/assets/{Stepper-UV_DHoEg.js → Stepper-DJcNoyk4.js} +1 -1
  79. package/dist/assets/TextField-DvTYZ6EA.js +1 -0
  80. package/dist/assets/Toolbar-DbekG5v-.js +1 -0
  81. package/dist/assets/ViewColumn-BOqfI3PF.js +1 -0
  82. package/dist/assets/{ViewList-Bwkry3LO.js → ViewList-DloAt_wk.js} +1 -1
  83. package/dist/assets/access-control-Coh2AROp.js +13 -0
  84. package/dist/assets/{actions-5mXSkQB4.js → actions-DU4pTpmF.js} +1 -1
  85. package/dist/assets/{add-component-core-DFH5qH7x.js → add-component-core-DT8eSr6D.js} +61 -61
  86. package/dist/assets/add-resource-CSMNGPH3.js +1 -0
  87. package/dist/assets/{addon-CUxwPHa_.js → addon-DImOcoyp.js} +1 -1
  88. package/dist/assets/{analytics-B29460Yu.js → analytics-CdJi4q2Q.js} +7 -7
  89. package/dist/assets/api-DUETbHv8.js +1 -0
  90. package/dist/assets/ar-BywPGmOa.js +1 -0
  91. package/dist/assets/ar-cd9W8CrI.js +1 -0
  92. package/dist/assets/audit-logs-Bf2mKt3i.js +58 -0
  93. package/dist/assets/{button-BqgSoT0h.js → button-LdgYe-Yo.js} +1 -1
  94. package/dist/assets/{click-to-copy-CM2U6JEg.js → click-to-copy-GLcS-PQh.js} +1 -1
  95. package/dist/assets/{complete-DaiPBjLS.js → complete-d1PDQlj9.js} +1 -1
  96. package/dist/assets/component-Ny_sGfYr.js +768 -0
  97. package/dist/assets/{config-CxG4Kz4G.js → config-CFU2n19a.js} +2 -2
  98. package/dist/assets/{config-BygYwcXq.js → config-CpPqNxWJ.js} +1 -1
  99. package/dist/assets/{config-navigation-Rsc7sQGs.js → config-navigation-BQEWPLSH.js} +2 -2
  100. package/dist/assets/confirm-BdJlZzQ-.js +7 -0
  101. package/dist/assets/{connect-B87FT6ev.js → connect-BDR3XUNJ.js} +1 -1
  102. package/dist/assets/{connect-26mFy5d9.js → connect-ndruP8fv.js} +1 -1
  103. package/dist/assets/connect-to-D6gkq_5F.js +54 -0
  104. package/dist/assets/{content-layout-B7X0Mv3n.js → content-layout-9pObqqwC.js} +1 -1
  105. package/dist/assets/{dashboard-BrV_SESr.js → dashboard-Clr7sJbb.js} +4 -4
  106. package/dist/assets/de-DS4XAN75.js +1 -0
  107. package/dist/assets/{de-9vHBMa7b.js → de-qs3PjT55.js} +1 -1
  108. package/dist/assets/{did-address-BWnma-3-.js → did-address-DNmiCCjI.js} +1 -1
  109. package/dist/assets/domain-BM3Ias2K.js +9 -0
  110. package/dist/assets/{domain-list-wgNQeEgv.js → domain-list-BdKqoNlW.js} +2 -2
  111. package/dist/assets/email-03xGEqer.js +9 -0
  112. package/dist/assets/es-DXb9xB6c.js +1 -0
  113. package/dist/assets/es-XT3Dd0hc.js +1 -0
  114. package/dist/assets/{exchange-passport-BZ8Q-G3h.js → exchange-passport-BwiQ670F.js} +1 -1
  115. package/dist/assets/{fallback-C5E1lZAR.js → fallback-BLJkxLTK.js} +1 -1
  116. package/dist/assets/format-error-C43xGCjC.js +2 -0
  117. package/dist/assets/fr-C5TQA9s1.js +1 -0
  118. package/dist/assets/{fr-C5fh5fdm.js → fr-CMgZc3LR.js} +1 -1
  119. package/dist/assets/{fuel-XF4sXoDA.js → fuel-C7otG6Kf.js} +1 -1
  120. package/dist/assets/{fullpage-BOyZgu9A.js → fullpage-C4Et_NyD.js} +1 -1
  121. package/dist/assets/hi-C_Mli2FO.js +1 -0
  122. package/dist/assets/hi-Ch52Lky6.js +1 -0
  123. package/dist/assets/{home-Dajv5NTd.js → home-CZCCRVbe.js} +1 -1
  124. package/dist/assets/id-BkncNzMh.js +1 -0
  125. package/dist/assets/id-_x67Rh2B.js +1 -0
  126. package/dist/assets/{iframe-CmugPIuF.js → iframe-CPKiwkND.js} +1 -1
  127. package/dist/assets/index-AgTn3eU4.js +68 -0
  128. package/dist/assets/{index-DHNVLiI8.js → index-B3ThwVSS.js} +1 -1
  129. package/dist/assets/{index-BRJLJSjg.js → index-BCMjvLku.js} +2 -2
  130. package/dist/assets/{index-CrurRDDC.js → index-BK9kuqs5.js} +1 -1
  131. package/dist/assets/index-BRnCFYx3.js +262 -0
  132. package/dist/assets/{index-Dcphtm5y.js → index-BWVDn9BP.js} +1 -1
  133. package/dist/assets/{index-DfZjT3WA.js → index-BaC4EhQh.js} +212 -121
  134. package/dist/assets/index-Bc3FFnWG.js +126 -0
  135. package/dist/assets/{index-BtQK2llU.js → index-BlvJrvQX.js} +2 -2
  136. package/dist/assets/{index-CTFB4nHV.js → index-BrFlqDrV.js} +3 -3
  137. package/dist/assets/{index-BrcKk7u6.js → index-BzY4clAs.js} +1 -1
  138. package/dist/assets/{index-CFmNTsQh.js → index-CD6yQnY4.js} +1 -1
  139. package/dist/assets/{index-BvZ1bsPZ.js → index-CFpdZL6w.js} +5 -5
  140. package/dist/assets/{index-UKHQeYs5.js → index-CH2n2mOS.js} +1 -1
  141. package/dist/assets/index-CT70Tuv9.js +329 -0
  142. package/dist/assets/{index-BisUmH-h.js → index-CTil0VJz.js} +1 -1
  143. package/dist/assets/{index-C0qYe9TG.js → index-CWjTgh2V.js} +1 -1
  144. package/dist/assets/{index-D5lkEFWM.js → index-CbBjirNE.js} +1 -1
  145. package/dist/assets/{index-Ca5y7O4k.js → index-Cfnr_7cH.js} +12 -12
  146. package/dist/assets/{index-DPyKucXe.js → index-ChWrF7R7.js} +1 -1
  147. package/dist/assets/{index-Cixwi4BX.js → index-CzxDEhmG.js} +1 -1
  148. package/dist/assets/index-D9e3uQkW.js +4 -0
  149. package/dist/assets/{index-TlMkikTm.js → index-DPXmNWqb.js} +1 -1
  150. package/dist/assets/{index-hv_yaUi2.js → index-DR40cJFL.js} +4 -4
  151. package/dist/assets/{index-D0ZBFe_v.js → index-DiOkeCOc.js} +12 -12
  152. package/dist/assets/{index-DCkU-F0r.js → index-Dp6zROo4.js} +1 -1
  153. package/dist/assets/{index-p81jbN_h.js → index-Ez2y1Lea.js} +1 -1
  154. package/dist/assets/{index-C2sin8wt.js → index-TwQfcdR0.js} +1 -1
  155. package/dist/assets/{index-BK4259Qj.js → index-hkkOggLS.js} +1 -1
  156. package/dist/assets/{index-BiafpQ0u.js → index-lVfYf5Oq.js} +40 -40
  157. package/dist/assets/{index-BtQOF6n3.js → index-s95vTNww.js} +1 -1
  158. package/dist/assets/{index.es-w-0rtBPs.js → index.es-CkGqU4MQ.js} +1 -1
  159. package/dist/assets/index.esm-8yCk0S5h.js +1 -0
  160. package/dist/assets/{invitation-KAlNPJe6.js → invitation-DAGy7I2M.js} +1 -1
  161. package/dist/assets/{invite-C_RF0Rm2.js → invite-06pBNgrg.js} +1 -1
  162. package/dist/assets/{issue-passport-DM7CKvcB.js → issue-passport-CbtgsLgQ.js} +1 -1
  163. package/dist/assets/item-B0XIEv1j.js +1 -0
  164. package/dist/assets/ja-BemsOTjE.js +1 -0
  165. package/dist/assets/ja-j9_7sWtG.js +1 -0
  166. package/dist/assets/{jss-plugin-props-sort.esm-BzROyw1n.js → jss-plugin-props-sort.esm-D4wv_NcC.js} +1 -1
  167. package/dist/assets/ko-BcDVaiV3.js +1 -0
  168. package/dist/assets/ko-CqkhhVdi.js +1 -0
  169. package/dist/assets/{launch-result-message-CIfX9Pg1.js → launch-result-message-BGkFHBr0.js} +1 -1
  170. package/dist/assets/{layout-Bb2LZLxa.js → layout-C1fJ0PwQ.js} +2 -2
  171. package/dist/assets/{list-header-BDhQIu5L.js → list-header-D2TsmXsU.js} +1 -1
  172. package/dist/assets/localization-IrbI0TJr.js +1 -0
  173. package/dist/assets/{log-o0iKO5dx.js → log-Bx1CDJfR.js} +1 -1
  174. package/dist/assets/{login-B9UvusG-.js → login-Ci8kprd2.js} +1 -1
  175. package/dist/assets/{login-oauth-callback-cZ3oa4a_.js → login-oauth-callback-OcVe-Pko.js} +1 -1
  176. package/dist/assets/logo-uploader-DPtvNrwp.js +122 -0
  177. package/dist/assets/lost-passport-DQYzD5oM.js +168 -0
  178. package/dist/assets/{lottie-DsjCdNh-.js → lottie-Dtcij0yx.js} +1 -1
  179. package/dist/assets/notifications-u_yxMKF9.js +62 -0
  180. package/dist/assets/{open-window-B5RcEIrm.js → open-window-Ca8SnnJR.js} +1 -1
  181. package/dist/assets/overview-hyt-Fv0L.js +12 -0
  182. package/dist/assets/{page-header-BvuGyCDw.js → page-header-DZBo2jY4.js} +1 -1
  183. package/dist/assets/{permission-BuA9Zt4q.js → permission-DDD12SuE.js} +1 -1
  184. package/dist/assets/{preferences-BzcjmMUC.js → preferences-BzxjYd2D.js} +1 -1
  185. package/dist/assets/pt-DZmF_qcN.js +1 -0
  186. package/dist/assets/pt-NjuvVfFo.js +1 -0
  187. package/dist/assets/publish-resource-BL3ifBGp.js +1 -0
  188. package/dist/assets/react-iXxw1Yhu.js +57 -0
  189. package/dist/assets/{redux-BDPBPXLM.js → redux-Bma4eNss.js} +1 -1
  190. package/dist/assets/resource-dialog-DhmviK8K.js +57 -0
  191. package/dist/assets/ru-BFNdjdAO.js +1 -0
  192. package/dist/assets/ru-BsFEd75u.js +1 -0
  193. package/dist/assets/sdk-B37oViy1.js +1 -0
  194. package/dist/assets/{selector-DktPytoX.js → selector-B8IAFODK.js} +3 -3
  195. package/dist/assets/session-D3mS3Gz5.js +1 -0
  196. package/dist/assets/setup-TXTEwwLA.js +19 -0
  197. package/dist/assets/{shorten-label-3owfLRzi.js → shorten-label-DWH-tsmz.js} +1 -1
  198. package/dist/assets/{slicedToArray-CQG0j1sa.js → slicedToArray-Doa8i3Sy.js} +2 -2
  199. package/dist/assets/{spaces-DDj9ynWl.js → spaces-DPfrZKXe.js} +1 -1
  200. package/dist/assets/{start-DCKDZC67.js → start-DwEZv43D.js} +1 -1
  201. package/dist/assets/{step-actions-CoJc8417.js → step-actions-B1vsf_QO.js} +1 -1
  202. package/dist/assets/{studio-B_0UB40R.js → studio-CTK5QQPt.js} +1 -1
  203. package/dist/assets/{switch-control-Bun_5Zkk.js → switch-control-DJhTvGtn.js} +1 -1
  204. package/dist/assets/th-B61cOYck.js +1 -0
  205. package/dist/assets/th-C7TEM40B.js +1 -0
  206. package/dist/assets/{toUpper-Bf_TQKK7.js → toUpper-Bff1Q0mA.js} +1 -1
  207. package/dist/assets/{transfer-C7Cxyvnx.js → transfer-IRhzEeuE.js} +1 -1
  208. package/dist/assets/{uniqBy-BqI7ffNX.js → uniqBy-DIeGY4K_.js} +1 -1
  209. package/dist/assets/{unsubscribe-B-iaO9gM.js → unsubscribe-CwygyLJZ.js} +1 -1
  210. package/dist/assets/{url-join-BoNn2Qh7.js → url-join-D5TK65dM.js} +1 -1
  211. package/dist/assets/{use-blocklet-info-for-connect-did-spaces-CfK0RcTD.js → use-blocklet-info-for-connect-did-spaces-DaNxIRBj.js} +1 -1
  212. package/dist/assets/{use-mobile-C19pzcVe.js → use-mobile-BA_cO1yG.js} +1 -1
  213. package/dist/assets/{useAsync-Ca_M5Jhn.js → useAsync-Bl2lmnoD.js} +1 -1
  214. package/dist/assets/{useFormControl-Cs3LGXJe.js → useFormControl-CAWQrhew.js} +1 -1
  215. package/dist/assets/{useLocalStorage-3-rj5S6B.js → useLocalStorage-DkK4fk62.js} +1 -1
  216. package/dist/assets/{useSetState-BTR-3GfC.js → useSetState-OuMAH4bG.js} +1 -1
  217. package/dist/assets/useSlot-nO86v-Bn.js +1 -0
  218. package/dist/assets/{useSlotProps-CCXsWmb3.js → useSlotProps-B8lkbwkT.js} +1 -1
  219. package/dist/assets/{useThemeProps-BjkDmxHT.js → useThemeProps-CIT7yB5m.js} +1 -1
  220. package/dist/assets/user-center-BEb-hcxI.js +1 -0
  221. package/dist/assets/user-sessions-D_s7CT2k.js +1 -0
  222. package/dist/assets/{util-DBNeRhAr.js → util-znUxW1sG.js} +1 -1
  223. package/dist/assets/vi-B884zOLu.js +1 -0
  224. package/dist/assets/vi-C1X-AoyG.js +1 -0
  225. package/dist/assets/wrap-locale-BjkpLOO0.js +1 -0
  226. package/dist/assets/zh-DjEnl7LY.js +1 -0
  227. package/dist/assets/zh-kNAPjCk5.js +2 -0
  228. package/dist/assets/zh-tw-Bn1Pkz9A.js +1 -0
  229. package/dist/assets/zh-tw-DSZuinRu.js +1 -0
  230. package/dist/index.html +1 -1
  231. package/dist/service-worker.js +1 -1
  232. package/package.json +26 -25
  233. package/api/util/constants.js +0 -10
  234. package/dist/assets/AddBox-BpwHbwbG.js +0 -1
  235. package/dist/assets/Alert-Dlco0B3L.js +0 -1
  236. package/dist/assets/Avatar-B1SFM1MR.js +0 -1
  237. package/dist/assets/FilterList-DumRQ8ls.js +0 -26
  238. package/dist/assets/FormControl-CeSJJZgZ.js +0 -1
  239. package/dist/assets/FormControlLabel-CpH9LTeH.js +0 -1
  240. package/dist/assets/FormGroup-B0Xdxgiy.js +0 -1
  241. package/dist/assets/TextField-D_Jtjg13.js +0 -1
  242. package/dist/assets/Toolbar-D7_EWzTj.js +0 -1
  243. package/dist/assets/access-control-YUBGali8.js +0 -13
  244. package/dist/assets/add-resource-BJ9u32jP.js +0 -1
  245. package/dist/assets/api-DbvHYaVa.js +0 -1
  246. package/dist/assets/ar-BSACs5SN.js +0 -1
  247. package/dist/assets/ar-lTVP4T3d.js +0 -1
  248. package/dist/assets/audit-logs-C1AOwGce.js +0 -58
  249. package/dist/assets/component-npmbPVSM.js +0 -464
  250. package/dist/assets/confirm-3b8GTIgU.js +0 -7
  251. package/dist/assets/connect-to-B0Td9yUD.js +0 -54
  252. package/dist/assets/de-B3TxaybY.js +0 -1
  253. package/dist/assets/domain-CkCbH8sj.js +0 -9
  254. package/dist/assets/es-BY0KMFme.js +0 -1
  255. package/dist/assets/es-Bk9E9Gbf.js +0 -1
  256. package/dist/assets/format-error-BVI56bJg.js +0 -2
  257. package/dist/assets/fr-BiVZLeXU.js +0 -1
  258. package/dist/assets/hi-B_LrkIOS.js +0 -1
  259. package/dist/assets/hi-HiGtGtUs.js +0 -1
  260. package/dist/assets/id-CirrqXGd.js +0 -1
  261. package/dist/assets/id-jBXPD1he.js +0 -1
  262. package/dist/assets/index-2xySyQ5i.js +0 -262
  263. package/dist/assets/index-B0NvcpjT.js +0 -1
  264. package/dist/assets/index-B7Un-ZeO.js +0 -68
  265. package/dist/assets/index-BP53WpUP.js +0 -4
  266. package/dist/assets/index-C1Puqx4M.js +0 -304
  267. package/dist/assets/index-CLQi4cVY.js +0 -126
  268. package/dist/assets/index.esm-CptJw3C8.js +0 -1
  269. package/dist/assets/item-DIkrlQMP.js +0 -1
  270. package/dist/assets/ja-BOs7uPqI.js +0 -1
  271. package/dist/assets/ja-DKiHQ6DE.js +0 -1
  272. package/dist/assets/ko-BBYyf1yM.js +0 -1
  273. package/dist/assets/ko-D1G4UvNg.js +0 -1
  274. package/dist/assets/localization-V0WRiXKC.js +0 -1
  275. package/dist/assets/logo-uploader-D4yqBa_O.js +0 -122
  276. package/dist/assets/lost-passport-soFqeEb7.js +0 -168
  277. package/dist/assets/notifications-B9Mu8Fxb.js +0 -62
  278. package/dist/assets/overview-CFbnZdV0.js +0 -12
  279. package/dist/assets/pt-CcFeyma6.js +0 -1
  280. package/dist/assets/pt-DI2MIkSi.js +0 -1
  281. package/dist/assets/publish-resource-DwhFCZXw.js +0 -1
  282. package/dist/assets/react-CwUjkFxY.js +0 -57
  283. package/dist/assets/resource-dialog-BBzXGjTp.js +0 -57
  284. package/dist/assets/ru-B2L3CRQ4.js +0 -1
  285. package/dist/assets/ru-OymXgLUI.js +0 -1
  286. package/dist/assets/sdk-CI7TJ_xu.js +0 -1
  287. package/dist/assets/session-Cw-dytKR.js +0 -1
  288. package/dist/assets/setup-DRfpHXNv.js +0 -19
  289. package/dist/assets/th-CZbdb5PZ.js +0 -1
  290. package/dist/assets/th-CfNBHHtU.js +0 -1
  291. package/dist/assets/useSlot-C1f6ZTLt.js +0 -1
  292. package/dist/assets/user-center-BN2FDsvO.js +0 -1
  293. package/dist/assets/user-sessions-BIEmgTqD.js +0 -1
  294. package/dist/assets/vi-DbzhnofW.js +0 -1
  295. package/dist/assets/vi-DhjQx2Z1.js +0 -1
  296. package/dist/assets/wrap-locale-D7L9anic.js +0 -1
  297. package/dist/assets/zh-FO0C29Rb.js +0 -1
  298. package/dist/assets/zh-jGK5FFL0.js +0 -2
  299. package/dist/assets/zh-tw-DnmwTx49.js +0 -1
  300. package/dist/assets/zh-tw-cyWwf75a.js +0 -1
@@ -0,0 +1,213 @@
1
+ const get = require('lodash/get');
2
+ const uniq = require('lodash/uniq');
3
+ const pick = require('lodash/pick');
4
+ const semver = require('semver');
5
+ const { messages, getVCFromClaims } = require('@abtnode/auth/lib/auth');
6
+ const { getPassportClaimUrl, getKycAcquireUrl } = require('@abtnode/auth/lib/passport');
7
+
8
+ const { getTrustedIssuers } = require('../util/blocklet-utils');
9
+ const { PASSPORT_VC_TYPES } = require('./auth/utils');
10
+
11
+ const getPassportVc = async ({ blocklet, claims, challenge, locale, sourceAppPid, types = PASSPORT_VC_TYPES }) => {
12
+ const trustedIssuers = await getTrustedIssuers(blocklet, { sourceAppPid });
13
+ const { vc } = await getVCFromClaims({
14
+ claims,
15
+ challenge,
16
+ trustedIssuers,
17
+ types,
18
+ locale,
19
+ });
20
+
21
+ return vc;
22
+ };
23
+
24
+ /**
25
+ * @description 兼容老的 DID Wallet 版本,不是所有的 DID Wallet 都可以出示 profile url
26
+ * @param {import('../../types').DidWallet} didWallet
27
+ * @return {boolean}
28
+ */
29
+ function isProfileUrlSupported(didWallet) {
30
+ if (!didWallet) {
31
+ return false;
32
+ }
33
+
34
+ const { os, version } = didWallet;
35
+ const webCanUse = os === 'web' && semver.satisfies(version, '>= 4.13.0');
36
+ const iosCanUse = os === 'ios' && semver.satisfies(version, '>= 5.6.0');
37
+ const androidCanUse = os === 'android' && semver.satisfies(version, '>= 5.6.0');
38
+
39
+ return webCanUse || iosCanUse || androidCanUse;
40
+ }
41
+
42
+ /**
43
+ * @description
44
+ * @param {object} settings
45
+ * @param {import('../../types').DidWallet} didWallet
46
+ * @return {string[]}
47
+ */
48
+ function getProfileItems(settings, didWallet) {
49
+ const profileItems = ['fullName', 'avatar'];
50
+ if (settings?.email?.enabled) {
51
+ profileItems.push('email');
52
+ }
53
+ if (settings?.phone?.enabled) {
54
+ profileItems.push('phone');
55
+ }
56
+
57
+ if (isProfileUrlSupported(didWallet)) {
58
+ profileItems.push('url');
59
+ }
60
+
61
+ return uniq(profileItems);
62
+ }
63
+
64
+ const isEmailKycRequired = (blocklet) => {
65
+ return blocklet.settings.session?.email?.enabled && blocklet.settings.session?.email?.requireVerified;
66
+ };
67
+
68
+ const isEmailUniqueRequired = (blocklet) => {
69
+ return blocklet.settings.session?.email?.enabled && blocklet.settings.session?.email?.requireUnique;
70
+ };
71
+
72
+ const isOAuthKycTrusted = (blocklet) => {
73
+ return blocklet.settings.session?.email?.enabled && blocklet.settings.session?.email?.trustOauthProviders;
74
+ };
75
+
76
+ const isPhoneKycRequired = (blocklet) => {
77
+ return blocklet.settings.session?.phone?.enabled && blocklet.settings.session?.phone?.requireVerified;
78
+ };
79
+
80
+ const isPhoneUniqueRequired = (blocklet) => {
81
+ return blocklet.settings.session?.phone?.enabled && blocklet.settings.session?.phone?.requireUnique;
82
+ };
83
+
84
+ // github 的 email 是 verified, 其他 oauth 的 email 通过 email_verified 判断
85
+ const isOAuthEmailVerified = (blocklet, info) => {
86
+ return isOAuthKycTrusted(blocklet) && (!!info?.email_verified || info?.provider === 'github');
87
+ };
88
+
89
+ const isProfileClaimRequired = (blocklet, user) => {
90
+ if (isEmailKycRequired(blocklet) && !user.email) {
91
+ return true;
92
+ }
93
+ if (isPhoneKycRequired(blocklet) && !user.phone) {
94
+ return true;
95
+ }
96
+ return false;
97
+ };
98
+
99
+ function getKycClaims(blocklet, user, locale, baseUrl, trustedIssuers) {
100
+ const claims = {};
101
+ if (isEmailKycRequired(blocklet) && !user?.emailVerified) {
102
+ const emailKycClaim = {
103
+ type: 'verifiableCredential',
104
+ description: messages.requestEmailKyc[locale],
105
+ item: ['VerifiedEmailCredential'],
106
+ trustedIssuers,
107
+ optional: false,
108
+ acquireUrl: getKycAcquireUrl(baseUrl, '', 'email'),
109
+ claimUrl: getPassportClaimUrl(baseUrl, '', 'email'),
110
+ };
111
+ claims.emailKyc = ['verifiableCredential', emailKycClaim];
112
+ }
113
+
114
+ if (isPhoneKycRequired(blocklet) && !user?.phoneVerified) {
115
+ const phoneKycClaim = {
116
+ type: 'verifiableCredential',
117
+ description: messages.requestPhoneKyc[locale],
118
+ item: ['VerifiedPhoneCredential'],
119
+ trustedIssuers,
120
+ optional: false,
121
+ acquireUrl: getKycAcquireUrl(baseUrl, '', 'phone'),
122
+ claimUrl: getPassportClaimUrl(baseUrl, '', 'phone'),
123
+ };
124
+ claims.phoneKyc = ['verifiableCredential', phoneKycClaim];
125
+ }
126
+
127
+ return claims;
128
+ }
129
+
130
+ async function verifyKycClaims({ node, blocklet, teamDid, claims, challenge, locale, sourceAppPid, user }) {
131
+ const profile = claims.find((claim) => claim.type === 'profile');
132
+ const kycUpdates = pick(user || {}, ['emailVerified', 'phoneVerified']);
133
+
134
+ // verify email kyc
135
+ if (isEmailKycRequired(blocklet) && !user?.emailVerified) {
136
+ const emailKyc = await getPassportVc({
137
+ blocklet,
138
+ claims,
139
+ challenge,
140
+ locale,
141
+ sourceAppPid,
142
+ types: ['VerifiedEmailCredential'],
143
+ });
144
+ if (!emailKyc) {
145
+ throw new Error(messages.missingEmailKyc[locale]);
146
+ }
147
+ const email = get(emailKyc, 'credentialSubject.kyc.subject');
148
+ if (user && user.email && user.email !== email) {
149
+ throw new Error(messages.emailMismatch[locale]);
150
+ }
151
+ if (!user && isEmailUniqueRequired(blocklet)) {
152
+ const isEmailUsed = await node.isEmailUsed({ teamDid, email, verified: true });
153
+ if (isEmailUsed) {
154
+ throw new Error(messages.emailAlreadyUsed[locale]);
155
+ }
156
+ }
157
+
158
+ kycUpdates.emailVerified = true;
159
+ } else if (!user && profile?.email && isEmailUniqueRequired(blocklet)) {
160
+ const isEmailUsed = await node.isEmailUsed({ teamDid, email: profile.email, verified: false });
161
+ if (isEmailUsed) {
162
+ throw new Error(messages.emailAlreadyUsed[locale]);
163
+ }
164
+ }
165
+
166
+ // verify phone kyc
167
+ if (isPhoneKycRequired(blocklet) && !user?.phoneVerified) {
168
+ const phoneKyc = await getPassportVc({
169
+ blocklet,
170
+ claims,
171
+ challenge,
172
+ locale,
173
+ sourceAppPid,
174
+ types: ['VerifiedPhoneCredential'],
175
+ });
176
+ if (!phoneKyc) {
177
+ throw new Error(messages.missingPhoneKyc[locale]);
178
+ }
179
+ const phone = get(phoneKyc, 'credentialSubject.kyc.subject');
180
+ if (user && user.phone && user.phone !== phone) {
181
+ throw new Error(messages.phoneMismatch[locale]);
182
+ }
183
+ if (!user && isPhoneUniqueRequired(blocklet)) {
184
+ const isPhoneUsed = await node.isPhoneUsed({ teamDid, phone, verified: true });
185
+ if (isPhoneUsed) {
186
+ throw new Error(messages.phoneAlreadyUsed[locale]);
187
+ }
188
+ }
189
+ kycUpdates.phoneVerified = true;
190
+ } else if (!user && profile?.phone && isPhoneUniqueRequired(blocklet)) {
191
+ const isPhoneUsed = await node.isPhoneUsed({ teamDid, phone: profile.phone, verified: false });
192
+ if (isPhoneUsed) {
193
+ throw new Error(messages.phoneAlreadyUsed[locale]);
194
+ }
195
+ }
196
+
197
+ return kycUpdates;
198
+ }
199
+
200
+ module.exports = {
201
+ isEmailKycRequired,
202
+ isOAuthKycTrusted,
203
+ isPhoneKycRequired,
204
+ isEmailUniqueRequired,
205
+ isPhoneUniqueRequired,
206
+ isProfileUrlSupported,
207
+ isProfileClaimRequired,
208
+ isOAuthEmailVerified,
209
+ getProfileItems,
210
+ getKycClaims,
211
+ verifyKycClaims,
212
+ getPassportVc,
213
+ };
@@ -37,7 +37,18 @@ function getAuditLogActorByFederatedSite(blocklet) {
37
37
  }
38
38
 
39
39
  async function syncSwitchProfile(user, { node, teamDid, dataDir }) {
40
- const tempUser = pick(user, ['did', 'pk', 'avatar', 'fullName', 'email', 'phone', 'url']);
40
+ const tempUser = pick(user, [
41
+ 'did',
42
+ 'pk',
43
+ 'avatar',
44
+ 'fullName',
45
+ 'email',
46
+ 'phone',
47
+ 'url',
48
+ 'inviter',
49
+ 'emailVerified',
50
+ 'phoneVerified',
51
+ ]);
41
52
 
42
53
  // 处理 avatar
43
54
  if (tempUser.avatar) {
@@ -58,7 +69,6 @@ async function syncSwitchProfile(user, { node, teamDid, dataDir }) {
58
69
  /**
59
70
  * 处理站点群中某一站点推送的同步 connectAccount 的请求
60
71
  */
61
-
62
72
  async function syncConnectAccount(user, { node, teamDid, dataDir, blocklet }) {
63
73
  const tempUser = pick(user, [
64
74
  'did',
@@ -71,7 +81,8 @@ async function syncConnectAccount(user, { node, teamDid, dataDir, blocklet }) {
71
81
  'connectedAccount',
72
82
  'sourceAppPid',
73
83
  'inviter',
74
- 'generation',
84
+ 'emailVerified',
85
+ 'phoneVerified',
75
86
  ]);
76
87
  const masterSite = getFederatedMaster(blocklet);
77
88
 
@@ -142,7 +153,23 @@ async function pullUserAccount(user, { node, teamDid, blocklet }) {
142
153
 
143
154
  if (!currentUser) return null;
144
155
 
145
- const syncUser = pick(currentUser, ['did', 'pk', 'fullName', 'email', 'phone', 'url', 'remark', 'sourceProvider', 'locale', 'approved', 'extra', 'sourceAppPid']); // prettier-ignore
156
+ const syncUser = pick(currentUser, [
157
+ 'did',
158
+ 'pk',
159
+ 'fullName',
160
+ 'email',
161
+ 'phone',
162
+ 'url',
163
+ 'remark',
164
+ 'sourceProvider',
165
+ 'locale',
166
+ 'approved',
167
+ 'extra',
168
+ 'sourceAppPid',
169
+ 'inviter',
170
+ 'emailVerified',
171
+ 'phoneVerified',
172
+ ]);
146
173
  syncUser.avatar = getUserAvatarUrl(currentUser.avatar, blocklet);
147
174
  syncUser.email = syncUser.email || '';
148
175
  syncUser.connectedAccounts = currentUser.connectedAccounts.map((x) => {
@@ -532,6 +559,8 @@ module.exports = {
532
559
  fullName: doc.fullName,
533
560
  provider: provider || LOGIN_PROVIDER.WALLET,
534
561
  walletOS,
562
+ emailVerified: doc.emailVerified,
563
+ phoneVerified: doc.phoneVerified,
535
564
  },
536
565
  {
537
566
  ...sessionConfig,
@@ -611,6 +640,8 @@ module.exports = {
611
640
  // 这里是 member 登录了 master 的账号,对于 master 来说,其实还是使用 wallet 来登录的
612
641
  provider: LOGIN_PROVIDER.WALLET,
613
642
  walletOS,
643
+ emailVerified: newUser.emailVerified,
644
+ phoneVerified: newUser.phoneVerified,
614
645
  },
615
646
  {
616
647
  ...sessionConfig,
@@ -701,6 +732,8 @@ module.exports = {
701
732
  provider: provider || LOGIN_PROVIDER.WALLET,
702
733
  walletOS,
703
734
  sourceAppPid: verifySite.appPid,
735
+ emailVerified: newUser.emailVerified,
736
+ phoneVerified: newUser.phoneVerified,
704
737
  },
705
738
  {
706
739
  ...sessionConfig,
@@ -31,6 +31,7 @@ const { sendToUser } = require('../libs/notification');
31
31
  const { isInvitedUserOnly, createTokenFn, getDidConnectVersion } = require('../util');
32
32
  const { ApiError } = require('../util/error');
33
33
  const federatedUtil = require('../util/federated');
34
+ const { isOAuthEmailVerified, isEmailUniqueRequired, isEmailKycRequired } = require('../libs/kyc');
34
35
 
35
36
  const PREFIX = WELLKNOWN_SERVICE_PATH_PREFIX;
36
37
 
@@ -49,6 +50,7 @@ const translations = {
49
50
  cantUnbindWalletAccount: '不能解绑钱包账户',
50
51
  cantUnbindSourceProvider: '不能解绑源账户',
51
52
  accountNotExist: '第三方登录的账户不存在,无法完成解绑操作',
53
+ emailUniqueRequired: '当前邮箱已经绑定过另一个账户,请更换邮箱',
52
54
  },
53
55
  en: {
54
56
  needInviteToLogin: 'You need to be invited to login in to this app',
@@ -62,6 +64,7 @@ const translations = {
62
64
  cantUnbindWalletAccount: 'Cannot unbind wallet provider',
63
65
  cantUnbindSourceProvider: 'Cannot unbind source provider',
64
66
  accountNotExist: "Connected account is not exist, can't finish disconnect",
67
+ emailUniqueRequired: 'Current email is already bind to another account, please change email',
65
68
  },
66
69
  };
67
70
 
@@ -83,6 +86,11 @@ async function getOAuthUserInfo({ blocklet, provider, token, idToken, code, appP
83
86
  const oauthToken = await authClient.getToken({ code });
84
87
  oauthInfo = await authClient.getProfile(oauthToken);
85
88
  }
89
+
90
+ if (oauthInfo) {
91
+ oauthInfo.provider = provider;
92
+ }
93
+
86
94
  return oauthInfo;
87
95
  }
88
96
 
@@ -244,11 +252,23 @@ async function login(req, node, options) {
244
252
  throw new ApiError(403, t('needInviteToLogin', locale));
245
253
  }
246
254
 
255
+ if (isEmailUniqueRequired(blocklet)) {
256
+ const used = await node.isEmailUsed({
257
+ teamDid,
258
+ email: oauthInfo.email,
259
+ verified: isEmailKycRequired(blocklet),
260
+ });
261
+ if (used) {
262
+ throw new ApiError(400, t('emailUniqueRequired', locale));
263
+ }
264
+ }
265
+
247
266
  passportForLog = { name: 'Guest', role: 'guest' };
248
267
  profile = {
249
268
  fullName: oauthInfo.name,
250
269
  email: oauthInfo.email,
251
270
  avatar,
271
+ emailVerified: isOAuthEmailVerified(blocklet, oauthInfo),
252
272
  };
253
273
  doc = await node.loginUser({
254
274
  teamDid,
@@ -336,7 +356,6 @@ async function login(req, node, options) {
336
356
  }
337
357
 
338
358
  const { createSessionToken } = initJwt(node, options);
339
-
340
359
  const createToken = createTokenFn(createSessionToken);
341
360
  const sessionConfig = blocklet.settings?.session || {};
342
361
  const { sessionToken, refreshToken } = createToken(
@@ -348,6 +367,8 @@ async function login(req, node, options) {
348
367
  fullName,
349
368
  provider,
350
369
  walletOS: 'web',
370
+ emailVerified: !!doc?.emailVerified,
371
+ phoneVerified: !!doc?.phoneVerified,
351
372
  },
352
373
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
353
374
  );
@@ -399,6 +420,17 @@ async function invite(req, node, options) {
399
420
  userDid = currentUser.did;
400
421
  userPk = currentUser.pk;
401
422
  } else {
423
+ if (isEmailUniqueRequired(blocklet)) {
424
+ const used = await node.isEmailUsed({
425
+ teamDid,
426
+ email: oauthInfo.email,
427
+ verified: isEmailKycRequired(blocklet),
428
+ });
429
+ if (used) {
430
+ throw new ApiError(400, t('emailUniqueRequired', locale));
431
+ }
432
+ }
433
+
402
434
  let avatar = oauthInfo.picture ? await getAvatarByUrl(oauthInfo.picture) : await getAvatarByEmail(oauthInfo.email);
403
435
  avatar = await extractUserAvatar(avatar, { dataDir });
404
436
  profile = {
@@ -406,12 +438,15 @@ async function invite(req, node, options) {
406
438
  fullName: oauthInfo.name,
407
439
  avatar: getUserAvatarUrl(baseUrl, avatar),
408
440
  };
441
+ if (profile.email === oauthInfo.email && isOAuthEmailVerified(blocklet, oauthInfo)) {
442
+ profile.emailVerified = true;
443
+ }
409
444
  }
410
445
 
411
446
  const statusEndpointBaseUrl = joinURL(baseUrl, WELLKNOWN_SERVICE_PATH_PREFIX);
412
447
  const endpoint = baseUrl;
413
448
 
414
- const { passport, response, role, inviteInfo } = await handleInvitationReceive({
449
+ const { passport, response, role, inviteInfo, user } = await handleInvitationReceive({
415
450
  node,
416
451
  req,
417
452
  endpoint,
@@ -532,13 +567,21 @@ async function invite(req, node, options) {
532
567
  }
533
568
 
534
569
  const { createSessionToken } = initJwt(node, options);
535
-
536
570
  const createToken = createTokenFn(createSessionToken);
537
571
  const sessionConfig = blocklet.settings?.session || {};
538
572
 
539
573
  const { sessionToken, refreshToken } = createToken(
540
574
  userDid,
541
- { secret, passport, role, fullName: profile.fullName, provider, walletOS: 'web' },
575
+ {
576
+ secret,
577
+ passport,
578
+ role,
579
+ fullName: profile.fullName,
580
+ provider,
581
+ walletOS: 'web',
582
+ emailVerified: !!user?.emailVerified,
583
+ phoneVerified: !!user?.phoneVerified,
584
+ },
542
585
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
543
586
  );
544
587
 
@@ -601,6 +644,10 @@ async function bind(req, node, options) {
601
644
  avatar,
602
645
  };
603
646
 
647
+ if (mergeProfile.email === oauthInfo.email && isOAuthEmailVerified(blocklet, oauthInfo)) {
648
+ mergeProfile.emailVerified = true;
649
+ }
650
+
604
651
  const currentTime = new Date().toISOString();
605
652
 
606
653
  const connectedAccount = {
@@ -775,9 +822,11 @@ module.exports = {
775
822
  'name'
776
823
  ).map((x) => {
777
824
  return {
778
- ...pick(x, ['id', 'name', 'title', 'role']),
825
+ ...pick(x, ['id', 'name', 'title', 'role', 'scope', 'role']),
779
826
  display: createPassportSvg({
780
- title: x.title,
827
+ scope: x.scope,
828
+ role: x.role,
829
+ title: x.scope === 'passport' ? x.title : x.name,
781
830
  issuer: x.issuer.name,
782
831
  issuerDid: x.issuer.id,
783
832
  issuerAvatarUrl,
@@ -850,7 +899,16 @@ module.exports = {
850
899
  const sessionConfig = blocklet.settings?.session || {};
851
900
  const { sessionToken, refreshToken } = createToken(
852
901
  userDid,
853
- { secret, passport, role: passport.role, fullName: user?.fullName, provider, walletOS: 'web' },
902
+ {
903
+ secret,
904
+ passport,
905
+ role: passport.role,
906
+ fullName: user?.fullName,
907
+ provider,
908
+ walletOS: 'web',
909
+ emailVerified: !!user?.emailVerified,
910
+ phoneVerified: !!user?.phoneVerified,
911
+ },
854
912
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
855
913
  );
856
914
 
@@ -4,8 +4,8 @@ const { BLOCKLET_OPEN_API_FILE, BLOCKLET_OPEN_API_FILE_JSON } = require('@blockl
4
4
  const pMap = require('p-map');
5
5
  const YAML = require('yaml');
6
6
  const { joinURL } = require('ufo');
7
- const { fromAppDid } = require('@arcblock/did-ext');
8
- const { types } = require('@ocap/mcrypto');
7
+ const { fromPublicKey } = require('@ocap/wallet');
8
+ const { types, Hasher } = require('@ocap/mcrypto');
9
9
 
10
10
  const { api } = require('../libs/api');
11
11
 
@@ -25,7 +25,7 @@ async function getOpenAPIJSON(appDir) {
25
25
  return null;
26
26
  }
27
27
 
28
- async function getComponentOpenAPIData(component, { generateDid }) {
28
+ async function getComponentOpenAPIData(component) {
29
29
  const { mountPoint } = component;
30
30
  const appDir = component?.env?.appDir;
31
31
  const { title, description, did } = component?.meta || {};
@@ -45,7 +45,10 @@ async function getComponentOpenAPIData(component, { generateDid }) {
45
45
  Object.keys(pathItem).forEach((method) => {
46
46
  const operation = pathItem[method];
47
47
  operation.tags = [title];
48
- const operationWallet = generateDid(JSON.stringify(['openapi', did, pathname, method]));
48
+ const walletPk = Hasher.SHA3.hash256(JSON.stringify(['openapi', did, pathname, method]));
49
+ const operationWallet = fromPublicKey(walletPk, {
50
+ role: types.RoleType.ROLE_ANY,
51
+ });
49
52
  operation['x-id'] = operationWallet.address;
50
53
  operation['x-did'] = did;
51
54
  operation['x-path'] = pathname;
@@ -87,7 +90,7 @@ function mergeOpenAPI(dataList, { blocklet }) {
87
90
  };
88
91
  }
89
92
 
90
- async function generateOpenAPIData({ blocklet, did, generateDid }) {
93
+ async function generateOpenAPIData({ blocklet, did }) {
91
94
  const blockletCompontList = blocklet?.children || [];
92
95
  const appUrl = blocklet?.environmentObj?.BLOCKLET_APP_URL;
93
96
  const healthCheckUrl = joinURL(appUrl, '.well-known/service/health');
@@ -100,15 +103,13 @@ async function generateOpenAPIData({ blocklet, did, generateDid }) {
100
103
  if (did) {
101
104
  const findComponent = runningCompontList.find((component) => component?.meta?.did === did);
102
105
  if (findComponent) {
103
- const result = getComponentOpenAPIData(findComponent, { baseUrl: appUrl, generateDid });
106
+ const result = getComponentOpenAPIData(findComponent, { baseUrl: appUrl });
104
107
  return result;
105
108
  }
106
109
  return null;
107
110
  }
108
111
  // 多个 component 组合
109
- const componentListData = await pMap(runningCompontList, (x) =>
110
- getComponentOpenAPIData(x, { baseUrl: appUrl, generateDid })
111
- );
112
+ const componentListData = await pMap(runningCompontList, (x) => getComponentOpenAPIData(x, { baseUrl: appUrl }));
112
113
  const result = mergeOpenAPI(componentListData, { blocklet });
113
114
  return result;
114
115
  }
@@ -119,12 +120,7 @@ module.exports = {
119
120
  app.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/openapi.yml`, async (req, res) => {
120
121
  const { did } = req.query;
121
122
  const blocklet = await req.getBlocklet({ useCache: false });
122
- const { permanentWallet } = await req.getBlockletInfo();
123
- const rootSk = permanentWallet.secretKey;
124
- function generateDid(didPath) {
125
- return fromAppDid(didPath, rootSk, types.RoleType.ROLE_ASSET);
126
- }
127
- const data = await generateOpenAPIData({ blocklet, did, generateDid });
123
+ const data = await generateOpenAPIData({ blocklet, did });
128
124
  const ymlData = YAML.stringify(data);
129
125
  res.setHeader('Content-Disposition', 'attachment; filename="openapi.yml"');
130
126
  res.status(200).send(ymlData);
@@ -133,12 +129,7 @@ module.exports = {
133
129
  app.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/openapi.json`, async (req, res) => {
134
130
  const { did } = req.query;
135
131
  const blocklet = await req.getBlocklet({ useCache: false });
136
- const { permanentWallet } = await req.getBlockletInfo();
137
- const rootSk = permanentWallet.secretKey;
138
- function generateDid(didPath) {
139
- return fromAppDid(didPath, rootSk, types.RoleType.ROLE_ASSET);
140
- }
141
- const data = await generateOpenAPIData({ blocklet, did, generateDid });
132
+ const data = await generateOpenAPIData({ blocklet, did });
142
133
  res.status(200).json(data);
143
134
  });
144
135
  },
@@ -4,8 +4,8 @@ const { BLOCKLET_OPEN_COMPONENT_FILE, BLOCKLET_OPEN_COMPONENT_FILE_JSON } = requ
4
4
  const pMap = require('p-map');
5
5
  const YAML = require('yaml');
6
6
  const { joinURL } = require('ufo');
7
- const { fromAppDid } = require('@arcblock/did-ext');
8
- const { types } = require('@ocap/mcrypto');
7
+ const { types, Hasher } = require('@ocap/mcrypto');
8
+ const { fromPublicKey } = require('@ocap/wallet');
9
9
 
10
10
  const { api } = require('../libs/api');
11
11
 
@@ -25,7 +25,7 @@ async function getOpenComponentJSON(appDir) {
25
25
  return null;
26
26
  }
27
27
 
28
- async function getComponentOpenComponentData(component, { generateDid }) {
28
+ async function getComponentOpenComponentData(component) {
29
29
  const { mountPoint } = component;
30
30
  const appDir = component?.env?.appDir;
31
31
  const { title, description, did } = component?.meta || {};
@@ -43,7 +43,10 @@ async function getComponentOpenComponentData(component, { generateDid }) {
43
43
  const mergedPathname = joinURL(mountPoint, pathname);
44
44
  const pathItem = jsonData.paths[pathname];
45
45
  pathItem.tags = [title];
46
- const itemWallet = generateDid(JSON.stringify(['opencomponent', did, pathname]));
46
+ const walletPk = Hasher.SHA3.hash256(JSON.stringify(['opencomponent', did, pathname]));
47
+ const itemWallet = fromPublicKey(walletPk, {
48
+ role: types.RoleType.ROLE_ANY,
49
+ });
47
50
  pathItem['x-id'] = itemWallet.address;
48
51
  pathItem['x-did'] = did;
49
52
  pathItem['x-path'] = pathname;
@@ -83,7 +86,7 @@ function mergeOpenComponent(dataList, { blocklet }) {
83
86
  };
84
87
  }
85
88
 
86
- async function generateOpenComponentData({ blocklet, did, generateDid }) {
89
+ async function generateOpenComponentData({ blocklet, did }) {
87
90
  const blockletCompontList = blocklet?.children || [];
88
91
  const appUrl = blocklet?.environmentObj?.BLOCKLET_APP_URL;
89
92
  const healthCheckUrl = joinURL(appUrl, '.well-known/service/health');
@@ -96,14 +99,14 @@ async function generateOpenComponentData({ blocklet, did, generateDid }) {
96
99
  if (did) {
97
100
  const findComponent = runningCompontList.find((component) => component?.meta?.did === did);
98
101
  if (findComponent) {
99
- const result = getComponentOpenComponentData(findComponent, { baseUrl: appUrl, generateDid });
102
+ const result = getComponentOpenComponentData(findComponent, { baseUrl: appUrl });
100
103
  return result;
101
104
  }
102
105
  return null;
103
106
  }
104
107
  // 多个 component 组合
105
108
  const componentListData = await pMap(runningCompontList, (x) =>
106
- getComponentOpenComponentData(x, { baseUrl: appUrl, generateDid })
109
+ getComponentOpenComponentData(x, { baseUrl: appUrl })
107
110
  );
108
111
  const result = mergeOpenComponent(componentListData, { blocklet });
109
112
  return result;
@@ -115,12 +118,7 @@ module.exports = {
115
118
  app.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/opencomponent.yml`, async (req, res) => {
116
119
  const { did } = req.query;
117
120
  const blocklet = await req.getBlocklet({ useCache: false });
118
- const { permanentWallet } = await req.getBlockletInfo();
119
- const rootSk = permanentWallet.secretKey;
120
- function generateDid(didPath) {
121
- return fromAppDid(didPath, rootSk, types.RoleType.ROLE_ASSET);
122
- }
123
- const data = await generateOpenComponentData({ blocklet, did, generateDid });
121
+ const data = await generateOpenComponentData({ blocklet, did });
124
122
  const ymlData = YAML.stringify(data);
125
123
  res.setHeader('Content-Disposition', 'attachment; filename="opencomponent.yml"');
126
124
  res.status(200).send(ymlData);
@@ -129,12 +127,7 @@ module.exports = {
129
127
  app.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/opencomponent.json`, async (req, res) => {
130
128
  const { did } = req.query;
131
129
  const blocklet = await req.getBlocklet({ useCache: false });
132
- const { permanentWallet } = await req.getBlockletInfo();
133
- const rootSk = permanentWallet.secretKey;
134
- function generateDid(didPath) {
135
- return fromAppDid(didPath, rootSk, types.RoleType.ROLE_ASSET);
136
- }
137
- const data = await generateOpenComponentData({ blocklet, did, generateDid });
130
+ const data = await generateOpenComponentData({ blocklet, did });
138
131
  res.status(200).json(data);
139
132
  });
140
133
  },