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/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, GuardObject, OBJECTS_TYPE, OBJECTS_TYPE_PREFIX, Query_Param} from './protocol';
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 { TransactionBlockDataBuilder } from '@mysten/sui.js/dist/cjs/builder/TransactionBlockData';
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 = 1, // first sense of guard always AND; for combining other guards
10
- OR = 2,
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
- var guard = txb.moveCall({
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: [ txb.pure(creation.description , BCS.STRING), ],
39
+ arguments: [txb.pure(creation.description , BCS.STRING)],
28
40
  });
29
- creation?.senses.forEach((sense: Guard_Sense) => {
41
+ creation.senses.forEach((sense: Guard_Sense) => {
30
42
  txb.moveCall({
31
43
  target: PROTOCOL.GuardFn('sense_add') as FnCallType,
32
- arguments:[ guard, txb.pure([].slice.call(sense.input)),
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
- }); // { kind: 'Result', index: 0 }, ref to address could used by PTB
60
+ });
49
61
  }
50
62
 
51
- export function query_description(txb:TransactionBlock, guard:GuardObject) {
52
- txb.moveCall({
53
- target: PROTOCOL.GuardFn('description') as FnCallType,
54
- arguments:[guard]
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 Sense_Cmd_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 Sense_Cmd:any = [ [MODULES.permission, 'creator', 1, [], Data_Type.TYPE_STATIC_address],
67
- [MODULES.permission, 'is_admin', 2, [Data_Type.TYPE_STATIC_address], Data_Type.TYPE_STATIC_bool],
68
- [MODULES.permission, 'has_rights', 3, [Data_Type.TYPE_STATIC_address, Data_Type.TYPE_STATIC_u64], Data_Type.TYPE_STATIC_bool],
69
- [MODULES.permission, 'contains_address', 4, [Data_Type.TYPE_STATIC_address], Data_Type.TYPE_STATIC_bool],
70
- [MODULES.permission, 'contains_index', 5, [Data_Type.TYPE_STATIC_address, Data_Type.TYPE_STATIC_u64], Data_Type.TYPE_STATIC_bool],
71
- [MODULES.permission, 'contains_guard', 6, [Data_Type.TYPE_STATIC_address, Data_Type.TYPE_STATIC_u64], Data_Type.TYPE_STATIC_bool],
72
- [MODULES.repository, 'permission', 1, [], Data_Type.TYPE_STATIC_address],
73
- [MODULES.repository, 'policy_contains', 2, [Data_Type.TYPE_STATIC_vec_u8], Data_Type.TYPE_STATIC_bool],
74
- [MODULES.repository, 'policy_has_permission_index', 3, [Data_Type.TYPE_STATIC_vec_u8], Data_Type.TYPE_STATIC_bool],
75
- [MODULES.repository, 'policy_permission_index', 4, [Data_Type.TYPE_STATIC_vec_u8], Data_Type.TYPE_STATIC_u64],
76
- [MODULES.repository, 'policy_value_type', 5, [Data_Type.TYPE_STATIC_vec_u8], Data_Type.TYPE_STATIC_u8],
77
- [MODULES.repository, 'contains_id', 6, [Data_Type.TYPE_STATIC_address], Data_Type.TYPE_STATIC_bool],
78
- [MODULES.repository, 'contains_value', 7, [Data_Type.TYPE_STATIC_address, Data_Type.TYPE_STATIC_vec_u8], Data_Type.TYPE_STATIC_bool],
79
- [MODULES.repository, 'value_without_type', 8, [Data_Type.TYPE_STATIC_address, Data_Type.TYPE_STATIC_vec_u8], Data_Type.TYPE_STATIC_vec_u8],
80
- [MODULES.repository, 'value', 9, [Data_Type.TYPE_STATIC_address, Data_Type.TYPE_STATIC_vec_u8], Data_Type.TYPE_STATIC_vec_u8],
81
- [MODULES.repository, 'type', 10, [], Data_Type.TYPE_STATIC_u8],
82
- [MODULES.repository, 'policy_mode', 11, [], Data_Type.TYPE_STATIC_u8],
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:Data_Type, param?:any) : boolean {
212
+ add_param(type:ValueType | ContextType, param?:any) : boolean {
92
213
  const bcs = new BCS(getSuiMoveConfig());
93
214
  switch(type) {
94
- case Data_Type.TYPE_STATIC_address:
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 Data_Type.TYPE_STATIC_bool:
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 Data_Type.TYPE_STATIC_u8:
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 Data_Type.TYPE_STATIC_u64:
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 Data_Type.TYPE_STATIC_vec_u8:
235
+ case ValueType.TYPE_STATIC_vec_u8:
115
236
  this.data.push(bcs.ser(BCS.U8, type).toBytes());
116
- this.data.push(bcs.ser("vector<u8>", param).toBytes());
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 Data_Type.TYPE_CONTEXT_SIGNER:
241
+ case ContextType.TYPE_CONTEXT_SIGNER:
121
242
  this.data.push(bcs.ser(BCS.U8, type).toBytes());
122
- this.type_validator.push(Data_Type.TYPE_STATIC_address);
243
+ this.type_validator.push(ValueType.TYPE_STATIC_address);
123
244
  break;
124
- case Data_Type.TYPE_CONTEXT_CURRENT_CLOCK:
245
+ case ContextType.TYPE_CONTEXT_CURRENT_CLOCK:
125
246
  this.data.push(bcs.ser(BCS.U8, type).toBytes());
126
- this.type_validator.push(Data_Type.TYPE_STATIC_u64);
247
+ this.type_validator.push(ValueType.TYPE_STATIC_u64);
127
248
  break;
128
- case Data_Type.TYPE_CONTEXT_CURRENT_PROGRESS:
249
+ case ContextType.TYPE_CONTEXT_CURRENT_PROGRESS:
129
250
  this.data.push(bcs.ser(BCS.U8, type).toBytes());
130
- this.type_validator.push(Data_Type.TYPE_STATIC_address);
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
- add_cmd(object_address:string, sense_index:number) : boolean {
139
- if (!object_address || sense_index >= Sense_Cmd.length) { return false; }
140
- let offset = this.type_validator.length - Sense_Cmd[sense_index][3].length;
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, Sense_Cmd[sense_index][3])) { // type validate
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, Data_Type.TYPE_DYNAMIC_QUERY).toBytes()); // TYPE
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, Sense_Cmd[sense_index][2]).toBytes()); // cmd
285
+ this.data.push(bcs.ser(BCS.U8, QUERIES[query_index][2]).toBytes()); // cmd
154
286
 
155
- this.type_validator.splice(offset, Sense_Cmd[sense_index][3].length); // delete type stack
156
- this.type_validator.push(Sense_Cmd[sense_index][4]); // add the return value type to type stack
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:Data_Type) : boolean {
292
+ add_logic(type:OperatorType) : boolean {
161
293
  switch (type) {
162
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_GREATER:
163
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_GREATER_EQUAL:
164
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_LESSER:
165
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_LESSER_EQUAL:
166
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_EQUAL:
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 Data_Type.TYPE_LOGIC_OPERATOR_EQUAL:
172
- case Data_Type.TYPE_LOGIC_OPERATOR_HAS_SUBSTRING:
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(Data_Type.TYPE_STATIC_bool); // add bool to type stack
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) : undefined | Guard_Sense {
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] != Data_Type.TYPE_STATIC_bool) {
189
- return undefined;
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:Data_Type) : boolean {
199
- if (type == Data_Type.TYPE_STATIC_option_u8 ||
200
- type == Data_Type.TYPE_STATIC_option_u64 ||
201
- type == Data_Type.TYPE_STATIC_option_u128 ) {
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) : undefined | string[] {
209
- // console.log(data);
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
- while (array.length > 0) {
214
- var type : unknown = array.shift() ;
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 Data_Type.TYPE_CONTEXT_SIGNER:
218
- case Data_Type.TYPE_CONTEXT_CURRENT_CLOCK:
219
- case Data_Type.TYPE_CONTEXT_CURRENT_PROGRESS:
220
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_GREATER:
221
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_GREATER_EQUAL:
222
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_LESSER:
223
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_LESSER_EQUAL:
224
- case Data_Type.TYPE_LOGIC_OPERATOR_U128_EQUAL:
225
- case Data_Type.TYPE_LOGIC_OPERATOR_EQUAL:
226
- case Data_Type.TYPE_LOGIC_OPERATOR_HAS_SUBSTRING:
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 Data_Type.TYPE_STATIC_address:
373
+ case ValueType.TYPE_STATIC_address:
229
374
  //console.log('0x' + bcs.de(BCS.ADDRESS, Uint8Array.from(array)).toString());
230
- array.splice(0, 32);
375
+ arr.splice(0, 32);
231
376
  break;
232
- case Data_Type.TYPE_STATIC_bool:
233
- case Data_Type.TYPE_STATIC_u8:
234
- array.splice(0, 1);
377
+ case ValueType.TYPE_STATIC_bool:
378
+ case ValueType.TYPE_STATIC_u8:
379
+ arr.splice(0, 1);
235
380
  break;
236
- case Data_Type.TYPE_STATIC_u64:
237
- array.splice(0, 8);
381
+ case ValueType.TYPE_STATIC_u64:
382
+ arr.splice(0, 8);
238
383
  break;
239
- case Data_Type.TYPE_STATIC_u128:
240
- array.splice(0, 16);
384
+ case ValueType.TYPE_STATIC_u128:
385
+ arr.splice(0, 16);
241
386
  break;
242
- case Data_Type.TYPE_STATIC_vec_u8:
243
- let {value, length} = ulebDecode(Uint8Array.from(array));
244
- array.splice(0, value+length);
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 Data_Type.TYPE_DYNAMIC_QUERY:
247
- result.push('0x' + bcs.de(BCS.ADDRESS, Uint8Array.from(array)).toString());
248
- array.splice(0, 33); // address + cmd
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
- // console.log('parse_sense_bsc:undefined');
252
- return undefined; // error
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 MODULE_GUARD_INDEX = 7;
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
- if (c.type == OBJECTS_TYPE[MODULE_GUARD_INDEX] && c.fields.id.id == param.objectid) { // GUARD OBJECT
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
- export const sense_objects_fn = (response:SuiObjectResponse, param:Query_Param, option:SuiObjectDataOptions) => {
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
- if (c.type == OBJECTS_TYPE[MODULE_GUARD_INDEX] && c.fields.id.id == param.objectid) { // GUARD OBJECT
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[MODULE_GUARD_INDEX] + 'Sense')) { // ...::guard::Sense
277
- let ids = parse_sense_bsc(Uint8Array.from(sense.fields.input.fields.bytes)) as string[];
278
- param.data = array_unique(param.data.concat(ids));
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'