@metamask-previews/claims-controller 0.5.4-preview-4c8a5dfcb → 0.6.0-preview-d74e69d

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 (38) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/dist/ClaimsController.cjs.map +1 -1
  3. package/dist/ClaimsController.d.cts +1 -1
  4. package/dist/ClaimsController.d.cts.map +1 -1
  5. package/dist/ClaimsController.d.mts +1 -1
  6. package/dist/ClaimsController.d.mts.map +1 -1
  7. package/dist/ClaimsController.mjs.map +1 -1
  8. package/dist/ClaimsService-method-action-types.cjs +7 -0
  9. package/dist/ClaimsService-method-action-types.cjs.map +1 -0
  10. package/dist/ClaimsService-method-action-types.d.cts +67 -0
  11. package/dist/ClaimsService-method-action-types.d.cts.map +1 -0
  12. package/dist/ClaimsService-method-action-types.d.mts +67 -0
  13. package/dist/ClaimsService-method-action-types.d.mts.map +1 -0
  14. package/dist/ClaimsService-method-action-types.mjs +6 -0
  15. package/dist/ClaimsService-method-action-types.mjs.map +1 -0
  16. package/dist/ClaimsService-structs.cjs +36 -0
  17. package/dist/ClaimsService-structs.cjs.map +1 -0
  18. package/dist/ClaimsService-structs.d.cts +71 -0
  19. package/dist/ClaimsService-structs.d.cts.map +1 -0
  20. package/dist/ClaimsService-structs.d.mts +71 -0
  21. package/dist/ClaimsService-structs.d.mts.map +1 -0
  22. package/dist/ClaimsService-structs.mjs +33 -0
  23. package/dist/ClaimsService-structs.mjs.map +1 -0
  24. package/dist/ClaimsService.cjs +122 -62
  25. package/dist/ClaimsService.cjs.map +1 -1
  26. package/dist/ClaimsService.d.cts +56 -32
  27. package/dist/ClaimsService.d.cts.map +1 -1
  28. package/dist/ClaimsService.d.mts +56 -32
  29. package/dist/ClaimsService.d.mts.map +1 -1
  30. package/dist/ClaimsService.mjs +122 -62
  31. package/dist/ClaimsService.mjs.map +1 -1
  32. package/dist/index.cjs.map +1 -1
  33. package/dist/index.d.cts +3 -2
  34. package/dist/index.d.cts.map +1 -1
  35. package/dist/index.d.mts +3 -2
  36. package/dist/index.d.mts.map +1 -1
  37. package/dist/index.mjs.map +1 -1
  38. package/package.json +5 -2
@@ -9,26 +9,56 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _ClaimsService_env, _ClaimsService_fetch, _ClaimsService_messenger;
12
+ var _ClaimsService_instances, _ClaimsService_env, _ClaimsService_fetch, _ClaimsService_captureException, _ClaimsService_getAuthContext, _ClaimsService_headersForToken, _ClaimsService_validateResponse, _ClaimsService_handleError;
13
+ import { BaseDataService } from "@metamask/base-data-service";
14
+ import { array, validate } from "@metamask/superstruct";
15
+ import { ClaimStruct, ClaimsConfigurationsResponseStruct, GenerateSignatureMessageResponseStruct } from "./ClaimsService-structs.mjs";
13
16
  import { CLAIMS_API_URL_MAP, ClaimsServiceErrorMessages, SERVICE_NAME } from "./constants.mjs";
14
17
  import { createModuleLogger, projectLogger } from "./logger.mjs";
15
18
  import { createSentryError, getErrorFromResponse } from "./utils.mjs";
19
+ const MESSENGER_EXPOSED_METHODS = [
20
+ 'fetchClaimsConfigurations',
21
+ 'getClaims',
22
+ 'getClaimById',
23
+ 'getRequestHeaders',
24
+ 'getClaimsApiUrl',
25
+ 'generateMessageForClaimSignature',
26
+ ];
27
+ const DEFAULT_POLICY_OPTIONS = {
28
+ maxRetries: 0,
29
+ };
16
30
  const log = createModuleLogger(projectLogger, 'ClaimsService');
