wowok 1.0.3 → 1.0.5
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/LICENSE +201 -0
- package/README.md +17 -0
- package/dist/demand.js +91 -30
- package/dist/guard.js +206 -80
- package/dist/machine.js +130 -65
- package/dist/passport.js +14 -5
- package/dist/permission.js +117 -49
- package/dist/progress.js +74 -30
- package/dist/protocol.js +85 -53
- package/dist/repository.js +154 -50
- package/dist/reward.js +134 -28
- package/dist/service.js +457 -161
- package/dist/util.js +25 -1
- package/dist/vote.js +134 -56
- package/package.json +11 -7
- package/src/demand.ts +96 -52
- package/src/graphql.ts +103 -0
- package/src/guard.ts +268 -114
- package/src/index.ts +12 -0
- package/src/machine.ts +137 -86
- package/src/passport.ts +67 -30
- package/src/permission.ts +115 -59
- package/src/progress.ts +149 -63
- package/src/protocol.ts +94 -40
- package/src/repository.ts +152 -79
- package/src/reward.ts +134 -45
- package/src/service.ts +437 -209
- package/src/util.ts +28 -1
- package/src/vote.ts +141 -74
package/src/guard.ts
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { SuiObjectResponse, SuiObjectDataOptions, SuiParsedData } from '@mysten/sui.js/client';
|
|
2
2
|
import { TransactionBlock, Inputs, type TransactionResult } from '@mysten/sui.js/transactions';
|
|
3
3
|
import { BCS, getSuiMoveConfig, toHEX, fromHEX, BcsReader } from '@mysten/bcs';
|
|
4
|
-
import { PROTOCOL, GuardAddress, FnCallType, Data_Type, MODULES,
|
|
4
|
+
import { PROTOCOL, GuardAddress, FnCallType, Data_Type, MODULES, ContextType, OBJECTS_TYPE,
|
|
5
|
+
OBJECTS_TYPE_PREFIX, Query_Param, IsValidDesription, ValueType, OperatorType} from './protocol';
|
|
5
6
|
import { concatenate, array_equal, ulebDecode, array_unique } from './util';
|
|
6
|
-
import {
|
|
7
|
+
import { stringToUint8Array } from './util';
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
export const MAX_SENSE_COUNT = 16;
|
|
7
11
|
|
|
8
12
|
export enum Guard_Sense_Binder {
|
|
9
|
-
AND =
|
|
10
|
-
OR =
|
|
13
|
+
AND = 0, // first sense of guard always AND; for combining other guards
|
|
14
|
+
OR = 1,
|
|
11
15
|
}
|
|
12
16
|
|
|
13
17
|
export type Guard_Sense = {
|
|
@@ -21,15 +25,23 @@ export type Guard_Creation = {
|
|
|
21
25
|
senses: Guard_Sense[];
|
|
22
26
|
}
|
|
23
27
|
|
|
24
|
-
export function launch(txb:TransactionBlock, creation:Guard_Creation) : GuardAddress {
|
|
25
|
-
|
|
28
|
+
export function launch(txb:TransactionBlock, creation:Guard_Creation) : GuardAddress | boolean {
|
|
29
|
+
if (!IsValidDesription(creation.description)) return false;
|
|
30
|
+
if (!creation.senses) return false;
|
|
31
|
+
let bValid = true;
|
|
32
|
+
creation.senses.forEach((v) => {
|
|
33
|
+
if (!v.input || v.input.length == 0) bValid = false;
|
|
34
|
+
})
|
|
35
|
+
if (!bValid) return false;
|
|
36
|
+
|
|
37
|
+
let guard = txb.moveCall({
|
|
26
38
|
target: PROTOCOL.GuardFn('new') as FnCallType,
|
|
27
|
-
arguments: [
|
|
39
|
+
arguments: [txb.pure(creation.description , BCS.STRING)],
|
|
28
40
|
});
|
|
29
|
-
creation
|
|
41
|
+
creation.senses.forEach((sense: Guard_Sense) => {
|
|
30
42
|
txb.moveCall({
|
|
31
43
|
target: PROTOCOL.GuardFn('sense_add') as FnCallType,
|
|
32
|
-
arguments:[
|
|
44
|
+
arguments:[guard, txb.pure([].slice.call(sense.input)),
|
|
33
45
|
txb.pure(sense.notAfterSense, BCS.BOOL),
|
|
34
46
|
txb.pure(sense.binder, BCS.U8),
|
|
35
47
|
]
|
|
@@ -41,21 +53,21 @@ export function launch(txb:TransactionBlock, creation:Guard_Creation) : GuardAdd
|
|
|
41
53
|
});
|
|
42
54
|
}
|
|
43
55
|
|
|
44
|
-
export function signer_guard(txb:TransactionBlock) {
|
|
45
|
-
txb.moveCall({
|
|
56
|
+
export function signer_guard(txb:TransactionBlock) : GuardAddress | boolean {
|
|
57
|
+
return txb.moveCall({
|
|
46
58
|
target: PROTOCOL.GuardFn('signer_guard') as FnCallType,
|
|
47
59
|
arguments: []
|
|
48
|
-
});
|
|
60
|
+
});
|
|
49
61
|
}
|
|
50
62
|
|
|
51
|
-
export function
|
|
52
|
-
txb.moveCall({
|
|
53
|
-
target: PROTOCOL.GuardFn('
|
|
54
|
-
arguments:[
|
|
55
|
-
})
|
|
63
|
+
export function everyone_guard(txb:TransactionBlock) : GuardAddress | boolean {
|
|
64
|
+
return txb.moveCall({
|
|
65
|
+
target: PROTOCOL.GuardFn('everyone_guard') as FnCallType,
|
|
66
|
+
arguments: []
|
|
67
|
+
});
|
|
56
68
|
}
|
|
57
69
|
|
|
58
|
-
export type
|
|
70
|
+
export type QUERIES_Type = {
|
|
59
71
|
module:MODULES,
|
|
60
72
|
name:string,
|
|
61
73
|
cmd:number,
|
|
@@ -63,23 +75,132 @@ export type Sense_Cmd_Type = {
|
|
|
63
75
|
result:Data_Type
|
|
64
76
|
};
|
|
65
77
|
|
|
66
|
-
export const
|
|
67
|
-
|
|
68
|
-
[MODULES.permission, '
|
|
69
|
-
[MODULES.permission, '
|
|
70
|
-
[MODULES.permission, '
|
|
71
|
-
[MODULES.permission, '
|
|
72
|
-
[MODULES.
|
|
73
|
-
[MODULES.
|
|
74
|
-
[MODULES.
|
|
75
|
-
[MODULES.
|
|
76
|
-
[MODULES.
|
|
77
|
-
|
|
78
|
-
[MODULES.repository, '
|
|
79
|
-
[MODULES.repository, '
|
|
80
|
-
[MODULES.repository, '
|
|
81
|
-
[MODULES.repository, '
|
|
82
|
-
[MODULES.repository, '
|
|
78
|
+
export const QUERIES:any = [
|
|
79
|
+
// module, 'name', 'id', [input], output
|
|
80
|
+
[MODULES.permission, 'builder', 1, [], ValueType.TYPE_STATIC_address],
|
|
81
|
+
[MODULES.permission, 'is_admin', 2, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_bool],
|
|
82
|
+
[MODULES.permission, 'has_rights', 3, [ValueType.TYPE_STATIC_address, ValueType.TYPE_STATIC_u64], ValueType.TYPE_STATIC_bool],
|
|
83
|
+
[MODULES.permission, 'contains_address', 4, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_bool],
|
|
84
|
+
[MODULES.permission, 'contains_index', 5, [ValueType.TYPE_STATIC_address, ValueType.TYPE_STATIC_u64], ValueType.TYPE_STATIC_bool],
|
|
85
|
+
[MODULES.permission, 'contains_guard', 6, [ValueType.TYPE_STATIC_address, ValueType.TYPE_STATIC_u64], ValueType.TYPE_STATIC_bool],
|
|
86
|
+
[MODULES.permission, 'contains_guard', 7, [ValueType.TYPE_STATIC_address, ValueType.TYPE_STATIC_u64], ValueType.TYPE_STATIC_address],
|
|
87
|
+
[MODULES.permission, 'entity_count', 8, [], ValueType.TYPE_STATIC_u64],
|
|
88
|
+
[MODULES.permission, 'admin_count', 9, [], ValueType.TYPE_STATIC_u64],
|
|
89
|
+
|
|
90
|
+
[MODULES.repository, 'permission', 1, [], ValueType.TYPE_STATIC_address],
|
|
91
|
+
[MODULES.repository, 'policy_contains', 2, [ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_bool],
|
|
92
|
+
[MODULES.repository, 'policy_has_permission_index', 3, [ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_bool],
|
|
93
|
+
[MODULES.repository, 'policy_permission_index', 4, [ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_u64],
|
|
94
|
+
[MODULES.repository, 'policy_value_type', 5, [ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_u8],
|
|
95
|
+
[MODULES.repository, 'contains_id', 6, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_bool],
|
|
96
|
+
[MODULES.repository, 'contains_value', 7, [ValueType.TYPE_STATIC_address, ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_bool],
|
|
97
|
+
[MODULES.repository, 'value_without_type', 8, [ValueType.TYPE_STATIC_address, ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_vec_u8],
|
|
98
|
+
[MODULES.repository, 'value', 9, [ValueType.TYPE_STATIC_address, ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_vec_u8],
|
|
99
|
+
[MODULES.repository, 'type', 10, [], ValueType.TYPE_STATIC_u8],
|
|
100
|
+
[MODULES.repository, 'policy_mode', 11, [], ValueType.TYPE_STATIC_u8],
|
|
101
|
+
|
|
102
|
+
[MODULES.machine, 'permission', 1, [], ValueType.TYPE_STATIC_address],
|
|
103
|
+
[MODULES.machine, 'has_paused', 2, [], ValueType.TYPE_STATIC_bool],
|
|
104
|
+
[MODULES.machine, 'has_published', 3, [], ValueType.TYPE_STATIC_bool],
|
|
105
|
+
[MODULES.machine, 'consensus_repositories_contains', 5, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_bool],
|
|
106
|
+
[MODULES.machine, 'has_endpoint', 6, [], ValueType.TYPE_STATIC_bool],
|
|
107
|
+
[MODULES.machine, 'endpoint', 7, [], ValueType.TYPE_STATIC_vec_u8],
|
|
108
|
+
|
|
109
|
+
[MODULES.progress, 'machine', 1, [], ValueType.TYPE_STATIC_address],
|
|
110
|
+
[MODULES.progress, 'current', 2, [], ValueType.TYPE_STATIC_vec_u8],
|
|
111
|
+
[MODULES.progress, 'has_parent', 3, [], ValueType.TYPE_STATIC_bool],
|
|
112
|
+
[MODULES.progress, 'parent', 4, [], ValueType.TYPE_STATIC_address],
|
|
113
|
+
[MODULES.progress, 'has_task', 5, [], ValueType.TYPE_STATIC_bool],
|
|
114
|
+
[MODULES.progress, 'task', 6, [], ValueType.TYPE_STATIC_address],
|
|
115
|
+
[MODULES.progress, 'has_namedOperator', 7, [ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_bool],
|
|
116
|
+
[MODULES.progress, 'namedOperator_contains', 8, [ValueType.TYPE_STATIC_vec_u8, ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_bool],
|
|
117
|
+
[MODULES.progress, 'has_context_repository', 9, [], ValueType.TYPE_STATIC_bool],
|
|
118
|
+
[MODULES.progress, 'context_repository', 10, [], ValueType.TYPE_STATIC_address],
|
|
119
|
+
|
|
120
|
+
[MODULES.demand, 'permission', 1, [], ValueType.TYPE_STATIC_address],
|
|
121
|
+
[MODULES.demand, 'has_time_expire', 2, [], ValueType.TYPE_STATIC_bool],
|
|
122
|
+
[MODULES.demand, 'time_expire', 3, [], ValueType.TYPE_STATIC_u64],
|
|
123
|
+
[MODULES.demand, 'earnest_count', 4, [], ValueType.TYPE_STATIC_u64],
|
|
124
|
+
[MODULES.demand, 'has_guard', 5, [], ValueType.TYPE_STATIC_bool],
|
|
125
|
+
[MODULES.demand, 'guard', 6, [], ValueType.TYPE_STATIC_address],
|
|
126
|
+
[MODULES.demand, 'has_yes', 7, [], ValueType.TYPE_STATIC_bool],
|
|
127
|
+
[MODULES.demand, 'yes', 8, [], ValueType.TYPE_STATIC_address],
|
|
128
|
+
[MODULES.demand, 'presenters_count', 9, [], ValueType.TYPE_STATIC_u64],
|
|
129
|
+
[MODULES.demand, 'has_presenter', 10, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_bool],
|
|
130
|
+
[MODULES.demand, 'persenter', 11, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_address],
|
|
131
|
+
|
|
132
|
+
[MODULES.order, 'amount', 1, [], ValueType.TYPE_STATIC_u64],
|
|
133
|
+
[MODULES.order, 'payer', 2, [], ValueType.TYPE_STATIC_address],
|
|
134
|
+
[MODULES.order, 'service', 3, [], ValueType.TYPE_STATIC_address],
|
|
135
|
+
[MODULES.order, 'has_progress', 4, [], ValueType.TYPE_STATIC_bool],
|
|
136
|
+
[MODULES.order, 'progress', 5, [], ValueType.TYPE_STATIC_address],
|
|
137
|
+
[MODULES.order, 'has_requred_info', 6, [], ValueType.TYPE_STATIC_bool],
|
|
138
|
+
[MODULES.order, 'requred_info_service_pubkey', 7, [], ValueType.TYPE_STATIC_vec_u8],
|
|
139
|
+
[MODULES.order, 'requred_info_customer_pubkey', 8, [], ValueType.TYPE_STATIC_vec_u8],
|
|
140
|
+
[MODULES.order, 'requred_info_info', 9, [], ValueType.TYPE_STATIC_vec_vec_u8],
|
|
141
|
+
[MODULES.order, 'has_discount', 10, [], ValueType.TYPE_STATIC_bool],
|
|
142
|
+
[MODULES.order, 'discount', 11, [], ValueType.TYPE_STATIC_address],
|
|
143
|
+
[MODULES.order, 'balance', 12, [], ValueType.TYPE_STATIC_u64],
|
|
144
|
+
[MODULES.order, 'bRefunded', 13, [], ValueType.TYPE_STATIC_u8],
|
|
145
|
+
[MODULES.order, 'bWithdrawed', 14, [], ValueType.TYPE_STATIC_u8],
|
|
146
|
+
|
|
147
|
+
[MODULES.service, 'permission', 1, [], ValueType.TYPE_STATIC_address],
|
|
148
|
+
[MODULES.service, 'payee', 2, [], ValueType.TYPE_STATIC_address],
|
|
149
|
+
[MODULES.service, 'has_buy_guard', 3, [], ValueType.TYPE_STATIC_bool],
|
|
150
|
+
[MODULES.service, 'buy_guard', 4, [], ValueType.TYPE_STATIC_address],
|
|
151
|
+
[MODULES.service, 'repository_contains', 5, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_bool],
|
|
152
|
+
[MODULES.service, 'has_withdraw_guard', 6, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_bool],
|
|
153
|
+
[MODULES.service, 'withdraw_guard_percent', 7, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_u64],
|
|
154
|
+
[MODULES.service, 'has_refund_guard', 8, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_bool],
|
|
155
|
+
[MODULES.service, 'refund_guard_percent', 9, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_u64],
|
|
156
|
+
[MODULES.service, 'has_sale', 10, [ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_bool],
|
|
157
|
+
[MODULES.service, 'sale_price', 11, [ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_u64],
|
|
158
|
+
[MODULES.service, 'sale_stock', 12, [ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_u64],
|
|
159
|
+
[MODULES.service, 'has_machine', 13, [], ValueType.TYPE_STATIC_bool],
|
|
160
|
+
[MODULES.service, 'machine', 14, [], ValueType.TYPE_STATIC_address],
|
|
161
|
+
[MODULES.service, 'bPaused', 15, [], ValueType.TYPE_STATIC_bool],
|
|
162
|
+
[MODULES.service, 'bPublished', 16, [], ValueType.TYPE_STATIC_bool],
|
|
163
|
+
[MODULES.service, 'has_required', 17, [], ValueType.TYPE_STATIC_bool],
|
|
164
|
+
[MODULES.service, 'requrired_pubkey', 18, [], ValueType.TYPE_STATIC_vec_u8],
|
|
165
|
+
[MODULES.service, 'requrired_info', 19, [], ValueType.TYPE_STATIC_vec_vec_u8],
|
|
166
|
+
|
|
167
|
+
[MODULES.reward, 'permission', 1, [], ValueType.TYPE_STATIC_address],
|
|
168
|
+
[MODULES.reward, 'rewards_count_remain', 2, [], ValueType.TYPE_STATIC_u64],
|
|
169
|
+
[MODULES.reward, 'rewards_count_supplied', 3, [], ValueType.TYPE_STATIC_u64],
|
|
170
|
+
[MODULES.reward, 'guard_count', 4, [], ValueType.TYPE_STATIC_u64],
|
|
171
|
+
[MODULES.reward, 'has_guard', 5, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_bool],
|
|
172
|
+
[MODULES.reward, 'guard_portions', 6, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_u64],
|
|
173
|
+
[MODULES.reward, 'time_expire', 7, [], ValueType.TYPE_STATIC_u64],
|
|
174
|
+
[MODULES.reward, 'has_claimed', 8, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_bool],
|
|
175
|
+
[MODULES.reward, 'claimed', 9, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_u64],
|
|
176
|
+
[MODULES.reward, 'has_claimed_count', 10, [], ValueType.TYPE_STATIC_u64],
|
|
177
|
+
[MODULES.reward, 'is_sponsor', 11, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_bool],
|
|
178
|
+
[MODULES.reward, 'sponsor', 12, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_u64],
|
|
179
|
+
[MODULES.reward, 'sponsor_count', 13, [], ValueType.TYPE_STATIC_u64],
|
|
180
|
+
[MODULES.reward, 'bAllowRepeatClaim', 14, [], ValueType.TYPE_STATIC_bool],
|
|
181
|
+
|
|
182
|
+
[MODULES.vote, 'permission', 1, [], ValueType.TYPE_STATIC_address],
|
|
183
|
+
[MODULES.vote, 'bOptions_locked_for_voting', 2, [], ValueType.TYPE_STATIC_bool],
|
|
184
|
+
[MODULES.vote, 'bdeadline_locked', 3, [], ValueType.TYPE_STATIC_bool],
|
|
185
|
+
[MODULES.vote, 'bLockedGuard', 4, [], ValueType.TYPE_STATIC_bool],
|
|
186
|
+
[MODULES.vote, 'max_choice_count', 5, [], ValueType.TYPE_STATIC_u8],
|
|
187
|
+
[MODULES.vote, 'deadline', 6, [], ValueType.TYPE_STATIC_u64],
|
|
188
|
+
[MODULES.vote, 'has_reference', 7, [], ValueType.TYPE_STATIC_bool],
|
|
189
|
+
[MODULES.vote, 'reference', 8, [], ValueType.TYPE_STATIC_address],
|
|
190
|
+
[MODULES.vote, 'has_guard', 9, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_bool],
|
|
191
|
+
[MODULES.vote, 'guard', 10, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_u64],
|
|
192
|
+
[MODULES.vote, 'voted', 11, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_bool],
|
|
193
|
+
[MODULES.vote, 'voted_weight', 12, [ValueType.TYPE_STATIC_address], ValueType.TYPE_STATIC_u64],
|
|
194
|
+
[MODULES.vote, 'has_agree', 13, [ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_bool],
|
|
195
|
+
[MODULES.vote, 'agree_has_object', 14, [ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_bool],
|
|
196
|
+
[MODULES.vote, 'agree_object', 15, [ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_address],
|
|
197
|
+
[MODULES.vote, 'agree_count', 16, [ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_u64],
|
|
198
|
+
[MODULES.vote, 'agree_votes', 17, [ValueType.TYPE_STATIC_vec_u8], ValueType.TYPE_STATIC_u64],
|
|
199
|
+
[MODULES.vote, 'voted_count', 18, [], ValueType.TYPE_STATIC_u64],
|
|
200
|
+
[MODULES.vote, 'top1_name_by_count', 19, [], ValueType.TYPE_STATIC_vec_u8],
|
|
201
|
+
[MODULES.vote, 'top1_count', 20, [], ValueType.TYPE_STATIC_u64],
|
|
202
|
+
[MODULES.vote, 'top1_name_by_votes', 21, [], ValueType.TYPE_STATIC_vec_u8],
|
|
203
|
+
[MODULES.vote, 'top1_votes', 22, [], ValueType.TYPE_STATIC_u64],
|
|
83
204
|
]
|
|
84
205
|
|
|
85
206
|
export class SenseMaker {
|
|
@@ -88,46 +209,46 @@ export class SenseMaker {
|
|
|
88
209
|
|
|
89
210
|
constructor() { }
|
|
90
211
|
// serialize const & data
|
|
91
|
-
add_param(type:
|
|
212
|
+
add_param(type:ValueType | ContextType, param?:any) : boolean {
|
|
92
213
|
const bcs = new BCS(getSuiMoveConfig());
|
|
93
214
|
switch(type) {
|
|
94
|
-
case
|
|
215
|
+
case ValueType.TYPE_STATIC_address:
|
|
95
216
|
this.data.push(bcs.ser(BCS.U8, type).toBytes());
|
|
96
217
|
this.data.push(bcs.ser(BCS.ADDRESS, param).toBytes());
|
|
97
218
|
this.type_validator.push(type);
|
|
98
219
|
break;
|
|
99
|
-
case
|
|
220
|
+
case ValueType.TYPE_STATIC_bool:
|
|
100
221
|
this.data.push(bcs.ser(BCS.U8, type).toBytes());
|
|
101
222
|
this.data.push(bcs.ser(BCS.BOOL, param).toBytes());
|
|
102
223
|
this.type_validator.push(type);
|
|
103
224
|
break;
|
|
104
|
-
case
|
|
225
|
+
case ValueType.TYPE_STATIC_u8:
|
|
105
226
|
this.data.push(bcs.ser(BCS.U8, type).toBytes());
|
|
106
227
|
this.data.push(bcs.ser(BCS.U8, param).toBytes());
|
|
107
228
|
this.type_validator.push(type);
|
|
108
229
|
break;
|
|
109
|
-
case
|
|
230
|
+
case ValueType.TYPE_STATIC_u64:
|
|
110
231
|
this.data.push(bcs.ser(BCS.U8, type).toBytes());
|
|
111
232
|
this.data.push(bcs.ser(BCS.U64, param).toBytes());
|
|
112
233
|
this.type_validator.push(type);
|
|
113
234
|
break;
|
|
114
|
-
case
|
|
235
|
+
case ValueType.TYPE_STATIC_vec_u8:
|
|
115
236
|
this.data.push(bcs.ser(BCS.U8, type).toBytes());
|
|
116
|
-
this.data.push(bcs.ser(
|
|
237
|
+
this.data.push(bcs.ser(BCS.STRING, param).toBytes());
|
|
117
238
|
this.type_validator.push(type);
|
|
118
239
|
// this.data[this.data.length-1].forEach((item : number) => console.log(item))
|
|
119
240
|
break;
|
|
120
|
-
case
|
|
241
|
+
case ContextType.TYPE_CONTEXT_SIGNER:
|
|
121
242
|
this.data.push(bcs.ser(BCS.U8, type).toBytes());
|
|
122
|
-
this.type_validator.push(
|
|
243
|
+
this.type_validator.push(ValueType.TYPE_STATIC_address);
|
|
123
244
|
break;
|
|
124
|
-
case
|
|
245
|
+
case ContextType.TYPE_CONTEXT_CURRENT_CLOCK:
|
|
125
246
|
this.data.push(bcs.ser(BCS.U8, type).toBytes());
|
|
126
|
-
this.type_validator.push(
|
|
247
|
+
this.type_validator.push(ValueType.TYPE_STATIC_u64);
|
|
127
248
|
break;
|
|
128
|
-
case
|
|
249
|
+
case ContextType.TYPE_CONTEXT_CURRENT_PROGRESS:
|
|
129
250
|
this.data.push(bcs.ser(BCS.U8, type).toBytes());
|
|
130
|
-
this.type_validator.push(
|
|
251
|
+
this.type_validator.push(ValueType.TYPE_STATIC_address);
|
|
131
252
|
break;
|
|
132
253
|
default:
|
|
133
254
|
return false;
|
|
@@ -135,41 +256,52 @@ export class SenseMaker {
|
|
|
135
256
|
|
|
136
257
|
return true;
|
|
137
258
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
259
|
+
query_index(module:MODULES, query_name:string) : number {
|
|
260
|
+
for (let i = 0; i < QUERIES.length; i++) {
|
|
261
|
+
if (QUERIES[i][0] == module && QUERIES[i][1] == query_name) {
|
|
262
|
+
return i;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return -1;
|
|
266
|
+
}
|
|
267
|
+
// query_index: index(from 0) of array QUERIES
|
|
268
|
+
add_query(object_address:string, module:MODULES, query_name:string) : boolean {
|
|
269
|
+
let query_index = this.query_index(module, query_name);
|
|
270
|
+
if (!object_address || query_index == -1) { return false; }
|
|
271
|
+
|
|
272
|
+
let offset = this.type_validator.length - QUERIES[query_index][3].length;
|
|
141
273
|
if (offset < 0) {
|
|
142
274
|
return false;
|
|
143
275
|
}
|
|
144
276
|
|
|
145
277
|
let types = this.type_validator.slice(offset);
|
|
146
|
-
if (!array_equal(types,
|
|
278
|
+
if (!array_equal(types, QUERIES[query_index][3])) { // type validate
|
|
147
279
|
return false;
|
|
148
280
|
}
|
|
149
281
|
|
|
150
282
|
const bcs = new BCS(getSuiMoveConfig());
|
|
151
|
-
this.data.push(bcs.ser(BCS.U8,
|
|
283
|
+
this.data.push(bcs.ser(BCS.U8, OperatorType.TYPE_DYNAMIC_QUERY).toBytes()); // TYPE
|
|
152
284
|
this.data.push(bcs.ser(BCS.ADDRESS, object_address).toBytes()); // object address
|
|
153
|
-
this.data.push(bcs.ser(BCS.U8,
|
|
285
|
+
this.data.push(bcs.ser(BCS.U8, QUERIES[query_index][2]).toBytes()); // cmd
|
|
154
286
|
|
|
155
|
-
this.type_validator.splice(offset,
|
|
156
|
-
this.type_validator.push(
|
|
287
|
+
this.type_validator.splice(offset, QUERIES[query_index][3].length); // delete type stack
|
|
288
|
+
this.type_validator.push(QUERIES[query_index][4]); // add the return value type to type stack
|
|
157
289
|
// console.log(this.type_validator)
|
|
158
290
|
return true;
|
|
159
291
|
}
|
|
160
|
-
add_logic(type:
|
|
292
|
+
add_logic(type:OperatorType) : boolean {
|
|
161
293
|
switch (type) {
|
|
162
|
-
case
|
|
163
|
-
case
|
|
164
|
-
case
|
|
165
|
-
case
|
|
166
|
-
case
|
|
294
|
+
case OperatorType.TYPE_LOGIC_OPERATOR_U128_GREATER:
|
|
295
|
+
case OperatorType.TYPE_LOGIC_OPERATOR_U128_GREATER_EQUAL:
|
|
296
|
+
case OperatorType.TYPE_LOGIC_OPERATOR_U128_LESSER:
|
|
297
|
+
case OperatorType.TYPE_LOGIC_OPERATOR_U128_LESSER_EQUAL:
|
|
298
|
+
case OperatorType.TYPE_LOGIC_OPERATOR_U128_EQUAL:
|
|
167
299
|
if (this.type_validator.length < 2) { return false; }
|
|
168
300
|
if (!match_u128(this.type_validator[this.type_validator.length - 1])) { return false; }
|
|
169
301
|
if (!match_u128(this.type_validator[this.type_validator.length - 2])) { return false; }
|
|
170
302
|
break;
|
|
171
|
-
case
|
|
172
|
-
case
|
|
303
|
+
case OperatorType.TYPE_LOGIC_OPERATOR_EQUAL:
|
|
304
|
+
case OperatorType.TYPE_LOGIC_OPERATOR_HAS_SUBSTRING:
|
|
173
305
|
if (this.type_validator.length < 2) { return false; }
|
|
174
306
|
break;
|
|
175
307
|
default:
|
|
@@ -178,15 +310,16 @@ export class SenseMaker {
|
|
|
178
310
|
const bcs = new BCS(getSuiMoveConfig());
|
|
179
311
|
this.data.push(bcs.ser(BCS.U8, type).toBytes()); // TYPE
|
|
180
312
|
this.type_validator.splice(this.type_validator.length - 2); // delete type stack
|
|
181
|
-
this.type_validator.push(
|
|
313
|
+
this.type_validator.push(ValueType.TYPE_STATIC_bool); // add bool to type stack
|
|
182
314
|
return true;
|
|
183
315
|
}
|
|
184
316
|
|
|
185
|
-
make(bNotAfterSense:boolean, binder:Guard_Sense_Binder) :
|
|
317
|
+
make(bNotAfterSense:boolean = false, binder:Guard_Sense_Binder = Guard_Sense_Binder.AND) : boolean | Guard_Sense {
|
|
186
318
|
//console.log(this.type_validator);
|
|
187
319
|
//this.data.forEach((value:Uint8Array) => console.log(value));
|
|
188
|
-
if (this.type_validator.length != 1 || this.type_validator[0] !=
|
|
189
|
-
|
|
320
|
+
if (this.type_validator.length != 1 || this.type_validator[0] != ValueType.TYPE_STATIC_bool) {
|
|
321
|
+
// console.log(this.type_validator)
|
|
322
|
+
return false;
|
|
190
323
|
} // ERROR
|
|
191
324
|
|
|
192
325
|
let input = concatenate(Uint8Array, ...this.data) as Uint8Array;
|
|
@@ -195,71 +328,85 @@ export class SenseMaker {
|
|
|
195
328
|
}
|
|
196
329
|
}
|
|
197
330
|
|
|
198
|
-
function match_u128(type:
|
|
199
|
-
if (type ==
|
|
200
|
-
type ==
|
|
201
|
-
type ==
|
|
331
|
+
function match_u128(type:number) : boolean {
|
|
332
|
+
if (type == ValueType.TYPE_STATIC_u8 ||
|
|
333
|
+
type == ValueType.TYPE_STATIC_u64 ||
|
|
334
|
+
type == ValueType.TYPE_STATIC_u128 ) {
|
|
202
335
|
return true;
|
|
203
336
|
}
|
|
204
337
|
return false;
|
|
205
338
|
}
|
|
206
339
|
|
|
340
|
+
export function parse_graphql_senses(senses:any) : string[] {
|
|
341
|
+
let objects:string[] = [];
|
|
342
|
+
senses.forEach((s:any) => {
|
|
343
|
+
let res = parse_sense_bsc(Uint8Array.from(s.input.bytes));
|
|
344
|
+
if (res) {
|
|
345
|
+
objects = objects.concat(res as string[]);
|
|
346
|
+
}
|
|
347
|
+
});
|
|
348
|
+
return array_unique(objects);
|
|
349
|
+
}
|
|
350
|
+
|
|
207
351
|
// parse guard senses input bytes of a guard, return [objectids] for 'query_cmd'
|
|
208
|
-
export function parse_sense_bsc(chain_sense_bsc:Uint8Array) :
|
|
209
|
-
|
|
210
|
-
var array = [].slice.call(chain_sense_bsc.reverse());
|
|
352
|
+
export function parse_sense_bsc(chain_sense_bsc:Uint8Array) : boolean | string[] {
|
|
353
|
+
var arr = [].slice.call(chain_sense_bsc.reverse());
|
|
211
354
|
const bcs = new BCS(getSuiMoveConfig());
|
|
212
355
|
var result = [];
|
|
213
|
-
|
|
214
|
-
|
|
356
|
+
|
|
357
|
+
while (arr.length > 0) {
|
|
358
|
+
var type : unknown = arr.shift() ;
|
|
215
359
|
// console.log(type);
|
|
216
|
-
switch (type as Data_Type) {
|
|
217
|
-
case
|
|
218
|
-
case
|
|
219
|
-
case
|
|
220
|
-
case
|
|
221
|
-
case
|
|
222
|
-
case
|
|
223
|
-
case
|
|
224
|
-
case
|
|
225
|
-
case
|
|
226
|
-
case
|
|
360
|
+
switch (type as Data_Type) {
|
|
361
|
+
case ContextType.TYPE_CONTEXT_SIGNER:
|
|
362
|
+
case ContextType.TYPE_CONTEXT_CURRENT_CLOCK:
|
|
363
|
+
case ContextType.TYPE_CONTEXT_CURRENT_PROGRESS:
|
|
364
|
+
case OperatorType.TYPE_LOGIC_OPERATOR_U128_GREATER:
|
|
365
|
+
case OperatorType.TYPE_LOGIC_OPERATOR_U128_GREATER_EQUAL:
|
|
366
|
+
case OperatorType.TYPE_LOGIC_OPERATOR_U128_LESSER:
|
|
367
|
+
case OperatorType.TYPE_LOGIC_OPERATOR_U128_LESSER_EQUAL:
|
|
368
|
+
case OperatorType.TYPE_LOGIC_OPERATOR_U128_EQUAL:
|
|
369
|
+
case OperatorType.TYPE_LOGIC_OPERATOR_EQUAL:
|
|
370
|
+
case OperatorType.TYPE_LOGIC_OPERATOR_HAS_SUBSTRING:
|
|
371
|
+
case OperatorType.TYPE_LOGIC_ALWAYS_TRUE:
|
|
227
372
|
break;
|
|
228
|
-
case
|
|
373
|
+
case ValueType.TYPE_STATIC_address:
|
|
229
374
|
//console.log('0x' + bcs.de(BCS.ADDRESS, Uint8Array.from(array)).toString());
|
|
230
|
-
|
|
375
|
+
arr.splice(0, 32);
|
|
231
376
|
break;
|
|
232
|
-
case
|
|
233
|
-
case
|
|
234
|
-
|
|
377
|
+
case ValueType.TYPE_STATIC_bool:
|
|
378
|
+
case ValueType.TYPE_STATIC_u8:
|
|
379
|
+
arr.splice(0, 1);
|
|
235
380
|
break;
|
|
236
|
-
case
|
|
237
|
-
|
|
381
|
+
case ValueType.TYPE_STATIC_u64:
|
|
382
|
+
arr.splice(0, 8);
|
|
238
383
|
break;
|
|
239
|
-
case
|
|
240
|
-
|
|
384
|
+
case ValueType.TYPE_STATIC_u128:
|
|
385
|
+
arr.splice(0, 16);
|
|
241
386
|
break;
|
|
242
|
-
case
|
|
243
|
-
let {value, length} = ulebDecode(Uint8Array.from(
|
|
244
|
-
|
|
387
|
+
case ValueType.TYPE_STATIC_vec_u8:
|
|
388
|
+
let {value, length} = ulebDecode(Uint8Array.from(arr));
|
|
389
|
+
arr.splice(0, value+length);
|
|
245
390
|
break;
|
|
246
|
-
case
|
|
247
|
-
result.push('0x' + bcs.de(BCS.ADDRESS, Uint8Array.from(
|
|
248
|
-
|
|
391
|
+
case OperatorType.TYPE_DYNAMIC_QUERY:
|
|
392
|
+
result.push('0x' + bcs.de(BCS.ADDRESS, Uint8Array.from(arr)).toString());
|
|
393
|
+
arr.splice(0, 33); // address + cmd
|
|
249
394
|
break;
|
|
250
395
|
default:
|
|
251
|
-
|
|
252
|
-
|
|
396
|
+
console.error('parse_sense_bsc:undefined');
|
|
397
|
+
console.log(type as number)
|
|
398
|
+
console.log(arr)
|
|
399
|
+
return false; // error
|
|
253
400
|
}
|
|
254
401
|
}
|
|
255
402
|
return result;
|
|
256
403
|
}
|
|
257
404
|
|
|
258
|
-
const
|
|
259
|
-
export const description_fn = (response:SuiObjectResponse, param:Query_Param, option:SuiObjectDataOptions) => {
|
|
405
|
+
export const rpc_description_fn = (response:SuiObjectResponse, param:Query_Param, option:SuiObjectDataOptions) => {
|
|
260
406
|
if (!response.error) {
|
|
261
407
|
let c = response?.data?.content as any;
|
|
262
|
-
|
|
408
|
+
|
|
409
|
+
if (OBJECTS_TYPE().find((v) => (v == c.type)) && c.fields.id.id == param.objectid) { // GUARD OBJECT
|
|
263
410
|
let description = c.fields.description;
|
|
264
411
|
if (!param.data.includes(description)) {
|
|
265
412
|
param.data.push(description);
|
|
@@ -267,17 +414,24 @@ export const description_fn = (response:SuiObjectResponse, param:Query_Param, op
|
|
|
267
414
|
}
|
|
268
415
|
}
|
|
269
416
|
}
|
|
270
|
-
|
|
417
|
+
|
|
418
|
+
export const rpc_sense_objects_fn = (response:SuiObjectResponse, param:Query_Param, option:SuiObjectDataOptions) => {
|
|
271
419
|
if (!response.error) {
|
|
272
420
|
let c = response?.data?.content as any;
|
|
273
|
-
|
|
421
|
+
let index = OBJECTS_TYPE().findIndex(v => v.includes('guard::Guard') && v == c.type);
|
|
422
|
+
if (index >= 0 && c.fields.id.id == param.objectid) { // GUARD OBJECT
|
|
274
423
|
for (let i = 0; i < c.fields.senses.length; i ++) {
|
|
275
424
|
let sense = c.fields.senses[i];
|
|
276
|
-
if (sense.type == (OBJECTS_TYPE_PREFIX[
|
|
277
|
-
let
|
|
278
|
-
|
|
425
|
+
if (sense.type == (OBJECTS_TYPE_PREFIX()[index] + 'Sense')) { // ...::guard::Sense
|
|
426
|
+
let res = parse_sense_bsc(Uint8Array.from(sense.fields.input.fields.bytes));
|
|
427
|
+
if (res) {
|
|
428
|
+
let ids = res as string[];
|
|
429
|
+
param.data = param.data.concat(ids); // DONT array_unique senses
|
|
430
|
+
}
|
|
279
431
|
}
|
|
280
432
|
}
|
|
281
433
|
}
|
|
282
434
|
}
|
|
283
|
-
}
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './protocol'
|
|
2
|
+
export {} from './demand'
|
|
3
|
+
export {} from './machine'
|
|
4
|
+
export {} from './progress'
|
|
5
|
+
export {} from './service'
|
|
6
|
+
export {} from './reward'
|
|
7
|
+
export {} from './uitls'
|
|
8
|
+
export {} from './permission'
|
|
9
|
+
export {} from './guard'
|
|
10
|
+
export {} from './repository'
|
|
11
|
+
export {} from './vote'
|
|
12
|
+
export * from './passport'
|