@metamask-previews/profile-sync-controller 8.1.1-preview-e951f896 → 9.0.0-preview-047d5b0a

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 (154) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/dist/controllers/authentication/AuthenticationController.cjs +86 -55
  3. package/dist/controllers/authentication/AuthenticationController.cjs.map +1 -1
  4. package/dist/controllers/authentication/AuthenticationController.d.cts +23 -11
  5. package/dist/controllers/authentication/AuthenticationController.d.cts.map +1 -1
  6. package/dist/controllers/authentication/AuthenticationController.d.mts +23 -11
  7. package/dist/controllers/authentication/AuthenticationController.d.mts.map +1 -1
  8. package/dist/controllers/authentication/AuthenticationController.mjs +86 -55
  9. package/dist/controllers/authentication/AuthenticationController.mjs.map +1 -1
  10. package/dist/controllers/authentication/mocks/mockResponses.cjs +23 -10
  11. package/dist/controllers/authentication/mocks/mockResponses.cjs.map +1 -1
  12. package/dist/controllers/authentication/mocks/mockResponses.d.cts +10 -42
  13. package/dist/controllers/authentication/mocks/mockResponses.d.cts.map +1 -1
  14. package/dist/controllers/authentication/mocks/mockResponses.d.mts +10 -42
  15. package/dist/controllers/authentication/mocks/mockResponses.d.mts.map +1 -1
  16. package/dist/controllers/authentication/mocks/mockResponses.mjs +22 -9
  17. package/dist/controllers/authentication/mocks/mockResponses.mjs.map +1 -1
  18. package/dist/controllers/authentication/services.cjs +132 -0
  19. package/dist/controllers/authentication/services.cjs.map +1 -0
  20. package/dist/controllers/authentication/services.d.cts +72 -0
  21. package/dist/controllers/authentication/services.d.cts.map +1 -0
  22. package/dist/controllers/authentication/services.d.mts +72 -0
  23. package/dist/controllers/authentication/services.d.mts.map +1 -0
  24. package/dist/controllers/authentication/services.mjs +129 -0
  25. package/dist/controllers/authentication/services.mjs.map +1 -0
  26. package/dist/controllers/user-storage/UserStorageController.cjs +127 -71
  27. package/dist/controllers/user-storage/UserStorageController.cjs.map +1 -1
  28. package/dist/controllers/user-storage/UserStorageController.d.cts +4 -5
  29. package/dist/controllers/user-storage/UserStorageController.d.cts.map +1 -1
  30. package/dist/controllers/user-storage/UserStorageController.d.mts +4 -5
  31. package/dist/controllers/user-storage/UserStorageController.d.mts.map +1 -1
  32. package/dist/controllers/user-storage/UserStorageController.mjs +127 -71
  33. package/dist/controllers/user-storage/UserStorageController.mjs.map +1 -1
  34. package/dist/controllers/user-storage/account-syncing/controller-integration.cjs +1 -1
  35. package/dist/controllers/user-storage/account-syncing/controller-integration.cjs.map +1 -1
  36. package/dist/controllers/user-storage/account-syncing/controller-integration.mjs +1 -1
  37. package/dist/controllers/user-storage/account-syncing/controller-integration.mjs.map +1 -1
  38. package/dist/controllers/user-storage/account-syncing/sync-utils.cjs +0 -1
  39. package/dist/controllers/user-storage/account-syncing/sync-utils.cjs.map +1 -1
  40. package/dist/controllers/user-storage/account-syncing/sync-utils.d.cts.map +1 -1
  41. package/dist/controllers/user-storage/account-syncing/sync-utils.d.mts.map +1 -1
  42. package/dist/controllers/user-storage/account-syncing/sync-utils.mjs +0 -1
  43. package/dist/controllers/user-storage/account-syncing/sync-utils.mjs.map +1 -1
  44. package/dist/controllers/user-storage/mocks/mockResponses.cjs +3 -3
  45. package/dist/controllers/user-storage/mocks/mockResponses.cjs.map +1 -1
  46. package/dist/controllers/user-storage/mocks/mockResponses.d.cts +1 -1
  47. package/dist/controllers/user-storage/mocks/mockResponses.d.cts.map +1 -1
  48. package/dist/controllers/user-storage/mocks/mockResponses.d.mts +1 -1
  49. package/dist/controllers/user-storage/mocks/mockResponses.d.mts.map +1 -1
  50. package/dist/controllers/user-storage/mocks/mockResponses.mjs +3 -3
  51. package/dist/controllers/user-storage/mocks/mockResponses.mjs.map +1 -1
  52. package/dist/controllers/user-storage/network-syncing/controller-integration.cjs +14 -14
  53. package/dist/controllers/user-storage/network-syncing/controller-integration.cjs.map +1 -1
  54. package/dist/controllers/user-storage/network-syncing/controller-integration.d.cts +3 -3
  55. package/dist/controllers/user-storage/network-syncing/controller-integration.d.cts.map +1 -1
  56. package/dist/controllers/user-storage/network-syncing/controller-integration.d.mts +3 -3
  57. package/dist/controllers/user-storage/network-syncing/controller-integration.d.mts.map +1 -1
  58. package/dist/controllers/user-storage/network-syncing/controller-integration.mjs +14 -14
  59. package/dist/controllers/user-storage/network-syncing/controller-integration.mjs.map +1 -1
  60. package/dist/controllers/user-storage/network-syncing/services.cjs +23 -27
  61. package/dist/controllers/user-storage/network-syncing/services.cjs.map +1 -1
  62. package/dist/controllers/user-storage/network-syncing/services.d.cts +7 -16
  63. package/dist/controllers/user-storage/network-syncing/services.d.cts.map +1 -1
  64. package/dist/controllers/user-storage/network-syncing/services.d.mts +7 -16
  65. package/dist/controllers/user-storage/network-syncing/services.d.mts.map +1 -1
  66. package/dist/controllers/user-storage/network-syncing/services.mjs +23 -27
  67. package/dist/controllers/user-storage/network-syncing/services.mjs.map +1 -1
  68. package/dist/controllers/user-storage/network-syncing/sync-mutations.cjs.map +1 -1
  69. package/dist/controllers/user-storage/network-syncing/sync-mutations.d.cts +5 -13
  70. package/dist/controllers/user-storage/network-syncing/sync-mutations.d.cts.map +1 -1
  71. package/dist/controllers/user-storage/network-syncing/sync-mutations.d.mts +5 -13
  72. package/dist/controllers/user-storage/network-syncing/sync-mutations.d.mts.map +1 -1
  73. package/dist/controllers/user-storage/network-syncing/sync-mutations.mjs.map +1 -1
  74. package/dist/controllers/user-storage/services.cjs +306 -0
  75. package/dist/controllers/user-storage/services.cjs.map +1 -0
  76. package/dist/controllers/user-storage/services.d.cts +85 -0
  77. package/dist/controllers/user-storage/services.d.cts.map +1 -0
  78. package/dist/controllers/user-storage/services.d.mts +85 -0
  79. package/dist/controllers/user-storage/services.d.mts.map +1 -0
  80. package/dist/controllers/user-storage/services.mjs +276 -0
  81. package/dist/controllers/user-storage/services.mjs.map +1 -0
  82. package/dist/sdk/authentication-jwt-bearer/flow-srp.cjs +8 -7
  83. package/dist/sdk/authentication-jwt-bearer/flow-srp.cjs.map +1 -1
  84. package/dist/sdk/authentication-jwt-bearer/flow-srp.d.cts +0 -2
  85. package/dist/sdk/authentication-jwt-bearer/flow-srp.d.cts.map +1 -1
  86. package/dist/sdk/authentication-jwt-bearer/flow-srp.d.mts +0 -2
  87. package/dist/sdk/authentication-jwt-bearer/flow-srp.d.mts.map +1 -1
  88. package/dist/sdk/authentication-jwt-bearer/flow-srp.mjs +9 -8
  89. package/dist/sdk/authentication-jwt-bearer/flow-srp.mjs.map +1 -1
  90. package/dist/sdk/authentication-jwt-bearer/services.cjs +2 -10
  91. package/dist/sdk/authentication-jwt-bearer/services.cjs.map +1 -1
  92. package/dist/sdk/authentication-jwt-bearer/services.d.cts +1 -3
  93. package/dist/sdk/authentication-jwt-bearer/services.d.cts.map +1 -1
  94. package/dist/sdk/authentication-jwt-bearer/services.d.mts +1 -3
  95. package/dist/sdk/authentication-jwt-bearer/services.d.mts.map +1 -1
  96. package/dist/sdk/authentication-jwt-bearer/services.mjs +2 -10
  97. package/dist/sdk/authentication-jwt-bearer/services.mjs.map +1 -1
  98. package/dist/sdk/authentication-jwt-bearer/types.cjs.map +1 -1
  99. package/dist/sdk/authentication-jwt-bearer/types.mjs.map +1 -1
  100. package/dist/sdk/authentication.cjs.map +1 -1
  101. package/dist/sdk/authentication.d.cts +1 -1
  102. package/dist/sdk/authentication.d.cts.map +1 -1
  103. package/dist/sdk/authentication.d.mts +1 -1
  104. package/dist/sdk/authentication.d.mts.map +1 -1
  105. package/dist/sdk/authentication.mjs.map +1 -1
  106. package/dist/sdk/user-storage.cjs +39 -34
  107. package/dist/sdk/user-storage.cjs.map +1 -1
  108. package/dist/sdk/user-storage.d.cts +6 -11
  109. package/dist/sdk/user-storage.d.cts.map +1 -1
  110. package/dist/sdk/user-storage.d.mts +6 -11
  111. package/dist/sdk/user-storage.d.mts.map +1 -1
  112. package/dist/sdk/user-storage.mjs +39 -34
  113. package/dist/sdk/user-storage.mjs.map +1 -1
  114. package/dist/sdk/utils/messaging-signing-snap-requests.cjs +1 -12
  115. package/dist/sdk/utils/messaging-signing-snap-requests.cjs.map +1 -1
  116. package/dist/sdk/utils/messaging-signing-snap-requests.d.cts +0 -6
  117. package/dist/sdk/utils/messaging-signing-snap-requests.d.cts.map +1 -1
  118. package/dist/sdk/utils/messaging-signing-snap-requests.d.mts +0 -6
  119. package/dist/sdk/utils/messaging-signing-snap-requests.d.mts.map +1 -1
  120. package/dist/sdk/utils/messaging-signing-snap-requests.mjs +0 -10
  121. package/dist/sdk/utils/messaging-signing-snap-requests.mjs.map +1 -1
  122. package/package.json +5 -5
  123. package/dist/controllers/user-storage/types.cjs +0 -3
  124. package/dist/controllers/user-storage/types.cjs.map +0 -1
  125. package/dist/controllers/user-storage/types.d.cts +0 -23
  126. package/dist/controllers/user-storage/types.d.cts.map +0 -1
  127. package/dist/controllers/user-storage/types.d.mts +0 -23
  128. package/dist/controllers/user-storage/types.d.mts.map +0 -1
  129. package/dist/controllers/user-storage/types.mjs +0 -2
  130. package/dist/controllers/user-storage/types.mjs.map +0 -1
  131. package/dist/sdk/mocks/auth.cjs +0 -44
  132. package/dist/sdk/mocks/auth.cjs.map +0 -1
  133. package/dist/sdk/mocks/auth.d.cts +0 -39
  134. package/dist/sdk/mocks/auth.d.cts.map +0 -1
  135. package/dist/sdk/mocks/auth.d.mts +0 -39
  136. package/dist/sdk/mocks/auth.d.mts.map +0 -1
  137. package/dist/sdk/mocks/auth.mjs +0 -41
  138. package/dist/sdk/mocks/auth.mjs.map +0 -1
  139. package/dist/sdk/mocks/userstorage.cjs +0 -43
  140. package/dist/sdk/mocks/userstorage.cjs.map +0 -1
  141. package/dist/sdk/mocks/userstorage.d.cts +0 -10
  142. package/dist/sdk/mocks/userstorage.d.cts.map +0 -1
  143. package/dist/sdk/mocks/userstorage.d.mts +0 -10
  144. package/dist/sdk/mocks/userstorage.d.mts.map +0 -1
  145. package/dist/sdk/mocks/userstorage.mjs +0 -15
  146. package/dist/sdk/mocks/userstorage.mjs.map +0 -1
  147. package/dist/shared/types/services.cjs +0 -3
  148. package/dist/shared/types/services.cjs.map +0 -1
  149. package/dist/shared/types/services.d.cts +0 -10
  150. package/dist/shared/types/services.d.cts.map +0 -1
  151. package/dist/shared/types/services.d.mts +0 -10
  152. package/dist/shared/types/services.d.mts.map +0 -1
  153. package/dist/shared/types/services.mjs +0 -2
  154. package/dist/shared/types/services.mjs.map +0 -1