17
- export class ClaimsService {
18
- constructor({ env, messenger, fetchFunction }) {
19
- this.name = SERVICE_NAME; // required for Modular Initialization
31
+ /**
32
+ * This service is responsible for communicating with the Claims API.
33
+ *
34
+ * All requests are authenticated via JWT Bearer tokens obtained from the
35
+ * `AuthenticationController:getBearerToken` messenger action. Cached GET
36
+ * queries are scoped by `profileId` from
37
+ * `AuthenticationController:getSessionProfile`.
38
+ */
39
+ export class ClaimsService extends BaseDataService {
40
+ constructor({ env, messenger, fetchFunction = globalThis.fetch, captureException: captureExceptionFn, queryClientConfig = {}, policyOptions = {}, }) {
41
+ super({
42
+ name: SERVICE_NAME,
43
+ messenger,
44
+ queryClientConfig,
45
+ policyOptions: { ...DEFAULT_POLICY_OPTIONS, ...policyOptions },
46
+ });
47
+ _ClaimsService_instances.add(this);
20
48
  _ClaimsService_env.set(this, void 0);
21
49
  _ClaimsService_fetch.set(this, void 0);
22
- _ClaimsService_messenger.set(this, void 0);
50
+ _ClaimsService_captureException.set(this, void 0);
23
51
  __classPrivateFieldSet(this, _ClaimsService_env, env, "f");
24
- __classPrivateFieldSet(this, _ClaimsService_messenger, messenger, "f");
25
52
  __classPrivateFieldSet(this, _ClaimsService_fetch, fetchFunction, "f");
26
- __classPrivateFieldGet(this, _ClaimsService_messenger, "f").registerActionHandler(`${SERVICE_NAME}:fetchClaimsConfigurations`, this.fetchClaimsConfigurations.bind(this));
27
- __classPrivateFieldGet(this, _ClaimsService_messenger, "f").registerActionHandler(`${SERVICE_NAME}:getClaims`, this.getClaims.bind(this));
28
- __classPrivateFieldGet(this, _ClaimsService_messenger, "f").registerActionHandler(`${SERVICE_NAME}:getClaimById`, this.getClaimById.bind(this));
29
- __classPrivateFieldGet(this, _ClaimsService_messenger, "f").registerActionHandler(`${SERVICE_NAME}:getRequestHeaders`, this.getRequestHeaders.bind(this));
30
- __classPrivateFieldGet(this, _ClaimsService_messenger, "f").registerActionHandler(`${SERVICE_NAME}:getClaimsApiUrl`, this.getClaimsApiUrl.bind(this));
31
- __classPrivateFieldGet(this, _ClaimsService_messenger, "f").registerActionHandler(`${SERVICE_NAME}:generateMessageForClaimSignature`, this.generateMessageForClaimSignature.bind(this));
53
+ __classPrivateFieldSet(this, _ClaimsService_captureException, (error) => {
54
+ try {
55
+ (captureExceptionFn ?? messenger.captureException)?.(error);
56
+ }
57
+ catch {
58
+ // ignore error thrown when calling captureException
59
+ }
60
+ }, "f");
61
+ this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
32
62
  }
33
63
  /**
34
64
  * Fetch required configurations for the claims service.
@@ -37,22 +67,24 @@ export class ClaimsService {
37
67
  */
38
68
  async fetchClaimsConfigurations() {
39
69
  try {
40
- const headers = await this.getRequestHeaders();
41
- const url = `${this.getClaimsApiUrl()}/configurations`;
42
- const response = await __classPrivateFieldGet(this, _ClaimsService_fetch, "f").call(this, url, {
43
- headers,
70
+ const { bearerToken, profileId } = await __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_getAuthContext).call(this);
71
+ return await this.fetchQuery({
72
+ queryKey: [`${this.name}:fetchClaimsConfigurations`, profileId],
73
+ queryFn: async () => {
74
+ const url = `${this.getClaimsApiUrl()}/configurations`;
75
+ const response = await __classPrivateFieldGet(this, _ClaimsService_fetch, "f").call(this, url, {
76
+ headers: __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_headersForToken).call(this, bearerToken),
77
+ });
78
+ if (!response.ok) {
79
+ throw await getErrorFromResponse(response);
80
+ }
81
+ const configurations = await response.json();
82
+ return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_validateResponse).call(this, configurations, ClaimsConfigurationsResponseStruct, ClaimsServiceErrorMessages.FAILED_TO_FETCH_CONFIGURATIONS);
83
+ },
44
84
  });
45
- if (!response.ok) {
46
- const error = await getErrorFromResponse(response);
47
- throw error;
48
- }
49
- const configurations = await response.json();
50
- return configurations;
51
85
  }
52
86
  catch (error) {
53
- log('fetchClaimsConfigurations', error);
54
- __classPrivateFieldGet(this, _ClaimsService_messenger, "f").captureException?.(createSentryError(ClaimsServiceErrorMessages.FAILED_TO_FETCH_CONFIGURATIONS, error));
55
- throw new Error(ClaimsServiceErrorMessages.FAILED_TO_FETCH_CONFIGURATIONS);
87
+ return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_handleError).call(this, 'fetchClaimsConfigurations', ClaimsServiceErrorMessages.FAILED_TO_FETCH_CONFIGURATIONS, error);
56
88
  }
57
89
  }
58
90
  /**
@@ -62,22 +94,27 @@ export class ClaimsService {
62
94
  */
63
95
  async getClaims() {
64
96
  try {
65
- const headers = await this.getRequestHeaders();
66
- const url = `${this.getClaimsApiUrl()}/claims`;
67
- const response = await __classPrivateFieldGet(this, _ClaimsService_fetch, "f").call(this, url, {
68
- headers,
97
+ const { bearerToken, profileId } = await __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_getAuthContext).call(this);
98
+ return await this.fetchQuery({
99
+ queryKey: [`${this.name}:getClaims`, profileId],
100
+ // TODO: Restore default staleTime once claim reads are invalidated
101
+ // after a successful external submit (not in getSubmitClaimConfig).
102
+ staleTime: 0,
103
+ queryFn: async () => {
104
+ const url = `${this.getClaimsApiUrl()}/claims`;
105
+ const response = await __classPrivateFieldGet(this, _ClaimsService_fetch, "f").call(this, url, {
106
+ headers: __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_headersForToken).call(this, bearerToken),
107
+ });
108
+ if (!response.ok) {
109
+ throw await getErrorFromResponse(response);
110
+ }
111
+ const claims = await response.json();
112
+ return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_validateResponse).call(this, claims, array(ClaimStruct), ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS);
113
+ },
69
114
  });
70
- if (!response.ok) {
71
- const error = await getErrorFromResponse(response);
72
- throw error;
73
- }
74
- const claims = await response.json();
75
- return claims;
76
115
  }
77
116
  catch (error) {
78
- log('getClaims', error);
79
- __classPrivateFieldGet(this, _ClaimsService_messenger, "f").captureException?.(createSentryError(ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS, error));
80
- throw new Error(ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS);
117
+ return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_handleError).call(this, 'getClaims', ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS, error);
81
118
  }
82
119
  }
83
120
  /**
@@ -88,22 +125,27 @@ export class ClaimsService {
88
125
  */
89
126
  async getClaimById(id) {
90
127
  try {
91
- const headers = await this.getRequestHeaders();
92
- const url = `${this.getClaimsApiUrl()}/claims/byId/${id}`;
93
- const response = await __classPrivateFieldGet(this, _ClaimsService_fetch, "f").call(this, url, {
94
- headers,
128
+ const { bearerToken, profileId } = await __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_getAuthContext).call(this);
129
+ return await this.fetchQuery({
130
+ queryKey: [`${this.name}:getClaimById`, id, profileId],
131
+ // TODO: Restore default staleTime once claim reads are invalidated
132
+ // after a successful external submit (not in getSubmitClaimConfig).
133
+ staleTime: 0,
134
+ queryFn: async () => {
135
+ const url = `${this.getClaimsApiUrl()}/claims/byId/${id}`;
136
+ const response = await __classPrivateFieldGet(this, _ClaimsService_fetch, "f").call(this, url, {
137
+ headers: __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_headersForToken).call(this, bearerToken),
138
+ });
139
+ if (!response.ok) {
140
+ throw await getErrorFromResponse(response);
141
+ }
142
+ const claim = await response.json();
143
+ return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_validateResponse).call(this, claim, ClaimStruct, ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID);
144
+ },
95
145
  });
96
- if (!response.ok) {
97
- const error = await getErrorFromResponse(response);
98
- throw error;
99
- }
100
- const claim = await response.json();
101
- return claim;
102
146
  }
103
147
  catch (error) {
104
- log('getClaimById', error);
105
- __classPrivateFieldGet(this, _ClaimsService_messenger, "f").captureException?.(createSentryError(ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID, error));
106
- throw new Error(ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID);
148
+ return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_handleError).call(this, 'getClaimById', ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID, error);
107
149
  }
108
150
  }
109
151
  /**
@@ -129,16 +171,13 @@ export class ClaimsService {
129
171
  }),
130
172
  });
131
173
  if (!response.ok) {
132
- const error = await getErrorFromResponse(response);
133
- throw error;
174
+ throw await getErrorFromResponse(response);
134
175
  }
135
176
  const message = await response.json();
136
- return message;
177
+ return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_validateResponse).call(this, message, GenerateSignatureMessageResponseStruct, ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED);
137
178
  }
138
179
  catch (error) {
139
- log('generateMessageForClaimSignature', error);
140
- __classPrivateFieldGet(this, _ClaimsService_messenger, "f").captureException?.(createSentryError(ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED, error));
141
- throw new Error(ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED);
180
+ return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_handleError).call(this, 'generateMessageForClaimSignature', ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED, error);
142
181
  }
143
182
  }
144
183
  /**
@@ -147,10 +186,8 @@ export class ClaimsService {
147
186
  * @returns The headers for the current request.
148
187
  */
