@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.
- package/api/cache.js +36 -21
- package/api/libs/connect/session.js +8 -275
- package/api/libs/kyc.js +1 -1
- package/api/middlewares/proxy-to-daemon.js +6 -2
- package/api/routes/blocklet.js +25 -5
- package/api/routes/dns-resolver.js +1 -1
- package/api/routes/env.js +2 -1
- package/api/routes/oauth/client.js +2 -1
- package/api/routes/user.js +1 -2
- package/api/services/auth/connect/bind-wallet.js +2 -44
- package/api/services/auth/connect/gen-access-key.js +1 -1
- package/api/services/auth/connect/invite.js +1 -1
- package/api/services/auth/connect/issue-passport.js +1 -1
- package/api/services/auth/connect/verify-destroy.js +9 -8
- package/api/services/auth/connect/verify-elevated.js +15 -11
- package/api/services/auth/passport.js +20 -7
- package/api/services/auth/session.js +3 -3
- package/api/services/oauth/client.js +1 -179
- package/api/services/oauth/server.js +2 -1
- package/api/socket/channel/did.js +2 -2
- package/api/util/federated.js +1 -12
- package/dist/assets/{AdapterDayjs-Dvf_tKNm.js → AdapterDayjs-Cnt9tqu2.js} +1 -1
- package/dist/assets/{ArrowDropDown-w902LDz5.js → ArrowDropDown-BMwBndHf.js} +1 -1
- package/dist/assets/{CheckCircle-DKLAiayP.js → CheckCircle-41Yqmlux.js} +1 -1
- package/dist/assets/{ChevronLeft-DoQQtCAX.js → ChevronLeft-CLsrCaxE.js} +1 -1
- package/dist/assets/{ChevronRight-Ch_6RLsY.js → ChevronRight-BVlAyY8t.js} +1 -1
- package/dist/assets/{DeleteOutline-CPVsjCvJ.js → DeleteOutline-5003D11l.js} +1 -1
- package/dist/assets/{Done-C5C8-4SV.js → Done-LE-14AsK.js} +1 -1
- package/dist/assets/{Download-DqajrKRK.js → Download-BGEarAho.js} +1 -1
- package/dist/assets/{Edit-D_qzRYqq.js → Edit-CrL54Zhc.js} +1 -1
- package/dist/assets/{Error-KxELF1Nr.js → Error-quFZHb54.js} +1 -1
- package/dist/assets/{ExpandLess-JVHHKQQZ.js → ExpandLess-DJGiqXwX.js} +1 -1
- package/dist/assets/{Google-BBqC-Muc.js → Google-woDe3URG.js} +1 -1
- package/dist/assets/{Home-DD-eYV7C.js → Home-C0Jy-iyL.js} +1 -1
- package/dist/assets/{InfoOutlined-CEh25_NY.js → InfoOutlined-3bCMdMdL.js} +1 -1
- package/dist/assets/{Launch-Cs8Cmdb_.js → Launch-DrVQ-_LF.js} +1 -1
- package/dist/assets/{LaunchOutlined-CH9e3hkq.js → LaunchOutlined-DCRD1Xd5.js} +1 -1
- package/dist/assets/{MoreHoriz-Cpg0a_lm.js → MoreHoriz-CCqkD-2X.js} +1 -1
- package/dist/assets/{PlayArrow-Hu915_DX.js → PlayArrow-b0SwYNYM.js} +1 -1
- package/dist/assets/{TuneOutlined-DRDP7kDe.js → TuneOutlined-CfZi6Ajz.js} +1 -1
- package/dist/assets/{ViewList-DN8B89Ry.js → ViewList-DHazaGfw.js} +1 -1
- package/dist/assets/{access-control-MsBNowAW.js → access-control-CrHHfd-3.js} +1 -1
- package/dist/assets/{actions-CcWHhKZq.js → actions-DP5QUAr6.js} +1 -1
- package/dist/assets/add-component-core-8M0C-Kp3.js +768 -0
- package/dist/assets/{add-resource-LwzRr27k.js → add-resource-BTg7Qs0I.js} +1 -1
- package/dist/assets/{addon-Dju3pjTL.js → addon-BKkiKK74.js} +1 -1
- package/dist/assets/{advanced-DYaxCBlN.js → advanced-BaQVvy3K.js} +2 -2
- package/dist/assets/api-87p2GGd0.js +1 -0
- package/dist/assets/{appearance-A-FJhFPq.js → appearance-CuPgS_bN.js} +1 -1
- package/dist/assets/{ar-D9QEDjY-.js → ar-C_PbiO-w.js} +1 -1
- package/dist/assets/{audit-logs-Cs45RZoE.js → audit-logs-CUC_aqut.js} +2 -2
- package/dist/assets/{authorize-fdrPc1Nd.js → authorize-DCQNYqJl.js} +1 -1
- package/dist/assets/{base-chart-DIErGYHN.js → base-chart-C2FJuVG1.js} +1 -1
- package/dist/assets/{base32-Do9iD28a.js → base32-CRxHrKOV.js} +1 -1
- package/dist/assets/{branding-CT66qulY.js → branding-Di3by3dx.js} +2 -2
- package/dist/assets/{branding-OfbhdEgY.js → branding-DrCX9AmH.js} +1 -1
- package/dist/assets/{bundle-avatar-LAkmelll.js → bundle-avatar-hjU0GiOA.js} +1 -1
- package/dist/assets/{button-B_vgCyye.js → button-BWISngjs.js} +1 -1
- package/dist/assets/{click-to-copy-BfYfYud0.js → click-to-copy-DoEzJWuJ.js} +1 -1
- package/dist/assets/{cloneDeep-ro06l5HL.js → cloneDeep-Jl_OPbSo.js} +1 -1
- package/dist/assets/{collapse-DRY-fGId.js → collapse-QPZHNi8E.js} +1 -1
- package/dist/assets/{complete-kFFCUlMp.js → complete-EC4tK63r.js} +1 -1
- package/dist/assets/{component-DkUWDmEA.js → component-D9Dwvz3W.js} +3 -3
- package/dist/assets/{config-WtCW9USL.js → config-BMkCrsxC.js} +1 -1
- package/dist/assets/{config-Dw2MWXp7.js → config-OasAWfj3.js} +1 -1
- package/dist/assets/{config-navigation-DxvpF5im.js → config-navigation-BRSxDGox.js} +6 -6
- package/dist/assets/{config-space-CU10Rw2i.js → config-space-DlI-IdsO.js} +1 -1
- package/dist/assets/{confirm-Vh9bFw1L.js → confirm-C3U-iZgd.js} +1 -1
- package/dist/assets/connect-2DXv3-VS.js +5 -0
- package/dist/assets/{connect-lFo0rnUJ.js → connect-CJtKCJvL.js} +1 -1
- package/dist/assets/{connect-to-1dd-PxCa.js → connect-to-DJWMCDWB.js} +1 -1
- package/dist/assets/{dashboard-BS4bpY03.js → dashboard-Dswj6QO1.js} +3 -3
- package/dist/assets/{de-BOa43YBF.js → de-m_nuB8Qa.js} +1 -1
- package/dist/assets/{delete-confirm-CzUZlQMV.js → delete-confirm-BPN0b1Ew.js} +1 -1
- package/dist/assets/{did-address-Ca4O6-Gb.js → did-address-BW7HQteV.js} +1 -1
- package/dist/assets/{domain-action-card-BxEOdRG6.js → domain-action-card-DK0_bx6-.js} +2 -2
- package/dist/assets/{domain-CcapWTGW.js → domain-i1NE8m1K.js} +1 -1
- package/dist/assets/domains-CDhyGAuz.js +1 -0
- package/dist/assets/{dot-ClH4jhsr.js → dot-iw3hN9HL.js} +1 -1
- package/dist/assets/{email-BKF-qRvM.js → email-DLukryRf.js} +1 -1
- package/dist/assets/{es-A3ma-OJp.js → es-BrT673RG.js} +1 -1
- package/dist/assets/{exchange-passport-C05YacXz.js → exchange-passport-CtBW8-z_.js} +1 -1
- package/dist/assets/{fr-I3xKp6I5.js → fr-BmbyLkZB.js} +1 -1
- package/dist/assets/{fuel-D5i0LwEE.js → fuel-TZdSL_3D.js} +1 -1
- package/dist/assets/{gen-access-key-OYE9vkTV.js → gen-access-key-CqRouazq.js} +1 -1
- package/dist/assets/{get-safe-url-CJuFtnAD.js → get-safe-url-CROWoUui.js} +1 -1
- package/dist/assets/{get-safe-url-ClddTGUv.js → get-safe-url-DPUvqYEg.js} +1 -1
- package/dist/assets/{hi-DacRhM8A.js → hi-CL8_a9An.js} +1 -1
- package/dist/assets/{home-DR0M74FO.js → home-hnxCx6H0.js} +1 -1
- package/dist/assets/{id-B7LQAHL7.js → id-DkcL27A7.js} +1 -1
- package/dist/assets/{iframe-CymxKzen.js → iframe-BB2MTAjn.js} +1 -1
- package/dist/assets/{index-BbupHZzB.js → index-B6fg0S6c.js} +1 -1
- package/dist/assets/{index-Cphaf-Ek.js → index-BAbxWghb.js} +9 -9
- package/dist/assets/{index-BpvW-cUy.js → index-BCtTVvHw.js} +1 -1
- package/dist/assets/{index-BJQsWjyx.js → index-BVBJxqPd.js} +4 -4
- package/dist/assets/{index-CRe5KsOj.js → index-BXRM3Fxt.js} +1 -1
- package/dist/assets/{index-iO-8g74B.js → index-BdgSI0pZ.js} +1 -1
- package/dist/assets/{index-BTKm4T5J.js → index-C-reBQ41.js} +1 -1
- package/dist/assets/{index-Hgoqly4p.js → index-C5pIrCeP.js} +3 -3
- package/dist/assets/{index--zVoF7lp.js → index-CIN38Uuw.js} +1 -1
- package/dist/assets/{index-Dntq1ezd.js → index-CKY4HT0P.js} +1 -1
- package/dist/assets/{index-BSIauQNZ.js → index-C_MX-sJs.js} +4 -4
- package/dist/assets/{index-B354cP6P.js → index-CcRZdZB8.js} +1 -1
- package/dist/assets/{index-CMXod_BF.js → index-ClKx_csi.js} +1 -1
- package/dist/assets/{index-DqYKLMVq.js → index-CnSfgOR1.js} +1 -1
- package/dist/assets/{index-D5uPwJ6o.js → index-CsA1GkvG.js} +1 -1
- package/dist/assets/{index-BtF2_mmu.js → index-D3Sj3zCK.js} +1 -1
- package/dist/assets/{index-CaercczO.js → index-OIQ3e2Ld.js} +1 -1
- package/dist/assets/{index-DGclkoMp.js → index-S_bysQ3H.js} +1 -1
- package/dist/assets/{index-6_wWEItq.js → index-gRIImn2q.js} +51 -51
- package/dist/assets/{index-DZfl-BHr.js → index-vo14BOSK.js} +1 -1
- package/dist/assets/{index-DJmmHgxv.js → index-zlAFuATT.js} +1 -1
- package/dist/assets/{invitation-CHKJRReb.js → invitation-BvT07MYl.js} +1 -1
- package/dist/assets/{invite-BIyTLjFG.js → invite-rbOwUpQz.js} +1 -1
- package/dist/assets/{issue-passport-D_1dgjgm.js → issue-passport-DqDO2lOV.js} +1 -1
- package/dist/assets/{item-Cvm3RZ4-.js → item-Kx7a4SrL.js} +1 -1
- package/dist/assets/{ja-DRQ4Eecl.js → ja-BVJLb0qY.js} +1 -1
- package/dist/assets/{ko-CzL3UzwL.js → ko-Dd2Xcc8p.js} +1 -1
- package/dist/assets/{layout-7LZ3RpDb.js → layout-veO5MoKq.js} +1 -1
- package/dist/assets/{list-Bz8uJNpj.js → list-CzMORzTV.js} +1 -1
- package/dist/assets/{list-CqGQfIx9.js → list-fB7PuMGP.js} +2 -2
- package/dist/assets/localization-CWcvfX_h.js +1 -0
- package/dist/assets/{log-CEcMfPWb.js → log-DFvq1Ya8.js} +1 -1
- package/dist/assets/{logger-DMlN-IbM.js → logger-Ch0sfkGE.js} +1 -1
- package/dist/assets/{login-y0a0ypm7.js → login-Cc4U4UbE.js} +1 -1
- package/dist/assets/{login-oauth-callback-CnAgJXgp.js → login-oauth-callback-BH3tsO_b.js} +1 -1
- package/dist/assets/{logo-uploader-BAsVxZ3U.js → logo-uploader-BfnTtNB4.js} +3 -3
- package/dist/assets/lost-passport-CEk2gBj4.js +168 -0
- package/dist/assets/{omit-O1pUD7ku.js → omit-BlzmxIB5.js} +1 -1
- package/dist/assets/{open-window-B-GejaY2.js → open-window-DNB3B3k8.js} +1 -1
- package/dist/assets/{overview-V76wvba7.js → overview-DqaHfHTX.js} +1 -1
- package/dist/assets/{page-header-huQjTQSw.js → page-header-DmVEhivC.js} +1 -1
- package/dist/assets/{passport-item-tcnz8j0r.js → passport-item-Dw5vAzG8.js} +1 -1
- package/dist/assets/{permission-BfejVUva.js → permission-CmSuLv3N.js} +1 -1
- package/dist/assets/{preferences-6lvT1ugx.js → preferences-DoIPeyXx.js} +1 -1
- package/dist/assets/{profile-embed-BqPZ87OZ.js → profile-embed-BzGFlRQR.js} +1 -1
- package/dist/assets/{pt-CHKumXYv.js → pt-BfbUt_Nx.js} +1 -1
- package/dist/assets/publish-resource-Dbw9ICt4.js +1 -0
- package/dist/assets/{react-beautiful-dnd.esm-Btnab_OF.js → react-beautiful-dnd.esm-B9_jlyiB.js} +1 -1
- package/dist/assets/{ru-CvkEKhgU.js → ru-uXrAFAz0.js} +1 -1
- package/dist/assets/{runtime-qegegcsI.js → runtime-D90jDC3r.js} +1 -1
- package/dist/assets/{sanitize-DbZs1H_T.js → sanitize-B18rcrOf.js} +1 -1
- package/dist/assets/sdk-DDQwgEwY.js +1 -0
- package/dist/assets/{security-Cxiq1ziT.js → security-D8kq04bN.js} +1 -1
- package/dist/assets/{session-CwC5SgVz.js → session-igceijP1.js} +1 -1
- package/dist/assets/setup-n8Ikg3vS.js +30 -0
- package/dist/assets/{spaces-Cgazj3bm.js → spaces-DVZd70Fi.js} +1 -1
- package/dist/assets/{start-FFKcgzTb.js → start-YvnbU7Eo.js} +1 -1
- package/dist/assets/{starting-progress-CKWusmmh.js → starting-progress-BOsNmsFB.js} +1 -1
- package/dist/assets/{status-D98jk27v.js → status-BGmXEfM-.js} +1 -1
- package/dist/assets/{step-actions-Cp7vl1Uh.js → step-actions-_L8XSfG4.js} +1 -1
- package/dist/assets/{studio-CvtVT5aS.js → studio-BImlv1KI.js} +1 -1
- package/dist/assets/{switch-control-DCl96cpf.js → switch-control-CGm8CkkK.js} +1 -1
- package/dist/assets/{table-tips-DdnbF0LB.js → table-tips-C8uXQ5tF.js} +1 -1
- package/dist/assets/{th-B2BUfjNJ.js → th-BnT_StPj.js} +1 -1
- package/dist/assets/{traffic-Bf1b6xSQ.js → traffic-NFBtntJ-.js} +1 -1
- package/dist/assets/{transfer-ChzHdW_I.js → transfer-CJjNcsEy.js} +1 -1
- package/dist/assets/{unsubscribe-CRSsqbPw.js → unsubscribe-Co6pOu2N.js} +1 -1
- package/dist/assets/{use-blocklet-logo-D73B-sw0.js → use-blocklet-logo-BUV6ER3X.js} +1 -1
- package/dist/assets/{useAsync-B6ZHbOEG.js → useAsync-DVHp96Uu.js} +1 -1
- package/dist/assets/{useLocalStorage-B85cd9HR.js → useLocalStorage-Cw7tZL-P.js} +1 -1
- package/dist/assets/{user-center-h3PNeVcw.js → user-center-CHyAfsyF.js} +3 -3
- package/dist/assets/{util-B5wObXV8.js → util-BKry4J3y.js} +1 -1
- package/dist/assets/{util-SfP61JNJ.js → util-BfQiNudG.js} +1 -1
- package/dist/assets/{vendor-arcblock-qCd0o3Hz.js → vendor-arcblock-Cspz6Fmz.js} +14 -14
- package/dist/assets/{vendor-hooks-BCm626KH.js → vendor-hooks-BFlOfe0M.js} +1 -1
- package/dist/assets/vendor-utils-BotmZdBm.js +208 -0
- package/dist/assets/{vendor-ux-did-connect-dVrbSJfQ.js → vendor-ux-did-connect-ETVwYaIV.js} +91 -92
- package/dist/assets/{vi-BykmwIAT.js → vi-DmitUjjk.js} +1 -1
- package/dist/assets/wrap-locale-ugI1o5oc.js +1 -0
- package/dist/assets/{zh-CbCaOuAd.js → zh-syG1cNt6.js} +2 -2
- package/dist/assets/{zh-tw-C9JfiCVV.js → zh-tw-DnHJQaoN.js} +1 -1
- package/dist/index.html +5 -5
- package/dist/service-worker.js +1 -1
- package/package.json +34 -34
- package/api/libs/auth/utils.js +0 -159
- package/dist/assets/add-component-core-C3s0hRWv.js +0 -768
- package/dist/assets/api-CQoRx33p.js +0 -1
- package/dist/assets/connect-Cg0d_ebx.js +0 -5
- package/dist/assets/domains-C9MeMLdA.js +0 -1
- package/dist/assets/localization-gg0fgyqC.js +0 -1
- package/dist/assets/lost-passport-D-GKwrh2.js +0 -168
- package/dist/assets/publish-resource-BqdiC6O1.js +0 -1
- package/dist/assets/sdk-DOmS9lyP.js +0 -1
- package/dist/assets/setup-Dilg0too.js +0 -30
- package/dist/assets/vendor-utils-B3iZkn2R.js +0 -208
- package/dist/assets/wrap-locale-C5884ev0.js +0 -1
|
@@ -1,48 +1,6 @@
|
|
|
1
|
-
const {
|
|
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,
|
|
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,
|
|
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({
|
|
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
|
|
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
|
-
|
|
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
|
|
24
|
-
|
|
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({
|
|
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
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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,
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
23
|
+
res.json(status);
|
|
24
|
+
} catch (err) {
|
|
25
|
+
logger.error('failed to get passport status', { teamDid, userDid, vcId, locale, err });
|
|
17
26
|
|
|
18
|
-
|
|
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,
|
|
116
|
+
await req.ensureUser({ token, appPid, blockletInfo, visitorId });
|
|
117
117
|
}
|
|
118
118
|
if (!req.user) {
|
|
119
|
-
res.json({
|
|
119
|
+
res.status(401).json({ error: 'not login' });
|
|
120
120
|
return;
|
|
121
121
|
}
|
|
122
122
|
|
|
@@ -1,182 +1,4 @@
|
|
|
1
|
-
const {
|
|
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.
|
|
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((
|
|
477
|
-
return sendEmail(
|
|
476
|
+
receivers.map((receiverItem) => {
|
|
477
|
+
return sendEmail(receiverItem, notifications[0], {
|
|
478
478
|
teamDid: sender.appDid,
|
|
479
479
|
node,
|
|
480
480
|
locale,
|
package/api/util/federated.js
CHANGED
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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};
|