@metamask/profile-sync-controller 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/CHANGELOG.md +21 -1
  2. package/dist/controllers/authentication/services.cjs +1 -1
  3. package/dist/controllers/authentication/services.cjs.map +1 -1
  4. package/dist/controllers/authentication/services.mjs +1 -1
  5. package/dist/controllers/authentication/services.mjs.map +1 -1
  6. package/dist/controllers/user-storage/UserStorageController.cjs +35 -9
  7. package/dist/controllers/user-storage/UserStorageController.cjs.map +1 -1
  8. package/dist/controllers/user-storage/UserStorageController.d.cts +11 -2
  9. package/dist/controllers/user-storage/UserStorageController.d.cts.map +1 -1
  10. package/dist/controllers/user-storage/UserStorageController.d.mts +11 -2
  11. package/dist/controllers/user-storage/UserStorageController.d.mts.map +1 -1
  12. package/dist/controllers/user-storage/UserStorageController.mjs +36 -10
  13. package/dist/controllers/user-storage/UserStorageController.mjs.map +1 -1
  14. package/dist/controllers/user-storage/__fixtures__/mockResponses.cjs +53 -17
  15. package/dist/controllers/user-storage/__fixtures__/mockResponses.cjs.map +1 -1
  16. package/dist/controllers/user-storage/__fixtures__/mockResponses.d.cts +31 -5
  17. package/dist/controllers/user-storage/__fixtures__/mockResponses.d.cts.map +1 -1
  18. package/dist/controllers/user-storage/__fixtures__/mockResponses.d.mts +31 -5
  19. package/dist/controllers/user-storage/__fixtures__/mockResponses.d.mts.map +1 -1
  20. package/dist/controllers/user-storage/__fixtures__/mockResponses.mjs +48 -13
  21. package/dist/controllers/user-storage/__fixtures__/mockResponses.mjs.map +1 -1
  22. package/dist/controllers/user-storage/__fixtures__/mockServices.cjs +15 -3
  23. package/dist/controllers/user-storage/__fixtures__/mockServices.cjs.map +1 -1
  24. package/dist/controllers/user-storage/__fixtures__/mockServices.d.cts +3 -2
  25. package/dist/controllers/user-storage/__fixtures__/mockServices.d.cts.map +1 -1
  26. package/dist/controllers/user-storage/__fixtures__/mockServices.d.mts +3 -2
  27. package/dist/controllers/user-storage/__fixtures__/mockServices.d.mts.map +1 -1
  28. package/dist/controllers/user-storage/__fixtures__/mockServices.mjs +14 -3
  29. package/dist/controllers/user-storage/__fixtures__/mockServices.mjs.map +1 -1
  30. package/dist/controllers/user-storage/__fixtures__/mockStorage.cjs +1 -1
  31. package/dist/controllers/user-storage/__fixtures__/mockStorage.cjs.map +1 -1
  32. package/dist/controllers/user-storage/__fixtures__/mockStorage.mjs +1 -1
  33. package/dist/controllers/user-storage/__fixtures__/mockStorage.mjs.map +1 -1
  34. package/dist/controllers/user-storage/index.cjs +1 -1
  35. package/dist/controllers/user-storage/index.cjs.map +1 -1
  36. package/dist/controllers/user-storage/index.d.cts +1 -1
  37. package/dist/controllers/user-storage/index.d.cts.map +1 -1
  38. package/dist/controllers/user-storage/index.d.mts +1 -1
  39. package/dist/controllers/user-storage/index.d.mts.map +1 -1
  40. package/dist/controllers/user-storage/index.mjs +1 -1
  41. package/dist/controllers/user-storage/index.mjs.map +1 -1
  42. package/dist/controllers/user-storage/services.cjs +62 -6
  43. package/dist/controllers/user-storage/services.cjs.map +1 -1
  44. package/dist/controllers/user-storage/services.d.cts +11 -2
  45. package/dist/controllers/user-storage/services.d.cts.map +1 -1
  46. package/dist/controllers/user-storage/services.d.mts +11 -2
  47. package/dist/controllers/user-storage/services.d.mts.map +1 -1
  48. package/dist/controllers/user-storage/services.mjs +35 -3
  49. package/dist/controllers/user-storage/services.mjs.map +1 -1
  50. package/dist/sdk/__fixtures__/mock-auth.cjs +1 -1
  51. package/dist/sdk/__fixtures__/mock-auth.cjs.map +1 -1
  52. package/dist/sdk/__fixtures__/mock-auth.mjs +1 -1
  53. package/dist/sdk/__fixtures__/mock-auth.mjs.map +1 -1
  54. package/dist/sdk/__fixtures__/mock-userstorage.cjs +6 -4
  55. package/dist/sdk/__fixtures__/mock-userstorage.cjs.map +1 -1
  56. package/dist/sdk/__fixtures__/mock-userstorage.d.cts +1 -1
  57. package/dist/sdk/__fixtures__/mock-userstorage.d.cts.map +1 -1
  58. package/dist/sdk/__fixtures__/mock-userstorage.d.mts +1 -1
  59. package/dist/sdk/__fixtures__/mock-userstorage.d.mts.map +1 -1
  60. package/dist/sdk/__fixtures__/mock-userstorage.mjs +6 -4
  61. package/dist/sdk/__fixtures__/mock-userstorage.mjs.map +1 -1
  62. package/dist/sdk/__fixtures__/test-utils.cjs +1 -1
  63. package/dist/sdk/__fixtures__/test-utils.cjs.map +1 -1
  64. package/dist/sdk/__fixtures__/test-utils.d.cts.map +1 -1
  65. package/dist/sdk/__fixtures__/test-utils.d.mts.map +1 -1
  66. package/dist/sdk/__fixtures__/test-utils.mjs +1 -1
  67. package/dist/sdk/__fixtures__/test-utils.mjs.map +1 -1
  68. package/dist/sdk/authentication-jwt-bearer/services.cjs +1 -1
  69. package/dist/sdk/authentication-jwt-bearer/services.cjs.map +1 -1
  70. package/dist/sdk/authentication-jwt-bearer/services.d.cts +1 -1
  71. package/dist/sdk/authentication-jwt-bearer/services.d.cts.map +1 -1
  72. package/dist/sdk/authentication-jwt-bearer/services.d.mts +1 -1
  73. package/dist/sdk/authentication-jwt-bearer/services.d.mts.map +1 -1
  74. package/dist/sdk/authentication-jwt-bearer/services.mjs +1 -1
  75. package/dist/sdk/authentication-jwt-bearer/services.mjs.map +1 -1
  76. package/dist/sdk/authentication-jwt-bearer/types.cjs.map +1 -1
  77. package/dist/sdk/authentication-jwt-bearer/types.d.cts +1 -1
  78. package/dist/sdk/authentication-jwt-bearer/types.d.cts.map +1 -1
  79. package/dist/sdk/authentication-jwt-bearer/types.d.mts +1 -1
  80. package/dist/sdk/authentication-jwt-bearer/types.d.mts.map +1 -1
  81. package/dist/sdk/authentication-jwt-bearer/types.mjs.map +1 -1
  82. package/dist/sdk/authentication.cjs.map +1 -1
  83. package/dist/sdk/authentication.d.cts.map +1 -1
  84. package/dist/sdk/authentication.d.mts.map +1 -1
  85. package/dist/sdk/authentication.mjs.map +1 -1
  86. package/dist/sdk/index.cjs +2 -2
  87. package/dist/sdk/index.cjs.map +1 -1
  88. package/dist/sdk/index.d.cts +2 -2
  89. package/dist/sdk/index.d.cts.map +1 -1
  90. package/dist/sdk/index.d.mts +2 -2
  91. package/dist/sdk/index.d.mts.map +1 -1
  92. package/dist/sdk/index.mjs +2 -2
  93. package/dist/sdk/index.mjs.map +1 -1
  94. package/dist/sdk/user-storage.cjs +44 -6
  95. package/dist/sdk/user-storage.cjs.map +1 -1
  96. package/dist/sdk/user-storage.d.cts +3 -2
  97. package/dist/sdk/user-storage.d.cts.map +1 -1
  98. package/dist/sdk/user-storage.d.mts +3 -2
  99. package/dist/sdk/user-storage.d.mts.map +1 -1
  100. package/dist/sdk/user-storage.mjs +42 -4
  101. package/dist/sdk/user-storage.mjs.map +1 -1
  102. package/dist/shared/encryption/cache.cjs.map +1 -0
  103. package/dist/shared/encryption/cache.d.cts.map +1 -0
  104. package/dist/shared/encryption/cache.d.mts.map +1 -0
  105. package/dist/shared/encryption/cache.mjs.map +1 -0
  106. package/dist/shared/encryption/encryption.cjs.map +1 -0
  107. package/dist/{controllers/user-storage → shared}/encryption/encryption.d.cts +1 -1
  108. package/dist/shared/encryption/encryption.d.cts.map +1 -0
  109. package/dist/{controllers/user-storage → shared}/encryption/encryption.d.mts +1 -1
  110. package/dist/shared/encryption/encryption.d.mts.map +1 -0
  111. package/dist/shared/encryption/encryption.mjs.map +1 -0
  112. package/dist/shared/encryption/index.cjs.map +1 -0
  113. package/dist/shared/encryption/index.d.cts.map +1 -0
  114. package/dist/shared/encryption/index.d.mts.map +1 -0
  115. package/dist/shared/encryption/index.mjs.map +1 -0
  116. package/dist/shared/encryption/utils.cjs.map +1 -0
  117. package/dist/shared/encryption/utils.d.cts.map +1 -0
  118. package/dist/shared/encryption/utils.d.mts.map +1 -0
  119. package/dist/shared/encryption/utils.mjs.map +1 -0
  120. package/dist/shared/env.cjs.map +1 -0
  121. package/dist/shared/env.d.cts.map +1 -0
  122. package/dist/shared/env.d.mts.map +1 -0
  123. package/dist/shared/env.mjs.map +1 -0
  124. package/dist/{controllers/user-storage/schema.cjs → shared/storage-schema.cjs} +1 -1
  125. package/dist/shared/storage-schema.cjs.map +1 -0
  126. package/dist/{controllers/user-storage/schema.d.mts → shared/storage-schema.d.cts} +6 -3
  127. package/dist/shared/storage-schema.d.cts.map +1 -0
  128. package/dist/{controllers/user-storage/schema.d.cts → shared/storage-schema.d.mts} +6 -3
  129. package/dist/shared/storage-schema.d.mts.map +1 -0
  130. package/dist/{controllers/user-storage/schema.mjs → shared/storage-schema.mjs} +1 -1
  131. package/dist/shared/storage-schema.mjs.map +1 -0
  132. package/dist/shared/types/encryption.cjs +3 -0
  133. package/dist/shared/types/encryption.cjs.map +1 -0
  134. package/dist/shared/types/encryption.d.cts +2 -0
  135. package/dist/shared/types/encryption.d.cts.map +1 -0
  136. package/dist/shared/types/encryption.d.mts +2 -0
  137. package/dist/shared/types/encryption.d.mts.map +1 -0
  138. package/dist/shared/types/encryption.mjs +2 -0
  139. package/dist/shared/types/encryption.mjs.map +1 -0
  140. package/package.json +1 -1
  141. package/dist/controllers/user-storage/encryption/cache.cjs.map +0 -1
  142. package/dist/controllers/user-storage/encryption/cache.d.cts.map +0 -1
  143. package/dist/controllers/user-storage/encryption/cache.d.mts.map +0 -1
  144. package/dist/controllers/user-storage/encryption/cache.mjs.map +0 -1
  145. package/dist/controllers/user-storage/encryption/encryption.cjs.map +0 -1
  146. package/dist/controllers/user-storage/encryption/encryption.d.cts.map +0 -1
  147. package/dist/controllers/user-storage/encryption/encryption.d.mts.map +0 -1
  148. package/dist/controllers/user-storage/encryption/encryption.mjs.map +0 -1
  149. package/dist/controllers/user-storage/encryption/index.cjs.map +0 -1
  150. package/dist/controllers/user-storage/encryption/index.d.cts.map +0 -1
  151. package/dist/controllers/user-storage/encryption/index.d.mts.map +0 -1
  152. package/dist/controllers/user-storage/encryption/index.mjs.map +0 -1
  153. package/dist/controllers/user-storage/encryption/utils.cjs.map +0 -1
  154. package/dist/controllers/user-storage/encryption/utils.d.cts.map +0 -1
  155. package/dist/controllers/user-storage/encryption/utils.d.mts.map +0 -1
  156. package/dist/controllers/user-storage/encryption/utils.mjs.map +0 -1
  157. package/dist/controllers/user-storage/schema.cjs.map +0 -1
  158. package/dist/controllers/user-storage/schema.d.cts.map +0 -1
  159. package/dist/controllers/user-storage/schema.d.mts.map +0 -1
  160. package/dist/controllers/user-storage/schema.mjs.map +0 -1
  161. package/dist/sdk/encryption.cjs +0 -23
  162. package/dist/sdk/encryption.cjs.map +0 -1
  163. package/dist/sdk/encryption.d.cts +0 -4
  164. package/dist/sdk/encryption.d.cts.map +0 -1
  165. package/dist/sdk/encryption.d.mts +0 -4
  166. package/dist/sdk/encryption.d.mts.map +0 -1
  167. package/dist/sdk/encryption.mjs +0 -4
  168. package/dist/sdk/encryption.mjs.map +0 -1
  169. package/dist/sdk/env.cjs.map +0 -1
  170. package/dist/sdk/env.d.cts.map +0 -1
  171. package/dist/sdk/env.d.mts.map +0 -1
  172. package/dist/sdk/env.mjs.map +0 -1
  173. /package/dist/{controllers/user-storage → shared}/encryption/cache.cjs +0 -0
  174. /package/dist/{controllers/user-storage → shared}/encryption/cache.d.cts +0 -0
  175. /package/dist/{controllers/user-storage → shared}/encryption/cache.d.mts +0 -0
  176. /package/dist/{controllers/user-storage → shared}/encryption/cache.mjs +0 -0
  177. /package/dist/{controllers/user-storage → shared}/encryption/encryption.cjs +0 -0
  178. /package/dist/{controllers/user-storage → shared}/encryption/encryption.mjs +0 -0
  179. /package/dist/{controllers/user-storage → shared}/encryption/index.cjs +0 -0
  180. /package/dist/{controllers/user-storage → shared}/encryption/index.d.cts +0 -0
  181. /package/dist/{controllers/user-storage → shared}/encryption/index.d.mts +0 -0
  182. /package/dist/{controllers/user-storage → shared}/encryption/index.mjs +0 -0
  183. /package/dist/{controllers/user-storage → shared}/encryption/utils.cjs +0 -0
  184. /package/dist/{controllers/user-storage → shared}/encryption/utils.d.cts +0 -0
  185. /package/dist/{controllers/user-storage → shared}/encryption/utils.d.mts +0 -0
  186. /package/dist/{controllers/user-storage → shared}/encryption/utils.mjs +0 -0
  187. /package/dist/{sdk → shared}/env.cjs +0 -0
  188. /package/dist/{sdk → shared}/env.d.cts +0 -0
  189. /package/dist/{sdk → shared}/env.d.mts +0 -0
  190. /package/dist/{sdk → shared}/env.mjs +0 -0
