@abtnode/blocklet-services 1.16.45-beta-20250610-112229-2eb0face → 1.16.45-beta-20250614-101901-d1700f8d

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 (187) hide show
  1. package/api/cache.js +36 -21
  2. package/api/libs/connect/session.js +8 -275
  3. package/api/libs/kyc.js +1 -1
  4. package/api/middlewares/proxy-to-daemon.js +6 -2
  5. package/api/routes/blocklet.js +25 -5
  6. package/api/routes/dns-resolver.js +1 -1
  7. package/api/routes/env.js +2 -1
  8. package/api/routes/oauth/client.js +2 -1
  9. package/api/routes/user.js +1 -2
  10. package/api/services/auth/connect/bind-wallet.js +2 -44
  11. package/api/services/auth/connect/gen-access-key.js +1 -1
  12. package/api/services/auth/connect/invite.js +1 -1
  13. package/api/services/auth/connect/issue-passport.js +1 -1
  14. package/api/services/auth/connect/verify-destroy.js +9 -8
  15. package/api/services/auth/connect/verify-elevated.js +15 -11
  16. package/api/services/auth/passport.js +20 -7
  17. package/api/services/auth/session.js +3 -3
  18. package/api/services/oauth/client.js +1 -179
  19. package/api/services/oauth/server.js +2 -1
  20. package/api/socket/channel/did.js +2 -2
  21. package/api/util/federated.js +1 -12
  22. package/dist/assets/{AdapterDayjs-Dvf_tKNm.js → AdapterDayjs-Cnt9tqu2.js} +1 -1
  23. package/dist/assets/{ArrowDropDown-w902LDz5.js → ArrowDropDown-BMwBndHf.js} +1 -1
  24. package/dist/assets/{CheckCircle-DKLAiayP.js → CheckCircle-41Yqmlux.js} +1 -1
  25. package/dist/assets/{ChevronLeft-DoQQtCAX.js → ChevronLeft-CLsrCaxE.js} +1 -1
  26. package/dist/assets/{ChevronRight-Ch_6RLsY.js → ChevronRight-BVlAyY8t.js} +1 -1
  27. package/dist/assets/{DeleteOutline-CPVsjCvJ.js → DeleteOutline-5003D11l.js} +1 -1
  28. package/dist/assets/{Done-C5C8-4SV.js → Done-LE-14AsK.js} +1 -1
  29. package/dist/assets/{Download-DqajrKRK.js → Download-BGEarAho.js} +1 -1
  30. package/dist/assets/{Edit-D_qzRYqq.js → Edit-CrL54Zhc.js} +1 -1
  31. package/dist/assets/{Error-KxELF1Nr.js → Error-quFZHb54.js} +1 -1
  32. package/dist/assets/{ExpandLess-JVHHKQQZ.js → ExpandLess-DJGiqXwX.js} +1 -1
  33. package/dist/assets/{Google-BBqC-Muc.js → Google-woDe3URG.js} +1 -1
  34. package/dist/assets/{Home-DD-eYV7C.js → Home-C0Jy-iyL.js} +1 -1
  35. package/dist/assets/{InfoOutlined-CEh25_NY.js → InfoOutlined-3bCMdMdL.js} +1 -1
  36. package/dist/assets/{Launch-Cs8Cmdb_.js → Launch-DrVQ-_LF.js} +1 -1
  37. package/dist/assets/{LaunchOutlined-CH9e3hkq.js → LaunchOutlined-DCRD1Xd5.js} +1 -1
  38. package/dist/assets/{MoreHoriz-Cpg0a_lm.js → MoreHoriz-CCqkD-2X.js} +1 -1
  39. package/dist/assets/{PlayArrow-Hu915_DX.js → PlayArrow-b0SwYNYM.js} +1 -1
  40. package/dist/assets/{TuneOutlined-DRDP7kDe.js → TuneOutlined-CfZi6Ajz.js} +1 -1
  41. package/dist/assets/{ViewList-DN8B89Ry.js → ViewList-DHazaGfw.js} +1 -1
  42. package/dist/assets/{access-control-MsBNowAW.js → access-control-CrHHfd-3.js} +1 -1
  43. package/dist/assets/{actions-CcWHhKZq.js → actions-DP5QUAr6.js} +1 -1
  44. package/dist/assets/add-component-core-8M0C-Kp3.js +768 -0
  45. package/dist/assets/{add-resource-LwzRr27k.js → add-resource-BTg7Qs0I.js} +1 -1
  46. package/dist/assets/{addon-Dju3pjTL.js → addon-BKkiKK74.js} +1 -1
  47. package/dist/assets/{advanced-DYaxCBlN.js → advanced-BaQVvy3K.js} +2 -2
  48. package/dist/assets/api-87p2GGd0.js +1 -0
  49. package/dist/assets/{appearance-A-FJhFPq.js → appearance-CuPgS_bN.js} +1 -1
  50. package/dist/assets/{ar-D9QEDjY-.js → ar-C_PbiO-w.js} +1 -1
  51. package/dist/assets/{audit-logs-Cs45RZoE.js → audit-logs-CUC_aqut.js} +2 -2
  52. package/dist/assets/{authorize-fdrPc1Nd.js → authorize-DCQNYqJl.js} +1 -1
  53. package/dist/assets/{base-chart-DIErGYHN.js → base-chart-C2FJuVG1.js} +1 -1
  54. package/dist/assets/{base32-Do9iD28a.js → base32-CRxHrKOV.js} +1 -1
  55. package/dist/assets/{branding-CT66qulY.js → branding-Di3by3dx.js} +2 -2
  56. package/dist/assets/{branding-OfbhdEgY.js → branding-DrCX9AmH.js} +1 -1
  57. package/dist/assets/{bundle-avatar-LAkmelll.js → bundle-avatar-hjU0GiOA.js} +1 -1
  58. package/dist/assets/{button-B_vgCyye.js → button-BWISngjs.js} +1 -1
  59. package/dist/assets/{click-to-copy-BfYfYud0.js → click-to-copy-DoEzJWuJ.js} +1 -1
  60. package/dist/assets/{cloneDeep-ro06l5HL.js → cloneDeep-Jl_OPbSo.js} +1 -1
  61. package/dist/assets/{collapse-DRY-fGId.js → collapse-QPZHNi8E.js} +1 -1
  62. package/dist/assets/{complete-kFFCUlMp.js → complete-EC4tK63r.js} +1 -1
  63. package/dist/assets/{component-DkUWDmEA.js → component-D9Dwvz3W.js} +3 -3
  64. package/dist/assets/{config-WtCW9USL.js → config-BMkCrsxC.js} +1 -1
  65. package/dist/assets/{config-Dw2MWXp7.js → config-OasAWfj3.js} +1 -1
  66. package/dist/assets/{config-navigation-DxvpF5im.js → config-navigation-BRSxDGox.js} +6 -6
  67. package/dist/assets/{config-space-CU10Rw2i.js → config-space-DlI-IdsO.js} +1 -1
  68. package/dist/assets/{confirm-Vh9bFw1L.js → confirm-C3U-iZgd.js} +1 -1
  69. package/dist/assets/connect-2DXv3-VS.js +5 -0
  70. package/dist/assets/{connect-lFo0rnUJ.js → connect-CJtKCJvL.js} +1 -1
  71. package/dist/assets/{connect-to-1dd-PxCa.js → connect-to-DJWMCDWB.js} +1 -1
  72. package/dist/assets/{dashboard-BS4bpY03.js → dashboard-Dswj6QO1.js} +3 -3
  73. package/dist/assets/{de-BOa43YBF.js → de-m_nuB8Qa.js} +1 -1
  74. package/dist/assets/{delete-confirm-CzUZlQMV.js → delete-confirm-BPN0b1Ew.js} +1 -1
  75. package/dist/assets/{did-address-Ca4O6-Gb.js → did-address-BW7HQteV.js} +1 -1
  76. package/dist/assets/{domain-action-card-BxEOdRG6.js → domain-action-card-DK0_bx6-.js} +2 -2
  77. package/dist/assets/{domain-CcapWTGW.js → domain-i1NE8m1K.js} +1 -1
  78. package/dist/assets/domains-CDhyGAuz.js +1 -0
  79. package/dist/assets/{dot-ClH4jhsr.js → dot-iw3hN9HL.js} +1 -1
  80. package/dist/assets/{email-BKF-qRvM.js → email-DLukryRf.js} +1 -1
  81. package/dist/assets/{es-A3ma-OJp.js → es-BrT673RG.js} +1 -1
  82. package/dist/assets/{exchange-passport-C05YacXz.js → exchange-passport-CtBW8-z_.js} +1 -1
  83. package/dist/assets/{fr-I3xKp6I5.js → fr-BmbyLkZB.js} +1 -1
  84. package/dist/assets/{fuel-D5i0LwEE.js → fuel-TZdSL_3D.js} +1 -1
  85. package/dist/assets/{gen-access-key-OYE9vkTV.js → gen-access-key-CqRouazq.js} +1 -1
  86. package/dist/assets/{get-safe-url-CJuFtnAD.js → get-safe-url-CROWoUui.js} +1 -1
  87. package/dist/assets/{get-safe-url-ClddTGUv.js → get-safe-url-DPUvqYEg.js} +1 -1
  88. package/dist/assets/{hi-DacRhM8A.js → hi-CL8_a9An.js} +1 -1
  89. package/dist/assets/{home-DR0M74FO.js → home-hnxCx6H0.js} +1 -1
  90. package/dist/assets/{id-B7LQAHL7.js → id-DkcL27A7.js} +1 -1
  91. package/dist/assets/{iframe-CymxKzen.js → iframe-BB2MTAjn.js} +1 -1
  92. package/dist/assets/{index-BbupHZzB.js → index-B6fg0S6c.js} +1 -1
  93. package/dist/assets/{index-Cphaf-Ek.js → index-BAbxWghb.js} +9 -9
  94. package/dist/assets/{index-BpvW-cUy.js → index-BCtTVvHw.js} +1 -1
  95. package/dist/assets/{index-BJQsWjyx.js → index-BVBJxqPd.js} +4 -4
  96. package/dist/assets/{index-CRe5KsOj.js → index-BXRM3Fxt.js} +1 -1
  97. package/dist/assets/{index-iO-8g74B.js → index-BdgSI0pZ.js} +1 -1
  98. package/dist/assets/{index-BTKm4T5J.js → index-C-reBQ41.js} +1 -1
  99. package/dist/assets/{index-Hgoqly4p.js → index-C5pIrCeP.js} +3 -3
  100. package/dist/assets/{index--zVoF7lp.js → index-CIN38Uuw.js} +1 -1
  101. package/dist/assets/{index-Dntq1ezd.js → index-CKY4HT0P.js} +1 -1
  102. package/dist/assets/{index-BSIauQNZ.js → index-C_MX-sJs.js} +4 -4
  103. package/dist/assets/{index-B354cP6P.js → index-CcRZdZB8.js} +1 -1
  104. package/dist/assets/{index-CMXod_BF.js → index-ClKx_csi.js} +1 -1
  105. package/dist/assets/{index-DqYKLMVq.js → index-CnSfgOR1.js} +1 -1
  106. package/dist/assets/{index-D5uPwJ6o.js → index-CsA1GkvG.js} +1 -1
  107. package/dist/assets/{index-BtF2_mmu.js → index-D3Sj3zCK.js} +1 -1
  108. package/dist/assets/{index-CaercczO.js → index-OIQ3e2Ld.js} +1 -1
  109. package/dist/assets/{index-DGclkoMp.js → index-S_bysQ3H.js} +1 -1
  110. package/dist/assets/{index-6_wWEItq.js → index-gRIImn2q.js} +51 -51
  111. package/dist/assets/{index-DZfl-BHr.js → index-vo14BOSK.js} +1 -1
  112. package/dist/assets/{index-DJmmHgxv.js → index-zlAFuATT.js} +1 -1
  113. package/dist/assets/{invitation-CHKJRReb.js → invitation-BvT07MYl.js} +1 -1
  114. package/dist/assets/{invite-BIyTLjFG.js → invite-rbOwUpQz.js} +1 -1
  115. package/dist/assets/{issue-passport-D_1dgjgm.js → issue-passport-DqDO2lOV.js} +1 -1
  116. package/dist/assets/{item-Cvm3RZ4-.js → item-Kx7a4SrL.js} +1 -1
  117. package/dist/assets/{ja-DRQ4Eecl.js → ja-BVJLb0qY.js} +1 -1
  118. package/dist/assets/{ko-CzL3UzwL.js → ko-Dd2Xcc8p.js} +1 -1
  119. package/dist/assets/{layout-7LZ3RpDb.js → layout-veO5MoKq.js} +1 -1
  120. package/dist/assets/{list-Bz8uJNpj.js → list-CzMORzTV.js} +1 -1
  121. package/dist/assets/{list-CqGQfIx9.js → list-fB7PuMGP.js} +2 -2
  122. package/dist/assets/localization-CWcvfX_h.js +1 -0
  123. package/dist/assets/{log-CEcMfPWb.js → log-DFvq1Ya8.js} +1 -1
  124. package/dist/assets/{logger-DMlN-IbM.js → logger-Ch0sfkGE.js} +1 -1
  125. package/dist/assets/{login-y0a0ypm7.js → login-Cc4U4UbE.js} +1 -1
  126. package/dist/assets/{login-oauth-callback-CnAgJXgp.js → login-oauth-callback-BH3tsO_b.js} +1 -1
  127. package/dist/assets/{logo-uploader-BAsVxZ3U.js → logo-uploader-BfnTtNB4.js} +3 -3
  128. package/dist/assets/lost-passport-CEk2gBj4.js +168 -0
  129. package/dist/assets/{omit-O1pUD7ku.js → omit-BlzmxIB5.js} +1 -1
  130. package/dist/assets/{open-window-B-GejaY2.js → open-window-DNB3B3k8.js} +1 -1
  131. package/dist/assets/{overview-V76wvba7.js → overview-DqaHfHTX.js} +1 -1
  132. package/dist/assets/{page-header-huQjTQSw.js → page-header-DmVEhivC.js} +1 -1
  133. package/dist/assets/{passport-item-tcnz8j0r.js → passport-item-Dw5vAzG8.js} +1 -1
  134. package/dist/assets/{permission-BfejVUva.js → permission-CmSuLv3N.js} +1 -1
  135. package/dist/assets/{preferences-6lvT1ugx.js → preferences-DoIPeyXx.js} +1 -1
  136. package/dist/assets/{profile-embed-BqPZ87OZ.js → profile-embed-BzGFlRQR.js} +1 -1
  137. package/dist/assets/{pt-CHKumXYv.js → pt-BfbUt_Nx.js} +1 -1
  138. package/dist/assets/publish-resource-Dbw9ICt4.js +1 -0
  139. package/dist/assets/{react-beautiful-dnd.esm-Btnab_OF.js → react-beautiful-dnd.esm-B9_jlyiB.js} +1 -1
  140. package/dist/assets/{ru-CvkEKhgU.js → ru-uXrAFAz0.js} +1 -1
  141. package/dist/assets/{runtime-qegegcsI.js → runtime-D90jDC3r.js} +1 -1
  142. package/dist/assets/{sanitize-DbZs1H_T.js → sanitize-B18rcrOf.js} +1 -1
  143. package/dist/assets/sdk-DDQwgEwY.js +1 -0
  144. package/dist/assets/{security-Cxiq1ziT.js → security-D8kq04bN.js} +1 -1
  145. package/dist/assets/{session-CwC5SgVz.js → session-igceijP1.js} +1 -1
  146. package/dist/assets/setup-n8Ikg3vS.js +30 -0
  147. package/dist/assets/{spaces-Cgazj3bm.js → spaces-DVZd70Fi.js} +1 -1
  148. package/dist/assets/{start-FFKcgzTb.js → start-YvnbU7Eo.js} +1 -1
  149. package/dist/assets/{starting-progress-CKWusmmh.js → starting-progress-BOsNmsFB.js} +1 -1
  150. package/dist/assets/{status-D98jk27v.js → status-BGmXEfM-.js} +1 -1
  151. package/dist/assets/{step-actions-Cp7vl1Uh.js → step-actions-_L8XSfG4.js} +1 -1
  152. package/dist/assets/{studio-CvtVT5aS.js → studio-BImlv1KI.js} +1 -1
  153. package/dist/assets/{switch-control-DCl96cpf.js → switch-control-CGm8CkkK.js} +1 -1
  154. package/dist/assets/{table-tips-DdnbF0LB.js → table-tips-C8uXQ5tF.js} +1 -1
  155. package/dist/assets/{th-B2BUfjNJ.js → th-BnT_StPj.js} +1 -1
  156. package/dist/assets/{traffic-Bf1b6xSQ.js → traffic-NFBtntJ-.js} +1 -1
  157. package/dist/assets/{transfer-ChzHdW_I.js → transfer-CJjNcsEy.js} +1 -1
  158. package/dist/assets/{unsubscribe-CRSsqbPw.js → unsubscribe-Co6pOu2N.js} +1 -1
  159. package/dist/assets/{use-blocklet-logo-D73B-sw0.js → use-blocklet-logo-BUV6ER3X.js} +1 -1
  160. package/dist/assets/{useAsync-B6ZHbOEG.js → useAsync-DVHp96Uu.js} +1 -1
  161. package/dist/assets/{useLocalStorage-B85cd9HR.js → useLocalStorage-Cw7tZL-P.js} +1 -1
  162. package/dist/assets/{user-center-h3PNeVcw.js → user-center-CHyAfsyF.js} +3 -3
  163. package/dist/assets/{util-B5wObXV8.js → util-BKry4J3y.js} +1 -1
  164. package/dist/assets/{util-SfP61JNJ.js → util-BfQiNudG.js} +1 -1
  165. package/dist/assets/{vendor-arcblock-qCd0o3Hz.js → vendor-arcblock-Cspz6Fmz.js} +14 -14
  166. package/dist/assets/{vendor-hooks-BCm626KH.js → vendor-hooks-BFlOfe0M.js} +1 -1
  167. package/dist/assets/vendor-utils-BotmZdBm.js +208 -0
  168. package/dist/assets/{vendor-ux-did-connect-dVrbSJfQ.js → vendor-ux-did-connect-ETVwYaIV.js} +91 -92
  169. package/dist/assets/{vi-BykmwIAT.js → vi-DmitUjjk.js} +1 -1
  170. package/dist/assets/wrap-locale-ugI1o5oc.js +1 -0
  171. package/dist/assets/{zh-CbCaOuAd.js → zh-syG1cNt6.js} +2 -2
  172. package/dist/assets/{zh-tw-C9JfiCVV.js → zh-tw-DnHJQaoN.js} +1 -1
  173. package/dist/index.html +5 -5
  174. package/dist/service-worker.js +1 -1
  175. package/package.json +34 -34
  176. package/api/libs/auth/utils.js +0 -159
  177. package/dist/assets/add-component-core-C3s0hRWv.js +0 -768
  178. package/dist/assets/api-CQoRx33p.js +0 -1
  179. package/dist/assets/connect-Cg0d_ebx.js +0 -5
  180. package/dist/assets/domains-C9MeMLdA.js +0 -1
  181. package/dist/assets/localization-gg0fgyqC.js +0 -1
  182. package/dist/assets/lost-passport-D-GKwrh2.js +0 -168
  183. package/dist/assets/publish-resource-BqdiC6O1.js +0 -1
  184. package/dist/assets/sdk-DOmS9lyP.js +0 -1
  185. package/dist/assets/setup-Dilg0too.js +0 -30
  186. package/dist/assets/vendor-utils-B3iZkn2R.js +0 -208
  187. package/dist/assets/wrap-locale-C5884ev0.js +0 -1