@@ -9,10 +9,11 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _AuthenticationController_instances, _AuthenticationController_metametrics, _AuthenticationController_auth, _AuthenticationController_isUnlocked, _AuthenticationController_keyringController, _AuthenticationController_registerMessageHandlers, _AuthenticationController_getLoginResponseFromState, _AuthenticationController_setLoginResponseToState, _AuthenticationController_assertIsUnlocked, _AuthenticationController__snapPublicKeyCache, _AuthenticationController_snapGetPublicKey, _AuthenticationController__snapSignMessageCache, _AuthenticationController_snapSignMessage;
12
+ var _AuthenticationController_instances, _AuthenticationController_metametrics, _AuthenticationController_isUnlocked, _AuthenticationController_keyringController, _AuthenticationController_registerMessageHandlers, _AuthenticationController_assertLoggedIn, _AuthenticationController_performAuthenticationFlow, _AuthenticationController_hasValidSession, _AuthenticationController__snapPublicKeyCache, _AuthenticationController_snapGetPublicKey, _AuthenticationController__snapSignMessageCache, _AuthenticationController_snapSignMessage;
13
13
  import { BaseController } from "@metamask/base-controller";
14
14
  import { createSnapPublicKeyRequest, createSnapSignMessageRequest } from "./auth-snap-requests.mjs";
15
- import { assertMessageStartsWithMetamask, AuthType, Env, JwtBearerAuth } from "../../sdk/index.mjs";
15
+ import { createLoginRawMessage, getAccessToken, getNonce, login } from "./services.mjs";
16
+ const THIRTY_MIN_MS = 1000 * 60 * 30;
16
17
  const controllerName = 'AuthenticationController';
17
18
  export const defaultState = {
18
19
  isSignedIn: false,
@@ -41,7 +42,6 @@ class AuthenticationController extends BaseController {
41
42
  });
42
43
  _AuthenticationController_instances.add(this);
43
44
  _AuthenticationController_metametrics.set(this, void 0);
44
- _AuthenticationController_auth.set(this, void 0);
45
45
  _AuthenticationController_isUnlocked.set(this, false);
46
46
  _AuthenticationController_keyringController.set(this, {
47
47
  setupLockedStateSubscriptions: () => {
@@ -61,86 +61,114 @@ class AuthenticationController extends BaseController {
61
61
  throw new Error('`metametrics` field is required');
62
62
  }
63
63
  __classPrivateFieldSet(this, _AuthenticationController_metametrics, metametrics, "f");
64
- __classPrivateFieldSet(this, _AuthenticationController_auth, new JwtBearerAuth({
65
- env: Env.PRD,
66
- platform: metametrics.agent,
67
- type: AuthType.SRP,
68
- }, {
69
- storage: {
70
- getLoginResponse: __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_getLoginResponseFromState).bind(this),
71
- setLoginResponse: __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_setLoginResponseToState).bind(this),
72
- },
73
- signing: {
74
- getIdentifier: __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_snapGetPublicKey).bind(this),
75
- signMessage: __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_snapSignMessage).bind(this),
76
- },
77
- metametrics: __classPrivateFieldGet(this, _AuthenticationController_metametrics, "f"),
78
- }), "f");
79
64
  __classPrivateFieldGet(this, _AuthenticationController_keyringController, "f").setupLockedStateSubscriptions();
80
65
  __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_registerMessageHandlers).call(this);
81
66
  }
82
67
  async performSignIn() {
83
- __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertIsUnlocked).call(this, 'performSignIn');
84
- return await __classPrivateFieldGet(this, _AuthenticationController_auth, "f").getAccessToken();
68
+ const { accessToken } = await __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_performAuthenticationFlow).call(this);
69
+ return accessToken;
85
70
  }
86
71
  performSignOut() {
87
- __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertIsUnlocked).call(this, 'performSignOut');
88
72
  this.update((state) => {
89
73
  state.isSignedIn = false;
90
74
  state.sessionData = undefined;
91
75
  });
92
76
  }
93
- /**
94
- * Will return a bearer token.
95
- * Logs a user in if a user is not logged in.
96
- *
97
- * @returns profile for the session.
98
- */
99
77
  async getBearerToken() {
100
- __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertIsUnlocked).call(this, 'getBearerToken');
101
- return await __classPrivateFieldGet(this, _AuthenticationController_auth, "f").getAccessToken();
78
+ __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertLoggedIn).call(this);
79
+ if (__classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_hasValidSession).call(this, this.state.sessionData)) {
80
+ return this.state.sessionData.accessToken;
81
+ }
82
+ const { accessToken } = await __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_performAuthenticationFlow).call(this);
83
+ return accessToken;
102
84
  }
103
85
  /**
104
86
  * Will return a session profile.
105
- * Logs a user in if a user is not logged in.
87
+ * Throws if a user is not logged in.
106
88
  *
107
89
  * @returns profile for the session.
108
90
  */
109
91
  async getSessionProfile() {
110
- __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertIsUnlocked).call(this, 'getSessionProfile');
111
- return await __classPrivateFieldGet(this, _AuthenticationController_auth, "f").getUserProfile();
92
+ __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertLoggedIn).call(this);
93
+ if (__classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_hasValidSession).call(this, this.state.sessionData)) {
94
+ return this.state.sessionData.profile;
95
+ }
96
+ const { profile } = await __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_performAuthenticationFlow).call(this);
97
+ return profile;
112
98
  }
113
99
  isSignedIn() {
114
- __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertIsUnlocked).call(this, 'isSignedIn');
115
100
  return this.state.isSignedIn;
116
101
  }
117
102
  }
