@getpara/core-sdk 2.12.0 → 2.13.0
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/cjs/ParaCore.js +793 -2003
- package/dist/cjs/constants.js +4 -1
- package/dist/cjs/services/AuthService.js +787 -0
- package/dist/cjs/services/BaseAuthFlowService.js +78 -0
- package/dist/cjs/services/ExternalWalletService.js +386 -0
- package/dist/cjs/services/LoginFlowService.js +163 -0
- package/dist/cjs/services/PollingService.js +448 -0
- package/dist/cjs/services/PortalUrlService.js +379 -0
- package/dist/cjs/services/PregenWalletService.js +442 -0
- package/dist/cjs/services/SessionManagementService.js +280 -0
- package/dist/cjs/services/SignupFlowService.js +185 -0
- package/dist/cjs/services/VerificationFlowService.js +242 -0
- package/dist/cjs/services/WalletService.js +577 -0
- package/dist/cjs/services/types/AuthServiceTypes.js +15 -0
- package/dist/cjs/services/types/BaseAuthFlowServiceTypes.js +15 -0
- package/dist/cjs/services/types/ExternalWalletServiceTypes.js +15 -0
- package/dist/cjs/services/types/LoginFlowServiceTypes.js +15 -0
- package/dist/cjs/services/types/PollingServiceTypes.js +15 -0
- package/dist/cjs/services/types/PortalUrlServiceTypes.js +15 -0
- package/dist/cjs/services/types/PregenWalletServiceTypes.js +15 -0
- package/dist/cjs/services/types/SessionManagementServiceTypes.js +15 -0
- package/dist/cjs/services/types/SignupFlowServiceTypes.js +15 -0
- package/dist/cjs/services/types/VerificationFlowServiceTypes.js +15 -0
- package/dist/cjs/services/types/WalletServiceTypes.js +15 -0
- package/dist/cjs/services/types/index.js +15 -0
- package/dist/cjs/state/CoreStateManager.js +297 -0
- package/dist/cjs/state/actors/authenticateWithEmailOrPhone.js +50 -0
- package/dist/cjs/state/actors/authenticateWithExternalWallet.js +50 -0
- package/dist/cjs/state/actors/authenticateWithFarcaster.js +50 -0
- package/dist/cjs/state/actors/authenticateWithFarcasterLegacy.js +50 -0
- package/dist/cjs/state/actors/authenticateWithTelegram.js +50 -0
- package/dist/cjs/state/actors/authenticateWithTelegramLegacy.js +50 -0
- package/dist/cjs/state/actors/checkUserState.js +53 -0
- package/dist/cjs/state/actors/claimWallets.js +56 -0
- package/dist/cjs/state/actors/connectExternalConnectors.js +54 -0
- package/dist/cjs/state/actors/connectExternalWallet.js +50 -0
- package/dist/cjs/state/actors/createGuestWallets.js +50 -0
- package/dist/cjs/state/actors/createWallets.js +73 -0
- package/dist/cjs/state/actors/polling.js +91 -0
- package/dist/cjs/state/actors/processAuthentication.js +50 -0
- package/dist/cjs/state/actors/setupAfterLogin.js +52 -0
- package/dist/cjs/state/actors/setupPara.js +50 -0
- package/dist/cjs/state/actors/signExternalWalletVerification.js +79 -0
- package/dist/cjs/state/actors/switchExternalWallet.js +50 -0
- package/dist/cjs/state/actors/verifyExternalWallet.js +50 -0
- package/dist/cjs/state/actors/verifyNewAccount.js +50 -0
- package/dist/cjs/state/actors/waitForExternalWalletProviders.js +54 -0
- package/dist/cjs/state/machines/authStateMachine.helpers.js +137 -0
- package/dist/cjs/state/machines/authStateMachine.js +1084 -0
- package/dist/cjs/state/machines/coreStateMachine.js +383 -0
- package/dist/cjs/state/machines/walletStateMachine.js +437 -0
- package/dist/cjs/state/types/auth.js +15 -0
- package/dist/cjs/state/types/core.js +15 -0
- package/dist/cjs/state/types/wallet.js +15 -0
- package/dist/cjs/types/{auth.js → accountLinking.js} +3 -3
- package/dist/cjs/types/authState.js +15 -0
- package/dist/cjs/types/coreApi.js +3 -1
- package/dist/cjs/types/index.js +2 -2
- package/dist/cjs/types/serviceInterfaces.js +15 -0
- package/dist/cjs/types/util.js +15 -0
- package/dist/cjs/utils/formatting.js +6 -0
- package/dist/cjs/utils/retryBackoff.js +30 -0
- package/dist/cjs/utils/stateErrorHelpers.js +60 -0
- package/dist/cjs/utils/stateListener.js +129 -0
- package/dist/esm/ParaCore.js +796 -2031
- package/dist/esm/constants.js +3 -1
- package/dist/esm/services/AuthService.js +717 -0
- package/dist/esm/services/BaseAuthFlowService.js +25 -0
- package/dist/esm/services/ExternalWalletService.js +327 -0
- package/dist/esm/services/LoginFlowService.js +97 -0
- package/dist/esm/services/PollingService.js +389 -0
- package/dist/esm/services/PortalUrlService.js +320 -0
- package/dist/esm/services/PregenWalletService.js +393 -0
- package/dist/esm/services/SessionManagementService.js +236 -0
- package/dist/esm/services/SignupFlowService.js +119 -0
- package/dist/esm/services/VerificationFlowService.js +178 -0
- package/dist/esm/services/WalletService.js +514 -0
- package/dist/esm/services/types/AuthServiceTypes.js +0 -0
- package/dist/esm/services/types/BaseAuthFlowServiceTypes.js +0 -0
- package/dist/esm/services/types/ExternalWalletServiceTypes.js +0 -0
- package/dist/esm/services/types/LoginFlowServiceTypes.js +0 -0
- package/dist/esm/services/types/PollingServiceTypes.js +0 -0
- package/dist/esm/services/types/PortalUrlServiceTypes.js +0 -0
- package/dist/esm/services/types/PregenWalletServiceTypes.js +0 -0
- package/dist/esm/services/types/SessionManagementServiceTypes.js +0 -0
- package/dist/esm/services/types/SignupFlowServiceTypes.js +0 -0
- package/dist/esm/services/types/VerificationFlowServiceTypes.js +0 -0
- package/dist/esm/services/types/WalletServiceTypes.js +0 -0
- package/dist/esm/services/types/index.js +0 -0
- package/dist/esm/state/CoreStateManager.js +261 -0
- package/dist/esm/state/actors/authenticateWithEmailOrPhone.js +10 -0
- package/dist/esm/state/actors/authenticateWithExternalWallet.js +10 -0
- package/dist/esm/state/actors/authenticateWithFarcaster.js +10 -0
- package/dist/esm/state/actors/authenticateWithFarcasterLegacy.js +10 -0
- package/dist/esm/state/actors/authenticateWithTelegram.js +10 -0
- package/dist/esm/state/actors/authenticateWithTelegramLegacy.js +10 -0
- package/dist/esm/state/actors/checkUserState.js +13 -0
- package/dist/esm/state/actors/claimWallets.js +16 -0
- package/dist/esm/state/actors/connectExternalConnectors.js +14 -0
- package/dist/esm/state/actors/connectExternalWallet.js +10 -0
- package/dist/esm/state/actors/createGuestWallets.js +10 -0
- package/dist/esm/state/actors/createWallets.js +20 -0
- package/dist/esm/state/actors/polling.js +55 -0
- package/dist/esm/state/actors/processAuthentication.js +10 -0
- package/dist/esm/state/actors/setupAfterLogin.js +12 -0
- package/dist/esm/state/actors/setupPara.js +10 -0
- package/dist/esm/state/actors/signExternalWalletVerification.js +15 -0
- package/dist/esm/state/actors/switchExternalWallet.js +10 -0
- package/dist/esm/state/actors/verifyExternalWallet.js +10 -0
- package/dist/esm/state/actors/verifyNewAccount.js +10 -0
- package/dist/esm/state/actors/waitForExternalWalletProviders.js +14 -0
- package/dist/esm/state/machines/authStateMachine.helpers.js +92 -0
- package/dist/esm/state/machines/authStateMachine.js +1039 -0
- package/dist/esm/state/machines/coreStateMachine.js +343 -0
- package/dist/esm/state/machines/walletStateMachine.js +382 -0
- package/dist/esm/state/types/auth.js +0 -0
- package/dist/esm/state/types/core.js +0 -0
- package/dist/esm/state/types/wallet.js +0 -0
- package/dist/esm/types/authState.js +0 -0
- package/dist/esm/types/coreApi.js +3 -1
- package/dist/esm/types/index.js +1 -1
- package/dist/esm/types/serviceInterfaces.js +0 -0
- package/dist/esm/types/util.js +0 -0
- package/dist/esm/utils/formatting.js +6 -0
- package/dist/esm/utils/retryBackoff.js +7 -0
- package/dist/esm/utils/stateErrorHelpers.js +37 -0
- package/dist/esm/utils/stateListener.js +106 -0
- package/dist/types/ParaCore.d.ts +190 -119
- package/dist/types/PlatformUtils.d.ts +23 -0
- package/dist/types/constants.d.ts +1 -0
- package/dist/types/index.d.ts +4 -2
- package/dist/types/services/AuthService.d.ts +72 -0
- package/dist/types/services/BaseAuthFlowService.d.ts +28 -0
- package/dist/types/services/ExternalWalletService.d.ts +44 -0
- package/dist/types/services/LoginFlowService.d.ts +9 -0
- package/dist/types/services/PollingService.d.ts +35 -0
- package/dist/types/services/PortalUrlService.d.ts +26 -0
- package/dist/types/services/PregenWalletService.d.ts +38 -0
- package/dist/types/services/SessionManagementService.d.ts +28 -0
- package/dist/types/services/SignupFlowService.d.ts +10 -0
- package/dist/types/services/VerificationFlowService.d.ts +17 -0
- package/dist/types/services/WalletService.d.ts +54 -0
- package/dist/types/services/types/AuthServiceTypes.d.ts +147 -0
- package/dist/types/services/types/BaseAuthFlowServiceTypes.d.ts +4 -0
- package/dist/types/services/types/ExternalWalletServiceTypes.d.ts +67 -0
- package/dist/types/services/types/LoginFlowServiceTypes.d.ts +19 -0
- package/dist/types/services/types/PollingServiceTypes.d.ts +82 -0
- package/dist/types/services/types/PortalUrlServiceTypes.d.ts +46 -0
- package/dist/types/services/types/PregenWalletServiceTypes.d.ts +73 -0
- package/dist/types/services/types/SessionManagementServiceTypes.d.ts +27 -0
- package/dist/types/services/types/SignupFlowServiceTypes.d.ts +18 -0
- package/dist/types/services/types/VerificationFlowServiceTypes.d.ts +90 -0
- package/dist/types/services/types/WalletServiceTypes.d.ts +109 -0
- package/dist/types/services/types/index.d.ts +11 -0
- package/dist/types/state/CoreStateManager.d.ts +36 -0
- package/dist/types/state/actors/authenticateWithEmailOrPhone.d.ts +8 -0
- package/dist/types/state/actors/authenticateWithExternalWallet.d.ts +8 -0
- package/dist/types/state/actors/authenticateWithFarcaster.d.ts +3 -0
- package/dist/types/state/actors/authenticateWithFarcasterLegacy.d.ts +3 -0
- package/dist/types/state/actors/authenticateWithTelegram.d.ts +3 -0
- package/dist/types/state/actors/authenticateWithTelegramLegacy.d.ts +8 -0
- package/dist/types/state/actors/checkUserState.d.ts +6 -0
- package/dist/types/state/actors/claimWallets.d.ts +8 -0
- package/dist/types/state/actors/connectExternalConnectors.d.ts +4 -0
- package/dist/types/state/actors/connectExternalWallet.d.ts +3 -0
- package/dist/types/state/actors/createGuestWallets.d.ts +3 -0
- package/dist/types/state/actors/createWallets.d.ts +10 -0
- package/dist/types/state/actors/polling.d.ts +3 -0
- package/dist/types/state/actors/processAuthentication.d.ts +10 -0
- package/dist/types/state/actors/setupAfterLogin.d.ts +5 -0
- package/dist/types/state/actors/setupPara.d.ts +2 -0
- package/dist/types/state/actors/signExternalWalletVerification.d.ts +7 -0
- package/dist/types/state/actors/switchExternalWallet.d.ts +3 -0
- package/dist/types/state/actors/verifyExternalWallet.d.ts +8 -0
- package/dist/types/state/actors/verifyNewAccount.d.ts +8 -0
- package/dist/types/state/actors/waitForExternalWalletProviders.d.ts +2 -0
- package/dist/types/state/machines/authStateMachine.d.ts +2570 -0
- package/dist/types/state/machines/authStateMachine.helpers.d.ts +57 -0
- package/dist/types/state/machines/coreStateMachine.d.ts +22033 -0
- package/dist/types/state/machines/walletStateMachine.d.ts +1049 -0
- package/dist/types/state/types/auth.d.ts +113 -0
- package/dist/types/state/types/core.d.ts +114 -0
- package/dist/types/state/types/wallet.d.ts +76 -0
- package/dist/types/types/authState.d.ts +66 -0
- package/dist/types/types/config.d.ts +5 -0
- package/dist/types/types/coreApi.d.ts +148 -298
- package/dist/types/types/index.d.ts +3 -1
- package/dist/types/types/methods.d.ts +1 -191
- package/dist/types/types/serviceInterfaces.d.ts +125 -0
- package/dist/types/types/util.d.ts +43 -0
- package/dist/types/types/wallet.d.ts +3 -1
- package/dist/types/utils/retryBackoff.d.ts +2 -0
- package/dist/types/utils/stateErrorHelpers.d.ts +2 -0
- package/dist/types/utils/stateListener.d.ts +47 -0
- package/package.json +5 -4
- /package/dist/esm/types/{auth.js → accountLinking.js} +0 -0
- /package/dist/types/types/{auth.d.ts → accountLinking.d.ts} +0 -0
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__async,
|
|
3
|
+
__privateAdd,
|
|
4
|
+
__privateGet,
|
|
5
|
+
__privateSet,
|
|
6
|
+
__spreadProps,
|
|
7
|
+
__spreadValues
|
|
8
|
+
} from "../chunk-7B52C2XE.js";
|
|
9
|
+
var _stateManager, _authService, _walletService, _pollingService, _paraCoreInterface, _isCreateGuestWalletsPending, _fetchOverridePromise;
|
|
10
|
+
import {
|
|
11
|
+
isPregenAuth,
|
|
12
|
+
toPregenIds,
|
|
13
|
+
toPregenTypeAndId
|
|
14
|
+
} from "@getpara/user-management-client";
|
|
15
|
+
import {
|
|
16
|
+
entityToWallet,
|
|
17
|
+
getEquivalentTypes,
|
|
18
|
+
isPregenIdentifierMatch,
|
|
19
|
+
newUuid,
|
|
20
|
+
WalletSchemeTypeMap
|
|
21
|
+
} from "../utils/wallet.js";
|
|
22
|
+
import { dispatchEvent } from "../utils/index.js";
|
|
23
|
+
import { ParaEvent } from "../types/events.js";
|
|
24
|
+
import { distributeNewShare } from "../shares/shareDistribution.js";
|
|
25
|
+
import { SHORT_POLLING_INTERVAL_MS } from "../constants.js";
|
|
26
|
+
import { waitForCoreStateChange } from "../utils/stateListener.js";
|
|
27
|
+
class PregenWalletService {
|
|
28
|
+
constructor(paraCore) {
|
|
29
|
+
__privateAdd(this, _stateManager);
|
|
30
|
+
__privateAdd(this, _authService);
|
|
31
|
+
__privateAdd(this, _walletService);
|
|
32
|
+
__privateAdd(this, _pollingService);
|
|
33
|
+
__privateAdd(this, _paraCoreInterface);
|
|
34
|
+
__privateAdd(this, _isCreateGuestWalletsPending, false);
|
|
35
|
+
__privateAdd(this, _fetchOverridePromise, null);
|
|
36
|
+
this.init = ({
|
|
37
|
+
authService,
|
|
38
|
+
walletService,
|
|
39
|
+
pollingService,
|
|
40
|
+
stateManager
|
|
41
|
+
}) => {
|
|
42
|
+
__privateSet(this, _walletService, walletService);
|
|
43
|
+
__privateSet(this, _authService, authService);
|
|
44
|
+
__privateSet(this, _pollingService, pollingService);
|
|
45
|
+
__privateSet(this, _stateManager, stateManager);
|
|
46
|
+
};
|
|
47
|
+
this.isPregenWalletUnclaimed = (wallet) => {
|
|
48
|
+
return __privateGet(this, _walletService).isWalletSupported(wallet) && (!(wallet == null ? void 0 : wallet.userId) || (wallet == null ? void 0 : wallet.isPregen) && !!(wallet == null ? void 0 : wallet.pregenIdentifier) && !!(wallet == null ? void 0 : wallet.pregenIdentifierType));
|
|
49
|
+
};
|
|
50
|
+
this.isPregenWalletClaimable = (wallet) => {
|
|
51
|
+
return __privateGet(this, _walletService).isWalletSupported(wallet) && this.isPregenWalletUnclaimed(wallet) && (!["EMAIL", "PHONE", "TELEGRAM"].includes(wallet == null ? void 0 : wallet.pregenIdentifierType) || isPregenIdentifierMatch(
|
|
52
|
+
(wallet == null ? void 0 : wallet.pregenIdentifierType) === "EMAIL" ? __privateGet(this, _authService).email : (wallet == null ? void 0 : wallet.pregenIdentifierType) === "TELEGRAM" ? __privateGet(this, _authService).telegramUserId : __privateGet(this, _authService).phone,
|
|
53
|
+
wallet == null ? void 0 : wallet.pregenIdentifier,
|
|
54
|
+
wallet == null ? void 0 : wallet.pregenIdentifierType
|
|
55
|
+
));
|
|
56
|
+
};
|
|
57
|
+
this.fetchPregenWalletsFromOverride = (_0) => __async(this, [_0], function* ({ authInfo }) {
|
|
58
|
+
if (__privateGet(this, _paraCoreInterface).fetchPregenWalletsOverride && isPregenAuth(authInfo)) {
|
|
59
|
+
const previous = __privateGet(this, _fetchOverridePromise);
|
|
60
|
+
__privateSet(this, _fetchOverridePromise, (() => __async(this, null, function* () {
|
|
61
|
+
if (previous !== null) yield previous.catch(() => {
|
|
62
|
+
});
|
|
63
|
+
try {
|
|
64
|
+
const { userShare } = yield __privateGet(this, _paraCoreInterface).fetchPregenWalletsOverride({ pregenId: authInfo });
|
|
65
|
+
if (userShare) {
|
|
66
|
+
yield __privateGet(this, _walletService).setUserShare(userShare);
|
|
67
|
+
}
|
|
68
|
+
} finally {
|
|
69
|
+
__privateSet(this, _fetchOverridePromise, null);
|
|
70
|
+
}
|
|
71
|
+
}))());
|
|
72
|
+
yield __privateGet(this, _fetchOverridePromise);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
this.performClaimPregenWallets = () => __async(this, null, function* () {
|
|
76
|
+
if (__privateGet(this, _fetchOverridePromise) !== null) {
|
|
77
|
+
try {
|
|
78
|
+
yield __privateGet(this, _fetchOverridePromise);
|
|
79
|
+
} catch (e) {
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const { supportedWalletTypes } = yield __privateGet(this, _paraCoreInterface).assertPartner();
|
|
83
|
+
const pregenWallets = yield this.getPregenWallets();
|
|
84
|
+
let recoverySecret, walletIds = {};
|
|
85
|
+
if (pregenWallets.length > 0) {
|
|
86
|
+
try {
|
|
87
|
+
const shares = yield __privateGet(this, _paraCoreInterface).ctx.enclaveClient.getPregenShares({
|
|
88
|
+
userId: __privateGet(this, _authService).userId,
|
|
89
|
+
walletIds: pregenWallets.map((w) => w.id),
|
|
90
|
+
partnerId: pregenWallets[0].partnerId
|
|
91
|
+
});
|
|
92
|
+
for (const share of shares) {
|
|
93
|
+
const wallet = pregenWallets.find((w) => w.id === share.walletId);
|
|
94
|
+
if (wallet) {
|
|
95
|
+
__privateGet(this, _walletService).wallets[wallet.id] = {
|
|
96
|
+
id: wallet.id,
|
|
97
|
+
address: wallet.address,
|
|
98
|
+
scheme: wallet.scheme,
|
|
99
|
+
type: wallet.type,
|
|
100
|
+
partnerId: wallet.partnerId,
|
|
101
|
+
isPregen: wallet.isPregen,
|
|
102
|
+
pregenIdentifier: wallet.pregenIdentifier,
|
|
103
|
+
pregenIdentifierType: wallet.pregenIdentifierType,
|
|
104
|
+
signer: share.signer,
|
|
105
|
+
createdAt: String(wallet.createdAt)
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
} catch (err) {
|
|
110
|
+
console.warn("[performClaimPregenWallets] Failed to fetch pregen shares:", err);
|
|
111
|
+
}
|
|
112
|
+
recoverySecret = yield this.claimPregenWallets();
|
|
113
|
+
walletIds = supportedWalletTypes.reduce((acc, { type }) => {
|
|
114
|
+
const wallet = pregenWallets.find((w) => !!WalletSchemeTypeMap[w.scheme][type]);
|
|
115
|
+
if (!wallet) {
|
|
116
|
+
return acc;
|
|
117
|
+
}
|
|
118
|
+
return __spreadProps(__spreadValues({}, acc), {
|
|
119
|
+
[type]: [wallet.id]
|
|
120
|
+
});
|
|
121
|
+
}, {});
|
|
122
|
+
}
|
|
123
|
+
yield __privateGet(this, _walletService).addToCurrentWalletIds(walletIds);
|
|
124
|
+
const resp = { walletIds, recoverySecret };
|
|
125
|
+
return resp;
|
|
126
|
+
});
|
|
127
|
+
this.claimPregenWallets = (..._0) => __async(this, [..._0], function* ({ pregenId } = {}) {
|
|
128
|
+
var _a;
|
|
129
|
+
__privateGet(this, _paraCoreInterface).requireApiKey();
|
|
130
|
+
const pregenWallets = pregenId ? yield this.getPregenWallets({ pregenId }) : yield this.getPregenWallets();
|
|
131
|
+
if (pregenWallets.length === 0) {
|
|
132
|
+
return void 0;
|
|
133
|
+
}
|
|
134
|
+
const missingWallets = pregenWallets.filter((wallet) => !__privateGet(this, _walletService).wallets[wallet.id]);
|
|
135
|
+
if (missingWallets.length > 0) {
|
|
136
|
+
throw new Error(
|
|
137
|
+
`Cannot claim pregen wallets because wallet data is missing. Please call setUserShare first to load the wallet data for the following wallet IDs: ${missingWallets.map((w) => w.id).join(", ")}`
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
let newRecoverySecret;
|
|
141
|
+
const { walletIds } = yield __privateGet(this, _paraCoreInterface).ctx.client.claimPregenWallets({
|
|
142
|
+
userId: __privateGet(this, _authService).userId,
|
|
143
|
+
walletIds: pregenWallets.map((w) => w.id)
|
|
144
|
+
});
|
|
145
|
+
for (const walletId of walletIds) {
|
|
146
|
+
const wallet = __privateGet(this, _walletService).wallets[walletId];
|
|
147
|
+
let refreshedShare;
|
|
148
|
+
if (wallet.scheme === "ED25519") {
|
|
149
|
+
const distributeRes = yield distributeNewShare({
|
|
150
|
+
ctx: __privateGet(this, _paraCoreInterface).ctx,
|
|
151
|
+
userId: __privateGet(this, _authService).userId,
|
|
152
|
+
walletId: wallet.id,
|
|
153
|
+
userShare: __privateGet(this, _walletService).wallets[wallet.id].signer,
|
|
154
|
+
emailProps: __privateGet(this, _paraCoreInterface).getBackupKitEmailProps(),
|
|
155
|
+
partnerId: wallet.partnerId,
|
|
156
|
+
isEnclaveUser: __privateGet(this, _authService).isEnclaveUser,
|
|
157
|
+
walletScheme: wallet.scheme
|
|
158
|
+
});
|
|
159
|
+
if (distributeRes.length > 0) {
|
|
160
|
+
newRecoverySecret = distributeRes;
|
|
161
|
+
}
|
|
162
|
+
} else {
|
|
163
|
+
refreshedShare = yield __privateGet(this, _walletService).refreshShare({
|
|
164
|
+
walletId: wallet.id,
|
|
165
|
+
share: __privateGet(this, _walletService).wallets[wallet.id].signer,
|
|
166
|
+
oldPartnerId: wallet.partnerId,
|
|
167
|
+
newPartnerId: wallet.partnerId,
|
|
168
|
+
redistributeBackupEncryptedShares: true
|
|
169
|
+
});
|
|
170
|
+
if (refreshedShare.recoverySecret) {
|
|
171
|
+
newRecoverySecret = refreshedShare.recoverySecret;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
__privateGet(this, _walletService).wallets[wallet.id] = __spreadProps(__spreadValues({}, __privateGet(this, _walletService).wallets[wallet.id]), {
|
|
175
|
+
signer: (_a = refreshedShare == null ? void 0 : refreshedShare.signer) != null ? _a : wallet.signer,
|
|
176
|
+
userId: __privateGet(this, _authService).userId,
|
|
177
|
+
pregenIdentifier: void 0,
|
|
178
|
+
pregenIdentifierType: void 0
|
|
179
|
+
});
|
|
180
|
+
const walletNoSigner = __spreadValues({}, __privateGet(this, _walletService).wallets[wallet.id]);
|
|
181
|
+
delete walletNoSigner.signer;
|
|
182
|
+
dispatchEvent(ParaEvent.PREGEN_WALLET_CLAIMED, {
|
|
183
|
+
wallet: walletNoSigner,
|
|
184
|
+
recoverySecret: newRecoverySecret
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
yield __privateGet(this, _walletService).setWallets(__privateGet(this, _walletService).wallets);
|
|
188
|
+
return newRecoverySecret;
|
|
189
|
+
});
|
|
190
|
+
this.getPregenWallets = (..._0) => __async(this, [..._0], function* ({ pregenId } = {}) {
|
|
191
|
+
const pregenIds = pregenId ? toPregenIds(pregenId) : this.pregenIds;
|
|
192
|
+
if (!pregenIds || Object.keys(pregenIds).length === 0) {
|
|
193
|
+
return [];
|
|
194
|
+
}
|
|
195
|
+
__privateGet(this, _paraCoreInterface).requireApiKey();
|
|
196
|
+
const res = yield __privateGet(this, _paraCoreInterface).ctx.client.getPregenWallets(
|
|
197
|
+
pregenIds,
|
|
198
|
+
__privateGet(this, _paraCoreInterface).isPortal(),
|
|
199
|
+
__privateGet(this, _authService).userId
|
|
200
|
+
);
|
|
201
|
+
return res.wallets.filter((w) => __privateGet(this, _walletService).isWalletSupported(entityToWallet(w)));
|
|
202
|
+
});
|
|
203
|
+
this.populatePregenWalletAddresses = () => __async(this, null, function* () {
|
|
204
|
+
const res = yield this.getPregenWallets();
|
|
205
|
+
res.forEach((entity) => {
|
|
206
|
+
if (__privateGet(this, _walletService).wallets[entity.id]) {
|
|
207
|
+
__privateGet(this, _walletService).wallets[entity.id] = __spreadValues(__spreadValues({}, entityToWallet(entity)), __privateGet(this, _walletService).wallets[entity.id]);
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
yield __privateGet(this, _walletService).setWallets(__privateGet(this, _walletService).wallets);
|
|
211
|
+
});
|
|
212
|
+
this.createPregenWallet = (params) => __async(this, null, function* () {
|
|
213
|
+
var _a, _b;
|
|
214
|
+
const { supportedWalletTypes } = yield __privateGet(this, _paraCoreInterface).assertPartner();
|
|
215
|
+
const { type: _type = (_a = supportedWalletTypes.find(({ optional }) => !optional)) == null ? void 0 : _a.type, pregenId } = params;
|
|
216
|
+
__privateGet(this, _paraCoreInterface).requireApiKey();
|
|
217
|
+
const walletType = yield __privateGet(this, _walletService).assertIsValidWalletType(
|
|
218
|
+
_type != null ? _type : (_b = supportedWalletTypes.find(({ optional }) => !optional)) == null ? void 0 : _b.type
|
|
219
|
+
);
|
|
220
|
+
const [pregenIdentifierType, pregenIdentifier] = toPregenTypeAndId(pregenId);
|
|
221
|
+
let keygenRes;
|
|
222
|
+
switch (walletType) {
|
|
223
|
+
case "SOLANA":
|
|
224
|
+
keygenRes = yield __privateGet(this, _paraCoreInterface).platformUtils.ed25519PreKeygen(
|
|
225
|
+
__privateGet(this, _paraCoreInterface).ctx,
|
|
226
|
+
pregenIdentifier,
|
|
227
|
+
pregenIdentifierType,
|
|
228
|
+
__privateGet(this, _paraCoreInterface).retrieveSessionCookie()
|
|
229
|
+
);
|
|
230
|
+
break;
|
|
231
|
+
default:
|
|
232
|
+
keygenRes = yield __privateGet(this, _paraCoreInterface).platformUtils.preKeygen(
|
|
233
|
+
__privateGet(this, _paraCoreInterface).ctx,
|
|
234
|
+
void 0,
|
|
235
|
+
pregenIdentifier,
|
|
236
|
+
pregenIdentifierType,
|
|
237
|
+
walletType,
|
|
238
|
+
null,
|
|
239
|
+
__privateGet(this, _paraCoreInterface).retrieveSessionCookie()
|
|
240
|
+
);
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
const { signer, walletId } = keygenRes;
|
|
244
|
+
__privateGet(this, _walletService).wallets[walletId] = {
|
|
245
|
+
id: walletId,
|
|
246
|
+
signer,
|
|
247
|
+
scheme: walletType === "SOLANA" ? "ED25519" : "DKLS",
|
|
248
|
+
type: walletType,
|
|
249
|
+
isPregen: true,
|
|
250
|
+
pregenIdentifier,
|
|
251
|
+
pregenIdentifierType
|
|
252
|
+
};
|
|
253
|
+
yield __privateGet(this, _pollingService).poll({
|
|
254
|
+
checkCondition: __privateGet(this, _pollingService).waitForPregenWalletAddress({ walletId }),
|
|
255
|
+
intervalMs: SHORT_POLLING_INTERVAL_MS,
|
|
256
|
+
maxPolls: 10,
|
|
257
|
+
id: "waitForPregenWalletAddress"
|
|
258
|
+
});
|
|
259
|
+
yield this.populatePregenWalletAddresses();
|
|
260
|
+
return __privateGet(this, _walletService).wallets[walletId];
|
|
261
|
+
});
|
|
262
|
+
this.createPregenWalletPerType = (_0) => __async(this, [_0], function* ({ types, pregenId }) {
|
|
263
|
+
const wallets = [];
|
|
264
|
+
for (const type of yield __privateGet(this, _walletService).getTypesToCreate(types)) {
|
|
265
|
+
const wallet = yield this.createPregenWallet({ type, pregenId });
|
|
266
|
+
wallets.push(wallet);
|
|
267
|
+
}
|
|
268
|
+
return wallets;
|
|
269
|
+
});
|
|
270
|
+
this.updatePregenWalletIdentifier = (_0) => __async(this, [_0], function* ({ walletId, newPregenId }) {
|
|
271
|
+
__privateGet(this, _paraCoreInterface).requireApiKey();
|
|
272
|
+
const [newPregenIdentifierType, newPregenIdentifier] = toPregenTypeAndId(newPregenId);
|
|
273
|
+
yield __privateGet(this, _paraCoreInterface).ctx.client.updatePregenWallet(walletId, {
|
|
274
|
+
pregenIdentifier: newPregenIdentifier,
|
|
275
|
+
pregenIdentifierType: newPregenIdentifierType
|
|
276
|
+
});
|
|
277
|
+
if (!!__privateGet(this, _walletService).wallets[walletId]) {
|
|
278
|
+
__privateGet(this, _walletService).wallets[walletId] = __spreadProps(__spreadValues({}, __privateGet(this, _walletService).wallets[walletId]), {
|
|
279
|
+
pregenIdentifier: newPregenIdentifier,
|
|
280
|
+
pregenIdentifierType: newPregenIdentifierType
|
|
281
|
+
});
|
|
282
|
+
yield __privateGet(this, _walletService).setWallets(__privateGet(this, _walletService).wallets);
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
this.hasPregenWallet = (_0) => __async(this, [_0], function* ({ pregenId }) {
|
|
286
|
+
__privateGet(this, _paraCoreInterface).requireApiKey();
|
|
287
|
+
const [pregenIdentifierType, pregenIdentifier] = toPregenTypeAndId(pregenId);
|
|
288
|
+
const wallets = yield this.getPregenWallets({ pregenId });
|
|
289
|
+
const wallet = wallets.find(
|
|
290
|
+
(w) => w.pregenIdentifier === pregenIdentifier && w.pregenIdentifierType === pregenIdentifierType
|
|
291
|
+
);
|
|
292
|
+
if (!wallet) {
|
|
293
|
+
return false;
|
|
294
|
+
}
|
|
295
|
+
return true;
|
|
296
|
+
});
|
|
297
|
+
this.performCreateGuestWallets = () => __async(this, null, function* () {
|
|
298
|
+
let error;
|
|
299
|
+
if (__privateGet(this, _isCreateGuestWalletsPending)) {
|
|
300
|
+
error = new Error("Guest wallets creation already in progress");
|
|
301
|
+
dispatchEvent(ParaEvent.GUEST_WALLETS_CREATED, null, error.message);
|
|
302
|
+
throw error;
|
|
303
|
+
}
|
|
304
|
+
if (this.isGuestMode) {
|
|
305
|
+
error = new Error("Guest wallets already created");
|
|
306
|
+
dispatchEvent(ParaEvent.GUEST_WALLETS_CREATED, null, error.message);
|
|
307
|
+
throw error;
|
|
308
|
+
}
|
|
309
|
+
try {
|
|
310
|
+
__privateSet(this, _isCreateGuestWalletsPending, true);
|
|
311
|
+
const { supportedWalletTypes } = yield __privateGet(this, _paraCoreInterface).assertPartner();
|
|
312
|
+
const wallets = [];
|
|
313
|
+
const guestId = newUuid();
|
|
314
|
+
for (const type of yield __privateGet(this, _walletService).getTypesToCreate(
|
|
315
|
+
supportedWalletTypes.filter(({ optional }) => !optional).map(({ type: type2 }) => type2)
|
|
316
|
+
)) {
|
|
317
|
+
const wallet = yield this.createPregenWallet({ type, pregenId: { guestId } });
|
|
318
|
+
wallets.push(wallet);
|
|
319
|
+
}
|
|
320
|
+
dispatchEvent(ParaEvent.GUEST_WALLETS_CREATED, wallets);
|
|
321
|
+
__privateSet(this, _isCreateGuestWalletsPending, false);
|
|
322
|
+
return wallets;
|
|
323
|
+
} catch (error2) {
|
|
324
|
+
dispatchEvent(ParaEvent.GUEST_WALLETS_CREATED, null, error2 == null ? void 0 : error2.message);
|
|
325
|
+
__privateSet(this, _isCreateGuestWalletsPending, false);
|
|
326
|
+
throw error2;
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
this.createGuestWallets = () => __async(this, null, function* () {
|
|
330
|
+
__privateGet(this, _stateManager).send({ type: "INITIALIZE_GUEST_MODE" });
|
|
331
|
+
return yield waitForCoreStateChange({
|
|
332
|
+
stateManager: __privateGet(this, _stateManager),
|
|
333
|
+
resolvePhases: [{ phase: "guest_mode", onPhase: (state) => state.guestWallets }]
|
|
334
|
+
});
|
|
335
|
+
});
|
|
336
|
+
__privateSet(this, _paraCoreInterface, paraCore.getPregenWalletServiceInterface());
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* A map of pre-generated wallet identifiers that can be claimed in the current instance.
|
|
340
|
+
*/
|
|
341
|
+
get pregenIds() {
|
|
342
|
+
return __spreadValues({}, Object.values(__privateGet(this, _walletService).wallets).filter((wallet) => !__privateGet(this, _authService).userId || this.isPregenWalletClaimable(wallet)).reduce((acc, wallet) => {
|
|
343
|
+
var _a, _b;
|
|
344
|
+
if (((_a = acc[wallet.pregenIdentifierType]) != null ? _a : []).includes(wallet.pregenIdentifier)) {
|
|
345
|
+
return acc;
|
|
346
|
+
}
|
|
347
|
+
return __spreadProps(__spreadValues({}, acc), {
|
|
348
|
+
[wallet.pregenIdentifierType]: [
|
|
349
|
+
.../* @__PURE__ */ new Set([...(_b = acc[wallet.pregenIdentifierType]) != null ? _b : [], wallet.pregenIdentifier])
|
|
350
|
+
]
|
|
351
|
+
});
|
|
352
|
+
}, {}));
|
|
353
|
+
}
|
|
354
|
+
get guestWalletIds() {
|
|
355
|
+
var _a, _b, _c;
|
|
356
|
+
if (!((_a = __privateGet(this, _paraCoreInterface).partner) == null ? void 0 : _a.supportedWalletTypes)) {
|
|
357
|
+
return {};
|
|
358
|
+
}
|
|
359
|
+
const guestId = (_c = (_b = this.pregenIds) == null ? void 0 : _b.GUEST_ID) == null ? void 0 : _c[0];
|
|
360
|
+
return !!guestId ? Object.entries(__privateGet(this, _walletService).wallets).reduce((acc, [id, wallet]) => {
|
|
361
|
+
if (wallet.isPregen && !wallet.userId && wallet.pregenIdentifierType === "GUEST_ID" && wallet.pregenIdentifier === guestId) {
|
|
362
|
+
return __spreadValues(__spreadValues({}, acc), getEquivalentTypes(wallet.type).filter((type) => __privateGet(this, _paraCoreInterface).partner.supportedWalletTypes.some((entry) => entry.type === type)).reduce((acc2, eqType) => {
|
|
363
|
+
var _a2;
|
|
364
|
+
return __spreadProps(__spreadValues({}, acc2), { [eqType]: [.../* @__PURE__ */ new Set([...(_a2 = acc2[eqType]) != null ? _a2 : [], id])] });
|
|
365
|
+
}, {}));
|
|
366
|
+
}
|
|
367
|
+
return acc;
|
|
368
|
+
}, {}) : {};
|
|
369
|
+
}
|
|
370
|
+
get guestWalletIdsArray() {
|
|
371
|
+
return Object.entries(this.guestWalletIds).reduce((acc, [type, ids]) => {
|
|
372
|
+
return [...acc, ...ids.map((id) => [id, type])];
|
|
373
|
+
}, []);
|
|
374
|
+
}
|
|
375
|
+
get isGuestMode() {
|
|
376
|
+
return this.guestWalletIdsArray.length > 0 && Object.values(__privateGet(this, _walletService).wallets).every(
|
|
377
|
+
({ userId, partnerId }) => {
|
|
378
|
+
var _a;
|
|
379
|
+
return partnerId === ((_a = __privateGet(this, _paraCoreInterface).partner) == null ? void 0 : _a.id) && (!userId || userId !== __privateGet(this, _authService).userId);
|
|
380
|
+
}
|
|
381
|
+
);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
_stateManager = new WeakMap();
|
|
385
|
+
_authService = new WeakMap();
|
|
386
|
+
_walletService = new WeakMap();
|
|
387
|
+
_pollingService = new WeakMap();
|
|
388
|
+
_paraCoreInterface = new WeakMap();
|
|
389
|
+
_isCreateGuestWalletsPending = new WeakMap();
|
|
390
|
+
_fetchOverridePromise = new WeakMap();
|
|
391
|
+
export {
|
|
392
|
+
PregenWalletService
|
|
393
|
+
};
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__async,
|
|
3
|
+
__privateAdd,
|
|
4
|
+
__privateGet,
|
|
5
|
+
__privateSet
|
|
6
|
+
} from "../chunk-7B52C2XE.js";
|
|
7
|
+
var _authService, _portalUrlService, _walletService, _pregenWalletService, _externalWalletService, _paraCoreInterface, _isImportedSession, _regeneratePromise, _handleTouchSessionError, _doTouchSession;
|
|
8
|
+
import { currentWalletIdsEq, supportedWalletTypesEq } from "../utils/wallet.js";
|
|
9
|
+
class SessionManagementService {
|
|
10
|
+
constructor(paraCore) {
|
|
11
|
+
__privateAdd(this, _authService);
|
|
12
|
+
__privateAdd(this, _portalUrlService);
|
|
13
|
+
__privateAdd(this, _walletService);
|
|
14
|
+
__privateAdd(this, _pregenWalletService);
|
|
15
|
+
__privateAdd(this, _externalWalletService);
|
|
16
|
+
__privateAdd(this, _paraCoreInterface);
|
|
17
|
+
__privateAdd(this, _isImportedSession);
|
|
18
|
+
__privateAdd(this, _regeneratePromise);
|
|
19
|
+
this.init = ({
|
|
20
|
+
authService,
|
|
21
|
+
portalUrlService,
|
|
22
|
+
walletService,
|
|
23
|
+
externalWalletService,
|
|
24
|
+
pregenWalletService
|
|
25
|
+
}) => {
|
|
26
|
+
__privateSet(this, _authService, authService);
|
|
27
|
+
__privateSet(this, _portalUrlService, portalUrlService);
|
|
28
|
+
__privateSet(this, _walletService, walletService);
|
|
29
|
+
__privateSet(this, _externalWalletService, externalWalletService);
|
|
30
|
+
__privateSet(this, _pregenWalletService, pregenWalletService);
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Handle specific touchSession errors with user-friendly messages
|
|
34
|
+
* @private
|
|
35
|
+
*/
|
|
36
|
+
__privateAdd(this, _handleTouchSessionError, (error) => {
|
|
37
|
+
const errorStr = String(error);
|
|
38
|
+
const errorMessage = error instanceof Error ? error.message : "";
|
|
39
|
+
if (errorStr.includes("blocked by CORS policy") && errorStr.includes("Access-Control-Allow-Origin")) {
|
|
40
|
+
const message = "Request rate limit reached. Please wait a couple of minutes and try again.";
|
|
41
|
+
console.error(`[Para] ${message}`);
|
|
42
|
+
__privateGet(this, _paraCoreInterface).displayModalError(message);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (error.status === 403 && errorMessage.includes("origin not authorized")) {
|
|
46
|
+
__privateGet(this, _paraCoreInterface).displayModalError(
|
|
47
|
+
"The current origin is not allowed. Update your allowed origins in the Para developer portal to allow the current origin."
|
|
48
|
+
);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
this.touchSession = (regenerate = false) => __async(this, null, function* () {
|
|
53
|
+
if (regenerate && __privateGet(this, _regeneratePromise) !== void 0) {
|
|
54
|
+
return __privateGet(this, _regeneratePromise);
|
|
55
|
+
}
|
|
56
|
+
const promise = __privateGet(this, _doTouchSession).call(this, regenerate);
|
|
57
|
+
if (regenerate) {
|
|
58
|
+
__privateSet(this, _regeneratePromise, promise);
|
|
59
|
+
yield promise.finally(() => {
|
|
60
|
+
__privateSet(this, _regeneratePromise, void 0);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return promise;
|
|
64
|
+
});
|
|
65
|
+
__privateAdd(this, _doTouchSession, (regenerate) => __async(this, null, function* () {
|
|
66
|
+
var _a, _b;
|
|
67
|
+
if (!__privateGet(this, _paraCoreInterface).isWorkerInitialized) {
|
|
68
|
+
void __privateGet(this, _paraCoreInterface).initializeWorker();
|
|
69
|
+
}
|
|
70
|
+
let session;
|
|
71
|
+
try {
|
|
72
|
+
session = yield __privateGet(this, _paraCoreInterface).ctx.client.touchSession(regenerate);
|
|
73
|
+
} catch (error) {
|
|
74
|
+
__privateGet(this, _handleTouchSessionError).call(this, error);
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
if (!__privateGet(this, _paraCoreInterface).partner || __privateGet(this, _paraCoreInterface).partner.id !== session.partnerId || !supportedWalletTypesEq(__privateGet(this, _paraCoreInterface).partner.supportedWalletTypes || [], session.supportedWalletTypes) || (__privateGet(this, _paraCoreInterface).partner.cosmosPrefix || "cosmos") !== session.cosmosPrefix) {
|
|
78
|
+
if (!session.partnerId && !__privateGet(this, _paraCoreInterface).isPortal()) {
|
|
79
|
+
__privateGet(this, _paraCoreInterface).displayModalError(
|
|
80
|
+
`Invalid API Key. Please ensure you have a valid API key for the current environment: ${(_a = __privateGet(this, _paraCoreInterface).ctx.env) == null ? void 0 : _a.toUpperCase()}.`
|
|
81
|
+
);
|
|
82
|
+
console.error(`
|
|
83
|
+
\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
|
|
84
|
+
\u{1F6A8} PARA SDK CONFIGURATION ERROR \u{1F6A8}
|
|
85
|
+
|
|
86
|
+
INVALID API KEY FOR CONFIGURED ENVIRONMENT
|
|
87
|
+
|
|
88
|
+
Your API key does not match the configured environment. This usually means:
|
|
89
|
+
|
|
90
|
+
1. You're using a production API key with a development environment
|
|
91
|
+
2. You're using a development API key with a production environment
|
|
92
|
+
3. Your API key is invalid or has been regenerated
|
|
93
|
+
|
|
94
|
+
SOLUTION:
|
|
95
|
+
\u2022 Verify your API key at: https://developer.getpara.com
|
|
96
|
+
\u2022 If your API key doesn't contain an environment prefix, ensure your API key is the correct key for your target environment
|
|
97
|
+
|
|
98
|
+
Current Environment: ${__privateGet(this, _paraCoreInterface).ctx.env}
|
|
99
|
+
API Key Prefix: ${((_b = __privateGet(this, _paraCoreInterface).ctx.apiKey) == null ? void 0 : _b.split("_")[0].toUpperCase()) || "None"}
|
|
100
|
+
|
|
101
|
+
Need help? Visit: https://docs.getpara.com or contact support
|
|
102
|
+
\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
|
|
103
|
+
`);
|
|
104
|
+
throw new Error("Invalid API Key.");
|
|
105
|
+
} else {
|
|
106
|
+
yield __privateGet(this, _paraCoreInterface).getPartner(session.partnerId);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (session.currentWalletIds && !currentWalletIdsEq(session.currentWalletIds, __privateGet(this, _walletService).currentWalletIds)) {
|
|
110
|
+
yield __privateGet(this, _walletService).setCurrentWalletIds(session.currentWalletIds);
|
|
111
|
+
}
|
|
112
|
+
return session;
|
|
113
|
+
}));
|
|
114
|
+
this.isSessionActive = () => __async(this, null, function* () {
|
|
115
|
+
if (__privateGet(this, _externalWalletService).externalWalletConnectionType === "CONNECTION_ONLY") {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
const { isAuthenticated, verifiedExternalWalletAddresses } = yield this.touchSession();
|
|
119
|
+
if (__privateGet(this, _externalWalletService).externalWalletConnectionType === "VERIFICATION") {
|
|
120
|
+
if (!verifiedExternalWalletAddresses) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
const externalAddresses = Object.values(__privateGet(this, _externalWalletService).externalWallets).map((w) => w.id);
|
|
124
|
+
return externalAddresses.every((address) => verifiedExternalWalletAddresses.includes(address));
|
|
125
|
+
}
|
|
126
|
+
return !!isAuthenticated;
|
|
127
|
+
});
|
|
128
|
+
this.isFullyLoggedIn = () => __async(this, null, function* () {
|
|
129
|
+
if (!__privateGet(this, _paraCoreInterface).isReady) {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
if (!this.isImportedSession && __privateGet(this, _externalWalletService).externalWalletConnectionType !== "NONE") {
|
|
133
|
+
yield __privateGet(this, _externalWalletService).assertValidConnection();
|
|
134
|
+
}
|
|
135
|
+
if (__privateGet(this, _externalWalletService).externalWalletConnectionType === "CONNECTION_ONLY") {
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
if (__privateGet(this, _pregenWalletService).isGuestMode) {
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
const isSessionActive = yield this.isSessionActive();
|
|
142
|
+
if (__privateGet(this, _externalWalletService).externalWalletConnectionType === "VERIFICATION") {
|
|
143
|
+
return isSessionActive;
|
|
144
|
+
}
|
|
145
|
+
if (__privateGet(this, _paraCoreInterface).isSwitchingWallets) {
|
|
146
|
+
return isSessionActive;
|
|
147
|
+
}
|
|
148
|
+
if (!isSessionActive) {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
if (__privateGet(this, _paraCoreInterface).isNoWalletConfig) {
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
const { supportedWalletTypes } = yield __privateGet(this, _paraCoreInterface).assertPartner();
|
|
155
|
+
const requiredWalletTypes = supportedWalletTypes.filter(({ optional }) => !optional);
|
|
156
|
+
for (const { type } of requiredWalletTypes) {
|
|
157
|
+
const hasWalletForType = __privateGet(this, _walletService).currentWalletIdsArray.some(([walletId, walletType]) => {
|
|
158
|
+
try {
|
|
159
|
+
const wallet = __privateGet(this, _walletService).wallets[walletId];
|
|
160
|
+
return wallet && walletType === type && typeof wallet.address === "string";
|
|
161
|
+
} catch (e) {
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
if (!hasWalletForType) {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
const allWalletsLoaded = __privateGet(this, _walletService).currentWalletIdsArray.every(([walletId]) => {
|
|
170
|
+
const wallet = __privateGet(this, _walletService).wallets[walletId];
|
|
171
|
+
return wallet && typeof wallet.address === "string";
|
|
172
|
+
});
|
|
173
|
+
if (!allWalletsLoaded) {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
return true;
|
|
177
|
+
});
|
|
178
|
+
this.refreshSession = (..._0) => __async(this, [..._0], function* ({ shouldOpenPopup = false } = {}) {
|
|
179
|
+
const { sessionId } = yield this.touchSession(true);
|
|
180
|
+
if (!__privateGet(this, _paraCoreInterface).loginEncryptionKeyPair) {
|
|
181
|
+
yield __privateGet(this, _paraCoreInterface).setLoginEncryptionKeyPair();
|
|
182
|
+
}
|
|
183
|
+
const link = yield __privateGet(this, _portalUrlService).getLoginUrl({
|
|
184
|
+
sessionId
|
|
185
|
+
});
|
|
186
|
+
if (shouldOpenPopup) {
|
|
187
|
+
yield __privateGet(this, _paraCoreInterface).platformUtils.openPopup(link);
|
|
188
|
+
}
|
|
189
|
+
return link;
|
|
190
|
+
});
|
|
191
|
+
this.keepSessionAlive = () => __async(this, null, function* () {
|
|
192
|
+
try {
|
|
193
|
+
yield __privateGet(this, _paraCoreInterface).ctx.client.keepSessionAlive(__privateGet(this, _authService).userId);
|
|
194
|
+
return true;
|
|
195
|
+
} catch (e) {
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
this.getVerificationToken = () => __async(this, null, function* () {
|
|
200
|
+
const { sessionLookupId } = yield this.touchSession();
|
|
201
|
+
return sessionLookupId;
|
|
202
|
+
});
|
|
203
|
+
this.issueJwt = (..._0) => __async(this, [..._0], function* ({ keyIndex = 0 } = {}) {
|
|
204
|
+
try {
|
|
205
|
+
return yield __privateGet(this, _paraCoreInterface).ctx.client.issueJwt({ keyIndex });
|
|
206
|
+
} catch (error) {
|
|
207
|
+
if (error.status === 403 || error.status === 401) {
|
|
208
|
+
const errorMessage = "The user needs to be logged in to issue a JWT. Please log in and try again.";
|
|
209
|
+
__privateGet(this, _paraCoreInterface).displayModalError(errorMessage);
|
|
210
|
+
console.warn(errorMessage);
|
|
211
|
+
}
|
|
212
|
+
throw error;
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
__privateSet(this, _paraCoreInterface, paraCore.getSessionManagementServiceInterface());
|
|
216
|
+
}
|
|
217
|
+
get isImportedSession() {
|
|
218
|
+
return __privateGet(this, _isImportedSession) || false;
|
|
219
|
+
}
|
|
220
|
+
set isImportedSession(value) {
|
|
221
|
+
__privateSet(this, _isImportedSession, value);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
_authService = new WeakMap();
|
|
225
|
+
_portalUrlService = new WeakMap();
|
|
226
|
+
_walletService = new WeakMap();
|
|
227
|
+
_pregenWalletService = new WeakMap();
|
|
228
|
+
_externalWalletService = new WeakMap();
|
|
229
|
+
_paraCoreInterface = new WeakMap();
|
|
230
|
+
_isImportedSession = new WeakMap();
|
|
231
|
+
_regeneratePromise = new WeakMap();
|
|
232
|
+
_handleTouchSessionError = new WeakMap();
|
|
233
|
+
_doTouchSession = new WeakMap();
|
|
234
|
+
export {
|
|
235
|
+
SessionManagementService
|
|
236
|
+
};
|