@@ -1,48 +1,6 @@
1
- const { bindWallet } = require('../../../libs/connect/session');
2
- const logger = require('../../../libs/logger')(require('../../../../package.json').name);
3
-
4
- const { onConnect, onApprove, authPrincipal } = bindWallet;
1
+ const { createBindWalletRoute } = require('@abtnode/auth/lib/bind-wallet');
5
2
 
6
3
  // eslint-disable-next-line no-unused-vars
7
4
  module.exports = function createRoutes(node, authenticator, createSessionToken) {
8
- return {
9
- action: 'bind-wallet',
10
- authPrincipal: false,
11
- claims: {
12
- authPrincipal: ({ extraParams: { locale, previousUserDid, email } }) => {
13
- return authPrincipal({ locale, previousUserDid, email });
14
- },
15
- },
16
- onConnect: ({ req, userDid, extraParams: { locale, passportId = '', componentId, previousUserDid } }) => {
17
- return onConnect({
18
- node,
19
- request: req,
20
- userDid,
21
- locale,
22
- passportId,
23
- componentId,
24
- previousUserDid,
25
- });
26
- },
27
-
28
- onAuth: async ({ claims, userDid, userPk, extraParams: { locale, previousUserDid }, req, baseUrl }) => {
29
- try {
30
- const result = await onApprove({
31
- node,
32
- request: req,
33
- locale,
34
- userDid,
35
- userPk,
36
- baseUrl,
37
- claims,
38
- previousUserDid,
39
- });
40
-
41
- return result;
42
- } catch (err) {
43
- logger.error('login.error', { error: err, userDid });
44
- throw new Error(err.message);
45
- }
46
- },
47
- };
5
+ return createBindWalletRoute({ node });
48
6
  };
