@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.
Files changed (197) hide show
  1. package/dist/cjs/ParaCore.js +793 -2003
  2. package/dist/cjs/constants.js +4 -1
  3. package/dist/cjs/services/AuthService.js +787 -0
  4. package/dist/cjs/services/BaseAuthFlowService.js +78 -0
  5. package/dist/cjs/services/ExternalWalletService.js +386 -0
  6. package/dist/cjs/services/LoginFlowService.js +163 -0
  7. package/dist/cjs/services/PollingService.js +448 -0
  8. package/dist/cjs/services/PortalUrlService.js +379 -0
  9. package/dist/cjs/services/PregenWalletService.js +442 -0
  10. package/dist/cjs/services/SessionManagementService.js +280 -0
  11. package/dist/cjs/services/SignupFlowService.js +185 -0
  12. package/dist/cjs/services/VerificationFlowService.js +242 -0
  13. package/dist/cjs/services/WalletService.js +577 -0
  14. package/dist/cjs/services/types/AuthServiceTypes.js +15 -0
  15. package/dist/cjs/services/types/BaseAuthFlowServiceTypes.js +15 -0
  16. package/dist/cjs/services/types/ExternalWalletServiceTypes.js +15 -0
  17. package/dist/cjs/services/types/LoginFlowServiceTypes.js +15 -0
  18. package/dist/cjs/services/types/PollingServiceTypes.js +15 -0
  19. package/dist/cjs/services/types/PortalUrlServiceTypes.js +15 -0
  20. package/dist/cjs/services/types/PregenWalletServiceTypes.js +15 -0
  21. package/dist/cjs/services/types/SessionManagementServiceTypes.js +15 -0
  22. package/dist/cjs/services/types/SignupFlowServiceTypes.js +15 -0
  23. package/dist/cjs/services/types/VerificationFlowServiceTypes.js +15 -0
  24. package/dist/cjs/services/types/WalletServiceTypes.js +15 -0
  25. package/dist/cjs/services/types/index.js +15 -0
  26. package/dist/cjs/state/CoreStateManager.js +297 -0
  27. package/dist/cjs/state/actors/authenticateWithEmailOrPhone.js +50 -0
  28. package/dist/cjs/state/actors/authenticateWithExternalWallet.js +50 -0
  29. package/dist/cjs/state/actors/authenticateWithFarcaster.js +50 -0
  30. package/dist/cjs/state/actors/authenticateWithFarcasterLegacy.js +50 -0
  31. package/dist/cjs/state/actors/authenticateWithTelegram.js +50 -0
  32. package/dist/cjs/state/actors/authenticateWithTelegramLegacy.js +50 -0
  33. package/dist/cjs/state/actors/checkUserState.js +53 -0
  34. package/dist/cjs/state/actors/claimWallets.js +56 -0
  35. package/dist/cjs/state/actors/connectExternalConnectors.js +54 -0
  36. package/dist/cjs/state/actors/connectExternalWallet.js +50 -0
  37. package/dist/cjs/state/actors/createGuestWallets.js +50 -0
  38. package/dist/cjs/state/actors/createWallets.js +73 -0
  39. package/dist/cjs/state/actors/polling.js +91 -0
  40. package/dist/cjs/state/actors/processAuthentication.js +50 -0
  41. package/dist/cjs/state/actors/setupAfterLogin.js +52 -0
  42. package/dist/cjs/state/actors/setupPara.js +50 -0
  43. package/dist/cjs/state/actors/signExternalWalletVerification.js +79 -0
  44. package/dist/cjs/state/actors/switchExternalWallet.js +50 -0
  45. package/dist/cjs/state/actors/verifyExternalWallet.js +50 -0
  46. package/dist/cjs/state/actors/verifyNewAccount.js +50 -0
  47. package/dist/cjs/state/actors/waitForExternalWalletProviders.js +54 -0
  48. package/dist/cjs/state/machines/authStateMachine.helpers.js +137 -0
  49. package/dist/cjs/state/machines/authStateMachine.js +1084 -0
  50. package/dist/cjs/state/machines/coreStateMachine.js +383 -0
  51. package/dist/cjs/state/machines/walletStateMachine.js +437 -0
  52. package/dist/cjs/state/types/auth.js +15 -0
  53. package/dist/cjs/state/types/core.js +15 -0
  54. package/dist/cjs/state/types/wallet.js +15 -0
  55. package/dist/cjs/types/{auth.js → accountLinking.js} +3 -3
  56. package/dist/cjs/types/authState.js +15 -0
  57. package/dist/cjs/types/coreApi.js +3 -1
  58. package/dist/cjs/types/index.js +2 -2
  59. package/dist/cjs/types/serviceInterfaces.js +15 -0
  60. package/dist/cjs/types/util.js +15 -0
  61. package/dist/cjs/utils/formatting.js +6 -0
  62. package/dist/cjs/utils/retryBackoff.js +30 -0
  63. package/dist/cjs/utils/stateErrorHelpers.js +60 -0
  64. package/dist/cjs/utils/stateListener.js +129 -0
  65. package/dist/esm/ParaCore.js +796 -2031
  66. package/dist/esm/constants.js +3 -1
  67. package/dist/esm/services/AuthService.js +717 -0
  68. package/dist/esm/services/BaseAuthFlowService.js +25 -0
  69. package/dist/esm/services/ExternalWalletService.js +327 -0
  70. package/dist/esm/services/LoginFlowService.js +97 -0
  71. package/dist/esm/services/PollingService.js +389 -0
  72. package/dist/esm/services/PortalUrlService.js +320 -0
  73. package/dist/esm/services/PregenWalletService.js +393 -0
  74. package/dist/esm/services/SessionManagementService.js +236 -0
  75. package/dist/esm/services/SignupFlowService.js +119 -0
  76. package/dist/esm/services/VerificationFlowService.js +178 -0
  77. package/dist/esm/services/WalletService.js +514 -0
  78. package/dist/esm/services/types/AuthServiceTypes.js +0 -0
  79. package/dist/esm/services/types/BaseAuthFlowServiceTypes.js +0 -0
  80. package/dist/esm/services/types/ExternalWalletServiceTypes.js +0 -0
  81. package/dist/esm/services/types/LoginFlowServiceTypes.js +0 -0
  82. package/dist/esm/services/types/PollingServiceTypes.js +0 -0
  83. package/dist/esm/services/types/PortalUrlServiceTypes.js +0 -0
  84. package/dist/esm/services/types/PregenWalletServiceTypes.js +0 -0
  85. package/dist/esm/services/types/SessionManagementServiceTypes.js +0 -0
  86. package/dist/esm/services/types/SignupFlowServiceTypes.js +0 -0
  87. package/dist/esm/services/types/VerificationFlowServiceTypes.js +0 -0
  88. package/dist/esm/services/types/WalletServiceTypes.js +0 -0
  89. package/dist/esm/services/types/index.js +0 -0
  90. package/dist/esm/state/CoreStateManager.js +261 -0
  91. package/dist/esm/state/actors/authenticateWithEmailOrPhone.js +10 -0
  92. package/dist/esm/state/actors/authenticateWithExternalWallet.js +10 -0
  93. package/dist/esm/state/actors/authenticateWithFarcaster.js +10 -0
  94. package/dist/esm/state/actors/authenticateWithFarcasterLegacy.js +10 -0
  95. package/dist/esm/state/actors/authenticateWithTelegram.js +10 -0
  96. package/dist/esm/state/actors/authenticateWithTelegramLegacy.js +10 -0
  97. package/dist/esm/state/actors/checkUserState.js +13 -0
  98. package/dist/esm/state/actors/claimWallets.js +16 -0
  99. package/dist/esm/state/actors/connectExternalConnectors.js +14 -0
  100. package/dist/esm/state/actors/connectExternalWallet.js +10 -0
  101. package/dist/esm/state/actors/createGuestWallets.js +10 -0
  102. package/dist/esm/state/actors/createWallets.js +20 -0
  103. package/dist/esm/state/actors/polling.js +55 -0
  104. package/dist/esm/state/actors/processAuthentication.js +10 -0
  105. package/dist/esm/state/actors/setupAfterLogin.js +12 -0
  106. package/dist/esm/state/actors/setupPara.js +10 -0
  107. package/dist/esm/state/actors/signExternalWalletVerification.js +15 -0
  108. package/dist/esm/state/actors/switchExternalWallet.js +10 -0
  109. package/dist/esm/state/actors/verifyExternalWallet.js +10 -0
  110. package/dist/esm/state/actors/verifyNewAccount.js +10 -0
  111. package/dist/esm/state/actors/waitForExternalWalletProviders.js +14 -0
  112. package/dist/esm/state/machines/authStateMachine.helpers.js +92 -0
  113. package/dist/esm/state/machines/authStateMachine.js +1039 -0
  114. package/dist/esm/state/machines/coreStateMachine.js +343 -0
  115. package/dist/esm/state/machines/walletStateMachine.js +382 -0
  116. package/dist/esm/state/types/auth.js +0 -0
  117. package/dist/esm/state/types/core.js +0 -0
  118. package/dist/esm/state/types/wallet.js +0 -0
  119. package/dist/esm/types/authState.js +0 -0
  120. package/dist/esm/types/coreApi.js +3 -1
  121. package/dist/esm/types/index.js +1 -1
  122. package/dist/esm/types/serviceInterfaces.js +0 -0
  123. package/dist/esm/types/util.js +0 -0
  124. package/dist/esm/utils/formatting.js +6 -0
  125. package/dist/esm/utils/retryBackoff.js +7 -0
  126. package/dist/esm/utils/stateErrorHelpers.js +37 -0
  127. package/dist/esm/utils/stateListener.js +106 -0
  128. package/dist/types/ParaCore.d.ts +190 -119
  129. package/dist/types/PlatformUtils.d.ts +23 -0
  130. package/dist/types/constants.d.ts +1 -0
  131. package/dist/types/index.d.ts +4 -2
  132. package/dist/types/services/AuthService.d.ts +72 -0
  133. package/dist/types/services/BaseAuthFlowService.d.ts +28 -0
  134. package/dist/types/services/ExternalWalletService.d.ts +44 -0
  135. package/dist/types/services/LoginFlowService.d.ts +9 -0
  136. package/dist/types/services/PollingService.d.ts +35 -0
  137. package/dist/types/services/PortalUrlService.d.ts +26 -0
  138. package/dist/types/services/PregenWalletService.d.ts +38 -0
  139. package/dist/types/services/SessionManagementService.d.ts +28 -0
  140. package/dist/types/services/SignupFlowService.d.ts +10 -0
  141. package/dist/types/services/VerificationFlowService.d.ts +17 -0
  142. package/dist/types/services/WalletService.d.ts +54 -0
  143. package/dist/types/services/types/AuthServiceTypes.d.ts +147 -0
  144. package/dist/types/services/types/BaseAuthFlowServiceTypes.d.ts +4 -0
  145. package/dist/types/services/types/ExternalWalletServiceTypes.d.ts +67 -0
  146. package/dist/types/services/types/LoginFlowServiceTypes.d.ts +19 -0
  147. package/dist/types/services/types/PollingServiceTypes.d.ts +82 -0
  148. package/dist/types/services/types/PortalUrlServiceTypes.d.ts +46 -0
  149. package/dist/types/services/types/PregenWalletServiceTypes.d.ts +73 -0
  150. package/dist/types/services/types/SessionManagementServiceTypes.d.ts +27 -0
  151. package/dist/types/services/types/SignupFlowServiceTypes.d.ts +18 -0
  152. package/dist/types/services/types/VerificationFlowServiceTypes.d.ts +90 -0
  153. package/dist/types/services/types/WalletServiceTypes.d.ts +109 -0
  154. package/dist/types/services/types/index.d.ts +11 -0
  155. package/dist/types/state/CoreStateManager.d.ts +36 -0
  156. package/dist/types/state/actors/authenticateWithEmailOrPhone.d.ts +8 -0
  157. package/dist/types/state/actors/authenticateWithExternalWallet.d.ts +8 -0
  158. package/dist/types/state/actors/authenticateWithFarcaster.d.ts +3 -0
  159. package/dist/types/state/actors/authenticateWithFarcasterLegacy.d.ts +3 -0
  160. package/dist/types/state/actors/authenticateWithTelegram.d.ts +3 -0
  161. package/dist/types/state/actors/authenticateWithTelegramLegacy.d.ts +8 -0
  162. package/dist/types/state/actors/checkUserState.d.ts +6 -0
  163. package/dist/types/state/actors/claimWallets.d.ts +8 -0
  164. package/dist/types/state/actors/connectExternalConnectors.d.ts +4 -0
  165. package/dist/types/state/actors/connectExternalWallet.d.ts +3 -0
  166. package/dist/types/state/actors/createGuestWallets.d.ts +3 -0
  167. package/dist/types/state/actors/createWallets.d.ts +10 -0
  168. package/dist/types/state/actors/polling.d.ts +3 -0
  169. package/dist/types/state/actors/processAuthentication.d.ts +10 -0
  170. package/dist/types/state/actors/setupAfterLogin.d.ts +5 -0
  171. package/dist/types/state/actors/setupPara.d.ts +2 -0
  172. package/dist/types/state/actors/signExternalWalletVerification.d.ts +7 -0
  173. package/dist/types/state/actors/switchExternalWallet.d.ts +3 -0
  174. package/dist/types/state/actors/verifyExternalWallet.d.ts +8 -0
  175. package/dist/types/state/actors/verifyNewAccount.d.ts +8 -0
  176. package/dist/types/state/actors/waitForExternalWalletProviders.d.ts +2 -0
  177. package/dist/types/state/machines/authStateMachine.d.ts +2570 -0
  178. package/dist/types/state/machines/authStateMachine.helpers.d.ts +57 -0
  179. package/dist/types/state/machines/coreStateMachine.d.ts +22033 -0
  180. package/dist/types/state/machines/walletStateMachine.d.ts +1049 -0
  181. package/dist/types/state/types/auth.d.ts +113 -0
  182. package/dist/types/state/types/core.d.ts +114 -0
  183. package/dist/types/state/types/wallet.d.ts +76 -0
  184. package/dist/types/types/authState.d.ts +66 -0
  185. package/dist/types/types/config.d.ts +5 -0
  186. package/dist/types/types/coreApi.d.ts +148 -298
  187. package/dist/types/types/index.d.ts +3 -1
  188. package/dist/types/types/methods.d.ts +1 -191
  189. package/dist/types/types/serviceInterfaces.d.ts +125 -0
  190. package/dist/types/types/util.d.ts +43 -0
  191. package/dist/types/types/wallet.d.ts +3 -1
  192. package/dist/types/utils/retryBackoff.d.ts +2 -0
  193. package/dist/types/utils/stateErrorHelpers.d.ts +2 -0
  194. package/dist/types/utils/stateListener.d.ts +47 -0
  195. package/package.json +5 -4
  196. /package/dist/esm/types/{auth.js → accountLinking.js} +0 -0
  197. /package/dist/types/types/{auth.d.ts → accountLinking.d.ts} +0 -0
