@mocanetwork/airkit 1.5.1 → 1.6.0-beta.1

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.
@@ -97,7 +97,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
97
97
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
98
98
  };
99
99
 
100
- var version = "1.5.1";
100
+ var version = "1.6.0-beta.1";
101
101
  var airkitPackage = {
102
102
  version: version};
103
103
 
@@ -142,6 +142,25 @@ const AirAuthMessageTypes = {
142
142
  EXPIRED_LOGOUT_REQUEST: "air_auth_expired_logout_request"
143
143
  };
144
144
 
145
+ const AirCredentialMessageTypes = {
146
+ SERVICE_STARTED: "air_credential_service_started",
147
+ INITIALIZATION_REQUEST: "air_credential_initialization_request",
148
+ INITIALIZATION_RESPONSE: "air_credential_initialization_response",
149
+ INIT_AUTH_COMMUNICATION: "air_credential_init_auth_communication",
150
+ CREDENTIAL_AUTH_INITIALIZED: "air_credential_auth_initialized",
151
+ INIT_WALLET_COMMUNICATION: "air_credential_init_wallet_communication",
152
+ CREDENTIAL_WALLET_INITIALIZED: "air_credential_wallet_initialized",
153
+ CREDENTIAL_IFRAME_VISIBILITY_REQUEST: "air_credential_iframe_visibility_request",
154
+ LOGOUT_REQUEST: "air_credential_logout_request",
155
+ LOGOUT_RESPONSE: "air_credential_logout_response",
156
+ // New credential operation message types
157
+ ISSUE_CREDENTIAL_REQUEST: "air_credential_issue_request",
158
+ VERIFY_CREDENTIAL_REQUEST: "air_credential_verify_request",
159
+ // Event messages for communication with parent
160
+ ISSUE_CREDENTIAL_RESPONSE: "air_credential_issue_response",
161
+ VERIFY_CREDENTIAL_RESPONSE: "air_credential_verify_response"
162
+ };
163
+
145
164
  const AirRecoveryMessageTypes = {
146
165
  SERVICE_STARTED: "air_recovery_service_started",
147
166
  INITIALIZATION_REQUEST: "air_recovery_initialization_request",
@@ -587,9 +606,9 @@ const BUILD_ENV = {
587
606
  };
588
607
  const IFRAME_NAME_PREFIX_SET = [
589
608
  "air-wallet",
590
- "air-recovery",
591
609
  "air-credential",
592
610
  "air-auth",
611
+ "air-recovery",
593
612
  ]; // order defines the z-index from highest to lowest
594
613
 
595
614
  const AIR_URLS = {
@@ -1781,17 +1800,17 @@ var AirWalletProviderMessageTypes;
1781
1800
  AirWalletProviderMessageTypes["EVENT"] = "JRPC_EVENT";
1782
1801
  })(AirWalletProviderMessageTypes || (AirWalletProviderMessageTypes = {}));
1783
1802
 
1784
- var _a$3, _ProviderMessageService_instance;
1803
+ var _a$4, _ProviderMessageService_instance;
1785
1804
  const ALLOWED_PROVIDER_MESSAGES = [
1786
1805
  AirWalletProviderMessageTypes.RESPONSE,
1787
1806
  AirWalletProviderMessageTypes.EVENT,
1788
1807
  ];
1789
1808
  class ProviderMessageService extends MessageServiceBase {
1790
1809
  static create() {
1791
- if (!__classPrivateFieldGet(this, _a$3, "f", _ProviderMessageService_instance)) {
1792
- __classPrivateFieldSet(this, _a$3, new _a$3("Embed Service: Provider Channel", ALLOWED_PROVIDER_MESSAGES), "f", _ProviderMessageService_instance);
1810
+ if (!__classPrivateFieldGet(this, _a$4, "f", _ProviderMessageService_instance)) {
1811
+ __classPrivateFieldSet(this, _a$4, new _a$4("Embed Service: Provider Channel", ALLOWED_PROVIDER_MESSAGES), "f", _ProviderMessageService_instance);
1793
1812
  }
1794
- return __classPrivateFieldGet(this, _a$3, "f", _ProviderMessageService_instance);
1813
+ return __classPrivateFieldGet(this, _a$4, "f", _ProviderMessageService_instance);
1795
1814
  }
1796
1815
  async open(walletIframe) {
1797
1816
  const origin = new URL(walletIframe.src).origin;
@@ -1807,7 +1826,7 @@ class ProviderMessageService extends MessageServiceBase {
1807
1826
  return response;
1808
1827
  }
1809
1828
  }
1810
- _a$3 = ProviderMessageService;
1829
+ _a$4 = ProviderMessageService;
1811
1830
  _ProviderMessageService_instance = { value: void 0 };
1812
1831
 
1813
1832
  var _AirWalletProvider_instances, _AirWalletProvider_providerMessageService, _AirWalletProvider_isWalletInitialized, _AirWalletProvider_getLoginResult, _AirWalletProvider_ensureWallet, _AirWalletProvider_eventListeners, _AirWalletProvider_emit;
@@ -1918,7 +1937,7 @@ _AirWalletProvider_providerMessageService = new WeakMap(), _AirWalletProvider_is
1918
1937
  });