@@ -3,10 +3,10 @@ const { messages } = require('@abtnode/auth/lib/auth');
3
3
  const { authenticateByVc } = require('@abtnode/auth/lib/server');
4
4
  const { PASSPORT_LOG_ACTION, SERVER_ROLES } = require('@abtnode/constant');
5
5
  const formatContext = require('@abtnode/util/lib/format-context');
6
+ const { PASSPORT_VC_TYPES } = require('@abtnode/auth/lib/util/transfer-passport');
6
7
 
7
8
  const logger = require('../../../libs/logger')('blocklet-service:connect-cli');
8
9
  const { utils } = require('../../../libs/connect/session');
9
- const { PASSPORT_VC_TYPES } = require('../../../libs/auth/utils');
10
10
  const { getTrustedIssuers } = require('../../../util/blocklet-utils');
11
11
 
12
12
  const allowedRoles = ['owner', 'admin'];
@@ -117,7 +117,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
117
117
  walletOS,
118
118
  emailVerified: !!user?.emailVerified,
119
119
  phoneVerified: !!user?.phoneVerified,
120
- elevated: canSessionBeElevated(role, nodeInfo),
120
+ elevated: canSessionBeElevated(role, blocklet?.settings),
121
121
  },
122
122
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
123
123
  );
@@ -130,7 +130,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
130
130
  walletOS,
131
131
  emailVerified: !!user?.emailVerified,
132
132
  phoneVerified: !!user?.phoneVerified,
133
- elevated: canSessionBeElevated(role, nodeInfo),
133
+ elevated: canSessionBeElevated(role, blocklet?.settings),
134
134
  },
135
135
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
136
136
  );
@@ -4,11 +4,11 @@ const { ROLES } = require('@abtnode/constant');
4
4
  const { getSourceAppPid } = require('@blocklet/sdk/lib/util/login');
5
5
  const { fromBase64 } = require('@ocap/util');
6
6
  const { LOGIN_PROVIDER } = require('@blocklet/constant');
7
+ const { PASSPORT_VC_TYPES } = require('@abtnode/auth/lib/util/transfer-passport');
7
8
 
8
9
  const { PASSPORT_LOG_ACTION } = require('@abtnode/constant');
9
10
  const logger = require('../../../libs/logger')();
10
11
  const { createTokenFn, getDidConnectVersion } = require('../../../util');
11
- const { PASSPORT_VC_TYPES } = require('../../../libs/auth/utils');
12
12
  const { getTrustedIssuers } = require('../../../util/blocklet-utils');
13
13
 
14
14
  const ALLOWED_ROLES = [ROLES.OWNER, ROLES.ADMIN, ROLES.MEMBER];
@@ -19,7 +19,11 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
19
19
  action: 'verify-destroy',