149
188
  async getRequestHeaders() {
150
- const bearerToken = await __classPrivateFieldGet(this, _ClaimsService_messenger, "f").call('AuthenticationController:getBearerToken');
151
- return {
152
- Authorization: `Bearer ${bearerToken}`,
153
- };
189
+ const bearerToken = await this.messenger.call('AuthenticationController:getBearerToken');
190
+ return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_headersForToken).call(this, bearerToken);
154
191
  }
155
192
  /**
156
193
  * Get the URL for the claims API for the current environment.
@@ -161,5 +198,28 @@ export class ClaimsService {
161
198
  return `${CLAIMS_API_URL_MAP[__classPrivateFieldGet(this, _ClaimsService_env, "f")]}`;
162
199
  }
163
200
  }
164
- _ClaimsService_env = new WeakMap(), _ClaimsService_fetch = new WeakMap(), _ClaimsService_messenger = new WeakMap();
201
+ _ClaimsService_env = new WeakMap(), _ClaimsService_fetch = new WeakMap(), _ClaimsService_captureException = new WeakMap(), _ClaimsService_instances = new WeakSet(), _ClaimsService_getAuthContext = async function _ClaimsService_getAuthContext() {
202
+ const [bearerToken, sessionProfile] = await Promise.all([
203
+ this.messenger.call('AuthenticationController:getBearerToken'),
204
+ this.messenger.call('AuthenticationController:getSessionProfile'),
205
+ ]);
206
+ return {
207
+ bearerToken,
208
+ profileId: sessionProfile.profileId,
209
+ };
210
+ }, _ClaimsService_headersForToken = function _ClaimsService_headersForToken(token) {
211
+ return {
212
+ Authorization: `Bearer ${token}`,
213
+ };
214
+ }, _ClaimsService_validateResponse = function _ClaimsService_validateResponse(responseData, struct, errorMessage) {
215
+ const [error, validatedResponseData] = validate(responseData, struct);
216
+ if (error) {
217
+ throw new Error(`${errorMessage}: ${error.message}`);
218
+ }
219
+ return validatedResponseData;
220
+ }, _ClaimsService_handleError = function _ClaimsService_handleError(methodName, errorMessage, error) {
221
+ log(methodName, error);
222
+ __classPrivateFieldGet(this, _ClaimsService_captureException, "f")?.call(this, createSentryError(errorMessage, error));
223
+ throw new Error(errorMessage);
224
+ };
165
225
  //# sourceMappingURL=ClaimsService.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClaimsService.mjs","sourceRoot":"","sources":["../src/ClaimsService.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Messenger } from '@metamask/messenger';\nimport type { AuthenticationController } from '@metamask/profile-sync-controller';\nimport type { Hex } from '@metamask/utils';\n\nimport {\n CLAIMS_API_URL_MAP,\n ClaimsServiceErrorMessages,\n SERVICE_NAME,\n} from './constants.js';\nimport type { Env } from './constants.js';\nimport { createModuleLogger, projectLogger } from './logger.js';\nimport type {\n Claim,\n ClaimsConfigurationsResponse,\n GenerateSignatureMessageResponse,\n} from './types.js';\nimport { createSentryError, getErrorFromResponse } from './utils.js';\n\nexport type ClaimsServiceFetchClaimsConfigurationsAction = {\n type: `${typeof SERVICE_NAME}:fetchClaimsConfigurations`;\n handler: ClaimsService['fetchClaimsConfigurations'];\n};\n\nexport type ClaimsServiceGetClaimsAction = {\n type: `${typeof SERVICE_NAME}:getClaims`;\n handler: ClaimsService['getClaims'];\n};\n\nexport type ClaimsServiceGetClaimByIdAction = {\n type: `${typeof SERVICE_NAME}:getClaimById`;\n handler: ClaimsService['getClaimById'];\n};\n\nexport type ClaimsServiceGetRequestHeadersAction = {\n type: `${typeof SERVICE_NAME}:getRequestHeaders`;\n handler: ClaimsService['getRequestHeaders'];\n};\n\nexport type ClaimsServiceGetClaimsApiUrlAction = {\n type: `${typeof SERVICE_NAME}:getClaimsApiUrl`;\n handler: ClaimsService['getClaimsApiUrl'];\n};\n\nexport type ClaimsServiceGenerateMessageForClaimSignatureAction = {\n type: `${typeof SERVICE_NAME}:generateMessageForClaimSignature`;\n handler: ClaimsService['generateMessageForClaimSignature'];\n};\n\nexport type ClaimsServiceActions =\n | ClaimsServiceFetchClaimsConfigurationsAction\n | ClaimsServiceGetClaimsAction\n | ClaimsServiceGetClaimByIdAction\n | ClaimsServiceGetRequestHeadersAction\n | ClaimsServiceGetClaimsApiUrlAction\n | ClaimsServiceGenerateMessageForClaimSignatureAction;\n\nexport type AllowedActions =\n AuthenticationController.AuthenticationControllerGetBearerTokenAction;\n\nexport type ClaimsServiceEvents = never;\n\nexport type ClaimsServiceMessenger = Messenger<\n typeof SERVICE_NAME,\n ClaimsServiceActions | AllowedActions\n>;\n\nexport type ClaimsServiceConfig = {\n env: Env;\n messenger: ClaimsServiceMessenger;\n fetchFunction: typeof fetch;\n};\n\nconst log = createModuleLogger(projectLogger, 'ClaimsService');\n\nexport class ClaimsService {\n readonly name = SERVICE_NAME; // required for Modular Initialization\n\n readonly #env: Env;\n\n readonly #fetch: typeof fetch;\n\n readonly #messenger: ClaimsServiceMessenger;\n\n constructor({ env, messenger, fetchFunction }: ClaimsServiceConfig) {\n this.#env = env;\n this.#messenger = messenger;\n this.#fetch = fetchFunction;\n\n this.#messenger.registerActionHandler(\n `${SERVICE_NAME}:fetchClaimsConfigurations`,\n this.fetchClaimsConfigurations.bind(this),\n );\n this.#messenger.registerActionHandler(\n `${SERVICE_NAME}:getClaims`,\n this.getClaims.bind(this),\n );\n this.#messenger.registerActionHandler(\n `${SERVICE_NAME}:getClaimById`,\n this.getClaimById.bind(this),\n );\n this.#messenger.registerActionHandler(\n `${SERVICE_NAME}:getRequestHeaders`,\n this.getRequestHeaders.bind(this),\n );\n this.#messenger.registerActionHandler(\n `${SERVICE_NAME}:getClaimsApiUrl`,\n this.getClaimsApiUrl.bind(this),\n );\n this.#messenger.registerActionHandler(\n `${SERVICE_NAME}:generateMessageForClaimSignature`,\n this.generateMessageForClaimSignature.bind(this),\n );\n }\n\n /**\n * Fetch required configurations for the claims service.\n *\n * @returns The required configurations for the claims service.\n */\n async fetchClaimsConfigurations(): Promise<ClaimsConfigurationsResponse> {\n try {\n const headers = await this.getRequestHeaders();\n const url = `${this.getClaimsApiUrl()}/configurations`;\n const response = await this.#fetch(url, {\n headers,\n });\n\n if (!response.ok) {\n const error = await getErrorFromResponse(response);\n throw error;\n }\n\n const configurations = await response.json();\n return configurations;\n } catch (error) {\n log('fetchClaimsConfigurations', error);\n this.#messenger.captureException?.(\n createSentryError(\n ClaimsServiceErrorMessages.FAILED_TO_FETCH_CONFIGURATIONS,\n error as Error,\n ),\n );\n throw new Error(\n ClaimsServiceErrorMessages.FAILED_TO_FETCH_CONFIGURATIONS,\n );\n }\n }\n\n /**\n * Get the claims for the current user.\n *\n * @returns The claims for the current user.\n */\n async getClaims(): Promise<Claim[]> {\n try {\n const headers = await this.getRequestHeaders();\n const url = `${this.getClaimsApiUrl()}/claims`;\n const response = await this.#fetch(url, {\n headers,\n });\n\n if (!response.ok) {\n const error = await getErrorFromResponse(response);\n throw error;\n }\n\n const claims = await response.json();\n return claims;\n } catch (error) {\n log('getClaims', error);\n this.#messenger.captureException?.(\n createSentryError(\n ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS,\n error as Error,\n ),\n );\n throw new Error(ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS);\n }\n }\n\n /**\n * Get the claim by id.\n *\n * @param id - The id of the claim to get.\n * @returns The claim by id.\n */\n async getClaimById(id: string): Promise<Claim> {\n try {\n const headers = await this.getRequestHeaders();\n const url = `${this.getClaimsApiUrl()}/claims/byId/${id}`;\n const response = await this.#fetch(url, {\n headers,\n });\n\n if (!response.ok) {\n const error = await getErrorFromResponse(response);\n throw error;\n }\n\n const claim = await response.json();\n return claim;\n } catch (error) {\n log('getClaimById', error);\n this.#messenger.captureException?.(\n createSentryError(\n ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID,\n error as Error,\n ),\n );\n throw new Error(ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID);\n }\n }\n\n /**\n * Generate a message to be signed by the user for the claim request.\n *\n * @param chainId - The chain id of the claim.\n * @param walletAddress - The impacted wallet address of the claim.\n * @returns The message for the claim signature.\n */\n async generateMessageForClaimSignature(\n chainId: number,\n walletAddress: Hex,\n ): Promise<GenerateSignatureMessageResponse> {\n try {\n const headers = await this.getRequestHeaders();\n const url = `${this.getClaimsApiUrl()}/signature/generateMessage`;\n const response = await this.#fetch(url, {\n method: 'POST',\n headers: {\n ...headers,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n chainId,\n walletAddress,\n }),\n });\n\n if (!response.ok) {\n const error = await getErrorFromResponse(response);\n throw error;\n }\n\n const message = await response.json();\n return message;\n } catch (error) {\n log('generateMessageForClaimSignature', error);\n this.#messenger.captureException?.(\n createSentryError(\n ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED,\n error as Error,\n ),\n );\n throw new Error(\n ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED,\n );\n }\n }\n\n /**\n * Create the headers for the current request.\n *\n * @returns The headers for the current request.\n */\n async getRequestHeaders(): Promise<Record<string, string>> {\n const bearerToken = await this.#messenger.call(\n 'AuthenticationController:getBearerToken',\n );\n return {\n Authorization: `Bearer ${bearerToken}`,\n };\n }\n\n /**\n * Get the URL for the claims API for the current environment.\n *\n * @returns The URL for the claims API for the current environment.\n */\n getClaimsApiUrl(): string {\n return `${CLAIMS_API_URL_MAP[this.#env]}`;\n }\n}\n"]}
1
+ {"version":3,"file":"ClaimsService.mjs","sourceRoot":"","sources":["../src/ClaimsService.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseDataService } from '@metamask/base-data-service';\nimport type {\n DataServiceCacheUpdatedEvent,\n DataServiceGranularCacheUpdatedEvent,\n DataServiceInvalidateQueriesAction,\n} from '@metamask/base-data-service';\nimport type { CreateServicePolicyOptions } from '@metamask/controller-utils';\nimport type { Messenger } from '@metamask/messenger';\nimport type { AuthenticationController } from '@metamask/profile-sync-controller';\nimport { array, validate } from '@metamask/superstruct';\nimport type { Struct } from '@metamask/superstruct';\nimport type { Hex } from '@metamask/utils';\nimport type { QueryClientConfig } from '@tanstack/query-core';\n\nimport type { ClaimsServiceMethodActions } from './ClaimsService-method-action-types.js';\nimport {\n ClaimStruct,\n ClaimsConfigurationsResponseStruct,\n GenerateSignatureMessageResponseStruct,\n} from './ClaimsService-structs.js';\nimport {\n CLAIMS_API_URL_MAP,\n ClaimsServiceErrorMessages,\n SERVICE_NAME,\n} from './constants.js';\nimport type { Env } from './constants.js';\nimport { createModuleLogger, projectLogger } from './logger.js';\nimport type {\n Claim,\n ClaimsConfigurationsResponse,\n GenerateSignatureMessageResponse,\n} from './types.js';\nimport { createSentryError, getErrorFromResponse } from './utils.js';\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'fetchClaimsConfigurations',\n 'getClaims',\n 'getClaimById',\n 'getRequestHeaders',\n 'getClaimsApiUrl',\n 'generateMessageForClaimSignature',\n] as const;\n\nconst DEFAULT_POLICY_OPTIONS: CreateServicePolicyOptions = {\n maxRetries: 0,\n};\n\n/**\n * Invalidates cached queries for {@link ClaimsService}.\n */\nexport type ClaimsServiceInvalidateQueriesAction =\n DataServiceInvalidateQueriesAction<typeof SERVICE_NAME>;\n\n/**\n * Actions that {@link ClaimsService} exposes to other consumers.\n */\nexport type ClaimsServiceActions =\n | ClaimsServiceMethodActions\n | ClaimsServiceInvalidateQueriesAction;\n\n/**\n * Actions from other messengers that {@link ClaimsService} calls.\n */\nexport type AllowedActions =\n | AuthenticationController.AuthenticationControllerGetBearerTokenAction\n | AuthenticationController.AuthenticationControllerGetSessionProfileAction;\n\n/**\n * Published when {@link ClaimsService}'s cache is updated.\n */\nexport type ClaimsServiceCacheUpdatedEvent = DataServiceCacheUpdatedEvent<\n typeof SERVICE_NAME\n>;\n\n/**\n * Published when a key within {@link ClaimsService}'s cache is updated.\n */\nexport type ClaimsServiceGranularCacheUpdatedEvent =\n DataServiceGranularCacheUpdatedEvent<typeof SERVICE_NAME>;\n\n/**\n * Events that {@link ClaimsService} exposes to other consumers.\n */\nexport type ClaimsServiceEvents =\n | ClaimsServiceCacheUpdatedEvent\n | ClaimsServiceGranularCacheUpdatedEvent;\n\n/**\n * Events from other messengers that {@link ClaimsService} subscribes to.\n */\ntype AllowedEvents = never;\n\n/**\n * The messenger which is restricted to actions and events accessed by\n * {@link ClaimsService}.\n */\nexport type ClaimsServiceMessenger = Messenger<\n typeof SERVICE_NAME,\n ClaimsServiceActions | AllowedActions,\n ClaimsServiceEvents | AllowedEvents\n>;\n\nexport type ClaimsServiceConfig = {\n env: Env;\n messenger: ClaimsServiceMessenger;\n /**\n * The `fetch` function to use for requests. Defaults to the global `fetch`.\n */\n fetchFunction?: typeof fetch;\n captureException?: (error: Error) => void;\n queryClientConfig?: QueryClientConfig;\n policyOptions?: CreateServicePolicyOptions;\n};\n\nconst log = createModuleLogger(projectLogger, 'ClaimsService');\n\n/**\n * This service is responsible for communicating with the Claims API.\n *\n * All requests are authenticated via JWT Bearer tokens obtained from the\n * `AuthenticationController:getBearerToken` messenger action. Cached GET\n * queries are scoped by `profileId` from\n * `AuthenticationController:getSessionProfile`.\n */\nexport class ClaimsService extends BaseDataService<\n typeof SERVICE_NAME,\n ClaimsServiceMessenger\n> {\n readonly #env: Env;\n\n readonly #fetch: typeof fetch;\n\n readonly #captureException?: (error: Error) => void;\n\n constructor({\n env,\n messenger,\n fetchFunction = globalThis.fetch,\n captureException: captureExceptionFn,\n queryClientConfig = {},\n policyOptions = {},\n }: ClaimsServiceConfig) {\n super({\n name: SERVICE_NAME,\n messenger,\n queryClientConfig,\n policyOptions: { ...DEFAULT_POLICY_OPTIONS, ...policyOptions },\n });\n\n this.#env = env;\n this.#fetch = fetchFunction;\n this.#captureException = (error: Error): void => {\n try {\n (captureExceptionFn ?? messenger.captureException)?.(error);\n } catch {\n // ignore error thrown when calling captureException\n }\n };\n\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n }\n\n /**\n * Fetch required configurations for the claims service.\n *\n * @returns The required configurations for the claims service.\n */\n async fetchClaimsConfigurations(): Promise<ClaimsConfigurationsResponse> {\n try {\n const { bearerToken, profileId } = await this.#getAuthContext();\n\n return await this.fetchQuery({\n queryKey: [`${this.name}:fetchClaimsConfigurations`, profileId],\n queryFn: async () => {\n const url = `${this.getClaimsApiUrl()}/configurations`;\n const response = await this.#fetch(url, {\n headers: this.#headersForToken(bearerToken),\n });\n\n if (!response.ok) {\n throw await getErrorFromResponse(response);\n }\n\n const configurations = await response.json();\n\n return this.#validateResponse(\n configurations,\n ClaimsConfigurationsResponseStruct,\n ClaimsServiceErrorMessages.FAILED_TO_FETCH_CONFIGURATIONS,\n );\n },\n });\n } catch (error) {\n return this.#handleError(\n 'fetchClaimsConfigurations',\n ClaimsServiceErrorMessages.FAILED_TO_FETCH_CONFIGURATIONS,\n error,\n );\n }\n }\n\n /**\n * Get the claims for the current user.\n *\n * @returns The claims for the current user.\n */\n async getClaims(): Promise<Claim[]> {\n try {\n const { bearerToken, profileId } = await this.#getAuthContext();\n\n return await this.fetchQuery({\n queryKey: [`${this.name}:getClaims`, profileId],\n // TODO: Restore default staleTime once claim reads are invalidated\n // after a successful external submit (not in getSubmitClaimConfig).\n staleTime: 0,\n queryFn: async () => {\n const url = `${this.getClaimsApiUrl()}/claims`;\n const response = await this.#fetch(url, {\n headers: this.#headersForToken(bearerToken),\n });\n\n if (!response.ok) {\n throw await getErrorFromResponse(response);\n }\n\n const claims = await response.json();\n\n return this.#validateResponse(\n claims,\n array(ClaimStruct),\n ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS,\n );\n },\n });\n } catch (error) {\n return this.#handleError(\n 'getClaims',\n ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS,\n error,\n );\n }\n }\n\n /**\n * Get the claim by id.\n *\n * @param id - The id of the claim to get.\n * @returns The claim by id.\n */\n async getClaimById(id: string): Promise<Claim> {\n try {\n const { bearerToken, profileId } = await this.#getAuthContext();\n\n return await this.fetchQuery({\n queryKey: [`${this.name}:getClaimById`, id, profileId],\n // TODO: Restore default staleTime once claim reads are invalidated\n // after a successful external submit (not in getSubmitClaimConfig).\n staleTime: 0,\n queryFn: async () => {\n const url = `${this.getClaimsApiUrl()}/claims/byId/${id}`;\n const response = await this.#fetch(url, {\n headers: this.#headersForToken(bearerToken),\n });\n\n if (!response.ok) {\n throw await getErrorFromResponse(response);\n }\n\n const claim = await response.json();\n\n return this.#validateResponse(\n claim,\n ClaimStruct,\n ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID,\n );\n },\n });\n } catch (error) {\n return this.#handleError(\n 'getClaimById',\n ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID,\n error,\n );\n }\n }\n\n /**\n * Generate a message to be signed by the user for the claim request.\n *\n * @param chainId - The chain id of the claim.\n * @param walletAddress - The impacted wallet address of the claim.\n * @returns The message for the claim signature.\n */\n async generateMessageForClaimSignature(\n chainId: number,\n walletAddress: Hex,\n ): Promise<GenerateSignatureMessageResponse> {\n try {\n const headers = await this.getRequestHeaders();\n const url = `${this.getClaimsApiUrl()}/signature/generateMessage`;\n const response = await this.#fetch(url, {\n method: 'POST',\n headers: {\n ...headers,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n chainId,\n walletAddress,\n }),\n });\n\n if (!response.ok) {\n throw await getErrorFromResponse(response);\n }\n\n const message = await response.json();\n\n return this.#validateResponse(\n message,\n GenerateSignatureMessageResponseStruct,\n ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED,\n );\n } catch (error) {\n return this.#handleError(\n 'generateMessageForClaimSignature',\n ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED,\n error,\n );\n }\n }\n\n /**\n * Create the headers for the current request.\n *\n * @returns The headers for the current request.\n */\n async getRequestHeaders(): Promise<Record<string, string>> {\n const bearerToken = await this.messenger.call(\n 'AuthenticationController:getBearerToken',\n );\n return this.#headersForToken(bearerToken);\n }\n\n async #getAuthContext(): Promise<{\n bearerToken: string;\n profileId: string;\n }> {\n const [bearerToken, sessionProfile] = await Promise.all([\n this.messenger.call('AuthenticationController:getBearerToken'),\n this.messenger.call('AuthenticationController:getSessionProfile'),\n ]);\n\n return {\n bearerToken,\n profileId: sessionProfile.profileId,\n };\n }\n\n #headersForToken(token: string): Record<string, string> {\n return {\n Authorization: `Bearer ${token}`,\n };\n }\n\n /**\n * Get the URL for the claims API for the current environment.\n *\n * @returns The URL for the claims API for the current environment.\n */\n getClaimsApiUrl(): string {\n return `${CLAIMS_API_URL_MAP[this.#env]}`;\n }\n\n #validateResponse<TValidated>(\n responseData: unknown,\n struct: Struct<TValidated>,\n errorMessage: string,\n ): TValidated {\n const [error, validatedResponseData] = validate(responseData, struct);\n if (error) {\n throw new Error(`${errorMessage}: ${error.message}`);\n }\n\n return validatedResponseData;\n }\n\n #handleError(\n methodName: string,\n errorMessage: string,\n error: unknown,\n ): never {\n log(methodName, error);\n this.#captureException?.(createSentryError(errorMessage, error as Error));\n throw new Error(errorMessage);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,8DAG+B;AAF7B,uHAAA,gBAAgB,OAAA;AAChB,sIAAA,+BAA+B,OAAA;AAgCjC,wDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAatB,gDAOwB;AANtB,+GAAA,eAAe,OAAA;AACf,mGAAA,GAAG,OAAA;AACH,6HAAA,6BAA6B,OAAA;AAC7B,6HAAA,6BAA6B,OAAA;AAC7B,0HAAA,0BAA0B,OAAA;AAC1B,kHAAA,kBAAkB,OAAA","sourcesContent":["export {\n ClaimsController,\n getDefaultClaimsControllerState,\n} from './ClaimsController.js';\n\nexport type {\n ClaimsControllerGetStateAction,\n ClaimsControllerActions,\n ClaimsControllerStateChangeEvent,\n ClaimsControllerMessenger,\n} from './ClaimsController.js';\n\nexport type {\n ClaimsControllerFetchClaimsConfigurationsAction,\n ClaimsControllerGetSubmitClaimConfigAction,\n ClaimsControllerGenerateClaimSignatureAction,\n ClaimsControllerGetClaimsAction,\n ClaimsControllerSaveOrUpdateClaimDraftAction,\n ClaimsControllerGetClaimDraftsAction,\n ClaimsControllerDeleteClaimDraftAction,\n ClaimsControllerDeleteAllClaimDraftsAction,\n ClaimsControllerClearStateAction,\n} from './ClaimsController-method-action-types.js';\n\nexport type {\n Claim,\n ClaimsControllerState,\n Attachment,\n ClaimsConfigurations,\n CreateClaimRequest,\n SubmitClaimConfig,\n ClaimDraft,\n} from './types.js';\n\nexport { ClaimsService } from './ClaimsService.js';\n\nexport type {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetRequestHeadersAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceActions,\n ClaimsServiceMessenger,\n} from './ClaimsService.js';\n\nexport {\n ClaimStatusEnum,\n Env,\n ClaimsControllerErrorMessages,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n ClaimsServiceErrorMessages,\n CLAIMS_API_URL_MAP,\n} from './constants.js';\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,8DAG+B;AAF7B,uHAAA,gBAAgB,OAAA;AAChB,sIAAA,+BAA+B,OAAA;AAiCjC,wDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAqBtB,gDAOwB;AANtB,+GAAA,eAAe,OAAA;AACf,mGAAA,GAAG,OAAA;AACH,6HAAA,6BAA6B,OAAA;AAC7B,6HAAA,6BAA6B,OAAA;AAC7B,0HAAA,0BAA0B,OAAA;AAC1B,kHAAA,kBAAkB,OAAA","sourcesContent":["export {\n ClaimsController,\n getDefaultClaimsControllerState,\n} from './ClaimsController.js';\n\nexport type {\n ClaimsControllerGetStateAction,\n ClaimsControllerActions,\n ClaimsControllerStateChangeEvent,\n ClaimsControllerMessenger,\n ClaimsControllerOptions,\n} from './ClaimsController.js';\n\nexport type {\n ClaimsControllerFetchClaimsConfigurationsAction,\n ClaimsControllerGetSubmitClaimConfigAction,\n ClaimsControllerGenerateClaimSignatureAction,\n ClaimsControllerGetClaimsAction,\n ClaimsControllerSaveOrUpdateClaimDraftAction,\n ClaimsControllerGetClaimDraftsAction,\n ClaimsControllerDeleteClaimDraftAction,\n ClaimsControllerDeleteAllClaimDraftsAction,\n ClaimsControllerClearStateAction,\n} from './ClaimsController-method-action-types.js';\n\nexport type {\n Claim,\n ClaimsControllerState,\n Attachment,\n ClaimsConfigurations,\n CreateClaimRequest,\n SubmitClaimConfig,\n ClaimDraft,\n} from './types.js';\n\nexport { ClaimsService } from './ClaimsService.js';\n\nexport type {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetRequestHeadersAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n} from './ClaimsService-method-action-types.js';\n\nexport type {\n ClaimsServiceActions,\n ClaimsServiceConfig,\n ClaimsServiceMessenger,\n ClaimsServiceInvalidateQueriesAction,\n ClaimsServiceCacheUpdatedEvent,\n ClaimsServiceGranularCacheUpdatedEvent,\n ClaimsServiceEvents,\n} from './ClaimsService.js';\n\nexport {\n ClaimStatusEnum,\n Env,\n ClaimsControllerErrorMessages,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n ClaimsServiceErrorMessages,\n CLAIMS_API_URL_MAP,\n} from './constants.js';\n"]}
package/dist/index.d.cts CHANGED
@@ -1,8 +1,9 @@
1
1
  export { ClaimsController, getDefaultClaimsControllerState, } from "./ClaimsController.cjs";
2
- export type { ClaimsControllerGetStateAction, ClaimsControllerActions, ClaimsControllerStateChangeEvent, ClaimsControllerMessenger, } from "./ClaimsController.cjs";
2
+ export type { ClaimsControllerGetStateAction, ClaimsControllerActions, ClaimsControllerStateChangeEvent, ClaimsControllerMessenger, ClaimsControllerOptions, } from "./ClaimsController.cjs";
3
3
  export type { ClaimsControllerFetchClaimsConfigurationsAction, ClaimsControllerGetSubmitClaimConfigAction, ClaimsControllerGenerateClaimSignatureAction, ClaimsControllerGetClaimsAction, ClaimsControllerSaveOrUpdateClaimDraftAction, ClaimsControllerGetClaimDraftsAction, ClaimsControllerDeleteClaimDraftAction, ClaimsControllerDeleteAllClaimDraftsAction, ClaimsControllerClearStateAction, } from "./ClaimsController-method-action-types.cjs";
4
4
  export type { Claim, ClaimsControllerState, Attachment, ClaimsConfigurations, CreateClaimRequest, SubmitClaimConfig, ClaimDraft, } from "./types.cjs";
5
5
  export { ClaimsService } from "./ClaimsService.cjs";
6
- export type { ClaimsServiceFetchClaimsConfigurationsAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetRequestHeadersAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceActions, ClaimsServiceMessenger, } from "./ClaimsService.cjs";
6
+ export type { ClaimsServiceFetchClaimsConfigurationsAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetRequestHeadersAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGenerateMessageForClaimSignatureAction, } from "./ClaimsService-method-action-types.cjs";
7
+ export type { ClaimsServiceActions, ClaimsServiceConfig, ClaimsServiceMessenger, ClaimsServiceInvalidateQueriesAction, ClaimsServiceCacheUpdatedEvent, ClaimsServiceGranularCacheUpdatedEvent, ClaimsServiceEvents, } from "./ClaimsService.cjs";
7
8
  export { ClaimStatusEnum, Env, ClaimsControllerErrorMessages, DEFAULT_CLAIMS_CONFIGURATIONS, ClaimsServiceErrorMessages, CLAIMS_API_URL_MAP, } from "./constants.cjs";
8
9
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,GAChC,+BAA8B;AAE/B,YAAY,EACV,8BAA8B,EAC9B,uBAAuB,EACvB,gCAAgC,EAChC,yBAAyB,GAC1B,+BAA8B;AAE/B,YAAY,EACV,+CAA+C,EAC/C,0CAA0C,EAC1C,4CAA4C,EAC5C,+BAA+B,EAC/B,4CAA4C,EAC5C,oCAAoC,EACpC,sCAAsC,EACtC,0CAA0C,EAC1C,gCAAgC,GACjC,mDAAkD;AAEnD,YAAY,EACV,KAAK,EACL,qBAAqB,EACrB,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,GACX,oBAAmB;AAEpB,OAAO,EAAE,aAAa,EAAE,4BAA2B;AAEnD,YAAY,EACV,4CAA4C,EAC5C,4BAA4B,EAC5B,oCAAoC,EACpC,kCAAkC,EAClC,+BAA+B,EAC/B,mDAAmD,EACnD,oBAAoB,EACpB,sBAAsB,GACvB,4BAA2B;AAE5B,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,GACnB,wBAAuB"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,GAChC,+BAA8B;AAE/B,YAAY,EACV,8BAA8B,EAC9B,uBAAuB,EACvB,gCAAgC,EAChC,yBAAyB,EACzB,uBAAuB,GACxB,+BAA8B;AAE/B,YAAY,EACV,+CAA+C,EAC/C,0CAA0C,EAC1C,4CAA4C,EAC5C,+BAA+B,EAC/B,4CAA4C,EAC5C,oCAAoC,EACpC,sCAAsC,EACtC,0CAA0C,EAC1C,gCAAgC,GACjC,mDAAkD;AAEnD,YAAY,EACV,KAAK,EACL,qBAAqB,EACrB,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,GACX,oBAAmB;AAEpB,OAAO,EAAE,aAAa,EAAE,4BAA2B;AAEnD,YAAY,EACV,4CAA4C,EAC5C,4BAA4B,EAC5B,oCAAoC,EACpC,kCAAkC,EAClC,+BAA+B,EAC/B,mDAAmD,GACpD,gDAA+C;AAEhD,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,oCAAoC,EACpC,8BAA8B,EAC9B,sCAAsC,EACtC,mBAAmB,GACpB,4BAA2B;AAE5B,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,GACnB,wBAAuB"}
package/dist/index.d.mts CHANGED
@@ -1,8 +1,9 @@
1
1
  export { ClaimsController, getDefaultClaimsControllerState, } from "./ClaimsController.mjs";
2
- export type { ClaimsControllerGetStateAction, ClaimsControllerActions, ClaimsControllerStateChangeEvent, ClaimsControllerMessenger, } from "./ClaimsController.mjs";
2
+ export type { ClaimsControllerGetStateAction, ClaimsControllerActions, ClaimsControllerStateChangeEvent, ClaimsControllerMessenger, ClaimsControllerOptions, } from "./ClaimsController.mjs";
3
3
  export type { ClaimsControllerFetchClaimsConfigurationsAction, ClaimsControllerGetSubmitClaimConfigAction, ClaimsControllerGenerateClaimSignatureAction, ClaimsControllerGetClaimsAction, ClaimsControllerSaveOrUpdateClaimDraftAction, ClaimsControllerGetClaimDraftsAction, ClaimsControllerDeleteClaimDraftAction, ClaimsControllerDeleteAllClaimDraftsAction, ClaimsControllerClearStateAction, } from "./ClaimsController-method-action-types.mjs";
4
4
  export type { Claim, ClaimsControllerState, Attachment, ClaimsConfigurations, CreateClaimRequest, SubmitClaimConfig, ClaimDraft, } from "./types.mjs";
5
5
  export { ClaimsService } from "./ClaimsService.mjs";
6
- export type { ClaimsServiceFetchClaimsConfigurationsAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetRequestHeadersAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceActions, ClaimsServiceMessenger, } from "./ClaimsService.mjs";
6
+ export type { ClaimsServiceFetchClaimsConfigurationsAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetRequestHeadersAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGenerateMessageForClaimSignatureAction, } from "./ClaimsService-method-action-types.mjs";
7
+ export type { ClaimsServiceActions, ClaimsServiceConfig, ClaimsServiceMessenger, ClaimsServiceInvalidateQueriesAction, ClaimsServiceCacheUpdatedEvent, ClaimsServiceGranularCacheUpdatedEvent, ClaimsServiceEvents, } from "./ClaimsService.mjs";
7
8
  export { ClaimStatusEnum, Env, ClaimsControllerErrorMessages, DEFAULT_CLAIMS_CONFIGURATIONS, ClaimsServiceErrorMessages, CLAIMS_API_URL_MAP, } from "./constants.mjs";
8
9
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,GAChC,+BAA8B;AAE/B,YAAY,EACV,8BAA8B,EAC9B,uBAAuB,EACvB,gCAAgC,EAChC,yBAAyB,GAC1B,+BAA8B;AAE/B,YAAY,EACV,+CAA+C,EAC/C,0CAA0C,EAC1C,4CAA4C,EAC5C,+BAA+B,EAC/B,4CAA4C,EAC5C,oCAAoC,EACpC,sCAAsC,EACtC,0CAA0C,EAC1C,gCAAgC,GACjC,mDAAkD;AAEnD,YAAY,EACV,KAAK,EACL,qBAAqB,EACrB,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,GACX,oBAAmB;AAEpB,OAAO,EAAE,aAAa,EAAE,4BAA2B;AAEnD,YAAY,EACV,4CAA4C,EAC5C,4BAA4B,EAC5B,oCAAoC,EACpC,kCAAkC,EAClC,+BAA+B,EAC/B,mDAAmD,EACnD,oBAAoB,EACpB,sBAAsB,GACvB,4BAA2B;AAE5B,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,GACnB,wBAAuB"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,GAChC,+BAA8B;AAE/B,YAAY,EACV,8BAA8B,EAC9B,uBAAuB,EACvB,gCAAgC,EAChC,yBAAyB,EACzB,uBAAuB,GACxB,+BAA8B;AAE/B,YAAY,EACV,+CAA+C,EAC/C,0CAA0C,EAC1C,4CAA4C,EAC5C,+BAA+B,EAC/B,4CAA4C,EAC5C,oCAAoC,EACpC,sCAAsC,EACtC,0CAA0C,EAC1C,gCAAgC,GACjC,mDAAkD;AAEnD,YAAY,EACV,KAAK,EACL,qBAAqB,EACrB,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,GACX,oBAAmB;AAEpB,OAAO,EAAE,aAAa,EAAE,4BAA2B;AAEnD,YAAY,EACV,4CAA4C,EAC5C,4BAA4B,EAC5B,oCAAoC,EACpC,kCAAkC,EAClC,+BAA+B,EAC/B,mDAAmD,GACpD,gDAA+C;AAEhD,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,oCAAoC,EACpC,8BAA8B,EAC9B,sCAAsC,EACtC,mBAAmB,GACpB,4BAA2B;AAE5B,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,GACnB,wBAAuB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,EAChC,+BAA8B;AA+B/B,OAAO,EAAE,aAAa,EAAE,4BAA2B;AAanD,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,EACnB,wBAAuB","sourcesContent":["export {\n ClaimsController,\n getDefaultClaimsControllerState,\n} from './ClaimsController.js';\n\nexport type {\n ClaimsControllerGetStateAction,\n ClaimsControllerActions,\n ClaimsControllerStateChangeEvent,\n ClaimsControllerMessenger,\n} from './ClaimsController.js';\n\nexport type {\n ClaimsControllerFetchClaimsConfigurationsAction,\n ClaimsControllerGetSubmitClaimConfigAction,\n ClaimsControllerGenerateClaimSignatureAction,\n ClaimsControllerGetClaimsAction,\n ClaimsControllerSaveOrUpdateClaimDraftAction,\n ClaimsControllerGetClaimDraftsAction,\n ClaimsControllerDeleteClaimDraftAction,\n ClaimsControllerDeleteAllClaimDraftsAction,\n ClaimsControllerClearStateAction,\n} from './ClaimsController-method-action-types.js';\n\nexport type {\n Claim,\n ClaimsControllerState,\n Attachment,\n ClaimsConfigurations,\n CreateClaimRequest,\n SubmitClaimConfig,\n ClaimDraft,\n} from './types.js';\n\nexport { ClaimsService } from './ClaimsService.js';\n\nexport type {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetRequestHeadersAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceActions,\n ClaimsServiceMessenger,\n} from './ClaimsService.js';\n\nexport {\n ClaimStatusEnum,\n Env,\n ClaimsControllerErrorMessages,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n ClaimsServiceErrorMessages,\n CLAIMS_API_URL_MAP,\n} from './constants.js';\n"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,EAChC,+BAA8B;AAgC/B,OAAO,EAAE,aAAa,EAAE,4BAA2B;AAqBnD,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,EACnB,wBAAuB","sourcesContent":["export {\n ClaimsController,\n getDefaultClaimsControllerState,\n} from './ClaimsController.js';\n\nexport type {\n ClaimsControllerGetStateAction,\n ClaimsControllerActions,\n ClaimsControllerStateChangeEvent,\n ClaimsControllerMessenger,\n ClaimsControllerOptions,\n} from './ClaimsController.js';\n\nexport type {\n ClaimsControllerFetchClaimsConfigurationsAction,\n ClaimsControllerGetSubmitClaimConfigAction,\n ClaimsControllerGenerateClaimSignatureAction,\n ClaimsControllerGetClaimsAction,\n ClaimsControllerSaveOrUpdateClaimDraftAction,\n ClaimsControllerGetClaimDraftsAction,\n ClaimsControllerDeleteClaimDraftAction,\n ClaimsControllerDeleteAllClaimDraftsAction,\n ClaimsControllerClearStateAction,\n} from './ClaimsController-method-action-types.js';\n\nexport type {\n Claim,\n ClaimsControllerState,\n Attachment,\n ClaimsConfigurations,\n CreateClaimRequest,\n SubmitClaimConfig,\n ClaimDraft,\n} from './types.js';\n\nexport { ClaimsService } from './ClaimsService.js';\n\nexport type {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetRequestHeadersAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n} from './ClaimsService-method-action-types.js';\n\nexport type {\n ClaimsServiceActions,\n ClaimsServiceConfig,\n ClaimsServiceMessenger,\n ClaimsServiceInvalidateQueriesAction,\n ClaimsServiceCacheUpdatedEvent,\n ClaimsServiceGranularCacheUpdatedEvent,\n ClaimsServiceEvents,\n} from './ClaimsService.js';\n\nexport {\n ClaimStatusEnum,\n Env,\n ClaimsControllerErrorMessages,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n ClaimsServiceErrorMessages,\n CLAIMS_API_URL_MAP,\n} from './constants.js';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/claims-controller",
3
- "version": "0.5.4-preview-4c8a5dfcb",
3
+ "version": "0.6.0-preview-d74e69d",
4
4
  "description": "Controller handling shield subscription claims logic",
5
5
  "keywords": [
6
6
  "Ethereum",
@@ -56,11 +56,14 @@
56
56
  },
57
57
  "dependencies": {
58
58
  "@metamask/base-controller": "^9.1.0",
59
+ "@metamask/base-data-service": "^0.1.3",
59
60
  "@metamask/controller-utils": "^12.3.0",
60
61
  "@metamask/keyring-controller": "^27.1.1",
61
62
  "@metamask/messenger": "^2.0.0",
62
63
  "@metamask/profile-sync-controller": "^29.0.0",
63
- "@metamask/utils": "^11.11.0"
64
+ "@metamask/superstruct": "^3.4.1",
65
+ "@metamask/utils": "^11.11.0",
66
+ "@tanstack/query-core": "^4.43.0"
64
67
  },
65
68
  "devDependencies": {
66
69
  "@metamask/auto-changelog": "^6.1.0",