@metamask/profile-sync-controller 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -1
- package/auth/mocks/package.json +9 -0
- package/auth/package.json +9 -0
- package/dist/{chunk-BDO3VJEU.mjs → chunk-2CWF7ZTL.mjs} +2 -2
- package/dist/{chunk-7KMONAQI.mjs → chunk-4WXZXVLI.mjs} +7 -9
- package/dist/{chunk-7KMONAQI.mjs.map → chunk-4WXZXVLI.mjs.map} +1 -1
- package/dist/{chunk-VD2IGTS3.js → chunk-4ZGRRVMI.js} +5 -5
- package/dist/{chunk-Y7P3UH26.mjs → chunk-D4SNJOID.mjs} +31 -3
- package/dist/chunk-D4SNJOID.mjs.map +1 -0
- package/dist/{chunk-SMKTWM6I.js → chunk-DF24ZX4H.js} +2 -3
- package/dist/chunk-DF24ZX4H.js.map +1 -0
- package/dist/{chunk-NPH5AHLH.mjs → chunk-E7Z5TCQT.mjs} +54 -6
- package/dist/chunk-E7Z5TCQT.mjs.map +1 -0
- package/dist/chunk-EHZFPUJH.mjs +53 -0
- package/dist/chunk-EHZFPUJH.mjs.map +1 -0
- package/dist/{chunk-SLHAVOTE.js → chunk-EYZFHZR2.js} +11 -4
- package/dist/chunk-EYZFHZR2.js.map +1 -0
- package/dist/{chunk-DHKZ2NEF.js → chunk-F6BAOSH2.js} +35 -7
- package/dist/chunk-F6BAOSH2.js.map +1 -0
- package/dist/chunk-GQXYWBFK.js +28 -0
- package/dist/chunk-GQXYWBFK.js.map +1 -0
- package/dist/{chunk-3TE6M5TV.js → chunk-HMRRB4EX.js} +40 -7
- package/dist/chunk-HMRRB4EX.js.map +1 -0
- package/dist/{chunk-DRD22DR5.mjs → chunk-J7NSK6BO.mjs} +2 -2
- package/dist/chunk-JAQ5TPSZ.js +53 -0
- package/dist/chunk-JAQ5TPSZ.js.map +1 -0
- package/dist/{chunk-PSR2V3R4.js → chunk-JJ5BDCKD.js} +17 -19
- package/dist/chunk-JJ5BDCKD.js.map +1 -0
- package/dist/{chunk-G4NU4KP7.js → chunk-KIVBL6OM.js} +6 -6
- package/dist/{chunk-FQ5SDMRE.mjs → chunk-KTCSRECK.mjs} +2 -3
- package/dist/{chunk-FQ5SDMRE.mjs.map → chunk-KTCSRECK.mjs.map} +1 -1
- package/dist/chunk-LDYHGAP4.js +11 -0
- package/dist/chunk-LDYHGAP4.js.map +1 -0
- package/dist/{chunk-7SW3CC66.mjs → chunk-LGXQBALM.mjs} +2 -2
- package/dist/{chunk-5C53GKTU.js.map → chunk-LGXQBALM.mjs.map} +1 -1
- package/dist/{chunk-BOET676P.js → chunk-LLG4D2SC.js} +8 -8
- package/dist/{chunk-R2S3HIDN.js → chunk-LNECIW4K.js} +236 -6
- package/dist/chunk-LNECIW4K.js.map +1 -0
- package/dist/{chunk-FU7PSGFP.mjs → chunk-LYDHYB6I.mjs} +36 -3
- package/dist/chunk-LYDHYB6I.mjs.map +1 -0
- package/dist/{chunk-LNSB4L7K.mjs → chunk-M23ZCTKE.mjs} +235 -5
- package/dist/chunk-M23ZCTKE.mjs.map +1 -0
- package/dist/{chunk-ILIZJQ6X.mjs → chunk-NSSHFDIS.mjs} +10 -3
- package/dist/chunk-NSSHFDIS.mjs.map +1 -0
- package/dist/{chunk-BXPL7ZFX.js → chunk-PRYLTXW4.js} +15 -9
- package/dist/chunk-PRYLTXW4.js.map +1 -0
- package/dist/{chunk-XSSIP3PJ.js → chunk-Q5KTSMRE.js} +8 -8
- package/dist/chunk-QU4EXKJO.mjs +11 -0
- package/dist/chunk-QU4EXKJO.mjs.map +1 -0
- package/dist/{chunk-LDEIUP6J.mjs → chunk-UHP2Y32K.mjs} +9 -3
- package/dist/chunk-UHP2Y32K.mjs.map +1 -0
- package/dist/chunk-WAFY3R2F.js +103 -0
- package/dist/chunk-WAFY3R2F.js.map +1 -0
- package/dist/{chunk-VYZPOR47.mjs → chunk-YKOMKXG4.mjs} +4 -4
- package/dist/{chunk-WB6MUIML.mjs → chunk-YLURF2PF.mjs} +2 -2
- package/dist/{chunk-FUPEFLXB.js → chunk-ZMQRPWJN.js} +60 -12
- package/dist/chunk-ZMQRPWJN.js.map +1 -0
- package/dist/chunk-ZUPTMFEA.mjs +28 -0
- package/dist/chunk-ZUPTMFEA.mjs.map +1 -0
- package/dist/{chunk-5C53GKTU.js → chunk-ZX2KHPXG.js} +5 -5
- package/dist/chunk-ZX2KHPXG.js.map +1 -0
- package/dist/chunk-ZYYAQJ56.mjs +103 -0
- package/dist/chunk-ZYYAQJ56.mjs.map +1 -0
- package/dist/controllers/authentication/AuthenticationController.js +4 -21
- package/dist/controllers/authentication/AuthenticationController.mjs +3 -20
- package/dist/controllers/authentication/index.js +7 -22
- package/dist/controllers/authentication/index.mjs +6 -21
- package/dist/controllers/authentication/services.js +3 -20
- package/dist/controllers/authentication/services.mjs +2 -19
- package/dist/controllers/index.js +11 -21
- package/dist/controllers/index.mjs +10 -20
- package/dist/controllers/user-storage/UserStorageController.js +7 -17
- package/dist/controllers/user-storage/UserStorageController.mjs +6 -16
- package/dist/controllers/user-storage/accounts/constants.js +12 -0
- package/dist/controllers/user-storage/accounts/constants.js.map +1 -0
- package/dist/controllers/user-storage/accounts/constants.mjs +12 -0
- package/dist/controllers/user-storage/accounts/constants.mjs.map +1 -0
- package/dist/controllers/user-storage/accounts/user-storage.js +11 -0
- package/dist/controllers/user-storage/accounts/user-storage.js.map +1 -0
- package/dist/controllers/user-storage/accounts/user-storage.mjs +11 -0
- package/dist/controllers/user-storage/accounts/user-storage.mjs.map +1 -0
- package/dist/controllers/user-storage/index.js +10 -18
- package/dist/controllers/user-storage/index.mjs +10 -18
- package/dist/controllers/user-storage/schema.js +4 -2
- package/dist/controllers/user-storage/schema.mjs +5 -3
- package/dist/controllers/user-storage/services.js +6 -16
- package/dist/controllers/user-storage/services.mjs +5 -15
- package/dist/index.js +18 -16
- package/dist/index.mjs +17 -15
- package/dist/sdk/authentication-jwt-bearer/flow-siwe.js +4 -4
- package/dist/sdk/authentication-jwt-bearer/flow-siwe.mjs +3 -3
- package/dist/sdk/authentication-jwt-bearer/flow-srp.js +4 -4
- package/dist/sdk/authentication-jwt-bearer/flow-srp.mjs +3 -3
- package/dist/sdk/authentication-jwt-bearer/services.js +3 -3
- package/dist/sdk/authentication-jwt-bearer/services.mjs +2 -2
- package/dist/sdk/authentication.js +6 -6
- package/dist/sdk/authentication.mjs +5 -5
- package/dist/sdk/encryption.js +5 -3
- package/dist/sdk/encryption.mjs +6 -4
- package/dist/sdk/env.js +2 -2
- package/dist/sdk/env.mjs +1 -1
- package/dist/sdk/index.js +13 -15
- package/dist/sdk/index.mjs +12 -14
- package/dist/sdk/user-storage.js +5 -5
- package/dist/sdk/user-storage.mjs +4 -4
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/controllers/authentication/AuthenticationController.d.ts +9 -4
- package/dist/types/controllers/authentication/AuthenticationController.d.ts.map +1 -1
- package/dist/types/controllers/authentication/__fixtures__/mockResponses.d.ts +1 -1
- package/dist/types/controllers/authentication/__fixtures__/mockResponses.d.ts.map +1 -1
- package/dist/types/controllers/authentication/index.d.ts +2 -0
- package/dist/types/controllers/authentication/index.d.ts.map +1 -1
- package/dist/types/controllers/user-storage/UserStorageController.d.ts +48 -8
- package/dist/types/controllers/user-storage/UserStorageController.d.ts.map +1 -1
- package/dist/types/controllers/user-storage/__fixtures__/mockAccounts.d.ts +63 -0
- package/dist/types/controllers/user-storage/__fixtures__/mockAccounts.d.ts.map +1 -0
- package/dist/types/controllers/user-storage/__fixtures__/mockResponses.d.ts +10 -4
- package/dist/types/controllers/user-storage/__fixtures__/mockResponses.d.ts.map +1 -1
- package/dist/types/controllers/user-storage/__fixtures__/mockServices.d.ts +4 -2
- package/dist/types/controllers/user-storage/__fixtures__/mockServices.d.ts.map +1 -1
- package/dist/types/controllers/user-storage/__fixtures__/mockStorage.d.ts +1 -1
- package/dist/types/controllers/user-storage/__fixtures__/mockStorage.d.ts.map +1 -1
- package/dist/types/controllers/user-storage/accounts/constants.d.ts +4 -0
- package/dist/types/controllers/user-storage/accounts/constants.d.ts.map +1 -0
- package/dist/types/controllers/user-storage/accounts/user-storage.d.ts +32 -0
- package/dist/types/controllers/user-storage/accounts/user-storage.d.ts.map +1 -0
- package/dist/types/controllers/user-storage/index.d.ts +2 -0
- package/dist/types/controllers/user-storage/index.d.ts.map +1 -1
- package/dist/types/controllers/user-storage/schema.d.ts +13 -6
- package/dist/types/controllers/user-storage/schema.d.ts.map +1 -1
- package/dist/types/controllers/user-storage/services.d.ts +20 -4
- package/dist/types/controllers/user-storage/services.d.ts.map +1 -1
- package/dist/types/sdk/__fixtures__/mock-userstorage.d.ts +1 -0
- package/dist/types/sdk/__fixtures__/mock-userstorage.d.ts.map +1 -1
- package/dist/types/sdk/encryption.d.ts +3 -19
- package/dist/types/sdk/encryption.d.ts.map +1 -1
- package/dist/types/sdk/user-storage.d.ts +4 -3
- package/dist/types/sdk/user-storage.d.ts.map +1 -1
- package/package.json +37 -4
- package/user-storage/mocks/package.json +9 -0
- package/user-storage/package.json +9 -0
- package/dist/chunk-3TE6M5TV.js.map +0 -1
- package/dist/chunk-77LSWSGB.js +0 -81
- package/dist/chunk-77LSWSGB.js.map +0 -1
- package/dist/chunk-7SW3CC66.mjs.map +0 -1
- package/dist/chunk-B5DBQDB3.mjs +0 -140
- package/dist/chunk-B5DBQDB3.mjs.map +0 -1
- package/dist/chunk-BXPL7ZFX.js.map +0 -1
- package/dist/chunk-DHKZ2NEF.js.map +0 -1
- package/dist/chunk-FU7PSGFP.mjs.map +0 -1
- package/dist/chunk-FUPEFLXB.js.map +0 -1
- package/dist/chunk-ILIZJQ6X.mjs.map +0 -1
- package/dist/chunk-IQECLCH4.mjs +0 -81
- package/dist/chunk-IQECLCH4.mjs.map +0 -1
- package/dist/chunk-LDEIUP6J.mjs.map +0 -1
- package/dist/chunk-LNSB4L7K.mjs.map +0 -1
- package/dist/chunk-NPH5AHLH.mjs.map +0 -1
- package/dist/chunk-P4DUDLMY.js +0 -140
- package/dist/chunk-P4DUDLMY.js.map +0 -1
- package/dist/chunk-PSR2V3R4.js.map +0 -1
- package/dist/chunk-R2S3HIDN.js.map +0 -1
- package/dist/chunk-SLHAVOTE.js.map +0 -1
- package/dist/chunk-SMKTWM6I.js.map +0 -1
- package/dist/chunk-Y7P3UH26.mjs.map +0 -1
- /package/dist/{chunk-BDO3VJEU.mjs.map → chunk-2CWF7ZTL.mjs.map} +0 -0
- /package/dist/{chunk-VD2IGTS3.js.map → chunk-4ZGRRVMI.js.map} +0 -0
- /package/dist/{chunk-DRD22DR5.mjs.map → chunk-J7NSK6BO.mjs.map} +0 -0
- /package/dist/{chunk-G4NU4KP7.js.map → chunk-KIVBL6OM.js.map} +0 -0
- /package/dist/{chunk-BOET676P.js.map → chunk-LLG4D2SC.js.map} +0 -0
- /package/dist/{chunk-XSSIP3PJ.js.map → chunk-Q5KTSMRE.js.map} +0 -0
- /package/dist/{chunk-VYZPOR47.mjs.map → chunk-YKOMKXG4.mjs.map} +0 -0
- /package/dist/{chunk-WB6MUIML.mjs.map → chunk-YLURF2PF.mjs.map} +0 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkZX2KHPXGjs = require('./chunk-ZX2KHPXG.js');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
@@ -32,7 +32,7 @@ var metadata = {
|
|
|
32
32
|
anonymous: false
|
|
33
33
|
}
|
|
34
34
|
};
|
|
35
|
-
var _metametrics, _registerMessageHandlers, registerMessageHandlers_fn, _assertLoggedIn, assertLoggedIn_fn, _performAuthenticationFlow, performAuthenticationFlow_fn, _hasValidSession, hasValidSession_fn, __snapPublicKeyCache, _snapGetPublicKey, snapGetPublicKey_fn, __snapSignMessageCache, _snapSignMessage, snapSignMessage_fn;
|
|
35
|
+
var _metametrics, _isUnlocked, _keyringController, _registerMessageHandlers, registerMessageHandlers_fn, _assertLoggedIn, assertLoggedIn_fn, _performAuthenticationFlow, performAuthenticationFlow_fn, _hasValidSession, hasValidSession_fn, __snapPublicKeyCache, _snapGetPublicKey, snapGetPublicKey_fn, __snapSignMessageCache, _snapSignMessage, snapSignMessage_fn;
|
|
36
36
|
var AuthenticationController = class extends _basecontroller.BaseController {
|
|
37
37
|
constructor({
|
|
38
38
|
messenger,
|
|
@@ -67,12 +67,28 @@ var AuthenticationController = class extends _basecontroller.BaseController {
|
|
|
67
67
|
*/
|
|
68
68
|
_chunkIGY2S5BCjs.__privateAdd.call(void 0, this, _snapSignMessage);
|
|
69
69
|
_chunkIGY2S5BCjs.__privateAdd.call(void 0, this, _metametrics, void 0);
|
|
70
|
+
_chunkIGY2S5BCjs.__privateAdd.call(void 0, this, _isUnlocked, false);
|
|
71
|
+
_chunkIGY2S5BCjs.__privateAdd.call(void 0, this, _keyringController, {
|
|
72
|
+
setupLockedStateSubscriptions: () => {
|
|
73
|
+
const { isUnlocked } = this.messagingSystem.call(
|
|
74
|
+
"KeyringController:getState"
|
|
75
|
+
);
|
|
76
|
+
_chunkIGY2S5BCjs.__privateSet.call(void 0, this, _isUnlocked, isUnlocked);
|
|
77
|
+
this.messagingSystem.subscribe("KeyringController:unlock", () => {
|
|
78
|
+
_chunkIGY2S5BCjs.__privateSet.call(void 0, this, _isUnlocked, true);
|
|
79
|
+
});
|
|
80
|
+
this.messagingSystem.subscribe("KeyringController:lock", () => {
|
|
81
|
+
_chunkIGY2S5BCjs.__privateSet.call(void 0, this, _isUnlocked, false);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
});
|
|
70
85
|
_chunkIGY2S5BCjs.__privateAdd.call(void 0, this, __snapPublicKeyCache, void 0);
|
|
71
86
|
_chunkIGY2S5BCjs.__privateAdd.call(void 0, this, __snapSignMessageCache, {});
|
|
72
87
|
if (!metametrics) {
|
|
73
88
|
throw new Error("`metametrics` field is required");
|
|
74
89
|
}
|
|
75
90
|
_chunkIGY2S5BCjs.__privateSet.call(void 0, this, _metametrics, metametrics);
|
|
91
|
+
_chunkIGY2S5BCjs.__privateGet.call(void 0, this, _keyringController).setupLockedStateSubscriptions();
|
|
76
92
|
_chunkIGY2S5BCjs.__privateMethod.call(void 0, this, _registerMessageHandlers, registerMessageHandlers_fn).call(this);
|
|
77
93
|
}
|
|
78
94
|
async performSignIn() {
|
|
@@ -113,6 +129,8 @@ var AuthenticationController = class extends _basecontroller.BaseController {
|
|
|
113
129
|
}
|
|
114
130
|
};
|
|
115
131
|
_metametrics = new WeakMap();
|
|
132
|
+
_isUnlocked = new WeakMap();
|
|
133
|
+
_keyringController = new WeakMap();
|
|
116
134
|
_registerMessageHandlers = new WeakSet();
|
|
117
135
|
registerMessageHandlers_fn = function() {
|
|
118
136
|
this.messagingSystem.registerActionHandler(
|
|
@@ -148,13 +166,13 @@ _performAuthenticationFlow = new WeakSet();
|
|
|
148
166
|
performAuthenticationFlow_fn = async function() {
|
|
149
167
|
try {
|
|
150
168
|
const publicKey = await _chunkIGY2S5BCjs.__privateMethod.call(void 0, this, _snapGetPublicKey, snapGetPublicKey_fn).call(this);
|
|
151
|
-
const nonce = await
|
|
169
|
+
const nonce = await _chunkZX2KHPXGjs.getNonce.call(void 0, publicKey);
|
|
152
170
|
if (!nonce) {
|
|
153
171
|
throw new Error(`Unable to get nonce`);
|
|
154
172
|
}
|
|
155
|
-
const rawMessage =
|
|
173
|
+
const rawMessage = _chunkZX2KHPXGjs.createLoginRawMessage.call(void 0, nonce, publicKey);
|
|
156
174
|
const signature = await _chunkIGY2S5BCjs.__privateMethod.call(void 0, this, _snapSignMessage, snapSignMessage_fn).call(this, rawMessage);
|
|
157
|
-
const loginResponse = await
|
|
175
|
+
const loginResponse = await _chunkZX2KHPXGjs.login.call(void 0, rawMessage, signature, {
|
|
158
176
|
metametricsId: await _chunkIGY2S5BCjs.__privateGet.call(void 0, this, _metametrics).getMetaMetricsId(),
|
|
159
177
|
agent: _chunkIGY2S5BCjs.__privateGet.call(void 0, this, _metametrics).agent
|
|
160
178
|
});
|
|
@@ -165,7 +183,7 @@ performAuthenticationFlow_fn = async function() {
|
|
|
165
183
|
identifierId: loginResponse.profile.identifier_id,
|
|
166
184
|
profileId: loginResponse.profile.profile_id
|
|
167
185
|
};
|
|
168
|
-
const accessToken = await
|
|
186
|
+
const accessToken = await _chunkZX2KHPXGjs.getAccessToken.call(void 0,
|
|
169
187
|
loginResponse.token,
|
|
170
188
|
_chunkIGY2S5BCjs.__privateGet.call(void 0, this, _metametrics).agent
|
|
171
189
|
);
|
|
@@ -213,6 +231,11 @@ snapGetPublicKey_fn = async function() {
|
|
|
213
231
|
if (_chunkIGY2S5BCjs.__privateGet.call(void 0, this, __snapPublicKeyCache)) {
|
|
214
232
|
return _chunkIGY2S5BCjs.__privateGet.call(void 0, this, __snapPublicKeyCache);
|
|
215
233
|
}
|
|
234
|
+
if (!_chunkIGY2S5BCjs.__privateGet.call(void 0, this, _isUnlocked)) {
|
|
235
|
+
throw new Error(
|
|
236
|
+
"#snapGetPublicKey - unable to call snap, wallet is locked"
|
|
237
|
+
);
|
|
238
|
+
}
|
|
216
239
|
const result = await this.messagingSystem.call(
|
|
217
240
|
"SnapController:handleRequest",
|
|
218
241
|
_chunkYHGWG3EQjs.createSnapPublicKeyRequest.call(void 0, )
|
|
@@ -226,6 +249,11 @@ snapSignMessage_fn = async function(message) {
|
|
|
226
249
|
if (_chunkIGY2S5BCjs.__privateGet.call(void 0, this, __snapSignMessageCache)[message]) {
|
|
227
250
|
return _chunkIGY2S5BCjs.__privateGet.call(void 0, this, __snapSignMessageCache)[message];
|
|
228
251
|
}
|
|
252
|
+
if (!_chunkIGY2S5BCjs.__privateGet.call(void 0, this, _isUnlocked)) {
|
|
253
|
+
throw new Error(
|
|
254
|
+
"#snapSignMessage - unable to call snap, wallet is locked"
|
|
255
|
+
);
|
|
256
|
+
}
|
|
229
257
|
const result = await this.messagingSystem.call(
|
|
230
258
|
"SnapController:handleRequest",
|
|
231
259
|
_chunkYHGWG3EQjs.createSnapSignMessageRequest.call(void 0, message)
|
|
@@ -238,4 +266,4 @@ snapSignMessage_fn = async function(message) {
|
|
|
238
266
|
|
|
239
267
|
|
|
240
268
|
exports.defaultState = defaultState; exports.AuthenticationController = AuthenticationController;
|
|
241
|
-
//# sourceMappingURL=chunk-
|
|
269
|
+
//# sourceMappingURL=chunk-F6BAOSH2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/controllers/authentication/AuthenticationController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedControllerMessenger,\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 = RestrictedControllerMessenger<\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 #metametrics: MetaMetricsAuth;\n\n #isUnlocked = false;\n\n #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.#assertLoggedIn();\n\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"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
var _chunkJAQ5TPSZjs = require('./chunk-JAQ5TPSZ.js');
|
|
6
|
+
|
|
7
|
+
// src/controllers/user-storage/accounts/user-storage.ts
|
|
8
|
+
var isNameDefaultAccountName = (name) => {
|
|
9
|
+
return _chunkJAQ5TPSZjs.LOCALIZED_DEFAULT_ACCOUNT_NAMES.some((prefix) => {
|
|
10
|
+
return new RegExp(`^${prefix} ([0-9]+)$`, "u").test(name);
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var mapInternalAccountToUserStorageAccount = (internalAccount) => {
|
|
14
|
+
const { address, id, metadata } = internalAccount;
|
|
15
|
+
return {
|
|
16
|
+
[_chunkJAQ5TPSZjs.USER_STORAGE_VERSION_KEY]: _chunkJAQ5TPSZjs.USER_STORAGE_VERSION,
|
|
17
|
+
a: address,
|
|
18
|
+
i: id,
|
|
19
|
+
n: metadata.name,
|
|
20
|
+
nlu: metadata.nameLastUpdatedAt
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
exports.isNameDefaultAccountName = isNameDefaultAccountName; exports.mapInternalAccountToUserStorageAccount = mapInternalAccountToUserStorageAccount;
|
|
28
|
+
//# sourceMappingURL=chunk-GQXYWBFK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/controllers/user-storage/accounts/user-storage.ts"],"names":[],"mappings":";;;;;;;AAgCO,IAAM,2BAA2B,CAAC,SAAiB;AACxD,SAAO,gCAAgC,KAAK,CAAC,WAAW;AACtD,WAAO,IAAI,OAAO,IAAI,MAAM,cAAc,GAAG,EAAE,KAAK,IAAI;AAAA,EAC1D,CAAC;AACH;AAOO,IAAM,yCAAyC,CACpD,oBACuB;AACvB,QAAM,EAAE,SAAS,IAAI,SAAS,IAAI;AAClC,SAAO;AAAA,IACL,CAAC,wBAAwB,GAAG;AAAA,IAC5B,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG,SAAS;AAAA,IACZ,KAAK,SAAS;AAAA,EAChB;AACF","sourcesContent":["import type { InternalAccount } from '@metamask/keyring-api';\n\nimport {\n USER_STORAGE_VERSION_KEY,\n USER_STORAGE_VERSION,\n LOCALIZED_DEFAULT_ACCOUNT_NAMES,\n} from './constants';\n\nexport type UserStorageAccount = {\n /**\n * The Version 'v' of the User Storage.\n * NOTE - will allow us to support upgrade/downgrades in the future\n */\n [USER_STORAGE_VERSION_KEY]: typeof USER_STORAGE_VERSION;\n /** the id 'i' of the account */\n i: string;\n /** the address 'a' of the account */\n a: string;\n /** the name 'n' of the account */\n n: string;\n /** the nameLastUpdatedAt timestamp 'nlu' of the account */\n nlu?: number;\n};\n\n/**\n * Tells if the given name is a default account name.\n * Default account names are localized names that are automatically generated by the clients.\n *\n * @param name - the name to check\n * @returns true if the name is a default account name, false otherwise\n */\n\nexport const isNameDefaultAccountName = (name: string) => {\n return LOCALIZED_DEFAULT_ACCOUNT_NAMES.some((prefix) => {\n return new RegExp(`^${prefix} ([0-9]+)$`, 'u').test(name);\n });\n};\n\n/**\n * Map an internal account to a user storage account\n * @param internalAccount - An internal account\n * @returns A user storage account\n */\nexport const mapInternalAccountToUserStorageAccount = (\n internalAccount: InternalAccount,\n): UserStorageAccount => {\n const { address, id, metadata } = internalAccount;\n return {\n [USER_STORAGE_VERSION_KEY]: USER_STORAGE_VERSION,\n a: address,\n i: id,\n n: metadata.name,\n nlu: metadata.nameLastUpdatedAt,\n };\n};\n"]}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkEYZFHZR2js = require('./chunk-EYZFHZR2.js');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
var _chunkAK7OTIWAjs = require('./chunk-AK7OTIWA.js');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkDF24ZX4Hjs = require('./chunk-DF24ZX4H.js');
|
|
10
10
|
|
|
11
11
|
// src/controllers/user-storage/services.ts
|
|
12
12
|
var _loglevel = require('loglevel'); var _loglevel2 = _interopRequireDefault(_loglevel);
|
|
13
|
-
var ENV_URLS =
|
|
13
|
+
var ENV_URLS = _chunkDF24ZX4Hjs.getEnvUrls.call(void 0, "prd" /* PRD */);
|
|
14
14
|
var USER_STORAGE_API = ENV_URLS.userStorageApiUrl;
|
|
15
15
|
var USER_STORAGE_ENDPOINT = `${USER_STORAGE_API}/api/v1/userstorage`;
|
|
16
16
|
async function getUserStorage(opts) {
|
|
17
17
|
try {
|
|
18
18
|
const { bearerToken, path, storageKey } = opts;
|
|
19
|
-
const encryptedPath =
|
|
19
|
+
const encryptedPath = _chunkEYZFHZR2js.createEntryPath.call(void 0, path, storageKey);
|
|
20
20
|
const url = new URL(`${USER_STORAGE_ENDPOINT}${encryptedPath}`);
|
|
21
21
|
const userStorageResponse = await fetch(url.toString(), {
|
|
22
22
|
headers: {
|
|
@@ -45,10 +45,42 @@ async function getUserStorage(opts) {
|
|
|
45
45
|
return null;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
+
async function getUserStorageAllFeatureEntries(opts) {
|
|
49
|
+
try {
|
|
50
|
+
const { bearerToken, path } = opts;
|
|
51
|
+
const url = new URL(`${USER_STORAGE_ENDPOINT}/${path}`);
|
|
52
|
+
const userStorageResponse = await fetch(url.toString(), {
|
|
53
|
+
headers: {
|
|
54
|
+
"Content-Type": "application/json",
|
|
55
|
+
Authorization: `Bearer ${bearerToken}`
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
if (userStorageResponse.status === 404) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
if (userStorageResponse.status !== 200) {
|
|
62
|
+
throw new Error("Unable to get User Storage");
|
|
63
|
+
}
|
|
64
|
+
const userStorage = await userStorageResponse.json();
|
|
65
|
+
if (!Array.isArray(userStorage)) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const decryptedData = userStorage?.flatMap((entry) => {
|
|
69
|
+
if (!entry.Data) {
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
return _chunkAK7OTIWAjs.encryption_default.decryptString(entry.Data, opts.storageKey);
|
|
73
|
+
});
|
|
74
|
+
return decryptedData;
|
|
75
|
+
} catch (e) {
|
|
76
|
+
_loglevel2.default.error("Failed to get user storage", e);
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
48
80
|
async function upsertUserStorage(data, opts) {
|
|
49
81
|
const { bearerToken, path, storageKey } = opts;
|
|
50
82
|
const encryptedData = _chunkAK7OTIWAjs.encryption_default.encryptString(data, opts.storageKey);
|
|
51
|
-
const encryptedPath =
|
|
83
|
+
const encryptedPath = _chunkEYZFHZR2js.createEntryPath.call(void 0, path, storageKey);
|
|
52
84
|
const url = new URL(`${USER_STORAGE_ENDPOINT}${encryptedPath}`);
|
|
53
85
|
const res = await fetch(url.toString(), {
|
|
54
86
|
method: "PUT",
|
|
@@ -68,5 +100,6 @@ async function upsertUserStorage(data, opts) {
|
|
|
68
100
|
|
|
69
101
|
|
|
70
102
|
|
|
71
|
-
|
|
72
|
-
|
|
103
|
+
|
|
104
|
+
exports.USER_STORAGE_API = USER_STORAGE_API; exports.USER_STORAGE_ENDPOINT = USER_STORAGE_ENDPOINT; exports.getUserStorage = getUserStorage; exports.getUserStorageAllFeatureEntries = getUserStorageAllFeatureEntries; exports.upsertUserStorage = upsertUserStorage;
|
|
105
|
+
//# sourceMappingURL=chunk-HMRRB4EX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/controllers/user-storage/services.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,SAAS;AAUhB,IAAM,WAAW,0BAAkB;AAE5B,IAAM,mBAA2B,SAAS;AAC1C,IAAM,wBAAwB,GAAG,gBAAgB;AAsCxD,eAAsB,eACpB,MACwB;AACxB,MAAI;AACF,UAAM,EAAE,aAAa,MAAM,WAAW,IAAI;AAE1C,UAAM,gBAAgB,gBAAgB,MAAM,UAAU;AACtD,UAAM,MAAM,IAAI,IAAI,GAAG,qBAAqB,GAAG,aAAa,EAAE;AAE9D,UAAM,sBAAsB,MAAM,MAAM,IAAI,SAAS,GAAG;AAAA,MACtD,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,eAAe,UAAU,WAAW;AAAA,MACtC;AAAA,IACF,CAAC;AAGD,QAAI,oBAAoB,WAAW,KAAK;AACtC,aAAO;AAAA,IACT;AAEA,QAAI,oBAAoB,WAAW,KAAK;AACtC,YAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AAEA,UAAM,cACJ,MAAM,oBAAoB,KAAK;AACjC,UAAM,gBAAgB,aAAa,QAAQ;AAE3C,QAAI,CAAC,eAAe;AAClB,aAAO;AAAA,IACT;AAEA,UAAM,gBAAgB,mBAAW;AAAA,MAC/B;AAAA,MACA,KAAK;AAAA,IACP;AAEA,WAAO;AAAA,EACT,SAAS,GAAG;AACV,QAAI,MAAM,8BAA8B,CAAC;AACzC,WAAO;AAAA,EACT;AACF;AAQA,eAAsB,gCACpB,MAC0B;AAC1B,MAAI;AACF,UAAM,EAAE,aAAa,KAAK,IAAI;AAC9B,UAAM,MAAM,IAAI,IAAI,GAAG,qBAAqB,IAAI,IAAI,EAAE;AAEtD,UAAM,sBAAsB,MAAM,MAAM,IAAI,SAAS,GAAG;AAAA,MACtD,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,eAAe,UAAU,WAAW;AAAA,MACtC;AAAA,IACF,CAAC;AAGD,QAAI,oBAAoB,WAAW,KAAK;AACtC,aAAO;AAAA,IACT;AAEA,QAAI,oBAAoB,WAAW,KAAK;AACtC,YAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AAEA,UAAM,cACJ,MAAM,oBAAoB,KAAK;AAEjC,QAAI,CAAC,MAAM,QAAQ,WAAW,GAAG;AAC/B,aAAO;AAAA,IACT;AAEA,UAAM,gBAAgB,aAAa,QAAQ,CAAC,UAAU;AACpD,UAAI,CAAC,MAAM,MAAM;AACf,eAAO,CAAC;AAAA,MACV;AAEA,aAAO,mBAAW,cAAc,MAAM,MAAM,KAAK,UAAU;AAAA,IAC7D,CAAC;AAED,WAAO;AAAA,EACT,SAAS,GAAG;AACV,QAAI,MAAM,8BAA8B,CAAC;AACzC,WAAO;AAAA,EACT;AACF;AAQA,eAAsB,kBACpB,MACA,MACe;AACf,QAAM,EAAE,aAAa,MAAM,WAAW,IAAI;AAE1C,QAAM,gBAAgB,mBAAW,cAAc,MAAM,KAAK,UAAU;AACpE,QAAM,gBAAgB,gBAAgB,MAAM,UAAU;AACtD,QAAM,MAAM,IAAI,IAAI,GAAG,qBAAqB,GAAG,aAAa,EAAE;AAE9D,QAAM,MAAM,MAAM,MAAM,IAAI,SAAS,GAAG;AAAA,IACtC,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,gBAAgB;AAAA,MAChB,eAAe,UAAU,WAAW;AAAA,IACtC;AAAA,IACA,MAAM,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAAA,EAC9C,CAAC;AAED,MAAI,CAAC,IAAI,IAAI;AACX,UAAM,IAAI,MAAM,sCAAsC;AAAA,EACxD;AACF","sourcesContent":["import log from 'loglevel';\n\nimport { Env, getEnvUrls } from '../../sdk/env';\nimport encryption from './encryption';\nimport type {\n UserStoragePathWithFeatureAndKey,\n UserStoragePathWithFeatureOnly,\n} from './schema';\nimport { createEntryPath } from './schema';\n\nconst ENV_URLS = getEnvUrls(Env.PRD);\n\nexport const USER_STORAGE_API: string = ENV_URLS.userStorageApiUrl;\nexport const USER_STORAGE_ENDPOINT = `${USER_STORAGE_API}/api/v1/userstorage`;\n\n/**\n * This is the Server Response shape for a feature entry.\n */\nexport type GetUserStorageResponse = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n HashedKey: string;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n Data: string;\n};\n\nexport type GetUserStorageAllFeatureEntriesResponse = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n HashedKey: string;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n Data: string;\n}[];\n\nexport type UserStorageBaseOptions = {\n bearerToken: string;\n storageKey: string;\n};\n\nexport type UserStorageOptions = UserStorageBaseOptions & {\n path: UserStoragePathWithFeatureAndKey;\n};\n\nexport type UserStorageAllFeatureEntriesOptions = UserStorageBaseOptions & {\n path: UserStoragePathWithFeatureOnly;\n};\n\n/**\n * User Storage Service - Get Storage Entry.\n *\n * @param opts - User Storage Options\n * @returns The storage entry, or null if fails to find entry\n */\nexport async function getUserStorage(\n opts: UserStorageOptions,\n): Promise<string | null> {\n try {\n const { bearerToken, path, storageKey } = opts;\n\n const encryptedPath = createEntryPath(path, storageKey);\n const url = new URL(`${USER_STORAGE_ENDPOINT}${encryptedPath}`);\n\n const userStorageResponse = await fetch(url.toString(), {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${bearerToken}`,\n },\n });\n\n // Acceptable error - since indicates entry does not exist.\n if (userStorageResponse.status === 404) {\n return null;\n }\n\n if (userStorageResponse.status !== 200) {\n throw new Error('Unable to get User Storage');\n }\n\n const userStorage: GetUserStorageResponse | null =\n await userStorageResponse.json();\n const encryptedData = userStorage?.Data ?? null;\n\n if (!encryptedData) {\n return null;\n }\n\n const decryptedData = encryption.decryptString(\n encryptedData,\n opts.storageKey,\n );\n\n return decryptedData;\n } catch (e) {\n log.error('Failed to get user storage', e);\n return null;\n }\n}\n\n/**\n * User Storage Service - Get all storage entries for a specific feature.\n *\n * @param opts - User Storage Options\n * @returns The storage entry, or null if fails to find entry\n */\nexport async function getUserStorageAllFeatureEntries(\n opts: UserStorageAllFeatureEntriesOptions,\n): Promise<string[] | null> {\n try {\n const { bearerToken, path } = opts;\n const url = new URL(`${USER_STORAGE_ENDPOINT}/${path}`);\n\n const userStorageResponse = await fetch(url.toString(), {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${bearerToken}`,\n },\n });\n\n // Acceptable error - since indicates feature does not exist.\n if (userStorageResponse.status === 404) {\n return null;\n }\n\n if (userStorageResponse.status !== 200) {\n throw new Error('Unable to get User Storage');\n }\n\n const userStorage: GetUserStorageAllFeatureEntriesResponse | null =\n await userStorageResponse.json();\n\n if (!Array.isArray(userStorage)) {\n return null;\n }\n\n const decryptedData = userStorage?.flatMap((entry) => {\n if (!entry.Data) {\n return [];\n }\n\n return encryption.decryptString(entry.Data, opts.storageKey);\n });\n\n return decryptedData;\n } catch (e) {\n log.error('Failed to get user storage', e);\n return null;\n }\n}\n\n/**\n * User Storage Service - Set Storage Entry.\n *\n * @param data - data to store\n * @param opts - storage options\n */\nexport async function upsertUserStorage(\n data: string,\n opts: UserStorageOptions,\n): Promise<void> {\n const { bearerToken, path, storageKey } = opts;\n\n const encryptedData = encryption.encryptString(data, opts.storageKey);\n const encryptedPath = createEntryPath(path, storageKey);\n const url = new URL(`${USER_STORAGE_ENDPOINT}${encryptedPath}`);\n\n const res = await fetch(url.toString(), {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${bearerToken}`,\n },\n body: JSON.stringify({ data: encryptedData }),\n });\n\n if (!res.ok) {\n throw new Error('user-storage - unable to upsert data');\n }\n}\n"]}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
authenticate,
|
|
3
3
|
authorizeOIDC,
|
|
4
4
|
getNonce
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-YLURF2PF.mjs";
|
|
6
6
|
import {
|
|
7
7
|
getMetaMaskProviderEIP6963
|
|
8
8
|
} from "./chunk-5XSXZTED.mjs";
|
|
@@ -130,4 +130,4 @@ createSrpLoginRawMessage_fn = function(nonce, publicKey) {
|
|
|
130
130
|
export {
|
|
131
131
|
SRPJwtBearerAuth
|
|
132
132
|
};
|
|
133
|
-
//# sourceMappingURL=chunk-
|
|
133
|
+
//# sourceMappingURL=chunk-J7NSK6BO.mjs.map
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/controllers/user-storage/accounts/constants.ts
|
|
2
|
+
var USER_STORAGE_VERSION = "1";
|
|
3
|
+
var USER_STORAGE_VERSION_KEY = "v";
|
|
4
|
+
var LOCALIZED_DEFAULT_ACCOUNT_NAMES = [
|
|
5
|
+
"Account",
|
|
6
|
+
"\u1218\u1208\u12EB",
|
|
7
|
+
"\u0627\u0644\u062D\u0633\u0627\u0628",
|
|
8
|
+
"\u041F\u0440\u043E\u0444\u0438\u043B",
|
|
9
|
+
"\u0985\u09CD\u09AF\u09BE\u0995\u09BE\u0989\u09A8\u09CD\u099F",
|
|
10
|
+
"Compte",
|
|
11
|
+
"\xDA\u010Det",
|
|
12
|
+
"Konto",
|
|
13
|
+
"\u039B\u03BF\u03B3\u03B1\u03C1\u03B9\u03B1\u03C3\u03BC\u03CC\u03C2",
|
|
14
|
+
"Cuenta",
|
|
15
|
+
"\u062D\u0633\u0627\u0628",
|
|
16
|
+
"Tili",
|
|
17
|
+
"\u0A8F\u0A95\u0ABE\u0A89\u0AA8\u0ACD\u0A9F",
|
|
18
|
+
"\u05D7\u05E9\u05D1\u05D5\u05DF",
|
|
19
|
+
"\u0905\u0915\u093E\u0909\u0902\u091F",
|
|
20
|
+
"\u0916\u093E\u0924\u093E",
|
|
21
|
+
"Ra\u010Dun",
|
|
22
|
+
"Kont",
|
|
23
|
+
"Fi\xF3k",
|
|
24
|
+
"Akun",
|
|
25
|
+
"\u30A2\u30AB\u30A6\u30F3\u30C8",
|
|
26
|
+
"\u0C96\u0CBE\u0CA4\u0CC6",
|
|
27
|
+
"\uACC4\uC815",
|
|
28
|
+
"Paskyra",
|
|
29
|
+
"Konts",
|
|
30
|
+
"\u0D05\u0D15\u0D4D\u0D15\u0D57\u0D23\u0D4D\u0D1F\u0D4D",
|
|
31
|
+
"\u0916\u093E\u0924\u0947",
|
|
32
|
+
"Akaun",
|
|
33
|
+
"Conta",
|
|
34
|
+
"Cont",
|
|
35
|
+
"\u0421\u0447\u0435\u0442",
|
|
36
|
+
"\u043D\u0430\u043B\u043E\u0433",
|
|
37
|
+
"Akaunti",
|
|
38
|
+
"\u0B95\u0BA3\u0B95\u0BCD\u0B95\u0BC1",
|
|
39
|
+
"\u0C16\u0C3E\u0C24\u0C3E",
|
|
40
|
+
"\u0E1A\u0E31\u0E0D\u0E0A\u0E35",
|
|
41
|
+
"Hesap",
|
|
42
|
+
"\u041E\u0431\u043B\u0456\u043A\u043E\u0432\u0438\u0439 \u0437\u0430\u043F\u0438\u0441",
|
|
43
|
+
"T\xE0i kho\u1EA3n",
|
|
44
|
+
"\u8D26\u6237",
|
|
45
|
+
"\u5E33\u6236"
|
|
46
|
+
];
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
exports.USER_STORAGE_VERSION = USER_STORAGE_VERSION; exports.USER_STORAGE_VERSION_KEY = USER_STORAGE_VERSION_KEY; exports.LOCALIZED_DEFAULT_ACCOUNT_NAMES = LOCALIZED_DEFAULT_ACCOUNT_NAMES;
|
|
53
|
+
//# sourceMappingURL=chunk-JAQ5TPSZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/controllers/user-storage/accounts/constants.ts"],"names":[],"mappings":";AAAO,IAAM,uBAAuB;AAG7B,IAAM,2BAA0C;AAGhD,IAAM,kCAAkC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF","sourcesContent":["export const USER_STORAGE_VERSION = '1';\n\n// Force cast. We don't really care about the type here since we treat it as a unique symbol\nexport const USER_STORAGE_VERSION_KEY: unique symbol = 'v' as never;\n\n// We need this in order to know if an account is a default account or not when we do account syncing\nexport const LOCALIZED_DEFAULT_ACCOUNT_NAMES = [\n 'Account',\n 'መለያ',\n 'الحساب',\n 'Профил',\n 'অ্যাকাউন্ট',\n 'Compte',\n 'Účet',\n 'Konto',\n 'Λογαριασμός',\n 'Cuenta',\n 'حساب',\n 'Tili',\n 'એકાઉન્ટ',\n 'חשבון',\n 'अकाउंट',\n 'खाता',\n 'Račun',\n 'Kont',\n 'Fiók',\n 'Akun',\n 'アカウント',\n 'ಖಾತೆ',\n '계정',\n 'Paskyra',\n 'Konts',\n 'അക്കൗണ്ട്',\n 'खाते',\n 'Akaun',\n 'Conta',\n 'Cont',\n 'Счет',\n 'налог',\n 'Akaunti',\n 'கணக்கு',\n 'ఖాతా',\n 'บัญชี',\n 'Hesap',\n 'Обліковий запис',\n 'Tài khoản',\n '账户',\n '帳戶',\n] as const;\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkQ5KTSMREjs = require('./chunk-Q5KTSMRE.js');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkKIVBL6OMjs = require('./chunk-KIVBL6OM.js');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunk4ZGRRVMIjs = require('./chunk-4ZGRRVMI.js');
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var _chunkPBRUOBEQjs = require('./chunk-PBRUOBEQ.js');
|
|
@@ -20,17 +20,16 @@ var _chunkPQ5T4GHYjs = require('./chunk-PQ5T4GHY.js');
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
var
|
|
23
|
+
var _chunkZMQRPWJNjs = require('./chunk-ZMQRPWJN.js');
|
|
24
24
|
|
|
25
25
|
|
|
26
|
+
var _chunkT3FNDVE3js = require('./chunk-T3FNDVE3.js');
|
|
26
27
|
|
|
27
|
-
var _chunkP4DUDLMYjs = require('./chunk-P4DUDLMY.js');
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
var _chunkSMKTWM6Ijs = require('./chunk-SMKTWM6I.js');
|
|
32
|
+
var _chunkDF24ZX4Hjs = require('./chunk-DF24ZX4H.js');
|
|
34
33
|
|
|
35
34
|
|
|
36
35
|
|
|
@@ -48,27 +47,26 @@ var _chunkIGY2S5BCjs = require('./chunk-IGY2S5BC.js');
|
|
|
48
47
|
var sdk_exports = {};
|
|
49
48
|
_chunkIGY2S5BCjs.__export.call(void 0, sdk_exports, {
|
|
50
49
|
AuthType: () => _chunkPBRUOBEQjs.AuthType,
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
JwtBearerAuth: () => _chunkXSSIP3PJjs.JwtBearerAuth,
|
|
50
|
+
Env: () => _chunkDF24ZX4Hjs.Env,
|
|
51
|
+
JwtBearerAuth: () => _chunkQ5KTSMREjs.JwtBearerAuth,
|
|
54
52
|
MESSAGE_SIGNING_SNAP: () => _chunkPQ5T4GHYjs.MESSAGE_SIGNING_SNAP,
|
|
55
53
|
NonceRetrievalError: () => _chunkMBTBE4P5js.NonceRetrievalError,
|
|
56
54
|
NotFoundError: () => _chunkMBTBE4P5js.NotFoundError,
|
|
57
55
|
PairError: () => _chunkMBTBE4P5js.PairError,
|
|
58
|
-
Platform: () =>
|
|
59
|
-
SIWEJwtBearerAuth: () =>
|
|
56
|
+
Platform: () => _chunkDF24ZX4Hjs.Platform,
|
|
57
|
+
SIWEJwtBearerAuth: () => _chunkKIVBL6OMjs.SIWEJwtBearerAuth,
|
|
60
58
|
SNAP_ORIGIN: () => _chunkPQ5T4GHYjs.SNAP_ORIGIN,
|
|
61
|
-
SRPJwtBearerAuth: () =>
|
|
62
|
-
STORAGE_URL: () =>
|
|
59
|
+
SRPJwtBearerAuth: () => _chunk4ZGRRVMIjs.SRPJwtBearerAuth,
|
|
60
|
+
STORAGE_URL: () => _chunkZMQRPWJNjs.STORAGE_URL,
|
|
63
61
|
SignInError: () => _chunkMBTBE4P5js.SignInError,
|
|
64
62
|
UnsupportedAuthTypeError: () => _chunkMBTBE4P5js.UnsupportedAuthTypeError,
|
|
65
|
-
UserStorage: () =>
|
|
63
|
+
UserStorage: () => _chunkZMQRPWJNjs.UserStorage,
|
|
66
64
|
UserStorageError: () => _chunkMBTBE4P5js.UserStorageError,
|
|
67
65
|
ValidationError: () => _chunkMBTBE4P5js.ValidationError,
|
|
68
66
|
connectSnap: () => _chunkPQ5T4GHYjs.connectSnap,
|
|
69
|
-
createSHA256Hash: () =>
|
|
70
|
-
getEnvUrls: () =>
|
|
71
|
-
getOidcClientId: () =>
|
|
67
|
+
createSHA256Hash: () => _chunkT3FNDVE3js.createSHA256Hash,
|
|
68
|
+
getEnvUrls: () => _chunkDF24ZX4Hjs.getEnvUrls,
|
|
69
|
+
getOidcClientId: () => _chunkDF24ZX4Hjs.getOidcClientId,
|
|
72
70
|
getSnap: () => _chunkPQ5T4GHYjs.getSnap,
|
|
73
71
|
getSnaps: () => _chunkPQ5T4GHYjs.getSnaps
|
|
74
72
|
});
|
|
@@ -76,4 +74,4 @@ _chunkIGY2S5BCjs.__export.call(void 0, sdk_exports, {
|
|
|
76
74
|
|
|
77
75
|
|
|
78
76
|
exports.sdk_exports = sdk_exports;
|
|
79
|
-
//# sourceMappingURL=chunk-
|
|
77
|
+
//# sourceMappingURL=chunk-JJ5BDCKD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/sdk/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from './authentication';\nexport * from './user-storage';\nexport * from './env';\nexport * from './errors';\nexport * from './encryption';\nexport * from './utils/messaging-signing-snap-requests';\n"]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkLLG4D2SCjs = require('./chunk-LLG4D2SC.js');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
var _chunkDRB2MN4Tjs = require('./chunk-DRB2MN4T.js');
|
|
@@ -82,16 +82,16 @@ _login = new WeakSet();
|
|
|
82
82
|
login_fn = async function() {
|
|
83
83
|
_chunkIGY2S5BCjs.__privateMethod.call(void 0, this, _assertSigner, assertSigner_fn).call(this, _chunkIGY2S5BCjs.__privateGet.call(void 0, this, _signer));
|
|
84
84
|
const address = await this.getIdentifier();
|
|
85
|
-
const nonceRes = await
|
|
85
|
+
const nonceRes = await _chunkLLG4D2SCjs.getNonce.call(void 0, address, _chunkIGY2S5BCjs.__privateGet.call(void 0, this, _config).env);
|
|
86
86
|
const rawMessage = _chunkIGY2S5BCjs.__privateMethod.call(void 0, this, _createSiWELoginRawMessage, createSiWELoginRawMessage_fn).call(this, nonceRes.nonce);
|
|
87
87
|
const signature = await this.signMessage(rawMessage);
|
|
88
|
-
const authResponse = await
|
|
88
|
+
const authResponse = await _chunkLLG4D2SCjs.authenticate.call(void 0,
|
|
89
89
|
rawMessage,
|
|
90
90
|
signature,
|
|
91
91
|
_chunkIGY2S5BCjs.__privateGet.call(void 0, this, _config).type,
|
|
92
92
|
_chunkIGY2S5BCjs.__privateGet.call(void 0, this, _config).env
|
|
93
93
|
);
|
|
94
|
-
const tokenResponse = await
|
|
94
|
+
const tokenResponse = await _chunkLLG4D2SCjs.authorizeOIDC.call(void 0,
|
|
95
95
|
authResponse.token,
|
|
96
96
|
_chunkIGY2S5BCjs.__privateGet.call(void 0, this, _config).env,
|
|
97
97
|
_chunkIGY2S5BCjs.__privateGet.call(void 0, this, _config).platform
|
|
@@ -109,7 +109,7 @@ createSiWELoginRawMessage_fn = function(nonce) {
|
|
|
109
109
|
return new (0, _siwe.SiweMessage)({
|
|
110
110
|
domain: _chunkIGY2S5BCjs.__privateGet.call(void 0, this, _signer)?.domain,
|
|
111
111
|
address: _chunkIGY2S5BCjs.__privateGet.call(void 0, this, _signer)?.address,
|
|
112
|
-
uri:
|
|
112
|
+
uri: _chunkLLG4D2SCjs.SIWE_LOGIN_URL.call(void 0, _chunkIGY2S5BCjs.__privateGet.call(void 0, this, _config).env),
|
|
113
113
|
version: "1",
|
|
114
114
|
chainId: _chunkIGY2S5BCjs.__privateGet.call(void 0, this, _signer)?.chainId,
|
|
115
115
|
nonce,
|
|
@@ -126,4 +126,4 @@ assertSigner_fn = function(signer) {
|
|
|
126
126
|
|
|
127
127
|
|
|
128
128
|
exports.SIWEJwtBearerAuth = SIWEJwtBearerAuth;
|
|
129
|
-
//# sourceMappingURL=chunk-
|
|
129
|
+
//# sourceMappingURL=chunk-KIVBL6OM.js.map
|
|
@@ -53,8 +53,7 @@ function getOidcClientId(env, platform) {
|
|
|
53
53
|
["portfolio" /* PORTFOLIO */]: "35e1cd62-49c5-4be8-8b6e-a5212f2d2cfb",
|
|
54
54
|
["mobile" /* MOBILE */]: "75fa62a3-9ca0-4b91-9fe5-76bec86b0257",
|
|
55
55
|
["extension" /* EXTENSION */]: "1132f10a-b4e5-4390-a5f2-d9c6022db564",
|
|
56
|
-
["infura" /* INFURA */]: ""
|
|
57
|
-
// unset
|
|
56
|
+
["infura" /* INFURA */]: "fdde9417-e193-4d23-9943-a8346b18d097"
|
|
58
57
|
}
|
|
59
58
|
};
|
|
60
59
|
if (!clientIds[env]) {
|
|
@@ -74,4 +73,4 @@ export {
|
|
|
74
73
|
getEnvUrls,
|
|
75
74
|
getOidcClientId
|
|
76
75
|
};
|
|
77
|
-
//# sourceMappingURL=chunk-
|
|
76
|
+
//# sourceMappingURL=chunk-KTCSRECK.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sdk/env.ts"],"sourcesContent":["export enum Env {\n DEV = 'dev',\n UAT = 'uat',\n PRD = 'prd',\n}\n\nexport enum Platform {\n MOBILE = 'mobile',\n EXTENSION = 'extension',\n PORTFOLIO = 'portfolio',\n INFURA = 'infura',\n}\n\ntype EnvUrlsEntry = {\n authApiUrl: string;\n oidcApiUrl: string;\n userStorageApiUrl: string;\n};\n\nconst ENV_URLS: Record<Env, EnvUrlsEntry> = {\n dev: {\n authApiUrl: 'https://authentication.dev-api.cx.metamask.io',\n oidcApiUrl: 'https://oidc.dev-api.cx.metamask.io',\n userStorageApiUrl: 'https://user-storage.dev-api.cx.metamask.io',\n },\n uat: {\n authApiUrl: 'https://authentication.uat-api.cx.metamask.io',\n oidcApiUrl: 'https://oidc.uat-api.cx.metamask.io',\n userStorageApiUrl: 'https://user-storage.uat-api.cx.metamask.io',\n },\n prd: {\n authApiUrl: 'https://authentication.api.cx.metamask.io',\n oidcApiUrl: 'https://oidc.api.cx.metamask.io',\n userStorageApiUrl: 'https://user-storage.api.cx.metamask.io',\n },\n};\n\n/**\n * Validates and returns correct environment endpoints\n *\n * @param env - environment field\n * @returns the correct environment url\n * @throws on invalid environment passed\n */\nexport function getEnvUrls(env: Env): EnvUrlsEntry {\n if (!ENV_URLS[env]) {\n throw new Error('invalid environment configuration');\n }\n return ENV_URLS[env];\n}\n\n/**\n * Returns the valid OIDC Client ID (used during authorization)\n *\n * @param env - environment field\n * @param platform - platform field\n * @returns the OIDC client id for the environment\n */\nexport function getOidcClientId(env: Env, platform: Platform): string {\n const clientIds = {\n [Env.DEV]: {\n [Platform.PORTFOLIO]: 'c7ca94a0-5d52-4635-9502-1a50a9c410cc',\n [Platform.MOBILE]: 'e83c7cc9-267d-4fb4-8fec-f0e3bbe5ae8e',\n [Platform.EXTENSION]: 'f1a963d7-50dc-4cb5-8d81-f1f3654f0df3',\n [Platform.INFURA]: 'bd887006-0d55-481a-a395-5ff9a0dc52c9',\n },\n [Env.UAT]: {\n [Platform.PORTFOLIO]: '8f2dd4ac-db07-4819-9ba5-1ee0ec1b56d1',\n [Platform.MOBILE]: 'c3cfdcd2-51d6-4fae-ad2c-ff238c8fef53',\n [Platform.EXTENSION]: 'a9de167c-c9a6-43d8-af39-d301fd44c485',\n [Platform.INFURA]: '01929890-7002-4c97-9913-8f6c09a6d674',\n },\n [Env.PRD]: {\n [Platform.PORTFOLIO]: '35e1cd62-49c5-4be8-8b6e-a5212f2d2cfb',\n [Platform.MOBILE]: '75fa62a3-9ca0-4b91-9fe5-76bec86b0257',\n [Platform.EXTENSION]: '1132f10a-b4e5-4390-a5f2-d9c6022db564',\n [Platform.INFURA]: ''
|
|
1
|
+
{"version":3,"sources":["../src/sdk/env.ts"],"sourcesContent":["export enum Env {\n DEV = 'dev',\n UAT = 'uat',\n PRD = 'prd',\n}\n\nexport enum Platform {\n MOBILE = 'mobile',\n EXTENSION = 'extension',\n PORTFOLIO = 'portfolio',\n INFURA = 'infura',\n}\n\ntype EnvUrlsEntry = {\n authApiUrl: string;\n oidcApiUrl: string;\n userStorageApiUrl: string;\n};\n\nconst ENV_URLS: Record<Env, EnvUrlsEntry> = {\n dev: {\n authApiUrl: 'https://authentication.dev-api.cx.metamask.io',\n oidcApiUrl: 'https://oidc.dev-api.cx.metamask.io',\n userStorageApiUrl: 'https://user-storage.dev-api.cx.metamask.io',\n },\n uat: {\n authApiUrl: 'https://authentication.uat-api.cx.metamask.io',\n oidcApiUrl: 'https://oidc.uat-api.cx.metamask.io',\n userStorageApiUrl: 'https://user-storage.uat-api.cx.metamask.io',\n },\n prd: {\n authApiUrl: 'https://authentication.api.cx.metamask.io',\n oidcApiUrl: 'https://oidc.api.cx.metamask.io',\n userStorageApiUrl: 'https://user-storage.api.cx.metamask.io',\n },\n};\n\n/**\n * Validates and returns correct environment endpoints\n *\n * @param env - environment field\n * @returns the correct environment url\n * @throws on invalid environment passed\n */\nexport function getEnvUrls(env: Env): EnvUrlsEntry {\n if (!ENV_URLS[env]) {\n throw new Error('invalid environment configuration');\n }\n return ENV_URLS[env];\n}\n\n/**\n * Returns the valid OIDC Client ID (used during authorization)\n *\n * @param env - environment field\n * @param platform - platform field\n * @returns the OIDC client id for the environment\n */\nexport function getOidcClientId(env: Env, platform: Platform): string {\n const clientIds = {\n [Env.DEV]: {\n [Platform.PORTFOLIO]: 'c7ca94a0-5d52-4635-9502-1a50a9c410cc',\n [Platform.MOBILE]: 'e83c7cc9-267d-4fb4-8fec-f0e3bbe5ae8e',\n [Platform.EXTENSION]: 'f1a963d7-50dc-4cb5-8d81-f1f3654f0df3',\n [Platform.INFURA]: 'bd887006-0d55-481a-a395-5ff9a0dc52c9',\n },\n [Env.UAT]: {\n [Platform.PORTFOLIO]: '8f2dd4ac-db07-4819-9ba5-1ee0ec1b56d1',\n [Platform.MOBILE]: 'c3cfdcd2-51d6-4fae-ad2c-ff238c8fef53',\n [Platform.EXTENSION]: 'a9de167c-c9a6-43d8-af39-d301fd44c485',\n [Platform.INFURA]: '01929890-7002-4c97-9913-8f6c09a6d674',\n },\n [Env.PRD]: {\n [Platform.PORTFOLIO]: '35e1cd62-49c5-4be8-8b6e-a5212f2d2cfb',\n [Platform.MOBILE]: '75fa62a3-9ca0-4b91-9fe5-76bec86b0257',\n [Platform.EXTENSION]: '1132f10a-b4e5-4390-a5f2-d9c6022db564',\n [Platform.INFURA]: 'fdde9417-e193-4d23-9943-a8346b18d097',\n },\n };\n\n if (!clientIds[env]) {\n throw new Error(`invalid env ${env}: cannot determine oidc client id`);\n }\n\n if (!clientIds[env][platform]) {\n throw new Error(\n `invalid env ${env} and platform ${platform} combination: cannot determine oidc client id`,\n );\n }\n\n return clientIds[env][platform];\n}\n"],"mappings":";AAAO,IAAK,MAAL,kBAAKA,SAAL;AACL,EAAAA,KAAA,SAAM;AACN,EAAAA,KAAA,SAAM;AACN,EAAAA,KAAA,SAAM;AAHI,SAAAA;AAAA,GAAA;AAML,IAAK,WAAL,kBAAKC,cAAL;AACL,EAAAA,UAAA,YAAS;AACT,EAAAA,UAAA,eAAY;AACZ,EAAAA,UAAA,eAAY;AACZ,EAAAA,UAAA,YAAS;AAJC,SAAAA;AAAA,GAAA;AAaZ,IAAM,WAAsC;AAAA,EAC1C,KAAK;AAAA,IACH,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA,KAAK;AAAA,IACH,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA,KAAK;AAAA,IACH,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,mBAAmB;AAAA,EACrB;AACF;AASO,SAAS,WAAW,KAAwB;AACjD,MAAI,CAAC,SAAS,GAAG,GAAG;AAClB,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACrD;AACA,SAAO,SAAS,GAAG;AACrB;AASO,SAAS,gBAAgB,KAAU,UAA4B;AACpE,QAAM,YAAY;AAAA,IAChB,CAAC,eAAO,GAAG;AAAA,MACT,CAAC,2BAAkB,GAAG;AAAA,MACtB,CAAC,qBAAe,GAAG;AAAA,MACnB,CAAC,2BAAkB,GAAG;AAAA,MACtB,CAAC,qBAAe,GAAG;AAAA,IACrB;AAAA,IACA,CAAC,eAAO,GAAG;AAAA,MACT,CAAC,2BAAkB,GAAG;AAAA,MACtB,CAAC,qBAAe,GAAG;AAAA,MACnB,CAAC,2BAAkB,GAAG;AAAA,MACtB,CAAC,qBAAe,GAAG;AAAA,IACrB;AAAA,IACA,CAAC,eAAO,GAAG;AAAA,MACT,CAAC,2BAAkB,GAAG;AAAA,MACtB,CAAC,qBAAe,GAAG;AAAA,MACnB,CAAC,2BAAkB,GAAG;AAAA,MACtB,CAAC,qBAAe,GAAG;AAAA,IACrB;AAAA,EACF;AAEA,MAAI,CAAC,UAAU,GAAG,GAAG;AACnB,UAAM,IAAI,MAAM,eAAe,GAAG,mCAAmC;AAAA,EACvE;AAEA,MAAI,CAAC,UAAU,GAAG,EAAE,QAAQ,GAAG;AAC7B,UAAM,IAAI;AAAA,MACR,eAAe,GAAG,iBAAiB,QAAQ;AAAA,IAC7C;AAAA,EACF;AAEA,SAAO,UAAU,GAAG,EAAE,QAAQ;AAChC;","names":["Env","Platform"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkT3FNDVE3js = require('./chunk-T3FNDVE3.js');
|
|
4
|
+
|
|
5
|
+
// src/sdk/encryption.ts
|
|
6
|
+
var encryption_default2 = _chunkT3FNDVE3js.encryption_default;
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
exports.encryption_default = encryption_default2;
|
|
11
|
+
//# sourceMappingURL=chunk-LDYHGAP4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/sdk/encryption.ts"],"names":["encryption_default"],"mappings":";;;;;AAGA,IAAOA,sBAAQ","sourcesContent":["import encryption from '../controllers/user-storage/encryption/encryption';\n\nexport * from '../controllers/user-storage/encryption/encryption';\nexport default encryption;\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getEnvUrls,
|
|
3
3
|
getOidcClientId
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-KTCSRECK.mjs";
|
|
5
5
|
|
|
6
6
|
// src/controllers/authentication/services.ts
|
|
7
7
|
var ENV_URLS = getEnvUrls("prd" /* PRD */);
|
|
@@ -103,4 +103,4 @@ export {
|
|
|
103
103
|
getAccessToken,
|
|
104
104
|
createLoginRawMessage
|
|
105
105
|
};
|
|
106
|
-
//# sourceMappingURL=chunk-
|
|
106
|
+
//# sourceMappingURL=chunk-LGXQBALM.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/controllers/authentication/services.ts"],"
|
|
1
|
+
{"version":3,"sources":["../src/controllers/authentication/services.ts"],"sourcesContent":["import { Env, Platform, getEnvUrls, getOidcClientId } from '../../sdk/env';\n\nconst ENV_URLS = getEnvUrls(Env.PRD);\n\nconst AUTH_ENDPOINT: string = ENV_URLS.authApiUrl;\nexport const AUTH_NONCE_ENDPOINT = `${AUTH_ENDPOINT}/api/v2/nonce`;\nexport const AUTH_LOGIN_ENDPOINT = `${AUTH_ENDPOINT}/api/v2/srp/login`;\n\nconst OIDC_ENDPOINT: string = ENV_URLS.oidcApiUrl || '';\nexport const OIDC_TOKENS_ENDPOINT = `${OIDC_ENDPOINT}/oauth2/token`;\nconst OIDC_CLIENT_ID = (platform: 'mobile' | 'extension') => {\n if (platform === 'extension') {\n return getOidcClientId(Env.PRD, Platform.EXTENSION);\n }\n if (platform === 'mobile') {\n return getOidcClientId(Env.PRD, Platform.MOBILE);\n }\n\n throw new Error(`Unsupported platform - ${platform as string}`);\n};\nconst OIDC_GRANT_TYPE = 'urn:ietf:params:oauth:grant-type:jwt-bearer';\n\nexport type NonceResponse = {\n nonce: string;\n};\n\n/**\n * Auth Service - Get Nonce. Used for the initial JWTBearer flow\n *\n * @param publicKey - public key to associate a nonce with\n * @returns the nonce or null if failed\n */\nexport async function getNonce(publicKey: string): Promise<string | null> {\n const nonceUrl = new URL(AUTH_NONCE_ENDPOINT);\n nonceUrl.searchParams.set('identifier', publicKey);\n\n try {\n const nonceResponse = await fetch(nonceUrl.toString());\n if (!nonceResponse.ok) {\n return null;\n }\n\n const nonceJson: NonceResponse = await nonceResponse.json();\n return nonceJson?.nonce ?? null;\n } catch (e) {\n console.error('authentication-controller/services: unable to get nonce', e);\n return null;\n }\n}\n\n/**\n * The Login API Server Response Shape\n */\nexport type LoginResponse = {\n token: string;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n expires_in: string;\n /**\n * Contains anonymous information about the logged in profile.\n *\n * @property identifier_id - a deterministic unique identifier on the method used to sign in\n * @property profile_id - a unique id for a given profile\n * @property metametrics_id - an anonymous server id\n */\n profile: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n identifier_id: string;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n profile_id: string;\n };\n};\n\ntype ClientMetaMetrics = {\n metametricsId: string;\n agent: 'extension' | 'mobile';\n};\n\n/**\n * Auth Service - Login. Will perform login with a given signature and will return a single use JWT Token.\n *\n * @param rawMessage - the original message before signing\n * @param signature - the signed message\n * @param clientMetaMetrics - optional client metametrics id (to associate on backend)\n * @returns The Login Response\n */\nexport async function login(\n rawMessage: string,\n signature: string,\n clientMetaMetrics: ClientMetaMetrics,\n): Promise<LoginResponse | null> {\n try {\n const response = await fetch(AUTH_LOGIN_ENDPOINT, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n signature,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n raw_message: rawMessage,\n metametrics: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n metametrics_id: clientMetaMetrics.metametricsId,\n agent: clientMetaMetrics.agent,\n },\n }),\n });\n\n if (!response.ok) {\n return null;\n }\n\n const loginResponse: LoginResponse = await response.json();\n return loginResponse ?? null;\n } catch (e) {\n console.error('authentication-controller/services: unable to login', e);\n return null;\n }\n}\n\n/**\n * The Auth API Token Response Shape\n */\nexport type OAuthTokenResponse = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n access_token: string;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n expires_in: number;\n};\n\n/**\n * OIDC Service - Access Token. Trades the Auth Token for an access token (to be used for other authenticated endpoints)\n * NOTE - the access token is short lived, which means it is best practice to validate session before calling authenticated endpoints\n *\n * @param jwtToken - the JWT Auth Token, received from `/login`\n * @param platform - the OIDC platform to retrieve access token\n * @returns JWT Access token to store and use on authorized endpoints.\n */\nexport async function getAccessToken(\n jwtToken: string,\n platform: ClientMetaMetrics['agent'],\n): Promise<string | null> {\n const headers = new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded',\n });\n\n const urlEncodedBody = new URLSearchParams();\n urlEncodedBody.append('grant_type', OIDC_GRANT_TYPE);\n urlEncodedBody.append('client_id', OIDC_CLIENT_ID(platform));\n urlEncodedBody.append('assertion', jwtToken);\n\n try {\n const response = await fetch(OIDC_TOKENS_ENDPOINT, {\n method: 'POST',\n headers,\n body: urlEncodedBody.toString(),\n });\n\n if (!response.ok) {\n return null;\n }\n\n const accessTokenResponse: OAuthTokenResponse = await response.json();\n return accessTokenResponse?.access_token ?? null;\n } catch (e) {\n console.error(\n 'authentication-controller/services: unable to get access token',\n e,\n );\n return null;\n }\n}\n\n/**\n * Utility to create the raw login message for the JWT bearer flow (via SRP)\n *\n * @param nonce - nonce received from `/nonce` endpoint\n * @param publicKey - public key used to retrieve nonce and for message signing\n * @returns Raw Message which will be used for signing & logging in.\n */\nexport function createLoginRawMessage(\n nonce: string,\n publicKey: string,\n): `metamask:${string}:${string}` {\n return `metamask:${nonce}:${publicKey}` as const;\n}\n"],"mappings":";;;;;;AAEA,IAAM,WAAW,0BAAkB;AAEnC,IAAM,gBAAwB,SAAS;AAChC,IAAM,sBAAsB,GAAG,aAAa;AAC5C,IAAM,sBAAsB,GAAG,aAAa;AAEnD,IAAM,gBAAwB,SAAS,cAAc;AAC9C,IAAM,uBAAuB,GAAG,aAAa;AACpD,IAAM,iBAAiB,CAAC,aAAqC;AAC3D,MAAI,aAAa,aAAa;AAC5B,WAAO,4DAA2C;AAAA,EACpD;AACA,MAAI,aAAa,UAAU;AACzB,WAAO,sDAAwC;AAAA,EACjD;AAEA,QAAM,IAAI,MAAM,0BAA0B,QAAkB,EAAE;AAChE;AACA,IAAM,kBAAkB;AAYxB,eAAsB,SAAS,WAA2C;AACxE,QAAM,WAAW,IAAI,IAAI,mBAAmB;AAC5C,WAAS,aAAa,IAAI,cAAc,SAAS;AAEjD,MAAI;AACF,UAAM,gBAAgB,MAAM,MAAM,SAAS,SAAS,CAAC;AACrD,QAAI,CAAC,cAAc,IAAI;AACrB,aAAO;AAAA,IACT;AAEA,UAAM,YAA2B,MAAM,cAAc,KAAK;AAC1D,WAAO,WAAW,SAAS;AAAA,EAC7B,SAAS,GAAG;AACV,YAAQ,MAAM,2DAA2D,CAAC;AAC1E,WAAO;AAAA,EACT;AACF;AAqCA,eAAsB,MACpB,YACA,WACA,mBAC+B;AAC/B,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,qBAAqB;AAAA,MAChD,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM,KAAK,UAAU;AAAA,QACnB;AAAA;AAAA,QAEA,aAAa;AAAA,QACb,aAAa;AAAA;AAAA,UAEX,gBAAgB,kBAAkB;AAAA,UAClC,OAAO,kBAAkB;AAAA,QAC3B;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,aAAO;AAAA,IACT;AAEA,UAAM,gBAA+B,MAAM,SAAS,KAAK;AACzD,WAAO,iBAAiB;AAAA,EAC1B,SAAS,GAAG;AACV,YAAQ,MAAM,uDAAuD,CAAC;AACtE,WAAO;AAAA,EACT;AACF;AAoBA,eAAsB,eACpB,UACA,UACwB;AACxB,QAAM,UAAU,IAAI,QAAQ;AAAA,IAC1B,gBAAgB;AAAA,EAClB,CAAC;AAED,QAAM,iBAAiB,IAAI,gBAAgB;AAC3C,iBAAe,OAAO,cAAc,eAAe;AACnD,iBAAe,OAAO,aAAa,eAAe,QAAQ,CAAC;AAC3D,iBAAe,OAAO,aAAa,QAAQ;AAE3C,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,sBAAsB;AAAA,MACjD,QAAQ;AAAA,MACR;AAAA,MACA,MAAM,eAAe,SAAS;AAAA,IAChC,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,aAAO;AAAA,IACT;AAEA,UAAM,sBAA0C,MAAM,SAAS,KAAK;AACpE,WAAO,qBAAqB,gBAAgB;AAAA,EAC9C,SAAS,GAAG;AACV,YAAQ;AAAA,MACN;AAAA,MACA;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;AASO,SAAS,sBACd,OACA,WACgC;AAChC,SAAO,YAAY,KAAK,IAAI,SAAS;AACvC;","names":[]}
|