@cedros/login-react 0.0.14 → 0.0.16
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/dist/{AuthenticationSettings-vowmQPXz.js → AuthenticationSettings-BipaLyGg.js} +20 -20
- package/dist/{AuthenticationSettings-vowmQPXz.js.map → AuthenticationSettings-BipaLyGg.js.map} +1 -1
- package/dist/{AuthenticationSettings-D739nNul.cjs → AuthenticationSettings-Cb80XWPm.cjs} +1 -1
- package/dist/{AuthenticationSettings-D739nNul.cjs.map → AuthenticationSettings-Cb80XWPm.cjs.map} +1 -1
- package/dist/{AuthenticationSettings-Dx3JCI3m.js → AuthenticationSettings-Cfn0No6U.js} +1 -1
- package/dist/{AuthenticationSettings-Dx3JCI3m.js.map → AuthenticationSettings-Cfn0No6U.js.map} +1 -1
- package/dist/{AuthenticationSettings-DtLoxQ2z.cjs → AuthenticationSettings-Cu0S0Z7s.cjs} +1 -1
- package/dist/{AuthenticationSettings-DtLoxQ2z.cjs.map → AuthenticationSettings-Cu0S0Z7s.cjs.map} +1 -1
- package/dist/{AutosaveStatus-Ciyt350A.js → AutosaveStatus-BKc7T2Tw.js} +323 -248
- package/dist/AutosaveStatus-BKc7T2Tw.js.map +1 -0
- package/dist/AutosaveStatus-BjLMt52a.cjs +1 -0
- package/dist/AutosaveStatus-BjLMt52a.cjs.map +1 -0
- package/dist/{CreditSystemSettings-BQ3h4CyM.js → CreditSystemSettings-CvcacgMM.js} +1 -1
- package/dist/{CreditSystemSettings-BQ3h4CyM.js.map → CreditSystemSettings-CvcacgMM.js.map} +1 -1
- package/dist/{CreditSystemSettings-bVuNLsqp.js → CreditSystemSettings-D13lZbIw.js} +1 -1
- package/dist/{CreditSystemSettings-bVuNLsqp.js.map → CreditSystemSettings-D13lZbIw.js.map} +1 -1
- package/dist/{CreditSystemSettings-CBot8EPW.cjs → CreditSystemSettings-DO-dUcxN.cjs} +1 -1
- package/dist/{CreditSystemSettings-CBot8EPW.cjs.map → CreditSystemSettings-DO-dUcxN.cjs.map} +1 -1
- package/dist/{CreditSystemSettings-C6dUsu72.cjs → CreditSystemSettings-DV0VkPIe.cjs} +1 -1
- package/dist/{CreditSystemSettings-C6dUsu72.cjs.map → CreditSystemSettings-DV0VkPIe.cjs.map} +1 -1
- package/dist/{EmailRegisterForm-Pvm3I8GP.cjs → EmailRegisterForm-DcpT5LU6.cjs} +1 -1
- package/dist/{EmailRegisterForm-Pvm3I8GP.cjs.map → EmailRegisterForm-DcpT5LU6.cjs.map} +1 -1
- package/dist/{EmailRegisterForm-nI0BOIxR.js → EmailRegisterForm-HMcnD3KA.js} +1 -1
- package/dist/{EmailRegisterForm-nI0BOIxR.js.map → EmailRegisterForm-HMcnD3KA.js.map} +1 -1
- package/dist/{EmailSettings-B9qwPSiM.cjs → EmailSettings-BkR7vlWL.cjs} +1 -1
- package/dist/{EmailSettings-B9qwPSiM.cjs.map → EmailSettings-BkR7vlWL.cjs.map} +1 -1
- package/dist/EmailSettings-CLMdw3rB.js +78 -0
- package/dist/EmailSettings-CLMdw3rB.js.map +1 -0
- package/dist/EmailSettings-Dq3mfUr2.cjs +1 -0
- package/dist/EmailSettings-Dq3mfUr2.cjs.map +1 -0
- package/dist/{EmailSettings-mxlKNcPl.js → EmailSettings-ulEHtH2y.js} +1 -1
- package/dist/{EmailSettings-mxlKNcPl.js.map → EmailSettings-ulEHtH2y.js.map} +1 -1
- package/dist/{EmbeddedWalletSettings-BInZvFZf.js → EmbeddedWalletSettings-BTTV8Nqi.js} +46 -31
- package/dist/EmbeddedWalletSettings-BTTV8Nqi.js.map +1 -0
- package/dist/EmbeddedWalletSettings-C7H0E8Uz.cjs +1 -0
- package/dist/EmbeddedWalletSettings-C7H0E8Uz.cjs.map +1 -0
- package/dist/{EmbeddedWalletSettings-CXlZFFDw.js → EmbeddedWalletSettings-CLWh2TbV.js} +1 -1
- package/dist/{EmbeddedWalletSettings-CXlZFFDw.js.map → EmbeddedWalletSettings-CLWh2TbV.js.map} +1 -1
- package/dist/{EmbeddedWalletSettings-D5JXae1L.cjs → EmbeddedWalletSettings-DGmCVyex.cjs} +1 -1
- package/dist/{EmbeddedWalletSettings-D5JXae1L.cjs.map → EmbeddedWalletSettings-DGmCVyex.cjs.map} +1 -1
- package/dist/PermissionsSection-BPbE-hNx.cjs.map +1 -1
- package/dist/PermissionsSection-CighC1p6.js.map +1 -1
- package/dist/{ServerSettings-CYTlQ2xy.cjs → ServerSettings-CPAoiDtn.cjs} +1 -1
- package/dist/{ServerSettings-CYTlQ2xy.cjs.map → ServerSettings-CPAoiDtn.cjs.map} +1 -1
- package/dist/ServerSettings-Ch8MCmAY.js +91 -0
- package/dist/ServerSettings-Ch8MCmAY.js.map +1 -0
- package/dist/ServerSettings-CqDd59iM.cjs +1 -0
- package/dist/ServerSettings-CqDd59iM.cjs.map +1 -0
- package/dist/{ServerSettings-pSmWDC1d.js → ServerSettings-DooVeOet.js} +1 -1
- package/dist/{ServerSettings-pSmWDC1d.js.map → ServerSettings-DooVeOet.js.map} +1 -1
- package/dist/{WebhookSettings-Bb70MbFj.js → WebhookSettings-B6mjH90_.js} +1 -1
- package/dist/{WebhookSettings-Bb70MbFj.js.map → WebhookSettings-B6mjH90_.js.map} +1 -1
- package/dist/WebhookSettings-BG77iqJC.js +63 -0
- package/dist/WebhookSettings-BG77iqJC.js.map +1 -0
- package/dist/{WebhookSettings-CGyDKjrm.cjs → WebhookSettings-BeiUAcKs.cjs} +1 -1
- package/dist/{WebhookSettings-CGyDKjrm.cjs.map → WebhookSettings-BeiUAcKs.cjs.map} +1 -1
- package/dist/WebhookSettings-WMJ5zPjY.cjs +1 -0
- package/dist/WebhookSettings-WMJ5zPjY.cjs.map +1 -0
- package/dist/admin-only.cjs +1 -1
- package/dist/admin-only.d.ts +109 -14
- package/dist/admin-only.js +4 -3
- package/dist/email-only.cjs +1 -1
- package/dist/email-only.d.ts +56 -6
- package/dist/email-only.js +2 -2
- package/dist/google-only.cjs +1 -1
- package/dist/google-only.d.ts +56 -6
- package/dist/google-only.js +1 -1
- package/dist/index.cjs +13 -13
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +330 -34
- package/dist/index.js +2505 -3559
- package/dist/index.js.map +1 -1
- package/dist/login-react.css +1 -1
- package/dist/mobileWalletAdapter-Dp4yFxCm.cjs +1 -0
- package/dist/mobileWalletAdapter-Dp4yFxCm.cjs.map +1 -0
- package/dist/mobileWalletAdapter-coZRD4Yx.js +291 -0
- package/dist/mobileWalletAdapter-coZRD4Yx.js.map +1 -0
- package/dist/{plugin-8_dpq7tC.cjs → plugin-BgMAc6DA.cjs} +1 -1
- package/dist/{plugin-8_dpq7tC.cjs.map → plugin-BgMAc6DA.cjs.map} +1 -1
- package/dist/{plugin-D1NdppqC.js → plugin-Bhf9zaly.js} +82 -70
- package/dist/{plugin-D1NdppqC.js.map → plugin-Bhf9zaly.js.map} +1 -1
- package/dist/{shamir-L-s-Tp1Z.js → shamir-CDbZS8I1.js} +1 -1
- package/dist/{shamir-L-s-Tp1Z.js.map → shamir-CDbZS8I1.js.map} +1 -1
- package/dist/{shamir-4DyQMJCk.cjs → shamir-DAa54dMh.cjs} +1 -1
- package/dist/{shamir-4DyQMJCk.cjs.map → shamir-DAa54dMh.cjs.map} +1 -1
- package/dist/{silentWalletEnroll-DWt6Pr3B.js → silentWalletEnroll-CRHzr4Zy.js} +2 -2
- package/dist/{silentWalletEnroll-DWt6Pr3B.js.map → silentWalletEnroll-CRHzr4Zy.js.map} +1 -1
- package/dist/{silentWalletEnroll-BgTb4H5I.cjs → silentWalletEnroll-Dl_oFapH.cjs} +1 -1
- package/dist/{silentWalletEnroll-BgTb4H5I.cjs.map → silentWalletEnroll-Dl_oFapH.cjs.map} +1 -1
- package/dist/solana-only.cjs +1 -1
- package/dist/solana-only.d.ts +112 -6
- package/dist/solana-only.js +6 -5
- package/dist/{useAuth-C3dpk0po.js → useAuth-D1NSN6yY.js} +822 -777
- package/dist/useAuth-D1NSN6yY.js.map +1 -0
- package/dist/{useAuth-D3Pk_H3z.cjs → useAuth-dS_6wAMp.cjs} +1 -1
- package/dist/useAuth-dS_6wAMp.cjs.map +1 -0
- package/package.json +4 -1
- package/dist/AutosaveStatus-CCrZszKA.cjs +0 -1
- package/dist/AutosaveStatus-CCrZszKA.cjs.map +0 -1
- package/dist/AutosaveStatus-Ciyt350A.js.map +0 -1
- package/dist/EmailSettings-CCA8dNCi.js +0 -17
- package/dist/EmailSettings-CCA8dNCi.js.map +0 -1
- package/dist/EmailSettings-RbgAq9FB.cjs +0 -1
- package/dist/EmailSettings-RbgAq9FB.cjs.map +0 -1
- package/dist/EmbeddedWalletSettings-B4h-8rxB.cjs +0 -1
- package/dist/EmbeddedWalletSettings-B4h-8rxB.cjs.map +0 -1
- package/dist/EmbeddedWalletSettings-BInZvFZf.js.map +0 -1
- package/dist/ServerSettings-BE8fsE5k.js +0 -84
- package/dist/ServerSettings-BE8fsE5k.js.map +0 -1
- package/dist/ServerSettings-DFs9jQ3f.cjs +0 -1
- package/dist/ServerSettings-DFs9jQ3f.cjs.map +0 -1
- package/dist/SettingsPageLayout--GZ_iHLc.js +0 -50
- package/dist/SettingsPageLayout--GZ_iHLc.js.map +0 -1
- package/dist/SettingsPageLayout-j5lMjEID.cjs +0 -1
- package/dist/SettingsPageLayout-j5lMjEID.cjs.map +0 -1
- package/dist/SolanaLoginButton-BjOxpE1C.cjs +0 -1
- package/dist/SolanaLoginButton-BjOxpE1C.cjs.map +0 -1
- package/dist/SolanaLoginButton-P22QjBaO.js +0 -262
- package/dist/SolanaLoginButton-P22QjBaO.js.map +0 -1
- package/dist/WebhookSettings-C-gvNAW1.cjs +0 -1
- package/dist/WebhookSettings-C-gvNAW1.cjs.map +0 -1
- package/dist/WebhookSettings-kIstSjZi.js +0 -17
- package/dist/WebhookSettings-kIstSjZi.js.map +0 -1
- package/dist/useAuth-C3dpk0po.js.map +0 -1
- package/dist/useAuth-D3Pk_H3z.cjs.map +0 -1
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import { jsx as ne, jsxs as Ke } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect as
|
|
3
|
-
import { A as He, a as Je, C as
|
|
4
|
-
import { A as Ee, g as oe, a as pe, h as
|
|
2
|
+
import { useEffect as Y, useState as K, useRef as N, useCallback as E, useMemo as V } from "react";
|
|
3
|
+
import { A as He, a as Je, C as Me } from "./LoadingSpinner-6vml-zwr.js";
|
|
4
|
+
import { A as Ee, g as oe, a as pe, h as J, u as ye } from "./useCedrosLogin-_94MmGGq.js";
|
|
5
5
|
let Z = 0;
|
|
6
|
-
function
|
|
7
|
-
|
|
6
|
+
function Ve({ theme: e, themeOverrides: t }) {
|
|
7
|
+
Y(() => {
|
|
8
8
|
if (typeof document > "u" || typeof window > "u")
|
|
9
9
|
return;
|
|
10
|
-
const
|
|
10
|
+
const A = document.documentElement;
|
|
11
11
|
let i = !1;
|
|
12
12
|
e === "dark" ? i = !0 : e === "light" ? i = !1 : i = window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
13
13
|
let r = !1;
|
|
14
|
-
i ? (Z++, r = !0,
|
|
14
|
+
i ? (Z++, r = !0, A.classList.add("cedros-dark")) : Z === 0 && A.classList.remove("cedros-dark");
|
|
15
15
|
const n = /* @__PURE__ */ new Map();
|
|
16
|
-
return
|
|
16
|
+
return t && Object.entries(t).forEach(([s, a]) => {
|
|
17
17
|
if (a) {
|
|
18
|
-
const
|
|
19
|
-
n.set(
|
|
18
|
+
const c = A.style.getPropertyValue(s);
|
|
19
|
+
n.set(s, c), A.style.setProperty(s, a);
|
|
20
20
|
}
|
|
21
21
|
}), () => {
|
|
22
|
-
r && (Z--, Z === 0 &&
|
|
23
|
-
|
|
22
|
+
r && (Z--, Z === 0 && A.classList.remove("cedros-dark")), n.forEach((s, a) => {
|
|
23
|
+
s ? A.style.setProperty(a, s) : A.style.removeProperty(a);
|
|
24
24
|
});
|
|
25
25
|
};
|
|
26
|
-
}, [e,
|
|
26
|
+
}, [e, t]);
|
|
27
27
|
}
|
|
28
28
|
const Pe = {
|
|
29
29
|
email: !0,
|
|
@@ -33,29 +33,29 @@ const Pe = {
|
|
|
33
33
|
webauthn: !0,
|
|
34
34
|
instantLink: !0
|
|
35
35
|
};
|
|
36
|
-
function Ne(e,
|
|
37
|
-
const [i, r] =
|
|
38
|
-
return
|
|
39
|
-
if (!
|
|
36
|
+
function Ne(e, t, A) {
|
|
37
|
+
const [i, r] = K(null), [n, s] = K(t), a = N(!1);
|
|
38
|
+
return Y(() => {
|
|
39
|
+
if (!t || a.current) return;
|
|
40
40
|
a.current = !0, new Ee({
|
|
41
41
|
baseUrl: e,
|
|
42
|
-
timeoutMs:
|
|
42
|
+
timeoutMs: A ?? 5e3,
|
|
43
43
|
retryAttempts: 1
|
|
44
|
-
}).get("/features", { credentials: "omit" }).then((
|
|
44
|
+
}).get("/features", { credentials: "omit" }).then((o) => {
|
|
45
45
|
r({
|
|
46
|
-
email:
|
|
47
|
-
google:
|
|
48
|
-
apple:
|
|
49
|
-
solana:
|
|
50
|
-
webauthn:
|
|
51
|
-
instantLink:
|
|
46
|
+
email: o.email,
|
|
47
|
+
google: o.google,
|
|
48
|
+
apple: o.apple,
|
|
49
|
+
solana: o.solana,
|
|
50
|
+
webauthn: o.webauthn,
|
|
51
|
+
instantLink: o.instantLink
|
|
52
52
|
});
|
|
53
53
|
}).catch(() => {
|
|
54
54
|
r(Pe);
|
|
55
55
|
}).finally(() => {
|
|
56
|
-
|
|
56
|
+
s(!1);
|
|
57
57
|
});
|
|
58
|
-
}, [
|
|
58
|
+
}, [t, e, A]), { features: i, isLoading: n };
|
|
59
59
|
}
|
|
60
60
|
const Ye = "cedros_tokens", xe = 6e4;
|
|
61
61
|
class Oe {
|
|
@@ -73,8 +73,8 @@ class Oe {
|
|
|
73
73
|
// S-13: Prevent onSessionExpired from firing multiple times
|
|
74
74
|
sessionExpiredFired = !1;
|
|
75
75
|
allowWebStorage;
|
|
76
|
-
constructor(
|
|
77
|
-
this.requestedStorage =
|
|
76
|
+
constructor(t = "cookie", A = Ye, i = {}) {
|
|
77
|
+
this.requestedStorage = t, this.storage = t, this.storageKey = A, this.allowWebStorage = i.allowWebStorage ?? !1, this.warnIfLocalStorage(), !this.allowWebStorage && (this.requestedStorage === "localStorage" || this.requestedStorage === "sessionStorage") && (this.storage = "memory"), this.loadFromStorage();
|
|
78
78
|
}
|
|
79
79
|
/**
|
|
80
80
|
* S-18/UI-XSS: Warn about localStorage XSS vulnerability in all environments.
|
|
@@ -83,36 +83,36 @@ class Oe {
|
|
|
83
83
|
*/
|
|
84
84
|
warnIfLocalStorage() {
|
|
85
85
|
if ((this.requestedStorage === "localStorage" || this.requestedStorage === "sessionStorage") && typeof console < "u") {
|
|
86
|
-
const
|
|
86
|
+
const t = this.allowWebStorage ? "" : " (web storage disabled by default; set allowWebStorage=true to enable)";
|
|
87
87
|
console.warn(
|
|
88
|
-
"[cedros-login] SECURITY: Using web storage for token storage. Tokens are vulnerable to XSS attacks." +
|
|
88
|
+
"[cedros-login] SECURITY: Using web storage for token storage. Tokens are vulnerable to XSS attacks." + t + " PRODUCTION RECOMMENDATIONS: (1) Use httpOnly cookie storage instead, (2) If web storage required: implement strict Content-Security-Policy, sanitize all input/output, audit third-party scripts. See https://owasp.org/www-community/attacks/xss/"
|
|
89
89
|
);
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
/**
|
|
93
93
|
* Set the callback for when tokens need to be refreshed
|
|
94
94
|
*/
|
|
95
|
-
setRefreshCallback(
|
|
96
|
-
this.onRefreshNeeded =
|
|
95
|
+
setRefreshCallback(t) {
|
|
96
|
+
this.onRefreshNeeded = t, this.scheduleRefresh();
|
|
97
97
|
}
|
|
98
98
|
/**
|
|
99
99
|
* Set the callback for when session expires
|
|
100
100
|
*/
|
|
101
|
-
setSessionExpiredCallback(
|
|
102
|
-
this.onSessionExpired =
|
|
101
|
+
setSessionExpiredCallback(t) {
|
|
102
|
+
this.onSessionExpired = t;
|
|
103
103
|
}
|
|
104
104
|
/**
|
|
105
105
|
* Set the callback for when token refresh fails
|
|
106
106
|
* This allows the UI to show an error message to the user
|
|
107
107
|
*/
|
|
108
|
-
setRefreshErrorCallback(
|
|
109
|
-
this.onRefreshError =
|
|
108
|
+
setRefreshErrorCallback(t) {
|
|
109
|
+
this.onRefreshError = t;
|
|
110
110
|
}
|
|
111
111
|
/**
|
|
112
112
|
* Store tokens and schedule auto-refresh
|
|
113
113
|
*/
|
|
114
|
-
setTokens(
|
|
115
|
-
this.tokens =
|
|
114
|
+
setTokens(t) {
|
|
115
|
+
this.tokens = t, this.expiresAt = Date.now() + t.expiresIn * 1e3, this.sessionExpiredFired = !1, this.saveToStorage(), this.scheduleRefresh();
|
|
116
116
|
}
|
|
117
117
|
/**
|
|
118
118
|
* Get the current access token
|
|
@@ -121,8 +121,8 @@ class Oe {
|
|
|
121
121
|
*/
|
|
122
122
|
getAccessToken() {
|
|
123
123
|
if (this.isDestroyed) return null;
|
|
124
|
-
const
|
|
125
|
-
return
|
|
124
|
+
const t = this.tokens?.accessToken;
|
|
125
|
+
return t ? Date.now() >= this.expiresAt ? (this.clear(), this.fireSessionExpired(), null) : t : null;
|
|
126
126
|
}
|
|
127
127
|
/**
|
|
128
128
|
* Get the current refresh token
|
|
@@ -165,8 +165,8 @@ class Oe {
|
|
|
165
165
|
}
|
|
166
166
|
scheduleRefresh() {
|
|
167
167
|
if (this.cancelRefresh(), !this.tokens || !this.onRefreshNeeded) return;
|
|
168
|
-
const
|
|
169
|
-
if (
|
|
168
|
+
const t = this.getTimeUntilExpiry(), A = Math.max(0, t - xe);
|
|
169
|
+
if (A <= 0) {
|
|
170
170
|
if (this.isDestroyed) return;
|
|
171
171
|
this.onRefreshNeeded().catch((i) => {
|
|
172
172
|
if (this.isDestroyed) return;
|
|
@@ -181,7 +181,7 @@ class Oe {
|
|
|
181
181
|
const r = i instanceof Error ? i : new Error("Token refresh failed");
|
|
182
182
|
this.onRefreshError?.(r), this.clear(), this.fireSessionExpired();
|
|
183
183
|
});
|
|
184
|
-
},
|
|
184
|
+
}, A);
|
|
185
185
|
}
|
|
186
186
|
cancelRefresh() {
|
|
187
187
|
this.refreshTimer && (clearTimeout(this.refreshTimer), this.refreshTimer = null);
|
|
@@ -190,17 +190,17 @@ class Oe {
|
|
|
190
190
|
if (this.storage !== "memory" && !(typeof window > "u") && !(!this.allowWebStorage && (this.storage === "localStorage" || this.storage === "sessionStorage")))
|
|
191
191
|
try {
|
|
192
192
|
if (this.storage === "localStorage" || this.storage === "sessionStorage") {
|
|
193
|
-
const
|
|
194
|
-
if (
|
|
195
|
-
const i = JSON.parse(
|
|
196
|
-
this.isValidStoredTokenData(i) ? i.expiresAt > Date.now() ? (this.tokens = i.tokens, this.expiresAt = i.expiresAt) :
|
|
193
|
+
const t = this.storage === "localStorage" ? localStorage : sessionStorage, A = t.getItem(this.storageKey);
|
|
194
|
+
if (A) {
|
|
195
|
+
const i = JSON.parse(A);
|
|
196
|
+
this.isValidStoredTokenData(i) ? i.expiresAt > Date.now() ? (this.tokens = i.tokens, this.expiresAt = i.expiresAt) : t.removeItem(this.storageKey) : t.removeItem(this.storageKey);
|
|
197
197
|
}
|
|
198
198
|
}
|
|
199
199
|
} catch {
|
|
200
200
|
if (this.storage === "localStorage" || this.storage === "sessionStorage") {
|
|
201
|
-
const
|
|
201
|
+
const t = this.storage === "localStorage" ? localStorage : sessionStorage;
|
|
202
202
|
try {
|
|
203
|
-
|
|
203
|
+
t.removeItem(this.storageKey);
|
|
204
204
|
} catch {
|
|
205
205
|
}
|
|
206
206
|
}
|
|
@@ -209,22 +209,22 @@ class Oe {
|
|
|
209
209
|
/**
|
|
210
210
|
* Validate that parsed data matches expected StoredTokenData structure
|
|
211
211
|
*/
|
|
212
|
-
isValidStoredTokenData(
|
|
213
|
-
if (typeof
|
|
214
|
-
const
|
|
215
|
-
if (typeof
|
|
216
|
-
const i =
|
|
212
|
+
isValidStoredTokenData(t) {
|
|
213
|
+
if (typeof t != "object" || t === null) return !1;
|
|
214
|
+
const A = t;
|
|
215
|
+
if (typeof A.expiresAt != "number" || typeof A.tokens != "object" || A.tokens === null) return !1;
|
|
216
|
+
const i = A.tokens;
|
|
217
217
|
return !(typeof i.accessToken != "string" || typeof i.refreshToken != "string" || typeof i.expiresIn != "number");
|
|
218
218
|
}
|
|
219
219
|
saveToStorage() {
|
|
220
220
|
if (!(this.storage === "memory" || !this.tokens) && !(typeof window > "u") && !(!this.allowWebStorage && (this.storage === "localStorage" || this.storage === "sessionStorage")))
|
|
221
221
|
try {
|
|
222
222
|
if (this.storage === "localStorage" || this.storage === "sessionStorage") {
|
|
223
|
-
const
|
|
223
|
+
const t = this.storage === "localStorage" ? localStorage : sessionStorage, A = {
|
|
224
224
|
tokens: this.tokens,
|
|
225
225
|
expiresAt: this.expiresAt
|
|
226
226
|
};
|
|
227
|
-
|
|
227
|
+
t.setItem(this.storageKey, JSON.stringify(A));
|
|
228
228
|
}
|
|
229
229
|
} catch {
|
|
230
230
|
}
|
|
@@ -249,28 +249,28 @@ class Te {
|
|
|
249
249
|
* Handle incoming sync messages.
|
|
250
250
|
* S-15: Validate message shape to prevent forged auth state from same-origin XSS.
|
|
251
251
|
*/
|
|
252
|
-
handleMessage(
|
|
253
|
-
const
|
|
254
|
-
if (!(!
|
|
255
|
-
if (
|
|
256
|
-
const i =
|
|
252
|
+
handleMessage(t) {
|
|
253
|
+
const A = t.data;
|
|
254
|
+
if (!(!A || typeof A != "object" || typeof A.type != "string") && ["login", "logout", "refresh"].includes(A.type)) {
|
|
255
|
+
if (A.type === "login") {
|
|
256
|
+
const i = A;
|
|
257
257
|
if (typeof i.user != "object" || i.user === null || typeof i.user.id != "string")
|
|
258
258
|
return;
|
|
259
259
|
}
|
|
260
|
-
this.callback?.(
|
|
260
|
+
this.callback?.(A);
|
|
261
261
|
}
|
|
262
262
|
}
|
|
263
263
|
/**
|
|
264
264
|
* Set the callback for sync events from other tabs
|
|
265
265
|
*/
|
|
266
|
-
setCallback(
|
|
267
|
-
this.callback =
|
|
266
|
+
setCallback(t) {
|
|
267
|
+
this.callback = t;
|
|
268
268
|
}
|
|
269
269
|
/**
|
|
270
270
|
* Broadcast login event to other tabs
|
|
271
271
|
*/
|
|
272
|
-
broadcastLogin(
|
|
273
|
-
this.channel?.postMessage({ type: "login", user:
|
|
272
|
+
broadcastLogin(t) {
|
|
273
|
+
this.channel?.postMessage({ type: "login", user: t });
|
|
274
274
|
}
|
|
275
275
|
/**
|
|
276
276
|
* Broadcast logout event to other tabs
|
|
@@ -294,80 +294,80 @@ class Te {
|
|
|
294
294
|
}
|
|
295
295
|
function q(e) {
|
|
296
296
|
if (typeof e != "object" || e === null) return !1;
|
|
297
|
-
const
|
|
298
|
-
if (typeof
|
|
299
|
-
const
|
|
300
|
-
return typeof
|
|
297
|
+
const t = e;
|
|
298
|
+
if (typeof t.user != "object" || t.user === null) return !1;
|
|
299
|
+
const A = t.user;
|
|
300
|
+
return typeof A.id == "string" && A.id.length > 0;
|
|
301
301
|
}
|
|
302
302
|
function Re(e) {
|
|
303
303
|
if (typeof e != "object" || e === null) return !1;
|
|
304
|
-
const
|
|
305
|
-
return typeof
|
|
304
|
+
const t = e;
|
|
305
|
+
return typeof t.accessToken == "string" && t.accessToken.length > 0 && typeof t.refreshToken == "string" && t.refreshToken.length > 0 && typeof t.expiresIn == "number" && t.expiresIn > 0;
|
|
306
306
|
}
|
|
307
307
|
function Le({
|
|
308
308
|
serverUrl: e,
|
|
309
|
-
session:
|
|
310
|
-
callbacks:
|
|
309
|
+
session: t,
|
|
310
|
+
callbacks: A,
|
|
311
311
|
requestTimeoutMs: i
|
|
312
312
|
}) {
|
|
313
|
-
const [r, n] =
|
|
313
|
+
const [r, n] = K(null), [s, a] = K("idle"), c = N(null), o = N(null), S = N(A), u = N(!0), B = N(null), G = N(() => Promise.resolve()), U = N(() => {
|
|
314
314
|
});
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
}, [
|
|
318
|
-
|
|
315
|
+
Y(() => {
|
|
316
|
+
S.current = A;
|
|
317
|
+
}, [A]), Y(() => (u.current = !0, () => {
|
|
318
|
+
u.current = !1;
|
|
319
319
|
}), []);
|
|
320
|
-
const Q =
|
|
321
|
-
|
|
322
|
-
}, []),
|
|
323
|
-
|
|
324
|
-
}, []),
|
|
320
|
+
const Q = E((C) => {
|
|
321
|
+
u.current && n(C);
|
|
322
|
+
}, []), h = E((C) => {
|
|
323
|
+
u.current && a(C);
|
|
324
|
+
}, []), f = V(
|
|
325
325
|
() => ({
|
|
326
|
-
storage:
|
|
327
|
-
autoRefresh:
|
|
328
|
-
syncTabs:
|
|
329
|
-
persistKey:
|
|
330
|
-
allowWebStorage:
|
|
326
|
+
storage: t?.storage ?? "cookie",
|
|
327
|
+
autoRefresh: t?.autoRefresh ?? !0,
|
|
328
|
+
syncTabs: t?.syncTabs ?? !0,
|
|
329
|
+
persistKey: t?.persistKey,
|
|
330
|
+
allowWebStorage: t?.allowWebStorage ?? !1
|
|
331
331
|
}),
|
|
332
332
|
[
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
333
|
+
t?.storage,
|
|
334
|
+
t?.autoRefresh,
|
|
335
|
+
t?.syncTabs,
|
|
336
|
+
t?.persistKey,
|
|
337
|
+
t?.allowWebStorage
|
|
338
338
|
]
|
|
339
339
|
);
|
|
340
|
-
|
|
341
|
-
const
|
|
342
|
-
allowWebStorage:
|
|
340
|
+
Y(() => {
|
|
341
|
+
const C = new Oe(f.storage, f.persistKey, {
|
|
342
|
+
allowWebStorage: f.allowWebStorage
|
|
343
343
|
});
|
|
344
|
-
return
|
|
345
|
-
|
|
344
|
+
return c.current = C, f.autoRefresh && C.setRefreshCallback(() => G.current()), C.setSessionExpiredCallback(() => U.current()), f.syncTabs && (o.current = new Te()), () => {
|
|
345
|
+
C.destroy(), c.current = null, o.current?.close();
|
|
346
346
|
};
|
|
347
347
|
}, [
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
348
|
+
f.storage,
|
|
349
|
+
f.syncTabs,
|
|
350
|
+
f.persistKey,
|
|
351
|
+
f.allowWebStorage,
|
|
352
|
+
f.autoRefresh
|
|
353
353
|
]);
|
|
354
|
-
const
|
|
354
|
+
const b = E(async () => {
|
|
355
355
|
if (B.current)
|
|
356
356
|
return B.current;
|
|
357
|
-
const
|
|
358
|
-
|
|
359
|
-
let
|
|
357
|
+
const C = c.current?.getRefreshToken(), p = !!C, m = oe(), H = {};
|
|
358
|
+
p && (H["Content-Type"] = "application/json"), m && (H["X-CSRF-Token"] = m);
|
|
359
|
+
let F, M;
|
|
360
360
|
const v = new Promise((j, ie) => {
|
|
361
|
-
|
|
361
|
+
F = j, M = ie;
|
|
362
362
|
});
|
|
363
363
|
B.current = v, (async () => {
|
|
364
364
|
const j = new AbortController(), ie = i ?? 1e4, Ge = window.setTimeout(() => j.abort(), ie);
|
|
365
365
|
try {
|
|
366
366
|
const L = await fetch(`${e}/refresh`, {
|
|
367
367
|
method: "POST",
|
|
368
|
-
headers: Object.keys(
|
|
368
|
+
headers: Object.keys(H).length > 0 ? H : void 0,
|
|
369
369
|
credentials: "include",
|
|
370
|
-
body:
|
|
370
|
+
body: p ? JSON.stringify({ refreshToken: C }) : void 0,
|
|
371
371
|
signal: j.signal
|
|
372
372
|
});
|
|
373
373
|
if (!L.ok)
|
|
@@ -376,12 +376,12 @@ function Le({
|
|
|
376
376
|
if (re.tokens) {
|
|
377
377
|
if (!Re(re.tokens))
|
|
378
378
|
throw new Error("Invalid token response structure");
|
|
379
|
-
|
|
380
|
-
} else if (
|
|
379
|
+
c.current?.setTokens(re.tokens);
|
|
380
|
+
} else if (f.storage !== "cookie")
|
|
381
381
|
throw new Error("Token refresh failed");
|
|
382
|
-
|
|
382
|
+
o.current?.broadcastRefresh(), F();
|
|
383
383
|
} catch (L) {
|
|
384
|
-
throw
|
|
384
|
+
throw M(L), L;
|
|
385
385
|
} finally {
|
|
386
386
|
window.clearTimeout(Ge);
|
|
387
387
|
}
|
|
@@ -392,176 +392,176 @@ function Le({
|
|
|
392
392
|
} finally {
|
|
393
393
|
B.current = null;
|
|
394
394
|
}
|
|
395
|
-
}, [e,
|
|
396
|
-
if (
|
|
397
|
-
const
|
|
398
|
-
if (
|
|
399
|
-
return { Authorization: `Bearer ${
|
|
400
|
-
}, [
|
|
401
|
-
|
|
402
|
-
}, [
|
|
403
|
-
|
|
404
|
-
const
|
|
405
|
-
(
|
|
406
|
-
const
|
|
407
|
-
|
|
395
|
+
}, [e, f.storage, i]), y = E(() => {
|
|
396
|
+
if (f.storage === "cookie") return;
|
|
397
|
+
const C = c.current?.getAccessToken();
|
|
398
|
+
if (C)
|
|
399
|
+
return { Authorization: `Bearer ${C}` };
|
|
400
|
+
}, [f.storage]), D = E(() => {
|
|
401
|
+
c.current?.clear(), Q(null), h("unauthenticated"), S.current?.onSessionExpired?.();
|
|
402
|
+
}, [h, Q]);
|
|
403
|
+
G.current = b, U.current = D;
|
|
404
|
+
const d = E(
|
|
405
|
+
(C) => {
|
|
406
|
+
const p = new AbortController(), m = i ?? 1e4, H = window.setTimeout(() => p.abort(), m), F = {}, M = y();
|
|
407
|
+
M && Object.assign(F, M);
|
|
408
408
|
const v = oe();
|
|
409
|
-
return v && (
|
|
410
|
-
promise: fetch(
|
|
409
|
+
return v && (F["X-CSRF-Token"] = v), {
|
|
410
|
+
promise: fetch(C, {
|
|
411
411
|
credentials: "include",
|
|
412
|
-
headers: Object.keys(
|
|
413
|
-
signal:
|
|
412
|
+
headers: Object.keys(F).length > 0 ? F : void 0,
|
|
413
|
+
signal: p.signal
|
|
414
414
|
}),
|
|
415
|
-
cleanup: () => window.clearTimeout(
|
|
415
|
+
cleanup: () => window.clearTimeout(H)
|
|
416
416
|
};
|
|
417
417
|
},
|
|
418
|
-
[
|
|
419
|
-
),
|
|
420
|
-
const
|
|
418
|
+
[y, i]
|
|
419
|
+
), g = E(async () => {
|
|
420
|
+
const C = d(`${e}/user`);
|
|
421
421
|
try {
|
|
422
|
-
const
|
|
423
|
-
if (
|
|
424
|
-
const
|
|
425
|
-
if (q(
|
|
426
|
-
Q(
|
|
422
|
+
const p = await C.promise;
|
|
423
|
+
if (p.ok) {
|
|
424
|
+
const m = await p.json();
|
|
425
|
+
if (q(m)) {
|
|
426
|
+
Q(m.user), h("authenticated");
|
|
427
427
|
return;
|
|
428
428
|
}
|
|
429
429
|
}
|
|
430
|
-
if (
|
|
430
|
+
if (p.status === 401 && f.autoRefresh) {
|
|
431
431
|
try {
|
|
432
|
-
await
|
|
432
|
+
await b();
|
|
433
433
|
} catch {
|
|
434
|
-
|
|
434
|
+
D();
|
|
435
435
|
return;
|
|
436
436
|
}
|
|
437
|
-
const
|
|
437
|
+
const m = d(`${e}/user`);
|
|
438
438
|
try {
|
|
439
|
-
const
|
|
440
|
-
if (
|
|
441
|
-
const
|
|
442
|
-
if (q(
|
|
443
|
-
Q(
|
|
439
|
+
const H = await m.promise;
|
|
440
|
+
if (H.ok) {
|
|
441
|
+
const F = await H.json();
|
|
442
|
+
if (q(F)) {
|
|
443
|
+
Q(F.user), h("authenticated");
|
|
444
444
|
return;
|
|
445
445
|
}
|
|
446
446
|
}
|
|
447
447
|
} finally {
|
|
448
|
-
|
|
448
|
+
m.cleanup();
|
|
449
449
|
}
|
|
450
450
|
}
|
|
451
|
-
Q(null),
|
|
451
|
+
Q(null), h("unauthenticated");
|
|
452
452
|
} catch {
|
|
453
|
-
Q(null),
|
|
453
|
+
Q(null), h("unauthenticated");
|
|
454
454
|
} finally {
|
|
455
|
-
|
|
455
|
+
C.cleanup();
|
|
456
456
|
}
|
|
457
457
|
}, [
|
|
458
458
|
e,
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
459
|
+
f.autoRefresh,
|
|
460
|
+
b,
|
|
461
|
+
d,
|
|
462
|
+
D,
|
|
462
463
|
h,
|
|
463
|
-
f,
|
|
464
464
|
Q
|
|
465
465
|
]);
|
|
466
|
-
|
|
467
|
-
!
|
|
468
|
-
switch (
|
|
466
|
+
Y(() => {
|
|
467
|
+
!o.current || !f.syncTabs || o.current.setCallback((C) => {
|
|
468
|
+
switch (C.type) {
|
|
469
469
|
case "login":
|
|
470
|
-
Q(
|
|
470
|
+
Q(C.user), h("authenticated");
|
|
471
471
|
break;
|
|
472
472
|
case "logout":
|
|
473
|
-
Q(null),
|
|
473
|
+
Q(null), h("unauthenticated"), c.current?.clear();
|
|
474
474
|
break;
|
|
475
475
|
case "refresh":
|
|
476
|
-
|
|
476
|
+
g();
|
|
477
477
|
break;
|
|
478
478
|
default:
|
|
479
|
-
console.warn("[Cedros Login] Unhandled tab sync event:",
|
|
479
|
+
console.warn("[Cedros Login] Unhandled tab sync event:", C);
|
|
480
480
|
}
|
|
481
481
|
});
|
|
482
|
-
}, [
|
|
483
|
-
const
|
|
482
|
+
}, [f.syncTabs, g, h, Q]), Y(() => {
|
|
483
|
+
const C = new AbortController(), p = i ?? 1e4, m = window.setTimeout(() => C.abort(), p);
|
|
484
484
|
return (async () => {
|
|
485
|
-
|
|
485
|
+
h("loading");
|
|
486
486
|
try {
|
|
487
|
-
const
|
|
487
|
+
const F = await fetch(`${e}/user`, {
|
|
488
488
|
credentials: "include",
|
|
489
|
-
headers:
|
|
490
|
-
signal:
|
|
489
|
+
headers: y(),
|
|
490
|
+
signal: C.signal
|
|
491
491
|
});
|
|
492
|
-
if (
|
|
493
|
-
const
|
|
494
|
-
if (q(
|
|
495
|
-
Q(
|
|
492
|
+
if (F.ok) {
|
|
493
|
+
const M = await F.json();
|
|
494
|
+
if (q(M)) {
|
|
495
|
+
Q(M.user), h("authenticated");
|
|
496
496
|
return;
|
|
497
497
|
}
|
|
498
498
|
}
|
|
499
|
-
if (
|
|
499
|
+
if (F.status === 401 && f.autoRefresh) {
|
|
500
500
|
try {
|
|
501
|
-
await
|
|
501
|
+
await b();
|
|
502
502
|
} catch {
|
|
503
|
-
|
|
503
|
+
D();
|
|
504
504
|
return;
|
|
505
505
|
}
|
|
506
|
-
const
|
|
506
|
+
const M = await fetch(`${e}/user`, {
|
|
507
507
|
credentials: "include",
|
|
508
|
-
headers:
|
|
509
|
-
signal:
|
|
508
|
+
headers: y(),
|
|
509
|
+
signal: C.signal
|
|
510
510
|
});
|
|
511
|
-
if (
|
|
512
|
-
const v = await
|
|
511
|
+
if (M.ok) {
|
|
512
|
+
const v = await M.json();
|
|
513
513
|
if (q(v)) {
|
|
514
|
-
Q(v.user),
|
|
514
|
+
Q(v.user), h("authenticated");
|
|
515
515
|
return;
|
|
516
516
|
}
|
|
517
517
|
}
|
|
518
518
|
}
|
|
519
|
-
Q(null),
|
|
519
|
+
Q(null), h("unauthenticated");
|
|
520
520
|
} catch {
|
|
521
|
-
Q(null),
|
|
521
|
+
Q(null), h("unauthenticated");
|
|
522
522
|
}
|
|
523
523
|
})(), () => {
|
|
524
|
-
window.clearTimeout(
|
|
524
|
+
window.clearTimeout(m), C.abort();
|
|
525
525
|
};
|
|
526
526
|
}, [
|
|
527
527
|
e,
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
528
|
+
f.autoRefresh,
|
|
529
|
+
b,
|
|
530
|
+
y,
|
|
531
|
+
D,
|
|
531
532
|
h,
|
|
532
|
-
f,
|
|
533
533
|
Q,
|
|
534
534
|
i
|
|
535
535
|
]);
|
|
536
|
-
const
|
|
537
|
-
(
|
|
538
|
-
Q(
|
|
536
|
+
const I = E(
|
|
537
|
+
(C, p) => {
|
|
538
|
+
Q(C), h("authenticated"), p && c.current?.setTokens(p), u.current && o.current?.broadcastLogin(C);
|
|
539
539
|
},
|
|
540
|
-
[Q,
|
|
541
|
-
),
|
|
542
|
-
const
|
|
540
|
+
[Q, h]
|
|
541
|
+
), l = E(async () => {
|
|
542
|
+
const C = oe(), p = new AbortController(), m = i ?? 1e4, H = window.setTimeout(() => p.abort(), m);
|
|
543
543
|
try {
|
|
544
544
|
await fetch(`${e}/logout`, {
|
|
545
545
|
method: "POST",
|
|
546
546
|
headers: {
|
|
547
|
-
...
|
|
548
|
-
...
|
|
547
|
+
...C ? { "X-CSRF-Token": C } : {},
|
|
548
|
+
...y() ?? {}
|
|
549
549
|
},
|
|
550
550
|
credentials: "include",
|
|
551
|
-
signal:
|
|
551
|
+
signal: p.signal
|
|
552
552
|
});
|
|
553
553
|
} catch {
|
|
554
554
|
} finally {
|
|
555
|
-
window.clearTimeout(
|
|
555
|
+
window.clearTimeout(H), Q(null), h("unauthenticated"), c.current?.clear(), o.current?.broadcastLogout(), S.current?.onLogout?.();
|
|
556
556
|
}
|
|
557
|
-
}, [e,
|
|
557
|
+
}, [e, y, Q, h, i]), w = E(() => c.current?.getAccessToken() ?? null, []);
|
|
558
558
|
return {
|
|
559
559
|
user: r,
|
|
560
|
-
authState:
|
|
561
|
-
handleLoginSuccess:
|
|
562
|
-
logout:
|
|
563
|
-
refreshUser:
|
|
564
|
-
getAccessToken:
|
|
560
|
+
authState: s,
|
|
561
|
+
handleLoginSuccess: I,
|
|
562
|
+
logout: l,
|
|
563
|
+
refreshUser: g,
|
|
564
|
+
getAccessToken: w
|
|
565
565
|
};
|
|
566
566
|
}
|
|
567
567
|
const Xe = {
|
|
@@ -576,8 +576,8 @@ function We(e) {
|
|
|
576
576
|
function je(e) {
|
|
577
577
|
if (e.length === 16) return !0;
|
|
578
578
|
if (e.length < 18) return !1;
|
|
579
|
-
const
|
|
580
|
-
return
|
|
579
|
+
const t = e[0];
|
|
580
|
+
return t === 0 || t === 1 || t === 128 || t === 8;
|
|
581
581
|
}
|
|
582
582
|
function Ze(e) {
|
|
583
583
|
return e.length === 32;
|
|
@@ -596,7 +596,7 @@ function ze(e) {
|
|
|
596
596
|
throw new Error(`Invalid seed length: expected 16, got ${e.length}`);
|
|
597
597
|
return e;
|
|
598
598
|
}
|
|
599
|
-
function
|
|
599
|
+
function _t(e) {
|
|
600
600
|
if (!je(e))
|
|
601
601
|
throw new Error(`Invalid share length: expected >=16, got ${e.length}`);
|
|
602
602
|
return e;
|
|
@@ -606,17 +606,17 @@ function ke(e) {
|
|
|
606
606
|
throw new Error(`Invalid key length: expected 32, got ${e.length}`);
|
|
607
607
|
return e;
|
|
608
608
|
}
|
|
609
|
-
function
|
|
609
|
+
function et(e) {
|
|
610
610
|
if (!qe(e))
|
|
611
611
|
throw new Error(`Invalid nonce length: expected 12, got ${e.length}`);
|
|
612
612
|
return e;
|
|
613
613
|
}
|
|
614
|
-
function
|
|
614
|
+
function tt(e) {
|
|
615
615
|
if (!_e(e))
|
|
616
616
|
throw new Error(`Invalid salt length: expected >=16, got ${e.length}`);
|
|
617
617
|
return e;
|
|
618
618
|
}
|
|
619
|
-
function
|
|
619
|
+
function At(e) {
|
|
620
620
|
if (!$e(e))
|
|
621
621
|
throw new Error(`Invalid PRF salt length: expected 32, got ${e.length}`);
|
|
622
622
|
return e;
|
|
@@ -629,36 +629,36 @@ function ee(e) {
|
|
|
629
629
|
throw new Error(
|
|
630
630
|
"WebCrypto API not available. Secure random generation requires a modern browser."
|
|
631
631
|
);
|
|
632
|
-
const
|
|
633
|
-
return crypto.getRandomValues(
|
|
632
|
+
const t = new Uint8Array(e);
|
|
633
|
+
return crypto.getRandomValues(t), t;
|
|
634
634
|
}
|
|
635
|
-
function $
|
|
635
|
+
function $t() {
|
|
636
636
|
return ze(ee(16));
|
|
637
637
|
}
|
|
638
|
-
function
|
|
639
|
-
return
|
|
638
|
+
function it() {
|
|
639
|
+
return et(ee(12));
|
|
640
640
|
}
|
|
641
|
-
function
|
|
642
|
-
return
|
|
641
|
+
function zt() {
|
|
642
|
+
return tt(ee(16));
|
|
643
643
|
}
|
|
644
|
-
function
|
|
645
|
-
return
|
|
644
|
+
function rt() {
|
|
645
|
+
return At(ee(32));
|
|
646
646
|
}
|
|
647
647
|
function Se(e) {
|
|
648
648
|
if (!(!e || e.length === 0)) {
|
|
649
649
|
if (typeof globalThis.crypto?.getRandomValues == "function")
|
|
650
650
|
globalThis.crypto.getRandomValues(e);
|
|
651
651
|
else
|
|
652
|
-
for (let
|
|
653
|
-
e[
|
|
652
|
+
for (let t = 0; t < e.length; t++)
|
|
653
|
+
e[t] = t * 90 & 255;
|
|
654
654
|
e.fill(0);
|
|
655
655
|
}
|
|
656
656
|
}
|
|
657
|
-
function
|
|
658
|
-
for (const
|
|
659
|
-
|
|
657
|
+
function eA(...e) {
|
|
658
|
+
for (const t of e)
|
|
659
|
+
t && Se(t);
|
|
660
660
|
}
|
|
661
|
-
async function
|
|
661
|
+
async function nt(e) {
|
|
662
662
|
return crypto.subtle.importKey(
|
|
663
663
|
"raw",
|
|
664
664
|
T(e),
|
|
@@ -668,8 +668,8 @@ async function nA(e) {
|
|
|
668
668
|
["encrypt", "decrypt"]
|
|
669
669
|
);
|
|
670
670
|
}
|
|
671
|
-
async function
|
|
672
|
-
const i =
|
|
671
|
+
async function ot(e, t, A) {
|
|
672
|
+
const i = A ?? it(), r = await nt(t), n = await crypto.subtle.encrypt(
|
|
673
673
|
{ name: "AES-GCM", iv: T(i) },
|
|
674
674
|
r,
|
|
675
675
|
T(e)
|
|
@@ -679,45 +679,45 @@ async function oA(e, A, t) {
|
|
|
679
679
|
nonce: i
|
|
680
680
|
};
|
|
681
681
|
}
|
|
682
|
-
async function
|
|
683
|
-
const
|
|
682
|
+
async function tA(e, t) {
|
|
683
|
+
const A = await ot(e, t);
|
|
684
684
|
return {
|
|
685
|
-
ciphertext: z(
|
|
686
|
-
nonce: z(
|
|
685
|
+
ciphertext: z(A.ciphertext),
|
|
686
|
+
nonce: z(A.nonce)
|
|
687
687
|
};
|
|
688
688
|
}
|
|
689
689
|
function z(e) {
|
|
690
|
-
const
|
|
690
|
+
const A = [];
|
|
691
691
|
for (let i = 0; i < e.length; i += 32768) {
|
|
692
692
|
const r = e.subarray(i, Math.min(i + 32768, e.length));
|
|
693
|
-
|
|
693
|
+
A.push(String.fromCharCode(...r));
|
|
694
694
|
}
|
|
695
|
-
return btoa(
|
|
695
|
+
return btoa(A.join(""));
|
|
696
696
|
}
|
|
697
|
-
function
|
|
698
|
-
let
|
|
697
|
+
function st(e) {
|
|
698
|
+
let t;
|
|
699
699
|
try {
|
|
700
|
-
|
|
700
|
+
t = atob(e);
|
|
701
701
|
} catch {
|
|
702
702
|
throw new Error("Invalid base64 string: input is malformed or contains invalid characters");
|
|
703
703
|
}
|
|
704
|
-
const
|
|
705
|
-
for (let i = 0; i <
|
|
706
|
-
|
|
707
|
-
return
|
|
704
|
+
const A = new Uint8Array(t.length);
|
|
705
|
+
for (let i = 0; i < t.length; i++)
|
|
706
|
+
A[i] = t.charCodeAt(i);
|
|
707
|
+
return A;
|
|
708
708
|
}
|
|
709
|
-
async function
|
|
709
|
+
async function It(e, t, A, i = 32) {
|
|
710
710
|
const r = await crypto.subtle.importKey(
|
|
711
711
|
"raw",
|
|
712
712
|
T(e),
|
|
713
713
|
"HKDF",
|
|
714
714
|
!1,
|
|
715
715
|
["deriveBits"]
|
|
716
|
-
), n = new TextEncoder().encode(
|
|
716
|
+
), n = new TextEncoder().encode(A), s = await crypto.subtle.deriveBits(
|
|
717
717
|
{
|
|
718
718
|
name: "HKDF",
|
|
719
719
|
hash: "SHA-256",
|
|
720
|
-
salt: T(
|
|
720
|
+
salt: T(t ?? new Uint8Array(32)),
|
|
721
721
|
// Zero salt if not provided
|
|
722
722
|
info: T(n)
|
|
723
723
|
},
|
|
@@ -725,13 +725,13 @@ async function IA(e, A, t, i = 32) {
|
|
|
725
725
|
i * 8
|
|
726
726
|
// bits
|
|
727
727
|
);
|
|
728
|
-
return new Uint8Array(
|
|
728
|
+
return new Uint8Array(s);
|
|
729
729
|
}
|
|
730
|
-
async function
|
|
731
|
-
const
|
|
732
|
-
return ke(
|
|
730
|
+
async function AA(e, t) {
|
|
731
|
+
const A = await It(e, t, "cedros-wallet-share-b-encryption", 32);
|
|
732
|
+
return ke(A);
|
|
733
733
|
}
|
|
734
|
-
async function
|
|
734
|
+
async function at() {
|
|
735
735
|
try {
|
|
736
736
|
const e = await crypto.subtle.importKey("raw", new Uint8Array(32), "HKDF", !1, [
|
|
737
737
|
"deriveBits"
|
|
@@ -750,93 +750,93 @@ async function aA() {
|
|
|
750
750
|
return !1;
|
|
751
751
|
}
|
|
752
752
|
}
|
|
753
|
-
function R(e,
|
|
753
|
+
function R(e, t, A, i) {
|
|
754
754
|
function r(n) {
|
|
755
|
-
return n instanceof
|
|
756
|
-
|
|
755
|
+
return n instanceof A ? n : new A(function(s) {
|
|
756
|
+
s(n);
|
|
757
757
|
});
|
|
758
758
|
}
|
|
759
|
-
return new (
|
|
760
|
-
function a(
|
|
759
|
+
return new (A || (A = Promise))(function(n, s) {
|
|
760
|
+
function a(S) {
|
|
761
761
|
try {
|
|
762
|
-
|
|
763
|
-
} catch (
|
|
764
|
-
|
|
762
|
+
o(i.next(S));
|
|
763
|
+
} catch (u) {
|
|
764
|
+
s(u);
|
|
765
765
|
}
|
|
766
766
|
}
|
|
767
|
-
function
|
|
767
|
+
function c(S) {
|
|
768
768
|
try {
|
|
769
|
-
|
|
770
|
-
} catch (
|
|
771
|
-
|
|
769
|
+
o(i.throw(S));
|
|
770
|
+
} catch (u) {
|
|
771
|
+
s(u);
|
|
772
772
|
}
|
|
773
773
|
}
|
|
774
|
-
function
|
|
775
|
-
|
|
774
|
+
function o(S) {
|
|
775
|
+
S.done ? n(S.value) : r(S.value).then(a, c);
|
|
776
776
|
}
|
|
777
|
-
|
|
777
|
+
o((i = i.apply(e, [])).next());
|
|
778
778
|
});
|
|
779
779
|
}
|
|
780
|
-
class
|
|
780
|
+
class k {
|
|
781
781
|
constructor() {
|
|
782
782
|
this.mutex = Promise.resolve();
|
|
783
783
|
}
|
|
784
784
|
lock() {
|
|
785
|
-
let
|
|
785
|
+
let t = () => {
|
|
786
786
|
};
|
|
787
|
-
return this.mutex = this.mutex.then(() => new Promise(
|
|
788
|
-
|
|
787
|
+
return this.mutex = this.mutex.then(() => new Promise(t)), new Promise((A) => {
|
|
788
|
+
t = A;
|
|
789
789
|
});
|
|
790
790
|
}
|
|
791
|
-
dispatch(
|
|
791
|
+
dispatch(t) {
|
|
792
792
|
return R(this, void 0, void 0, function* () {
|
|
793
|
-
const
|
|
793
|
+
const A = yield this.lock();
|
|
794
794
|
try {
|
|
795
|
-
return yield Promise.resolve(
|
|
795
|
+
return yield Promise.resolve(t());
|
|
796
796
|
} finally {
|
|
797
|
-
|
|
797
|
+
A();
|
|
798
798
|
}
|
|
799
799
|
});
|
|
800
800
|
}
|
|
801
801
|
}
|
|
802
802
|
var se;
|
|
803
|
-
function
|
|
803
|
+
function gt() {
|
|
804
804
|
return typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : typeof window < "u" ? window : global;
|
|
805
805
|
}
|
|
806
|
-
const Ce =
|
|
807
|
-
function De(e,
|
|
808
|
-
return (e & 15) + (e >> 6 | e >> 3 & 8) << 4 | (
|
|
806
|
+
const Ce = gt(), Ie = (se = Ce.Buffer) !== null && se !== void 0 ? se : null, lt = Ce.TextEncoder ? new Ce.TextEncoder() : null;
|
|
807
|
+
function De(e, t) {
|
|
808
|
+
return (e & 15) + (e >> 6 | e >> 3 & 8) << 4 | (t & 15) + (t >> 6 | t >> 3 & 8);
|
|
809
809
|
}
|
|
810
|
-
function Fe(e,
|
|
811
|
-
const
|
|
812
|
-
for (let i = 0; i <
|
|
810
|
+
function Fe(e, t) {
|
|
811
|
+
const A = t.length >> 1;
|
|
812
|
+
for (let i = 0; i < A; i++) {
|
|
813
813
|
const r = i << 1;
|
|
814
|
-
e[i] = De(
|
|
814
|
+
e[i] = De(t.charCodeAt(r), t.charCodeAt(r + 1));
|
|
815
815
|
}
|
|
816
816
|
}
|
|
817
|
-
function
|
|
818
|
-
if (e.length !==
|
|
817
|
+
function ct(e, t) {
|
|
818
|
+
if (e.length !== t.length * 2)
|
|
819
819
|
return !1;
|
|
820
|
-
for (let
|
|
821
|
-
const i =
|
|
822
|
-
if (A
|
|
820
|
+
for (let A = 0; A < t.length; A++) {
|
|
821
|
+
const i = A << 1;
|
|
822
|
+
if (t[A] !== De(e.charCodeAt(i), e.charCodeAt(i + 1)))
|
|
823
823
|
return !1;
|
|
824
824
|
}
|
|
825
825
|
return !0;
|
|
826
826
|
}
|
|
827
827
|
const ue = 87, we = 48;
|
|
828
|
-
function he(e,
|
|
828
|
+
function he(e, t, A) {
|
|
829
829
|
let i = 0;
|
|
830
|
-
for (let r = 0; r <
|
|
831
|
-
let n =
|
|
832
|
-
e[i++] = n > 9 ? n + ue : n + we, n =
|
|
830
|
+
for (let r = 0; r < A; r++) {
|
|
831
|
+
let n = t[r] >>> 4;
|
|
832
|
+
e[i++] = n > 9 ? n + ue : n + we, n = t[r] & 15, e[i++] = n > 9 ? n + ue : n + we;
|
|
833
833
|
}
|
|
834
834
|
return String.fromCharCode.apply(null, e);
|
|
835
835
|
}
|
|
836
836
|
const O = Ie !== null ? (e) => {
|
|
837
837
|
if (typeof e == "string") {
|
|
838
|
-
const
|
|
839
|
-
return new Uint8Array(
|
|
838
|
+
const t = Ie.from(e, "utf8");
|
|
839
|
+
return new Uint8Array(t.buffer, t.byteOffset, t.length);
|
|
840
840
|
}
|
|
841
841
|
if (Ie.isBuffer(e))
|
|
842
842
|
return new Uint8Array(e.buffer, e.byteOffset, e.length);
|
|
@@ -845,61 +845,61 @@ const O = Ie !== null ? (e) => {
|
|
|
845
845
|
throw new Error("Invalid data type!");
|
|
846
846
|
} : (e) => {
|
|
847
847
|
if (typeof e == "string")
|
|
848
|
-
return
|
|
848
|
+
return lt.encode(e);
|
|
849
849
|
if (ArrayBuffer.isView(e))
|
|
850
850
|
return new Uint8Array(e.buffer, e.byteOffset, e.byteLength);
|
|
851
851
|
throw new Error("Invalid data type!");
|
|
852
|
-
},
|
|
853
|
-
for (let e = 0; e <
|
|
854
|
-
W[
|
|
855
|
-
function Qe(e,
|
|
856
|
-
const
|
|
857
|
-
for (let
|
|
858
|
-
const a = (e[
|
|
859
|
-
r.push(
|
|
852
|
+
}, P = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", W = new Uint8Array(256);
|
|
853
|
+
for (let e = 0; e < P.length; e++)
|
|
854
|
+
W[P.charCodeAt(e)] = e;
|
|
855
|
+
function Qe(e, t = !0) {
|
|
856
|
+
const A = e.length, i = A % 3, r = [], n = A - i;
|
|
857
|
+
for (let s = 0; s < n; s += 3) {
|
|
858
|
+
const a = (e[s] << 16 & 16711680) + (e[s + 1] << 8 & 65280) + (e[s + 2] & 255), c = P.charAt(a >> 18 & 63) + P.charAt(a >> 12 & 63) + P.charAt(a >> 6 & 63) + P.charAt(a & 63);
|
|
859
|
+
r.push(c);
|
|
860
860
|
}
|
|
861
861
|
if (i === 1) {
|
|
862
|
-
const
|
|
863
|
-
r.push(`${a}${
|
|
862
|
+
const s = e[A - 1], a = P.charAt(s >> 2), c = P.charAt(s << 4 & 63);
|
|
863
|
+
r.push(`${a}${c}`), t && r.push("==");
|
|
864
864
|
} else if (i === 2) {
|
|
865
|
-
const
|
|
866
|
-
r.push(`${a}${
|
|
865
|
+
const s = (e[A - 2] << 8) + e[A - 1], a = P.charAt(s >> 10), c = P.charAt(s >> 4 & 63), o = P.charAt(s << 2 & 63);
|
|
866
|
+
r.push(`${a}${c}${o}`), t && r.push("=");
|
|
867
867
|
}
|
|
868
868
|
return r.join("");
|
|
869
869
|
}
|
|
870
|
-
function
|
|
871
|
-
let
|
|
872
|
-
const
|
|
873
|
-
return e[
|
|
870
|
+
function Ct(e) {
|
|
871
|
+
let t = Math.floor(e.length * 0.75);
|
|
872
|
+
const A = e.length;
|
|
873
|
+
return e[A - 1] === "=" && (t -= 1, e[A - 2] === "=" && (t -= 1)), t;
|
|
874
874
|
}
|
|
875
|
-
function
|
|
876
|
-
const
|
|
875
|
+
function ht(e) {
|
|
876
|
+
const t = Ct(e), A = e.length, i = new Uint8Array(t);
|
|
877
877
|
let r = 0;
|
|
878
|
-
for (let n = 0; n <
|
|
879
|
-
const
|
|
880
|
-
i[r] =
|
|
878
|
+
for (let n = 0; n < A; n += 4) {
|
|
879
|
+
const s = W[e.charCodeAt(n)], a = W[e.charCodeAt(n + 1)], c = W[e.charCodeAt(n + 2)], o = W[e.charCodeAt(n + 3)];
|
|
880
|
+
i[r] = s << 2 | a >> 4, r += 1, i[r] = (a & 15) << 4 | c >> 2, r += 1, i[r] = (c & 3) << 6 | o & 63, r += 1;
|
|
881
881
|
}
|
|
882
882
|
return i;
|
|
883
883
|
}
|
|
884
|
-
const _ = 16 * 1024, X = 4,
|
|
885
|
-
function Ue(e,
|
|
884
|
+
const _ = 16 * 1024, X = 4, ft = new k(), ae = /* @__PURE__ */ new Map();
|
|
885
|
+
function Ue(e, t) {
|
|
886
886
|
return R(this, void 0, void 0, function* () {
|
|
887
|
-
let
|
|
887
|
+
let A = null, i = null, r = !1;
|
|
888
888
|
if (typeof WebAssembly > "u")
|
|
889
889
|
throw new Error("WebAssembly is not supported in this environment!");
|
|
890
|
-
const n = (
|
|
891
|
-
i.set(
|
|
892
|
-
},
|
|
893
|
-
|
|
894
|
-
const
|
|
895
|
-
i = new Uint8Array(
|
|
896
|
-
},
|
|
890
|
+
const n = (g, I = 0) => {
|
|
891
|
+
i.set(g, I);
|
|
892
|
+
}, s = () => i, a = () => A.exports, c = (g) => {
|
|
893
|
+
A.exports.Hash_SetMemorySize(g);
|
|
894
|
+
const I = A.exports.Hash_GetBuffer(), l = A.exports.memory.buffer;
|
|
895
|
+
i = new Uint8Array(l, I, g);
|
|
896
|
+
}, o = () => new DataView(A.exports.memory.buffer).getUint32(A.exports.STATE_SIZE, !0), S = ft.dispatch(() => R(this, void 0, void 0, function* () {
|
|
897
897
|
if (!ae.has(e.name)) {
|
|
898
|
-
const
|
|
899
|
-
ae.set(e.name,
|
|
898
|
+
const I = ht(e.data), l = WebAssembly.compile(I);
|
|
899
|
+
ae.set(e.name, l);
|
|
900
900
|
}
|
|
901
|
-
const
|
|
902
|
-
|
|
901
|
+
const g = yield ae.get(e.name);
|
|
902
|
+
A = yield WebAssembly.instantiate(g, {
|
|
903
903
|
// env: {
|
|
904
904
|
// emscripten_memcpy_big: (dest, src, num) => {
|
|
905
905
|
// const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
@@ -913,157 +913,157 @@ function Ue(e, A) {
|
|
|
913
913
|
// },
|
|
914
914
|
// },
|
|
915
915
|
});
|
|
916
|
-
})),
|
|
917
|
-
|
|
918
|
-
const
|
|
919
|
-
i = new Uint8Array(
|
|
920
|
-
}), B = (
|
|
921
|
-
r = !0,
|
|
922
|
-
},
|
|
923
|
-
let
|
|
924
|
-
for (;
|
|
925
|
-
const
|
|
926
|
-
|
|
916
|
+
})), u = () => R(this, void 0, void 0, function* () {
|
|
917
|
+
A || (yield S);
|
|
918
|
+
const g = A.exports.Hash_GetBuffer(), I = A.exports.memory.buffer;
|
|
919
|
+
i = new Uint8Array(I, g, _);
|
|
920
|
+
}), B = (g = null) => {
|
|
921
|
+
r = !0, A.exports.Hash_Init(g);
|
|
922
|
+
}, G = (g) => {
|
|
923
|
+
let I = 0;
|
|
924
|
+
for (; I < g.length; ) {
|
|
925
|
+
const l = g.subarray(I, I + _);
|
|
926
|
+
I += l.length, i.set(l), A.exports.Hash_Update(l.length);
|
|
927
927
|
}
|
|
928
|
-
},
|
|
928
|
+
}, U = (g) => {
|
|
929
929
|
if (!r)
|
|
930
930
|
throw new Error("update() called before init()");
|
|
931
|
-
const
|
|
932
|
-
|
|
933
|
-
}, Q = new Uint8Array(
|
|
931
|
+
const I = O(g);
|
|
932
|
+
G(I);
|
|
933
|
+
}, Q = new Uint8Array(t * 2), h = (g, I = null) => {
|
|
934
934
|
if (!r)
|
|
935
935
|
throw new Error("digest() called before init()");
|
|
936
|
-
return r = !1,
|
|
937
|
-
},
|
|
936
|
+
return r = !1, A.exports.Hash_Final(I), g === "binary" ? i.slice(0, t) : he(Q, i, t);
|
|
937
|
+
}, f = () => {
|
|
938
938
|
if (!r)
|
|
939
939
|
throw new Error("save() can only be called after init() and before digest()");
|
|
940
|
-
const
|
|
941
|
-
return Fe(
|
|
942
|
-
},
|
|
943
|
-
if (!(
|
|
940
|
+
const g = A.exports.Hash_GetState(), I = o(), l = A.exports.memory.buffer, w = new Uint8Array(l, g, I), C = new Uint8Array(X + I);
|
|
941
|
+
return Fe(C, e.hash), C.set(w, X), C;
|
|
942
|
+
}, b = (g) => {
|
|
943
|
+
if (!(g instanceof Uint8Array))
|
|
944
944
|
throw new Error("load() expects an Uint8Array generated by save()");
|
|
945
|
-
const
|
|
946
|
-
if (
|
|
947
|
-
throw new Error(`Bad state length (expected ${
|
|
948
|
-
if (!
|
|
945
|
+
const I = A.exports.Hash_GetState(), l = o(), w = X + l, C = A.exports.memory.buffer;
|
|
946
|
+
if (g.length !== w)
|
|
947
|
+
throw new Error(`Bad state length (expected ${w} bytes, got ${g.length})`);
|
|
948
|
+
if (!ct(e.hash, g.subarray(0, X)))
|
|
949
949
|
throw new Error("This state was written by an incompatible hash implementation");
|
|
950
|
-
const
|
|
951
|
-
new Uint8Array(
|
|
952
|
-
},
|
|
953
|
-
let
|
|
950
|
+
const p = g.subarray(X);
|
|
951
|
+
new Uint8Array(C, I, l).set(p), r = !0;
|
|
952
|
+
}, y = (g) => typeof g == "string" ? g.length < _ / 4 : g.byteLength < _;
|
|
953
|
+
let D = y;
|
|
954
954
|
switch (e.name) {
|
|
955
955
|
case "argon2":
|
|
956
956
|
case "scrypt":
|
|
957
|
-
|
|
957
|
+
D = () => !0;
|
|
958
958
|
break;
|
|
959
959
|
case "blake2b":
|
|
960
960
|
case "blake2s":
|
|
961
|
-
|
|
961
|
+
D = (g, I) => I <= 512 && y(g);
|
|
962
962
|
break;
|
|
963
963
|
case "blake3":
|
|
964
|
-
|
|
964
|
+
D = (g, I) => I === 0 && y(g);
|
|
965
965
|
break;
|
|
966
966
|
case "xxhash64":
|
|
967
967
|
// cannot simplify
|
|
968
968
|
case "xxhash3":
|
|
969
969
|
case "xxhash128":
|
|
970
970
|
case "crc64":
|
|
971
|
-
|
|
971
|
+
D = () => !1;
|
|
972
972
|
break;
|
|
973
973
|
}
|
|
974
|
-
const
|
|
975
|
-
if (!
|
|
976
|
-
return B(
|
|
977
|
-
const
|
|
978
|
-
return i.set(
|
|
974
|
+
const d = (g, I = null, l = null) => {
|
|
975
|
+
if (!D(g, I))
|
|
976
|
+
return B(I), U(g), h("hex", l);
|
|
977
|
+
const w = O(g);
|
|
978
|
+
return i.set(w), A.exports.Hash_Calculate(w.length, I, l), he(Q, i, t);
|
|
979
979
|
};
|
|
980
|
-
return yield
|
|
981
|
-
getMemory:
|
|
980
|
+
return yield u(), {
|
|
981
|
+
getMemory: s,
|
|
982
982
|
writeMemory: n,
|
|
983
983
|
getExports: a,
|
|
984
|
-
setMemorySize:
|
|
984
|
+
setMemorySize: c,
|
|
985
985
|
init: B,
|
|
986
|
-
update:
|
|
987
|
-
digest:
|
|
988
|
-
save:
|
|
989
|
-
load:
|
|
990
|
-
calculate:
|
|
991
|
-
hashLength:
|
|
986
|
+
update: U,
|
|
987
|
+
digest: h,
|
|
988
|
+
save: f,
|
|
989
|
+
load: b,
|
|
990
|
+
calculate: d,
|
|
991
|
+
hashLength: t
|
|
992
992
|
};
|
|
993
993
|
});
|
|
994
994
|
}
|
|
995
|
-
new
|
|
996
|
-
var
|
|
997
|
-
name:
|
|
998
|
-
data:
|
|
999
|
-
hash:
|
|
1000
|
-
},
|
|
1001
|
-
name:
|
|
1002
|
-
data:
|
|
1003
|
-
hash:
|
|
995
|
+
new k();
|
|
996
|
+
var ut = "argon2", wt = "AGFzbQEAAAABKQVgAX8Bf2AAAX9gEH9/f39/f39/f39/f39/f38AYAR/f39/AGACf38AAwYFAAECAwQFBgEBAoCAAgYIAX8BQZCoBAsHQQQGbWVtb3J5AgASSGFzaF9TZXRNZW1vcnlTaXplAAAOSGFzaF9HZXRCdWZmZXIAAQ5IYXNoX0NhbGN1bGF0ZQAECvEyBVgBAn9BACEBAkAgAEEAKAKICCICRg0AAkAgACACayIAQRB2IABBgIB8cSAASWoiAEAAQX9HDQBB/wHADwtBACEBQQBBACkDiAggAEEQdK18NwOICAsgAcALcAECfwJAQQAoAoAIIgANAEEAPwBBEHQiADYCgAhBACgCiAgiAUGAgCBGDQACQEGAgCAgAWsiAEEQdiAAQYCAfHEgAElqIgBAAEF/Rw0AQQAPC0EAQQApA4gIIABBEHStfDcDiAhBACgCgAghAAsgAAvcDgECfiAAIAQpAwAiECAAKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAMIBAgDCkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgBCAQIAQpAwCFQiiJIhA3AwAgACAQIAApAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAwgECAMKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAEIBAgBCkDAIVCAYk3AwAgASAFKQMAIhAgASkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDSAQIA0pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAEgECABKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACANIBAgDSkDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAIgBikDACIQIAIpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIA4gECAOKQMAhUIgiSIQNwMAIAogECAKKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACACIBAgAikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDiAQIA4pAwCFQjCJIhA3AwAgCiAQIAopAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACADIAcpAwAiECADKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAPIBAgDykDAIVCIIkiEDcDACALIBAgCykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAyAQIAMpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA8gECAPKQMAhUIwiSIQNwMAIAsgECALKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgACAFKQMAIhAgACkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDyAQIA8pAwCFQiCJIhA3AwAgCiAQIAopAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAAgECAAKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAPIBAgDykDAIVCMIkiEDcDACAKIBAgCikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAEgBikDACIQIAEpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAwgECAMKQMAhUIgiSIQNwMAIAsgECALKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACABIBAgASkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDCAQIAwpAwCFQjCJIhA3AwAgCyAQIAspAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACACIAcpAwAiECACKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACANIBAgDSkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAiAQIAIpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA0gECANKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgAyAEKQMAIhAgAykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDiAQIA4pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAQgECAEKQMAhUIoiSIQNwMAIAMgECADKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAOIBAgDikDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBCAQIAQpAwCFQgGJNwMAC98aAQN/QQAhBEEAIAIpAwAgASkDAIU3A5AIQQAgAikDCCABKQMIhTcDmAhBACACKQMQIAEpAxCFNwOgCEEAIAIpAxggASkDGIU3A6gIQQAgAikDICABKQMghTcDsAhBACACKQMoIAEpAyiFNwO4CEEAIAIpAzAgASkDMIU3A8AIQQAgAikDOCABKQM4hTcDyAhBACACKQNAIAEpA0CFNwPQCEEAIAIpA0ggASkDSIU3A9gIQQAgAikDUCABKQNQhTcD4AhBACACKQNYIAEpA1iFNwPoCEEAIAIpA2AgASkDYIU3A/AIQQAgAikDaCABKQNohTcD+AhBACACKQNwIAEpA3CFNwOACUEAIAIpA3ggASkDeIU3A4gJQQAgAikDgAEgASkDgAGFNwOQCUEAIAIpA4gBIAEpA4gBhTcDmAlBACACKQOQASABKQOQAYU3A6AJQQAgAikDmAEgASkDmAGFNwOoCUEAIAIpA6ABIAEpA6ABhTcDsAlBACACKQOoASABKQOoAYU3A7gJQQAgAikDsAEgASkDsAGFNwPACUEAIAIpA7gBIAEpA7gBhTcDyAlBACACKQPAASABKQPAAYU3A9AJQQAgAikDyAEgASkD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", Qt = "e4cdc523", Bt = {
|
|
997
|
+
name: ut,
|
|
998
|
+
data: wt,
|
|
999
|
+
hash: Qt
|
|
1000
|
+
}, dt = "blake2b", Et = "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", pt = "c6f286e6", yt = {
|
|
1001
|
+
name: dt,
|
|
1002
|
+
data: Et,
|
|
1003
|
+
hash: pt
|
|
1004
1004
|
};
|
|
1005
|
-
new
|
|
1005
|
+
new k();
|
|
1006
1006
|
function Be(e) {
|
|
1007
1007
|
return !Number.isInteger(e) || e < 8 || e > 512 || e % 8 !== 0 ? new Error("Invalid variant! Valid values: 8, 16, ..., 512") : null;
|
|
1008
1008
|
}
|
|
1009
|
-
function
|
|
1010
|
-
return e |
|
|
1009
|
+
function kt(e, t) {
|
|
1010
|
+
return e | t << 16;
|
|
1011
1011
|
}
|
|
1012
|
-
function fe(e = 512,
|
|
1012
|
+
function fe(e = 512, t = null) {
|
|
1013
1013
|
if (Be(e))
|
|
1014
1014
|
return Promise.reject(Be(e));
|
|
1015
|
-
let
|
|
1016
|
-
if (
|
|
1017
|
-
if (
|
|
1015
|
+
let A = null, i = e;
|
|
1016
|
+
if (t !== null) {
|
|
1017
|
+
if (A = O(t), A.length > 64)
|
|
1018
1018
|
return Promise.reject(new Error("Max key length is 64 bytes"));
|
|
1019
|
-
i =
|
|
1019
|
+
i = kt(e, A.length);
|
|
1020
1020
|
}
|
|
1021
1021
|
const r = e / 8;
|
|
1022
|
-
return Ue(
|
|
1023
|
-
i > 512 && n.writeMemory(
|
|
1024
|
-
const
|
|
1025
|
-
init: i > 512 ? () => (n.writeMemory(
|
|
1026
|
-
update: (a) => (n.update(a),
|
|
1022
|
+
return Ue(yt, r).then((n) => {
|
|
1023
|
+
i > 512 && n.writeMemory(A), n.init(i);
|
|
1024
|
+
const s = {
|
|
1025
|
+
init: i > 512 ? () => (n.writeMemory(A), n.init(i), s) : () => (n.init(i), s),
|
|
1026
|
+
update: (a) => (n.update(a), s),
|
|
1027
1027
|
// biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
|
|
1028
1028
|
digest: (a) => n.digest(a),
|
|
1029
1029
|
save: () => n.save(),
|
|
1030
|
-
load: (a) => (n.load(a),
|
|
1030
|
+
load: (a) => (n.load(a), s),
|
|
1031
1031
|
blockSize: 128,
|
|
1032
1032
|
digestSize: r
|
|
1033
1033
|
};
|
|
1034
|
-
return
|
|
1034
|
+
return s;
|
|
1035
1035
|
});
|
|
1036
1036
|
}
|
|
1037
|
-
function
|
|
1037
|
+
function St(e, t, A) {
|
|
1038
1038
|
const i = [
|
|
1039
|
-
`m=${
|
|
1040
|
-
`t=${
|
|
1041
|
-
`p=${
|
|
1039
|
+
`m=${t.memorySize}`,
|
|
1040
|
+
`t=${t.iterations}`,
|
|
1041
|
+
`p=${t.parallelism}`
|
|
1042
1042
|
].join(",");
|
|
1043
|
-
return `$argon2${
|
|
1043
|
+
return `$argon2${t.hashType}$v=19$${i}$${Qe(e, !1)}$${Qe(A, !1)}`;
|
|
1044
1044
|
}
|
|
1045
1045
|
const de = new DataView(new ArrayBuffer(4));
|
|
1046
1046
|
function x(e) {
|
|
1047
1047
|
return de.setInt32(0, e, !0), new Uint8Array(de.buffer);
|
|
1048
1048
|
}
|
|
1049
|
-
function ge(e,
|
|
1049
|
+
function ge(e, t, A) {
|
|
1050
1050
|
return R(this, void 0, void 0, function* () {
|
|
1051
|
-
if (
|
|
1052
|
-
const
|
|
1053
|
-
return
|
|
1051
|
+
if (A <= 64) {
|
|
1052
|
+
const c = yield fe(A * 8);
|
|
1053
|
+
return c.update(x(A)), c.update(t), c.digest("binary");
|
|
1054
1054
|
}
|
|
1055
|
-
const i = Math.ceil(
|
|
1056
|
-
e.init(), e.update(x(
|
|
1055
|
+
const i = Math.ceil(A / 32) - 2, r = new Uint8Array(A);
|
|
1056
|
+
e.init(), e.update(x(A)), e.update(t);
|
|
1057
1057
|
let n = e.digest("binary");
|
|
1058
1058
|
r.set(n.subarray(0, 32), 0);
|
|
1059
|
-
for (let
|
|
1060
|
-
e.init(), e.update(n), n = e.digest("binary"), r.set(n.subarray(0, 32),
|
|
1061
|
-
const
|
|
1059
|
+
for (let c = 1; c < i; c++)
|
|
1060
|
+
e.init(), e.update(n), n = e.digest("binary"), r.set(n.subarray(0, 32), c * 32);
|
|
1061
|
+
const s = A - 32 * i;
|
|
1062
1062
|
let a;
|
|
1063
|
-
return
|
|
1063
|
+
return s === 64 ? (a = e, a.init()) : a = yield fe(s * 8), a.update(n), n = a.digest("binary"), r.set(n.subarray(0, s), i * 32), r;
|
|
1064
1064
|
});
|
|
1065
1065
|
}
|
|
1066
|
-
function
|
|
1066
|
+
function Dt(e) {
|
|
1067
1067
|
switch (e) {
|
|
1068
1068
|
case "d":
|
|
1069
1069
|
return 0;
|
|
@@ -1073,35 +1073,35 @@ function DA(e) {
|
|
|
1073
1073
|
return 2;
|
|
1074
1074
|
}
|
|
1075
1075
|
}
|
|
1076
|
-
function
|
|
1076
|
+
function Ft(e) {
|
|
1077
1077
|
return R(this, void 0, void 0, function* () {
|
|
1078
|
-
var
|
|
1079
|
-
const { parallelism:
|
|
1080
|
-
Ue(
|
|
1078
|
+
var t;
|
|
1079
|
+
const { parallelism: A, iterations: i, hashLength: r } = e, n = O(e.password), s = O(e.salt), a = 19, c = Dt(e.hashType), { memorySize: o } = e, S = O((t = e.secret) !== null && t !== void 0 ? t : ""), [u, B] = yield Promise.all([
|
|
1080
|
+
Ue(Bt, 1024),
|
|
1081
1081
|
fe(512)
|
|
1082
1082
|
]);
|
|
1083
|
-
|
|
1084
|
-
const
|
|
1085
|
-
|
|
1086
|
-
const
|
|
1087
|
-
|
|
1088
|
-
for (let
|
|
1089
|
-
|
|
1090
|
-
let
|
|
1091
|
-
|
|
1083
|
+
u.setMemorySize(o * 1024 + 1024);
|
|
1084
|
+
const G = new Uint8Array(24), U = new DataView(G.buffer);
|
|
1085
|
+
U.setInt32(0, A, !0), U.setInt32(4, r, !0), U.setInt32(8, o, !0), U.setInt32(12, i, !0), U.setInt32(16, a, !0), U.setInt32(20, c, !0), u.writeMemory(G, o * 1024), B.init(), B.update(G), B.update(x(n.length)), B.update(n), B.update(x(s.length)), B.update(s), B.update(x(S.length)), B.update(S), B.update(x(0));
|
|
1086
|
+
const h = Math.floor(o / (A * 4)) * 4, f = new Uint8Array(72), b = B.digest("binary");
|
|
1087
|
+
f.set(b);
|
|
1088
|
+
for (let d = 0; d < A; d++) {
|
|
1089
|
+
f.set(x(0), 64), f.set(x(d), 68);
|
|
1090
|
+
let g = d * h, I = yield ge(B, f, 1024);
|
|
1091
|
+
u.writeMemory(I, g * 1024), g += 1, f.set(x(1), 64), I = yield ge(B, f, 1024), u.writeMemory(I, g * 1024);
|
|
1092
1092
|
}
|
|
1093
|
-
const
|
|
1094
|
-
Fe(
|
|
1095
|
-
const
|
|
1093
|
+
const y = new Uint8Array(1024);
|
|
1094
|
+
Fe(y, u.calculate(new Uint8Array([]), o));
|
|
1095
|
+
const D = yield ge(B, y, r);
|
|
1096
1096
|
if (e.outputType === "hex") {
|
|
1097
|
-
const
|
|
1098
|
-
return he(
|
|
1097
|
+
const d = new Uint8Array(r * 2);
|
|
1098
|
+
return he(d, D, r);
|
|
1099
1099
|
}
|
|
1100
|
-
return e.outputType === "encoded" ?
|
|
1100
|
+
return e.outputType === "encoded" ? St(s, e, D) : D;
|
|
1101
1101
|
});
|
|
1102
1102
|
}
|
|
1103
|
-
const
|
|
1104
|
-
var
|
|
1103
|
+
const Ut = (e) => {
|
|
1104
|
+
var t;
|
|
1105
1105
|
if (!e || typeof e != "object")
|
|
1106
1106
|
throw new Error("Invalid options parameter. It requires an object.");
|
|
1107
1107
|
if (!e.password)
|
|
@@ -1112,7 +1112,7 @@ const UA = (e) => {
|
|
|
1112
1112
|
throw new Error("Salt must be specified");
|
|
1113
1113
|
if (e.salt = O(e.salt), e.salt.length < 8)
|
|
1114
1114
|
throw new Error("Salt should be at least 8 bytes long");
|
|
1115
|
-
if (e.secret = O((
|
|
1115
|
+
if (e.secret = O((t = e.secret) !== null && t !== void 0 ? t : ""), !Number.isInteger(e.iterations) || e.iterations < 1)
|
|
1116
1116
|
throw new Error("Iterations should be a positive number");
|
|
1117
1117
|
if (!Number.isInteger(e.parallelism) || e.parallelism < 1)
|
|
1118
1118
|
throw new Error("Parallelism should be a positive number");
|
|
@@ -1127,40 +1127,40 @@ const UA = (e) => {
|
|
|
1127
1127
|
};
|
|
1128
1128
|
function me(e) {
|
|
1129
1129
|
return R(this, void 0, void 0, function* () {
|
|
1130
|
-
return
|
|
1130
|
+
return Ut(e), Ft(Object.assign(Object.assign({}, e), { hashType: "id" }));
|
|
1131
1131
|
});
|
|
1132
1132
|
}
|
|
1133
|
-
new
|
|
1134
|
-
new
|
|
1135
|
-
new
|
|
1136
|
-
new
|
|
1137
|
-
new
|
|
1138
|
-
new
|
|
1139
|
-
new
|
|
1140
|
-
new
|
|
1141
|
-
new
|
|
1142
|
-
new
|
|
1143
|
-
new
|
|
1144
|
-
new
|
|
1145
|
-
new
|
|
1146
|
-
new
|
|
1147
|
-
new
|
|
1148
|
-
new
|
|
1149
|
-
new
|
|
1150
|
-
new
|
|
1151
|
-
new
|
|
1152
|
-
new
|
|
1153
|
-
const
|
|
1154
|
-
async function
|
|
1155
|
-
|
|
1133
|
+
new k();
|
|
1134
|
+
new k();
|
|
1135
|
+
new k();
|
|
1136
|
+
new k();
|
|
1137
|
+
new k();
|
|
1138
|
+
new k();
|
|
1139
|
+
new k();
|
|
1140
|
+
new k();
|
|
1141
|
+
new k();
|
|
1142
|
+
new k();
|
|
1143
|
+
new k();
|
|
1144
|
+
new k();
|
|
1145
|
+
new k();
|
|
1146
|
+
new k();
|
|
1147
|
+
new k();
|
|
1148
|
+
new k();
|
|
1149
|
+
new k();
|
|
1150
|
+
new k();
|
|
1151
|
+
new k();
|
|
1152
|
+
new k();
|
|
1153
|
+
const mt = 32;
|
|
1154
|
+
async function iA(e, t, A = Xe) {
|
|
1155
|
+
bt(A);
|
|
1156
1156
|
try {
|
|
1157
1157
|
const i = await me({
|
|
1158
1158
|
password: e,
|
|
1159
|
-
salt:
|
|
1160
|
-
iterations:
|
|
1161
|
-
memorySize:
|
|
1162
|
-
parallelism:
|
|
1163
|
-
hashLength:
|
|
1159
|
+
salt: t,
|
|
1160
|
+
iterations: A.tCost,
|
|
1161
|
+
memorySize: A.mCost,
|
|
1162
|
+
parallelism: A.pCost,
|
|
1163
|
+
hashLength: mt,
|
|
1164
1164
|
outputType: "binary"
|
|
1165
1165
|
});
|
|
1166
1166
|
return ke(i);
|
|
@@ -1168,7 +1168,7 @@ async function it(e, A, t = Xe) {
|
|
|
1168
1168
|
throw new Error("Key derivation failed");
|
|
1169
1169
|
}
|
|
1170
1170
|
}
|
|
1171
|
-
function
|
|
1171
|
+
function bt(e) {
|
|
1172
1172
|
if (e.mCost < 16384)
|
|
1173
1173
|
throw new Error("KDF memory cost too low (minimum 16 MiB)");
|
|
1174
1174
|
if (e.mCost > 1048576)
|
|
@@ -1182,7 +1182,7 @@ function bA(e) {
|
|
|
1182
1182
|
if (e.pCost > 4)
|
|
1183
1183
|
throw new Error("KDF parallelism too high (maximum 4)");
|
|
1184
1184
|
}
|
|
1185
|
-
async function
|
|
1185
|
+
async function Gt() {
|
|
1186
1186
|
try {
|
|
1187
1187
|
const e = await me({
|
|
1188
1188
|
password: "test",
|
|
@@ -1199,42 +1199,42 @@ async function GA() {
|
|
|
1199
1199
|
return !1;
|
|
1200
1200
|
}
|
|
1201
1201
|
}
|
|
1202
|
-
function
|
|
1202
|
+
function Kt(e) {
|
|
1203
1203
|
return e === "localhost" || e === "127.0.0.1" || e.endsWith(".localhost");
|
|
1204
1204
|
}
|
|
1205
1205
|
function be(e) {
|
|
1206
1206
|
if (typeof window > "u")
|
|
1207
1207
|
return;
|
|
1208
|
-
const
|
|
1209
|
-
if (!
|
|
1208
|
+
const t = window.location.hostname;
|
|
1209
|
+
if (!Kt(t))
|
|
1210
1210
|
throw new Error(
|
|
1211
1211
|
"[Cedros] WebAuthn RP domain validation is not configured. Set wallet.allowedRpDomains to a non-empty list of allowed domains."
|
|
1212
1212
|
);
|
|
1213
1213
|
}
|
|
1214
|
-
function
|
|
1214
|
+
function te() {
|
|
1215
1215
|
return typeof window < "u" && typeof window.PublicKeyCredential < "u" && typeof navigator.credentials < "u";
|
|
1216
1216
|
}
|
|
1217
|
-
async function
|
|
1218
|
-
if (!
|
|
1217
|
+
async function Ht() {
|
|
1218
|
+
if (!te())
|
|
1219
1219
|
return !1;
|
|
1220
1220
|
try {
|
|
1221
1221
|
if (!await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable())
|
|
1222
1222
|
return !1;
|
|
1223
1223
|
if ("getClientCapabilities" in PublicKeyCredential && typeof PublicKeyCredential.getClientCapabilities == "function") {
|
|
1224
|
-
const
|
|
1225
|
-
if (
|
|
1226
|
-
return
|
|
1224
|
+
const t = await PublicKeyCredential.getClientCapabilities();
|
|
1225
|
+
if (t && "prf" in t)
|
|
1226
|
+
return t.prf === !0;
|
|
1227
1227
|
}
|
|
1228
1228
|
return !0;
|
|
1229
1229
|
} catch {
|
|
1230
1230
|
return !1;
|
|
1231
1231
|
}
|
|
1232
1232
|
}
|
|
1233
|
-
async function
|
|
1234
|
-
if (!
|
|
1233
|
+
async function rA(e, t, A, i, r) {
|
|
1234
|
+
if (!te())
|
|
1235
1235
|
throw new Error("WebAuthn is not available in this browser");
|
|
1236
1236
|
be();
|
|
1237
|
-
const n = i ??
|
|
1237
|
+
const n = i ?? rt(), s = await navigator.credentials.create({
|
|
1238
1238
|
publicKey: {
|
|
1239
1239
|
challenge: crypto.getRandomValues(new Uint8Array(32)),
|
|
1240
1240
|
rp: {
|
|
@@ -1243,8 +1243,8 @@ async function rt(e, A, t, i, r) {
|
|
|
1243
1243
|
},
|
|
1244
1244
|
user: {
|
|
1245
1245
|
id: T(e),
|
|
1246
|
-
name:
|
|
1247
|
-
displayName:
|
|
1246
|
+
name: t,
|
|
1247
|
+
displayName: A
|
|
1248
1248
|
},
|
|
1249
1249
|
pubKeyCredParams: [
|
|
1250
1250
|
{ type: "public-key", alg: -7 },
|
|
@@ -1268,32 +1268,32 @@ async function rt(e, A, t, i, r) {
|
|
|
1268
1268
|
}
|
|
1269
1269
|
}
|
|
1270
1270
|
});
|
|
1271
|
-
if (!
|
|
1271
|
+
if (!s)
|
|
1272
1272
|
throw new Error("Passkey registration was cancelled");
|
|
1273
|
-
const a =
|
|
1273
|
+
const a = s.getClientExtensionResults();
|
|
1274
1274
|
if (!a.prf?.enabled || !a.prf?.results?.first)
|
|
1275
1275
|
throw new Error(
|
|
1276
1276
|
"PRF extension is not supported by this authenticator. Please use a device with a compatible platform authenticator."
|
|
1277
1277
|
);
|
|
1278
|
-
const
|
|
1279
|
-
if (!
|
|
1278
|
+
const c = a.prf?.results?.first;
|
|
1279
|
+
if (!c)
|
|
1280
1280
|
throw new Error("PRF extension did not return a result");
|
|
1281
|
-
const
|
|
1282
|
-
if (
|
|
1281
|
+
const o = new Uint8Array(c);
|
|
1282
|
+
if (o.length !== 32)
|
|
1283
1283
|
throw new Error(
|
|
1284
|
-
`Unexpected PRF output length: expected 32 bytes, got ${
|
|
1284
|
+
`Unexpected PRF output length: expected 32 bytes, got ${o.length}. The authenticator may not be compatible.`
|
|
1285
1285
|
);
|
|
1286
1286
|
return {
|
|
1287
|
-
credentialId: z(new Uint8Array(
|
|
1287
|
+
credentialId: z(new Uint8Array(s.rawId)),
|
|
1288
1288
|
prfSalt: z(n),
|
|
1289
|
-
prfOutput:
|
|
1289
|
+
prfOutput: o
|
|
1290
1290
|
};
|
|
1291
1291
|
}
|
|
1292
|
-
async function
|
|
1293
|
-
if (!
|
|
1292
|
+
async function nA(e, t) {
|
|
1293
|
+
if (!te())
|
|
1294
1294
|
throw new Error("WebAuthn is not available in this browser");
|
|
1295
1295
|
be();
|
|
1296
|
-
const
|
|
1296
|
+
const A = st(e), i = await navigator.credentials.get({
|
|
1297
1297
|
publicKey: {
|
|
1298
1298
|
challenge: crypto.getRandomValues(new Uint8Array(32)),
|
|
1299
1299
|
rpId: window.location.hostname,
|
|
@@ -1304,7 +1304,7 @@ async function nt(e, A) {
|
|
|
1304
1304
|
extensions: {
|
|
1305
1305
|
prf: {
|
|
1306
1306
|
eval: {
|
|
1307
|
-
first:
|
|
1307
|
+
first: A
|
|
1308
1308
|
}
|
|
1309
1309
|
}
|
|
1310
1310
|
}
|
|
@@ -1315,81 +1315,81 @@ async function nt(e, A) {
|
|
|
1315
1315
|
const n = i.getClientExtensionResults().prf?.results?.first;
|
|
1316
1316
|
if (!n)
|
|
1317
1317
|
throw new Error("PRF extension did not return a result during authentication");
|
|
1318
|
-
const
|
|
1319
|
-
if (
|
|
1318
|
+
const s = new Uint8Array(n);
|
|
1319
|
+
if (s.length !== 32)
|
|
1320
1320
|
throw new Error(
|
|
1321
|
-
`Unexpected PRF output length: expected 32 bytes, got ${
|
|
1321
|
+
`Unexpected PRF output length: expected 32 bytes, got ${s.length}. The authenticator may not be compatible.`
|
|
1322
1322
|
);
|
|
1323
|
-
return { prfOutput:
|
|
1324
|
-
}
|
|
1325
|
-
async function
|
|
1326
|
-
const [e,
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
Promise.resolve(
|
|
1332
|
-
|
|
1333
|
-
|
|
1323
|
+
return { prfOutput: s };
|
|
1324
|
+
}
|
|
1325
|
+
async function Jt() {
|
|
1326
|
+
const [e, t, A, i, r, n, s] = await Promise.all([
|
|
1327
|
+
Mt(),
|
|
1328
|
+
Vt(),
|
|
1329
|
+
at(),
|
|
1330
|
+
Pt(),
|
|
1331
|
+
Promise.resolve(te()),
|
|
1332
|
+
Ht(),
|
|
1333
|
+
Gt()
|
|
1334
1334
|
]);
|
|
1335
1335
|
return {
|
|
1336
1336
|
webCrypto: e,
|
|
1337
|
-
aesGcm:
|
|
1338
|
-
hkdf:
|
|
1337
|
+
aesGcm: t,
|
|
1338
|
+
hkdf: A,
|
|
1339
1339
|
ed25519: i,
|
|
1340
1340
|
webAuthn: r,
|
|
1341
1341
|
webAuthnPrf: n,
|
|
1342
|
-
argon2:
|
|
1343
|
-
allSupported: e &&
|
|
1342
|
+
argon2: s,
|
|
1343
|
+
allSupported: e && t && A && r && n && s
|
|
1344
1344
|
};
|
|
1345
1345
|
}
|
|
1346
|
-
async function
|
|
1346
|
+
async function Mt() {
|
|
1347
1347
|
try {
|
|
1348
1348
|
return typeof crypto < "u" && typeof crypto.subtle < "u" && typeof crypto.getRandomValues == "function";
|
|
1349
1349
|
} catch {
|
|
1350
1350
|
return !1;
|
|
1351
1351
|
}
|
|
1352
1352
|
}
|
|
1353
|
-
async function
|
|
1353
|
+
async function Vt() {
|
|
1354
1354
|
try {
|
|
1355
1355
|
const e = await crypto.subtle.generateKey({ name: "AES-GCM", length: 256 }, !1, [
|
|
1356
1356
|
"encrypt",
|
|
1357
1357
|
"decrypt"
|
|
1358
|
-
]),
|
|
1359
|
-
return n.length ===
|
|
1358
|
+
]), t = new Uint8Array([1, 2, 3, 4]), A = crypto.getRandomValues(new Uint8Array(12)), i = await crypto.subtle.encrypt({ name: "AES-GCM", iv: A }, e, t), r = await crypto.subtle.decrypt({ name: "AES-GCM", iv: A }, e, i), n = new Uint8Array(r);
|
|
1359
|
+
return n.length === t.length && n.every((s, a) => s === t[a]);
|
|
1360
1360
|
} catch {
|
|
1361
1361
|
return !1;
|
|
1362
1362
|
}
|
|
1363
1363
|
}
|
|
1364
|
-
async function
|
|
1364
|
+
async function Pt() {
|
|
1365
1365
|
try {
|
|
1366
1366
|
return await crypto.subtle.generateKey("Ed25519", !1, ["sign", "verify"]), !0;
|
|
1367
1367
|
} catch {
|
|
1368
1368
|
return !1;
|
|
1369
1369
|
}
|
|
1370
1370
|
}
|
|
1371
|
-
function
|
|
1371
|
+
function oA(e) {
|
|
1372
1372
|
if (e.allSupported)
|
|
1373
1373
|
return null;
|
|
1374
|
-
const
|
|
1375
|
-
return e.webCrypto ||
|
|
1374
|
+
const t = [];
|
|
1375
|
+
return e.webCrypto || t.push("Web Crypto API"), e.aesGcm || t.push("AES-GCM encryption"), e.hkdf || t.push("HKDF key derivation"), e.webAuthn || t.push("WebAuthn/Passkeys"), e.webAuthnPrf || t.push("WebAuthn PRF extension (requires platform authenticator)"), e.argon2 || t.push("Argon2 password hashing"), t.length === 0 ? null : `Your browser or device is missing required features: ${t.join(", ")}. Please use a modern browser with a platform authenticator (e.g., Touch ID, Face ID, Windows Hello).`;
|
|
1376
1376
|
}
|
|
1377
|
-
function
|
|
1378
|
-
const e = typeof navigator < "u" ? navigator.userAgent : "",
|
|
1379
|
-
if (
|
|
1380
|
-
const n = parseInt(
|
|
1377
|
+
function sA() {
|
|
1378
|
+
const e = typeof navigator < "u" ? navigator.userAgent : "", t = e.match(/Chrome\/(\d+)/);
|
|
1379
|
+
if (t) {
|
|
1380
|
+
const n = parseInt(t[1], 10);
|
|
1381
1381
|
return {
|
|
1382
1382
|
browser: "Chrome",
|
|
1383
|
-
version:
|
|
1383
|
+
version: t[1],
|
|
1384
1384
|
likelySupported: n >= 116
|
|
1385
1385
|
};
|
|
1386
1386
|
}
|
|
1387
|
-
const
|
|
1388
|
-
if (
|
|
1389
|
-
const n = parseInt(
|
|
1387
|
+
const A = e.match(/Version\/(\d+)/);
|
|
1388
|
+
if (A && e.includes("Safari") && !e.includes("Chrome")) {
|
|
1389
|
+
const n = parseInt(A[1], 10);
|
|
1390
1390
|
return {
|
|
1391
1391
|
browser: "Safari",
|
|
1392
|
-
version:
|
|
1392
|
+
version: A[1],
|
|
1393
1393
|
likelySupported: n >= 17
|
|
1394
1394
|
};
|
|
1395
1395
|
}
|
|
@@ -1417,12 +1417,12 @@ function st() {
|
|
|
1417
1417
|
};
|
|
1418
1418
|
}
|
|
1419
1419
|
let $ = null, le = null;
|
|
1420
|
-
const
|
|
1421
|
-
async function
|
|
1422
|
-
const
|
|
1423
|
-
return !e && !(typeof window > "u") && !
|
|
1420
|
+
const Nt = 6e4;
|
|
1421
|
+
async function Yt(e = !1) {
|
|
1422
|
+
const t = Date.now(), A = le === null || t - le > Nt;
|
|
1423
|
+
return !e && !(typeof window > "u") && !A && $ !== null || ($ = await Jt(), le = Date.now()), $;
|
|
1424
1424
|
}
|
|
1425
|
-
function
|
|
1425
|
+
function xt(e) {
|
|
1426
1426
|
switch (e.type) {
|
|
1427
1427
|
case "password":
|
|
1428
1428
|
return { password: e.password };
|
|
@@ -1430,160 +1430,205 @@ function xA(e) {
|
|
|
1430
1430
|
return { prfOutput: e.prfOutput };
|
|
1431
1431
|
}
|
|
1432
1432
|
}
|
|
1433
|
-
function
|
|
1434
|
-
const e = pe(), [
|
|
1433
|
+
function Ot() {
|
|
1434
|
+
const e = pe(), [t, A] = K(!1), [i, r] = K(null), n = e?.config.serverUrl, s = e?.config.requestTimeout, a = e?.config.retryAttempts, c = e?._internal?.getAccessToken, o = V(() => e ? new Ee({
|
|
1435
1435
|
baseUrl: n,
|
|
1436
|
-
timeoutMs:
|
|
1436
|
+
timeoutMs: s,
|
|
1437
1437
|
retryAttempts: a,
|
|
1438
|
-
getAccessToken:
|
|
1439
|
-
}) : null, [e, n,
|
|
1440
|
-
if (!
|
|
1438
|
+
getAccessToken: c
|
|
1439
|
+
}) : null, [e, n, s, a, c]), S = E(async () => {
|
|
1440
|
+
if (!o)
|
|
1441
1441
|
throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
|
|
1442
|
-
|
|
1442
|
+
A(!0), r(null);
|
|
1443
1443
|
try {
|
|
1444
|
-
return await
|
|
1445
|
-
} catch (
|
|
1446
|
-
const
|
|
1447
|
-
throw r(
|
|
1444
|
+
return await o.get("/wallet/status");
|
|
1445
|
+
} catch (I) {
|
|
1446
|
+
const l = J(I, "Failed to fetch wallet status");
|
|
1447
|
+
throw r(l.message), l;
|
|
1448
1448
|
} finally {
|
|
1449
|
-
|
|
1449
|
+
A(!1);
|
|
1450
1450
|
}
|
|
1451
|
-
}, [
|
|
1452
|
-
if (!
|
|
1451
|
+
}, [o]), u = E(async () => {
|
|
1452
|
+
if (!o)
|
|
1453
1453
|
throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
|
|
1454
|
-
|
|
1454
|
+
A(!0), r(null);
|
|
1455
1455
|
try {
|
|
1456
|
-
return await
|
|
1457
|
-
} catch (
|
|
1458
|
-
const
|
|
1459
|
-
if (
|
|
1456
|
+
return await o.get("/wallet/material");
|
|
1457
|
+
} catch (I) {
|
|
1458
|
+
const l = J(I, "Failed to fetch wallet material");
|
|
1459
|
+
if (l.code === "NOT_FOUND")
|
|
1460
1460
|
return null;
|
|
1461
|
-
throw r(
|
|
1461
|
+
throw r(l.message), l;
|
|
1462
1462
|
} finally {
|
|
1463
|
-
|
|
1463
|
+
A(!1);
|
|
1464
1464
|
}
|
|
1465
|
-
}, [
|
|
1466
|
-
async (
|
|
1467
|
-
if (!
|
|
1465
|
+
}, [o]), B = E(
|
|
1466
|
+
async (I) => {
|
|
1467
|
+
if (!o)
|
|
1468
1468
|
throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
|
|
1469
|
-
|
|
1469
|
+
A(!0), r(null);
|
|
1470
1470
|
try {
|
|
1471
|
-
await
|
|
1472
|
-
} catch (
|
|
1473
|
-
const
|
|
1474
|
-
throw r(
|
|
1471
|
+
await o.post("/wallet/enroll", I);
|
|
1472
|
+
} catch (l) {
|
|
1473
|
+
const w = J(l, "Failed to enroll wallet");
|
|
1474
|
+
throw r(w.message), w;
|
|
1475
1475
|
} finally {
|
|
1476
|
-
|
|
1476
|
+
A(!1);
|
|
1477
1477
|
}
|
|
1478
1478
|
},
|
|
1479
|
-
[
|
|
1480
|
-
),
|
|
1481
|
-
async (
|
|
1482
|
-
if (!
|
|
1479
|
+
[o]
|
|
1480
|
+
), G = E(
|
|
1481
|
+
async (I) => {
|
|
1482
|
+
if (!o)
|
|
1483
1483
|
throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
|
|
1484
|
-
|
|
1484
|
+
A(!0), r(null);
|
|
1485
1485
|
try {
|
|
1486
|
-
await
|
|
1487
|
-
} catch (
|
|
1488
|
-
const
|
|
1489
|
-
throw r(
|
|
1486
|
+
await o.post("/wallet/recover", I);
|
|
1487
|
+
} catch (l) {
|
|
1488
|
+
const w = J(l, "Failed to recover wallet");
|
|
1489
|
+
throw r(w.message), w;
|
|
1490
1490
|
} finally {
|
|
1491
|
-
|
|
1491
|
+
A(!1);
|
|
1492
1492
|
}
|
|
1493
1493
|
},
|
|
1494
|
-
[
|
|
1495
|
-
),
|
|
1496
|
-
async (
|
|
1497
|
-
if (!
|
|
1494
|
+
[o]
|
|
1495
|
+
), U = E(
|
|
1496
|
+
async (I) => {
|
|
1497
|
+
if (!o)
|
|
1498
1498
|
throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
|
|
1499
|
-
|
|
1499
|
+
A(!0), r(null);
|
|
1500
1500
|
try {
|
|
1501
|
-
return await
|
|
1502
|
-
} catch (
|
|
1503
|
-
const
|
|
1504
|
-
throw r(
|
|
1501
|
+
return await o.post("/wallet/sign", I);
|
|
1502
|
+
} catch (l) {
|
|
1503
|
+
const w = J(l, "Failed to sign transaction");
|
|
1504
|
+
throw r(w.message), w;
|
|
1505
1505
|
} finally {
|
|
1506
|
-
|
|
1506
|
+
A(!1);
|
|
1507
1507
|
}
|
|
1508
1508
|
},
|
|
1509
|
-
[
|
|
1510
|
-
), Q =
|
|
1511
|
-
async (
|
|
1512
|
-
if (!
|
|
1509
|
+
[o]
|
|
1510
|
+
), Q = E(
|
|
1511
|
+
async (I) => {
|
|
1512
|
+
if (!o)
|
|
1513
1513
|
throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
|
|
1514
|
-
|
|
1514
|
+
A(!0), r(null);
|
|
1515
1515
|
try {
|
|
1516
|
-
await
|
|
1517
|
-
} catch (
|
|
1518
|
-
const
|
|
1519
|
-
throw r(
|
|
1516
|
+
await o.post("/wallet/rotate-user-secret", I);
|
|
1517
|
+
} catch (l) {
|
|
1518
|
+
const w = J(l, "Failed to rotate user secret");
|
|
1519
|
+
throw r(w.message), w;
|
|
1520
1520
|
} finally {
|
|
1521
|
-
|
|
1521
|
+
A(!1);
|
|
1522
1522
|
}
|
|
1523
1523
|
},
|
|
1524
|
-
[
|
|
1525
|
-
),
|
|
1526
|
-
async (
|
|
1527
|
-
if (!
|
|
1524
|
+
[o]
|
|
1525
|
+
), h = E(
|
|
1526
|
+
async (I) => {
|
|
1527
|
+
if (!o)
|
|
1528
1528
|
throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
|
|
1529
|
-
|
|
1529
|
+
A(!0), r(null);
|
|
1530
1530
|
try {
|
|
1531
|
-
return await
|
|
1531
|
+
return await o.post(
|
|
1532
1532
|
"/wallet/unlock",
|
|
1533
|
-
|
|
1533
|
+
xt(I)
|
|
1534
1534
|
);
|
|
1535
|
-
} catch (
|
|
1536
|
-
const
|
|
1537
|
-
throw r(
|
|
1535
|
+
} catch (l) {
|
|
1536
|
+
const w = J(l, "Failed to unlock wallet");
|
|
1537
|
+
throw r(w.message), w;
|
|
1538
|
+
} finally {
|
|
1539
|
+
A(!1);
|
|
1540
|
+
}
|
|
1541
|
+
},
|
|
1542
|
+
[o]
|
|
1543
|
+
), f = E(async () => {
|
|
1544
|
+
if (!o)
|
|
1545
|
+
throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
|
|
1546
|
+
A(!0), r(null);
|
|
1547
|
+
try {
|
|
1548
|
+
await o.post("/wallet/lock", {});
|
|
1549
|
+
} catch (I) {
|
|
1550
|
+
const l = J(I, "Failed to lock wallet");
|
|
1551
|
+
throw r(l.message), l;
|
|
1552
|
+
} finally {
|
|
1553
|
+
A(!1);
|
|
1554
|
+
}
|
|
1555
|
+
}, [o]), b = E(
|
|
1556
|
+
async (I) => {
|
|
1557
|
+
if (!o)
|
|
1558
|
+
throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
|
|
1559
|
+
A(!0), r(null);
|
|
1560
|
+
try {
|
|
1561
|
+
return await o.post("/wallet/share-b", I);
|
|
1562
|
+
} catch (l) {
|
|
1563
|
+
const w = J(l, "Failed to get Share B for recovery");
|
|
1564
|
+
throw r(w.message), w;
|
|
1538
1565
|
} finally {
|
|
1539
|
-
|
|
1566
|
+
A(!1);
|
|
1540
1567
|
}
|
|
1541
1568
|
},
|
|
1542
|
-
[
|
|
1543
|
-
),
|
|
1544
|
-
|
|
1569
|
+
[o]
|
|
1570
|
+
), y = E(
|
|
1571
|
+
async (I) => {
|
|
1572
|
+
if (!o)
|
|
1573
|
+
throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
|
|
1574
|
+
A(!0), r(null);
|
|
1575
|
+
try {
|
|
1576
|
+
return await o.post("/wallet/derived", I);
|
|
1577
|
+
} catch (l) {
|
|
1578
|
+
const w = J(l, "Failed to create derived wallet");
|
|
1579
|
+
throw r(w.message), w;
|
|
1580
|
+
} finally {
|
|
1581
|
+
A(!1);
|
|
1582
|
+
}
|
|
1583
|
+
},
|
|
1584
|
+
[o]
|
|
1585
|
+
), D = E(async () => {
|
|
1586
|
+
if (!o)
|
|
1545
1587
|
throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
|
|
1546
|
-
|
|
1588
|
+
A(!0), r(null);
|
|
1547
1589
|
try {
|
|
1548
|
-
await
|
|
1549
|
-
} catch (
|
|
1550
|
-
const
|
|
1551
|
-
throw r(
|
|
1590
|
+
return await o.get("/wallet/derived");
|
|
1591
|
+
} catch (I) {
|
|
1592
|
+
const l = J(I, "Failed to list wallets");
|
|
1593
|
+
throw r(l.message), l;
|
|
1552
1594
|
} finally {
|
|
1553
|
-
|
|
1595
|
+
A(!1);
|
|
1554
1596
|
}
|
|
1555
|
-
}, [
|
|
1556
|
-
async (
|
|
1557
|
-
if (!
|
|
1597
|
+
}, [o]), d = E(
|
|
1598
|
+
async (I) => {
|
|
1599
|
+
if (!o)
|
|
1558
1600
|
throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
|
|
1559
|
-
|
|
1601
|
+
A(!0), r(null);
|
|
1560
1602
|
try {
|
|
1561
|
-
|
|
1562
|
-
} catch (
|
|
1563
|
-
const
|
|
1564
|
-
throw r(
|
|
1603
|
+
await o.delete(`/wallet/derived/${I}`);
|
|
1604
|
+
} catch (l) {
|
|
1605
|
+
const w = J(l, "Failed to delete derived wallet");
|
|
1606
|
+
throw r(w.message), w;
|
|
1565
1607
|
} finally {
|
|
1566
|
-
|
|
1608
|
+
A(!1);
|
|
1567
1609
|
}
|
|
1568
1610
|
},
|
|
1569
|
-
[
|
|
1570
|
-
),
|
|
1611
|
+
[o]
|
|
1612
|
+
), g = E(() => r(null), []);
|
|
1571
1613
|
return {
|
|
1572
|
-
getStatus:
|
|
1573
|
-
getMaterial:
|
|
1614
|
+
getStatus: S,
|
|
1615
|
+
getMaterial: u,
|
|
1574
1616
|
enroll: B,
|
|
1575
|
-
recover:
|
|
1576
|
-
signTransaction:
|
|
1617
|
+
recover: G,
|
|
1618
|
+
signTransaction: U,
|
|
1577
1619
|
rotateUserSecret: Q,
|
|
1578
|
-
unlock:
|
|
1579
|
-
lock:
|
|
1580
|
-
getShareBForRecovery:
|
|
1581
|
-
|
|
1620
|
+
unlock: h,
|
|
1621
|
+
lock: f,
|
|
1622
|
+
getShareBForRecovery: b,
|
|
1623
|
+
createDerivedWallet: y,
|
|
1624
|
+
listAllWallets: D,
|
|
1625
|
+
deleteDerivedWallet: d,
|
|
1626
|
+
isLoading: t,
|
|
1582
1627
|
error: i,
|
|
1583
|
-
clearError:
|
|
1628
|
+
clearError: g
|
|
1584
1629
|
};
|
|
1585
1630
|
}
|
|
1586
|
-
const
|
|
1631
|
+
const vt = {
|
|
1587
1632
|
status: "not_enrolled",
|
|
1588
1633
|
solanaPubkey: null,
|
|
1589
1634
|
authMethod: null,
|
|
@@ -1597,71 +1642,71 @@ const vA = {
|
|
|
1597
1642
|
clearError: () => {
|
|
1598
1643
|
}
|
|
1599
1644
|
};
|
|
1600
|
-
function
|
|
1601
|
-
const
|
|
1602
|
-
|
|
1603
|
-
if (!
|
|
1604
|
-
let
|
|
1645
|
+
function Tt() {
|
|
1646
|
+
const t = pe() !== null, [A, i] = K("loading"), [r, n] = K(null), [s, a] = K(null), [c, o] = K(!1), [S, u] = K(!1), [B, G] = K(null), [U, Q] = K(null), { getStatus: h, isLoading: f } = Ot(), b = N(!1);
|
|
1647
|
+
Y(() => {
|
|
1648
|
+
if (!t) return;
|
|
1649
|
+
let d = !1;
|
|
1605
1650
|
return (async () => {
|
|
1606
1651
|
try {
|
|
1607
|
-
const
|
|
1608
|
-
if (
|
|
1609
|
-
|
|
1652
|
+
const I = await Yt();
|
|
1653
|
+
if (d) return;
|
|
1654
|
+
G(I), I.allSupported || (i("error"), Q(
|
|
1610
1655
|
"Your browser or device does not support all required features. Please use a modern browser with a platform authenticator."
|
|
1611
1656
|
));
|
|
1612
1657
|
} catch {
|
|
1613
|
-
if (
|
|
1614
|
-
|
|
1658
|
+
if (d) return;
|
|
1659
|
+
G(null), i("error"), Q("Failed to check crypto capabilities");
|
|
1615
1660
|
}
|
|
1616
1661
|
})(), () => {
|
|
1617
|
-
|
|
1662
|
+
d = !0;
|
|
1618
1663
|
};
|
|
1619
|
-
}, [
|
|
1620
|
-
const
|
|
1621
|
-
if (!(!
|
|
1664
|
+
}, [t]);
|
|
1665
|
+
const y = E(async () => {
|
|
1666
|
+
if (!(!t || !B?.allSupported)) {
|
|
1622
1667
|
i("loading"), Q(null);
|
|
1623
1668
|
try {
|
|
1624
|
-
const
|
|
1625
|
-
n(
|
|
1626
|
-
} catch (
|
|
1627
|
-
i("error"), Q(
|
|
1669
|
+
const d = await h();
|
|
1670
|
+
n(d.solanaPubkey ?? null), a(d.authMethod ?? null), o(d.hasExternalWallet), u(d.unlocked), d.hasExternalWallet ? i("enrolled_unlocked") : d.enrolled ? i(d.unlocked ? "enrolled_unlocked" : "enrolled_locked") : i("not_enrolled");
|
|
1671
|
+
} catch (d) {
|
|
1672
|
+
i("error"), Q(d instanceof Error ? d.message : "Failed to fetch wallet status");
|
|
1628
1673
|
}
|
|
1629
1674
|
}
|
|
1630
|
-
}, [
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
}, [
|
|
1634
|
-
const
|
|
1635
|
-
return
|
|
1636
|
-
status:
|
|
1675
|
+
}, [t, B?.allSupported, h]);
|
|
1676
|
+
Y(() => {
|
|
1677
|
+
t && B?.allSupported && !f && !b.current && (b.current = !0, y());
|
|
1678
|
+
}, [t, B?.allSupported, f, y]);
|
|
1679
|
+
const D = E(() => Q(null), []);
|
|
1680
|
+
return t ? {
|
|
1681
|
+
status: A,
|
|
1637
1682
|
solanaPubkey: r,
|
|
1638
|
-
authMethod:
|
|
1639
|
-
hasExternalWallet:
|
|
1640
|
-
isUnlocked:
|
|
1683
|
+
authMethod: s,
|
|
1684
|
+
hasExternalWallet: c,
|
|
1685
|
+
isUnlocked: S,
|
|
1641
1686
|
capabilities: B,
|
|
1642
1687
|
isSupported: B?.allSupported ?? !1,
|
|
1643
|
-
error:
|
|
1644
|
-
refresh:
|
|
1645
|
-
clearError:
|
|
1646
|
-
} :
|
|
1688
|
+
error: U,
|
|
1689
|
+
refresh: y,
|
|
1690
|
+
clearError: D
|
|
1691
|
+
} : vt;
|
|
1647
1692
|
}
|
|
1648
|
-
const
|
|
1649
|
-
function
|
|
1650
|
-
typeof window < "u" && (window[
|
|
1693
|
+
const Ae = "__CEDROS_EMBEDDED_WALLET__";
|
|
1694
|
+
function Rt(e) {
|
|
1695
|
+
typeof window < "u" && (window[Ae] = e);
|
|
1651
1696
|
}
|
|
1652
1697
|
function ce() {
|
|
1653
|
-
typeof window < "u" && delete window[
|
|
1698
|
+
typeof window < "u" && delete window[Ae];
|
|
1654
1699
|
}
|
|
1655
|
-
function
|
|
1656
|
-
return typeof window > "u" ? !1 : window[
|
|
1700
|
+
function IA() {
|
|
1701
|
+
return typeof window > "u" ? !1 : window[Ae]?.available ?? !1;
|
|
1657
1702
|
}
|
|
1658
|
-
function
|
|
1659
|
-
return typeof window > "u" ? null : window[
|
|
1703
|
+
function aA() {
|
|
1704
|
+
return typeof window > "u" ? null : window[Ae] ?? null;
|
|
1660
1705
|
}
|
|
1661
|
-
function
|
|
1662
|
-
const { config: e, user:
|
|
1663
|
-
return
|
|
1664
|
-
if (!n || !
|
|
1706
|
+
function Lt() {
|
|
1707
|
+
const { config: e, user: t } = ye(), { status: A, solanaPubkey: i, hasExternalWallet: r } = Tt(), n = e.wallet?.exposeAvailability ?? !1, s = e.wallet?.exposePublicKey ?? !1;
|
|
1708
|
+
return Y(() => {
|
|
1709
|
+
if (!n || !t) {
|
|
1665
1710
|
ce();
|
|
1666
1711
|
return;
|
|
1667
1712
|
}
|
|
@@ -1669,139 +1714,139 @@ function LA() {
|
|
|
1669
1714
|
ce();
|
|
1670
1715
|
return;
|
|
1671
1716
|
}
|
|
1672
|
-
if (
|
|
1717
|
+
if (A === "loading")
|
|
1673
1718
|
return;
|
|
1674
|
-
const a =
|
|
1675
|
-
return
|
|
1719
|
+
const a = A === "enrolled_locked" || A === "enrolled_unlocked";
|
|
1720
|
+
return Rt({
|
|
1676
1721
|
available: a,
|
|
1677
|
-
publicKey:
|
|
1722
|
+
publicKey: s && a ? i : null
|
|
1678
1723
|
}), () => {
|
|
1679
1724
|
ce();
|
|
1680
1725
|
};
|
|
1681
|
-
}, [n,
|
|
1682
|
-
}
|
|
1683
|
-
function
|
|
1684
|
-
const [
|
|
1685
|
-
|
|
1686
|
-
const a =
|
|
1687
|
-
onLoginSuccess: (...
|
|
1688
|
-
onLoginError: (...
|
|
1689
|
-
onLogout: () =>
|
|
1690
|
-
onSessionExpired: () =>
|
|
1691
|
-
}),
|
|
1726
|
+
}, [n, s, t, A, i, r]), null;
|
|
1727
|
+
}
|
|
1728
|
+
function gA({ config: e, children: t }) {
|
|
1729
|
+
const [A, i] = K(null), [r, n] = K(!1), s = N(e.callbacks);
|
|
1730
|
+
s.current = e.callbacks;
|
|
1731
|
+
const a = N({
|
|
1732
|
+
onLoginSuccess: (...F) => s.current?.onLoginSuccess?.(...F),
|
|
1733
|
+
onLoginError: (...F) => s.current?.onLoginError?.(...F),
|
|
1734
|
+
onLogout: () => s.current?.onLogout?.(),
|
|
1735
|
+
onSessionExpired: () => s.current?.onSessionExpired?.()
|
|
1736
|
+
}), c = e.features === "auto", { features: o, isLoading: S } = Ne(
|
|
1692
1737
|
e.serverUrl,
|
|
1693
|
-
|
|
1738
|
+
c,
|
|
1694
1739
|
e.requestTimeout
|
|
1695
|
-
),
|
|
1696
|
-
() => JSON.stringify(
|
|
1697
|
-
[
|
|
1698
|
-
),
|
|
1699
|
-
() =>
|
|
1740
|
+
), u = V(() => !c || !o ? e : { ...e, features: o }, [e, c, o]), B = V(
|
|
1741
|
+
() => JSON.stringify(u.themeOverrides ?? null),
|
|
1742
|
+
[u.themeOverrides]
|
|
1743
|
+
), G = V(() => JSON.stringify(u.session ?? null), [u.session]), U = V(() => JSON.stringify(u.features ?? null), [u.features]), Q = V(() => JSON.stringify(u.forms ?? null), [u.forms]), h = V(
|
|
1744
|
+
() => u,
|
|
1700
1745
|
// eslint-disable-next-line react-hooks/exhaustive-deps -- Using serialized keys for deep comparison; callbacks excluded (see UI-06)
|
|
1701
1746
|
[
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1747
|
+
u.serverUrl,
|
|
1748
|
+
u.googleClientId,
|
|
1749
|
+
u.requestTimeout,
|
|
1750
|
+
u.retryAttempts,
|
|
1751
|
+
u.theme,
|
|
1707
1752
|
B,
|
|
1708
|
-
|
|
1709
|
-
|
|
1753
|
+
G,
|
|
1754
|
+
U,
|
|
1710
1755
|
Q
|
|
1711
1756
|
]
|
|
1712
1757
|
);
|
|
1713
|
-
|
|
1714
|
-
theme:
|
|
1715
|
-
themeOverrides:
|
|
1758
|
+
Ve({
|
|
1759
|
+
theme: h.theme,
|
|
1760
|
+
themeOverrides: h.themeOverrides
|
|
1716
1761
|
});
|
|
1717
1762
|
const {
|
|
1718
|
-
user:
|
|
1719
|
-
authState:
|
|
1720
|
-
handleLoginSuccess:
|
|
1721
|
-
logout:
|
|
1722
|
-
refreshUser:
|
|
1723
|
-
getAccessToken:
|
|
1763
|
+
user: f,
|
|
1764
|
+
authState: b,
|
|
1765
|
+
handleLoginSuccess: y,
|
|
1766
|
+
logout: D,
|
|
1767
|
+
refreshUser: d,
|
|
1768
|
+
getAccessToken: g
|
|
1724
1769
|
} = Le({
|
|
1725
|
-
serverUrl:
|
|
1726
|
-
session:
|
|
1770
|
+
serverUrl: h.serverUrl,
|
|
1771
|
+
session: h.session,
|
|
1727
1772
|
callbacks: a.current,
|
|
1728
|
-
requestTimeoutMs:
|
|
1729
|
-
}),
|
|
1730
|
-
i(null), await
|
|
1731
|
-
}, [
|
|
1732
|
-
(...
|
|
1733
|
-
i(null),
|
|
1773
|
+
requestTimeoutMs: h.requestTimeout
|
|
1774
|
+
}), I = E(async () => {
|
|
1775
|
+
i(null), await D();
|
|
1776
|
+
}, [D]), l = E(
|
|
1777
|
+
(...F) => {
|
|
1778
|
+
i(null), y(...F);
|
|
1734
1779
|
},
|
|
1735
|
-
[
|
|
1736
|
-
),
|
|
1780
|
+
[y]
|
|
1781
|
+
), w = E(() => n(!0), []), C = E(() => n(!1), []), p = V(
|
|
1737
1782
|
() => ({
|
|
1738
|
-
config:
|
|
1739
|
-
user:
|
|
1740
|
-
authState:
|
|
1741
|
-
logout:
|
|
1742
|
-
refreshUser:
|
|
1783
|
+
config: h,
|
|
1784
|
+
user: f,
|
|
1785
|
+
authState: b,
|
|
1786
|
+
logout: I,
|
|
1787
|
+
refreshUser: d,
|
|
1743
1788
|
_internal: {
|
|
1744
|
-
handleLoginSuccess:
|
|
1745
|
-
getAccessToken:
|
|
1789
|
+
handleLoginSuccess: l,
|
|
1790
|
+
getAccessToken: g
|
|
1746
1791
|
}
|
|
1747
1792
|
}),
|
|
1748
|
-
[
|
|
1749
|
-
),
|
|
1793
|
+
[h, f, b, I, d, l, g]
|
|
1794
|
+
), m = V(
|
|
1750
1795
|
() => ({
|
|
1751
|
-
error:
|
|
1796
|
+
error: A,
|
|
1752
1797
|
isModalOpen: r,
|
|
1753
|
-
openModal:
|
|
1754
|
-
closeModal:
|
|
1798
|
+
openModal: w,
|
|
1799
|
+
closeModal: C
|
|
1755
1800
|
}),
|
|
1756
|
-
[
|
|
1757
|
-
),
|
|
1758
|
-
() => ({ ...
|
|
1759
|
-
[
|
|
1801
|
+
[A, r, w, C]
|
|
1802
|
+
), H = V(
|
|
1803
|
+
() => ({ ...p, ...m }),
|
|
1804
|
+
[p, m]
|
|
1760
1805
|
);
|
|
1761
|
-
return
|
|
1762
|
-
/* @__PURE__ */ ne(
|
|
1763
|
-
|
|
1806
|
+
return c && S ? null : /* @__PURE__ */ ne(He.Provider, { value: p, children: /* @__PURE__ */ ne(Je.Provider, { value: m, children: /* @__PURE__ */ Ke(Me.Provider, { value: H, children: [
|
|
1807
|
+
/* @__PURE__ */ ne(Lt, {}),
|
|
1808
|
+
t
|
|
1764
1809
|
] }) }) });
|
|
1765
1810
|
}
|
|
1766
|
-
function
|
|
1767
|
-
const { user: e, authState:
|
|
1811
|
+
function lA() {
|
|
1812
|
+
const { user: e, authState: t, error: A, logout: i, refreshUser: r, openModal: n, closeModal: s } = ye();
|
|
1768
1813
|
return {
|
|
1769
1814
|
user: e,
|
|
1770
|
-
authState:
|
|
1771
|
-
error:
|
|
1772
|
-
isAuthenticated:
|
|
1773
|
-
isLoading:
|
|
1815
|
+
authState: t,
|
|
1816
|
+
error: A,
|
|
1817
|
+
isAuthenticated: t === "authenticated" && e !== null,
|
|
1818
|
+
isLoading: t === "loading",
|
|
1774
1819
|
logout: i,
|
|
1775
1820
|
refreshUser: r,
|
|
1776
1821
|
openLoginModal: n,
|
|
1777
|
-
closeLoginModal:
|
|
1822
|
+
closeLoginModal: s
|
|
1778
1823
|
};
|
|
1779
1824
|
}
|
|
1780
1825
|
export {
|
|
1781
|
-
|
|
1826
|
+
gA as C,
|
|
1782
1827
|
Xe as D,
|
|
1783
|
-
|
|
1784
|
-
|
|
1828
|
+
zt as a,
|
|
1829
|
+
tA as b,
|
|
1785
1830
|
z as c,
|
|
1786
|
-
|
|
1831
|
+
iA as d,
|
|
1787
1832
|
Se as e,
|
|
1788
|
-
|
|
1789
|
-
$
|
|
1833
|
+
_t as f,
|
|
1834
|
+
$t as g,
|
|
1790
1835
|
ze as h,
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1836
|
+
oA as i,
|
|
1837
|
+
sA as j,
|
|
1838
|
+
Ot as k,
|
|
1839
|
+
rt as l,
|
|
1840
|
+
nA as m,
|
|
1841
|
+
AA as n,
|
|
1842
|
+
xt as o,
|
|
1843
|
+
st as p,
|
|
1844
|
+
Tt as q,
|
|
1845
|
+
rA as r,
|
|
1846
|
+
IA as s,
|
|
1802
1847
|
ke as t,
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1848
|
+
lA as u,
|
|
1849
|
+
bt as v,
|
|
1850
|
+
eA as w,
|
|
1851
|
+
aA as x
|
|
1807
1852
|
};
|