1919
1938
  };
1920
1939
 
1921
- var _a$2, _AuthMessageService_instance;
1940
+ var _a$3, _AuthMessageService_instance;
1922
1941
  const ALLOWED_AUTH_MESSAGES = [
1923
1942
  AirAuthMessageTypes.INITIALIZATION_RESPONSE,
1924
1943
  AirAuthMessageTypes.LOGIN_RESPONSE,
@@ -1936,10 +1955,10 @@ const ALLOWED_AUTH_MESSAGES = [
1936
1955
  ];
1937
1956
  class AuthMessageService extends MessageServiceBase {
1938
1957
  static create() {
1939
- if (!__classPrivateFieldGet(this, _a$2, "f", _AuthMessageService_instance)) {
1940
- __classPrivateFieldSet(this, _a$2, new _a$2("Embed Service: Auth Channel", ALLOWED_AUTH_MESSAGES), "f", _AuthMessageService_instance);
1958
+ if (!__classPrivateFieldGet(this, _a$3, "f", _AuthMessageService_instance)) {
1959
+ __classPrivateFieldSet(this, _a$3, new _a$3("Embed Service: Auth Channel", ALLOWED_AUTH_MESSAGES), "f", _AuthMessageService_instance);
1941
1960
  }
1942
- return __classPrivateFieldGet(this, _a$2, "f", _AuthMessageService_instance);
1961
+ return __classPrivateFieldGet(this, _a$3, "f", _AuthMessageService_instance);
1943
1962
  }
1944
1963
  async open(authIframe) {
1945
1964
  const origin = new URL(authIframe.src).origin;
@@ -1964,6 +1983,9 @@ class AuthMessageService extends MessageServiceBase {
1964
1983
  await this.sendMessage({ type: AirAuthMessageTypes.LOGIN_REQUEST, payload });
1965
1984
  return response;
1966
1985
  }
1986
+ onLoggedIn() {
1987
+ return firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.LOGIN_RESPONSE && msg.payload?.success === true)));
1988
+ }
1967
1989
  async logout() {
1968
1990
  const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.LOGOUT_RESPONSE)));
1969
1991
  await this.sendMessage({ type: AirAuthMessageTypes.LOGOUT_REQUEST });
@@ -2048,9 +2070,84 @@ class AuthMessageService extends MessageServiceBase {
2048
2070
  });
2049
2071
  }
2050
2072
  }
2051
- _a$2 = AuthMessageService;
2073
+ _a$3 = AuthMessageService;
2052
2074
  _AuthMessageService_instance = { value: void 0 };
2053
2075
 
