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