@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.esm.js
CHANGED
|
@@ -102,6 +102,8 @@ const AirAuthMessageTypes = {
|
|
|
102
102
|
LOGIN_REQUEST: "air_auth_login_request",
|
|
103
103
|
LOGIN_RESPONSE: "air_auth_login_response",
|
|
104
104
|
LOGIN_WALLET_RESPONSE: "air_auth_login_wallet_response",
|
|
105
|
+
USER_INFO_REQUEST: "air_auth_user_info_request",
|
|
106
|
+
USER_INFO_RESPONSE: "air_auth_user_info_response",
|
|
105
107
|
PARTNER_USER_INFO_REQUEST: "air_auth_partner_user_info_request",
|
|
106
108
|
PARTNER_USER_INFO_RESPONSE: "air_auth_partner_user_info_response",
|
|
107
109
|
REFRESH_TOKEN_REQUEST: "air_auth_refresh_token_request",
|
|
@@ -114,8 +116,11 @@ const AirAuthMessageTypes = {
|
|
|
114
116
|
SETUP_WALLET_RESPONSE: "air_auth_setup_wallet_response",
|
|
115
117
|
SIGN_SIWE_MESSAGE_REQUEST: "air_auth_sign_siwe_message_request",
|
|
116
118
|
SIGN_SIWE_MESSAGE_RESPONSE: "air_auth_sign_siwe_message_response",
|
|
119
|
+
CROSS_PARTNER_TOKEN_REQUEST: "air_auth_cross_partner_token_request",
|
|
120
|
+
CROSS_PARTNER_TOKEN_RESPONSE: "air_auth_cross_partner_token_response",
|
|
117
121
|
LOGOUT_REQUEST: "air_auth_logout_request",
|
|
118
|
-
LOGOUT_RESPONSE: "air_auth_logout_response"
|
|
122
|
+
LOGOUT_RESPONSE: "air_auth_logout_response",
|
|
123
|
+
RESET_WALLET_COMMUNICATION: "air_auth_reset_wallet_communication"
|
|
119
124
|
};
|
|
120
125
|
|
|
121
126
|
const AirMessageTypes = {
|
|
@@ -138,9 +143,156 @@ const AirMessageTypes = {
|
|
|
138
143
|
IS_SMART_ACCOUNT_DEPLOYED_REQUEST: "air_is_smart_account_deployed_request",
|
|
139
144
|
IS_SMART_ACCOUNT_DEPLOYED_RESPONSE: "air_is_smart_account_deployed_response",
|
|
140
145
|
LOGOUT_REQUEST: "air_logout_request",
|
|
141
|
-
LOGOUT_RESPONSE: "air_logout_response"
|
|
146
|
+
LOGOUT_RESPONSE: "air_logout_response",
|
|
147
|
+
SETUP_MFA_REQUEST: "air_setup_mfa_request"
|
|
142
148
|
};
|
|
143
149
|
|
|
150
|
+
class BaseError extends Error {
|
|
151
|
+
constructor(name, message, options = {}) {
|
|
152
|
+
const {
|
|
153
|
+
cause,
|
|
154
|
+
context
|
|
155
|
+
} = options;
|
|
156
|
+
super(message || name);
|
|
157
|
+
this.name = name;
|
|
158
|
+
this.stack = cause?.stack;
|
|
159
|
+
this.cause = cause;
|
|
160
|
+
this.context = context;
|
|
161
|
+
}
|
|
162
|
+
toJSON() {
|
|
163
|
+
return {
|
|
164
|
+
name: this.name,
|
|
165
|
+
message: this.message,
|
|
166
|
+
context: this.context,
|
|
167
|
+
cause: this.cause
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
class AirServiceError extends BaseError {
|
|
173
|
+
static from(error) {
|
|
174
|
+
if (error instanceof AirServiceError) {
|
|
175
|
+
return error;
|
|
176
|
+
}
|
|
177
|
+
else if (error instanceof Object && "message" in error) {
|
|
178
|
+
if (error.message === "User cancelled login") {
|
|
179
|
+
return new AirServiceError("USER_CANCELLED", error.message);
|
|
180
|
+
}
|
|
181
|
+
return new AirServiceError("UNKNOWN_ERROR", error.message.toString());
|
|
182
|
+
}
|
|
183
|
+
return new AirServiceError("UNKNOWN_ERROR");
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
class ProviderRpcError extends Error {
|
|
187
|
+
constructor(message) {
|
|
188
|
+
super(message);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
class UserRejectedRequestError extends ProviderRpcError {
|
|
192
|
+
constructor() {
|
|
193
|
+
super(...arguments);
|
|
194
|
+
this.code = 4001;
|
|
195
|
+
this.name = "UserRejectedRequestError";
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
class UnauthorizedProviderError extends ProviderRpcError {
|
|
199
|
+
constructor() {
|
|
200
|
+
super(...arguments);
|
|
201
|
+
this.code = 4100;
|
|
202
|
+
this.name = "UnauthorizedProviderError";
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
class UnsupportedProviderMethodError extends ProviderRpcError {
|
|
206
|
+
constructor() {
|
|
207
|
+
super(...arguments);
|
|
208
|
+
this.code = 4200;
|
|
209
|
+
this.name = "UnsupportedProviderMethodError";
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
class ProviderDisconnectedError extends ProviderRpcError {
|
|
213
|
+
constructor() {
|
|
214
|
+
super(...arguments);
|
|
215
|
+
this.code = 4900;
|
|
216
|
+
this.name = "ProviderDisconnectedError";
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
class ChainDisconnectedError extends ProviderRpcError {
|
|
220
|
+
constructor() {
|
|
221
|
+
super(...arguments);
|
|
222
|
+
this.code = 4901;
|
|
223
|
+
this.name = "ChainDisconnectedError";
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
class SwitchChainError extends ProviderRpcError {
|
|
227
|
+
constructor() {
|
|
228
|
+
super(...arguments);
|
|
229
|
+
this.code = 4902;
|
|
230
|
+
this.name = "SwitchChainError";
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
class InvalidRequestRpcError extends ProviderRpcError {
|
|
234
|
+
constructor() {
|
|
235
|
+
super(...arguments);
|
|
236
|
+
this.code = -32600;
|
|
237
|
+
this.name = "InvalidRequestRpcError";
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
class MethodNotFoundRpcError extends ProviderRpcError {
|
|
241
|
+
constructor() {
|
|
242
|
+
super(...arguments);
|
|
243
|
+
this.code = -32601;
|
|
244
|
+
this.name = "MethodNotFoundRpcError";
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
class InvalidParamsRpcError extends ProviderRpcError {
|
|
248
|
+
constructor() {
|
|
249
|
+
super(...arguments);
|
|
250
|
+
this.code = -32602;
|
|
251
|
+
this.name = "InvalidParamsRpcError";
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
class InternalRpcError extends ProviderRpcError {
|
|
255
|
+
constructor() {
|
|
256
|
+
super(...arguments);
|
|
257
|
+
this.code = -32603;
|
|
258
|
+
this.name = "InternalRpcError";
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
function ensureProviderRpcError(value) {
|
|
262
|
+
if (value instanceof ProviderRpcError) {
|
|
263
|
+
return value;
|
|
264
|
+
}
|
|
265
|
+
if (typeof value === "object" &&
|
|
266
|
+
value !== null &&
|
|
267
|
+
"errorCode" in value &&
|
|
268
|
+
"errorMessage" in value) {
|
|
269
|
+
if (typeof value.errorCode === "number" && typeof value.errorMessage === "string") {
|
|
270
|
+
switch (value.errorCode) {
|
|
271
|
+
case 4001:
|
|
272
|
+
return new UserRejectedRequestError(value.errorMessage);
|
|
273
|
+
case 4100:
|
|
274
|
+
return new UnauthorizedProviderError(value.errorMessage);
|
|
275
|
+
case 4200:
|
|
276
|
+
return new UnsupportedProviderMethodError(value.errorMessage);
|
|
277
|
+
case 4900:
|
|
278
|
+
return new ProviderDisconnectedError(value.errorMessage);
|
|
279
|
+
case 4901:
|
|
280
|
+
return new ChainDisconnectedError(value.errorMessage);
|
|
281
|
+
case 4902:
|
|
282
|
+
return new SwitchChainError(value.errorMessage);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
let stringified = "[Unable to stringify the thrown value]";
|
|
287
|
+
try {
|
|
288
|
+
stringified = JSON.stringify(value);
|
|
289
|
+
}
|
|
290
|
+
catch {
|
|
291
|
+
// ignoring failed stringify
|
|
292
|
+
}
|
|
293
|
+
return new InternalRpcError(`Invalid value for ProviderRpcError: ${stringified}`);
|
|
294
|
+
}
|
|
295
|
+
|
|
144
296
|
function isFunction(value) {
|
|
145
297
|
return typeof value === 'function';
|
|
146
298
|
}
|
|
@@ -868,50 +1020,11 @@ function filter(predicate, thisArg) {
|
|
|
868
1020
|
});
|
|
869
1021
|
}
|
|
870
1022
|
|
|
871
|
-
class BaseError extends Error {
|
|
872
|
-
constructor(name, message, options = {}) {
|
|
873
|
-
const {
|
|
874
|
-
cause,
|
|
875
|
-
context
|
|
876
|
-
} = options;
|
|
877
|
-
super(message || name);
|
|
878
|
-
this.name = name;
|
|
879
|
-
this.stack = cause?.stack;
|
|
880
|
-
this.cause = cause;
|
|
881
|
-
this.context = context;
|
|
882
|
-
}
|
|
883
|
-
toJSON() {
|
|
884
|
-
return {
|
|
885
|
-
name: this.name,
|
|
886
|
-
message: this.message,
|
|
887
|
-
context: this.context,
|
|
888
|
-
cause: this.cause
|
|
889
|
-
};
|
|
890
|
-
}
|
|
891
|
-
}
|
|
892
|
-
|
|
893
|
-
class AirServiceError extends BaseError {
|
|
894
|
-
static from(error) {
|
|
895
|
-
if (error instanceof AirServiceError) {
|
|
896
|
-
return error;
|
|
897
|
-
}
|
|
898
|
-
else if (error instanceof Object && "message" in error) {
|
|
899
|
-
if (error.message === "User cancelled login") {
|
|
900
|
-
return new AirServiceError("USER_CANCELLED", error.message);
|
|
901
|
-
}
|
|
902
|
-
return new AirServiceError("UNKNOWN_ERROR", error.message.toString());
|
|
903
|
-
}
|
|
904
|
-
return new AirServiceError("UNKNOWN_ERROR");
|
|
905
|
-
}
|
|
906
|
-
}
|
|
907
|
-
class RealmEmbedError extends AirServiceError {
|
|
908
|
-
}
|
|
909
|
-
|
|
910
1023
|
function getDefaultExportFromCjs (x) {
|
|
911
1024
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
912
1025
|
}
|
|
913
1026
|
|
|
914
|
-
var loglevel$
|
|
1027
|
+
var loglevel$1 = {exports: {}};
|
|
915
1028
|
|
|
916
1029
|
/*
|
|
917
1030
|
* loglevel - https://github.com/pimterry/loglevel
|
|
@@ -919,10 +1032,10 @@ var loglevel$2 = {exports: {}};
|
|
|
919
1032
|
* Copyright (c) 2013 Tim Perry
|
|
920
1033
|
* Licensed under the MIT license.
|
|
921
1034
|
*/
|
|
922
|
-
var loglevel
|
|
1035
|
+
var loglevel = loglevel$1.exports;
|
|
923
1036
|
var hasRequiredLoglevel;
|
|
924
1037
|
function requireLoglevel() {
|
|
925
|
-
if (hasRequiredLoglevel) return loglevel$
|
|
1038
|
+
if (hasRequiredLoglevel) return loglevel$1.exports;
|
|
926
1039
|
hasRequiredLoglevel = 1;
|
|
927
1040
|
(function (module) {
|
|
928
1041
|
(function (root, definition) {
|
|
@@ -932,7 +1045,7 @@ function requireLoglevel() {
|
|
|
932
1045
|
} else {
|
|
933
1046
|
root.log = definition();
|
|
934
1047
|
}
|
|
935
|
-
})(loglevel
|
|
1048
|
+
})(loglevel, function () {
|
|
936
1049
|
|
|
937
1050
|
// Slightly dubious tricks to cut down minimized file size
|
|
938
1051
|
var noop = function () {};
|
|
@@ -1231,19 +1344,20 @@ function requireLoglevel() {
|
|
|
1231
1344
|
defaultLogger['default'] = defaultLogger;
|
|
1232
1345
|
return defaultLogger;
|
|
1233
1346
|
});
|
|
1234
|
-
})(loglevel$
|
|
1235
|
-
return loglevel$
|
|
1347
|
+
})(loglevel$1);
|
|
1348
|
+
return loglevel$1.exports;
|
|
1236
1349
|
}
|
|
1237
1350
|
|
|
1238
1351
|
var loglevelExports = requireLoglevel();
|
|
1239
|
-
var
|
|
1352
|
+
var log$1 = /*@__PURE__*/getDefaultExportFromCjs(loglevelExports);
|
|
1240
1353
|
|
|
1241
|
-
var log =
|
|
1354
|
+
var log = log$1.getLogger("airkit");
|
|
1242
1355
|
|
|
1243
1356
|
var AirWalletProviderMessageTypes;
|
|
1244
1357
|
(function (AirWalletProviderMessageTypes) {
|
|
1245
1358
|
AirWalletProviderMessageTypes["REQUEST"] = "JRPC_REQUEST";
|
|
1246
1359
|
AirWalletProviderMessageTypes["RESPONSE"] = "JRPC_RESPONSE";
|
|
1360
|
+
AirWalletProviderMessageTypes["EVENT"] = "JRPC_EVENT";
|
|
1247
1361
|
})(AirWalletProviderMessageTypes || (AirWalletProviderMessageTypes = {}));
|
|
1248
1362
|
|
|
1249
1363
|
const ACCOUNT_MESSAGES = [
|
|
@@ -1266,6 +1380,7 @@ const AUTH_MESSAGES = [
|
|
|
1266
1380
|
AirAuthMessageTypes.SETUP_WALLET_REQUEST,
|
|
1267
1381
|
AirAuthMessageTypes.LOGOUT_RESPONSE,
|
|
1268
1382
|
AirAuthMessageTypes.PARTNER_USER_INFO_RESPONSE,
|
|
1383
|
+
AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE,
|
|
1269
1384
|
AirAuthMessageTypes.IFRAME_VISIBILITY_REQUEST,
|
|
1270
1385
|
];
|
|
1271
1386
|
class AirMessageService {
|
|
@@ -1289,6 +1404,9 @@ class AirMessageService {
|
|
|
1289
1404
|
get providerMessage$() {
|
|
1290
1405
|
return this._providerMessage$.asObservable();
|
|
1291
1406
|
}
|
|
1407
|
+
get providerEvent$() {
|
|
1408
|
+
return this._providerEvent$.asObservable();
|
|
1409
|
+
}
|
|
1292
1410
|
async openAuthObservables({ authIframeOrigin }) {
|
|
1293
1411
|
this.closeAuthObservables();
|
|
1294
1412
|
this.setupAuthObservables();
|
|
@@ -1329,13 +1447,16 @@ class AirMessageService {
|
|
|
1329
1447
|
if (ev.data.type === AirWalletProviderMessageTypes.RESPONSE) {
|
|
1330
1448
|
this._providerMessage$.next(ev.data);
|
|
1331
1449
|
}
|
|
1450
|
+
if (ev.data.type === AirWalletProviderMessageTypes.EVENT) {
|
|
1451
|
+
this._providerEvent$.next(ev.data);
|
|
1452
|
+
}
|
|
1332
1453
|
};
|
|
1333
1454
|
window.addEventListener("message", handleWalletMessage);
|
|
1334
1455
|
this.closeWalletMessageListeners = () => {
|
|
1335
1456
|
window.removeEventListener("message", handleWalletMessage);
|
|
1336
1457
|
};
|
|
1337
1458
|
}
|
|
1338
|
-
setupIframeCommunication(authIframe, walletIframe) {
|
|
1459
|
+
setupIframeCommunication(authIframe, walletIframe, skipWalletLogin) {
|
|
1339
1460
|
const channel = new MessageChannel();
|
|
1340
1461
|
const authOrigin = new URL(authIframe.src).origin;
|
|
1341
1462
|
authIframe.contentWindow.postMessage({
|
|
@@ -1344,6 +1465,9 @@ class AirMessageService {
|
|
|
1344
1465
|
const walletOrigin = new URL(walletIframe.src).origin;
|
|
1345
1466
|
walletIframe.contentWindow.postMessage({
|
|
1346
1467
|
type: AirMessageTypes.INIT_AUTH_COMMUNICATION,
|
|
1468
|
+
payload: {
|
|
1469
|
+
skipWalletLogin,
|
|
1470
|
+
},
|
|
1347
1471
|
}, walletOrigin, [channel.port2]);
|
|
1348
1472
|
}
|
|
1349
1473
|
async sendGrantPermissionRequest(walletIframe, policies) {
|
|
@@ -1357,7 +1481,7 @@ class AirMessageService {
|
|
|
1357
1481
|
}, origin);
|
|
1358
1482
|
const result = await response;
|
|
1359
1483
|
if (result.payload.success === false) {
|
|
1360
|
-
throw new
|
|
1484
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1361
1485
|
}
|
|
1362
1486
|
return result.payload.sessionData;
|
|
1363
1487
|
}
|
|
@@ -1378,7 +1502,7 @@ class AirMessageService {
|
|
|
1378
1502
|
}, origin);
|
|
1379
1503
|
const result = await response;
|
|
1380
1504
|
if (result.payload.success === false) {
|
|
1381
|
-
throw new
|
|
1505
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1382
1506
|
}
|
|
1383
1507
|
return result.payload.txHash;
|
|
1384
1508
|
}
|
|
@@ -1393,7 +1517,7 @@ class AirMessageService {
|
|
|
1393
1517
|
}, origin);
|
|
1394
1518
|
const result = await response;
|
|
1395
1519
|
if (result.payload.success === false) {
|
|
1396
|
-
throw new
|
|
1520
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1397
1521
|
}
|
|
1398
1522
|
return result.payload.txHash;
|
|
1399
1523
|
}
|
|
@@ -1437,6 +1561,10 @@ class AirMessageService {
|
|
|
1437
1561
|
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.LOGOUT_REQUEST }, origin);
|
|
1438
1562
|
return response;
|
|
1439
1563
|
}
|
|
1564
|
+
sendResetAuthServiceWalletCommunication(authIframe) {
|
|
1565
|
+
const { origin: authOrigin } = new URL(authIframe.src);
|
|
1566
|
+
authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.RESET_WALLET_COMMUNICATION }, authOrigin);
|
|
1567
|
+
}
|
|
1440
1568
|
async sendAuthInitializationRequest(authIframe, payload) {
|
|
1441
1569
|
const response = firstValueFrom(this._authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.INITIALIZATION_RESPONSE)));
|
|
1442
1570
|
const { origin } = new URL(authIframe.src);
|
|
@@ -1449,6 +1577,17 @@ class AirMessageService {
|
|
|
1449
1577
|
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.INITIALIZATION_REQUEST, payload }, origin);
|
|
1450
1578
|
return response;
|
|
1451
1579
|
}
|
|
1580
|
+
async sendCrossPartnerTokenRequest(authIframe, targetPartnerUrl) {
|
|
1581
|
+
const response = firstValueFrom(this.authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE)));
|
|
1582
|
+
const { origin } = new URL(authIframe.src);
|
|
1583
|
+
authIframe.contentWindow.postMessage({
|
|
1584
|
+
type: AirAuthMessageTypes.CROSS_PARTNER_TOKEN_REQUEST,
|
|
1585
|
+
payload: {
|
|
1586
|
+
targetPartnerUrl,
|
|
1587
|
+
},
|
|
1588
|
+
}, origin);
|
|
1589
|
+
return response;
|
|
1590
|
+
}
|
|
1452
1591
|
async sendGrantPermissionsRequest(walletIframe, payload) {
|
|
1453
1592
|
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.GRANT_PERMISSIONS_RESPONSE)));
|
|
1454
1593
|
const { origin } = new URL(walletIframe.src);
|
|
@@ -1489,6 +1628,8 @@ class AirMessageService {
|
|
|
1489
1628
|
closeWalletObservables() {
|
|
1490
1629
|
if (this._providerMessage$ && !this._providerMessage$.closed)
|
|
1491
1630
|
this._providerMessage$.complete();
|
|
1631
|
+
if (this._providerEvent$ && !this._providerEvent$.closed)
|
|
1632
|
+
this._providerEvent$.complete();
|
|
1492
1633
|
if (this.closeWalletMessageListeners)
|
|
1493
1634
|
this.closeWalletMessageListeners();
|
|
1494
1635
|
}
|
|
@@ -1500,38 +1641,11 @@ class AirMessageService {
|
|
|
1500
1641
|
}
|
|
1501
1642
|
setupWalletObservables() {
|
|
1502
1643
|
this._providerMessage$ = new Subject();
|
|
1644
|
+
this._providerEvent$ = new Subject();
|
|
1503
1645
|
}
|
|
1504
1646
|
}
|
|
1505
1647
|
var AirMessageService$1 = AirMessageService.instance;
|
|
1506
1648
|
|
|
1507
|
-
class ProviderRpcError extends Error {
|
|
1508
|
-
constructor(message, code, data) {
|
|
1509
|
-
super(message);
|
|
1510
|
-
this.code = code;
|
|
1511
|
-
this.data = data;
|
|
1512
|
-
}
|
|
1513
|
-
}
|
|
1514
|
-
new ProviderRpcError("Invalid JSON", -32700);
|
|
1515
|
-
const ProviderRpcInvalidRequestError = new ProviderRpcError("Invalid request", -32600);
|
|
1516
|
-
const ProviderRpcMethodNotFoundError = new ProviderRpcError("Method not found", -32601);
|
|
1517
|
-
const ProviderRpcInvalidParamsError = new ProviderRpcError("Invalid params", -32602);
|
|
1518
|
-
new ProviderRpcError("Internal error", -32603);
|
|
1519
|
-
new ProviderRpcError("User rejected request", 4001);
|
|
1520
|
-
new ProviderRpcError("Unauthorized", 4100);
|
|
1521
|
-
new ProviderRpcError("Unsupported method", 4200);
|
|
1522
|
-
new ProviderRpcError("Disconnected", 4900);
|
|
1523
|
-
new ProviderRpcError("Chain Disconnected", 4901);
|
|
1524
|
-
function ensureProviderRpcError(value) {
|
|
1525
|
-
if (value instanceof ProviderRpcError) return value;
|
|
1526
|
-
let stringified = "[Unable to stringify the thrown value]";
|
|
1527
|
-
try {
|
|
1528
|
-
stringified = JSON.stringify(value);
|
|
1529
|
-
} catch {
|
|
1530
|
-
// ignoring failed stringify
|
|
1531
|
-
}
|
|
1532
|
-
return new ProviderRpcError(`This value was not thrown as type ProviderRpcError: ${stringified}`, -32603);
|
|
1533
|
-
}
|
|
1534
|
-
|
|
1535
1649
|
const BUILD_ENV = {
|
|
1536
1650
|
PRODUCTION: "production",
|
|
1537
1651
|
STAGING: "staging",
|
|
@@ -1542,66 +1656,113 @@ const AIR_URLS = {
|
|
|
1542
1656
|
[BUILD_ENV.DEVELOPMENT]: {
|
|
1543
1657
|
authUrl: "http://localhost:8100",
|
|
1544
1658
|
walletUrl: "http://localhost:8200",
|
|
1545
|
-
legacyWalletUrl: "https://localhost:4050",
|
|
1546
1659
|
logLevel: "debug",
|
|
1547
1660
|
},
|
|
1548
1661
|
[BUILD_ENV.STAGING]: {
|
|
1549
1662
|
authUrl: "https://auth.staging.air3.com",
|
|
1550
1663
|
walletUrl: "https://account.staging.air3.com",
|
|
1551
|
-
legacyWalletUrl: "https://account.staging.realmnetwork.io",
|
|
1552
1664
|
logLevel: "info",
|
|
1553
1665
|
},
|
|
1554
1666
|
[BUILD_ENV.PRODUCTION]: {
|
|
1555
1667
|
authUrl: "https://auth.air3.com",
|
|
1556
1668
|
walletUrl: "https://account.air3.com",
|
|
1557
|
-
legacyWalletUrl: "https://account.realmnetwork.io",
|
|
1558
1669
|
logLevel: "error",
|
|
1559
1670
|
},
|
|
1560
1671
|
};
|
|
1561
1672
|
const isElement = (element) => element instanceof Element || element instanceof Document;
|
|
1562
1673
|
const randomId = () => Math.random().toString(36).slice(2);
|
|
1563
1674
|
|
|
1564
|
-
var
|
|
1675
|
+
var _AirWalletProvider_instances, _AirWalletProvider_isLoggedIn, _AirWalletProvider_ensureWallet, _AirWalletProvider_getWalletIframeController, _AirWalletProvider_eventListeners, _AirWalletProvider_emit;
|
|
1565
1676
|
class AirWalletProvider {
|
|
1566
|
-
constructor(
|
|
1567
|
-
|
|
1568
|
-
|
|
1677
|
+
constructor({ isLoggedIn, ensureWallet, getWalletIframeController, }) {
|
|
1678
|
+
_AirWalletProvider_instances.add(this);
|
|
1679
|
+
_AirWalletProvider_isLoggedIn.set(this, undefined);
|
|
1680
|
+
_AirWalletProvider_ensureWallet.set(this, undefined);
|
|
1681
|
+
_AirWalletProvider_getWalletIframeController.set(this, undefined);
|
|
1682
|
+
_AirWalletProvider_eventListeners.set(this, undefined);
|
|
1683
|
+
this.listenProviderEventMessage = () => {
|
|
1684
|
+
AirMessageService$1.providerEvent$.subscribe((message) => {
|
|
1685
|
+
__classPrivateFieldGet(this, _AirWalletProvider_instances, "m", _AirWalletProvider_emit).call(this, message.payload.event, ...[message.payload.data]);
|
|
1686
|
+
});
|
|
1687
|
+
};
|
|
1688
|
+
__classPrivateFieldSet(this, _AirWalletProvider_isLoggedIn, isLoggedIn, "f");
|
|
1689
|
+
__classPrivateFieldSet(this, _AirWalletProvider_ensureWallet, ensureWallet, "f");
|
|
1690
|
+
__classPrivateFieldSet(this, _AirWalletProvider_getWalletIframeController, getWalletIframeController, "f");
|
|
1691
|
+
__classPrivateFieldSet(this, _AirWalletProvider_eventListeners, {
|
|
1692
|
+
connect: [],
|
|
1693
|
+
disconnect: [],
|
|
1694
|
+
accountsChanged: [],
|
|
1695
|
+
chainChanged: [],
|
|
1696
|
+
message: [],
|
|
1697
|
+
}, "f");
|
|
1569
1698
|
}
|
|
1570
1699
|
async request(request) {
|
|
1571
1700
|
// Check if the request is valid
|
|
1572
1701
|
if (!request || typeof request !== "object" || Array.isArray(request)) {
|
|
1573
|
-
throw
|
|
1702
|
+
throw new InvalidRequestRpcError("Invalid request");
|
|
1574
1703
|
}
|
|
1575
1704
|
const { method, params } = request;
|
|
1576
1705
|
// Check if the method is valid
|
|
1577
1706
|
if (typeof method !== "string" || method.length === 0) {
|
|
1578
|
-
throw
|
|
1707
|
+
throw new MethodNotFoundRpcError("Invalid method");
|
|
1579
1708
|
}
|
|
1580
1709
|
// Check if the params are valid
|
|
1581
1710
|
if (params !== undefined &&
|
|
1582
1711
|
!Array.isArray(params) &&
|
|
1583
1712
|
(typeof params !== "object" || params === null)) {
|
|
1584
|
-
throw
|
|
1713
|
+
throw new InvalidParamsRpcError("Invalid params");
|
|
1714
|
+
}
|
|
1715
|
+
// Check if the user is logged in
|
|
1716
|
+
if (!__classPrivateFieldGet(this, _AirWalletProvider_isLoggedIn, "f").call(this)) {
|
|
1717
|
+
throw new UnauthorizedProviderError("User is not logged in");
|
|
1718
|
+
}
|
|
1719
|
+
try {
|
|
1720
|
+
await __classPrivateFieldGet(this, _AirWalletProvider_ensureWallet, "f").call(this);
|
|
1721
|
+
}
|
|
1722
|
+
catch (error) {
|
|
1723
|
+
throw ensureProviderRpcError(error);
|
|
1585
1724
|
}
|
|
1586
1725
|
const requestId = randomId();
|
|
1587
|
-
const response = await AirMessageService$1.sendWalletProviderRequest(__classPrivateFieldGet(this,
|
|
1726
|
+
const response = await AirMessageService$1.sendWalletProviderRequest(__classPrivateFieldGet(this, _AirWalletProvider_getWalletIframeController, "f").call(this).iframeElement, {
|
|
1588
1727
|
requestId,
|
|
1589
1728
|
...request,
|
|
1590
1729
|
});
|
|
1591
1730
|
if (!response.success) {
|
|
1592
|
-
|
|
1593
|
-
throw error;
|
|
1731
|
+
throw ensureProviderRpcError(response.payload);
|
|
1594
1732
|
}
|
|
1595
1733
|
return response.payload.response;
|
|
1596
1734
|
}
|
|
1597
1735
|
on(eventName, listener) {
|
|
1598
|
-
|
|
1736
|
+
__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] = __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] || [];
|
|
1737
|
+
__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName].push(listener);
|
|
1599
1738
|
}
|
|
1600
1739
|
removeListener(eventName, listener) {
|
|
1601
|
-
|
|
1740
|
+
__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] = __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] || [];
|
|
1741
|
+
const index = __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName].indexOf(listener);
|
|
1742
|
+
if (index >= 0) {
|
|
1743
|
+
__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName].splice(index, 1);
|
|
1744
|
+
}
|
|
1745
|
+
}
|
|
1746
|
+
removeAllListeners() {
|
|
1747
|
+
__classPrivateFieldSet(this, _AirWalletProvider_eventListeners, {
|
|
1748
|
+
connect: [],
|
|
1749
|
+
disconnect: [],
|
|
1750
|
+
accountsChanged: [],
|
|
1751
|
+
chainChanged: [],
|
|
1752
|
+
message: [],
|
|
1753
|
+
}, "f");
|
|
1602
1754
|
}
|
|
1603
1755
|
}
|
|
1604
|
-
|
|
1756
|
+
_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) {
|
|
1757
|
+
(__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] || []).forEach((listener) => {
|
|
1758
|
+
try {
|
|
1759
|
+
return listener(...args);
|
|
1760
|
+
}
|
|
1761
|
+
catch (error) {
|
|
1762
|
+
log$1.error(error);
|
|
1763
|
+
}
|
|
1764
|
+
});
|
|
1765
|
+
};
|
|
1605
1766
|
|
|
1606
1767
|
class IframeController {
|
|
1607
1768
|
constructor(iframeUrl, iframeId, state) {
|
|
@@ -1666,9 +1827,8 @@ IframeController.defaultState = {
|
|
|
1666
1827
|
isVisible: false,
|
|
1667
1828
|
};
|
|
1668
1829
|
|
|
1669
|
-
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;
|
|
1830
|
+
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;
|
|
1670
1831
|
class AirService {
|
|
1671
|
-
// #walletRehydrationState: AirRehydrationResult;
|
|
1672
1832
|
constructor({ partnerId }) {
|
|
1673
1833
|
_AirService_instances.add(this);
|
|
1674
1834
|
_AirService_loginResult.set(this, undefined);
|
|
@@ -1682,8 +1842,14 @@ class AirService {
|
|
|
1682
1842
|
_AirService_walletIframeController.set(this, undefined);
|
|
1683
1843
|
_AirService_walletInitialization.set(this, undefined);
|
|
1684
1844
|
_AirService_isWalletInitialized.set(this, false);
|
|
1845
|
+
_AirService_walletLoggedInResult.set(this, undefined);
|
|
1685
1846
|
_AirService_airWalletProvider.set(this, undefined);
|
|
1686
1847
|
__classPrivateFieldSet(this, _AirService_partnerId, partnerId, "f");
|
|
1848
|
+
__classPrivateFieldSet(this, _AirService_airWalletProvider, new AirWalletProvider({
|
|
1849
|
+
isLoggedIn: () => this.isLoggedIn,
|
|
1850
|
+
ensureWallet: __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).bind(this),
|
|
1851
|
+
getWalletIframeController: () => __classPrivateFieldGet(this, _AirService_walletIframeController, "f"),
|
|
1852
|
+
}), "f");
|
|
1687
1853
|
// this.#modalZIndex = modalZIndex ?? 99999;
|
|
1688
1854
|
}
|
|
1689
1855
|
get buildEnv() {
|
|
@@ -1696,7 +1862,15 @@ class AirService {
|
|
|
1696
1862
|
return !!__classPrivateFieldGet(this, _AirService_loginResult, "f");
|
|
1697
1863
|
}
|
|
1698
1864
|
get isWalletInitialized() {
|
|
1699
|
-
return __classPrivateFieldGet(this,
|
|
1865
|
+
return !!__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f");
|
|
1866
|
+
}
|
|
1867
|
+
get provider() {
|
|
1868
|
+
const provider = __classPrivateFieldGet(this, _AirService_airWalletProvider, "f");
|
|
1869
|
+
return {
|
|
1870
|
+
request: provider.request.bind(provider),
|
|
1871
|
+
on: provider.on.bind(provider),
|
|
1872
|
+
removeListener: provider.removeListener.bind(provider),
|
|
1873
|
+
};
|
|
1700
1874
|
}
|
|
1701
1875
|
async init({ buildEnv = BUILD_ENV.PRODUCTION, enableLogging = false, skipRehydration = false, }) {
|
|
1702
1876
|
if (!__classPrivateFieldGet(this, _AirService_partnerId, "f"))
|
|
@@ -1724,7 +1898,7 @@ class AirService {
|
|
|
1724
1898
|
}
|
|
1725
1899
|
case AirAuthMessageTypes.SETUP_WALLET_REQUEST: {
|
|
1726
1900
|
try {
|
|
1727
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
1901
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, { skipWalletLogin: true });
|
|
1728
1902
|
__classPrivateFieldGet(this, _AirService_authIframeController, "f").postMessage({
|
|
1729
1903
|
type: AirAuthMessageTypes.SETUP_WALLET_RESPONSE,
|
|
1730
1904
|
payload: {
|
|
@@ -1759,6 +1933,7 @@ class AirService {
|
|
|
1759
1933
|
const { payload } = await AirMessageService$1.sendAuthInitializationRequest(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, {
|
|
1760
1934
|
partnerId: __classPrivateFieldGet(this, _AirService_partnerId, "f"),
|
|
1761
1935
|
skipRehydration,
|
|
1936
|
+
partnerDAppUrl: window.location.href,
|
|
1762
1937
|
});
|
|
1763
1938
|
if (payload.success === true) {
|
|
1764
1939
|
resolve(payload);
|
|
@@ -1786,11 +1961,6 @@ class AirService {
|
|
|
1786
1961
|
}
|
|
1787
1962
|
return null;
|
|
1788
1963
|
}
|
|
1789
|
-
async cleanUp() {
|
|
1790
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
1791
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpAuth).call(this);
|
|
1792
|
-
this.clearEventListeners();
|
|
1793
|
-
}
|
|
1794
1964
|
async login(options) {
|
|
1795
1965
|
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
1796
1966
|
throw new Error("Service is not initialized");
|
|
@@ -1895,25 +2065,13 @@ class AirService {
|
|
|
1895
2065
|
throw AirServiceError.from(error);
|
|
1896
2066
|
}
|
|
1897
2067
|
}
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
throw new Error("Service is not initialized");
|
|
1901
|
-
if (!this.isLoggedIn)
|
|
1902
|
-
throw new Error("No active session to logout");
|
|
1903
|
-
// Clear up wallet
|
|
1904
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
1905
|
-
await AirMessageService$1.logoutAuth(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement);
|
|
1906
|
-
__classPrivateFieldSet(this, _AirService_loginResult, undefined, "f");
|
|
1907
|
-
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerAirAuthLoggedOut).call(this);
|
|
1908
|
-
}
|
|
1909
|
-
async getProvider() {
|
|
1910
|
-
if (!this.isLoggedIn)
|
|
1911
|
-
return null;
|
|
1912
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
1913
|
-
return __classPrivateFieldGet(this, _AirService_airWalletProvider, "f");
|
|
2068
|
+
getProvider() {
|
|
2069
|
+
return this.provider;
|
|
1914
2070
|
}
|
|
1915
2071
|
async preloadWallet() {
|
|
1916
|
-
|
|
2072
|
+
if (__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"))
|
|
2073
|
+
return __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f");
|
|
2074
|
+
return await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
1917
2075
|
}
|
|
1918
2076
|
async claimAirId(options) {
|
|
1919
2077
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
@@ -1938,9 +2096,39 @@ class AirService {
|
|
|
1938
2096
|
id: info.payload.user.id,
|
|
1939
2097
|
abstractAccountAddress: info.payload.user.abstractAccountAddress,
|
|
1940
2098
|
email: info.payload.user.email,
|
|
2099
|
+
isMFASetup: info.payload.user.isMFASetup,
|
|
1941
2100
|
},
|
|
1942
2101
|
};
|
|
1943
2102
|
}
|
|
2103
|
+
async goToPartner(partnerUrl) {
|
|
2104
|
+
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2105
|
+
throw new Error("Service is not initialized");
|
|
2106
|
+
if (!this.isLoggedIn)
|
|
2107
|
+
throw new Error("No active session to generate token");
|
|
2108
|
+
const result = await AirMessageService$1.sendCrossPartnerTokenRequest(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, partnerUrl);
|
|
2109
|
+
if (result.payload.success === false) {
|
|
2110
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2111
|
+
}
|
|
2112
|
+
return {
|
|
2113
|
+
urlWithToken: result.payload.urlWithToken,
|
|
2114
|
+
};
|
|
2115
|
+
}
|
|
2116
|
+
async logout() {
|
|
2117
|
+
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2118
|
+
throw new Error("Service is not initialized");
|
|
2119
|
+
if (!this.isLoggedIn)
|
|
2120
|
+
throw new Error("No active session to logout");
|
|
2121
|
+
// Clear up wallet
|
|
2122
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
2123
|
+
await AirMessageService$1.logoutAuth(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement);
|
|
2124
|
+
__classPrivateFieldSet(this, _AirService_loginResult, undefined, "f");
|
|
2125
|
+
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerAirAuthLoggedOut).call(this);
|
|
2126
|
+
}
|
|
2127
|
+
async cleanUp() {
|
|
2128
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
2129
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpAuth).call(this);
|
|
2130
|
+
this.clearEventListeners();
|
|
2131
|
+
}
|
|
1944
2132
|
on(listener) {
|
|
1945
2133
|
if (__classPrivateFieldGet(this, _AirService_airAuthListener, "f").indexOf(listener) < 0)
|
|
1946
2134
|
__classPrivateFieldGet(this, _AirService_airAuthListener, "f").push(listener);
|
|
@@ -1961,24 +2149,39 @@ class AirService {
|
|
|
1961
2149
|
return null;
|
|
1962
2150
|
}
|
|
1963
2151
|
}
|
|
1964
|
-
_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 =
|
|
2152
|
+
_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 =
|
|
2153
|
+
// Result of this.#walletInitialization:
|
|
2154
|
+
// - If skipWalletLogin is true, it returns the result of empty abstractAccountAddress
|
|
2155
|
+
// - If skipWalletLogin is false, it returns the result of abstractAccountAddress from wallet initialization
|
|
2156
|
+
// - If #ensureWallet is called again, it returns the result of abstractAccountAddress from the second
|
|
2157
|
+
// wallet initialization if this first wallet initialization doesn't have abstractAccountAddress
|
|
2158
|
+
async function _AirService_ensureWallet(option) {
|
|
1965
2159
|
if (!this.isInitialized)
|
|
1966
2160
|
throw new Error("Service not initialized");
|
|
1967
|
-
if (!
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
2161
|
+
if (!this.isLoggedIn && !option?.skipWalletLogin)
|
|
2162
|
+
throw new Error("User not logged in");
|
|
2163
|
+
if (!__classPrivateFieldGet(this, _AirService_walletInitialization, "f"))
|
|
2164
|
+
__classPrivateFieldSet(this, _AirService_walletInitialization, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_initializeWallet).call(this, option), "f");
|
|
2165
|
+
try {
|
|
2166
|
+
const result = await __classPrivateFieldGet(this, _AirService_walletInitialization, "f");
|
|
2167
|
+
// Note: Checking for abstractAccountAddress from the result and this.#walletLoggedInResult to avoid race condition
|
|
2168
|
+
if (option?.skipWalletLogin ||
|
|
2169
|
+
result?.abstractAccountAddress ||
|
|
2170
|
+
__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f")?.abstractAccountAddress) {
|
|
2171
|
+
return result || __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f");
|
|
1971
2172
|
}
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
throw error;
|
|
2173
|
+
const walletInitResult = await AirMessageService$1.onWalletInitialized();
|
|
2174
|
+
if (walletInitResult.payload.success !== true) {
|
|
2175
|
+
throw new AirServiceError(walletInitResult.payload.errorName, walletInitResult.payload.errorMessage);
|
|
1976
2176
|
}
|
|
2177
|
+
return __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, walletInitResult.payload);
|
|
1977
2178
|
}
|
|
1978
|
-
|
|
1979
|
-
|
|
2179
|
+
catch (error) {
|
|
2180
|
+
__classPrivateFieldSet(this, _AirService_walletInitialization, null, "f");
|
|
2181
|
+
log.error("Error initializing wallet", error);
|
|
2182
|
+
throw error;
|
|
1980
2183
|
}
|
|
1981
|
-
}, _AirService_initializeWallet = async function _AirService_initializeWallet() {
|
|
2184
|
+
}, _AirService_initializeWallet = async function _AirService_initializeWallet(option) {
|
|
1982
2185
|
if (__classPrivateFieldGet(this, _AirService_isWalletInitialized, "f"))
|
|
1983
2186
|
throw new AirServiceError("ALREADY_INITIALISED", "Already initialized");
|
|
1984
2187
|
const { walletUrl } = AIR_URLS[__classPrivateFieldGet(this, _AirService_buildEnv, "f")];
|
|
@@ -1996,6 +2199,23 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
1996
2199
|
walletIframeController.updateIframeState();
|
|
1997
2200
|
break;
|
|
1998
2201
|
}
|
|
2202
|
+
case AirMessageTypes.WALLET_INITIALIZED: {
|
|
2203
|
+
if (msg.payload.success === true && msg.payload.addresses?.aa) {
|
|
2204
|
+
__classPrivateFieldSet(this, _AirService_walletLoggedInResult, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, msg.payload), "f");
|
|
2205
|
+
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerWalletInitialized).call(this, __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"));
|
|
2206
|
+
}
|
|
2207
|
+
if (msg.payload.success === false) {
|
|
2208
|
+
if (!__classPrivateFieldGet(this, _AirService_isWalletInitialized, "f")) {
|
|
2209
|
+
// MFA fail case, also reset wallet port
|
|
2210
|
+
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpAuthWalletCommunication).call(this);
|
|
2211
|
+
}
|
|
2212
|
+
else {
|
|
2213
|
+
// Logout wallet and destroy the wallet iframe
|
|
2214
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
2215
|
+
}
|
|
2216
|
+
}
|
|
2217
|
+
break;
|
|
2218
|
+
}
|
|
1999
2219
|
}
|
|
2000
2220
|
});
|
|
2001
2221
|
await new Promise((resolve, reject) => {
|
|
@@ -2018,18 +2238,15 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
2018
2238
|
};
|
|
2019
2239
|
window.addEventListener("message", handleAuthMessage);
|
|
2020
2240
|
});
|
|
2241
|
+
__classPrivateFieldGet(this, _AirService_airWalletProvider, "f").listenProviderEventMessage();
|
|
2021
2242
|
const walletInitPromise = AirMessageService$1.onWalletInitialized();
|
|
2022
|
-
AirMessageService$1.setupIframeCommunication(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, __classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
|
|
2243
|
+
AirMessageService$1.setupIframeCommunication(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, __classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement, option?.skipWalletLogin ?? false);
|
|
2023
2244
|
const walletInitResult = await walletInitPromise;
|
|
2024
2245
|
if (walletInitResult.payload.success !== true) {
|
|
2025
2246
|
throw new AirServiceError(walletInitResult.payload.errorName, walletInitResult.payload.errorMessage);
|
|
2026
2247
|
}
|
|
2027
|
-
__classPrivateFieldSet(this,
|
|
2028
|
-
|
|
2029
|
-
abstractAccountAddress: walletInitResult.payload.addresses.aa,
|
|
2030
|
-
};
|
|
2031
|
-
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerWalletInitialized).call(this, result);
|
|
2032
|
-
return result;
|
|
2248
|
+
__classPrivateFieldSet(this, _AirService_isWalletInitialized, true, "f");
|
|
2249
|
+
return __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, walletInitResult.payload);
|
|
2033
2250
|
}
|
|
2034
2251
|
catch (error) {
|
|
2035
2252
|
log.error("Error initializing wallet", error);
|
|
@@ -2060,6 +2277,12 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
2060
2277
|
id: payload.id,
|
|
2061
2278
|
abstractAccountAddress: payload.abstractAccountAddress,
|
|
2062
2279
|
token: payload.partnerAccessToken,
|
|
2280
|
+
isMFASetup: payload.isMFASetup,
|
|
2281
|
+
};
|
|
2282
|
+
}, _AirService_createWalletInitializedResult = function _AirService_createWalletInitializedResult(payload) {
|
|
2283
|
+
return {
|
|
2284
|
+
abstractAccountAddress: payload.addresses?.aa ?? null,
|
|
2285
|
+
isMFASetup: payload.isMFASetup,
|
|
2063
2286
|
};
|
|
2064
2287
|
}, _AirService_cleanUpAuth = async function _AirService_cleanUpAuth() {
|
|
2065
2288
|
// Logout auth session
|
|
@@ -2085,8 +2308,16 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
2085
2308
|
}
|
|
2086
2309
|
// Close the message service
|
|
2087
2310
|
AirMessageService$1.closeAirObservables();
|
|
2088
|
-
__classPrivateFieldSet(this,
|
|
2311
|
+
__classPrivateFieldSet(this, _AirService_walletLoggedInResult, undefined, "f");
|
|
2312
|
+
__classPrivateFieldSet(this, _AirService_walletInitialization, undefined, "f");
|
|
2089
2313
|
__classPrivateFieldSet(this, _AirService_isWalletInitialized, false, "f");
|
|
2314
|
+
}, _AirService_cleanUpAuthWalletCommunication = function _AirService_cleanUpAuthWalletCommunication() {
|
|
2315
|
+
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2316
|
+
return;
|
|
2317
|
+
const authIframeElement = __classPrivateFieldGet(this, _AirService_authIframeController, "f")?.iframeElement;
|
|
2318
|
+
if (isElement(authIframeElement) && window.document.body.contains(authIframeElement)) {
|
|
2319
|
+
AirMessageService$1.sendResetAuthServiceWalletCommunication(authIframeElement);
|
|
2320
|
+
}
|
|
2090
2321
|
};
|
|
2091
2322
|
|
|
2092
|
-
export { AirService, AirServiceError,
|
|
2323
|
+
export { AirService, AirServiceError, BUILD_ENV, ChainDisconnectedError, InternalRpcError, InvalidParamsRpcError, InvalidRequestRpcError, MethodNotFoundRpcError, ProviderDisconnectedError, SwitchChainError, UnauthorizedProviderError, UnsupportedProviderMethodError, UserRejectedRequestError, ensureProviderRpcError };
|