@mocanetwork/airkit 1.7.0 → 1.8.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/airkit.cjs.js +81 -21
- package/dist/airkit.esm.js +81 -21
- package/dist/airkit.umd.js +81 -21
- package/dist/types/airService.d.ts +23 -12
- package/dist/types/common/air/messaging/credential.d.ts +4 -0
- package/dist/types/common/air/messaging/types.d.ts +2 -0
- package/dist/types/common/air/messaging/wallet.d.ts +11 -3
- package/dist/types/common/const.d.ts +32 -2
- package/dist/types/common/currency.d.ts +35 -0
- package/dist/types/common/provider/types.d.ts +12 -1
- package/dist/types/common/realm/user/types.d.ts +1 -0
- package/dist/types/common/types.d.ts +8 -0
- package/dist/types/interfaces.d.ts +10 -0
- package/dist/types/utils.d.ts +3 -4
- package/dist/types/walletMessageService.d.ts +5 -3
- package/package.json +2 -2
package/dist/airkit.cjs.js
CHANGED
|
@@ -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.
|
|
100
|
+
var version = "1.8.0-beta.2";
|
|
101
101
|
var airkitPackage = {
|
|
102
102
|
version: version};
|
|
103
103
|
|
|
@@ -618,7 +618,8 @@ const mocaDevnet = {
|
|
|
618
618
|
address: "0xcA11bde05977b3631167028862bE2a173976CA11",
|
|
619
619
|
blockCreated: 3837540
|
|
620
620
|
}
|
|
621
|
-
}
|
|
621
|
+
},
|
|
622
|
+
testnet: true
|
|
622
623
|
};
|
|
623
624
|
const mocaTestnet = {
|
|
624
625
|
id: 222888,
|
|
@@ -630,8 +631,8 @@ const mocaTestnet = {
|
|
|
630
631
|
},
|
|
631
632
|
rpcUrls: {
|
|
632
633
|
default: {
|
|
633
|
-
http: ["https://
|
|
634
|
-
webSocket: ["wss://
|
|
634
|
+
http: ["https://rpc.testnet.mocachain.dev"],
|
|
635
|
+
webSocket: ["wss://rpc.testnet.mocachain.dev"]
|
|
635
636
|
}
|
|
636
637
|
},
|
|
637
638
|
blockExplorers: {
|
|
@@ -645,7 +646,8 @@ const mocaTestnet = {
|
|
|
645
646
|
address: "0xcA11bde05977b3631167028862bE2a173976CA11",
|
|
646
647
|
blockCreated: 1330259
|
|
647
648
|
}
|
|
648
|
-
}
|
|
649
|
+
},
|
|
650
|
+
testnet: true
|
|
649
651
|
};
|
|
650
652
|
|
|
651
653
|
const BUILD_ENV = {
|
|
@@ -663,6 +665,12 @@ const IFRAME_NAME_PREFIX_SET = [
|
|
|
663
665
|
]; // order defines the z-index from highest to lowest
|
|
664
666
|
|
|
665
667
|
const FONT_CDNS = ["https://fonts.googleapis.com", "https://fonts.gstatic.com"];
|
|
668
|
+
const SANDBOX_TESTNET_URLS = {
|
|
669
|
+
authUrl: "https://account.sandbox-testnet.air3.com/auth/",
|
|
670
|
+
walletUrl: "https://account.sandbox-testnet.air3.com/wallet/",
|
|
671
|
+
recoveryUrl: "https://account.sandbox-testnet.air3.com/recovery/",
|
|
672
|
+
credentialUrl: "https://account.sandbox-testnet.air3.com/credential/",
|
|
673
|
+
};
|
|
666
674
|
const AIR_URLS = {
|
|
667
675
|
[BUILD_ENV.DEVELOPMENT]: {
|
|
668
676
|
authUrl: "https://localhost:8200/auth/",
|
|
@@ -695,6 +703,12 @@ const AIR_URLS = {
|
|
|
695
703
|
credentialUrl: "https://account.air3.com/credential/",
|
|
696
704
|
},
|
|
697
705
|
};
|
|
706
|
+
const getAirUrls = (buildEnv, credentialNetwork) => {
|
|
707
|
+
if (buildEnv === BUILD_ENV.SANDBOX && credentialNetwork === "testnet") {
|
|
708
|
+
return SANDBOX_TESTNET_URLS;
|
|
709
|
+
}
|
|
710
|
+
return AIR_URLS[buildEnv];
|
|
711
|
+
};
|
|
698
712
|
/**
|
|
699
713
|
* Injects dns-prefetch, preconnect, and prefetch link tags
|
|
700
714
|
* for a given resource or page URL.
|
|
@@ -717,7 +731,7 @@ const addResourceHints = (url, options) => {
|
|
|
717
731
|
link.rel = rel;
|
|
718
732
|
link.href = href;
|
|
719
733
|
if (as)
|
|
720
|
-
|
|
734
|
+
;
|
|
721
735
|
if (crossOrigin)
|
|
722
736
|
link.crossOrigin = "anonymous";
|
|
723
737
|
head.appendChild(link);
|
|
@@ -728,8 +742,32 @@ const addResourceHints = (url, options) => {
|
|
|
728
742
|
// Preconnect (TCP + TLS warm-up)
|
|
729
743
|
addLink("preconnect", parsed.origin, undefined, isCrossOrigin);
|
|
730
744
|
// Prefetch (optional — caches the resource or HTML document)
|
|
731
|
-
if (options?.prefetch !== false
|
|
732
|
-
|
|
745
|
+
if (options?.prefetch !== false &&
|
|
746
|
+
HTMLScriptElement.supports &&
|
|
747
|
+
HTMLScriptElement.supports("speculationrules")) {
|
|
748
|
+
const scriptId = `speculation-${btoa(parsed.href)
|
|
749
|
+
.replace(/\+/g, "-")
|
|
750
|
+
.replace(/\//g, "_")
|
|
751
|
+
.replace(/=/g, "")}`;
|
|
752
|
+
if (!document.getElementById(scriptId)) {
|
|
753
|
+
const script = document.createElement("script");
|
|
754
|
+
script.id = scriptId;
|
|
755
|
+
script.type = "speculationrules";
|
|
756
|
+
const sources = [
|
|
757
|
+
{
|
|
758
|
+
source: "list",
|
|
759
|
+
urls: [parsed.href],
|
|
760
|
+
eagerness: "immediate",
|
|
761
|
+
},
|
|
762
|
+
];
|
|
763
|
+
const rules = {
|
|
764
|
+
...((options?.as ?? "document") === "document"
|
|
765
|
+
? { prerender: sources }
|
|
766
|
+
: { prefetch: sources }),
|
|
767
|
+
};
|
|
768
|
+
script.textContent = JSON.stringify(rules);
|
|
769
|
+
document.body.appendChild(script);
|
|
770
|
+
}
|
|
733
771
|
}
|
|
734
772
|
}
|
|
735
773
|
catch (err) {
|
|
@@ -2237,7 +2275,12 @@ class IframeController {
|
|
|
2237
2275
|
return this._iframeElement;
|
|
2238
2276
|
const iframe = document.createElement("iframe");
|
|
2239
2277
|
iframe.id = this.iframeId;
|
|
2240
|
-
iframe.allow =
|
|
2278
|
+
iframe.allow = [
|
|
2279
|
+
"publickey-credentials-get *",
|
|
2280
|
+
"publickey-credentials-create *",
|
|
2281
|
+
"ch-ua-model",
|
|
2282
|
+
"ch-ua-platform-version",
|
|
2283
|
+
].join("; ");
|
|
2241
2284
|
iframe.src = this.iframeUrl;
|
|
2242
2285
|
iframe.style.position = "fixed";
|
|
2243
2286
|
iframe.style.zIndex = `${this.getZIndex()}`;
|
|
@@ -2454,7 +2497,12 @@ class WalletMessageService extends MessageServiceBase {
|
|
|
2454
2497
|
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.SHOW_SWAP_UI_RESPONSE)));
|
|
2455
2498
|
await this.sendMessage({
|
|
2456
2499
|
type: AirWalletMessageTypes.SHOW_SWAP_UI_REQUEST,
|
|
2457
|
-
payload
|
|
2500
|
+
payload: {
|
|
2501
|
+
initialFromToken: payload?.initialFromToken,
|
|
2502
|
+
fallbackFromToken: payload?.fallbackFromToken,
|
|
2503
|
+
initialToToken: payload?.initialToToken,
|
|
2504
|
+
defaultSlippage: payload?.defaultSlippage?.toString(), // TODO refactor to all be numbers
|
|
2505
|
+
},
|
|
2458
2506
|
});
|
|
2459
2507
|
return response;
|
|
2460
2508
|
}
|
|
@@ -2665,7 +2713,7 @@ class WindowService {
|
|
|
2665
2713
|
}
|
|
2666
2714
|
var WindowService$1 = WindowService.instance;
|
|
2667
2715
|
|
|
2668
|
-
var _AirService_instances, _AirService_loginResult, _AirService_buildEnv, _AirService_enableLogging, _AirService_partnerId, _AirService_sessionId, _AirService_sessionConfig, _AirService_authMessagingService, _AirService_authIframeController, _AirService_isAuthInitialized, _AirService_airEventListener, _AirService_walletMessagingService, _AirService_walletIframeController, _AirService_walletInitialization, _AirService_walletLoggedInResult, _AirService_airWalletProvider, _AirService_recoveryInitialization, _AirService_recoveryMessagingService, _AirService_recoveryIframeController, _AirService_credentialsInitialization, _AirService_credentialMessagingService, _AirService_credentialIframeController, _AirService_assertInitialized, _AirService_assertLoggedIn, _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;
|
|
2716
|
+
var _AirService_instances, _AirService_loginResult, _AirService_buildEnv, _AirService_enableLogging, _AirService_partnerId, _AirService_sessionId, _AirService_sessionConfig, _AirService_authMessagingService, _AirService_authIframeController, _AirService_isAuthInitialized, _AirService_airEventListener, _AirService_walletMessagingService, _AirService_walletIframeController, _AirService_walletInitialization, _AirService_walletLoggedInResult, _AirService_airWalletProvider, _AirService_recoveryInitialization, _AirService_recoveryMessagingService, _AirService_recoveryIframeController, _AirService_credentialsInitialization, _AirService_credentialMessagingService, _AirService_credentialIframeController, _AirService_credentialNetwork, _AirService_assertInitialized, _AirService_assertLoggedIn, _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;
|
|
2669
2717
|
const airKitVersion = airkitPackage.version;
|
|
2670
2718
|
class AirService {
|
|
2671
2719
|
constructor({ partnerId }) {
|
|
@@ -2692,6 +2740,7 @@ class AirService {
|
|
|
2692
2740
|
_AirService_credentialsInitialization.set(this, void 0);
|
|
2693
2741
|
_AirService_credentialMessagingService.set(this, void 0);
|
|
2694
2742
|
_AirService_credentialIframeController.set(this, void 0);
|
|
2743
|
+
_AirService_credentialNetwork.set(this, void 0);
|
|
2695
2744
|
__classPrivateFieldSet(this, _AirService_partnerId, partnerId, "f");
|
|
2696
2745
|
__classPrivateFieldSet(this, _AirService_authMessagingService, AuthMessageService.create(), "f");
|
|
2697
2746
|
__classPrivateFieldSet(this, _AirService_walletMessagingService, WalletMessageService.create(), "f");
|
|
@@ -2730,13 +2779,15 @@ class AirService {
|
|
|
2730
2779
|
shouldEnableAutomation() {
|
|
2731
2780
|
return localStorage.getItem("automation") === "true" && __classPrivateFieldGet(this, _AirService_buildEnv, "f") !== BUILD_ENV.PRODUCTION;
|
|
2732
2781
|
}
|
|
2733
|
-
async init(
|
|
2782
|
+
async init(config) {
|
|
2783
|
+
const { buildEnv = BUILD_ENV.PRODUCTION, enableLogging = false, skipRehydration = false, sessionConfig = undefined, preloadWallet = false, preloadCredential = false, credentialNetwork = "testnet", } = config;
|
|
2734
2784
|
if (!__classPrivateFieldGet(this, _AirService_partnerId, "f"))
|
|
2735
2785
|
throw new AirServiceError("CLIENT_ERROR", "Partner ID is required to initialize the service");
|
|
2736
2786
|
if (__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2737
2787
|
return __classPrivateFieldGet(this, _AirService_loginResult, "f") ?? null;
|
|
2788
|
+
__classPrivateFieldSet(this, _AirService_credentialNetwork, buildEnv === BUILD_ENV.SANDBOX ? credentialNetwork : undefined, "f");
|
|
2738
2789
|
configureLogLevel(buildEnv, enableLogging);
|
|
2739
|
-
const { authUrl, walletUrl, credentialUrl } =
|
|
2790
|
+
const { authUrl, walletUrl, credentialUrl } = getAirUrls(buildEnv, __classPrivateFieldGet(this, _AirService_credentialNetwork, "f"));
|
|
2740
2791
|
addResourceHints(authUrl);
|
|
2741
2792
|
if (preloadWallet) {
|
|
2742
2793
|
addResourceHints(walletUrl);
|
|
@@ -2910,7 +2961,7 @@ class AirService {
|
|
|
2910
2961
|
if (result.payload.success === false) {
|
|
2911
2962
|
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2912
2963
|
}
|
|
2913
|
-
return
|
|
2964
|
+
return result.payload;
|
|
2914
2965
|
}
|
|
2915
2966
|
/**
|
|
2916
2967
|
* @experimental This feature has not been officially released and might change in the future.
|
|
@@ -2965,7 +3016,10 @@ class AirService {
|
|
|
2965
3016
|
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2966
3017
|
}
|
|
2967
3018
|
}
|
|
2968
|
-
const sessionConfig = {
|
|
3019
|
+
const sessionConfig = {
|
|
3020
|
+
locale: results[0].payload.locale,
|
|
3021
|
+
currency: results[0].payload.currency,
|
|
3022
|
+
};
|
|
2969
3023
|
__classPrivateFieldSet(this, _AirService_sessionConfig, sessionConfig, "f");
|
|
2970
3024
|
return sessionConfig;
|
|
2971
3025
|
}
|
|
@@ -3028,20 +3082,25 @@ class AirService {
|
|
|
3028
3082
|
async preloadCredential() {
|
|
3029
3083
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
|
|
3030
3084
|
}
|
|
3031
|
-
async issueCredential({ authToken, issuerDid, credentialId, credentialSubject, }) {
|
|
3085
|
+
async issueCredential({ authToken, issuerDid, credentialId, credentialSubject, curve, }) {
|
|
3032
3086
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
|
|
3033
|
-
const
|
|
3087
|
+
const response = await __classPrivateFieldGet(this, _AirService_credentialMessagingService, "f").sendIssueCredentialRequest({
|
|
3034
3088
|
partnerToken: authToken,
|
|
3035
3089
|
issuerDid,
|
|
3036
3090
|
credentialId,
|
|
3037
3091
|
credentialSubject,
|
|
3092
|
+
curve,
|
|
3038
3093
|
});
|
|
3094
|
+
const { payload } = response;
|
|
3039
3095
|
if (payload.closeDApp) {
|
|
3040
3096
|
window.close();
|
|
3041
3097
|
}
|
|
3042
3098
|
if (payload.success === false) {
|
|
3043
3099
|
throw new AirServiceError(payload.errorName, payload.errorMessage);
|
|
3044
3100
|
}
|
|
3101
|
+
return {
|
|
3102
|
+
cakPublicKey: payload.cakPublicKey,
|
|
3103
|
+
};
|
|
3045
3104
|
}
|
|
3046
3105
|
async verifyCredential({ authToken, programId, redirectUrl, }) {
|
|
3047
3106
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
|
|
@@ -3056,7 +3115,7 @@ class AirService {
|
|
|
3056
3115
|
return payload.verificationResult;
|
|
3057
3116
|
}
|
|
3058
3117
|
}
|
|
3059
|
-
_AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _AirService_enableLogging = new WeakMap(), _AirService_partnerId = new WeakMap(), _AirService_sessionId = new WeakMap(), _AirService_sessionConfig = new WeakMap(), _AirService_authMessagingService = new WeakMap(), _AirService_authIframeController = new WeakMap(), _AirService_isAuthInitialized = new WeakMap(), _AirService_airEventListener = 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_assertInitialized = function _AirService_assertInitialized() {
|
|
3118
|
+
_AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _AirService_enableLogging = new WeakMap(), _AirService_partnerId = new WeakMap(), _AirService_sessionId = new WeakMap(), _AirService_sessionConfig = new WeakMap(), _AirService_authMessagingService = new WeakMap(), _AirService_authIframeController = new WeakMap(), _AirService_isAuthInitialized = new WeakMap(), _AirService_airEventListener = 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_credentialNetwork = new WeakMap(), _AirService_instances = new WeakSet(), _AirService_assertInitialized = function _AirService_assertInitialized() {
|
|
3060
3119
|
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
3061
3120
|
throw new AirServiceError("NOT_INITIALIZED", "Service is not initialized");
|
|
3062
3121
|
}, _AirService_assertLoggedIn = function _AirService_assertLoggedIn() {
|
|
@@ -3080,7 +3139,7 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
3080
3139
|
if (__classPrivateFieldGet(this, _AirService_credentialsInitialization, "f")) {
|
|
3081
3140
|
throw new AirServiceError("ALREADY_INITIALIZING", "Already initializing credentials");
|
|
3082
3141
|
}
|
|
3083
|
-
const { credentialUrl } =
|
|
3142
|
+
const { credentialUrl } = getAirUrls(__classPrivateFieldGet(this, _AirService_buildEnv, "f"), __classPrivateFieldGet(this, _AirService_credentialNetwork, "f"));
|
|
3084
3143
|
const credentialIframeOrigin = new URL(credentialUrl).origin;
|
|
3085
3144
|
let closeDApp = false;
|
|
3086
3145
|
try {
|
|
@@ -3098,6 +3157,7 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
3098
3157
|
partnerDAppUrl: window.location.href,
|
|
3099
3158
|
enableAutomation: this.shouldEnableAutomation(),
|
|
3100
3159
|
sessionConfig: __classPrivateFieldGet(this, _AirService_sessionConfig, "f"),
|
|
3160
|
+
...(__classPrivateFieldGet(this, _AirService_credentialNetwork, "f") && { credentialNetwork: __classPrivateFieldGet(this, _AirService_credentialNetwork, "f") }),
|
|
3101
3161
|
});
|
|
3102
3162
|
if (payload.success === true) {
|
|
3103
3163
|
resolve();
|
|
@@ -3177,7 +3237,7 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
3177
3237
|
}, _AirService_initializeWallet = async function _AirService_initializeWallet(option) {
|
|
3178
3238
|
if (__classPrivateFieldGet(this, _AirService_walletInitialization, "f"))
|
|
3179
3239
|
throw new AirServiceError("ALREADY_INITIALIZING", "Already initializing");
|
|
3180
|
-
const { walletUrl } =
|
|
3240
|
+
const { walletUrl } = getAirUrls(__classPrivateFieldGet(this, _AirService_buildEnv, "f"), __classPrivateFieldGet(this, _AirService_credentialNetwork, "f"));
|
|
3181
3241
|
const walletIframeOrigin = new URL(walletUrl).origin;
|
|
3182
3242
|
try {
|
|
3183
3243
|
const walletInitRequestPromise = new Promise((resolve, reject) => {
|
|
@@ -3354,7 +3414,7 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
3354
3414
|
}, _AirService_initializeRecovery = async function _AirService_initializeRecovery() {
|
|
3355
3415
|
if (__classPrivateFieldGet(this, _AirService_recoveryInitialization, "f"))
|
|
3356
3416
|
throw new AirServiceError("ALREADY_INITIALIZING", "Already initializing");
|
|
3357
|
-
const { recoveryUrl } =
|
|
3417
|
+
const { recoveryUrl } = getAirUrls(__classPrivateFieldGet(this, _AirService_buildEnv, "f"), __classPrivateFieldGet(this, _AirService_credentialNetwork, "f"));
|
|
3358
3418
|
const recoveryIframeOrigin = new URL(recoveryUrl).origin;
|
|
3359
3419
|
try {
|
|
3360
3420
|
const recoveryInitRequestPromise = new Promise((resolve, reject) => {
|
package/dist/airkit.esm.js
CHANGED
|
@@ -95,7 +95,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
|
|
|
95
95
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
96
96
|
};
|
|
97
97
|
|
|
98
|
-
var version = "1.
|
|
98
|
+
var version = "1.8.0-beta.2";
|
|
99
99
|
var airkitPackage = {
|
|
100
100
|
version: version};
|
|
101
101
|
|
|
@@ -616,7 +616,8 @@ const mocaDevnet = {
|
|
|
616
616
|
address: "0xcA11bde05977b3631167028862bE2a173976CA11",
|
|
617
617
|
blockCreated: 3837540
|
|
618
618
|
}
|
|
619
|
-
}
|
|
619
|
+
},
|
|
620
|
+
testnet: true
|
|
620
621
|
};
|
|
621
622
|
const mocaTestnet = {
|
|
622
623
|
id: 222888,
|
|
@@ -628,8 +629,8 @@ const mocaTestnet = {
|
|
|
628
629
|
},
|
|
629
630
|
rpcUrls: {
|
|
630
631
|
default: {
|
|
631
|
-
http: ["https://
|
|
632
|
-
webSocket: ["wss://
|
|
632
|
+
http: ["https://rpc.testnet.mocachain.dev"],
|
|
633
|
+
webSocket: ["wss://rpc.testnet.mocachain.dev"]
|
|
633
634
|
}
|
|
634
635
|
},
|
|
635
636
|
blockExplorers: {
|
|
@@ -643,7 +644,8 @@ const mocaTestnet = {
|
|
|
643
644
|
address: "0xcA11bde05977b3631167028862bE2a173976CA11",
|
|
644
645
|
blockCreated: 1330259
|
|
645
646
|
}
|
|
646
|
-
}
|
|
647
|
+
},
|
|
648
|
+
testnet: true
|
|
647
649
|
};
|
|
648
650
|
|
|
649
651
|
const BUILD_ENV = {
|
|
@@ -661,6 +663,12 @@ const IFRAME_NAME_PREFIX_SET = [
|
|
|
661
663
|
]; // order defines the z-index from highest to lowest
|
|
662
664
|
|
|
663
665
|
const FONT_CDNS = ["https://fonts.googleapis.com", "https://fonts.gstatic.com"];
|
|
666
|
+
const SANDBOX_TESTNET_URLS = {
|
|
667
|
+
authUrl: "https://account.sandbox-testnet.air3.com/auth/",
|
|
668
|
+
walletUrl: "https://account.sandbox-testnet.air3.com/wallet/",
|
|
669
|
+
recoveryUrl: "https://account.sandbox-testnet.air3.com/recovery/",
|
|
670
|
+
credentialUrl: "https://account.sandbox-testnet.air3.com/credential/",
|
|
671
|
+
};
|
|
664
672
|
const AIR_URLS = {
|
|
665
673
|
[BUILD_ENV.DEVELOPMENT]: {
|
|
666
674
|
authUrl: "https://localhost:8200/auth/",
|
|
@@ -693,6 +701,12 @@ const AIR_URLS = {
|
|
|
693
701
|
credentialUrl: "https://account.air3.com/credential/",
|
|
694
702
|
},
|
|
695
703
|
};
|
|
704
|
+
const getAirUrls = (buildEnv, credentialNetwork) => {
|
|
705
|
+
if (buildEnv === BUILD_ENV.SANDBOX && credentialNetwork === "testnet") {
|
|
706
|
+
return SANDBOX_TESTNET_URLS;
|
|
707
|
+
}
|
|
708
|
+
return AIR_URLS[buildEnv];
|
|
709
|
+
};
|
|
696
710
|
/**
|
|
697
711
|
* Injects dns-prefetch, preconnect, and prefetch link tags
|
|
698
712
|
* for a given resource or page URL.
|
|
@@ -715,7 +729,7 @@ const addResourceHints = (url, options) => {
|
|
|
715
729
|
link.rel = rel;
|
|
716
730
|
link.href = href;
|
|
717
731
|
if (as)
|
|
718
|
-
|
|
732
|
+
;
|
|
719
733
|
if (crossOrigin)
|
|
720
734
|
link.crossOrigin = "anonymous";
|
|
721
735
|
head.appendChild(link);
|
|
@@ -726,8 +740,32 @@ const addResourceHints = (url, options) => {
|
|
|
726
740
|
// Preconnect (TCP + TLS warm-up)
|
|
727
741
|
addLink("preconnect", parsed.origin, undefined, isCrossOrigin);
|
|
728
742
|
// Prefetch (optional — caches the resource or HTML document)
|
|
729
|
-
if (options?.prefetch !== false
|
|
730
|
-
|
|
743
|
+
if (options?.prefetch !== false &&
|
|
744
|
+
HTMLScriptElement.supports &&
|
|
745
|
+
HTMLScriptElement.supports("speculationrules")) {
|
|
746
|
+
const scriptId = `speculation-${btoa(parsed.href)
|
|
747
|
+
.replace(/\+/g, "-")
|
|
748
|
+
.replace(/\//g, "_")
|
|
749
|
+
.replace(/=/g, "")}`;
|
|
750
|
+
if (!document.getElementById(scriptId)) {
|
|
751
|
+
const script = document.createElement("script");
|
|
752
|
+
script.id = scriptId;
|
|
753
|
+
script.type = "speculationrules";
|
|
754
|
+
const sources = [
|
|
755
|
+
{
|
|
756
|
+
source: "list",
|
|
757
|
+
urls: [parsed.href],
|
|
758
|
+
eagerness: "immediate",
|
|
759
|
+
},
|
|
760
|
+
];
|
|
761
|
+
const rules = {
|
|
762
|
+
...((options?.as ?? "document") === "document"
|
|
763
|
+
? { prerender: sources }
|
|
764
|
+
: { prefetch: sources }),
|
|
765
|
+
};
|
|
766
|
+
script.textContent = JSON.stringify(rules);
|
|
767
|
+
document.body.appendChild(script);
|
|
768
|
+
}
|
|
731
769
|
}
|
|
732
770
|
}
|
|
733
771
|
catch (err) {
|
|
@@ -2235,7 +2273,12 @@ class IframeController {
|
|
|
2235
2273
|
return this._iframeElement;
|
|
2236
2274
|
const iframe = document.createElement("iframe");
|
|
2237
2275
|
iframe.id = this.iframeId;
|
|
2238
|
-
iframe.allow =
|
|
2276
|
+
iframe.allow = [
|
|
2277
|
+
"publickey-credentials-get *",
|
|
2278
|
+
"publickey-credentials-create *",
|
|
2279
|
+
"ch-ua-model",
|
|
2280
|
+
"ch-ua-platform-version",
|
|
2281
|
+
].join("; ");
|
|
2239
2282
|
iframe.src = this.iframeUrl;
|
|
2240
2283
|
iframe.style.position = "fixed";
|
|
2241
2284
|
iframe.style.zIndex = `${this.getZIndex()}`;
|
|
@@ -2452,7 +2495,12 @@ class WalletMessageService extends MessageServiceBase {
|
|
|
2452
2495
|
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.SHOW_SWAP_UI_RESPONSE)));
|
|
2453
2496
|
await this.sendMessage({
|
|
2454
2497
|
type: AirWalletMessageTypes.SHOW_SWAP_UI_REQUEST,
|
|
2455
|
-
payload
|
|
2498
|
+
payload: {
|
|
2499
|
+
initialFromToken: payload?.initialFromToken,
|
|
2500
|
+
fallbackFromToken: payload?.fallbackFromToken,
|
|
2501
|
+
initialToToken: payload?.initialToToken,
|
|
2502
|
+
defaultSlippage: payload?.defaultSlippage?.toString(), // TODO refactor to all be numbers
|
|
2503
|
+
},
|
|
2456
2504
|
});
|
|
2457
2505
|
return response;
|
|
2458
2506
|
}
|
|
@@ -2663,7 +2711,7 @@ class WindowService {
|
|
|
2663
2711
|
}
|
|
2664
2712
|
var WindowService$1 = WindowService.instance;
|
|
2665
2713
|
|
|
2666
|
-
var _AirService_instances, _AirService_loginResult, _AirService_buildEnv, _AirService_enableLogging, _AirService_partnerId, _AirService_sessionId, _AirService_sessionConfig, _AirService_authMessagingService, _AirService_authIframeController, _AirService_isAuthInitialized, _AirService_airEventListener, _AirService_walletMessagingService, _AirService_walletIframeController, _AirService_walletInitialization, _AirService_walletLoggedInResult, _AirService_airWalletProvider, _AirService_recoveryInitialization, _AirService_recoveryMessagingService, _AirService_recoveryIframeController, _AirService_credentialsInitialization, _AirService_credentialMessagingService, _AirService_credentialIframeController, _AirService_assertInitialized, _AirService_assertLoggedIn, _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;
|
|
2714
|
+
var _AirService_instances, _AirService_loginResult, _AirService_buildEnv, _AirService_enableLogging, _AirService_partnerId, _AirService_sessionId, _AirService_sessionConfig, _AirService_authMessagingService, _AirService_authIframeController, _AirService_isAuthInitialized, _AirService_airEventListener, _AirService_walletMessagingService, _AirService_walletIframeController, _AirService_walletInitialization, _AirService_walletLoggedInResult, _AirService_airWalletProvider, _AirService_recoveryInitialization, _AirService_recoveryMessagingService, _AirService_recoveryIframeController, _AirService_credentialsInitialization, _AirService_credentialMessagingService, _AirService_credentialIframeController, _AirService_credentialNetwork, _AirService_assertInitialized, _AirService_assertLoggedIn, _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;
|
|
2667
2715
|
const airKitVersion = airkitPackage.version;
|
|
2668
2716
|
class AirService {
|
|
2669
2717
|
constructor({ partnerId }) {
|
|
@@ -2690,6 +2738,7 @@ class AirService {
|
|
|
2690
2738
|
_AirService_credentialsInitialization.set(this, void 0);
|
|
2691
2739
|
_AirService_credentialMessagingService.set(this, void 0);
|
|
2692
2740
|
_AirService_credentialIframeController.set(this, void 0);
|
|
2741
|
+
_AirService_credentialNetwork.set(this, void 0);
|
|
2693
2742
|
__classPrivateFieldSet(this, _AirService_partnerId, partnerId, "f");
|
|
2694
2743
|
__classPrivateFieldSet(this, _AirService_authMessagingService, AuthMessageService.create(), "f");
|
|
2695
2744
|
__classPrivateFieldSet(this, _AirService_walletMessagingService, WalletMessageService.create(), "f");
|
|
@@ -2728,13 +2777,15 @@ class AirService {
|
|
|
2728
2777
|
shouldEnableAutomation() {
|
|
2729
2778
|
return localStorage.getItem("automation") === "true" && __classPrivateFieldGet(this, _AirService_buildEnv, "f") !== BUILD_ENV.PRODUCTION;
|
|
2730
2779
|
}
|
|
2731
|
-
async init(
|
|
2780
|
+
async init(config) {
|
|
2781
|
+
const { buildEnv = BUILD_ENV.PRODUCTION, enableLogging = false, skipRehydration = false, sessionConfig = undefined, preloadWallet = false, preloadCredential = false, credentialNetwork = "testnet", } = config;
|
|
2732
2782
|
if (!__classPrivateFieldGet(this, _AirService_partnerId, "f"))
|
|
2733
2783
|
throw new AirServiceError("CLIENT_ERROR", "Partner ID is required to initialize the service");
|
|
2734
2784
|
if (__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2735
2785
|
return __classPrivateFieldGet(this, _AirService_loginResult, "f") ?? null;
|
|
2786
|
+
__classPrivateFieldSet(this, _AirService_credentialNetwork, buildEnv === BUILD_ENV.SANDBOX ? credentialNetwork : undefined, "f");
|
|
2736
2787
|
configureLogLevel(buildEnv, enableLogging);
|
|
2737
|
-
const { authUrl, walletUrl, credentialUrl } =
|
|
2788
|
+
const { authUrl, walletUrl, credentialUrl } = getAirUrls(buildEnv, __classPrivateFieldGet(this, _AirService_credentialNetwork, "f"));
|
|
2738
2789
|
addResourceHints(authUrl);
|
|
2739
2790
|
if (preloadWallet) {
|
|
2740
2791
|
addResourceHints(walletUrl);
|
|
@@ -2908,7 +2959,7 @@ class AirService {
|
|
|
2908
2959
|
if (result.payload.success === false) {
|
|
2909
2960
|
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2910
2961
|
}
|
|
2911
|
-
return
|
|
2962
|
+
return result.payload;
|
|
2912
2963
|
}
|
|
2913
2964
|
/**
|
|
2914
2965
|
* @experimental This feature has not been officially released and might change in the future.
|
|
@@ -2963,7 +3014,10 @@ class AirService {
|
|
|
2963
3014
|
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2964
3015
|
}
|
|
2965
3016
|
}
|
|
2966
|
-
const sessionConfig = {
|
|
3017
|
+
const sessionConfig = {
|
|
3018
|
+
locale: results[0].payload.locale,
|
|
3019
|
+
currency: results[0].payload.currency,
|
|
3020
|
+
};
|
|
2967
3021
|
__classPrivateFieldSet(this, _AirService_sessionConfig, sessionConfig, "f");
|
|
2968
3022
|
return sessionConfig;
|
|
2969
3023
|
}
|
|
@@ -3026,20 +3080,25 @@ class AirService {
|
|
|
3026
3080
|
async preloadCredential() {
|
|
3027
3081
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
|
|
3028
3082
|
}
|
|
3029
|
-
async issueCredential({ authToken, issuerDid, credentialId, credentialSubject, }) {
|
|
3083
|
+
async issueCredential({ authToken, issuerDid, credentialId, credentialSubject, curve, }) {
|
|
3030
3084
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
|
|
3031
|
-
const
|
|
3085
|
+
const response = await __classPrivateFieldGet(this, _AirService_credentialMessagingService, "f").sendIssueCredentialRequest({
|
|
3032
3086
|
partnerToken: authToken,
|
|
3033
3087
|
issuerDid,
|
|
3034
3088
|
credentialId,
|
|
3035
3089
|
credentialSubject,
|
|
3090
|
+
curve,
|
|
3036
3091
|
});
|
|
3092
|
+
const { payload } = response;
|
|
3037
3093
|
if (payload.closeDApp) {
|
|
3038
3094
|
window.close();
|
|
3039
3095
|
}
|
|
3040
3096
|
if (payload.success === false) {
|
|
3041
3097
|
throw new AirServiceError(payload.errorName, payload.errorMessage);
|
|
3042
3098
|
}
|
|
3099
|
+
return {
|
|
3100
|
+
cakPublicKey: payload.cakPublicKey,
|
|
3101
|
+
};
|
|
3043
3102
|
}
|
|
3044
3103
|
async verifyCredential({ authToken, programId, redirectUrl, }) {
|
|
3045
3104
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
|
|
@@ -3054,7 +3113,7 @@ class AirService {
|
|
|
3054
3113
|
return payload.verificationResult;
|
|
3055
3114
|
}
|
|
3056
3115
|
}
|
|
3057
|
-
_AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _AirService_enableLogging = new WeakMap(), _AirService_partnerId = new WeakMap(), _AirService_sessionId = new WeakMap(), _AirService_sessionConfig = new WeakMap(), _AirService_authMessagingService = new WeakMap(), _AirService_authIframeController = new WeakMap(), _AirService_isAuthInitialized = new WeakMap(), _AirService_airEventListener = 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_assertInitialized = function _AirService_assertInitialized() {
|
|
3116
|
+
_AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _AirService_enableLogging = new WeakMap(), _AirService_partnerId = new WeakMap(), _AirService_sessionId = new WeakMap(), _AirService_sessionConfig = new WeakMap(), _AirService_authMessagingService = new WeakMap(), _AirService_authIframeController = new WeakMap(), _AirService_isAuthInitialized = new WeakMap(), _AirService_airEventListener = 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_credentialNetwork = new WeakMap(), _AirService_instances = new WeakSet(), _AirService_assertInitialized = function _AirService_assertInitialized() {
|
|
3058
3117
|
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
3059
3118
|
throw new AirServiceError("NOT_INITIALIZED", "Service is not initialized");
|
|
3060
3119
|
}, _AirService_assertLoggedIn = function _AirService_assertLoggedIn() {
|
|
@@ -3078,7 +3137,7 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
3078
3137
|
if (__classPrivateFieldGet(this, _AirService_credentialsInitialization, "f")) {
|
|
3079
3138
|
throw new AirServiceError("ALREADY_INITIALIZING", "Already initializing credentials");
|
|
3080
3139
|
}
|
|
3081
|
-
const { credentialUrl } =
|
|
3140
|
+
const { credentialUrl } = getAirUrls(__classPrivateFieldGet(this, _AirService_buildEnv, "f"), __classPrivateFieldGet(this, _AirService_credentialNetwork, "f"));
|
|
3082
3141
|
const credentialIframeOrigin = new URL(credentialUrl).origin;
|
|
3083
3142
|
let closeDApp = false;
|
|
3084
3143
|
try {
|
|
@@ -3096,6 +3155,7 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
3096
3155
|
partnerDAppUrl: window.location.href,
|
|
3097
3156
|
enableAutomation: this.shouldEnableAutomation(),
|
|
3098
3157
|
sessionConfig: __classPrivateFieldGet(this, _AirService_sessionConfig, "f"),
|
|
3158
|
+
...(__classPrivateFieldGet(this, _AirService_credentialNetwork, "f") && { credentialNetwork: __classPrivateFieldGet(this, _AirService_credentialNetwork, "f") }),
|
|
3099
3159
|
});
|
|
3100
3160
|
if (payload.success === true) {
|
|
3101
3161
|
resolve();
|
|
@@ -3175,7 +3235,7 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
3175
3235
|
}, _AirService_initializeWallet = async function _AirService_initializeWallet(option) {
|
|
3176
3236
|
if (__classPrivateFieldGet(this, _AirService_walletInitialization, "f"))
|
|
3177
3237
|
throw new AirServiceError("ALREADY_INITIALIZING", "Already initializing");
|
|
3178
|
-
const { walletUrl } =
|
|
3238
|
+
const { walletUrl } = getAirUrls(__classPrivateFieldGet(this, _AirService_buildEnv, "f"), __classPrivateFieldGet(this, _AirService_credentialNetwork, "f"));
|
|
3179
3239
|
const walletIframeOrigin = new URL(walletUrl).origin;
|
|
3180
3240
|
try {
|
|
3181
3241
|
const walletInitRequestPromise = new Promise((resolve, reject) => {
|
|
@@ -3352,7 +3412,7 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
|
|
|
3352
3412
|
}, _AirService_initializeRecovery = async function _AirService_initializeRecovery() {
|
|
3353
3413
|
if (__classPrivateFieldGet(this, _AirService_recoveryInitialization, "f"))
|
|
3354
3414
|
throw new AirServiceError("ALREADY_INITIALIZING", "Already initializing");
|
|
3355
|
-
const { recoveryUrl } =
|
|
3415
|
+
const { recoveryUrl } = getAirUrls(__classPrivateFieldGet(this, _AirService_buildEnv, "f"), __classPrivateFieldGet(this, _AirService_credentialNetwork, "f"));
|
|
3356
3416
|
const recoveryIframeOrigin = new URL(recoveryUrl).origin;
|
|
3357
3417
|
try {
|
|
3358
3418
|
const recoveryInitRequestPromise = new Promise((resolve, reject) => {
|
package/dist/airkit.umd.js
CHANGED
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
102
102
|
};
|
|
103
103
|
|
|
104
|
-
var version = "1.
|
|
104
|
+
var version = "1.8.0-beta.2";
|
|
105
105
|
var airkitPackage = {
|
|
106
106
|
version: version};
|
|
107
107
|
|
|
@@ -622,7 +622,8 @@
|
|
|
622
622
|
address: "0xcA11bde05977b3631167028862bE2a173976CA11",
|
|
623
623
|
blockCreated: 3837540
|
|
624
624
|
}
|
|
625
|
-
}
|
|
625
|
+
},
|
|
626
|
+
testnet: true
|
|
626
627
|
};
|
|
627
628
|
const mocaTestnet = {
|
|
628
629
|
id: 222888,
|
|
@@ -634,8 +635,8 @@
|
|
|
634
635
|
},
|
|
635
636
|
rpcUrls: {
|
|
636
637
|
default: {
|
|
637
|
-
http: ["https://
|
|
638
|
-
webSocket: ["wss://
|
|
638
|
+
http: ["https://rpc.testnet.mocachain.dev"],
|
|
639
|
+
webSocket: ["wss://rpc.testnet.mocachain.dev"]
|
|
639
640
|
}
|
|
640
641
|
},
|
|
641
642
|
blockExplorers: {
|
|
@@ -649,7 +650,8 @@
|
|
|
649
650
|
address: "0xcA11bde05977b3631167028862bE2a173976CA11",
|
|
650
651
|
blockCreated: 1330259
|
|
651
652
|
}
|
|
652
|
-
}
|
|
653
|
+
},
|
|
654
|
+
testnet: true
|
|
653
655
|
};
|
|
654
656
|
|
|
655
657
|
const BUILD_ENV = {
|
|
@@ -667,6 +669,12 @@
|
|
|
667
669
|
]; // order defines the z-index from highest to lowest
|
|
668
670
|
|
|
669
671
|
const FONT_CDNS = ["https://fonts.googleapis.com", "https://fonts.gstatic.com"];
|
|
672
|
+
const SANDBOX_TESTNET_URLS = {
|
|
673
|
+
authUrl: "https://account.sandbox-testnet.air3.com/auth/",
|
|
674
|
+
walletUrl: "https://account.sandbox-testnet.air3.com/wallet/",
|
|
675
|
+
recoveryUrl: "https://account.sandbox-testnet.air3.com/recovery/",
|
|
676
|
+
credentialUrl: "https://account.sandbox-testnet.air3.com/credential/",
|
|
677
|
+
};
|
|
670
678
|
const AIR_URLS = {
|
|
671
679
|
[BUILD_ENV.DEVELOPMENT]: {
|
|
672
680
|
authUrl: "https://localhost:8200/auth/",
|
|
@@ -699,6 +707,12 @@
|
|
|
699
707
|
credentialUrl: "https://account.air3.com/credential/",
|
|
700
708
|
},
|
|
701
709
|
};
|
|
710
|
+
const getAirUrls = (buildEnv, credentialNetwork) => {
|
|
711
|
+
if (buildEnv === BUILD_ENV.SANDBOX && credentialNetwork === "testnet") {
|
|
712
|
+
return SANDBOX_TESTNET_URLS;
|
|
713
|
+
}
|
|
714
|
+
return AIR_URLS[buildEnv];
|
|
715
|
+
};
|
|
702
716
|
/**
|
|
703
717
|
* Injects dns-prefetch, preconnect, and prefetch link tags
|
|
704
718
|
* for a given resource or page URL.
|
|
@@ -721,7 +735,7 @@
|
|
|
721
735
|
link.rel = rel;
|
|
722
736
|
link.href = href;
|
|
723
737
|
if (as)
|
|
724
|
-
|
|
738
|
+
;
|
|
725
739
|
if (crossOrigin)
|
|
726
740
|
link.crossOrigin = "anonymous";
|
|
727
741
|
head.appendChild(link);
|
|
@@ -732,8 +746,32 @@
|
|
|
732
746
|
// Preconnect (TCP + TLS warm-up)
|
|
733
747
|
addLink("preconnect", parsed.origin, undefined, isCrossOrigin);
|
|
734
748
|
// Prefetch (optional — caches the resource or HTML document)
|
|
735
|
-
if (options?.prefetch !== false
|
|
736
|
-
|
|
749
|
+
if (options?.prefetch !== false &&
|
|
750
|
+
HTMLScriptElement.supports &&
|
|
751
|
+
HTMLScriptElement.supports("speculationrules")) {
|
|
752
|
+
const scriptId = `speculation-${btoa(parsed.href)
|
|
753
|
+
.replace(/\+/g, "-")
|
|
754
|
+
.replace(/\//g, "_")
|
|
755
|
+
.replace(/=/g, "")}`;
|
|
756
|
+
if (!document.getElementById(scriptId)) {
|
|
757
|
+
const script = document.createElement("script");
|
|
758
|
+
script.id = scriptId;
|
|
759
|
+
script.type = "speculationrules";
|
|
760
|
+
const sources = [
|
|
761
|
+
{
|
|
762
|
+
source: "list",
|
|
763
|
+
urls: [parsed.href],
|
|
764
|
+
eagerness: "immediate",
|
|
765
|
+
},
|
|
766
|
+
];
|
|
767
|
+
const rules = {
|
|
768
|
+
...((options?.as ?? "document") === "document"
|
|
769
|
+
? { prerender: sources }
|
|
770
|
+
: { prefetch: sources }),
|
|
771
|
+
};
|
|
772
|
+
script.textContent = JSON.stringify(rules);
|
|
773
|
+
document.body.appendChild(script);
|
|
774
|
+
}
|
|
737
775
|
}
|
|
738
776
|
}
|
|
739
777
|
catch (err) {
|
|
@@ -2241,7 +2279,12 @@
|
|
|
2241
2279
|
return this._iframeElement;
|
|
2242
2280
|
const iframe = document.createElement("iframe");
|
|
2243
2281
|
iframe.id = this.iframeId;
|
|
2244
|
-
iframe.allow =
|
|
2282
|
+
iframe.allow = [
|
|
2283
|
+
"publickey-credentials-get *",
|
|
2284
|
+
"publickey-credentials-create *",
|
|
2285
|
+
"ch-ua-model",
|
|
2286
|
+
"ch-ua-platform-version",
|
|
2287
|
+
].join("; ");
|
|
2245
2288
|
iframe.src = this.iframeUrl;
|
|
2246
2289
|
iframe.style.position = "fixed";
|
|
2247
2290
|
iframe.style.zIndex = `${this.getZIndex()}`;
|
|
@@ -2458,7 +2501,12 @@
|
|
|
2458
2501
|
const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirWalletMessageTypes.SHOW_SWAP_UI_RESPONSE)));
|
|
2459
2502
|
await this.sendMessage({
|
|
2460
2503
|
type: AirWalletMessageTypes.SHOW_SWAP_UI_REQUEST,
|
|
2461
|
-
payload
|
|
2504
|
+
payload: {
|
|
2505
|
+
initialFromToken: payload?.initialFromToken,
|
|
2506
|
+
fallbackFromToken: payload?.fallbackFromToken,
|
|
2507
|
+
initialToToken: payload?.initialToToken,
|
|
2508
|
+
defaultSlippage: payload?.defaultSlippage?.toString(), // TODO refactor to all be numbers
|
|
2509
|
+
},
|
|
2462
2510
|
});
|
|
2463
2511
|
return response;
|
|
2464
2512
|
}
|
|
@@ -2669,7 +2717,7 @@
|
|
|
2669
2717
|
}
|
|
2670
2718
|
var WindowService$1 = WindowService.instance;
|
|
2671
2719
|
|
|
2672
|
-
var _AirService_instances, _AirService_loginResult, _AirService_buildEnv, _AirService_enableLogging, _AirService_partnerId, _AirService_sessionId, _AirService_sessionConfig, _AirService_authMessagingService, _AirService_authIframeController, _AirService_isAuthInitialized, _AirService_airEventListener, _AirService_walletMessagingService, _AirService_walletIframeController, _AirService_walletInitialization, _AirService_walletLoggedInResult, _AirService_airWalletProvider, _AirService_recoveryInitialization, _AirService_recoveryMessagingService, _AirService_recoveryIframeController, _AirService_credentialsInitialization, _AirService_credentialMessagingService, _AirService_credentialIframeController, _AirService_assertInitialized, _AirService_assertLoggedIn, _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;
|
|
2720
|
+
var _AirService_instances, _AirService_loginResult, _AirService_buildEnv, _AirService_enableLogging, _AirService_partnerId, _AirService_sessionId, _AirService_sessionConfig, _AirService_authMessagingService, _AirService_authIframeController, _AirService_isAuthInitialized, _AirService_airEventListener, _AirService_walletMessagingService, _AirService_walletIframeController, _AirService_walletInitialization, _AirService_walletLoggedInResult, _AirService_airWalletProvider, _AirService_recoveryInitialization, _AirService_recoveryMessagingService, _AirService_recoveryIframeController, _AirService_credentialsInitialization, _AirService_credentialMessagingService, _AirService_credentialIframeController, _AirService_credentialNetwork, _AirService_assertInitialized, _AirService_assertLoggedIn, _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;
|
|
2673
2721
|
const airKitVersion = airkitPackage.version;
|
|
2674
2722
|
class AirService {
|
|
2675
2723
|
constructor({ partnerId }) {
|
|
@@ -2696,6 +2744,7 @@
|
|
|
2696
2744
|
_AirService_credentialsInitialization.set(this, void 0);
|
|
2697
2745
|
_AirService_credentialMessagingService.set(this, void 0);
|
|
2698
2746
|
_AirService_credentialIframeController.set(this, void 0);
|
|
2747
|
+
_AirService_credentialNetwork.set(this, void 0);
|
|
2699
2748
|
__classPrivateFieldSet(this, _AirService_partnerId, partnerId, "f");
|
|
2700
2749
|
__classPrivateFieldSet(this, _AirService_authMessagingService, AuthMessageService.create(), "f");
|
|
2701
2750
|
__classPrivateFieldSet(this, _AirService_walletMessagingService, WalletMessageService.create(), "f");
|
|
@@ -2734,13 +2783,15 @@
|
|
|
2734
2783
|
shouldEnableAutomation() {
|
|
2735
2784
|
return localStorage.getItem("automation") === "true" && __classPrivateFieldGet(this, _AirService_buildEnv, "f") !== BUILD_ENV.PRODUCTION;
|
|
2736
2785
|
}
|
|
2737
|
-
async init(
|
|
2786
|
+
async init(config) {
|
|
2787
|
+
const { buildEnv = BUILD_ENV.PRODUCTION, enableLogging = false, skipRehydration = false, sessionConfig = undefined, preloadWallet = false, preloadCredential = false, credentialNetwork = "testnet", } = config;
|
|
2738
2788
|
if (!__classPrivateFieldGet(this, _AirService_partnerId, "f"))
|
|
2739
2789
|
throw new AirServiceError("CLIENT_ERROR", "Partner ID is required to initialize the service");
|
|
2740
2790
|
if (__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
2741
2791
|
return __classPrivateFieldGet(this, _AirService_loginResult, "f") ?? null;
|
|
2792
|
+
__classPrivateFieldSet(this, _AirService_credentialNetwork, buildEnv === BUILD_ENV.SANDBOX ? credentialNetwork : undefined, "f");
|
|
2742
2793
|
configureLogLevel(buildEnv, enableLogging);
|
|
2743
|
-
const { authUrl, walletUrl, credentialUrl } =
|
|
2794
|
+
const { authUrl, walletUrl, credentialUrl } = getAirUrls(buildEnv, __classPrivateFieldGet(this, _AirService_credentialNetwork, "f"));
|
|
2744
2795
|
addResourceHints(authUrl);
|
|
2745
2796
|
if (preloadWallet) {
|
|
2746
2797
|
addResourceHints(walletUrl);
|
|
@@ -2914,7 +2965,7 @@
|
|
|
2914
2965
|
if (result.payload.success === false) {
|
|
2915
2966
|
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2916
2967
|
}
|
|
2917
|
-
return
|
|
2968
|
+
return result.payload;
|
|
2918
2969
|
}
|
|
2919
2970
|
/**
|
|
2920
2971
|
* @experimental This feature has not been officially released and might change in the future.
|
|
@@ -2969,7 +3020,10 @@
|
|
|
2969
3020
|
throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
|
|
2970
3021
|
}
|
|
2971
3022
|
}
|
|
2972
|
-
const sessionConfig = {
|
|
3023
|
+
const sessionConfig = {
|
|
3024
|
+
locale: results[0].payload.locale,
|
|
3025
|
+
currency: results[0].payload.currency,
|
|
3026
|
+
};
|
|
2973
3027
|
__classPrivateFieldSet(this, _AirService_sessionConfig, sessionConfig, "f");
|
|
2974
3028
|
return sessionConfig;
|
|
2975
3029
|
}
|
|
@@ -3032,20 +3086,25 @@
|
|
|
3032
3086
|
async preloadCredential() {
|
|
3033
3087
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
|
|
3034
3088
|
}
|
|
3035
|
-
async issueCredential({ authToken, issuerDid, credentialId, credentialSubject, }) {
|
|
3089
|
+
async issueCredential({ authToken, issuerDid, credentialId, credentialSubject, curve, }) {
|
|
3036
3090
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
|
|
3037
|
-
const
|
|
3091
|
+
const response = await __classPrivateFieldGet(this, _AirService_credentialMessagingService, "f").sendIssueCredentialRequest({
|
|
3038
3092
|
partnerToken: authToken,
|
|
3039
3093
|
issuerDid,
|
|
3040
3094
|
credentialId,
|
|
3041
3095
|
credentialSubject,
|
|
3096
|
+
curve,
|
|
3042
3097
|
});
|
|
3098
|
+
const { payload } = response;
|
|
3043
3099
|
if (payload.closeDApp) {
|
|
3044
3100
|
window.close();
|
|
3045
3101
|
}
|
|
3046
3102
|
if (payload.success === false) {
|
|
3047
3103
|
throw new AirServiceError(payload.errorName, payload.errorMessage);
|
|
3048
3104
|
}
|
|
3105
|
+
return {
|
|
3106
|
+
cakPublicKey: payload.cakPublicKey,
|
|
3107
|
+
};
|
|
3049
3108
|
}
|
|
3050
3109
|
async verifyCredential({ authToken, programId, redirectUrl, }) {
|
|
3051
3110
|
await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
|
|
@@ -3060,7 +3119,7 @@
|
|
|
3060
3119
|
return payload.verificationResult;
|
|
3061
3120
|
}
|
|
3062
3121
|
}
|
|
3063
|
-
_AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _AirService_enableLogging = new WeakMap(), _AirService_partnerId = new WeakMap(), _AirService_sessionId = new WeakMap(), _AirService_sessionConfig = new WeakMap(), _AirService_authMessagingService = new WeakMap(), _AirService_authIframeController = new WeakMap(), _AirService_isAuthInitialized = new WeakMap(), _AirService_airEventListener = 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_assertInitialized = function _AirService_assertInitialized() {
|
|
3122
|
+
_AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _AirService_enableLogging = new WeakMap(), _AirService_partnerId = new WeakMap(), _AirService_sessionId = new WeakMap(), _AirService_sessionConfig = new WeakMap(), _AirService_authMessagingService = new WeakMap(), _AirService_authIframeController = new WeakMap(), _AirService_isAuthInitialized = new WeakMap(), _AirService_airEventListener = 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_credentialNetwork = new WeakMap(), _AirService_instances = new WeakSet(), _AirService_assertInitialized = function _AirService_assertInitialized() {
|
|
3064
3123
|
if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
|
|
3065
3124
|
throw new AirServiceError("NOT_INITIALIZED", "Service is not initialized");
|
|
3066
3125
|
}, _AirService_assertLoggedIn = function _AirService_assertLoggedIn() {
|
|
@@ -3084,7 +3143,7 @@
|
|
|
3084
3143
|
if (__classPrivateFieldGet(this, _AirService_credentialsInitialization, "f")) {
|
|
3085
3144
|
throw new AirServiceError("ALREADY_INITIALIZING", "Already initializing credentials");
|
|
3086
3145
|
}
|
|
3087
|
-
const { credentialUrl } =
|
|
3146
|
+
const { credentialUrl } = getAirUrls(__classPrivateFieldGet(this, _AirService_buildEnv, "f"), __classPrivateFieldGet(this, _AirService_credentialNetwork, "f"));
|
|
3088
3147
|
const credentialIframeOrigin = new URL(credentialUrl).origin;
|
|
3089
3148
|
let closeDApp = false;
|
|
3090
3149
|
try {
|
|
@@ -3102,6 +3161,7 @@
|
|
|
3102
3161
|
partnerDAppUrl: window.location.href,
|
|
3103
3162
|
enableAutomation: this.shouldEnableAutomation(),
|
|
3104
3163
|
sessionConfig: __classPrivateFieldGet(this, _AirService_sessionConfig, "f"),
|
|
3164
|
+
...(__classPrivateFieldGet(this, _AirService_credentialNetwork, "f") && { credentialNetwork: __classPrivateFieldGet(this, _AirService_credentialNetwork, "f") }),
|
|
3105
3165
|
});
|
|
3106
3166
|
if (payload.success === true) {
|
|
3107
3167
|
resolve();
|
|
@@ -3181,7 +3241,7 @@
|
|
|
3181
3241
|
}, _AirService_initializeWallet = async function _AirService_initializeWallet(option) {
|
|
3182
3242
|
if (__classPrivateFieldGet(this, _AirService_walletInitialization, "f"))
|
|
3183
3243
|
throw new AirServiceError("ALREADY_INITIALIZING", "Already initializing");
|
|
3184
|
-
const { walletUrl } =
|
|
3244
|
+
const { walletUrl } = getAirUrls(__classPrivateFieldGet(this, _AirService_buildEnv, "f"), __classPrivateFieldGet(this, _AirService_credentialNetwork, "f"));
|
|
3185
3245
|
const walletIframeOrigin = new URL(walletUrl).origin;
|
|
3186
3246
|
try {
|
|
3187
3247
|
const walletInitRequestPromise = new Promise((resolve, reject) => {
|
|
@@ -3358,7 +3418,7 @@
|
|
|
3358
3418
|
}, _AirService_initializeRecovery = async function _AirService_initializeRecovery() {
|
|
3359
3419
|
if (__classPrivateFieldGet(this, _AirService_recoveryInitialization, "f"))
|
|
3360
3420
|
throw new AirServiceError("ALREADY_INITIALIZING", "Already initializing");
|
|
3361
|
-
const { recoveryUrl } =
|
|
3421
|
+
const { recoveryUrl } = getAirUrls(__classPrivateFieldGet(this, _AirService_buildEnv, "f"), __classPrivateFieldGet(this, _AirService_credentialNetwork, "f"));
|
|
3362
3422
|
const recoveryIframeOrigin = new URL(recoveryUrl).origin;
|
|
3363
3423
|
try {
|
|
3364
3424
|
const recoveryInitRequestPromise = new Promise((resolve, reject) => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AirAuthStartRecoveryRequestPayload } from "@mocanetwork/common/src/air/messaging/auth";
|
|
2
|
-
import { AirEventListener, AirLoginResult, AirSessionConfig, AirUserDetails, BUILD_ENV_TYPE, ClaimAirIdOptions, ClaimAirIdResult, CredentialVerificationResult, EIP1193Provider } from "./interfaces";
|
|
2
|
+
import { AirEventListener, AirLoginResult, AirSessionConfig, AirUserDetails, BUILD_ENV, BUILD_ENV_TYPE, ClaimAirIdOptions, ClaimAirIdResult, CredentialNetwork, CredentialVerificationResult, EIP1193Provider, ShowSwapUIOptions } from "./interfaces";
|
|
3
|
+
import { Token } from "packages/common/src/types";
|
|
3
4
|
declare class AirService {
|
|
4
5
|
#private;
|
|
5
6
|
constructor({ partnerId }: {
|
|
@@ -12,10 +13,15 @@ declare class AirService {
|
|
|
12
13
|
get isWalletInitialized(): boolean;
|
|
13
14
|
get provider(): EIP1193Provider;
|
|
14
15
|
private shouldEnableAutomation;
|
|
15
|
-
init(
|
|
16
|
-
buildEnv
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
init(config: ({
|
|
17
|
+
buildEnv?: Exclude<BUILD_ENV_TYPE, typeof BUILD_ENV.SANDBOX>;
|
|
18
|
+
credentialNetwork?: never;
|
|
19
|
+
} | {
|
|
20
|
+
buildEnv?: typeof BUILD_ENV.SANDBOX;
|
|
21
|
+
credentialNetwork?: CredentialNetwork;
|
|
22
|
+
}) & {
|
|
23
|
+
enableLogging?: boolean;
|
|
24
|
+
skipRehydration?: boolean;
|
|
19
25
|
preloadWallet?: boolean;
|
|
20
26
|
preloadCredential?: boolean;
|
|
21
27
|
sessionConfig?: Partial<AirSessionConfig>;
|
|
@@ -43,12 +49,14 @@ declare class AirService {
|
|
|
43
49
|
/**
|
|
44
50
|
* @experimental This feature has not been officially released and might change in the future.
|
|
45
51
|
*/
|
|
46
|
-
showSwapUI(options?: {
|
|
47
|
-
initialFromToken?: string;
|
|
48
|
-
fallbackFromToken?: string;
|
|
49
|
-
initialToToken?: string;
|
|
50
|
-
}): Promise<{
|
|
52
|
+
showSwapUI(options?: ShowSwapUIOptions): Promise<{
|
|
51
53
|
txHash: `0x${string}`;
|
|
54
|
+
from: Token & {
|
|
55
|
+
amount: string;
|
|
56
|
+
};
|
|
57
|
+
to: Token & {
|
|
58
|
+
amount: string;
|
|
59
|
+
};
|
|
52
60
|
}>;
|
|
53
61
|
/**
|
|
54
62
|
* @experimental This feature has not been officially released and might change in the future.
|
|
@@ -71,12 +79,15 @@ declare class AirService {
|
|
|
71
79
|
on(listener: AirEventListener): void;
|
|
72
80
|
off(listener: AirEventListener): void;
|
|
73
81
|
preloadCredential(): Promise<void>;
|
|
74
|
-
issueCredential({ authToken, issuerDid, credentialId, credentialSubject, }: {
|
|
82
|
+
issueCredential({ authToken, issuerDid, credentialId, credentialSubject, curve, }: {
|
|
75
83
|
authToken: string;
|
|
76
84
|
issuerDid: string;
|
|
77
85
|
credentialId: string;
|
|
78
86
|
credentialSubject: Record<string, unknown>;
|
|
79
|
-
|
|
87
|
+
curve?: "secp256r1" | "secp256k1";
|
|
88
|
+
}): Promise<{
|
|
89
|
+
cakPublicKey?: string;
|
|
90
|
+
}>;
|
|
80
91
|
verifyCredential({ authToken, programId, redirectUrl, }: {
|
|
81
92
|
authToken: string;
|
|
82
93
|
programId: string;
|
|
@@ -24,6 +24,7 @@ export type AirInitializationRequestMessage = AirCredentialMessageBase<"air_cred
|
|
|
24
24
|
partnerDAppUrl: string;
|
|
25
25
|
enableAutomation: boolean;
|
|
26
26
|
sessionConfig?: Partial<SessionConfig>;
|
|
27
|
+
credentialNetwork?: "devnet" | "testnet";
|
|
27
28
|
}>;
|
|
28
29
|
type AirInitializationSuccessResponseMessage = AirCredentialMessageBase<"air_credential_initialization_response", AirMessageSuccessPayload>;
|
|
29
30
|
export type AirInitializationErrorResponseMessage = AirCredentialMessageBase<"air_credential_initialization_response", AirMessageErrorPayload & {
|
|
@@ -42,6 +43,7 @@ export type AirIssueCredentialRequestMessage = AirCredentialMessageBase<"air_cre
|
|
|
42
43
|
issuerDid: string;
|
|
43
44
|
credentialId: string;
|
|
44
45
|
credentialSubject: Record<string, unknown>;
|
|
46
|
+
curve?: "secp256r1" | "secp256k1";
|
|
45
47
|
}>;
|
|
46
48
|
export type AirVerifyCredentialRequestMessage = AirCredentialMessageBase<"air_credential_verify_request", {
|
|
47
49
|
partnerToken: string;
|
|
@@ -50,6 +52,7 @@ export type AirVerifyCredentialRequestMessage = AirCredentialMessageBase<"air_cr
|
|
|
50
52
|
}>;
|
|
51
53
|
export type AirIssueCredentialResponseMessage = AirCredentialMessageBase<"air_credential_issue_response", ((AirMessageSuccessPayload & {
|
|
52
54
|
result: Record<string, unknown>;
|
|
55
|
+
cakPublicKey?: string;
|
|
53
56
|
}) | AirMessageErrorPayload) & {
|
|
54
57
|
closeDApp?: boolean;
|
|
55
58
|
}>;
|
|
@@ -60,6 +63,7 @@ export type AirVerifyCredentialSuccessResponsePayload = {
|
|
|
60
63
|
status: "Compliant";
|
|
61
64
|
zkProofs: Record<string, string>;
|
|
62
65
|
transactionHash: string;
|
|
66
|
+
cakPrivateKey?: string;
|
|
63
67
|
};
|
|
64
68
|
} & AirMessageSuccessPayload;
|
|
65
69
|
export type AirVerifyCredentialResponseMessage = AirCredentialMessageBase<"air_credential_verify_response", AirVerifyCredentialSuccessResponsePayload | AirMessageErrorPayload>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SupportedCurrencyCode } from "../../currency";
|
|
1
2
|
import { AirErrorName } from "../error/types";
|
|
2
3
|
export type AirMessageBase<TType extends string = string, TPayload extends object = object> = {
|
|
3
4
|
type: TType;
|
|
@@ -16,4 +17,5 @@ export type AirMessageErrorPayload = {
|
|
|
16
17
|
};
|
|
17
18
|
export type SessionConfig = {
|
|
18
19
|
locale: string;
|
|
20
|
+
currency: SupportedCurrencyCode;
|
|
19
21
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TokenSymbol, Token } from "../../types";
|
|
1
2
|
import { AirIdDetails, MFASetup } from "../../realm/user/types";
|
|
2
3
|
import { AirWalletProviderMessageErrorResponse, AirWalletProviderMessageRequest, AirWalletProviderMessageSuccessResponse } from "./provider";
|
|
3
4
|
import { AirMessageBase, AirMessageBaseWithoutPayload, AirMessageErrorPayload, AirMessageSuccessPayload, SessionConfig } from "./types";
|
|
@@ -76,12 +77,19 @@ export type AirClaimIdSuccess = AirMessageSuccessPayload & {
|
|
|
76
77
|
export type AirClaimIdResponsePayload = AirClaimIdSuccess | AirMessageErrorPayload;
|
|
77
78
|
export type AirClaimIdResponseMessage = AirWalletMessageBase<"air_claim_id_response", AirClaimIdResponsePayload>;
|
|
78
79
|
export type AirShowSwapUIRequestMessage = AirWalletMessageBase<"air_show_swap_ui_request", {
|
|
79
|
-
initialFromToken?:
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
initialFromToken?: TokenSymbol;
|
|
81
|
+
initialToToken?: TokenSymbol;
|
|
82
|
+
fallbackFromToken?: TokenSymbol;
|
|
83
|
+
defaultSlippage?: string;
|
|
82
84
|
}>;
|
|
83
85
|
export type AirShowSwapUISuccess = AirMessageSuccessPayload & {
|
|
84
86
|
txHash: `0x${string}`;
|
|
87
|
+
from: Token & {
|
|
88
|
+
amount: string;
|
|
89
|
+
};
|
|
90
|
+
to: Token & {
|
|
91
|
+
amount: string;
|
|
92
|
+
};
|
|
85
93
|
};
|
|
86
94
|
export type AirShowSwapUIResponseMessage = AirWalletMessageBase<"air_show_swap_ui_response", AirShowSwapUISuccess | AirMessageErrorPayload>;
|
|
87
95
|
export type AirShowOnRampUIRequestMessage = AirWalletMessageBase<"air_show_on_ramp_ui_request", {
|
|
@@ -24,6 +24,7 @@ export declare const mocaDevnet: {
|
|
|
24
24
|
readonly blockCreated: 3837540;
|
|
25
25
|
};
|
|
26
26
|
};
|
|
27
|
+
readonly testnet: true;
|
|
27
28
|
};
|
|
28
29
|
export declare const mocaTestnet: {
|
|
29
30
|
readonly id: 222888;
|
|
@@ -35,8 +36,8 @@ export declare const mocaTestnet: {
|
|
|
35
36
|
};
|
|
36
37
|
readonly rpcUrls: {
|
|
37
38
|
readonly default: {
|
|
38
|
-
readonly http: readonly ["https://
|
|
39
|
-
readonly webSocket: readonly ["wss://
|
|
39
|
+
readonly http: readonly ["https://rpc.testnet.mocachain.dev"];
|
|
40
|
+
readonly webSocket: readonly ["wss://rpc.testnet.mocachain.dev"];
|
|
40
41
|
};
|
|
41
42
|
};
|
|
42
43
|
readonly blockExplorers: {
|
|
@@ -51,4 +52,33 @@ export declare const mocaTestnet: {
|
|
|
51
52
|
readonly blockCreated: 1330259;
|
|
52
53
|
};
|
|
53
54
|
};
|
|
55
|
+
readonly testnet: true;
|
|
56
|
+
};
|
|
57
|
+
export declare const mocaMainnet: {
|
|
58
|
+
readonly id: 2288;
|
|
59
|
+
readonly name: "Moca Mainnet";
|
|
60
|
+
readonly nativeCurrency: {
|
|
61
|
+
readonly decimals: 18;
|
|
62
|
+
readonly name: "Moca Network";
|
|
63
|
+
readonly symbol: "MOCA";
|
|
64
|
+
};
|
|
65
|
+
readonly rpcUrls: {
|
|
66
|
+
readonly default: {
|
|
67
|
+
readonly http: readonly ["https://rpc.mocachain.org"];
|
|
68
|
+
readonly webSocket: readonly ["wss://rpc.mocachain.org/ws"];
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
readonly blockExplorers: {
|
|
72
|
+
readonly default: {
|
|
73
|
+
readonly name: "Moca Mainnet";
|
|
74
|
+
readonly url: "https://scan.mocachain.org";
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
readonly contracts: {
|
|
78
|
+
readonly multicall3: {
|
|
79
|
+
readonly address: "0xcA11bde05977b3631167028862bE2a173976CA11";
|
|
80
|
+
readonly blockCreated: 1;
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
readonly testnet: false;
|
|
54
84
|
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supported fiat currency codes
|
|
3
|
+
* Use these typed constants instead of raw strings for better type safety
|
|
4
|
+
*/
|
|
5
|
+
export declare const SUPPORTED_CURRENCY_CODES: {
|
|
6
|
+
readonly EUR: "EUR";
|
|
7
|
+
readonly USD: "USD";
|
|
8
|
+
readonly CNY: "CNY";
|
|
9
|
+
readonly KRW: "KRW";
|
|
10
|
+
readonly TRY: "TRY";
|
|
11
|
+
};
|
|
12
|
+
export type SupportedCurrencyCode = (typeof SUPPORTED_CURRENCY_CODES)[keyof typeof SUPPORTED_CURRENCY_CODES];
|
|
13
|
+
/**
|
|
14
|
+
* Default currency code (USD)
|
|
15
|
+
*/
|
|
16
|
+
export declare const DEFAULT_CURRENCY_CODE: "USD";
|
|
17
|
+
/**
|
|
18
|
+
* Currency information including symbol, decimals, and localized names
|
|
19
|
+
*/
|
|
20
|
+
export type CurrencyInfo = {
|
|
21
|
+
readonly type: 'fiat';
|
|
22
|
+
readonly code: SupportedCurrencyCode;
|
|
23
|
+
readonly symbol: string;
|
|
24
|
+
readonly name: {
|
|
25
|
+
readonly [key: string]: string;
|
|
26
|
+
};
|
|
27
|
+
readonly decimals: number;
|
|
28
|
+
readonly floatingPoint: number;
|
|
29
|
+
readonly image: string;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Supported fiat currencies with full metadata
|
|
33
|
+
* This is the source of truth for all supported currencies
|
|
34
|
+
*/
|
|
35
|
+
export declare const SUPPORTED_CURRENCIES: readonly CurrencyInfo[];
|
|
@@ -34,6 +34,15 @@ export type EIP1193Event = keyof EIP1193EventMap;
|
|
|
34
34
|
* Custom RPC schema for Air-specific provider methods
|
|
35
35
|
*/
|
|
36
36
|
export type AirCustomRpcSchema = [
|
|
37
|
+
{
|
|
38
|
+
Method: "air_accounts";
|
|
39
|
+
Parameters: [includeTestnets?: boolean];
|
|
40
|
+
ReturnType: {
|
|
41
|
+
chainId: number;
|
|
42
|
+
isDeployed: boolean;
|
|
43
|
+
address: Address;
|
|
44
|
+
}[];
|
|
45
|
+
},
|
|
37
46
|
{
|
|
38
47
|
Method: "air_listSessionKeyScopes";
|
|
39
48
|
Parameters: [chainId?: number];
|
|
@@ -102,10 +111,12 @@ export type StandardRpcSchema = [
|
|
|
102
111
|
RpcMethod<"eth_sendTransaction", unknown[], string>,
|
|
103
112
|
RpcMethod<"eth_sign", unknown[], string>,
|
|
104
113
|
RpcMethod<"personal_sign", unknown[], string>,
|
|
114
|
+
RpcMethod<"eth_signTypedData_v4", unknown[], string>,
|
|
105
115
|
RpcMethod<"wallet_switchEthereumChain", [{
|
|
106
116
|
chainId: `0x${string}`;
|
|
107
117
|
}], null>,
|
|
108
|
-
RpcMethod<"wallet_addEthereumChain", unknown[], null
|
|
118
|
+
RpcMethod<"wallet_addEthereumChain", unknown[], null>,
|
|
119
|
+
RpcMethod<"wallet_sendCalls", unknown[], string>
|
|
109
120
|
];
|
|
110
121
|
/**
|
|
111
122
|
* Combined schema including Air custom methods and standard methods
|
|
@@ -12,3 +12,11 @@ export type IntersectionToUnion<T> = {
|
|
|
12
12
|
[K in keyof T]: (x: T[K]) => void;
|
|
13
13
|
}[keyof T] extends (x: infer U) => void ? U : never;
|
|
14
14
|
export type FixedArray<T, N extends number, Acc extends T[] = []> = Acc["length"] extends N ? Acc : FixedArray<T, N, [...Acc, T]>;
|
|
15
|
+
export type TokenSymbol = {
|
|
16
|
+
symbol: string;
|
|
17
|
+
chainId: number;
|
|
18
|
+
};
|
|
19
|
+
export type Token = TokenSymbol & {
|
|
20
|
+
decimals: number;
|
|
21
|
+
address: `0x${string}`;
|
|
22
|
+
};
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { AirVerifyCredentialSuccessResponsePayload } from "@mocanetwork/common/src/air/messaging/credential";
|
|
2
2
|
import { mocaDevnet, mocaTestnet } from "@mocanetwork/common/src/const";
|
|
3
|
+
import { SupportedCurrencyCode } from "@mocanetwork/common/src/currency";
|
|
3
4
|
import { EIP1193Provider as EIP1193ProviderInterface } from "./common/provider/types";
|
|
4
5
|
import { AirIdDetails } from "./common/realm/user/types";
|
|
6
|
+
import { TokenSymbol } from "packages/common/src/types";
|
|
5
7
|
export declare const BUILD_ENV: {
|
|
6
8
|
readonly PRODUCTION: "production";
|
|
7
9
|
readonly UAT: "uat";
|
|
@@ -34,7 +36,9 @@ export type AirUserDetails = {
|
|
|
34
36
|
};
|
|
35
37
|
export type AirSessionConfig = {
|
|
36
38
|
locale: string;
|
|
39
|
+
currency: SupportedCurrencyCode;
|
|
37
40
|
};
|
|
41
|
+
export type CredentialNetwork = "devnet" | "testnet";
|
|
38
42
|
export type AirLoginResult = {
|
|
39
43
|
isLoggedIn: boolean;
|
|
40
44
|
id: string;
|
|
@@ -76,5 +80,11 @@ export type ClaimAirIdOptions = {
|
|
|
76
80
|
background: true;
|
|
77
81
|
offchain?: boolean;
|
|
78
82
|
};
|
|
83
|
+
export type ShowSwapUIOptions = {
|
|
84
|
+
initialFromToken?: TokenSymbol;
|
|
85
|
+
fallbackFromToken?: TokenSymbol;
|
|
86
|
+
initialToToken?: TokenSymbol;
|
|
87
|
+
defaultSlippage?: number;
|
|
88
|
+
};
|
|
79
89
|
export type EIP1193Provider = EIP1193ProviderInterface;
|
|
80
90
|
export { mocaDevnet, mocaTestnet };
|
package/dist/types/utils.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { AirUrlConfig, BUILD_ENV_TYPE } from "./interfaces";
|
|
1
|
+
import { AirUrlConfig, BUILD_ENV_TYPE, CredentialNetwork } from "./interfaces";
|
|
2
2
|
export declare const FONT_CDNS: string[];
|
|
3
3
|
export declare const AIR_URLS: Record<BUILD_ENV_TYPE, AirUrlConfig>;
|
|
4
|
+
export declare const getAirUrls: (buildEnv: BUILD_ENV_TYPE, credentialNetwork?: CredentialNetwork) => AirUrlConfig;
|
|
4
5
|
/**
|
|
5
6
|
* Injects dns-prefetch, preconnect, and prefetch link tags
|
|
6
7
|
* for a given resource or page URL.
|
|
@@ -14,8 +15,6 @@ export declare const addResourceHints: (url: string, options?: {
|
|
|
14
15
|
prefetch?: boolean;
|
|
15
16
|
as?: string;
|
|
16
17
|
}) => void;
|
|
17
|
-
export declare const
|
|
18
|
-
export declare const htmlToElement: <T extends Element>(html: string) => T;
|
|
19
|
-
export declare const isElement: (element: unknown) => element is Element | Document;
|
|
18
|
+
export declare const isElement: (element: unknown) => element is Document | Element;
|
|
20
19
|
export declare const randomId: () => string;
|
|
21
20
|
export declare const extractErrorHash: (message: string) => string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AirWindowMessage } from "@mocanetwork/common/src/air/messaging/window";
|
|
2
|
+
import { TokenSymbol } from "@mocanetwork/common/src/types";
|
|
2
3
|
import { MessageServiceBase } from "./common/air/messaging/messageServiceBase";
|
|
3
4
|
import { AirClaimIdRequestMessage, AirInitializationRequestMessage, AirWalletMessage, AirWalletUpdateSessionConfigRequestMessage } from "./common/air/messaging/wallet";
|
|
4
5
|
export declare class WalletMessageService extends MessageServiceBase<AirWalletMessage | AirWindowMessage> {
|
|
@@ -19,9 +20,10 @@ export declare class WalletMessageService extends MessageServiceBase<AirWalletMe
|
|
|
19
20
|
sendWindowClosed(windowId: string): Promise<void>;
|
|
20
21
|
sendClaimIdRequest(payload: AirClaimIdRequestMessage["payload"]): Promise<import("./common/air/messaging/wallet").AirClaimIdResponseMessage>;
|
|
21
22
|
sendShowSwapUIRequest(payload?: {
|
|
22
|
-
initialFromToken?:
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
initialFromToken?: TokenSymbol;
|
|
24
|
+
initialToToken?: TokenSymbol;
|
|
25
|
+
fallbackFromToken?: TokenSymbol;
|
|
26
|
+
defaultSlippage?: number;
|
|
25
27
|
}): Promise<import("./common/air/messaging/wallet").AirShowSwapUIResponseMessage>;
|
|
26
28
|
sendShowOnRampUIRequest(payload: {
|
|
27
29
|
displayCurrencyCode: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mocanetwork/airkit",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0-beta.2",
|
|
4
4
|
"description": "Air kit to interact with the Moca Network",
|
|
5
5
|
"main": "dist/airkit.cjs.js",
|
|
6
6
|
"module": "dist/airkit.esm.js",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"@types/pump": "^1.1.3",
|
|
34
34
|
"@types/readable-stream": "^4.0.15",
|
|
35
35
|
"fs-extra": "^11.2.0",
|
|
36
|
-
"glob": "^11.
|
|
36
|
+
"glob": "^11.1.0",
|
|
37
37
|
"process": "^0.11.10",
|
|
38
38
|
"typescript-eslint": "^8.21.0"
|
|
39
39
|
},
|