@@ -0,0 +1,78 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __export = (target, all) => {
20
+ for (var name in all)
21
+ __defProp(target, name, { get: all[name], enumerable: true });
22
+ };
23
+ var __copyProps = (to, from, except, desc) => {
24
+ if (from && typeof from === "object" || typeof from === "function") {
25
+ for (let key of __getOwnPropNames(from))
26
+ if (!__hasOwnProp.call(to, key) && key !== except)
27
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
28
+ }
29
+ return to;
30
+ };
31
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
+ var __async = (__this, __arguments, generator) => {
33
+ return new Promise((resolve, reject) => {
34
+ var fulfilled = (value) => {
35
+ try {
36
+ step(generator.next(value));
37
+ } catch (e) {
38
+ reject(e);
39
+ }
40
+ };
41
+ var rejected = (value) => {
42
+ try {
43
+ step(generator.throw(value));
44
+ } catch (e) {
45
+ reject(e);
46
+ }
47
+ };
48
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
49
+ step((generator = generator.apply(__this, __arguments)).next());
50
+ });
51
+ };
52
+ var BaseAuthFlowService_exports = {};
53
+ __export(BaseAuthFlowService_exports, {
54
+ BaseAuthFlowService: () => BaseAuthFlowService
55
+ });
56
+ module.exports = __toCommonJS(BaseAuthFlowService_exports);
57
+ var import_user_management_client = require("@getpara/user-management-client");
58
+ class BaseAuthFlowService {
59
+ constructor(paraCoreInterface, stateManager, services) {
60
+ this.paraCoreInterface = paraCoreInterface;
61
+ this.stateManager = stateManager;
62
+ this.services = services;
63
+ // Shared auth setup from server state
64
+ this.setupAuthFromServerState = (serverAuthState) => __async(this, null, function* () {
65
+ const { auth, userId, displayName, pfpUrl, username, externalWallet } = serverAuthState;
66
+ const authInfo = __spreadValues(__spreadValues({}, (0, import_user_management_client.extractAuthInfo)(auth, { isRequired: true })), Object.fromEntries(Object.entries({ displayName, pfpUrl, username, externalWallet }).filter(([_, v]) => !!v)));
67
+ yield this.services.authService.setAuthInfo(authInfo);
68
+ this.services.authService.assertIsAuthSet();
69
+ if (userId) {
70
+ yield this.services.authService.setUserId(userId);
71
+ }
72
+ });
73
+ }
74
+ }
75
+ // Annotate the CommonJS export names for ESM import in node:
76
+ 0 && (module.exports = {
77
+ BaseAuthFlowService
78
+ });
@@ -0,0 +1,386 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __typeError = (msg) => {
10
+ throw TypeError(msg);
11
+ };
12
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
13
+ var __spreadValues = (a, b) => {
14
+ for (var prop in b || (b = {}))
15
+ if (__hasOwnProp.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ if (__getOwnPropSymbols)
18
+ for (var prop of __getOwnPropSymbols(b)) {
19
+ if (__propIsEnum.call(b, prop))
20
+ __defNormalProp(a, prop, b[prop]);
21
+ }
22
+ return a;
23
+ };
24
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
25
+ var __export = (target, all) => {
26
+ for (var name in all)
27
+ __defProp(target, name, { get: all[name], enumerable: true });
28
+ };
29
+ var __copyProps = (to, from, except, desc) => {
30
+ if (from && typeof from === "object" || typeof from === "function") {
31
+ for (let key of __getOwnPropNames(from))
32
+ if (!__hasOwnProp.call(to, key) && key !== except)
33
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
34
+ }
35
+ return to;
36
+ };
37
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
38
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
39
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
40
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
41
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
42
+ var __async = (__this, __arguments, generator) => {
43
+ return new Promise((resolve, reject) => {
44
+ var fulfilled = (value) => {
45
+ try {
46
+ step(generator.next(value));
47
+ } catch (e) {
48
+ reject(e);
49
+ }
50
+ };
51
+ var rejected = (value) => {
52
+ try {
53
+ step(generator.throw(value));
54
+ } catch (e) {
55
+ reject(e);
56
+ }
57
+ };
58
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
59
+ step((generator = generator.apply(__this, __arguments)).next());
60
+ });
61
+ };
62
+ var ExternalWalletService_exports = {};
63
+ __export(ExternalWalletService_exports, {
64
+ ExternalWalletService: () => ExternalWalletService
65
+ });
66
+ module.exports = __toCommonJS(ExternalWalletService_exports);
67
+ var import_events = require("../types/events.js");
68
+ var import_constants = require("../constants.js");
69
+ var import_utils = require("../utils/index.js");
70
+ var _stateManager, _authService, _walletService, _paraCoreInterface, _externalWallets, _watchedProviders, _onWalletDisconnected;
71
+ class ExternalWalletService {
72
+ constructor(paraCore) {
73
+ __privateAdd(this, _stateManager);
74
+ __privateAdd(this, _authService);
75
+ __privateAdd(this, _walletService);
76
+ __privateAdd(this, _paraCoreInterface);
77
+ __privateAdd(this, _externalWallets, {});
78
+ __privateAdd(this, _watchedProviders, /* @__PURE__ */ new Set());
79
+ this.externalWalletProviderInterfaces = {};
80
+ this.init = ({
81
+ authService,
82
+ walletService,
83
+ stateManager
84
+ }) => {
85
+ __privateSet(this, _walletService, walletService);
86
+ __privateSet(this, _authService, authService);
87
+ __privateSet(this, _stateManager, stateManager);
88
+ };
89
+ this.initExternalWalletProvider = (_0) => __async(this, [_0], function* ({ type, interface: providerInterface }) {
90
+ this.externalWalletProviderInterfaces[type] = providerInterface;
91
+ });
92
+ this.waitForProvidersLoading = () => __async(this, null, function* () {
93
+ const storedWalletTypes = new Set(Object.values(this.externalWallets).map((wallet) => wallet.type));
94
+ if (storedWalletTypes.size === 0) {
95
+ return true;
96
+ }
97
+ for (let i = 0; i < 20; i++) {
98
+ const neededProviderInterfaces = Array.from(storedWalletTypes).map((type) => ({
99
+ type,
100
+ interface: this.externalWalletProviderInterfaces[type]
101
+ })).filter(({ interface: providerInterface }) => !!providerInterface);
102
+ if (neededProviderInterfaces.length !== storedWalletTypes.size) {
103
+ yield new Promise((resolve) => setTimeout(resolve, 100));
104
+ continue;
105
+ }
106
+ const loadingResults = yield Promise.all(
107
+ neededProviderInterfaces.map((_0) => __async(this, [_0], function* ({ type, interface: providerInterface }) {
108
+ try {
109
+ const providerAddresses = yield providerInterface.getAddress();
110
+ const storedAddressesForType = Object.values(this.externalWallets).filter((wallet) => wallet.type === type).map((wallet) => Object.keys(this.externalWallets).find((addr) => this.externalWallets[addr] === wallet)).filter(Boolean);
111
+ const allAddressesAvailable = storedAddressesForType.every((addr) => providerAddresses.includes(addr));
112
+ return allAddressesAvailable;
113
+ } catch (error) {
114
+ console.warn(`Error checking provider ${type}:`, error);
115
+ return false;
116
+ }
117
+ }))
118
+ );
119
+ if (loadingResults.every((result) => result === true)) {
120
+ neededProviderInterfaces.forEach(({ type, interface: providerInterface }) => {
121
+ if (!__privateGet(this, _watchedProviders).has(type)) {
122
+ __privateGet(this, _watchedProviders).add(type);
123
+ providerInterface.watchDisconnection(() => __async(this, null, function* () {
124
+ yield __privateGet(this, _onWalletDisconnected).call(this);
125
+ }));
126
+ providerInterface.watchWalletChange((params) => __async(this, null, function* () {
127
+ yield this.switchExternalWallet(params);
128
+ }));
129
+ }
130
+ });
131
+ return true;
132
+ }
133
+ yield new Promise((resolve) => setTimeout(resolve, 100));
134
+ }
135
+ return false;
136
+ });
137
+ this.assertValidConnection = () => __async(this, null, function* () {
138
+ if (__privateGet(this, _stateManager).getSnapshot().authStatePhase === "switching_external_wallet") {
139
+ return;
140
+ }
141
+ if (this.externalWalletConnectionType === "NONE") {
142
+ return;
143
+ }
144
+ const connectedAddresses = (yield Promise.all(
145
+ Object.values(this.externalWalletProviderInterfaces).map((providerInterface) => __async(this, null, function* () {
146
+ return yield providerInterface.getAddress();
147
+ }))
148
+ )).filter((a) => !!a);
149
+ const storedExternalWalletAddresses = Object.keys(this.externalWallets);
150
+ const someConnectedHaveStoredWallets = connectedAddresses.some(
151
+ (connectedAddress) => connectedAddress && this.externalWallets[connectedAddress]
152
+ );
153
+ const allStoredWalletsAreConnected = storedExternalWalletAddresses.every(
154
+ (storedAddress) => connectedAddresses.includes(storedAddress)
155
+ );
156
+ const validConnection = someConnectedHaveStoredWallets && allStoredWalletsAreConnected;
157
+ if (!validConnection) {
158
+ yield __privateGet(this, _paraCoreInterface).logout();
159
+ }
160
+ });
161
+ /**
162
+ * Function to perform signing a message with an external wallet
163
+ */
164
+ this.signMessage = (_0) => __async(this, [_0], function* ({ type, message, address }) {
165
+ const providerInterface = this.externalWalletProviderInterfaces[type];
166
+ if (!providerInterface) {
167
+ throw new Error(`External wallet provider interface for type ${type} is not initialized.`);
168
+ }
169
+ const signature = yield providerInterface.signMessage({ message, address });
170
+ return __spreadValues({ address }, signature);
171
+ });
172
+ this.connectParaConnectors = () => __async(this, null, function* () {
173
+ const types = Array.from(new Set(Object.values(__privateGet(this, _walletService).wallets).map((w) => w.type)));
174
+ for (const type of types) {
175
+ const providerInterface = this.externalWalletProviderInterfaces[type];
176
+ if (!providerInterface) {
177
+ console.error(
178
+ `External wallet provider interface for type ${type} is not initialized. Para connector will not be connected.`
179
+ );
180
+ continue;
181
+ }
182
+ try {
183
+ yield providerInterface.connectParaConnector();
184
+ } catch (e) {
185
+ }
186
+ }
187
+ });
188
+ this.performSwitchExternalWallet = (params) => __async(this, null, function* () {
189
+ if (this.externalWalletConnectionType !== "CONNECTION_ONLY") {
190
+ throw new Error("Cannot switch external wallets when using Para authentication or wallet verification.");
191
+ }
192
+ try {
193
+ const partner = yield __privateGet(this, _paraCoreInterface).assertPartner();
194
+ const loginResp = yield __privateGet(this, _authService).performLoginExternalWallet({
195
+ externalWallet: __spreadProps(__spreadValues({}, params.externalWallet), {
196
+ partnerId: partner.id,
197
+ withFullParaAuth: false,
198
+ withVerification: false
199
+ })
200
+ });
201
+ if (loginResp.authState.stage !== "done" && loginResp.authState.stage !== "verify") {
202
+ throw new Error("External wallet switch did not complete successfully.");
203
+ }
204
+ yield this.setExternalWallet({ externalWallet: [loginResp.authState.externalWallet] });
205
+ return { externalWallet: loginResp.authState.externalWallet };
206
+ } catch (error) {
207
+ console.error("Error during external wallet switch login:", error);
208
+ throw error;
209
+ }
210
+ });
211
+ this.switchExternalWallet = (params) => __async(this, null, function* () {
212
+ if (__privateGet(this, _externalWallets)[params.externalWallet.address]) {
213
+ return;
214
+ }
215
+ __privateGet(this, _stateManager).send({ type: "SWITCH_EXTERNAL_WALLET", data: params });
216
+ });
217
+ __privateAdd(this, _onWalletDisconnected, () => __async(this, null, function* () {
218
+ if (this.externalWalletConnectionType === "NONE") {
219
+ return;
220
+ }
221
+ yield __privateGet(this, _paraCoreInterface).logout();
222
+ }));
223
+ /**
224
+ * Function to perform connecting an external wallet
225
+ */
226
+ this.performConnectExternalWallet = (_0) => __async(this, [_0], function* ({ connect }) {
227
+ const connectResp = yield connect();
228
+ const providerInterface = this.externalWalletProviderInterfaces[connectResp.externalWallet.type];
229
+ if (!providerInterface) {
230
+ throw new Error(`External wallet provider interface for type ${connectResp.externalWallet.type} is not initialized.`);
231
+ }
232
+ if (!__privateGet(this, _watchedProviders).has(connectResp.externalWallet.type)) {
233
+ __privateGet(this, _watchedProviders).add(connectResp.externalWallet.type);
234
+ providerInterface.watchDisconnection(() => __async(this, null, function* () {
235
+ yield __privateGet(this, _onWalletDisconnected).call(this);
236
+ }));
237
+ providerInterface.watchWalletChange((params) => __async(this, null, function* () {
238
+ yield this.switchExternalWallet(params);
239
+ }));
240
+ }
241
+ return connectResp;
242
+ });
243
+ this.disconnectExternalWallet = (type) => __async(this, null, function* () {
244
+ const providerInterface = this.externalWalletProviderInterfaces[type];
245
+ if (!providerInterface) {
246
+ throw new Error(`External wallet provider interface for type ${type} is not initialized.`);
247
+ }
248
+ return yield providerInterface.disconnect();
249
+ });
250
+ this.disconnectAllExternalWallets = () => __async(this, null, function* () {
251
+ const disconnectPromises = Object.values(this.externalWalletProviderInterfaces).map(
252
+ (providerInterface) => providerInterface.disconnect()
253
+ );
254
+ yield Promise.all(disconnectPromises);
255
+ __privateGet(this, _watchedProviders).clear();
256
+ });
257
+ this.setExternalWallet = (_0) => __async(this, [_0], function* ({ externalWallet }) {
258
+ const { id: partnerId, supportedWalletTypes } = yield __privateGet(this, _paraCoreInterface).assertPartner();
259
+ this.externalWallets = (Array.isArray(externalWallet) ? externalWallet : [externalWallet]).reduce(
260
+ (acc, {
261
+ partnerId: wPartnerId,
262
+ address,
263
+ type,
264
+ provider,
265
+ providerId,
266
+ addressBech32,
267
+ withFullParaAuth,
268
+ isConnectionOnly,
269
+ withVerification
270
+ }) => {
271
+ if (partnerId === wPartnerId && supportedWalletTypes.some(({ type: supportedType }) => supportedType === type)) {
272
+ return __spreadProps(__spreadValues({}, acc), {
273
+ [address]: {
274
+ id: address,
275
+ partnerId,
276
+ address: addressBech32 != null ? addressBech32 : address,
277
+ type,
278
+ name: provider,
279
+ isExternal: true,
280
+ isExternalWithParaAuth: withFullParaAuth,
281
+ externalProviderId: providerId,
282
+ signer: "",
283
+ isExternalConnectionOnly: isConnectionOnly,
284
+ isExternalWithVerification: withVerification
285
+ }
286
+ });
287
+ } else {
288
+ if (partnerId !== wPartnerId) {
289
+ throw new Error(`Partner ID on the wallet does not match the current partner.`);
290
+ }
291
+ console.warn(
292
+ `External wallet with address ${address} and type ${type} is not supported by the current partner, skipping this wallet. Supported wallet types are: ${supportedWalletTypes.map(({ type: supportedType }) => supportedType).join(", ")}`
293
+ );
294
+ }
295
+ return acc;
296
+ },
297
+ {}
298
+ );
299
+ yield this.setExternalWallets({ externalWallets: this.externalWallets });
300
+ (0, import_utils.dispatchEvent)(import_events.ParaEvent.EXTERNAL_WALLET_CHANGE_EVENT, null);
301
+ });
302
+ this.setExternalWallets = (_0) => __async(this, [_0], function* ({ externalWallets }) {
303
+ if (typeof externalWallets === "function") {
304
+ this.externalWallets = externalWallets(this.externalWallets);
305
+ } else {
306
+ this.externalWallets = externalWallets;
307
+ }
308
+ yield __privateGet(this, _paraCoreInterface).localStorageSetItem(import_constants.LOCAL_STORAGE_EXTERNAL_WALLETS, JSON.stringify(this.externalWallets));
309
+ });
310
+ this.addExternalWallets = (_0) => __async(this, [_0], function* ({ externalWallets }) {
311
+ const { id: partnerId, supportedWalletTypes } = yield __privateGet(this, _paraCoreInterface).assertPartner();
312
+ this.externalWallets = __spreadValues(__spreadValues({}, Object.entries(this.externalWallets).reduce((acc, [address, wallet]) => {
313
+ if (partnerId === wallet.partnerId && supportedWalletTypes.some(({ type }) => type === wallet.type)) {
314
+ return __spreadProps(__spreadValues({}, acc), {
315
+ [address]: wallet
316
+ });
317
+ }
318
+ return acc;
319
+ }, {})), externalWallets.reduce(
320
+ (acc, { address, type, provider, providerId, addressBech32, withFullParaAuth, isConnectionOnly, withVerification }) => {
321
+ return __spreadProps(__spreadValues({}, acc), {
322
+ [address]: {
323
+ id: address,
324
+ partnerId,
325
+ address: addressBech32 != null ? addressBech32 : address,
326
+ type,
327
+ name: provider,
328
+ isExternal: true,
329
+ isExternalWithParaAuth: withFullParaAuth,
330
+ externalProviderId: providerId,
331
+ signer: "",
332
+ isExternalConnectionOnly: isConnectionOnly,
333
+ isExternalWithVerification: withVerification
334
+ }
335
+ });
336
+ },
337
+ {}
338
+ ));
339
+ this.setExternalWallets({ externalWallets: this.externalWallets });
340
+ (0, import_utils.dispatchEvent)(import_events.ParaEvent.EXTERNAL_WALLET_CHANGE_EVENT, null);
341
+ });
342
+ __privateSet(this, _paraCoreInterface, paraCore.getExternalWalletServiceInterface());
343
+ }
344
+ get externalWalletWithParaAuth() {
345
+ const externalWallets = Object.values(this.externalWallets);
346
+ return externalWallets.find((w) => w.isExternalWithParaAuth);
347
+ }
348
+ get externalWallets() {
349
+ return __privateGet(this, _externalWallets);
350
+ }
351
+ set externalWallets(value) {
352
+ __privateSet(this, _externalWallets, value);
353
+ }
354
+ get externalWalletConnectionType() {
355
+ var _a, _b, _c;
356
+ if ((_a = __privateGet(this, _authService)) == null ? void 0 : _a.isExternalWalletAuth) {
357
+ return "AUTHENTICATED";
358
+ } else if ((_b = __privateGet(this, _authService)) == null ? void 0 : _b.isExternalWalletWithVerification) {
359
+ return "VERIFICATION";
360
+ } else if (!!Object.keys(this.externalWallets).length) {
361
+ const hasEmbeddedWallets = Object.keys((_c = __privateGet(this, _walletService)) == null ? void 0 : _c.wallets).some(
362
+ (id) => {
363
+ var _a2;
364
+ return !((_a2 = __privateGet(this, _walletService)) == null ? void 0 : _a2.wallets[id].isExternal);
365
+ }
366
+ );
367
+ if (hasEmbeddedWallets) {
368
+ return "NONE";
369
+ } else {
370
+ return "CONNECTION_ONLY";
371
+ }
372
+ }
373
+ return "NONE";
374
+ }
375
+ }
376
+ _stateManager = new WeakMap();
377
+ _authService = new WeakMap();
378
+ _walletService = new WeakMap();
379
+ _paraCoreInterface = new WeakMap();
380
+ _externalWallets = new WeakMap();
381
+ _watchedProviders = new WeakMap();
382
+ _onWalletDisconnected = new WeakMap();
383
+ // Annotate the CommonJS export names for ESM import in node:
384
+ 0 && (module.exports = {
385
+ ExternalWalletService
386
+ });
@@ -0,0 +1,163 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
22
+ var __objRest = (source, exclude) => {
23
+ var target = {};
24
+ for (var prop in source)
25
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
26
+ target[prop] = source[prop];
27
+ if (source != null && __getOwnPropSymbols)
28
+ for (var prop of __getOwnPropSymbols(source)) {
29
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
30
+ target[prop] = source[prop];
31
+ }
32
+ return target;
33
+ };
34
+ var __export = (target, all) => {
35
+ for (var name in all)
36
+ __defProp(target, name, { get: all[name], enumerable: true });
37
+ };
38
+ var __copyProps = (to, from, except, desc) => {
39
+ if (from && typeof from === "object" || typeof from === "function") {
40
+ for (let key of __getOwnPropNames(from))
41
+ if (!__hasOwnProp.call(to, key) && key !== except)
42
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
43
+ }
44
+ return to;
45
+ };
46
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
47
+ var __async = (__this, __arguments, generator) => {
48
+ return new Promise((resolve, reject) => {
49
+ var fulfilled = (value) => {
50
+ try {
51
+ step(generator.next(value));
52
+ } catch (e) {
53
+ reject(e);
54
+ }
55
+ };
56
+ var rejected = (value) => {
57
+ try {
58
+ step(generator.throw(value));
59
+ } catch (e) {
60
+ reject(e);
61
+ }
62
+ };
63
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
64
+ step((generator = generator.apply(__this, __arguments)).next());
65
+ });
66
+ };
67
+ var LoginFlowService_exports = {};
68
+ __export(LoginFlowService_exports, {
69
+ LoginFlowService: () => LoginFlowService
70
+ });
71
+ module.exports = __toCommonJS(LoginFlowService_exports);
72
+ var import_user_management_client = require("@getpara/user-management-client");
73
+ var import_BaseAuthFlowService = require("./BaseAuthFlowService.js");
74
+ var import_utils = require("../cryptography/utils.js");
75
+ var import_events = require("../types/events.js");
76
+ var import_utils2 = require("../utils/index.js");
77
+ var import_stateListener = require("../utils/stateListener.js");
78
+ class LoginFlowService extends import_BaseAuthFlowService.BaseAuthFlowService {
79
+ constructor() {
80
+ super(...arguments);
81
+ this.prepareState = (serverAuthState, opts) => __async(this, null, function* () {
82
+ var _a, _b;
83
+ if (!opts.sessionLookupId && (!serverAuthState.externalWallet || !(((_a = serverAuthState.externalWallet) == null ? void 0 : _a.withFullParaAuth) && ((_b = serverAuthState.loginAuthMethods) == null ? void 0 : _b.includes(import_user_management_client.AuthMethod.PIN))))) {
84
+ opts.sessionLookupId = yield this.services.authService.prepareLogin();
85
+ }
86
+ yield this.setupAuthFromServerState(serverAuthState);
87
+ const _c = serverAuthState, { loginAuthMethods = [], hasPasswordWithoutPIN } = _c, authState = __objRest(_c, ["loginAuthMethods", "hasPasswordWithoutPIN"]);
88
+ const { useShortUrls: shorten = false, portalTheme, sessionLookupId } = opts;
89
+ const isPasskeySupported = yield this.paraCoreInterface.isPasskeySupported();
90
+ const isPasskeyPossible = loginAuthMethods.includes(import_user_management_client.AuthMethod.PASSKEY) && !this.paraCoreInterface.isNativePasskey;
91
+ const isPasswordPossible = loginAuthMethods.includes(import_user_management_client.AuthMethod.PASSWORD) && hasPasswordWithoutPIN;
92
+ const isPINPossible = loginAuthMethods.includes(import_user_management_client.AuthMethod.PIN);
93
+ return __spreadValues(__spreadValues(__spreadValues(__spreadProps(__spreadValues({}, authState), {
94
+ isPasskeySupported,
95
+ loginAuthMethods
96
+ }), isPasskeyPossible ? {
97
+ passkeyUrl: yield this.services.portalUrlService.getLoginUrl({
98
+ sessionId: sessionLookupId,
99
+ shorten,
100
+ portalTheme
101
+ }),
102
+ passkeyKnownDeviceUrl: yield this.services.portalUrlService.constructPortalUrl("loginAuth", {
103
+ sessionId: sessionLookupId,
104
+ newDevice: {
105
+ sessionId: sessionLookupId,
106
+ encryptionKey: (0, import_utils.getPublicKeyHex)(this.paraCoreInterface.loginEncryptionKeyPair)
107
+ },
108
+ shorten,
109
+ portalTheme
110
+ })
111
+ } : {}), isPasswordPossible ? {
112
+ passwordUrl: yield this.services.portalUrlService.constructPortalUrl("loginPassword", {
113
+ sessionId: sessionLookupId,
114
+ shorten,
115
+ portalTheme,
116
+ params: { isEmbedded: `${!serverAuthState.isWalletSelectionNeeded}` }
117
+ })
118
+ } : {}), isPINPossible ? {
119
+ pinUrl: yield this.services.portalUrlService.constructPortalUrl("loginPIN", {
120
+ sessionId: sessionLookupId,
121
+ shorten,
122
+ portalTheme,
123
+ params: { isEmbedded: `${!serverAuthState.isWalletSelectionNeeded}` }
124
+ })
125
+ } : {});
126
+ });
127
+ this.waitForLogin = (params) => __async(this, null, function* () {
128
+ this.stateManager.send({
129
+ type: "WAIT_FOR_SESSION",
130
+ data: __spreadValues({}, params)
131
+ });
132
+ return yield (0, import_stateListener.waitForAuthStateChange)({
133
+ stateManager: this.stateManager,
134
+ resolvePhases: [
135
+ {
136
+ phase: "authenticated",
137
+ onPhase: () => {
138
+ const needsWallet = this.stateManager.getSnapshot().needsWallet;
139
+ (0, import_utils2.dispatchEvent)(import_events.ParaEvent.LOGIN_EVENT, true);
140
+ return {
141
+ partnerId: this.paraCoreInterface.partnerId,
142
+ needsWallet: needsWallet || Object.values(this.services.walletService.wallets).length === 0
143
+ };
144
+ }
145
+ }
146
+ ],
147
+ rejectPhases: [
148
+ {
149
+ phase: "unauthenticated",
150
+ onPhase: () => new Error("canceled")
151
+ }
152
+ ],
153
+ onReject: () => {
154
+ (0, import_utils2.dispatchEvent)(import_events.ParaEvent.LOGIN_EVENT, { isComplete: false }, "failed to setup user");
155
+ }
156
+ });
157
+ });
158
+ }
159
+ }
160
+ // Annotate the CommonJS export names for ESM import in node:
161
+ 0 && (module.exports = {
162
+ LoginFlowService
163
+ });