@0xobelisk/sui-client 1.0.8 → 1.0.9
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/dubhe.d.ts +28 -8
- package/dist/index.js +112 -31
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +110 -29
- package/dist/index.mjs.map +1 -1
- package/dist/libs/suiIndexerClient/index.d.ts +29 -31
- package/dist/libs/suiIndexerClient/utils.d.ts +1 -0
- package/package.json +1 -1
- package/src/dubhe.ts +78 -14
- package/src/libs/suiIndexerClient/index.ts +74 -51
- package/src/libs/suiIndexerClient/utils.ts +23 -0
|
@@ -3,23 +3,17 @@ export interface OrderDirection {
|
|
|
3
3
|
ASC: 'ASC';
|
|
4
4
|
DESC: 'DESC';
|
|
5
5
|
}
|
|
6
|
-
export interface OrderBy {
|
|
7
|
-
field: string;
|
|
8
|
-
direction: OrderDirection['ASC'] | OrderDirection['DESC'];
|
|
9
|
-
}
|
|
10
6
|
export interface PageInfo {
|
|
11
7
|
hasNextPage: boolean;
|
|
12
|
-
hasPreviousPage: boolean;
|
|
13
|
-
startCursor?: string;
|
|
14
8
|
endCursor?: string;
|
|
15
9
|
}
|
|
16
|
-
export interface
|
|
10
|
+
export interface IndexerTransaction {
|
|
17
11
|
id: number;
|
|
18
12
|
checkpoint: number;
|
|
19
13
|
digest: string;
|
|
20
14
|
created_at: string;
|
|
21
15
|
}
|
|
22
|
-
export interface
|
|
16
|
+
export interface IndexerSchema {
|
|
23
17
|
id: number;
|
|
24
18
|
name: string;
|
|
25
19
|
key1?: string;
|
|
@@ -31,7 +25,7 @@ export interface Schema {
|
|
|
31
25
|
created_at: string;
|
|
32
26
|
updated_at: string;
|
|
33
27
|
}
|
|
34
|
-
export interface
|
|
28
|
+
export interface IndexerEvent {
|
|
35
29
|
id: number;
|
|
36
30
|
checkpoint: string;
|
|
37
31
|
digest: string;
|
|
@@ -45,6 +39,17 @@ export interface ConnectionResponse<T> {
|
|
|
45
39
|
node: T;
|
|
46
40
|
}>;
|
|
47
41
|
pageInfo: PageInfo;
|
|
42
|
+
totalCount: number;
|
|
43
|
+
}
|
|
44
|
+
export interface StorageResponse<T> {
|
|
45
|
+
data: T[];
|
|
46
|
+
value: any[];
|
|
47
|
+
pageInfo: PageInfo;
|
|
48
|
+
totalCount: number;
|
|
49
|
+
}
|
|
50
|
+
export interface StorageItemResponse<T> {
|
|
51
|
+
data: T;
|
|
52
|
+
value: any;
|
|
48
53
|
}
|
|
49
54
|
export declare class SuiIndexerClient {
|
|
50
55
|
private http;
|
|
@@ -53,43 +58,36 @@ export declare class SuiIndexerClient {
|
|
|
53
58
|
getTransactions(params?: {
|
|
54
59
|
first?: number;
|
|
55
60
|
after?: string;
|
|
56
|
-
last?: number;
|
|
57
|
-
before?: string;
|
|
58
61
|
checkpoint?: number;
|
|
59
|
-
orderBy?:
|
|
60
|
-
|
|
61
|
-
}): Promise<ConnectionResponse<Transaction>>;
|
|
62
|
+
orderBy?: string[];
|
|
63
|
+
}): Promise<ConnectionResponse<IndexerTransaction>>;
|
|
62
64
|
getSchemas(params?: {
|
|
63
65
|
first?: number;
|
|
64
66
|
after?: string;
|
|
65
|
-
last?: number;
|
|
66
|
-
before?: string;
|
|
67
67
|
name?: string;
|
|
68
68
|
key1?: string;
|
|
69
69
|
key2?: string;
|
|
70
|
-
orderBy?:
|
|
71
|
-
|
|
72
|
-
}): Promise<ConnectionResponse<Schema>>;
|
|
70
|
+
orderBy?: string[];
|
|
71
|
+
}): Promise<ConnectionResponse<IndexerSchema>>;
|
|
73
72
|
getEvents(params?: {
|
|
74
73
|
first?: number;
|
|
75
74
|
after?: string;
|
|
76
|
-
last?: number;
|
|
77
|
-
before?: string;
|
|
78
75
|
name?: string;
|
|
79
76
|
checkpoint?: string;
|
|
80
|
-
orderBy?:
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
name: string;
|
|
77
|
+
orderBy?: string[];
|
|
78
|
+
}): Promise<ConnectionResponse<IndexerEvent>>;
|
|
79
|
+
getStorage({ name, key1, key2, first, after, orderBy, }: {
|
|
80
|
+
name?: string;
|
|
85
81
|
key1?: string;
|
|
86
82
|
key2?: string;
|
|
87
83
|
first?: number;
|
|
88
84
|
after?: string;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
85
|
+
orderBy?: string[];
|
|
86
|
+
}): Promise<StorageResponse<IndexerSchema>>;
|
|
87
|
+
getStorageItem({ name, key1, key2, }: {
|
|
88
|
+
name: string;
|
|
89
|
+
key1?: string;
|
|
90
|
+
key2?: string;
|
|
91
|
+
}): Promise<StorageItemResponse<IndexerSchema> | undefined>;
|
|
94
92
|
subscribe(names: string[], handleData: (data: any) => void): Promise<WebSocket>;
|
|
95
93
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const parseValue: (value: unknown) => unknown;
|
package/package.json
CHANGED
package/src/dubhe.ts
CHANGED
|
@@ -50,9 +50,12 @@ import { bcs, fromHEX, toHEX } from '@mysten/bcs';
|
|
|
50
50
|
import { ContractDataParsingError } from './errors';
|
|
51
51
|
import {
|
|
52
52
|
ConnectionResponse,
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
IndexerTransaction,
|
|
54
|
+
IndexerEvent,
|
|
55
|
+
IndexerSchema,
|
|
55
56
|
SuiIndexerClient,
|
|
57
|
+
StorageResponse,
|
|
58
|
+
StorageItemResponse,
|
|
56
59
|
} from './libs/suiIndexerClient';
|
|
57
60
|
import { Http } from './libs/http';
|
|
58
61
|
|
|
@@ -1109,40 +1112,101 @@ export class Dubhe {
|
|
|
1109
1112
|
});
|
|
1110
1113
|
}
|
|
1111
1114
|
|
|
1115
|
+
async getTransactions({
|
|
1116
|
+
first,
|
|
1117
|
+
after,
|
|
1118
|
+
orderBy,
|
|
1119
|
+
}: {
|
|
1120
|
+
first?: number;
|
|
1121
|
+
after?: string;
|
|
1122
|
+
orderBy?: string[];
|
|
1123
|
+
}): Promise<ConnectionResponse<IndexerTransaction>> {
|
|
1124
|
+
return await this.suiIndexerClient.getTransactions({
|
|
1125
|
+
first,
|
|
1126
|
+
after,
|
|
1127
|
+
orderBy,
|
|
1128
|
+
});
|
|
1129
|
+
}
|
|
1130
|
+
|
|
1131
|
+
async getEvents({
|
|
1132
|
+
first,
|
|
1133
|
+
after,
|
|
1134
|
+
orderBy,
|
|
1135
|
+
}: {
|
|
1136
|
+
first?: number;
|
|
1137
|
+
after?: string;
|
|
1138
|
+
orderBy?: string[];
|
|
1139
|
+
}): Promise<ConnectionResponse<IndexerEvent>> {
|
|
1140
|
+
return await this.suiIndexerClient.getEvents({ first, after, orderBy });
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
async getSchemas({
|
|
1144
|
+
name,
|
|
1145
|
+
key1,
|
|
1146
|
+
key2,
|
|
1147
|
+
first,
|
|
1148
|
+
after,
|
|
1149
|
+
orderBy,
|
|
1150
|
+
}: {
|
|
1151
|
+
name?: string;
|
|
1152
|
+
key1?: string;
|
|
1153
|
+
key2?: string;
|
|
1154
|
+
first?: number;
|
|
1155
|
+
after?: string;
|
|
1156
|
+
orderBy?: string[];
|
|
1157
|
+
}): Promise<ConnectionResponse<IndexerSchema>> {
|
|
1158
|
+
return await this.suiIndexerClient.getSchemas({
|
|
1159
|
+
name,
|
|
1160
|
+
key1,
|
|
1161
|
+
key2,
|
|
1162
|
+
first,
|
|
1163
|
+
after,
|
|
1164
|
+
orderBy,
|
|
1165
|
+
});
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1112
1168
|
async getStorage({
|
|
1113
1169
|
name,
|
|
1114
1170
|
key1,
|
|
1115
1171
|
key2,
|
|
1116
1172
|
first,
|
|
1117
1173
|
after,
|
|
1118
|
-
last,
|
|
1119
|
-
before,
|
|
1120
1174
|
orderBy,
|
|
1121
|
-
distinct,
|
|
1122
1175
|
}: {
|
|
1123
|
-
name
|
|
1176
|
+
name?: string;
|
|
1124
1177
|
key1?: string;
|
|
1125
1178
|
key2?: string;
|
|
1126
1179
|
first?: number;
|
|
1127
1180
|
after?: string;
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
orderBy?: OrderBy;
|
|
1131
|
-
distinct?: boolean;
|
|
1132
|
-
}): Promise<ConnectionResponse<Schema>> {
|
|
1181
|
+
orderBy?: string[];
|
|
1182
|
+
}): Promise<StorageResponse<IndexerSchema>> {
|
|
1133
1183
|
return await this.suiIndexerClient.getStorage({
|
|
1134
1184
|
name,
|
|
1135
1185
|
key1,
|
|
1136
1186
|
key2,
|
|
1137
1187
|
first,
|
|
1138
1188
|
after,
|
|
1139
|
-
last,
|
|
1140
|
-
before,
|
|
1141
1189
|
orderBy,
|
|
1142
|
-
distinct,
|
|
1143
1190
|
});
|
|
1144
1191
|
}
|
|
1145
1192
|
|
|
1193
|
+
async getStorageItem({
|
|
1194
|
+
name,
|
|
1195
|
+
key1,
|
|
1196
|
+
key2,
|
|
1197
|
+
}: {
|
|
1198
|
+
name: string;
|
|
1199
|
+
key1?: string;
|
|
1200
|
+
key2?: string;
|
|
1201
|
+
}): Promise<StorageItemResponse<IndexerSchema> | undefined> {
|
|
1202
|
+
const response = await this.suiIndexerClient.getStorageItem({
|
|
1203
|
+
name,
|
|
1204
|
+
key1,
|
|
1205
|
+
key2,
|
|
1206
|
+
});
|
|
1207
|
+
return response;
|
|
1208
|
+
}
|
|
1209
|
+
|
|
1146
1210
|
async subscribe(
|
|
1147
1211
|
names: string[],
|
|
1148
1212
|
handleData: (data: any) => void
|
|
@@ -1,30 +1,29 @@
|
|
|
1
1
|
import { Http } from '../http';
|
|
2
|
+
import { parseValue } from './utils';
|
|
2
3
|
|
|
3
4
|
export interface OrderDirection {
|
|
4
5
|
ASC: 'ASC';
|
|
5
6
|
DESC: 'DESC';
|
|
6
7
|
}
|
|
7
8
|
|
|
8
|
-
export interface OrderBy {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
9
|
+
// export interface OrderBy {
|
|
10
|
+
// field: string;
|
|
11
|
+
// direction: OrderDirection['ASC'] | OrderDirection['DESC'];
|
|
12
|
+
// }
|
|
12
13
|
|
|
13
14
|
export interface PageInfo {
|
|
14
15
|
hasNextPage: boolean;
|
|
15
|
-
hasPreviousPage: boolean;
|
|
16
|
-
startCursor?: string;
|
|
17
16
|
endCursor?: string;
|
|
18
17
|
}
|
|
19
18
|
|
|
20
|
-
export interface
|
|
19
|
+
export interface IndexerTransaction {
|
|
21
20
|
id: number;
|
|
22
21
|
checkpoint: number;
|
|
23
22
|
digest: string;
|
|
24
23
|
created_at: string;
|
|
25
24
|
}
|
|
26
25
|
|
|
27
|
-
export interface
|
|
26
|
+
export interface IndexerSchema {
|
|
28
27
|
id: number;
|
|
29
28
|
name: string;
|
|
30
29
|
key1?: string;
|
|
@@ -37,7 +36,7 @@ export interface Schema {
|
|
|
37
36
|
updated_at: string;
|
|
38
37
|
}
|
|
39
38
|
|
|
40
|
-
export interface
|
|
39
|
+
export interface IndexerEvent {
|
|
41
40
|
id: number;
|
|
42
41
|
checkpoint: string;
|
|
43
42
|
digest: string;
|
|
@@ -52,6 +51,19 @@ export interface ConnectionResponse<T> {
|
|
|
52
51
|
node: T;
|
|
53
52
|
}>;
|
|
54
53
|
pageInfo: PageInfo;
|
|
54
|
+
totalCount: number;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export interface StorageResponse<T> {
|
|
58
|
+
data: T[];
|
|
59
|
+
value: any[];
|
|
60
|
+
pageInfo: PageInfo;
|
|
61
|
+
totalCount: number;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface StorageItemResponse<T> {
|
|
65
|
+
data: T;
|
|
66
|
+
value: any;
|
|
55
67
|
}
|
|
56
68
|
|
|
57
69
|
export class SuiIndexerClient {
|
|
@@ -68,15 +80,12 @@ export class SuiIndexerClient {
|
|
|
68
80
|
async getTransactions(params?: {
|
|
69
81
|
first?: number;
|
|
70
82
|
after?: string;
|
|
71
|
-
last?: number;
|
|
72
|
-
before?: string;
|
|
73
83
|
checkpoint?: number;
|
|
74
|
-
orderBy?:
|
|
75
|
-
distinct?: boolean;
|
|
84
|
+
orderBy?: string[];
|
|
76
85
|
}) {
|
|
77
86
|
const query = `
|
|
78
|
-
query GetTransactions($first: Int, $after: String, $
|
|
79
|
-
transactions(first: $first, after: $after,
|
|
87
|
+
query GetTransactions($first: Int, $after: String, $checkpoint: Int, $orderBy: [TransactionOrderField!]) {
|
|
88
|
+
transactions(first: $first, after: $after, checkpoint: $checkpoint, orderBy: $orderBy) {
|
|
80
89
|
edges {
|
|
81
90
|
cursor
|
|
82
91
|
node {
|
|
@@ -88,16 +97,15 @@ export class SuiIndexerClient {
|
|
|
88
97
|
}
|
|
89
98
|
pageInfo {
|
|
90
99
|
hasNextPage
|
|
91
|
-
hasPreviousPage
|
|
92
|
-
startCursor
|
|
93
100
|
endCursor
|
|
94
101
|
}
|
|
102
|
+
totalCount
|
|
95
103
|
}
|
|
96
104
|
}
|
|
97
105
|
`;
|
|
98
106
|
|
|
99
107
|
const response = await this.fetchGraphql<{
|
|
100
|
-
transactions: ConnectionResponse<
|
|
108
|
+
transactions: ConnectionResponse<IndexerTransaction>;
|
|
101
109
|
}>(query, params);
|
|
102
110
|
return response.transactions;
|
|
103
111
|
}
|
|
@@ -105,17 +113,14 @@ export class SuiIndexerClient {
|
|
|
105
113
|
async getSchemas(params?: {
|
|
106
114
|
first?: number;
|
|
107
115
|
after?: string;
|
|
108
|
-
last?: number;
|
|
109
|
-
before?: string;
|
|
110
116
|
name?: string;
|
|
111
117
|
key1?: string;
|
|
112
118
|
key2?: string;
|
|
113
|
-
orderBy?:
|
|
114
|
-
|
|
115
|
-
}): Promise<ConnectionResponse<Schema>> {
|
|
119
|
+
orderBy?: string[];
|
|
120
|
+
}): Promise<ConnectionResponse<IndexerSchema>> {
|
|
116
121
|
const query = `
|
|
117
|
-
query GetSchemas($first: Int, $after: String, $
|
|
118
|
-
schemas(first: $first, after: $after,
|
|
122
|
+
query GetSchemas($first: Int, $after: String, $name: String, $key1: String, $key2: String, $orderBy: [SchemaOrderField!]) {
|
|
123
|
+
schemas(first: $first, after: $after, name: $name, key1: $key1, key2: $key2, orderBy: $orderBy) {
|
|
119
124
|
edges {
|
|
120
125
|
cursor
|
|
121
126
|
node {
|
|
@@ -133,16 +138,15 @@ export class SuiIndexerClient {
|
|
|
133
138
|
}
|
|
134
139
|
pageInfo {
|
|
135
140
|
hasNextPage
|
|
136
|
-
hasPreviousPage
|
|
137
|
-
startCursor
|
|
138
141
|
endCursor
|
|
139
142
|
}
|
|
143
|
+
totalCount
|
|
140
144
|
}
|
|
141
145
|
}
|
|
142
146
|
`;
|
|
143
147
|
|
|
144
148
|
const response = await this.fetchGraphql<{
|
|
145
|
-
schemas: ConnectionResponse<
|
|
149
|
+
schemas: ConnectionResponse<IndexerSchema>;
|
|
146
150
|
}>(query, params);
|
|
147
151
|
return response.schemas;
|
|
148
152
|
}
|
|
@@ -150,16 +154,13 @@ export class SuiIndexerClient {
|
|
|
150
154
|
async getEvents(params?: {
|
|
151
155
|
first?: number;
|
|
152
156
|
after?: string;
|
|
153
|
-
last?: number;
|
|
154
|
-
before?: string;
|
|
155
157
|
name?: string;
|
|
156
158
|
checkpoint?: string;
|
|
157
|
-
orderBy?:
|
|
158
|
-
|
|
159
|
-
}) {
|
|
159
|
+
orderBy?: string[];
|
|
160
|
+
}): Promise<ConnectionResponse<IndexerEvent>> {
|
|
160
161
|
const query = `
|
|
161
|
-
query GetEvents($first: Int, $after: String, $
|
|
162
|
-
events(first: $first, after: $after,
|
|
162
|
+
query GetEvents($first: Int, $after: String, $name: String, $checkpoint: String, $orderBy: [EventOrderField!]) {
|
|
163
|
+
events(first: $first, after: $after, name: $name, checkpoint: $checkpoint, orderBy: $orderBy) {
|
|
163
164
|
edges {
|
|
164
165
|
cursor
|
|
165
166
|
node {
|
|
@@ -173,16 +174,15 @@ export class SuiIndexerClient {
|
|
|
173
174
|
}
|
|
174
175
|
pageInfo {
|
|
175
176
|
hasNextPage
|
|
176
|
-
hasPreviousPage
|
|
177
|
-
startCursor
|
|
178
177
|
endCursor
|
|
179
178
|
}
|
|
179
|
+
totalCount
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
182
|
`;
|
|
183
183
|
|
|
184
184
|
const response = await this.fetchGraphql<{
|
|
185
|
-
events: ConnectionResponse<
|
|
185
|
+
events: ConnectionResponse<IndexerEvent>;
|
|
186
186
|
}>(query, params);
|
|
187
187
|
return response.events;
|
|
188
188
|
}
|
|
@@ -193,34 +193,57 @@ export class SuiIndexerClient {
|
|
|
193
193
|
key2,
|
|
194
194
|
first,
|
|
195
195
|
after,
|
|
196
|
-
last,
|
|
197
|
-
before,
|
|
198
196
|
orderBy,
|
|
199
|
-
distinct,
|
|
200
197
|
}: {
|
|
201
|
-
name
|
|
198
|
+
name?: string;
|
|
202
199
|
key1?: string;
|
|
203
200
|
key2?: string;
|
|
204
201
|
first?: number;
|
|
205
202
|
after?: string;
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
orderBy?: OrderBy;
|
|
209
|
-
distinct?: boolean;
|
|
210
|
-
}): Promise<ConnectionResponse<Schema>> {
|
|
203
|
+
orderBy?: string[];
|
|
204
|
+
}): Promise<StorageResponse<IndexerSchema>> {
|
|
211
205
|
const schemas = await this.getSchemas({
|
|
212
206
|
name,
|
|
213
207
|
key1,
|
|
214
208
|
key2,
|
|
215
209
|
first,
|
|
216
210
|
after,
|
|
217
|
-
last,
|
|
218
|
-
before,
|
|
219
211
|
orderBy,
|
|
220
|
-
distinct,
|
|
221
212
|
});
|
|
213
|
+
const data = schemas.edges.map((edge) => edge.node);
|
|
214
|
+
const value = data.map((item) => parseValue(item.value));
|
|
215
|
+
return {
|
|
216
|
+
data,
|
|
217
|
+
value,
|
|
218
|
+
pageInfo: schemas.pageInfo,
|
|
219
|
+
totalCount: schemas.totalCount,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
222
|
|
|
223
|
-
|
|
223
|
+
async getStorageItem({
|
|
224
|
+
name,
|
|
225
|
+
key1,
|
|
226
|
+
key2,
|
|
227
|
+
}: {
|
|
228
|
+
name: string;
|
|
229
|
+
key1?: string;
|
|
230
|
+
key2?: string;
|
|
231
|
+
}): Promise<StorageItemResponse<IndexerSchema> | undefined> {
|
|
232
|
+
const schemas = await this.getSchemas({
|
|
233
|
+
name,
|
|
234
|
+
key1,
|
|
235
|
+
key2,
|
|
236
|
+
first: 1,
|
|
237
|
+
});
|
|
238
|
+
const data = schemas.edges[0]?.node;
|
|
239
|
+
if (!data) {
|
|
240
|
+
return undefined;
|
|
241
|
+
}
|
|
242
|
+
const value = parseValue(data.value);
|
|
243
|
+
return {
|
|
244
|
+
data,
|
|
245
|
+
value,
|
|
246
|
+
};
|
|
224
247
|
}
|
|
225
248
|
|
|
226
249
|
async subscribe(
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export const parseValue = (value: unknown): unknown => {
|
|
2
|
+
if (typeof value !== 'string') {
|
|
3
|
+
return value;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
try {
|
|
7
|
+
const parsed = JSON.parse(value);
|
|
8
|
+
|
|
9
|
+
if (typeof parsed === 'object' && parsed !== null) {
|
|
10
|
+
if ('variant' in parsed) {
|
|
11
|
+
return parsed.variant;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
if ('fields' in parsed) {
|
|
15
|
+
return parsed.fields;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return parsed;
|
|
20
|
+
} catch (error) {
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
};
|