@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.
- package/CHANGELOG.md +13 -1
- package/dist/ClaimsController.cjs.map +1 -1
- package/dist/ClaimsController.d.cts +1 -1
- package/dist/ClaimsController.d.cts.map +1 -1
- package/dist/ClaimsController.d.mts +1 -1
- package/dist/ClaimsController.d.mts.map +1 -1
- package/dist/ClaimsController.mjs.map +1 -1
- package/dist/ClaimsService-method-action-types.cjs +7 -0
- package/dist/ClaimsService-method-action-types.cjs.map +1 -0
- package/dist/ClaimsService-method-action-types.d.cts +67 -0
- package/dist/ClaimsService-method-action-types.d.cts.map +1 -0
- package/dist/ClaimsService-method-action-types.d.mts +67 -0
- package/dist/ClaimsService-method-action-types.d.mts.map +1 -0
- package/dist/ClaimsService-method-action-types.mjs +6 -0
- package/dist/ClaimsService-method-action-types.mjs.map +1 -0
- package/dist/ClaimsService-structs.cjs +36 -0
- package/dist/ClaimsService-structs.cjs.map +1 -0
- package/dist/ClaimsService-structs.d.cts +71 -0
- package/dist/ClaimsService-structs.d.cts.map +1 -0
- package/dist/ClaimsService-structs.d.mts +71 -0
- package/dist/ClaimsService-structs.d.mts.map +1 -0
- package/dist/ClaimsService-structs.mjs +33 -0
- package/dist/ClaimsService-structs.mjs.map +1 -0
- package/dist/ClaimsService.cjs +122 -62
- package/dist/ClaimsService.cjs.map +1 -1
- package/dist/ClaimsService.d.cts +56 -32
- package/dist/ClaimsService.d.cts.map +1 -1
- package/dist/ClaimsService.d.mts +56 -32
- package/dist/ClaimsService.d.mts.map +1 -1
- package/dist/ClaimsService.mjs +122 -62
- package/dist/ClaimsService.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +3 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaimsService-structs.mjs","sourceRoot":"","sources":["../src/ClaimsService-structs.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,IAAI,EACL,8BAA8B;AAE/B,OAAO,EAAE,eAAe,EAAE,wBAAuB;AAEjD,MAAM,eAAe,GAAG,MAAM,EAAE,CAAC;AAEjC,MAAM,gBAAgB,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE;IACnB,WAAW,EAAE,MAAM,EAAE;IACrB,YAAY,EAAE,MAAM,EAAE;CACvB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;IAC9B,EAAE,EAAE,MAAM,EAAE;IACZ,OAAO,EAAE,MAAM,EAAE;IACjB,OAAO,EAAE,MAAM,EAAE;IACjB,KAAK,EAAE,MAAM,EAAE;IACf,qBAAqB,EAAE,eAAe;IACtC,cAAc,EAAE,eAAe;IAC/B,0BAA0B,EAAE,eAAe;IAC3C,WAAW,EAAE,MAAM,EAAE;IACrB,SAAS,EAAE,eAAe;IAC1B,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC9C,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC7C,SAAS,EAAE,MAAM,EAAE;IACnB,SAAS,EAAE,MAAM,EAAE;IACnB,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,CAAC;IACrD,yBAAyB,EAAE,OAAO,EAAE;IACpC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sCAAsC,GAAG,IAAI,CAAC;IACzD,OAAO,EAAE,MAAM,EAAE;IACjB,KAAK,EAAE,MAAM,EAAE;CAChB,CAAC,CAAC","sourcesContent":["import {\n array,\n enums,\n integer,\n optional,\n string,\n type,\n} from '@metamask/superstruct';\n\nimport { ClaimStatusEnum } from './constants.js';\n\nconst HexStringStruct = string();\n\nconst AttachmentStruct = type({\n publicUrl: string(),\n contentType: string(),\n originalname: string(),\n});\n\nexport const ClaimStruct = type({\n id: string(),\n shortId: string(),\n chainId: string(),\n email: string(),\n impactedWalletAddress: HexStringStruct,\n impactedTxHash: HexStringStruct,\n reimbursementWalletAddress: HexStringStruct,\n description: string(),\n signature: HexStringStruct,\n attachments: optional(array(AttachmentStruct)),\n status: enums(Object.values(ClaimStatusEnum)),\n createdAt: string(),\n updatedAt: string(),\n intercomId: optional(string()),\n});\n\nexport const ClaimsConfigurationsResponseStruct = type({\n validSubmissionWindowDays: integer(),\n networks: array(integer()),\n});\n\nexport const GenerateSignatureMessageResponseStruct = type({\n message: string(),\n nonce: string(),\n});\n"]}
|
package/dist/ClaimsService.cjs
CHANGED
|
@@ -10,28 +10,58 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
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");
|
|
11
11
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
12
|
};
|
|
13
|
-
var _ClaimsService_env, _ClaimsService_fetch,
|
|
13
|
+
var _ClaimsService_instances, _ClaimsService_env, _ClaimsService_fetch, _ClaimsService_captureException, _ClaimsService_getAuthContext, _ClaimsService_headersForToken, _ClaimsService_validateResponse, _ClaimsService_handleError;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.ClaimsService = void 0;
|
|
16
|
+
const base_data_service_1 = require("@metamask/base-data-service");
|
|
17
|
+
const superstruct_1 = require("@metamask/superstruct");
|
|
18
|
+
const ClaimsService_structs_js_1 = require("./ClaimsService-structs.cjs");
|
|
16
19
|
const constants_js_1 = require("./constants.cjs");
|
|
17
20
|
const logger_js_1 = require("./logger.cjs");
|
|
18
21
|
const utils_js_1 = require("./utils.cjs");
|
|
22
|
+
const MESSENGER_EXPOSED_METHODS = [
|
|
23
|
+
'fetchClaimsConfigurations',
|
|
24
|
+
'getClaims',
|
|
25
|
+
'getClaimById',
|
|
26
|
+
'getRequestHeaders',
|
|
27
|
+
'getClaimsApiUrl',
|
|
28
|
+
'generateMessageForClaimSignature',
|
|
29
|
+
];
|
|
30
|
+
const DEFAULT_POLICY_OPTIONS = {
|
|
31
|
+
maxRetries: 0,
|
|
32
|
+
};
|
|
19
33
|
const log = (0, logger_js_1.createModuleLogger)(logger_js_1.projectLogger, 'ClaimsService');
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
34
|
+
/**
|
|
35
|
+
* This service is responsible for communicating with the Claims API.
|
|
36
|
+
*
|
|
37
|
+
* All requests are authenticated via JWT Bearer tokens obtained from the
|
|
38
|
+
* `AuthenticationController:getBearerToken` messenger action. Cached GET
|
|
39
|
+
* queries are scoped by `profileId` from
|
|
40
|
+
* `AuthenticationController:getSessionProfile`.
|
|
41
|
+
*/
|
|
42
|
+
class ClaimsService extends base_data_service_1.BaseDataService {
|
|
43
|
+
constructor({ env, messenger, fetchFunction = globalThis.fetch, captureException: captureExceptionFn, queryClientConfig = {}, policyOptions = {}, }) {
|
|
44
|
+
super({
|
|
45
|
+
name: constants_js_1.SERVICE_NAME,
|
|
46
|
+
messenger,
|
|
47
|
+
queryClientConfig,
|
|
48
|
+
policyOptions: { ...DEFAULT_POLICY_OPTIONS, ...policyOptions },
|
|
49
|
+
});
|
|
50
|
+
_ClaimsService_instances.add(this);
|
|
23
51
|
_ClaimsService_env.set(this, void 0);
|
|
24
52
|
_ClaimsService_fetch.set(this, void 0);
|
|
25
|
-
|
|
53
|
+
_ClaimsService_captureException.set(this, void 0);
|
|
26
54
|
__classPrivateFieldSet(this, _ClaimsService_env, env, "f");
|
|
27
|
-
__classPrivateFieldSet(this, _ClaimsService_messenger, messenger, "f");
|
|
28
55
|
__classPrivateFieldSet(this, _ClaimsService_fetch, fetchFunction, "f");
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
56
|
+
__classPrivateFieldSet(this, _ClaimsService_captureException, (error) => {
|
|
57
|
+
try {
|
|
58
|
+
(captureExceptionFn ?? messenger.captureException)?.(error);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// ignore error thrown when calling captureException
|
|
62
|
+
}
|
|
63
|
+
}, "f");
|
|
64
|
+
this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
|
|
35
65
|
}
|
|
36
66
|
/**
|
|
37
67
|
* Fetch required configurations for the claims service.
|
|
@@ -40,22 +70,24 @@ class ClaimsService {
|
|
|
40
70
|
*/
|
|
41
71
|
async fetchClaimsConfigurations() {
|
|
42
72
|
try {
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
73
|
+
const { bearerToken, profileId } = await __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_getAuthContext).call(this);
|
|
74
|
+
return await this.fetchQuery({
|
|
75
|
+
queryKey: [`${this.name}:fetchClaimsConfigurations`, profileId],
|
|
76
|
+
queryFn: async () => {
|
|
77
|
+
const url = `${this.getClaimsApiUrl()}/configurations`;
|
|
78
|
+
const response = await __classPrivateFieldGet(this, _ClaimsService_fetch, "f").call(this, url, {
|
|
79
|
+
headers: __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_headersForToken).call(this, bearerToken),
|
|
80
|
+
});
|
|
81
|
+
if (!response.ok) {
|
|
82
|
+
throw await (0, utils_js_1.getErrorFromResponse)(response);
|
|
83
|
+
}
|
|
84
|
+
const configurations = await response.json();
|
|
85
|
+
return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_validateResponse).call(this, configurations, ClaimsService_structs_js_1.ClaimsConfigurationsResponseStruct, constants_js_1.ClaimsServiceErrorMessages.FAILED_TO_FETCH_CONFIGURATIONS);
|
|
86
|
+
},
|
|
47
87
|
});
|
|
48
|
-
if (!response.ok) {
|
|
49
|
-
const error = await (0, utils_js_1.getErrorFromResponse)(response);
|
|
50
|
-
throw error;
|
|
51
|
-
}
|
|
52
|
-
const configurations = await response.json();
|
|
53
|
-
return configurations;
|
|
54
88
|
}
|
|
55
89
|
catch (error) {
|
|
56
|
-
|
|
57
|
-
__classPrivateFieldGet(this, _ClaimsService_messenger, "f").captureException?.((0, utils_js_1.createSentryError)(constants_js_1.ClaimsServiceErrorMessages.FAILED_TO_FETCH_CONFIGURATIONS, error));
|
|
58
|
-
throw new Error(constants_js_1.ClaimsServiceErrorMessages.FAILED_TO_FETCH_CONFIGURATIONS);
|
|
90
|
+
return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_handleError).call(this, 'fetchClaimsConfigurations', constants_js_1.ClaimsServiceErrorMessages.FAILED_TO_FETCH_CONFIGURATIONS, error);
|
|
59
91
|
}
|
|
60
92
|
}
|
|
61
93
|
/**
|
|
@@ -65,22 +97,27 @@ class ClaimsService {
|
|
|
65
97
|
*/
|
|
66
98
|
async getClaims() {
|
|
67
99
|
try {
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
100
|
+
const { bearerToken, profileId } = await __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_getAuthContext).call(this);
|
|
101
|
+
return await this.fetchQuery({
|
|
102
|
+
queryKey: [`${this.name}:getClaims`, profileId],
|
|
103
|
+
// TODO: Restore default staleTime once claim reads are invalidated
|
|
104
|
+
// after a successful external submit (not in getSubmitClaimConfig).
|
|
105
|
+
staleTime: 0,
|
|
106
|
+
queryFn: async () => {
|
|
107
|
+
const url = `${this.getClaimsApiUrl()}/claims`;
|
|
108
|
+
const response = await __classPrivateFieldGet(this, _ClaimsService_fetch, "f").call(this, url, {
|
|
109
|
+
headers: __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_headersForToken).call(this, bearerToken),
|
|
110
|
+
});
|
|
111
|
+
if (!response.ok) {
|
|
112
|
+
throw await (0, utils_js_1.getErrorFromResponse)(response);
|
|
113
|
+
}
|
|
114
|
+
const claims = await response.json();
|
|
115
|
+
return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_validateResponse).call(this, claims, (0, superstruct_1.array)(ClaimsService_structs_js_1.ClaimStruct), constants_js_1.ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS);
|
|
116
|
+
},
|
|
72
117
|
});
|
|
73
|
-
if (!response.ok) {
|
|
74
|
-
const error = await (0, utils_js_1.getErrorFromResponse)(response);
|
|
75
|
-
throw error;
|
|
76
|
-
}
|
|
77
|
-
const claims = await response.json();
|
|
78
|
-
return claims;
|
|
79
118
|
}
|
|
80
119
|
catch (error) {
|
|
81
|
-
|
|
82
|
-
__classPrivateFieldGet(this, _ClaimsService_messenger, "f").captureException?.((0, utils_js_1.createSentryError)(constants_js_1.ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS, error));
|
|
83
|
-
throw new Error(constants_js_1.ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS);
|
|
120
|
+
return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_handleError).call(this, 'getClaims', constants_js_1.ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS, error);
|
|
84
121
|
}
|
|
85
122
|
}
|
|
86
123
|
/**
|
|
@@ -91,22 +128,27 @@ class ClaimsService {
|
|
|
91
128
|
*/
|
|
92
129
|
async getClaimById(id) {
|
|
93
130
|
try {
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
131
|
+
const { bearerToken, profileId } = await __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_getAuthContext).call(this);
|
|
132
|
+
return await this.fetchQuery({
|
|
133
|
+
queryKey: [`${this.name}:getClaimById`, id, profileId],
|
|
134
|
+
// TODO: Restore default staleTime once claim reads are invalidated
|
|
135
|
+
// after a successful external submit (not in getSubmitClaimConfig).
|
|
136
|
+
staleTime: 0,
|
|
137
|
+
queryFn: async () => {
|
|
138
|
+
const url = `${this.getClaimsApiUrl()}/claims/byId/${id}`;
|
|
139
|
+
const response = await __classPrivateFieldGet(this, _ClaimsService_fetch, "f").call(this, url, {
|
|
140
|
+
headers: __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_headersForToken).call(this, bearerToken),
|
|
141
|
+
});
|
|
142
|
+
if (!response.ok) {
|
|
143
|
+
throw await (0, utils_js_1.getErrorFromResponse)(response);
|
|
144
|
+
}
|
|
145
|
+
const claim = await response.json();
|
|
146
|
+
return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_validateResponse).call(this, claim, ClaimsService_structs_js_1.ClaimStruct, constants_js_1.ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID);
|
|
147
|
+
},
|
|
98
148
|
});
|
|
99
|
-
if (!response.ok) {
|
|
100
|
-
const error = await (0, utils_js_1.getErrorFromResponse)(response);
|
|
101
|
-
throw error;
|
|
102
|
-
}
|
|
103
|
-
const claim = await response.json();
|
|
104
|
-
return claim;
|
|
105
149
|
}
|
|
106
150
|
catch (error) {
|
|
107
|
-
|
|
108
|
-
__classPrivateFieldGet(this, _ClaimsService_messenger, "f").captureException?.((0, utils_js_1.createSentryError)(constants_js_1.ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID, error));
|
|
109
|
-
throw new Error(constants_js_1.ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID);
|
|
151
|
+
return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_handleError).call(this, 'getClaimById', constants_js_1.ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID, error);
|
|
110
152
|
}
|
|
111
153
|
}
|
|
112
154
|
/**
|
|
@@ -132,16 +174,13 @@ class ClaimsService {
|
|
|
132
174
|
}),
|
|
133
175
|
});
|
|
134
176
|
if (!response.ok) {
|
|
135
|
-
|
|
136
|
-
throw error;
|
|
177
|
+
throw await (0, utils_js_1.getErrorFromResponse)(response);
|
|
137
178
|
}
|
|
138
179
|
const message = await response.json();
|
|
139
|
-
return message;
|
|
180
|
+
return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_validateResponse).call(this, message, ClaimsService_structs_js_1.GenerateSignatureMessageResponseStruct, constants_js_1.ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED);
|
|
140
181
|
}
|
|
141
182
|
catch (error) {
|
|
142
|
-
|
|
143
|
-
__classPrivateFieldGet(this, _ClaimsService_messenger, "f").captureException?.((0, utils_js_1.createSentryError)(constants_js_1.ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED, error));
|
|
144
|
-
throw new Error(constants_js_1.ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED);
|
|
183
|
+
return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_handleError).call(this, 'generateMessageForClaimSignature', constants_js_1.ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED, error);
|
|
145
184
|
}
|
|
146
185
|
}
|
|
147
186
|
/**
|
|
@@ -150,10 +189,8 @@ class ClaimsService {
|
|
|
150
189
|
* @returns The headers for the current request.
|
|
151
190
|
*/
|
|
152
191
|
async getRequestHeaders() {
|
|
153
|
-
const bearerToken = await
|
|
154
|
-
return
|
|
155
|
-
Authorization: `Bearer ${bearerToken}`,
|
|
156
|
-
};
|
|
192
|
+
const bearerToken = await this.messenger.call('AuthenticationController:getBearerToken');
|
|
193
|
+
return __classPrivateFieldGet(this, _ClaimsService_instances, "m", _ClaimsService_headersForToken).call(this, bearerToken);
|
|
157
194
|
}
|
|
158
195
|
/**
|
|
159
196
|
* Get the URL for the claims API for the current environment.
|
|
@@ -165,5 +202,28 @@ class ClaimsService {
|
|
|
165
202
|
}
|
|
166
203
|
}
|
|
167
204
|
exports.ClaimsService = ClaimsService;
|
|
168
|
-
_ClaimsService_env = new WeakMap(), _ClaimsService_fetch = new WeakMap(),
|
|
205
|
+
_ClaimsService_env = new WeakMap(), _ClaimsService_fetch = new WeakMap(), _ClaimsService_captureException = new WeakMap(), _ClaimsService_instances = new WeakSet(), _ClaimsService_getAuthContext = async function _ClaimsService_getAuthContext() {
|
|
206
|
+
const [bearerToken, sessionProfile] = await Promise.all([
|
|
207
|
+
this.messenger.call('AuthenticationController:getBearerToken'),
|
|
208
|
+
this.messenger.call('AuthenticationController:getSessionProfile'),
|
|
209
|
+
]);
|
|
210
|
+
return {
|
|
211
|
+
bearerToken,
|
|
212
|
+
profileId: sessionProfile.profileId,
|
|
213
|
+
};
|
|
214
|
+
}, _ClaimsService_headersForToken = function _ClaimsService_headersForToken(token) {
|
|
215
|
+
return {
|
|
216
|
+
Authorization: `Bearer ${token}`,
|
|
217
|
+
};
|
|
218
|
+
}, _ClaimsService_validateResponse = function _ClaimsService_validateResponse(responseData, struct, errorMessage) {
|
|
219
|
+
const [error, validatedResponseData] = (0, superstruct_1.validate)(responseData, struct);
|
|
220
|
+
if (error) {
|
|
221
|
+
throw new Error(`${errorMessage}: ${error.message}`);
|
|
222
|
+
}
|
|
223
|
+
return validatedResponseData;
|
|
224
|
+
}, _ClaimsService_handleError = function _ClaimsService_handleError(methodName, errorMessage, error) {
|
|
225
|
+
log(methodName, error);
|
|
226
|
+
__classPrivateFieldGet(this, _ClaimsService_captureException, "f")?.call(this, (0, utils_js_1.createSentryError)(errorMessage, error));
|
|
227
|
+
throw new Error(errorMessage);
|
|
228
|
+
};
|
|
169
229
|
//# sourceMappingURL=ClaimsService.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaimsService.cjs","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.cjs","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"]}
|
package/dist/ClaimsService.d.cts
CHANGED
|
@@ -1,46 +1,69 @@
|
|
|
1
|
+
import { BaseDataService } from "@metamask/base-data-service";
|
|
2
|
+
import type { DataServiceCacheUpdatedEvent, DataServiceGranularCacheUpdatedEvent, DataServiceInvalidateQueriesAction } from "@metamask/base-data-service";
|
|
3
|
+
import type { CreateServicePolicyOptions } from "@metamask/controller-utils";
|
|
1
4
|
import type { Messenger } from "@metamask/messenger";
|
|
2
5
|
import type { AuthenticationController } from "@metamask/profile-sync-controller";
|
|
3
6
|
import type { Hex } from "@metamask/utils";
|
|
7
|
+
import type { QueryClientConfig } from "@tanstack/query-core";
|
|
8
|
+
import type { ClaimsServiceMethodActions } from "./ClaimsService-method-action-types.cjs";
|
|
4
9
|
import { SERVICE_NAME } from "./constants.cjs";
|
|
5
10
|
import type { Env } from "./constants.cjs";
|
|
6
11
|
import type { Claim, ClaimsConfigurationsResponse, GenerateSignatureMessageResponse } from "./types.cjs";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Invalidates cached queries for {@link ClaimsService}.
|
|
14
|
+
*/
|
|
15
|
+
export type ClaimsServiceInvalidateQueriesAction = DataServiceInvalidateQueriesAction<typeof SERVICE_NAME>;
|
|
16
|
+
/**
|
|
17
|
+
* Actions that {@link ClaimsService} exposes to other consumers.
|
|
18
|
+
*/
|
|
19
|
+
export type ClaimsServiceActions = ClaimsServiceMethodActions | ClaimsServiceInvalidateQueriesAction;
|
|
20
|
+
/**
|
|
21
|
+
* Actions from other messengers that {@link ClaimsService} calls.
|
|
22
|
+
*/
|
|
23
|
+
export type AllowedActions = AuthenticationController.AuthenticationControllerGetBearerTokenAction | AuthenticationController.AuthenticationControllerGetSessionProfileAction;
|
|
24
|
+
/**
|
|
25
|
+
* Published when {@link ClaimsService}'s cache is updated.
|
|
26
|
+
*/
|
|
27
|
+
export type ClaimsServiceCacheUpdatedEvent = DataServiceCacheUpdatedEvent<typeof SERVICE_NAME>;
|
|
28
|
+
/**
|
|
29
|
+
* Published when a key within {@link ClaimsService}'s cache is updated.
|
|
30
|
+
*/
|
|
31
|
+
export type ClaimsServiceGranularCacheUpdatedEvent = DataServiceGranularCacheUpdatedEvent<typeof SERVICE_NAME>;
|
|
32
|
+
/**
|
|
33
|
+
* Events that {@link ClaimsService} exposes to other consumers.
|
|
34
|
+
*/
|
|
35
|
+
export type ClaimsServiceEvents = ClaimsServiceCacheUpdatedEvent | ClaimsServiceGranularCacheUpdatedEvent;
|
|
36
|
+
/**
|
|
37
|
+
* Events from other messengers that {@link ClaimsService} subscribes to.
|
|
38
|
+
*/
|
|
39
|
+
type AllowedEvents = never;
|
|
40
|
+
/**
|
|
41
|
+
* The messenger which is restricted to actions and events accessed by
|
|
42
|
+
* {@link ClaimsService}.
|
|
43
|
+
*/
|
|
44
|
+
export type ClaimsServiceMessenger = Messenger<typeof SERVICE_NAME, ClaimsServiceActions | AllowedActions, ClaimsServiceEvents | AllowedEvents>;
|
|
35
45
|
export type ClaimsServiceConfig = {
|
|
36
46
|
env: Env;
|
|
37
47
|
messenger: ClaimsServiceMessenger;
|
|
38
|
-
|
|
48
|
+
/**
|
|
49
|
+
* The `fetch` function to use for requests. Defaults to the global `fetch`.
|
|
50
|
+
*/
|
|
51
|
+
fetchFunction?: typeof fetch;
|
|
52
|
+
captureException?: (error: Error) => void;
|
|
53
|
+
queryClientConfig?: QueryClientConfig;
|
|
54
|
+
policyOptions?: CreateServicePolicyOptions;
|
|
39
55
|
};
|
|
40
|
-
|
|
56
|
+
/**
|
|
57
|
+
* This service is responsible for communicating with the Claims API.
|
|
58
|
+
*
|
|
59
|
+
* All requests are authenticated via JWT Bearer tokens obtained from the
|
|
60
|
+
* `AuthenticationController:getBearerToken` messenger action. Cached GET
|
|
61
|
+
* queries are scoped by `profileId` from
|
|
62
|
+
* `AuthenticationController:getSessionProfile`.
|
|
63
|
+
*/
|
|
64
|
+
export declare class ClaimsService extends BaseDataService<typeof SERVICE_NAME, ClaimsServiceMessenger> {
|
|
41
65
|
#private;
|
|
42
|
-
|
|
43
|
-
constructor({ env, messenger, fetchFunction }: ClaimsServiceConfig);
|
|
66
|
+
constructor({ env, messenger, fetchFunction, captureException: captureExceptionFn, queryClientConfig, policyOptions, }: ClaimsServiceConfig);
|
|
44
67
|
/**
|
|
45
68
|
* Fetch required configurations for the claims service.
|
|
46
69
|
*
|
|
@@ -81,4 +104,5 @@ export declare class ClaimsService {
|
|
|
81
104
|
*/
|
|
82
105
|
getClaimsApiUrl(): string;
|
|
83
106
|
}
|
|
107
|
+
export {};
|
|
84
108
|
//# sourceMappingURL=ClaimsService.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaimsService.d.cts","sourceRoot":"","sources":["../src/ClaimsService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EAAE,wBAAwB,EAAE,0CAA0C;
|
|
1
|
+
{"version":3,"file":"ClaimsService.d.cts","sourceRoot":"","sources":["../src/ClaimsService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,oCAAoC;AAC9D,OAAO,KAAK,EACV,4BAA4B,EAC5B,oCAAoC,EACpC,kCAAkC,EACnC,oCAAoC;AACrC,OAAO,KAAK,EAAE,0BAA0B,EAAE,mCAAmC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EAAE,wBAAwB,EAAE,0CAA0C;AAGlF,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,6BAA6B;AAE9D,OAAO,KAAK,EAAE,0BAA0B,EAAE,gDAA+C;AAMzF,OAAO,EAGL,YAAY,EACb,wBAAuB;AACxB,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAuB;AAE1C,OAAO,KAAK,EACV,KAAK,EACL,4BAA4B,EAC5B,gCAAgC,EACjC,oBAAmB;AAgBpB;;GAEG;AACH,MAAM,MAAM,oCAAoC,GAC9C,kCAAkC,CAAC,OAAO,YAAY,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B,0BAA0B,GAC1B,oCAAoC,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,wBAAwB,CAAC,4CAA4C,GACrE,wBAAwB,CAAC,+CAA+C,CAAC;AAE7E;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,4BAA4B,CACvE,OAAO,YAAY,CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAChD,oCAAoC,CAAC,OAAO,YAAY,CAAC,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,8BAA8B,GAC9B,sCAAsC,CAAC;AAE3C;;GAEG;AACH,KAAK,aAAa,GAAG,KAAK,CAAC;AAE3B;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,SAAS,CAC5C,OAAO,YAAY,EACnB,oBAAoB,GAAG,cAAc,EACrC,mBAAmB,GAAG,aAAa,CACpC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,sBAAsB,CAAC;IAClC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,KAAK,CAAC;IAC7B,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC1C,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,aAAa,CAAC,EAAE,0BAA0B,CAAC;CAC5C,CAAC;AAIF;;;;;;;GAOG;AACH,qBAAa,aAAc,SAAQ,eAAe,CAChD,OAAO,YAAY,EACnB,sBAAsB,CACvB;;gBAOa,EACV,GAAG,EACH,SAAS,EACT,aAAgC,EAChC,gBAAgB,EAAE,kBAAkB,EACpC,iBAAsB,EACtB,aAAkB,GACnB,EAAE,mBAAmB;IAwBtB;;;;OAIG;IACG,yBAAyB,IAAI,OAAO,CAAC,4BAA4B,CAAC;IAkCxE;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAqCnC;;;;;OAKG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAqC9C;;;;;;OAMG;IACG,gCAAgC,CACpC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,GAAG,GACjB,OAAO,CAAC,gCAAgC,CAAC;IAoC5C;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA4B1D;;;;OAIG;IACH,eAAe,IAAI,MAAM;CA0B1B"}
|
package/dist/ClaimsService.d.mts
CHANGED
|
@@ -1,46 +1,69 @@
|
|
|
1
|
+
import { BaseDataService } from "@metamask/base-data-service";
|
|
2
|
+
import type { DataServiceCacheUpdatedEvent, DataServiceGranularCacheUpdatedEvent, DataServiceInvalidateQueriesAction } from "@metamask/base-data-service";
|
|
3
|
+
import type { CreateServicePolicyOptions } from "@metamask/controller-utils";
|
|
1
4
|
import type { Messenger } from "@metamask/messenger";
|
|
2
5
|
import type { AuthenticationController } from "@metamask/profile-sync-controller";
|
|
3
6
|
import type { Hex } from "@metamask/utils";
|
|
7
|
+
import type { QueryClientConfig } from "@tanstack/query-core";
|
|
8
|
+
import type { ClaimsServiceMethodActions } from "./ClaimsService-method-action-types.mjs";
|
|
4
9
|
import { SERVICE_NAME } from "./constants.mjs";
|
|
5
10
|
import type { Env } from "./constants.mjs";
|
|
6
11
|
import type { Claim, ClaimsConfigurationsResponse, GenerateSignatureMessageResponse } from "./types.mjs";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Invalidates cached queries for {@link ClaimsService}.
|
|
14
|
+
*/
|
|
15
|
+
export type ClaimsServiceInvalidateQueriesAction = DataServiceInvalidateQueriesAction<typeof SERVICE_NAME>;
|
|
16
|
+
/**
|
|
17
|
+
* Actions that {@link ClaimsService} exposes to other consumers.
|
|
18
|
+
*/
|
|
19
|
+
export type ClaimsServiceActions = ClaimsServiceMethodActions | ClaimsServiceInvalidateQueriesAction;
|
|
20
|
+
/**
|
|
21
|
+
* Actions from other messengers that {@link ClaimsService} calls.
|
|
22
|
+
*/
|
|
23
|
+
export type AllowedActions = AuthenticationController.AuthenticationControllerGetBearerTokenAction | AuthenticationController.AuthenticationControllerGetSessionProfileAction;
|
|
24
|
+
/**
|
|
25
|
+
* Published when {@link ClaimsService}'s cache is updated.
|
|
26
|
+
*/
|
|
27
|
+
export type ClaimsServiceCacheUpdatedEvent = DataServiceCacheUpdatedEvent<typeof SERVICE_NAME>;
|
|
28
|
+
/**
|
|
29
|
+
* Published when a key within {@link ClaimsService}'s cache is updated.
|
|
30
|
+
*/
|
|
31
|
+
export type ClaimsServiceGranularCacheUpdatedEvent = DataServiceGranularCacheUpdatedEvent<typeof SERVICE_NAME>;
|
|
32
|
+
/**
|
|
33
|
+
* Events that {@link ClaimsService} exposes to other consumers.
|
|
34
|
+
*/
|
|
35
|
+
export type ClaimsServiceEvents = ClaimsServiceCacheUpdatedEvent | ClaimsServiceGranularCacheUpdatedEvent;
|
|
36
|
+
/**
|
|
37
|
+
* Events from other messengers that {@link ClaimsService} subscribes to.
|
|
38
|
+
*/
|
|
39
|
+
type AllowedEvents = never;
|
|
40
|
+
/**
|
|
41
|
+
* The messenger which is restricted to actions and events accessed by
|
|
42
|
+
* {@link ClaimsService}.
|
|
43
|
+
*/
|
|
44
|
+
export type ClaimsServiceMessenger = Messenger<typeof SERVICE_NAME, ClaimsServiceActions | AllowedActions, ClaimsServiceEvents | AllowedEvents>;
|
|
35
45
|
export type ClaimsServiceConfig = {
|
|
36
46
|
env: Env;
|
|
37
47
|
messenger: ClaimsServiceMessenger;
|
|
38
|
-
|
|
48
|
+
/**
|
|
49
|
+
* The `fetch` function to use for requests. Defaults to the global `fetch`.
|
|
50
|
+
*/
|
|
51
|
+
fetchFunction?: typeof fetch;
|
|
52
|
+
captureException?: (error: Error) => void;
|
|
53
|
+
queryClientConfig?: QueryClientConfig;
|
|
54
|
+
policyOptions?: CreateServicePolicyOptions;
|
|
39
55
|
};
|
|
40
|
-
|
|
56
|
+
/**
|
|
57
|
+
* This service is responsible for communicating with the Claims API.
|
|
58
|
+
*
|
|
59
|
+
* All requests are authenticated via JWT Bearer tokens obtained from the
|
|
60
|
+
* `AuthenticationController:getBearerToken` messenger action. Cached GET
|
|
61
|
+
* queries are scoped by `profileId` from
|
|
62
|
+
* `AuthenticationController:getSessionProfile`.
|
|
63
|
+
*/
|
|
64
|
+
export declare class ClaimsService extends BaseDataService<typeof SERVICE_NAME, ClaimsServiceMessenger> {
|
|
41
65
|
#private;
|
|
42
|
-
|
|
43
|
-
constructor({ env, messenger, fetchFunction }: ClaimsServiceConfig);
|
|
66
|
+
constructor({ env, messenger, fetchFunction, captureException: captureExceptionFn, queryClientConfig, policyOptions, }: ClaimsServiceConfig);
|
|
44
67
|
/**
|
|
45
68
|
* Fetch required configurations for the claims service.
|
|
46
69
|
*
|
|
@@ -81,4 +104,5 @@ export declare class ClaimsService {
|
|
|
81
104
|
*/
|
|
82
105
|
getClaimsApiUrl(): string;
|
|
83
106
|
}
|
|
107
|
+
export {};
|
|
84
108
|
//# sourceMappingURL=ClaimsService.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaimsService.d.mts","sourceRoot":"","sources":["../src/ClaimsService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EAAE,wBAAwB,EAAE,0CAA0C;
|
|
1
|
+
{"version":3,"file":"ClaimsService.d.mts","sourceRoot":"","sources":["../src/ClaimsService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,oCAAoC;AAC9D,OAAO,KAAK,EACV,4BAA4B,EAC5B,oCAAoC,EACpC,kCAAkC,EACnC,oCAAoC;AACrC,OAAO,KAAK,EAAE,0BAA0B,EAAE,mCAAmC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EAAE,wBAAwB,EAAE,0CAA0C;AAGlF,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,6BAA6B;AAE9D,OAAO,KAAK,EAAE,0BAA0B,EAAE,gDAA+C;AAMzF,OAAO,EAGL,YAAY,EACb,wBAAuB;AACxB,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAuB;AAE1C,OAAO,KAAK,EACV,KAAK,EACL,4BAA4B,EAC5B,gCAAgC,EACjC,oBAAmB;AAgBpB;;GAEG;AACH,MAAM,MAAM,oCAAoC,GAC9C,kCAAkC,CAAC,OAAO,YAAY,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B,0BAA0B,GAC1B,oCAAoC,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,wBAAwB,CAAC,4CAA4C,GACrE,wBAAwB,CAAC,+CAA+C,CAAC;AAE7E;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,4BAA4B,CACvE,OAAO,YAAY,CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAChD,oCAAoC,CAAC,OAAO,YAAY,CAAC,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,8BAA8B,GAC9B,sCAAsC,CAAC;AAE3C;;GAEG;AACH,KAAK,aAAa,GAAG,KAAK,CAAC;AAE3B;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,SAAS,CAC5C,OAAO,YAAY,EACnB,oBAAoB,GAAG,cAAc,EACrC,mBAAmB,GAAG,aAAa,CACpC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,sBAAsB,CAAC;IAClC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,KAAK,CAAC;IAC7B,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC1C,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,aAAa,CAAC,EAAE,0BAA0B,CAAC;CAC5C,CAAC;AAIF;;;;;;;GAOG;AACH,qBAAa,aAAc,SAAQ,eAAe,CAChD,OAAO,YAAY,EACnB,sBAAsB,CACvB;;gBAOa,EACV,GAAG,EACH,SAAS,EACT,aAAgC,EAChC,gBAAgB,EAAE,kBAAkB,EACpC,iBAAsB,EACtB,aAAkB,GACnB,EAAE,mBAAmB;IAwBtB;;;;OAIG;IACG,yBAAyB,IAAI,OAAO,CAAC,4BAA4B,CAAC;IAkCxE;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAqCnC;;;;;OAKG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAqC9C;;;;;;OAMG;IACG,gCAAgC,CACpC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,GAAG,GACjB,OAAO,CAAC,gCAAgC,CAAC;IAoC5C;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA4B1D;;;;OAIG;IACH,eAAe,IAAI,MAAM;CA0B1B"}
|