@mocanetwork/airkit 1.0.0 → 1.1.0-beta.0
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/airkit.cjs.js +385 -145
- package/dist/airkit.esm.js +375 -144
- package/dist/airkit.umd.js +385 -145
- package/dist/types/airService.d.ts +8 -5
- package/dist/types/airWalletProvider.d.ts +11 -3
- package/dist/types/common/air/error/codes.d.ts +138 -0
- package/dist/types/common/air/{error.d.ts → error/index.d.ts} +3 -2
- package/dist/types/common/air/error/types.d.ts +3 -0
- package/dist/types/common/provider/types.d.ts +6 -1
- package/dist/types/common/realm/messaging/auth.d.ts +42 -40
- package/dist/types/common/realm/messaging/provider.d.ts +21 -3
- package/dist/types/common/realm/messaging/types.d.ts +10 -6
- package/dist/types/common/realm/partner/config.d.ts +5 -12
- package/dist/types/common/realm/user/types.d.ts +7 -3
- package/dist/types/common/realm/wallet/index.d.ts +0 -2
- package/dist/types/common/utils.d.ts +2 -1
- package/dist/types/error.d.ts +46 -2
- package/dist/types/index.d.ts +0 -1
- package/dist/types/interfaces.d.ts +7 -41
- package/dist/types/messageService.d.ts +6 -2
- package/package.json +1 -2
- package/dist/types/common/provider/error.d.ts +0 -16
- package/dist/types/common/realm/error/auth.d.ts +0 -1
- package/dist/types/common/realm/error/types.d.ts +0 -1
package/dist/airkit.umd.js
CHANGED
|
@@ -108,6 +108,8 @@
|
|
|
108
108
|
LOGIN_REQUEST: "air_auth_login_request",
|
|
109
109
|
LOGIN_RESPONSE: "air_auth_login_response",
|
|
110
110
|
LOGIN_WALLET_RESPONSE: "air_auth_login_wallet_response",
|
|
111
|
+
USER_INFO_REQUEST: "air_auth_user_info_request",
|
|
112
|
+
USER_INFO_RESPONSE: "air_auth_user_info_response",
|
|
111
113
|
PARTNER_USER_INFO_REQUEST: "air_auth_partner_user_info_request",
|
|
112
114
|
PARTNER_USER_INFO_RESPONSE: "air_auth_partner_user_info_response",
|
|
113
115
|
REFRESH_TOKEN_REQUEST: "air_auth_refresh_token_request",
|
|
@@ -120,8 +122,11 @@
|
|
|
120
122
|
SETUP_WALLET_RESPONSE: "air_auth_setup_wallet_response",
|
|
121
123
|
SIGN_SIWE_MESSAGE_REQUEST: "air_auth_sign_siwe_message_request",
|
|
122
124
|
SIGN_SIWE_MESSAGE_RESPONSE: "air_auth_sign_siwe_message_response",
|
|
125
|
+
CROSS_PARTNER_TOKEN_REQUEST: "air_auth_cross_partner_token_request",
|
|
126
|
+
CROSS_PARTNER_TOKEN_RESPONSE: "air_auth_cross_partner_token_response",
|
|
123
127
|
LOGOUT_REQUEST: "air_auth_logout_request",
|
|
124
|
-
LOGOUT_RESPONSE: "air_auth_logout_response"
|
|
128
|
+
LOGOUT_RESPONSE: "air_auth_logout_response",
|
|
129
|
+
RESET_WALLET_COMMUNICATION: "air_auth_reset_wallet_communication"
|
|
125
130
|
};
|
|
126
131
|
|
|
127
132
|
const AirMessageTypes = {
|
|
@@ -144,9 +149,156 @@
|
|
|
144
149
|
IS_SMART_ACCOUNT_DEPLOYED_REQUEST: "air_is_smart_account_deployed_request",
|
|
145
150
|
IS_SMART_ACCOUNT_DEPLOYED_RESPONSE: "air_is_smart_account_deployed_response",
|
|
146
151
|
LOGOUT_REQUEST: "air_logout_request",
|
|
147
|
-
LOGOUT_RESPONSE: "air_logout_response"
|
|
152
|
+
LOGOUT_RESPONSE: "air_logout_response",
|
|
153
|
+
SETUP_MFA_REQUEST: "air_setup_mfa_request"
|
|
148
154
|
};
|
|
149
155
|
|
|
156
|
+
class BaseError extends Error {
|
|
157
|
+
constructor(name, message, options = {}) {
|
|
158
|
+
const {
|
|
159
|
+
cause,
|
|
160
|
+
context
|
|
161
|
+
} = options;
|
|
162
|
+
super(message || name);
|
|
163
|
+
this.name = name;
|
|
164
|
+
this.stack = cause?.stack;
|
|
165
|
+
this.cause = cause;
|
|
166
|
+
this.context = context;
|
|
167
|
+
}
|
|
168
|
+
toJSON() {
|
|
169
|
+
return {
|
|
170
|
+
name: this.name,
|
|
171
|
+
message: this.message,
|
|
172
|
+
context: this.context,
|
|
173
|
+
cause: this.cause
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
class AirServiceError extends BaseError {
|
|
179
|
+
static from(error) {
|
|
180
|
+
if (error instanceof AirServiceError) {
|
|
181
|
+
return error;
|
|
182
|
+
}
|
|
183
|
+
else if (error instanceof Object && "message" in error) {
|
|
184
|
+
if (error.message === "User cancelled login") {
|
|
185
|
+
return new AirServiceError("USER_CANCELLED", error.message);
|
|
186
|
+
}
|
|
187
|
+
return new AirServiceError("UNKNOWN_ERROR", error.message.toString());
|
|
188
|
+
}
|
|
189
|
+
return new AirServiceError("UNKNOWN_ERROR");
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
class ProviderRpcError extends Error {
|
|
193
|
+
constructor(message) {
|
|
194
|
+
super(message);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
class UserRejectedRequestError extends ProviderRpcError {
|
|
198
|
+
constructor() {
|
|
199
|
+
super(...arguments);
|
|
200
|
+
this.code = 4001;
|
|
201
|
+
this.name = "UserRejectedRequestError";
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
class UnauthorizedProviderError extends ProviderRpcError {
|
|
205
|
+
constructor() {
|
|
206
|
+
super(...arguments);
|
|
207
|
+
this.code = 4100;
|
|
208
|
+
this.name = "UnauthorizedProviderError";
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
class UnsupportedProviderMethodError extends ProviderRpcError {
|
|
212
|
+
constructor() {
|
|
213
|
+
super(...arguments);
|
|
214
|
+
this.code = 4200;
|
|
215
|
+
this.name = "UnsupportedProviderMethodError";
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
class ProviderDisconnectedError extends ProviderRpcError {
|
|
219
|
+
constructor() {
|
|
220
|
+
super(...arguments);
|
|
221
|
+
this.code = 4900;
|
|
222
|
+
this.name = "ProviderDisconnectedError";
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
class ChainDisconnectedError extends ProviderRpcError {
|
|
226
|
+
constructor() {
|
|
227
|
+
super(...arguments);
|
|
228
|
+
this.code = 4901;
|
|
229
|
+
this.name = "ChainDisconnectedError";
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
class SwitchChainError extends ProviderRpcError {
|
|
233
|
+
constructor() {
|
|
234
|
+
super(...arguments);
|
|
235
|
+
this.code = 4902;
|
|
236
|
+
this.name = "SwitchChainError";
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
class InvalidRequestRpcError extends ProviderRpcError {
|
|
240
|
+
constructor() {
|
|
241
|
+
super(...arguments);
|
|
242
|
+
this.code = -32600;
|
|
243
|
+
this.name = "InvalidRequestRpcError";
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
class MethodNotFoundRpcError extends ProviderRpcError {
|
|
247
|
+
constructor() {
|
|
248
|
+
super(...arguments);
|
|
249
|
+
this.code = -32601;
|
|
250
|
+
this.name = "MethodNotFoundRpcError";
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
class InvalidParamsRpcError extends ProviderRpcError {
|
|
254
|
+
constructor() {
|
|
255
|
+
super(...arguments);
|
|
256
|
+
this.code = -32602;
|
|
257
|
+
this.name = "InvalidParamsRpcError";
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
class InternalRpcError extends ProviderRpcError {
|
|
261
|
+
constructor() {
|
|
262
|
+
super(...arguments);
|
|
263
|
+
this.code = -32603;
|
|
264
|
+
this.name = "InternalRpcError";
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
function ensureProviderRpcError(value) {
|
|
268
|
+
if (value instanceof ProviderRpcError) {
|
|
269
|
+
return value;
|
|
270
|
+
}
|
|
271
|
+
if (typeof value === "object" &&
|
|
272
|
+
value !== null &&
|
|
273
|
+
"errorCode" in value &&
|
|
274
|
+
"errorMessage" in value) {
|
|
275
|
+
if (typeof value.errorCode === "number" && typeof value.errorMessage === "string") {
|
|
276
|
+
switch (value.errorCode) {
|
|
277
|
+
case 4001:
|
|
278
|
+
return new UserRejectedRequestError(value.errorMessage);
|
|
279
|
+
case 4100:
|
|
280
|
+
return new UnauthorizedProviderError(value.errorMessage);
|
|
281
|
+
case 4200:
|
|
282
|
+
return new UnsupportedProviderMethodError(value.errorMessage);
|
|
283
|
+
case 4900:
|
|
284
|
+
return new ProviderDisconnectedError(value.errorMessage);
|
|
285
|
+
case 4901:
|
|
286
|
+
return new ChainDisconnectedError(value.errorMessage);
|
|
287
|
+
case 4902:
|
|
288
|
+
return new SwitchChainError(value.errorMessage);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
let stringified = "[Unable to stringify the thrown value]";
|
|
293
|
+
try {
|
|
294
|
+
stringified = JSON.stringify(value);
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
// ignoring failed stringify
|
|
298
|
+
}
|
|
299
|
+
return new InternalRpcError(`Invalid value for ProviderRpcError: ${stringified}`);
|
|
300
|
+
}
|
|
301
|
+
|
|
150
302
|
function isFunction(value) {
|
|
151
303
|
return typeof value === 'function';
|
|
152
304
|
}
|
|
@@ -874,50 +1026,11 @@
|
|
|
874
1026
|
});
|
|
875
1027
|
}
|
|
876
1028
|
|
|
877
|
-
class BaseError extends Error {
|
|
878
|
-
constructor(name, message, options = {}) {
|
|
879
|
-
const {
|
|
880
|
-
cause,
|
|
881
|
-
context
|
|
882
|
-
} = options;
|
|
883
|
-
super(message || name);
|
|
884
|
-
this.name = name;
|
|
885
|
-
this.stack = cause?.stack;
|
|
886
|
-
this.cause = cause;
|
|
887
|
-
this.context = context;
|
|
888
|
-
}
|
|
889
|
-
toJSON() {
|
|
890
|
-
return {
|
|
891
|
-
name: this.name,
|
|
892
|
-
message: this.message,
|
|
893
|
-
context: this.context,
|
|
894
|
-
cause: this.cause
|
|
895
|
-
};
|
|
896
|
-
}
|
|
897
|
-
}
|
|
898
|
-
|
|
899
|
-
class AirServiceError extends BaseError {
|
|
900
|
-
static from(error) {
|
|
901
|
-
if (error instanceof AirServiceError) {
|
|
902
|
-
return error;
|
|
903
|
-
}
|
|
904
|
-
else if (error instanceof Object && "message" in error) {
|
|
905
|
-
if (error.message === "User cancelled login") {
|
|
906
|
-
return new AirServiceError("USER_CANCELLED", error.message);
|
|
907
|
-
}
|
|
908
|
-
return new AirServiceError("UNKNOWN_ERROR", error.message.toString());
|
|
909
|
-
}
|
|
910
|
-
return new AirServiceError("UNKNOWN_ERROR");
|
|
911
|
-
}
|
|
912
|
-
}
|
|
913
|
-
class RealmEmbedError extends AirServiceError {
|
|
914
|
-
}
|
|
915
|
-
|
|
916
1029
|
function getDefaultExportFromCjs (x) {
|
|
917
1030
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
918
1031
|
}
|
|
919
1032
|
|
|
920
|
-
var loglevel$
|
|
1033
|
+
var loglevel$1 = {exports: {}};
|
|
921
1034
|
|
|
922
1035
|
/*
|
|
923
1036
|
* loglevel - https://github.com/pimterry/loglevel
|
|
@@ -925,10 +1038,10 @@
|
|
|
925
1038
|
* Copyright (c) 2013 Tim Perry
|
|
926
1039
|
* Licensed under the MIT license.
|
|
927
1040
|
*/
|
|
928
|
-
var loglevel
|
|
1041
|
+
var loglevel = loglevel$1.exports;
|
|
929
1042
|
var hasRequiredLoglevel;
|
|
930
1043
|
function requireLoglevel() {
|
|
931
|
-
if (hasRequiredLoglevel) return loglevel$
|
|
1044
|
+
if (hasRequiredLoglevel) return loglevel$1.exports;
|
|
932
1045
|
hasRequiredLoglevel = 1;
|
|
933
1046
|
(function (module) {
|
|
934
1047
|
(function (root, definition) {
|
|
@@ -938,7 +1051,7 @@
|
|
|
938
1051
|
} else {
|
|
939
1052
|
root.log = definition();
|
|
940
1053
|
}
|
|
941
|
-
})(loglevel
|
|
1054
|
+
})(loglevel, function () {
|
|
942
1055
|
|
|
943
1056
|
// Slightly dubious tricks to cut down minimized file size
|
|
944
1057
|
var noop = function () {};
|
|
@@ -1237,19 +1350,20 @@
|
|
|
1237
1350
|
defaultLogger['default'] = defaultLogger;
|
|
1238
1351
|
return defaultLogger;
|
|
1239
1352
|
});
|
|
1240
|
-
})(loglevel$
|
|
1241
|
-
return loglevel$
|
|
1353
|
+
})(loglevel$1);
|
|
1354
|
+
return loglevel$1.exports;
|
|
1242
1355
|
}
|
|
1243
1356
|
|
|
1244
1357
|
var loglevelExports = requireLoglevel();
|
|
1245
|
-
var
|
|
1358
|
+
var log$1 = /*@__PURE__*/getDefaultExportFromCjs(loglevelExports);
|
|
1246
1359
|
|
|
1247
|
-
var log =
|
|
1360
|
+
var log = log$1.getLogger("airkit");
|
|
1248
1361
|
|
|
1249
1362
|
var AirWalletProviderMessageTypes;
|
|
1250
1363
|
(function (AirWalletProviderMessageTypes) {
|
|
1251
1364
|
AirWalletProviderMessageTypes["REQUEST"] = "JRPC_REQUEST";
|
|
1252
1365
|
AirWalletProviderMessageTypes["RESPONSE"] = "JRPC_RESPONSE";
|
|
1366
|
+
AirWalletProviderMessageTypes["EVENT"] = "JRPC_EVENT";
|
|
1253
1367
|
})(AirWalletProviderMessageTypes || (AirWalletProviderMessageTypes = {}));
|
|
1254
1368
|
|
|
1255
1369
|
const ACCOUNT_MESSAGES = [
|
|
@@ -1272,6 +1386,7 @@
|
|
|
1272
1386
|
AirAuthMessageTypes.SETUP_WALLET_REQUEST,
|
|
1273
1387
|
AirAuthMessageTypes.LOGOUT_RESPONSE,
|
|
1274
1388
|
AirAuthMessageTypes.PARTNER_USER_INFO_RESPONSE,
|
|
1389
|
+
AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE,
|
|
1275
1390
|
AirAuthMessageTypes.IFRAME_VISIBILITY_REQUEST,
|
|
1276
1391
|
];
|
|
1277
1392
|
class AirMessageService {
|
|
@@ -1295,6 +1410,9 @@
|
|
|
1295
1410
|
get providerMessage$() {
|
|
1296
1411
|
return this._providerMessage$.asObservable();
|
|
1297
1412
|
}
|
|
1413
|
+
get providerEvent$() {
|
|
1414
|
+
return this._providerEvent$.asObservable();
|
|
1415
|
+
}
|
|
1298
1416
|
async openAuthObservables({ authIframeOrigin }) {
|
|
1299
1417
|
this.closeAuthObservables();
|
|
1300
1418
|
this.setupAuthObservables();
|
|
@@ -1335,13 +1453,16 @@
|
|
|
1335
1453
|
if (ev.data.type === AirWalletProviderMessageTypes.RESPONSE) {
|
|
1336
1454
|
this._providerMessage$.next(ev.data);
|
|
1337
1455
|
}
|
|
1456
|
+
if (ev.data.type === AirWalletProviderMessageTypes.EVENT) {
|
|
1457
|
+
this._providerEvent$.next(ev.data);
|
|
1458
|
+
}
|
|
1338
1459
|
};
|
|
1339
1460
|
window.addEventListener("message", handleWalletMessage);
|
|
1340
1461
|
this.closeWalletMessageListeners = () => {
|
|
1341
1462
|
window.removeEventListener("message", handleWalletMessage);
|
|
1342
1463
|
};
|
|
1343
1464
|
}
|
|
1344
|
-
setupIframeCommunication(authIframe, walletIframe) {
|
|
1465
|
+
setupIframeCommunication(authIframe, walletIframe, skipWalletLogin) {
|
|
1345
1466
|
const channel = new MessageChannel();
|
|
1346
1467
|
const authOrigin = new URL(authIframe.src).origin;
|
|
1347
1468
|
authIframe.contentWindow.postMessage({
|
|
@@ -1350,6 +1471,9 @@
|
|
|
1350
1471
|
const walletOrigin = new URL(walletIframe.src).origin;
|
|
1351
1472
|
walletIframe.contentWindow.postMessage({
|
|
1352
1473
|
type: AirMessageTypes.INIT_AUTH_COMMUNICATION,
|
|
1474
|
+
payload: {
|
|
1475
|
+
skipWalletLogin,
|
|
1476
|
+
},
|
|
1353
1477
|
}, walletOrigin, [channel.port2]);
|
|
1354
1478
|
}
|
|
1355
1479
|
async sendGrantPermissionRequest(walletIframe, policies) {
|
|
@@ -1363,7 +1487,7 @@
|
|
|
1363
1487
|
}, origin);
|
|
1364
1488
|
const result = await response;
|
|
1365
1489
|
if (result.payload.success === false) {
|
|
1366
|
-
throw new
|
|
1490
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1367
1491
|
}
|
|
1368
1492
|
return result.payload.sessionData;
|
|
1369
1493
|
}
|
|
@@ -1384,7 +1508,7 @@
|
|
|
1384
1508
|
}, origin);
|
|
1385
1509
|
const result = await response;
|
|
1386
1510
|
if (result.payload.success === false) {
|
|
1387
|
-
throw new
|
|
1511
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1388
1512
|
}
|
|
1389
1513
|
return result.payload.txHash;
|
|
1390
1514
|
}
|
|
@@ -1399,7 +1523,7 @@
|
|
|
1399
1523
|
}, origin);
|
|
1400
1524
|
const result = await response;
|
|
1401
1525
|
if (result.payload.success === false) {
|
|
1402
|
-
throw new
|
|
1526
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1403
1527
|
}
|
|
1404
1528
|
return result.payload.txHash;
|
|
1405
1529
|
}
|
|
@@ -1443,6 +1567,10 @@
|
|
|
1443
1567
|
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.LOGOUT_REQUEST }, origin);
|
|
1444
1568
|
return response;
|
|
1445
1569
|
}
|
|
1570
|
+
sendResetAuthServiceWalletCommunication(authIframe) {
|
|
1571
|
+
const { origin: authOrigin } = new URL(authIframe.src);
|
|
1572
|
+
authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.RESET_WALLET_COMMUNICATION }, authOrigin);
|
|
1573
|
+
}
|
|
1446
1574
|
async sendAuthInitializationRequest(authIframe, payload) {
|
|
1447
1575
|
const response = firstValueFrom(this._authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.INITIALIZATION_RESPONSE)));
|
|
1448
1576
|
const { origin } = new URL(authIframe.src);
|
|
@@ -1455,6 +1583,17 @@
|
|
|
1455
1583
|
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.INITIALIZATION_REQUEST, payload }, origin);
|
|
1456
1584
|
return response;
|
|
1457
1585
|
}
|
|
1586
|
+
async sendCrossPartnerTokenRequest(authIframe, targetPartnerUrl) {
|
|
1587
|
+
const response = firstValueFrom(this.authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE)));
|
|
1588
|
+
const { origin } = new URL(authIframe.src);
|
|
1589
|
+
authIframe.contentWindow.postMessage({
|
|
1590
|
+
type: AirAuthMessageTypes.CROSS_PARTNER_TOKEN_REQUEST,
|
|
1591
|
+
payload: {
|
|
1592
|
+
targetPartnerUrl,
|
|
1593
|
+
},
|
|
1594
|
+
}, origin);
|
|
1595
|
+
return response;
|
|
1596
|
+
}
|
|
1458
1597
|
async sendGrantPermissionsRequest(walletIframe, payload) {
|
|
1459
1598
|
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.GRANT_PERMISSIONS_RESPONSE)));
|
|
1460
1599
|
const { origin } = new URL(walletIframe.src);
|
|
@@ -1495,6 +1634,8 @@
|
|
|
1495
1634
|
closeWalletObservables() {
|
|
1496
1635
|
if (this._providerMessage$ && !this._providerMessage$.closed)
|
|
1497
1636
|
this._providerMessage$.complete();
|
|
1637
|
+
if (this._providerEvent$ && !this._providerEvent$.closed)
|
|
1638
|
+
this._providerEvent$.complete();
|
|
1498
1639
|
if (this.closeWalletMessageListeners)
|
|
1499
1640
|
this.closeWalletMessageListeners();
|
|
1500
1641
|
}
|
|
@@ -1506,38 +1647,11 @@
|
|
|
1506
1647
|
}
|
|
1507
1648
|
setupWalletObservables() {
|
|
1508
1649
|
this._providerMessage$ = new Subject();
|
|
1650
|
+
this._providerEvent$ = new Subject();
|
|
1509
1651
|
}
|
|
1510
1652
|
}
|
|
1511
1653
|
var AirMessageService$1 = AirMessageService.instance;
|
|
1512
1654
|
|
|
1513
|
-
class ProviderRpcError extends Error {
|
|
1514
|
-
constructor(message, code, data) {
|
|
1515
|
-
super(message);
|
|
1516
|
-
this.code = code;
|
|
1517
|
-
this.data = data;
|
|
1518
|
-
}
|
|
1519
|
-
}
|
|
1520
|
-
new ProviderRpcError("Invalid JSON", -32700);
|
|
1521
|
-
const ProviderRpcInvalidRequestError = new ProviderRpcError("Invalid request", -32600);
|
|
1522
|
-
const ProviderRpcMethodNotFoundError = new ProviderRpcError("Method not found", -32601);
|
|
1523
|
-
const ProviderRpcInvalidParamsError = new ProviderRpcError("Invalid params", -32602);
|
|
1524
|
-
new ProviderRpcError("Internal error", -32603);
|
|
1525
|
-
new ProviderRpcError("User rejected request", 4001);
|
|
1526
|
-
new ProviderRpcError("Unauthorized", 4100);
|
|
1527
|
-
new ProviderRpcError("Unsupported method", 4200);
|
|
1528
|
-
new ProviderRpcError("Disconnected", 4900);
|
|
1529
|
-
new ProviderRpcError("Chain Disconnected", 4901);
|
|
1530
|
-
function ensureProviderRpcError(value) {
|
|
1531
|
-
if (value instanceof ProviderRpcError) return value;
|
|
1532
|
-
let stringified = "[Unable to stringify the thrown value]";
|
|
1533
|
-
try {
|
|
1534
|
-
stringified = JSON.stringify(value);
|
|
1535
|
-
} catch {
|
|
1536
|
-
// ignoring failed stringify
|
|
1537
|
-
}
|
|
1538
|
-
return new ProviderRpcError(`This value was not thrown as type ProviderRpcError: ${stringified}`, -32603);
|
|
1539
|
-
}
|
|
1540
|
-
|
|
1541
1655
|
const BUILD_ENV = {
|
|
1542
1656
|
PRODUCTION: "production",
|
|
1543
1657
|
STAGING: "staging",
|
|
@@ -1548,66 +1662,113 @@
|
|
|
1548
1662
|
[BUILD_ENV.DEVELOPMENT]: {
|
|
1549
1663
|
authUrl: "http://localhost:8100",
|
|
1550
1664
|
walletUrl: "http://localhost:8200",
|
|
1551
|
-
legacyWalletUrl: "https://localhost:4050",
|
|
1552
1665
|
logLevel: "debug",
|
|
1553
1666
|
},
|
|
1554
1667
|
[BUILD_ENV.STAGING]: {
|
|
1555
1668
|
authUrl: "https://auth.staging.air3.com",
|
|
1556
1669
|
walletUrl: "https://account.staging.air3.com",
|
|
1557
|
-
legacyWalletUrl: "https://account.staging.realmnetwork.io",
|
|
1558
1670
|
logLevel: "info",
|
|
1559
1671
|
},
|
|
1560
1672
|
[BUILD_ENV.PRODUCTION]: {
|
|
1561
1673
|
authUrl: "https://auth.air3.com",
|
|
1562
1674
|
walletUrl: "https://account.air3.com",
|
|
1563
|
-
legacyWalletUrl: "https://account.realmnetwork.io",
|
|
1564
1675
|
logLevel: "error",
|
|
1565
1676
|
},
|
|
1566
1677
|
};
|
|
1567
1678
|
const isElement = (element) => element instanceof Element || element instanceof Document;
|
|
1568
1679
|
const randomId = () => Math.random().toString(36).slice(2);
|
|
1569
1680
|
|
|
1570
|
-
var
|
|
1681
|
+
var _AirWalletProvider_instances, _AirWalletProvider_isLoggedIn, _AirWalletProvider_ensureWallet, _AirWalletProvider_getWalletIframeController, _AirWalletProvider_eventListeners, _AirWalletProvider_emit;
|
|
1571
1682
|
class AirWalletProvider {
|
|
1572
|
-
constructor(
|
|
1573
|
-
|
|
1574
|
-
|
|
1683
|
+
constructor({ isLoggedIn, ensureWallet, getWalletIframeController, }) {
|
|
1684
|
+
_AirWalletProvider_instances.add(this);
|
|
1685
|
+
_AirWalletProvider_isLoggedIn.set(this, undefined);
|
|
1686
|
+
_AirWalletProvider_ensureWallet.set(this, undefined);
|
|
1687
|
+
_AirWalletProvider_getWalletIframeController.set(this, undefined);
|
|
1688
|
+
_AirWalletProvider_eventListeners.set(this, undefined);
|
|
1689
|
+
this.listenProviderEventMessage = () => {
|
|
1690
|
+
AirMessageService$1.providerEvent$.subscribe((message) => {
|
|
1691
|
+
__classPrivateFieldGet(this, _AirWalletProvider_instances, "m", _AirWalletProvider_emit).call(this, message.payload.event, ...[message.payload.data]);
|
|
1692
|
+
});
|
|
1693
|
+
};
|
|
1694
|
+
__classPrivateFieldSet(this, _AirWalletProvider_isLoggedIn, isLoggedIn, "f");
|
|
1695
|
+
__classPrivateFieldSet(this, _AirWalletProvider_ensureWallet, ensureWallet, "f");
|
|
1696
|
+
__classPrivateFieldSet(this, _AirWalletProvider_getWalletIframeController, getWalletIframeController, "f");
|
|
1697
|
+
__classPrivateFieldSet(this, _AirWalletProvider_eventListeners, {
|
|
1698
|
+
connect: [],
|
|
1699
|
+
disconnect: [],
|
|
1700
|
+
accountsChanged: [],
|
|
1701
|
+
chainChanged: [],
|
|
1702
|
+
message: [],
|
|
1703
|
+
}, "f");
|
|
1575
1704
|
}
|
|
1576
1705
|
async request(request) {
|
|
1577
1706
|
// Check if the request is valid
|
|
1578
1707
|
if (!request || typeof request !== "object" || Array.isArray(request)) {
|
|
1579
|
-
throw
|
|
1708
|
+
throw new InvalidRequestRpcError("Invalid request");
|
|
1580
1709
|
}
|
|
1581
1710
|
const { method, params } = request;
|
|
1582
1711
|
// Check if the method is valid
|
|
1583
1712
|
if (typeof method !== "string" || method.length === 0) {
|
|
1584
|
-
throw
|
|
1713
|
+
throw new MethodNotFoundRpcError("Invalid method");
|
|
1585
1714
|
}
|
|
1586
1715
|
// Check if the params are valid
|
|
1587
1716
|
if (params !== undefined &&
|
|
1588
1717
|
!Array.isArray(params) &&
|
|
1589
1718
|
(typeof params !== "object" || params === null)) {
|
|
1590
|
-
throw
|
|
1719
|
+
throw new InvalidParamsRpcError("Invalid params");
|
|
1720
|
+
}
|
|
1721
|
+
// Check if the user is logged in
|
|
1722
|
+
if (!__classPrivateFieldGet(this, _AirWalletProvider_isLoggedIn, "f").call(this)) {
|
|
1723
|
+
throw new UnauthorizedProviderError("User is not logged in");
|
|
1724
|
+
}
|
|
1725
|
+
try {
|
|
1726
|
+
await __classPrivateFieldGet(this, _AirWalletProvider_ensureWallet, "f").call(this);
|
|
1727
|
+
}
|
|
1728
|
+
catch (error) {
|
|
1729
|
+
throw ensureProviderRpcError(error);
|
|
1591
1730
|
}
|
|
1592
1731
|
const requestId = randomId();
|
|
1593
|
-
const response = await AirMessageService$1.sendWalletProviderRequest(__classPrivateFieldGet(this,
|
|
1732
|
+
const response = await AirMessageService$1.sendWalletProviderRequest(__classPrivateFieldGet(this, _AirWalletProvider_getWalletIframeController, "f").call(this).iframeElement, {
|
|
1594
1733
|
requestId,
|
|
1595
1734
|
...request,
|
|
1596
1735
|
});
|
|
1597
1736
|
if (!response.success) {
|
|
1598
|
-
|
|
1599
|
-
throw error;
|
|
1737
|
+
throw ensureProviderRpcError(response.payload);
|
|
1600
1738
|
}
|
|
1601
1739
|
return response.payload.response;
|
|
1602
1740
|
}
|
|
1603
1741
|
on(eventName, listener) {
|
|
1604
|
-
|
|
1742
|
+
__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] = __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] || [];
|
|
1743
|
+
__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName].push(listener);
|
|
1605
1744
|
}
|
|
1606
1745
|
removeListener(eventName, listener) {
|
|
1607
|
-
|
|
1746
|
+
__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] = __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] || [];
|
|
1747
|
+
const index = __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName].indexOf(listener);
|
|
1748
|
+
if (index >= 0) {
|
|
1749
|
+
__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName].splice(index, 1);
|
|
1750
|
+
}
|
|
1751
|
+
}
|
|
1752
|
+
removeAllListeners() {
|
|
1753
|
+
__classPrivateFieldSet(this, _AirWalletProvider_eventListeners, {
|
|
1754
|
+
connect: [],
|
|
1755
|
+
disconnect: [],
|
|
1756
|
+
accountsChanged: [],
|
|
1757
|
+
chainChanged: [],
|
|
1758
|
+
message: [],
|
|
1759
|
+
}, "f");
|
|
1608
1760
|
}
|
|
1609
1761
|
}
|
|
1610
|
-
|
|
1762
|
+
_AirWalletProvider_isLoggedIn = new WeakMap(), _AirWalletProvider_ensureWallet = new WeakMap(), _AirWalletProvider_getWalletIframeController = new WeakMap(), _AirWalletProvider_eventListeners = new WeakMap(), _AirWalletProvider_instances = new WeakSet(), _AirWalletProvider_emit = function _AirWalletProvider_emit(eventName, ...args) {
|
|
1763
|
+
(__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] || []).forEach((listener) => {
|
|
1764
|
+
try {
|
|
1765
|
+
return listener(...args);
|
|
1766
|
+
}
|
|
1767
|
+
catch (error) {
|
|
1768
|
+
log$1.error(error);
|
|
1769
|
+
}
|
|
1770
|
+
});
|
|
1771
|
+
};
|
|
1611
1772
|
|
|
1612
1773
|
class IframeController {
|
|
1613
1774
|
constructor(iframeUrl, iframeId, state) {
|
|
@@ -1672,9 +1833,8 @@
|
|
|
1672
1833
|
isVisible: false,
|
|
1673
1834
|
};
|
|
1674
1835
|
|
|
1675
|
-
var _AirService_instances, _AirService_loginResult, _AirService_buildEnv, _AirService_enableLogging, _AirService_partnerId, _AirService_authIframeController, _AirService_isAuthInitialized, _AirService_airAuthListener, _AirService_walletIframeController, _AirService_walletInitialization, _AirService_isWalletInitialized, _AirService_airWalletProvider, _AirService_ensureWallet, _AirService_initializeWallet, _AirService_triggerEventListeners, _AirService_triggerAirAuthInitialized, _AirService_triggerAirAuthLoggedIn, _AirService_triggerAirAuthLoggedOut, _AirService_triggerWalletInitialized, _AirService_createLoginResult, _AirService_cleanUpAuth, _AirService_cleanUpWallet;
|
|
1836
|
+
var _AirService_instances, _AirService_loginResult, _AirService_buildEnv, _AirService_enableLogging, _AirService_partnerId, _AirService_authIframeController, _AirService_isAuthInitialized, _AirService_airAuthListener, _AirService_walletIframeController, _AirService_walletInitialization, _AirService_isWalletInitialized, _AirService_walletLoggedInResult, _AirService_airWalletProvider, _AirService_ensureWallet, _AirService_initializeWallet, _AirService_triggerEventListeners, _AirService_triggerAirAuthInitialized, _AirService_triggerAirAuthLoggedIn, _AirService_triggerAirAuthLoggedOut, _AirService_triggerWalletInitialized, _AirService_createLoginResult, _AirService_createWalletInitializedResult, _AirService_cleanUpAuth, _AirService_cleanUpWallet, _AirService_cleanUpAuthWalletCommunication;
|
|
1676
1837
|
class AirService {
|
|
1677
|
-
// #walletRehydrationState: AirRehydrationResult;
|
|
1678
1838
|
constructor({ partnerId }) {
|
|
1679
1839
|
_AirService_instances.add(this);
|
|
1680
1840
|
_AirService_loginResult.set(this, undefined);
|
|
@@ -1688,8 +1848,14 @@
|
|
|
1688
1848
|
_AirService_walletIframeController.set(this, undefined);
|
|
1689
1849
|
_AirService_walletInitialization.set(this, undefined);
|
|
1690
1850
|
_AirService_isWalletInitialized.set(this, false);
|
|
1851
|
+
_AirService_walletLoggedInResult.set(this, undefined);
|
|
1691
1852
|
_AirService_airWalletProvider.set(this, undefined);
|
|
1692
1853
|
__classPrivateFieldSet(this, _AirService_partnerId, partnerId, "f");
|
|
1854
|
+
__classPrivateFieldSet(this, _AirService_airWalletProvider, new AirWalletProvider({
|
|
1855
|
+
isLoggedIn: () => this.isLoggedIn,
|
|
1856
|
+
ensureWallet: __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).bind(this),
|
|
1857
|
+
getWalletIframeController: () => __classPrivateFieldGet(this, _AirService_walletIframeController, "f"),
|
|
1858
|
+
}), "f");
|
|
1693
1859
|
// this.#modalZIndex = modalZIndex ?? 99999;
|
|
1694
1860
|
}
|
|
1695
1861
|
get buildEnv() {
|
|
@@ -1702,7 +1868,15 @@
|
|
|
1702
1868
|
return !!__classPrivateFieldGet(this, _AirService_loginResult, "f");
|
|
1703
1869
|
}
|
|
1704
1870
|
get isWalletInitialized() {
|
|
1705
|
-
return __classPrivateFieldGet(this,
|
|
1871
|
+
return !!__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f");
|
|
1872
|
+
}
|
|
1873
|
+
get provider() {
|
|
1874
|
+
const provider = __classPrivateFieldGet(this, _AirService_airWalletProvider, "f");
|
|
1875
|
+
return {
|
|
1876
|
+
request: provider.request.bind(provider),
|
|
1877
|
+
on: provider.on.bind(provider),
|
|
1878
|
+
removeListener: provider.removeListener.bind(provider),
|
|
1879
|
+
};
|
|
1706
1880
|
}
|
|
1707
1881
|
async init({ buildEnv = BUILD_ENV.PRODUCTION, enableLogging = false, skipRehydration = false, }) {
|
|
1708
1882
|
if (!__classPrivateFieldGet(this, _AirService_partnerId, "f"))
|
|
@@ -1730,7 +1904,7 @@
|
|
|
1730
1904
|
}
|
|
1731
1905
|
case AirAuthMessageTypes.SETUP_WALLET_REQUEST: {
|
|
1732
1906
|
try {
|
|
1733
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
1907
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, { skipWalletLogin: true });
|
|
1734
1908
|
__classPrivateFieldGet(this, _AirService_authIframeController, "f").postMessage({
|
|
1735
1909
|
type: AirAuthMessageTypes.SETUP_WALLET_RESPONSE,
|
|
1736
1910
|
payload: {
|
|
@@ -1765,6 +1939,7 @@
|
|
|
1765
1939
|
const { payload } = await AirMessageService$1.sendAuthInitializationRequest(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, {
|
|
1766
1940
|
partnerId: __classPrivateFieldGet(this, _AirService_partnerId, "f"),
|
|
1767
1941
|
skipRehydration,
|
|
1942
|
+
partnerDAppUrl: window.location.href,
|
|
1768
1943
|
});
|
|
1769
1944
|
if (payload.success === true) {
|
|
1770
1945
|
resolve(payload);
|
|
@@ -1792,11 +1967,6 @@
|
|
|
1792
1967
|
}
|
|
1793
1968
|
return null;
|
|
1794
1969
|
}
|
|
1795
|
-
async cleanUp() {
|
|
1796
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
1797
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpAuth).call(this);
|
|
1798
|
-
this.clearEventListeners();
|
|
1799
|
-
}
|
|
1800
1970
|
async login(options) {
|
|
1801
1971
|
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
1802
1972
|
throw new Error("Service is not initialized");
|
|
@@ -1901,25 +2071,13 @@
|
|
|
1901
2071
|
throw AirServiceError.from(error);
|
|
1902
2072
|
}
|
|
1903
2073
|
}
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
throw new Error("Service is not initialized");
|
|
1907
|
-
if (!this.isLoggedIn)
|
|
1908
|
-
throw new Error("No active session to logout");
|
|
1909
|
-
// Clear up wallet
|
|
1910
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
1911
|
-
await AirMessageService$1.logoutAuth(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement);
|
|
1912
|
-
__classPrivateFieldSet(this, _AirService_loginResult, undefined, "f");
|
|
1913
|
-
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerAirAuthLoggedOut).call(this);
|
|
1914
|
-
}
|
|
1915
|
-
async getProvider() {
|
|
1916
|
-
if (!this.isLoggedIn)
|
|
1917
|
-
return null;
|
|
1918
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
1919
|
-
return __classPrivateFieldGet(this, _AirService_airWalletProvider, "f");
|
|
2074
|
+
getProvider() {
|
|
2075
|
+
return this.provider;
|
|
1920
2076
|
}
|
|
1921
2077
|
async preloadWallet() {
|
|
1922
|
-
|
|
2078
|
+
if (__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"))
|
|
2079
|
+
return __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f");
|
|
2080
|
+
return await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
1923
2081
|
}
|
|
1924
2082
|
async claimAirId(options) {
|
|
1925
2083
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
@@ -1944,9 +2102,39 @@
|
|
|
1944
2102
|
id: info.payload.user.id,
|
|
1945
2103
|
abstractAccountAddress: info.payload.user.abstractAccountAddress,
|
|
1946
2104
|
email: info.payload.user.email,
|
|
2105
|
+
isMFASetup: info.payload.user.isMFASetup,
|
|
1947
2106
|
},
|
|
1948
2107
|
};
|
|
1949
2108
|
}
|
|
2109
|
+
async goToPartner(partnerUrl) {
|
|
2110
|
+
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2111
|
+
throw new Error("Service is not initialized");
|
|
2112
|
+
if (!this.isLoggedIn)
|
|
2113
|
+
throw new Error("No active session to generate token");
|
|
2114
|
+
const result = await AirMessageService$1.sendCrossPartnerTokenRequest(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, partnerUrl);
|
|
2115
|
+
if (result.payload.success === false) {
|
|
2116
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2117
|
+
}
|
|
2118
|
+
return {
|
|
2119
|
+
urlWithToken: result.payload.urlWithToken,
|
|
2120
|
+
};
|
|
2121
|
+
}
|
|
2122
|
+
async logout() {
|
|
2123
|
+
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2124
|
+
throw new Error("Service is not initialized");
|
|
2125
|
+
if (!this.isLoggedIn)
|
|
2126
|
+
throw new Error("No active session to logout");
|
|
2127
|
+
// Clear up wallet
|
|
2128
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
2129
|
+
await AirMessageService$1.logoutAuth(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement);
|
|
2130
|
+
__classPrivateFieldSet(this, _AirService_loginResult, undefined, "f");
|
|
2131
|
+
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerAirAuthLoggedOut).call(this);
|
|
2132
|
+
}
|
|
2133
|
+
async cleanUp() {
|
|
2134
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
2135
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpAuth).call(this);
|
|
2136
|
+
this.clearEventListeners();
|
|
2137
|
+
}
|
|
1950
2138
|
on(listener) {
|
|
1951
2139
|
if (__classPrivateFieldGet(this, _AirService_airAuthListener, "f").indexOf(listener) < 0)
|
|
1952
2140
|
__classPrivateFieldGet(this, _AirService_airAuthListener, "f").push(listener);
|
|
@@ -1967,24 +2155,39 @@
|
|
|
1967
2155
|
return null;
|
|
1968
2156
|
}
|
|
1969
2157
|
}
|
|
1970
|
-
_AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _AirService_enableLogging = new WeakMap(), _AirService_partnerId = new WeakMap(), _AirService_authIframeController = new WeakMap(), _AirService_isAuthInitialized = new WeakMap(), _AirService_airAuthListener = new WeakMap(), _AirService_walletIframeController = new WeakMap(), _AirService_walletInitialization = new WeakMap(), _AirService_isWalletInitialized = new WeakMap(), _AirService_airWalletProvider = new WeakMap(), _AirService_instances = new WeakSet(), _AirService_ensureWallet =
|
|
2158
|
+
_AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _AirService_enableLogging = new WeakMap(), _AirService_partnerId = new WeakMap(), _AirService_authIframeController = new WeakMap(), _AirService_isAuthInitialized = new WeakMap(), _AirService_airAuthListener = new WeakMap(), _AirService_walletIframeController = new WeakMap(), _AirService_walletInitialization = new WeakMap(), _AirService_isWalletInitialized = new WeakMap(), _AirService_walletLoggedInResult = new WeakMap(), _AirService_airWalletProvider = new WeakMap(), _AirService_instances = new WeakSet(), _AirService_ensureWallet =
|
|
2159
|
+
// Result of this.#walletInitialization:
|
|
2160
|
+
// - If skipWalletLogin is true, it returns the result of empty abstractAccountAddress
|
|
2161
|
+
// - If skipWalletLogin is false, it returns the result of abstractAccountAddress from wallet initialization
|
|
2162
|
+
// - If #ensureWallet is called again, it returns the result of abstractAccountAddress from the second
|
|
2163
|
+
// wallet initialization if this first wallet initialization doesn't have abstractAccountAddress
|
|
2164
|
+
async function _AirService_ensureWallet(option) {
|
|
1971
2165
|
if (!this.isInitialized)
|
|
1972
2166
|
throw new Error("Service not initialized");
|
|
1973
|
-
if (!
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
2167
|
+
if (!this.isLoggedIn && !option?.skipWalletLogin)
|
|
2168
|
+
throw new Error("User not logged in");
|
|
2169
|
+
if (!__classPrivateFieldGet(this, _AirService_walletInitialization, "f"))
|
|
2170
|
+
__classPrivateFieldSet(this, _AirService_walletInitialization, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_initializeWallet).call(this, option), "f");
|
|
2171
|
+
try {
|
|
2172
|
+
const result = await __classPrivateFieldGet(this, _AirService_walletInitialization, "f");
|
|
2173
|
+
// Note: Checking for abstractAccountAddress from the result and this.#walletLoggedInResult to avoid race condition
|
|
2174
|
+
if (option?.skipWalletLogin ||
|
|
2175
|
+
result?.abstractAccountAddress ||
|
|
2176
|
+
__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f")?.abstractAccountAddress) {
|
|
2177
|
+
return result || __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f");
|
|
1977
2178
|
}
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
throw error;
|
|
2179
|
+
const walletInitResult = await AirMessageService$1.onWalletInitialized();
|
|
2180
|
+
if (walletInitResult.payload.success !== true) {
|
|
2181
|
+
throw new AirServiceError(walletInitResult.payload.errorName, walletInitResult.payload.errorMessage);
|
|
1982
2182
|
}
|
|
2183
|
+
return __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, walletInitResult.payload);
|
|
1983
2184
|
}
|
|
1984
|
-
|
|
1985
|
-
|
|
2185
|
+
catch (error) {
|
|
2186
|
+
__classPrivateFieldSet(this, _AirService_walletInitialization, null, "f");
|
|
2187
|
+
log.error("Error initializing wallet", error);
|
|
2188
|
+
throw error;
|
|
1986
2189
|
}
|
|
1987
|
-
}, _AirService_initializeWallet = async function _AirService_initializeWallet() {
|
|
2190
|
+
}, _AirService_initializeWallet = async function _AirService_initializeWallet(option) {
|
|
1988
2191
|
if (__classPrivateFieldGet(this, _AirService_isWalletInitialized, "f"))
|
|
1989
2192
|
throw new AirServiceError("ALREADY_INITIALISED", "Already initialized");
|
|
1990
2193
|
const { walletUrl } = AIR_URLS[__classPrivateFieldGet(this, _AirService_buildEnv, "f")];
|
|
@@ -2002,6 +2205,23 @@
|
|
|
2002
2205
|
walletIframeController.updateIframeState();
|
|
2003
2206
|
break;
|
|
2004
2207
|
}
|
|
2208
|
+
case AirMessageTypes.WALLET_INITIALIZED: {
|
|
2209
|
+
if (msg.payload.success === true && msg.payload.addresses?.aa) {
|
|
2210
|
+
__classPrivateFieldSet(this, _AirService_walletLoggedInResult, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, msg.payload), "f");
|
|
2211
|
+
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerWalletInitialized).call(this, __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"));
|
|
2212
|
+
}
|
|
2213
|
+
if (msg.payload.success === false) {
|
|
2214
|
+
if (!__classPrivateFieldGet(this, _AirService_isWalletInitialized, "f")) {
|
|
2215
|
+
// MFA fail case, also reset wallet port
|
|
2216
|
+
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpAuthWalletCommunication).call(this);
|
|
2217
|
+
}
|
|
2218
|
+
else {
|
|
2219
|
+
// Logout wallet and destroy the wallet iframe
|
|
2220
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
2221
|
+
}
|
|
2222
|
+
}
|
|
2223
|
+
break;
|
|
2224
|
+
}
|
|
2005
2225
|
}
|
|
2006
2226
|
});
|
|
2007
2227
|
await new Promise((resolve, reject) => {
|
|
@@ -2024,18 +2244,15 @@
|
|
|
2024
2244
|
};
|
|
2025
2245
|
window.addEventListener("message", handleAuthMessage);
|
|
2026
2246
|
});
|
|
2247
|
+
__classPrivateFieldGet(this, _AirService_airWalletProvider, "f").listenProviderEventMessage();
|
|
2027
2248
|
const walletInitPromise = AirMessageService$1.onWalletInitialized();
|
|
2028
|
-
AirMessageService$1.setupIframeCommunication(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, __classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
|
|
2249
|
+
AirMessageService$1.setupIframeCommunication(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, __classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement, option?.skipWalletLogin ?? false);
|
|
2029
2250
|
const walletInitResult = await walletInitPromise;
|
|
2030
2251
|
if (walletInitResult.payload.success !== true) {
|
|
2031
2252
|
throw new AirServiceError(walletInitResult.payload.errorName, walletInitResult.payload.errorMessage);
|
|
2032
2253
|
}
|
|
2033
|
-
__classPrivateFieldSet(this,
|
|
2034
|
-
|
|
2035
|
-
abstractAccountAddress: walletInitResult.payload.addresses.aa,
|
|
2036
|
-
};
|
|
2037
|
-
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerWalletInitialized).call(this, result);
|
|
2038
|
-
return result;
|
|
2254
|
+
__classPrivateFieldSet(this, _AirService_isWalletInitialized, true, "f");
|
|
2255
|
+
return __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, walletInitResult.payload);
|
|
2039
2256
|
}
|
|
2040
2257
|
catch (error) {
|
|
2041
2258
|
log.error("Error initializing wallet", error);
|
|
@@ -2066,6 +2283,12 @@
|
|
|
2066
2283
|
id: payload.id,
|
|
2067
2284
|
abstractAccountAddress: payload.abstractAccountAddress,
|
|
2068
2285
|
token: payload.partnerAccessToken,
|
|
2286
|
+
isMFASetup: payload.isMFASetup,
|
|
2287
|
+
};
|
|
2288
|
+
}, _AirService_createWalletInitializedResult = function _AirService_createWalletInitializedResult(payload) {
|
|
2289
|
+
return {
|
|
2290
|
+
abstractAccountAddress: payload.addresses?.aa ?? null,
|
|
2291
|
+
isMFASetup: payload.isMFASetup,
|
|
2069
2292
|
};
|
|
2070
2293
|
}, _AirService_cleanUpAuth = async function _AirService_cleanUpAuth() {
|
|
2071
2294
|
// Logout auth session
|
|
@@ -2091,14 +2314,31 @@
|
|
|
2091
2314
|
}
|
|
2092
2315
|
// Close the message service
|
|
2093
2316
|
AirMessageService$1.closeAirObservables();
|
|
2094
|
-
__classPrivateFieldSet(this,
|
|
2317
|
+
__classPrivateFieldSet(this, _AirService_walletLoggedInResult, undefined, "f");
|
|
2318
|
+
__classPrivateFieldSet(this, _AirService_walletInitialization, undefined, "f");
|
|
2095
2319
|
__classPrivateFieldSet(this, _AirService_isWalletInitialized, false, "f");
|
|
2320
|
+
}, _AirService_cleanUpAuthWalletCommunication = function _AirService_cleanUpAuthWalletCommunication() {
|
|
2321
|
+
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2322
|
+
return;
|
|
2323
|
+
const authIframeElement = __classPrivateFieldGet(this, _AirService_authIframeController, "f")?.iframeElement;
|
|
2324
|
+
if (isElement(authIframeElement) && window.document.body.contains(authIframeElement)) {
|
|
2325
|
+
AirMessageService$1.sendResetAuthServiceWalletCommunication(authIframeElement);
|
|
2326
|
+
}
|
|
2096
2327
|
};
|
|
2097
2328
|
|
|
2098
2329
|
exports.AirService = AirService;
|
|
2099
2330
|
exports.AirServiceError = AirServiceError;
|
|
2100
|
-
exports.AirWalletProvider = AirWalletProvider;
|
|
2101
2331
|
exports.BUILD_ENV = BUILD_ENV;
|
|
2102
|
-
exports.
|
|
2332
|
+
exports.ChainDisconnectedError = ChainDisconnectedError;
|
|
2333
|
+
exports.InternalRpcError = InternalRpcError;
|
|
2334
|
+
exports.InvalidParamsRpcError = InvalidParamsRpcError;
|
|
2335
|
+
exports.InvalidRequestRpcError = InvalidRequestRpcError;
|
|
2336
|
+
exports.MethodNotFoundRpcError = MethodNotFoundRpcError;
|
|
2337
|
+
exports.ProviderDisconnectedError = ProviderDisconnectedError;
|
|
2338
|
+
exports.SwitchChainError = SwitchChainError;
|
|
2339
|
+
exports.UnauthorizedProviderError = UnauthorizedProviderError;
|
|
2340
|
+
exports.UnsupportedProviderMethodError = UnsupportedProviderMethodError;
|
|
2341
|
+
exports.UserRejectedRequestError = UserRejectedRequestError;
|
|
2342
|
+
exports.ensureProviderRpcError = ensureProviderRpcError;
|
|
2103
2343
|
|
|
2104
2344
|
}));
|