@mocanetwork/airkit 1.0.0 → 1.1.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 +400 -157
- package/dist/airkit.esm.js +390 -156
- package/dist/airkit.umd.js +400 -157
- package/dist/types/airService.d.ts +10 -7
- 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 +41 -50
- 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 +8 -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 = {
|
|
@@ -124,6 +129,10 @@ const AirMessageTypes = {
|
|
|
124
129
|
INITIALIZATION_RESPONSE: "air_initialization_response",
|
|
125
130
|
INIT_AUTH_COMMUNICATION: "air_init_auth_communication",
|
|
126
131
|
WALLET_INITIALIZED: "air_wallet_initialized",
|
|
132
|
+
WALLET_LOGIN_REQUEST: "air_wallet_login_request",
|
|
133
|
+
WALLET_LOGIN_RESPONSE: "air_wallet_login_response",
|
|
134
|
+
SETUP_MFA_REQUEST: "air_setup_mfa_request",
|
|
135
|
+
SETUP_MFA_RESPONSE: "air_setup_mfa_response",
|
|
127
136
|
CLAIM_ID_REQUEST: "air_claim_id_request",
|
|
128
137
|
CLAIM_ID_RESPONSE: "air_claim_id_response",
|
|
129
138
|
DEPLOY_SMART_ACCOUNT_REQUEST: "air_deploy_smart_account_request",
|
|
@@ -141,6 +150,152 @@ const AirMessageTypes = {
|
|
|
141
150
|
LOGOUT_RESPONSE: "air_logout_response"
|
|
142
151
|
};
|
|
143
152
|
|
|
153
|
+
class BaseError extends Error {
|
|
154
|
+
constructor(name, message, options = {}) {
|
|
155
|
+
const {
|
|
156
|
+
cause,
|
|
157
|
+
context
|
|
158
|
+
} = options;
|
|
159
|
+
super(message || name);
|
|
160
|
+
this.name = name;
|
|
161
|
+
this.stack = cause?.stack;
|
|
162
|
+
this.cause = cause;
|
|
163
|
+
this.context = context;
|
|
164
|
+
}
|
|
165
|
+
toJSON() {
|
|
166
|
+
return {
|
|
167
|
+
name: this.name,
|
|
168
|
+
message: this.message,
|
|
169
|
+
context: this.context,
|
|
170
|
+
cause: this.cause
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
class AirServiceError extends BaseError {
|
|
176
|
+
static from(error) {
|
|
177
|
+
if (error instanceof AirServiceError) {
|
|
178
|
+
return error;
|
|
179
|
+
}
|
|
180
|
+
else if (error instanceof Object && "message" in error) {
|
|
181
|
+
if (error.message === "User cancelled login") {
|
|
182
|
+
return new AirServiceError("USER_CANCELLED", error.message);
|
|
183
|
+
}
|
|
184
|
+
return new AirServiceError("UNKNOWN_ERROR", error.message.toString());
|
|
185
|
+
}
|
|
186
|
+
return new AirServiceError("UNKNOWN_ERROR");
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
class ProviderRpcError extends Error {
|
|
190
|
+
constructor(message) {
|
|
191
|
+
super(message);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
class UserRejectedRequestError extends ProviderRpcError {
|
|
195
|
+
constructor() {
|
|
196
|
+
super(...arguments);
|
|
197
|
+
this.code = 4001;
|
|
198
|
+
this.name = "UserRejectedRequestError";
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
class UnauthorizedProviderError extends ProviderRpcError {
|
|
202
|
+
constructor() {
|
|
203
|
+
super(...arguments);
|
|
204
|
+
this.code = 4100;
|
|
205
|
+
this.name = "UnauthorizedProviderError";
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
class UnsupportedProviderMethodError extends ProviderRpcError {
|
|
209
|
+
constructor() {
|
|
210
|
+
super(...arguments);
|
|
211
|
+
this.code = 4200;
|
|
212
|
+
this.name = "UnsupportedProviderMethodError";
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
class ProviderDisconnectedError extends ProviderRpcError {
|
|
216
|
+
constructor() {
|
|
217
|
+
super(...arguments);
|
|
218
|
+
this.code = 4900;
|
|
219
|
+
this.name = "ProviderDisconnectedError";
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
class ChainDisconnectedError extends ProviderRpcError {
|
|
223
|
+
constructor() {
|
|
224
|
+
super(...arguments);
|
|
225
|
+
this.code = 4901;
|
|
226
|
+
this.name = "ChainDisconnectedError";
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
class SwitchChainError extends ProviderRpcError {
|
|
230
|
+
constructor() {
|
|
231
|
+
super(...arguments);
|
|
232
|
+
this.code = 4902;
|
|
233
|
+
this.name = "SwitchChainError";
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
class InvalidRequestRpcError extends ProviderRpcError {
|
|
237
|
+
constructor() {
|
|
238
|
+
super(...arguments);
|
|
239
|
+
this.code = -32600;
|
|
240
|
+
this.name = "InvalidRequestRpcError";
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
class MethodNotFoundRpcError extends ProviderRpcError {
|
|
244
|
+
constructor() {
|
|
245
|
+
super(...arguments);
|
|
246
|
+
this.code = -32601;
|
|
247
|
+
this.name = "MethodNotFoundRpcError";
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
class InvalidParamsRpcError extends ProviderRpcError {
|
|
251
|
+
constructor() {
|
|
252
|
+
super(...arguments);
|
|
253
|
+
this.code = -32602;
|
|
254
|
+
this.name = "InvalidParamsRpcError";
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
class InternalRpcError extends ProviderRpcError {
|
|
258
|
+
constructor() {
|
|
259
|
+
super(...arguments);
|
|
260
|
+
this.code = -32603;
|
|
261
|
+
this.name = "InternalRpcError";
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
function ensureProviderRpcError(value) {
|
|
265
|
+
if (value instanceof ProviderRpcError) {
|
|
266
|
+
return value;
|
|
267
|
+
}
|
|
268
|
+
if (typeof value === "object" &&
|
|
269
|
+
value !== null &&
|
|
270
|
+
"errorCode" in value &&
|
|
271
|
+
"errorMessage" in value) {
|
|
272
|
+
if (typeof value.errorCode === "number" && typeof value.errorMessage === "string") {
|
|
273
|
+
switch (value.errorCode) {
|
|
274
|
+
case 4001:
|
|
275
|
+
return new UserRejectedRequestError(value.errorMessage);
|
|
276
|
+
case 4100:
|
|
277
|
+
return new UnauthorizedProviderError(value.errorMessage);
|
|
278
|
+
case 4200:
|
|
279
|
+
return new UnsupportedProviderMethodError(value.errorMessage);
|
|
280
|
+
case 4900:
|
|
281
|
+
return new ProviderDisconnectedError(value.errorMessage);
|
|
282
|
+
case 4901:
|
|
283
|
+
return new ChainDisconnectedError(value.errorMessage);
|
|
284
|
+
case 4902:
|
|
285
|
+
return new SwitchChainError(value.errorMessage);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
let stringified = "[Unable to stringify the thrown value]";
|
|
290
|
+
try {
|
|
291
|
+
stringified = JSON.stringify(value);
|
|
292
|
+
}
|
|
293
|
+
catch {
|
|
294
|
+
// ignoring failed stringify
|
|
295
|
+
}
|
|
296
|
+
return new InternalRpcError(`Invalid value for ProviderRpcError: ${stringified}`);
|
|
297
|
+
}
|
|
298
|
+
|
|
144
299
|
function isFunction(value) {
|
|
145
300
|
return typeof value === 'function';
|
|
146
301
|
}
|
|
@@ -868,50 +1023,11 @@ function filter(predicate, thisArg) {
|
|
|
868
1023
|
});
|
|
869
1024
|
}
|
|
870
1025
|
|
|
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
1026
|
function getDefaultExportFromCjs (x) {
|
|
911
1027
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
912
1028
|
}
|
|
913
1029
|
|
|
914
|
-
var loglevel$
|
|
1030
|
+
var loglevel$1 = {exports: {}};
|
|
915
1031
|
|
|
916
1032
|
/*
|
|
917
1033
|
* loglevel - https://github.com/pimterry/loglevel
|
|
@@ -919,10 +1035,10 @@ var loglevel$2 = {exports: {}};
|
|
|
919
1035
|
* Copyright (c) 2013 Tim Perry
|
|
920
1036
|
* Licensed under the MIT license.
|
|
921
1037
|
*/
|
|
922
|
-
var loglevel
|
|
1038
|
+
var loglevel = loglevel$1.exports;
|
|
923
1039
|
var hasRequiredLoglevel;
|
|
924
1040
|
function requireLoglevel() {
|
|
925
|
-
if (hasRequiredLoglevel) return loglevel$
|
|
1041
|
+
if (hasRequiredLoglevel) return loglevel$1.exports;
|
|
926
1042
|
hasRequiredLoglevel = 1;
|
|
927
1043
|
(function (module) {
|
|
928
1044
|
(function (root, definition) {
|
|
@@ -932,7 +1048,7 @@ function requireLoglevel() {
|
|
|
932
1048
|
} else {
|
|
933
1049
|
root.log = definition();
|
|
934
1050
|
}
|
|
935
|
-
})(loglevel
|
|
1051
|
+
})(loglevel, function () {
|
|
936
1052
|
|
|
937
1053
|
// Slightly dubious tricks to cut down minimized file size
|
|
938
1054
|
var noop = function () {};
|
|
@@ -1231,24 +1347,27 @@ function requireLoglevel() {
|
|
|
1231
1347
|
defaultLogger['default'] = defaultLogger;
|
|
1232
1348
|
return defaultLogger;
|
|
1233
1349
|
});
|
|
1234
|
-
})(loglevel$
|
|
1235
|
-
return loglevel$
|
|
1350
|
+
})(loglevel$1);
|
|
1351
|
+
return loglevel$1.exports;
|
|
1236
1352
|
}
|
|
1237
1353
|
|
|
1238
1354
|
var loglevelExports = requireLoglevel();
|
|
1239
|
-
var
|
|
1355
|
+
var log$1 = /*@__PURE__*/getDefaultExportFromCjs(loglevelExports);
|
|
1240
1356
|
|
|
1241
|
-
var log =
|
|
1357
|
+
var log = log$1.getLogger("airkit");
|
|
1242
1358
|
|
|
1243
1359
|
var AirWalletProviderMessageTypes;
|
|
1244
1360
|
(function (AirWalletProviderMessageTypes) {
|
|
1245
1361
|
AirWalletProviderMessageTypes["REQUEST"] = "JRPC_REQUEST";
|
|
1246
1362
|
AirWalletProviderMessageTypes["RESPONSE"] = "JRPC_RESPONSE";
|
|
1363
|
+
AirWalletProviderMessageTypes["EVENT"] = "JRPC_EVENT";
|
|
1247
1364
|
})(AirWalletProviderMessageTypes || (AirWalletProviderMessageTypes = {}));
|
|
1248
1365
|
|
|
1249
1366
|
const ACCOUNT_MESSAGES = [
|
|
1250
1367
|
AirMessageTypes.INITIALIZATION_RESPONSE,
|
|
1251
1368
|
AirMessageTypes.WALLET_INITIALIZED,
|
|
1369
|
+
AirMessageTypes.WALLET_LOGIN_RESPONSE,
|
|
1370
|
+
AirMessageTypes.SETUP_MFA_RESPONSE,
|
|
1252
1371
|
AirMessageTypes.CLAIM_ID_RESPONSE,
|
|
1253
1372
|
AirMessageTypes.IS_SMART_ACCOUNT_DEPLOYED_RESPONSE,
|
|
1254
1373
|
AirMessageTypes.DEPLOY_SMART_ACCOUNT_RESPONSE,
|
|
@@ -1266,6 +1385,7 @@ const AUTH_MESSAGES = [
|
|
|
1266
1385
|
AirAuthMessageTypes.SETUP_WALLET_REQUEST,
|
|
1267
1386
|
AirAuthMessageTypes.LOGOUT_RESPONSE,
|
|
1268
1387
|
AirAuthMessageTypes.PARTNER_USER_INFO_RESPONSE,
|
|
1388
|
+
AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE,
|
|
1269
1389
|
AirAuthMessageTypes.IFRAME_VISIBILITY_REQUEST,
|
|
1270
1390
|
];
|
|
1271
1391
|
class AirMessageService {
|
|
@@ -1289,6 +1409,9 @@ class AirMessageService {
|
|
|
1289
1409
|
get providerMessage$() {
|
|
1290
1410
|
return this._providerMessage$.asObservable();
|
|
1291
1411
|
}
|
|
1412
|
+
get providerEvent$() {
|
|
1413
|
+
return this._providerEvent$.asObservable();
|
|
1414
|
+
}
|
|
1292
1415
|
async openAuthObservables({ authIframeOrigin }) {
|
|
1293
1416
|
this.closeAuthObservables();
|
|
1294
1417
|
this.setupAuthObservables();
|
|
@@ -1329,13 +1452,16 @@ class AirMessageService {
|
|
|
1329
1452
|
if (ev.data.type === AirWalletProviderMessageTypes.RESPONSE) {
|
|
1330
1453
|
this._providerMessage$.next(ev.data);
|
|
1331
1454
|
}
|
|
1455
|
+
if (ev.data.type === AirWalletProviderMessageTypes.EVENT) {
|
|
1456
|
+
this._providerEvent$.next(ev.data);
|
|
1457
|
+
}
|
|
1332
1458
|
};
|
|
1333
1459
|
window.addEventListener("message", handleWalletMessage);
|
|
1334
1460
|
this.closeWalletMessageListeners = () => {
|
|
1335
1461
|
window.removeEventListener("message", handleWalletMessage);
|
|
1336
1462
|
};
|
|
1337
1463
|
}
|
|
1338
|
-
setupIframeCommunication(authIframe, walletIframe) {
|
|
1464
|
+
setupIframeCommunication(authIframe, walletIframe, skipWalletLogin) {
|
|
1339
1465
|
const channel = new MessageChannel();
|
|
1340
1466
|
const authOrigin = new URL(authIframe.src).origin;
|
|
1341
1467
|
authIframe.contentWindow.postMessage({
|
|
@@ -1344,6 +1470,9 @@ class AirMessageService {
|
|
|
1344
1470
|
const walletOrigin = new URL(walletIframe.src).origin;
|
|
1345
1471
|
walletIframe.contentWindow.postMessage({
|
|
1346
1472
|
type: AirMessageTypes.INIT_AUTH_COMMUNICATION,
|
|
1473
|
+
payload: {
|
|
1474
|
+
skipWalletLogin,
|
|
1475
|
+
},
|
|
1347
1476
|
}, walletOrigin, [channel.port2]);
|
|
1348
1477
|
}
|
|
1349
1478
|
async sendGrantPermissionRequest(walletIframe, policies) {
|
|
@@ -1357,7 +1486,7 @@ class AirMessageService {
|
|
|
1357
1486
|
}, origin);
|
|
1358
1487
|
const result = await response;
|
|
1359
1488
|
if (result.payload.success === false) {
|
|
1360
|
-
throw new
|
|
1489
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1361
1490
|
}
|
|
1362
1491
|
return result.payload.sessionData;
|
|
1363
1492
|
}
|
|
@@ -1378,7 +1507,7 @@ class AirMessageService {
|
|
|
1378
1507
|
}, origin);
|
|
1379
1508
|
const result = await response;
|
|
1380
1509
|
if (result.payload.success === false) {
|
|
1381
|
-
throw new
|
|
1510
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1382
1511
|
}
|
|
1383
1512
|
return result.payload.txHash;
|
|
1384
1513
|
}
|
|
@@ -1393,7 +1522,7 @@ class AirMessageService {
|
|
|
1393
1522
|
}, origin);
|
|
1394
1523
|
const result = await response;
|
|
1395
1524
|
if (result.payload.success === false) {
|
|
1396
|
-
throw new
|
|
1525
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1397
1526
|
}
|
|
1398
1527
|
return result.payload.txHash;
|
|
1399
1528
|
}
|
|
@@ -1437,6 +1566,10 @@ class AirMessageService {
|
|
|
1437
1566
|
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.LOGOUT_REQUEST }, origin);
|
|
1438
1567
|
return response;
|
|
1439
1568
|
}
|
|
1569
|
+
sendResetAuthServiceWalletCommunication(authIframe) {
|
|
1570
|
+
const { origin: authOrigin } = new URL(authIframe.src);
|
|
1571
|
+
authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.RESET_WALLET_COMMUNICATION }, authOrigin);
|
|
1572
|
+
}
|
|
1440
1573
|
async sendAuthInitializationRequest(authIframe, payload) {
|
|
1441
1574
|
const response = firstValueFrom(this._authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.INITIALIZATION_RESPONSE)));
|
|
1442
1575
|
const { origin } = new URL(authIframe.src);
|
|
@@ -1449,6 +1582,17 @@ class AirMessageService {
|
|
|
1449
1582
|
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.INITIALIZATION_REQUEST, payload }, origin);
|
|
1450
1583
|
return response;
|
|
1451
1584
|
}
|
|
1585
|
+
async sendCrossPartnerTokenRequest(authIframe, targetPartnerUrl) {
|
|
1586
|
+
const response = firstValueFrom(this.authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE)));
|
|
1587
|
+
const { origin } = new URL(authIframe.src);
|
|
1588
|
+
authIframe.contentWindow.postMessage({
|
|
1589
|
+
type: AirAuthMessageTypes.CROSS_PARTNER_TOKEN_REQUEST,
|
|
1590
|
+
payload: {
|
|
1591
|
+
targetPartnerUrl,
|
|
1592
|
+
},
|
|
1593
|
+
}, origin);
|
|
1594
|
+
return response;
|
|
1595
|
+
}
|
|
1452
1596
|
async sendGrantPermissionsRequest(walletIframe, payload) {
|
|
1453
1597
|
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.GRANT_PERMISSIONS_RESPONSE)));
|
|
1454
1598
|
const { origin } = new URL(walletIframe.src);
|
|
@@ -1458,6 +1602,18 @@ class AirMessageService {
|
|
|
1458
1602
|
onWalletInitialized() {
|
|
1459
1603
|
return firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.WALLET_INITIALIZED)));
|
|
1460
1604
|
}
|
|
1605
|
+
sendWalletLoginRequest(walletIframe) {
|
|
1606
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.WALLET_LOGIN_RESPONSE)));
|
|
1607
|
+
const { origin } = new URL(walletIframe.src);
|
|
1608
|
+
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.WALLET_LOGIN_REQUEST }, origin);
|
|
1609
|
+
return response;
|
|
1610
|
+
}
|
|
1611
|
+
async sendSetupMfaRequest(walletIframe) {
|
|
1612
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.SETUP_MFA_RESPONSE)));
|
|
1613
|
+
const { origin } = new URL(walletIframe.src);
|
|
1614
|
+
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.SETUP_MFA_REQUEST }, origin);
|
|
1615
|
+
return response;
|
|
1616
|
+
}
|
|
1461
1617
|
async sendClaimIdRequest(walletIframe, payload) {
|
|
1462
1618
|
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.CLAIM_ID_RESPONSE)));
|
|
1463
1619
|
const { origin } = new URL(walletIframe.src);
|
|
@@ -1489,6 +1645,8 @@ class AirMessageService {
|
|
|
1489
1645
|
closeWalletObservables() {
|
|
1490
1646
|
if (this._providerMessage$ && !this._providerMessage$.closed)
|
|
1491
1647
|
this._providerMessage$.complete();
|
|
1648
|
+
if (this._providerEvent$ && !this._providerEvent$.closed)
|
|
1649
|
+
this._providerEvent$.complete();
|
|
1492
1650
|
if (this.closeWalletMessageListeners)
|
|
1493
1651
|
this.closeWalletMessageListeners();
|
|
1494
1652
|
}
|
|
@@ -1500,38 +1658,11 @@ class AirMessageService {
|
|
|
1500
1658
|
}
|
|
1501
1659
|
setupWalletObservables() {
|
|
1502
1660
|
this._providerMessage$ = new Subject();
|
|
1661
|
+
this._providerEvent$ = new Subject();
|
|
1503
1662
|
}
|
|
1504
1663
|
}
|
|
1505
1664
|
var AirMessageService$1 = AirMessageService.instance;
|
|
1506
1665
|
|
|
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
1666
|
const BUILD_ENV = {
|
|
1536
1667
|
PRODUCTION: "production",
|
|
1537
1668
|
STAGING: "staging",
|
|
@@ -1542,66 +1673,113 @@ const AIR_URLS = {
|
|
|
1542
1673
|
[BUILD_ENV.DEVELOPMENT]: {
|
|
1543
1674
|
authUrl: "http://localhost:8100",
|
|
1544
1675
|
walletUrl: "http://localhost:8200",
|
|
1545
|
-
legacyWalletUrl: "https://localhost:4050",
|
|
1546
1676
|
logLevel: "debug",
|
|
1547
1677
|
},
|
|
1548
1678
|
[BUILD_ENV.STAGING]: {
|
|
1549
1679
|
authUrl: "https://auth.staging.air3.com",
|
|
1550
1680
|
walletUrl: "https://account.staging.air3.com",
|
|
1551
|
-
legacyWalletUrl: "https://account.staging.realmnetwork.io",
|
|
1552
1681
|
logLevel: "info",
|
|
1553
1682
|
},
|
|
1554
1683
|
[BUILD_ENV.PRODUCTION]: {
|
|
1555
1684
|
authUrl: "https://auth.air3.com",
|
|
1556
1685
|
walletUrl: "https://account.air3.com",
|
|
1557
|
-
legacyWalletUrl: "https://account.realmnetwork.io",
|
|
1558
1686
|
logLevel: "error",
|
|
1559
1687
|
},
|
|
1560
1688
|
};
|
|
1561
1689
|
const isElement = (element) => element instanceof Element || element instanceof Document;
|
|
1562
1690
|
const randomId = () => Math.random().toString(36).slice(2);
|
|
1563
1691
|
|
|
1564
|
-
var
|
|
1692
|
+
var _AirWalletProvider_instances, _AirWalletProvider_isLoggedIn, _AirWalletProvider_ensureWallet, _AirWalletProvider_getWalletIframeController, _AirWalletProvider_eventListeners, _AirWalletProvider_emit;
|
|
1565
1693
|
class AirWalletProvider {
|
|
1566
|
-
constructor(
|
|
1567
|
-
|
|
1568
|
-
|
|
1694
|
+
constructor({ isLoggedIn, ensureWallet, getWalletIframeController, }) {
|
|
1695
|
+
_AirWalletProvider_instances.add(this);
|
|
1696
|
+
_AirWalletProvider_isLoggedIn.set(this, undefined);
|
|
1697
|
+
_AirWalletProvider_ensureWallet.set(this, undefined);
|
|
1698
|
+
_AirWalletProvider_getWalletIframeController.set(this, undefined);
|
|
1699
|
+
_AirWalletProvider_eventListeners.set(this, undefined);
|
|
1700
|
+
this.startEventMessageListening = () => {
|
|
1701
|
+
AirMessageService$1.providerEvent$.subscribe((message) => {
|
|
1702
|
+
__classPrivateFieldGet(this, _AirWalletProvider_instances, "m", _AirWalletProvider_emit).call(this, message.payload.event, ...[message.payload.data]);
|
|
1703
|
+
});
|
|
1704
|
+
};
|
|
1705
|
+
__classPrivateFieldSet(this, _AirWalletProvider_isLoggedIn, isLoggedIn, "f");
|
|
1706
|
+
__classPrivateFieldSet(this, _AirWalletProvider_ensureWallet, ensureWallet, "f");
|
|
1707
|
+
__classPrivateFieldSet(this, _AirWalletProvider_getWalletIframeController, getWalletIframeController, "f");
|
|
1708
|
+
__classPrivateFieldSet(this, _AirWalletProvider_eventListeners, {
|
|
1709
|
+
connect: [],
|
|
1710
|
+
disconnect: [],
|
|
1711
|
+
accountsChanged: [],
|
|
1712
|
+
chainChanged: [],
|
|
1713
|
+
message: [],
|
|
1714
|
+
}, "f");
|
|
1569
1715
|
}
|
|
1570
1716
|
async request(request) {
|
|
1571
1717
|
// Check if the request is valid
|
|
1572
1718
|
if (!request || typeof request !== "object" || Array.isArray(request)) {
|
|
1573
|
-
throw
|
|
1719
|
+
throw new InvalidRequestRpcError("Invalid request");
|
|
1574
1720
|
}
|
|
1575
1721
|
const { method, params } = request;
|
|
1576
1722
|
// Check if the method is valid
|
|
1577
1723
|
if (typeof method !== "string" || method.length === 0) {
|
|
1578
|
-
throw
|
|
1724
|
+
throw new MethodNotFoundRpcError("Invalid method");
|
|
1579
1725
|
}
|
|
1580
1726
|
// Check if the params are valid
|
|
1581
1727
|
if (params !== undefined &&
|
|
1582
1728
|
!Array.isArray(params) &&
|
|
1583
1729
|
(typeof params !== "object" || params === null)) {
|
|
1584
|
-
throw
|
|
1730
|
+
throw new InvalidParamsRpcError("Invalid params");
|
|
1731
|
+
}
|
|
1732
|
+
// Check if the user is logged in
|
|
1733
|
+
if (!__classPrivateFieldGet(this, _AirWalletProvider_isLoggedIn, "f").call(this)) {
|
|
1734
|
+
throw new UnauthorizedProviderError("User is not logged in");
|
|
1735
|
+
}
|
|
1736
|
+
try {
|
|
1737
|
+
await __classPrivateFieldGet(this, _AirWalletProvider_ensureWallet, "f").call(this);
|
|
1738
|
+
}
|
|
1739
|
+
catch (error) {
|
|
1740
|
+
throw ensureProviderRpcError(error);
|
|
1585
1741
|
}
|
|
1586
1742
|
const requestId = randomId();
|
|
1587
|
-
const response = await AirMessageService$1.sendWalletProviderRequest(__classPrivateFieldGet(this,
|
|
1743
|
+
const response = await AirMessageService$1.sendWalletProviderRequest(__classPrivateFieldGet(this, _AirWalletProvider_getWalletIframeController, "f").call(this).iframeElement, {
|
|
1588
1744
|
requestId,
|
|
1589
1745
|
...request,
|
|
1590
1746
|
});
|
|
1591
1747
|
if (!response.success) {
|
|
1592
|
-
|
|
1593
|
-
throw error;
|
|
1748
|
+
throw ensureProviderRpcError(response.payload);
|
|
1594
1749
|
}
|
|
1595
1750
|
return response.payload.response;
|
|
1596
1751
|
}
|
|
1597
1752
|
on(eventName, listener) {
|
|
1598
|
-
|
|
1753
|
+
__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] = __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] || [];
|
|
1754
|
+
__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName].push(listener);
|
|
1599
1755
|
}
|
|
1600
1756
|
removeListener(eventName, listener) {
|
|
1601
|
-
|
|
1757
|
+
__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] = __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] || [];
|
|
1758
|
+
const index = __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName].indexOf(listener);
|
|
1759
|
+
if (index >= 0) {
|
|
1760
|
+
__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName].splice(index, 1);
|
|
1761
|
+
}
|
|
1762
|
+
}
|
|
1763
|
+
removeAllListeners() {
|
|
1764
|
+
__classPrivateFieldSet(this, _AirWalletProvider_eventListeners, {
|
|
1765
|
+
connect: [],
|
|
1766
|
+
disconnect: [],
|
|
1767
|
+
accountsChanged: [],
|
|
1768
|
+
chainChanged: [],
|
|
1769
|
+
message: [],
|
|
1770
|
+
}, "f");
|
|
1602
1771
|
}
|
|
1603
1772
|
}
|
|
1604
|
-
|
|
1773
|
+
_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) {
|
|
1774
|
+
(__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] || []).forEach((listener) => {
|
|
1775
|
+
try {
|
|
1776
|
+
return listener(...args);
|
|
1777
|
+
}
|
|
1778
|
+
catch (error) {
|
|
1779
|
+
log$1.error(error);
|
|
1780
|
+
}
|
|
1781
|
+
});
|
|
1782
|
+
};
|
|
1605
1783
|
|
|
1606
1784
|
class IframeController {
|
|
1607
1785
|
constructor(iframeUrl, iframeId, state) {
|
|
@@ -1666,9 +1844,8 @@ IframeController.defaultState = {
|
|
|
1666
1844
|
isVisible: false,
|
|
1667
1845
|
};
|
|
1668
1846
|
|
|
1669
|
-
var _AirService_instances, _AirService_loginResult, _AirService_buildEnv, _AirService_enableLogging, _AirService_partnerId, _AirService_authIframeController, _AirService_isAuthInitialized, _AirService_airAuthListener, _AirService_walletIframeController, _AirService_walletInitialization,
|
|
1847
|
+
var _AirService_instances, _AirService_loginResult, _AirService_buildEnv, _AirService_enableLogging, _AirService_partnerId, _AirService_authIframeController, _AirService_isAuthInitialized, _AirService_airAuthListener, _AirService_walletIframeController, _AirService_walletInitialization, _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;
|
|
1670
1848
|
class AirService {
|
|
1671
|
-
// #walletRehydrationState: AirRehydrationResult;
|
|
1672
1849
|
constructor({ partnerId }) {
|
|
1673
1850
|
_AirService_instances.add(this);
|
|
1674
1851
|
_AirService_loginResult.set(this, undefined);
|
|
@@ -1681,9 +1858,14 @@ class AirService {
|
|
|
1681
1858
|
_AirService_airAuthListener.set(this, []);
|
|
1682
1859
|
_AirService_walletIframeController.set(this, undefined);
|
|
1683
1860
|
_AirService_walletInitialization.set(this, undefined);
|
|
1684
|
-
|
|
1861
|
+
_AirService_walletLoggedInResult.set(this, undefined);
|
|
1685
1862
|
_AirService_airWalletProvider.set(this, undefined);
|
|
1686
1863
|
__classPrivateFieldSet(this, _AirService_partnerId, partnerId, "f");
|
|
1864
|
+
__classPrivateFieldSet(this, _AirService_airWalletProvider, new AirWalletProvider({
|
|
1865
|
+
isLoggedIn: () => this.isLoggedIn,
|
|
1866
|
+
ensureWallet: __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).bind(this),
|
|
1867
|
+
getWalletIframeController: () => __classPrivateFieldGet(this, _AirService_walletIframeController, "f"),
|
|
1868
|
+
}), "f");
|
|
1687
1869
|
// this.#modalZIndex = modalZIndex ?? 99999;
|
|
1688
1870
|
}
|
|
1689
1871
|
get buildEnv() {
|
|
@@ -1696,7 +1878,15 @@ class AirService {
|
|
|
1696
1878
|
return !!__classPrivateFieldGet(this, _AirService_loginResult, "f");
|
|
1697
1879
|
}
|
|
1698
1880
|
get isWalletInitialized() {
|
|
1699
|
-
return __classPrivateFieldGet(this,
|
|
1881
|
+
return !!__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f");
|
|
1882
|
+
}
|
|
1883
|
+
get provider() {
|
|
1884
|
+
const provider = __classPrivateFieldGet(this, _AirService_airWalletProvider, "f");
|
|
1885
|
+
return {
|
|
1886
|
+
request: provider.request.bind(provider),
|
|
1887
|
+
on: provider.on.bind(provider),
|
|
1888
|
+
removeListener: provider.removeListener.bind(provider),
|
|
1889
|
+
};
|
|
1700
1890
|
}
|
|
1701
1891
|
async init({ buildEnv = BUILD_ENV.PRODUCTION, enableLogging = false, skipRehydration = false, }) {
|
|
1702
1892
|
if (!__classPrivateFieldGet(this, _AirService_partnerId, "f"))
|
|
@@ -1724,7 +1914,7 @@ class AirService {
|
|
|
1724
1914
|
}
|
|
1725
1915
|
case AirAuthMessageTypes.SETUP_WALLET_REQUEST: {
|
|
1726
1916
|
try {
|
|
1727
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
1917
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, { skipWalletLogin: true });
|
|
1728
1918
|
__classPrivateFieldGet(this, _AirService_authIframeController, "f").postMessage({
|
|
1729
1919
|
type: AirAuthMessageTypes.SETUP_WALLET_RESPONSE,
|
|
1730
1920
|
payload: {
|
|
@@ -1759,6 +1949,7 @@ class AirService {
|
|
|
1759
1949
|
const { payload } = await AirMessageService$1.sendAuthInitializationRequest(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, {
|
|
1760
1950
|
partnerId: __classPrivateFieldGet(this, _AirService_partnerId, "f"),
|
|
1761
1951
|
skipRehydration,
|
|
1952
|
+
partnerDAppUrl: window.location.href,
|
|
1762
1953
|
});
|
|
1763
1954
|
if (payload.success === true) {
|
|
1764
1955
|
resolve(payload);
|
|
@@ -1786,11 +1977,6 @@ class AirService {
|
|
|
1786
1977
|
}
|
|
1787
1978
|
return null;
|
|
1788
1979
|
}
|
|
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
1980
|
async login(options) {
|
|
1795
1981
|
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
1796
1982
|
throw new Error("Service is not initialized");
|
|
@@ -1895,25 +2081,18 @@ class AirService {
|
|
|
1895
2081
|
throw AirServiceError.from(error);
|
|
1896
2082
|
}
|
|
1897
2083
|
}
|
|
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");
|
|
2084
|
+
getProvider() {
|
|
2085
|
+
return this.provider;
|
|
1914
2086
|
}
|
|
1915
2087
|
async preloadWallet() {
|
|
1916
|
-
|
|
2088
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, { skipWalletLogin: true });
|
|
2089
|
+
}
|
|
2090
|
+
async setupOrUpdateMfa() {
|
|
2091
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, { skipWalletLogin: true });
|
|
2092
|
+
const result = await AirMessageService$1.sendSetupMfaRequest(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
|
|
2093
|
+
if (result.payload.success === false) {
|
|
2094
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2095
|
+
}
|
|
1917
2096
|
}
|
|
1918
2097
|
async claimAirId(options) {
|
|
1919
2098
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
@@ -1938,9 +2117,39 @@ class AirService {
|
|
|
1938
2117
|
id: info.payload.user.id,
|
|
1939
2118
|
abstractAccountAddress: info.payload.user.abstractAccountAddress,
|
|
1940
2119
|
email: info.payload.user.email,
|
|
2120
|
+
isMFASetup: info.payload.user.isMFASetup,
|
|
1941
2121
|
},
|
|
1942
2122
|
};
|
|
1943
2123
|
}
|
|
2124
|
+
async goToPartner(partnerUrl) {
|
|
2125
|
+
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2126
|
+
throw new Error("Service is not initialized");
|
|
2127
|
+
if (!this.isLoggedIn)
|
|
2128
|
+
throw new Error("No active session to generate token");
|
|
2129
|
+
const result = await AirMessageService$1.sendCrossPartnerTokenRequest(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, partnerUrl);
|
|
2130
|
+
if (result.payload.success === false) {
|
|
2131
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2132
|
+
}
|
|
2133
|
+
return {
|
|
2134
|
+
urlWithToken: result.payload.urlWithToken,
|
|
2135
|
+
};
|
|
2136
|
+
}
|
|
2137
|
+
async logout() {
|
|
2138
|
+
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2139
|
+
throw new Error("Service is not initialized");
|
|
2140
|
+
if (!this.isLoggedIn)
|
|
2141
|
+
throw new Error("No active session to logout");
|
|
2142
|
+
// Clear up wallet
|
|
2143
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
2144
|
+
await AirMessageService$1.logoutAuth(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement);
|
|
2145
|
+
__classPrivateFieldSet(this, _AirService_loginResult, undefined, "f");
|
|
2146
|
+
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerAirAuthLoggedOut).call(this);
|
|
2147
|
+
}
|
|
2148
|
+
async cleanUp() {
|
|
2149
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
2150
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpAuth).call(this);
|
|
2151
|
+
this.clearEventListeners();
|
|
2152
|
+
}
|
|
1944
2153
|
on(listener) {
|
|
1945
2154
|
if (__classPrivateFieldGet(this, _AirService_airAuthListener, "f").indexOf(listener) < 0)
|
|
1946
2155
|
__classPrivateFieldGet(this, _AirService_airAuthListener, "f").push(listener);
|
|
@@ -1952,35 +2161,37 @@ class AirService {
|
|
|
1952
2161
|
clearEventListeners() {
|
|
1953
2162
|
__classPrivateFieldSet(this, _AirService_airAuthListener, [], "f");
|
|
1954
2163
|
}
|
|
1955
|
-
// This is for internal use only
|
|
1956
|
-
// @ts-expect-error for unused function
|
|
1957
|
-
async _showWalletWidget() {
|
|
1958
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
1959
|
-
// return (this.#realmEmbed as any)._showWalletWidget();
|
|
1960
|
-
log.info("_showWalletWidget");
|
|
1961
|
-
return null;
|
|
1962
|
-
}
|
|
1963
2164
|
}
|
|
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(),
|
|
2165
|
+
_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_walletLoggedInResult = new WeakMap(), _AirService_airWalletProvider = new WeakMap(), _AirService_instances = new WeakSet(), _AirService_ensureWallet = async function _AirService_ensureWallet(option) {
|
|
1965
2166
|
if (!this.isInitialized)
|
|
1966
2167
|
throw new Error("Service not initialized");
|
|
1967
|
-
if (!
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
2168
|
+
if (!this.isLoggedIn && !option?.skipWalletLogin)
|
|
2169
|
+
throw new Error("User not logged in");
|
|
2170
|
+
if (!__classPrivateFieldGet(this, _AirService_walletInitialization, "f"))
|
|
2171
|
+
__classPrivateFieldSet(this, _AirService_walletInitialization, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_initializeWallet).call(this, option), "f");
|
|
2172
|
+
if (__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"))
|
|
2173
|
+
return __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f");
|
|
2174
|
+
try {
|
|
2175
|
+
const result = await __classPrivateFieldGet(this, _AirService_walletInitialization, "f");
|
|
2176
|
+
if (option?.skipWalletLogin || result.isWalletLoggedIn) {
|
|
2177
|
+
return __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, result);
|
|
1976
2178
|
}
|
|
1977
2179
|
}
|
|
1978
|
-
|
|
1979
|
-
|
|
2180
|
+
catch (error) {
|
|
2181
|
+
__classPrivateFieldSet(this, _AirService_walletInitialization, null, "f");
|
|
2182
|
+
log.error("Error initializing wallet", error);
|
|
2183
|
+
throw error;
|
|
2184
|
+
}
|
|
2185
|
+
if (__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"))
|
|
2186
|
+
return __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f");
|
|
2187
|
+
const walletLoginResult = await AirMessageService$1.sendWalletLoginRequest(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
|
|
2188
|
+
if (walletLoginResult.payload.success !== true) {
|
|
2189
|
+
throw new AirServiceError(walletLoginResult.payload.errorName, walletLoginResult.payload.errorMessage);
|
|
1980
2190
|
}
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
2191
|
+
return __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, walletLoginResult.payload);
|
|
2192
|
+
}, _AirService_initializeWallet = async function _AirService_initializeWallet(option) {
|
|
2193
|
+
if (__classPrivateFieldGet(this, _AirService_walletInitialization, "f"))
|
|
2194
|
+
throw new Error("Already initializing");
|
|
1984
2195
|
const { walletUrl } = AIR_URLS[__classPrivateFieldGet(this, _AirService_buildEnv, "f")];
|
|
1985
2196
|
log.info(walletUrl, "url loaded");
|
|
1986
2197
|
const walletIframeOrigin = new URL(walletUrl).origin;
|
|
@@ -1996,6 +2207,13 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
1996
2207
|
walletIframeController.updateIframeState();
|
|
1997
2208
|
break;
|
|
1998
2209
|
}
|
|
2210
|
+
case AirMessageTypes.WALLET_LOGIN_RESPONSE: {
|
|
2211
|
+
if (msg.payload.success === true && !__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f")) {
|
|
2212
|
+
__classPrivateFieldSet(this, _AirService_walletLoggedInResult, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, msg.payload), "f");
|
|
2213
|
+
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerWalletInitialized).call(this, __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"));
|
|
2214
|
+
}
|
|
2215
|
+
break;
|
|
2216
|
+
}
|
|
1999
2217
|
}
|
|
2000
2218
|
});
|
|
2001
2219
|
await new Promise((resolve, reject) => {
|
|
@@ -2018,18 +2236,18 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
2018
2236
|
};
|
|
2019
2237
|
window.addEventListener("message", handleAuthMessage);
|
|
2020
2238
|
});
|
|
2239
|
+
__classPrivateFieldGet(this, _AirService_airWalletProvider, "f").startEventMessageListening();
|
|
2021
2240
|
const walletInitPromise = AirMessageService$1.onWalletInitialized();
|
|
2022
|
-
AirMessageService$1.setupIframeCommunication(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, __classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
|
|
2241
|
+
AirMessageService$1.setupIframeCommunication(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, __classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement, option?.skipWalletLogin ?? false);
|
|
2023
2242
|
const walletInitResult = await walletInitPromise;
|
|
2024
2243
|
if (walletInitResult.payload.success !== true) {
|
|
2025
2244
|
throw new AirServiceError(walletInitResult.payload.errorName, walletInitResult.payload.errorMessage);
|
|
2026
2245
|
}
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
}
|
|
2031
|
-
|
|
2032
|
-
return result;
|
|
2246
|
+
if (!__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f") && walletInitResult.payload.isWalletLoggedIn) {
|
|
2247
|
+
__classPrivateFieldSet(this, _AirService_walletLoggedInResult, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, walletInitResult.payload), "f");
|
|
2248
|
+
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerWalletInitialized).call(this, __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"));
|
|
2249
|
+
}
|
|
2250
|
+
return walletInitResult.payload;
|
|
2033
2251
|
}
|
|
2034
2252
|
catch (error) {
|
|
2035
2253
|
log.error("Error initializing wallet", error);
|
|
@@ -2060,6 +2278,18 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
2060
2278
|
id: payload.id,
|
|
2061
2279
|
abstractAccountAddress: payload.abstractAccountAddress,
|
|
2062
2280
|
token: payload.partnerAccessToken,
|
|
2281
|
+
isMFASetup: payload.isMFASetup,
|
|
2282
|
+
};
|
|
2283
|
+
}, _AirService_createWalletInitializedResult = function _AirService_createWalletInitializedResult(payload) {
|
|
2284
|
+
if ("isWalletLoggedIn" in payload && !payload.isWalletLoggedIn) {
|
|
2285
|
+
return {
|
|
2286
|
+
abstractAccountAddress: null,
|
|
2287
|
+
isMFASetup: __classPrivateFieldGet(this, _AirService_loginResult, "f")?.isMFASetup ?? false,
|
|
2288
|
+
};
|
|
2289
|
+
}
|
|
2290
|
+
return {
|
|
2291
|
+
abstractAccountAddress: payload.addresses.aa,
|
|
2292
|
+
isMFASetup: payload.isMFASetup,
|
|
2063
2293
|
};
|
|
2064
2294
|
}, _AirService_cleanUpAuth = async function _AirService_cleanUpAuth() {
|
|
2065
2295
|
// Logout auth session
|
|
@@ -2083,10 +2313,14 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
2083
2313
|
__classPrivateFieldGet(this, _AirService_walletIframeController, "f").destroy();
|
|
2084
2314
|
__classPrivateFieldSet(this, _AirService_walletIframeController, undefined, "f");
|
|
2085
2315
|
}
|
|
2316
|
+
const authIframeElement = __classPrivateFieldGet(this, _AirService_authIframeController, "f")?.iframeElement;
|
|
2317
|
+
if (isElement(authIframeElement) && window.document.body.contains(authIframeElement)) {
|
|
2318
|
+
AirMessageService$1.sendResetAuthServiceWalletCommunication(authIframeElement);
|
|
2319
|
+
}
|
|
2086
2320
|
// Close the message service
|
|
2087
2321
|
AirMessageService$1.closeAirObservables();
|
|
2088
|
-
__classPrivateFieldSet(this,
|
|
2089
|
-
__classPrivateFieldSet(this,
|
|
2322
|
+
__classPrivateFieldSet(this, _AirService_walletLoggedInResult, undefined, "f");
|
|
2323
|
+
__classPrivateFieldSet(this, _AirService_walletInitialization, undefined, "f");
|
|
2090
2324
|
};
|
|
2091
2325
|
|
|
2092
|
-
export { AirService, AirServiceError,
|
|
2326
|
+
export { AirService, AirServiceError, BUILD_ENV, ChainDisconnectedError, InternalRpcError, InvalidParamsRpcError, InvalidRequestRpcError, MethodNotFoundRpcError, ProviderDisconnectedError, SwitchChainError, UnauthorizedProviderError, UnsupportedProviderMethodError, UserRejectedRequestError, ensureProviderRpcError };
|