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