@deloraprotocol/widget 1.0.12 → 1.0.15
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/README.md +66 -12
- package/dist/PhArrowCircleDown-lsK25DCk.js +74 -0
- package/dist/PhArrowCircleDown-lsK25DCk.js.map +1 -0
- package/dist/PhArrowClockwise-NeKHZ1co.js +74 -0
- package/dist/PhArrowClockwise-NeKHZ1co.js.map +1 -0
- package/dist/PhArrowDown-C9AkNvLs.js +74 -0
- package/dist/PhArrowDown-C9AkNvLs.js.map +1 -0
- package/dist/PhArrowLeft-RNfIQP1X.js +74 -0
- package/dist/PhArrowLeft-RNfIQP1X.js.map +1 -0
- package/dist/PhArrowRight-DM1tna0G.js +74 -0
- package/dist/PhArrowRight-DM1tna0G.js.map +1 -0
- package/dist/PhArrowSquareOut-S5XYbAZj.js +74 -0
- package/dist/PhArrowSquareOut-S5XYbAZj.js.map +1 -0
- package/dist/PhArrowUp-DmktzOWy.js +74 -0
- package/dist/PhArrowUp-DmktzOWy.js.map +1 -0
- package/dist/PhArrowUpRight-BkNeW_5i.js +74 -0
- package/dist/PhArrowUpRight-BkNeW_5i.js.map +1 -0
- package/dist/PhArrowsClockwise-CQ4pG76b.js +74 -0
- package/dist/PhArrowsClockwise-CQ4pG76b.js.map +1 -0
- package/dist/PhArrowsDownUp-H6gxaNM6.js +74 -0
- package/dist/PhArrowsDownUp-H6gxaNM6.js.map +1 -0
- package/dist/PhArrowsLeftRight-DZSsfMR6.js +74 -0
- package/dist/PhArrowsLeftRight-DZSsfMR6.js.map +1 -0
- package/dist/PhBank-4_9QzqIB.js +74 -0
- package/dist/PhBank-4_9QzqIB.js.map +1 -0
- package/dist/PhBrowser-B-JSznId.js +74 -0
- package/dist/PhBrowser-B-JSznId.js.map +1 -0
- package/dist/PhCaretDown-vV5oHMNi.js +74 -0
- package/dist/PhCaretDown-vV5oHMNi.js.map +1 -0
- package/dist/PhCaretLeft-BLo6Y_f4.js +74 -0
- package/dist/PhCaretLeft-BLo6Y_f4.js.map +1 -0
- package/dist/PhCaretRight-CqQN4TT3.js +74 -0
- package/dist/PhCaretRight-CqQN4TT3.js.map +1 -0
- package/dist/PhCaretUp-Df7UCAHy.js +74 -0
- package/dist/PhCaretUp-Df7UCAHy.js.map +1 -0
- package/dist/PhCheck-gtpfK4ed.js +74 -0
- package/dist/PhCheck-gtpfK4ed.js.map +1 -0
- package/dist/PhCircleHalf-Uq7dwDYw.js +74 -0
- package/dist/PhCircleHalf-Uq7dwDYw.js.map +1 -0
- package/dist/PhClock-SDCW-NmF.js +74 -0
- package/dist/PhClock-SDCW-NmF.js.map +1 -0
- package/dist/PhCompass-B7hgtdx-.js +74 -0
- package/dist/PhCompass-B7hgtdx-.js.map +1 -0
- package/dist/PhCopy-BcnhyXCy.js +74 -0
- package/dist/PhCopy-BcnhyXCy.js.map +1 -0
- package/dist/PhCreditCard-BJjByVgu.js +74 -0
- package/dist/PhCreditCard-BJjByVgu.js.map +1 -0
- package/dist/PhCurrencyDollar-B7ZXqXBy.js +74 -0
- package/dist/PhCurrencyDollar-B7ZXqXBy.js.map +1 -0
- package/dist/PhDesktop-B3VKPuJx.js +74 -0
- package/dist/PhDesktop-B3VKPuJx.js.map +1 -0
- package/dist/PhDeviceMobile-Bnd0TYEH.js +74 -0
- package/dist/PhDeviceMobile-Bnd0TYEH.js.map +1 -0
- package/dist/PhDotsThree-yyMWyZ-R.js +74 -0
- package/dist/PhDotsThree-yyMWyZ-R.js.map +1 -0
- package/dist/PhEnvelope-67uzHbI9.js +74 -0
- package/dist/PhEnvelope-67uzHbI9.js.map +1 -0
- package/dist/PhFunnelSimple-B-DCsloI.js +74 -0
- package/dist/PhFunnelSimple-B-DCsloI.js.map +1 -0
- package/dist/PhGlobe-TMm_6qGk.js +74 -0
- package/dist/PhGlobe-TMm_6qGk.js.map +1 -0
- package/dist/PhIdentificationCard-CePPD2xc.js +74 -0
- package/dist/PhIdentificationCard-CePPD2xc.js.map +1 -0
- package/dist/PhImage-gY96WtHR.js +74 -0
- package/dist/PhImage-gY96WtHR.js.map +1 -0
- package/dist/PhInfo-DRQM_ZDP.js +74 -0
- package/dist/PhInfo-DRQM_ZDP.js.map +1 -0
- package/dist/PhLightbulb-B0TxPfZ1.js +74 -0
- package/dist/PhLightbulb-B0TxPfZ1.js.map +1 -0
- package/dist/PhMagnifyingGlass-B8si5_6W.js +74 -0
- package/dist/PhMagnifyingGlass-B8si5_6W.js.map +1 -0
- package/dist/PhPaperPlaneRight-DVu5PLYd.js +74 -0
- package/dist/PhPaperPlaneRight-DVu5PLYd.js.map +1 -0
- package/dist/PhPlus-BfTsQnUz.js +74 -0
- package/dist/PhPlus-BfTsQnUz.js.map +1 -0
- package/dist/PhPower-CxYUGOWn.js +74 -0
- package/dist/PhPower-CxYUGOWn.js.map +1 -0
- package/dist/PhPuzzlePiece-CQ4wh0gV.js +74 -0
- package/dist/PhPuzzlePiece-CQ4wh0gV.js.map +1 -0
- package/dist/PhQrCode-BuJ97NYJ.js +74 -0
- package/dist/PhQrCode-BuJ97NYJ.js.map +1 -0
- package/dist/PhQuestion-kJoP8Mja.js +74 -0
- package/dist/PhQuestion-kJoP8Mja.js.map +1 -0
- package/dist/PhQuestionMark-C46ZkFpu.js +74 -0
- package/dist/PhQuestionMark-C46ZkFpu.js.map +1 -0
- package/dist/PhSealCheck-Eh8jVqSN.js +74 -0
- package/dist/PhSealCheck-Eh8jVqSN.js.map +1 -0
- package/dist/PhSignOut-jk97OSVt.js +74 -0
- package/dist/PhSignOut-jk97OSVt.js.map +1 -0
- package/dist/PhSpinner-CiYOhwMg.js +74 -0
- package/dist/PhSpinner-CiYOhwMg.js.map +1 -0
- package/dist/PhTrash-pxerMqzd.js +74 -0
- package/dist/PhTrash-pxerMqzd.js.map +1 -0
- package/dist/PhUser-BMg0VV4A.js +74 -0
- package/dist/PhUser-BMg0VV4A.js.map +1 -0
- package/dist/PhVault-DYQvx5A-.js +74 -0
- package/dist/PhVault-DYQvx5A-.js.map +1 -0
- package/dist/PhWallet-uTRV6YNK.js +74 -0
- package/dist/PhWallet-uTRV6YNK.js.map +1 -0
- package/dist/PhWarning-NLC5Mj87.js +74 -0
- package/dist/PhWarning-NLC5Mj87.js.map +1 -0
- package/dist/PhWarningCircle-Ch2jU9fA.js +74 -0
- package/dist/PhWarningCircle-Ch2jU9fA.js.map +1 -0
- package/dist/PhX-Bx4wpwm3.js +74 -0
- package/dist/PhX-Bx4wpwm3.js.map +1 -0
- package/dist/basic-DnbZIXNv.js +4454 -0
- package/dist/basic-DnbZIXNv.js.map +1 -0
- package/dist/core-BJbRYjpA.js +23617 -0
- package/dist/core-BJbRYjpA.js.map +1 -0
- package/dist/features-CLDSyjhj.js +275 -0
- package/dist/features-CLDSyjhj.js.map +1 -0
- package/dist/index-CRoLJyUl.js +32642 -0
- package/dist/index-CRoLJyUl.js.map +1 -0
- package/dist/index-CuaRapFw.js +9670 -0
- package/dist/index-CuaRapFw.js.map +1 -0
- package/dist/index-DNOgT607.js +15873 -0
- package/dist/index-DNOgT607.js.map +1 -0
- package/dist/index-yOQrbpOR.js +2540 -0
- package/dist/index-yOQrbpOR.js.map +1 -0
- package/dist/index.d.ts +167 -9
- package/dist/index.js +5 -98494
- package/dist/index.js.map +1 -1
- package/dist/property-Bd8U3_QP.js +619 -0
- package/dist/property-Bd8U3_QP.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/w3m-modal-C2bO0YW4.js +6015 -0
- package/dist/w3m-modal-C2bO0YW4.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import { j as g, a1 as w, a2 as y, a3 as A, c as k, a4 as u, B as N, A as m } from "./core-BJbRYjpA.js";
|
|
2
|
+
class p {
|
|
3
|
+
constructor(e) {
|
|
4
|
+
this.getNonce = e.getNonce;
|
|
5
|
+
}
|
|
6
|
+
async createMessage(e) {
|
|
7
|
+
const t = {
|
|
8
|
+
accountAddress: e.accountAddress,
|
|
9
|
+
chainId: e.chainId,
|
|
10
|
+
version: "1",
|
|
11
|
+
domain: typeof document > "u" ? "Unknown Domain" : document.location.host,
|
|
12
|
+
uri: typeof document > "u" ? "Unknown URI" : document.location.href,
|
|
13
|
+
resources: this.resources,
|
|
14
|
+
nonce: await this.getNonce(e),
|
|
15
|
+
issuedAt: this.stringifyDate(/* @__PURE__ */ new Date()),
|
|
16
|
+
statement: void 0,
|
|
17
|
+
expirationTime: void 0,
|
|
18
|
+
notBefore: void 0
|
|
19
|
+
};
|
|
20
|
+
return Object.assign(t, {
|
|
21
|
+
toString: () => this.stringify(t)
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
stringify(e) {
|
|
25
|
+
var n;
|
|
26
|
+
const t = this.getNetworkName(e.chainId);
|
|
27
|
+
return [
|
|
28
|
+
`${e.domain} wants you to sign in with your ${t} account:`,
|
|
29
|
+
e.accountAddress,
|
|
30
|
+
e.statement ? `
|
|
31
|
+
${e.statement}
|
|
32
|
+
` : "",
|
|
33
|
+
`URI: ${e.uri}`,
|
|
34
|
+
`Version: ${e.version}`,
|
|
35
|
+
`Chain ID: ${e.chainId}`,
|
|
36
|
+
`Nonce: ${e.nonce}`,
|
|
37
|
+
e.issuedAt && `Issued At: ${e.issuedAt}`,
|
|
38
|
+
e.expirationTime && `Expiration Time: ${e.expirationTime}`,
|
|
39
|
+
e.notBefore && `Not Before: ${e.notBefore}`,
|
|
40
|
+
e.requestId && `Request ID: ${e.requestId}`,
|
|
41
|
+
((n = e.resources) == null ? void 0 : n.length) && e.resources.reduce((s, o) => `${s}
|
|
42
|
+
- ${o}`, "Resources:")
|
|
43
|
+
].filter((s) => typeof s == "string").join(`
|
|
44
|
+
`).trim();
|
|
45
|
+
}
|
|
46
|
+
getNetworkName(e) {
|
|
47
|
+
const t = g.getAllRequestedCaipNetworks();
|
|
48
|
+
return w.getNetworkNameByCaipNetworkId(t, e);
|
|
49
|
+
}
|
|
50
|
+
stringifyDate(e) {
|
|
51
|
+
return e.toISOString();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
class E {
|
|
55
|
+
constructor(e = {}) {
|
|
56
|
+
this.otpUuid = null, this.listeners = {
|
|
57
|
+
sessionChanged: []
|
|
58
|
+
}, this.localAuthStorageKey = e.localAuthStorageKey || y.SIWX_AUTH_TOKEN, this.localNonceStorageKey = e.localNonceStorageKey || y.SIWX_NONCE_TOKEN, this.required = e.required ?? !0, this.messenger = new p({
|
|
59
|
+
getNonce: this.getNonce.bind(this)
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async createMessage(e) {
|
|
63
|
+
return this.messenger.createMessage(e);
|
|
64
|
+
}
|
|
65
|
+
async addSession(e) {
|
|
66
|
+
const t = await this.request({
|
|
67
|
+
method: "POST",
|
|
68
|
+
key: "authenticate",
|
|
69
|
+
body: {
|
|
70
|
+
data: e.data,
|
|
71
|
+
message: e.message,
|
|
72
|
+
signature: e.signature,
|
|
73
|
+
clientId: this.getClientId(),
|
|
74
|
+
walletInfo: this.getWalletInfo()
|
|
75
|
+
},
|
|
76
|
+
headers: ["nonce", "otp"]
|
|
77
|
+
});
|
|
78
|
+
this.setStorageToken(t.token, this.localAuthStorageKey), this.emit("sessionChanged", e), this.setAppKitAccountUser(I(t.token)), this.otpUuid = null;
|
|
79
|
+
}
|
|
80
|
+
async getSessions(e, t) {
|
|
81
|
+
try {
|
|
82
|
+
if (!this.getStorageToken(this.localAuthStorageKey))
|
|
83
|
+
return [];
|
|
84
|
+
const n = await this.request({
|
|
85
|
+
method: "GET",
|
|
86
|
+
key: "me",
|
|
87
|
+
query: {},
|
|
88
|
+
headers: ["auth"]
|
|
89
|
+
});
|
|
90
|
+
if (!n)
|
|
91
|
+
return [];
|
|
92
|
+
const s = n.address.toLowerCase() === t.toLowerCase(), o = n.caip2Network === e;
|
|
93
|
+
if (!s || !o)
|
|
94
|
+
return [];
|
|
95
|
+
const r = {
|
|
96
|
+
data: {
|
|
97
|
+
accountAddress: n.address,
|
|
98
|
+
chainId: n.caip2Network
|
|
99
|
+
},
|
|
100
|
+
message: "",
|
|
101
|
+
signature: ""
|
|
102
|
+
};
|
|
103
|
+
return this.emit("sessionChanged", r), this.setAppKitAccountUser(n), [r];
|
|
104
|
+
} catch {
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async revokeSession(e, t) {
|
|
109
|
+
return Promise.resolve(this.clearStorageTokens());
|
|
110
|
+
}
|
|
111
|
+
async setSessions(e) {
|
|
112
|
+
if (e.length === 0)
|
|
113
|
+
this.clearStorageTokens();
|
|
114
|
+
else {
|
|
115
|
+
const t = e.find((n) => {
|
|
116
|
+
var s;
|
|
117
|
+
return n.data.chainId === ((s = A()) == null ? void 0 : s.caipNetworkId);
|
|
118
|
+
}) || e[0];
|
|
119
|
+
await this.addSession(t);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
getRequired() {
|
|
123
|
+
return this.required;
|
|
124
|
+
}
|
|
125
|
+
async getSessionAccount() {
|
|
126
|
+
if (!this.getStorageToken(this.localAuthStorageKey))
|
|
127
|
+
throw new Error("Not authenticated");
|
|
128
|
+
return this.request({
|
|
129
|
+
method: "GET",
|
|
130
|
+
key: "me",
|
|
131
|
+
body: void 0,
|
|
132
|
+
query: {
|
|
133
|
+
includeAppKitAccount: !0
|
|
134
|
+
},
|
|
135
|
+
headers: ["auth"]
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
async setSessionAccountMetadata(e = null) {
|
|
139
|
+
if (!this.getStorageToken(this.localAuthStorageKey))
|
|
140
|
+
throw new Error("Not authenticated");
|
|
141
|
+
return this.request({
|
|
142
|
+
method: "PUT",
|
|
143
|
+
key: "account-metadata",
|
|
144
|
+
body: { metadata: e },
|
|
145
|
+
headers: ["auth"]
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
on(e, t) {
|
|
149
|
+
return this.listeners[e].push(t), () => {
|
|
150
|
+
this.listeners[e] = this.listeners[e].filter((n) => n !== t);
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
removeAllListeners() {
|
|
154
|
+
Object.keys(this.listeners).forEach((t) => {
|
|
155
|
+
this.listeners[t] = [];
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
async requestEmailOtp({ email: e, account: t }) {
|
|
159
|
+
const n = await this.request({
|
|
160
|
+
method: "POST",
|
|
161
|
+
key: "otp",
|
|
162
|
+
body: { email: e, account: t }
|
|
163
|
+
});
|
|
164
|
+
return this.otpUuid = n.uuid, this.messenger.resources = [`email:${e}`], n;
|
|
165
|
+
}
|
|
166
|
+
confirmEmailOtp({ code: e }) {
|
|
167
|
+
return this.request({
|
|
168
|
+
method: "PUT",
|
|
169
|
+
key: "otp",
|
|
170
|
+
body: { code: e },
|
|
171
|
+
headers: ["otp"]
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
async request({ method: e, key: t, query: n, body: s, headers: o }) {
|
|
175
|
+
var f;
|
|
176
|
+
const { projectId: r, st: h, sv: S } = this.getSDKProperties(), a = new URL(`${k.W3M_API_URL}/auth/v1/${String(t)}`);
|
|
177
|
+
a.searchParams.set("projectId", r), a.searchParams.set("st", h), a.searchParams.set("sv", S), n && Object.entries(n).forEach(([i, l]) => a.searchParams.set(i, String(l)));
|
|
178
|
+
const c = await fetch(a, {
|
|
179
|
+
method: e,
|
|
180
|
+
body: s ? JSON.stringify(s) : void 0,
|
|
181
|
+
headers: Array.isArray(o) ? o.reduce((i, l) => {
|
|
182
|
+
switch (l) {
|
|
183
|
+
case "nonce":
|
|
184
|
+
i["x-nonce-jwt"] = `Bearer ${this.getStorageToken(this.localNonceStorageKey)}`;
|
|
185
|
+
break;
|
|
186
|
+
case "auth":
|
|
187
|
+
i.Authorization = `Bearer ${this.getStorageToken(this.localAuthStorageKey)}`;
|
|
188
|
+
break;
|
|
189
|
+
case "otp":
|
|
190
|
+
this.otpUuid && (i["x-otp"] = this.otpUuid);
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
return i;
|
|
194
|
+
}, {}) : void 0
|
|
195
|
+
});
|
|
196
|
+
if (!c.ok)
|
|
197
|
+
throw new Error(await c.text());
|
|
198
|
+
return (f = c.headers.get("content-type")) != null && f.includes("application/json") ? c.json() : null;
|
|
199
|
+
}
|
|
200
|
+
getStorageToken(e) {
|
|
201
|
+
return u.getItem(e);
|
|
202
|
+
}
|
|
203
|
+
setStorageToken(e, t) {
|
|
204
|
+
u.setItem(t, e);
|
|
205
|
+
}
|
|
206
|
+
clearStorageTokens() {
|
|
207
|
+
this.otpUuid = null, u.removeItem(this.localAuthStorageKey), u.removeItem(this.localNonceStorageKey), this.emit("sessionChanged", void 0);
|
|
208
|
+
}
|
|
209
|
+
async getNonce() {
|
|
210
|
+
const { nonce: e, token: t } = await this.request({
|
|
211
|
+
method: "GET",
|
|
212
|
+
key: "nonce"
|
|
213
|
+
});
|
|
214
|
+
return this.setStorageToken(t, this.localNonceStorageKey), e;
|
|
215
|
+
}
|
|
216
|
+
getClientId() {
|
|
217
|
+
return N.state.clientId;
|
|
218
|
+
}
|
|
219
|
+
getWalletInfo() {
|
|
220
|
+
var o;
|
|
221
|
+
const e = (o = g.getAccountData()) == null ? void 0 : o.connectedWalletInfo;
|
|
222
|
+
if (!e)
|
|
223
|
+
return;
|
|
224
|
+
if ("social" in e && "identifier" in e) {
|
|
225
|
+
const r = e.social, h = e.identifier;
|
|
226
|
+
return { type: "social", social: r, identifier: h };
|
|
227
|
+
}
|
|
228
|
+
const { name: t, icon: n } = e;
|
|
229
|
+
let s = "unknown";
|
|
230
|
+
switch (e.type) {
|
|
231
|
+
case "EXTERNAL":
|
|
232
|
+
case "INJECTED":
|
|
233
|
+
case "ANNOUNCED":
|
|
234
|
+
s = "extension";
|
|
235
|
+
break;
|
|
236
|
+
case "WALLET_CONNECT":
|
|
237
|
+
s = "walletconnect";
|
|
238
|
+
break;
|
|
239
|
+
default:
|
|
240
|
+
s = "unknown";
|
|
241
|
+
}
|
|
242
|
+
return {
|
|
243
|
+
type: s,
|
|
244
|
+
name: t,
|
|
245
|
+
icon: n
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
getSDKProperties() {
|
|
249
|
+
return m._getSdkProperties();
|
|
250
|
+
}
|
|
251
|
+
emit(e, t) {
|
|
252
|
+
this.listeners[e].forEach((n) => n(t));
|
|
253
|
+
}
|
|
254
|
+
setAppKitAccountUser(e) {
|
|
255
|
+
const { email: t } = e;
|
|
256
|
+
t && Object.values(k.CHAIN).forEach((n) => {
|
|
257
|
+
g.setAccountProp("user", { email: t }, n);
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
function I(d) {
|
|
262
|
+
const e = d.split(".");
|
|
263
|
+
if (e.length !== 3)
|
|
264
|
+
throw new Error("Invalid token");
|
|
265
|
+
const t = e[1];
|
|
266
|
+
if (typeof t != "string")
|
|
267
|
+
throw new Error("Invalid token");
|
|
268
|
+
const n = t.replace(/-/gu, "+").replace(/_/gu, "/"), s = n.padEnd(n.length + (4 - n.length % 4) % 4, "=");
|
|
269
|
+
return JSON.parse(atob(s));
|
|
270
|
+
}
|
|
271
|
+
export {
|
|
272
|
+
E as ReownAuthentication,
|
|
273
|
+
p as ReownAuthenticationMessenger
|
|
274
|
+
};
|
|
275
|
+
//# sourceMappingURL=features-CLDSyjhj.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features-CLDSyjhj.js","sources":["../node_modules/@reown/appkit-controllers/dist/esm/src/features/siwx/reown-authentication/ReownAuthenticationMessenger.js","../node_modules/@reown/appkit-controllers/dist/esm/src/features/siwx/reown-authentication/ReownAuthentication.js"],"sourcesContent":["import { NetworkUtil } from '@reown/appkit-common';\nimport { ChainController } from '../../../controllers/ChainController.js';\nexport class ReownAuthenticationMessenger {\n constructor(params) {\n this.getNonce = params.getNonce;\n }\n async createMessage(input) {\n const params = {\n accountAddress: input.accountAddress,\n chainId: input.chainId,\n version: '1',\n domain: typeof document === 'undefined' ? 'Unknown Domain' : document.location.host,\n uri: typeof document === 'undefined' ? 'Unknown URI' : document.location.href,\n resources: this.resources,\n nonce: await this.getNonce(input),\n issuedAt: this.stringifyDate(new Date()),\n statement: undefined,\n expirationTime: undefined,\n notBefore: undefined\n };\n const methods = {\n toString: () => this.stringify(params)\n };\n return Object.assign(params, methods);\n }\n stringify(params) {\n const networkName = this.getNetworkName(params.chainId);\n return [\n `${params.domain} wants you to sign in with your ${networkName} account:`,\n params.accountAddress,\n params.statement ? `\\n${params.statement}\\n` : '',\n `URI: ${params.uri}`,\n `Version: ${params.version}`,\n `Chain ID: ${params.chainId}`,\n `Nonce: ${params.nonce}`,\n params.issuedAt && `Issued At: ${params.issuedAt}`,\n params.expirationTime && `Expiration Time: ${params.expirationTime}`,\n params.notBefore && `Not Before: ${params.notBefore}`,\n params.requestId && `Request ID: ${params.requestId}`,\n params.resources?.length &&\n params.resources.reduce((acc, resource) => `${acc}\\n- ${resource}`, 'Resources:')\n ]\n .filter(line => typeof line === 'string')\n .join('\\n')\n .trim();\n }\n getNetworkName(chainId) {\n const requestedNetworks = ChainController.getAllRequestedCaipNetworks();\n return NetworkUtil.getNetworkNameByCaipNetworkId(requestedNetworks, chainId);\n }\n stringifyDate(date) {\n return date.toISOString();\n }\n}\n//# sourceMappingURL=ReownAuthenticationMessenger.js.map","//\nimport { ConstantsUtil, SafeLocalStorage, SafeLocalStorageKeys } from '@reown/appkit-common';\nimport { ApiController } from '../../../controllers/ApiController.js';\nimport { BlockchainApiController } from '../../../controllers/BlockchainApiController.js';\nimport { ChainController } from '../../../controllers/ChainController.js';\nimport { getActiveCaipNetwork } from '../../../utils/ChainControllerUtil.js';\nimport { ReownAuthenticationMessenger } from './ReownAuthenticationMessenger.js';\n/**\n * This is the configuration for using SIWX with Reown Authentication service.\n * It allows you to authenticate and capture user sessions through the Cloud Dashboard.\n */\nexport class ReownAuthentication {\n constructor(params = {}) {\n this.otpUuid = null;\n this.listeners = {\n sessionChanged: []\n };\n this.localAuthStorageKey =\n params.localAuthStorageKey ||\n SafeLocalStorageKeys.SIWX_AUTH_TOKEN;\n this.localNonceStorageKey =\n params.localNonceStorageKey ||\n SafeLocalStorageKeys.SIWX_NONCE_TOKEN;\n this.required = params.required ?? true;\n this.messenger = new ReownAuthenticationMessenger({\n getNonce: this.getNonce.bind(this)\n });\n }\n async createMessage(input) {\n return this.messenger.createMessage(input);\n }\n async addSession(session) {\n const response = await this.request({\n method: 'POST',\n key: 'authenticate',\n body: {\n data: session.data,\n message: session.message,\n signature: session.signature,\n clientId: this.getClientId(),\n walletInfo: this.getWalletInfo()\n },\n headers: ['nonce', 'otp']\n });\n this.setStorageToken(response.token, this.localAuthStorageKey);\n this.emit('sessionChanged', session);\n this.setAppKitAccountUser(jwtDecode(response.token));\n this.otpUuid = null;\n }\n async getSessions(chainId, address) {\n try {\n if (!this.getStorageToken(this.localAuthStorageKey)) {\n return [];\n }\n const account = await this.request({\n method: 'GET',\n key: 'me',\n query: {},\n headers: ['auth']\n });\n if (!account) {\n return [];\n }\n const isSameAddress = account.address.toLowerCase() === address.toLowerCase();\n const isSameNetwork = account.caip2Network === chainId;\n if (!isSameAddress || !isSameNetwork) {\n return [];\n }\n const session = {\n data: {\n accountAddress: account.address,\n chainId: account.caip2Network\n },\n message: '',\n signature: ''\n };\n this.emit('sessionChanged', session);\n this.setAppKitAccountUser(account);\n return [session];\n }\n catch {\n return [];\n }\n }\n async revokeSession(_chainId, _address) {\n return Promise.resolve(this.clearStorageTokens());\n }\n async setSessions(sessions) {\n if (sessions.length === 0) {\n this.clearStorageTokens();\n }\n else {\n const session = (sessions.find(s => s.data.chainId === getActiveCaipNetwork()?.caipNetworkId) || sessions[0]);\n await this.addSession(session);\n }\n }\n getRequired() {\n return this.required;\n }\n async getSessionAccount() {\n if (!this.getStorageToken(this.localAuthStorageKey)) {\n throw new Error('Not authenticated');\n }\n return this.request({\n method: 'GET',\n key: 'me',\n body: undefined,\n query: {\n includeAppKitAccount: true\n },\n headers: ['auth']\n });\n }\n async setSessionAccountMetadata(metadata = null) {\n if (!this.getStorageToken(this.localAuthStorageKey)) {\n throw new Error('Not authenticated');\n }\n return this.request({\n method: 'PUT',\n key: 'account-metadata',\n body: { metadata },\n headers: ['auth']\n });\n }\n on(event, callback) {\n this.listeners[event].push(callback);\n return () => {\n this.listeners[event] = this.listeners[event].filter(cb => cb !== callback);\n };\n }\n removeAllListeners() {\n const keys = Object.keys(this.listeners);\n keys.forEach(key => {\n this.listeners[key] = [];\n });\n }\n async requestEmailOtp({ email, account }) {\n const otp = await this.request({\n method: 'POST',\n key: 'otp',\n body: { email, account }\n });\n this.otpUuid = otp.uuid;\n this.messenger.resources = [`email:${email}`];\n return otp;\n }\n confirmEmailOtp({ code }) {\n return this.request({\n method: 'PUT',\n key: 'otp',\n body: { code },\n headers: ['otp']\n });\n }\n async request({ method, key, query, body, headers }) {\n const { projectId, st, sv } = this.getSDKProperties();\n const url = new URL(`${ConstantsUtil.W3M_API_URL}/auth/v1/${String(key)}`);\n url.searchParams.set('projectId', projectId);\n url.searchParams.set('st', st);\n url.searchParams.set('sv', sv);\n if (query) {\n Object.entries(query).forEach(([queryKey, queryValue]) => url.searchParams.set(queryKey, String(queryValue)));\n }\n const response = await fetch(url, {\n method,\n body: body ? JSON.stringify(body) : undefined,\n headers: Array.isArray(headers)\n ? headers.reduce((acc, header) => {\n switch (header) {\n case 'nonce':\n acc['x-nonce-jwt'] = `Bearer ${this.getStorageToken(this.localNonceStorageKey)}`;\n break;\n case 'auth':\n acc['Authorization'] = `Bearer ${this.getStorageToken(this.localAuthStorageKey)}`;\n break;\n case 'otp':\n if (this.otpUuid) {\n acc['x-otp'] = this.otpUuid;\n }\n break;\n default:\n break;\n }\n return acc;\n }, {})\n : undefined\n });\n if (!response.ok) {\n throw new Error(await response.text());\n }\n if (response.headers.get('content-type')?.includes('application/json')) {\n return response.json();\n }\n return null;\n }\n getStorageToken(key) {\n return SafeLocalStorage.getItem(key);\n }\n setStorageToken(token, key) {\n SafeLocalStorage.setItem(key, token);\n }\n clearStorageTokens() {\n this.otpUuid = null;\n SafeLocalStorage.removeItem(this.localAuthStorageKey);\n SafeLocalStorage.removeItem(this.localNonceStorageKey);\n this.emit('sessionChanged', undefined);\n }\n async getNonce() {\n const { nonce, token } = await this.request({\n method: 'GET',\n key: 'nonce'\n });\n this.setStorageToken(token, this.localNonceStorageKey);\n return nonce;\n }\n getClientId() {\n return BlockchainApiController.state.clientId;\n }\n getWalletInfo() {\n const walletInfo = ChainController.getAccountData()?.connectedWalletInfo;\n if (!walletInfo) {\n return undefined;\n }\n if ('social' in walletInfo && 'identifier' in walletInfo) {\n const social = walletInfo['social'];\n const identifier = walletInfo['identifier'];\n return { type: 'social', social, identifier };\n }\n const { name, icon } = walletInfo;\n let type = 'unknown';\n switch (walletInfo.type) {\n case 'EXTERNAL':\n case 'INJECTED':\n case 'ANNOUNCED':\n type = 'extension';\n break;\n case 'WALLET_CONNECT':\n type = 'walletconnect';\n break;\n default:\n type = 'unknown';\n }\n return {\n type,\n name,\n icon\n };\n }\n getSDKProperties() {\n return ApiController._getSdkProperties();\n }\n emit(event, data) {\n this.listeners[event].forEach(listener => listener(data));\n }\n setAppKitAccountUser(session) {\n const { email } = session;\n if (email) {\n Object.values(ConstantsUtil.CHAIN).forEach(chainNamespace => {\n ChainController.setAccountProp('user', { email }, chainNamespace);\n });\n }\n }\n}\n/**\n * Decodes a JWT token and returns its payload\n * @param token - The JWT token to decode\n * @returns The decoded payload or null if invalid\n */\nfunction jwtDecode(token) {\n // Split the token into parts\n const parts = token.split('.');\n // Check if the token has the correct format (header.payload.signature)\n if (parts.length !== 3) {\n throw new Error('Invalid token');\n }\n // Decode the payload (second part)\n const payload = parts[1];\n if (typeof payload !== 'string') {\n throw new Error('Invalid token');\n }\n // Convert base64url to base64\n const base64 = payload.replace(/-/gu, '+').replace(/_/gu, '/');\n // Add padding if needed\n const padded = base64.padEnd(base64.length + ((4 - (base64.length % 4)) % 4), '=');\n // Decode and parse the JSON\n const decoded = JSON.parse(atob(padded));\n return decoded;\n}\n//# sourceMappingURL=ReownAuthentication.js.map"],"names":["ReownAuthenticationMessenger","params","input","networkName","_a","acc","resource","line","chainId","requestedNetworks","ChainController","NetworkUtil","date","ReownAuthentication","SafeLocalStorageKeys","session","response","jwtDecode","address","account","isSameAddress","isSameNetwork","_chainId","_address","sessions","s","getActiveCaipNetwork","metadata","event","callback","cb","key","email","otp","code","method","query","body","headers","projectId","st","sv","url","ConstantsUtil","queryKey","queryValue","header","SafeLocalStorage","token","nonce","BlockchainApiController","walletInfo","social","identifier","name","icon","type","ApiController","data","listener","chainNamespace","parts","payload","base64","padded"],"mappings":"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","x_google_ignoreList":[0,1]}
|