@metamask-previews/claims-controller 0.0.0-preview-1f85e85a → 0.0.0-preview-fe4c2215
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/dist/ClaimsController.cjs +6 -32
- package/dist/ClaimsController.cjs.map +1 -1
- package/dist/ClaimsController.d.cts +2 -2
- package/dist/ClaimsController.d.cts.map +1 -1
- package/dist/ClaimsController.d.mts +2 -2
- package/dist/ClaimsController.d.mts.map +1 -1
- package/dist/ClaimsController.mjs +7 -33
- package/dist/ClaimsController.mjs.map +1 -1
- package/dist/ClaimsService.cjs +3 -30
- package/dist/ClaimsService.cjs.map +1 -1
- package/dist/ClaimsService.d.cts +2 -15
- package/dist/ClaimsService.d.cts.map +1 -1
- package/dist/ClaimsService.d.mts +2 -15
- package/dist/ClaimsService.d.mts.map +1 -1
- package/dist/ClaimsService.mjs +4 -31
- package/dist/ClaimsService.mjs.map +1 -1
- package/dist/constants.cjs +12 -1
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +11 -0
- package/dist/constants.d.cts.map +1 -1
- package/dist/constants.d.mts +11 -0
- package/dist/constants.d.mts.map +1 -1
- package/dist/constants.mjs +11 -0
- package/dist/constants.mjs.map +1 -1
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.ClaimsController = exports.getDefaultClaimsControllerState = void 0;
|
|
10
10
|
const base_controller_1 = require("@metamask/base-controller");
|
|
11
11
|
const controller_utils_1 = require("@metamask/controller-utils");
|
|
12
|
+
const utils_1 = require("@metamask/utils");
|
|
12
13
|
const constants_1 = require("./constants.cjs");
|
|
13
14
|
const ClaimsControllerStateMetadata = {
|
|
14
15
|
claims: {
|
|
@@ -68,12 +69,12 @@ class ClaimsController extends base_controller_1.BaseController {
|
|
|
68
69
|
async generateClaimSignature(chainId, walletAddress) {
|
|
69
70
|
// generate the message to be signed
|
|
70
71
|
const { message } = await this.messenger.call(`${constants_1.SERVICE_NAME}:generateMessageForClaimSignature`, chainId, walletAddress);
|
|
71
|
-
console.log('message', message);
|
|
72
72
|
// generate and parse the SIWE message
|
|
73
|
-
const
|
|
73
|
+
const messageBytes = (0, utils_1.stringToBytes)(message);
|
|
74
|
+
const messageHex = (0, utils_1.bytesToHex)(messageBytes);
|
|
74
75
|
const siwe = (0, controller_utils_1.detectSIWE)({ data: messageHex });
|
|
75
76
|
if (!siwe.isSIWEMessage) {
|
|
76
|
-
throw new Error(
|
|
77
|
+
throw new Error(constants_1.ClaimsControllerErrorMessages.INVALID_SIGNATURE_MESSAGE);
|
|
77
78
|
}
|
|
78
79
|
// sign the message
|
|
79
80
|
const signature = await this.messenger.call('KeyringController:signPersonalMessage', {
|
|
@@ -81,12 +82,6 @@ class ClaimsController extends base_controller_1.BaseController {
|
|
|
81
82
|
from: walletAddress,
|
|
82
83
|
siwe,
|
|
83
84
|
});
|
|
84
|
-
console.log('signature', signature);
|
|
85
|
-
// verify the signature
|
|
86
|
-
const isSignatureValid = await this.messenger.call(`${constants_1.SERVICE_NAME}:verifyClaimSignature`, signature, walletAddress, message);
|
|
87
|
-
if (!isSignatureValid) {
|
|
88
|
-
throw new Error('Invalid signature');
|
|
89
|
-
}
|
|
90
85
|
return signature;
|
|
91
86
|
}
|
|
92
87
|
/**
|
|
@@ -105,30 +100,9 @@ class ClaimsController extends base_controller_1.BaseController {
|
|
|
105
100
|
exports.ClaimsController = ClaimsController;
|
|
106
101
|
_ClaimsController_instances = new WeakSet(), _ClaimsController_validateSubmitClaimRequest = function _ClaimsController_validateSubmitClaimRequest(claim) {
|
|
107
102
|
const { claims: existingClaims } = this.state;
|
|
108
|
-
const isClaimAlreadySubmitted = existingClaims.some((existingClaim) => existingClaim.
|
|
109
|
-
existingClaim.impactedTxHash === claim.impactedTxHash);
|
|
103
|
+
const isClaimAlreadySubmitted = existingClaims.some((existingClaim) => existingClaim.impactedTxHash === claim.impactedTxHash);
|
|
110
104
|
if (isClaimAlreadySubmitted) {
|
|
111
|
-
throw new Error(
|
|
105
|
+
throw new Error(constants_1.ClaimsControllerErrorMessages.CLAIM_ALREADY_SUBMITTED);
|
|
112
106
|
}
|
|
113
107
|
};
|
|
114
|
-
/**
|
|
115
|
-
* Converts a text string to its hexadecimal representation.
|
|
116
|
-
*
|
|
117
|
-
* @param text - The input string.
|
|
118
|
-
* @returns The hexadecimal representation of the string's UTF-8 bytes.
|
|
119
|
-
*/
|
|
120
|
-
function textToHex(text) {
|
|
121
|
-
// 1. Encode the string into a Uint8Array (UTF-8 bytes)
|
|
122
|
-
const encoder = new TextEncoder();
|
|
123
|
-
const utf8Bytes = encoder.encode(text);
|
|
124
|
-
// 2. Convert bytes to hex string
|
|
125
|
-
let hexString = '';
|
|
126
|
-
for (const byte of utf8Bytes) {
|
|
127
|
-
// Convert the byte (a number 0-255) to a hexadecimal string
|
|
128
|
-
const hex = byte.toString(16);
|
|
129
|
-
// Ensure the hex value is always two characters long by padding with a leading zero
|
|
130
|
-
hexString += hex.padStart(2, '0');
|
|
131
|
-
}
|
|
132
|
-
return `0x${hexString}`;
|
|
133
|
-
}
|
|
134
108
|
//# sourceMappingURL=ClaimsController.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaimsController.cjs","sourceRoot":"","sources":["../src/ClaimsController.ts"],"names":[],"mappings":";;;;;;;;;AAKA,+DAA2D;AAC3D,iEAAwD;
|
|
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 } 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 ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetRequestHeadersAction,\n} from './ClaimsService';\nimport {\n ClaimsControllerErrorMessages,\n CONTROLLER_NAME,\n HttpContentTypeHeader,\n SERVICE_NAME,\n} from './constants';\nimport type {\n Claim,\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 | 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: true,\n persist: true,\n includeInDebugSnapshot: true,\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 claims: [],\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 * 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 HttpContentTypeHeader.MULTIPART_FORM_DATA,\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 * 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,12 +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 { ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetRequestHeadersAction
|
|
5
|
+
import type { ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetRequestHeadersAction } from "./ClaimsService.cjs";
|
|
6
6
|
import { CONTROLLER_NAME } from "./constants.cjs";
|
|
7
7
|
import type { Claim, ClaimsControllerState, CreateClaimRequest, SubmitClaimConfig } from "./types.cjs";
|
|
8
8
|
export type ClaimsControllerGetStateAction = ControllerGetStateAction<typeof CONTROLLER_NAME, ClaimsControllerState>;
|
|
9
9
|
export type ClaimsControllerActions = ClaimsControllerGetStateAction;
|
|
10
|
-
export type AllowedActions = ClaimsServiceGetClaimsAction | ClaimsServiceGetClaimByIdAction | ClaimsServiceGetRequestHeadersAction | ClaimsServiceGetClaimsApiUrlAction | ClaimsServiceGenerateMessageForClaimSignatureAction |
|
|
10
|
+
export type AllowedActions = ClaimsServiceGetClaimsAction | ClaimsServiceGetClaimByIdAction | ClaimsServiceGetRequestHeadersAction | ClaimsServiceGetClaimsApiUrlAction | ClaimsServiceGenerateMessageForClaimSignatureAction | ClaimsServiceGetClaimsAction | KeyringControllerSignPersonalMessageAction;
|
|
11
11
|
export type ClaimsControllerStateChangeEvent = ControllerStateChangeEvent<typeof CONTROLLER_NAME, ClaimsControllerState>;
|
|
12
12
|
export type ClaimsControllerMessenger = Messenger<typeof CONTROLLER_NAME, ClaimsControllerActions | AllowedActions, ClaimsControllerStateChangeEvent>;
|
|
13
13
|
export type ClaimsControllerOptions = {
|
|
@@ -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,mDAAmD,EACnD,+BAA+B,EAC/B,4BAA4B,EAC5B,kCAAkC,EAClC,oCAAoC,
|
|
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,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,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EAClB,oBAAgB;AAEjB,MAAM,MAAM,8BAA8B,GAAG,wBAAwB,CACnE,OAAO,eAAe,EACtB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,8BAA8B,CAAC;AAErE,MAAM,MAAM,cAAc,GACtB,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;AAWF;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,qBAAqB,CAIvE;AAED,qBAAa,gBAAiB,SAAQ,cAAc,CAClD,OAAO,eAAe,EACtB,qBAAqB,EACrB,yBAAyB,CAC1B;;gBACa,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,uBAAuB;IASzD;;;;;OAKG;IACG,oBAAoB,CACxB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,iBAAiB,CAAC;IAmB7B;;;;;;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;CAsBpC"}
|
|
@@ -2,12 +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 { ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetRequestHeadersAction
|
|
5
|
+
import type { ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetRequestHeadersAction } from "./ClaimsService.mjs";
|
|
6
6
|
import { CONTROLLER_NAME } from "./constants.mjs";
|
|
7
7
|
import type { Claim, ClaimsControllerState, CreateClaimRequest, SubmitClaimConfig } from "./types.mjs";
|
|
8
8
|
export type ClaimsControllerGetStateAction = ControllerGetStateAction<typeof CONTROLLER_NAME, ClaimsControllerState>;
|
|
9
9
|
export type ClaimsControllerActions = ClaimsControllerGetStateAction;
|
|
10
|
-
export type AllowedActions = ClaimsServiceGetClaimsAction | ClaimsServiceGetClaimByIdAction | ClaimsServiceGetRequestHeadersAction | ClaimsServiceGetClaimsApiUrlAction | ClaimsServiceGenerateMessageForClaimSignatureAction |
|
|
10
|
+
export type AllowedActions = ClaimsServiceGetClaimsAction | ClaimsServiceGetClaimByIdAction | ClaimsServiceGetRequestHeadersAction | ClaimsServiceGetClaimsApiUrlAction | ClaimsServiceGenerateMessageForClaimSignatureAction | ClaimsServiceGetClaimsAction | KeyringControllerSignPersonalMessageAction;
|
|
11
11
|
export type ClaimsControllerStateChangeEvent = ControllerStateChangeEvent<typeof CONTROLLER_NAME, ClaimsControllerState>;
|
|
12
12
|
export type ClaimsControllerMessenger = Messenger<typeof CONTROLLER_NAME, ClaimsControllerActions | AllowedActions, ClaimsControllerStateChangeEvent>;
|
|
13
13
|
export type ClaimsControllerOptions = {
|
|
@@ -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,mDAAmD,EACnD,+BAA+B,EAC/B,4BAA4B,EAC5B,kCAAkC,EAClC,oCAAoC,
|
|
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,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,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EAClB,oBAAgB;AAEjB,MAAM,MAAM,8BAA8B,GAAG,wBAAwB,CACnE,OAAO,eAAe,EACtB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,8BAA8B,CAAC;AAErE,MAAM,MAAM,cAAc,GACtB,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;AAWF;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,qBAAqB,CAIvE;AAED,qBAAa,gBAAiB,SAAQ,cAAc,CAClD,OAAO,eAAe,EACtB,qBAAqB,EACrB,yBAAyB,CAC1B;;gBACa,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,uBAAuB;IASzD;;;;;OAKG;IACG,oBAAoB,CACxB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,iBAAiB,CAAC;IAmB7B;;;;;;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;CAsBpC"}
|
|
@@ -6,7 +6,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
6
6
|
var _ClaimsController_instances, _ClaimsController_validateSubmitClaimRequest;
|
|
7
7
|
import { BaseController } from "@metamask/base-controller";
|
|
8
8
|
import { detectSIWE } from "@metamask/controller-utils";
|
|
9
|
-
import {
|
|
9
|
+
import { bytesToHex, stringToBytes } from "@metamask/utils";
|
|
10
|
+
import { ClaimsControllerErrorMessages, CONTROLLER_NAME, HttpContentTypeHeader, SERVICE_NAME } from "./constants.mjs";
|
|
10
11
|
const ClaimsControllerStateMetadata = {
|
|
11
12
|
claims: {
|
|
12
13
|
includeInStateLogs: true,
|
|
@@ -64,12 +65,12 @@ export class ClaimsController extends BaseController {
|
|
|
64
65
|
async generateClaimSignature(chainId, walletAddress) {
|
|
65
66
|
// generate the message to be signed
|
|
66
67
|
const { message } = await this.messenger.call(`${SERVICE_NAME}:generateMessageForClaimSignature`, chainId, walletAddress);
|
|
67
|
-
console.log('message', message);
|
|
68
68
|
// generate and parse the SIWE message
|
|
69
|
-
const
|
|
69
|
+
const messageBytes = stringToBytes(message);
|
|
70
|
+
const messageHex = bytesToHex(messageBytes);
|
|
70
71
|
const siwe = detectSIWE({ data: messageHex });
|
|
71
72
|
if (!siwe.isSIWEMessage) {
|
|
72
|
-
throw new Error(
|
|
73
|
+
throw new Error(ClaimsControllerErrorMessages.INVALID_SIGNATURE_MESSAGE);
|
|
73
74
|
}
|
|
74
75
|
// sign the message
|
|
75
76
|
const signature = await this.messenger.call('KeyringController:signPersonalMessage', {
|
|
@@ -77,12 +78,6 @@ export class ClaimsController extends BaseController {
|
|
|
77
78
|
from: walletAddress,
|
|
78
79
|
siwe,
|
|
79
80
|
});
|
|
80
|
-
console.log('signature', signature);
|
|
81
|
-
// verify the signature
|
|
82
|
-
const isSignatureValid = await this.messenger.call(`${SERVICE_NAME}:verifyClaimSignature`, signature, walletAddress, message);
|
|
83
|
-
if (!isSignatureValid) {
|
|
84
|
-
throw new Error('Invalid signature');
|
|
85
|
-
}
|
|
86
81
|
return signature;
|
|
87
82
|
}
|
|
88
83
|
/**
|
|
@@ -100,30 +95,9 @@ export class ClaimsController extends BaseController {
|
|
|
100
95
|
}
|
|
101
96
|
_ClaimsController_instances = new WeakSet(), _ClaimsController_validateSubmitClaimRequest = function _ClaimsController_validateSubmitClaimRequest(claim) {
|
|
102
97
|
const { claims: existingClaims } = this.state;
|
|
103
|
-
const isClaimAlreadySubmitted = existingClaims.some((existingClaim) => existingClaim.
|
|
104
|
-
existingClaim.impactedTxHash === claim.impactedTxHash);
|
|
98
|
+
const isClaimAlreadySubmitted = existingClaims.some((existingClaim) => existingClaim.impactedTxHash === claim.impactedTxHash);
|
|
105
99
|
if (isClaimAlreadySubmitted) {
|
|
106
|
-
throw new Error(
|
|
100
|
+
throw new Error(ClaimsControllerErrorMessages.CLAIM_ALREADY_SUBMITTED);
|
|
107
101
|
}
|
|
108
102
|
};
|
|
109
|
-
/**
|
|
110
|
-
* Converts a text string to its hexadecimal representation.
|
|
111
|
-
*
|
|
112
|
-
* @param text - The input string.
|
|
113
|
-
* @returns The hexadecimal representation of the string's UTF-8 bytes.
|
|
114
|
-
*/
|
|
115
|
-
function textToHex(text) {
|
|
116
|
-
// 1. Encode the string into a Uint8Array (UTF-8 bytes)
|
|
117
|
-
const encoder = new TextEncoder();
|
|
118
|
-
const utf8Bytes = encoder.encode(text);
|
|
119
|
-
// 2. Convert bytes to hex string
|
|
120
|
-
let hexString = '';
|
|
121
|
-
for (const byte of utf8Bytes) {
|
|
122
|
-
// Convert the byte (a number 0-255) to a hexadecimal string
|
|
123
|
-
const hex = byte.toString(16);
|
|
124
|
-
// Ensure the hex value is always two characters long by padding with a leading zero
|
|
125
|
-
hexString += hex.padStart(2, '0');
|
|
126
|
-
}
|
|
127
|
-
return `0x${hexString}`;
|
|
128
|
-
}
|
|
129
103
|
//# sourceMappingURL=ClaimsController.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaimsController.mjs","sourceRoot":"","sources":["../src/ClaimsController.ts"],"names":[],"mappings":";;;;;;AAKA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,EAAE,UAAU,EAAE,mCAAmC;
|
|
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 } 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 ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetRequestHeadersAction,\n} from './ClaimsService';\nimport {\n ClaimsControllerErrorMessages,\n CONTROLLER_NAME,\n HttpContentTypeHeader,\n SERVICE_NAME,\n} from './constants';\nimport type {\n Claim,\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 | 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: true,\n persist: true,\n includeInDebugSnapshot: true,\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 claims: [],\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 * 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 HttpContentTypeHeader.MULTIPART_FORM_DATA,\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 * 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/ClaimsService.cjs
CHANGED
|
@@ -28,7 +28,6 @@ class ClaimsService {
|
|
|
28
28
|
__classPrivateFieldGet(this, _ClaimsService_messenger, "f").registerActionHandler(`${constants_1.SERVICE_NAME}:getRequestHeaders`, this.getRequestHeaders.bind(this));
|
|
29
29
|
__classPrivateFieldGet(this, _ClaimsService_messenger, "f").registerActionHandler(`${constants_1.SERVICE_NAME}:getClaimsApiUrl`, this.getClaimsApiUrl.bind(this));
|
|
30
30
|
__classPrivateFieldGet(this, _ClaimsService_messenger, "f").registerActionHandler(`${constants_1.SERVICE_NAME}:generateMessageForClaimSignature`, this.generateMessageForClaimSignature.bind(this));
|
|
31
|
-
__classPrivateFieldGet(this, _ClaimsService_messenger, "f").registerActionHandler(`${constants_1.SERVICE_NAME}:verifyClaimSignature`, this.verifyClaimSignature.bind(this));
|
|
32
31
|
}
|
|
33
32
|
/**
|
|
34
33
|
* Get the claims for the current user.
|
|
@@ -42,7 +41,7 @@ class ClaimsService {
|
|
|
42
41
|
headers,
|
|
43
42
|
});
|
|
44
43
|
if (!response.ok) {
|
|
45
|
-
throw new Error(
|
|
44
|
+
throw new Error(constants_1.ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS);
|
|
46
45
|
}
|
|
47
46
|
const claims = await response.json();
|
|
48
47
|
return claims;
|
|
@@ -60,7 +59,7 @@ class ClaimsService {
|
|
|
60
59
|
headers,
|
|
61
60
|
});
|
|
62
61
|
if (!response.ok) {
|
|
63
|
-
throw new Error(
|
|
62
|
+
throw new Error(constants_1.ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID);
|
|
64
63
|
}
|
|
65
64
|
const claim = await response.json();
|
|
66
65
|
return claim;
|
|
@@ -84,37 +83,11 @@ class ClaimsService {
|
|
|
84
83
|
}),
|
|
85
84
|
});
|
|
86
85
|
if (!response.ok) {
|
|
87
|
-
throw new Error(
|
|
86
|
+
throw new Error(constants_1.ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED);
|
|
88
87
|
}
|
|
89
88
|
const message = await response.json();
|
|
90
89
|
return message;
|
|
91
90
|
}
|
|
92
|
-
/**
|
|
93
|
-
* Verify a claim signature.
|
|
94
|
-
*
|
|
95
|
-
* @param signature - The signature which is signed upon the message.
|
|
96
|
-
* @param walletAddress - The impacted wallet address of the claim.
|
|
97
|
-
* @param message - The message which was signed to generate the signature.
|
|
98
|
-
* @returns The result of the signature verification.
|
|
99
|
-
*/
|
|
100
|
-
async verifyClaimSignature(signature, walletAddress, message) {
|
|
101
|
-
const headers = await this.getRequestHeaders();
|
|
102
|
-
const url = `${this.getClaimsApiUrl()}/signature/verify`;
|
|
103
|
-
const response = await __classPrivateFieldGet(this, _ClaimsService_fetch, "f").call(this, url, {
|
|
104
|
-
headers,
|
|
105
|
-
method: 'POST',
|
|
106
|
-
body: JSON.stringify({
|
|
107
|
-
signature,
|
|
108
|
-
walletAddress,
|
|
109
|
-
message,
|
|
110
|
-
}),
|
|
111
|
-
});
|
|
112
|
-
if (!response.ok) {
|
|
113
|
-
throw new Error('Failed to verify claim signature');
|
|
114
|
-
}
|
|
115
|
-
const result = await response.json();
|
|
116
|
-
return Boolean(result.success);
|
|
117
|
-
}
|
|
118
91
|
/**
|
|
119
92
|
* Create the headers for the current request.
|
|
120
93
|
*
|
|
@@ -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,\n type Env,\n HttpContentTypeHeader,\n SERVICE_NAME,\n} from './constants';\nimport type { Claim, GenerateSignatureMessageResponse } from './types';\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 ClaimsServiceVerifyClaimSignatureAction = {\n type: `${typeof SERVICE_NAME}:verifyClaimSignature`;\n handler: ClaimsService['verifyClaimSignature'];\n};\n\nexport type ClaimsServiceActions =\n | ClaimsServiceGetClaimsAction\n | ClaimsServiceGetClaimByIdAction\n | ClaimsServiceGetRequestHeadersAction\n | ClaimsServiceGetClaimsApiUrlAction\n | ClaimsServiceGenerateMessageForClaimSignatureAction\n | ClaimsServiceVerifyClaimSignatureAction;\n\nexport type AllowedActions =\n AuthenticationController.AuthenticationControllerGetBearerToken;\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\nexport class ClaimsService {\n 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}: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 this.#messenger.registerActionHandler(\n `${SERVICE_NAME}:verifyClaimSignature`,\n this.verifyClaimSignature.bind(this),\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 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 throw new Error('Failed to get claims');\n }\n\n const claims = await response.json();\n return claims;\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 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 throw new Error('Failed to get claim by id');\n }\n\n const claim = await response.json();\n return claim;\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 const headers = await this.getRequestHeaders();\n const url = `${this.getClaimsApiUrl()}/signature/generateMessage`;\n const response = await this.#fetch(url, {\n headers,\n method: 'POST',\n body: JSON.stringify({\n chainId,\n walletAddress,\n }),\n });\n\n if (!response.ok) {\n throw new Error('Failed to generate message for claim signature');\n }\n\n const message = await response.json();\n return message;\n }\n\n /**\n * Verify a claim signature.\n *\n * @param signature - The signature which is signed upon the message.\n * @param walletAddress - The impacted wallet address of the claim.\n * @param message - The message which was signed to generate the signature.\n * @returns The result of the signature verification.\n */\n async verifyClaimSignature(\n signature: `0x${string}`,\n walletAddress: `0x${string}`,\n message: string,\n ): Promise<boolean> {\n const headers = await this.getRequestHeaders();\n const url = `${this.getClaimsApiUrl()}/signature/verify`;\n const response = await this.#fetch(url, {\n headers,\n method: 'POST',\n body: JSON.stringify({\n signature,\n walletAddress,\n message,\n }),\n });\n\n if (!response.ok) {\n throw new Error('Failed to verify claim signature');\n }\n\n const result = await response.json();\n return Boolean(result.success);\n }\n\n /**\n * Create the headers for the current request.\n *\n * @param contentType - The content type of the request. Defaults to 'application/json'.\n * @returns The headers for the current request.\n */\n async getRequestHeaders(\n contentType: HttpContentTypeHeader = HttpContentTypeHeader.APPLICATION_JSON,\n ): Promise<Record<string, string>> {\n const bearerToken = await this.#messenger.call(\n 'AuthenticationController:getBearerToken',\n );\n return {\n Authorization: `Bearer ${bearerToken}`,\n 'Content-Type': contentType,\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[this.#env]}`;\n }\n}\n"]}
|
|
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,\n ClaimsServiceErrorMessages,\n type Env,\n HttpContentTypeHeader,\n SERVICE_NAME,\n} from './constants';\nimport type { Claim, GenerateSignatureMessageResponse } from './types';\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 | ClaimsServiceGetClaimsAction\n | ClaimsServiceGetClaimByIdAction\n | ClaimsServiceGetRequestHeadersAction\n | ClaimsServiceGetClaimsApiUrlAction\n | ClaimsServiceGenerateMessageForClaimSignatureAction;\n\nexport type AllowedActions =\n AuthenticationController.AuthenticationControllerGetBearerToken;\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\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}: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 * Get the claims for the current user.\n *\n * @returns The claims for the current user.\n */\n async getClaims(): Promise<Claim[]> {\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 throw new Error(ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS);\n }\n\n const claims = await response.json();\n return claims;\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 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 throw new Error(ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID);\n }\n\n const claim = await response.json();\n return claim;\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 const headers = await this.getRequestHeaders();\n const url = `${this.getClaimsApiUrl()}/signature/generateMessage`;\n const response = await this.#fetch(url, {\n headers,\n method: 'POST',\n body: JSON.stringify({\n chainId,\n walletAddress,\n }),\n });\n\n if (!response.ok) {\n throw new Error(\n ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED,\n );\n }\n\n const message = await response.json();\n return message;\n }\n\n /**\n * Create the headers for the current request.\n *\n * @param contentType - The content type of the request. Defaults to 'application/json'.\n * @returns The headers for the current request.\n */\n async getRequestHeaders(\n contentType: HttpContentTypeHeader = HttpContentTypeHeader.APPLICATION_JSON,\n ): Promise<Record<string, string>> {\n const bearerToken = await this.#messenger.call(\n 'AuthenticationController:getBearerToken',\n );\n return {\n Authorization: `Bearer ${bearerToken}`,\n 'Content-Type': contentType,\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[this.#env]}`;\n }\n}\n"]}
|
package/dist/ClaimsService.d.cts
CHANGED
|
@@ -23,11 +23,7 @@ export type ClaimsServiceGenerateMessageForClaimSignatureAction = {
|
|
|
23
23
|
type: `${typeof SERVICE_NAME}:generateMessageForClaimSignature`;
|
|
24
24
|
handler: ClaimsService['generateMessageForClaimSignature'];
|
|
25
25
|
};
|
|
26
|
-
export type
|
|
27
|
-
type: `${typeof SERVICE_NAME}:verifyClaimSignature`;
|
|
28
|
-
handler: ClaimsService['verifyClaimSignature'];
|
|
29
|
-
};
|
|
30
|
-
export type ClaimsServiceActions = ClaimsServiceGetClaimsAction | ClaimsServiceGetClaimByIdAction | ClaimsServiceGetRequestHeadersAction | ClaimsServiceGetClaimsApiUrlAction | ClaimsServiceGenerateMessageForClaimSignatureAction | ClaimsServiceVerifyClaimSignatureAction;
|
|
26
|
+
export type ClaimsServiceActions = ClaimsServiceGetClaimsAction | ClaimsServiceGetClaimByIdAction | ClaimsServiceGetRequestHeadersAction | ClaimsServiceGetClaimsApiUrlAction | ClaimsServiceGenerateMessageForClaimSignatureAction;
|
|
31
27
|
export type AllowedActions = AuthenticationController.AuthenticationControllerGetBearerToken;
|
|
32
28
|
export type ClaimsServiceEvents = never;
|
|
33
29
|
export type ClaimsServiceMessenger = Messenger<typeof SERVICE_NAME, ClaimsServiceActions | AllowedActions>;
|
|
@@ -38,7 +34,7 @@ export type ClaimsServiceConfig = {
|
|
|
38
34
|
};
|
|
39
35
|
export declare class ClaimsService {
|
|
40
36
|
#private;
|
|
41
|
-
name
|
|
37
|
+
readonly name = "ClaimsService";
|
|
42
38
|
constructor({ env, messenger, fetchFunction }: ClaimsServiceConfig);
|
|
43
39
|
/**
|
|
44
40
|
* Get the claims for the current user.
|
|
@@ -61,15 +57,6 @@ export declare class ClaimsService {
|
|
|
61
57
|
* @returns The message for the claim signature.
|
|
62
58
|
*/
|
|
63
59
|
generateMessageForClaimSignature(chainId: number, walletAddress: Hex): Promise<GenerateSignatureMessageResponse>;
|
|
64
|
-
/**
|
|
65
|
-
* Verify a claim signature.
|
|
66
|
-
*
|
|
67
|
-
* @param signature - The signature which is signed upon the message.
|
|
68
|
-
* @param walletAddress - The impacted wallet address of the claim.
|
|
69
|
-
* @param message - The message which was signed to generate the signature.
|
|
70
|
-
* @returns The result of the signature verification.
|
|
71
|
-
*/
|
|
72
|
-
verifyClaimSignature(signature: `0x${string}`, walletAddress: `0x${string}`, message: string): Promise<boolean>;
|
|
73
60
|
/**
|
|
74
61
|
* Create the headers for the current request.
|
|
75
62
|
*
|
|
@@ -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;AAClF,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,OAAO,
|
|
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;AAClF,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,OAAO,EAGL,KAAK,GAAG,EACR,qBAAqB,EACrB,YAAY,EACb,wBAAoB;AACrB,OAAO,KAAK,EAAE,KAAK,EAAE,gCAAgC,EAAE,oBAAgB;AAEvE,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,GAAG,OAAO,YAAY,YAAY,CAAC;IACzC,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,GAAG,OAAO,YAAY,eAAe,CAAC;IAC5C,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG;IACjD,IAAI,EAAE,GAAG,OAAO,YAAY,oBAAoB,CAAC;IACjD,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,IAAI,EAAE,GAAG,OAAO,YAAY,kBAAkB,CAAC;IAC/C,OAAO,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,mDAAmD,GAAG;IAChE,IAAI,EAAE,GAAG,OAAO,YAAY,mCAAmC,CAAC;IAChE,OAAO,EAAE,aAAa,CAAC,kCAAkC,CAAC,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC5B,4BAA4B,GAC5B,+BAA+B,GAC/B,oCAAoC,GACpC,kCAAkC,GAClC,mDAAmD,CAAC;AAExD,MAAM,MAAM,cAAc,GACxB,wBAAwB,CAAC,sCAAsC,CAAC;AAElE,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAExC,MAAM,MAAM,sBAAsB,GAAG,SAAS,CAC5C,OAAO,YAAY,EACnB,oBAAoB,GAAG,cAAc,CACtC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,sBAAsB,CAAC;IAClC,aAAa,EAAE,OAAO,KAAK,CAAC;CAC7B,CAAC;AAEF,qBAAa,aAAa;;IACxB,QAAQ,CAAC,IAAI,mBAAgB;gBAQjB,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,mBAAmB;IA2BlE;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAenC;;;;;OAKG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAe9C;;;;;;OAMG;IACG,gCAAgC,CACpC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,GAAG,GACjB,OAAO,CAAC,gCAAgC,CAAC;IAsB5C;;;;;OAKG;IACG,iBAAiB,CACrB,WAAW,GAAE,qBAA8D,GAC1E,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAUlC;;;;OAIG;IACH,eAAe,IAAI,MAAM;CAG1B"}
|
package/dist/ClaimsService.d.mts
CHANGED
|
@@ -23,11 +23,7 @@ export type ClaimsServiceGenerateMessageForClaimSignatureAction = {
|
|
|
23
23
|
type: `${typeof SERVICE_NAME}:generateMessageForClaimSignature`;
|
|
24
24
|
handler: ClaimsService['generateMessageForClaimSignature'];
|
|
25
25
|
};
|
|
26
|
-
export type
|
|
27
|
-
type: `${typeof SERVICE_NAME}:verifyClaimSignature`;
|
|
28
|
-
handler: ClaimsService['verifyClaimSignature'];
|
|
29
|
-
};
|
|
30
|
-
export type ClaimsServiceActions = ClaimsServiceGetClaimsAction | ClaimsServiceGetClaimByIdAction | ClaimsServiceGetRequestHeadersAction | ClaimsServiceGetClaimsApiUrlAction | ClaimsServiceGenerateMessageForClaimSignatureAction | ClaimsServiceVerifyClaimSignatureAction;
|
|
26
|
+
export type ClaimsServiceActions = ClaimsServiceGetClaimsAction | ClaimsServiceGetClaimByIdAction | ClaimsServiceGetRequestHeadersAction | ClaimsServiceGetClaimsApiUrlAction | ClaimsServiceGenerateMessageForClaimSignatureAction;
|
|
31
27
|
export type AllowedActions = AuthenticationController.AuthenticationControllerGetBearerToken;
|
|
32
28
|
export type ClaimsServiceEvents = never;
|
|
33
29
|
export type ClaimsServiceMessenger = Messenger<typeof SERVICE_NAME, ClaimsServiceActions | AllowedActions>;
|
|
@@ -38,7 +34,7 @@ export type ClaimsServiceConfig = {
|
|
|
38
34
|
};
|
|
39
35
|
export declare class ClaimsService {
|
|
40
36
|
#private;
|
|
41
|
-
name
|
|
37
|
+
readonly name = "ClaimsService";
|
|
42
38
|
constructor({ env, messenger, fetchFunction }: ClaimsServiceConfig);
|
|
43
39
|
/**
|
|
44
40
|
* Get the claims for the current user.
|
|
@@ -61,15 +57,6 @@ export declare class ClaimsService {
|
|
|
61
57
|
* @returns The message for the claim signature.
|
|
62
58
|
*/
|
|
63
59
|
generateMessageForClaimSignature(chainId: number, walletAddress: Hex): Promise<GenerateSignatureMessageResponse>;
|
|
64
|
-
/**
|
|
65
|
-
* Verify a claim signature.
|
|
66
|
-
*
|
|
67
|
-
* @param signature - The signature which is signed upon the message.
|
|
68
|
-
* @param walletAddress - The impacted wallet address of the claim.
|
|
69
|
-
* @param message - The message which was signed to generate the signature.
|
|
70
|
-
* @returns The result of the signature verification.
|
|
71
|
-
*/
|
|
72
|
-
verifyClaimSignature(signature: `0x${string}`, walletAddress: `0x${string}`, message: string): Promise<boolean>;
|
|
73
60
|
/**
|
|
74
61
|
* Create the headers for the current request.
|
|
75
62
|
*
|
|
@@ -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;AAClF,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,OAAO,
|
|
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;AAClF,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,OAAO,EAGL,KAAK,GAAG,EACR,qBAAqB,EACrB,YAAY,EACb,wBAAoB;AACrB,OAAO,KAAK,EAAE,KAAK,EAAE,gCAAgC,EAAE,oBAAgB;AAEvE,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,GAAG,OAAO,YAAY,YAAY,CAAC;IACzC,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,GAAG,OAAO,YAAY,eAAe,CAAC;IAC5C,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG;IACjD,IAAI,EAAE,GAAG,OAAO,YAAY,oBAAoB,CAAC;IACjD,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,IAAI,EAAE,GAAG,OAAO,YAAY,kBAAkB,CAAC;IAC/C,OAAO,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,mDAAmD,GAAG;IAChE,IAAI,EAAE,GAAG,OAAO,YAAY,mCAAmC,CAAC;IAChE,OAAO,EAAE,aAAa,CAAC,kCAAkC,CAAC,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC5B,4BAA4B,GAC5B,+BAA+B,GAC/B,oCAAoC,GACpC,kCAAkC,GAClC,mDAAmD,CAAC;AAExD,MAAM,MAAM,cAAc,GACxB,wBAAwB,CAAC,sCAAsC,CAAC;AAElE,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAExC,MAAM,MAAM,sBAAsB,GAAG,SAAS,CAC5C,OAAO,YAAY,EACnB,oBAAoB,GAAG,cAAc,CACtC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,sBAAsB,CAAC;IAClC,aAAa,EAAE,OAAO,KAAK,CAAC;CAC7B,CAAC;AAEF,qBAAa,aAAa;;IACxB,QAAQ,CAAC,IAAI,mBAAgB;gBAQjB,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,mBAAmB;IA2BlE;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAenC;;;;;OAKG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAe9C;;;;;;OAMG;IACG,gCAAgC,CACpC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,GAAG,GACjB,OAAO,CAAC,gCAAgC,CAAC;IAsB5C;;;;;OAKG;IACG,iBAAiB,CACrB,WAAW,GAAE,qBAA8D,GAC1E,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAUlC;;;;OAIG;IACH,eAAe,IAAI,MAAM;CAG1B"}
|
package/dist/ClaimsService.mjs
CHANGED
|
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
12
|
var _ClaimsService_env, _ClaimsService_fetch, _ClaimsService_messenger;
|
|
13
|
-
import { CLAIMS_API_URL, HttpContentTypeHeader, SERVICE_NAME } from "./constants.mjs";
|
|
13
|
+
import { CLAIMS_API_URL, ClaimsServiceErrorMessages, HttpContentTypeHeader, SERVICE_NAME } from "./constants.mjs";
|
|
14
14
|
export class ClaimsService {
|
|
15
15
|
constructor({ env, messenger, fetchFunction }) {
|
|
16
16
|
this.name = SERVICE_NAME; // required for Modular Initialization
|
|
@@ -25,7 +25,6 @@ export class ClaimsService {
|
|
|
25
25
|
__classPrivateFieldGet(this, _ClaimsService_messenger, "f").registerActionHandler(`${SERVICE_NAME}:getRequestHeaders`, this.getRequestHeaders.bind(this));
|
|
26
26
|
__classPrivateFieldGet(this, _ClaimsService_messenger, "f").registerActionHandler(`${SERVICE_NAME}:getClaimsApiUrl`, this.getClaimsApiUrl.bind(this));
|
|
27
27
|
__classPrivateFieldGet(this, _ClaimsService_messenger, "f").registerActionHandler(`${SERVICE_NAME}:generateMessageForClaimSignature`, this.generateMessageForClaimSignature.bind(this));
|
|
28
|
-
__classPrivateFieldGet(this, _ClaimsService_messenger, "f").registerActionHandler(`${SERVICE_NAME}:verifyClaimSignature`, this.verifyClaimSignature.bind(this));
|
|
29
28
|
}
|
|
30
29
|
/**
|
|
31
30
|
* Get the claims for the current user.
|
|
@@ -39,7 +38,7 @@ export class ClaimsService {
|
|
|
39
38
|
headers,
|
|
40
39
|
});
|
|
41
40
|
if (!response.ok) {
|
|
42
|
-
throw new Error(
|
|
41
|
+
throw new Error(ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS);
|
|
43
42
|
}
|
|
44
43
|
const claims = await response.json();
|
|
45
44
|
return claims;
|
|
@@ -57,7 +56,7 @@ export class ClaimsService {
|
|
|
57
56
|
headers,
|
|
58
57
|
});
|
|
59
58
|
if (!response.ok) {
|
|
60
|
-
throw new Error(
|
|
59
|
+
throw new Error(ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID);
|
|
61
60
|
}
|
|
62
61
|
const claim = await response.json();
|
|
63
62
|
return claim;
|
|
@@ -81,37 +80,11 @@ export class ClaimsService {
|
|
|
81
80
|
}),
|
|
82
81
|
});
|
|
83
82
|
if (!response.ok) {
|
|
84
|
-
throw new Error(
|
|
83
|
+
throw new Error(ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED);
|
|
85
84
|
}
|
|
86
85
|
const message = await response.json();
|
|
87
86
|
return message;
|
|
88
87
|
}
|
|
89
|
-
/**
|
|
90
|
-
* Verify a claim signature.
|
|
91
|
-
*
|
|
92
|
-
* @param signature - The signature which is signed upon the message.
|
|
93
|
-
* @param walletAddress - The impacted wallet address of the claim.
|
|
94
|
-
* @param message - The message which was signed to generate the signature.
|
|
95
|
-
* @returns The result of the signature verification.
|
|
96
|
-
*/
|
|
97
|
-
async verifyClaimSignature(signature, walletAddress, message) {
|
|
98
|
-
const headers = await this.getRequestHeaders();
|
|
99
|
-
const url = `${this.getClaimsApiUrl()}/signature/verify`;
|
|
100
|
-
const response = await __classPrivateFieldGet(this, _ClaimsService_fetch, "f").call(this, url, {
|
|
101
|
-
headers,
|
|
102
|
-
method: 'POST',
|
|
103
|
-
body: JSON.stringify({
|
|
104
|
-
signature,
|
|
105
|
-
walletAddress,
|
|
106
|
-
message,
|
|
107
|
-
}),
|
|
108
|
-
});
|
|
109
|
-
if (!response.ok) {
|
|
110
|
-
throw new Error('Failed to verify claim signature');
|
|
111
|
-
}
|
|
112
|
-
const result = await response.json();
|
|
113
|
-
return Boolean(result.success);
|
|
114
|
-
}
|
|
115
88
|
/**
|
|
116
89
|
* Create the headers for the current request.
|
|
117
90
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaimsService.mjs","sourceRoot":"","sources":["../src/ClaimsService.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Messenger } from '@metamask/messenger';\nimport type { AuthenticationController } from '@metamask/profile-sync-controller';\nimport type { Hex } from '@metamask/utils';\n\nimport {\n CLAIMS_API_URL,\n type Env,\n HttpContentTypeHeader,\n SERVICE_NAME,\n} from './constants';\nimport type { Claim, GenerateSignatureMessageResponse } from './types';\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 ClaimsServiceVerifyClaimSignatureAction = {\n type: `${typeof SERVICE_NAME}:verifyClaimSignature`;\n handler: ClaimsService['verifyClaimSignature'];\n};\n\nexport type ClaimsServiceActions =\n | ClaimsServiceGetClaimsAction\n | ClaimsServiceGetClaimByIdAction\n | ClaimsServiceGetRequestHeadersAction\n | ClaimsServiceGetClaimsApiUrlAction\n | ClaimsServiceGenerateMessageForClaimSignatureAction\n | ClaimsServiceVerifyClaimSignatureAction;\n\nexport type AllowedActions =\n AuthenticationController.AuthenticationControllerGetBearerToken;\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\nexport class ClaimsService {\n 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}: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 this.#messenger.registerActionHandler(\n `${SERVICE_NAME}:verifyClaimSignature`,\n this.verifyClaimSignature.bind(this),\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 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 throw new Error('Failed to get claims');\n }\n\n const claims = await response.json();\n return claims;\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 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 throw new Error('Failed to get claim by id');\n }\n\n const claim = await response.json();\n return claim;\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 const headers = await this.getRequestHeaders();\n const url = `${this.getClaimsApiUrl()}/signature/generateMessage`;\n const response = await this.#fetch(url, {\n headers,\n method: 'POST',\n body: JSON.stringify({\n chainId,\n walletAddress,\n }),\n });\n\n if (!response.ok) {\n throw new Error('Failed to generate message for claim signature');\n }\n\n const message = await response.json();\n return message;\n }\n\n /**\n * Verify a claim signature.\n *\n * @param signature - The signature which is signed upon the message.\n * @param walletAddress - The impacted wallet address of the claim.\n * @param message - The message which was signed to generate the signature.\n * @returns The result of the signature verification.\n */\n async verifyClaimSignature(\n signature: `0x${string}`,\n walletAddress: `0x${string}`,\n message: string,\n ): Promise<boolean> {\n const headers = await this.getRequestHeaders();\n const url = `${this.getClaimsApiUrl()}/signature/verify`;\n const response = await this.#fetch(url, {\n headers,\n method: 'POST',\n body: JSON.stringify({\n signature,\n walletAddress,\n message,\n }),\n });\n\n if (!response.ok) {\n throw new Error('Failed to verify claim signature');\n }\n\n const result = await response.json();\n return Boolean(result.success);\n }\n\n /**\n * Create the headers for the current request.\n *\n * @param contentType - The content type of the request. Defaults to 'application/json'.\n * @returns The headers for the current request.\n */\n async getRequestHeaders(\n contentType: HttpContentTypeHeader = HttpContentTypeHeader.APPLICATION_JSON,\n ): Promise<Record<string, string>> {\n const bearerToken = await this.#messenger.call(\n 'AuthenticationController:getBearerToken',\n );\n return {\n Authorization: `Bearer ${bearerToken}`,\n 'Content-Type': contentType,\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[this.#env]}`;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ClaimsService.mjs","sourceRoot":"","sources":["../src/ClaimsService.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Messenger } from '@metamask/messenger';\nimport type { AuthenticationController } from '@metamask/profile-sync-controller';\nimport type { Hex } from '@metamask/utils';\n\nimport {\n CLAIMS_API_URL,\n ClaimsServiceErrorMessages,\n type Env,\n HttpContentTypeHeader,\n SERVICE_NAME,\n} from './constants';\nimport type { Claim, GenerateSignatureMessageResponse } from './types';\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 | ClaimsServiceGetClaimsAction\n | ClaimsServiceGetClaimByIdAction\n | ClaimsServiceGetRequestHeadersAction\n | ClaimsServiceGetClaimsApiUrlAction\n | ClaimsServiceGenerateMessageForClaimSignatureAction;\n\nexport type AllowedActions =\n AuthenticationController.AuthenticationControllerGetBearerToken;\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\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}: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 * Get the claims for the current user.\n *\n * @returns The claims for the current user.\n */\n async getClaims(): Promise<Claim[]> {\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 throw new Error(ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS);\n }\n\n const claims = await response.json();\n return claims;\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 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 throw new Error(ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID);\n }\n\n const claim = await response.json();\n return claim;\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 const headers = await this.getRequestHeaders();\n const url = `${this.getClaimsApiUrl()}/signature/generateMessage`;\n const response = await this.#fetch(url, {\n headers,\n method: 'POST',\n body: JSON.stringify({\n chainId,\n walletAddress,\n }),\n });\n\n if (!response.ok) {\n throw new Error(\n ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED,\n );\n }\n\n const message = await response.json();\n return message;\n }\n\n /**\n * Create the headers for the current request.\n *\n * @param contentType - The content type of the request. Defaults to 'application/json'.\n * @returns The headers for the current request.\n */\n async getRequestHeaders(\n contentType: HttpContentTypeHeader = HttpContentTypeHeader.APPLICATION_JSON,\n ): Promise<Record<string, string>> {\n const bearerToken = await this.#messenger.call(\n 'AuthenticationController:getBearerToken',\n );\n return {\n Authorization: `Bearer ${bearerToken}`,\n 'Content-Type': contentType,\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[this.#env]}`;\n }\n}\n"]}
|
package/dist/constants.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HttpContentTypeHeader = exports.CLAIMS_API_URL = exports.ClaimStatusEnum = exports.Env = exports.SERVICE_NAME = exports.CONTROLLER_NAME = void 0;
|
|
3
|
+
exports.ClaimsServiceErrorMessages = exports.ClaimsControllerErrorMessages = exports.HttpContentTypeHeader = exports.CLAIMS_API_URL = exports.ClaimStatusEnum = exports.Env = exports.SERVICE_NAME = exports.CONTROLLER_NAME = void 0;
|
|
4
4
|
exports.CONTROLLER_NAME = 'ClaimsController';
|
|
5
5
|
exports.SERVICE_NAME = 'ClaimsService';
|
|
6
6
|
var Env;
|
|
@@ -36,4 +36,15 @@ var HttpContentTypeHeader;
|
|
|
36
36
|
HttpContentTypeHeader["APPLICATION_JSON"] = "application/json";
|
|
37
37
|
HttpContentTypeHeader["MULTIPART_FORM_DATA"] = "multipart/form-data";
|
|
38
38
|
})(HttpContentTypeHeader || (exports.HttpContentTypeHeader = HttpContentTypeHeader = {}));
|
|
39
|
+
exports.ClaimsControllerErrorMessages = {
|
|
40
|
+
CLAIM_ALREADY_SUBMITTED: 'Claim already submitted',
|
|
41
|
+
INVALID_CLAIM_SIGNATURE: 'Invalid claim signature',
|
|
42
|
+
INVALID_SIGNATURE_MESSAGE: 'Invalid signature message',
|
|
43
|
+
};
|
|
44
|
+
exports.ClaimsServiceErrorMessages = {
|
|
45
|
+
FAILED_TO_GET_CLAIMS: 'Failed to get claims',
|
|
46
|
+
FAILED_TO_GET_CLAIM_BY_ID: 'Failed to get claim by id',
|
|
47
|
+
SIGNATURE_MESSAGE_GENERATION_FAILED: 'Failed to generate message for claim signature',
|
|
48
|
+
CLAIM_SIGNATURE_VERIFICATION_REQUEST_FAILED: 'Failed to verify claim signature',
|
|
49
|
+
};
|
|
39
50
|
//# sourceMappingURL=constants.cjs.map
|
package/dist/constants.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,kBAAkB,CAAC;AAErC,QAAA,YAAY,GAAG,eAAe,CAAC;AAE5C,IAAY,GAIX;AAJD,WAAY,GAAG;IACb,kBAAW,CAAA;IACX,kBAAW,CAAA;IACX,kBAAW,CAAA;AACb,CAAC,EAJW,GAAG,mBAAH,GAAG,QAId;AAED,IAAY,eAeX;AAfD,WAAY,eAAe;IACzB,4CAA4C;IAC5C,sCAAmB,CAAA;IACnB,wBAAwB;IACxB,0CAAuB,CAAA;IACvB,0BAA0B;IAC1B,8CAA2B,CAAA;IAC3B,6BAA6B;IAC7B,gEAA6C,CAAA;IAC7C,uBAAuB;IACvB,wCAAqB,CAAA;IACrB,uBAAuB;IACvB,wCAAqB,CAAA;IACrB,iBAAiB;IACjB,sCAAmB,CAAA;AACrB,CAAC,EAfW,eAAe,+BAAf,eAAe,QAe1B;AAEY,QAAA,cAAc,GAAwB;IACjD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,uCAAuC;IAClD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,uCAAuC;IAClD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,mCAAmC;CAC/C,CAAC;AAEF,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,8DAAqC,CAAA;IACrC,oEAA2C,CAAA;AAC7C,CAAC,EAHW,qBAAqB,qCAArB,qBAAqB,QAGhC","sourcesContent":["export const CONTROLLER_NAME = 'ClaimsController';\n\nexport const SERVICE_NAME = 'ClaimsService';\n\nexport enum Env {\n DEV = 'dev',\n UAT = 'uat',\n PRD = 'prd',\n}\n\nexport enum ClaimStatusEnum {\n // created but not yet submitted to Intercom\n CREATED = 'created',\n // submitted to Intercom\n SUBMITTED = 'submitted',\n // in progress by Intercom\n IN_PROGRESS = 'in_progress',\n // waiting for customer reply\n WAITING_FOR_CUSTOMER = 'waiting_for_customer',\n // approved by Intercom\n APPROVED = 'approved',\n // rejected by Intercom\n REJECTED = 'rejected',\n // unknown status\n UNKNOWN = 'unknown',\n}\n\nexport const CLAIMS_API_URL: Record<Env, string> = {\n [Env.DEV]: 'https://claims.dev-api.cx.metamask.io',\n [Env.UAT]: 'https://claims.uat-api.cx.metamask.io',\n [Env.PRD]: 'https://claims.api.cx.metamask.io',\n};\n\nexport enum HttpContentTypeHeader {\n APPLICATION_JSON = 'application/json',\n MULTIPART_FORM_DATA = 'multipart/form-data',\n}\n"]}
|
|
1
|
+
{"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,kBAAkB,CAAC;AAErC,QAAA,YAAY,GAAG,eAAe,CAAC;AAE5C,IAAY,GAIX;AAJD,WAAY,GAAG;IACb,kBAAW,CAAA;IACX,kBAAW,CAAA;IACX,kBAAW,CAAA;AACb,CAAC,EAJW,GAAG,mBAAH,GAAG,QAId;AAED,IAAY,eAeX;AAfD,WAAY,eAAe;IACzB,4CAA4C;IAC5C,sCAAmB,CAAA;IACnB,wBAAwB;IACxB,0CAAuB,CAAA;IACvB,0BAA0B;IAC1B,8CAA2B,CAAA;IAC3B,6BAA6B;IAC7B,gEAA6C,CAAA;IAC7C,uBAAuB;IACvB,wCAAqB,CAAA;IACrB,uBAAuB;IACvB,wCAAqB,CAAA;IACrB,iBAAiB;IACjB,sCAAmB,CAAA;AACrB,CAAC,EAfW,eAAe,+BAAf,eAAe,QAe1B;AAEY,QAAA,cAAc,GAAwB;IACjD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,uCAAuC;IAClD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,uCAAuC;IAClD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,mCAAmC;CAC/C,CAAC;AAEF,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,8DAAqC,CAAA;IACrC,oEAA2C,CAAA;AAC7C,CAAC,EAHW,qBAAqB,qCAArB,qBAAqB,QAGhC;AAEY,QAAA,6BAA6B,GAAG;IAC3C,uBAAuB,EAAE,yBAAyB;IAClD,uBAAuB,EAAE,yBAAyB;IAClD,yBAAyB,EAAE,2BAA2B;CACvD,CAAC;AAEW,QAAA,0BAA0B,GAAG;IACxC,oBAAoB,EAAE,sBAAsB;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,mCAAmC,EACjC,gDAAgD;IAClD,2CAA2C,EACzC,kCAAkC;CACrC,CAAC","sourcesContent":["export const CONTROLLER_NAME = 'ClaimsController';\n\nexport const SERVICE_NAME = 'ClaimsService';\n\nexport enum Env {\n DEV = 'dev',\n UAT = 'uat',\n PRD = 'prd',\n}\n\nexport enum ClaimStatusEnum {\n // created but not yet submitted to Intercom\n CREATED = 'created',\n // submitted to Intercom\n SUBMITTED = 'submitted',\n // in progress by Intercom\n IN_PROGRESS = 'in_progress',\n // waiting for customer reply\n WAITING_FOR_CUSTOMER = 'waiting_for_customer',\n // approved by Intercom\n APPROVED = 'approved',\n // rejected by Intercom\n REJECTED = 'rejected',\n // unknown status\n UNKNOWN = 'unknown',\n}\n\nexport const CLAIMS_API_URL: Record<Env, string> = {\n [Env.DEV]: 'https://claims.dev-api.cx.metamask.io',\n [Env.UAT]: 'https://claims.uat-api.cx.metamask.io',\n [Env.PRD]: 'https://claims.api.cx.metamask.io',\n};\n\nexport enum HttpContentTypeHeader {\n APPLICATION_JSON = 'application/json',\n MULTIPART_FORM_DATA = 'multipart/form-data',\n}\n\nexport const ClaimsControllerErrorMessages = {\n CLAIM_ALREADY_SUBMITTED: 'Claim already submitted',\n INVALID_CLAIM_SIGNATURE: 'Invalid claim signature',\n INVALID_SIGNATURE_MESSAGE: 'Invalid signature message',\n};\n\nexport const ClaimsServiceErrorMessages = {\n FAILED_TO_GET_CLAIMS: 'Failed to get claims',\n FAILED_TO_GET_CLAIM_BY_ID: 'Failed to get claim by id',\n SIGNATURE_MESSAGE_GENERATION_FAILED:\n 'Failed to generate message for claim signature',\n CLAIM_SIGNATURE_VERIFICATION_REQUEST_FAILED:\n 'Failed to verify claim signature',\n};\n"]}
|
package/dist/constants.d.cts
CHANGED
|
@@ -19,4 +19,15 @@ export declare enum HttpContentTypeHeader {
|
|
|
19
19
|
APPLICATION_JSON = "application/json",
|
|
20
20
|
MULTIPART_FORM_DATA = "multipart/form-data"
|
|
21
21
|
}
|
|
22
|
+
export declare const ClaimsControllerErrorMessages: {
|
|
23
|
+
CLAIM_ALREADY_SUBMITTED: string;
|
|
24
|
+
INVALID_CLAIM_SIGNATURE: string;
|
|
25
|
+
INVALID_SIGNATURE_MESSAGE: string;
|
|
26
|
+
};
|
|
27
|
+
export declare const ClaimsServiceErrorMessages: {
|
|
28
|
+
FAILED_TO_GET_CLAIMS: string;
|
|
29
|
+
FAILED_TO_GET_CLAIM_BY_ID: string;
|
|
30
|
+
SIGNATURE_MESSAGE_GENERATION_FAILED: string;
|
|
31
|
+
CLAIM_SIGNATURE_VERIFICATION_REQUEST_FAILED: string;
|
|
32
|
+
};
|
|
22
33
|
//# sourceMappingURL=constants.d.cts.map
|
package/dist/constants.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAElD,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,oBAAY,GAAG;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;CACZ;AAED,oBAAY,eAAe;IAEzB,OAAO,YAAY;IAEnB,SAAS,cAAc;IAEvB,WAAW,gBAAgB;IAE3B,oBAAoB,yBAAyB;IAE7C,QAAQ,aAAa;IAErB,QAAQ,aAAa;IAErB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAI9C,CAAC;AAEF,oBAAY,qBAAqB;IAC/B,gBAAgB,qBAAqB;IACrC,mBAAmB,wBAAwB;CAC5C"}
|
|
1
|
+
{"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAElD,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,oBAAY,GAAG;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;CACZ;AAED,oBAAY,eAAe;IAEzB,OAAO,YAAY;IAEnB,SAAS,cAAc;IAEvB,WAAW,gBAAgB;IAE3B,oBAAoB,yBAAyB;IAE7C,QAAQ,aAAa;IAErB,QAAQ,aAAa;IAErB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAI9C,CAAC;AAEF,oBAAY,qBAAqB;IAC/B,gBAAgB,qBAAqB;IACrC,mBAAmB,wBAAwB;CAC5C;AAED,eAAO,MAAM,6BAA6B;;;;CAIzC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;CAOtC,CAAC"}
|
package/dist/constants.d.mts
CHANGED
|
@@ -19,4 +19,15 @@ export declare enum HttpContentTypeHeader {
|
|
|
19
19
|
APPLICATION_JSON = "application/json",
|
|
20
20
|
MULTIPART_FORM_DATA = "multipart/form-data"
|
|
21
21
|
}
|
|
22
|
+
export declare const ClaimsControllerErrorMessages: {
|
|
23
|
+
CLAIM_ALREADY_SUBMITTED: string;
|
|
24
|
+
INVALID_CLAIM_SIGNATURE: string;
|
|
25
|
+
INVALID_SIGNATURE_MESSAGE: string;
|
|
26
|
+
};
|
|
27
|
+
export declare const ClaimsServiceErrorMessages: {
|
|
28
|
+
FAILED_TO_GET_CLAIMS: string;
|
|
29
|
+
FAILED_TO_GET_CLAIM_BY_ID: string;
|
|
30
|
+
SIGNATURE_MESSAGE_GENERATION_FAILED: string;
|
|
31
|
+
CLAIM_SIGNATURE_VERIFICATION_REQUEST_FAILED: string;
|
|
32
|
+
};
|
|
22
33
|
//# sourceMappingURL=constants.d.mts.map
|
package/dist/constants.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAElD,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,oBAAY,GAAG;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;CACZ;AAED,oBAAY,eAAe;IAEzB,OAAO,YAAY;IAEnB,SAAS,cAAc;IAEvB,WAAW,gBAAgB;IAE3B,oBAAoB,yBAAyB;IAE7C,QAAQ,aAAa;IAErB,QAAQ,aAAa;IAErB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAI9C,CAAC;AAEF,oBAAY,qBAAqB;IAC/B,gBAAgB,qBAAqB;IACrC,mBAAmB,wBAAwB;CAC5C"}
|
|
1
|
+
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAElD,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,oBAAY,GAAG;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;CACZ;AAED,oBAAY,eAAe;IAEzB,OAAO,YAAY;IAEnB,SAAS,cAAc;IAEvB,WAAW,gBAAgB;IAE3B,oBAAoB,yBAAyB;IAE7C,QAAQ,aAAa;IAErB,QAAQ,aAAa;IAErB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAI9C,CAAC;AAEF,oBAAY,qBAAqB;IAC/B,gBAAgB,qBAAqB;IACrC,mBAAmB,wBAAwB;CAC5C;AAED,eAAO,MAAM,6BAA6B;;;;CAIzC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;CAOtC,CAAC"}
|
package/dist/constants.mjs
CHANGED
|
@@ -33,4 +33,15 @@ export var HttpContentTypeHeader;
|
|
|
33
33
|
HttpContentTypeHeader["APPLICATION_JSON"] = "application/json";
|
|
34
34
|
HttpContentTypeHeader["MULTIPART_FORM_DATA"] = "multipart/form-data";
|
|
35
35
|
})(HttpContentTypeHeader || (HttpContentTypeHeader = {}));
|
|
36
|
+
export const ClaimsControllerErrorMessages = {
|
|
37
|
+
CLAIM_ALREADY_SUBMITTED: 'Claim already submitted',
|
|
38
|
+
INVALID_CLAIM_SIGNATURE: 'Invalid claim signature',
|
|
39
|
+
INVALID_SIGNATURE_MESSAGE: 'Invalid signature message',
|
|
40
|
+
};
|
|
41
|
+
export const ClaimsServiceErrorMessages = {
|
|
42
|
+
FAILED_TO_GET_CLAIMS: 'Failed to get claims',
|
|
43
|
+
FAILED_TO_GET_CLAIM_BY_ID: 'Failed to get claim by id',
|
|
44
|
+
SIGNATURE_MESSAGE_GENERATION_FAILED: 'Failed to generate message for claim signature',
|
|
45
|
+
CLAIM_SIGNATURE_VERIFICATION_REQUEST_FAILED: 'Failed to verify claim signature',
|
|
46
|
+
};
|
|
36
47
|
//# sourceMappingURL=constants.mjs.map
|
package/dist/constants.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAElD,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAE5C,MAAM,CAAN,IAAY,GAIX;AAJD,WAAY,GAAG;IACb,kBAAW,CAAA;IACX,kBAAW,CAAA;IACX,kBAAW,CAAA;AACb,CAAC,EAJW,GAAG,KAAH,GAAG,QAId;AAED,MAAM,CAAN,IAAY,eAeX;AAfD,WAAY,eAAe;IACzB,4CAA4C;IAC5C,sCAAmB,CAAA;IACnB,wBAAwB;IACxB,0CAAuB,CAAA;IACvB,0BAA0B;IAC1B,8CAA2B,CAAA;IAC3B,6BAA6B;IAC7B,gEAA6C,CAAA;IAC7C,uBAAuB;IACvB,wCAAqB,CAAA;IACrB,uBAAuB;IACvB,wCAAqB,CAAA;IACrB,iBAAiB;IACjB,sCAAmB,CAAA;AACrB,CAAC,EAfW,eAAe,KAAf,eAAe,QAe1B;AAED,MAAM,CAAC,MAAM,cAAc,GAAwB;IACjD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,uCAAuC;IAClD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,uCAAuC;IAClD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,mCAAmC;CAC/C,CAAC;AAEF,MAAM,CAAN,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,8DAAqC,CAAA;IACrC,oEAA2C,CAAA;AAC7C,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,QAGhC","sourcesContent":["export const CONTROLLER_NAME = 'ClaimsController';\n\nexport const SERVICE_NAME = 'ClaimsService';\n\nexport enum Env {\n DEV = 'dev',\n UAT = 'uat',\n PRD = 'prd',\n}\n\nexport enum ClaimStatusEnum {\n // created but not yet submitted to Intercom\n CREATED = 'created',\n // submitted to Intercom\n SUBMITTED = 'submitted',\n // in progress by Intercom\n IN_PROGRESS = 'in_progress',\n // waiting for customer reply\n WAITING_FOR_CUSTOMER = 'waiting_for_customer',\n // approved by Intercom\n APPROVED = 'approved',\n // rejected by Intercom\n REJECTED = 'rejected',\n // unknown status\n UNKNOWN = 'unknown',\n}\n\nexport const CLAIMS_API_URL: Record<Env, string> = {\n [Env.DEV]: 'https://claims.dev-api.cx.metamask.io',\n [Env.UAT]: 'https://claims.uat-api.cx.metamask.io',\n [Env.PRD]: 'https://claims.api.cx.metamask.io',\n};\n\nexport enum HttpContentTypeHeader {\n APPLICATION_JSON = 'application/json',\n MULTIPART_FORM_DATA = 'multipart/form-data',\n}\n"]}
|
|
1
|
+
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAElD,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAE5C,MAAM,CAAN,IAAY,GAIX;AAJD,WAAY,GAAG;IACb,kBAAW,CAAA;IACX,kBAAW,CAAA;IACX,kBAAW,CAAA;AACb,CAAC,EAJW,GAAG,KAAH,GAAG,QAId;AAED,MAAM,CAAN,IAAY,eAeX;AAfD,WAAY,eAAe;IACzB,4CAA4C;IAC5C,sCAAmB,CAAA;IACnB,wBAAwB;IACxB,0CAAuB,CAAA;IACvB,0BAA0B;IAC1B,8CAA2B,CAAA;IAC3B,6BAA6B;IAC7B,gEAA6C,CAAA;IAC7C,uBAAuB;IACvB,wCAAqB,CAAA;IACrB,uBAAuB;IACvB,wCAAqB,CAAA;IACrB,iBAAiB;IACjB,sCAAmB,CAAA;AACrB,CAAC,EAfW,eAAe,KAAf,eAAe,QAe1B;AAED,MAAM,CAAC,MAAM,cAAc,GAAwB;IACjD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,uCAAuC;IAClD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,uCAAuC;IAClD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,mCAAmC;CAC/C,CAAC;AAEF,MAAM,CAAN,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,8DAAqC,CAAA;IACrC,oEAA2C,CAAA;AAC7C,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,QAGhC;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,uBAAuB,EAAE,yBAAyB;IAClD,uBAAuB,EAAE,yBAAyB;IAClD,yBAAyB,EAAE,2BAA2B;CACvD,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,oBAAoB,EAAE,sBAAsB;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,mCAAmC,EACjC,gDAAgD;IAClD,2CAA2C,EACzC,kCAAkC;CACrC,CAAC","sourcesContent":["export const CONTROLLER_NAME = 'ClaimsController';\n\nexport const SERVICE_NAME = 'ClaimsService';\n\nexport enum Env {\n DEV = 'dev',\n UAT = 'uat',\n PRD = 'prd',\n}\n\nexport enum ClaimStatusEnum {\n // created but not yet submitted to Intercom\n CREATED = 'created',\n // submitted to Intercom\n SUBMITTED = 'submitted',\n // in progress by Intercom\n IN_PROGRESS = 'in_progress',\n // waiting for customer reply\n WAITING_FOR_CUSTOMER = 'waiting_for_customer',\n // approved by Intercom\n APPROVED = 'approved',\n // rejected by Intercom\n REJECTED = 'rejected',\n // unknown status\n UNKNOWN = 'unknown',\n}\n\nexport const CLAIMS_API_URL: Record<Env, string> = {\n [Env.DEV]: 'https://claims.dev-api.cx.metamask.io',\n [Env.UAT]: 'https://claims.uat-api.cx.metamask.io',\n [Env.PRD]: 'https://claims.api.cx.metamask.io',\n};\n\nexport enum HttpContentTypeHeader {\n APPLICATION_JSON = 'application/json',\n MULTIPART_FORM_DATA = 'multipart/form-data',\n}\n\nexport const ClaimsControllerErrorMessages = {\n CLAIM_ALREADY_SUBMITTED: 'Claim already submitted',\n INVALID_CLAIM_SIGNATURE: 'Invalid claim signature',\n INVALID_SIGNATURE_MESSAGE: 'Invalid signature message',\n};\n\nexport const ClaimsServiceErrorMessages = {\n FAILED_TO_GET_CLAIMS: 'Failed to get claims',\n FAILED_TO_GET_CLAIM_BY_ID: 'Failed to get claim by id',\n SIGNATURE_MESSAGE_GENERATION_FAILED:\n 'Failed to generate message for claim signature',\n CLAIM_SIGNATURE_VERIFICATION_REQUEST_FAILED:\n 'Failed to verify claim signature',\n};\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Env = exports.ClaimStatusEnum = exports.ClaimsService = exports.getDefaultClaimsControllerState = exports.ClaimsController = void 0;
|
|
3
|
+
exports.ClaimsControllerErrorMessages = exports.Env = exports.ClaimStatusEnum = exports.ClaimsService = exports.getDefaultClaimsControllerState = exports.ClaimsController = void 0;
|
|
4
4
|
var ClaimsController_1 = require("./ClaimsController.cjs");
|
|
5
5
|
Object.defineProperty(exports, "ClaimsController", { enumerable: true, get: function () { return ClaimsController_1.ClaimsController; } });
|
|
6
6
|
Object.defineProperty(exports, "getDefaultClaimsControllerState", { enumerable: true, get: function () { return ClaimsController_1.getDefaultClaimsControllerState; } });
|
|
@@ -9,4 +9,5 @@ Object.defineProperty(exports, "ClaimsService", { enumerable: true, get: functio
|
|
|
9
9
|
var constants_1 = require("./constants.cjs");
|
|
10
10
|
Object.defineProperty(exports, "ClaimStatusEnum", { enumerable: true, get: function () { return constants_1.ClaimStatusEnum; } });
|
|
11
11
|
Object.defineProperty(exports, "Env", { enumerable: true, get: function () { return constants_1.Env; } });
|
|
12
|
+
Object.defineProperty(exports, "ClaimsControllerErrorMessages", { enumerable: true, get: function () { return constants_1.ClaimsControllerErrorMessages; } });
|
|
12
13
|
//# sourceMappingURL=index.cjs.map
|
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;AAYjC,qDAAgD;AAAvC,8GAAA,aAAa,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;AAYjC,qDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAYtB,6CAIqB;AAHnB,4GAAA,eAAe,OAAA;AACf,gGAAA,GAAG,OAAA;AACH,0HAAA,6BAA6B,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 { Claim, ClaimsControllerState, Attachment } from './types';\n\nexport { ClaimsService } from './ClaimsService';\n\nexport type {\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} from './constants';\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -2,6 +2,6 @@ export { ClaimsController, getDefaultClaimsControllerState, } from "./ClaimsCont
|
|
|
2
2
|
export type { ClaimsControllerGetStateAction, ClaimsControllerActions, ClaimsControllerStateChangeEvent, ClaimsControllerMessenger, } from "./ClaimsController.cjs";
|
|
3
3
|
export type { Claim, ClaimsControllerState, Attachment } from "./types.cjs";
|
|
4
4
|
export { ClaimsService } from "./ClaimsService.cjs";
|
|
5
|
-
export type { ClaimsServiceGetClaimsAction, ClaimsServiceGetRequestHeadersAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGenerateMessageForClaimSignatureAction,
|
|
6
|
-
export { ClaimStatusEnum, Env } from "./constants.cjs";
|
|
5
|
+
export type { ClaimsServiceGetClaimsAction, ClaimsServiceGetRequestHeadersAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceActions, ClaimsServiceMessenger, } from "./ClaimsService.cjs";
|
|
6
|
+
export { ClaimStatusEnum, Env, ClaimsControllerErrorMessages, } from "./constants.cjs";
|
|
7
7
|
//# sourceMappingURL=index.d.cts.map
|
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,EAAE,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,oBAAgB;AAExE,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAEhD,YAAY,EACV,4BAA4B,EAC5B,oCAAoC,EACpC,kCAAkC,EAClC,+BAA+B,EAC/B,mDAAmD,EACnD,
|
|
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,EAAE,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,oBAAgB;AAExE,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAEhD,YAAY,EACV,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,GAC9B,wBAAoB"}
|
package/dist/index.d.mts
CHANGED
|
@@ -2,6 +2,6 @@ export { ClaimsController, getDefaultClaimsControllerState, } from "./ClaimsCont
|
|
|
2
2
|
export type { ClaimsControllerGetStateAction, ClaimsControllerActions, ClaimsControllerStateChangeEvent, ClaimsControllerMessenger, } from "./ClaimsController.mjs";
|
|
3
3
|
export type { Claim, ClaimsControllerState, Attachment } from "./types.mjs";
|
|
4
4
|
export { ClaimsService } from "./ClaimsService.mjs";
|
|
5
|
-
export type { ClaimsServiceGetClaimsAction, ClaimsServiceGetRequestHeadersAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGenerateMessageForClaimSignatureAction,
|
|
6
|
-
export { ClaimStatusEnum, Env } from "./constants.mjs";
|
|
5
|
+
export type { ClaimsServiceGetClaimsAction, ClaimsServiceGetRequestHeadersAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceActions, ClaimsServiceMessenger, } from "./ClaimsService.mjs";
|
|
6
|
+
export { ClaimStatusEnum, Env, ClaimsControllerErrorMessages, } from "./constants.mjs";
|
|
7
7
|
//# sourceMappingURL=index.d.mts.map
|
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,EAAE,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,oBAAgB;AAExE,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAEhD,YAAY,EACV,4BAA4B,EAC5B,oCAAoC,EACpC,kCAAkC,EAClC,+BAA+B,EAC/B,mDAAmD,EACnD,
|
|
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,EAAE,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,oBAAgB;AAExE,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAEhD,YAAY,EACV,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,GAC9B,wBAAoB"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { ClaimsController, getDefaultClaimsControllerState } from "./ClaimsController.mjs";
|
|
2
2
|
export { ClaimsService } from "./ClaimsService.mjs";
|
|
3
|
-
export { ClaimStatusEnum, Env } from "./constants.mjs";
|
|
3
|
+
export { ClaimStatusEnum, Env, ClaimsControllerErrorMessages } from "./constants.mjs";
|
|
4
4
|
//# sourceMappingURL=index.mjs.map
|
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;AAW5B,OAAO,EAAE,aAAa,EAAE,4BAAwB;
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,EAChC,+BAA2B;AAW5B,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAYhD,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC9B,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 { Claim, ClaimsControllerState, Attachment } from './types';\n\nexport { ClaimsService } from './ClaimsService';\n\nexport type {\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} from './constants';\n"]}
|