@metamask/profile-sync-controller 0.2.1 → 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 +34 -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-WWQ65CZY.mjs → chunk-D4SNJOID.mjs} +2 -2
- 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-KW3X4TT5.js → chunk-F6BAOSH2.js} +6 -6
- 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-JENTMRXO.js → chunk-LNECIW4K.js} +214 -8
- 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-QE5X2BT3.mjs → chunk-M23ZCTKE.mjs} +212 -6
- 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-MNVUKRZC.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-CJLDMVV3.mjs → chunk-UHP2Y32K.mjs} +9 -3
- package/dist/chunk-UHP2Y32K.mjs.map +1 -0
- package/dist/{chunk-4DQF2YNS.js → chunk-WAFY3R2F.js} +41 -16
- 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-XMYWJQNH.mjs → chunk-ZYYAQJ56.mjs} +38 -13
- 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 +6 -3
- 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 -10
- 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/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 -6
- 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-4DQF2YNS.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-CJLDMVV3.mjs.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-JENTMRXO.js.map +0 -1
- package/dist/chunk-KW3X4TT5.js.map +0 -1
- package/dist/chunk-MNVUKRZC.js.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-QE5X2BT3.mjs.map +0 -1
- package/dist/chunk-SLHAVOTE.js.map +0 -1
- package/dist/chunk-SMKTWM6I.js.map +0 -1
- package/dist/chunk-WWQ65CZY.mjs.map +0 -1
- package/dist/chunk-XMYWJQNH.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
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkLNECIW4Kjs = require('./chunk-LNECIW4K.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkHMRRB4EXjs = require('./chunk-HMRRB4EX.js');
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkEYZFHZR2js = require('./chunk-EYZFHZR2.js');
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
var _chunkAK7OTIWAjs = require('./chunk-AK7OTIWA.js');
|
|
@@ -22,11 +22,12 @@ var _chunkIGY2S5BCjs = require('./chunk-IGY2S5BC.js');
|
|
|
22
22
|
// src/controllers/user-storage/index.ts
|
|
23
23
|
var user_storage_exports = {};
|
|
24
24
|
_chunkIGY2S5BCjs.__export.call(void 0, user_storage_exports, {
|
|
25
|
-
Controller: () =>
|
|
25
|
+
Controller: () => _chunkLNECIW4Kjs.UserStorageController,
|
|
26
26
|
Encryption: () => _chunkT3FNDVE3js.encryption_default,
|
|
27
27
|
Mocks: () => fixtures_exports,
|
|
28
28
|
createSHA256Hash: () => _chunkT3FNDVE3js.createSHA256Hash,
|
|
29
|
-
|
|
29
|
+
default: () => user_storage_default,
|
|
30
|
+
defaultState: () => _chunkLNECIW4Kjs.defaultState
|
|
30
31
|
});
|
|
31
32
|
|
|
32
33
|
// src/controllers/user-storage/__fixtures__/index.ts
|
|
@@ -36,7 +37,8 @@ _chunkIGY2S5BCjs.__export.call(void 0, fixtures_exports, {
|
|
|
36
37
|
MOCK_STORAGE_DATA: () => MOCK_STORAGE_DATA,
|
|
37
38
|
MOCK_STORAGE_KEY: () => MOCK_STORAGE_KEY,
|
|
38
39
|
MOCK_STORAGE_KEY_SIGNATURE: () => MOCK_STORAGE_KEY_SIGNATURE,
|
|
39
|
-
|
|
40
|
+
getMockUserStorageAllFeatureEntriesResponse: () => getMockUserStorageAllFeatureEntriesResponse,
|
|
41
|
+
getMockUserStorageEndpoint: () => getMockUserStorageEndpoint,
|
|
40
42
|
getMockUserStorageGetResponse: () => getMockUserStorageGetResponse,
|
|
41
43
|
getMockUserStoragePutResponse: () => getMockUserStoragePutResponse
|
|
42
44
|
});
|
|
@@ -48,31 +50,54 @@ var MOCK_STORAGE_DATA = JSON.stringify({ hello: "world" });
|
|
|
48
50
|
var MOCK_ENCRYPTED_STORAGE_DATA = () => _chunkAK7OTIWAjs.encryption_default.encryptString(MOCK_STORAGE_DATA, MOCK_STORAGE_KEY);
|
|
49
51
|
|
|
50
52
|
// src/controllers/user-storage/__fixtures__/mockResponses.ts
|
|
51
|
-
var
|
|
52
|
-
"
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
var getMockUserStorageEndpoint = (path) => {
|
|
54
|
+
if (path.split(".").length === 1) {
|
|
55
|
+
return `${_chunkHMRRB4EXjs.USER_STORAGE_ENDPOINT}/${path}`;
|
|
56
|
+
}
|
|
57
|
+
return `${_chunkHMRRB4EXjs.USER_STORAGE_ENDPOINT}${_chunkEYZFHZR2js.createEntryPath.call(void 0,
|
|
58
|
+
path,
|
|
59
|
+
MOCK_STORAGE_KEY
|
|
60
|
+
)}`;
|
|
61
|
+
};
|
|
55
62
|
var MOCK_GET_USER_STORAGE_RESPONSE = () => ({
|
|
56
63
|
HashedKey: "HASHED_KEY",
|
|
57
64
|
Data: MOCK_ENCRYPTED_STORAGE_DATA()
|
|
58
65
|
});
|
|
59
|
-
var
|
|
66
|
+
var MOCK_GET_USER_STORAGE_ALL_FEATURE_ENTRIES_RESPONSE = () => [
|
|
67
|
+
{
|
|
68
|
+
HashedKey: "HASHED_KEY",
|
|
69
|
+
Data: MOCK_ENCRYPTED_STORAGE_DATA()
|
|
70
|
+
}
|
|
71
|
+
];
|
|
72
|
+
var getMockUserStorageGetResponse = (path = "notifications.notificationSettings") => {
|
|
60
73
|
return {
|
|
61
|
-
url:
|
|
74
|
+
url: getMockUserStorageEndpoint(path),
|
|
62
75
|
requestMethod: "GET",
|
|
63
76
|
response: MOCK_GET_USER_STORAGE_RESPONSE()
|
|
64
77
|
};
|
|
65
78
|
};
|
|
66
|
-
var
|
|
79
|
+
var getMockUserStorageAllFeatureEntriesResponse = (path = "notifications") => {
|
|
80
|
+
return {
|
|
81
|
+
url: getMockUserStorageEndpoint(path),
|
|
82
|
+
requestMethod: "GET",
|
|
83
|
+
response: MOCK_GET_USER_STORAGE_ALL_FEATURE_ENTRIES_RESPONSE()
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
var getMockUserStoragePutResponse = (path = "notifications.notificationSettings") => {
|
|
67
87
|
return {
|
|
68
|
-
url:
|
|
88
|
+
url: getMockUserStorageEndpoint(path),
|
|
69
89
|
requestMethod: "PUT",
|
|
70
90
|
response: null
|
|
71
91
|
};
|
|
72
92
|
};
|
|
73
93
|
|
|
94
|
+
// src/controllers/user-storage/index.ts
|
|
95
|
+
var UserStorageController2 = _chunkLNECIW4Kjs.UserStorageController;
|
|
96
|
+
var user_storage_default = UserStorageController2;
|
|
97
|
+
|
|
98
|
+
|
|
74
99
|
|
|
75
100
|
|
|
76
101
|
|
|
77
|
-
exports.fixtures_exports = fixtures_exports; exports.user_storage_exports = user_storage_exports;
|
|
78
|
-
//# sourceMappingURL=chunk-
|
|
102
|
+
exports.fixtures_exports = fixtures_exports; exports.user_storage_default = user_storage_default; exports.user_storage_exports = user_storage_exports;
|
|
103
|
+
//# sourceMappingURL=chunk-WAFY3R2F.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/controllers/user-storage/index.ts","../src/controllers/user-storage/__fixtures__/index.ts","../src/controllers/user-storage/__fixtures__/mockStorage.ts","../src/controllers/user-storage/__fixtures__/mockResponses.ts"],"names":["encryption_default","UserStorageController"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEO,IAAM,6BAA6B;AACnC,IAAM,mBAAmB,iBAAiB,0BAA0B;AACpE,IAAM,oBAAoB,KAAK,UAAU,EAAE,OAAO,QAAQ,CAAC;AAI3D,IAAM,8BAA8B,MACzCA,oBAAW,cAAc,mBAAmB,gBAAgB;;;ACSvD,IAAM,6BAA6B,CACxC,SACG;AACH,MAAI,KAAK,MAAM,GAAG,EAAE,WAAW,GAAG;AAChC,WAAO,GAAG,qBAAqB,IAAI,IAAI;AAAA,EACzC;AAEA,SAAO,GAAG,qBAAqB,GAAG;AAAA,IAChC;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,IAAM,iCAAiC,OAA+B;AAAA,EACpE,WAAW;AAAA,EACX,MAAM,4BAA4B;AACpC;AAEA,IAAM,qDACJ,MAA+C;AAAA,EAC7C;AAAA,IACE,WAAW;AAAA,IACX,MAAM,4BAA4B;AAAA,EACpC;AACF;AAEK,IAAM,gCAAgC,CAC3C,OAAyC,yCACtC;AACH,SAAO;AAAA,IACL,KAAK,2BAA2B,IAAI;AAAA,IACpC,eAAe;AAAA,IACf,UAAU,+BAA+B;AAAA,EAC3C;AACF;AAEO,IAAM,8CAA8C,CACzD,OAAuC,oBACpC;AACH,SAAO;AAAA,IACL,KAAK,2BAA2B,IAAI;AAAA,IACpC,eAAe;AAAA,IACf,UAAU,mDAAmD;AAAA,EAC/D;AACF;AAEO,IAAM,gCAAgC,CAC3C,OAAyC,yCACtC;AACH,SAAO;AAAA,IACL,KAAK,2BAA2B,IAAI;AAAA,IACpC,eAAe;AAAA,IACf,UAAU;AAAA,EACZ;AACF;;;AHtEA,IAAMC,yBAAwB;AAE9B,IAAO,uBAAQA","sourcesContent":["import Controller from './UserStorageController';\n\nconst UserStorageController = Controller;\nexport { Controller };\nexport default UserStorageController;\nexport * from './UserStorageController';\nexport * from './encryption';\nexport * as Mocks from './__fixtures__';\n","export * from './mockResponses';\nexport * from './mockStorage';\n","import encryption, { createSHA256Hash } from '../encryption';\n\nexport const MOCK_STORAGE_KEY_SIGNATURE = 'mockStorageKey';\nexport const MOCK_STORAGE_KEY = createSHA256Hash(MOCK_STORAGE_KEY_SIGNATURE);\nexport const MOCK_STORAGE_DATA = JSON.stringify({ hello: 'world' });\n\n// NOTE - using encryption.encryptString directly in fixtures causes issues on mobile.\n// This is because this fixture is getting added in at run time. Will be improved once we support multiple exports\nexport const MOCK_ENCRYPTED_STORAGE_DATA = () =>\n encryption.encryptString(MOCK_STORAGE_DATA, MOCK_STORAGE_KEY);\n","import type {\n UserStoragePathWithFeatureAndKey,\n UserStoragePathWithFeatureOnly,\n} from '../schema';\nimport { createEntryPath } from '../schema';\nimport type {\n GetUserStorageAllFeatureEntriesResponse,\n GetUserStorageResponse,\n} from '../services';\nimport { USER_STORAGE_ENDPOINT } from '../services';\nimport { MOCK_ENCRYPTED_STORAGE_DATA, MOCK_STORAGE_KEY } from './mockStorage';\n\ntype MockResponse = {\n url: string;\n requestMethod: 'GET' | 'POST' | 'PUT';\n response: unknown;\n};\n\nexport const getMockUserStorageEndpoint = (\n path: UserStoragePathWithFeatureAndKey | UserStoragePathWithFeatureOnly,\n) => {\n if (path.split('.').length === 1) {\n return `${USER_STORAGE_ENDPOINT}/${path}`;\n }\n\n return `${USER_STORAGE_ENDPOINT}${createEntryPath(\n path as UserStoragePathWithFeatureAndKey,\n MOCK_STORAGE_KEY,\n )}`;\n};\n\nconst MOCK_GET_USER_STORAGE_RESPONSE = (): GetUserStorageResponse => ({\n HashedKey: 'HASHED_KEY',\n Data: MOCK_ENCRYPTED_STORAGE_DATA(),\n});\n\nconst MOCK_GET_USER_STORAGE_ALL_FEATURE_ENTRIES_RESPONSE =\n (): GetUserStorageAllFeatureEntriesResponse => [\n {\n HashedKey: 'HASHED_KEY',\n Data: MOCK_ENCRYPTED_STORAGE_DATA(),\n },\n ];\n\nexport const getMockUserStorageGetResponse = (\n path: UserStoragePathWithFeatureAndKey = 'notifications.notificationSettings',\n) => {\n return {\n url: getMockUserStorageEndpoint(path),\n requestMethod: 'GET',\n response: MOCK_GET_USER_STORAGE_RESPONSE(),\n } satisfies MockResponse;\n};\n\nexport const getMockUserStorageAllFeatureEntriesResponse = (\n path: UserStoragePathWithFeatureOnly = 'notifications',\n) => {\n return {\n url: getMockUserStorageEndpoint(path),\n requestMethod: 'GET',\n response: MOCK_GET_USER_STORAGE_ALL_FEATURE_ENTRIES_RESPONSE(),\n } satisfies MockResponse;\n};\n\nexport const getMockUserStoragePutResponse = (\n path: UserStoragePathWithFeatureAndKey = 'notifications.notificationSettings',\n) => {\n return {\n url: getMockUserStorageEndpoint(path),\n requestMethod: 'PUT',\n response: null,\n } satisfies MockResponse;\n};\n"]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SIWEJwtBearerAuth
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-2CWF7ZTL.mjs";
|
|
4
4
|
import {
|
|
5
5
|
SRPJwtBearerAuth
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-J7NSK6BO.mjs";
|
|
7
7
|
import {
|
|
8
8
|
getNonce,
|
|
9
9
|
pairIdentifiers
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-YLURF2PF.mjs";
|
|
11
11
|
import {
|
|
12
12
|
getMetaMaskProviderEIP6963
|
|
13
13
|
} from "./chunk-5XSXZTED.mjs";
|
|
@@ -117,4 +117,4 @@ assertSIWE_fn = function(type, sdk) {
|
|
|
117
117
|
export {
|
|
118
118
|
JwtBearerAuth
|
|
119
119
|
};
|
|
120
|
-
//# sourceMappingURL=chunk-
|
|
120
|
+
//# sourceMappingURL=chunk-YKOMKXG4.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getEnvUrls,
|
|
3
3
|
getOidcClientId
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-KTCSRECK.mjs";
|
|
5
5
|
import {
|
|
6
6
|
NonceRetrievalError,
|
|
7
7
|
PairError,
|
|
@@ -154,4 +154,4 @@ export {
|
|
|
154
154
|
authorizeOIDC,
|
|
155
155
|
authenticate
|
|
156
156
|
};
|
|
157
|
-
//# sourceMappingURL=chunk-
|
|
157
|
+
//# sourceMappingURL=chunk-YLURF2PF.mjs.map
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkEYZFHZR2js = require('./chunk-EYZFHZR2.js');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
var _chunkLDYHGAP4js = require('./chunk-LDYHGAP4.js');
|
|
6
7
|
|
|
7
|
-
var _chunkP4DUDLMYjs = require('./chunk-P4DUDLMY.js');
|
|
8
8
|
|
|
9
|
+
var _chunkT3FNDVE3js = require('./chunk-T3FNDVE3.js');
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
|
|
12
|
+
var _chunkDF24ZX4Hjs = require('./chunk-DF24ZX4H.js');
|
|
11
13
|
|
|
12
14
|
|
|
13
15
|
|
|
@@ -18,12 +20,13 @@ var _chunkMBTBE4P5js = require('./chunk-MBTBE4P5.js');
|
|
|
18
20
|
var _chunkIGY2S5BCjs = require('./chunk-IGY2S5BC.js');
|
|
19
21
|
|
|
20
22
|
// src/sdk/user-storage.ts
|
|
21
|
-
var STORAGE_URL = (env, encryptedPath) => `${
|
|
22
|
-
var _upsertUserStorage, upsertUserStorage_fn, _getUserStorage, getUserStorage_fn, _createEntryKey, createEntryKey_fn, _getAuthorizationHeader, getAuthorizationHeader_fn;
|
|
23
|
+
var STORAGE_URL = (env, encryptedPath) => `${_chunkDF24ZX4Hjs.getEnvUrls.call(void 0, env).userStorageApiUrl}/api/v1/userstorage/${encryptedPath}`;
|
|
24
|
+
var _upsertUserStorage, upsertUserStorage_fn, _getUserStorage, getUserStorage_fn, _getUserStorageAllFeatureEntries, getUserStorageAllFeatureEntries_fn, _createEntryKey, createEntryKey_fn, _getAuthorizationHeader, getAuthorizationHeader_fn;
|
|
23
25
|
var UserStorage = class {
|
|
24
26
|
constructor(config, options) {
|
|
25
27
|
_chunkIGY2S5BCjs.__privateAdd.call(void 0, this, _upsertUserStorage);
|
|
26
28
|
_chunkIGY2S5BCjs.__privateAdd.call(void 0, this, _getUserStorage);
|
|
29
|
+
_chunkIGY2S5BCjs.__privateAdd.call(void 0, this, _getUserStorageAllFeatureEntries);
|
|
27
30
|
_chunkIGY2S5BCjs.__privateAdd.call(void 0, this, _createEntryKey);
|
|
28
31
|
// TODO: Either fix this lint violation or explain why it's necessary to ignore.
|
|
29
32
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
@@ -38,6 +41,9 @@ var UserStorage = class {
|
|
|
38
41
|
async getItem(path) {
|
|
39
42
|
return _chunkIGY2S5BCjs.__privateMethod.call(void 0, this, _getUserStorage, getUserStorage_fn).call(this, path);
|
|
40
43
|
}
|
|
44
|
+
async getAllFeatureItems(path) {
|
|
45
|
+
return _chunkIGY2S5BCjs.__privateMethod.call(void 0, this, _getUserStorageAllFeatureEntries, getUserStorageAllFeatureEntries_fn).call(this, path);
|
|
46
|
+
}
|
|
41
47
|
async getStorageKey() {
|
|
42
48
|
const storageKey = await this.options.storage?.getStorageKey();
|
|
43
49
|
if (storageKey) {
|
|
@@ -47,7 +53,7 @@ var UserStorage = class {
|
|
|
47
53
|
const storageKeySignature = await this.config.auth.signMessage(
|
|
48
54
|
`metamask:${userProfile.profileId}`
|
|
49
55
|
);
|
|
50
|
-
const hashedStorageKeySignature =
|
|
56
|
+
const hashedStorageKeySignature = _chunkT3FNDVE3js.createSHA256Hash.call(void 0, storageKeySignature);
|
|
51
57
|
await this.options.storage?.setStorageKey(hashedStorageKeySignature);
|
|
52
58
|
return hashedStorageKeySignature;
|
|
53
59
|
}
|
|
@@ -57,8 +63,8 @@ upsertUserStorage_fn = async function(path, data) {
|
|
|
57
63
|
try {
|
|
58
64
|
const headers = await _chunkIGY2S5BCjs.__privateMethod.call(void 0, this, _getAuthorizationHeader, getAuthorizationHeader_fn).call(this);
|
|
59
65
|
const storageKey = await this.getStorageKey();
|
|
60
|
-
const encryptedData =
|
|
61
|
-
const encryptedPath =
|
|
66
|
+
const encryptedData = _chunkLDYHGAP4js.encryption_default.encryptString(data, storageKey);
|
|
67
|
+
const encryptedPath = _chunkEYZFHZR2js.createEntryPath.call(void 0, path, storageKey);
|
|
62
68
|
const url = new URL(STORAGE_URL(this.env, encryptedPath));
|
|
63
69
|
const response = await fetch(url.toString(), {
|
|
64
70
|
method: "PUT",
|
|
@@ -89,7 +95,7 @@ getUserStorage_fn = async function(path) {
|
|
|
89
95
|
try {
|
|
90
96
|
const headers = await _chunkIGY2S5BCjs.__privateMethod.call(void 0, this, _getAuthorizationHeader, getAuthorizationHeader_fn).call(this);
|
|
91
97
|
const storageKey = await this.getStorageKey();
|
|
92
|
-
const encryptedPath =
|
|
98
|
+
const encryptedPath = _chunkEYZFHZR2js.createEntryPath.call(void 0, path, storageKey);
|
|
93
99
|
const url = new URL(STORAGE_URL(this.env, encryptedPath));
|
|
94
100
|
const response = await fetch(url.toString(), {
|
|
95
101
|
headers: {
|
|
@@ -109,7 +115,49 @@ getUserStorage_fn = async function(path) {
|
|
|
109
115
|
);
|
|
110
116
|
}
|
|
111
117
|
const { Data: encryptedData } = await response.json();
|
|
112
|
-
return
|
|
118
|
+
return _chunkLDYHGAP4js.encryption_default.decryptString(encryptedData, storageKey);
|
|
119
|
+
} catch (e) {
|
|
120
|
+
if (e instanceof _chunkMBTBE4P5js.NotFoundError) {
|
|
121
|
+
throw e;
|
|
122
|
+
}
|
|
123
|
+
const errorMessage = e instanceof Error ? e.message : JSON.stringify(e ?? "");
|
|
124
|
+
throw new (0, _chunkMBTBE4P5js.UserStorageError)(
|
|
125
|
+
`failed to get user storage for path '${path}'. ${errorMessage}`
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
_getUserStorageAllFeatureEntries = new WeakSet();
|
|
130
|
+
getUserStorageAllFeatureEntries_fn = async function(path) {
|
|
131
|
+
try {
|
|
132
|
+
const headers = await _chunkIGY2S5BCjs.__privateMethod.call(void 0, this, _getAuthorizationHeader, getAuthorizationHeader_fn).call(this);
|
|
133
|
+
const storageKey = await this.getStorageKey();
|
|
134
|
+
const url = new URL(STORAGE_URL(this.env, path));
|
|
135
|
+
const response = await fetch(url.toString(), {
|
|
136
|
+
headers: {
|
|
137
|
+
"Content-Type": "application/json",
|
|
138
|
+
...headers
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
if (response.status === 404) {
|
|
142
|
+
throw new (0, _chunkMBTBE4P5js.NotFoundError)(`feature not found for path '${path}'.`);
|
|
143
|
+
}
|
|
144
|
+
if (!response.ok) {
|
|
145
|
+
const responseBody = await response.json();
|
|
146
|
+
throw new Error(
|
|
147
|
+
`HTTP error message: ${responseBody.message}, error: ${responseBody.error}`
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
const userStorage = await response.json();
|
|
151
|
+
if (!Array.isArray(userStorage)) {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
const decryptedData = userStorage.flatMap((entry) => {
|
|
155
|
+
if (!entry.Data) {
|
|
156
|
+
return [];
|
|
157
|
+
}
|
|
158
|
+
return _chunkLDYHGAP4js.encryption_default.decryptString(entry.Data, storageKey);
|
|
159
|
+
});
|
|
160
|
+
return decryptedData;
|
|
113
161
|
} catch (e) {
|
|
114
162
|
if (e instanceof _chunkMBTBE4P5js.NotFoundError) {
|
|
115
163
|
throw e;
|
|
@@ -122,7 +170,7 @@ getUserStorage_fn = async function(path) {
|
|
|
122
170
|
};
|
|
123
171
|
_createEntryKey = new WeakSet();
|
|
124
172
|
createEntryKey_fn = function(key, storageKey) {
|
|
125
|
-
const hashedKey =
|
|
173
|
+
const hashedKey = _chunkT3FNDVE3js.createSHA256Hash.call(void 0, key + storageKey);
|
|
126
174
|
return hashedKey;
|
|
127
175
|
};
|
|
128
176
|
_getAuthorizationHeader = new WeakSet();
|
|
@@ -135,4 +183,4 @@ getAuthorizationHeader_fn = async function() {
|
|
|
135
183
|
|
|
136
184
|
|
|
137
185
|
exports.STORAGE_URL = STORAGE_URL; exports.UserStorage = UserStorage;
|
|
138
|
-
//# sourceMappingURL=chunk-
|
|
186
|
+
//# sourceMappingURL=chunk-ZMQRPWJN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/sdk/user-storage.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n UserStoragePathWithFeatureAndKey,\n UserStoragePathWithFeatureOnly,\n} from '../controllers/user-storage/schema';\nimport { createEntryPath } from '../controllers/user-storage/schema';\nimport type { GetUserStorageAllFeatureEntriesResponse } from '../controllers/user-storage/services';\nimport type { IBaseAuth } from './authentication-jwt-bearer/types';\nimport encryption, { createSHA256Hash } from './encryption';\nimport type { Env } from './env';\nimport { getEnvUrls } from './env';\nimport { NotFoundError, UserStorageError } from './errors';\n\nexport const STORAGE_URL = (env: Env, encryptedPath: string) =>\n `${getEnvUrls(env).userStorageApiUrl}/api/v1/userstorage/${encryptedPath}`;\n\nexport type UserStorageConfig = {\n env: Env;\n auth: Pick<IBaseAuth, 'getAccessToken' | 'getUserProfile' | 'signMessage'>;\n};\n\nexport type StorageOptions = {\n getStorageKey: () => Promise<string | null>;\n setStorageKey: (val: string) => Promise<void>;\n};\n\nexport type UserStorageOptions = {\n storage?: StorageOptions;\n};\n\ntype ErrorMessage = {\n message: string;\n error: string;\n};\n\nexport class UserStorage {\n protected config: UserStorageConfig;\n\n protected options: UserStorageOptions;\n\n protected env: Env;\n\n constructor(config: UserStorageConfig, options: UserStorageOptions) {\n this.env = config.env;\n this.config = config;\n this.options = options;\n }\n\n async setItem(\n path: UserStoragePathWithFeatureAndKey,\n value: string,\n ): Promise<void> {\n await this.#upsertUserStorage(path, value);\n }\n\n async getItem(path: UserStoragePathWithFeatureAndKey): Promise<string> {\n return this.#getUserStorage(path);\n }\n\n async getAllFeatureItems(\n path: UserStoragePathWithFeatureOnly,\n ): Promise<string[] | null> {\n return this.#getUserStorageAllFeatureEntries(path);\n }\n\n async getStorageKey(): Promise<string> {\n const storageKey = await this.options.storage?.getStorageKey();\n if (storageKey) {\n return storageKey;\n }\n\n const userProfile = await this.config.auth.getUserProfile();\n const storageKeySignature = await this.config.auth.signMessage(\n `metamask:${userProfile.profileId}`,\n );\n const hashedStorageKeySignature = createSHA256Hash(storageKeySignature);\n await this.options.storage?.setStorageKey(hashedStorageKeySignature);\n return hashedStorageKeySignature;\n }\n\n async #upsertUserStorage(\n path: UserStoragePathWithFeatureAndKey,\n data: string,\n ): Promise<void> {\n try {\n const headers = await this.#getAuthorizationHeader();\n const storageKey = await this.getStorageKey();\n const encryptedData = encryption.encryptString(data, storageKey);\n const encryptedPath = createEntryPath(path, storageKey);\n\n const url = new URL(STORAGE_URL(this.env, encryptedPath));\n\n const response = await fetch(url.toString(), {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n body: JSON.stringify({ data: encryptedData }),\n });\n\n if (!response.ok) {\n const responseBody: ErrorMessage = await response.json().catch(() => ({\n message: 'unknown',\n error: 'unknown',\n }));\n throw new Error(\n `HTTP error message: ${responseBody.message}, error: ${responseBody.error}`,\n );\n }\n } catch (e) {\n /* istanbul ignore next */\n const errorMessage =\n e instanceof Error ? e.message : JSON.stringify(e ?? '');\n throw new UserStorageError(\n `failed to upsert user storage for path '${path}'. ${errorMessage}`,\n );\n }\n }\n\n async #getUserStorage(\n path: UserStoragePathWithFeatureAndKey,\n ): Promise<string> {\n try {\n const headers = await this.#getAuthorizationHeader();\n const storageKey = await this.getStorageKey();\n const encryptedPath = createEntryPath(path, storageKey);\n\n const url = new URL(STORAGE_URL(this.env, encryptedPath));\n\n const response = await fetch(url.toString(), {\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n });\n\n if (response.status === 404) {\n throw new NotFoundError(\n `feature/key set not found for path '${path}'.`,\n );\n }\n\n if (!response.ok) {\n const responseBody = (await response.json()) as ErrorMessage;\n throw new Error(\n `HTTP error message: ${responseBody.message}, error: ${responseBody.error}`,\n );\n }\n\n const { Data: encryptedData } = await response.json();\n return encryption.decryptString(encryptedData, storageKey);\n } catch (e) {\n if (e instanceof NotFoundError) {\n throw e;\n }\n\n /* istanbul ignore next */\n const errorMessage =\n e instanceof Error ? e.message : JSON.stringify(e ?? '');\n\n throw new UserStorageError(\n `failed to get user storage for path '${path}'. ${errorMessage}`,\n );\n }\n }\n\n async #getUserStorageAllFeatureEntries(\n path: UserStoragePathWithFeatureOnly,\n ): Promise<string[] | null> {\n try {\n const headers = await this.#getAuthorizationHeader();\n const storageKey = await this.getStorageKey();\n\n const url = new URL(STORAGE_URL(this.env, path));\n\n const response = await fetch(url.toString(), {\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n });\n\n if (response.status === 404) {\n throw new NotFoundError(`feature not found for path '${path}'.`);\n }\n\n if (!response.ok) {\n const responseBody = (await response.json()) as ErrorMessage;\n throw new Error(\n `HTTP error message: ${responseBody.message}, error: ${responseBody.error}`,\n );\n }\n\n const userStorage: GetUserStorageAllFeatureEntriesResponse | null =\n await response.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, storageKey);\n });\n\n return decryptedData;\n } catch (e) {\n if (e instanceof NotFoundError) {\n throw e;\n }\n\n /* istanbul ignore next */\n const errorMessage =\n e instanceof Error ? e.message : JSON.stringify(e ?? '');\n\n throw new UserStorageError(\n `failed to get user storage for path '${path}'. ${errorMessage}`,\n );\n }\n }\n\n #createEntryKey(key: string, storageKey: string): string {\n const hashedKey = createSHA256Hash(key + storageKey);\n return hashedKey;\n }\n\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/naming-convention\n async #getAuthorizationHeader(): Promise<{ Authorization: string }> {\n const accessToken = await this.config.auth.getAccessToken();\n return { Authorization: `Bearer ${accessToken}` };\n }\n}\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import {
|
|
2
|
+
LOCALIZED_DEFAULT_ACCOUNT_NAMES,
|
|
3
|
+
USER_STORAGE_VERSION,
|
|
4
|
+
USER_STORAGE_VERSION_KEY
|
|
5
|
+
} from "./chunk-EHZFPUJH.mjs";
|
|
6
|
+
|
|
7
|
+
// src/controllers/user-storage/accounts/user-storage.ts
|
|
8
|
+
var isNameDefaultAccountName = (name) => {
|
|
9
|
+
return 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
|
+
[USER_STORAGE_VERSION_KEY]: USER_STORAGE_VERSION,
|
|
17
|
+
a: address,
|
|
18
|
+
i: id,
|
|
19
|
+
n: metadata.name,
|
|
20
|
+
nlu: metadata.nameLastUpdatedAt
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export {
|
|
25
|
+
isNameDefaultAccountName,
|
|
26
|
+
mapInternalAccountToUserStorageAccount
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=chunk-ZUPTMFEA.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/controllers/user-storage/accounts/user-storage.ts"],"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"],"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;","names":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkDF24ZX4Hjs = require('./chunk-DF24ZX4H.js');
|
|
5
5
|
|
|
6
6
|
// src/controllers/authentication/services.ts
|
|
7
|
-
var ENV_URLS =
|
|
7
|
+
var ENV_URLS = _chunkDF24ZX4Hjs.getEnvUrls.call(void 0, "prd" /* PRD */);
|
|
8
8
|
var AUTH_ENDPOINT = ENV_URLS.authApiUrl;
|
|
9
9
|
var AUTH_NONCE_ENDPOINT = `${AUTH_ENDPOINT}/api/v2/nonce`;
|
|
10
10
|
var AUTH_LOGIN_ENDPOINT = `${AUTH_ENDPOINT}/api/v2/srp/login`;
|
|
@@ -12,10 +12,10 @@ var OIDC_ENDPOINT = ENV_URLS.oidcApiUrl || "";
|
|
|
12
12
|
var OIDC_TOKENS_ENDPOINT = `${OIDC_ENDPOINT}/oauth2/token`;
|
|
13
13
|
var OIDC_CLIENT_ID = (platform) => {
|
|
14
14
|
if (platform === "extension") {
|
|
15
|
-
return
|
|
15
|
+
return _chunkDF24ZX4Hjs.getOidcClientId.call(void 0, "prd" /* PRD */, "extension" /* EXTENSION */);
|
|
16
16
|
}
|
|
17
17
|
if (platform === "mobile") {
|
|
18
|
-
return
|
|
18
|
+
return _chunkDF24ZX4Hjs.getOidcClientId.call(void 0, "prd" /* PRD */, "mobile" /* MOBILE */);
|
|
19
19
|
}
|
|
20
20
|
throw new Error(`Unsupported platform - ${platform}`);
|
|
21
21
|
};
|
|
@@ -103,4 +103,4 @@ function createLoginRawMessage(nonce, publicKey) {
|
|
|
103
103
|
|
|
104
104
|
|
|
105
105
|
exports.AUTH_NONCE_ENDPOINT = AUTH_NONCE_ENDPOINT; exports.AUTH_LOGIN_ENDPOINT = AUTH_LOGIN_ENDPOINT; exports.OIDC_TOKENS_ENDPOINT = OIDC_TOKENS_ENDPOINT; exports.getNonce = getNonce; exports.login = login; exports.getAccessToken = getAccessToken; exports.createLoginRawMessage = createLoginRawMessage;
|
|
106
|
-
//# sourceMappingURL=chunk-
|
|
106
|
+
//# sourceMappingURL=chunk-ZX2KHPXG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/controllers/authentication/services.ts"],"names":[],"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","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"]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
UserStorageController,
|
|
3
3
|
defaultState
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-M23ZCTKE.mjs";
|
|
5
5
|
import {
|
|
6
6
|
USER_STORAGE_ENDPOINT
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-LYDHYB6I.mjs";
|
|
8
8
|
import {
|
|
9
9
|
createEntryPath
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-NSSHFDIS.mjs";
|
|
11
11
|
import {
|
|
12
12
|
encryption_default as encryption_default2
|
|
13
13
|
} from "./chunk-5TOWF6UW.mjs";
|
|
@@ -26,6 +26,7 @@ __export(user_storage_exports, {
|
|
|
26
26
|
Encryption: () => encryption_default,
|
|
27
27
|
Mocks: () => fixtures_exports,
|
|
28
28
|
createSHA256Hash: () => createSHA256Hash,
|
|
29
|
+
default: () => user_storage_default,
|
|
29
30
|
defaultState: () => defaultState
|
|
30
31
|
});
|
|
31
32
|
|
|
@@ -36,7 +37,8 @@ __export(fixtures_exports, {
|
|
|
36
37
|
MOCK_STORAGE_DATA: () => MOCK_STORAGE_DATA,
|
|
37
38
|
MOCK_STORAGE_KEY: () => MOCK_STORAGE_KEY,
|
|
38
39
|
MOCK_STORAGE_KEY_SIGNATURE: () => MOCK_STORAGE_KEY_SIGNATURE,
|
|
39
|
-
|
|
40
|
+
getMockUserStorageAllFeatureEntriesResponse: () => getMockUserStorageAllFeatureEntriesResponse,
|
|
41
|
+
getMockUserStorageEndpoint: () => getMockUserStorageEndpoint,
|
|
40
42
|
getMockUserStorageGetResponse: () => getMockUserStorageGetResponse,
|
|
41
43
|
getMockUserStoragePutResponse: () => getMockUserStoragePutResponse
|
|
42
44
|
});
|
|
@@ -48,31 +50,54 @@ var MOCK_STORAGE_DATA = JSON.stringify({ hello: "world" });
|
|
|
48
50
|
var MOCK_ENCRYPTED_STORAGE_DATA = () => encryption_default2.encryptString(MOCK_STORAGE_DATA, MOCK_STORAGE_KEY);
|
|
49
51
|
|
|
50
52
|
// src/controllers/user-storage/__fixtures__/mockResponses.ts
|
|
51
|
-
var
|
|
52
|
-
"
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
var getMockUserStorageEndpoint = (path) => {
|
|
54
|
+
if (path.split(".").length === 1) {
|
|
55
|
+
return `${USER_STORAGE_ENDPOINT}/${path}`;
|
|
56
|
+
}
|
|
57
|
+
return `${USER_STORAGE_ENDPOINT}${createEntryPath(
|
|
58
|
+
path,
|
|
59
|
+
MOCK_STORAGE_KEY
|
|
60
|
+
)}`;
|
|
61
|
+
};
|
|
55
62
|
var MOCK_GET_USER_STORAGE_RESPONSE = () => ({
|
|
56
63
|
HashedKey: "HASHED_KEY",
|
|
57
64
|
Data: MOCK_ENCRYPTED_STORAGE_DATA()
|
|
58
65
|
});
|
|
59
|
-
var
|
|
66
|
+
var MOCK_GET_USER_STORAGE_ALL_FEATURE_ENTRIES_RESPONSE = () => [
|
|
67
|
+
{
|
|
68
|
+
HashedKey: "HASHED_KEY",
|
|
69
|
+
Data: MOCK_ENCRYPTED_STORAGE_DATA()
|
|
70
|
+
}
|
|
71
|
+
];
|
|
72
|
+
var getMockUserStorageGetResponse = (path = "notifications.notificationSettings") => {
|
|
60
73
|
return {
|
|
61
|
-
url:
|
|
74
|
+
url: getMockUserStorageEndpoint(path),
|
|
62
75
|
requestMethod: "GET",
|
|
63
76
|
response: MOCK_GET_USER_STORAGE_RESPONSE()
|
|
64
77
|
};
|
|
65
78
|
};
|
|
66
|
-
var
|
|
79
|
+
var getMockUserStorageAllFeatureEntriesResponse = (path = "notifications") => {
|
|
67
80
|
return {
|
|
68
|
-
url:
|
|
81
|
+
url: getMockUserStorageEndpoint(path),
|
|
82
|
+
requestMethod: "GET",
|
|
83
|
+
response: MOCK_GET_USER_STORAGE_ALL_FEATURE_ENTRIES_RESPONSE()
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
var getMockUserStoragePutResponse = (path = "notifications.notificationSettings") => {
|
|
87
|
+
return {
|
|
88
|
+
url: getMockUserStorageEndpoint(path),
|
|
69
89
|
requestMethod: "PUT",
|
|
70
90
|
response: null
|
|
71
91
|
};
|
|
72
92
|
};
|
|
73
93
|
|
|
94
|
+
// src/controllers/user-storage/index.ts
|
|
95
|
+
var UserStorageController2 = UserStorageController;
|
|
96
|
+
var user_storage_default = UserStorageController2;
|
|
97
|
+
|
|
74
98
|
export {
|
|
75
99
|
fixtures_exports,
|
|
100
|
+
user_storage_default,
|
|
76
101
|
user_storage_exports
|
|
77
102
|
};
|
|
78
|
-
//# sourceMappingURL=chunk-
|
|
103
|
+
//# sourceMappingURL=chunk-ZYYAQJ56.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/controllers/user-storage/index.ts","../src/controllers/user-storage/__fixtures__/index.ts","../src/controllers/user-storage/__fixtures__/mockStorage.ts","../src/controllers/user-storage/__fixtures__/mockResponses.ts"],"sourcesContent":["import Controller from './UserStorageController';\n\nconst UserStorageController = Controller;\nexport { Controller };\nexport default UserStorageController;\nexport * from './UserStorageController';\nexport * from './encryption';\nexport * as Mocks from './__fixtures__';\n","export * from './mockResponses';\nexport * from './mockStorage';\n","import encryption, { createSHA256Hash } from '../encryption';\n\nexport const MOCK_STORAGE_KEY_SIGNATURE = 'mockStorageKey';\nexport const MOCK_STORAGE_KEY = createSHA256Hash(MOCK_STORAGE_KEY_SIGNATURE);\nexport const MOCK_STORAGE_DATA = JSON.stringify({ hello: 'world' });\n\n// NOTE - using encryption.encryptString directly in fixtures causes issues on mobile.\n// This is because this fixture is getting added in at run time. Will be improved once we support multiple exports\nexport const MOCK_ENCRYPTED_STORAGE_DATA = () =>\n encryption.encryptString(MOCK_STORAGE_DATA, MOCK_STORAGE_KEY);\n","import type {\n UserStoragePathWithFeatureAndKey,\n UserStoragePathWithFeatureOnly,\n} from '../schema';\nimport { createEntryPath } from '../schema';\nimport type {\n GetUserStorageAllFeatureEntriesResponse,\n GetUserStorageResponse,\n} from '../services';\nimport { USER_STORAGE_ENDPOINT } from '../services';\nimport { MOCK_ENCRYPTED_STORAGE_DATA, MOCK_STORAGE_KEY } from './mockStorage';\n\ntype MockResponse = {\n url: string;\n requestMethod: 'GET' | 'POST' | 'PUT';\n response: unknown;\n};\n\nexport const getMockUserStorageEndpoint = (\n path: UserStoragePathWithFeatureAndKey | UserStoragePathWithFeatureOnly,\n) => {\n if (path.split('.').length === 1) {\n return `${USER_STORAGE_ENDPOINT}/${path}`;\n }\n\n return `${USER_STORAGE_ENDPOINT}${createEntryPath(\n path as UserStoragePathWithFeatureAndKey,\n MOCK_STORAGE_KEY,\n )}`;\n};\n\nconst MOCK_GET_USER_STORAGE_RESPONSE = (): GetUserStorageResponse => ({\n HashedKey: 'HASHED_KEY',\n Data: MOCK_ENCRYPTED_STORAGE_DATA(),\n});\n\nconst MOCK_GET_USER_STORAGE_ALL_FEATURE_ENTRIES_RESPONSE =\n (): GetUserStorageAllFeatureEntriesResponse => [\n {\n HashedKey: 'HASHED_KEY',\n Data: MOCK_ENCRYPTED_STORAGE_DATA(),\n },\n ];\n\nexport const getMockUserStorageGetResponse = (\n path: UserStoragePathWithFeatureAndKey = 'notifications.notificationSettings',\n) => {\n return {\n url: getMockUserStorageEndpoint(path),\n requestMethod: 'GET',\n response: MOCK_GET_USER_STORAGE_RESPONSE(),\n } satisfies MockResponse;\n};\n\nexport const getMockUserStorageAllFeatureEntriesResponse = (\n path: UserStoragePathWithFeatureOnly = 'notifications',\n) => {\n return {\n url: getMockUserStorageEndpoint(path),\n requestMethod: 'GET',\n response: MOCK_GET_USER_STORAGE_ALL_FEATURE_ENTRIES_RESPONSE(),\n } satisfies MockResponse;\n};\n\nexport const getMockUserStoragePutResponse = (\n path: UserStoragePathWithFeatureAndKey = 'notifications.notificationSettings',\n) => {\n return {\n url: getMockUserStorageEndpoint(path),\n requestMethod: 'PUT',\n response: null,\n } satisfies MockResponse;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEO,IAAM,6BAA6B;AACnC,IAAM,mBAAmB,iBAAiB,0BAA0B;AACpE,IAAM,oBAAoB,KAAK,UAAU,EAAE,OAAO,QAAQ,CAAC;AAI3D,IAAM,8BAA8B,MACzCA,oBAAW,cAAc,mBAAmB,gBAAgB;;;ACSvD,IAAM,6BAA6B,CACxC,SACG;AACH,MAAI,KAAK,MAAM,GAAG,EAAE,WAAW,GAAG;AAChC,WAAO,GAAG,qBAAqB,IAAI,IAAI;AAAA,EACzC;AAEA,SAAO,GAAG,qBAAqB,GAAG;AAAA,IAChC;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,IAAM,iCAAiC,OAA+B;AAAA,EACpE,WAAW;AAAA,EACX,MAAM,4BAA4B;AACpC;AAEA,IAAM,qDACJ,MAA+C;AAAA,EAC7C;AAAA,IACE,WAAW;AAAA,IACX,MAAM,4BAA4B;AAAA,EACpC;AACF;AAEK,IAAM,gCAAgC,CAC3C,OAAyC,yCACtC;AACH,SAAO;AAAA,IACL,KAAK,2BAA2B,IAAI;AAAA,IACpC,eAAe;AAAA,IACf,UAAU,+BAA+B;AAAA,EAC3C;AACF;AAEO,IAAM,8CAA8C,CACzD,OAAuC,oBACpC;AACH,SAAO;AAAA,IACL,KAAK,2BAA2B,IAAI;AAAA,IACpC,eAAe;AAAA,IACf,UAAU,mDAAmD;AAAA,EAC/D;AACF;AAEO,IAAM,gCAAgC,CAC3C,OAAyC,yCACtC;AACH,SAAO;AAAA,IACL,KAAK,2BAA2B,IAAI;AAAA,IACpC,eAAe;AAAA,IACf,UAAU;AAAA,EACZ;AACF;;;AHtEA,IAAMC,yBAAwB;AAE9B,IAAO,uBAAQC;","names":["encryption_default","UserStorageController","UserStorageController"]}
|
|
@@ -1,30 +1,13 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
require('../../chunk-
|
|
4
|
+
var _chunkF6BAOSH2js = require('../../chunk-F6BAOSH2.js');
|
|
5
|
+
require('../../chunk-ZX2KHPXG.js');
|
|
6
6
|
require('../../chunk-YHGWG3EQ.js');
|
|
7
|
-
require('../../chunk-
|
|
8
|
-
require('../../chunk-XSSIP3PJ.js');
|
|
9
|
-
require('../../chunk-G4NU4KP7.js');
|
|
10
|
-
require('../../chunk-VD2IGTS3.js');
|
|
11
|
-
require('../../chunk-BOET676P.js');
|
|
12
|
-
require('../../chunk-PBRUOBEQ.js');
|
|
13
|
-
require('../../chunk-RG4II6WH.js');
|
|
14
|
-
require('../../chunk-PQ5T4GHY.js');
|
|
15
|
-
require('../../chunk-DRB2MN4T.js');
|
|
16
|
-
require('../../chunk-FUPEFLXB.js');
|
|
17
|
-
require('../../chunk-SLHAVOTE.js');
|
|
18
|
-
require('../../chunk-AK7OTIWA.js');
|
|
19
|
-
require('../../chunk-T3FNDVE3.js');
|
|
20
|
-
require('../../chunk-UAXWZN5J.js');
|
|
21
|
-
require('../../chunk-PCOIRDTO.js');
|
|
22
|
-
require('../../chunk-P4DUDLMY.js');
|
|
23
|
-
require('../../chunk-SMKTWM6I.js');
|
|
24
|
-
require('../../chunk-MBTBE4P5.js');
|
|
7
|
+
require('../../chunk-DF24ZX4H.js');
|
|
25
8
|
require('../../chunk-IGY2S5BC.js');
|
|
26
9
|
|
|
27
10
|
|
|
28
11
|
|
|
29
|
-
exports.default =
|
|
12
|
+
exports.default = _chunkF6BAOSH2js.AuthenticationController; exports.defaultState = _chunkF6BAOSH2js.defaultState;
|
|
30
13
|
//# sourceMappingURL=AuthenticationController.js.map
|
|
@@ -1,27 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AuthenticationController,
|
|
3
3
|
defaultState
|
|
4
|
-
} from "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
4
|
+
} from "../../chunk-D4SNJOID.mjs";
|
|
5
|
+
import "../../chunk-LGXQBALM.mjs";
|
|
6
6
|
import "../../chunk-NMIF3LSX.mjs";
|
|
7
|
-
import "../../chunk-
|
|
8
|
-
import "../../chunk-VYZPOR47.mjs";
|
|
9
|
-
import "../../chunk-BDO3VJEU.mjs";
|
|
10
|
-
import "../../chunk-DRD22DR5.mjs";
|
|
11
|
-
import "../../chunk-WB6MUIML.mjs";
|
|
12
|
-
import "../../chunk-CAIIVJAO.mjs";
|
|
13
|
-
import "../../chunk-5XSXZTED.mjs";
|
|
14
|
-
import "../../chunk-5EBUFNAN.mjs";
|
|
15
|
-
import "../../chunk-QDGLIUUS.mjs";
|
|
16
|
-
import "../../chunk-NPH5AHLH.mjs";
|
|
17
|
-
import "../../chunk-ILIZJQ6X.mjs";
|
|
18
|
-
import "../../chunk-5TOWF6UW.mjs";
|
|
19
|
-
import "../../chunk-K5UKU454.mjs";
|
|
20
|
-
import "../../chunk-H25EBXG5.mjs";
|
|
21
|
-
import "../../chunk-76VRE4BI.mjs";
|
|
22
|
-
import "../../chunk-B5DBQDB3.mjs";
|
|
23
|
-
import "../../chunk-FQ5SDMRE.mjs";
|
|
24
|
-
import "../../chunk-TFFQFIJV.mjs";
|
|
7
|
+
import "../../chunk-KTCSRECK.mjs";
|
|
25
8
|
import "../../chunk-U5UIDVOO.mjs";
|
|
26
9
|
export {
|
|
27
10
|
AuthenticationController as default,
|
|
@@ -1,34 +1,19 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var _chunkMNVUKRZCjs = require('../../chunk-MNVUKRZC.js');
|
|
4
3
|
|
|
4
|
+
var _chunkPRYLTXW4js = require('../../chunk-PRYLTXW4.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
require('../../chunk-
|
|
7
|
+
|
|
8
|
+
var _chunkF6BAOSH2js = require('../../chunk-F6BAOSH2.js');
|
|
9
|
+
require('../../chunk-ZX2KHPXG.js');
|
|
9
10
|
require('../../chunk-YHGWG3EQ.js');
|
|
10
|
-
require('../../chunk-
|
|
11
|
-
require('../../chunk-XSSIP3PJ.js');
|
|
12
|
-
require('../../chunk-G4NU4KP7.js');
|
|
13
|
-
require('../../chunk-VD2IGTS3.js');
|
|
14
|
-
require('../../chunk-BOET676P.js');
|
|
15
|
-
require('../../chunk-PBRUOBEQ.js');
|
|
16
|
-
require('../../chunk-RG4II6WH.js');
|
|
17
|
-
require('../../chunk-PQ5T4GHY.js');
|
|
18
|
-
require('../../chunk-DRB2MN4T.js');
|
|
19
|
-
require('../../chunk-FUPEFLXB.js');
|
|
20
|
-
require('../../chunk-SLHAVOTE.js');
|
|
21
|
-
require('../../chunk-AK7OTIWA.js');
|
|
22
|
-
require('../../chunk-T3FNDVE3.js');
|
|
23
|
-
require('../../chunk-UAXWZN5J.js');
|
|
24
|
-
require('../../chunk-PCOIRDTO.js');
|
|
25
|
-
require('../../chunk-P4DUDLMY.js');
|
|
26
|
-
require('../../chunk-SMKTWM6I.js');
|
|
27
|
-
require('../../chunk-MBTBE4P5.js');
|
|
11
|
+
require('../../chunk-DF24ZX4H.js');
|
|
28
12
|
require('../../chunk-IGY2S5BC.js');
|
|
29
13
|
|
|
30
14
|
|
|
31
15
|
|
|
32
16
|
|
|
33
|
-
|
|
17
|
+
|
|
18
|
+
exports.Controller = _chunkF6BAOSH2js.AuthenticationController; exports.Mocks = _chunkPRYLTXW4js.fixtures_exports; exports.default = _chunkPRYLTXW4js.authentication_default; exports.defaultState = _chunkF6BAOSH2js.defaultState;
|
|
34
19
|
//# sourceMappingURL=index.js.map
|