118
- _AuthenticationController_metametrics = new WeakMap(), _AuthenticationController_auth = new WeakMap(), _AuthenticationController_isUnlocked = new WeakMap(), _AuthenticationController_keyringController = new WeakMap(), _AuthenticationController__snapPublicKeyCache = new WeakMap(), _AuthenticationController__snapSignMessageCache = new WeakMap(), _AuthenticationController_instances = new WeakSet(), _AuthenticationController_registerMessageHandlers = function _AuthenticationController_registerMessageHandlers() {
103
+ _AuthenticationController_metametrics = new WeakMap(), _AuthenticationController_isUnlocked = new WeakMap(), _AuthenticationController_keyringController = new WeakMap(), _AuthenticationController__snapPublicKeyCache = new WeakMap(), _AuthenticationController__snapSignMessageCache = new WeakMap(), _AuthenticationController_instances = new WeakSet(), _AuthenticationController_registerMessageHandlers = function _AuthenticationController_registerMessageHandlers() {
119
104
  this.messagingSystem.registerActionHandler('AuthenticationController:getBearerToken', this.getBearerToken.bind(this));
120
105
  this.messagingSystem.registerActionHandler('AuthenticationController:getSessionProfile', this.getSessionProfile.bind(this));
121
106
  this.messagingSystem.registerActionHandler('AuthenticationController:isSignedIn', this.isSignedIn.bind(this));
122
107
  this.messagingSystem.registerActionHandler('AuthenticationController:performSignIn', this.performSignIn.bind(this));
123
108
  this.messagingSystem.registerActionHandler('AuthenticationController:performSignOut', this.performSignOut.bind(this));
124
- }, _AuthenticationController_getLoginResponseFromState = async function _AuthenticationController_getLoginResponseFromState() {
125
- if (!this.state.sessionData) {
126
- return null;
109
+ }, _AuthenticationController_assertLoggedIn = function _AuthenticationController_assertLoggedIn() {
110
+ if (!this.state.isSignedIn) {
111
+ throw new Error(`${controllerName}: Unable to call method, user is not authenticated`);
127
112
  }
128
- return {
129
- ...this.state.sessionData,
130
- profile: {
131
- ...this.state.sessionData.profile,
132
- metaMetricsId: await __classPrivateFieldGet(this, _AuthenticationController_metametrics, "f").getMetaMetricsId(),
133
- },
134
- };
135
- }, _AuthenticationController_setLoginResponseToState = async function _AuthenticationController_setLoginResponseToState(loginResponse) {
136
- this.update((state) => {
137
- state.isSignedIn = true;
138
- state.sessionData = loginResponse;
139
- });
140
- }, _AuthenticationController_assertIsUnlocked = function _AuthenticationController_assertIsUnlocked(methodName) {
141
- if (!__classPrivateFieldGet(this, _AuthenticationController_isUnlocked, "f")) {
142
- throw new Error(`${methodName} - unable to proceed, wallet is locked`);
113
+ }, _AuthenticationController_performAuthenticationFlow = async function _AuthenticationController_performAuthenticationFlow() {
114
+ try {
115
+ // 1. Nonce
116
+ const publicKey = await __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_snapGetPublicKey).call(this);
117
+ const nonce = await getNonce(publicKey);
118
+ if (!nonce) {
119
+ throw new Error(`Unable to get nonce`);
120
+ }
121
+ // 2. Login
122
+ const rawMessage = createLoginRawMessage(nonce, publicKey);
123
+ const signature = await __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_snapSignMessage).call(this, rawMessage);
124
+ const loginResponse = await login(rawMessage, signature, {
125
+ metametricsId: await __classPrivateFieldGet(this, _AuthenticationController_metametrics, "f").getMetaMetricsId(),
126
+ agent: __classPrivateFieldGet(this, _AuthenticationController_metametrics, "f").agent,
127
+ });
128
+ if (!loginResponse?.token) {
129
+ throw new Error(`Unable to login`);
130
+ }
131
+ const profile = {
132
+ identifierId: loginResponse.profile.identifier_id,
133
+ profileId: loginResponse.profile.profile_id,
134
+ };
135
+ // 3. Trade for Access Token
136
+ const accessToken = await getAccessToken(loginResponse.token, __classPrivateFieldGet(this, _AuthenticationController_metametrics, "f").agent);
137
+ if (!accessToken) {
138
+ throw new Error(`Unable to get Access Token`);
139
+ }
140
+ // Update Internal State
141
+ this.update((state) => {
142
+ state.isSignedIn = true;
143
+ const expiresIn = new Date();
144
+ expiresIn.setTime(expiresIn.getTime() + THIRTY_MIN_MS);
145
+ state.sessionData = {
146
+ profile,
147
+ accessToken,
148
+ expiresIn: expiresIn.toString(),
149
+ };
150
+ });
151
+ return {
152
+ profile,
153
+ accessToken,
154
+ };
155
+ }
156
+ catch (e) {
157
+ console.error('Failed to authenticate', e);
158
+ const errorMessage = e instanceof Error ? e.message : JSON.stringify(e ?? '');
159
+ throw new Error(`${controllerName}: Failed to authenticate - ${errorMessage}`);
160
+ }
161
+ }, _AuthenticationController_hasValidSession = function _AuthenticationController_hasValidSession(sessionData) {
162
+ if (!sessionData) {
163
+ return false;
143
164
  }
165
+ const prevDate = Date.parse(sessionData.expiresIn);
166
+ if (isNaN(prevDate)) {
167
+ return false;
168
+ }
169
+ const currentDate = new Date();
170
+ const diffMs = Math.abs(currentDate.getTime() - prevDate);
171
+ return THIRTY_MIN_MS > diffMs;
144
172
  }, _AuthenticationController_snapGetPublicKey =
145
173
  /**
146
174
  * Returns the auth snap public key.
@@ -151,7 +179,9 @@ async function _AuthenticationController_snapGetPublicKey() {
151
179
  if (__classPrivateFieldGet(this, _AuthenticationController__snapPublicKeyCache, "f")) {
152
180
  return __classPrivateFieldGet(this, _AuthenticationController__snapPublicKeyCache, "f");
153
181
  }
154
- __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertIsUnlocked).call(this, '#snapGetPublicKey');
182
+ if (!__classPrivateFieldGet(this, _AuthenticationController_isUnlocked, "f")) {
183
+ throw new Error('#snapGetPublicKey - unable to call snap, wallet is locked');
184
+ }
155
185
  const result = (await this.messagingSystem.call('SnapController:handleRequest', createSnapPublicKeyRequest()));
156
186
  __classPrivateFieldSet(this, _AuthenticationController__snapPublicKeyCache, result, "f");
157
187
  return result;
@@ -163,11 +193,12 @@ async function _AuthenticationController_snapGetPublicKey() {
163
193
  * @returns A Signature created by the snap.
164
194
  */
165
195
  async function _AuthenticationController_snapSignMessage(message) {
166
- assertMessageStartsWithMetamask(message);
167
196
  if (__classPrivateFieldGet(this, _AuthenticationController__snapSignMessageCache, "f")[message]) {
168
197
  return __classPrivateFieldGet(this, _AuthenticationController__snapSignMessageCache, "f")[message];
169
198
  }
170
- __classPrivateFieldGet(this, _AuthenticationController_instances, "m", _AuthenticationController_assertIsUnlocked).call(this, '#snapSignMessage');
199
+ if (!__classPrivateFieldGet(this, _AuthenticationController_isUnlocked, "f")) {
200
+ throw new Error('#snapSignMessage - unable to call snap, wallet is locked');
201
+ }
171
202
  const result = (await this.messagingSystem.call('SnapController:handleRequest', createSnapSignMessageRequest(message)));
172
203
  __classPrivateFieldGet(this, _AuthenticationController__snapSignMessageCache, "f")[message] = result;
173
204
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticationController.mjs","sourceRoot":"","sources":["../../../src/controllers/authentication/AuthenticationController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedMessenger,\n StateMetadata,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type {\n KeyringControllerGetStateAction,\n KeyringControllerLockEvent,\n KeyringControllerUnlockEvent,\n} from '@metamask/keyring-controller';\nimport type { HandleSnapRequest } from '@metamask/snaps-controllers';\n\nimport {\n createSnapPublicKeyRequest,\n createSnapSignMessageRequest,\n} from './auth-snap-requests';\nimport type { LoginResponse, SRPInterface, UserProfile } from '../../sdk';\nimport {\n assertMessageStartsWithMetamask,\n AuthType,\n Env,\n JwtBearerAuth,\n} from '../../sdk';\nimport type { MetaMetricsAuth } from '../../shared/types/services';\n\nconst controllerName = 'AuthenticationController';\n\n// State\nexport type AuthenticationControllerState = {\n isSignedIn: boolean;\n sessionData?: LoginResponse;\n};\nexport const defaultState: AuthenticationControllerState = {\n isSignedIn: false,\n};\nconst metadata: StateMetadata<AuthenticationControllerState> = {\n isSignedIn: {\n persist: true,\n anonymous: true,\n },\n sessionData: {\n persist: true,\n anonymous: false,\n },\n};\n\n// Messenger Actions\ntype CreateActionsObj<Controller extends keyof AuthenticationController> = {\n [K in Controller]: {\n type: `${typeof controllerName}:${K}`;\n handler: AuthenticationController[K];\n };\n};\ntype ActionsObj = CreateActionsObj<\n | 'performSignIn'\n | 'performSignOut'\n | 'getBearerToken'\n | 'getSessionProfile'\n | 'isSignedIn'\n>;\nexport type Actions =\n | ActionsObj[keyof ActionsObj]\n | AuthenticationControllerGetStateAction;\nexport type AuthenticationControllerGetStateAction = ControllerGetStateAction<\n typeof controllerName,\n AuthenticationControllerState\n>;\nexport type AuthenticationControllerPerformSignIn = ActionsObj['performSignIn'];\nexport type AuthenticationControllerPerformSignOut =\n ActionsObj['performSignOut'];\nexport type AuthenticationControllerGetBearerToken =\n ActionsObj['getBearerToken'];\nexport type AuthenticationControllerGetSessionProfile =\n ActionsObj['getSessionProfile'];\nexport type AuthenticationControllerIsSignedIn = ActionsObj['isSignedIn'];\n\nexport type AuthenticationControllerStateChangeEvent =\n ControllerStateChangeEvent<\n typeof controllerName,\n AuthenticationControllerState\n >;\n\nexport type Events = AuthenticationControllerStateChangeEvent;\n\n// Allowed Actions\nexport type AllowedActions =\n | HandleSnapRequest\n | KeyringControllerGetStateAction;\n\nexport type AllowedEvents =\n | KeyringControllerLockEvent\n | KeyringControllerUnlockEvent;\n\n// Messenger\nexport type AuthenticationControllerMessenger = RestrictedMessenger<\n typeof controllerName,\n Actions | AllowedActions,\n Events | AllowedEvents,\n AllowedActions['type'],\n AllowedEvents['type']\n>;\n\n/**\n * Controller that enables authentication for restricted endpoints.\n * Used for Global Profile Syncing and Notifications\n */\nexport default class AuthenticationController extends BaseController<\n typeof controllerName,\n AuthenticationControllerState,\n AuthenticationControllerMessenger\n> {\n readonly #metametrics: MetaMetricsAuth;\n\n readonly #auth: SRPInterface;\n\n #isUnlocked = false;\n\n readonly #keyringController = {\n setupLockedStateSubscriptions: () => {\n const { isUnlocked } = this.messagingSystem.call(\n 'KeyringController:getState',\n );\n this.#isUnlocked = isUnlocked;\n\n this.messagingSystem.subscribe('KeyringController:unlock', () => {\n this.#isUnlocked = true;\n });\n\n this.messagingSystem.subscribe('KeyringController:lock', () => {\n this.#isUnlocked = false;\n });\n },\n };\n\n constructor({\n messenger,\n state,\n metametrics,\n }: {\n messenger: AuthenticationControllerMessenger;\n state?: AuthenticationControllerState;\n /**\n * Not using the Messaging System as we\n * do not want to tie this strictly to extension\n */\n metametrics: MetaMetricsAuth;\n }) {\n super({\n messenger,\n metadata,\n name: controllerName,\n state: { ...defaultState, ...state },\n });\n\n if (!metametrics) {\n throw new Error('`metametrics` field is required');\n }\n\n this.#metametrics = metametrics;\n\n this.#auth = new JwtBearerAuth(\n {\n env: Env.PRD,\n platform: metametrics.agent,\n type: AuthType.SRP,\n },\n {\n storage: {\n getLoginResponse: this.#getLoginResponseFromState.bind(this),\n setLoginResponse: this.#setLoginResponseToState.bind(this),\n },\n signing: {\n getIdentifier: this.#snapGetPublicKey.bind(this),\n signMessage: this.#snapSignMessage.bind(this),\n },\n metametrics: this.#metametrics,\n },\n );\n\n this.#keyringController.setupLockedStateSubscriptions();\n this.#registerMessageHandlers();\n }\n\n /**\n * Constructor helper for registering this controller's messaging system\n * actions.\n */\n #registerMessageHandlers(): void {\n this.messagingSystem.registerActionHandler(\n 'AuthenticationController:getBearerToken',\n this.getBearerToken.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n 'AuthenticationController:getSessionProfile',\n this.getSessionProfile.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n 'AuthenticationController:isSignedIn',\n this.isSignedIn.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n 'AuthenticationController:performSignIn',\n this.performSignIn.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n 'AuthenticationController:performSignOut',\n this.performSignOut.bind(this),\n );\n }\n\n async #getLoginResponseFromState(): Promise<LoginResponse | null> {\n if (!this.state.sessionData) {\n return null;\n }\n\n return {\n ...this.state.sessionData,\n profile: {\n ...this.state.sessionData.profile,\n metaMetricsId: await this.#metametrics.getMetaMetricsId(),\n },\n };\n }\n\n async #setLoginResponseToState(loginResponse: LoginResponse) {\n this.update((state) => {\n state.isSignedIn = true;\n state.sessionData = loginResponse;\n });\n }\n\n #assertIsUnlocked(methodName: string): void {\n if (!this.#isUnlocked) {\n throw new Error(`${methodName} - unable to proceed, wallet is locked`);\n }\n }\n\n public async performSignIn(): Promise<string> {\n this.#assertIsUnlocked('performSignIn');\n return await this.#auth.getAccessToken();\n }\n\n public performSignOut(): void {\n this.#assertIsUnlocked('performSignOut');\n this.update((state) => {\n state.isSignedIn = false;\n state.sessionData = undefined;\n });\n }\n\n /**\n * Will return a bearer token.\n * Logs a user in if a user is not logged in.\n *\n * @returns profile for the session.\n */\n\n public async getBearerToken(): Promise<string> {\n this.#assertIsUnlocked('getBearerToken');\n return await this.#auth.getAccessToken();\n }\n\n /**\n * Will return a session profile.\n * Logs a user in if a user is not logged in.\n *\n * @returns profile for the session.\n */\n public async getSessionProfile(): Promise<UserProfile> {\n this.#assertIsUnlocked('getSessionProfile');\n return await this.#auth.getUserProfile();\n }\n\n public isSignedIn(): boolean {\n this.#assertIsUnlocked('isSignedIn');\n return this.state.isSignedIn;\n }\n\n #_snapPublicKeyCache: string | undefined;\n\n /**\n * Returns the auth snap public key.\n *\n * @returns The snap public key.\n */\n async #snapGetPublicKey(): Promise<string> {\n if (this.#_snapPublicKeyCache) {\n return this.#_snapPublicKeyCache;\n }\n\n this.#assertIsUnlocked('#snapGetPublicKey');\n\n const result = (await this.messagingSystem.call(\n 'SnapController:handleRequest',\n createSnapPublicKeyRequest(),\n )) as string;\n\n this.#_snapPublicKeyCache = result;\n\n return result;\n }\n\n #_snapSignMessageCache: Record<`metamask:${string}`, string> = {};\n\n /**\n * Signs a specific message using an underlying auth snap.\n *\n * @param message - A specific tagged message to sign.\n * @returns A Signature created by the snap.\n */\n async #snapSignMessage(message: string): Promise<string> {\n assertMessageStartsWithMetamask(message);\n\n if (this.#_snapSignMessageCache[message]) {\n return this.#_snapSignMessageCache[message];\n }\n\n this.#assertIsUnlocked('#snapSignMessage');\n\n const result = (await this.messagingSystem.call(\n 'SnapController:handleRequest',\n createSnapSignMessageRequest(message),\n )) as string;\n\n this.#_snapSignMessageCache[message] = result;\n\n return result;\n }\n}\n"]}
1
+ {"version":3,"file":"AuthenticationController.mjs","sourceRoot":"","sources":["../../../src/controllers/authentication/AuthenticationController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedMessenger,\n StateMetadata,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type {\n KeyringControllerGetStateAction,\n KeyringControllerLockEvent,\n KeyringControllerUnlockEvent,\n} from '@metamask/keyring-controller';\nimport type { HandleSnapRequest } from '@metamask/snaps-controllers';\n\nimport {\n createSnapPublicKeyRequest,\n createSnapSignMessageRequest,\n} from './auth-snap-requests';\nimport {\n createLoginRawMessage,\n getAccessToken,\n getNonce,\n login,\n} from './services';\n\nconst THIRTY_MIN_MS = 1000 * 60 * 30;\n\nconst controllerName = 'AuthenticationController';\n\n// State\ntype SessionProfile = {\n identifierId: string;\n profileId: string;\n};\n\ntype SessionData = {\n /** profile - anonymous profile data for the given logged in user */\n profile: SessionProfile;\n /** accessToken - used to make requests authorized endpoints */\n accessToken: string;\n /** expiresIn - string date to determine if new access token is required */\n expiresIn: string;\n};\n\ntype MetaMetricsAuth = {\n getMetaMetricsId: () => string | Promise<string>;\n agent: 'extension' | 'mobile';\n};\n\nexport type AuthenticationControllerState = {\n /**\n * Global isSignedIn state.\n * Can be used to determine if \"Profile Syncing\" is enabled.\n */\n isSignedIn: boolean;\n sessionData?: SessionData;\n};\nexport const defaultState: AuthenticationControllerState = {\n isSignedIn: false,\n};\nconst metadata: StateMetadata<AuthenticationControllerState> = {\n isSignedIn: {\n persist: true,\n anonymous: true,\n },\n sessionData: {\n persist: true,\n anonymous: false,\n },\n};\n\n// Messenger Actions\ntype CreateActionsObj<Controller extends keyof AuthenticationController> = {\n [K in Controller]: {\n type: `${typeof controllerName}:${K}`;\n handler: AuthenticationController[K];\n };\n};\ntype ActionsObj = CreateActionsObj<\n | 'performSignIn'\n | 'performSignOut'\n | 'getBearerToken'\n | 'getSessionProfile'\n | 'isSignedIn'\n>;\nexport type Actions =\n | ActionsObj[keyof ActionsObj]\n | AuthenticationControllerGetStateAction;\nexport type AuthenticationControllerGetStateAction = ControllerGetStateAction<\n typeof controllerName,\n AuthenticationControllerState\n>;\nexport type AuthenticationControllerPerformSignIn = ActionsObj['performSignIn'];\nexport type AuthenticationControllerPerformSignOut =\n ActionsObj['performSignOut'];\nexport type AuthenticationControllerGetBearerToken =\n ActionsObj['getBearerToken'];\nexport type AuthenticationControllerGetSessionProfile =\n ActionsObj['getSessionProfile'];\nexport type AuthenticationControllerIsSignedIn = ActionsObj['isSignedIn'];\n\nexport type AuthenticationControllerStateChangeEvent =\n ControllerStateChangeEvent<\n typeof controllerName,\n AuthenticationControllerState\n >;\n\nexport type Events = AuthenticationControllerStateChangeEvent;\n\n// Allowed Actions\nexport type AllowedActions =\n | HandleSnapRequest\n | KeyringControllerGetStateAction;\n\nexport type AllowedEvents =\n | KeyringControllerLockEvent\n | KeyringControllerUnlockEvent;\n\n// Messenger\nexport type AuthenticationControllerMessenger = RestrictedMessenger<\n typeof controllerName,\n Actions | AllowedActions,\n Events | AllowedEvents,\n AllowedActions['type'],\n AllowedEvents['type']\n>;\n\n/**\n * Controller that enables authentication for restricted endpoints.\n * Used for Global Profile Syncing and Notifications\n */\nexport default class AuthenticationController extends BaseController<\n typeof controllerName,\n AuthenticationControllerState,\n AuthenticationControllerMessenger\n> {\n readonly #metametrics: MetaMetricsAuth;\n\n #isUnlocked = false;\n\n readonly #keyringController = {\n setupLockedStateSubscriptions: () => {\n const { isUnlocked } = this.messagingSystem.call(\n 'KeyringController:getState',\n );\n this.#isUnlocked = isUnlocked;\n\n this.messagingSystem.subscribe('KeyringController:unlock', () => {\n this.#isUnlocked = true;\n });\n\n this.messagingSystem.subscribe('KeyringController:lock', () => {\n this.#isUnlocked = false;\n });\n },\n };\n\n constructor({\n messenger,\n state,\n metametrics,\n }: {\n messenger: AuthenticationControllerMessenger;\n state?: AuthenticationControllerState;\n /**\n * Not using the Messaging System as we\n * do not want to tie this strictly to extension\n */\n metametrics: MetaMetricsAuth;\n }) {\n super({\n messenger,\n metadata,\n name: controllerName,\n state: { ...defaultState, ...state },\n });\n\n if (!metametrics) {\n throw new Error('`metametrics` field is required');\n }\n\n this.#metametrics = metametrics;\n\n this.#keyringController.setupLockedStateSubscriptions();\n this.#registerMessageHandlers();\n }\n\n /**\n * Constructor helper for registering this controller's messaging system\n * actions.\n */\n #registerMessageHandlers(): void {\n this.messagingSystem.registerActionHandler(\n 'AuthenticationController:getBearerToken',\n this.getBearerToken.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n 'AuthenticationController:getSessionProfile',\n this.getSessionProfile.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n 'AuthenticationController:isSignedIn',\n this.isSignedIn.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n 'AuthenticationController:performSignIn',\n this.performSignIn.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n 'AuthenticationController:performSignOut',\n this.performSignOut.bind(this),\n );\n }\n\n public async performSignIn(): Promise<string> {\n const { accessToken } = await this.#performAuthenticationFlow();\n return accessToken;\n }\n\n public performSignOut(): void {\n this.update((state) => {\n state.isSignedIn = false;\n state.sessionData = undefined;\n });\n }\n\n public async getBearerToken(): Promise<string> {\n this.#assertLoggedIn();\n\n if (this.#hasValidSession(this.state.sessionData)) {\n return this.state.sessionData.accessToken;\n }\n\n const { accessToken } = await this.#performAuthenticationFlow();\n return accessToken;\n }\n\n /**\n * Will return a session profile.\n * Throws if a user is not logged in.\n *\n * @returns profile for the session.\n */\n public async getSessionProfile(): Promise<SessionProfile> {\n this.#assertLoggedIn();\n\n if (this.#hasValidSession(this.state.sessionData)) {\n return this.state.sessionData.profile;\n }\n\n const { profile } = await this.#performAuthenticationFlow();\n return profile;\n }\n\n public isSignedIn(): boolean {\n return this.state.isSignedIn;\n }\n\n #assertLoggedIn(): void {\n if (!this.state.isSignedIn) {\n throw new Error(\n `${controllerName}: Unable to call method, user is not authenticated`,\n );\n }\n }\n\n async #performAuthenticationFlow(): Promise<{\n profile: SessionProfile;\n accessToken: string;\n }> {\n try {\n // 1. Nonce\n const publicKey = await this.#snapGetPublicKey();\n const nonce = await getNonce(publicKey);\n if (!nonce) {\n throw new Error(`Unable to get nonce`);\n }\n\n // 2. Login\n const rawMessage = createLoginRawMessage(nonce, publicKey);\n const signature = await this.#snapSignMessage(rawMessage);\n const loginResponse = await login(rawMessage, signature, {\n metametricsId: await this.#metametrics.getMetaMetricsId(),\n agent: this.#metametrics.agent,\n });\n if (!loginResponse?.token) {\n throw new Error(`Unable to login`);\n }\n\n const profile: SessionProfile = {\n identifierId: loginResponse.profile.identifier_id,\n profileId: loginResponse.profile.profile_id,\n };\n\n // 3. Trade for Access Token\n const accessToken = await getAccessToken(\n loginResponse.token,\n this.#metametrics.agent,\n );\n if (!accessToken) {\n throw new Error(`Unable to get Access Token`);\n }\n\n // Update Internal State\n this.update((state) => {\n state.isSignedIn = true;\n const expiresIn = new Date();\n expiresIn.setTime(expiresIn.getTime() + THIRTY_MIN_MS);\n state.sessionData = {\n profile,\n accessToken,\n expiresIn: expiresIn.toString(),\n };\n });\n\n return {\n profile,\n accessToken,\n };\n } catch (e) {\n console.error('Failed to authenticate', e);\n const errorMessage =\n e instanceof Error ? e.message : JSON.stringify(e ?? '');\n throw new Error(\n `${controllerName}: Failed to authenticate - ${errorMessage}`,\n );\n }\n }\n\n #hasValidSession(\n sessionData: SessionData | undefined,\n ): sessionData is SessionData {\n if (!sessionData) {\n return false;\n }\n\n const prevDate = Date.parse(sessionData.expiresIn);\n if (isNaN(prevDate)) {\n return false;\n }\n\n const currentDate = new Date();\n const diffMs = Math.abs(currentDate.getTime() - prevDate);\n\n return THIRTY_MIN_MS > diffMs;\n }\n\n #_snapPublicKeyCache: string | undefined;\n\n /**\n * Returns the auth snap public key.\n *\n * @returns The snap public key.\n */\n async #snapGetPublicKey(): Promise<string> {\n if (this.#_snapPublicKeyCache) {\n return this.#_snapPublicKeyCache;\n }\n\n if (!this.#isUnlocked) {\n throw new Error(\n '#snapGetPublicKey - unable to call snap, wallet is locked',\n );\n }\n\n const result = (await this.messagingSystem.call(\n 'SnapController:handleRequest',\n createSnapPublicKeyRequest(),\n )) as string;\n\n this.#_snapPublicKeyCache = result;\n\n return result;\n }\n\n #_snapSignMessageCache: Record<`metamask:${string}`, string> = {};\n\n /**\n * Signs a specific message using an underlying auth snap.\n *\n * @param message - A specific tagged message to sign.\n * @returns A Signature created by the snap.\n */\n async #snapSignMessage(message: `metamask:${string}`): Promise<string> {\n if (this.#_snapSignMessageCache[message]) {\n return this.#_snapSignMessageCache[message];\n }\n\n if (!this.#isUnlocked) {\n throw new Error(\n '#snapSignMessage - unable to call snap, wallet is locked',\n );\n }\n\n const result = (await this.messagingSystem.call(\n 'SnapController:handleRequest',\n createSnapSignMessageRequest(message),\n )) as string;\n\n this.#_snapSignMessageCache[message] = result;\n\n return result;\n }\n}\n"]}
@@ -1,31 +1,44 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getMockAuthAccessTokenResponse = exports.MOCK_OATH_TOKEN_RESPONSE = exports.getMockAuthLoginResponse = exports.MOCK_LOGIN_RESPONSE = exports.getMockAuthNonceResponse = exports.MOCK_JWT = exports.MOCK_NONCE = exports.MOCK_NONCE_RESPONSE = void 0;
4
- const auth_1 = require("../../../sdk/mocks/auth.cjs");
5
- exports.MOCK_NONCE_RESPONSE = auth_1.MOCK_NONCE_RESPONSE;
6
- exports.MOCK_NONCE = exports.MOCK_NONCE_RESPONSE.nonce;
7
- exports.MOCK_JWT = auth_1.MOCK_JWT;
3
+ exports.getMockAuthAccessTokenResponse = exports.MOCK_OATH_TOKEN_RESPONSE = exports.MOCK_ACCESS_TOKEN = exports.getMockAuthLoginResponse = exports.MOCK_LOGIN_RESPONSE = exports.MOCK_JWT = exports.getMockAuthNonceResponse = exports.MOCK_NONCE_RESPONSE = exports.MOCK_NONCE = void 0;
4
+ const services_1 = require("../services.cjs");
5
+ exports.MOCK_NONCE = '4cbfqzoQpcNxVImGv';
6
+ exports.MOCK_NONCE_RESPONSE = {
7
+ nonce: exports.MOCK_NONCE,
8
+ };
8
9
  const getMockAuthNonceResponse = () => {
9
10
  return {
10
- url: auth_1.MOCK_NONCE_URL,
11
+ url: services_1.AUTH_NONCE_ENDPOINT,
11
12
  requestMethod: 'GET',
12
13
  response: exports.MOCK_NONCE_RESPONSE,
13
14
  };
14
15
  };
15
16
  exports.getMockAuthNonceResponse = getMockAuthNonceResponse;
16
- exports.MOCK_LOGIN_RESPONSE = auth_1.MOCK_SRP_LOGIN_RESPONSE;
17
+ exports.MOCK_JWT = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
18
+ exports.MOCK_LOGIN_RESPONSE = {
19
+ token: exports.MOCK_JWT,
20
+ expires_in: new Date().toString(),
21
+ profile: {
22
+ identifier_id: 'MOCK_IDENTIFIER',
23
+ profile_id: 'MOCK_PROFILE_ID',
24
+ },
25
+ };
17
26
  const getMockAuthLoginResponse = () => {
18
27
  return {
19
- url: auth_1.MOCK_SRP_LOGIN_URL,
28
+ url: services_1.AUTH_LOGIN_ENDPOINT,
20
29
  requestMethod: 'POST',
21
30
  response: exports.MOCK_LOGIN_RESPONSE,
22
31
  };
23
32
  };
24
33
  exports.getMockAuthLoginResponse = getMockAuthLoginResponse;
25
- exports.MOCK_OATH_TOKEN_RESPONSE = auth_1.MOCK_OIDC_TOKEN_RESPONSE;
34
+ exports.MOCK_ACCESS_TOKEN = `MOCK_ACCESS_TOKEN-${exports.MOCK_JWT}`;
35
+ exports.MOCK_OATH_TOKEN_RESPONSE = {
36
+ access_token: exports.MOCK_ACCESS_TOKEN,
37
+ expires_in: new Date().getTime(),
38
+ };
26
39
  const getMockAuthAccessTokenResponse = () => {
27
40
  return {
28
- url: auth_1.MOCK_OIDC_TOKEN_URL,
41
+ url: services_1.OIDC_TOKENS_ENDPOINT,
29
42
  requestMethod: 'POST',
30
43
  response: exports.MOCK_OATH_TOKEN_RESPONSE,
31
44
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mockResponses.cjs","sourceRoot":"","sources":["../../../../src/controllers/authentication/mocks/mockResponses.ts"],"names":[],"mappings":";;;AAAA,sDAQiC;AAQpB,QAAA,mBAAmB,GAAG,0BAAuB,CAAC;AAC9C,QAAA,UAAU,GAAG,2BAAmB,CAAC,KAAK,CAAC;AACvC,QAAA,QAAQ,GAAG,eAAY,CAAC;AAE9B,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,OAAO;QACL,GAAG,EAAE,qBAAc;QACnB,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,2BAAmB;KACP,CAAC;AAC3B,CAAC,CAAC;AANW,QAAA,wBAAwB,4BAMnC;AAEW,QAAA,mBAAmB,GAAG,8BAA2B,CAAC;AAExD,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,OAAO;QACL,GAAG,EAAE,yBAAkB;QACvB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,2BAAmB;KACP,CAAC;AAC3B,CAAC,CAAC;AANW,QAAA,wBAAwB,4BAMnC;AAEW,QAAA,wBAAwB,GAAG,+BAA4B,CAAC;AAE9D,MAAM,8BAA8B,GAAG,GAAG,EAAE;IACjD,OAAO;QACL,GAAG,EAAE,0BAAmB;QACxB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,gCAAwB;KACZ,CAAC;AAC3B,CAAC,CAAC;AANW,QAAA,8BAA8B,kCAMzC","sourcesContent":["import {\n MOCK_NONCE_RESPONSE as SDK_MOCK_NONCE_RESPONSE,\n MOCK_JWT as SDK_MOCK_JWT,\n MOCK_SRP_LOGIN_RESPONSE as SDK_MOCK_SRP_LOGIN_RESPONSE,\n MOCK_OIDC_TOKEN_RESPONSE as SDK_MOCK_OIDC_TOKEN_RESPONSE,\n MOCK_NONCE_URL,\n MOCK_SRP_LOGIN_URL,\n MOCK_OIDC_TOKEN_URL,\n} from '../../../sdk/mocks/auth';\n\ntype MockResponse = {\n url: string;\n requestMethod: 'GET' | 'POST' | 'PUT';\n response: unknown;\n};\n\nexport const MOCK_NONCE_RESPONSE = SDK_MOCK_NONCE_RESPONSE;\nexport const MOCK_NONCE = MOCK_NONCE_RESPONSE.nonce;\nexport const MOCK_JWT = SDK_MOCK_JWT;\n\nexport const getMockAuthNonceResponse = () => {\n return {\n url: MOCK_NONCE_URL,\n requestMethod: 'GET',\n response: MOCK_NONCE_RESPONSE,\n } satisfies MockResponse;\n};\n\nexport const MOCK_LOGIN_RESPONSE = SDK_MOCK_SRP_LOGIN_RESPONSE;\n\nexport const getMockAuthLoginResponse = () => {\n return {\n url: MOCK_SRP_LOGIN_URL,\n requestMethod: 'POST',\n response: MOCK_LOGIN_RESPONSE,\n } satisfies MockResponse;\n};\n\nexport const MOCK_OATH_TOKEN_RESPONSE = SDK_MOCK_OIDC_TOKEN_RESPONSE;\n\nexport const getMockAuthAccessTokenResponse = () => {\n return {\n url: MOCK_OIDC_TOKEN_URL,\n requestMethod: 'POST',\n response: MOCK_OATH_TOKEN_RESPONSE,\n } satisfies MockResponse;\n};\n"]}
1
+ {"version":3,"file":"mockResponses.cjs","sourceRoot":"","sources":["../../../../src/controllers/authentication/mocks/mockResponses.ts"],"names":[],"mappings":";;;AAKA,8CAIqB;AAQR,QAAA,UAAU,GAAG,mBAAmB,CAAC;AACjC,QAAA,mBAAmB,GAAkB;IAChD,KAAK,EAAE,kBAAU;CAClB,CAAC;AAEK,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,OAAO;QACL,GAAG,EAAE,8BAAmB;QACxB,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,2BAAmB;KACP,CAAC;AAC3B,CAAC,CAAC;AANW,QAAA,wBAAwB,4BAMnC;AAEW,QAAA,QAAQ,GACnB,6JAA6J,CAAC;AACnJ,QAAA,mBAAmB,GAAkB;IAChD,KAAK,EAAE,gBAAQ;IACf,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;IACjC,OAAO,EAAE;QACP,aAAa,EAAE,iBAAiB;QAChC,UAAU,EAAE,iBAAiB;KAC9B;CACF,CAAC;AAEK,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,OAAO;QACL,GAAG,EAAE,8BAAmB;QACxB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,2BAAmB;KACP,CAAC;AAC3B,CAAC,CAAC;AANW,QAAA,wBAAwB,4BAMnC;AAEW,QAAA,iBAAiB,GAAG,qBAAqB,gBAAQ,EAAE,CAAC;AACpD,QAAA,wBAAwB,GAAuB;IAC1D,YAAY,EAAE,yBAAiB;IAE/B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;CACjC,CAAC;AAEK,MAAM,8BAA8B,GAAG,GAAG,EAAE;IACjD,OAAO;QACL,GAAG,EAAE,+BAAoB;QACzB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,gCAAwB;KACZ,CAAC;AAC3B,CAAC,CAAC;AANW,QAAA,8BAA8B,kCAMzC","sourcesContent":["import type {\n LoginResponse,\n NonceResponse,\n OAuthTokenResponse,\n} from '../services';\nimport {\n AUTH_LOGIN_ENDPOINT,\n AUTH_NONCE_ENDPOINT,\n OIDC_TOKENS_ENDPOINT,\n} from '../services';\n\ntype MockResponse = {\n url: string;\n requestMethod: 'GET' | 'POST' | 'PUT';\n response: unknown;\n};\n\nexport const MOCK_NONCE = '4cbfqzoQpcNxVImGv';\nexport const MOCK_NONCE_RESPONSE: NonceResponse = {\n nonce: MOCK_NONCE,\n};\n\nexport const getMockAuthNonceResponse = () => {\n return {\n url: AUTH_NONCE_ENDPOINT,\n requestMethod: 'GET',\n response: MOCK_NONCE_RESPONSE,\n } satisfies MockResponse;\n};\n\nexport const MOCK_JWT =\n 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';\nexport const MOCK_LOGIN_RESPONSE: LoginResponse = {\n token: MOCK_JWT,\n expires_in: new Date().toString(),\n profile: {\n identifier_id: 'MOCK_IDENTIFIER',\n profile_id: 'MOCK_PROFILE_ID',\n },\n};\n\nexport const getMockAuthLoginResponse = () => {\n return {\n url: AUTH_LOGIN_ENDPOINT,\n requestMethod: 'POST',\n response: MOCK_LOGIN_RESPONSE,\n } satisfies MockResponse;\n};\n\nexport const MOCK_ACCESS_TOKEN = `MOCK_ACCESS_TOKEN-${MOCK_JWT}`;\nexport const MOCK_OATH_TOKEN_RESPONSE: OAuthTokenResponse = {\n access_token: MOCK_ACCESS_TOKEN,\n\n expires_in: new Date().getTime(),\n};\n\nexport const getMockAuthAccessTokenResponse = () => {\n return {\n url: OIDC_TOKENS_ENDPOINT,\n requestMethod: 'POST',\n response: MOCK_OATH_TOKEN_RESPONSE,\n } satisfies MockResponse;\n};\n"]}
@@ -1,55 +1,23 @@
1
- export declare const MOCK_NONCE_RESPONSE: {
2
- nonce: string;
3
- identifier: string;
4
- expires_in: number;
5
- };
6
- export declare const MOCK_NONCE: string;
7
- export declare const MOCK_JWT = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImIwNzE2N2U2LWJjNWUtNDgyZC1hNjRhLWU1MjQ0MjY2MGU3NyJ9.eyJzdWIiOiI1MzE0ODc5YWM2NDU1OGI3OTQ5ZmI4NWIzMjg2ZjZjNjUwODAzYmFiMTY0Y2QyOWNmMmM3YzdmMjMzMWMwZTRlIiwiaWF0IjoxNzA2MTEzMDYyLCJleHAiOjE3NjkxODUwNjMsImlzcyI6ImF1dGgubWV0YW1hc2suaW8iLCJhdWQiOiJwb3J0Zm9saW8ubWV0YW1hc2suaW8ifQ.E5UL6oABNweS8t5a6IBTqTf7NLOJbrhJSmEcsr7kwLp4bGvcENJzACwnsHDkA6PlzfDV09ZhAGU_F3hlS0j-erbY0k0AFR-GAtyS7E9N02D8RgUDz5oDR65CKmzM8JilgFA8UvruJ6OJGogroaOSOqzRES_s8MjHpP47RJ9lXrUesajsbOudXbuksXWg5QmWip6LLvjwr8UUzcJzNQilyIhiEpo4WdzWM4R3VtTwr4rHnWEvtYnYCov1jmI2w3YQ48y0M-3Y9IOO0ov_vlITRrOnR7Y7fRUGLUFmU5msD8mNWRywjQFLHfJJ1yNP5aJ8TkuCK3sC6kcUH335IVvukQ";
1
+ import type { LoginResponse, NonceResponse, OAuthTokenResponse } from "../services.cjs";
2
+ export declare const MOCK_NONCE = "4cbfqzoQpcNxVImGv";
3
+ export declare const MOCK_NONCE_RESPONSE: NonceResponse;
8
4
  export declare const getMockAuthNonceResponse: () => {
9
5
  url: string;
10
6
  requestMethod: "GET";
11
- response: {
12
- nonce: string;
13
- identifier: string;
14
- expires_in: number;
15
- };
16
- };
17
- export declare const MOCK_LOGIN_RESPONSE: {
18
- token: string;
19
- expires_in: number;
20
- profile: {
21
- profile_id: string;
22
- metametrics_id: string;
23
- identifier_id: string;
24
- identifier_type: string;
25
- encrypted_storage_key: string;
26
- };
7
+ response: NonceResponse;
27
8
  };
9
+ export declare const MOCK_JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
10
+ export declare const MOCK_LOGIN_RESPONSE: LoginResponse;
28
11
  export declare const getMockAuthLoginResponse: () => {
29
12
  url: string;
30
13
  requestMethod: "POST";
31
- response: {
32
- token: string;
33
- expires_in: number;
34
- profile: {
35
- profile_id: string;
36
- metametrics_id: string;
37
- identifier_id: string;
38
- identifier_type: string;
39
- encrypted_storage_key: string;
40
- };
41
- };
42
- };
43
- export declare const MOCK_OATH_TOKEN_RESPONSE: {
44
- access_token: string;
45
- expires_in: number;
14
+ response: LoginResponse;
46
15
  };
16
+ export declare const MOCK_ACCESS_TOKEN = "MOCK_ACCESS_TOKEN-eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
17
+ export declare const MOCK_OATH_TOKEN_RESPONSE: OAuthTokenResponse;
47
18
  export declare const getMockAuthAccessTokenResponse: () => {
48
19
  url: string;
49
20
  requestMethod: "POST";
50
- response: {
51
- access_token: string;
52
- expires_in: number;
53
- };
21
+ response: OAuthTokenResponse;
54
22
  };
55
23
  //# sourceMappingURL=mockResponses.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mockResponses.d.cts","sourceRoot":"","sources":["../../../../src/controllers/authentication/mocks/mockResponses.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,mBAAmB;;;;CAA0B,CAAC;AAC3D,eAAO,MAAM,UAAU,QAA4B,CAAC;AACpD,eAAO,MAAM,QAAQ,upBAAe,CAAC;AAErC,eAAO,MAAM,wBAAwB;;;;;;;;CAMpC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;CAA8B,CAAC;AAE/D,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;CAMpC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;CAA+B,CAAC;AAErE,eAAO,MAAM,8BAA8B;;;;;;;CAM1C,CAAC"}
1
+ {"version":3,"file":"mockResponses.d.cts","sourceRoot":"","sources":["../../../../src/controllers/authentication/mocks/mockResponses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,kBAAkB,EACnB,wBAAoB;AAarB,eAAO,MAAM,UAAU,sBAAsB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,EAAE,aAEjC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;CAMpC,CAAC;AAEF,eAAO,MAAM,QAAQ,gKAC0I,CAAC;AAChK,eAAO,MAAM,mBAAmB,EAAE,aAOjC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;CAMpC,CAAC;AAEF,eAAO,MAAM,iBAAiB,kLAAkC,CAAC;AACjE,eAAO,MAAM,wBAAwB,EAAE,kBAItC,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;CAM1C,CAAC"}
@@ -1,55 +1,23 @@
1
- export declare const MOCK_NONCE_RESPONSE: {
2
- nonce: string;
3
- identifier: string;
4
- expires_in: number;
5
- };
6
- export declare const MOCK_NONCE: string;
7
- export declare const MOCK_JWT = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImIwNzE2N2U2LWJjNWUtNDgyZC1hNjRhLWU1MjQ0MjY2MGU3NyJ9.eyJzdWIiOiI1MzE0ODc5YWM2NDU1OGI3OTQ5ZmI4NWIzMjg2ZjZjNjUwODAzYmFiMTY0Y2QyOWNmMmM3YzdmMjMzMWMwZTRlIiwiaWF0IjoxNzA2MTEzMDYyLCJleHAiOjE3NjkxODUwNjMsImlzcyI6ImF1dGgubWV0YW1hc2suaW8iLCJhdWQiOiJwb3J0Zm9saW8ubWV0YW1hc2suaW8ifQ.E5UL6oABNweS8t5a6IBTqTf7NLOJbrhJSmEcsr7kwLp4bGvcENJzACwnsHDkA6PlzfDV09ZhAGU_F3hlS0j-erbY0k0AFR-GAtyS7E9N02D8RgUDz5oDR65CKmzM8JilgFA8UvruJ6OJGogroaOSOqzRES_s8MjHpP47RJ9lXrUesajsbOudXbuksXWg5QmWip6LLvjwr8UUzcJzNQilyIhiEpo4WdzWM4R3VtTwr4rHnWEvtYnYCov1jmI2w3YQ48y0M-3Y9IOO0ov_vlITRrOnR7Y7fRUGLUFmU5msD8mNWRywjQFLHfJJ1yNP5aJ8TkuCK3sC6kcUH335IVvukQ";
1
+ import type { LoginResponse, NonceResponse, OAuthTokenResponse } from "../services.mjs";
2
+ export declare const MOCK_NONCE = "4cbfqzoQpcNxVImGv";
3
+ export declare const MOCK_NONCE_RESPONSE: NonceResponse;
8
4
  export declare const getMockAuthNonceResponse: () => {
9
5
  url: string;
10
6
  requestMethod: "GET";
11
- response: {
12
- nonce: string;
13
- identifier: string;
14
- expires_in: number;
15
- };
16
- };
17
- export declare const MOCK_LOGIN_RESPONSE: {
18
- token: string;
19
- expires_in: number;
20
- profile: {
21
- profile_id: string;
22
- metametrics_id: string;
23
- identifier_id: string;
24
- identifier_type: string;
25
- encrypted_storage_key: string;
26
- };
7
+ response: NonceResponse;
27
8
  };
9
+ export declare const MOCK_JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
10
+ export declare const MOCK_LOGIN_RESPONSE: LoginResponse;
28
11
  export declare const getMockAuthLoginResponse: () => {
29
12
  url: string;
30
13
  requestMethod: "POST";
31
- response: {
32
- token: string;
33
- expires_in: number;
34
- profile: {
35
- profile_id: string;
36
- metametrics_id: string;
37
- identifier_id: string;
38
- identifier_type: string;
39
- encrypted_storage_key: string;
40
- };
41
- };
42
- };
43
- export declare const MOCK_OATH_TOKEN_RESPONSE: {
44
- access_token: string;
45
- expires_in: number;
14
+ response: LoginResponse;
46
15
  };
16
+ export declare const MOCK_ACCESS_TOKEN = "MOCK_ACCESS_TOKEN-eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
17
+ export declare const MOCK_OATH_TOKEN_RESPONSE: OAuthTokenResponse;
47
18
  export declare const getMockAuthAccessTokenResponse: () => {
48
19
  url: string;
49
20
  requestMethod: "POST";
50
- response: {
51
- access_token: string;
52
- expires_in: number;
53
- };
21
+ response: OAuthTokenResponse;
54
22
  };
55
23
  //# sourceMappingURL=mockResponses.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mockResponses.d.mts","sourceRoot":"","sources":["../../../../src/controllers/authentication/mocks/mockResponses.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,mBAAmB;;;;CAA0B,CAAC;AAC3D,eAAO,MAAM,UAAU,QAA4B,CAAC;AACpD,eAAO,MAAM,QAAQ,upBAAe,CAAC;AAErC,eAAO,MAAM,wBAAwB;;;;;;;;CAMpC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;CAA8B,CAAC;AAE/D,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;CAMpC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;CAA+B,CAAC;AAErE,eAAO,MAAM,8BAA8B;;;;;;;CAM1C,CAAC"}
1
+ {"version":3,"file":"mockResponses.d.mts","sourceRoot":"","sources":["../../../../src/controllers/authentication/mocks/mockResponses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,kBAAkB,EACnB,wBAAoB;AAarB,eAAO,MAAM,UAAU,sBAAsB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,EAAE,aAEjC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;CAMpC,CAAC;AAEF,eAAO,MAAM,QAAQ,gKAC0I,CAAC;AAChK,eAAO,MAAM,mBAAmB,EAAE,aAOjC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;CAMpC,CAAC;AAEF,eAAO,MAAM,iBAAiB,kLAAkC,CAAC;AACjE,eAAO,MAAM,wBAAwB,EAAE,kBAItC,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;CAM1C,CAAC"}
@@ -1,26 +1,39 @@
1
- import { MOCK_NONCE_RESPONSE as SDK_MOCK_NONCE_RESPONSE, MOCK_JWT as SDK_MOCK_JWT, MOCK_SRP_LOGIN_RESPONSE as SDK_MOCK_SRP_LOGIN_RESPONSE, MOCK_OIDC_TOKEN_RESPONSE as SDK_MOCK_OIDC_TOKEN_RESPONSE, MOCK_NONCE_URL, MOCK_SRP_LOGIN_URL, MOCK_OIDC_TOKEN_URL } from "../../../sdk/mocks/auth.mjs";
2
- export const MOCK_NONCE_RESPONSE = SDK_MOCK_NONCE_RESPONSE;
3
- export const MOCK_NONCE = MOCK_NONCE_RESPONSE.nonce;
4
- export const MOCK_JWT = SDK_MOCK_JWT;
1
+ import { AUTH_LOGIN_ENDPOINT, AUTH_NONCE_ENDPOINT, OIDC_TOKENS_ENDPOINT } from "../services.mjs";
2
+ export const MOCK_NONCE = '4cbfqzoQpcNxVImGv';
3
+ export const MOCK_NONCE_RESPONSE = {
4
+ nonce: MOCK_NONCE,
5
+ };
5
6
  export const getMockAuthNonceResponse = () => {
6
7
  return {
7
- url: MOCK_NONCE_URL,
8
+ url: AUTH_NONCE_ENDPOINT,
8
9
  requestMethod: 'GET',
9
10
  response: MOCK_NONCE_RESPONSE,
10
11
  };
11
12
  };
12
- export const MOCK_LOGIN_RESPONSE = SDK_MOCK_SRP_LOGIN_RESPONSE;
13
+ export const MOCK_JWT = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
14
+ export const MOCK_LOGIN_RESPONSE = {
15
+ token: MOCK_JWT,
16
+ expires_in: new Date().toString(),
17
+ profile: {
18
+ identifier_id: 'MOCK_IDENTIFIER',
19
+ profile_id: 'MOCK_PROFILE_ID',
20
+ },
21
+ };
13
22
  export const getMockAuthLoginResponse = () => {
14
23
  return {
15
- url: MOCK_SRP_LOGIN_URL,
24
+ url: AUTH_LOGIN_ENDPOINT,
16
25
  requestMethod: 'POST',
17
26
  response: MOCK_LOGIN_RESPONSE,
18
27
  };
19
28
  };
20
- export const MOCK_OATH_TOKEN_RESPONSE = SDK_MOCK_OIDC_TOKEN_RESPONSE;
29
+ export const MOCK_ACCESS_TOKEN = `MOCK_ACCESS_TOKEN-${MOCK_JWT}`;
30
+ export const MOCK_OATH_TOKEN_RESPONSE = {
31
+ access_token: MOCK_ACCESS_TOKEN,
32
+ expires_in: new Date().getTime(),
33
+ };
21
34
  export const getMockAuthAccessTokenResponse = () => {
22
35
  return {
23
- url: MOCK_OIDC_TOKEN_URL,
36
+ url: OIDC_TOKENS_ENDPOINT,
24
37
  requestMethod: 'POST',
25
38
  response: MOCK_OATH_TOKEN_RESPONSE,
26
39
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mockResponses.mjs","sourceRoot":"","sources":["../../../../src/controllers/authentication/mocks/mockResponses.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,IAAI,uBAAuB,EAC9C,QAAQ,IAAI,YAAY,EACxB,uBAAuB,IAAI,2BAA2B,EACtD,wBAAwB,IAAI,4BAA4B,EACxD,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACpB,oCAAgC;AAQjC,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AAC3D,MAAM,CAAC,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC;AACpD,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC;AAErC,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,OAAO;QACL,GAAG,EAAE,cAAc;QACnB,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,mBAAmB;KACP,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAE/D,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,OAAO;QACL,GAAG,EAAE,kBAAkB;QACvB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,mBAAmB;KACP,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,4BAA4B,CAAC;AAErE,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,EAAE;IACjD,OAAO;QACL,GAAG,EAAE,mBAAmB;QACxB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,wBAAwB;KACZ,CAAC;AAC3B,CAAC,CAAC","sourcesContent":["import {\n MOCK_NONCE_RESPONSE as SDK_MOCK_NONCE_RESPONSE,\n MOCK_JWT as SDK_MOCK_JWT,\n MOCK_SRP_LOGIN_RESPONSE as SDK_MOCK_SRP_LOGIN_RESPONSE,\n MOCK_OIDC_TOKEN_RESPONSE as SDK_MOCK_OIDC_TOKEN_RESPONSE,\n MOCK_NONCE_URL,\n MOCK_SRP_LOGIN_URL,\n MOCK_OIDC_TOKEN_URL,\n} from '../../../sdk/mocks/auth';\n\ntype MockResponse = {\n url: string;\n requestMethod: 'GET' | 'POST' | 'PUT';\n response: unknown;\n};\n\nexport const MOCK_NONCE_RESPONSE = SDK_MOCK_NONCE_RESPONSE;\nexport const MOCK_NONCE = MOCK_NONCE_RESPONSE.nonce;\nexport const MOCK_JWT = SDK_MOCK_JWT;\n\nexport const getMockAuthNonceResponse = () => {\n return {\n url: MOCK_NONCE_URL,\n requestMethod: 'GET',\n response: MOCK_NONCE_RESPONSE,\n } satisfies MockResponse;\n};\n\nexport const MOCK_LOGIN_RESPONSE = SDK_MOCK_SRP_LOGIN_RESPONSE;\n\nexport const getMockAuthLoginResponse = () => {\n return {\n url: MOCK_SRP_LOGIN_URL,\n requestMethod: 'POST',\n response: MOCK_LOGIN_RESPONSE,\n } satisfies MockResponse;\n};\n\nexport const MOCK_OATH_TOKEN_RESPONSE = SDK_MOCK_OIDC_TOKEN_RESPONSE;\n\nexport const getMockAuthAccessTokenResponse = () => {\n return {\n url: MOCK_OIDC_TOKEN_URL,\n requestMethod: 'POST',\n response: MOCK_OATH_TOKEN_RESPONSE,\n } satisfies MockResponse;\n};\n"]}
1
+ {"version":3,"file":"mockResponses.mjs","sourceRoot":"","sources":["../../../../src/controllers/authentication/mocks/mockResponses.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACrB,wBAAoB;AAQrB,MAAM,CAAC,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAC9C,MAAM,CAAC,MAAM,mBAAmB,GAAkB;IAChD,KAAK,EAAE,UAAU;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,OAAO;QACL,GAAG,EAAE,mBAAmB;QACxB,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,mBAAmB;KACP,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GACnB,6JAA6J,CAAC;AAChK,MAAM,CAAC,MAAM,mBAAmB,GAAkB;IAChD,KAAK,EAAE,QAAQ;IACf,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;IACjC,OAAO,EAAE;QACP,aAAa,EAAE,iBAAiB;QAChC,UAAU,EAAE,iBAAiB;KAC9B;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,OAAO;QACL,GAAG,EAAE,mBAAmB;QACxB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,mBAAmB;KACP,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,qBAAqB,QAAQ,EAAE,CAAC;AACjE,MAAM,CAAC,MAAM,wBAAwB,GAAuB;IAC1D,YAAY,EAAE,iBAAiB;IAE/B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,EAAE;IACjD,OAAO;QACL,GAAG,EAAE,oBAAoB;QACzB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,wBAAwB;KACZ,CAAC;AAC3B,CAAC,CAAC","sourcesContent":["import type {\n LoginResponse,\n NonceResponse,\n OAuthTokenResponse,\n} from '../services';\nimport {\n AUTH_LOGIN_ENDPOINT,\n AUTH_NONCE_ENDPOINT,\n OIDC_TOKENS_ENDPOINT,\n} from '../services';\n\ntype MockResponse = {\n url: string;\n requestMethod: 'GET' | 'POST' | 'PUT';\n response: unknown;\n};\n\nexport const MOCK_NONCE = '4cbfqzoQpcNxVImGv';\nexport const MOCK_NONCE_RESPONSE: NonceResponse = {\n nonce: MOCK_NONCE,\n};\n\nexport const getMockAuthNonceResponse = () => {\n return {\n url: AUTH_NONCE_ENDPOINT,\n requestMethod: 'GET',\n response: MOCK_NONCE_RESPONSE,\n } satisfies MockResponse;\n};\n\nexport const MOCK_JWT =\n 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';\nexport const MOCK_LOGIN_RESPONSE: LoginResponse = {\n token: MOCK_JWT,\n expires_in: new Date().toString(),\n profile: {\n identifier_id: 'MOCK_IDENTIFIER',\n profile_id: 'MOCK_PROFILE_ID',\n },\n};\n\nexport const getMockAuthLoginResponse = () => {\n return {\n url: AUTH_LOGIN_ENDPOINT,\n requestMethod: 'POST',\n response: MOCK_LOGIN_RESPONSE,\n } satisfies MockResponse;\n};\n\nexport const MOCK_ACCESS_TOKEN = `MOCK_ACCESS_TOKEN-${MOCK_JWT}`;\nexport const MOCK_OATH_TOKEN_RESPONSE: OAuthTokenResponse = {\n access_token: MOCK_ACCESS_TOKEN,\n\n expires_in: new Date().getTime(),\n};\n\nexport const getMockAuthAccessTokenResponse = () => {\n return {\n url: OIDC_TOKENS_ENDPOINT,\n requestMethod: 'POST',\n response: MOCK_OATH_TOKEN_RESPONSE,\n } satisfies MockResponse;\n};\n"]}