@mocanetwork/airkit 1.2.0-beta.2 → 1.2.0-beta.4
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 +1794 -1419
- package/dist/airkit.esm.js +1794 -1420
- package/dist/airkit.umd.js +1794 -1419
- package/dist/types/airWalletProvider.d.ts +2 -4
- package/dist/types/authMessageService.d.ts +17 -0
- package/dist/types/common/air/error/codes.d.ts +16 -1
- package/dist/types/common/{realm → air}/messaging/auth.d.ts +29 -38
- package/dist/types/common/air/messaging/messageServiceBase.d.ts +34 -0
- package/dist/types/common/{realm → air}/messaging/provider.d.ts +1 -1
- package/dist/types/common/air/messaging/types.d.ts +16 -0
- package/dist/types/common/air/messaging/wallet.d.ts +140 -0
- package/dist/types/common/logging.d.ts +3 -0
- package/dist/types/common/types.d.ts +1 -0
- package/dist/types/common/utils.d.ts +6 -0
- package/dist/types/{windowController.d.ts → common/window/windowController.d.ts} +8 -3
- package/dist/types/error.d.ts +3 -1
- package/dist/types/interfaces.d.ts +0 -2
- package/dist/types/providerMessageService.d.ts +8 -0
- package/dist/types/utils.d.ts +2 -2
- package/dist/types/walletMessageService.d.ts +35 -0
- package/dist/types/windowService.d.ts +6 -3
- package/package.json +1 -1
- package/dist/types/common/realm/messaging/types.d.ts +0 -144
- package/dist/types/loglevel.d.ts +0 -3
- package/dist/types/messageService.d.ts +0 -67
package/dist/airkit.umd.js
CHANGED
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
RESET_WALLET_COMMUNICATION: "air_auth_reset_wallet_communication"
|
|
132
132
|
};
|
|
133
133
|
|
|
134
|
-
const
|
|
134
|
+
const AirWalletMessageTypes = {
|
|
135
135
|
SERVICE_STARTED: "air_service_started",
|
|
136
136
|
INITIALIZATION_REQUEST: "air_initialization_request",
|
|
137
137
|
INITIALIZATION_RESPONSE: "air_initialization_response",
|
|
@@ -139,8 +139,8 @@
|
|
|
139
139
|
WALLET_INITIALIZED: "air_wallet_initialized",
|
|
140
140
|
WALLET_LOGIN_REQUEST: "air_wallet_login_request",
|
|
141
141
|
WALLET_LOGIN_RESPONSE: "air_wallet_login_response",
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
SETUP_OR_UPDATE_MFA_REQUEST: "air_setup_mfa_request",
|
|
143
|
+
SETUP_OR_UPDATE_MFA_RESPONSE: "air_setup_mfa_response",
|
|
144
144
|
CLAIM_ID_REQUEST: "air_claim_id_request",
|
|
145
145
|
CLAIM_ID_RESPONSE: "air_claim_id_response",
|
|
146
146
|
DEPLOY_SMART_ACCOUNT_REQUEST: "air_deploy_smart_account_request",
|
|
@@ -156,6 +156,8 @@
|
|
|
156
156
|
WALLET_IFRAME_VISIBILITY_REQUEST: "air_wallet_iframe_visibility_request",
|
|
157
157
|
OPEN_WINDOW_REQUEST: "air_open_window_request",
|
|
158
158
|
OPEN_WINDOW_RESPONSE: "air_open_window_response",
|
|
159
|
+
OPEN_WINDOW_RETRY_REQUEST: "air_open_window_retry_request",
|
|
160
|
+
OPEN_WINDOW_RETRY_RESPONSE: "air_open_window_retry_response",
|
|
159
161
|
WINDOW_CLOSED: "air_window_closed",
|
|
160
162
|
IS_SMART_ACCOUNT_DEPLOYED_REQUEST: "air_is_smart_account_deployed_request",
|
|
161
163
|
IS_SMART_ACCOUNT_DEPLOYED_RESPONSE: "air_is_smart_account_deployed_response",
|
|
@@ -195,6 +197,50 @@
|
|
|
195
197
|
return new Error(`This value was not thrown as type Error: ${stringified}`);
|
|
196
198
|
}
|
|
197
199
|
|
|
200
|
+
const BUILD_ENV = {
|
|
201
|
+
PRODUCTION: "production",
|
|
202
|
+
UAT: "uat",
|
|
203
|
+
STAGING: "staging",
|
|
204
|
+
DEVELOPMENT: "development",
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
const AIR_URLS = {
|
|
208
|
+
[BUILD_ENV.DEVELOPMENT]: {
|
|
209
|
+
authUrl: "http://localhost:8100",
|
|
210
|
+
walletUrl: "http://localhost:8200",
|
|
211
|
+
},
|
|
212
|
+
[BUILD_ENV.UAT]: {
|
|
213
|
+
authUrl: "https://auth.uat.air3.com",
|
|
214
|
+
walletUrl: "https://account.uat.air3.com",
|
|
215
|
+
},
|
|
216
|
+
[BUILD_ENV.STAGING]: {
|
|
217
|
+
authUrl: "https://auth.staging.air3.com",
|
|
218
|
+
walletUrl: "https://account.staging.air3.com",
|
|
219
|
+
},
|
|
220
|
+
[BUILD_ENV.PRODUCTION]: {
|
|
221
|
+
authUrl: "https://auth.air3.com",
|
|
222
|
+
walletUrl: "https://account.air3.com",
|
|
223
|
+
},
|
|
224
|
+
};
|
|
225
|
+
const isElement = (element) => element instanceof Element || element instanceof Document;
|
|
226
|
+
const randomId = () => Math.random().toString(36).slice(2);
|
|
227
|
+
const extractErrorHash = (message) => {
|
|
228
|
+
if (!message)
|
|
229
|
+
return "";
|
|
230
|
+
// Format: "reason: 0x..."
|
|
231
|
+
if (message.includes("reason:")) {
|
|
232
|
+
return message.split("reason:")[1].trim();
|
|
233
|
+
}
|
|
234
|
+
// Format: "UserOperation reverted during simulation with reason: 0x..."
|
|
235
|
+
if (message.includes("with reason:")) {
|
|
236
|
+
const match = message.match(/with reason: (0x[a-fA-F0-9]+)/);
|
|
237
|
+
return match ? match[1].trim() : "";
|
|
238
|
+
}
|
|
239
|
+
// Look for any 0x pattern that could be a hash
|
|
240
|
+
const hexMatch = message.match(/(0x[a-fA-F0-9]{8,})/);
|
|
241
|
+
return hexMatch ? hexMatch[1].trim() : "";
|
|
242
|
+
};
|
|
243
|
+
|
|
198
244
|
class AirServiceError extends BaseError {
|
|
199
245
|
static from(error) {
|
|
200
246
|
if (error instanceof AirServiceError) {
|
|
@@ -212,6 +258,7 @@
|
|
|
212
258
|
class ProviderRpcError extends Error {
|
|
213
259
|
constructor(message) {
|
|
214
260
|
super(message);
|
|
261
|
+
this.metaMessages = [];
|
|
215
262
|
}
|
|
216
263
|
}
|
|
217
264
|
class UserRejectedRequestError extends ProviderRpcError {
|
|
@@ -257,10 +304,14 @@
|
|
|
257
304
|
}
|
|
258
305
|
}
|
|
259
306
|
class TransactionRejectedRpcError extends ProviderRpcError {
|
|
260
|
-
constructor() {
|
|
261
|
-
|
|
307
|
+
constructor(message) {
|
|
308
|
+
// Remove the "Version: viem@x.x.x" suffix if present
|
|
309
|
+
const cleanMessage = message.replace(/\nVersion:.*$/, '');
|
|
310
|
+
super(cleanMessage);
|
|
262
311
|
this.code = -32003;
|
|
263
312
|
this.name = "TransactionRejectedRpcError";
|
|
313
|
+
// Parse the error hash from the message
|
|
314
|
+
this.metaMessages.push(extractErrorHash(cleanMessage));
|
|
264
315
|
}
|
|
265
316
|
}
|
|
266
317
|
class InvalidRequestRpcError extends ProviderRpcError {
|
|
@@ -328,149 +379,480 @@
|
|
|
328
379
|
return new InternalRpcError(`Invalid value for ProviderRpcError: ${stringified}`);
|
|
329
380
|
}
|
|
330
381
|
|
|
331
|
-
function
|
|
332
|
-
|
|
382
|
+
function getDefaultExportFromCjs (x) {
|
|
383
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
333
384
|
}
|
|
334
385
|
|
|
335
|
-
|
|
336
|
-
var _super = function (instance) {
|
|
337
|
-
Error.call(instance);
|
|
338
|
-
instance.stack = new Error().stack;
|
|
339
|
-
};
|
|
340
|
-
var ctorFunc = createImpl(_super);
|
|
341
|
-
ctorFunc.prototype = Object.create(Error.prototype);
|
|
342
|
-
ctorFunc.prototype.constructor = ctorFunc;
|
|
343
|
-
return ctorFunc;
|
|
344
|
-
}
|
|
386
|
+
var loglevel$1 = {exports: {}};
|
|
345
387
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
388
|
+
/*
|
|
389
|
+
* loglevel - https://github.com/pimterry/loglevel
|
|
390
|
+
*
|
|
391
|
+
* Copyright (c) 2013 Tim Perry
|
|
392
|
+
* Licensed under the MIT license.
|
|
393
|
+
*/
|
|
394
|
+
var loglevel = loglevel$1.exports;
|
|
395
|
+
var hasRequiredLoglevel;
|
|
396
|
+
function requireLoglevel() {
|
|
397
|
+
if (hasRequiredLoglevel) return loglevel$1.exports;
|
|
398
|
+
hasRequiredLoglevel = 1;
|
|
399
|
+
(function (module) {
|
|
400
|
+
(function (root, definition) {
|
|
356
401
|
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
402
|
+
if (module.exports) {
|
|
403
|
+
module.exports = definition();
|
|
404
|
+
} else {
|
|
405
|
+
root.log = definition();
|
|
406
|
+
}
|
|
407
|
+
})(loglevel, function () {
|
|
363
408
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
this._parentage = null;
|
|
379
|
-
if (Array.isArray(_parentage)) {
|
|
409
|
+
// Slightly dubious tricks to cut down minimized file size
|
|
410
|
+
var noop = function () {};
|
|
411
|
+
var undefinedType = "undefined";
|
|
412
|
+
var isIE = typeof window !== undefinedType && typeof window.navigator !== undefinedType && /Trident\/|MSIE /.test(window.navigator.userAgent);
|
|
413
|
+
var logMethods = ["trace", "debug", "info", "warn", "error"];
|
|
414
|
+
var _loggersByName = {};
|
|
415
|
+
var defaultLogger = null;
|
|
416
|
+
|
|
417
|
+
// Cross-browser bind equivalent that works at least back to IE6
|
|
418
|
+
function bindMethod(obj, methodName) {
|
|
419
|
+
var method = obj[methodName];
|
|
420
|
+
if (typeof method.bind === 'function') {
|
|
421
|
+
return method.bind(obj);
|
|
422
|
+
} else {
|
|
380
423
|
try {
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
e_1 = {
|
|
387
|
-
error: e_1_1
|
|
424
|
+
return Function.prototype.bind.call(method, obj);
|
|
425
|
+
} catch (e) {
|
|
426
|
+
// Missing bind shim or IE8 + Modernizr, fallback to wrapping
|
|
427
|
+
return function () {
|
|
428
|
+
return Function.prototype.apply.apply(method, [obj, arguments]);
|
|
388
429
|
};
|
|
389
|
-
} finally {
|
|
390
|
-
try {
|
|
391
|
-
if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);
|
|
392
|
-
} finally {
|
|
393
|
-
if (e_1) throw e_1.error;
|
|
394
|
-
}
|
|
395
430
|
}
|
|
396
|
-
} else {
|
|
397
|
-
_parentage.remove(this);
|
|
398
431
|
}
|
|
399
432
|
}
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
433
|
+
|
|
434
|
+
// Trace() doesn't print the message in IE, so for that case we need to wrap it
|
|
435
|
+
function traceForIE() {
|
|
436
|
+
if (console.log) {
|
|
437
|
+
if (console.log.apply) {
|
|
438
|
+
console.log.apply(console, arguments);
|
|
439
|
+
} else {
|
|
440
|
+
// In old IE, native console methods themselves don't have apply().
|
|
441
|
+
Function.prototype.apply.apply(console.log, [console, arguments]);
|
|
442
|
+
}
|
|
406
443
|
}
|
|
444
|
+
if (console.trace) console.trace();
|
|
407
445
|
}
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
} catch (e_2_1) {
|
|
426
|
-
e_2 = {
|
|
427
|
-
error: e_2_1
|
|
428
|
-
};
|
|
429
|
-
} finally {
|
|
430
|
-
try {
|
|
431
|
-
if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);
|
|
432
|
-
} finally {
|
|
433
|
-
if (e_2) throw e_2.error;
|
|
434
|
-
}
|
|
446
|
+
|
|
447
|
+
// Build the best logging method possible for this env
|
|
448
|
+
// Wherever possible we want to bind, not wrap, to preserve stack traces
|
|
449
|
+
function realMethod(methodName) {
|
|
450
|
+
if (methodName === 'debug') {
|
|
451
|
+
methodName = 'log';
|
|
452
|
+
}
|
|
453
|
+
if (typeof console === undefinedType) {
|
|
454
|
+
return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives
|
|
455
|
+
} else if (methodName === 'trace' && isIE) {
|
|
456
|
+
return traceForIE;
|
|
457
|
+
} else if (console[methodName] !== undefined) {
|
|
458
|
+
return bindMethod(console, methodName);
|
|
459
|
+
} else if (console.log !== undefined) {
|
|
460
|
+
return bindMethod(console, 'log');
|
|
461
|
+
} else {
|
|
462
|
+
return noop;
|
|
435
463
|
}
|
|
436
464
|
}
|
|
437
|
-
|
|
438
|
-
|
|
465
|
+
|
|
466
|
+
// These private functions always need `this` to be set properly
|
|
467
|
+
|
|
468
|
+
function replaceLoggingMethods() {
|
|
469
|
+
/*jshint validthis:true */
|
|
470
|
+
var level = this.getLevel();
|
|
471
|
+
|
|
472
|
+
// Replace the actual methods.
|
|
473
|
+
for (var i = 0; i < logMethods.length; i++) {
|
|
474
|
+
var methodName = logMethods[i];
|
|
475
|
+
this[methodName] = i < level ? noop : this.methodFactory(methodName, level, this.name);
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
// Define log.log as an alias for log.debug
|
|
479
|
+
this.log = this.debug;
|
|
480
|
+
|
|
481
|
+
// Return any important warnings.
|
|
482
|
+
if (typeof console === undefinedType && level < this.levels.SILENT) {
|
|
483
|
+
return "No console available for logging";
|
|
484
|
+
}
|
|
439
485
|
}
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
if (teardown instanceof Subscription) {
|
|
449
|
-
if (teardown.closed || teardown._hasParent(this)) {
|
|
450
|
-
return;
|
|
486
|
+
|
|
487
|
+
// In old IE versions, the console isn't present until you first open it.
|
|
488
|
+
// We build realMethod() replacements here that regenerate logging methods
|
|
489
|
+
function enableLoggingWhenConsoleArrives(methodName) {
|
|
490
|
+
return function () {
|
|
491
|
+
if (typeof console !== undefinedType) {
|
|
492
|
+
replaceLoggingMethods.call(this);
|
|
493
|
+
this[methodName].apply(this, arguments);
|
|
451
494
|
}
|
|
452
|
-
|
|
453
|
-
}
|
|
454
|
-
(this._finalizers = (_a = this._finalizers) !== null && _a !== undefined ? _a : []).push(teardown);
|
|
495
|
+
};
|
|
455
496
|
}
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
497
|
+
|
|
498
|
+
// By default, we use closely bound real methods wherever possible, and
|
|
499
|
+
// otherwise we wait for a console to appear, and then try again.
|
|
500
|
+
function defaultMethodFactory(methodName, _level, _loggerName) {
|
|
501
|
+
/*jshint validthis:true */
|
|
502
|
+
return realMethod(methodName) || enableLoggingWhenConsoleArrives.apply(this, arguments);
|
|
503
|
+
}
|
|
504
|
+
function Logger(name, factory) {
|
|
505
|
+
// Private instance variables.
|
|
506
|
+
var self = this;
|
|
507
|
+
/**
|
|
508
|
+
* The level inherited from a parent logger (or a global default). We
|
|
509
|
+
* cache this here rather than delegating to the parent so that it stays
|
|
510
|
+
* in sync with the actual logging methods that we have installed (the
|
|
511
|
+
* parent could change levels but we might not have rebuilt the loggers
|
|
512
|
+
* in this child yet).
|
|
513
|
+
* @type {number}
|
|
514
|
+
*/
|
|
515
|
+
var inheritedLevel;
|
|
516
|
+
/**
|
|
517
|
+
* The default level for this logger, if any. If set, this overrides
|
|
518
|
+
* `inheritedLevel`.
|
|
519
|
+
* @type {number|null}
|
|
520
|
+
*/
|
|
521
|
+
var defaultLevel;
|
|
522
|
+
/**
|
|
523
|
+
* A user-specific level for this logger. If set, this overrides
|
|
524
|
+
* `defaultLevel`.
|
|
525
|
+
* @type {number|null}
|
|
526
|
+
*/
|
|
527
|
+
var userLevel;
|
|
528
|
+
var storageKey = "loglevel";
|
|
529
|
+
if (typeof name === "string") {
|
|
530
|
+
storageKey += ":" + name;
|
|
531
|
+
} else if (typeof name === "symbol") {
|
|
532
|
+
storageKey = undefined;
|
|
533
|
+
}
|
|
534
|
+
function persistLevelIfPossible(levelNum) {
|
|
535
|
+
var levelName = (logMethods[levelNum] || 'silent').toUpperCase();
|
|
536
|
+
if (typeof window === undefinedType || !storageKey) return;
|
|
537
|
+
|
|
538
|
+
// Use localStorage if available
|
|
539
|
+
try {
|
|
540
|
+
window.localStorage[storageKey] = levelName;
|
|
541
|
+
return;
|
|
542
|
+
} catch (ignore) {}
|
|
543
|
+
|
|
544
|
+
// Use session cookie as fallback
|
|
545
|
+
try {
|
|
546
|
+
window.document.cookie = encodeURIComponent(storageKey) + "=" + levelName + ";";
|
|
547
|
+
} catch (ignore) {}
|
|
548
|
+
}
|
|
549
|
+
function getPersistedLevel() {
|
|
550
|
+
var storedLevel;
|
|
551
|
+
if (typeof window === undefinedType || !storageKey) return;
|
|
552
|
+
try {
|
|
553
|
+
storedLevel = window.localStorage[storageKey];
|
|
554
|
+
} catch (ignore) {}
|
|
555
|
+
|
|
556
|
+
// Fallback to cookies if local storage gives us nothing
|
|
557
|
+
if (typeof storedLevel === undefinedType) {
|
|
558
|
+
try {
|
|
559
|
+
var cookie = window.document.cookie;
|
|
560
|
+
var cookieName = encodeURIComponent(storageKey);
|
|
561
|
+
var location = cookie.indexOf(cookieName + "=");
|
|
562
|
+
if (location !== -1) {
|
|
563
|
+
storedLevel = /^([^;]+)/.exec(cookie.slice(location + cookieName.length + 1))[1];
|
|
564
|
+
}
|
|
565
|
+
} catch (ignore) {}
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
// If the stored level is not valid, treat it as if nothing was stored.
|
|
569
|
+
if (self.levels[storedLevel] === undefined) {
|
|
570
|
+
storedLevel = undefined;
|
|
571
|
+
}
|
|
572
|
+
return storedLevel;
|
|
573
|
+
}
|
|
574
|
+
function clearPersistedLevel() {
|
|
575
|
+
if (typeof window === undefinedType || !storageKey) return;
|
|
576
|
+
|
|
577
|
+
// Use localStorage if available
|
|
578
|
+
try {
|
|
579
|
+
window.localStorage.removeItem(storageKey);
|
|
580
|
+
} catch (ignore) {}
|
|
581
|
+
|
|
582
|
+
// Use session cookie as fallback
|
|
583
|
+
try {
|
|
584
|
+
window.document.cookie = encodeURIComponent(storageKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC";
|
|
585
|
+
} catch (ignore) {}
|
|
586
|
+
}
|
|
587
|
+
function normalizeLevel(input) {
|
|
588
|
+
var level = input;
|
|
589
|
+
if (typeof level === "string" && self.levels[level.toUpperCase()] !== undefined) {
|
|
590
|
+
level = self.levels[level.toUpperCase()];
|
|
591
|
+
}
|
|
592
|
+
if (typeof level === "number" && level >= 0 && level <= self.levels.SILENT) {
|
|
593
|
+
return level;
|
|
594
|
+
} else {
|
|
595
|
+
throw new TypeError("log.setLevel() called with invalid level: " + input);
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
/*
|
|
600
|
+
*
|
|
601
|
+
* Public logger API - see https://github.com/pimterry/loglevel for details
|
|
602
|
+
*
|
|
603
|
+
*/
|
|
604
|
+
|
|
605
|
+
self.name = name;
|
|
606
|
+
self.levels = {
|
|
607
|
+
"TRACE": 0,
|
|
608
|
+
"DEBUG": 1,
|
|
609
|
+
"INFO": 2,
|
|
610
|
+
"WARN": 3,
|
|
611
|
+
"ERROR": 4,
|
|
612
|
+
"SILENT": 5
|
|
613
|
+
};
|
|
614
|
+
self.methodFactory = factory || defaultMethodFactory;
|
|
615
|
+
self.getLevel = function () {
|
|
616
|
+
if (userLevel != null) {
|
|
617
|
+
return userLevel;
|
|
618
|
+
} else if (defaultLevel != null) {
|
|
619
|
+
return defaultLevel;
|
|
620
|
+
} else {
|
|
621
|
+
return inheritedLevel;
|
|
622
|
+
}
|
|
623
|
+
};
|
|
624
|
+
self.setLevel = function (level, persist) {
|
|
625
|
+
userLevel = normalizeLevel(level);
|
|
626
|
+
if (persist !== false) {
|
|
627
|
+
// defaults to true
|
|
628
|
+
persistLevelIfPossible(userLevel);
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
// NOTE: in v2, this should call rebuild(), which updates children.
|
|
632
|
+
return replaceLoggingMethods.call(self);
|
|
633
|
+
};
|
|
634
|
+
self.setDefaultLevel = function (level) {
|
|
635
|
+
defaultLevel = normalizeLevel(level);
|
|
636
|
+
if (!getPersistedLevel()) {
|
|
637
|
+
self.setLevel(level, false);
|
|
638
|
+
}
|
|
639
|
+
};
|
|
640
|
+
self.resetLevel = function () {
|
|
641
|
+
userLevel = null;
|
|
642
|
+
clearPersistedLevel();
|
|
643
|
+
replaceLoggingMethods.call(self);
|
|
644
|
+
};
|
|
645
|
+
self.enableAll = function (persist) {
|
|
646
|
+
self.setLevel(self.levels.TRACE, persist);
|
|
647
|
+
};
|
|
648
|
+
self.disableAll = function (persist) {
|
|
649
|
+
self.setLevel(self.levels.SILENT, persist);
|
|
650
|
+
};
|
|
651
|
+
self.rebuild = function () {
|
|
652
|
+
if (defaultLogger !== self) {
|
|
653
|
+
inheritedLevel = normalizeLevel(defaultLogger.getLevel());
|
|
654
|
+
}
|
|
655
|
+
replaceLoggingMethods.call(self);
|
|
656
|
+
if (defaultLogger === self) {
|
|
657
|
+
for (var childName in _loggersByName) {
|
|
658
|
+
_loggersByName[childName].rebuild();
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
};
|
|
662
|
+
|
|
663
|
+
// Initialize all the internal levels.
|
|
664
|
+
inheritedLevel = normalizeLevel(defaultLogger ? defaultLogger.getLevel() : "WARN");
|
|
665
|
+
var initialLevel = getPersistedLevel();
|
|
666
|
+
if (initialLevel != null) {
|
|
667
|
+
userLevel = normalizeLevel(initialLevel);
|
|
668
|
+
}
|
|
669
|
+
replaceLoggingMethods.call(self);
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
/*
|
|
673
|
+
*
|
|
674
|
+
* Top-level API
|
|
675
|
+
*
|
|
676
|
+
*/
|
|
677
|
+
|
|
678
|
+
defaultLogger = new Logger();
|
|
679
|
+
defaultLogger.getLogger = function getLogger(name) {
|
|
680
|
+
if (typeof name !== "symbol" && typeof name !== "string" || name === "") {
|
|
681
|
+
throw new TypeError("You must supply a name when creating a logger.");
|
|
682
|
+
}
|
|
683
|
+
var logger = _loggersByName[name];
|
|
684
|
+
if (!logger) {
|
|
685
|
+
logger = _loggersByName[name] = new Logger(name, defaultLogger.methodFactory);
|
|
686
|
+
}
|
|
687
|
+
return logger;
|
|
688
|
+
};
|
|
689
|
+
|
|
690
|
+
// Grab the current global log variable in case of overwrite
|
|
691
|
+
var _log = typeof window !== undefinedType ? window.log : undefined;
|
|
692
|
+
defaultLogger.noConflict = function () {
|
|
693
|
+
if (typeof window !== undefinedType && window.log === defaultLogger) {
|
|
694
|
+
window.log = _log;
|
|
695
|
+
}
|
|
696
|
+
return defaultLogger;
|
|
697
|
+
};
|
|
698
|
+
defaultLogger.getLoggers = function getLoggers() {
|
|
699
|
+
return _loggersByName;
|
|
700
|
+
};
|
|
701
|
+
|
|
702
|
+
// ES6 default export, for compatibility
|
|
703
|
+
defaultLogger['default'] = defaultLogger;
|
|
704
|
+
return defaultLogger;
|
|
705
|
+
});
|
|
706
|
+
})(loglevel$1);
|
|
707
|
+
return loglevel$1.exports;
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
var loglevelExports = requireLoglevel();
|
|
711
|
+
var log = /*@__PURE__*/getDefaultExportFromCjs(loglevelExports);
|
|
712
|
+
|
|
713
|
+
function isFunction(value) {
|
|
714
|
+
return typeof value === 'function';
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
function createErrorClass(createImpl) {
|
|
718
|
+
var _super = function (instance) {
|
|
719
|
+
Error.call(instance);
|
|
720
|
+
instance.stack = new Error().stack;
|
|
721
|
+
};
|
|
722
|
+
var ctorFunc = createImpl(_super);
|
|
723
|
+
ctorFunc.prototype = Object.create(Error.prototype);
|
|
724
|
+
ctorFunc.prototype.constructor = ctorFunc;
|
|
725
|
+
return ctorFunc;
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
var UnsubscriptionError = createErrorClass(function (_super) {
|
|
729
|
+
return function UnsubscriptionErrorImpl(errors) {
|
|
730
|
+
_super(this);
|
|
731
|
+
this.message = errors ? errors.length + " errors occurred during unsubscription:\n" + errors.map(function (err, i) {
|
|
732
|
+
return i + 1 + ") " + err.toString();
|
|
733
|
+
}).join('\n ') : '';
|
|
734
|
+
this.name = 'UnsubscriptionError';
|
|
735
|
+
this.errors = errors;
|
|
736
|
+
};
|
|
737
|
+
});
|
|
738
|
+
|
|
739
|
+
function arrRemove(arr, item) {
|
|
740
|
+
if (arr) {
|
|
741
|
+
var index = arr.indexOf(item);
|
|
742
|
+
0 <= index && arr.splice(index, 1);
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
var Subscription = function () {
|
|
747
|
+
function Subscription(initialTeardown) {
|
|
748
|
+
this.initialTeardown = initialTeardown;
|
|
749
|
+
this.closed = false;
|
|
750
|
+
this._parentage = null;
|
|
751
|
+
this._finalizers = null;
|
|
752
|
+
}
|
|
753
|
+
Subscription.prototype.unsubscribe = function () {
|
|
754
|
+
var e_1, _a, e_2, _b;
|
|
755
|
+
var errors;
|
|
756
|
+
if (!this.closed) {
|
|
757
|
+
this.closed = true;
|
|
758
|
+
var _parentage = this._parentage;
|
|
759
|
+
if (_parentage) {
|
|
760
|
+
this._parentage = null;
|
|
761
|
+
if (Array.isArray(_parentage)) {
|
|
762
|
+
try {
|
|
763
|
+
for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {
|
|
764
|
+
var parent_1 = _parentage_1_1.value;
|
|
765
|
+
parent_1.remove(this);
|
|
766
|
+
}
|
|
767
|
+
} catch (e_1_1) {
|
|
768
|
+
e_1 = {
|
|
769
|
+
error: e_1_1
|
|
770
|
+
};
|
|
771
|
+
} finally {
|
|
772
|
+
try {
|
|
773
|
+
if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);
|
|
774
|
+
} finally {
|
|
775
|
+
if (e_1) throw e_1.error;
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
} else {
|
|
779
|
+
_parentage.remove(this);
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
var initialFinalizer = this.initialTeardown;
|
|
783
|
+
if (isFunction(initialFinalizer)) {
|
|
784
|
+
try {
|
|
785
|
+
initialFinalizer();
|
|
786
|
+
} catch (e) {
|
|
787
|
+
errors = e instanceof UnsubscriptionError ? e.errors : [e];
|
|
788
|
+
}
|
|
789
|
+
}
|
|
790
|
+
var _finalizers = this._finalizers;
|
|
791
|
+
if (_finalizers) {
|
|
792
|
+
this._finalizers = null;
|
|
793
|
+
try {
|
|
794
|
+
for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {
|
|
795
|
+
var finalizer = _finalizers_1_1.value;
|
|
796
|
+
try {
|
|
797
|
+
execFinalizer(finalizer);
|
|
798
|
+
} catch (err) {
|
|
799
|
+
errors = errors !== null && errors !== void 0 ? errors : [];
|
|
800
|
+
if (err instanceof UnsubscriptionError) {
|
|
801
|
+
errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));
|
|
802
|
+
} else {
|
|
803
|
+
errors.push(err);
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
} catch (e_2_1) {
|
|
808
|
+
e_2 = {
|
|
809
|
+
error: e_2_1
|
|
810
|
+
};
|
|
811
|
+
} finally {
|
|
812
|
+
try {
|
|
813
|
+
if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);
|
|
814
|
+
} finally {
|
|
815
|
+
if (e_2) throw e_2.error;
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
}
|
|
819
|
+
if (errors) {
|
|
820
|
+
throw new UnsubscriptionError(errors);
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
};
|
|
824
|
+
Subscription.prototype.add = function (teardown) {
|
|
825
|
+
var _a;
|
|
826
|
+
if (teardown && teardown !== this) {
|
|
827
|
+
if (this.closed) {
|
|
828
|
+
execFinalizer(teardown);
|
|
829
|
+
} else {
|
|
830
|
+
if (teardown instanceof Subscription) {
|
|
831
|
+
if (teardown.closed || teardown._hasParent(this)) {
|
|
832
|
+
return;
|
|
833
|
+
}
|
|
834
|
+
teardown._addParent(this);
|
|
835
|
+
}
|
|
836
|
+
(this._finalizers = (_a = this._finalizers) !== null && _a !== undefined ? _a : []).push(teardown);
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
};
|
|
840
|
+
Subscription.prototype._hasParent = function (parent) {
|
|
841
|
+
var _parentage = this._parentage;
|
|
842
|
+
return _parentage === parent || Array.isArray(_parentage) && _parentage.includes(parent);
|
|
843
|
+
};
|
|
844
|
+
Subscription.prototype._addParent = function (parent) {
|
|
845
|
+
var _parentage = this._parentage;
|
|
846
|
+
this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;
|
|
847
|
+
};
|
|
848
|
+
Subscription.prototype._removeParent = function (parent) {
|
|
849
|
+
var _parentage = this._parentage;
|
|
850
|
+
if (_parentage === parent) {
|
|
851
|
+
this._parentage = null;
|
|
852
|
+
} else if (Array.isArray(_parentage)) {
|
|
853
|
+
arrRemove(_parentage, parent);
|
|
854
|
+
}
|
|
855
|
+
};
|
|
474
856
|
Subscription.prototype.remove = function (teardown) {
|
|
475
857
|
var _finalizers = this._finalizers;
|
|
476
858
|
_finalizers && arrRemove(_finalizers, teardown);
|
|
@@ -633,1180 +1015,724 @@
|
|
|
633
1015
|
}
|
|
634
1016
|
};
|
|
635
1017
|
return ConsumerObserver;
|
|
636
|
-
}();
|
|
637
|
-
var SafeSubscriber = function (_super) {
|
|
638
|
-
__extends(SafeSubscriber, _super);
|
|
639
|
-
function SafeSubscriber(observerOrNext, error, complete) {
|
|
640
|
-
var _this = _super.call(this) || this;
|
|
641
|
-
var partialObserver;
|
|
642
|
-
if (isFunction(observerOrNext) || !observerOrNext) {
|
|
643
|
-
partialObserver = {
|
|
644
|
-
next: observerOrNext !== null && observerOrNext !== undefined ? observerOrNext : undefined,
|
|
645
|
-
error: error !== null && error !== undefined ? error : undefined,
|
|
646
|
-
complete: complete !== null && complete !== undefined ? complete : undefined
|
|
647
|
-
};
|
|
648
|
-
} else {
|
|
649
|
-
{
|
|
650
|
-
partialObserver = observerOrNext;
|
|
651
|
-
}
|
|
652
|
-
}
|
|
653
|
-
_this.destination = new ConsumerObserver(partialObserver);
|
|
654
|
-
return _this;
|
|
655
|
-
}
|
|
656
|
-
return SafeSubscriber;
|
|
657
|
-
}(Subscriber);
|
|
658
|
-
function handleUnhandledError(error) {
|
|
659
|
-
{
|
|
660
|
-
reportUnhandledError(error);
|
|
661
|
-
}
|
|
662
|
-
}
|
|
663
|
-
function defaultErrorHandler(err) {
|
|
664
|
-
throw err;
|
|
665
|
-
}
|
|
666
|
-
var EMPTY_OBSERVER = {
|
|
667
|
-
closed: true,
|
|
668
|
-
next: noop,
|
|
669
|
-
error: defaultErrorHandler,
|
|
670
|
-
complete: noop
|
|
671
|
-
};
|
|
672
|
-
|
|
673
|
-
var observable = function () {
|
|
674
|
-
return typeof Symbol === 'function' && Symbol.observable || '@@observable';
|
|
675
|
-
}();
|
|
676
|
-
|
|
677
|
-
function identity(x) {
|
|
678
|
-
return x;
|
|
679
|
-
}
|
|
680
|
-
|
|
681
|
-
function pipeFromArray(fns) {
|
|
682
|
-
if (fns.length === 0) {
|
|
683
|
-
return identity;
|
|
684
|
-
}
|
|
685
|
-
if (fns.length === 1) {
|
|
686
|
-
return fns[0];
|
|
687
|
-
}
|
|
688
|
-
return function piped(input) {
|
|
689
|
-
return fns.reduce(function (prev, fn) {
|
|
690
|
-
return fn(prev);
|
|
691
|
-
}, input);
|
|
692
|
-
};
|
|
693
|
-
}
|
|
694
|
-
|
|
695
|
-
var Observable = function () {
|
|
696
|
-
function Observable(subscribe) {
|
|
697
|
-
if (subscribe) {
|
|
698
|
-
this._subscribe = subscribe;
|
|
699
|
-
}
|
|
700
|
-
}
|
|
701
|
-
Observable.prototype.lift = function (operator) {
|
|
702
|
-
var observable = new Observable();
|
|
703
|
-
observable.source = this;
|
|
704
|
-
observable.operator = operator;
|
|
705
|
-
return observable;
|
|
706
|
-
};
|
|
707
|
-
Observable.prototype.subscribe = function (observerOrNext, error, complete) {
|
|
708
|
-
var _this = this;
|
|
709
|
-
var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);
|
|
710
|
-
errorContext(function () {
|
|
711
|
-
var _a = _this,
|
|
712
|
-
operator = _a.operator,
|
|
713
|
-
source = _a.source;
|
|
714
|
-
subscriber.add(operator ? operator.call(subscriber, source) : source ? _this._subscribe(subscriber) : _this._trySubscribe(subscriber));
|
|
715
|
-
});
|
|
716
|
-
return subscriber;
|
|
717
|
-
};
|
|
718
|
-
Observable.prototype._trySubscribe = function (sink) {
|
|
719
|
-
try {
|
|
720
|
-
return this._subscribe(sink);
|
|
721
|
-
} catch (err) {
|
|
722
|
-
sink.error(err);
|
|
723
|
-
}
|
|
724
|
-
};
|
|
725
|
-
Observable.prototype.forEach = function (next, promiseCtor) {
|
|
726
|
-
var _this = this;
|
|
727
|
-
promiseCtor = getPromiseCtor(promiseCtor);
|
|
728
|
-
return new promiseCtor(function (resolve, reject) {
|
|
729
|
-
var subscriber = new SafeSubscriber({
|
|
730
|
-
next: function (value) {
|
|
731
|
-
try {
|
|
732
|
-
next(value);
|
|
733
|
-
} catch (err) {
|
|
734
|
-
reject(err);
|
|
735
|
-
subscriber.unsubscribe();
|
|
736
|
-
}
|
|
737
|
-
},
|
|
738
|
-
error: reject,
|
|
739
|
-
complete: resolve
|
|
740
|
-
});
|
|
741
|
-
_this.subscribe(subscriber);
|
|
742
|
-
});
|
|
743
|
-
};
|
|
744
|
-
Observable.prototype._subscribe = function (subscriber) {
|
|
745
|
-
var _a;
|
|
746
|
-
return (_a = this.source) === null || _a === undefined ? undefined : _a.subscribe(subscriber);
|
|
747
|
-
};
|
|
748
|
-
Observable.prototype[observable] = function () {
|
|
749
|
-
return this;
|
|
750
|
-
};
|
|
751
|
-
Observable.prototype.pipe = function () {
|
|
752
|
-
var operations = [];
|
|
753
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
754
|
-
operations[_i] = arguments[_i];
|
|
755
|
-
}
|
|
756
|
-
return pipeFromArray(operations)(this);
|
|
757
|
-
};
|
|
758
|
-
Observable.prototype.toPromise = function (promiseCtor) {
|
|
759
|
-
var _this = this;
|
|
760
|
-
promiseCtor = getPromiseCtor(promiseCtor);
|
|
761
|
-
return new promiseCtor(function (resolve, reject) {
|
|
762
|
-
var value;
|
|
763
|
-
_this.subscribe(function (x) {
|
|
764
|
-
return value = x;
|
|
765
|
-
}, function (err) {
|
|
766
|
-
return reject(err);
|
|
767
|
-
}, function () {
|
|
768
|
-
return resolve(value);
|
|
769
|
-
});
|
|
770
|
-
});
|
|
771
|
-
};
|
|
772
|
-
Observable.create = function (subscribe) {
|
|
773
|
-
return new Observable(subscribe);
|
|
774
|
-
};
|
|
775
|
-
return Observable;
|
|
776
|
-
}();
|
|
777
|
-
function getPromiseCtor(promiseCtor) {
|
|
778
|
-
var _a;
|
|
779
|
-
return (_a = promiseCtor !== null && promiseCtor !== undefined ? promiseCtor : config.Promise) !== null && _a !== undefined ? _a : Promise;
|
|
780
|
-
}
|
|
781
|
-
function isObserver(value) {
|
|
782
|
-
return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);
|
|
783
|
-
}
|
|
784
|
-
function isSubscriber(value) {
|
|
785
|
-
return value && value instanceof Subscriber || isObserver(value) && isSubscription(value);
|
|
786
|
-
}
|
|
787
|
-
|
|
788
|
-
function hasLift(source) {
|
|
789
|
-
return isFunction(source === null || source === undefined ? undefined : source.lift);
|
|
790
|
-
}
|
|
791
|
-
function operate(init) {
|
|
792
|
-
return function (source) {
|
|
793
|
-
if (hasLift(source)) {
|
|
794
|
-
return source.lift(function (liftedSource) {
|
|
795
|
-
try {
|
|
796
|
-
return init(liftedSource, this);
|
|
797
|
-
} catch (err) {
|
|
798
|
-
this.error(err);
|
|
799
|
-
}
|
|
800
|
-
});
|
|
801
|
-
}
|
|
802
|
-
throw new TypeError('Unable to lift unknown Observable type');
|
|
803
|
-
};
|
|
804
|
-
}
|
|
805
|
-
|
|
806
|
-
function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {
|
|
807
|
-
return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);
|
|
808
|
-
}
|
|
809
|
-
var OperatorSubscriber = function (_super) {
|
|
810
|
-
__extends(OperatorSubscriber, _super);
|
|
811
|
-
function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {
|
|
812
|
-
var _this = _super.call(this, destination) || this;
|
|
813
|
-
_this.onFinalize = onFinalize;
|
|
814
|
-
_this.shouldUnsubscribe = shouldUnsubscribe;
|
|
815
|
-
_this._next = onNext ? function (value) {
|
|
816
|
-
try {
|
|
817
|
-
onNext(value);
|
|
818
|
-
} catch (err) {
|
|
819
|
-
destination.error(err);
|
|
820
|
-
}
|
|
821
|
-
} : _super.prototype._next;
|
|
822
|
-
_this._error = onError ? function (err) {
|
|
823
|
-
try {
|
|
824
|
-
onError(err);
|
|
825
|
-
} catch (err) {
|
|
826
|
-
destination.error(err);
|
|
827
|
-
} finally {
|
|
828
|
-
this.unsubscribe();
|
|
829
|
-
}
|
|
830
|
-
} : _super.prototype._error;
|
|
831
|
-
_this._complete = onComplete ? function () {
|
|
832
|
-
try {
|
|
833
|
-
onComplete();
|
|
834
|
-
} catch (err) {
|
|
835
|
-
destination.error(err);
|
|
836
|
-
} finally {
|
|
837
|
-
this.unsubscribe();
|
|
1018
|
+
}();
|
|
1019
|
+
var SafeSubscriber = function (_super) {
|
|
1020
|
+
__extends(SafeSubscriber, _super);
|
|
1021
|
+
function SafeSubscriber(observerOrNext, error, complete) {
|
|
1022
|
+
var _this = _super.call(this) || this;
|
|
1023
|
+
var partialObserver;
|
|
1024
|
+
if (isFunction(observerOrNext) || !observerOrNext) {
|
|
1025
|
+
partialObserver = {
|
|
1026
|
+
next: observerOrNext !== null && observerOrNext !== undefined ? observerOrNext : undefined,
|
|
1027
|
+
error: error !== null && error !== undefined ? error : undefined,
|
|
1028
|
+
complete: complete !== null && complete !== undefined ? complete : undefined
|
|
1029
|
+
};
|
|
1030
|
+
} else {
|
|
1031
|
+
{
|
|
1032
|
+
partialObserver = observerOrNext;
|
|
838
1033
|
}
|
|
839
|
-
}
|
|
1034
|
+
}
|
|
1035
|
+
_this.destination = new ConsumerObserver(partialObserver);
|
|
840
1036
|
return _this;
|
|
841
1037
|
}
|
|
842
|
-
|
|
843
|
-
var _a;
|
|
844
|
-
if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {
|
|
845
|
-
var closed_1 = this.closed;
|
|
846
|
-
_super.prototype.unsubscribe.call(this);
|
|
847
|
-
!closed_1 && ((_a = this.onFinalize) === null || _a === undefined ? undefined : _a.call(this));
|
|
848
|
-
}
|
|
849
|
-
};
|
|
850
|
-
return OperatorSubscriber;
|
|
1038
|
+
return SafeSubscriber;
|
|
851
1039
|
}(Subscriber);
|
|
1040
|
+
function handleUnhandledError(error) {
|
|
1041
|
+
{
|
|
1042
|
+
reportUnhandledError(error);
|
|
1043
|
+
}
|
|
1044
|
+
}
|
|
1045
|
+
function defaultErrorHandler(err) {
|
|
1046
|
+
throw err;
|
|
1047
|
+
}
|
|
1048
|
+
var EMPTY_OBSERVER = {
|
|
1049
|
+
closed: true,
|
|
1050
|
+
next: noop,
|
|
1051
|
+
error: defaultErrorHandler,
|
|
1052
|
+
complete: noop
|
|
1053
|
+
};
|
|
852
1054
|
|
|
853
|
-
var
|
|
854
|
-
return function
|
|
855
|
-
|
|
856
|
-
this.name = 'ObjectUnsubscribedError';
|
|
857
|
-
this.message = 'object unsubscribed';
|
|
858
|
-
};
|
|
859
|
-
});
|
|
1055
|
+
var observable = function () {
|
|
1056
|
+
return typeof Symbol === 'function' && Symbol.observable || '@@observable';
|
|
1057
|
+
}();
|
|
860
1058
|
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
_this.isStopped = false;
|
|
869
|
-
_this.hasError = false;
|
|
870
|
-
_this.thrownError = null;
|
|
871
|
-
return _this;
|
|
1059
|
+
function identity(x) {
|
|
1060
|
+
return x;
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
function pipeFromArray(fns) {
|
|
1064
|
+
if (fns.length === 0) {
|
|
1065
|
+
return identity;
|
|
872
1066
|
}
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
1067
|
+
if (fns.length === 1) {
|
|
1068
|
+
return fns[0];
|
|
1069
|
+
}
|
|
1070
|
+
return function piped(input) {
|
|
1071
|
+
return fns.reduce(function (prev, fn) {
|
|
1072
|
+
return fn(prev);
|
|
1073
|
+
}, input);
|
|
877
1074
|
};
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
1075
|
+
}
|
|
1076
|
+
|
|
1077
|
+
var Observable = function () {
|
|
1078
|
+
function Observable(subscribe) {
|
|
1079
|
+
if (subscribe) {
|
|
1080
|
+
this._subscribe = subscribe;
|
|
881
1081
|
}
|
|
1082
|
+
}
|
|
1083
|
+
Observable.prototype.lift = function (operator) {
|
|
1084
|
+
var observable = new Observable();
|
|
1085
|
+
observable.source = this;
|
|
1086
|
+
observable.operator = operator;
|
|
1087
|
+
return observable;
|
|
882
1088
|
};
|
|
883
|
-
|
|
884
|
-
var _this = this;
|
|
885
|
-
errorContext(function () {
|
|
886
|
-
var e_1, _a;
|
|
887
|
-
_this._throwIfClosed();
|
|
888
|
-
if (!_this.isStopped) {
|
|
889
|
-
if (!_this.currentObservers) {
|
|
890
|
-
_this.currentObservers = Array.from(_this.observers);
|
|
891
|
-
}
|
|
892
|
-
try {
|
|
893
|
-
for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
894
|
-
var observer = _c.value;
|
|
895
|
-
observer.next(value);
|
|
896
|
-
}
|
|
897
|
-
} catch (e_1_1) {
|
|
898
|
-
e_1 = {
|
|
899
|
-
error: e_1_1
|
|
900
|
-
};
|
|
901
|
-
} finally {
|
|
902
|
-
try {
|
|
903
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
904
|
-
} finally {
|
|
905
|
-
if (e_1) throw e_1.error;
|
|
906
|
-
}
|
|
907
|
-
}
|
|
908
|
-
}
|
|
909
|
-
});
|
|
910
|
-
};
|
|
911
|
-
Subject.prototype.error = function (err) {
|
|
912
|
-
var _this = this;
|
|
913
|
-
errorContext(function () {
|
|
914
|
-
_this._throwIfClosed();
|
|
915
|
-
if (!_this.isStopped) {
|
|
916
|
-
_this.hasError = _this.isStopped = true;
|
|
917
|
-
_this.thrownError = err;
|
|
918
|
-
var observers = _this.observers;
|
|
919
|
-
while (observers.length) {
|
|
920
|
-
observers.shift().error(err);
|
|
921
|
-
}
|
|
922
|
-
}
|
|
923
|
-
});
|
|
924
|
-
};
|
|
925
|
-
Subject.prototype.complete = function () {
|
|
1089
|
+
Observable.prototype.subscribe = function (observerOrNext, error, complete) {
|
|
926
1090
|
var _this = this;
|
|
1091
|
+
var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);
|
|
927
1092
|
errorContext(function () {
|
|
928
|
-
_this
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
while (observers.length) {
|
|
933
|
-
observers.shift().complete();
|
|
934
|
-
}
|
|
935
|
-
}
|
|
1093
|
+
var _a = _this,
|
|
1094
|
+
operator = _a.operator,
|
|
1095
|
+
source = _a.source;
|
|
1096
|
+
subscriber.add(operator ? operator.call(subscriber, source) : source ? _this._subscribe(subscriber) : _this._trySubscribe(subscriber));
|
|
936
1097
|
});
|
|
1098
|
+
return subscriber;
|
|
937
1099
|
};
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
var _a;
|
|
945
|
-
return ((_a = this.observers) === null || _a === undefined ? undefined : _a.length) > 0;
|
|
946
|
-
},
|
|
947
|
-
enumerable: false,
|
|
948
|
-
configurable: true
|
|
949
|
-
});
|
|
950
|
-
Subject.prototype._trySubscribe = function (subscriber) {
|
|
951
|
-
this._throwIfClosed();
|
|
952
|
-
return _super.prototype._trySubscribe.call(this, subscriber);
|
|
953
|
-
};
|
|
954
|
-
Subject.prototype._subscribe = function (subscriber) {
|
|
955
|
-
this._throwIfClosed();
|
|
956
|
-
this._checkFinalizedStatuses(subscriber);
|
|
957
|
-
return this._innerSubscribe(subscriber);
|
|
1100
|
+
Observable.prototype._trySubscribe = function (sink) {
|
|
1101
|
+
try {
|
|
1102
|
+
return this._subscribe(sink);
|
|
1103
|
+
} catch (err) {
|
|
1104
|
+
sink.error(err);
|
|
1105
|
+
}
|
|
958
1106
|
};
|
|
959
|
-
|
|
1107
|
+
Observable.prototype.forEach = function (next, promiseCtor) {
|
|
960
1108
|
var _this = this;
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
1109
|
+
promiseCtor = getPromiseCtor(promiseCtor);
|
|
1110
|
+
return new promiseCtor(function (resolve, reject) {
|
|
1111
|
+
var subscriber = new SafeSubscriber({
|
|
1112
|
+
next: function (value) {
|
|
1113
|
+
try {
|
|
1114
|
+
next(value);
|
|
1115
|
+
} catch (err) {
|
|
1116
|
+
reject(err);
|
|
1117
|
+
subscriber.unsubscribe();
|
|
1118
|
+
}
|
|
1119
|
+
},
|
|
1120
|
+
error: reject,
|
|
1121
|
+
complete: resolve
|
|
1122
|
+
});
|
|
1123
|
+
_this.subscribe(subscriber);
|
|
973
1124
|
});
|
|
974
1125
|
};
|
|
975
|
-
|
|
976
|
-
var _a
|
|
977
|
-
|
|
978
|
-
thrownError = _a.thrownError,
|
|
979
|
-
isStopped = _a.isStopped;
|
|
980
|
-
if (hasError) {
|
|
981
|
-
subscriber.error(thrownError);
|
|
982
|
-
} else if (isStopped) {
|
|
983
|
-
subscriber.complete();
|
|
984
|
-
}
|
|
985
|
-
};
|
|
986
|
-
Subject.prototype.asObservable = function () {
|
|
987
|
-
var observable = new Observable();
|
|
988
|
-
observable.source = this;
|
|
989
|
-
return observable;
|
|
990
|
-
};
|
|
991
|
-
Subject.create = function (destination, source) {
|
|
992
|
-
return new AnonymousSubject(destination, source);
|
|
993
|
-
};
|
|
994
|
-
return Subject;
|
|
995
|
-
}(Observable);
|
|
996
|
-
var AnonymousSubject = function (_super) {
|
|
997
|
-
__extends(AnonymousSubject, _super);
|
|
998
|
-
function AnonymousSubject(destination, source) {
|
|
999
|
-
var _this = _super.call(this) || this;
|
|
1000
|
-
_this.destination = destination;
|
|
1001
|
-
_this.source = source;
|
|
1002
|
-
return _this;
|
|
1003
|
-
}
|
|
1004
|
-
AnonymousSubject.prototype.next = function (value) {
|
|
1005
|
-
var _a, _b;
|
|
1006
|
-
(_b = (_a = this.destination) === null || _a === undefined ? undefined : _a.next) === null || _b === undefined ? undefined : _b.call(_a, value);
|
|
1126
|
+
Observable.prototype._subscribe = function (subscriber) {
|
|
1127
|
+
var _a;
|
|
1128
|
+
return (_a = this.source) === null || _a === undefined ? undefined : _a.subscribe(subscriber);
|
|
1007
1129
|
};
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
(_b = (_a = this.destination) === null || _a === undefined ? undefined : _a.error) === null || _b === undefined ? undefined : _b.call(_a, err);
|
|
1130
|
+
Observable.prototype[observable] = function () {
|
|
1131
|
+
return this;
|
|
1011
1132
|
};
|
|
1012
|
-
|
|
1013
|
-
var
|
|
1014
|
-
(
|
|
1133
|
+
Observable.prototype.pipe = function () {
|
|
1134
|
+
var operations = [];
|
|
1135
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
1136
|
+
operations[_i] = arguments[_i];
|
|
1137
|
+
}
|
|
1138
|
+
return pipeFromArray(operations)(this);
|
|
1015
1139
|
};
|
|
1016
|
-
|
|
1017
|
-
var
|
|
1018
|
-
|
|
1140
|
+
Observable.prototype.toPromise = function (promiseCtor) {
|
|
1141
|
+
var _this = this;
|
|
1142
|
+
promiseCtor = getPromiseCtor(promiseCtor);
|
|
1143
|
+
return new promiseCtor(function (resolve, reject) {
|
|
1144
|
+
var value;
|
|
1145
|
+
_this.subscribe(function (x) {
|
|
1146
|
+
return value = x;
|
|
1147
|
+
}, function (err) {
|
|
1148
|
+
return reject(err);
|
|
1149
|
+
}, function () {
|
|
1150
|
+
return resolve(value);
|
|
1151
|
+
});
|
|
1152
|
+
});
|
|
1019
1153
|
};
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
var EmptyError = createErrorClass(function (_super) {
|
|
1024
|
-
return function EmptyErrorImpl() {
|
|
1025
|
-
_super(this);
|
|
1026
|
-
this.name = 'EmptyError';
|
|
1027
|
-
this.message = 'no elements in sequence';
|
|
1154
|
+
Observable.create = function (subscribe) {
|
|
1155
|
+
return new Observable(subscribe);
|
|
1028
1156
|
};
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
function
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
next: function (value) {
|
|
1035
|
-
resolve(value);
|
|
1036
|
-
subscriber.unsubscribe();
|
|
1037
|
-
},
|
|
1038
|
-
error: reject,
|
|
1039
|
-
complete: function () {
|
|
1040
|
-
{
|
|
1041
|
-
reject(new EmptyError());
|
|
1042
|
-
}
|
|
1043
|
-
}
|
|
1044
|
-
});
|
|
1045
|
-
source.subscribe(subscriber);
|
|
1046
|
-
});
|
|
1157
|
+
return Observable;
|
|
1158
|
+
}();
|
|
1159
|
+
function getPromiseCtor(promiseCtor) {
|
|
1160
|
+
var _a;
|
|
1161
|
+
return (_a = promiseCtor !== null && promiseCtor !== undefined ? promiseCtor : config.Promise) !== null && _a !== undefined ? _a : Promise;
|
|
1047
1162
|
}
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
return operate(function (source, subscriber) {
|
|
1051
|
-
var index = 0;
|
|
1052
|
-
source.subscribe(createOperatorSubscriber(subscriber, function (value) {
|
|
1053
|
-
return predicate.call(thisArg, value, index++) && subscriber.next(value);
|
|
1054
|
-
}));
|
|
1055
|
-
});
|
|
1163
|
+
function isObserver(value) {
|
|
1164
|
+
return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);
|
|
1056
1165
|
}
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
1166
|
+
function isSubscriber(value) {
|
|
1167
|
+
return value && value instanceof Subscriber || isObserver(value) && isSubscription(value);
|
|
1060
1168
|
}
|
|
1061
1169
|
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
if (hasRequiredLoglevel) return loglevel$1.exports;
|
|
1074
|
-
hasRequiredLoglevel = 1;
|
|
1075
|
-
(function (module) {
|
|
1076
|
-
(function (root, definition) {
|
|
1077
|
-
|
|
1078
|
-
if (module.exports) {
|
|
1079
|
-
module.exports = definition();
|
|
1080
|
-
} else {
|
|
1081
|
-
root.log = definition();
|
|
1082
|
-
}
|
|
1083
|
-
})(loglevel, function () {
|
|
1084
|
-
|
|
1085
|
-
// Slightly dubious tricks to cut down minimized file size
|
|
1086
|
-
var noop = function () {};
|
|
1087
|
-
var undefinedType = "undefined";
|
|
1088
|
-
var isIE = typeof window !== undefinedType && typeof window.navigator !== undefinedType && /Trident\/|MSIE /.test(window.navigator.userAgent);
|
|
1089
|
-
var logMethods = ["trace", "debug", "info", "warn", "error"];
|
|
1090
|
-
var _loggersByName = {};
|
|
1091
|
-
var defaultLogger = null;
|
|
1092
|
-
|
|
1093
|
-
// Cross-browser bind equivalent that works at least back to IE6
|
|
1094
|
-
function bindMethod(obj, methodName) {
|
|
1095
|
-
var method = obj[methodName];
|
|
1096
|
-
if (typeof method.bind === 'function') {
|
|
1097
|
-
return method.bind(obj);
|
|
1098
|
-
} else {
|
|
1099
|
-
try {
|
|
1100
|
-
return Function.prototype.bind.call(method, obj);
|
|
1101
|
-
} catch (e) {
|
|
1102
|
-
// Missing bind shim or IE8 + Modernizr, fallback to wrapping
|
|
1103
|
-
return function () {
|
|
1104
|
-
return Function.prototype.apply.apply(method, [obj, arguments]);
|
|
1105
|
-
};
|
|
1106
|
-
}
|
|
1107
|
-
}
|
|
1108
|
-
}
|
|
1109
|
-
|
|
1110
|
-
// Trace() doesn't print the message in IE, so for that case we need to wrap it
|
|
1111
|
-
function traceForIE() {
|
|
1112
|
-
if (console.log) {
|
|
1113
|
-
if (console.log.apply) {
|
|
1114
|
-
console.log.apply(console, arguments);
|
|
1115
|
-
} else {
|
|
1116
|
-
// In old IE, native console methods themselves don't have apply().
|
|
1117
|
-
Function.prototype.apply.apply(console.log, [console, arguments]);
|
|
1118
|
-
}
|
|
1119
|
-
}
|
|
1120
|
-
if (console.trace) console.trace();
|
|
1121
|
-
}
|
|
1122
|
-
|
|
1123
|
-
// Build the best logging method possible for this env
|
|
1124
|
-
// Wherever possible we want to bind, not wrap, to preserve stack traces
|
|
1125
|
-
function realMethod(methodName) {
|
|
1126
|
-
if (methodName === 'debug') {
|
|
1127
|
-
methodName = 'log';
|
|
1128
|
-
}
|
|
1129
|
-
if (typeof console === undefinedType) {
|
|
1130
|
-
return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives
|
|
1131
|
-
} else if (methodName === 'trace' && isIE) {
|
|
1132
|
-
return traceForIE;
|
|
1133
|
-
} else if (console[methodName] !== undefined) {
|
|
1134
|
-
return bindMethod(console, methodName);
|
|
1135
|
-
} else if (console.log !== undefined) {
|
|
1136
|
-
return bindMethod(console, 'log');
|
|
1137
|
-
} else {
|
|
1138
|
-
return noop;
|
|
1139
|
-
}
|
|
1140
|
-
}
|
|
1141
|
-
|
|
1142
|
-
// These private functions always need `this` to be set properly
|
|
1143
|
-
|
|
1144
|
-
function replaceLoggingMethods() {
|
|
1145
|
-
/*jshint validthis:true */
|
|
1146
|
-
var level = this.getLevel();
|
|
1147
|
-
|
|
1148
|
-
// Replace the actual methods.
|
|
1149
|
-
for (var i = 0; i < logMethods.length; i++) {
|
|
1150
|
-
var methodName = logMethods[i];
|
|
1151
|
-
this[methodName] = i < level ? noop : this.methodFactory(methodName, level, this.name);
|
|
1152
|
-
}
|
|
1153
|
-
|
|
1154
|
-
// Define log.log as an alias for log.debug
|
|
1155
|
-
this.log = this.debug;
|
|
1156
|
-
|
|
1157
|
-
// Return any important warnings.
|
|
1158
|
-
if (typeof console === undefinedType && level < this.levels.SILENT) {
|
|
1159
|
-
return "No console available for logging";
|
|
1170
|
+
function hasLift(source) {
|
|
1171
|
+
return isFunction(source === null || source === undefined ? undefined : source.lift);
|
|
1172
|
+
}
|
|
1173
|
+
function operate(init) {
|
|
1174
|
+
return function (source) {
|
|
1175
|
+
if (hasLift(source)) {
|
|
1176
|
+
return source.lift(function (liftedSource) {
|
|
1177
|
+
try {
|
|
1178
|
+
return init(liftedSource, this);
|
|
1179
|
+
} catch (err) {
|
|
1180
|
+
this.error(err);
|
|
1160
1181
|
}
|
|
1161
|
-
}
|
|
1182
|
+
});
|
|
1183
|
+
}
|
|
1184
|
+
throw new TypeError('Unable to lift unknown Observable type');
|
|
1185
|
+
};
|
|
1186
|
+
}
|
|
1162
1187
|
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1188
|
+
function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {
|
|
1189
|
+
return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);
|
|
1190
|
+
}
|
|
1191
|
+
var OperatorSubscriber = function (_super) {
|
|
1192
|
+
__extends(OperatorSubscriber, _super);
|
|
1193
|
+
function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {
|
|
1194
|
+
var _this = _super.call(this, destination) || this;
|
|
1195
|
+
_this.onFinalize = onFinalize;
|
|
1196
|
+
_this.shouldUnsubscribe = shouldUnsubscribe;
|
|
1197
|
+
_this._next = onNext ? function (value) {
|
|
1198
|
+
try {
|
|
1199
|
+
onNext(value);
|
|
1200
|
+
} catch (err) {
|
|
1201
|
+
destination.error(err);
|
|
1172
1202
|
}
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1203
|
+
} : _super.prototype._next;
|
|
1204
|
+
_this._error = onError ? function (err) {
|
|
1205
|
+
try {
|
|
1206
|
+
onError(err);
|
|
1207
|
+
} catch (err) {
|
|
1208
|
+
destination.error(err);
|
|
1209
|
+
} finally {
|
|
1210
|
+
this.unsubscribe();
|
|
1179
1211
|
}
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
*/
|
|
1203
|
-
var userLevel;
|
|
1204
|
-
var storageKey = "loglevel";
|
|
1205
|
-
if (typeof name === "string") {
|
|
1206
|
-
storageKey += ":" + name;
|
|
1207
|
-
} else if (typeof name === "symbol") {
|
|
1208
|
-
storageKey = undefined;
|
|
1209
|
-
}
|
|
1210
|
-
function persistLevelIfPossible(levelNum) {
|
|
1211
|
-
var levelName = (logMethods[levelNum] || 'silent').toUpperCase();
|
|
1212
|
-
if (typeof window === undefinedType || !storageKey) return;
|
|
1212
|
+
} : _super.prototype._error;
|
|
1213
|
+
_this._complete = onComplete ? function () {
|
|
1214
|
+
try {
|
|
1215
|
+
onComplete();
|
|
1216
|
+
} catch (err) {
|
|
1217
|
+
destination.error(err);
|
|
1218
|
+
} finally {
|
|
1219
|
+
this.unsubscribe();
|
|
1220
|
+
}
|
|
1221
|
+
} : _super.prototype._complete;
|
|
1222
|
+
return _this;
|
|
1223
|
+
}
|
|
1224
|
+
OperatorSubscriber.prototype.unsubscribe = function () {
|
|
1225
|
+
var _a;
|
|
1226
|
+
if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {
|
|
1227
|
+
var closed_1 = this.closed;
|
|
1228
|
+
_super.prototype.unsubscribe.call(this);
|
|
1229
|
+
!closed_1 && ((_a = this.onFinalize) === null || _a === undefined ? undefined : _a.call(this));
|
|
1230
|
+
}
|
|
1231
|
+
};
|
|
1232
|
+
return OperatorSubscriber;
|
|
1233
|
+
}(Subscriber);
|
|
1213
1234
|
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1235
|
+
var ObjectUnsubscribedError = createErrorClass(function (_super) {
|
|
1236
|
+
return function ObjectUnsubscribedErrorImpl() {
|
|
1237
|
+
_super(this);
|
|
1238
|
+
this.name = 'ObjectUnsubscribedError';
|
|
1239
|
+
this.message = 'object unsubscribed';
|
|
1240
|
+
};
|
|
1241
|
+
});
|
|
1219
1242
|
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1243
|
+
var Subject = function (_super) {
|
|
1244
|
+
__extends(Subject, _super);
|
|
1245
|
+
function Subject() {
|
|
1246
|
+
var _this = _super.call(this) || this;
|
|
1247
|
+
_this.closed = false;
|
|
1248
|
+
_this.currentObservers = null;
|
|
1249
|
+
_this.observers = [];
|
|
1250
|
+
_this.isStopped = false;
|
|
1251
|
+
_this.hasError = false;
|
|
1252
|
+
_this.thrownError = null;
|
|
1253
|
+
return _this;
|
|
1254
|
+
}
|
|
1255
|
+
Subject.prototype.lift = function (operator) {
|
|
1256
|
+
var subject = new AnonymousSubject(this, this);
|
|
1257
|
+
subject.operator = operator;
|
|
1258
|
+
return subject;
|
|
1259
|
+
};
|
|
1260
|
+
Subject.prototype._throwIfClosed = function () {
|
|
1261
|
+
if (this.closed) {
|
|
1262
|
+
throw new ObjectUnsubscribedError();
|
|
1263
|
+
}
|
|
1264
|
+
};
|
|
1265
|
+
Subject.prototype.next = function (value) {
|
|
1266
|
+
var _this = this;
|
|
1267
|
+
errorContext(function () {
|
|
1268
|
+
var e_1, _a;
|
|
1269
|
+
_this._throwIfClosed();
|
|
1270
|
+
if (!_this.isStopped) {
|
|
1271
|
+
if (!_this.currentObservers) {
|
|
1272
|
+
_this.currentObservers = Array.from(_this.observers);
|
|
1224
1273
|
}
|
|
1225
|
-
|
|
1226
|
-
var
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
storedLevel = window.localStorage[storageKey];
|
|
1230
|
-
} catch (ignore) {}
|
|
1231
|
-
|
|
1232
|
-
// Fallback to cookies if local storage gives us nothing
|
|
1233
|
-
if (typeof storedLevel === undefinedType) {
|
|
1234
|
-
try {
|
|
1235
|
-
var cookie = window.document.cookie;
|
|
1236
|
-
var cookieName = encodeURIComponent(storageKey);
|
|
1237
|
-
var location = cookie.indexOf(cookieName + "=");
|
|
1238
|
-
if (location !== -1) {
|
|
1239
|
-
storedLevel = /^([^;]+)/.exec(cookie.slice(location + cookieName.length + 1))[1];
|
|
1240
|
-
}
|
|
1241
|
-
} catch (ignore) {}
|
|
1274
|
+
try {
|
|
1275
|
+
for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
1276
|
+
var observer = _c.value;
|
|
1277
|
+
observer.next(value);
|
|
1242
1278
|
}
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1279
|
+
} catch (e_1_1) {
|
|
1280
|
+
e_1 = {
|
|
1281
|
+
error: e_1_1
|
|
1282
|
+
};
|
|
1283
|
+
} finally {
|
|
1284
|
+
try {
|
|
1285
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
1286
|
+
} finally {
|
|
1287
|
+
if (e_1) throw e_1.error;
|
|
1247
1288
|
}
|
|
1248
|
-
return storedLevel;
|
|
1249
1289
|
}
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1290
|
+
}
|
|
1291
|
+
});
|
|
1292
|
+
};
|
|
1293
|
+
Subject.prototype.error = function (err) {
|
|
1294
|
+
var _this = this;
|
|
1295
|
+
errorContext(function () {
|
|
1296
|
+
_this._throwIfClosed();
|
|
1297
|
+
if (!_this.isStopped) {
|
|
1298
|
+
_this.hasError = _this.isStopped = true;
|
|
1299
|
+
_this.thrownError = err;
|
|
1300
|
+
var observers = _this.observers;
|
|
1301
|
+
while (observers.length) {
|
|
1302
|
+
observers.shift().error(err);
|
|
1262
1303
|
}
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1304
|
+
}
|
|
1305
|
+
});
|
|
1306
|
+
};
|
|
1307
|
+
Subject.prototype.complete = function () {
|
|
1308
|
+
var _this = this;
|
|
1309
|
+
errorContext(function () {
|
|
1310
|
+
_this._throwIfClosed();
|
|
1311
|
+
if (!_this.isStopped) {
|
|
1312
|
+
_this.isStopped = true;
|
|
1313
|
+
var observers = _this.observers;
|
|
1314
|
+
while (observers.length) {
|
|
1315
|
+
observers.shift().complete();
|
|
1273
1316
|
}
|
|
1317
|
+
}
|
|
1318
|
+
});
|
|
1319
|
+
};
|
|
1320
|
+
Subject.prototype.unsubscribe = function () {
|
|
1321
|
+
this.isStopped = this.closed = true;
|
|
1322
|
+
this.observers = this.currentObservers = null;
|
|
1323
|
+
};
|
|
1324
|
+
Object.defineProperty(Subject.prototype, "observed", {
|
|
1325
|
+
get: function () {
|
|
1326
|
+
var _a;
|
|
1327
|
+
return ((_a = this.observers) === null || _a === undefined ? undefined : _a.length) > 0;
|
|
1328
|
+
},
|
|
1329
|
+
enumerable: false,
|
|
1330
|
+
configurable: true
|
|
1331
|
+
});
|
|
1332
|
+
Subject.prototype._trySubscribe = function (subscriber) {
|
|
1333
|
+
this._throwIfClosed();
|
|
1334
|
+
return _super.prototype._trySubscribe.call(this, subscriber);
|
|
1335
|
+
};
|
|
1336
|
+
Subject.prototype._subscribe = function (subscriber) {
|
|
1337
|
+
this._throwIfClosed();
|
|
1338
|
+
this._checkFinalizedStatuses(subscriber);
|
|
1339
|
+
return this._innerSubscribe(subscriber);
|
|
1340
|
+
};
|
|
1341
|
+
Subject.prototype._innerSubscribe = function (subscriber) {
|
|
1342
|
+
var _this = this;
|
|
1343
|
+
var _a = this,
|
|
1344
|
+
hasError = _a.hasError,
|
|
1345
|
+
isStopped = _a.isStopped,
|
|
1346
|
+
observers = _a.observers;
|
|
1347
|
+
if (hasError || isStopped) {
|
|
1348
|
+
return EMPTY_SUBSCRIPTION;
|
|
1349
|
+
}
|
|
1350
|
+
this.currentObservers = null;
|
|
1351
|
+
observers.push(subscriber);
|
|
1352
|
+
return new Subscription(function () {
|
|
1353
|
+
_this.currentObservers = null;
|
|
1354
|
+
arrRemove(observers, subscriber);
|
|
1355
|
+
});
|
|
1356
|
+
};
|
|
1357
|
+
Subject.prototype._checkFinalizedStatuses = function (subscriber) {
|
|
1358
|
+
var _a = this,
|
|
1359
|
+
hasError = _a.hasError,
|
|
1360
|
+
thrownError = _a.thrownError,
|
|
1361
|
+
isStopped = _a.isStopped;
|
|
1362
|
+
if (hasError) {
|
|
1363
|
+
subscriber.error(thrownError);
|
|
1364
|
+
} else if (isStopped) {
|
|
1365
|
+
subscriber.complete();
|
|
1366
|
+
}
|
|
1367
|
+
};
|
|
1368
|
+
Subject.prototype.asObservable = function () {
|
|
1369
|
+
var observable = new Observable();
|
|
1370
|
+
observable.source = this;
|
|
1371
|
+
return observable;
|
|
1372
|
+
};
|
|
1373
|
+
Subject.create = function (destination, source) {
|
|
1374
|
+
return new AnonymousSubject(destination, source);
|
|
1375
|
+
};
|
|
1376
|
+
return Subject;
|
|
1377
|
+
}(Observable);
|
|
1378
|
+
var AnonymousSubject = function (_super) {
|
|
1379
|
+
__extends(AnonymousSubject, _super);
|
|
1380
|
+
function AnonymousSubject(destination, source) {
|
|
1381
|
+
var _this = _super.call(this) || this;
|
|
1382
|
+
_this.destination = destination;
|
|
1383
|
+
_this.source = source;
|
|
1384
|
+
return _this;
|
|
1385
|
+
}
|
|
1386
|
+
AnonymousSubject.prototype.next = function (value) {
|
|
1387
|
+
var _a, _b;
|
|
1388
|
+
(_b = (_a = this.destination) === null || _a === undefined ? undefined : _a.next) === null || _b === undefined ? undefined : _b.call(_a, value);
|
|
1389
|
+
};
|
|
1390
|
+
AnonymousSubject.prototype.error = function (err) {
|
|
1391
|
+
var _a, _b;
|
|
1392
|
+
(_b = (_a = this.destination) === null || _a === undefined ? undefined : _a.error) === null || _b === undefined ? undefined : _b.call(_a, err);
|
|
1393
|
+
};
|
|
1394
|
+
AnonymousSubject.prototype.complete = function () {
|
|
1395
|
+
var _a, _b;
|
|
1396
|
+
(_b = (_a = this.destination) === null || _a === undefined ? undefined : _a.complete) === null || _b === undefined ? undefined : _b.call(_a);
|
|
1397
|
+
};
|
|
1398
|
+
AnonymousSubject.prototype._subscribe = function (subscriber) {
|
|
1399
|
+
var _a, _b;
|
|
1400
|
+
return (_b = (_a = this.source) === null || _a === undefined ? undefined : _a.subscribe(subscriber)) !== null && _b !== undefined ? _b : EMPTY_SUBSCRIPTION;
|
|
1401
|
+
};
|
|
1402
|
+
return AnonymousSubject;
|
|
1403
|
+
}(Subject);
|
|
1274
1404
|
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
self.levels = {
|
|
1283
|
-
"TRACE": 0,
|
|
1284
|
-
"DEBUG": 1,
|
|
1285
|
-
"INFO": 2,
|
|
1286
|
-
"WARN": 3,
|
|
1287
|
-
"ERROR": 4,
|
|
1288
|
-
"SILENT": 5
|
|
1289
|
-
};
|
|
1290
|
-
self.methodFactory = factory || defaultMethodFactory;
|
|
1291
|
-
self.getLevel = function () {
|
|
1292
|
-
if (userLevel != null) {
|
|
1293
|
-
return userLevel;
|
|
1294
|
-
} else if (defaultLevel != null) {
|
|
1295
|
-
return defaultLevel;
|
|
1296
|
-
} else {
|
|
1297
|
-
return inheritedLevel;
|
|
1298
|
-
}
|
|
1299
|
-
};
|
|
1300
|
-
self.setLevel = function (level, persist) {
|
|
1301
|
-
userLevel = normalizeLevel(level);
|
|
1302
|
-
if (persist !== false) {
|
|
1303
|
-
// defaults to true
|
|
1304
|
-
persistLevelIfPossible(userLevel);
|
|
1305
|
-
}
|
|
1306
|
-
|
|
1307
|
-
// NOTE: in v2, this should call rebuild(), which updates children.
|
|
1308
|
-
return replaceLoggingMethods.call(self);
|
|
1309
|
-
};
|
|
1310
|
-
self.setDefaultLevel = function (level) {
|
|
1311
|
-
defaultLevel = normalizeLevel(level);
|
|
1312
|
-
if (!getPersistedLevel()) {
|
|
1313
|
-
self.setLevel(level, false);
|
|
1314
|
-
}
|
|
1315
|
-
};
|
|
1316
|
-
self.resetLevel = function () {
|
|
1317
|
-
userLevel = null;
|
|
1318
|
-
clearPersistedLevel();
|
|
1319
|
-
replaceLoggingMethods.call(self);
|
|
1320
|
-
};
|
|
1321
|
-
self.enableAll = function (persist) {
|
|
1322
|
-
self.setLevel(self.levels.TRACE, persist);
|
|
1323
|
-
};
|
|
1324
|
-
self.disableAll = function (persist) {
|
|
1325
|
-
self.setLevel(self.levels.SILENT, persist);
|
|
1326
|
-
};
|
|
1327
|
-
self.rebuild = function () {
|
|
1328
|
-
if (defaultLogger !== self) {
|
|
1329
|
-
inheritedLevel = normalizeLevel(defaultLogger.getLevel());
|
|
1330
|
-
}
|
|
1331
|
-
replaceLoggingMethods.call(self);
|
|
1332
|
-
if (defaultLogger === self) {
|
|
1333
|
-
for (var childName in _loggersByName) {
|
|
1334
|
-
_loggersByName[childName].rebuild();
|
|
1335
|
-
}
|
|
1336
|
-
}
|
|
1337
|
-
};
|
|
1405
|
+
var EmptyError = createErrorClass(function (_super) {
|
|
1406
|
+
return function EmptyErrorImpl() {
|
|
1407
|
+
_super(this);
|
|
1408
|
+
this.name = 'EmptyError';
|
|
1409
|
+
this.message = 'no elements in sequence';
|
|
1410
|
+
};
|
|
1411
|
+
});
|
|
1338
1412
|
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1413
|
+
function firstValueFrom(source, config) {
|
|
1414
|
+
return new Promise(function (resolve, reject) {
|
|
1415
|
+
var subscriber = new SafeSubscriber({
|
|
1416
|
+
next: function (value) {
|
|
1417
|
+
resolve(value);
|
|
1418
|
+
subscriber.unsubscribe();
|
|
1419
|
+
},
|
|
1420
|
+
error: reject,
|
|
1421
|
+
complete: function () {
|
|
1422
|
+
{
|
|
1423
|
+
reject(new EmptyError());
|
|
1344
1424
|
}
|
|
1345
|
-
replaceLoggingMethods.call(self);
|
|
1346
1425
|
}
|
|
1426
|
+
});
|
|
1427
|
+
source.subscribe(subscriber);
|
|
1428
|
+
});
|
|
1429
|
+
}
|
|
1347
1430
|
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
if (typeof name !== "symbol" && typeof name !== "string" || name === "") {
|
|
1357
|
-
throw new TypeError("You must supply a name when creating a logger.");
|
|
1358
|
-
}
|
|
1359
|
-
var logger = _loggersByName[name];
|
|
1360
|
-
if (!logger) {
|
|
1361
|
-
logger = _loggersByName[name] = new Logger(name, defaultLogger.methodFactory);
|
|
1362
|
-
}
|
|
1363
|
-
return logger;
|
|
1364
|
-
};
|
|
1365
|
-
|
|
1366
|
-
// Grab the current global log variable in case of overwrite
|
|
1367
|
-
var _log = typeof window !== undefinedType ? window.log : undefined;
|
|
1368
|
-
defaultLogger.noConflict = function () {
|
|
1369
|
-
if (typeof window !== undefinedType && window.log === defaultLogger) {
|
|
1370
|
-
window.log = _log;
|
|
1371
|
-
}
|
|
1372
|
-
return defaultLogger;
|
|
1373
|
-
};
|
|
1374
|
-
defaultLogger.getLoggers = function getLoggers() {
|
|
1375
|
-
return _loggersByName;
|
|
1376
|
-
};
|
|
1431
|
+
function map(project, thisArg) {
|
|
1432
|
+
return operate(function (source, subscriber) {
|
|
1433
|
+
var index = 0;
|
|
1434
|
+
source.subscribe(createOperatorSubscriber(subscriber, function (value) {
|
|
1435
|
+
subscriber.next(project.call(thisArg, value, index++));
|
|
1436
|
+
}));
|
|
1437
|
+
});
|
|
1438
|
+
}
|
|
1377
1439
|
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1440
|
+
function filter(predicate, thisArg) {
|
|
1441
|
+
return operate(function (source, subscriber) {
|
|
1442
|
+
var index = 0;
|
|
1443
|
+
source.subscribe(createOperatorSubscriber(subscriber, function (value) {
|
|
1444
|
+
return predicate.call(thisArg, value, index++) && subscriber.next(value);
|
|
1445
|
+
}));
|
|
1446
|
+
});
|
|
1384
1447
|
}
|
|
1385
1448
|
|
|
1386
|
-
|
|
1387
|
-
|
|
1449
|
+
// refer to realm-network-api/src/common/enums/error-codes.enum.ts
|
|
1450
|
+
/*** Authentication Errors ***/
|
|
1451
|
+
var AuthErrorName;
|
|
1452
|
+
(function (AuthErrorName) {
|
|
1453
|
+
AuthErrorName["UNAUTHORIZED"] = "UNAUTHORIZED";
|
|
1454
|
+
AuthErrorName["INVALID_TOKEN"] = "INVALID_TOKEN";
|
|
1455
|
+
AuthErrorName["TOKEN_EXPIRED"] = "TOKEN_EXPIRED";
|
|
1456
|
+
AuthErrorName["INVALID_CREDENTIALS"] = "INVALID_CREDENTIALS";
|
|
1457
|
+
})(AuthErrorName || (AuthErrorName = {}));
|
|
1458
|
+
/*** Partner Access Token Errors ***/
|
|
1459
|
+
var PartnerAccessTokenErrorName;
|
|
1460
|
+
(function (PartnerAccessTokenErrorName) {
|
|
1461
|
+
PartnerAccessTokenErrorName["PARTNER_ACCESS_TOKEN_INVALID"] = "PARTNER_ACCESS_TOKEN_INVALID";
|
|
1462
|
+
PartnerAccessTokenErrorName["USER_MISMATCH"] = "USER_MISMATCH";
|
|
1463
|
+
})(PartnerAccessTokenErrorName || (PartnerAccessTokenErrorName = {}));
|
|
1464
|
+
/*** Realm ID Errors ***/
|
|
1465
|
+
var RealmIDErrorName;
|
|
1466
|
+
(function (RealmIDErrorName) {
|
|
1467
|
+
RealmIDErrorName["REALM_ID_NOT_FOUND"] = "REALM_ID_NOT_FOUND";
|
|
1468
|
+
RealmIDErrorName["REALM_ID_INVALID_NAME"] = "REALM_ID_INVALID_NAME";
|
|
1469
|
+
RealmIDErrorName["REALM_ID_ALREADY_EXISTS"] = "REALM_ID_ALREADY_EXISTS";
|
|
1470
|
+
RealmIDErrorName["REALM_ID_DUPLICATE_PARTNER_USER"] = "REALM_ID_DUPLICATE_PARTNER_USER";
|
|
1471
|
+
})(RealmIDErrorName || (RealmIDErrorName = {}));
|
|
1472
|
+
/*** Parameter Errors ***/
|
|
1473
|
+
var ParameterErrorName;
|
|
1474
|
+
(function (ParameterErrorName) {
|
|
1475
|
+
ParameterErrorName["INVALID_PARAMETER"] = "INVALID_PARAMETER";
|
|
1476
|
+
})(ParameterErrorName || (ParameterErrorName = {}));
|
|
1477
|
+
/*** Server Errors ***/
|
|
1478
|
+
var ServerErrorName;
|
|
1479
|
+
(function (ServerErrorName) {
|
|
1480
|
+
ServerErrorName["INTERNAL_SERVER_ERROR"] = "INTERNAL_SERVER_ERROR";
|
|
1481
|
+
})(ServerErrorName || (ServerErrorName = {}));
|
|
1482
|
+
/*** Passkey Errors ***/
|
|
1483
|
+
var PasskeyErrorName;
|
|
1484
|
+
(function (PasskeyErrorName) {
|
|
1485
|
+
PasskeyErrorName["PASSKEY_REGISTRATION_FAILED"] = "PASSKEY_REGISTRATION_FAILED";
|
|
1486
|
+
PasskeyErrorName["PASSKEY_AUTHENTICATION_FAILED"] = "PASSKEY_AUTHENTICATION_FAILED";
|
|
1487
|
+
PasskeyErrorName["PASSKEY_LIMIT_EXCEEDED"] = "PASSKEY_LIMIT_EXCEEDED";
|
|
1488
|
+
PasskeyErrorName["PASSKEY_NOT_FOUND"] = "PASSKEY_NOT_FOUND";
|
|
1489
|
+
PasskeyErrorName["PASSKEY_UNAUTHORIZED"] = "PASSKEY_UNAUTHORIZED";
|
|
1490
|
+
PasskeyErrorName["PASSKEY_CHALLENGE_INVALID"] = "PASSKEY_CHALLENGE_INVALID";
|
|
1491
|
+
})(PasskeyErrorName || (PasskeyErrorName = {}));
|
|
1492
|
+
/*** Passwordless Authentication Errors ***/
|
|
1493
|
+
var PasswordlessErrorName;
|
|
1494
|
+
(function (PasswordlessErrorName) {
|
|
1495
|
+
PasswordlessErrorName["PASSWORDLESS_CODE_EXPIRED"] = "PASSWORDLESS_CODE_EXPIRED";
|
|
1496
|
+
PasswordlessErrorName["PASSWORDLESS_INVALID_CODE"] = "PASSWORDLESS_INVALID_CODE";
|
|
1497
|
+
PasswordlessErrorName["PASSWORDLESS_MAX_ATTEMPTS"] = "PASSWORDLESS_MAX_ATTEMPTS";
|
|
1498
|
+
PasswordlessErrorName["PASSWORDLESS_HOURLY_LIMIT"] = "PASSWORDLESS_HOURLY_LIMIT";
|
|
1499
|
+
PasswordlessErrorName["PASSWORDLESS_LOCK_EXCEEDED"] = "PASSWORDLESS_LOCK_EXCEEDED";
|
|
1500
|
+
PasswordlessErrorName["CAPTCHA_TOKEN_VERIFICATION_FAILED"] = "CAPTCHA_TOKEN_VERIFICATION_FAILED";
|
|
1501
|
+
PasswordlessErrorName["CAPTCHA_TOKEN_INVALID"] = "CAPTCHA_TOKEN_INVALID";
|
|
1502
|
+
PasswordlessErrorName["CAPTCHA_SECRET_MISSING"] = "CAPTCHA_SECRET_MISSING";
|
|
1503
|
+
PasswordlessErrorName["CAPTCHA_TOKEN_MISSING"] = "CAPTCHA_TOKEN_MISSING";
|
|
1504
|
+
})(PasswordlessErrorName || (PasswordlessErrorName = {}));
|
|
1505
|
+
/*** Authentication Wallet Errors ***/
|
|
1506
|
+
var AuthWalletErrorName;
|
|
1507
|
+
(function (AuthWalletErrorName) {
|
|
1508
|
+
AuthWalletErrorName["AUTH_WALLET_LOCK_EXCEEDED"] = "AUTH_WALLET_LOCK_EXCEEDED";
|
|
1509
|
+
AuthWalletErrorName["AUTH_WALLET_NONCE_EXPIRED_OR_INVALID"] = "AUTH_WALLET_NONCE_EXPIRED_OR_INVALID";
|
|
1510
|
+
AuthWalletErrorName["AUTH_WALLET_ADDRESS_MISMATCH"] = "AUTH_WALLET_ADDRESS_MISMATCH";
|
|
1511
|
+
AuthWalletErrorName["AUTH_WALLET_SIGNATURE_VERIFICATION_FAILED"] = "AUTH_WALLET_SIGNATURE_VERIFICATION_FAILED";
|
|
1512
|
+
})(AuthWalletErrorName || (AuthWalletErrorName = {}));
|
|
1513
|
+
/*** Wallet Linking Errors ***/
|
|
1514
|
+
var WalletLinkErrorName;
|
|
1515
|
+
(function (WalletLinkErrorName) {
|
|
1516
|
+
WalletLinkErrorName["LINK_WALLET_ALREADY_LINKED"] = "LINK_WALLET_ALREADY_LINKED";
|
|
1517
|
+
WalletLinkErrorName["LINK_WALLET_LINKED_OTHER_ACCOUNT"] = "LINK_WALLET_LINKED_OTHER_ACCOUNT";
|
|
1518
|
+
WalletLinkErrorName["LINK_EMAIL_LINKED_OTHER_ACCOUNT"] = "LINK_EMAIL_LINKED_OTHER_ACCOUNT";
|
|
1519
|
+
})(WalletLinkErrorName || (WalletLinkErrorName = {}));
|
|
1520
|
+
/*** Intent Errors ***/
|
|
1521
|
+
var IntentErrorName;
|
|
1522
|
+
(function (IntentErrorName) {
|
|
1523
|
+
IntentErrorName["INTENT_INVALID"] = "INTENT_INVALID";
|
|
1524
|
+
IntentErrorName["INTENT_LOCK_EXCEEDED"] = "INTENT_LOCK_EXCEEDED";
|
|
1525
|
+
IntentErrorName["INTENT_REQUIRED"] = "INTENT_REQUIRED";
|
|
1526
|
+
IntentErrorName["INTENT_UNSUPPORTED_TYPE"] = "INTENT_UNSUPPORTED_TYPE";
|
|
1527
|
+
})(IntentErrorName || (IntentErrorName = {}));
|
|
1528
|
+
/*** Privy Errors ***/
|
|
1529
|
+
var PrivyErrorName;
|
|
1530
|
+
(function (PrivyErrorName) {
|
|
1531
|
+
PrivyErrorName["WALLET_PROVIDER_ERROR"] = "WALLET_PROVIDER_ERROR";
|
|
1532
|
+
})(PrivyErrorName || (PrivyErrorName = {}));
|
|
1533
|
+
/*** Air ID Errors ***/
|
|
1534
|
+
var AirIDErrorName;
|
|
1535
|
+
(function (AirIDErrorName) {
|
|
1536
|
+
AirIDErrorName["AIR_ID_MINT_TRANSACTION_NOT_FOUND"] = "AIR_ID_MINT_TRANSACTION_NOT_FOUND";
|
|
1537
|
+
AirIDErrorName["AIR_ID_ON_CHAIN_TRANSACTION_NOT_FOUND"] = "AIR_ID_ON_CHAIN_TRANSACTION_NOT_FOUND";
|
|
1538
|
+
AirIDErrorName["AIR_ID_NOT_FOUND"] = "AIR_ID_NOT_FOUND";
|
|
1539
|
+
AirIDErrorName["AIR_ID_INVALID_OR_DISABLED_CONFIGURATION"] = "AIR_ID_INVALID_OR_DISABLED_CONFIGURATION";
|
|
1540
|
+
AirIDErrorName["AIR_ID_RPC_URL_NOT_CONFIGURED"] = "AIR_ID_RPC_URL_NOT_CONFIGURED";
|
|
1541
|
+
AirIDErrorName["AIR_ID_INVALID_STATUS"] = "AIR_ID_INVALID_STATUS";
|
|
1542
|
+
AirIDErrorName["AIR_ID_PARTNER_ELIGIBILITY_CHECK_FAILED"] = "AIR_ID_PARTNER_ELIGIBILITY_CHECK_FAILED";
|
|
1543
|
+
AirIDErrorName["AIR_ID_PARTNER_ELIGIBILITY_CHECK_TIMEOUT"] = "AIR_ID_PARTNER_ELIGIBILITY_CHECK_TIMEOUT";
|
|
1544
|
+
AirIDErrorName["AIR_ID_MULTIPLE_AIR_IDS_FOUND"] = "AIR_ID_MULTIPLE_AIR_IDS_FOUND";
|
|
1545
|
+
AirIDErrorName["AIR_ID_NAME_RESERVED"] = "AIR_ID_NAME_RESERVED";
|
|
1546
|
+
AirIDErrorName["AIR_ID_NAME_PROFANITY"] = "AIR_ID_NAME_PROFANITY";
|
|
1547
|
+
AirIDErrorName["AIR_ID_USER_ALREADY_HAS_AIR_ID"] = "AIR_ID_USER_ALREADY_HAS_AIR_ID";
|
|
1548
|
+
AirIDErrorName["AIR_ID_NAME_ALREADY_EXISTS"] = "AIR_ID_NAME_ALREADY_EXISTS";
|
|
1549
|
+
AirIDErrorName["AIR_ID_INVALID_MINT_NAME"] = "AIR_ID_INVALID_MINT_NAME";
|
|
1550
|
+
AirIDErrorName["AIR_ID_MINT_TRANSACTION_HASH_MISMATCH"] = "AIR_ID_MINT_TRANSACTION_HASH_MISMATCH";
|
|
1551
|
+
})(AirIDErrorName || (AirIDErrorName = {}));
|
|
1552
|
+
/*** Window Errors ***/
|
|
1553
|
+
var WindowErrorName;
|
|
1554
|
+
(function (WindowErrorName) {
|
|
1555
|
+
WindowErrorName["WINDOW_BLOCKED"] = "WINDOW_BLOCKED";
|
|
1556
|
+
WindowErrorName["WINDOW_CLOSED"] = "WINDOW_CLOSED";
|
|
1557
|
+
})(WindowErrorName || (WindowErrorName = {}));
|
|
1558
|
+
const Codes = {
|
|
1559
|
+
...AuthErrorName,
|
|
1560
|
+
...PartnerAccessTokenErrorName,
|
|
1561
|
+
...RealmIDErrorName,
|
|
1562
|
+
...ParameterErrorName,
|
|
1563
|
+
...ServerErrorName,
|
|
1564
|
+
...PasskeyErrorName,
|
|
1565
|
+
...PasswordlessErrorName,
|
|
1566
|
+
...AuthWalletErrorName,
|
|
1567
|
+
...WalletLinkErrorName,
|
|
1568
|
+
...IntentErrorName,
|
|
1569
|
+
...PrivyErrorName,
|
|
1570
|
+
...AirIDErrorName,
|
|
1571
|
+
...WindowErrorName
|
|
1572
|
+
};
|
|
1388
1573
|
|
|
1389
|
-
|
|
1574
|
+
const AirClientUserErrors = ["USER_CANCELLED", "CONFIG_ERROR", "CLIENT_ERROR", "UNKNOWN_ERROR", "PERMISSION_NOT_ENABLED", "SMART_ACCOUNT_NOT_DEPLOYED"];
|
|
1390
1575
|
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
AirWalletProviderMessageTypes["RESPONSE"] = "JRPC_RESPONSE";
|
|
1395
|
-
AirWalletProviderMessageTypes["EVENT"] = "JRPC_EVENT";
|
|
1396
|
-
})(AirWalletProviderMessageTypes || (AirWalletProviderMessageTypes = {}));
|
|
1576
|
+
class AirError extends BaseError {}
|
|
1577
|
+
new Set(AirClientUserErrors);
|
|
1578
|
+
new Set(Object.values(Codes));
|
|
1397
1579
|
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
return this._authMessage$.asObservable();
|
|
1443
|
-
}
|
|
1444
|
-
get providerMessage$() {
|
|
1445
|
-
return this._providerMessage$.asObservable();
|
|
1446
|
-
}
|
|
1447
|
-
get providerEvent$() {
|
|
1448
|
-
return this._providerEvent$.asObservable();
|
|
1449
|
-
}
|
|
1450
|
-
async openAuthObservables({ authIframeOrigin }) {
|
|
1451
|
-
this.closeAuthObservables();
|
|
1452
|
-
this.setupAuthObservables();
|
|
1453
|
-
const handleAuthMessage = async (ev) => {
|
|
1454
|
-
if (ev.origin !== authIframeOrigin || !ev.data || !(ev.data instanceof Object))
|
|
1455
|
-
return;
|
|
1456
|
-
log.debug("Embed auth message received from auth", ev.data);
|
|
1457
|
-
if (AUTH_MESSAGES.includes(ev.data.type)) {
|
|
1458
|
-
this._authMessage$.next(ev.data);
|
|
1459
|
-
}
|
|
1460
|
-
};
|
|
1461
|
-
window.addEventListener("message", handleAuthMessage);
|
|
1462
|
-
this.closeAuthMessageListeners = () => {
|
|
1463
|
-
window.removeEventListener("message", handleAuthMessage);
|
|
1464
|
-
};
|
|
1465
|
-
}
|
|
1466
|
-
async openWalletObservables({ walletIframeOrigin }) {
|
|
1467
|
-
this.closeAirObservables();
|
|
1468
|
-
this.setupAirObservables();
|
|
1469
|
-
const handleMessage = async (ev) => {
|
|
1470
|
-
if (ev.origin !== walletIframeOrigin || !ev.data || !(ev.data instanceof Object))
|
|
1471
|
-
return;
|
|
1472
|
-
log.debug("Account messages received from wallet frontend", ev.data);
|
|
1473
|
-
if (ACCOUNT_MESSAGES.includes(ev.data.type)) {
|
|
1474
|
-
this.airMessages$.next(ev.data);
|
|
1475
|
-
}
|
|
1476
|
-
};
|
|
1477
|
-
window.addEventListener("message", handleMessage);
|
|
1478
|
-
this.closeRealmMessageListeners = () => {
|
|
1479
|
-
window.removeEventListener("message", handleMessage);
|
|
1480
|
-
};
|
|
1481
|
-
this.closeWalletObservables();
|
|
1482
|
-
this.setupWalletObservables();
|
|
1483
|
-
const handleWalletMessage = async (ev) => {
|
|
1484
|
-
if (ev.origin !== walletIframeOrigin || !ev.data || !(ev.data instanceof Object))
|
|
1485
|
-
return;
|
|
1486
|
-
log.debug("Wallet provider messages received from wallet frontend", ev.data);
|
|
1487
|
-
if (ev.data.type === AirWalletProviderMessageTypes.RESPONSE) {
|
|
1488
|
-
this._providerMessage$.next(ev.data);
|
|
1489
|
-
}
|
|
1490
|
-
if (ev.data.type === AirWalletProviderMessageTypes.EVENT) {
|
|
1491
|
-
this._providerEvent$.next(ev.data);
|
|
1492
|
-
}
|
|
1493
|
-
};
|
|
1494
|
-
window.addEventListener("message", handleWalletMessage);
|
|
1495
|
-
this.closeWalletMessageListeners = () => {
|
|
1496
|
-
window.removeEventListener("message", handleWalletMessage);
|
|
1497
|
-
};
|
|
1498
|
-
}
|
|
1499
|
-
setupIframeCommunication(authIframe, walletIframe, skipWalletLogin) {
|
|
1500
|
-
const channel = new MessageChannel();
|
|
1501
|
-
const authOrigin = new URL(authIframe.src).origin;
|
|
1502
|
-
authIframe.contentWindow.postMessage({
|
|
1503
|
-
type: AirAuthMessageTypes.INIT_WALLET_COMMUNICATION,
|
|
1504
|
-
}, authOrigin, [channel.port1]);
|
|
1505
|
-
const walletOrigin = new URL(walletIframe.src).origin;
|
|
1506
|
-
walletIframe.contentWindow.postMessage({
|
|
1507
|
-
type: AirMessageTypes.INIT_AUTH_COMMUNICATION,
|
|
1508
|
-
payload: {
|
|
1509
|
-
skipWalletLogin,
|
|
1510
|
-
},
|
|
1511
|
-
}, walletOrigin, [channel.port2]);
|
|
1512
|
-
}
|
|
1513
|
-
async sendGrantPermissionRequest(walletIframe, policies) {
|
|
1514
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.GRANT_PERMISSIONS_RESPONSE)));
|
|
1515
|
-
const { origin } = new URL(walletIframe.src);
|
|
1516
|
-
walletIframe.contentWindow.postMessage({
|
|
1517
|
-
type: AirMessageTypes.GRANT_PERMISSIONS_REQUEST,
|
|
1518
|
-
payload: {
|
|
1519
|
-
policies,
|
|
1520
|
-
},
|
|
1521
|
-
}, origin);
|
|
1522
|
-
const result = await response;
|
|
1523
|
-
if (result.payload.success === false) {
|
|
1524
|
-
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1525
|
-
}
|
|
1526
|
-
return result.payload.sessionData;
|
|
1527
|
-
}
|
|
1528
|
-
async sendExecuteActionRequest(walletIframe, params) {
|
|
1529
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.EXECUTE_ACTION_RESPONSE)));
|
|
1530
|
-
const { origin } = new URL(walletIframe.src);
|
|
1531
|
-
walletIframe.contentWindow.postMessage({
|
|
1532
|
-
type: AirMessageTypes.EXECUTE_ACTION_REQUEST,
|
|
1533
|
-
payload: {
|
|
1534
|
-
sessionData: params.sessionData,
|
|
1535
|
-
call: {
|
|
1536
|
-
to: params.call.to,
|
|
1537
|
-
value: params.call.value,
|
|
1538
|
-
data: params.call.data,
|
|
1539
|
-
},
|
|
1540
|
-
sessionOwnerPrivateKey: params.sessionOwnerPrivateKey,
|
|
1541
|
-
},
|
|
1542
|
-
}, origin);
|
|
1543
|
-
const result = await response;
|
|
1544
|
-
if (result.payload.success === false) {
|
|
1545
|
-
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1546
|
-
}
|
|
1547
|
-
return result.payload.txHash;
|
|
1548
|
-
}
|
|
1549
|
-
async sendRevokePermissionsRequest(walletIframe, permissionId) {
|
|
1550
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.REVOKE_PERMISSIONS_RESPONSE)));
|
|
1551
|
-
const { origin } = new URL(walletIframe.src);
|
|
1552
|
-
walletIframe.contentWindow.postMessage({
|
|
1553
|
-
type: AirMessageTypes.REVOKE_PERMISSIONS_REQUEST,
|
|
1554
|
-
payload: {
|
|
1555
|
-
permissionId,
|
|
1556
|
-
},
|
|
1557
|
-
}, origin);
|
|
1558
|
-
const result = await response;
|
|
1559
|
-
if (result.payload.success === false) {
|
|
1560
|
-
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
1561
|
-
}
|
|
1562
|
-
return result.payload.txHash;
|
|
1563
|
-
}
|
|
1564
|
-
sendDeploySmartAccountRequest(walletIframe) {
|
|
1565
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.DEPLOY_SMART_ACCOUNT_RESPONSE)));
|
|
1566
|
-
const { origin } = new URL(walletIframe.src);
|
|
1567
|
-
walletIframe.contentWindow.postMessage({
|
|
1568
|
-
type: AirMessageTypes.DEPLOY_SMART_ACCOUNT_REQUEST,
|
|
1569
|
-
}, origin);
|
|
1570
|
-
return response;
|
|
1571
|
-
}
|
|
1572
|
-
async sendIsSmartAccountDeployedRequest(walletIframe) {
|
|
1573
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.IS_SMART_ACCOUNT_DEPLOYED_RESPONSE)));
|
|
1574
|
-
const { origin } = new URL(walletIframe.src);
|
|
1575
|
-
walletIframe.contentWindow.postMessage({
|
|
1576
|
-
type: AirMessageTypes.IS_SMART_ACCOUNT_DEPLOYED_REQUEST,
|
|
1577
|
-
}, origin);
|
|
1578
|
-
return response;
|
|
1579
|
-
}
|
|
1580
|
-
async sendPartnerUserInfoRequest(authIframe) {
|
|
1581
|
-
const response = firstValueFrom(this.authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.PARTNER_USER_INFO_RESPONSE)));
|
|
1582
|
-
const { origin } = new URL(authIframe.src);
|
|
1583
|
-
authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.PARTNER_USER_INFO_REQUEST }, origin);
|
|
1584
|
-
return response;
|
|
1585
|
-
}
|
|
1586
|
-
async sendAuthLoginRequest(authIframe, payload) {
|
|
1587
|
-
const response = firstValueFrom(this.authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.LOGIN_RESPONSE)));
|
|
1588
|
-
const { origin } = new URL(authIframe.src);
|
|
1589
|
-
authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.LOGIN_REQUEST, payload }, origin);
|
|
1590
|
-
return response;
|
|
1591
|
-
}
|
|
1592
|
-
async logoutAuth(authIframe) {
|
|
1593
|
-
const response = firstValueFrom(this.authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.LOGOUT_RESPONSE)));
|
|
1594
|
-
const { origin } = new URL(authIframe.src);
|
|
1595
|
-
authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.LOGOUT_REQUEST }, origin);
|
|
1596
|
-
return response;
|
|
1597
|
-
}
|
|
1598
|
-
async logoutWallet(walletIframe) {
|
|
1599
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.LOGOUT_RESPONSE)));
|
|
1600
|
-
const { origin } = new URL(walletIframe.src);
|
|
1601
|
-
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.LOGOUT_REQUEST }, origin);
|
|
1602
|
-
return response;
|
|
1603
|
-
}
|
|
1604
|
-
sendResetAuthServiceWalletCommunication(authIframe) {
|
|
1605
|
-
const { origin: authOrigin } = new URL(authIframe.src);
|
|
1606
|
-
authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.RESET_WALLET_COMMUNICATION }, authOrigin);
|
|
1607
|
-
}
|
|
1608
|
-
async sendAuthInitializationRequest(authIframe, payload) {
|
|
1609
|
-
const response = firstValueFrom(this._authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.INITIALIZATION_RESPONSE)));
|
|
1610
|
-
const { origin } = new URL(authIframe.src);
|
|
1611
|
-
authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.INITIALIZATION_REQUEST, payload }, origin);
|
|
1612
|
-
return response;
|
|
1613
|
-
}
|
|
1614
|
-
async sendWalletInitializationRequest(walletIframe, payload) {
|
|
1615
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.INITIALIZATION_RESPONSE)));
|
|
1616
|
-
const { origin } = new URL(walletIframe.src);
|
|
1617
|
-
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.INITIALIZATION_REQUEST, payload }, origin);
|
|
1618
|
-
return response;
|
|
1619
|
-
}
|
|
1620
|
-
async sendCrossPartnerTokenRequest(authIframe, targetPartnerUrl) {
|
|
1621
|
-
const response = firstValueFrom(this.authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE)));
|
|
1622
|
-
const { origin } = new URL(authIframe.src);
|
|
1623
|
-
authIframe.contentWindow.postMessage({
|
|
1624
|
-
type: AirAuthMessageTypes.CROSS_PARTNER_TOKEN_REQUEST,
|
|
1625
|
-
payload: {
|
|
1626
|
-
targetPartnerUrl,
|
|
1627
|
-
},
|
|
1628
|
-
}, origin);
|
|
1629
|
-
return response;
|
|
1630
|
-
}
|
|
1631
|
-
async sendGrantPermissionsRequest(walletIframe, payload) {
|
|
1632
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.GRANT_PERMISSIONS_RESPONSE)));
|
|
1633
|
-
const { origin } = new URL(walletIframe.src);
|
|
1634
|
-
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.GRANT_PERMISSIONS_REQUEST, payload }, origin);
|
|
1635
|
-
return response;
|
|
1636
|
-
}
|
|
1637
|
-
async sendListAllSessionKeyScopesRequest(walletIframe) {
|
|
1638
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.LIST_ALL_SESSION_KEY_SCOPES_RESPONSE)));
|
|
1639
|
-
const { origin } = new URL(walletIframe.src);
|
|
1640
|
-
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.LIST_ALL_SESSION_KEY_SCOPES_REQUEST }, origin);
|
|
1641
|
-
return response;
|
|
1642
|
-
}
|
|
1643
|
-
onWalletInitialized() {
|
|
1644
|
-
return firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.WALLET_INITIALIZED)));
|
|
1645
|
-
}
|
|
1646
|
-
sendWalletLoginRequest(walletIframe) {
|
|
1647
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.WALLET_LOGIN_RESPONSE)));
|
|
1648
|
-
const { origin } = new URL(walletIframe.src);
|
|
1649
|
-
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.WALLET_LOGIN_REQUEST }, origin);
|
|
1650
|
-
return response;
|
|
1651
|
-
}
|
|
1652
|
-
async sendSetupMfaRequest(walletIframe) {
|
|
1653
|
-
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.SETUP_MFA_RESPONSE)));
|
|
1654
|
-
const { origin } = new URL(walletIframe.src);
|
|
1655
|
-
walletIframe.contentWindow.postMessage({ type: AirMessageTypes.SETUP_MFA_REQUEST }, origin);
|
|
1656
|
-
return response;
|
|
1580
|
+
class MessageServiceBase {
|
|
1581
|
+
get events$() {
|
|
1582
|
+
return this._events$;
|
|
1583
|
+
}
|
|
1584
|
+
get messages$() {
|
|
1585
|
+
return this._messages$;
|
|
1586
|
+
}
|
|
1587
|
+
get isOpen() {
|
|
1588
|
+
return !!this.closeListener;
|
|
1589
|
+
}
|
|
1590
|
+
constructor(name, allowedMessageTypes) {
|
|
1591
|
+
this.name = name;
|
|
1592
|
+
this.allowedMessageTypes = allowedMessageTypes;
|
|
1593
|
+
this.closeListener = null;
|
|
1594
|
+
}
|
|
1595
|
+
async _open(target) {
|
|
1596
|
+
await this.close();
|
|
1597
|
+
this.eventSubject = new Subject();
|
|
1598
|
+
this._events$ = this.eventSubject.asObservable();
|
|
1599
|
+
this._messages$ = this.eventSubject.pipe(map(ev => ev.data));
|
|
1600
|
+
this._events$.subscribe(event => {
|
|
1601
|
+
const sentOrReceived = event.origin === window.origin ? "sent" : "received";
|
|
1602
|
+
log.debug(`[${this.name}] Message ${sentOrReceived}:`, event.data);
|
|
1603
|
+
});
|
|
1604
|
+
const handleMessage = async ev => {
|
|
1605
|
+
if (this.targetOrigin && ev.origin !== this.targetOrigin || !ev.data || !(ev.data instanceof Object)) return;
|
|
1606
|
+
if (this.isMessageAllowed(ev.data)) {
|
|
1607
|
+
await this.onBeforeEvent(ev);
|
|
1608
|
+
this.eventSubject.next(ev);
|
|
1609
|
+
}
|
|
1610
|
+
};
|
|
1611
|
+
if (target instanceof MessagePort) {
|
|
1612
|
+
this.messagePort = target;
|
|
1613
|
+
target.onmessage = handleMessage;
|
|
1614
|
+
this.closeListener = async () => {
|
|
1615
|
+
target.close();
|
|
1616
|
+
};
|
|
1617
|
+
} else {
|
|
1618
|
+
this.targetWindow = target.window;
|
|
1619
|
+
this.targetOrigin = target.origin;
|
|
1620
|
+
window.addEventListener("message", handleMessage);
|
|
1621
|
+
this.closeListener = async () => {
|
|
1622
|
+
window.removeEventListener("message", handleMessage);
|
|
1623
|
+
};
|
|
1657
1624
|
}
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1625
|
+
}
|
|
1626
|
+
isMessageAllowed(message) {
|
|
1627
|
+
return this.allowedMessageTypes.includes(message.type);
|
|
1628
|
+
}
|
|
1629
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1630
|
+
async onBeforeEvent(_event) {
|
|
1631
|
+
// by default not used
|
|
1632
|
+
}
|
|
1633
|
+
async close() {
|
|
1634
|
+
if (this.closeListener) {
|
|
1635
|
+
await this.closeListener();
|
|
1636
|
+
this.closeListener = null;
|
|
1667
1637
|
}
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
walletIframe.contentWindow.postMessage({
|
|
1671
|
-
type: AirMessageTypes.OPEN_WINDOW_RESPONSE,
|
|
1672
|
-
payload: {
|
|
1673
|
-
success: false,
|
|
1674
|
-
windowId,
|
|
1675
|
-
errorName: "UNKNOWN_ERROR",
|
|
1676
|
-
errorMessage: error.message,
|
|
1677
|
-
},
|
|
1678
|
-
}, walletOrigin);
|
|
1638
|
+
if (this.eventSubject && !this.eventSubject.closed) {
|
|
1639
|
+
this.eventSubject.complete();
|
|
1679
1640
|
}
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1641
|
+
}
|
|
1642
|
+
createErrorResponseMessage(type, error) {
|
|
1643
|
+
return {
|
|
1644
|
+
type,
|
|
1645
|
+
payload: {
|
|
1646
|
+
success: false,
|
|
1647
|
+
errorName: error instanceof AirError ? error.name : "UNKNOWN_ERROR",
|
|
1648
|
+
errorMessage: error.message
|
|
1649
|
+
}
|
|
1650
|
+
};
|
|
1651
|
+
}
|
|
1652
|
+
async sendMessage(message, transfer) {
|
|
1653
|
+
// To prevent any non-cloneable objects causing errors in postMessage
|
|
1654
|
+
const clonedMessage = this.deepClone(message);
|
|
1655
|
+
if (this.messagePort) {
|
|
1656
|
+
this.messagePort.postMessage(clonedMessage);
|
|
1657
|
+
this.eventSubject.next(new MessageEvent("message", {
|
|
1658
|
+
data: clonedMessage,
|
|
1659
|
+
origin: window.origin
|
|
1660
|
+
}));
|
|
1661
|
+
} else if (this.targetWindow && this.targetOrigin) {
|
|
1662
|
+
this.targetWindow.postMessage(clonedMessage, this.targetOrigin, transfer);
|
|
1663
|
+
this.eventSubject.next(new MessageEvent("message", {
|
|
1664
|
+
data: clonedMessage,
|
|
1665
|
+
origin: window.origin
|
|
1666
|
+
}));
|
|
1667
|
+
} else {
|
|
1668
|
+
log.debug(`[${this.name}] Not opened yet`);
|
|
1688
1669
|
}
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1670
|
+
}
|
|
1671
|
+
deepClone(message) {
|
|
1672
|
+
try {
|
|
1673
|
+
return JSON.parse(JSON.stringify(message));
|
|
1674
|
+
} catch (e) {
|
|
1675
|
+
log.warn("Error generating cloneable message", e);
|
|
1676
|
+
return message;
|
|
1694
1677
|
}
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1678
|
+
}
|
|
1679
|
+
}
|
|
1680
|
+
|
|
1681
|
+
var AirWalletProviderMessageTypes;
|
|
1682
|
+
(function (AirWalletProviderMessageTypes) {
|
|
1683
|
+
AirWalletProviderMessageTypes["REQUEST"] = "JRPC_REQUEST";
|
|
1684
|
+
AirWalletProviderMessageTypes["RESPONSE"] = "JRPC_RESPONSE";
|
|
1685
|
+
AirWalletProviderMessageTypes["EVENT"] = "JRPC_EVENT";
|
|
1686
|
+
})(AirWalletProviderMessageTypes || (AirWalletProviderMessageTypes = {}));
|
|
1687
|
+
|
|
1688
|
+
var _a$2, _ProviderMessageService_instance;
|
|
1689
|
+
const ALLOWED_PROVIDER_MESSAGES = [
|
|
1690
|
+
AirWalletProviderMessageTypes.RESPONSE,
|
|
1691
|
+
AirWalletProviderMessageTypes.EVENT,
|
|
1692
|
+
];
|
|
1693
|
+
class ProviderMessageService extends MessageServiceBase {
|
|
1694
|
+
static create() {
|
|
1695
|
+
if (__classPrivateFieldGet(this, _a$2, "f", _ProviderMessageService_instance))
|
|
1696
|
+
throw new Error("ProviderMessageService already created");
|
|
1697
|
+
__classPrivateFieldSet(this, _a$2, new _a$2("Embed Service: Provider Channel", ALLOWED_PROVIDER_MESSAGES), "f", _ProviderMessageService_instance);
|
|
1698
|
+
return __classPrivateFieldGet(this, _a$2, "f", _ProviderMessageService_instance);
|
|
1699
|
+
}
|
|
1700
|
+
async open(walletIframe) {
|
|
1701
|
+
const origin = new URL(walletIframe.src).origin;
|
|
1702
|
+
const window = walletIframe.contentWindow;
|
|
1703
|
+
await super._open({ window, origin });
|
|
1704
|
+
}
|
|
1705
|
+
async sendWalletProviderRequest(payload) {
|
|
1706
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletProviderMessageTypes.RESPONSE), filter((msg) => msg.payload.method === payload.method)));
|
|
1707
|
+
await this.sendMessage({
|
|
1700
1708
|
type: AirWalletProviderMessageTypes.REQUEST,
|
|
1701
1709
|
payload,
|
|
1702
|
-
}
|
|
1703
|
-
return response;
|
|
1704
|
-
}
|
|
1705
|
-
closeAuthObservables() {
|
|
1706
|
-
if (this._authMessage$ && !this._authMessage$.closed)
|
|
1707
|
-
this._authMessage$.complete();
|
|
1708
|
-
if (this.closeAuthMessageListeners)
|
|
1709
|
-
this.closeAuthMessageListeners();
|
|
1710
|
-
}
|
|
1711
|
-
closeAirObservables() {
|
|
1712
|
-
if (this.airMessages$ && !this.airMessages$.closed)
|
|
1713
|
-
this.airMessages$.complete();
|
|
1714
|
-
if (this.closeRealmMessageListeners)
|
|
1715
|
-
this.closeRealmMessageListeners();
|
|
1716
|
-
}
|
|
1717
|
-
closeWalletObservables() {
|
|
1718
|
-
if (this._providerMessage$ && !this._providerMessage$.closed)
|
|
1719
|
-
this._providerMessage$.complete();
|
|
1720
|
-
if (this._providerEvent$ && !this._providerEvent$.closed)
|
|
1721
|
-
this._providerEvent$.complete();
|
|
1722
|
-
if (this.closeWalletMessageListeners)
|
|
1723
|
-
this.closeWalletMessageListeners();
|
|
1724
|
-
}
|
|
1725
|
-
setupAuthObservables() {
|
|
1726
|
-
this._authMessage$ = new Subject();
|
|
1727
|
-
}
|
|
1728
|
-
setupAirObservables() {
|
|
1729
|
-
this.airMessages$ = new Subject();
|
|
1730
|
-
}
|
|
1731
|
-
setupWalletObservables() {
|
|
1732
|
-
this._providerMessage$ = new Subject();
|
|
1733
|
-
this._providerEvent$ = new Subject();
|
|
1734
|
-
}
|
|
1735
|
-
async sendPartnerAccessTokenRequest(authIframe) {
|
|
1736
|
-
const response = firstValueFrom(this.authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.PARTNER_ACCESS_TOKEN_RESPONSE)));
|
|
1737
|
-
const { origin } = new URL(authIframe.src);
|
|
1738
|
-
authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.PARTNER_ACCESS_TOKEN_REQUEST }, origin);
|
|
1710
|
+
});
|
|
1739
1711
|
return response;
|
|
1740
1712
|
}
|
|
1741
1713
|
}
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
const BUILD_ENV = {
|
|
1745
|
-
PRODUCTION: "production",
|
|
1746
|
-
UAT: "uat",
|
|
1747
|
-
STAGING: "staging",
|
|
1748
|
-
DEVELOPMENT: "development",
|
|
1749
|
-
};
|
|
1750
|
-
|
|
1751
|
-
const AIR_URLS = {
|
|
1752
|
-
[BUILD_ENV.DEVELOPMENT]: {
|
|
1753
|
-
authUrl: "http://localhost:8100",
|
|
1754
|
-
walletUrl: "http://localhost:8200",
|
|
1755
|
-
logLevel: "debug",
|
|
1756
|
-
},
|
|
1757
|
-
[BUILD_ENV.UAT]: {
|
|
1758
|
-
authUrl: "https://auth.uat.air3.com",
|
|
1759
|
-
walletUrl: "https://account.uat.air3.com",
|
|
1760
|
-
logLevel: "info",
|
|
1761
|
-
},
|
|
1762
|
-
[BUILD_ENV.STAGING]: {
|
|
1763
|
-
authUrl: "https://auth.staging.air3.com",
|
|
1764
|
-
walletUrl: "https://account.staging.air3.com",
|
|
1765
|
-
logLevel: "info",
|
|
1766
|
-
},
|
|
1767
|
-
[BUILD_ENV.PRODUCTION]: {
|
|
1768
|
-
authUrl: "https://auth.air3.com",
|
|
1769
|
-
walletUrl: "https://account.air3.com",
|
|
1770
|
-
logLevel: "error",
|
|
1771
|
-
},
|
|
1772
|
-
};
|
|
1773
|
-
const isElement = (element) => element instanceof Element || element instanceof Document;
|
|
1774
|
-
const randomId = () => Math.random().toString(36).slice(2);
|
|
1775
|
-
const getWindowFeatures = (width, height) => {
|
|
1776
|
-
const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;
|
|
1777
|
-
const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;
|
|
1778
|
-
const w = window.innerWidth
|
|
1779
|
-
? window.innerWidth
|
|
1780
|
-
: document.documentElement.clientWidth
|
|
1781
|
-
? document.documentElement.clientWidth
|
|
1782
|
-
: window.screen.width;
|
|
1783
|
-
const h = window.innerHeight
|
|
1784
|
-
? window.innerHeight
|
|
1785
|
-
: document.documentElement.clientHeight
|
|
1786
|
-
? document.documentElement.clientHeight
|
|
1787
|
-
: window.screen.height;
|
|
1788
|
-
const systemZoom = 1; // No reliable estimate
|
|
1789
|
-
const left = Math.abs((w - width) / 2 / systemZoom + dualScreenLeft);
|
|
1790
|
-
const top = Math.abs((h - height) / 2 / systemZoom + dualScreenTop);
|
|
1791
|
-
return `titlebar=0,toolbar=0,status=0,location=0,menubar=0,height=${height / systemZoom},width=${width / systemZoom},top=${top},left=${left}`;
|
|
1792
|
-
};
|
|
1714
|
+
_a$2 = ProviderMessageService;
|
|
1715
|
+
_ProviderMessageService_instance = { value: undefined };
|
|
1793
1716
|
|
|
1794
|
-
var _AirWalletProvider_instances, _AirWalletProvider_isLoggedIn, _AirWalletProvider_ensureWallet,
|
|
1717
|
+
var _AirWalletProvider_instances, _AirWalletProvider_providerMessageService, _AirWalletProvider_isLoggedIn, _AirWalletProvider_ensureWallet, _AirWalletProvider_eventListeners, _AirWalletProvider_emit;
|
|
1795
1718
|
class AirWalletProvider {
|
|
1796
|
-
constructor({ isLoggedIn, ensureWallet,
|
|
1719
|
+
constructor({ isLoggedIn, ensureWallet, }) {
|
|
1797
1720
|
_AirWalletProvider_instances.add(this);
|
|
1721
|
+
_AirWalletProvider_providerMessageService.set(this, undefined);
|
|
1798
1722
|
_AirWalletProvider_isLoggedIn.set(this, undefined);
|
|
1799
1723
|
_AirWalletProvider_ensureWallet.set(this, undefined);
|
|
1800
|
-
_AirWalletProvider_getWalletIframeController.set(this, undefined);
|
|
1801
1724
|
_AirWalletProvider_eventListeners.set(this, undefined);
|
|
1802
|
-
this.startEventMessageListening = () => {
|
|
1803
|
-
|
|
1725
|
+
this.startEventMessageListening = async (walletIframe) => {
|
|
1726
|
+
await __classPrivateFieldGet(this, _AirWalletProvider_providerMessageService, "f").open(walletIframe);
|
|
1727
|
+
__classPrivateFieldGet(this, _AirWalletProvider_providerMessageService, "f").messages$
|
|
1728
|
+
.pipe(filter((msg) => msg.type === AirWalletProviderMessageTypes.EVENT))
|
|
1729
|
+
.subscribe((message) => {
|
|
1804
1730
|
__classPrivateFieldGet(this, _AirWalletProvider_instances, "m", _AirWalletProvider_emit).call(this, message.payload.event, ...[message.payload.data]);
|
|
1805
1731
|
});
|
|
1806
1732
|
};
|
|
1733
|
+
__classPrivateFieldSet(this, _AirWalletProvider_providerMessageService, ProviderMessageService.create(), "f");
|
|
1807
1734
|
__classPrivateFieldSet(this, _AirWalletProvider_isLoggedIn, isLoggedIn, "f");
|
|
1808
1735
|
__classPrivateFieldSet(this, _AirWalletProvider_ensureWallet, ensureWallet, "f");
|
|
1809
|
-
__classPrivateFieldSet(this, _AirWalletProvider_getWalletIframeController, getWalletIframeController, "f");
|
|
1810
1736
|
__classPrivateFieldSet(this, _AirWalletProvider_eventListeners, {
|
|
1811
1737
|
connect: [],
|
|
1812
1738
|
disconnect: [],
|
|
@@ -1842,7 +1768,7 @@
|
|
|
1842
1768
|
throw ensureProviderRpcError(error);
|
|
1843
1769
|
}
|
|
1844
1770
|
const requestId = randomId();
|
|
1845
|
-
const response = await
|
|
1771
|
+
const response = await __classPrivateFieldGet(this, _AirWalletProvider_providerMessageService, "f").sendWalletProviderRequest({
|
|
1846
1772
|
requestId,
|
|
1847
1773
|
...request,
|
|
1848
1774
|
});
|
|
@@ -1872,13 +1798,13 @@
|
|
|
1872
1798
|
}, "f");
|
|
1873
1799
|
}
|
|
1874
1800
|
}
|
|
1875
|
-
|
|
1801
|
+
_AirWalletProvider_providerMessageService = new WeakMap(), _AirWalletProvider_isLoggedIn = new WeakMap(), _AirWalletProvider_ensureWallet = new WeakMap(), _AirWalletProvider_eventListeners = new WeakMap(), _AirWalletProvider_instances = new WeakSet(), _AirWalletProvider_emit = function _AirWalletProvider_emit(eventName, ...args) {
|
|
1876
1802
|
(__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] || []).forEach((listener) => {
|
|
1877
1803
|
try {
|
|
1878
1804
|
return listener(...args);
|
|
1879
1805
|
}
|
|
1880
1806
|
catch (error) {
|
|
1881
|
-
log
|
|
1807
|
+
log.warn(error);
|
|
1882
1808
|
}
|
|
1883
1809
|
});
|
|
1884
1810
|
};
|
|
@@ -1946,85 +1872,137 @@
|
|
|
1946
1872
|
isVisible: false,
|
|
1947
1873
|
};
|
|
1948
1874
|
|
|
1875
|
+
/**
|
|
1876
|
+
* Creates a window features string for `window.open`, based on the current screen size.
|
|
1877
|
+
* It tries to center the window and limits the size to the given max width and height.
|
|
1878
|
+
* Slightly reduces the size to avoid browser auto-resizing.
|
|
1879
|
+
*/
|
|
1880
|
+
const getWindowFeatures = (maxWidth, maxHeight) => {
|
|
1881
|
+
const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;
|
|
1882
|
+
const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;
|
|
1883
|
+
const w = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : window.screen.width;
|
|
1884
|
+
const h = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : window.screen.height;
|
|
1885
|
+
// 95% adjustment for mobile devices, some browser might resize the window
|
|
1886
|
+
const finalWidth = Math.min(w, maxWidth) * 0.95;
|
|
1887
|
+
const finalHeight = Math.min(h, maxHeight) * 0.95;
|
|
1888
|
+
const systemZoom = 1; // No reliable estimate
|
|
1889
|
+
const left = Math.abs((w - finalWidth) / 2 / systemZoom + dualScreenLeft);
|
|
1890
|
+
const top = Math.abs((h - finalHeight) / 2 / systemZoom + dualScreenTop);
|
|
1891
|
+
return `titlebar=0,toolbar=0,status=0,location=0,menubar=0,height=${finalHeight / systemZoom},width=${finalWidth / systemZoom},top=${top},left=${left}`;
|
|
1892
|
+
};
|
|
1893
|
+
|
|
1949
1894
|
class WindowController {
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
return
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
return;
|
|
1980
|
-
}
|
|
1981
|
-
this._messages$.next(ev);
|
|
1982
|
-
};
|
|
1983
|
-
window.addEventListener("message", this._messageHandler);
|
|
1984
|
-
const checkWindow = setInterval(() => {
|
|
1985
|
-
if (!this._windowInstance || this._windowInstance?.closed) {
|
|
1986
|
-
this.cleanup();
|
|
1987
|
-
clearInterval(checkWindow);
|
|
1988
|
-
}
|
|
1989
|
-
}, 500);
|
|
1990
|
-
return windowInstance;
|
|
1895
|
+
get messages$() {
|
|
1896
|
+
return this._messages$.asObservable();
|
|
1897
|
+
}
|
|
1898
|
+
constructor(windowId, windowUrl) {
|
|
1899
|
+
this._windowInstance = null;
|
|
1900
|
+
this._messageHandler = null;
|
|
1901
|
+
this._messages$ = new Subject();
|
|
1902
|
+
this.windowId = windowId;
|
|
1903
|
+
this.windowUrl = windowUrl;
|
|
1904
|
+
this.windowOrigin = new URL(windowUrl).origin;
|
|
1905
|
+
this._messageHandler = ev => {
|
|
1906
|
+
if (ev.source !== this._windowInstance || ev.origin !== this.windowOrigin || !ev.data || !(ev.data instanceof Object)) {
|
|
1907
|
+
return;
|
|
1908
|
+
}
|
|
1909
|
+
this._messages$.next(ev);
|
|
1910
|
+
};
|
|
1911
|
+
window.addEventListener("message", this._messageHandler);
|
|
1912
|
+
}
|
|
1913
|
+
get windowInstance() {
|
|
1914
|
+
return this._windowInstance;
|
|
1915
|
+
}
|
|
1916
|
+
async openWindow(onRetry) {
|
|
1917
|
+
let windowInstance = this.tryOpenWindow();
|
|
1918
|
+
if (!windowInstance) {
|
|
1919
|
+
await onRetry();
|
|
1920
|
+
windowInstance = this.tryOpenWindow();
|
|
1921
|
+
if (!windowInstance) {
|
|
1922
|
+
throw new AirError(WindowErrorName.WINDOW_BLOCKED);
|
|
1923
|
+
}
|
|
1991
1924
|
}
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1925
|
+
const pendingWindowOpenCheck = new Promise((resolve, reject) => {
|
|
1926
|
+
setTimeout(() => {
|
|
1927
|
+
if (this.isWindowOpen(windowInstance)) {
|
|
1928
|
+
// only now are we scheduling the close event check since we're sure the window is open
|
|
1929
|
+
this.scheduleWindowClosedChecks(windowInstance);
|
|
1930
|
+
resolve("opened");
|
|
1931
|
+
} else {
|
|
1932
|
+
onRetry().then(() => {
|
|
1933
|
+
windowInstance = this.tryOpenWindow();
|
|
1934
|
+
if (windowInstance) {
|
|
1935
|
+
this._windowInstance = windowInstance;
|
|
1936
|
+
windowInstance.focus();
|
|
1937
|
+
this.scheduleWindowClosedChecks(windowInstance);
|
|
1938
|
+
resolve("retry");
|
|
1939
|
+
} else {
|
|
1940
|
+
reject(new AirError(WindowErrorName.WINDOW_BLOCKED));
|
|
1941
|
+
}
|
|
1942
|
+
}).catch(reject);
|
|
1943
|
+
}
|
|
1944
|
+
}, 1000);
|
|
1945
|
+
});
|
|
1946
|
+
this._windowInstance = windowInstance;
|
|
1947
|
+
windowInstance.focus();
|
|
1948
|
+
return {
|
|
1949
|
+
pendingWindowOpenCheck
|
|
1950
|
+
};
|
|
1951
|
+
}
|
|
1952
|
+
postMessage(message, transfer) {
|
|
1953
|
+
if (!this._windowInstance) return;
|
|
1954
|
+
this._windowInstance.postMessage(message, this.windowOrigin, transfer);
|
|
1955
|
+
}
|
|
1956
|
+
onMessage(callback) {
|
|
1957
|
+
const listener = ev => {
|
|
1958
|
+
if (ev.source !== this._windowInstance || ev.origin !== this.windowOrigin) return;
|
|
1959
|
+
callback(ev);
|
|
1960
|
+
};
|
|
1961
|
+
window.addEventListener("message", listener);
|
|
1962
|
+
const close = () => window.removeEventListener("message", listener);
|
|
1963
|
+
this.onClose(close);
|
|
1964
|
+
return {
|
|
1965
|
+
close
|
|
1966
|
+
};
|
|
1967
|
+
}
|
|
1968
|
+
cleanup() {
|
|
1969
|
+
if (this._windowInstance && !this._windowInstance.closed) {
|
|
1970
|
+
this._windowInstance.close();
|
|
1996
1971
|
}
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
callback(ev);
|
|
2002
|
-
};
|
|
2003
|
-
window.addEventListener("message", listener);
|
|
2004
|
-
const close = () => window.removeEventListener("message", listener);
|
|
2005
|
-
this.onClose(close);
|
|
2006
|
-
return {
|
|
2007
|
-
close,
|
|
2008
|
-
};
|
|
1972
|
+
this._windowInstance = null;
|
|
1973
|
+
if (this._messageHandler) {
|
|
1974
|
+
window.removeEventListener("message", this._messageHandler);
|
|
1975
|
+
this._messageHandler = null;
|
|
2009
1976
|
}
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
this._windowInstance.close();
|
|
2013
|
-
}
|
|
2014
|
-
if (this._messageHandler) {
|
|
2015
|
-
window.removeEventListener("message", this._messageHandler);
|
|
2016
|
-
this._messageHandler = null;
|
|
2017
|
-
}
|
|
2018
|
-
if (this._messages$ && !this._messages$.closed) {
|
|
2019
|
-
this._messages$.complete();
|
|
2020
|
-
}
|
|
2021
|
-
this._windowInstance = null;
|
|
1977
|
+
if (this._messages$ && !this._messages$.closed) {
|
|
1978
|
+
this._messages$.complete();
|
|
2022
1979
|
}
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
1980
|
+
}
|
|
1981
|
+
onClose(callback) {
|
|
1982
|
+
return this._messages$.subscribe({
|
|
1983
|
+
complete: callback
|
|
1984
|
+
});
|
|
1985
|
+
}
|
|
1986
|
+
isWindowOpen(windowInstance) {
|
|
1987
|
+
return !(!windowInstance || windowInstance.closed || typeof windowInstance.closed == "undefined");
|
|
1988
|
+
}
|
|
1989
|
+
tryOpenWindow() {
|
|
1990
|
+
const windowInstance = window.open(this.windowUrl, this.windowId, getWindowFeatures(425, 680));
|
|
1991
|
+
if (this.isWindowOpen(windowInstance)) {
|
|
1992
|
+
return windowInstance;
|
|
2027
1993
|
}
|
|
1994
|
+
return null;
|
|
1995
|
+
}
|
|
1996
|
+
scheduleWindowClosedChecks(windowInstance) {
|
|
1997
|
+
const checkWindow = setInterval(() => {
|
|
1998
|
+
if (!windowInstance || windowInstance.closed) {
|
|
1999
|
+
clearInterval(checkWindow);
|
|
2000
|
+
if (windowInstance === this._windowInstance) {
|
|
2001
|
+
this.cleanup();
|
|
2002
|
+
}
|
|
2003
|
+
}
|
|
2004
|
+
}, 500);
|
|
2005
|
+
}
|
|
2028
2006
|
}
|
|
2029
2007
|
|
|
2030
2008
|
class WindowService {
|
|
@@ -2043,37 +2021,58 @@
|
|
|
2043
2021
|
if (!windowInstance) {
|
|
2044
2022
|
throw new Error("Window instance not found");
|
|
2045
2023
|
}
|
|
2046
|
-
const response = firstValueFrom(windowController.messages$.pipe(filter((event) => event.data.type ===
|
|
2047
|
-
|
|
2024
|
+
const response = firstValueFrom(windowController.messages$.pipe(filter((event) => event.data.type ===
|
|
2025
|
+
AirWalletMessageTypes.INITIALIZATION_RESPONSE)));
|
|
2026
|
+
windowController.postMessage({ type: AirWalletMessageTypes.INITIALIZATION_REQUEST, payload }, [
|
|
2027
|
+
port,
|
|
2028
|
+
]);
|
|
2048
2029
|
return (await response).data;
|
|
2049
2030
|
}
|
|
2050
|
-
async openAndInitializeWalletServiceWindow({ url, windowId, partnerId, enableLogging,
|
|
2031
|
+
async openAndInitializeWalletServiceWindow({ url, windowId, partnerId, enableLogging, onRetry, }) {
|
|
2051
2032
|
if (this.windowControllers.has(windowId)) {
|
|
2052
2033
|
throw new Error("Window controller already exists");
|
|
2053
2034
|
}
|
|
2054
|
-
const windowController = new WindowController(
|
|
2055
|
-
|
|
2056
|
-
windowController.openWindow();
|
|
2035
|
+
const windowController = new WindowController(windowId, url);
|
|
2036
|
+
const { pendingWindowOpenCheck } = await windowController.openWindow(onRetry);
|
|
2057
2037
|
windowController.onClose(() => {
|
|
2058
2038
|
this.removeWindowController(windowId);
|
|
2059
2039
|
});
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2040
|
+
this.windowControllers.set(windowId, windowController);
|
|
2041
|
+
let channel = null;
|
|
2042
|
+
const initializeWindow = () => {
|
|
2043
|
+
return new Promise((resolve, reject) => {
|
|
2044
|
+
windowController.onMessage(async (ev) => {
|
|
2045
|
+
if (ev.data === AirWalletMessageTypes.SERVICE_STARTED) {
|
|
2046
|
+
try {
|
|
2047
|
+
channel = new MessageChannel();
|
|
2048
|
+
const { payload } = await this.sendWindowInitializationRequest(windowId, {
|
|
2049
|
+
partnerId,
|
|
2050
|
+
enableLogging,
|
|
2051
|
+
}, channel.port1);
|
|
2052
|
+
if (payload.success === false) {
|
|
2053
|
+
reject(new AirServiceError(payload.errorName, payload.errorMessage));
|
|
2054
|
+
}
|
|
2055
|
+
else {
|
|
2056
|
+
resolve();
|
|
2057
|
+
}
|
|
2058
|
+
}
|
|
2059
|
+
catch (e) {
|
|
2060
|
+
reject(e);
|
|
2061
|
+
}
|
|
2072
2062
|
}
|
|
2073
|
-
}
|
|
2063
|
+
});
|
|
2074
2064
|
});
|
|
2075
|
-
}
|
|
2076
|
-
|
|
2065
|
+
};
|
|
2066
|
+
const initializeWindowPromise = initializeWindow();
|
|
2067
|
+
const result = await pendingWindowOpenCheck;
|
|
2068
|
+
if (result === "retry") {
|
|
2069
|
+
// we can ignore previous initialization attempt since a new window was opened
|
|
2070
|
+
await initializeWindow();
|
|
2071
|
+
}
|
|
2072
|
+
else {
|
|
2073
|
+
await initializeWindowPromise;
|
|
2074
|
+
}
|
|
2075
|
+
return { windowController, port: channel.port2 };
|
|
2077
2076
|
}
|
|
2078
2077
|
getWindowController(windowId) {
|
|
2079
2078
|
return this.windowControllers.get(windowId);
|
|
@@ -2084,7 +2083,380 @@
|
|
|
2084
2083
|
}
|
|
2085
2084
|
var WindowService$1 = WindowService.instance;
|
|
2086
2085
|
|
|
2087
|
-
var
|
|
2086
|
+
var _a$1, _AuthMessageService_instance;
|
|
2087
|
+
const ALLOWED_AUTH_MESSAGES = [
|
|
2088
|
+
AirAuthMessageTypes.INITIALIZATION_RESPONSE,
|
|
2089
|
+
AirAuthMessageTypes.LOGIN_RESPONSE,
|
|
2090
|
+
AirAuthMessageTypes.SETUP_WALLET_REQUEST,
|
|
2091
|
+
AirAuthMessageTypes.LOGOUT_RESPONSE,
|
|
2092
|
+
AirAuthMessageTypes.PARTNER_USER_INFO_RESPONSE,
|
|
2093
|
+
AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE,
|
|
2094
|
+
AirAuthMessageTypes.PARTNER_ACCESS_TOKEN_RESPONSE,
|
|
2095
|
+
AirAuthMessageTypes.IFRAME_VISIBILITY_REQUEST,
|
|
2096
|
+
];
|
|
2097
|
+
class AuthMessageService extends MessageServiceBase {
|
|
2098
|
+
static create() {
|
|
2099
|
+
if (__classPrivateFieldGet(this, _a$1, "f", _AuthMessageService_instance))
|
|
2100
|
+
throw new Error("AuthMessageService already created");
|
|
2101
|
+
__classPrivateFieldSet(this, _a$1, new _a$1("Embed Service: Auth Channel", ALLOWED_AUTH_MESSAGES), "f", _AuthMessageService_instance);
|
|
2102
|
+
return __classPrivateFieldGet(this, _a$1, "f", _AuthMessageService_instance);
|
|
2103
|
+
}
|
|
2104
|
+
async open(authIframe) {
|
|
2105
|
+
const origin = new URL(authIframe.src).origin;
|
|
2106
|
+
const window = authIframe.contentWindow;
|
|
2107
|
+
await super._open({ window, origin });
|
|
2108
|
+
}
|
|
2109
|
+
async initWalletCommunication(port) {
|
|
2110
|
+
await this.sendMessage({
|
|
2111
|
+
type: AirAuthMessageTypes.INIT_WALLET_COMMUNICATION,
|
|
2112
|
+
}, [port]);
|
|
2113
|
+
}
|
|
2114
|
+
async sendPartnerUserInfoRequest() {
|
|
2115
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.PARTNER_USER_INFO_RESPONSE)));
|
|
2116
|
+
await this.sendMessage({
|
|
2117
|
+
type: AirAuthMessageTypes.PARTNER_USER_INFO_REQUEST,
|
|
2118
|
+
payload: { allowCache: false },
|
|
2119
|
+
});
|
|
2120
|
+
return response;
|
|
2121
|
+
}
|
|
2122
|
+
async sendLoginRequest(payload) {
|
|
2123
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.LOGIN_RESPONSE)));
|
|
2124
|
+
await this.sendMessage({ type: AirAuthMessageTypes.LOGIN_REQUEST, payload });
|
|
2125
|
+
return response;
|
|
2126
|
+
}
|
|
2127
|
+
async logout() {
|
|
2128
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.LOGOUT_RESPONSE)));
|
|
2129
|
+
await this.sendMessage({ type: AirAuthMessageTypes.LOGOUT_REQUEST });
|
|
2130
|
+
return response;
|
|
2131
|
+
}
|
|
2132
|
+
async resetWalletCommunication() {
|
|
2133
|
+
await this.sendMessage({ type: AirAuthMessageTypes.RESET_WALLET_COMMUNICATION });
|
|
2134
|
+
}
|
|
2135
|
+
async sendInitializationRequest(payload) {
|
|
2136
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.INITIALIZATION_RESPONSE)));
|
|
2137
|
+
await this.sendMessage({ type: AirAuthMessageTypes.INITIALIZATION_REQUEST, payload });
|
|
2138
|
+
return response;
|
|
2139
|
+
}
|
|
2140
|
+
async sendSetupWalletSuccessResponse() {
|
|
2141
|
+
await this.sendMessage({
|
|
2142
|
+
type: AirAuthMessageTypes.SETUP_WALLET_RESPONSE,
|
|
2143
|
+
payload: {
|
|
2144
|
+
success: true,
|
|
2145
|
+
},
|
|
2146
|
+
});
|
|
2147
|
+
}
|
|
2148
|
+
async sendSetupWalletErrorResponse(error) {
|
|
2149
|
+
await this.sendMessage(this.createErrorResponseMessage(AirAuthMessageTypes.SETUP_WALLET_RESPONSE, error));
|
|
2150
|
+
}
|
|
2151
|
+
async sendCrossPartnerTokenRequest(targetPartnerUrl) {
|
|
2152
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE)));
|
|
2153
|
+
await this.sendMessage({
|
|
2154
|
+
type: AirAuthMessageTypes.CROSS_PARTNER_TOKEN_REQUEST,
|
|
2155
|
+
payload: {
|
|
2156
|
+
targetPartnerUrl,
|
|
2157
|
+
},
|
|
2158
|
+
});
|
|
2159
|
+
return response;
|
|
2160
|
+
}
|
|
2161
|
+
async sendPartnerAccessTokenRequest() {
|
|
2162
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.PARTNER_ACCESS_TOKEN_RESPONSE)));
|
|
2163
|
+
await this.sendMessage({ type: AirAuthMessageTypes.PARTNER_ACCESS_TOKEN_REQUEST });
|
|
2164
|
+
return response;
|
|
2165
|
+
}
|
|
2166
|
+
}
|
|
2167
|
+
_a$1 = AuthMessageService;
|
|
2168
|
+
_AuthMessageService_instance = { value: undefined };
|
|
2169
|
+
|
|
2170
|
+
var _a, _WalletMessageService_instance;
|
|
2171
|
+
const ALLOWED_WALLET_MESSAGES = [
|
|
2172
|
+
AirWalletMessageTypes.INITIALIZATION_RESPONSE,
|
|
2173
|
+
AirWalletMessageTypes.WALLET_INITIALIZED,
|
|
2174
|
+
AirWalletMessageTypes.WALLET_LOGIN_RESPONSE,
|
|
2175
|
+
AirWalletMessageTypes.SETUP_OR_UPDATE_MFA_RESPONSE,
|
|
2176
|
+
AirWalletMessageTypes.CLAIM_ID_RESPONSE,
|
|
2177
|
+
AirWalletMessageTypes.IS_SMART_ACCOUNT_DEPLOYED_RESPONSE,
|
|
2178
|
+
AirWalletMessageTypes.DEPLOY_SMART_ACCOUNT_RESPONSE,
|
|
2179
|
+
AirWalletMessageTypes.EXECUTE_ACTION_RESPONSE,
|
|
2180
|
+
AirWalletMessageTypes.REVOKE_PERMISSIONS_RESPONSE,
|
|
2181
|
+
AirWalletMessageTypes.GRANT_PERMISSIONS_RESPONSE,
|
|
2182
|
+
AirWalletMessageTypes.LIST_ALL_SESSION_KEY_SCOPES_RESPONSE,
|
|
2183
|
+
AirWalletMessageTypes.WALLET_INITIALIZED,
|
|
2184
|
+
AirWalletMessageTypes.WALLET_IFRAME_VISIBILITY_REQUEST,
|
|
2185
|
+
AirWalletMessageTypes.LOGOUT_RESPONSE,
|
|
2186
|
+
AirWalletMessageTypes.OPEN_WINDOW_REQUEST,
|
|
2187
|
+
AirWalletMessageTypes.OPEN_WINDOW_RETRY_RESPONSE,
|
|
2188
|
+
];
|
|
2189
|
+
class WalletMessageService extends MessageServiceBase {
|
|
2190
|
+
static create() {
|
|
2191
|
+
if (__classPrivateFieldGet(this, _a, "f", _WalletMessageService_instance))
|
|
2192
|
+
throw new Error("WalletMessageService already created");
|
|
2193
|
+
__classPrivateFieldSet(this, _a, new _a("Embed Service: Wallet Channel", ALLOWED_WALLET_MESSAGES), "f", _WalletMessageService_instance);
|
|
2194
|
+
return __classPrivateFieldGet(this, _a, "f", _WalletMessageService_instance);
|
|
2195
|
+
}
|
|
2196
|
+
async open(walletIframe) {
|
|
2197
|
+
const origin = new URL(walletIframe.src).origin;
|
|
2198
|
+
const window = walletIframe.contentWindow;
|
|
2199
|
+
await super._open({ window, origin });
|
|
2200
|
+
}
|
|
2201
|
+
async initAuthCommunication(skipWalletLogin, port) {
|
|
2202
|
+
await this.sendMessage({
|
|
2203
|
+
type: AirWalletMessageTypes.INIT_AUTH_COMMUNICATION,
|
|
2204
|
+
payload: {
|
|
2205
|
+
skipWalletLogin,
|
|
2206
|
+
},
|
|
2207
|
+
}, [port]);
|
|
2208
|
+
}
|
|
2209
|
+
async sendGrantPermissionRequest(policies) {
|
|
2210
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.GRANT_PERMISSIONS_RESPONSE)));
|
|
2211
|
+
await this.sendMessage({
|
|
2212
|
+
type: AirWalletMessageTypes.GRANT_PERMISSIONS_REQUEST,
|
|
2213
|
+
payload: {
|
|
2214
|
+
policies,
|
|
2215
|
+
},
|
|
2216
|
+
});
|
|
2217
|
+
const result = await response;
|
|
2218
|
+
if (result.payload.success === false) {
|
|
2219
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2220
|
+
}
|
|
2221
|
+
return result.payload.sessionData;
|
|
2222
|
+
}
|
|
2223
|
+
async sendExecuteActionRequest(params) {
|
|
2224
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.EXECUTE_ACTION_RESPONSE)));
|
|
2225
|
+
await this.sendMessage({
|
|
2226
|
+
type: AirWalletMessageTypes.EXECUTE_ACTION_REQUEST,
|
|
2227
|
+
payload: {
|
|
2228
|
+
sessionData: params.sessionData,
|
|
2229
|
+
call: {
|
|
2230
|
+
to: params.call.to,
|
|
2231
|
+
value: params.call.value,
|
|
2232
|
+
data: params.call.data,
|
|
2233
|
+
},
|
|
2234
|
+
sessionOwnerPrivateKey: params.sessionOwnerPrivateKey,
|
|
2235
|
+
},
|
|
2236
|
+
});
|
|
2237
|
+
const result = await response;
|
|
2238
|
+
if (result.payload.success === false) {
|
|
2239
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2240
|
+
}
|
|
2241
|
+
return result.payload.txHash;
|
|
2242
|
+
}
|
|
2243
|
+
async sendRevokePermissionsRequest(permissionId) {
|
|
2244
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.REVOKE_PERMISSIONS_RESPONSE)));
|
|
2245
|
+
await this.sendMessage({
|
|
2246
|
+
type: AirWalletMessageTypes.REVOKE_PERMISSIONS_REQUEST,
|
|
2247
|
+
payload: {
|
|
2248
|
+
permissionId,
|
|
2249
|
+
},
|
|
2250
|
+
});
|
|
2251
|
+
const result = await response;
|
|
2252
|
+
if (result.payload.success === false) {
|
|
2253
|
+
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2254
|
+
}
|
|
2255
|
+
return result.payload.txHash;
|
|
2256
|
+
}
|
|
2257
|
+
async sendDeploySmartAccountRequest() {
|
|
2258
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.DEPLOY_SMART_ACCOUNT_RESPONSE)));
|
|
2259
|
+
await this.sendMessage({
|
|
2260
|
+
type: AirWalletMessageTypes.DEPLOY_SMART_ACCOUNT_REQUEST,
|
|
2261
|
+
});
|
|
2262
|
+
return response;
|
|
2263
|
+
}
|
|
2264
|
+
async sendIsSmartAccountDeployedRequest() {
|
|
2265
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.IS_SMART_ACCOUNT_DEPLOYED_RESPONSE)));
|
|
2266
|
+
await this.sendMessage({
|
|
2267
|
+
type: AirWalletMessageTypes.IS_SMART_ACCOUNT_DEPLOYED_REQUEST,
|
|
2268
|
+
});
|
|
2269
|
+
return response;
|
|
2270
|
+
}
|
|
2271
|
+
async logout() {
|
|
2272
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.LOGOUT_RESPONSE)));
|
|
2273
|
+
await this.sendMessage({ type: AirWalletMessageTypes.LOGOUT_REQUEST });
|
|
2274
|
+
return response;
|
|
2275
|
+
}
|
|
2276
|
+
async sendInitializationRequest(payload) {
|
|
2277
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.INITIALIZATION_RESPONSE)));
|
|
2278
|
+
await this.sendMessage({ type: AirWalletMessageTypes.INITIALIZATION_REQUEST, payload });
|
|
2279
|
+
return response;
|
|
2280
|
+
}
|
|
2281
|
+
async sendGrantPermissionsRequest(payload) {
|
|
2282
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.GRANT_PERMISSIONS_RESPONSE)));
|
|
2283
|
+
await this.sendMessage({ type: AirWalletMessageTypes.GRANT_PERMISSIONS_REQUEST, payload });
|
|
2284
|
+
return response;
|
|
2285
|
+
}
|
|
2286
|
+
async sendListAllSessionKeyScopesRequest() {
|
|
2287
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.LIST_ALL_SESSION_KEY_SCOPES_RESPONSE)));
|
|
2288
|
+
await this.sendMessage({ type: AirWalletMessageTypes.LIST_ALL_SESSION_KEY_SCOPES_REQUEST });
|
|
2289
|
+
return response;
|
|
2290
|
+
}
|
|
2291
|
+
onInitialized() {
|
|
2292
|
+
return firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.WALLET_INITIALIZED)));
|
|
2293
|
+
}
|
|
2294
|
+
async sendLoginRequest() {
|
|
2295
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.WALLET_LOGIN_RESPONSE)));
|
|
2296
|
+
await this.sendMessage({
|
|
2297
|
+
type: AirWalletMessageTypes.WALLET_LOGIN_REQUEST,
|
|
2298
|
+
});
|
|
2299
|
+
return response;
|
|
2300
|
+
}
|
|
2301
|
+
async sendSetupMfaRequest() {
|
|
2302
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.SETUP_OR_UPDATE_MFA_RESPONSE)));
|
|
2303
|
+
await this.sendMessage({
|
|
2304
|
+
type: AirWalletMessageTypes.SETUP_OR_UPDATE_MFA_REQUEST,
|
|
2305
|
+
});
|
|
2306
|
+
return response;
|
|
2307
|
+
}
|
|
2308
|
+
async sendOpenWindowSuccessResponse(windowId, port) {
|
|
2309
|
+
await this.sendMessage({
|
|
2310
|
+
type: AirWalletMessageTypes.OPEN_WINDOW_RESPONSE,
|
|
2311
|
+
payload: {
|
|
2312
|
+
success: true,
|
|
2313
|
+
windowId,
|
|
2314
|
+
},
|
|
2315
|
+
}, [port]);
|
|
2316
|
+
}
|
|
2317
|
+
async sendOpenWindowErrorResponse(windowId, error) {
|
|
2318
|
+
const errorResponse = this.createErrorResponseMessage(AirWalletMessageTypes.OPEN_WINDOW_RESPONSE, error);
|
|
2319
|
+
await this.sendMessage({
|
|
2320
|
+
...errorResponse,
|
|
2321
|
+
payload: { ...errorResponse.payload, windowId },
|
|
2322
|
+
});
|
|
2323
|
+
}
|
|
2324
|
+
async sendOpenWindowRetryRequest(windowId) {
|
|
2325
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.OPEN_WINDOW_RETRY_RESPONSE), filter((msg) => msg.payload.windowId === windowId)));
|
|
2326
|
+
await this.sendMessage({
|
|
2327
|
+
type: AirWalletMessageTypes.OPEN_WINDOW_RETRY_REQUEST,
|
|
2328
|
+
payload: { windowId },
|
|
2329
|
+
});
|
|
2330
|
+
return response;
|
|
2331
|
+
}
|
|
2332
|
+
async sendWindowClosed(windowId) {
|
|
2333
|
+
await this.sendMessage({
|
|
2334
|
+
type: AirWalletMessageTypes.WINDOW_CLOSED,
|
|
2335
|
+
payload: {
|
|
2336
|
+
windowId,
|
|
2337
|
+
},
|
|
2338
|
+
});
|
|
2339
|
+
}
|
|
2340
|
+
async sendClaimIdRequest(payload) {
|
|
2341
|
+
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.CLAIM_ID_RESPONSE)));
|
|
2342
|
+
await this.sendMessage({ type: AirWalletMessageTypes.CLAIM_ID_REQUEST, payload });
|
|
2343
|
+
return response;
|
|
2344
|
+
}
|
|
2345
|
+
}
|
|
2346
|
+
_a = WalletMessageService;
|
|
2347
|
+
_WalletMessageService_instance = { value: undefined };
|
|
2348
|
+
|
|
2349
|
+
const getLevelName = levelNum => {
|
|
2350
|
+
const levelNames = Object.keys(log.levels);
|
|
2351
|
+
if (levelNum >= 0 && levelNum < levelNames.length) {
|
|
2352
|
+
return levelNames[levelNum];
|
|
2353
|
+
}
|
|
2354
|
+
return "UNKNOWN";
|
|
2355
|
+
};
|
|
2356
|
+
const configureLogLevel = (environment, enableLogging) => {
|
|
2357
|
+
let level = log.levels.ERROR;
|
|
2358
|
+
if (environment === "development") {
|
|
2359
|
+
level = enableLogging ? log.levels.TRACE : log.levels.INFO;
|
|
2360
|
+
} else if (environment === "staging") {
|
|
2361
|
+
level = enableLogging ? log.levels.DEBUG : log.levels.INFO;
|
|
2362
|
+
} else if (environment === "uat") {
|
|
2363
|
+
level = enableLogging ? log.levels.INFO : log.levels.WARN;
|
|
2364
|
+
} else if (environment === "production") {
|
|
2365
|
+
// Be cautious with enabling more than WARN in prod
|
|
2366
|
+
level = enableLogging ? log.levels.WARN : log.levels.ERROR;
|
|
2367
|
+
}
|
|
2368
|
+
log.setLevel(level);
|
|
2369
|
+
log.info(`[${window?.location?.origin}] LogLevel: ${getLevelName(log.getLevel())}`);
|
|
2370
|
+
};
|
|
2371
|
+
|
|
2372
|
+
var name = "@mocanetwork/airkit";
|
|
2373
|
+
var version = "1.2.0-beta.4";
|
|
2374
|
+
var description = "Air kit to interact with the Moca Network";
|
|
2375
|
+
var main = "dist/airkit.cjs.js";
|
|
2376
|
+
var module = "dist/airkit.esm.js";
|
|
2377
|
+
var unpkg = "dist/airkit.umd.min.js";
|
|
2378
|
+
var jsdelivr = "dist/airkit.umd.min.js";
|
|
2379
|
+
var types = "dist/types/index.d.ts";
|
|
2380
|
+
var files = [
|
|
2381
|
+
"dist"
|
|
2382
|
+
];
|
|
2383
|
+
var scripts = {
|
|
2384
|
+
build: "rollup --config",
|
|
2385
|
+
prepack: "npm run build && npm run postbuild",
|
|
2386
|
+
lint: "eslint --fix 'src/**/*.ts'",
|
|
2387
|
+
format: "prettier --write 'src/**/*.ts'",
|
|
2388
|
+
postbuild: "node scripts/copyAndAdjustDtsFiles.js '../common/src' 'common'"
|
|
2389
|
+
};
|
|
2390
|
+
var dependencies = {
|
|
2391
|
+
"fast-deep-equal": "^3.1.3",
|
|
2392
|
+
loglevel: "^1.9.2",
|
|
2393
|
+
pump: "^3.0.0",
|
|
2394
|
+
"readable-stream": "^4.5.2",
|
|
2395
|
+
rxjs: "^7.8.1"
|
|
2396
|
+
};
|
|
2397
|
+
var devDependencies = {
|
|
2398
|
+
"@babel/runtime": "^7.25.6",
|
|
2399
|
+
"@rushstack/eslint-patch": "^1.10.2",
|
|
2400
|
+
"@types/pump": "^1.1.3",
|
|
2401
|
+
"@types/readable-stream": "^4.0.15",
|
|
2402
|
+
"fs-extra": "^11.2.0",
|
|
2403
|
+
glob: "^11.0.0",
|
|
2404
|
+
process: "^0.11.10",
|
|
2405
|
+
"typescript-eslint": "^8.21.0"
|
|
2406
|
+
};
|
|
2407
|
+
var mocha = {
|
|
2408
|
+
timeout: 0
|
|
2409
|
+
};
|
|
2410
|
+
var keywords = [
|
|
2411
|
+
"airkit",
|
|
2412
|
+
"mocaverse",
|
|
2413
|
+
"wallet",
|
|
2414
|
+
"embed",
|
|
2415
|
+
"login",
|
|
2416
|
+
"OAuth",
|
|
2417
|
+
"crypto"
|
|
2418
|
+
];
|
|
2419
|
+
var author = "Mocaverse";
|
|
2420
|
+
var license = "ISC";
|
|
2421
|
+
var engines = {
|
|
2422
|
+
node: ">=18.x",
|
|
2423
|
+
npm: ">=9.x"
|
|
2424
|
+
};
|
|
2425
|
+
var publishConfig = {
|
|
2426
|
+
access: "restricted"
|
|
2427
|
+
};
|
|
2428
|
+
var airkitPackage = {
|
|
2429
|
+
name: name,
|
|
2430
|
+
version: version,
|
|
2431
|
+
description: description,
|
|
2432
|
+
main: main,
|
|
2433
|
+
module: module,
|
|
2434
|
+
unpkg: unpkg,
|
|
2435
|
+
jsdelivr: jsdelivr,
|
|
2436
|
+
types: types,
|
|
2437
|
+
files: files,
|
|
2438
|
+
scripts: scripts,
|
|
2439
|
+
dependencies: dependencies,
|
|
2440
|
+
devDependencies: devDependencies,
|
|
2441
|
+
mocha: mocha,
|
|
2442
|
+
keywords: keywords,
|
|
2443
|
+
author: author,
|
|
2444
|
+
license: license,
|
|
2445
|
+
"lint-staged": {
|
|
2446
|
+
"!(*d).{js,ts}": [
|
|
2447
|
+
"eslint --cache --fix",
|
|
2448
|
+
"prettier --write"
|
|
2449
|
+
],
|
|
2450
|
+
"*.{json, md}": [
|
|
2451
|
+
"prettier --write"
|
|
2452
|
+
]
|
|
2453
|
+
},
|
|
2454
|
+
engines: engines,
|
|
2455
|
+
publishConfig: publishConfig
|
|
2456
|
+
};
|
|
2457
|
+
|
|
2458
|
+
var _AirService_instances, _AirService_loginResult, _AirService_buildEnv, _AirService_enableLogging, _AirService_partnerId, _AirService_authMessagingService, _AirService_authIframeController, _AirService_isAuthInitialized, _AirService_airAuthListener, _AirService_walletMessagingService, _AirService_walletIframeController, _AirService_walletInitialization, _AirService_walletLoggedInResult, _AirService_airWalletProvider, _AirService_ensureWallet, _AirService_initializeWallet, _AirService_subscribeToWalletEvents, _AirService_triggerEventListeners, _AirService_triggerAirAuthInitialized, _AirService_triggerAirAuthLoggedIn, _AirService_triggerAirAuthLoggedOut, _AirService_triggerWalletInitialized, _AirService_createLoginResult, _AirService_createWalletInitializedResult, _AirService_cleanUpAuth, _AirService_cleanUpWallet;
|
|
2459
|
+
const airKitVersion = airkitPackage.version;
|
|
2088
2460
|
class AirService {
|
|
2089
2461
|
constructor({ partnerId }) {
|
|
2090
2462
|
_AirService_instances.add(this);
|
|
@@ -2093,18 +2465,21 @@
|
|
|
2093
2465
|
_AirService_enableLogging.set(this, false);
|
|
2094
2466
|
_AirService_partnerId.set(this, undefined);
|
|
2095
2467
|
//#modalZIndex: number; TODO implement z index overwrite
|
|
2468
|
+
_AirService_authMessagingService.set(this, undefined);
|
|
2096
2469
|
_AirService_authIframeController.set(this, undefined);
|
|
2097
2470
|
_AirService_isAuthInitialized.set(this, false);
|
|
2098
2471
|
_AirService_airAuthListener.set(this, []);
|
|
2472
|
+
_AirService_walletMessagingService.set(this, undefined);
|
|
2099
2473
|
_AirService_walletIframeController.set(this, undefined);
|
|
2100
2474
|
_AirService_walletInitialization.set(this, undefined);
|
|
2101
2475
|
_AirService_walletLoggedInResult.set(this, undefined);
|
|
2102
2476
|
_AirService_airWalletProvider.set(this, undefined);
|
|
2103
2477
|
__classPrivateFieldSet(this, _AirService_partnerId, partnerId, "f");
|
|
2478
|
+
__classPrivateFieldSet(this, _AirService_authMessagingService, AuthMessageService.create(), "f");
|
|
2479
|
+
__classPrivateFieldSet(this, _AirService_walletMessagingService, WalletMessageService.create(), "f");
|
|
2104
2480
|
__classPrivateFieldSet(this, _AirService_airWalletProvider, new AirWalletProvider({
|
|
2105
2481
|
isLoggedIn: () => this.isLoggedIn,
|
|
2106
2482
|
ensureWallet: __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).bind(this),
|
|
2107
|
-
getWalletIframeController: () => __classPrivateFieldGet(this, _AirService_walletIframeController, "f"),
|
|
2108
2483
|
}), "f");
|
|
2109
2484
|
// this.#modalZIndex = modalZIndex ?? 99999;
|
|
2110
2485
|
}
|
|
@@ -2135,61 +2510,46 @@
|
|
|
2135
2510
|
return;
|
|
2136
2511
|
__classPrivateFieldSet(this, _AirService_buildEnv, buildEnv, "f");
|
|
2137
2512
|
__classPrivateFieldSet(this, _AirService_enableLogging, enableLogging, "f");
|
|
2138
|
-
const { authUrl
|
|
2139
|
-
|
|
2140
|
-
if (__classPrivateFieldGet(this, _AirService_enableLogging, "f"))
|
|
2141
|
-
log.enableAll();
|
|
2142
|
-
else
|
|
2143
|
-
log.disableAll();
|
|
2513
|
+
const { authUrl } = AIR_URLS[buildEnv];
|
|
2514
|
+
configureLogLevel(buildEnv, enableLogging);
|
|
2144
2515
|
const authIframeOrigin = new URL(authUrl).origin;
|
|
2145
|
-
await AirMessageService$1.openAuthObservables({ authIframeOrigin });
|
|
2146
2516
|
__classPrivateFieldSet(this, _AirService_authIframeController, new IframeController(authUrl, `air-auth-${randomId()}`), "f");
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, { skipWalletLogin: true });
|
|
2158
|
-
__classPrivateFieldGet(this, _AirService_authIframeController, "f").postMessage({
|
|
2159
|
-
type: AirAuthMessageTypes.SETUP_WALLET_RESPONSE,
|
|
2160
|
-
payload: {
|
|
2161
|
-
success: true,
|
|
2162
|
-
},
|
|
2163
|
-
});
|
|
2517
|
+
try {
|
|
2518
|
+
__classPrivateFieldGet(this, _AirService_authIframeController, "f").createIframe();
|
|
2519
|
+
await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").open(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement);
|
|
2520
|
+
__classPrivateFieldGet(this, _AirService_authMessagingService, "f").messages$.subscribe(async (msg) => {
|
|
2521
|
+
switch (msg.type) {
|
|
2522
|
+
case AirAuthMessageTypes.IFRAME_VISIBILITY_REQUEST: {
|
|
2523
|
+
const authIframeController = __classPrivateFieldGet(this, _AirService_authIframeController, "f");
|
|
2524
|
+
authIframeController.setIframeVisibility(msg.payload.visible);
|
|
2525
|
+
authIframeController.updateIframeState();
|
|
2526
|
+
break;
|
|
2164
2527
|
}
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
});
|
|
2528
|
+
case AirAuthMessageTypes.SETUP_WALLET_REQUEST: {
|
|
2529
|
+
try {
|
|
2530
|
+
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, { skipWalletLogin: true });
|
|
2531
|
+
await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").sendSetupWalletSuccessResponse();
|
|
2532
|
+
}
|
|
2533
|
+
catch (err) {
|
|
2534
|
+
const error = ensureError(err);
|
|
2535
|
+
await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").sendSetupWalletErrorResponse(error);
|
|
2536
|
+
}
|
|
2537
|
+
break;
|
|
2176
2538
|
}
|
|
2177
|
-
break;
|
|
2178
2539
|
}
|
|
2179
|
-
}
|
|
2180
|
-
});
|
|
2181
|
-
try {
|
|
2182
|
-
__classPrivateFieldGet(this, _AirService_authIframeController, "f").createIframe();
|
|
2540
|
+
});
|
|
2183
2541
|
const result = await new Promise((resolve, reject) => {
|
|
2184
2542
|
const handleAuthMessage = async (ev) => {
|
|
2185
2543
|
if (ev.origin !== authIframeOrigin)
|
|
2186
2544
|
return;
|
|
2187
2545
|
if (ev.data === AirAuthMessageTypes.AUTH_SETUP_COMPLETED) {
|
|
2188
2546
|
window.removeEventListener("message", handleAuthMessage);
|
|
2189
|
-
const { payload } = await
|
|
2547
|
+
const { payload } = await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").sendInitializationRequest({
|
|
2190
2548
|
partnerId: __classPrivateFieldGet(this, _AirService_partnerId, "f"),
|
|
2191
2549
|
skipRehydration,
|
|
2192
2550
|
partnerDAppUrl: window.location.href,
|
|
2551
|
+
sdkVersion: airKitVersion,
|
|
2552
|
+
enableLogging: __classPrivateFieldGet(this, _AirService_enableLogging, "f"),
|
|
2193
2553
|
});
|
|
2194
2554
|
if (payload.success === true) {
|
|
2195
2555
|
resolve(payload);
|
|
@@ -2222,8 +2582,7 @@
|
|
|
2222
2582
|
throw new Error("Service is not initialized");
|
|
2223
2583
|
if (__classPrivateFieldGet(this, _AirService_loginResult, "f"))
|
|
2224
2584
|
return __classPrivateFieldGet(this, _AirService_loginResult, "f");
|
|
2225
|
-
const
|
|
2226
|
-
const { payload } = await AirMessageService$1.sendAuthLoginRequest(iframeController.iframeElement, {
|
|
2585
|
+
const { payload } = await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").sendLoginRequest({
|
|
2227
2586
|
partnerLoginToken: options?.authToken,
|
|
2228
2587
|
});
|
|
2229
2588
|
if (payload.success === true) {
|
|
@@ -2231,7 +2590,7 @@
|
|
|
2231
2590
|
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerAirAuthLoggedIn).call(this);
|
|
2232
2591
|
return __classPrivateFieldGet(this, _AirService_loginResult, "f");
|
|
2233
2592
|
}
|
|
2234
|
-
throw new AirServiceError(
|
|
2593
|
+
throw new AirServiceError(payload.errorName, payload.errorMessage);
|
|
2235
2594
|
}
|
|
2236
2595
|
/**
|
|
2237
2596
|
* @experimental This method is experimental and will change in the future.
|
|
@@ -2242,7 +2601,7 @@
|
|
|
2242
2601
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
2243
2602
|
try {
|
|
2244
2603
|
log.info("deploySmartAccount");
|
|
2245
|
-
const { payload } = await
|
|
2604
|
+
const { payload } = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendDeploySmartAccountRequest();
|
|
2246
2605
|
if (payload.success === false) {
|
|
2247
2606
|
throw new AirServiceError(payload.errorName, payload.errorMessage);
|
|
2248
2607
|
}
|
|
@@ -2261,7 +2620,9 @@
|
|
|
2261
2620
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
2262
2621
|
try {
|
|
2263
2622
|
log.info("grantPermission", policies);
|
|
2264
|
-
const { payload } = await
|
|
2623
|
+
const { payload } = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendGrantPermissionsRequest({
|
|
2624
|
+
policies,
|
|
2625
|
+
});
|
|
2265
2626
|
if (payload.success === false) {
|
|
2266
2627
|
throw new AirServiceError(payload.errorName, payload.errorMessage);
|
|
2267
2628
|
}
|
|
@@ -2279,7 +2640,7 @@
|
|
|
2279
2640
|
throw new Error("Service is not initialized");
|
|
2280
2641
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
2281
2642
|
try {
|
|
2282
|
-
const { payload } = await
|
|
2643
|
+
const { payload } = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendListAllSessionKeyScopesRequest();
|
|
2283
2644
|
if (payload.success === false) {
|
|
2284
2645
|
throw new AirServiceError(payload.errorName, payload.errorMessage);
|
|
2285
2646
|
}
|
|
@@ -2298,7 +2659,7 @@
|
|
|
2298
2659
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
2299
2660
|
try {
|
|
2300
2661
|
log.info("executeAction", params);
|
|
2301
|
-
const txHash = await
|
|
2662
|
+
const txHash = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendExecuteActionRequest(params);
|
|
2302
2663
|
return txHash;
|
|
2303
2664
|
}
|
|
2304
2665
|
catch (error) {
|
|
@@ -2314,7 +2675,7 @@
|
|
|
2314
2675
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
2315
2676
|
try {
|
|
2316
2677
|
log.info("revokePermission", permissionId);
|
|
2317
|
-
const txHash = await
|
|
2678
|
+
const txHash = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendRevokePermissionsRequest(permissionId);
|
|
2318
2679
|
return txHash;
|
|
2319
2680
|
}
|
|
2320
2681
|
catch (error) {
|
|
@@ -2329,7 +2690,7 @@
|
|
|
2329
2690
|
throw new Error("Service is not initialized");
|
|
2330
2691
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
2331
2692
|
try {
|
|
2332
|
-
const { payload } = await
|
|
2693
|
+
const { payload } = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendIsSmartAccountDeployedRequest();
|
|
2333
2694
|
if (payload.success === false) {
|
|
2334
2695
|
throw new AirServiceError(payload.errorName, payload.errorMessage);
|
|
2335
2696
|
}
|
|
@@ -2347,14 +2708,18 @@
|
|
|
2347
2708
|
}
|
|
2348
2709
|
async setupOrUpdateMfa() {
|
|
2349
2710
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, { skipWalletLogin: true });
|
|
2350
|
-
const result = await
|
|
2711
|
+
const result = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendSetupMfaRequest();
|
|
2351
2712
|
if (result.payload.success === false) {
|
|
2352
2713
|
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2353
2714
|
}
|
|
2715
|
+
__classPrivateFieldSet(this, _AirService_loginResult, {
|
|
2716
|
+
...__classPrivateFieldGet(this, _AirService_loginResult, "f"),
|
|
2717
|
+
isMFASetup: true,
|
|
2718
|
+
}, "f");
|
|
2354
2719
|
}
|
|
2355
2720
|
async claimAirId(options) {
|
|
2356
2721
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
|
|
2357
|
-
const result = await
|
|
2722
|
+
const result = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendClaimIdRequest(options ?? {});
|
|
2358
2723
|
if (result.payload.success === true) {
|
|
2359
2724
|
return { airId: result.payload.airId };
|
|
2360
2725
|
}
|
|
@@ -2363,7 +2728,7 @@
|
|
|
2363
2728
|
async getUserInfo() {
|
|
2364
2729
|
if (!this.isLoggedIn)
|
|
2365
2730
|
throw new Error("User not logged in");
|
|
2366
|
-
const info = await
|
|
2731
|
+
const info = await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").sendPartnerUserInfoRequest();
|
|
2367
2732
|
if (info.payload.success === false) {
|
|
2368
2733
|
throw new AirServiceError(info.payload.errorName, info.payload.errorMessage);
|
|
2369
2734
|
}
|
|
@@ -2384,7 +2749,7 @@
|
|
|
2384
2749
|
throw new Error("Service is not initialized");
|
|
2385
2750
|
if (!this.isLoggedIn)
|
|
2386
2751
|
throw new Error("No active session to generate token");
|
|
2387
|
-
const result = await
|
|
2752
|
+
const result = await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").sendCrossPartnerTokenRequest(partnerUrl);
|
|
2388
2753
|
if (result.payload.success === false) {
|
|
2389
2754
|
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2390
2755
|
}
|
|
@@ -2397,7 +2762,7 @@
|
|
|
2397
2762
|
throw new Error("Service is not initialized");
|
|
2398
2763
|
if (!this.isLoggedIn)
|
|
2399
2764
|
throw new Error("No active session to get partner access token");
|
|
2400
|
-
const result = await
|
|
2765
|
+
const result = await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").sendPartnerAccessTokenRequest();
|
|
2401
2766
|
if (result.payload.success !== true) {
|
|
2402
2767
|
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2403
2768
|
}
|
|
@@ -2413,7 +2778,7 @@
|
|
|
2413
2778
|
throw new Error("No active session to logout");
|
|
2414
2779
|
// Clear up wallet
|
|
2415
2780
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
|
|
2416
|
-
await
|
|
2781
|
+
await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").logout();
|
|
2417
2782
|
__classPrivateFieldSet(this, _AirService_loginResult, undefined, "f");
|
|
2418
2783
|
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerAirAuthLoggedOut).call(this);
|
|
2419
2784
|
}
|
|
@@ -2434,7 +2799,7 @@
|
|
|
2434
2799
|
__classPrivateFieldSet(this, _AirService_airAuthListener, [], "f");
|
|
2435
2800
|
}
|
|
2436
2801
|
}
|
|
2437
|
-
_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) {
|
|
2802
|
+
_AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _AirService_enableLogging = new WeakMap(), _AirService_partnerId = new WeakMap(), _AirService_authMessagingService = new WeakMap(), _AirService_authIframeController = new WeakMap(), _AirService_isAuthInitialized = new WeakMap(), _AirService_airAuthListener = new WeakMap(), _AirService_walletMessagingService = 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) {
|
|
2438
2803
|
if (!this.isInitialized)
|
|
2439
2804
|
throw new Error("Service not initialized");
|
|
2440
2805
|
if (!this.isLoggedIn && !option?.skipWalletLogin)
|
|
@@ -2456,7 +2821,7 @@
|
|
|
2456
2821
|
}
|
|
2457
2822
|
if (__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"))
|
|
2458
2823
|
return __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f");
|
|
2459
|
-
const walletLoginResult = await
|
|
2824
|
+
const walletLoginResult = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendLoginRequest();
|
|
2460
2825
|
if (walletLoginResult.payload.success !== true) {
|
|
2461
2826
|
throw new AirServiceError(walletLoginResult.payload.errorName, walletLoginResult.payload.errorMessage);
|
|
2462
2827
|
}
|
|
@@ -2467,20 +2832,17 @@
|
|
|
2467
2832
|
const { walletUrl } = AIR_URLS[__classPrivateFieldGet(this, _AirService_buildEnv, "f")];
|
|
2468
2833
|
log.info(walletUrl, "url loaded");
|
|
2469
2834
|
const walletIframeOrigin = new URL(walletUrl).origin;
|
|
2470
|
-
await AirMessageService$1.openWalletObservables({ walletIframeOrigin });
|
|
2471
2835
|
try {
|
|
2472
|
-
|
|
2473
|
-
|
|
2474
|
-
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_subscribeToWalletEvents).call(this);
|
|
2475
|
-
await new Promise((resolve, reject) => {
|
|
2476
|
-
const handleAuthMessage = async (ev) => {
|
|
2836
|
+
const walletInitRequestPromise = new Promise((resolve, reject) => {
|
|
2837
|
+
const handleWalletMessage = async (ev) => {
|
|
2477
2838
|
if (ev.origin !== walletIframeOrigin)
|
|
2478
2839
|
return;
|
|
2479
|
-
if (ev.data ===
|
|
2480
|
-
window.removeEventListener("message",
|
|
2481
|
-
const { payload } = await
|
|
2840
|
+
if (ev.data === AirWalletMessageTypes.SERVICE_STARTED) {
|
|
2841
|
+
window.removeEventListener("message", handleWalletMessage);
|
|
2842
|
+
const { payload } = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendInitializationRequest({
|
|
2482
2843
|
partnerId: __classPrivateFieldGet(this, _AirService_partnerId, "f"),
|
|
2483
2844
|
enableLogging: __classPrivateFieldGet(this, _AirService_enableLogging, "f"),
|
|
2845
|
+
sdkVersion: airKitVersion,
|
|
2484
2846
|
});
|
|
2485
2847
|
if (payload.success === true) {
|
|
2486
2848
|
resolve();
|
|
@@ -2490,11 +2852,18 @@
|
|
|
2490
2852
|
}
|
|
2491
2853
|
}
|
|
2492
2854
|
};
|
|
2493
|
-
window.addEventListener("message",
|
|
2855
|
+
window.addEventListener("message", handleWalletMessage);
|
|
2494
2856
|
});
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2857
|
+
__classPrivateFieldSet(this, _AirService_walletIframeController, new IframeController(walletUrl, `air-wallet-${randomId()}`), "f");
|
|
2858
|
+
__classPrivateFieldGet(this, _AirService_walletIframeController, "f").createIframe();
|
|
2859
|
+
await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").open(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
|
|
2860
|
+
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_subscribeToWalletEvents).call(this);
|
|
2861
|
+
await __classPrivateFieldGet(this, _AirService_airWalletProvider, "f").startEventMessageListening(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
|
|
2862
|
+
const walletInitPromise = __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").onInitialized();
|
|
2863
|
+
await walletInitRequestPromise;
|
|
2864
|
+
const channel = new MessageChannel();
|
|
2865
|
+
await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").initWalletCommunication(channel.port1);
|
|
2866
|
+
await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").initAuthCommunication(option?.skipWalletLogin ?? false, channel.port2);
|
|
2498
2867
|
const walletInitResult = await walletInitPromise;
|
|
2499
2868
|
if (walletInitResult.payload.success !== true) {
|
|
2500
2869
|
throw new AirServiceError(walletInitResult.payload.errorName, walletInitResult.payload.errorMessage);
|
|
@@ -2511,37 +2880,42 @@
|
|
|
2511
2880
|
throw error;
|
|
2512
2881
|
}
|
|
2513
2882
|
}, _AirService_subscribeToWalletEvents = function _AirService_subscribeToWalletEvents() {
|
|
2514
|
-
|
|
2883
|
+
__classPrivateFieldGet(this, _AirService_walletMessagingService, "f").messages$.subscribe(async (msg) => {
|
|
2515
2884
|
switch (msg.type) {
|
|
2516
|
-
case
|
|
2885
|
+
case AirWalletMessageTypes.WALLET_IFRAME_VISIBILITY_REQUEST: {
|
|
2517
2886
|
const walletIframeController = __classPrivateFieldGet(this, _AirService_walletIframeController, "f");
|
|
2518
2887
|
walletIframeController.setIframeVisibility(msg.payload.visible);
|
|
2519
2888
|
walletIframeController.updateIframeState();
|
|
2520
2889
|
break;
|
|
2521
2890
|
}
|
|
2522
|
-
case
|
|
2891
|
+
case AirWalletMessageTypes.WALLET_LOGIN_RESPONSE: {
|
|
2523
2892
|
if (msg.payload.success === true && !__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f")) {
|
|
2524
2893
|
__classPrivateFieldSet(this, _AirService_walletLoggedInResult, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, msg.payload), "f");
|
|
2525
2894
|
__classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerWalletInitialized).call(this, __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"));
|
|
2526
2895
|
}
|
|
2527
2896
|
break;
|
|
2528
2897
|
}
|
|
2529
|
-
case
|
|
2898
|
+
case AirWalletMessageTypes.OPEN_WINDOW_REQUEST: {
|
|
2530
2899
|
try {
|
|
2531
|
-
const
|
|
2532
|
-
|
|
2900
|
+
const onRetry = async () => {
|
|
2901
|
+
const { payload } = await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendOpenWindowRetryRequest(msg.payload.windowId);
|
|
2902
|
+
if (payload.success === false) {
|
|
2903
|
+
throw new AirServiceError(payload.errorName, payload.errorMessage);
|
|
2904
|
+
}
|
|
2905
|
+
};
|
|
2906
|
+
const { windowController, port } = await WindowService$1.openAndInitializeWalletServiceWindow({
|
|
2533
2907
|
url: msg.payload.url,
|
|
2534
2908
|
windowId: msg.payload.windowId,
|
|
2535
2909
|
partnerId: __classPrivateFieldGet(this, _AirService_partnerId, "f"),
|
|
2536
2910
|
enableLogging: __classPrivateFieldGet(this, _AirService_enableLogging, "f"),
|
|
2537
|
-
|
|
2911
|
+
onRetry,
|
|
2538
2912
|
});
|
|
2539
|
-
windowController.onClose(() =>
|
|
2540
|
-
|
|
2913
|
+
windowController.onClose(async () => await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendWindowClosed(msg.payload.windowId));
|
|
2914
|
+
await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendOpenWindowSuccessResponse(msg.payload.windowId, port);
|
|
2541
2915
|
}
|
|
2542
2916
|
catch (err) {
|
|
2543
2917
|
const error = ensureError(err);
|
|
2544
|
-
|
|
2918
|
+
await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").sendOpenWindowErrorResponse(msg.payload.windowId, error);
|
|
2545
2919
|
}
|
|
2546
2920
|
break;
|
|
2547
2921
|
}
|
|
@@ -2586,7 +2960,7 @@
|
|
|
2586
2960
|
};
|
|
2587
2961
|
}, _AirService_cleanUpAuth = async function _AirService_cleanUpAuth() {
|
|
2588
2962
|
// Logout auth session
|
|
2589
|
-
await
|
|
2963
|
+
await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").logout();
|
|
2590
2964
|
// Destroy the auth iframe
|
|
2591
2965
|
const authIframeElement = __classPrivateFieldGet(this, _AirService_authIframeController, "f")?.iframeElement;
|
|
2592
2966
|
if (isElement(authIframeElement) && window.document.body.contains(authIframeElement)) {
|
|
@@ -2594,7 +2968,7 @@
|
|
|
2594
2968
|
__classPrivateFieldSet(this, _AirService_authIframeController, undefined, "f");
|
|
2595
2969
|
}
|
|
2596
2970
|
// Close the message service
|
|
2597
|
-
|
|
2971
|
+
await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").close();
|
|
2598
2972
|
__classPrivateFieldSet(this, _AirService_isAuthInitialized, false, "f");
|
|
2599
2973
|
}, _AirService_cleanUpWallet = async function _AirService_cleanUpWallet() {
|
|
2600
2974
|
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
@@ -2602,16 +2976,16 @@
|
|
|
2602
2976
|
// Logout wallet and destroy the wallet iframe
|
|
2603
2977
|
const walletIframeElement = __classPrivateFieldGet(this, _AirService_walletIframeController, "f")?.iframeElement;
|
|
2604
2978
|
if (isElement(walletIframeElement) && window.document.body.contains(walletIframeElement)) {
|
|
2605
|
-
await
|
|
2979
|
+
await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").logout();
|
|
2606
2980
|
__classPrivateFieldGet(this, _AirService_walletIframeController, "f").destroy();
|
|
2607
2981
|
__classPrivateFieldSet(this, _AirService_walletIframeController, undefined, "f");
|
|
2608
2982
|
}
|
|
2609
2983
|
const authIframeElement = __classPrivateFieldGet(this, _AirService_authIframeController, "f")?.iframeElement;
|
|
2610
2984
|
if (isElement(authIframeElement) && window.document.body.contains(authIframeElement)) {
|
|
2611
|
-
|
|
2985
|
+
await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").resetWalletCommunication();
|
|
2612
2986
|
}
|
|
2613
2987
|
// Close the message service
|
|
2614
|
-
|
|
2988
|
+
await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").close();
|
|
2615
2989
|
__classPrivateFieldSet(this, _AirService_walletLoggedInResult, undefined, "f");
|
|
2616
2990
|
__classPrivateFieldSet(this, _AirService_walletInitialization, undefined, "f");
|
|
2617
2991
|
};
|
|
@@ -2625,6 +2999,7 @@
|
|
|
2625
2999
|
exports.InvalidRequestRpcError = InvalidRequestRpcError;
|
|
2626
3000
|
exports.MethodNotFoundRpcError = MethodNotFoundRpcError;
|
|
2627
3001
|
exports.ProviderDisconnectedError = ProviderDisconnectedError;
|
|
3002
|
+
exports.ProviderRpcError = ProviderRpcError;
|
|
2628
3003
|
exports.SwitchChainError = SwitchChainError;
|
|
2629
3004
|
exports.TransactionRejectedRpcError = TransactionRejectedRpcError;
|
|
2630
3005
|
exports.UnauthorizedProviderError = UnauthorizedProviderError;
|