@@ -1,4 +1,4 @@
1
- import { createEntryPath } from "../schema.mjs";
1
+ import { createEntryPath } from "../../../shared/storage-schema.mjs";
2
2
  import { USER_STORAGE_ENDPOINT } from "../services.mjs";
3
3
  import { MOCK_ENCRYPTED_STORAGE_DATA, MOCK_STORAGE_DATA, MOCK_STORAGE_KEY } from "./mockStorage.mjs";
4
4
  export const getMockUserStorageEndpoint = (path) => {
@@ -7,28 +7,56 @@ export const getMockUserStorageEndpoint = (path) => {
7
7
  }
8
8
  return `${USER_STORAGE_ENDPOINT}/${createEntryPath(path, MOCK_STORAGE_KEY)}`;
9
9
  };
10
- export const createMockGetStorageResponse = async (data) => ({
11
- HashedKey: 'HASHED_KEY',
12
- Data: await MOCK_ENCRYPTED_STORAGE_DATA(data),
13
- });
14
- export const createMockAllFeatureEntriesResponse = async (dataArr = [MOCK_STORAGE_DATA]) => Promise.all(dataArr.map(async (d) => ({
15
- HashedKey: 'HASHED_KEY',
16
- Data: await MOCK_ENCRYPTED_STORAGE_DATA(d),
17
- })));
18
- export const getMockUserStorageGetResponse = async (path = 'notifications.notification_settings') => {
10
+ /**
11
+ * Creates a mock GET user-storage response
12
+ * @param data - data to encrypt
13
+ * @returns a realistic GET Response Body
14
+ */
15
+ export async function createMockGetStorageResponse(data) {
16
+ return {
17
+ HashedKey: 'HASHED_KEY',
18
+ Data: await MOCK_ENCRYPTED_STORAGE_DATA(data),
19
+ };
20
+ }
21
+ /**
22
+ * Creates a mock GET ALL user-storage response
23
+ * @param dataArr - array of data to encrypt
24
+ * @returns a realistic GET ALL Response Body
25
+ */
26
+ export async function createMockAllFeatureEntriesResponse(dataArr = [MOCK_STORAGE_DATA]) {
27
+ return await Promise.all(dataArr.map(async function (d) {
28
+ const encryptedData = await MOCK_ENCRYPTED_STORAGE_DATA(d);
29
+ return {
30
+ HashedKey: 'HASHED_KEY',
31
+ Data: encryptedData,
32
+ };
33
+ }));
34
+ }
35
+ /**
36
+ * Creates a mock user-storage api GET request
37
+ * @param path - path of the GET Url
38
+ * @returns mock GET API request. Can be used by e2e or unit mock servers
39
+ */
40
+ export async function getMockUserStorageGetResponse(path = 'notifications.notification_settings') {
19
41
  return {
20
42
  url: getMockUserStorageEndpoint(path),
21
43
  requestMethod: 'GET',
22
44
  response: await createMockGetStorageResponse(),
23
45
  };
24
- };
25
- export const getMockUserStorageAllFeatureEntriesResponse = async (path = 'notifications', dataArr) => {
46
+ }
47
+ /**
48
+ * Creates a mock user-storage api GET ALL request
49
+ * @param path - path of the GET url
50
+ * @param dataArr - data to encrypt
51
+ * @returns mock GET ALL API request. Can be used by e2e or unit mock servers
52
+ */
53
+ export async function getMockUserStorageAllFeatureEntriesResponse(path = 'notifications', dataArr) {
26
54
  return {
27
55
  url: getMockUserStorageEndpoint(path),
28
56
  requestMethod: 'GET',
29
57
  response: await createMockAllFeatureEntriesResponse(dataArr),
30
58
  };
31
- };
59
+ }
32
60
  export const getMockUserStoragePutResponse = (path = 'notifications.notification_settings') => {
33
61
  return {
34
62
  url: getMockUserStorageEndpoint(path),
@@ -36,4 +64,11 @@ export const getMockUserStoragePutResponse = (path = 'notifications.notification
36
64
  response: null,
37
65
  };
38
66
  };
67
+ export const getMockUserStorageBatchPutResponse = (path = 'notifications') => {
68
+ return {
69
+ url: getMockUserStorageEndpoint(path),
70
+ requestMethod: 'PUT',
71
+ response: null,
72
+ };
73
+ };
39
74
  //# sourceMappingURL=mockResponses.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"mockResponses.mjs","sourceRoot":"","sources":["../../../../src/controllers/user-storage/__fixtures__/mockResponses.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,sBAAkB;AAK5C,OAAO,EAAE,qBAAqB,EAAE,wBAAoB;AACpD,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EACjB,gBAAgB,EACjB,0BAAsB;AAQvB,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,IAAuE,EACvE,EAAE;IACF,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QAChC,OAAO,GAAG,qBAAqB,IAAI,IAAI,EAAE,CAAC;KAC3C;IAED,OAAO,GAAG,qBAAqB,IAAI,eAAe,CAChD,IAAwC,EACxC,gBAAgB,CACjB,EAAE,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAC/C,IAAa,EACoB,EAAE,CAAC,CAAC;IACrC,SAAS,EAAE,YAAY;IACvB,IAAI,EAAE,MAAM,2BAA2B,CAAC,IAAI,CAAC;CAC9C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mCAAmC,GAAG,KAAK,EACtD,UAAoB,CAAC,iBAAiB,CAAC,EACW,EAAE,CACpD,OAAO,CAAC,GAAG,CACT,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACxB,SAAS,EAAE,YAAY;IACvB,IAAI,EAAE,MAAM,2BAA2B,CAAC,CAAC,CAAC;CAC3C,CAAC,CAAC,CACJ,CAAC;AAEJ,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,EAChD,OAAyC,qCAAqC,EAC9E,EAAE;IACF,OAAO;QACL,GAAG,EAAE,0BAA0B,CAAC,IAAI,CAAC;QACrC,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,MAAM,4BAA4B,EAAE;KACxB,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2CAA2C,GAAG,KAAK,EAC9D,OAAuC,eAAe,EACtD,OAAkB,EAClB,EAAE;IACF,OAAO;QACL,GAAG,EAAE,0BAA0B,CAAC,IAAI,CAAC;QACrC,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,MAAM,mCAAmC,CAAC,OAAO,CAAC;KACtC,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,OAAyC,qCAAqC,EAC9E,EAAE;IACF,OAAO;QACL,GAAG,EAAE,0BAA0B,CAAC,IAAI,CAAC;QACrC,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,IAAI;KACQ,CAAC;AAC3B,CAAC,CAAC","sourcesContent":["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 {\n MOCK_ENCRYPTED_STORAGE_DATA,\n MOCK_STORAGE_DATA,\n MOCK_STORAGE_KEY,\n} 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\nexport const createMockGetStorageResponse = async (\n data?: string,\n): Promise<GetUserStorageResponse> => ({\n HashedKey: 'HASHED_KEY',\n Data: await MOCK_ENCRYPTED_STORAGE_DATA(data),\n});\n\nexport const createMockAllFeatureEntriesResponse = async (\n dataArr: string[] = [MOCK_STORAGE_DATA],\n): Promise<GetUserStorageAllFeatureEntriesResponse> =>\n Promise.all(\n dataArr.map(async (d) => ({\n HashedKey: 'HASHED_KEY',\n Data: await MOCK_ENCRYPTED_STORAGE_DATA(d),\n })),\n );\n\nexport const getMockUserStorageGetResponse = async (\n path: UserStoragePathWithFeatureAndKey = 'notifications.notification_settings',\n) => {\n return {\n url: getMockUserStorageEndpoint(path),\n requestMethod: 'GET',\n response: await createMockGetStorageResponse(),\n } satisfies MockResponse;\n};\n\nexport const getMockUserStorageAllFeatureEntriesResponse = async (\n path: UserStoragePathWithFeatureOnly = 'notifications',\n dataArr?: string[],\n) => {\n return {\n url: getMockUserStorageEndpoint(path),\n requestMethod: 'GET',\n response: await createMockAllFeatureEntriesResponse(dataArr),\n } satisfies MockResponse;\n};\n\nexport const getMockUserStoragePutResponse = (\n path: UserStoragePathWithFeatureAndKey = 'notifications.notification_settings',\n) => {\n return {\n url: getMockUserStorageEndpoint(path),\n requestMethod: 'PUT',\n response: null,\n } satisfies MockResponse;\n};\n"]}
1
+ {"version":3,"file":"mockResponses.mjs","sourceRoot":"","sources":["../../../../src/controllers/user-storage/__fixtures__/mockResponses.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,2CAAuC;AAKjE,OAAO,EAAE,qBAAqB,EAAE,wBAAoB;AACpD,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EACjB,gBAAgB,EACjB,0BAAsB;AAQvB,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,IAAuE,EACvE,EAAE;IACF,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QAChC,OAAO,GAAG,qBAAqB,IAAI,IAAI,EAAE,CAAC;KAC3C;IAED,OAAO,GAAG,qBAAqB,IAAI,eAAe,CAChD,IAAwC,EACxC,gBAAgB,CACjB,EAAE,CAAC;AACN,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,IAAa;IAEb,OAAO;QACL,SAAS,EAAE,YAAY;QACvB,IAAI,EAAE,MAAM,2BAA2B,CAAC,IAAI,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,UAAoB,CAAC,iBAAiB,CAAC;IAEvC,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC;QAC3B,MAAM,aAAa,GAAG,MAAM,2BAA2B,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO;YACL,SAAS,EAAE,YAAY;YACvB,IAAI,EAAE,aAAa;SACpB,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAAyC,qCAAqC;IAE9E,OAAO;QACL,GAAG,EAAE,0BAA0B,CAAC,IAAI,CAAC;QACrC,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,MAAM,4BAA4B,EAAE;KACxB,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,2CAA2C,CAC/D,OAAuC,eAAe,EACtD,OAAkB;IAElB,OAAO;QACL,GAAG,EAAE,0BAA0B,CAAC,IAAI,CAAC;QACrC,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,MAAM,mCAAmC,CAAC,OAAO,CAAC;KACtC,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,OAAyC,qCAAqC,EAC9E,EAAE;IACF,OAAO;QACL,GAAG,EAAE,0BAA0B,CAAC,IAAI,CAAC;QACrC,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,IAAI;KACQ,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAChD,OAAuC,eAAe,EACtD,EAAE;IACF,OAAO;QACL,GAAG,EAAE,0BAA0B,CAAC,IAAI,CAAC;QACrC,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,IAAI;KACQ,CAAC;AAC3B,CAAC,CAAC","sourcesContent":["import type {\n UserStoragePathWithFeatureAndKey,\n UserStoragePathWithFeatureOnly,\n} from '../../../shared/storage-schema';\nimport { createEntryPath } from '../../../shared/storage-schema';\nimport type {\n GetUserStorageAllFeatureEntriesResponse,\n GetUserStorageResponse,\n} from '../services';\nimport { USER_STORAGE_ENDPOINT } from '../services';\nimport {\n MOCK_ENCRYPTED_STORAGE_DATA,\n MOCK_STORAGE_DATA,\n MOCK_STORAGE_KEY,\n} 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\n/**\n * Creates a mock GET user-storage response\n * @param data - data to encrypt\n * @returns a realistic GET Response Body\n */\nexport async function createMockGetStorageResponse(\n data?: string,\n): Promise<GetUserStorageResponse> {\n return {\n HashedKey: 'HASHED_KEY',\n Data: await MOCK_ENCRYPTED_STORAGE_DATA(data),\n };\n}\n\n/**\n * Creates a mock GET ALL user-storage response\n * @param dataArr - array of data to encrypt\n * @returns a realistic GET ALL Response Body\n */\nexport async function createMockAllFeatureEntriesResponse(\n dataArr: string[] = [MOCK_STORAGE_DATA],\n): Promise<GetUserStorageAllFeatureEntriesResponse> {\n return await Promise.all(\n dataArr.map(async function (d) {\n const encryptedData = await MOCK_ENCRYPTED_STORAGE_DATA(d);\n return {\n HashedKey: 'HASHED_KEY',\n Data: encryptedData,\n };\n }),\n );\n}\n\n/**\n * Creates a mock user-storage api GET request\n * @param path - path of the GET Url\n * @returns mock GET API request. Can be used by e2e or unit mock servers\n */\nexport async function getMockUserStorageGetResponse(\n path: UserStoragePathWithFeatureAndKey = 'notifications.notification_settings',\n) {\n return {\n url: getMockUserStorageEndpoint(path),\n requestMethod: 'GET',\n response: await createMockGetStorageResponse(),\n } satisfies MockResponse;\n}\n\n/**\n * Creates a mock user-storage api GET ALL request\n * @param path - path of the GET url\n * @param dataArr - data to encrypt\n * @returns mock GET ALL API request. Can be used by e2e or unit mock servers\n */\nexport async function getMockUserStorageAllFeatureEntriesResponse(\n path: UserStoragePathWithFeatureOnly = 'notifications',\n dataArr?: string[],\n) {\n return {\n url: getMockUserStorageEndpoint(path),\n requestMethod: 'GET',\n response: await createMockAllFeatureEntriesResponse(dataArr),\n } satisfies MockResponse;\n}\n\nexport const getMockUserStoragePutResponse = (\n path: UserStoragePathWithFeatureAndKey = 'notifications.notification_settings',\n) => {\n return {\n url: getMockUserStorageEndpoint(path),\n requestMethod: 'PUT',\n response: null,\n } satisfies MockResponse;\n};\n\nexport const getMockUserStorageBatchPutResponse = (\n path: UserStoragePathWithFeatureOnly = 'notifications',\n) => {\n return {\n url: getMockUserStorageEndpoint(path),\n requestMethod: 'PUT',\n response: null,\n } satisfies MockResponse;\n};\n"]}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.mockEndpointUpsertUserStorage = exports.mockEndpointGetUserStorage = exports.mockEndpointGetUserStorageAllFeatureEntries = void 0;
6
+ exports.mockEndpointBatchUpsertUserStorage = exports.mockEndpointUpsertUserStorage = exports.mockEndpointGetUserStorage = exports.mockEndpointGetUserStorageAllFeatureEntries = void 0;
7
7
  const nock_1 = __importDefault(require("nock"));
8
8
  const mockResponses_1 = require("./mockResponses.cjs");
9
9
  const mockEndpointGetUserStorageAllFeatureEntries = async (path = 'notifications', mockReply) => {
@@ -30,12 +30,24 @@ const mockEndpointGetUserStorage = async (path = 'notifications.notification_set
30
30
  return mockEndpoint;
31
31
  };
32
32
  exports.mockEndpointGetUserStorage = mockEndpointGetUserStorage;
33
- const mockEndpointUpsertUserStorage = (path = 'notifications.notification_settings', mockReply) => {
33
+ const mockEndpointUpsertUserStorage = (path = 'notifications.notification_settings', mockReply, expectCallback) => {
34
34
  const mockResponse = (0, mockResponses_1.getMockUserStoragePutResponse)(path);
35
35
  const mockEndpoint = (0, nock_1.default)(mockResponse.url)
36
36
  .put('')
37
- .reply(mockReply?.status ?? 204);
37
+ .reply(mockReply?.status ?? 204, async (_, requestBody) => {
38
+ await expectCallback?.(requestBody);
39
+ });
38
40
  return mockEndpoint;
39
41
  };
40
42
  exports.mockEndpointUpsertUserStorage = mockEndpointUpsertUserStorage;
43
+ const mockEndpointBatchUpsertUserStorage = (path = 'notifications', mockReply, callback) => {
44
+ const mockResponse = (0, mockResponses_1.getMockUserStorageBatchPutResponse)(path);
45
+ const mockEndpoint = (0, nock_1.default)(mockResponse.url)
46
+ .put('')
47
+ .reply(mockReply?.status ?? 204, async (uri, requestBody) => {
48
+ return await callback?.(uri, requestBody);
49
+ });
50
+ return mockEndpoint;
51
+ };
52
+ exports.mockEndpointBatchUpsertUserStorage = mockEndpointBatchUpsertUserStorage;
41
53
  //# sourceMappingURL=mockServices.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"mockServices.cjs","sourceRoot":"","sources":["../../../../src/controllers/user-storage/__fixtures__/mockServices.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAMxB,uDAIyB;AAOlB,MAAM,2CAA2C,GAAG,KAAK,EAC9D,OAAuC,eAAe,EACtD,SAAqB,EACrB,EAAE;IACF,MAAM,YAAY,GAAG,MAAM,IAAA,2DAA2C,EAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,SAAS,IAAI;QACzB,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,YAAY,CAAC,QAAQ;KAC5B,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,cAAI,EAAC,YAAY,CAAC,GAAG,CAAC;SACxC,GAAG,CAAC,EAAE,CAAC;SACP,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAfW,QAAA,2CAA2C,+CAetD;AAEK,MAAM,0BAA0B,GAAG,KAAK,EAC7C,OAAyC,qCAAqC,EAC9E,SAAqB,EACrB,EAAE;IACF,MAAM,YAAY,GAAG,MAAM,IAAA,6CAA6B,EAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,SAAS,IAAI;QACzB,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,YAAY,CAAC,QAAQ;KAC5B,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,cAAI,EAAC,YAAY,CAAC,GAAG,CAAC;SACxC,GAAG,CAAC,EAAE,CAAC;SACP,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAfW,QAAA,0BAA0B,8BAerC;AAEK,MAAM,6BAA6B,GAAG,CAC3C,OAAyC,qCAAqC,EAC9E,SAAqC,EACrC,EAAE;IACF,MAAM,YAAY,GAAG,IAAA,6CAA6B,EAAC,IAAI,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,IAAA,cAAI,EAAC,YAAY,CAAC,GAAG,CAAC;SACxC,GAAG,CAAC,EAAE,CAAC;SACP,KAAK,CAAC,SAAS,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC;IACnC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AATW,QAAA,6BAA6B,iCASxC","sourcesContent":["import nock from 'nock';\n\nimport type {\n UserStoragePathWithFeatureAndKey,\n UserStoragePathWithFeatureOnly,\n} from '../schema';\nimport {\n getMockUserStorageGetResponse,\n getMockUserStoragePutResponse,\n getMockUserStorageAllFeatureEntriesResponse,\n} from './mockResponses';\n\ntype MockReply = {\n status: nock.StatusCode;\n body?: nock.Body;\n};\n\nexport const mockEndpointGetUserStorageAllFeatureEntries = async (\n path: UserStoragePathWithFeatureOnly = 'notifications',\n mockReply?: MockReply,\n) => {\n const mockResponse = await getMockUserStorageAllFeatureEntriesResponse(path);\n const reply = mockReply ?? {\n status: 200,\n body: mockResponse.response,\n };\n\n const mockEndpoint = nock(mockResponse.url)\n .get('')\n .reply(reply.status, reply.body);\n\n return mockEndpoint;\n};\n\nexport const mockEndpointGetUserStorage = async (\n path: UserStoragePathWithFeatureAndKey = 'notifications.notification_settings',\n mockReply?: MockReply,\n) => {\n const mockResponse = await getMockUserStorageGetResponse(path);\n const reply = mockReply ?? {\n status: 200,\n body: mockResponse.response,\n };\n\n const mockEndpoint = nock(mockResponse.url)\n .get('')\n .reply(reply.status, reply.body);\n\n return mockEndpoint;\n};\n\nexport const mockEndpointUpsertUserStorage = (\n path: UserStoragePathWithFeatureAndKey = 'notifications.notification_settings',\n mockReply?: Pick<MockReply, 'status'>,\n) => {\n const mockResponse = getMockUserStoragePutResponse(path);\n const mockEndpoint = nock(mockResponse.url)\n .put('')\n .reply(mockReply?.status ?? 204);\n return mockEndpoint;\n};\n"]}
1
+ {"version":3,"file":"mockServices.cjs","sourceRoot":"","sources":["../../../../src/controllers/user-storage/__fixtures__/mockServices.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAMxB,uDAKyB;AAOlB,MAAM,2CAA2C,GAAG,KAAK,EAC9D,OAAuC,eAAe,EACtD,SAAqB,EACrB,EAAE;IACF,MAAM,YAAY,GAAG,MAAM,IAAA,2DAA2C,EAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,SAAS,IAAI;QACzB,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,YAAY,CAAC,QAAQ;KAC5B,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,cAAI,EAAC,YAAY,CAAC,GAAG,CAAC;SACxC,GAAG,CAAC,EAAE,CAAC;SACP,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAfW,QAAA,2CAA2C,+CAetD;AAEK,MAAM,0BAA0B,GAAG,KAAK,EAC7C,OAAyC,qCAAqC,EAC9E,SAAqB,EACrB,EAAE;IACF,MAAM,YAAY,GAAG,MAAM,IAAA,6CAA6B,EAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,SAAS,IAAI;QACzB,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,YAAY,CAAC,QAAQ;KAC5B,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,cAAI,EAAC,YAAY,CAAC,GAAG,CAAC;SACxC,GAAG,CAAC,EAAE,CAAC;SACP,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAfW,QAAA,0BAA0B,8BAerC;AAEK,MAAM,6BAA6B,GAAG,CAC3C,OAAyC,qCAAqC,EAC9E,SAAqC,EACrC,cAA0D,EAC1D,EAAE;IACF,MAAM,YAAY,GAAG,IAAA,6CAA6B,EAAC,IAAI,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,IAAA,cAAI,EAAC,YAAY,CAAC,GAAG,CAAC;SACxC,GAAG,CAAC,EAAE,CAAC;SACP,KAAK,CAAC,SAAS,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE;QACxD,MAAM,cAAc,EAAE,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IACL,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAZW,QAAA,6BAA6B,iCAYxC;AAEK,MAAM,kCAAkC,GAAG,CAChD,OAAuC,eAAe,EACtD,SAAqC,EACrC,QAAiE,EACjE,EAAE;IACF,MAAM,YAAY,GAAG,IAAA,kDAAkC,EAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,IAAA,cAAI,EAAC,YAAY,CAAC,GAAG,CAAC;SACxC,GAAG,CAAC,EAAE,CAAC;SACP,KAAK,CAAC,SAAS,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE;QAC1D,OAAO,MAAM,QAAQ,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IACL,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAZW,QAAA,kCAAkC,sCAY7C","sourcesContent":["import nock from 'nock';\n\nimport type {\n UserStoragePathWithFeatureAndKey,\n UserStoragePathWithFeatureOnly,\n} from '../../../shared/storage-schema';\nimport {\n getMockUserStorageGetResponse,\n getMockUserStoragePutResponse,\n getMockUserStorageAllFeatureEntriesResponse,\n getMockUserStorageBatchPutResponse,\n} from './mockResponses';\n\ntype MockReply = {\n status: nock.StatusCode;\n body?: nock.Body;\n};\n\nexport const mockEndpointGetUserStorageAllFeatureEntries = async (\n path: UserStoragePathWithFeatureOnly = 'notifications',\n mockReply?: MockReply,\n) => {\n const mockResponse = await getMockUserStorageAllFeatureEntriesResponse(path);\n const reply = mockReply ?? {\n status: 200,\n body: mockResponse.response,\n };\n\n const mockEndpoint = nock(mockResponse.url)\n .get('')\n .reply(reply.status, reply.body);\n\n return mockEndpoint;\n};\n\nexport const mockEndpointGetUserStorage = async (\n path: UserStoragePathWithFeatureAndKey = 'notifications.notification_settings',\n mockReply?: MockReply,\n) => {\n const mockResponse = await getMockUserStorageGetResponse(path);\n const reply = mockReply ?? {\n status: 200,\n body: mockResponse.response,\n };\n\n const mockEndpoint = nock(mockResponse.url)\n .get('')\n .reply(reply.status, reply.body);\n\n return mockEndpoint;\n};\n\nexport const mockEndpointUpsertUserStorage = (\n path: UserStoragePathWithFeatureAndKey = 'notifications.notification_settings',\n mockReply?: Pick<MockReply, 'status'>,\n expectCallback?: (requestBody: nock.Body) => Promise<void>,\n) => {\n const mockResponse = getMockUserStoragePutResponse(path);\n const mockEndpoint = nock(mockResponse.url)\n .put('')\n .reply(mockReply?.status ?? 204, async (_, requestBody) => {\n await expectCallback?.(requestBody);\n });\n return mockEndpoint;\n};\n\nexport const mockEndpointBatchUpsertUserStorage = (\n path: UserStoragePathWithFeatureOnly = 'notifications',\n mockReply?: Pick<MockReply, 'status'>,\n callback?: (uri: string, requestBody: nock.Body) => Promise<void>,\n) => {\n const mockResponse = getMockUserStorageBatchPutResponse(path);\n const mockEndpoint = nock(mockResponse.url)\n .put('')\n .reply(mockReply?.status ?? 204, async (uri, requestBody) => {\n return await callback?.(uri, requestBody);\n });\n return mockEndpoint;\n};\n"]}
@@ -1,11 +1,12 @@
1
1
  import nock from "nock";
2
- import type { UserStoragePathWithFeatureAndKey, UserStoragePathWithFeatureOnly } from "../schema.cjs";
2
+ import type { UserStoragePathWithFeatureAndKey, UserStoragePathWithFeatureOnly } from "../../../shared/storage-schema.cjs";
3
3
  type MockReply = {
4
4
  status: nock.StatusCode;
5
5
  body?: nock.Body;
6
6
  };
7
7
  export declare const mockEndpointGetUserStorageAllFeatureEntries: (path?: UserStoragePathWithFeatureOnly, mockReply?: MockReply) => Promise<nock.Scope>;
8
8
  export declare const mockEndpointGetUserStorage: (path?: UserStoragePathWithFeatureAndKey, mockReply?: MockReply) => Promise<nock.Scope>;
9
- export declare const mockEndpointUpsertUserStorage: (path?: UserStoragePathWithFeatureAndKey, mockReply?: Pick<MockReply, 'status'>) => nock.Scope;
9
+ export declare const mockEndpointUpsertUserStorage: (path?: UserStoragePathWithFeatureAndKey, mockReply?: Pick<MockReply, 'status'>, expectCallback?: ((requestBody: nock.Body) => Promise<void>) | undefined) => nock.Scope;
10
+ export declare const mockEndpointBatchUpsertUserStorage: (path?: UserStoragePathWithFeatureOnly, mockReply?: Pick<MockReply, 'status'>, callback?: ((uri: string, requestBody: nock.Body) => Promise<void>) | undefined) => nock.Scope;
10
11
  export {};
11
12
  //# sourceMappingURL=mockServices.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mockServices.d.cts","sourceRoot":"","sources":["../../../../src/controllers/user-storage/__fixtures__/mockServices.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,aAAa;AAExB,OAAO,KAAK,EACV,gCAAgC,EAChC,8BAA8B,EAC/B,sBAAkB;AAOnB,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,2CAA2C,UAChD,8BAA8B,cACxB,SAAS,wBAatB,CAAC;AAEF,eAAO,MAAM,0BAA0B,UAC/B,gCAAgC,cAC1B,SAAS,wBAatB,CAAC;AAEF,eAAO,MAAM,6BAA6B,UAClC,gCAAgC,cAC1B,KAAK,SAAS,EAAE,QAAQ,CAAC,eAOtC,CAAC"}
1
+ {"version":3,"file":"mockServices.d.cts","sourceRoot":"","sources":["../../../../src/controllers/user-storage/__fixtures__/mockServices.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,aAAa;AAExB,OAAO,KAAK,EACV,gCAAgC,EAChC,8BAA8B,EAC/B,2CAAuC;AAQxC,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,2CAA2C,UAChD,8BAA8B,cACxB,SAAS,wBAatB,CAAC;AAEF,eAAO,MAAM,0BAA0B,UAC/B,gCAAgC,cAC1B,SAAS,wBAatB,CAAC;AAEF,eAAO,MAAM,6BAA6B,UAClC,gCAAgC,cAC1B,KAAK,SAAS,EAAE,QAAQ,CAAC,kCACN,SAAS,KAAK,QAAQ,IAAI,CAAC,4BAS3D,CAAC;AAEF,eAAO,MAAM,kCAAkC,UACvC,8BAA8B,cACxB,KAAK,SAAS,EAAE,QAAQ,CAAC,oBACpB,MAAM,eAAe,SAAS,KAAK,QAAQ,IAAI,CAAC,4BASlE,CAAC"}
@@ -1,11 +1,12 @@
1
1
  import nock from "nock";
2
- import type { UserStoragePathWithFeatureAndKey, UserStoragePathWithFeatureOnly } from "../schema.mjs";
2
+ import type { UserStoragePathWithFeatureAndKey, UserStoragePathWithFeatureOnly } from "../../../shared/storage-schema.mjs";
3
3
  type MockReply = {
4
4
  status: nock.StatusCode;
5
5
  body?: nock.Body;
6
6
  };
7
7
  export declare const mockEndpointGetUserStorageAllFeatureEntries: (path?: UserStoragePathWithFeatureOnly, mockReply?: MockReply) => Promise<nock.Scope>;
8
8
  export declare const mockEndpointGetUserStorage: (path?: UserStoragePathWithFeatureAndKey, mockReply?: MockReply) => Promise<nock.Scope>;
9
- export declare const mockEndpointUpsertUserStorage: (path?: UserStoragePathWithFeatureAndKey, mockReply?: Pick<MockReply, 'status'>) => nock.Scope;
9
+ export declare const mockEndpointUpsertUserStorage: (path?: UserStoragePathWithFeatureAndKey, mockReply?: Pick<MockReply, 'status'>, expectCallback?: ((requestBody: nock.Body) => Promise<void>) | undefined) => nock.Scope;
10
+ export declare const mockEndpointBatchUpsertUserStorage: (path?: UserStoragePathWithFeatureOnly, mockReply?: Pick<MockReply, 'status'>, callback?: ((uri: string, requestBody: nock.Body) => Promise<void>) | undefined) => nock.Scope;
10
11
  export {};
11
12
  //# sourceMappingURL=mockServices.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mockServices.d.mts","sourceRoot":"","sources":["../../../../src/controllers/user-storage/__fixtures__/mockServices.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,aAAa;AAExB,OAAO,KAAK,EACV,gCAAgC,EAChC,8BAA8B,EAC/B,sBAAkB;AAOnB,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,2CAA2C,UAChD,8BAA8B,cACxB,SAAS,wBAatB,CAAC;AAEF,eAAO,MAAM,0BAA0B,UAC/B,gCAAgC,cAC1B,SAAS,wBAatB,CAAC;AAEF,eAAO,MAAM,6BAA6B,UAClC,gCAAgC,cAC1B,KAAK,SAAS,EAAE,QAAQ,CAAC,eAOtC,CAAC"}
1
+ {"version":3,"file":"mockServices.d.mts","sourceRoot":"","sources":["../../../../src/controllers/user-storage/__fixtures__/mockServices.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,aAAa;AAExB,OAAO,KAAK,EACV,gCAAgC,EAChC,8BAA8B,EAC/B,2CAAuC;AAQxC,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,2CAA2C,UAChD,8BAA8B,cACxB,SAAS,wBAatB,CAAC;AAEF,eAAO,MAAM,0BAA0B,UAC/B,gCAAgC,cAC1B,SAAS,wBAatB,CAAC;AAEF,eAAO,MAAM,6BAA6B,UAClC,gCAAgC,cAC1B,KAAK,SAAS,EAAE,QAAQ,CAAC,kCACN,SAAS,KAAK,QAAQ,IAAI,CAAC,4BAS3D,CAAC;AAEF,eAAO,MAAM,kCAAkC,UACvC,8BAA8B,cACxB,KAAK,SAAS,EAAE,QAAQ,CAAC,oBACpB,MAAM,eAAe,SAAS,KAAK,QAAQ,IAAI,CAAC,4BASlE,CAAC"}
@@ -6,7 +6,7 @@ function $importDefault(module) {
6
6
  }
7
7
  import $nock from "nock";
8
8
  const nock = $importDefault($nock);
9
- import { getMockUserStorageGetResponse, getMockUserStoragePutResponse, getMockUserStorageAllFeatureEntriesResponse } from "./mockResponses.mjs";
9
+ import { getMockUserStorageGetResponse, getMockUserStoragePutResponse, getMockUserStorageAllFeatureEntriesResponse, getMockUserStorageBatchPutResponse } from "./mockResponses.mjs";
10
10
  export const mockEndpointGetUserStorageAllFeatureEntries = async (path = 'notifications', mockReply) => {
11
11
  const mockResponse = await getMockUserStorageAllFeatureEntriesResponse(path);
12
12
  const reply = mockReply ?? {
@@ -29,11 +29,22 @@ export const mockEndpointGetUserStorage = async (path = 'notifications.notificat
29
29
  .reply(reply.status, reply.body);
30
30
  return mockEndpoint;
31
31
  };
32
- export const mockEndpointUpsertUserStorage = (path = 'notifications.notification_settings', mockReply) => {
32
+ export const mockEndpointUpsertUserStorage = (path = 'notifications.notification_settings', mockReply, expectCallback) => {
33
33
  const mockResponse = getMockUserStoragePutResponse(path);
34
34
  const mockEndpoint = nock(mockResponse.url)
35
35
  .put('')
36
- .reply(mockReply?.status ?? 204);
36
+ .reply(mockReply?.status ?? 204, async (_, requestBody) => {
37
+ await expectCallback?.(requestBody);
38
+ });
39
+ return mockEndpoint;
40
+ };
41
+ export const mockEndpointBatchUpsertUserStorage = (path = 'notifications', mockReply, callback) => {
42
+ const mockResponse = getMockUserStorageBatchPutResponse(path);
43
+ const mockEndpoint = nock(mockResponse.url)
44
+ .put('')
45
+ .reply(mockReply?.status ?? 204, async (uri, requestBody) => {
46
+ return await callback?.(uri, requestBody);
47
+ });
37
48
  return mockEndpoint;
38
49
  };
39
50
  //# sourceMappingURL=mockServices.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"mockServices.mjs","sourceRoot":"","sources":["../../../../src/controllers/user-storage/__fixtures__/mockServices.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,KAAI,aAAa;;AAMxB,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,2CAA2C,EAC5C,4BAAwB;AAOzB,MAAM,CAAC,MAAM,2CAA2C,GAAG,KAAK,EAC9D,OAAuC,eAAe,EACtD,SAAqB,EACrB,EAAE;IACF,MAAM,YAAY,GAAG,MAAM,2CAA2C,CAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,SAAS,IAAI;QACzB,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,YAAY,CAAC,QAAQ;KAC5B,CAAC;IAEF,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;SACxC,GAAG,CAAC,EAAE,CAAC;SACP,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAC7C,OAAyC,qCAAqC,EAC9E,SAAqB,EACrB,EAAE;IACF,MAAM,YAAY,GAAG,MAAM,6BAA6B,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,SAAS,IAAI;QACzB,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,YAAY,CAAC,QAAQ;KAC5B,CAAC;IAEF,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;SACxC,GAAG,CAAC,EAAE,CAAC;SACP,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,OAAyC,qCAAqC,EAC9E,SAAqC,EACrC,EAAE;IACF,MAAM,YAAY,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;SACxC,GAAG,CAAC,EAAE,CAAC;SACP,KAAK,CAAC,SAAS,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC;IACnC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC","sourcesContent":["import nock from 'nock';\n\nimport type {\n UserStoragePathWithFeatureAndKey,\n UserStoragePathWithFeatureOnly,\n} from '../schema';\nimport {\n getMockUserStorageGetResponse,\n getMockUserStoragePutResponse,\n getMockUserStorageAllFeatureEntriesResponse,\n} from './mockResponses';\n\ntype MockReply = {\n status: nock.StatusCode;\n body?: nock.Body;\n};\n\nexport const mockEndpointGetUserStorageAllFeatureEntries = async (\n path: UserStoragePathWithFeatureOnly = 'notifications',\n mockReply?: MockReply,\n) => {\n const mockResponse = await getMockUserStorageAllFeatureEntriesResponse(path);\n const reply = mockReply ?? {\n status: 200,\n body: mockResponse.response,\n };\n\n const mockEndpoint = nock(mockResponse.url)\n .get('')\n .reply(reply.status, reply.body);\n\n return mockEndpoint;\n};\n\nexport const mockEndpointGetUserStorage = async (\n path: UserStoragePathWithFeatureAndKey = 'notifications.notification_settings',\n mockReply?: MockReply,\n) => {\n const mockResponse = await getMockUserStorageGetResponse(path);\n const reply = mockReply ?? {\n status: 200,\n body: mockResponse.response,\n };\n\n const mockEndpoint = nock(mockResponse.url)\n .get('')\n .reply(reply.status, reply.body);\n\n return mockEndpoint;\n};\n\nexport const mockEndpointUpsertUserStorage = (\n path: UserStoragePathWithFeatureAndKey = 'notifications.notification_settings',\n mockReply?: Pick<MockReply, 'status'>,\n) => {\n const mockResponse = getMockUserStoragePutResponse(path);\n const mockEndpoint = nock(mockResponse.url)\n .put('')\n .reply(mockReply?.status ?? 204);\n return mockEndpoint;\n};\n"]}
1
+ {"version":3,"file":"mockServices.mjs","sourceRoot":"","sources":["../../../../src/controllers/user-storage/__fixtures__/mockServices.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,KAAI,aAAa;;AAMxB,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,2CAA2C,EAC3C,kCAAkC,EACnC,4BAAwB;AAOzB,MAAM,CAAC,MAAM,2CAA2C,GAAG,KAAK,EAC9D,OAAuC,eAAe,EACtD,SAAqB,EACrB,EAAE;IACF,MAAM,YAAY,GAAG,MAAM,2CAA2C,CAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,SAAS,IAAI;QACzB,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,YAAY,CAAC,QAAQ;KAC5B,CAAC;IAEF,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;SACxC,GAAG,CAAC,EAAE,CAAC;SACP,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAC7C,OAAyC,qCAAqC,EAC9E,SAAqB,EACrB,EAAE;IACF,MAAM,YAAY,GAAG,MAAM,6BAA6B,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,SAAS,IAAI;QACzB,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,YAAY,CAAC,QAAQ;KAC5B,CAAC;IAEF,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;SACxC,GAAG,CAAC,EAAE,CAAC;SACP,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,OAAyC,qCAAqC,EAC9E,SAAqC,EACrC,cAA0D,EAC1D,EAAE;IACF,MAAM,YAAY,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;SACxC,GAAG,CAAC,EAAE,CAAC;SACP,KAAK,CAAC,SAAS,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE;QACxD,MAAM,cAAc,EAAE,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IACL,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAChD,OAAuC,eAAe,EACtD,SAAqC,EACrC,QAAiE,EACjE,EAAE;IACF,MAAM,YAAY,GAAG,kCAAkC,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;SACxC,GAAG,CAAC,EAAE,CAAC;SACP,KAAK,CAAC,SAAS,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE;QAC1D,OAAO,MAAM,QAAQ,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IACL,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC","sourcesContent":["import nock from 'nock';\n\nimport type {\n UserStoragePathWithFeatureAndKey,\n UserStoragePathWithFeatureOnly,\n} from '../../../shared/storage-schema';\nimport {\n getMockUserStorageGetResponse,\n getMockUserStoragePutResponse,\n getMockUserStorageAllFeatureEntriesResponse,\n getMockUserStorageBatchPutResponse,\n} from './mockResponses';\n\ntype MockReply = {\n status: nock.StatusCode;\n body?: nock.Body;\n};\n\nexport const mockEndpointGetUserStorageAllFeatureEntries = async (\n path: UserStoragePathWithFeatureOnly = 'notifications',\n mockReply?: MockReply,\n) => {\n const mockResponse = await getMockUserStorageAllFeatureEntriesResponse(path);\n const reply = mockReply ?? {\n status: 200,\n body: mockResponse.response,\n };\n\n const mockEndpoint = nock(mockResponse.url)\n .get('')\n .reply(reply.status, reply.body);\n\n return mockEndpoint;\n};\n\nexport const mockEndpointGetUserStorage = async (\n path: UserStoragePathWithFeatureAndKey = 'notifications.notification_settings',\n mockReply?: MockReply,\n) => {\n const mockResponse = await getMockUserStorageGetResponse(path);\n const reply = mockReply ?? {\n status: 200,\n body: mockResponse.response,\n };\n\n const mockEndpoint = nock(mockResponse.url)\n .get('')\n .reply(reply.status, reply.body);\n\n return mockEndpoint;\n};\n\nexport const mockEndpointUpsertUserStorage = (\n path: UserStoragePathWithFeatureAndKey = 'notifications.notification_settings',\n mockReply?: Pick<MockReply, 'status'>,\n expectCallback?: (requestBody: nock.Body) => Promise<void>,\n) => {\n const mockResponse = getMockUserStoragePutResponse(path);\n const mockEndpoint = nock(mockResponse.url)\n .put('')\n .reply(mockReply?.status ?? 204, async (_, requestBody) => {\n await expectCallback?.(requestBody);\n });\n return mockEndpoint;\n};\n\nexport const mockEndpointBatchUpsertUserStorage = (\n path: UserStoragePathWithFeatureOnly = 'notifications',\n mockReply?: Pick<MockReply, 'status'>,\n callback?: (uri: string, requestBody: nock.Body) => Promise<void>,\n) => {\n const mockResponse = getMockUserStorageBatchPutResponse(path);\n const mockEndpoint = nock(mockResponse.url)\n .put('')\n .reply(mockReply?.status ?? 204, async (uri, requestBody) => {\n return await callback?.(uri, requestBody);\n });\n return mockEndpoint;\n};\n"]}
@@ -24,7 +24,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.MOCK_ENCRYPTED_STORAGE_DATA = exports.MOCK_STORAGE_DATA = exports.MOCK_STORAGE_KEY = exports.MOCK_STORAGE_KEY_SIGNATURE = void 0;
27
- const encryption_1 = __importStar(require("../encryption/index.cjs"));
27
+ const encryption_1 = __importStar(require("../../../shared/encryption/index.cjs"));
28
28
  exports.MOCK_STORAGE_KEY_SIGNATURE = 'mockStorageKey';
29
29
  exports.MOCK_STORAGE_KEY = (0, encryption_1.createSHA256Hash)(exports.MOCK_STORAGE_KEY_SIGNATURE);
30
30
  exports.MOCK_STORAGE_DATA = JSON.stringify({ hello: 'world' });
@@ -1 +1 @@
1
- {"version":3,"file":"mockStorage.cjs","sourceRoot":"","sources":["../../../../src/controllers/user-storage/__fixtures__/mockStorage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sEAA6D;AAEhD,QAAA,0BAA0B,GAAG,gBAAgB,CAAC;AAC9C,QAAA,gBAAgB,GAAG,IAAA,6BAAgB,EAAC,kCAA0B,CAAC,CAAC;AAChE,QAAA,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAEpE,sFAAsF;AACtF,kHAAkH;AAClH,IAAI,uBAA+B,CAAC;AAC7B,MAAM,2BAA2B,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE,CACjE,CAAC,uBAAuB,KAAvB,uBAAuB,GAAK,MAAM,oBAAU,CAAC,aAAa,CACzD,IAAI,IAAI,yBAAiB,EACzB,wBAAgB,CACjB,EAAC,CAAC;AAJQ,QAAA,2BAA2B,+BAInC","sourcesContent":["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\nlet cachedMockEncryptedData: string;\nexport const MOCK_ENCRYPTED_STORAGE_DATA = async (data?: string) =>\n (cachedMockEncryptedData ??= await encryption.encryptString(\n data ?? MOCK_STORAGE_DATA,\n MOCK_STORAGE_KEY,\n ));\n"]}
1
+ {"version":3,"file":"mockStorage.cjs","sourceRoot":"","sources":["../../../../src/controllers/user-storage/__fixtures__/mockStorage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mFAA0E;AAE7D,QAAA,0BAA0B,GAAG,gBAAgB,CAAC;AAC9C,QAAA,gBAAgB,GAAG,IAAA,6BAAgB,EAAC,kCAA0B,CAAC,CAAC;AAChE,QAAA,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAEpE,sFAAsF;AACtF,kHAAkH;AAClH,IAAI,uBAA+B,CAAC;AAC7B,MAAM,2BAA2B,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE,CACjE,CAAC,uBAAuB,KAAvB,uBAAuB,GAAK,MAAM,oBAAU,CAAC,aAAa,CACzD,IAAI,IAAI,yBAAiB,EACzB,wBAAgB,CACjB,EAAC,CAAC;AAJQ,QAAA,2BAA2B,+BAInC","sourcesContent":["import encryption, { createSHA256Hash } from '../../../shared/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\nlet cachedMockEncryptedData: string;\nexport const MOCK_ENCRYPTED_STORAGE_DATA = async (data?: string) =>\n (cachedMockEncryptedData ??= await encryption.encryptString(\n data ?? MOCK_STORAGE_DATA,\n MOCK_STORAGE_KEY,\n ));\n"]}
@@ -1,4 +1,4 @@
1
- import encryption, { createSHA256Hash } from "../encryption/index.mjs";
1
+ import encryption, { createSHA256Hash } from "../../../shared/encryption/index.mjs";
2
2
  export const MOCK_STORAGE_KEY_SIGNATURE = 'mockStorageKey';
3
3
  export const MOCK_STORAGE_KEY = createSHA256Hash(MOCK_STORAGE_KEY_SIGNATURE);
4
4
  export const MOCK_STORAGE_DATA = JSON.stringify({ hello: 'world' });
@@ -1 +1 @@
1
- {"version":3,"file":"mockStorage.mjs","sourceRoot":"","sources":["../../../../src/controllers/user-storage/__fixtures__/mockStorage.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,EAAE,EAAE,gBAAgB,EAAE,gCAAsB;AAE7D,MAAM,CAAC,MAAM,0BAA0B,GAAG,gBAAgB,CAAC;AAC3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,0BAA0B,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAEpE,sFAAsF;AACtF,kHAAkH;AAClH,IAAI,uBAA+B,CAAC;AACpC,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE,CACjE,CAAC,uBAAuB,KAAvB,uBAAuB,GAAK,MAAM,UAAU,CAAC,aAAa,CACzD,IAAI,IAAI,iBAAiB,EACzB,gBAAgB,CACjB,EAAC,CAAC","sourcesContent":["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\nlet cachedMockEncryptedData: string;\nexport const MOCK_ENCRYPTED_STORAGE_DATA = async (data?: string) =>\n (cachedMockEncryptedData ??= await encryption.encryptString(\n data ?? MOCK_STORAGE_DATA,\n MOCK_STORAGE_KEY,\n ));\n"]}
1
+ {"version":3,"file":"mockStorage.mjs","sourceRoot":"","sources":["../../../../src/controllers/user-storage/__fixtures__/mockStorage.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,EAAE,EAAE,gBAAgB,EAAE,6CAAmC;AAE1E,MAAM,CAAC,MAAM,0BAA0B,GAAG,gBAAgB,CAAC;AAC3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,0BAA0B,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAEpE,sFAAsF;AACtF,kHAAkH;AAClH,IAAI,uBAA+B,CAAC;AACpC,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE,CACjE,CAAC,uBAAuB,KAAvB,uBAAuB,GAAK,MAAM,UAAU,CAAC,aAAa,CACzD,IAAI,IAAI,iBAAiB,EACzB,gBAAgB,CACjB,EAAC,CAAC","sourcesContent":["import encryption, { createSHA256Hash } from '../../../shared/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\nlet cachedMockEncryptedData: string;\nexport const MOCK_ENCRYPTED_STORAGE_DATA = async (data?: string) =>\n (cachedMockEncryptedData ??= await encryption.encryptString(\n data ?? MOCK_STORAGE_DATA,\n MOCK_STORAGE_KEY,\n ));\n"]}
@@ -35,6 +35,6 @@ exports.Controller = UserStorageController_1.default;
35
35
  const UserStorageController = UserStorageController_1.default;
36
36
  exports.default = UserStorageController;
37
37
  __exportStar(require("./UserStorageController.cjs"), exports);
38
- __exportStar(require("./encryption/index.cjs"), exports);
39
38
  exports.Mocks = __importStar(require("./__fixtures__/index.cjs"));
39
+ __exportStar(require("../../shared/encryption/index.cjs"), exports);
40
40
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../../src/controllers/user-storage/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wFAAiD;AAGxC,qBAHF,+BAAU,CAGE;AADnB,MAAM,qBAAqB,GAAG,+BAAU,CAAC;AAEzC,kBAAe,qBAAqB,CAAC;AACrC,8DAAwC;AACxC,yDAA6B;AAC7B,kEAAwC","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"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../../src/controllers/user-storage/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wFAAiD;AAGxC,qBAHF,+BAAU,CAGE;AADnB,MAAM,qBAAqB,GAAG,+BAAU,CAAC;AAEzC,kBAAe,qBAAqB,CAAC;AACrC,8DAAwC;AACxC,kEAAwC;AACxC,oEAAwC","sourcesContent":["import Controller from './UserStorageController';\n\nconst UserStorageController = Controller;\nexport { Controller };\nexport default UserStorageController;\nexport * from './UserStorageController';\nexport * as Mocks from './__fixtures__';\nexport * from '../../shared/encryption';\n"]}
@@ -3,6 +3,6 @@ declare const UserStorageController: typeof Controller;
3
3
  export { Controller };
4
4
  export default UserStorageController;
5
5
  export * from "./UserStorageController.cjs";
6
- export * from "./encryption/index.cjs";
7
6
  export * as Mocks from "./__fixtures__/index.cjs";
7
+ export * from "../../shared/encryption/index.cjs";
8
8
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/controllers/user-storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,oCAAgC;AAEjD,QAAA,MAAM,qBAAqB,mBAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,eAAe,qBAAqB,CAAC;AACrC,4CAAwC;AACxC,uCAA6B;AAC7B,OAAO,KAAK,KAAK,iCAAuB"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/controllers/user-storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,oCAAgC;AAEjD,QAAA,MAAM,qBAAqB,mBAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,eAAe,qBAAqB,CAAC;AACrC,4CAAwC;AACxC,OAAO,KAAK,KAAK,iCAAuB;AACxC,kDAAwC"}
@@ -3,6 +3,6 @@ declare const UserStorageController: typeof Controller;
3
3
  export { Controller };
4
4
  export default UserStorageController;
5
5
  export * from "./UserStorageController.mjs";
6
- export * from "./encryption/index.mjs";
7
6
  export * as Mocks from "./__fixtures__/index.mjs";
7
+ export * from "../../shared/encryption/index.mjs";
8
8
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/controllers/user-storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,oCAAgC;AAEjD,QAAA,MAAM,qBAAqB,mBAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,eAAe,qBAAqB,CAAC;AACrC,4CAAwC;AACxC,uCAA6B;AAC7B,OAAO,KAAK,KAAK,iCAAuB"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/controllers/user-storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,oCAAgC;AAEjD,QAAA,MAAM,qBAAqB,mBAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,eAAe,qBAAqB,CAAC;AACrC,4CAAwC;AACxC,OAAO,KAAK,KAAK,iCAAuB;AACxC,kDAAwC"}
@@ -3,6 +3,6 @@ const UserStorageController = Controller;
3
3
  export { Controller };
4
4
  export default UserStorageController;
5
5
  export * from "./UserStorageController.mjs";
6
- export * from "./encryption/index.mjs";
7
6
  export * as Mocks from "./__fixtures__/index.mjs";
7
+ export * from "../../shared/encryption/index.mjs";
8
8
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/controllers/user-storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,oCAAgC;AAEjD,MAAM,qBAAqB,GAAG,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,eAAe,qBAAqB,CAAC;AACrC,4CAAwC;AACxC,uCAA6B;AAC7B,OAAO,KAAK,KAAK,iCAAuB","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"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/controllers/user-storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,oCAAgC;AAEjD,MAAM,qBAAqB,GAAG,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,eAAe,qBAAqB,CAAC;AACrC,4CAAwC;AACxC,OAAO,KAAK,KAAK,iCAAuB;AACxC,kDAAwC","sourcesContent":["import Controller from './UserStorageController';\n\nconst UserStorageController = Controller;\nexport { Controller };\nexport default UserStorageController;\nexport * from './UserStorageController';\nexport * as Mocks from './__fixtures__';\nexport * from '../../shared/encryption';\n"]}
@@ -1,13 +1,36 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
5
28
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.upsertUserStorage = exports.getUserStorageAllFeatureEntries = exports.getUserStorage = exports.USER_STORAGE_ENDPOINT = exports.USER_STORAGE_API = void 0;
29
+ exports.batchUpsertUserStorage = exports.upsertUserStorage = exports.getUserStorageAllFeatureEntries = exports.getUserStorage = exports.USER_STORAGE_ENDPOINT = exports.USER_STORAGE_API = void 0;
7
30
  const loglevel_1 = __importDefault(require("loglevel"));
8
- const env_1 = require("../../sdk/env.cjs");
9
- const encryption_1 = __importDefault(require("./encryption/index.cjs"));
10
- const schema_1 = require("./schema.cjs");
31
+ const encryption_1 = __importStar(require("../../shared/encryption/index.cjs"));
32
+ const env_1 = require("../../shared/env.cjs");
33
+ const storage_schema_1 = require("../../shared/storage-schema.cjs");
11
34
  const ENV_URLS = (0, env_1.getEnvUrls)(env_1.Env.PRD);
12
35
  exports.USER_STORAGE_API = ENV_URLS.userStorageApiUrl;
13
36
  exports.USER_STORAGE_ENDPOINT = `${exports.USER_STORAGE_API}/api/v1/userstorage`;
@@ -20,7 +43,7 @@ exports.USER_STORAGE_ENDPOINT = `${exports.USER_STORAGE_API}/api/v1/userstorage`
20
43
  async function getUserStorage(opts) {
21
44
  try {
22
45
  const { bearerToken, path, storageKey, nativeScryptCrypto } = opts;
23
- const encryptedPath = (0, schema_1.createEntryPath)(path, storageKey);
46
+ const encryptedPath = (0, storage_schema_1.createEntryPath)(path, storageKey);
24
47
  const url = new URL(`${exports.USER_STORAGE_ENDPOINT}/${encryptedPath}`);
25
48
  const userStorageResponse = await fetch(url.toString(), {
26
49
  headers: {
@@ -101,7 +124,7 @@ exports.getUserStorageAllFeatureEntries = getUserStorageAllFeatureEntries;
101
124
  async function upsertUserStorage(data, opts) {
102
125
  const { bearerToken, path, storageKey, nativeScryptCrypto } = opts;
103
126
  const encryptedData = await encryption_1.default.encryptString(data, opts.storageKey, nativeScryptCrypto);
104
- const encryptedPath = (0, schema_1.createEntryPath)(path, storageKey);
127
+ const encryptedPath = (0, storage_schema_1.createEntryPath)(path, storageKey);
105
128
  const url = new URL(`${exports.USER_STORAGE_ENDPOINT}/${encryptedPath}`);
106
129
  const res = await fetch(url.toString(), {
107
130
  method: 'PUT',
@@ -116,4 +139,37 @@ async function upsertUserStorage(data, opts) {
116
139
  }
117
140
  }
118
141
  exports.upsertUserStorage = upsertUserStorage;
142
+ /**
143
+ * User Storage Service - Set multiple storage entries for one specific feature.
144
+ * You cannot use this method to set multiple features at once.
145
+ *
146
+ * @param data - data to store, in the form of an array of [entryKey, entryValue] pairs
147
+ * @param opts - storage options
148
+ */
149
+ async function batchUpsertUserStorage(data, opts) {
150
+ if (!data.length) {
151
+ return;
152
+ }
153
+ const { bearerToken, path, storageKey, nativeScryptCrypto } = opts;
154
+ const encryptedData = await Promise.all(data.map(async (d) => {
155
+ return [
156
+ (0, encryption_1.createSHA256Hash)(d[0] + storageKey),
157
+ await encryption_1.default.encryptString(d[1], opts.storageKey, nativeScryptCrypto),
158
+ ];
159
+ }));
160
+ const url = new URL(`${exports.USER_STORAGE_ENDPOINT}/${path}`);
161
+ const formattedData = Object.fromEntries(encryptedData);
162
+ const res = await fetch(url.toString(), {
163
+ method: 'PUT',
164
+ headers: {
165
+ 'Content-Type': 'application/json',
166
+ Authorization: `Bearer ${bearerToken}`,
167
+ },
168
+ body: JSON.stringify({ data: formattedData }),
169
+ });
170
+ if (!res.ok) {
171
+ throw new Error('user-storage - unable to batch upsert data');
172
+ }
173
+ }
174
+ exports.batchUpsertUserStorage = batchUpsertUserStorage;
119
175
  //# sourceMappingURL=services.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"services.cjs","sourceRoot":"","sources":["../../../src/controllers/user-storage/services.ts"],"names":[],"mappings":"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","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';\nimport type { NativeScrypt } from './UserStorageController';\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 nativeScryptCrypto?: NativeScrypt;\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, nativeScryptCrypto } = 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 = await encryption.decryptString(\n encryptedData,\n opts.storageKey,\n nativeScryptCrypto,\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, nativeScryptCrypto } = 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(\n entry.Data,\n opts.storageKey,\n nativeScryptCrypto,\n );\n });\n\n return (await Promise.allSettled(decryptedData))\n .map((d) => (d.status === 'fulfilled' ? d.value : undefined))\n .filter((d): d is string => d !== undefined);\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, nativeScryptCrypto } = opts;\n\n const encryptedData = await encryption.encryptString(\n data,\n opts.storageKey,\n nativeScryptCrypto,\n );\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"]}
1
+ {"version":3,"file":"services.cjs","sourceRoot":"","sources":["../../../src/controllers/user-storage/services.ts"],"names":[],"mappings":"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","sourcesContent":["import log from 'loglevel';\n\nimport encryption, { createSHA256Hash } from '../../shared/encryption';\nimport { Env, getEnvUrls } from '../../shared/env';\nimport type {\n UserStoragePathWithFeatureAndKey,\n UserStoragePathWithFeatureOnly,\n UserStoragePathWithKeyOnly,\n} from '../../shared/storage-schema';\nimport { createEntryPath } from '../../shared/storage-schema';\nimport type { NativeScrypt } from '../../shared/types/encryption';\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 nativeScryptCrypto?: NativeScrypt;\n};\n\nexport type UserStorageOptions = UserStorageBaseOptions & {\n path: UserStoragePathWithFeatureAndKey;\n};\n\nexport type UserStorageAllFeatureEntriesOptions = UserStorageBaseOptions & {\n path: UserStoragePathWithFeatureOnly;\n};\n\nexport type UserStorageBatchUpsertOptions = UserStorageAllFeatureEntriesOptions;\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, nativeScryptCrypto } = 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 = await encryption.decryptString(\n encryptedData,\n opts.storageKey,\n nativeScryptCrypto,\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, nativeScryptCrypto } = 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(\n entry.Data,\n opts.storageKey,\n nativeScryptCrypto,\n );\n });\n\n return (await Promise.allSettled(decryptedData))\n .map((d) => (d.status === 'fulfilled' ? d.value : undefined))\n .filter((d): d is string => d !== undefined);\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, nativeScryptCrypto } = opts;\n\n const encryptedData = await encryption.encryptString(\n data,\n opts.storageKey,\n nativeScryptCrypto,\n );\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\n/**\n * User Storage Service - Set multiple storage entries for one specific feature.\n * You cannot use this method to set multiple features at once.\n *\n * @param data - data to store, in the form of an array of [entryKey, entryValue] pairs\n * @param opts - storage options\n */\nexport async function batchUpsertUserStorage(\n data: [UserStoragePathWithKeyOnly, string][],\n opts: UserStorageBatchUpsertOptions,\n): Promise<void> {\n if (!data.length) {\n return;\n }\n\n const { bearerToken, path, storageKey, nativeScryptCrypto } = opts;\n\n const encryptedData = await Promise.all(\n data.map(async (d) => {\n return [\n createSHA256Hash(d[0] + storageKey),\n await encryption.encryptString(\n d[1],\n opts.storageKey,\n nativeScryptCrypto,\n ),\n ];\n }),\n );\n\n const url = new URL(`${USER_STORAGE_ENDPOINT}/${path}`);\n\n const formattedData = Object.fromEntries(encryptedData);\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: formattedData }),\n });\n\n if (!res.ok) {\n throw new Error('user-storage - unable to batch upsert data');\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type { UserStoragePathWithFeatureAndKey, UserStoragePathWithFeatureOnly } from "./schema.cjs";
2
- import type { NativeScrypt } from "./UserStorageController.cjs";
1
+ import type { UserStoragePathWithFeatureAndKey, UserStoragePathWithFeatureOnly, UserStoragePathWithKeyOnly } from "../../shared/storage-schema.cjs";
2
+ import type { NativeScrypt } from "../../shared/types/encryption.cjs";
3
3
  export declare const USER_STORAGE_API: string;
4
4
  export declare const USER_STORAGE_ENDPOINT: string;
5
5
  /**
@@ -24,6 +24,7 @@ export type UserStorageOptions = UserStorageBaseOptions & {
24
24
  export type UserStorageAllFeatureEntriesOptions = UserStorageBaseOptions & {
25
25
  path: UserStoragePathWithFeatureOnly;
26
26
  };
27
+ export type UserStorageBatchUpsertOptions = UserStorageAllFeatureEntriesOptions;
27
28
  /**
28
29
  * User Storage Service - Get Storage Entry.
29
30
  *
@@ -45,4 +46,12 @@ export declare function getUserStorageAllFeatureEntries(opts: UserStorageAllFeat
45
46
  * @param opts - storage options
46
47
  */
47
48
  export declare function upsertUserStorage(data: string, opts: UserStorageOptions): Promise<void>;
49
+ /**
50
+ * User Storage Service - Set multiple storage entries for one specific feature.
51
+ * You cannot use this method to set multiple features at once.
52
+ *
53
+ * @param data - data to store, in the form of an array of [entryKey, entryValue] pairs
54
+ * @param opts - storage options
55
+ */
56
+ export declare function batchUpsertUserStorage(data: [UserStoragePathWithKeyOnly, string][], opts: UserStorageBatchUpsertOptions): Promise<void>;
48
57
  //# sourceMappingURL=services.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.cts","sourceRoot":"","sources":["../../../src/controllers/user-storage/services.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gCAAgC,EAChC,8BAA8B,EAC/B,qBAAiB;AAElB,OAAO,KAAK,EAAE,YAAY,EAAE,oCAAgC;AAI5D,eAAO,MAAM,gBAAgB,EAAE,MAAmC,CAAC;AACnE,eAAO,MAAM,qBAAqB,QAA2C,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IAEnC,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,uCAAuC,GAAG;IAEpD,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;CACd,EAAE,CAAC;AAEJ,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,YAAY,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GAAG;IACxD,IAAI,EAAE,gCAAgC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG,sBAAsB,GAAG;IACzE,IAAI,EAAE,8BAA8B,CAAC;CACtC,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0CxB;AAED;;;;;GAKG;AACH,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,mCAAmC,GACxC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CA+C1B;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,IAAI,CAAC,CAuBf"}
1
+ {"version":3,"file":"services.d.cts","sourceRoot":"","sources":["../../../src/controllers/user-storage/services.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gCAAgC,EAChC,8BAA8B,EAC9B,0BAA0B,EAC3B,wCAAoC;AAErC,OAAO,KAAK,EAAE,YAAY,EAAE,0CAAsC;AAIlE,eAAO,MAAM,gBAAgB,EAAE,MAAmC,CAAC;AACnE,eAAO,MAAM,qBAAqB,QAA2C,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IAEnC,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,uCAAuC,GAAG;IAEpD,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;CACd,EAAE,CAAC;AAEJ,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,YAAY,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GAAG;IACxD,IAAI,EAAE,gCAAgC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG,sBAAsB,GAAG;IACzE,IAAI,EAAE,8BAA8B,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,mCAAmC,CAAC;AAEhF;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0CxB;AAED;;;;;GAKG;AACH,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,mCAAmC,GACxC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CA+C1B;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,CAAC,0BAA0B,EAAE,MAAM,CAAC,EAAE,EAC5C,IAAI,EAAE,6BAA6B,GAClC,OAAO,CAAC,IAAI,CAAC,CAoCf"}
@@ -1,5 +1,5 @@
1
- import type { UserStoragePathWithFeatureAndKey, UserStoragePathWithFeatureOnly } from "./schema.mjs";
2
- import type { NativeScrypt } from "./UserStorageController.mjs";
1
+ import type { UserStoragePathWithFeatureAndKey, UserStoragePathWithFeatureOnly, UserStoragePathWithKeyOnly } from "../../shared/storage-schema.mjs";
2
+ import type { NativeScrypt } from "../../shared/types/encryption.mjs";
3
3
  export declare const USER_STORAGE_API: string;
4
4
  export declare const USER_STORAGE_ENDPOINT: string;
5
5
  /**
@@ -24,6 +24,7 @@ export type UserStorageOptions = UserStorageBaseOptions & {
24
24
  export type UserStorageAllFeatureEntriesOptions = UserStorageBaseOptions & {
25
25
  path: UserStoragePathWithFeatureOnly;
26
26
  };
27
+ export type UserStorageBatchUpsertOptions = UserStorageAllFeatureEntriesOptions;
27
28
  /**
28
29
  * User Storage Service - Get Storage Entry.
29
30
  *
@@ -45,4 +46,12 @@ export declare function getUserStorageAllFeatureEntries(opts: UserStorageAllFeat
45
46
  * @param opts - storage options
46
47
  */
47
48
  export declare function upsertUserStorage(data: string, opts: UserStorageOptions): Promise<void>;
49
+ /**
50
+ * User Storage Service - Set multiple storage entries for one specific feature.
51
+ * You cannot use this method to set multiple features at once.
52
+ *
53
+ * @param data - data to store, in the form of an array of [entryKey, entryValue] pairs
54
+ * @param opts - storage options
55
+ */
56
+ export declare function batchUpsertUserStorage(data: [UserStoragePathWithKeyOnly, string][], opts: UserStorageBatchUpsertOptions): Promise<void>;
48
57
  //# sourceMappingURL=services.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.mts","sourceRoot":"","sources":["../../../src/controllers/user-storage/services.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gCAAgC,EAChC,8BAA8B,EAC/B,qBAAiB;AAElB,OAAO,KAAK,EAAE,YAAY,EAAE,oCAAgC;AAI5D,eAAO,MAAM,gBAAgB,EAAE,MAAmC,CAAC;AACnE,eAAO,MAAM,qBAAqB,QAA2C,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IAEnC,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,uCAAuC,GAAG;IAEpD,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;CACd,EAAE,CAAC;AAEJ,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,YAAY,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GAAG;IACxD,IAAI,EAAE,gCAAgC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG,sBAAsB,GAAG;IACzE,IAAI,EAAE,8BAA8B,CAAC;CACtC,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0CxB;AAED;;;;;GAKG;AACH,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,mCAAmC,GACxC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CA+C1B;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,IAAI,CAAC,CAuBf"}
1
+ {"version":3,"file":"services.d.mts","sourceRoot":"","sources":["../../../src/controllers/user-storage/services.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gCAAgC,EAChC,8BAA8B,EAC9B,0BAA0B,EAC3B,wCAAoC;AAErC,OAAO,KAAK,EAAE,YAAY,EAAE,0CAAsC;AAIlE,eAAO,MAAM,gBAAgB,EAAE,MAAmC,CAAC;AACnE,eAAO,MAAM,qBAAqB,QAA2C,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IAEnC,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,uCAAuC,GAAG;IAEpD,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;CACd,EAAE,CAAC;AAEJ,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,YAAY,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GAAG;IACxD,IAAI,EAAE,gCAAgC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG,sBAAsB,GAAG;IACzE,IAAI,EAAE,8BAA8B,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,mCAAmC,CAAC;AAEhF;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0CxB;AAED;;;;;GAKG;AACH,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,mCAAmC,GACxC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CA+C1B;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,CAAC,0BAA0B,EAAE,MAAM,CAAC,EAAE,EAC5C,IAAI,EAAE,6BAA6B,GAClC,OAAO,CAAC,IAAI,CAAC,CAoCf"}