20
20
  onConnect: async ({ request, userDid, extraParams: { locale, payload, roles } }) => {
21
21
  const blocklet = await request.getBlocklet();
22
- const user = await node.getUser({ teamDid: blocklet.appPid, user: { did: userDid } });
22
+ const user = await node.getUser({
23
+ teamDid: blocklet.appPid,
24
+ user: { did: userDid },
25
+ options: { enableConnectedAccount: true },
26
+ });
23
27
  if (!user) {
24
28
  throw new Error(messages.notAllowed[locale]);
25
29
  }
@@ -45,11 +49,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
45
49
  onAuth: async ({ request, claims, challenge, userDid, updateSession, extraParams }) => {
46
50
  const { locale, payload } = extraParams;
47
51
  const sourceAppPid = getSourceAppPid(request);
48
- const [blocklet, blockletInfo, info] = await Promise.all([
49
- request.getBlocklet(),
50
- request.getBlockletInfo(),
51
- node.getNodeInfo(),
52
- ]);
52
+ const [blocklet, blockletInfo] = await Promise.all([request.getBlocklet(), request.getBlockletInfo()]);
53
53
 
54
54
  const { role, user, passport } = await authenticateByVc({
55
55
  node,
@@ -90,7 +90,8 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
90
90
  logger.info('DestroySession.start', { sessionId: session.id, parsed, userDid, role });
91
91
 
92
92
  const updates = { destroySessionId: session.id };
93
- if (info.enableSessionHardening) {
93
+ const isSessionHardeningEnabled = blocklet?.settings?.enableSessionHardening;
94
+ if (isSessionHardeningEnabled) {
94
95
  const createToken = createTokenFn(createSessionToken);
95
96
  const sessionConfig = blocklet.settings?.session || {};
96
97
 
@@ -5,8 +5,9 @@ const { LOGIN_PROVIDER } = require('@blocklet/constant');
5
5
  const { getSourceAppPid } = require('@blocklet/sdk/lib/util/login');
6
6
 
7
7
  const { PASSPORT_LOG_ACTION } = require('@abtnode/constant');
8
+ const { PASSPORT_VC_TYPES } = require('@abtnode/auth/lib/util/transfer-passport');
9
+
8
10
  const { createTokenFn, getDidConnectVersion } = require('../../../util');
9
- const { PASSPORT_VC_TYPES } = require('../../../libs/auth/utils');
10
11
  const { getTrustedIssuers } = require('../../../util/blocklet-utils');
11
12
 
12
13
  const allowedRoles = [ROLES.OWNER, ROLES.ADMIN, ROLES.MEMBER];
@@ -20,12 +21,17 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
20
21
  throw new Error(messages.userMismatch[locale]);
21
22
  }
22
23
 
23
- const [blocklet, info] = await Promise.all([request.getBlocklet(), node.getNodeInfo()]);
24
- if (!info.enableSessionHardening) {
24
+ const blocklet = await request.getBlocklet();
25
+ const isSessionHardeningEnabled = blocklet?.settings?.enableSessionHardening;
26
+ if (!isSessionHardeningEnabled) {
25
27
  throw new Error(messages.notEnabled[locale]);
26
28
  }
27
29
 
28
- const user = await node.getUser({ teamDid: blocklet.appPid, user: { did: userDid } });
30
+ const user = await node.getUser({
31
+ teamDid: blocklet.appPid,
32
+ user: { did: userDid },
33
+ options: { enableConnectedAccount: true },
34
+ });
29
35
  if (!user) {
30
36
  throw new Error(messages.notAllowed[locale]);
31
37
  }
@@ -49,12 +55,10 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
49
55
  onAuth: async ({ request, claims, challenge, userDid, updateSession, extraParams }) => {
50
56
  const { locale } = extraParams;
51
57
  const sourceAppPid = getSourceAppPid(request);
52
- const [blocklet, blockletInfo, info] = await Promise.all([
53
- request.getBlocklet(),
54
- request.getBlockletInfo(),
55
- node.getNodeInfo(),
56
- ]);
57
- if (!info.enableSessionHardening) {
58
+ const [blocklet, blockletInfo] = await Promise.all([request.getBlocklet(), request.getBlockletInfo()]);
59
+
60
+ const isSessionHardeningEnabled = blocklet?.settings?.enableSessionHardening;
61
+ if (!isSessionHardeningEnabled) {
58
62
  throw new Error(messages.notEnabled[locale]);
59
63
  }
60
64
 
@@ -105,7 +109,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
105
109
  walletOS: request.context.didwallet.os,
106
110
  emailVerified: user.emailVerified,
107
111
  phoneVerified: user.phoneVerified,
108
- elevated: canSessionBeElevated(role, info),
112
+ elevated: canSessionBeElevated(role, blocklet?.settings), // blocklet level session hardening
109
113
  },
110
114
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(request) }
111
115
  );
@@ -1,5 +1,14 @@
1
1
  const { getPassportStatus } = require('@abtnode/auth/lib/auth');
2
2
  const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
3
+ const { CustomError } = require('@blocklet/error');
4
+ const logger = require('../../libs/logger');
5
+
6
+ const messages = {
7
+ passportStatusCheckFailed: {
8
+ en: 'Failed to get passport status',
9
+ zh: '获取通行证状态失败',
10
+ },
11
+ };
3
12
 
4
13
  module.exports = {
5
14
  init(router, node) {
@@ -7,15 +16,19 @@ module.exports = {
7
16
  const { vcId, userDid, locale } = req.query;
8
17
  const teamDid = req.headers['x-blocklet-did'];
9
18
 
10
- // HACK: 这里的 req.query.teamDid 可能是 blocklet 容器化之前的 teamDid(等于 blocklet.yml did),需要根据这个 did 找到现有对应的 teamDid,否则无法使用在容器化之前颁发的通行证来登录
11
- const blocklet = await node.getBlocklet({ did: req.query.teamDid, useCache: true });
12
- if (teamDid !== blocklet?.meta?.did) {
13
- throw new Error('teamDid is invalid');
14
- }
19
+ try {
20
+ // HACK: 2025-06-13 经沟通,不再对 query 中的 teamDid 做校验,应该直接使用 req.headers['x-blocklet-did'] 中的 teamDid
21
+ const status = await getPassportStatus({ node, teamDid, userDid, vcId, locale });
15
22
 
16
- const status = await getPassportStatus({ node, teamDid, userDid, vcId, locale });
23
+ res.json(status);
24
+ } catch (err) {
25
+ logger.error('failed to get passport status', { teamDid, userDid, vcId, locale, err });
17
26
 
18
- res.json(status);
27
+ if (err instanceof CustomError) {
28
+ throw err;
29
+ }
30
+ throw new CustomError(500, messages.passportStatusCheckFailed[locale] || messages.passportStatusCheckFailed.en);
31
+ }
19
32
  });
20
33
  },
21
34
  };
@@ -49,9 +49,9 @@ const translations = {
49
49
  const t = createTranslator({ translations });
50
50
 
51
51
  const signSessionResponseCache = new DBCache(() => ({
52
- ...getAbtNodeRedisAndSQLiteUrl(),
53
52
  prefix: 'services-sign-session-response',
54
53
  ttl: 1000 * 60,
54
+ ...getAbtNodeRedisAndSQLiteUrl(),
55
55
  }));
56
56
 
57
57
  const getUnreadNotificationCount = ({ teamDid, receiver }, node) => {
@@ -113,10 +113,10 @@ module.exports = {
113
113
  // FIXME: @zhanghan BlockletSDK 和 Aistro 来的请求暂时不需要检查 visitorId,需要在 aistro 适配新的逻辑
114
114
  await req.ensureUser({ token, appPid, blockletInfo });
115
115
  } else {
116
- await req.ensureUser({ token, visitorId, appPid, blockletInfo });
116
+ await req.ensureUser({ token, appPid, blockletInfo, visitorId });
117
117
  }
118
118
  if (!req.user) {
119
- res.json({ user: null });
119
+ res.status(401).json({ error: 'not login' });
120
120
  return;
121
121
  }
122
122
 
@@ -1,182 +1,4 @@
1
- const { getChainClient } = require('@abtnode/util/lib/get-chain-client');
2
- const { MAIN_CHAIN_ENDPOINT } = require('@abtnode/constant');
3
- const { getBlockletChainInfo } = require('@blocklet/meta/lib/util');
4
- const jwt = require('jsonwebtoken');
5
- const jwksClient = require('jwks-rsa');
6
- const { toStakeAddress } = require('@arcblock/did-util');
7
- const { sign } = require('@arcblock/jwt');
8
- const { toBN, fromUnitToToken } = require('@ocap/util');
9
- const { toTxHash } = require('@ocap/mcrypto');
10
- const getBlockletInfo = require('@blocklet/meta/lib/info');
11
-
12
- const logger = require('../../libs/logger')('blocklet-services:oauth');
13
-
14
- async function declareAccountByChain({ chainHost, wallet }) {
15
- const chainClient = getChainClient(chainHost);
16
- const { address } = wallet;
17
- const { state } = await chainClient.getAccountState({ address }, { ignoreFields: ['context'] });
18
- if (state) {
19
- logger.info('skip declare account on chain done', { chain: chainHost, did: address });
20
- } else {
21
- logger.warn('declare account on chain deprecated', { chain: chainHost, did: address });
22
- }
23
- }
24
-
25
- async function declareAccount({ wallet, blocklet }) {
26
- const chainHostList = [MAIN_CHAIN_ENDPOINT];
27
- // 本质上是获取环境变量为 CHAIN_HOST 的值
28
- const { host: chainHost } = getBlockletChainInfo(blocklet);
29
- if (chainHost && chainHost !== 'none') {
30
- chainHostList.push(chainHost);
31
- }
32
- const waitingList = [...new Set(chainHostList)].map((item) => declareAccountByChain({ chainHost: item, wallet }));
33
- await Promise.all(waitingList);
34
- }
35
-
36
- async function migrateAccountByChain({ chainHost, user, wallet, blocklet }) {
37
- const client = getChainClient(chainHost);
38
-
39
- // Do not migrate if target account already exists
40
- const { state: exist } = await client.getAccountState({ address: user.did });
41
- if (exist) {
42
- logger.info('migrate account on chain done', { chain: chainHost, did: user.did });
43
- return '';
44
- }
45
-
46
- // Ensure staked for gas
47
- const info = getBlockletInfo(blocklet);
48
- await ensureStakedForGas({ client, chainHost, wallet: info.wallet });
49
-
50
- // send migrate tx with app as gas payer
51
- const tx = await client.signAccountMigrateTx({
52
- tx: {
53
- itx: {
54
- address: user.did,
55
- pk: user.pk,
56
- },
57
- },
58
- wallet,
59
- });
60
- const { buffer } = await client.encodeAccountMigrateTx({ tx, wallet });
61
- const hash = await client.sendAccountMigrateTx(
62
- { tx, wallet },
63
- {
64
- headers: {
65
- 'x-gas-payer-sig': sign(info.wallet.address, info.wallet.secretKey, { txHash: toTxHash(buffer) }),
66
- 'x-gas-payer-pk': info.wallet.publicKey,
67
- },
68
- }
69
- );
70
-
71
- logger.info('migration account done', { chain: chainHost, did: user.did, hash });
72
- return hash;
73
- }
74
-
75
- async function migrateAccount({ wallet, blocklet, user }) {
76
- const chainHostList = [MAIN_CHAIN_ENDPOINT];
77
- const { host: chainHost } = getBlockletChainInfo(blocklet);
78
- if (chainHost && chainHost !== 'none') {
79
- chainHostList.push(chainHost);
80
- }
81
- const waitingList = [...new Set(chainHostList)].map((item) =>
82
- migrateAccountByChain({ chainHost: item, wallet, user, blocklet })
83
- );
84
- await Promise.all(waitingList);
85
- }
86
-
87
- async function ensureStakedForGas({ client, chainHost, wallet }) {
88
- // check if already staked
89
- const address = toStakeAddress(wallet.address, wallet.address);
90
- const { state: stake } = await client.getStakeState({ address });
91
- if (stake) {
92
- return;
93
- }
94
-
95
- // try stake for gas if we have enough balance
96
- const { state: account } = await client.getAccountState({ address: wallet.address });
97
- const result = await client.getForgeState({});
98
- const { token, txConfig } = result.state;
99
- const holding = (account?.tokens || []).find((x) => x.address === token.address);
100
- if (toBN(holding?.value || '0').lte(toBN(txConfig.txGas.minStake))) {
101
- throw new Error(`App do not have enough balance to stake for gas on chain: ${chainHost}`);
102
- }
103
-
104
- // @ts-ignore
105
- const [hash] = await client.stake({
106
- to: wallet.address,
107
- message: 'stake-for-gas',
108
- tokens: [{ address: token.address, value: fromUnitToToken(txConfig.txGas.minStake, token.decimal) }],
109
- wallet,
110
- });
111
- logger.info(`App staked for gas on chain ${chainHost}`, { hash });
112
- }
113
-
114
- async function getJWK(kid, jwksUri) {
115
- const client = jwksClient({
116
- cache: true,
117
- jwksUri,
118
- });
119
- const key = await new Promise((resolve, reject) => {
120
- client.getSigningKey(kid, (error, result) => {
121
- if (error) {
122
- return reject(error);
123
- }
124
- return resolve(result);
125
- });
126
- });
127
- return {
128
- publicKey: key.getPublicKey(),
129
- kid: key.kid,
130
- alg: key.alg,
131
- };
132
- }
133
-
134
- /**
135
- * Verify the authenticity of a token by decoding, verifying the algorithm, and matching claims.
136
- * @author https://github.com/stefanprokopdev/verify-apple-id-token
137
- * @param {Object} params - Object containing idToken, jwksUri, nonce, iss, clientId
138
- * @param {string} params.idToken - JWT token
139
- * @param {string} params.jwksUri - JWK set URI
140
- * @param {string} params.nonce - Nonce
141
- * @param {string} params.iss - Issuer
142
- * @param {string} params.clientId - Client ID
143
- * @return {Object} Decoded JWT claims if token is valid
144
- */
145
- async function verifyIdToken(params) {
146
- const decoded = jwt.decode(params.idToken, { complete: true });
147
- const { kid, alg: jwtAlg } = decoded.header;
148
-
149
- const { publicKey, alg: jwkAlg } = await getJWK(kid, params.jwksUri);
150
-
151
- if (jwtAlg !== jwkAlg) {
152
- throw new Error(`The alg does not match the jwk configuration - alg: ${jwtAlg} | expected: ${jwkAlg}`);
153
- }
154
-
155
- const jwtClaims = jwt.verify(params.idToken, publicKey, {
156
- algorithms: [jwkAlg],
157
- nonce: params.nonce,
158
- });
159
-
160
- if (jwtClaims?.iss !== params.iss) {
161
- throw new Error(`The iss does not match the Apple URL - iss: ${jwtClaims.iss} | expected: ${params.iss}`);
162
- }
163
-
164
- const isFounded = [].concat(jwtClaims.aud).some((aud) => [].concat(params.clientId).includes(aud));
165
-
166
- if (isFounded) {
167
- ['email_verified', 'is_private_email'].forEach((field) => {
168
- if (jwtClaims[field] !== undefined) {
169
- jwtClaims[field] = Boolean(jwtClaims[field]);
170
- }
171
- });
172
-
173
- return jwtClaims;
174
- }
175
-
176
- throw new Error(
177
- `The aud parameter does not include this client - is: ${jwtClaims.aud} | expected: ${params.clientId}`
178
- );
179
- }
1
+ const { declareAccount, migrateAccount, verifyIdToken } = require('@abtnode/auth/lib/util/client');
180
2
 
181
3
  module.exports = {
182
4
  declareAccount,
@@ -42,6 +42,7 @@ const createBlockletOAuthServerProvider = (node, options, blocklet, info) => {
42
42
 
43
43
  const passport = getLastUsedPassport(user?.passports || []);
44
44
  const role = passport?.role || 'guest';
45
+
45
46
  const { sessionToken, refreshToken } = createToken(
46
47
  userDid,
47
48
  {
@@ -52,7 +53,7 @@ const createBlockletOAuthServerProvider = (node, options, blocklet, info) => {
52
53
  provider: passport?.provider || 'oauth',
53
54
  emailVerified: !!user.emailVerified,
54
55
  phoneVerified: !!user.phoneVerified,
55
- elevated: canSessionBeElevated(role, await node.getNodeInfo({ useCache: true })),
56
+ elevated: canSessionBeElevated(role, (await node.getBlocklet({ did: blocklet.appDid }))?.settings),
56
57
  oauth: {
57
58
  clientId: client.client_id,
58
59
  scopes,
@@ -473,8 +473,8 @@ const sendToMail = async ({ sender, receiver, notification, options, node, pushO
473
473
 
474
474
  const { locale = 'en', raw = false } = options || {};
475
475
  const results = await Promise.allSettled(
476
- receivers.map((email) => {
477
- return sendEmail(email, notifications[0], {
476
+ receivers.map((receiverItem) => {
477
+ return sendEmail(receiverItem, notifications[0], {
478
478
  teamDid: sender.appDid,
479
479
  node,
480
480
  locale,
@@ -9,6 +9,7 @@ const {
9
9
  getUserAvatarUrl,
10
10
  getFederatedMaster,
11
11
  callFederated,
12
+ migrateFederatedAccount,
12
13
  } = require('@abtnode/auth/lib/util/federated');
13
14
  const getBlockletInfo = require('@blocklet/meta/lib/info');
14
15
 
@@ -45,18 +46,6 @@ async function getOAuthUserInfo({ blocklet, sourceAppPid, request, provider, tok
45
46
  return data;
46
47
  }
47
48
 
48
- async function migrateFederatedAccount({ blocklet, blockletInfo, fromUserDid, toUserDid, toUserPk }) {
49
- const masterSite = getFederatedMaster(blocklet);
50
- const { permanentWallet } = blockletInfo;
51
- const result = await callFederated({
52
- action: 'migrateAccount',
53
- site: masterSite,
54
- permanentWallet,
55
- data: { fromUserDid, toUserDid, toUserPk },
56
- });
57
- return result;
58
- }
59
-
60
49
  async function getUserWithinFederated({ userDid, userPk, teamDid, sourceAppPid }, { node, blocklet }) {
61
50
  let currentUser = await node.getUser({
62
51
  teamDid,
@@ -1,3 +1,3 @@
1
- import{_ as dt}from"./vendor-mui-core-Bq8gXTan.js";import{a as f}from"./vendor-utils-B3iZkn2R.js";import{e as Q,g as R}from"./vendor-react-DEoibe3W.js";import{aF as ft}from"./vendor-ux-did-connect-dVrbSJfQ.js";import{b as ct}from"./vendor-mui-x-1nqAyytV.js";var tt={exports:{}};(function(T,L){(function(l,c){T.exports=c()})(Q,function(){var l="week",c="year";return function(g,t,e){var s=t.prototype;s.week=function(i){if(i===void 0&&(i=null),i!==null)return this.add(7*(i-this.week()),"day");var o=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var n=e(this).startOf(c).add(1,c).date(o),d=e(this).endOf(l);if(n.isBefore(d))return 1}var m=e(this).startOf(c).date(o).startOf(l).subtract(1,"millisecond"),U=this.diff(m,l,!0);return U<0?e(this).startOf("week").week():Math.ceil(U)},s.weeks=function(i){return i===void 0&&(i=null),this.week(i)}}})})(tt);var lt=tt.exports;const mt=R(lt);var et={exports:{}};(function(T,L){(function(l,c){T.exports=c()})(Q,function(){var l={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},c=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,g=/\d/,t=/\d\d/,e=/\d\d?/,s=/\d*[^-_:/,()\s\d]+/,i={},o=function(r){return(r=+r)+(r>68?1900:2e3)},n=function(r){return function(a){this[r]=+a}},d=[/[+-]\d\d:?(\d\d)?|Z/,function(r){(this.zone||(this.zone={})).offset=function(a){if(!a||a==="Z")return 0;var h=a.match(/([+-]|\d\d)/g),u=60*h[1]+(+h[2]||0);return u===0?0:h[0]==="+"?-u:u}(r)}],m=function(r){var a=i[r];return a&&(a.indexOf?a:a.s.concat(a.f))},U=function(r,a){var h,u=i.meridiem;if(u){for(var D=1;D<=24;D+=1)if(r.indexOf(u(D,0,a))>-1){h=D>12;break}}else h=r===(a?"pm":"PM");return h},rt={A:[s,function(r){this.afternoon=U(r,!1)}],a:[s,function(r){this.afternoon=U(r,!0)}],Q:[g,function(r){this.month=3*(r-1)+1}],S:[g,function(r){this.milliseconds=100*+r}],SS:[t,function(r){this.milliseconds=10*+r}],SSS:[/\d{3}/,function(r){this.milliseconds=+r}],s:[e,n("seconds")],ss:[e,n("seconds")],m:[e,n("minutes")],mm:[e,n("minutes")],H:[e,n("hours")],h:[e,n("hours")],HH:[e,n("hours")],hh:[e,n("hours")],D:[e,n("day")],DD:[t,n("day")],Do:[s,function(r){var a=i.ordinal,h=r.match(/\d+/);if(this.day=h[0],a)for(var u=1;u<=31;u+=1)a(u).replace(/\[|\]/g,"")===r&&(this.day=u)}],w:[e,n("week")],ww:[t,n("week")],M:[e,n("month")],MM:[t,n("month")],MMM:[s,function(r){var a=m("months"),h=(m("monthsShort")||a.map(function(u){return u.slice(0,3)})).indexOf(r)+1;if(h<1)throw new Error;this.month=h%12||h}],MMMM:[s,function(r){var a=m("months").indexOf(r)+1;if(a<1)throw new Error;this.month=a%12||a}],Y:[/[+-]?\d+/,n("year")],YY:[t,function(r){this.year=o(r)}],YYYY:[/\d{4}/,n("year")],Z:d,ZZ:d};function nt(r){var a,h;a=r,h=i&&i.formats;for(var u=(r=a.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(b,k,p){var M=p&&p.toUpperCase();return k||h[p]||l[p]||h[M].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(x,j,z){return j||z.slice(1)})})).match(c),D=u.length,w=0;w<D;w+=1){var P=u[w],S=rt[P],Y=S&&S[0],O=S&&S[1];u[w]=O?{regex:Y,parser:O}:P.replace(/^\[|\]$/g,"")}return function(b){for(var k={},p=0,M=0;p<D;p+=1){var x=u[p];if(typeof x=="string")M+=x.length;else{var j=x.regex,z=x.parser,H=b.slice(M),A=j.exec(H)[0];z.call(k,A),b=b.replace(A,"")}}return function(C){var I=C.afternoon;if(I!==void 0){var y=C.hours;I?y<12&&(C.hours+=12):y===12&&(C.hours=0),delete C.afternoon}}(k),k}}return function(r,a,h){h.p.customParseFormat=!0,r&&r.parseTwoDigitYear&&(o=r.parseTwoDigitYear);var u=a.prototype,D=u.parse;u.parse=function(w){var P=w.date,S=w.utc,Y=w.args;this.$u=S;var O=Y[1];if(typeof O=="string"){var b=Y[2]===!0,k=Y[3]===!0,p=b||k,M=Y[2];k&&(M=Y[2]),i=this.$locale(),!b&&M&&(i=h.Ls[M]),this.$d=function(H,A,C,I){try{if(["x","X"].indexOf(A)>-1)return new Date((A==="X"?1e3:1)*H);var y=nt(A)(H),W=y.year,F=y.month,it=y.day,at=y.hours,ot=y.minutes,ht=y.seconds,ut=y.milliseconds,X=y.zone,q=y.week,$=new Date,N=it||(W||F?1:$.getDate()),Z=W||$.getFullYear(),B=0;W&&!F||(B=F>0?F-1:$.getMonth());var E,v=at||0,V=ot||0,J=ht||0,_=ut||0;return X?new Date(Date.UTC(Z,B,N,v,V,J,_+60*X.offset*1e3)):C?new Date(Date.UTC(Z,B,N,v,V,J,_)):(E=new Date(Z,B,N,v,V,J,_),q&&(E=I(E).week(q).toDate()),E)}catch{return new Date("")}}(P,O,S,h),this.init(),M&&M!==!0&&(this.$L=this.locale(M).$L),p&&P!=this.format(O)&&(this.$d=new Date("")),i={}}else if(O instanceof Array)for(var x=O.length,j=1;j<=x;j+=1){Y[1]=O[j-1];var z=h.apply(this,Y);if(z.isValid()){this.$d=z.$d,this.$L=z.$L,this.init();break}j===x&&(this.$d=new Date(""))}else D.call(this,w)}}})})(et);var yt=et.exports;const Mt=R(yt);var st={exports:{}};(function(T,L){(function(l,c){T.exports=c()})(Q,function(){return function(l,c,g){c.prototype.isBetween=function(t,e,s,i){var o=g(t),n=g(e),d=(i=i||"()")[0]==="(",m=i[1]===")";return(d?this.isAfter(o,s):!this.isBefore(o,s))&&(m?this.isBefore(n,s):!this.isAfter(n,s))||(d?this.isBefore(o,s):!this.isAfter(o,s))&&(m?this.isAfter(n,s):!this.isBefore(n,s))}}})})(st);var pt=st.exports;const Tt=R(pt);f.extend(Mt);f.extend(ft);f.extend(Tt);const gt=ct(["Your locale has not been found.","Either the locale key is not a supported one. Locales supported by dayjs are available here: https://github.com/iamkun/dayjs/tree/dev/src/locale","Or you forget to import the locale from 'dayjs/locale/{localeUsed}'","fallback on English locale"]),Dt={YY:"year",YYYY:{sectionType:"year",contentType:"digit",maxLength:4},M:{sectionType:"month",contentType:"digit",maxLength:2},MM:"month",MMM:{sectionType:"month",contentType:"letter"},MMMM:{sectionType:"month",contentType:"letter"},D:{sectionType:"day",contentType:"digit",maxLength:2},DD:"day",Do:{sectionType:"day",contentType:"digit-with-letter"},d:{sectionType:"weekDay",contentType:"digit",maxLength:2},dd:{sectionType:"weekDay",contentType:"letter"},ddd:{sectionType:"weekDay",contentType:"letter"},dddd:{sectionType:"weekDay",contentType:"letter"},A:"meridiem",a:"meridiem",H:{sectionType:"hours",contentType:"digit",maxLength:2},HH:"hours",h:{sectionType:"hours",contentType:"digit",maxLength:2},hh:"hours",m:{sectionType:"minutes",contentType:"digit",maxLength:2},mm:"minutes",s:{sectionType:"seconds",contentType:"digit",maxLength:2},ss:"seconds"},wt={year:"YYYY",month:"MMMM",monthShort:"MMM",dayOfMonth:"D",weekday:"dddd",weekdayShort:"dd",hours24h:"HH",hours12h:"hh",meridiem:"A",minutes:"mm",seconds:"ss",fullDate:"ll",fullDateWithWeekday:"dddd, LL",keyboardDate:"L",shortDate:"MMM D",normalDate:"D MMMM",normalDateWithWeekday:"ddd, MMM D",monthAndYear:"MMMM YYYY",monthAndDate:"MMMM D",fullTime:"LT",fullTime12h:"hh:mm A",fullTime24h:"HH:mm",fullDateTime:"lll",fullDateTime12h:"ll hh:mm A",fullDateTime24h:"ll HH:mm",keyboardDateTime:"L LT",keyboardDateTime12h:"L hh:mm A",keyboardDateTime24h:"L HH:mm"},G=["Missing UTC plugin","To be able to use UTC or timezones, you have to enable the `utc` plugin","Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-utc"].join(`
1
+ import{_ as dt}from"./vendor-mui-core-Bq8gXTan.js";import{a as f}from"./vendor-utils-BotmZdBm.js";import{e as Q,g as R}from"./vendor-react-DEoibe3W.js";import{aF as ft}from"./vendor-ux-did-connect-ETVwYaIV.js";import{b as ct}from"./vendor-mui-x-1nqAyytV.js";var tt={exports:{}};(function(T,L){(function(l,c){T.exports=c()})(Q,function(){var l="week",c="year";return function(g,t,e){var s=t.prototype;s.week=function(i){if(i===void 0&&(i=null),i!==null)return this.add(7*(i-this.week()),"day");var o=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var n=e(this).startOf(c).add(1,c).date(o),d=e(this).endOf(l);if(n.isBefore(d))return 1}var m=e(this).startOf(c).date(o).startOf(l).subtract(1,"millisecond"),U=this.diff(m,l,!0);return U<0?e(this).startOf("week").week():Math.ceil(U)},s.weeks=function(i){return i===void 0&&(i=null),this.week(i)}}})})(tt);var lt=tt.exports;const mt=R(lt);var et={exports:{}};(function(T,L){(function(l,c){T.exports=c()})(Q,function(){var l={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},c=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,g=/\d/,t=/\d\d/,e=/\d\d?/,s=/\d*[^-_:/,()\s\d]+/,i={},o=function(r){return(r=+r)+(r>68?1900:2e3)},n=function(r){return function(a){this[r]=+a}},d=[/[+-]\d\d:?(\d\d)?|Z/,function(r){(this.zone||(this.zone={})).offset=function(a){if(!a||a==="Z")return 0;var h=a.match(/([+-]|\d\d)/g),u=60*h[1]+(+h[2]||0);return u===0?0:h[0]==="+"?-u:u}(r)}],m=function(r){var a=i[r];return a&&(a.indexOf?a:a.s.concat(a.f))},U=function(r,a){var h,u=i.meridiem;if(u){for(var D=1;D<=24;D+=1)if(r.indexOf(u(D,0,a))>-1){h=D>12;break}}else h=r===(a?"pm":"PM");return h},rt={A:[s,function(r){this.afternoon=U(r,!1)}],a:[s,function(r){this.afternoon=U(r,!0)}],Q:[g,function(r){this.month=3*(r-1)+1}],S:[g,function(r){this.milliseconds=100*+r}],SS:[t,function(r){this.milliseconds=10*+r}],SSS:[/\d{3}/,function(r){this.milliseconds=+r}],s:[e,n("seconds")],ss:[e,n("seconds")],m:[e,n("minutes")],mm:[e,n("minutes")],H:[e,n("hours")],h:[e,n("hours")],HH:[e,n("hours")],hh:[e,n("hours")],D:[e,n("day")],DD:[t,n("day")],Do:[s,function(r){var a=i.ordinal,h=r.match(/\d+/);if(this.day=h[0],a)for(var u=1;u<=31;u+=1)a(u).replace(/\[|\]/g,"")===r&&(this.day=u)}],w:[e,n("week")],ww:[t,n("week")],M:[e,n("month")],MM:[t,n("month")],MMM:[s,function(r){var a=m("months"),h=(m("monthsShort")||a.map(function(u){return u.slice(0,3)})).indexOf(r)+1;if(h<1)throw new Error;this.month=h%12||h}],MMMM:[s,function(r){var a=m("months").indexOf(r)+1;if(a<1)throw new Error;this.month=a%12||a}],Y:[/[+-]?\d+/,n("year")],YY:[t,function(r){this.year=o(r)}],YYYY:[/\d{4}/,n("year")],Z:d,ZZ:d};function nt(r){var a,h;a=r,h=i&&i.formats;for(var u=(r=a.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(b,k,p){var M=p&&p.toUpperCase();return k||h[p]||l[p]||h[M].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(x,j,z){return j||z.slice(1)})})).match(c),D=u.length,w=0;w<D;w+=1){var P=u[w],S=rt[P],Y=S&&S[0],O=S&&S[1];u[w]=O?{regex:Y,parser:O}:P.replace(/^\[|\]$/g,"")}return function(b){for(var k={},p=0,M=0;p<D;p+=1){var x=u[p];if(typeof x=="string")M+=x.length;else{var j=x.regex,z=x.parser,H=b.slice(M),A=j.exec(H)[0];z.call(k,A),b=b.replace(A,"")}}return function(C){var I=C.afternoon;if(I!==void 0){var y=C.hours;I?y<12&&(C.hours+=12):y===12&&(C.hours=0),delete C.afternoon}}(k),k}}return function(r,a,h){h.p.customParseFormat=!0,r&&r.parseTwoDigitYear&&(o=r.parseTwoDigitYear);var u=a.prototype,D=u.parse;u.parse=function(w){var P=w.date,S=w.utc,Y=w.args;this.$u=S;var O=Y[1];if(typeof O=="string"){var b=Y[2]===!0,k=Y[3]===!0,p=b||k,M=Y[2];k&&(M=Y[2]),i=this.$locale(),!b&&M&&(i=h.Ls[M]),this.$d=function(H,A,C,I){try{if(["x","X"].indexOf(A)>-1)return new Date((A==="X"?1e3:1)*H);var y=nt(A)(H),W=y.year,F=y.month,it=y.day,at=y.hours,ot=y.minutes,ht=y.seconds,ut=y.milliseconds,X=y.zone,q=y.week,$=new Date,N=it||(W||F?1:$.getDate()),Z=W||$.getFullYear(),B=0;W&&!F||(B=F>0?F-1:$.getMonth());var E,v=at||0,V=ot||0,J=ht||0,_=ut||0;return X?new Date(Date.UTC(Z,B,N,v,V,J,_+60*X.offset*1e3)):C?new Date(Date.UTC(Z,B,N,v,V,J,_)):(E=new Date(Z,B,N,v,V,J,_),q&&(E=I(E).week(q).toDate()),E)}catch{return new Date("")}}(P,O,S,h),this.init(),M&&M!==!0&&(this.$L=this.locale(M).$L),p&&P!=this.format(O)&&(this.$d=new Date("")),i={}}else if(O instanceof Array)for(var x=O.length,j=1;j<=x;j+=1){Y[1]=O[j-1];var z=h.apply(this,Y);if(z.isValid()){this.$d=z.$d,this.$L=z.$L,this.init();break}j===x&&(this.$d=new Date(""))}else D.call(this,w)}}})})(et);var yt=et.exports;const Mt=R(yt);var st={exports:{}};(function(T,L){(function(l,c){T.exports=c()})(Q,function(){return function(l,c,g){c.prototype.isBetween=function(t,e,s,i){var o=g(t),n=g(e),d=(i=i||"()")[0]==="(",m=i[1]===")";return(d?this.isAfter(o,s):!this.isBefore(o,s))&&(m?this.isBefore(n,s):!this.isAfter(n,s))||(d?this.isBefore(o,s):!this.isAfter(o,s))&&(m?this.isAfter(n,s):!this.isBefore(n,s))}}})})(st);var pt=st.exports;const Tt=R(pt);f.extend(Mt);f.extend(ft);f.extend(Tt);const gt=ct(["Your locale has not been found.","Either the locale key is not a supported one. Locales supported by dayjs are available here: https://github.com/iamkun/dayjs/tree/dev/src/locale","Or you forget to import the locale from 'dayjs/locale/{localeUsed}'","fallback on English locale"]),Dt={YY:"year",YYYY:{sectionType:"year",contentType:"digit",maxLength:4},M:{sectionType:"month",contentType:"digit",maxLength:2},MM:"month",MMM:{sectionType:"month",contentType:"letter"},MMMM:{sectionType:"month",contentType:"letter"},D:{sectionType:"day",contentType:"digit",maxLength:2},DD:"day",Do:{sectionType:"day",contentType:"digit-with-letter"},d:{sectionType:"weekDay",contentType:"digit",maxLength:2},dd:{sectionType:"weekDay",contentType:"letter"},ddd:{sectionType:"weekDay",contentType:"letter"},dddd:{sectionType:"weekDay",contentType:"letter"},A:"meridiem",a:"meridiem",H:{sectionType:"hours",contentType:"digit",maxLength:2},HH:"hours",h:{sectionType:"hours",contentType:"digit",maxLength:2},hh:"hours",m:{sectionType:"minutes",contentType:"digit",maxLength:2},mm:"minutes",s:{sectionType:"seconds",contentType:"digit",maxLength:2},ss:"seconds"},wt={year:"YYYY",month:"MMMM",monthShort:"MMM",dayOfMonth:"D",weekday:"dddd",weekdayShort:"dd",hours24h:"HH",hours12h:"hh",meridiem:"A",minutes:"mm",seconds:"ss",fullDate:"ll",fullDateWithWeekday:"dddd, LL",keyboardDate:"L",shortDate:"MMM D",normalDate:"D MMMM",normalDateWithWeekday:"ddd, MMM D",monthAndYear:"MMMM YYYY",monthAndDate:"MMMM D",fullTime:"LT",fullTime12h:"hh:mm A",fullTime24h:"HH:mm",fullDateTime:"lll",fullDateTime12h:"ll hh:mm A",fullDateTime24h:"ll HH:mm",keyboardDateTime:"L LT",keyboardDateTime12h:"L hh:mm A",keyboardDateTime24h:"L HH:mm"},G=["Missing UTC plugin","To be able to use UTC or timezones, you have to enable the `utc` plugin","Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-utc"].join(`
2
2
  `),K=["Missing timezone plugin","To be able to use timezones, you have to enable both the `utc` and the `timezone` plugin","Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-timezone"].join(`
3
3
  `),Yt=(T,L)=>L?(...l)=>T(...l).locale(L):T;class bt{constructor({locale:L,formats:l,instance:c}={}){var g;this.isMUIAdapter=!0,this.isTimezoneCompatible=!0,this.lib="dayjs",this.rawDayJsInstance=void 0,this.dayjs=void 0,this.locale=void 0,this.formats=void 0,this.escapedCharacters={start:"[",end:"]"},this.formatTokenMap=Dt,this.setLocaleToValue=t=>{const e=this.getCurrentLocaleCode();return e===t.locale()?t:t.locale(e)},this.hasUTCPlugin=()=>typeof f.utc<"u",this.hasTimezonePlugin=()=>typeof f.tz<"u",this.isSame=(t,e,s)=>{const i=this.setTimezone(e,this.getTimezone(t));return t.format(s)===i.format(s)},this.cleanTimezone=t=>{switch(t){case"default":return;case"system":return f.tz.guess();default:return t}},this.createSystemDate=t=>{if(this.rawDayJsInstance)return this.rawDayJsInstance(t);if(this.hasUTCPlugin()&&this.hasTimezonePlugin()){const e=f.tz.guess();return e!=="UTC"?f.tz(t,e):f(t)}return f(t)},this.createUTCDate=t=>{if(!this.hasUTCPlugin())throw new Error(G);return f.utc(t)},this.createTZDate=(t,e)=>{if(!this.hasUTCPlugin())throw new Error(G);if(!this.hasTimezonePlugin())throw new Error(K);const s=t!==void 0&&!t.endsWith("Z");return f(t).tz(this.cleanTimezone(e),s)},this.getLocaleFormats=()=>{const t=f.Ls,e=this.locale||"en";let s=t[e];return s===void 0&&(gt(),s=t.en),s.formats},this.adjustOffset=t=>{if(!this.hasTimezonePlugin())return t;const e=this.getTimezone(t);if(e!=="UTC"){var s,i;const o=t.tz(this.cleanTimezone(e),!0);if(((s=o.$offset)!=null?s:0)===((i=t.$offset)!=null?i:0))return t;t.$offset=o.$offset}return t},this.date=t=>t===null?null:this.dayjs(t),this.dateWithTimezone=(t,e)=>{if(t===null)return null;let s;return e==="UTC"?s=this.createUTCDate(t):e==="system"||e==="default"&&!this.hasTimezonePlugin()?s=this.createSystemDate(t):s=this.createTZDate(t,e),this.locale===void 0?s:s.locale(this.locale)},this.getTimezone=t=>{if(this.hasTimezonePlugin()){var e;const s=(e=t.$x)==null?void 0:e.$timezone;if(s)return s}return this.hasUTCPlugin()&&t.isUTC()?"UTC":"system"},this.setTimezone=(t,e)=>{if(this.getTimezone(t)===e)return t;if(e==="UTC"){if(!this.hasUTCPlugin())throw new Error(G);return t.utc()}if(e==="system")return t.local();if(!this.hasTimezonePlugin()){if(e==="default")return t;throw new Error(K)}return f.tz(t,this.cleanTimezone(e))},this.toJsDate=t=>t.toDate(),this.parseISO=t=>this.dayjs(t),this.toISO=t=>t.toISOString(),this.parse=(t,e)=>t===""?null:this.dayjs(t,e,this.locale,!0),this.getCurrentLocaleCode=()=>this.locale||"en",this.is12HourCycleInCurrentLocale=()=>/A|a/.test(this.getLocaleFormats().LT||""),this.expandFormat=t=>{const e=this.getLocaleFormats(),s=i=>i.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(o,n,d)=>n||d.slice(1));return t.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(i,o,n)=>{const d=n&&n.toUpperCase();return o||e[n]||s(e[d])})},this.getFormatHelperText=t=>this.expandFormat(t).replace(/a/gi,"(a|p)m").toLocaleLowerCase(),this.isNull=t=>t===null,this.isValid=t=>this.dayjs(t).isValid(),this.format=(t,e)=>this.formatByString(t,this.formats[e]),this.formatByString=(t,e)=>this.dayjs(t).format(e),this.formatNumber=t=>t,this.getDiff=(t,e,s)=>t.diff(e,s),this.isEqual=(t,e)=>t===null&&e===null?!0:this.dayjs(t).toDate().getTime()===this.dayjs(e).toDate().getTime(),this.isSameYear=(t,e)=>this.isSame(t,e,"YYYY"),this.isSameMonth=(t,e)=>this.isSame(t,e,"YYYY-MM"),this.isSameDay=(t,e)=>this.isSame(t,e,"YYYY-MM-DD"),this.isSameHour=(t,e)=>t.isSame(e,"hour"),this.isAfter=(t,e)=>t>e,this.isAfterYear=(t,e)=>this.hasUTCPlugin()?!this.isSameYear(t,e)&&t.utc()>e.utc():t.isAfter(e,"year"),this.isAfterDay=(t,e)=>this.hasUTCPlugin()?!this.isSameDay(t,e)&&t.utc()>e.utc():t.isAfter(e,"day"),this.isBefore=(t,e)=>t<e,this.isBeforeYear=(t,e)=>this.hasUTCPlugin()?!this.isSameYear(t,e)&&t.utc()<e.utc():t.isBefore(e,"year"),this.isBeforeDay=(t,e)=>this.hasUTCPlugin()?!this.isSameDay(t,e)&&t.utc()<e.utc():t.isBefore(e,"day"),this.isWithinRange=(t,[e,s])=>t>=e&&t<=s,this.startOfYear=t=>this.adjustOffset(t.startOf("year")),this.startOfMonth=t=>this.adjustOffset(t.startOf("month")),this.startOfWeek=t=>this.adjustOffset(t.startOf("week")),this.startOfDay=t=>this.adjustOffset(t.startOf("day")),this.endOfYear=t=>this.adjustOffset(t.endOf("year")),this.endOfMonth=t=>this.adjustOffset(t.endOf("month")),this.endOfWeek=t=>this.adjustOffset(t.endOf("week")),this.endOfDay=t=>this.adjustOffset(t.endOf("day")),this.addYears=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"year"):t.add(e,"year")),this.addMonths=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"month"):t.add(e,"month")),this.addWeeks=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"week"):t.add(e,"week")),this.addDays=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"day"):t.add(e,"day")),this.addHours=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"hour"):t.add(e,"hour")),this.addMinutes=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"minute"):t.add(e,"minute")),this.addSeconds=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"second"):t.add(e,"second")),this.getYear=t=>t.year(),this.getMonth=t=>t.month(),this.getDate=t=>t.date(),this.getHours=t=>t.hour(),this.getMinutes=t=>t.minute(),this.getSeconds=t=>t.second(),this.getMilliseconds=t=>t.millisecond(),this.setYear=(t,e)=>this.adjustOffset(t.set("year",e)),this.setMonth=(t,e)=>this.adjustOffset(t.set("month",e)),this.setDate=(t,e)=>this.adjustOffset(t.set("date",e)),this.setHours=(t,e)=>this.adjustOffset(t.set("hour",e)),this.setMinutes=(t,e)=>this.adjustOffset(t.set("minute",e)),this.setSeconds=(t,e)=>this.adjustOffset(t.set("second",e)),this.setMilliseconds=(t,e)=>this.adjustOffset(t.set("millisecond",e)),this.getDaysInMonth=t=>t.daysInMonth(),this.getNextMonth=t=>this.addMonths(t,1),this.getPreviousMonth=t=>this.addMonths(t,-1),this.getMonthArray=t=>{const s=[t.startOf("year")];for(;s.length<12;){const i=s[s.length-1];s.push(this.addMonths(i,1))}return s},this.mergeDateAndTime=(t,e)=>t.hour(e.hour()).minute(e.minute()).second(e.second()),this.getWeekdays=()=>{const t=this.dayjs().startOf("week");return[0,1,2,3,4,5,6].map(e=>this.formatByString(this.addDays(t,e),"dd"))},this.getWeekArray=t=>{const e=this.setLocaleToValue(t),s=e.startOf("month").startOf("week"),i=e.endOf("month").endOf("week");let o=0,n=s;const d=[];for(;n<i;){const m=Math.floor(o/7);d[m]=d[m]||[],d[m].push(n),n=this.addDays(n,1),o+=1}return d},this.getWeekNumber=t=>t.week(),this.getYearRange=(t,e)=>{const s=t.startOf("year"),i=e.endOf("year"),o=[];let n=s;for(;n<i;)o.push(n),n=this.addYears(n,1);return o},this.getMeridiemText=t=>t==="am"?"AM":"PM",this.rawDayJsInstance=c,this.dayjs=Yt((g=this.rawDayJsInstance)!=null?g:f,L),this.locale=L,this.formats=dt({},wt,l),f.extend(mt)}}export{bt as A};
@@ -1 +1 @@
1
- import{a9 as e,j as t}from"./vendor-mui-core-Bq8gXTan.js";import{r as a}from"./vendor-ux-did-connect-dVrbSJfQ.js";var r={},o=e;Object.defineProperty(r,"__esModule",{value:!0});var u=r.default=void 0,i=o(a()),p=t;u=r.default=(0,i.default)((0,p.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");export{u as d};
1
+ import{a9 as e,j as t}from"./vendor-mui-core-Bq8gXTan.js";import{r as a}from"./vendor-ux-did-connect-ETVwYaIV.js";var r={},o=e;Object.defineProperty(r,"__esModule",{value:!0});var u=r.default=void 0,i=o(a()),p=t;u=r.default=(0,i.default)((0,p.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");export{u as d};
@@ -1 +1 @@
1
- import{a9 as r,j as t}from"./vendor-mui-core-Bq8gXTan.js";import{r as a}from"./vendor-ux-did-connect-dVrbSJfQ.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),l=t;u=e.default=(0,i.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{u as d};
1
+ import{a9 as r,j as t}from"./vendor-mui-core-Bq8gXTan.js";import{r as a}from"./vendor-ux-did-connect-ETVwYaIV.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),l=t;u=e.default=(0,i.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{u as d};
@@ -1 +1 @@
1
- import{a9 as r,j as t}from"./vendor-mui-core-Bq8gXTan.js";import{r as a}from"./vendor-ux-did-connect-dVrbSJfQ.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,f=o(a()),i=t;u=e.default=(0,f.default)((0,i.jsx)("path",{d:"M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z"}),"ChevronLeft");export{u as d};
1
+ import{a9 as r,j as t}from"./vendor-mui-core-Bq8gXTan.js";import{r as a}from"./vendor-ux-did-connect-ETVwYaIV.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,f=o(a()),i=t;u=e.default=(0,f.default)((0,i.jsx)("path",{d:"M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z"}),"ChevronLeft");export{u as d};
@@ -1 +1 @@
1
- import{a9 as r,j as t}from"./vendor-mui-core-Bq8gXTan.js";import{r as a}from"./vendor-ux-did-connect-dVrbSJfQ.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),v=t;u=e.default=(0,i.default)((0,v.jsx)("path",{d:"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}),"ChevronRight");export{u as d};
1
+ import{a9 as r,j as t}from"./vendor-mui-core-Bq8gXTan.js";import{r as a}from"./vendor-ux-did-connect-ETVwYaIV.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),v=t;u=e.default=(0,i.default)((0,v.jsx)("path",{d:"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}),"ChevronRight");export{u as d};
@@ -1 +1 @@
1
- import{a9 as t,j as r}from"./vendor-mui-core-Bq8gXTan.js";import{r as a}from"./vendor-ux-did-connect-dVrbSJfQ.js";var e={},u=t;Object.defineProperty(e,"__esModule",{value:!0});var o=e.default=void 0,i=u(a()),l=r;o=e.default=(0,i.default)((0,l.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM8 9h8v10H8zm7.5-5-1-1h-5l-1 1H5v2h14V4z"}),"DeleteOutline");export{o as d};
1
+ import{a9 as t,j as r}from"./vendor-mui-core-Bq8gXTan.js";import{r as a}from"./vendor-ux-did-connect-ETVwYaIV.js";var e={},u=t;Object.defineProperty(e,"__esModule",{value:!0});var o=e.default=void 0,i=u(a()),l=r;o=e.default=(0,i.default)((0,l.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM8 9h8v10H8zm7.5-5-1-1h-5l-1 1H5v2h14V4z"}),"DeleteOutline");export{o as d};
@@ -1 +1 @@
1
- import{a9 as r,j as t}from"./vendor-mui-core-Bq8gXTan.js";import{r as a}from"./vendor-ux-did-connect-dVrbSJfQ.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),l=t;u=e.default=(0,i.default)((0,l.jsx)("path",{d:"M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z"}),"Done");export{u as d};
1
+ import{a9 as r,j as t}from"./vendor-mui-core-Bq8gXTan.js";import{r as a}from"./vendor-ux-did-connect-ETVwYaIV.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),l=t;u=e.default=(0,i.default)((0,l.jsx)("path",{d:"M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z"}),"Done");export{u as d};
@@ -1 +1 @@
1
- import{a9 as r,j as a}from"./vendor-mui-core-Bq8gXTan.js";import{r as t}from"./vendor-ux-did-connect-dVrbSJfQ.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,d=o(t()),i=a;u=e.default=(0,d.default)((0,i.jsx)("path",{d:"M5 20h14v-2H5zM19 9h-4V3H9v6H5l7 7z"}),"Download");export{u as d};
1
+ import{a9 as r,j as a}from"./vendor-mui-core-Bq8gXTan.js";import{r as t}from"./vendor-ux-did-connect-ETVwYaIV.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,d=o(t()),i=a;u=e.default=(0,d.default)((0,i.jsx)("path",{d:"M5 20h14v-2H5zM19 9h-4V3H9v6H5l7 7z"}),"Download");export{u as d};
@@ -1 +1 @@
1
- import{a9 as r,j as t}from"./vendor-mui-core-Bq8gXTan.js";import{r as a}from"./vendor-ux-did-connect-dVrbSJfQ.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),d=t;u=e.default=(0,i.default)((0,d.jsx)("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z"}),"Edit");export{u as d};
1
+ import{a9 as r,j as t}from"./vendor-mui-core-Bq8gXTan.js";import{r as a}from"./vendor-ux-did-connect-ETVwYaIV.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),d=t;u=e.default=(0,i.default)((0,d.jsx)("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z"}),"Edit");export{u as d};
@@ -1 +1 @@
1
- import{a9 as e,j as t}from"./vendor-mui-core-Bq8gXTan.js";import{r as a}from"./vendor-ux-did-connect-dVrbSJfQ.js";var r={},o=e;Object.defineProperty(r,"__esModule",{value:!0});var u=r.default=void 0,i=o(a()),s=t;u=r.default=(0,i.default)((0,s.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z"}),"Error");export{u as d};
1
+ import{a9 as e,j as t}from"./vendor-mui-core-Bq8gXTan.js";import{r as a}from"./vendor-ux-did-connect-ETVwYaIV.js";var r={},o=e;Object.defineProperty(r,"__esModule",{value:!0});var u=r.default=void 0,i=o(a()),s=t;u=r.default=(0,i.default)((0,s.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z"}),"Error");export{u as d};
@@ -1 +1 @@
1
- import{a9 as r,j as a}from"./vendor-mui-core-Bq8gXTan.js";import{r as t}from"./vendor-ux-did-connect-dVrbSJfQ.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var s=e.default=void 0,u=o(t()),d=a;s=e.default=(0,u.default)((0,d.jsx)("path",{d:"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"}),"ExpandLess");export{s as d};
1
+ import{a9 as r,j as a}from"./vendor-mui-core-Bq8gXTan.js";import{r as t}from"./vendor-ux-did-connect-ETVwYaIV.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var s=e.default=void 0,u=o(t()),d=a;s=e.default=(0,u.default)((0,d.jsx)("path",{d:"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"}),"ExpandLess");export{s as d};