@johnqh/indexer_client 0.0.1
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/README.md +576 -0
- package/dist/business/index.d.ts +2 -0
- package/dist/business/index.d.ts.map +1 -0
- package/dist/business/index.js +2 -0
- package/dist/business/index.js.map +1 -0
- package/dist/business/indexer-service.d.ts +27 -0
- package/dist/business/indexer-service.d.ts.map +1 -0
- package/dist/business/indexer-service.js +74 -0
- package/dist/business/indexer-service.js.map +1 -0
- package/dist/hooks/index.d.ts +9 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +9 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/mocks.d.ts +15 -0
- package/dist/hooks/mocks.d.ts.map +1 -0
- package/dist/hooks/mocks.js +163 -0
- package/dist/hooks/mocks.js.map +1 -0
- package/dist/hooks/useIndexerMail.d.ts +20 -0
- package/dist/hooks/useIndexerMail.d.ts.map +1 -0
- package/dist/hooks/useIndexerMail.js +160 -0
- package/dist/hooks/useIndexerMail.js.map +1 -0
- package/dist/hooks/useIndexerNameService.d.ts +5 -0
- package/dist/hooks/useIndexerNameService.d.ts.map +1 -0
- package/dist/hooks/useIndexerNameService.js +30 -0
- package/dist/hooks/useIndexerNameService.js.map +1 -0
- package/dist/hooks/useIndexerPoints.d.ts +10 -0
- package/dist/hooks/useIndexerPoints.d.ts.map +1 -0
- package/dist/hooks/useIndexerPoints.js +100 -0
- package/dist/hooks/useIndexerPoints.js.map +1 -0
- package/dist/hooks/useReferralCode.d.ts +11 -0
- package/dist/hooks/useReferralCode.d.ts.map +1 -0
- package/dist/hooks/useReferralCode.js +42 -0
- package/dist/hooks/useReferralCode.js.map +1 -0
- package/dist/hooks/useReferralConsumption.d.ts +9 -0
- package/dist/hooks/useReferralConsumption.d.ts.map +1 -0
- package/dist/hooks/useReferralConsumption.js +49 -0
- package/dist/hooks/useReferralConsumption.js.map +1 -0
- package/dist/hooks/useReferralShare.d.ts +7 -0
- package/dist/hooks/useReferralShare.d.ts.map +1 -0
- package/dist/hooks/useReferralShare.js +18 -0
- package/dist/hooks/useReferralShare.js.map +1 -0
- package/dist/hooks/useReferralStats.d.ts +11 -0
- package/dist/hooks/useReferralStats.d.ts.map +1 -0
- package/dist/hooks/useReferralStats.js +42 -0
- package/dist/hooks/useReferralStats.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/network/IndexerClient.d.ts +77 -0
- package/dist/network/IndexerClient.d.ts.map +1 -0
- package/dist/network/IndexerClient.js +258 -0
- package/dist/network/IndexerClient.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/indexer-admin.d.ts +106 -0
- package/dist/utils/indexer-admin.d.ts.map +1 -0
- package/dist/utils/indexer-admin.js +112 -0
- package/dist/utils/indexer-admin.js.map +1 -0
- package/dist/utils/indexer-factory.d.ts +13 -0
- package/dist/utils/indexer-factory.d.ts.map +1 -0
- package/dist/utils/indexer-factory.js +24 -0
- package/dist/utils/indexer-factory.js.map +1 -0
- package/dist/utils/indexer-graphql.d.ts +152 -0
- package/dist/utils/indexer-graphql.d.ts.map +1 -0
- package/dist/utils/indexer-graphql.js +210 -0
- package/dist/utils/indexer-graphql.js.map +1 -0
- package/dist/utils/indexer-webhooks.d.ts +60 -0
- package/dist/utils/indexer-webhooks.d.ts.map +1 -0
- package/dist/utils/indexer-webhooks.js +68 -0
- package/dist/utils/indexer-webhooks.js.map +1 -0
- package/package.json +72 -0
@@ -0,0 +1,60 @@
|
|
1
|
+
import type { NetworkClient } from '@johnqh/di';
|
2
|
+
export interface IndexerWebhookConfig {
|
3
|
+
indexerBackendUrl: string;
|
4
|
+
networkClient: NetworkClient;
|
5
|
+
}
|
6
|
+
export interface WebhookEmailSent {
|
7
|
+
senderAddress: string;
|
8
|
+
recipientAddress: string;
|
9
|
+
emailId: string;
|
10
|
+
chainId?: number;
|
11
|
+
}
|
12
|
+
export interface WebhookRecipientLogin {
|
13
|
+
recipientAddress: string;
|
14
|
+
}
|
15
|
+
export interface WebhookReferralRegistration {
|
16
|
+
referrerAddress: string;
|
17
|
+
refereeAddress: string;
|
18
|
+
referralCode?: string;
|
19
|
+
source?: string;
|
20
|
+
}
|
21
|
+
export interface WebhookLoginEvent {
|
22
|
+
walletAddress: string;
|
23
|
+
signature: string;
|
24
|
+
message?: string;
|
25
|
+
refer?: string;
|
26
|
+
referralCode?: string;
|
27
|
+
}
|
28
|
+
export interface WebhookLoginResult {
|
29
|
+
message: string;
|
30
|
+
walletAddress: string;
|
31
|
+
results: {
|
32
|
+
recipientLogin: boolean;
|
33
|
+
referralBonus: boolean;
|
34
|
+
referralRegistration: boolean;
|
35
|
+
pointsAwarded: number;
|
36
|
+
};
|
37
|
+
}
|
38
|
+
export interface WebhookResponse {
|
39
|
+
success: boolean;
|
40
|
+
data: {
|
41
|
+
message: string;
|
42
|
+
};
|
43
|
+
}
|
44
|
+
export declare class IndexerWebhookHelper {
|
45
|
+
private config;
|
46
|
+
private client;
|
47
|
+
constructor(config: IndexerWebhookConfig);
|
48
|
+
processEmailSent(emailData: WebhookEmailSent): Promise<WebhookResponse>;
|
49
|
+
processRecipientLogin(loginData: WebhookRecipientLogin): Promise<WebhookResponse>;
|
50
|
+
registerReferral(referralData: WebhookReferralRegistration): Promise<WebhookResponse>;
|
51
|
+
processRefereeLogin(walletAddress: string, signature: string, message?: string): Promise<WebhookResponse>;
|
52
|
+
processLogin(loginData: WebhookLoginEvent): Promise<WebhookLoginResult>;
|
53
|
+
processSolanaWebhook(transactions: unknown[]): Promise<{
|
54
|
+
success: boolean;
|
55
|
+
processed: number;
|
56
|
+
total: number;
|
57
|
+
}>;
|
58
|
+
}
|
59
|
+
export declare const createIndexerWebhookHelper: (indexerBackendUrl: string, networkClient: NetworkClient) => IndexerWebhookHelper;
|
60
|
+
//# sourceMappingURL=indexer-webhooks.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"indexer-webhooks.d.ts","sourceRoot":"","sources":["../../src/utils/indexer-webhooks.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,2BAA2B;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE;QACP,cAAc,EAAE,OAAO,CAAC;QACxB,aAAa,EAAE,OAAO,CAAC;QACvB,oBAAoB,EAAE,OAAO,CAAC;QAC9B,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAUD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,oBAAoB;IAQlC,gBAAgB,CACpB,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,eAAe,CAAC;IAoBrB,qBAAqB,CACzB,SAAS,EAAE,qBAAqB,GAC/B,OAAO,CAAC,eAAe,CAAC;IAoBrB,gBAAgB,CACpB,YAAY,EAAE,2BAA2B,GACxC,OAAO,CAAC,eAAe,CAAC;IAoBrB,mBAAmB,CACvB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC;IAwBrB,YAAY,CAChB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,kBAAkB,CAAC;IAoBxB,oBAAoB,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAC3D,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CAmBH;AAKD,eAAO,MAAM,0BAA0B,GACrC,mBAAmB,MAAM,EACzB,eAAe,aAAa,KAC3B,oBAKF,CAAC"}
|
@@ -0,0 +1,68 @@
|
|
1
|
+
const getIndexerBaseUrl = (config) => {
|
2
|
+
return config.indexerBackendUrl;
|
3
|
+
};
|
4
|
+
export class IndexerWebhookHelper {
|
5
|
+
constructor(config) {
|
6
|
+
this.config = config;
|
7
|
+
this.client = config.networkClient;
|
8
|
+
}
|
9
|
+
async processEmailSent(emailData) {
|
10
|
+
const response = await this.client.post(`${getIndexerBaseUrl(this.config)}/webhook/email-sent`, emailData);
|
11
|
+
if (!response.ok) {
|
12
|
+
throw new Error(response.data?.error ||
|
13
|
+
`HTTP error! status: ${response.status}`);
|
14
|
+
}
|
15
|
+
return response.data;
|
16
|
+
}
|
17
|
+
async processRecipientLogin(loginData) {
|
18
|
+
const response = await this.client.post(`${getIndexerBaseUrl(this.config)}/webhook/recipient-login`, loginData);
|
19
|
+
if (!response.ok) {
|
20
|
+
throw new Error(response.data?.error ||
|
21
|
+
`HTTP error! status: ${response.status}`);
|
22
|
+
}
|
23
|
+
return response.data;
|
24
|
+
}
|
25
|
+
async registerReferral(referralData) {
|
26
|
+
const response = await this.client.post(`${getIndexerBaseUrl(this.config)}/points/register-referral`, referralData);
|
27
|
+
if (!response.ok) {
|
28
|
+
throw new Error(response.data?.error ||
|
29
|
+
`HTTP error! status: ${response.status}`);
|
30
|
+
}
|
31
|
+
return response.data;
|
32
|
+
}
|
33
|
+
async processRefereeLogin(walletAddress, signature, message) {
|
34
|
+
const response = await this.client.post(`${getIndexerBaseUrl(this.config)}/points/referee-login`, {
|
35
|
+
walletAddress,
|
36
|
+
signature,
|
37
|
+
message,
|
38
|
+
});
|
39
|
+
if (!response.ok) {
|
40
|
+
throw new Error(response.data?.error ||
|
41
|
+
`HTTP error! status: ${response.status}`);
|
42
|
+
}
|
43
|
+
return response.data;
|
44
|
+
}
|
45
|
+
async processLogin(loginData) {
|
46
|
+
const response = await this.client.post(`${getIndexerBaseUrl(this.config)}/webhook/login`, loginData);
|
47
|
+
if (!response.ok) {
|
48
|
+
throw new Error(response.data?.error ||
|
49
|
+
`HTTP error! status: ${response.status}`);
|
50
|
+
}
|
51
|
+
return response.data.data;
|
52
|
+
}
|
53
|
+
async processSolanaWebhook(transactions) {
|
54
|
+
const response = await this.client.post(`${getIndexerBaseUrl(this.config)}/solana/webhook`, transactions);
|
55
|
+
if (!response.ok) {
|
56
|
+
throw new Error(response.data?.error ||
|
57
|
+
`HTTP error! status: ${response.status}`);
|
58
|
+
}
|
59
|
+
return response.data;
|
60
|
+
}
|
61
|
+
}
|
62
|
+
export const createIndexerWebhookHelper = (indexerBackendUrl, networkClient) => {
|
63
|
+
return new IndexerWebhookHelper({
|
64
|
+
indexerBackendUrl,
|
65
|
+
networkClient,
|
66
|
+
});
|
67
|
+
};
|
68
|
+
//# sourceMappingURL=indexer-webhooks.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"indexer-webhooks.js","sourceRoot":"","sources":["../../src/utils/indexer-webhooks.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
{
|
2
|
+
"name": "@johnqh/indexer_client",
|
3
|
+
"version": "0.0.1",
|
4
|
+
"description": "React and React Native compatible client library for 0xMail indexer API with TypeScript support",
|
5
|
+
"type": "module",
|
6
|
+
"main": "dist/index.js",
|
7
|
+
"types": "dist/index.d.ts",
|
8
|
+
"files": [
|
9
|
+
"dist/**/*"
|
10
|
+
],
|
11
|
+
"scripts": {
|
12
|
+
"build": "tsc -p tsconfig.build.json",
|
13
|
+
"build:watch": "tsc --watch",
|
14
|
+
"clean": "rm -rf dist",
|
15
|
+
"prepublishOnly": "npm run clean && npm run build",
|
16
|
+
"test": "vitest",
|
17
|
+
"test:run": "vitest run",
|
18
|
+
"test:coverage": "vitest run --coverage",
|
19
|
+
"test:watch": "vitest --watch",
|
20
|
+
"test:integration": "vitest run --config vitest.integration.config.ts",
|
21
|
+
"test:integration:watch": "vitest --config vitest.integration.config.ts",
|
22
|
+
"lint": "eslint src --ext .ts,.tsx",
|
23
|
+
"lint:fix": "eslint src --ext .ts,.tsx --fix",
|
24
|
+
"format": "prettier --write src/**/*.ts",
|
25
|
+
"format:check": "prettier --check src/**/*.ts",
|
26
|
+
"typecheck": "tsc --noEmit",
|
27
|
+
"typecheck:watch": "tsc --noEmit --watch",
|
28
|
+
"check-all": "npm run lint && npm run typecheck && npm run test:run"
|
29
|
+
},
|
30
|
+
"keywords": [
|
31
|
+
"indexer",
|
32
|
+
"client",
|
33
|
+
"react",
|
34
|
+
"react-native",
|
35
|
+
"typescript",
|
36
|
+
"0xmail"
|
37
|
+
],
|
38
|
+
"author": "John Huang",
|
39
|
+
"license": "MIT",
|
40
|
+
"peerDependencies": {
|
41
|
+
"react": "^19.2.0"
|
42
|
+
},
|
43
|
+
"dependencies": {
|
44
|
+
"@johnqh/di": "^1.3.19",
|
45
|
+
"@johnqh/types": "^1.8.14",
|
46
|
+
"@tanstack/react-query": "^5.90.2",
|
47
|
+
"axios": "^1.12.2"
|
48
|
+
},
|
49
|
+
"devDependencies": {
|
50
|
+
"@testing-library/react": "^16.3.0",
|
51
|
+
"@types/node": "^24.7.0",
|
52
|
+
"@types/react": "^19.2.2",
|
53
|
+
"@typescript-eslint/eslint-plugin": "^8.46.0",
|
54
|
+
"@typescript-eslint/parser": "^8.46.0",
|
55
|
+
"@vitest/coverage-v8": "^3.2.4",
|
56
|
+
"dotenv": "^17.2.3",
|
57
|
+
"eslint": "^9.37.0",
|
58
|
+
"eslint-config-prettier": "^10.1.8",
|
59
|
+
"eslint-plugin-prettier": "^5.5.4",
|
60
|
+
"eslint-plugin-react": "^7.37.5",
|
61
|
+
"eslint-plugin-react-hooks": "^6.1.1",
|
62
|
+
"happy-dom": "^19.0.2",
|
63
|
+
"prettier": "^3.6.2",
|
64
|
+
"typescript": "^5.9.3",
|
65
|
+
"vite": "^7.1.9",
|
66
|
+
"vitest": "^3.2.4"
|
67
|
+
},
|
68
|
+
"repository": {
|
69
|
+
"type": "git",
|
70
|
+
"url": "https://github.com/johnqh/mail_box_indexer_client.git"
|
71
|
+
}
|
72
|
+
}
|