2076
+ var _a$2, _CredentialMessageService_instance;
2077
+ const ALLOWED_CREDENTIAL_MESSAGES = [
2078
+ AirCredentialMessageTypes.INITIALIZATION_RESPONSE,
2079
+ AirCredentialMessageTypes.CREDENTIAL_IFRAME_VISIBILITY_REQUEST,
2080
+ AirCredentialMessageTypes.CREDENTIAL_AUTH_INITIALIZED,
2081
+ AirCredentialMessageTypes.CREDENTIAL_WALLET_INITIALIZED,
2082
+ AirCredentialMessageTypes.LOGOUT_RESPONSE,
2083
+ AirCredentialMessageTypes.ISSUE_CREDENTIAL_RESPONSE,
2084
+ AirCredentialMessageTypes.VERIFY_CREDENTIAL_RESPONSE,
2085
+ ];
2086
+ class CredentialMessageService extends MessageServiceBase {
2087
+ static create() {
2088
+ if (!__classPrivateFieldGet(this, _a$2, "f", _CredentialMessageService_instance)) {
2089
+ __classPrivateFieldSet(this, _a$2, new _a$2("Embed Service: Credential Channel", ALLOWED_CREDENTIAL_MESSAGES), "f", _CredentialMessageService_instance);
2090
+ }
2091
+ return __classPrivateFieldGet(this, _a$2, "f", _CredentialMessageService_instance);
2092
+ }
2093
+ async open(iframeElement) {
2094
+ await this._open({
2095
+ window: iframeElement.contentWindow,
2096
+ origin: new URL(iframeElement.src).origin,
2097
+ });
2098
+ }
2099
+ async sendInitializationRequest(payload) {
2100
+ const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirCredentialMessageTypes.INITIALIZATION_RESPONSE)));
2101
+ await this.sendMessage({
2102
+ type: AirCredentialMessageTypes.INITIALIZATION_REQUEST,
2103
+ payload,
2104
+ });
2105
+ return response;
2106
+ }
2107
+ async initAuthCommunication() {
2108
+ const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirCredentialMessageTypes.CREDENTIAL_AUTH_INITIALIZED)));
2109
+ await this.sendMessage({
2110
+ type: AirCredentialMessageTypes.INIT_AUTH_COMMUNICATION,
2111
+ });
2112
+ return response;
2113
+ }
2114
+ async initWalletCommunication() {
2115
+ const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirCredentialMessageTypes.CREDENTIAL_WALLET_INITIALIZED)));
2116
+ await this.sendMessage({
2117
+ type: AirCredentialMessageTypes.INIT_WALLET_COMMUNICATION,
2118
+ });
2119
+ return response;
2120
+ }
2121
+ async logout() {
2122
+ const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirCredentialMessageTypes.LOGOUT_RESPONSE)));
2123
+ await this.sendMessage({
2124
+ type: AirCredentialMessageTypes.LOGOUT_REQUEST,
2125
+ });
2126
+ return response;
2127
+ }
2128
+ async sendIssueCredentialRequest(payload) {
2129
+ const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirCredentialMessageTypes.ISSUE_CREDENTIAL_RESPONSE)));
2130
+ await this.sendMessage({
2131
+ type: AirCredentialMessageTypes.ISSUE_CREDENTIAL_REQUEST,
2132
+ payload,
2133
+ });
2134
+ return response;
2135
+ }
2136
+ async sendVerifyCredentialRequest(payload) {
2137
+ const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirCredentialMessageTypes.VERIFY_CREDENTIAL_RESPONSE)));
2138
+ await this.sendMessage({
2139
+ type: AirCredentialMessageTypes.VERIFY_CREDENTIAL_REQUEST,
2140
+ payload,
2141
+ });
2142
+ return response;
2143
+ }
2144
+ async close() {
2145
+ await super.close();
2146
+ }
2147
+ }
2148
+ _a$2 = CredentialMessageService;
2149
+ _CredentialMessageService_instance = { value: void 0 };
2150
+
2054
2151
  class IframeController {
2055
2152
  getZIndex() {
2056
2153
  for (let i = 0; i < IFRAME_NAME_PREFIX_SET.length; i++) {
@@ -2501,12 +2598,9 @@ class WindowService {
2501
2598
  }
2502
2599
  var WindowService$1 = WindowService.instance;
2503
2600
 
2504
- 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_recoveryInitialization, _AirService_recoveryMessagingService, _AirService_recoveryIframeController, _AirService_ensureWallet, _AirService_initializeWallet, _AirService_subscribeToWalletEvents, _AirService_triggerEventListeners, _AirService_triggerAirAuthInitialized, _AirService_triggerAirAuthLoggedIn, _AirService_triggerAirAuthLoggedOut, _AirService_triggerWalletInitialized, _AirService_createLoginResult, _AirService_createWalletInitializedResult, _AirService_cleanUpAuth, _AirService_cleanUpWallet, _AirService_ensureRecovery, _AirService_initializeRecovery, _AirService_subscribeToRecoveryEvents, _AirService_cleanUpRecovery;
2601
+ 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_recoveryInitialization, _AirService_recoveryMessagingService, _AirService_recoveryIframeController, _AirService_credentialsInitialization, _AirService_credentialMessagingService, _AirService_credentialIframeController, _AirService_ensureCredential, _AirService_initializeCredentials, _AirService_subscribeToCredentialEvents, _AirService_cleanUpCredential, _AirService_ensureWallet, _AirService_initializeWallet, _AirService_subscribeToWalletEvents, _AirService_triggerEventListeners, _AirService_triggerAirAuthInitialized, _AirService_triggerAirAuthLoggedIn, _AirService_triggerAirAuthLoggedOut, _AirService_triggerWalletInitialized, _AirService_createLoginResult, _AirService_createWalletInitializedResult, _AirService_cleanUpAuth, _AirService_cleanUpWallet, _AirService_ensureRecovery, _AirService_initializeRecovery, _AirService_subscribeToRecoveryEvents, _AirService_cleanUpRecovery;
2505
2602
  const airKitVersion = airkitPackage.version;
2506
2603
  class AirService {
2507
- // #credentialsInitialization?: Promise<void>;
2508
- // #credentialMessagingService: CredentialMessageService;
2509
- // #credentialIframeController: IframeController;
2510
2604
  constructor({ partnerId }) {
2511
2605
  _AirService_instances.add(this);
2512
2606
  _AirService_loginResult.set(this, void 0);
@@ -2526,11 +2620,14 @@ class AirService {
2526
2620
  _AirService_recoveryInitialization.set(this, void 0);
2527
2621
  _AirService_recoveryMessagingService.set(this, void 0);
2528
2622
  _AirService_recoveryIframeController.set(this, void 0);
2623
+ _AirService_credentialsInitialization.set(this, void 0);
2624
+ _AirService_credentialMessagingService.set(this, void 0);
2625
+ _AirService_credentialIframeController.set(this, void 0);
2529
2626
  __classPrivateFieldSet(this, _AirService_partnerId, partnerId, "f");
2530
2627
  __classPrivateFieldSet(this, _AirService_authMessagingService, AuthMessageService.create(), "f");
2531
2628
  __classPrivateFieldSet(this, _AirService_walletMessagingService, WalletMessageService.create(), "f");
2532
2629
  __classPrivateFieldSet(this, _AirService_recoveryMessagingService, RecoveryMessageService.create(), "f");
2533
- // this.#credentialMessagingService = CredentialMessageService.create();
2630
+ __classPrivateFieldSet(this, _AirService_credentialMessagingService, CredentialMessageService.create(), "f");
2534
2631
  __classPrivateFieldSet(this, _AirService_airWalletProvider, new AirWalletProvider({
2535
2632
  isWalletInitialized: () => this.isWalletInitialized,
2536
2633
  ensureWallet: __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).bind(this),
@@ -2642,7 +2739,7 @@ class AirService {
2642
2739
  __classPrivateFieldSet(this, _AirService_isAuthInitialized, true, "f");
2643
2740
  __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerAirAuthInitialized).call(this, { rehydrated: result.rehydrated });
2644
2741
  if (result.preloadWallet)
2645
- this.preloadWallet();
2742
+ void this.preloadWallet();
2646
2743
  // rehydrated auth session
2647
2744
  if (result.rehydrated) {
2648
2745
  __classPrivateFieldSet(this, _AirService_loginResult, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createLoginResult).call(this, result), "f");
@@ -2821,7 +2918,7 @@ class AirService {
2821
2918
  if (!this.isLoggedIn)
2822
2919
  throw new Error("No active session to logout");
2823
2920
  // Clear up credentials first to avoid issues with wallet and auth messaging services
2824
- // await this.#cleanUpCredential();
2921
+ await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpCredential).call(this);
2825
2922
  await Promise.all([
2826
2923
  __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this),
2827
2924
  __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpRecovery).call(this),
@@ -2834,7 +2931,7 @@ class AirService {
2834
2931
  await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
2835
2932
  await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpAuth).call(this);
2836
2933
  await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpRecovery).call(this);
2837
- // await this.#cleanUpCredential();
2934
+ await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpCredential).call(this);
2838
2935
  this.clearEventListeners();
2839
2936
  }
2840
2937
  /**
@@ -2845,8 +2942,6 @@ class AirService {
2845
2942
  * - "logged_in": User successfully logged in
2846
2943
  * - "logged_out": User logged out
2847
2944
  * - "wallet_initialized": Wallet initialization completed
2848
- * - "credential_issuance_finished": Credential issuance finished (success or failure)
2849
- * - "credential_verification_finished": Credential verification finished (success or failure)
2850
2945
  *
2851
2946
  * @param listener The event listener function
2852
2947
  */
@@ -2861,216 +2956,139 @@ class AirService {
2861
2956
  clearEventListeners() {
2862
2957
  __classPrivateFieldSet(this, _AirService_airAuthListener, [], "f");
2863
2958
  }
2959
+ async preloadCredential() {
2960
+ await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
2961
+ }
2962
+ async issueCredential({ authToken, issuerDid, credentialId, credentialSubject, }) {
2963
+ await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
2964
+ const { payload } = await __classPrivateFieldGet(this, _AirService_credentialMessagingService, "f").sendIssueCredentialRequest({
2965
+ partnerToken: authToken,
2966
+ issuerDid,
2967
+ credentialId,
2968
+ credentialSubject,
2969
+ });
2970
+ if (payload.closeDApp) {
2971
+ window.close();
2972
+ }
2973
+ if (payload.success === false) {
2974
+ throw new AirServiceError(payload.errorName, payload.errorMessage);
2975
+ }
2976
+ }
2977
+ async verifyCredential({ authToken, programId, redirectUrl, }) {
2978
+ await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
2979
+ const { payload } = await __classPrivateFieldGet(this, _AirService_credentialMessagingService, "f").sendVerifyCredentialRequest({
2980
+ partnerToken: authToken,
2981
+ programId,
2982
+ redirectUrl,
2983
+ });
2984
+ if (payload.success === false) {
2985
+ throw new AirServiceError(payload.errorName, payload.errorMessage);
2986
+ }
2987
+ return payload.verificationResult;
2988
+ }
2864
2989
  }
2865
- _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_recoveryInitialization = new WeakMap(), _AirService_recoveryMessagingService = new WeakMap(), _AirService_recoveryIframeController = new WeakMap(), _AirService_instances = new WeakSet(), _AirService_ensureWallet =
2866
- // /**
2867
- // * Issue a credential using the credential SDK
2868
- // * @param claimRequest The claim request containing credential details
2869
- // * @param projectName The name of the project
2870
- // * @param options Optional configuration for the credential widget
2871
- // */
2872
- // public async issueCredential(
2873
- // claimRequest: {
2874
- // process: "Issue";
2875
- // issuerDid: string;
2876
- // issuerAuth: string;
2877
- // credentialId: string;
2878
- // credentialSubject: Record<string, unknown>;
2879
- // },
2880
- // projectName: string,
2881
- // options?: {
2882
- // endpoint?: string;
2883
- // theme?: "auto" | "light" | "dark";
2884
- // locale?: "en" | "zh-hk";
2885
- // }
2886
- // ): Promise<Record<string, never>> {
2887
- // await this.#ensureCredentials();
2888
- // try {
2889
- // const { payload } = await this.#credentialMessagingService.sendIssueCredentialRequest({
2890
- // claimRequest,
2891
- // projectName,
2892
- // options: options || {},
2893
- // });
2894
- //
2895
- // return payload;
2896
- // } catch (error) {
2897
- // throw AirServiceError.from(error);
2898
- // }
2899
- // }
2900
- //
2901
- // /**
2902
- // * Verify a credential using the credential SDK
2903
- // * @param queryRequest The query request containing verification details
2904
- // * @param projectName The name of the project
2905
- // * @param options Optional configuration for the credential widget
2906
- // */
2907
- // public async verifyCredential(
2908
- // queryRequest: {
2909
- // process: "Verify";
2910
- // verifierAuth: string;
2911
- // programId: string;
2912
- // },
2913
- // projectName: string,
2914
- // options?: {
2915
- // endpoint?: string;
2916
- // theme?: "auto" | "light" | "dark";
2917
- // locale?: "en" | "zh-hk";
2918
- // }
2919
- // ): Promise<{
2920
- // verificationResults: {
2921
- // status:
2922
- // | "Compliant"
2923
- // | "Non-Compliant"
2924
- // | "Pending"
2925
- // | "Revoking"
2926
- // | "Revoked"
2927
- // | "Expired"
2928
- // | "NotFound";
2929
- // };
2930
- // }> {
2931
- // await this.#ensureCredentials();
2932
- //
2933
- // try {
2934
- // const { payload } = await this.#credentialMessagingService.sendVerifyCredentialRequest({
2935
- // queryRequest,
2936
- // projectName,
2937
- // options: options || {},
2938
- // });
2939
- //
2940
- // return payload;
2941
- // } catch (error) {
2942
- // throw AirServiceError.from(error);
2943
- // }
2944
- // }
2945
- // async #ensureCredentials(): Promise<void> {
2946
- // if (!this.isInitialized) throw new Error("Service not initialized");
2947
- // if (!this.isLoggedIn) throw new Error("User not logged in");
2948
- // void this.#ensureWallet();
2949
- //
2950
- // try {
2951
- // if (!this.#credentialsInitialization)
2952
- // this.#credentialsInitialization = this.#initializeCredentials();
2953
- // await this.#credentialsInitialization;
2954
- // } catch (error) {
2955
- // this.#credentialsInitialization = null;
2956
- // log.error("Error ensuring credentials", error);
2957
- // throw error;
2958
- // }
2959
- // }
2960
- // async #initializeCredentials(): Promise<void> {
2961
- // if (this.#credentialsInitialization) {
2962
- // throw new Error("Already initializing credentials");
2963
- // }
2964
- // const { credentialUrl } = AIR_URLS[this.#buildEnv];
2965
- // const credentailIframeOrigin = new URL(credentialUrl).origin;
2966
- // try {
2967
- // const credentialInitRequestPromise = new Promise<void>((resolve, reject) => {
2968
- // const handleCredentialMessage = async (ev: MessageEvent) => {
2969
- // if (ev.origin !== credentailIframeOrigin) return;
2970
- // if (ev.data === AirCredentialMessageTypes.SERVICE_STARTED) {
2971
- // window.removeEventListener("message", handleCredentialMessage);
2972
- // const { payload } = await this.#credentialMessagingService.sendInitializationRequest({
2973
- // partnerId: this.#partnerId,
2974
- // enableLogging: this.#enableLogging,
2975
- // sdkVersion: airKitVersion,
2976
- // enableAutomation: this.shouldEnableAutomation(),
2977
- // });
2978
- // if (payload.success === true) {
2979
- // resolve();
2980
- // } else {
2981
- // reject(new AirServiceError(payload.errorName, payload.errorMessage));
2982
- // }
2983
- // }
2984
- // };
2985
- // window.addEventListener("message", handleCredentialMessage);
2986
- // });
2987
- // this.#credentialIframeController = new IframeController("air-credential", credentialUrl);
2988
- // this.#credentialIframeController.createIframe();
2989
- // log.info(credentialUrl, "url loaded");
2990
- //
2991
- // await this.#credentialMessagingService.open(this.#credentialIframeController.iframeElement);
2992
- // this.#subscribeToCredentialEvents();
2993
- // await credentialInitRequestPromise;
2994
- //
2995
- // await this.#authMessagingService.initCredentialCommunication();
2996
- // await this.#credentialMessagingService.initAuthCommunication();
2997
- // log.info("[Embed] Credential auth channel initialized");
2998
- //
2999
- // await this.#ensureWallet();
3000
- // await this.#walletMessagingService.initCredentialCommunication();
3001
- // await this.#credentialMessagingService.initWalletCommunication();
3002
- // log.info("[Embed] Credential wallet channel initialized");
3003
- //
3004
- // log.info("Credential service initialized successfully");
3005
- // } catch (error) {
3006
- // log.error("Error initializing credentials", error);
3007
- // await this.#cleanUpCredential();
3008
- // throw error;
3009
- // }
3010
- // }
3011
- // #subscribeToCredentialEvents() {
3012
- // this.#credentialMessagingService.messages$.subscribe(async (message: AirCredentialMessage) => {
3013
- // switch (message.type) {
3014
- // case AirCredentialMessageTypes.CREDENTIAL_IFRAME_VISIBILITY_REQUEST: {
3015
- // this.#credentialIframeController.setIframeVisibility(message.payload.visible);
3016
- // this.#credentialIframeController.updateIframeState();
3017
- // break;
3018
- // }
3019
- // case AirCredentialMessageTypes.ISSUE_CREDENTIAL_RESPONSE: {
3020
- // // Trigger general event for issue credential completion
3021
- // this.#triggerEventListeners({
3022
- // event: "credential_issuance_finished",
3023
- // data: {
3024
- // success: true,
3025
- // },
3026
- // });
3027
- // break;
3028
- // }
3029
- // case AirCredentialMessageTypes.VERIFY_CREDENTIAL_RESPONSE: {
3030
- // // Trigger general event for verify credential completion
3031
- // this.#triggerEventListeners({
3032
- // event: "credential_verification_finished",
3033
- // data: {
3034
- // success: true,
3035
- // verificationResults: message.payload.verificationResults,
3036
- // },
3037
- // });
3038
- // break;
3039
- // }
3040
- // }
3041
- // });
3042
- // }
3043
- // async #cleanUpCredential(): Promise<void> {
3044
- // if (!this.#isAuthInitialized) return;
3045
- //
3046
- // const credentialIframeElement = this.#credentialIframeController?.iframeElement;
3047
- // if (
3048
- // isElement(credentialIframeElement) &&
3049
- // window.document.body.contains(credentialIframeElement)
3050
- // ) {
3051
- // await this.#credentialMessagingService.logout();
3052
- // this.#credentialIframeController.destroy();
3053
- // this.#credentialIframeController = undefined;
3054
- // }
3055
- //
3056
- // const walletIframeElement = this.#walletIframeController?.iframeElement;
3057
- // if (isElement(walletIframeElement) && window.document.body.contains(walletIframeElement)) {
3058
- // await this.#walletMessagingService.resetCredentialCommunication();
3059
- // }
3060
- //
3061
- // const authIframeElement = this.#authIframeController?.iframeElement;
3062
- // if (isElement(authIframeElement) && window.document.body.contains(authIframeElement)) {
3063
- // await this.#authMessagingService.resetCredentialCommunication();
3064
- // }
3065
- //
3066
- // await this.#credentialMessagingService.close();
3067
- // this.#credentialsInitialization = undefined;
3068
- // }
3069
- async function _AirService_ensureWallet(option) {
2990
+ _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_recoveryInitialization = new WeakMap(), _AirService_recoveryMessagingService = new WeakMap(), _AirService_recoveryIframeController = new WeakMap(), _AirService_credentialsInitialization = new WeakMap(), _AirService_credentialMessagingService = new WeakMap(), _AirService_credentialIframeController = new WeakMap(), _AirService_instances = new WeakSet(), _AirService_ensureCredential = async function _AirService_ensureCredential() {
2991
+ if (!this.isInitialized)
2992
+ throw new Error("Service not initialized");
2993
+ void __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
2994
+ try {
2995
+ if (!__classPrivateFieldGet(this, _AirService_credentialsInitialization, "f"))
2996
+ __classPrivateFieldSet(this, _AirService_credentialsInitialization, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_initializeCredentials).call(this), "f");
2997
+ await __classPrivateFieldGet(this, _AirService_credentialsInitialization, "f");
2998
+ }
2999
+ catch (error) {
3000
+ __classPrivateFieldSet(this, _AirService_credentialsInitialization, null, "f");
3001
+ log.error("Error ensuring credentials", error);
3002
+ throw error;
3003
+ }
3004
+ }, _AirService_initializeCredentials = async function _AirService_initializeCredentials() {
3005
+ if (__classPrivateFieldGet(this, _AirService_credentialsInitialization, "f")) {
3006
+ throw new Error("Already initializing credentials");
3007
+ }
3008
+ const { credentialUrl } = AIR_URLS[__classPrivateFieldGet(this, _AirService_buildEnv, "f")];
3009
+ const credentialIframeOrigin = new URL(credentialUrl).origin;
3010
+ let closeDApp = false;
3011
+ try {
3012
+ const credentialInitRequestPromise = new Promise((resolve, reject) => {
3013
+ const handleCredentialMessage = async (ev) => {
3014
+ if (ev.origin !== credentialIframeOrigin)
3015
+ return;
3016
+ if (ev.data === AirCredentialMessageTypes.SERVICE_STARTED) {
3017
+ window.removeEventListener("message", handleCredentialMessage);
3018
+ const { payload } = await __classPrivateFieldGet(this, _AirService_credentialMessagingService, "f").sendInitializationRequest({
3019
+ partnerId: __classPrivateFieldGet(this, _AirService_partnerId, "f"),
3020
+ enableLogging: __classPrivateFieldGet(this, _AirService_enableLogging, "f"),
3021
+ sdkVersion: airKitVersion,
3022
+ partnerDAppUrl: window.location.href,
3023
+ enableAutomation: this.shouldEnableAutomation(),
3024
+ });
3025
+ if (payload.success === true) {
3026
+ resolve();
3027
+ }
3028
+ else {
3029
+ closeDApp = !!payload.closeDApp;
3030
+ reject(new AirServiceError(payload.errorName, payload.errorMessage));
3031
+ }
3032
+ }
3033
+ };
3034
+ window.addEventListener("message", handleCredentialMessage);
3035
+ });
3036
+ __classPrivateFieldSet(this, _AirService_credentialIframeController, new IframeController("air-credential", credentialUrl), "f");
3037
+ __classPrivateFieldGet(this, _AirService_credentialIframeController, "f").createIframe();
3038
+ log.info(credentialUrl, "url loaded");
3039
+ await __classPrivateFieldGet(this, _AirService_credentialMessagingService, "f").open(__classPrivateFieldGet(this, _AirService_credentialIframeController, "f").iframeElement);
3040
+ __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_subscribeToCredentialEvents).call(this);
3041
+ await credentialInitRequestPromise;
3042
+ await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").initCredentialCommunication();
3043
+ await __classPrivateFieldGet(this, _AirService_credentialMessagingService, "f").initAuthCommunication();
3044
+ log.info("[Embed] Credential auth channel initialized");
3045
+ await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
3046
+ await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").initCredentialCommunication();
3047
+ await __classPrivateFieldGet(this, _AirService_credentialMessagingService, "f").initWalletCommunication();
3048
+ log.info("[Embed] Credential wallet channel initialized");
3049
+ log.info("Credential service initialized successfully");
3050
+ }
3051
+ catch (error) {
3052
+ log.error("Error initializing credentials", error);
3053
+ await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpCredential).call(this);
3054
+ if (closeDApp) {
3055
+ window.close();
3056
+ }
3057
+ throw error;
3058
+ }
3059
+ }, _AirService_subscribeToCredentialEvents = function _AirService_subscribeToCredentialEvents() {
3060
+ __classPrivateFieldGet(this, _AirService_credentialMessagingService, "f").messages$.subscribe(async (message) => {
3061
+ switch (message.type) {
3062
+ case AirCredentialMessageTypes.CREDENTIAL_IFRAME_VISIBILITY_REQUEST: {
3063
+ __classPrivateFieldGet(this, _AirService_credentialIframeController, "f").setIframeVisibility(message.payload.visible);
3064
+ __classPrivateFieldGet(this, _AirService_credentialIframeController, "f").updateIframeState();
3065
+ break;
3066
+ }
3067
+ }
3068
+ });
3069
+ }, _AirService_cleanUpCredential = async function _AirService_cleanUpCredential() {
3070
+ if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
3071
+ return;
3072
+ const credentialIframeElement = __classPrivateFieldGet(this, _AirService_credentialIframeController, "f")?.iframeElement;
3073
+ if (isElement(credentialIframeElement) &&
3074
+ window.document.body.contains(credentialIframeElement)) {
3075
+ await __classPrivateFieldGet(this, _AirService_credentialMessagingService, "f").logout();
3076
+ __classPrivateFieldGet(this, _AirService_credentialIframeController, "f").destroy();
3077
+ __classPrivateFieldSet(this, _AirService_credentialIframeController, undefined, "f");
3078
+ }
3079
+ const walletIframeElement = __classPrivateFieldGet(this, _AirService_walletIframeController, "f")?.iframeElement;
3080
+ if (isElement(walletIframeElement) && window.document.body.contains(walletIframeElement)) {
3081
+ await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").resetCredentialCommunication();
3082
+ }
3083
+ const authIframeElement = __classPrivateFieldGet(this, _AirService_authIframeController, "f")?.iframeElement;
3084
+ if (isElement(authIframeElement) && window.document.body.contains(authIframeElement)) {
3085
+ await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").resetCredentialCommunication();
3086
+ }
3087
+ await __classPrivateFieldGet(this, _AirService_credentialMessagingService, "f").close();
3088
+ __classPrivateFieldSet(this, _AirService_credentialsInitialization, undefined, "f");
3089
+ }, _AirService_ensureWallet = async function _AirService_ensureWallet(option) {
3070
3090
  if (!this.isInitialized)
3071
3091
  throw new Error("Service not initialized");
3072
- if (!this.isLoggedIn && !option?.skipWalletLogin)
3073
- throw new Error("User not logged in");
3074
3092
  if (!__classPrivateFieldGet(this, _AirService_walletInitialization, "f"))
3075
3093
  __classPrivateFieldSet(this, _AirService_walletInitialization, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_initializeWallet).call(this, option), "f");
3076
3094
  if (__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"))
@@ -3129,6 +3147,9 @@ async function _AirService_ensureWallet(option) {
3129
3147
  await __classPrivateFieldGet(this, _AirService_airWalletProvider, "f").startEventMessageListening(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
3130
3148
  const walletInitPromise = __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").onInitialized();
3131
3149
  await walletInitRequestPromise;
3150
+ if (!this.isLoggedIn && !option?.skipWalletLogin) {
3151
+ await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").onLoggedIn();
3152
+ }
3132
3153
  await __classPrivateFieldGet(this, _AirService_authMessagingService, "f").initWalletCommunication();
3133
3154
  await __classPrivateFieldGet(this, _AirService_walletMessagingService, "f").initAuthCommunication(option?.skipWalletLogin ?? false);
3134
3155
  const walletInitResult = await walletInitPromise;