@metamask-previews/claims-controller 0.4.3-preview-434bd0c → 0.4.3-preview-e9620906a
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 +15 -0
- package/dist/ClaimsController-method-action-types.cjs +7 -0
- package/dist/ClaimsController-method-action-types.cjs.map +1 -0
- package/dist/ClaimsController-method-action-types.d.cts +93 -0
- package/dist/ClaimsController-method-action-types.d.cts.map +1 -0
- package/dist/ClaimsController-method-action-types.d.mts +93 -0
- package/dist/ClaimsController-method-action-types.d.mts.map +1 -0
- package/dist/ClaimsController-method-action-types.mjs +6 -0
- package/dist/ClaimsController-method-action-types.mjs.map +1 -0
- package/dist/ClaimsController.cjs +12 -0
- package/dist/ClaimsController.cjs.map +1 -1
- package/dist/ClaimsController.d.cts +2 -1
- package/dist/ClaimsController.d.cts.map +1 -1
- package/dist/ClaimsController.d.mts +2 -1
- package/dist/ClaimsController.d.mts.map +1 -1
- package/dist/ClaimsController.mjs +12 -0
- package/dist/ClaimsController.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Expose all public `ClaimsController` methods through its messenger ([#8219](https://github.com/MetaMask/core/pull/8219))
|
|
13
|
+
- The following actions are now available:
|
|
14
|
+
- `ClaimsController:fetchClaimsConfigurations`
|
|
15
|
+
- `ClaimsController:getSubmitClaimConfig`
|
|
16
|
+
- `ClaimsController:generateClaimSignature`
|
|
17
|
+
- `ClaimsController:getClaims`
|
|
18
|
+
- `ClaimsController:saveOrUpdateClaimDraft`
|
|
19
|
+
- `ClaimsController:getClaimDrafts`
|
|
20
|
+
- `ClaimsController:deleteClaimDraft`
|
|
21
|
+
- `ClaimsController:deleteAllClaimDrafts`
|
|
22
|
+
- `ClaimsController:clearState`
|
|
23
|
+
- Corresponding action types are now exported (e.g. `ClaimsControllerGetClaimsAction`)
|
|
24
|
+
|
|
10
25
|
### Changed
|
|
11
26
|
|
|
12
27
|
- Update dependencies ([#8236](https://github.com/MetaMask/core/pull/8236))
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaimsController-method-action-types.cjs","sourceRoot":"","sources":["../src/ClaimsController-method-action-types.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated by `scripts/generate-method-action-types.ts`.\n * Do not edit manually.\n */\n\nimport type { ClaimsController } from './ClaimsController';\n\n/**\n * Fetch the required configurations for the claims service.\n *\n * @returns The required configurations for the claims service.\n */\nexport type ClaimsControllerFetchClaimsConfigurationsAction = {\n type: `ClaimsController:fetchClaimsConfigurations`;\n handler: ClaimsController['fetchClaimsConfigurations'];\n};\n\n/**\n * Get required config for submitting a claim.\n *\n * @param claim - The claim request to get the required config for.\n * @returns The required config for submitting the claim.\n */\nexport type ClaimsControllerGetSubmitClaimConfigAction = {\n type: `ClaimsController:getSubmitClaimConfig`;\n handler: ClaimsController['getSubmitClaimConfig'];\n};\n\n/**\n * Generate a signature for a claim.\n *\n * @param chainId - The chain id of the claim.\n * @param walletAddress - The impacted wallet address of the claim.\n * @returns The signature for the claim.\n */\nexport type ClaimsControllerGenerateClaimSignatureAction = {\n type: `ClaimsController:generateClaimSignature`;\n handler: ClaimsController['generateClaimSignature'];\n};\n\n/**\n * Get the list of claims for the current user.\n *\n * @returns The list of claims for the current user.\n */\nexport type ClaimsControllerGetClaimsAction = {\n type: `ClaimsController:getClaims`;\n handler: ClaimsController['getClaims'];\n};\n\n/**\n * Save a claim draft to the state.\n * If the draft name is not provided, a default name will be generated.\n * If the draft with the same id already exists, it will be updated.\n *\n * @param draft - The draft to save.\n * @returns The saved draft.\n */\nexport type ClaimsControllerSaveOrUpdateClaimDraftAction = {\n type: `ClaimsController:saveOrUpdateClaimDraft`;\n handler: ClaimsController['saveOrUpdateClaimDraft'];\n};\n\n/**\n * Get the list of claim drafts.\n *\n * @returns The list of claim drafts.\n */\nexport type ClaimsControllerGetClaimDraftsAction = {\n type: `ClaimsController:getClaimDrafts`;\n handler: ClaimsController['getClaimDrafts'];\n};\n\n/**\n * Delete a claim draft from the state.\n *\n * @param draftId - The ID of the draft to delete.\n */\nexport type ClaimsControllerDeleteClaimDraftAction = {\n type: `ClaimsController:deleteClaimDraft`;\n handler: ClaimsController['deleteClaimDraft'];\n};\n\n/**\n * Delete all claim drafts from the state.\n */\nexport type ClaimsControllerDeleteAllClaimDraftsAction = {\n type: `ClaimsController:deleteAllClaimDrafts`;\n handler: ClaimsController['deleteAllClaimDrafts'];\n};\n\n/**\n * Clears the claims state and resets to default values.\n */\nexport type ClaimsControllerClearStateAction = {\n type: `ClaimsController:clearState`;\n handler: ClaimsController['clearState'];\n};\n\n/**\n * Union of all ClaimsController action types.\n */\nexport type ClaimsControllerMethodActions =\n | ClaimsControllerFetchClaimsConfigurationsAction\n | ClaimsControllerGetSubmitClaimConfigAction\n | ClaimsControllerGenerateClaimSignatureAction\n | ClaimsControllerGetClaimsAction\n | ClaimsControllerSaveOrUpdateClaimDraftAction\n | ClaimsControllerGetClaimDraftsAction\n | ClaimsControllerDeleteClaimDraftAction\n | ClaimsControllerDeleteAllClaimDraftsAction\n | ClaimsControllerClearStateAction;\n"]}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is auto generated by `scripts/generate-method-action-types.ts`.
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
*/
|
|
5
|
+
import type { ClaimsController } from "./ClaimsController.cjs";
|
|
6
|
+
/**
|
|
7
|
+
* Fetch the required configurations for the claims service.
|
|
8
|
+
*
|
|
9
|
+
* @returns The required configurations for the claims service.
|
|
10
|
+
*/
|
|
11
|
+
export type ClaimsControllerFetchClaimsConfigurationsAction = {
|
|
12
|
+
type: `ClaimsController:fetchClaimsConfigurations`;
|
|
13
|
+
handler: ClaimsController['fetchClaimsConfigurations'];
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Get required config for submitting a claim.
|
|
17
|
+
*
|
|
18
|
+
* @param claim - The claim request to get the required config for.
|
|
19
|
+
* @returns The required config for submitting the claim.
|
|
20
|
+
*/
|
|
21
|
+
export type ClaimsControllerGetSubmitClaimConfigAction = {
|
|
22
|
+
type: `ClaimsController:getSubmitClaimConfig`;
|
|
23
|
+
handler: ClaimsController['getSubmitClaimConfig'];
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Generate a signature for a claim.
|
|
27
|
+
*
|
|
28
|
+
* @param chainId - The chain id of the claim.
|
|
29
|
+
* @param walletAddress - The impacted wallet address of the claim.
|
|
30
|
+
* @returns The signature for the claim.
|
|
31
|
+
*/
|
|
32
|
+
export type ClaimsControllerGenerateClaimSignatureAction = {
|
|
33
|
+
type: `ClaimsController:generateClaimSignature`;
|
|
34
|
+
handler: ClaimsController['generateClaimSignature'];
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Get the list of claims for the current user.
|
|
38
|
+
*
|
|
39
|
+
* @returns The list of claims for the current user.
|
|
40
|
+
*/
|
|
41
|
+
export type ClaimsControllerGetClaimsAction = {
|
|
42
|
+
type: `ClaimsController:getClaims`;
|
|
43
|
+
handler: ClaimsController['getClaims'];
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Save a claim draft to the state.
|
|
47
|
+
* If the draft name is not provided, a default name will be generated.
|
|
48
|
+
* If the draft with the same id already exists, it will be updated.
|
|
49
|
+
*
|
|
50
|
+
* @param draft - The draft to save.
|
|
51
|
+
* @returns The saved draft.
|
|
52
|
+
*/
|
|
53
|
+
export type ClaimsControllerSaveOrUpdateClaimDraftAction = {
|
|
54
|
+
type: `ClaimsController:saveOrUpdateClaimDraft`;
|
|
55
|
+
handler: ClaimsController['saveOrUpdateClaimDraft'];
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Get the list of claim drafts.
|
|
59
|
+
*
|
|
60
|
+
* @returns The list of claim drafts.
|
|
61
|
+
*/
|
|
62
|
+
export type ClaimsControllerGetClaimDraftsAction = {
|
|
63
|
+
type: `ClaimsController:getClaimDrafts`;
|
|
64
|
+
handler: ClaimsController['getClaimDrafts'];
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Delete a claim draft from the state.
|
|
68
|
+
*
|
|
69
|
+
* @param draftId - The ID of the draft to delete.
|
|
70
|
+
*/
|
|
71
|
+
export type ClaimsControllerDeleteClaimDraftAction = {
|
|
72
|
+
type: `ClaimsController:deleteClaimDraft`;
|
|
73
|
+
handler: ClaimsController['deleteClaimDraft'];
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Delete all claim drafts from the state.
|
|
77
|
+
*/
|
|
78
|
+
export type ClaimsControllerDeleteAllClaimDraftsAction = {
|
|
79
|
+
type: `ClaimsController:deleteAllClaimDrafts`;
|
|
80
|
+
handler: ClaimsController['deleteAllClaimDrafts'];
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Clears the claims state and resets to default values.
|
|
84
|
+
*/
|
|
85
|
+
export type ClaimsControllerClearStateAction = {
|
|
86
|
+
type: `ClaimsController:clearState`;
|
|
87
|
+
handler: ClaimsController['clearState'];
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Union of all ClaimsController action types.
|
|
91
|
+
*/
|
|
92
|
+
export type ClaimsControllerMethodActions = ClaimsControllerFetchClaimsConfigurationsAction | ClaimsControllerGetSubmitClaimConfigAction | ClaimsControllerGenerateClaimSignatureAction | ClaimsControllerGetClaimsAction | ClaimsControllerSaveOrUpdateClaimDraftAction | ClaimsControllerGetClaimDraftsAction | ClaimsControllerDeleteClaimDraftAction | ClaimsControllerDeleteAllClaimDraftsAction | ClaimsControllerClearStateAction;
|
|
93
|
+
//# sourceMappingURL=ClaimsController-method-action-types.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaimsController-method-action-types.d.cts","sourceRoot":"","sources":["../src/ClaimsController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,+BAA2B;AAE3D;;;;GAIG;AACH,MAAM,MAAM,+CAA+C,GAAG;IAC5D,IAAI,EAAE,4CAA4C,CAAC;IACnD,OAAO,EAAE,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;CACxD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,0CAA0C,GAAG;IACvD,IAAI,EAAE,uCAAuC,CAAC;IAC9C,OAAO,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;CACnD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,4CAA4C,GAAG;IACzD,IAAI,EAAE,yCAAyC,CAAC;IAChD,OAAO,EAAE,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;CACrD,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,4BAA4B,CAAC;IACnC,OAAO,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;CACxC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,4CAA4C,GAAG;IACzD,IAAI,EAAE,yCAAyC,CAAC;IAChD,OAAO,EAAE,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;CACrD,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,oCAAoC,GAAG;IACjD,IAAI,EAAE,iCAAiC,CAAC;IACxC,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;CAC7C,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,sCAAsC,GAAG;IACnD,IAAI,EAAE,mCAAmC,CAAC;IAC1C,OAAO,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,0CAA0C,GAAG;IACvD,IAAI,EAAE,uCAAuC,CAAC;IAC9C,OAAO,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;CACnD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gCAAgC,GAAG;IAC7C,IAAI,EAAE,6BAA6B,CAAC;IACpC,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,6BAA6B,GACrC,+CAA+C,GAC/C,0CAA0C,GAC1C,4CAA4C,GAC5C,+BAA+B,GAC/B,4CAA4C,GAC5C,oCAAoC,GACpC,sCAAsC,GACtC,0CAA0C,GAC1C,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is auto generated by `scripts/generate-method-action-types.ts`.
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
*/
|
|
5
|
+
import type { ClaimsController } from "./ClaimsController.mjs";
|
|
6
|
+
/**
|
|
7
|
+
* Fetch the required configurations for the claims service.
|
|
8
|
+
*
|
|
9
|
+
* @returns The required configurations for the claims service.
|
|
10
|
+
*/
|
|
11
|
+
export type ClaimsControllerFetchClaimsConfigurationsAction = {
|
|
12
|
+
type: `ClaimsController:fetchClaimsConfigurations`;
|
|
13
|
+
handler: ClaimsController['fetchClaimsConfigurations'];
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Get required config for submitting a claim.
|
|
17
|
+
*
|
|
18
|
+
* @param claim - The claim request to get the required config for.
|
|
19
|
+
* @returns The required config for submitting the claim.
|
|
20
|
+
*/
|
|
21
|
+
export type ClaimsControllerGetSubmitClaimConfigAction = {
|
|
22
|
+
type: `ClaimsController:getSubmitClaimConfig`;
|
|
23
|
+
handler: ClaimsController['getSubmitClaimConfig'];
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Generate a signature for a claim.
|
|
27
|
+
*
|
|
28
|
+
* @param chainId - The chain id of the claim.
|
|
29
|
+
* @param walletAddress - The impacted wallet address of the claim.
|
|
30
|
+
* @returns The signature for the claim.
|
|
31
|
+
*/
|
|
32
|
+
export type ClaimsControllerGenerateClaimSignatureAction = {
|
|
33
|
+
type: `ClaimsController:generateClaimSignature`;
|
|
34
|
+
handler: ClaimsController['generateClaimSignature'];
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Get the list of claims for the current user.
|
|
38
|
+
*
|
|
39
|
+
* @returns The list of claims for the current user.
|
|
40
|
+
*/
|
|
41
|
+
export type ClaimsControllerGetClaimsAction = {
|
|
42
|
+
type: `ClaimsController:getClaims`;
|
|
43
|
+
handler: ClaimsController['getClaims'];
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Save a claim draft to the state.
|
|
47
|
+
* If the draft name is not provided, a default name will be generated.
|
|
48
|
+
* If the draft with the same id already exists, it will be updated.
|
|
49
|
+
*
|
|
50
|
+
* @param draft - The draft to save.
|
|
51
|
+
* @returns The saved draft.
|
|
52
|
+
*/
|
|
53
|
+
export type ClaimsControllerSaveOrUpdateClaimDraftAction = {
|
|
54
|
+
type: `ClaimsController:saveOrUpdateClaimDraft`;
|
|
55
|
+
handler: ClaimsController['saveOrUpdateClaimDraft'];
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Get the list of claim drafts.
|
|
59
|
+
*
|
|
60
|
+
* @returns The list of claim drafts.
|
|
61
|
+
*/
|
|
62
|
+
export type ClaimsControllerGetClaimDraftsAction = {
|
|
63
|
+
type: `ClaimsController:getClaimDrafts`;
|
|
64
|
+
handler: ClaimsController['getClaimDrafts'];
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Delete a claim draft from the state.
|
|
68
|
+
*
|
|
69
|
+
* @param draftId - The ID of the draft to delete.
|
|
70
|
+
*/
|
|
71
|
+
export type ClaimsControllerDeleteClaimDraftAction = {
|
|
72
|
+
type: `ClaimsController:deleteClaimDraft`;
|
|
73
|
+
handler: ClaimsController['deleteClaimDraft'];
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Delete all claim drafts from the state.
|
|
77
|
+
*/
|
|
78
|
+
export type ClaimsControllerDeleteAllClaimDraftsAction = {
|
|
79
|
+
type: `ClaimsController:deleteAllClaimDrafts`;
|
|
80
|
+
handler: ClaimsController['deleteAllClaimDrafts'];
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Clears the claims state and resets to default values.
|
|
84
|
+
*/
|
|
85
|
+
export type ClaimsControllerClearStateAction = {
|
|
86
|
+
type: `ClaimsController:clearState`;
|
|
87
|
+
handler: ClaimsController['clearState'];
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Union of all ClaimsController action types.
|
|
91
|
+
*/
|
|
92
|
+
export type ClaimsControllerMethodActions = ClaimsControllerFetchClaimsConfigurationsAction | ClaimsControllerGetSubmitClaimConfigAction | ClaimsControllerGenerateClaimSignatureAction | ClaimsControllerGetClaimsAction | ClaimsControllerSaveOrUpdateClaimDraftAction | ClaimsControllerGetClaimDraftsAction | ClaimsControllerDeleteClaimDraftAction | ClaimsControllerDeleteAllClaimDraftsAction | ClaimsControllerClearStateAction;
|
|
93
|
+
//# sourceMappingURL=ClaimsController-method-action-types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaimsController-method-action-types.d.mts","sourceRoot":"","sources":["../src/ClaimsController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,+BAA2B;AAE3D;;;;GAIG;AACH,MAAM,MAAM,+CAA+C,GAAG;IAC5D,IAAI,EAAE,4CAA4C,CAAC;IACnD,OAAO,EAAE,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;CACxD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,0CAA0C,GAAG;IACvD,IAAI,EAAE,uCAAuC,CAAC;IAC9C,OAAO,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;CACnD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,4CAA4C,GAAG;IACzD,IAAI,EAAE,yCAAyC,CAAC;IAChD,OAAO,EAAE,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;CACrD,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,4BAA4B,CAAC;IACnC,OAAO,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;CACxC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,4CAA4C,GAAG;IACzD,IAAI,EAAE,yCAAyC,CAAC;IAChD,OAAO,EAAE,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;CACrD,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,oCAAoC,GAAG;IACjD,IAAI,EAAE,iCAAiC,CAAC;IACxC,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;CAC7C,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,sCAAsC,GAAG;IACnD,IAAI,EAAE,mCAAmC,CAAC;IAC1C,OAAO,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,0CAA0C,GAAG;IACvD,IAAI,EAAE,uCAAuC,CAAC;IAC9C,OAAO,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;CACnD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gCAAgC,GAAG;IAC7C,IAAI,EAAE,6BAA6B,CAAC;IACpC,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,6BAA6B,GACrC,+CAA+C,GAC/C,0CAA0C,GAC1C,4CAA4C,GAC5C,+BAA+B,GAC/B,4CAA4C,GAC5C,oCAAoC,GACpC,sCAAsC,GACtC,0CAA0C,GAC1C,gCAAgC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaimsController-method-action-types.mjs","sourceRoot":"","sources":["../src/ClaimsController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated by `scripts/generate-method-action-types.ts`.\n * Do not edit manually.\n */\n\nimport type { ClaimsController } from './ClaimsController';\n\n/**\n * Fetch the required configurations for the claims service.\n *\n * @returns The required configurations for the claims service.\n */\nexport type ClaimsControllerFetchClaimsConfigurationsAction = {\n type: `ClaimsController:fetchClaimsConfigurations`;\n handler: ClaimsController['fetchClaimsConfigurations'];\n};\n\n/**\n * Get required config for submitting a claim.\n *\n * @param claim - The claim request to get the required config for.\n * @returns The required config for submitting the claim.\n */\nexport type ClaimsControllerGetSubmitClaimConfigAction = {\n type: `ClaimsController:getSubmitClaimConfig`;\n handler: ClaimsController['getSubmitClaimConfig'];\n};\n\n/**\n * Generate a signature for a claim.\n *\n * @param chainId - The chain id of the claim.\n * @param walletAddress - The impacted wallet address of the claim.\n * @returns The signature for the claim.\n */\nexport type ClaimsControllerGenerateClaimSignatureAction = {\n type: `ClaimsController:generateClaimSignature`;\n handler: ClaimsController['generateClaimSignature'];\n};\n\n/**\n * Get the list of claims for the current user.\n *\n * @returns The list of claims for the current user.\n */\nexport type ClaimsControllerGetClaimsAction = {\n type: `ClaimsController:getClaims`;\n handler: ClaimsController['getClaims'];\n};\n\n/**\n * Save a claim draft to the state.\n * If the draft name is not provided, a default name will be generated.\n * If the draft with the same id already exists, it will be updated.\n *\n * @param draft - The draft to save.\n * @returns The saved draft.\n */\nexport type ClaimsControllerSaveOrUpdateClaimDraftAction = {\n type: `ClaimsController:saveOrUpdateClaimDraft`;\n handler: ClaimsController['saveOrUpdateClaimDraft'];\n};\n\n/**\n * Get the list of claim drafts.\n *\n * @returns The list of claim drafts.\n */\nexport type ClaimsControllerGetClaimDraftsAction = {\n type: `ClaimsController:getClaimDrafts`;\n handler: ClaimsController['getClaimDrafts'];\n};\n\n/**\n * Delete a claim draft from the state.\n *\n * @param draftId - The ID of the draft to delete.\n */\nexport type ClaimsControllerDeleteClaimDraftAction = {\n type: `ClaimsController:deleteClaimDraft`;\n handler: ClaimsController['deleteClaimDraft'];\n};\n\n/**\n * Delete all claim drafts from the state.\n */\nexport type ClaimsControllerDeleteAllClaimDraftsAction = {\n type: `ClaimsController:deleteAllClaimDrafts`;\n handler: ClaimsController['deleteAllClaimDrafts'];\n};\n\n/**\n * Clears the claims state and resets to default values.\n */\nexport type ClaimsControllerClearStateAction = {\n type: `ClaimsController:clearState`;\n handler: ClaimsController['clearState'];\n};\n\n/**\n * Union of all ClaimsController action types.\n */\nexport type ClaimsControllerMethodActions =\n | ClaimsControllerFetchClaimsConfigurationsAction\n | ClaimsControllerGetSubmitClaimConfigAction\n | ClaimsControllerGenerateClaimSignatureAction\n | ClaimsControllerGetClaimsAction\n | ClaimsControllerSaveOrUpdateClaimDraftAction\n | ClaimsControllerGetClaimDraftsAction\n | ClaimsControllerDeleteClaimDraftAction\n | ClaimsControllerDeleteAllClaimDraftsAction\n | ClaimsControllerClearStateAction;\n"]}
|
|
@@ -44,6 +44,17 @@ function getDefaultClaimsControllerState() {
|
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
46
|
exports.getDefaultClaimsControllerState = getDefaultClaimsControllerState;
|
|
47
|
+
const MESSENGER_EXPOSED_METHODS = [
|
|
48
|
+
'fetchClaimsConfigurations',
|
|
49
|
+
'getSubmitClaimConfig',
|
|
50
|
+
'generateClaimSignature',
|
|
51
|
+
'getClaims',
|
|
52
|
+
'saveOrUpdateClaimDraft',
|
|
53
|
+
'getClaimDrafts',
|
|
54
|
+
'deleteClaimDraft',
|
|
55
|
+
'deleteAllClaimDrafts',
|
|
56
|
+
'clearState',
|
|
57
|
+
];
|
|
47
58
|
class ClaimsController extends base_controller_1.BaseController {
|
|
48
59
|
constructor({ messenger, state }) {
|
|
49
60
|
super({
|
|
@@ -53,6 +64,7 @@ class ClaimsController extends base_controller_1.BaseController {
|
|
|
53
64
|
state: { ...getDefaultClaimsControllerState(), ...state },
|
|
54
65
|
});
|
|
55
66
|
_ClaimsController_instances.add(this);
|
|
67
|
+
this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
|
|
56
68
|
}
|
|
57
69
|
/**
|
|
58
70
|
* Fetch the required configurations for the claims service.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaimsController.cjs","sourceRoot":"","sources":["../src/ClaimsController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n StateMetadata,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport { detectSIWE, toHex } from '@metamask/controller-utils';\nimport type { KeyringControllerSignPersonalMessageAction } from '@metamask/keyring-controller';\nimport type { Messenger } from '@metamask/messenger';\nimport { bytesToHex, stringToBytes } from '@metamask/utils';\n\nimport type {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetRequestHeadersAction,\n} from './ClaimsService';\nimport {\n ClaimsControllerErrorMessages,\n CONTROLLER_NAME,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n SERVICE_NAME,\n} from './constants';\nimport type {\n Claim,\n ClaimDraft,\n ClaimsConfigurations,\n ClaimsControllerState,\n CreateClaimRequest,\n SubmitClaimConfig,\n} from './types';\n\nexport type ClaimsControllerGetStateAction = ControllerGetStateAction<\n typeof CONTROLLER_NAME,\n ClaimsControllerState\n>;\n\nexport type ClaimsControllerActions = ClaimsControllerGetStateAction;\n\nexport type AllowedActions =\n | ClaimsServiceFetchClaimsConfigurationsAction\n | ClaimsServiceGetClaimsAction\n | ClaimsServiceGetClaimByIdAction\n | ClaimsServiceGetRequestHeadersAction\n | ClaimsServiceGetClaimsApiUrlAction\n | ClaimsServiceGenerateMessageForClaimSignatureAction\n | ClaimsServiceGetClaimsAction\n | KeyringControllerSignPersonalMessageAction;\n\nexport type ClaimsControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof CONTROLLER_NAME,\n ClaimsControllerState\n>;\n\nexport type ClaimsControllerMessenger = Messenger<\n typeof CONTROLLER_NAME,\n ClaimsControllerActions | AllowedActions,\n ClaimsControllerStateChangeEvent\n>;\n\nexport type ClaimsControllerOptions = {\n messenger: ClaimsControllerMessenger;\n state?: Partial<ClaimsControllerState>;\n};\n\nconst ClaimsControllerStateMetadata: StateMetadata<ClaimsControllerState> = {\n claims: {\n includeInStateLogs: false,\n persist: true,\n includeInDebugSnapshot: false,\n usedInUi: true,\n },\n claimsConfigurations: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n drafts: {\n includeInStateLogs: false,\n persist: true,\n includeInDebugSnapshot: false,\n usedInUi: true,\n },\n};\n\n/**\n * Get an initial default state for the controller.\n *\n * @returns The initial default controller state.\n */\nexport function getDefaultClaimsControllerState(): ClaimsControllerState {\n return {\n claimsConfigurations: DEFAULT_CLAIMS_CONFIGURATIONS,\n claims: [],\n drafts: [],\n };\n}\n\nexport class ClaimsController extends BaseController<\n typeof CONTROLLER_NAME,\n ClaimsControllerState,\n ClaimsControllerMessenger\n> {\n constructor({ messenger, state }: ClaimsControllerOptions) {\n super({\n messenger,\n metadata: ClaimsControllerStateMetadata,\n name: CONTROLLER_NAME,\n state: { ...getDefaultClaimsControllerState(), ...state },\n });\n }\n\n /**\n * Fetch the required configurations for the claims service.\n *\n * @returns The required configurations for the claims service.\n */\n async fetchClaimsConfigurations(): Promise<ClaimsConfigurations> {\n const configurations = await this.messenger.call(\n `${SERVICE_NAME}:fetchClaimsConfigurations`,\n );\n\n const supportedNetworks = configurations.networks.map((network) =>\n toHex(network),\n );\n const claimsConfigurations = {\n validSubmissionWindowDays: configurations.validSubmissionWindowDays,\n supportedNetworks,\n };\n\n this.update((state) => {\n state.claimsConfigurations = claimsConfigurations;\n });\n return claimsConfigurations;\n }\n\n /**\n * Get required config for submitting a claim.\n *\n * @param claim - The claim request to get the required config for.\n * @returns The required config for submitting the claim.\n */\n async getSubmitClaimConfig(\n claim: CreateClaimRequest,\n ): Promise<SubmitClaimConfig> {\n // Validate the claim before submitting it.\n this.#validateSubmitClaimRequest(claim);\n\n const headers = await this.messenger.call(\n `${SERVICE_NAME}:getRequestHeaders`,\n );\n const baseUrl = this.messenger.call(`${SERVICE_NAME}:getClaimsApiUrl`);\n const url = `${baseUrl}/claims`;\n\n return {\n data: claim,\n headers,\n method: 'POST',\n url,\n };\n }\n\n /**\n * Generate a signature for a claim.\n *\n * @param chainId - The chain id of the claim.\n * @param walletAddress - The impacted wallet address of the claim.\n * @returns The signature for the claim.\n */\n async generateClaimSignature(\n chainId: number,\n walletAddress: `0x${string}`,\n ): Promise<string> {\n // generate the message to be signed\n const { message } = await this.messenger.call(\n `${SERVICE_NAME}:generateMessageForClaimSignature`,\n chainId,\n walletAddress,\n );\n\n // generate and parse the SIWE message\n const messageBytes = stringToBytes(message);\n const messageHex = bytesToHex(messageBytes);\n const siwe = detectSIWE({ data: messageHex });\n if (!siwe.isSIWEMessage) {\n throw new Error(ClaimsControllerErrorMessages.INVALID_SIGNATURE_MESSAGE);\n }\n\n // sign the message\n const signature = await this.messenger.call(\n 'KeyringController:signPersonalMessage',\n {\n data: message,\n from: walletAddress,\n siwe,\n },\n );\n\n return signature;\n }\n\n /**\n * Get the list of claims for the current user.\n *\n * @returns The list of claims for the current user.\n */\n async getClaims(): Promise<Claim[]> {\n const claims = await this.messenger.call(`${SERVICE_NAME}:getClaims`);\n this.update((state) => {\n state.claims = claims;\n });\n return claims;\n }\n\n /**\n * Save a claim draft to the state.\n * If the draft name is not provided, a default name will be generated.\n * If the draft with the same id already exists, it will be updated.\n *\n * @param draft - The draft to save.\n * @returns The saved draft.\n */\n saveOrUpdateClaimDraft(draft: Partial<ClaimDraft>): ClaimDraft {\n const { drafts } = this.state;\n\n const isExistingDraft = drafts.some(\n (existingDraft) =>\n draft.draftId && existingDraft.draftId === draft.draftId,\n );\n\n if (isExistingDraft) {\n const updatedAt = new Date().toISOString();\n this.update((state) => {\n state.drafts = state.drafts.map((existingDraft) =>\n existingDraft.draftId === draft.draftId\n ? {\n ...existingDraft,\n ...draft,\n updatedAt,\n }\n : existingDraft,\n );\n });\n return { ...draft, updatedAt } as ClaimDraft;\n }\n\n // generate a new draft id, name and add it to the state\n const draftId = `draft-${Date.now()}`;\n\n const newDraft: ClaimDraft = {\n ...draft,\n draftId,\n updatedAt: new Date().toISOString(),\n };\n\n this.update((state) => {\n state.drafts.push(newDraft);\n });\n\n return newDraft;\n }\n\n /**\n * Get the list of claim drafts.\n *\n * @returns The list of claim drafts.\n */\n getClaimDrafts(): ClaimDraft[] {\n return this.state.drafts;\n }\n\n /**\n * Delete a claim draft from the state.\n *\n * @param draftId - The ID of the draft to delete.\n */\n deleteClaimDraft(draftId: string): void {\n this.update((state) => {\n state.drafts = state.drafts.filter((draft) => draft.draftId !== draftId);\n });\n }\n\n /**\n * Delete all claim drafts from the state.\n */\n deleteAllClaimDrafts(): void {\n this.update((state) => {\n state.drafts = [];\n });\n }\n\n /**\n * Clears the claims state and resets to default values.\n */\n clearState(): void {\n this.update(() => {\n return getDefaultClaimsControllerState();\n });\n }\n\n /**\n * Validate the claim before submitting it.\n *\n * @param claim - The claim to validate.\n */\n #validateSubmitClaimRequest(claim: CreateClaimRequest): void {\n const { claims: existingClaims } = this.state;\n const isClaimAlreadySubmitted = existingClaims.some(\n (existingClaim) => existingClaim.impactedTxHash === claim.impactedTxHash,\n );\n if (isClaimAlreadySubmitted) {\n throw new Error(ClaimsControllerErrorMessages.CLAIM_ALREADY_SUBMITTED);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ClaimsController.cjs","sourceRoot":"","sources":["../src/ClaimsController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n StateMetadata,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport { detectSIWE, toHex } from '@metamask/controller-utils';\nimport type { KeyringControllerSignPersonalMessageAction } from '@metamask/keyring-controller';\nimport type { Messenger } from '@metamask/messenger';\nimport { bytesToHex, stringToBytes } from '@metamask/utils';\n\nimport type { ClaimsControllerMethodActions } from './ClaimsController-method-action-types';\nimport type {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetRequestHeadersAction,\n} from './ClaimsService';\nimport {\n ClaimsControllerErrorMessages,\n CONTROLLER_NAME,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n SERVICE_NAME,\n} from './constants';\nimport type {\n Claim,\n ClaimDraft,\n ClaimsConfigurations,\n ClaimsControllerState,\n CreateClaimRequest,\n SubmitClaimConfig,\n} from './types';\n\nexport type ClaimsControllerGetStateAction = ControllerGetStateAction<\n typeof CONTROLLER_NAME,\n ClaimsControllerState\n>;\n\nexport type ClaimsControllerActions =\n | ClaimsControllerGetStateAction\n | ClaimsControllerMethodActions;\n\nexport type AllowedActions =\n | ClaimsServiceFetchClaimsConfigurationsAction\n | ClaimsServiceGetClaimsAction\n | ClaimsServiceGetClaimByIdAction\n | ClaimsServiceGetRequestHeadersAction\n | ClaimsServiceGetClaimsApiUrlAction\n | ClaimsServiceGenerateMessageForClaimSignatureAction\n | ClaimsServiceGetClaimsAction\n | KeyringControllerSignPersonalMessageAction;\n\nexport type ClaimsControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof CONTROLLER_NAME,\n ClaimsControllerState\n>;\n\nexport type ClaimsControllerMessenger = Messenger<\n typeof CONTROLLER_NAME,\n ClaimsControllerActions | AllowedActions,\n ClaimsControllerStateChangeEvent\n>;\n\nexport type ClaimsControllerOptions = {\n messenger: ClaimsControllerMessenger;\n state?: Partial<ClaimsControllerState>;\n};\n\nconst ClaimsControllerStateMetadata: StateMetadata<ClaimsControllerState> = {\n claims: {\n includeInStateLogs: false,\n persist: true,\n includeInDebugSnapshot: false,\n usedInUi: true,\n },\n claimsConfigurations: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n drafts: {\n includeInStateLogs: false,\n persist: true,\n includeInDebugSnapshot: false,\n usedInUi: true,\n },\n};\n\n/**\n * Get an initial default state for the controller.\n *\n * @returns The initial default controller state.\n */\nexport function getDefaultClaimsControllerState(): ClaimsControllerState {\n return {\n claimsConfigurations: DEFAULT_CLAIMS_CONFIGURATIONS,\n claims: [],\n drafts: [],\n };\n}\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'fetchClaimsConfigurations',\n 'getSubmitClaimConfig',\n 'generateClaimSignature',\n 'getClaims',\n 'saveOrUpdateClaimDraft',\n 'getClaimDrafts',\n 'deleteClaimDraft',\n 'deleteAllClaimDrafts',\n 'clearState',\n] as const;\n\nexport class ClaimsController extends BaseController<\n typeof CONTROLLER_NAME,\n ClaimsControllerState,\n ClaimsControllerMessenger\n> {\n constructor({ messenger, state }: ClaimsControllerOptions) {\n super({\n messenger,\n metadata: ClaimsControllerStateMetadata,\n name: CONTROLLER_NAME,\n state: { ...getDefaultClaimsControllerState(), ...state },\n });\n\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n }\n\n /**\n * Fetch the required configurations for the claims service.\n *\n * @returns The required configurations for the claims service.\n */\n async fetchClaimsConfigurations(): Promise<ClaimsConfigurations> {\n const configurations = await this.messenger.call(\n `${SERVICE_NAME}:fetchClaimsConfigurations`,\n );\n\n const supportedNetworks = configurations.networks.map((network) =>\n toHex(network),\n );\n const claimsConfigurations = {\n validSubmissionWindowDays: configurations.validSubmissionWindowDays,\n supportedNetworks,\n };\n\n this.update((state) => {\n state.claimsConfigurations = claimsConfigurations;\n });\n return claimsConfigurations;\n }\n\n /**\n * Get required config for submitting a claim.\n *\n * @param claim - The claim request to get the required config for.\n * @returns The required config for submitting the claim.\n */\n async getSubmitClaimConfig(\n claim: CreateClaimRequest,\n ): Promise<SubmitClaimConfig> {\n // Validate the claim before submitting it.\n this.#validateSubmitClaimRequest(claim);\n\n const headers = await this.messenger.call(\n `${SERVICE_NAME}:getRequestHeaders`,\n );\n const baseUrl = this.messenger.call(`${SERVICE_NAME}:getClaimsApiUrl`);\n const url = `${baseUrl}/claims`;\n\n return {\n data: claim,\n headers,\n method: 'POST',\n url,\n };\n }\n\n /**\n * Generate a signature for a claim.\n *\n * @param chainId - The chain id of the claim.\n * @param walletAddress - The impacted wallet address of the claim.\n * @returns The signature for the claim.\n */\n async generateClaimSignature(\n chainId: number,\n walletAddress: `0x${string}`,\n ): Promise<string> {\n // generate the message to be signed\n const { message } = await this.messenger.call(\n `${SERVICE_NAME}:generateMessageForClaimSignature`,\n chainId,\n walletAddress,\n );\n\n // generate and parse the SIWE message\n const messageBytes = stringToBytes(message);\n const messageHex = bytesToHex(messageBytes);\n const siwe = detectSIWE({ data: messageHex });\n if (!siwe.isSIWEMessage) {\n throw new Error(ClaimsControllerErrorMessages.INVALID_SIGNATURE_MESSAGE);\n }\n\n // sign the message\n const signature = await this.messenger.call(\n 'KeyringController:signPersonalMessage',\n {\n data: message,\n from: walletAddress,\n siwe,\n },\n );\n\n return signature;\n }\n\n /**\n * Get the list of claims for the current user.\n *\n * @returns The list of claims for the current user.\n */\n async getClaims(): Promise<Claim[]> {\n const claims = await this.messenger.call(`${SERVICE_NAME}:getClaims`);\n this.update((state) => {\n state.claims = claims;\n });\n return claims;\n }\n\n /**\n * Save a claim draft to the state.\n * If the draft name is not provided, a default name will be generated.\n * If the draft with the same id already exists, it will be updated.\n *\n * @param draft - The draft to save.\n * @returns The saved draft.\n */\n saveOrUpdateClaimDraft(draft: Partial<ClaimDraft>): ClaimDraft {\n const { drafts } = this.state;\n\n const isExistingDraft = drafts.some(\n (existingDraft) =>\n draft.draftId && existingDraft.draftId === draft.draftId,\n );\n\n if (isExistingDraft) {\n const updatedAt = new Date().toISOString();\n this.update((state) => {\n state.drafts = state.drafts.map((existingDraft) =>\n existingDraft.draftId === draft.draftId\n ? {\n ...existingDraft,\n ...draft,\n updatedAt,\n }\n : existingDraft,\n );\n });\n return { ...draft, updatedAt } as ClaimDraft;\n }\n\n // generate a new draft id, name and add it to the state\n const draftId = `draft-${Date.now()}`;\n\n const newDraft: ClaimDraft = {\n ...draft,\n draftId,\n updatedAt: new Date().toISOString(),\n };\n\n this.update((state) => {\n state.drafts.push(newDraft);\n });\n\n return newDraft;\n }\n\n /**\n * Get the list of claim drafts.\n *\n * @returns The list of claim drafts.\n */\n getClaimDrafts(): ClaimDraft[] {\n return this.state.drafts;\n }\n\n /**\n * Delete a claim draft from the state.\n *\n * @param draftId - The ID of the draft to delete.\n */\n deleteClaimDraft(draftId: string): void {\n this.update((state) => {\n state.drafts = state.drafts.filter((draft) => draft.draftId !== draftId);\n });\n }\n\n /**\n * Delete all claim drafts from the state.\n */\n deleteAllClaimDrafts(): void {\n this.update((state) => {\n state.drafts = [];\n });\n }\n\n /**\n * Clears the claims state and resets to default values.\n */\n clearState(): void {\n this.update(() => {\n return getDefaultClaimsControllerState();\n });\n }\n\n /**\n * Validate the claim before submitting it.\n *\n * @param claim - The claim to validate.\n */\n #validateSubmitClaimRequest(claim: CreateClaimRequest): void {\n const { claims: existingClaims } = this.state;\n const isClaimAlreadySubmitted = existingClaims.some(\n (existingClaim) => existingClaim.impactedTxHash === claim.impactedTxHash,\n );\n if (isClaimAlreadySubmitted) {\n throw new Error(ClaimsControllerErrorMessages.CLAIM_ALREADY_SUBMITTED);\n }\n }\n}\n"]}
|
|
@@ -2,11 +2,12 @@ import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@meta
|
|
|
2
2
|
import { BaseController } from "@metamask/base-controller";
|
|
3
3
|
import type { KeyringControllerSignPersonalMessageAction } from "@metamask/keyring-controller";
|
|
4
4
|
import type { Messenger } from "@metamask/messenger";
|
|
5
|
+
import type { ClaimsControllerMethodActions } from "./ClaimsController-method-action-types.cjs";
|
|
5
6
|
import type { ClaimsServiceFetchClaimsConfigurationsAction, ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetRequestHeadersAction } from "./ClaimsService.cjs";
|
|
6
7
|
import { CONTROLLER_NAME } from "./constants.cjs";
|
|
7
8
|
import type { Claim, ClaimDraft, ClaimsConfigurations, ClaimsControllerState, CreateClaimRequest, SubmitClaimConfig } from "./types.cjs";
|
|
8
9
|
export type ClaimsControllerGetStateAction = ControllerGetStateAction<typeof CONTROLLER_NAME, ClaimsControllerState>;
|
|
9
|
-
export type ClaimsControllerActions = ClaimsControllerGetStateAction;
|
|
10
|
+
export type ClaimsControllerActions = ClaimsControllerGetStateAction | ClaimsControllerMethodActions;
|
|
10
11
|
export type AllowedActions = ClaimsServiceFetchClaimsConfigurationsAction | ClaimsServiceGetClaimsAction | ClaimsServiceGetClaimByIdAction | ClaimsServiceGetRequestHeadersAction | ClaimsServiceGetClaimsApiUrlAction | ClaimsServiceGenerateMessageForClaimSignatureAction | ClaimsServiceGetClaimsAction | KeyringControllerSignPersonalMessageAction;
|
|
11
12
|
export type ClaimsControllerStateChangeEvent = ControllerStateChangeEvent<typeof CONTROLLER_NAME, ClaimsControllerState>;
|
|
12
13
|
export type ClaimsControllerMessenger = Messenger<typeof CONTROLLER_NAME, ClaimsControllerActions | AllowedActions, ClaimsControllerStateChangeEvent>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaimsController.d.cts","sourceRoot":"","sources":["../src/ClaimsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAE3D,OAAO,KAAK,EAAE,0CAA0C,EAAE,qCAAqC;AAC/F,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAGrD,OAAO,KAAK,EACV,4CAA4C,EAC5C,mDAAmD,EACnD,+BAA+B,EAC/B,4BAA4B,EAC5B,kCAAkC,EAClC,oCAAoC,EACrC,4BAAwB;AACzB,OAAO,EAEL,eAAe,EAGhB,wBAAoB;AACrB,OAAO,KAAK,EACV,KAAK,EACL,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EAClB,oBAAgB;AAEjB,MAAM,MAAM,8BAA8B,GAAG,wBAAwB,CACnE,OAAO,eAAe,EACtB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"ClaimsController.d.cts","sourceRoot":"","sources":["../src/ClaimsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAE3D,OAAO,KAAK,EAAE,0CAA0C,EAAE,qCAAqC;AAC/F,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAGrD,OAAO,KAAK,EAAE,6BAA6B,EAAE,mDAA+C;AAC5F,OAAO,KAAK,EACV,4CAA4C,EAC5C,mDAAmD,EACnD,+BAA+B,EAC/B,4BAA4B,EAC5B,kCAAkC,EAClC,oCAAoC,EACrC,4BAAwB;AACzB,OAAO,EAEL,eAAe,EAGhB,wBAAoB;AACrB,OAAO,KAAK,EACV,KAAK,EACL,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EAClB,oBAAgB;AAEjB,MAAM,MAAM,8BAA8B,GAAG,wBAAwB,CACnE,OAAO,eAAe,EACtB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAC/B,8BAA8B,GAC9B,6BAA6B,CAAC;AAElC,MAAM,MAAM,cAAc,GACtB,4CAA4C,GAC5C,4BAA4B,GAC5B,+BAA+B,GAC/B,oCAAoC,GACpC,kCAAkC,GAClC,mDAAmD,GACnD,4BAA4B,GAC5B,0CAA0C,CAAC;AAE/C,MAAM,MAAM,gCAAgC,GAAG,0BAA0B,CACvE,OAAO,eAAe,EACtB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,SAAS,CAC/C,OAAO,eAAe,EACtB,uBAAuB,GAAG,cAAc,EACxC,gCAAgC,CACjC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,yBAAyB,CAAC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACxC,CAAC;AAuBF;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,qBAAqB,CAMvE;AAcD,qBAAa,gBAAiB,SAAQ,cAAc,CAClD,OAAO,eAAe,EACtB,qBAAqB,EACrB,yBAAyB,CAC1B;;gBACa,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,uBAAuB;IAczD;;;;OAIG;IACG,yBAAyB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAmBhE;;;;;OAKG;IACG,oBAAoB,CACxB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,iBAAiB,CAAC;IAkB7B;;;;;;OAMG;IACG,sBAAsB,CAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,KAAK,MAAM,EAAE,GAC3B,OAAO,CAAC,MAAM,CAAC;IA6BlB;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAQnC;;;;;;;OAOG;IACH,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU;IAwC9D;;;;OAIG;IACH,cAAc,IAAI,UAAU,EAAE;IAI9B;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMvC;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAM5B;;OAEG;IACH,UAAU,IAAI,IAAI;CAoBnB"}
|
|
@@ -2,11 +2,12 @@ import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@meta
|
|
|
2
2
|
import { BaseController } from "@metamask/base-controller";
|
|
3
3
|
import type { KeyringControllerSignPersonalMessageAction } from "@metamask/keyring-controller";
|
|
4
4
|
import type { Messenger } from "@metamask/messenger";
|
|
5
|
+
import type { ClaimsControllerMethodActions } from "./ClaimsController-method-action-types.mjs";
|
|
5
6
|
import type { ClaimsServiceFetchClaimsConfigurationsAction, ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetRequestHeadersAction } from "./ClaimsService.mjs";
|
|
6
7
|
import { CONTROLLER_NAME } from "./constants.mjs";
|
|
7
8
|
import type { Claim, ClaimDraft, ClaimsConfigurations, ClaimsControllerState, CreateClaimRequest, SubmitClaimConfig } from "./types.mjs";
|
|
8
9
|
export type ClaimsControllerGetStateAction = ControllerGetStateAction<typeof CONTROLLER_NAME, ClaimsControllerState>;
|
|
9
|
-
export type ClaimsControllerActions = ClaimsControllerGetStateAction;
|
|
10
|
+
export type ClaimsControllerActions = ClaimsControllerGetStateAction | ClaimsControllerMethodActions;
|
|
10
11
|
export type AllowedActions = ClaimsServiceFetchClaimsConfigurationsAction | ClaimsServiceGetClaimsAction | ClaimsServiceGetClaimByIdAction | ClaimsServiceGetRequestHeadersAction | ClaimsServiceGetClaimsApiUrlAction | ClaimsServiceGenerateMessageForClaimSignatureAction | ClaimsServiceGetClaimsAction | KeyringControllerSignPersonalMessageAction;
|
|
11
12
|
export type ClaimsControllerStateChangeEvent = ControllerStateChangeEvent<typeof CONTROLLER_NAME, ClaimsControllerState>;
|
|
12
13
|
export type ClaimsControllerMessenger = Messenger<typeof CONTROLLER_NAME, ClaimsControllerActions | AllowedActions, ClaimsControllerStateChangeEvent>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaimsController.d.mts","sourceRoot":"","sources":["../src/ClaimsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAE3D,OAAO,KAAK,EAAE,0CAA0C,EAAE,qCAAqC;AAC/F,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAGrD,OAAO,KAAK,EACV,4CAA4C,EAC5C,mDAAmD,EACnD,+BAA+B,EAC/B,4BAA4B,EAC5B,kCAAkC,EAClC,oCAAoC,EACrC,4BAAwB;AACzB,OAAO,EAEL,eAAe,EAGhB,wBAAoB;AACrB,OAAO,KAAK,EACV,KAAK,EACL,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EAClB,oBAAgB;AAEjB,MAAM,MAAM,8BAA8B,GAAG,wBAAwB,CACnE,OAAO,eAAe,EACtB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"ClaimsController.d.mts","sourceRoot":"","sources":["../src/ClaimsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAE3D,OAAO,KAAK,EAAE,0CAA0C,EAAE,qCAAqC;AAC/F,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAGrD,OAAO,KAAK,EAAE,6BAA6B,EAAE,mDAA+C;AAC5F,OAAO,KAAK,EACV,4CAA4C,EAC5C,mDAAmD,EACnD,+BAA+B,EAC/B,4BAA4B,EAC5B,kCAAkC,EAClC,oCAAoC,EACrC,4BAAwB;AACzB,OAAO,EAEL,eAAe,EAGhB,wBAAoB;AACrB,OAAO,KAAK,EACV,KAAK,EACL,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EAClB,oBAAgB;AAEjB,MAAM,MAAM,8BAA8B,GAAG,wBAAwB,CACnE,OAAO,eAAe,EACtB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAC/B,8BAA8B,GAC9B,6BAA6B,CAAC;AAElC,MAAM,MAAM,cAAc,GACtB,4CAA4C,GAC5C,4BAA4B,GAC5B,+BAA+B,GAC/B,oCAAoC,GACpC,kCAAkC,GAClC,mDAAmD,GACnD,4BAA4B,GAC5B,0CAA0C,CAAC;AAE/C,MAAM,MAAM,gCAAgC,GAAG,0BAA0B,CACvE,OAAO,eAAe,EACtB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,SAAS,CAC/C,OAAO,eAAe,EACtB,uBAAuB,GAAG,cAAc,EACxC,gCAAgC,CACjC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,yBAAyB,CAAC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACxC,CAAC;AAuBF;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,qBAAqB,CAMvE;AAcD,qBAAa,gBAAiB,SAAQ,cAAc,CAClD,OAAO,eAAe,EACtB,qBAAqB,EACrB,yBAAyB,CAC1B;;gBACa,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,uBAAuB;IAczD;;;;OAIG;IACG,yBAAyB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAmBhE;;;;;OAKG;IACG,oBAAoB,CACxB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,iBAAiB,CAAC;IAkB7B;;;;;;OAMG;IACG,sBAAsB,CAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,KAAK,MAAM,EAAE,GAC3B,OAAO,CAAC,MAAM,CAAC;IA6BlB;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAQnC;;;;;;;OAOG;IACH,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU;IAwC9D;;;;OAIG;IACH,cAAc,IAAI,UAAU,EAAE;IAI9B;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMvC;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAM5B;;OAEG;IACH,UAAU,IAAI,IAAI;CAoBnB"}
|
|
@@ -40,6 +40,17 @@ export function getDefaultClaimsControllerState() {
|
|
|
40
40
|
drafts: [],
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
|
+
const MESSENGER_EXPOSED_METHODS = [
|
|
44
|
+
'fetchClaimsConfigurations',
|
|
45
|
+
'getSubmitClaimConfig',
|
|
46
|
+
'generateClaimSignature',
|
|
47
|
+
'getClaims',
|
|
48
|
+
'saveOrUpdateClaimDraft',
|
|
49
|
+
'getClaimDrafts',
|
|
50
|
+
'deleteClaimDraft',
|
|
51
|
+
'deleteAllClaimDrafts',
|
|
52
|
+
'clearState',
|
|
53
|
+
];
|
|
43
54
|
export class ClaimsController extends BaseController {
|
|
44
55
|
constructor({ messenger, state }) {
|
|
45
56
|
super({
|
|
@@ -49,6 +60,7 @@ export class ClaimsController extends BaseController {
|
|
|
49
60
|
state: { ...getDefaultClaimsControllerState(), ...state },
|
|
50
61
|
});
|
|
51
62
|
_ClaimsController_instances.add(this);
|
|
63
|
+
this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
|
|
52
64
|
}
|
|
53
65
|
/**
|
|
54
66
|
* Fetch the required configurations for the claims service.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaimsController.mjs","sourceRoot":"","sources":["../src/ClaimsController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n StateMetadata,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport { detectSIWE, toHex } from '@metamask/controller-utils';\nimport type { KeyringControllerSignPersonalMessageAction } from '@metamask/keyring-controller';\nimport type { Messenger } from '@metamask/messenger';\nimport { bytesToHex, stringToBytes } from '@metamask/utils';\n\nimport type {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetRequestHeadersAction,\n} from './ClaimsService';\nimport {\n ClaimsControllerErrorMessages,\n CONTROLLER_NAME,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n SERVICE_NAME,\n} from './constants';\nimport type {\n Claim,\n ClaimDraft,\n ClaimsConfigurations,\n ClaimsControllerState,\n CreateClaimRequest,\n SubmitClaimConfig,\n} from './types';\n\nexport type ClaimsControllerGetStateAction = ControllerGetStateAction<\n typeof CONTROLLER_NAME,\n ClaimsControllerState\n>;\n\nexport type ClaimsControllerActions = ClaimsControllerGetStateAction;\n\nexport type AllowedActions =\n | ClaimsServiceFetchClaimsConfigurationsAction\n | ClaimsServiceGetClaimsAction\n | ClaimsServiceGetClaimByIdAction\n | ClaimsServiceGetRequestHeadersAction\n | ClaimsServiceGetClaimsApiUrlAction\n | ClaimsServiceGenerateMessageForClaimSignatureAction\n | ClaimsServiceGetClaimsAction\n | KeyringControllerSignPersonalMessageAction;\n\nexport type ClaimsControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof CONTROLLER_NAME,\n ClaimsControllerState\n>;\n\nexport type ClaimsControllerMessenger = Messenger<\n typeof CONTROLLER_NAME,\n ClaimsControllerActions | AllowedActions,\n ClaimsControllerStateChangeEvent\n>;\n\nexport type ClaimsControllerOptions = {\n messenger: ClaimsControllerMessenger;\n state?: Partial<ClaimsControllerState>;\n};\n\nconst ClaimsControllerStateMetadata: StateMetadata<ClaimsControllerState> = {\n claims: {\n includeInStateLogs: false,\n persist: true,\n includeInDebugSnapshot: false,\n usedInUi: true,\n },\n claimsConfigurations: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n drafts: {\n includeInStateLogs: false,\n persist: true,\n includeInDebugSnapshot: false,\n usedInUi: true,\n },\n};\n\n/**\n * Get an initial default state for the controller.\n *\n * @returns The initial default controller state.\n */\nexport function getDefaultClaimsControllerState(): ClaimsControllerState {\n return {\n claimsConfigurations: DEFAULT_CLAIMS_CONFIGURATIONS,\n claims: [],\n drafts: [],\n };\n}\n\nexport class ClaimsController extends BaseController<\n typeof CONTROLLER_NAME,\n ClaimsControllerState,\n ClaimsControllerMessenger\n> {\n constructor({ messenger, state }: ClaimsControllerOptions) {\n super({\n messenger,\n metadata: ClaimsControllerStateMetadata,\n name: CONTROLLER_NAME,\n state: { ...getDefaultClaimsControllerState(), ...state },\n });\n }\n\n /**\n * Fetch the required configurations for the claims service.\n *\n * @returns The required configurations for the claims service.\n */\n async fetchClaimsConfigurations(): Promise<ClaimsConfigurations> {\n const configurations = await this.messenger.call(\n `${SERVICE_NAME}:fetchClaimsConfigurations`,\n );\n\n const supportedNetworks = configurations.networks.map((network) =>\n toHex(network),\n );\n const claimsConfigurations = {\n validSubmissionWindowDays: configurations.validSubmissionWindowDays,\n supportedNetworks,\n };\n\n this.update((state) => {\n state.claimsConfigurations = claimsConfigurations;\n });\n return claimsConfigurations;\n }\n\n /**\n * Get required config for submitting a claim.\n *\n * @param claim - The claim request to get the required config for.\n * @returns The required config for submitting the claim.\n */\n async getSubmitClaimConfig(\n claim: CreateClaimRequest,\n ): Promise<SubmitClaimConfig> {\n // Validate the claim before submitting it.\n this.#validateSubmitClaimRequest(claim);\n\n const headers = await this.messenger.call(\n `${SERVICE_NAME}:getRequestHeaders`,\n );\n const baseUrl = this.messenger.call(`${SERVICE_NAME}:getClaimsApiUrl`);\n const url = `${baseUrl}/claims`;\n\n return {\n data: claim,\n headers,\n method: 'POST',\n url,\n };\n }\n\n /**\n * Generate a signature for a claim.\n *\n * @param chainId - The chain id of the claim.\n * @param walletAddress - The impacted wallet address of the claim.\n * @returns The signature for the claim.\n */\n async generateClaimSignature(\n chainId: number,\n walletAddress: `0x${string}`,\n ): Promise<string> {\n // generate the message to be signed\n const { message } = await this.messenger.call(\n `${SERVICE_NAME}:generateMessageForClaimSignature`,\n chainId,\n walletAddress,\n );\n\n // generate and parse the SIWE message\n const messageBytes = stringToBytes(message);\n const messageHex = bytesToHex(messageBytes);\n const siwe = detectSIWE({ data: messageHex });\n if (!siwe.isSIWEMessage) {\n throw new Error(ClaimsControllerErrorMessages.INVALID_SIGNATURE_MESSAGE);\n }\n\n // sign the message\n const signature = await this.messenger.call(\n 'KeyringController:signPersonalMessage',\n {\n data: message,\n from: walletAddress,\n siwe,\n },\n );\n\n return signature;\n }\n\n /**\n * Get the list of claims for the current user.\n *\n * @returns The list of claims for the current user.\n */\n async getClaims(): Promise<Claim[]> {\n const claims = await this.messenger.call(`${SERVICE_NAME}:getClaims`);\n this.update((state) => {\n state.claims = claims;\n });\n return claims;\n }\n\n /**\n * Save a claim draft to the state.\n * If the draft name is not provided, a default name will be generated.\n * If the draft with the same id already exists, it will be updated.\n *\n * @param draft - The draft to save.\n * @returns The saved draft.\n */\n saveOrUpdateClaimDraft(draft: Partial<ClaimDraft>): ClaimDraft {\n const { drafts } = this.state;\n\n const isExistingDraft = drafts.some(\n (existingDraft) =>\n draft.draftId && existingDraft.draftId === draft.draftId,\n );\n\n if (isExistingDraft) {\n const updatedAt = new Date().toISOString();\n this.update((state) => {\n state.drafts = state.drafts.map((existingDraft) =>\n existingDraft.draftId === draft.draftId\n ? {\n ...existingDraft,\n ...draft,\n updatedAt,\n }\n : existingDraft,\n );\n });\n return { ...draft, updatedAt } as ClaimDraft;\n }\n\n // generate a new draft id, name and add it to the state\n const draftId = `draft-${Date.now()}`;\n\n const newDraft: ClaimDraft = {\n ...draft,\n draftId,\n updatedAt: new Date().toISOString(),\n };\n\n this.update((state) => {\n state.drafts.push(newDraft);\n });\n\n return newDraft;\n }\n\n /**\n * Get the list of claim drafts.\n *\n * @returns The list of claim drafts.\n */\n getClaimDrafts(): ClaimDraft[] {\n return this.state.drafts;\n }\n\n /**\n * Delete a claim draft from the state.\n *\n * @param draftId - The ID of the draft to delete.\n */\n deleteClaimDraft(draftId: string): void {\n this.update((state) => {\n state.drafts = state.drafts.filter((draft) => draft.draftId !== draftId);\n });\n }\n\n /**\n * Delete all claim drafts from the state.\n */\n deleteAllClaimDrafts(): void {\n this.update((state) => {\n state.drafts = [];\n });\n }\n\n /**\n * Clears the claims state and resets to default values.\n */\n clearState(): void {\n this.update(() => {\n return getDefaultClaimsControllerState();\n });\n }\n\n /**\n * Validate the claim before submitting it.\n *\n * @param claim - The claim to validate.\n */\n #validateSubmitClaimRequest(claim: CreateClaimRequest): void {\n const { claims: existingClaims } = this.state;\n const isClaimAlreadySubmitted = existingClaims.some(\n (existingClaim) => existingClaim.impactedTxHash === claim.impactedTxHash,\n );\n if (isClaimAlreadySubmitted) {\n throw new Error(ClaimsControllerErrorMessages.CLAIM_ALREADY_SUBMITTED);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ClaimsController.mjs","sourceRoot":"","sources":["../src/ClaimsController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n StateMetadata,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport { detectSIWE, toHex } from '@metamask/controller-utils';\nimport type { KeyringControllerSignPersonalMessageAction } from '@metamask/keyring-controller';\nimport type { Messenger } from '@metamask/messenger';\nimport { bytesToHex, stringToBytes } from '@metamask/utils';\n\nimport type { ClaimsControllerMethodActions } from './ClaimsController-method-action-types';\nimport type {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetRequestHeadersAction,\n} from './ClaimsService';\nimport {\n ClaimsControllerErrorMessages,\n CONTROLLER_NAME,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n SERVICE_NAME,\n} from './constants';\nimport type {\n Claim,\n ClaimDraft,\n ClaimsConfigurations,\n ClaimsControllerState,\n CreateClaimRequest,\n SubmitClaimConfig,\n} from './types';\n\nexport type ClaimsControllerGetStateAction = ControllerGetStateAction<\n typeof CONTROLLER_NAME,\n ClaimsControllerState\n>;\n\nexport type ClaimsControllerActions =\n | ClaimsControllerGetStateAction\n | ClaimsControllerMethodActions;\n\nexport type AllowedActions =\n | ClaimsServiceFetchClaimsConfigurationsAction\n | ClaimsServiceGetClaimsAction\n | ClaimsServiceGetClaimByIdAction\n | ClaimsServiceGetRequestHeadersAction\n | ClaimsServiceGetClaimsApiUrlAction\n | ClaimsServiceGenerateMessageForClaimSignatureAction\n | ClaimsServiceGetClaimsAction\n | KeyringControllerSignPersonalMessageAction;\n\nexport type ClaimsControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof CONTROLLER_NAME,\n ClaimsControllerState\n>;\n\nexport type ClaimsControllerMessenger = Messenger<\n typeof CONTROLLER_NAME,\n ClaimsControllerActions | AllowedActions,\n ClaimsControllerStateChangeEvent\n>;\n\nexport type ClaimsControllerOptions = {\n messenger: ClaimsControllerMessenger;\n state?: Partial<ClaimsControllerState>;\n};\n\nconst ClaimsControllerStateMetadata: StateMetadata<ClaimsControllerState> = {\n claims: {\n includeInStateLogs: false,\n persist: true,\n includeInDebugSnapshot: false,\n usedInUi: true,\n },\n claimsConfigurations: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n drafts: {\n includeInStateLogs: false,\n persist: true,\n includeInDebugSnapshot: false,\n usedInUi: true,\n },\n};\n\n/**\n * Get an initial default state for the controller.\n *\n * @returns The initial default controller state.\n */\nexport function getDefaultClaimsControllerState(): ClaimsControllerState {\n return {\n claimsConfigurations: DEFAULT_CLAIMS_CONFIGURATIONS,\n claims: [],\n drafts: [],\n };\n}\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'fetchClaimsConfigurations',\n 'getSubmitClaimConfig',\n 'generateClaimSignature',\n 'getClaims',\n 'saveOrUpdateClaimDraft',\n 'getClaimDrafts',\n 'deleteClaimDraft',\n 'deleteAllClaimDrafts',\n 'clearState',\n] as const;\n\nexport class ClaimsController extends BaseController<\n typeof CONTROLLER_NAME,\n ClaimsControllerState,\n ClaimsControllerMessenger\n> {\n constructor({ messenger, state }: ClaimsControllerOptions) {\n super({\n messenger,\n metadata: ClaimsControllerStateMetadata,\n name: CONTROLLER_NAME,\n state: { ...getDefaultClaimsControllerState(), ...state },\n });\n\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n }\n\n /**\n * Fetch the required configurations for the claims service.\n *\n * @returns The required configurations for the claims service.\n */\n async fetchClaimsConfigurations(): Promise<ClaimsConfigurations> {\n const configurations = await this.messenger.call(\n `${SERVICE_NAME}:fetchClaimsConfigurations`,\n );\n\n const supportedNetworks = configurations.networks.map((network) =>\n toHex(network),\n );\n const claimsConfigurations = {\n validSubmissionWindowDays: configurations.validSubmissionWindowDays,\n supportedNetworks,\n };\n\n this.update((state) => {\n state.claimsConfigurations = claimsConfigurations;\n });\n return claimsConfigurations;\n }\n\n /**\n * Get required config for submitting a claim.\n *\n * @param claim - The claim request to get the required config for.\n * @returns The required config for submitting the claim.\n */\n async getSubmitClaimConfig(\n claim: CreateClaimRequest,\n ): Promise<SubmitClaimConfig> {\n // Validate the claim before submitting it.\n this.#validateSubmitClaimRequest(claim);\n\n const headers = await this.messenger.call(\n `${SERVICE_NAME}:getRequestHeaders`,\n );\n const baseUrl = this.messenger.call(`${SERVICE_NAME}:getClaimsApiUrl`);\n const url = `${baseUrl}/claims`;\n\n return {\n data: claim,\n headers,\n method: 'POST',\n url,\n };\n }\n\n /**\n * Generate a signature for a claim.\n *\n * @param chainId - The chain id of the claim.\n * @param walletAddress - The impacted wallet address of the claim.\n * @returns The signature for the claim.\n */\n async generateClaimSignature(\n chainId: number,\n walletAddress: `0x${string}`,\n ): Promise<string> {\n // generate the message to be signed\n const { message } = await this.messenger.call(\n `${SERVICE_NAME}:generateMessageForClaimSignature`,\n chainId,\n walletAddress,\n );\n\n // generate and parse the SIWE message\n const messageBytes = stringToBytes(message);\n const messageHex = bytesToHex(messageBytes);\n const siwe = detectSIWE({ data: messageHex });\n if (!siwe.isSIWEMessage) {\n throw new Error(ClaimsControllerErrorMessages.INVALID_SIGNATURE_MESSAGE);\n }\n\n // sign the message\n const signature = await this.messenger.call(\n 'KeyringController:signPersonalMessage',\n {\n data: message,\n from: walletAddress,\n siwe,\n },\n );\n\n return signature;\n }\n\n /**\n * Get the list of claims for the current user.\n *\n * @returns The list of claims for the current user.\n */\n async getClaims(): Promise<Claim[]> {\n const claims = await this.messenger.call(`${SERVICE_NAME}:getClaims`);\n this.update((state) => {\n state.claims = claims;\n });\n return claims;\n }\n\n /**\n * Save a claim draft to the state.\n * If the draft name is not provided, a default name will be generated.\n * If the draft with the same id already exists, it will be updated.\n *\n * @param draft - The draft to save.\n * @returns The saved draft.\n */\n saveOrUpdateClaimDraft(draft: Partial<ClaimDraft>): ClaimDraft {\n const { drafts } = this.state;\n\n const isExistingDraft = drafts.some(\n (existingDraft) =>\n draft.draftId && existingDraft.draftId === draft.draftId,\n );\n\n if (isExistingDraft) {\n const updatedAt = new Date().toISOString();\n this.update((state) => {\n state.drafts = state.drafts.map((existingDraft) =>\n existingDraft.draftId === draft.draftId\n ? {\n ...existingDraft,\n ...draft,\n updatedAt,\n }\n : existingDraft,\n );\n });\n return { ...draft, updatedAt } as ClaimDraft;\n }\n\n // generate a new draft id, name and add it to the state\n const draftId = `draft-${Date.now()}`;\n\n const newDraft: ClaimDraft = {\n ...draft,\n draftId,\n updatedAt: new Date().toISOString(),\n };\n\n this.update((state) => {\n state.drafts.push(newDraft);\n });\n\n return newDraft;\n }\n\n /**\n * Get the list of claim drafts.\n *\n * @returns The list of claim drafts.\n */\n getClaimDrafts(): ClaimDraft[] {\n return this.state.drafts;\n }\n\n /**\n * Delete a claim draft from the state.\n *\n * @param draftId - The ID of the draft to delete.\n */\n deleteClaimDraft(draftId: string): void {\n this.update((state) => {\n state.drafts = state.drafts.filter((draft) => draft.draftId !== draftId);\n });\n }\n\n /**\n * Delete all claim drafts from the state.\n */\n deleteAllClaimDrafts(): void {\n this.update((state) => {\n state.drafts = [];\n });\n }\n\n /**\n * Clears the claims state and resets to default values.\n */\n clearState(): void {\n this.update(() => {\n return getDefaultClaimsControllerState();\n });\n }\n\n /**\n * Validate the claim before submitting it.\n *\n * @param claim - The claim to validate.\n */\n #validateSubmitClaimRequest(claim: CreateClaimRequest): void {\n const { claims: existingClaims } = this.state;\n const isClaimAlreadySubmitted = existingClaims.some(\n (existingClaim) => existingClaim.impactedTxHash === claim.impactedTxHash,\n );\n if (isClaimAlreadySubmitted) {\n throw new Error(ClaimsControllerErrorMessages.CLAIM_ALREADY_SUBMITTED);\n }\n }\n}\n"]}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2DAG4B;AAF1B,oHAAA,gBAAgB,OAAA;AAChB,mIAAA,+BAA+B,OAAA;
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2DAG4B;AAF1B,oHAAA,gBAAgB,OAAA;AAChB,mIAAA,+BAA+B,OAAA;AAgCjC,qDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAatB,6CAOqB;AANnB,4GAAA,eAAe,OAAA;AACf,gGAAA,GAAG,OAAA;AACH,0HAAA,6BAA6B,OAAA;AAC7B,0HAAA,6BAA6B,OAAA;AAC7B,uHAAA,0BAA0B,OAAA;AAC1B,+GAAA,kBAAkB,OAAA","sourcesContent":["export {\n ClaimsController,\n getDefaultClaimsControllerState,\n} from './ClaimsController';\n\nexport type {\n ClaimsControllerGetStateAction,\n ClaimsControllerActions,\n ClaimsControllerStateChangeEvent,\n ClaimsControllerMessenger,\n} from './ClaimsController';\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';\n\nexport type {\n Claim,\n ClaimsControllerState,\n Attachment,\n ClaimsConfigurations,\n CreateClaimRequest,\n SubmitClaimConfig,\n ClaimDraft,\n} from './types';\n\nexport { ClaimsService } from './ClaimsService';\n\nexport type {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetRequestHeadersAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceActions,\n ClaimsServiceMessenger,\n} from './ClaimsService';\n\nexport {\n ClaimStatusEnum,\n Env,\n ClaimsControllerErrorMessages,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n ClaimsServiceErrorMessages,\n CLAIMS_API_URL_MAP,\n} from './constants';\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { ClaimsController, getDefaultClaimsControllerState, } from "./ClaimsController.cjs";
|
|
2
2
|
export type { ClaimsControllerGetStateAction, ClaimsControllerActions, ClaimsControllerStateChangeEvent, ClaimsControllerMessenger, } from "./ClaimsController.cjs";
|
|
3
|
+
export type { ClaimsControllerFetchClaimsConfigurationsAction, ClaimsControllerGetSubmitClaimConfigAction, ClaimsControllerGenerateClaimSignatureAction, ClaimsControllerGetClaimsAction, ClaimsControllerSaveOrUpdateClaimDraftAction, ClaimsControllerGetClaimDraftsAction, ClaimsControllerDeleteClaimDraftAction, ClaimsControllerDeleteAllClaimDraftsAction, ClaimsControllerClearStateAction, } from "./ClaimsController-method-action-types.cjs";
|
|
3
4
|
export type { Claim, ClaimsControllerState, Attachment, ClaimsConfigurations, CreateClaimRequest, SubmitClaimConfig, ClaimDraft, } from "./types.cjs";
|
|
4
5
|
export { ClaimsService } from "./ClaimsService.cjs";
|
|
5
6
|
export type { ClaimsServiceFetchClaimsConfigurationsAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetRequestHeadersAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceActions, ClaimsServiceMessenger, } from "./ClaimsService.cjs";
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,GAChC,+BAA2B;AAE5B,YAAY,EACV,8BAA8B,EAC9B,uBAAuB,EACvB,gCAAgC,EAChC,yBAAyB,GAC1B,+BAA2B;AAE5B,YAAY,EACV,KAAK,EACL,qBAAqB,EACrB,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,GACX,oBAAgB;AAEjB,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAEhD,YAAY,EACV,4CAA4C,EAC5C,4BAA4B,EAC5B,oCAAoC,EACpC,kCAAkC,EAClC,+BAA+B,EAC/B,mDAAmD,EACnD,oBAAoB,EACpB,sBAAsB,GACvB,4BAAwB;AAEzB,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,GACnB,wBAAoB"}
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,GAChC,+BAA2B;AAE5B,YAAY,EACV,8BAA8B,EAC9B,uBAAuB,EACvB,gCAAgC,EAChC,yBAAyB,GAC1B,+BAA2B;AAE5B,YAAY,EACV,+CAA+C,EAC/C,0CAA0C,EAC1C,4CAA4C,EAC5C,+BAA+B,EAC/B,4CAA4C,EAC5C,oCAAoC,EACpC,sCAAsC,EACtC,0CAA0C,EAC1C,gCAAgC,GACjC,mDAA+C;AAEhD,YAAY,EACV,KAAK,EACL,qBAAqB,EACrB,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,GACX,oBAAgB;AAEjB,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAEhD,YAAY,EACV,4CAA4C,EAC5C,4BAA4B,EAC5B,oCAAoC,EACpC,kCAAkC,EAClC,+BAA+B,EAC/B,mDAAmD,EACnD,oBAAoB,EACpB,sBAAsB,GACvB,4BAAwB;AAEzB,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,GACnB,wBAAoB"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { ClaimsController, getDefaultClaimsControllerState, } from "./ClaimsController.mjs";
|
|
2
2
|
export type { ClaimsControllerGetStateAction, ClaimsControllerActions, ClaimsControllerStateChangeEvent, ClaimsControllerMessenger, } from "./ClaimsController.mjs";
|
|
3
|
+
export type { ClaimsControllerFetchClaimsConfigurationsAction, ClaimsControllerGetSubmitClaimConfigAction, ClaimsControllerGenerateClaimSignatureAction, ClaimsControllerGetClaimsAction, ClaimsControllerSaveOrUpdateClaimDraftAction, ClaimsControllerGetClaimDraftsAction, ClaimsControllerDeleteClaimDraftAction, ClaimsControllerDeleteAllClaimDraftsAction, ClaimsControllerClearStateAction, } from "./ClaimsController-method-action-types.mjs";
|
|
3
4
|
export type { Claim, ClaimsControllerState, Attachment, ClaimsConfigurations, CreateClaimRequest, SubmitClaimConfig, ClaimDraft, } from "./types.mjs";
|
|
4
5
|
export { ClaimsService } from "./ClaimsService.mjs";
|
|
5
6
|
export type { ClaimsServiceFetchClaimsConfigurationsAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetRequestHeadersAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceActions, ClaimsServiceMessenger, } from "./ClaimsService.mjs";
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,GAChC,+BAA2B;AAE5B,YAAY,EACV,8BAA8B,EAC9B,uBAAuB,EACvB,gCAAgC,EAChC,yBAAyB,GAC1B,+BAA2B;AAE5B,YAAY,EACV,KAAK,EACL,qBAAqB,EACrB,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,GACX,oBAAgB;AAEjB,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAEhD,YAAY,EACV,4CAA4C,EAC5C,4BAA4B,EAC5B,oCAAoC,EACpC,kCAAkC,EAClC,+BAA+B,EAC/B,mDAAmD,EACnD,oBAAoB,EACpB,sBAAsB,GACvB,4BAAwB;AAEzB,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,GACnB,wBAAoB"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,GAChC,+BAA2B;AAE5B,YAAY,EACV,8BAA8B,EAC9B,uBAAuB,EACvB,gCAAgC,EAChC,yBAAyB,GAC1B,+BAA2B;AAE5B,YAAY,EACV,+CAA+C,EAC/C,0CAA0C,EAC1C,4CAA4C,EAC5C,+BAA+B,EAC/B,4CAA4C,EAC5C,oCAAoC,EACpC,sCAAsC,EACtC,0CAA0C,EAC1C,gCAAgC,GACjC,mDAA+C;AAEhD,YAAY,EACV,KAAK,EACL,qBAAqB,EACrB,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,GACX,oBAAgB;AAEjB,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAEhD,YAAY,EACV,4CAA4C,EAC5C,4BAA4B,EAC5B,oCAAoC,EACpC,kCAAkC,EAClC,+BAA+B,EAC/B,mDAAmD,EACnD,oBAAoB,EACpB,sBAAsB,GACvB,4BAAwB;AAEzB,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,GACnB,wBAAoB"}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,EAChC,+BAA2B;
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,EAChC,+BAA2B;AA+B5B,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAahD,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,EACnB,wBAAoB","sourcesContent":["export {\n ClaimsController,\n getDefaultClaimsControllerState,\n} from './ClaimsController';\n\nexport type {\n ClaimsControllerGetStateAction,\n ClaimsControllerActions,\n ClaimsControllerStateChangeEvent,\n ClaimsControllerMessenger,\n} from './ClaimsController';\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';\n\nexport type {\n Claim,\n ClaimsControllerState,\n Attachment,\n ClaimsConfigurations,\n CreateClaimRequest,\n SubmitClaimConfig,\n ClaimDraft,\n} from './types';\n\nexport { ClaimsService } from './ClaimsService';\n\nexport type {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetRequestHeadersAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceActions,\n ClaimsServiceMessenger,\n} from './ClaimsService';\n\nexport {\n ClaimStatusEnum,\n Env,\n ClaimsControllerErrorMessages,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n ClaimsServiceErrorMessages,\n CLAIMS_API_URL_MAP,\n} from './constants';\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask-previews/claims-controller",
|
|
3
|
-
"version": "0.4.3-preview-
|
|
3
|
+
"version": "0.4.3-preview-e9620906a",
|
|
4
4
|
"description": "Controller handling shield subscription claims logic",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"MetaMask",
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"build:docs": "typedoc",
|
|
41
41
|
"changelog:update": "../../scripts/update-changelog.sh @metamask/claims-controller",
|
|
42
42
|
"changelog:validate": "../../scripts/validate-changelog.sh @metamask/claims-controller",
|
|
43
|
+
"generate-method-action-types": "tsx ../../scripts/generate-method-action-types.ts",
|
|
43
44
|
"since-latest-release": "../../scripts/since-latest-release.sh",
|
|
44
45
|
"test": "NODE_OPTIONS=--experimental-vm-modules jest --reporters=jest-silent-reporter",
|
|
45
46
|
"test:clean": "NODE_OPTIONS=--experimental-vm-modules jest --clearCache",
|
|
@@ -61,6 +62,7 @@
|
|
|
61
62
|
"deepmerge": "^4.2.2",
|
|
62
63
|
"jest": "^29.7.0",
|
|
63
64
|
"ts-jest": "^29.2.5",
|
|
65
|
+
"tsx": "^4.20.5",
|
|
64
66
|
"typedoc": "^0.25.13",
|
|
65
67
|
"typedoc-plugin-missing-exports": "^2.0.0",
|
|
66
68
|
"typescript": "~5.3.3"
|