@mocanetwork/airkit 1.2.0-beta.2 → 1.2.0-beta.3

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