wowok 1.1.1 → 1.1.3

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/passport.js CHANGED
@@ -1,268 +1,212 @@
1
1
  import { Inputs } from '@mysten/sui.js/transactions';
2
- import { Protocol, ContextType, OperatorType, ValueType, } from './protocol';
3
- import { parse_object_type, array_unique, Bcs, ulebDecode } from './utils';
4
- import { Guard } from './guard';
2
+ import { Protocol, ContextType, OperatorType, ValueType } from './protocol';
3
+ import { parse_object_type, array_unique, Bcs, ulebDecode, IsValidAddress, IsValidArray } from './utils';
5
4
  import { BCS } from '@mysten/bcs';
6
5
  import { ERROR, Errors } from './exception';
7
6
  export class GuardParser {
8
- // from guards: get objects to fill FUTURE value by singer
9
- static guard_futures = async (protocol, guards) => {
10
- let futrue_objects = guards.map((value) => {
11
- return { objectid: value, callback: GuardParser.rpc_sense_objects_fn, parser: GuardParser.parse_futures, data: [] };
7
+ guard_list = [];
8
+ protocol;
9
+ guards;
10
+ index = 0;
11
+ get_index() { return this.index++; }
12
+ constructor(protocol, guards) {
13
+ this.protocol = protocol;
14
+ this.guards = guards.map(g => protocol.CurrentSession().object(g));
15
+ }
16
+ guardlist = () => { return this.guard_list; };
17
+ static CreateAsync = async (protocol, guards) => {
18
+ if (!IsValidArray(guards, IsValidAddress)) {
19
+ ERROR(Errors.IsValidArray, 'guards');
20
+ }
21
+ let guard_list = array_unique(guards);
22
+ const me = new GuardParser(protocol, guards);
23
+ let res = await protocol.Query_Raw(guard_list);
24
+ res.forEach((r) => {
25
+ let c = r.data?.content;
26
+ if (!c)
27
+ return;
28
+ let index = protocol.WOWOK_OBJECTS_TYPE().findIndex(v => { return v.includes('guard::Guard') && v == c.type; });
29
+ if (index == -1)
30
+ return;
31
+ let info = { id: c.fields.id.id, query_list: [], variable: [], input_witness: [] };
32
+ me.parse_variable(info, c.fields.variables);
33
+ if (c.fields.input.type == (protocol.Package() + '::bcs::BCS')) {
34
+ me.parse_bcs(info, Uint8Array.from(c.fields.input.fields.bytes));
35
+ }
36
+ me.guard_list.push(info);
12
37
  });
13
- await protocol.Query(futrue_objects); // future objects
14
- let future_objects_result = [];
15
- futrue_objects.forEach((futrue) => {
16
- futrue.data.forEach((f) => {
17
- if (future_objects_result.findIndex((v) => { return v.guardid == f.guardid && v.identifier == f.identifier; }) == -1) {
18
- future_objects_result.push(f);
38
+ return me;
39
+ };
40
+ parse_variable = (info, variables) => {
41
+ variables.forEach((v) => {
42
+ if (v.type == (this.protocol.Package() + '::guard::Variable')) {
43
+ // ValueType.TYPE_ADDRESS: Query_Cmd maybe used the address, so save it for using
44
+ if (v.fields.type == ContextType.TYPE_WITNESS_ID || v.fields.type == ValueType.TYPE_ADDRESS) {
45
+ info.variable.push({ identifier: v.fields.identifier, index: this.get_index(), type: v.fields.type,
46
+ value_or_witness: '0x' + Bcs.getInstance().de(BCS.ADDRESS, Uint8Array.from(v.fields.value)) });
19
47
  }
20
- });
48
+ }
21
49
  });
22
- return future_objects_result;
23
50
  };
24
- // parse guard futures into result, WITH future variable READY.
25
- static parse_futures(result, guardid, chain_sense_bsc, variable) {
26
- var arr = [].slice.call(chain_sense_bsc.reverse());
51
+ parse_bcs = (info, chain_bytes) => {
52
+ var arr = [].slice.call(chain_bytes.reverse());
27
53
  while (arr.length > 0) {
28
54
  var type = arr.shift();
29
55
  // console.log(type);
30
56
  switch (type) {
31
- case ContextType.TYPE_CONTEXT_SIGNER:
32
- case ContextType.TYPE_CONTEXT_CLOCK:
33
- case OperatorType.TYPE_LOGIC_OPERATOR_U128_GREATER:
34
- case OperatorType.TYPE_LOGIC_OPERATOR_U128_GREATER_EQUAL:
35
- case OperatorType.TYPE_LOGIC_OPERATOR_U128_LESSER:
36
- case OperatorType.TYPE_LOGIC_OPERATOR_U128_LESSER_EQUAL:
37
- case OperatorType.TYPE_LOGIC_OPERATOR_U128_EQUAL:
38
- case OperatorType.TYPE_LOGIC_OPERATOR_EQUAL:
39
- case OperatorType.TYPE_LOGIC_OPERATOR_HAS_SUBSTRING:
57
+ case ContextType.TYPE_SIGNER:
58
+ case ContextType.TYPE_CLOCK:
59
+ case OperatorType.TYPE_LOGIC_AS_U256_GREATER:
60
+ case OperatorType.TYPE_LOGIC_AS_U256_GREATER_EQUAL:
61
+ case OperatorType.TYPE_LOGIC_AS_U256_LESSER:
62
+ case OperatorType.TYPE_LOGIC_AS_U256_LESSER_EQUAL:
63
+ case OperatorType.TYPE_LOGIC_AS_U256_EQUAL:
64
+ case OperatorType.TYPE_LOGIC_EQUAL:
65
+ case OperatorType.TYPE_LOGIC_HAS_SUBSTRING:
40
66
  case OperatorType.TYPE_LOGIC_ALWAYS_TRUE:
67
+ case OperatorType.TYPE_LOGIC_NOT:
68
+ case OperatorType.TYPE_LOGIC_AND:
69
+ case OperatorType.TYPE_LOGIC_OR:
41
70
  break;
42
- case ContextType.TYPE_CONTEXT_FUTURE_ID: // MACHINE-ID
43
- case OperatorType.TYPE_FUTURE_QUERY:
44
- var identifer = arr.splice(0, 1);
45
- if (type == OperatorType.TYPE_FUTURE_QUERY) {
46
- arr.splice(0, 1); // cmd
47
- }
48
- if (!variable || variable?.get(identifer[0])?.type != type)
49
- return false;
50
- let witness = Guard.get_variable_witness(variable, identifer[0], type);
51
- if (!witness)
52
- return false;
53
- result.push({ guardid: guardid, identifier: identifer[0], type: type, value: '',
54
- witness: '0x' + Bcs.getInstance().de(BCS.ADDRESS, Uint8Array.from(witness)) });
71
+ case ContextType.TYPE_VARIABLE:
72
+ arr.splice(0, 1); // identifier of variable
55
73
  break;
56
- case ContextType.TYPE_CONTEXT_address:
57
- case ContextType.TYPE_CONTEXT_bool:
58
- case ContextType.TYPE_CONTEXT_u8:
59
- case ContextType.TYPE_CONTEXT_u64:
60
- case ContextType.TYPE_CONTEXT_vec_u8:
61
- case ValueType.TYPE_STATIC_bool:
62
- case ValueType.TYPE_STATIC_u8:
63
- arr.splice(0, 1); // identifier
74
+ case ContextType.TYPE_WITNESS_ID: // add to variable
75
+ let addr = '0x' + Bcs.getInstance().de(BCS.ADDRESS, Uint8Array.from(arr)).toString();
76
+ arr.splice(0, 32); // address
77
+ info.input_witness.push({ index: this.get_index(), type: ContextType.TYPE_WITNESS_ID, value_or_witness: addr });
64
78
  break;
65
- case OperatorType.TYPE_QUERY_FROM_CONTEXT:
66
- arr.splice(0, 2); // identifer + cmd
79
+ case ValueType.TYPE_BOOL:
80
+ case ValueType.TYPE_U8:
81
+ arr.splice(0, 1); // identifier
67
82
  break;
68
- case ValueType.TYPE_STATIC_address:
83
+ case ValueType.TYPE_ADDRESS:
69
84
  arr.splice(0, 32);
70
85
  break;
71
- case ValueType.TYPE_STATIC_u64:
86
+ case ValueType.TYPE_U64:
72
87
  arr.splice(0, 8);
73
88
  break;
74
- case ValueType.TYPE_STATIC_u128:
89
+ case ValueType.TYPE_U128:
75
90
  arr.splice(0, 16);
76
91
  break;
77
- case ValueType.TYPE_STATIC_vec_u8:
92
+ case ValueType.TYPE_U256:
93
+ arr.splice(0, 32);
94
+ break;
95
+ case ValueType.TYPE_VEC_U8:
78
96
  let { value, length } = ulebDecode(Uint8Array.from(arr));
79
97
  arr.splice(0, value + length);
80
98
  break;
81
99
  case OperatorType.TYPE_QUERY:
82
- arr.splice(0, 33); // address + cmd
100
+ let type = arr.splice(0, 1);
101
+ if (type[0] == ValueType.TYPE_ADDRESS || type[0] == ContextType.TYPE_WITNESS_ID) {
102
+ let addr = '0x' + Bcs.getInstance().de(BCS.ADDRESS, Uint8Array.from(arr)).toString();
103
+ arr.splice(0, 33); // address + cmd
104
+ if (type[0] == ValueType.TYPE_ADDRESS) {
105
+ info.query_list.push(addr);
106
+ }
107
+ else if (type[0] == ContextType.TYPE_WITNESS_ID) {
108
+ info.query_list.push({ index: this.get_index(), type: type[0], value_or_witness: addr });
109
+ }
110
+ }
111
+ else if (type[0] == ContextType.TYPE_VARIABLE) {
112
+ let identifer = arr.splice(0, 2); // key + cmd
113
+ let variable = info.variable.find((v) => (v.identifier == identifer[0]) &&
114
+ ((v.type == ValueType.TYPE_ADDRESS) || (v.type == ContextType.TYPE_WITNESS_ID)));
115
+ if (!variable) {
116
+ ERROR(Errors.Fail, 'indentifier not in variable');
117
+ }
118
+ if (variable?.type == ValueType.TYPE_ADDRESS) {
119
+ info.query_list.push(variable.value_or_witness);
120
+ }
121
+ else if (variable?.type == ContextType.TYPE_WITNESS_ID) {
122
+ info.query_list.push({ identifier: identifer[0], type: variable.type, value_or_witness: variable.value_or_witness, index: this.get_index() });
123
+ }
124
+ }
125
+ else {
126
+ ERROR(Errors.Fail, 'variable type invalid');
127
+ }
83
128
  break;
84
129
  default:
85
- console.error('parse_sense_bsc:undefined');
86
- console.log(type);
87
- console.log(arr);
88
- return false; // error
130
+ ERROR(Errors.Fail, 'parse_bcs types');
131
+ }
132
+ }
133
+ };
134
+ get_object(guardid, info, fill) {
135
+ let r = fill?.find(i => guardid == i.guard && i.index == info.index);
136
+ if (!r || !r.future) {
137
+ if (!info.future) {
138
+ ERROR(Errors.InvalidParam, 'index invalid for fill');
89
139
  }
90
140
  }
91
- return true;
141
+ else {
142
+ info.future = r.future;
143
+ }
144
+ return info.future;
92
145
  }
93
- // from guards: get objects to 'guard_query' on chain , with future variables had filled.
94
- // passport verify for some guards, MUST be in ONE pxb:
95
- // 0. construct Guard_Query_Objects(passport_quries) from queries for guards of objects
96
- // 1. create passport
97
- // 2. add all guards / guards future variables
98
- // 3. verify passport
99
- // 4. ops using passport(guard set on object)
100
- // 5. ops using passport(guard set on object)
101
- // 6. destroy passport
102
- static guard_queries = async (protocol, guards, futures) => {
103
- let sense_objects = guards.map((value) => {
104
- let v = new Map();
105
- futures?.forEach((f) => {
106
- if (f.guardid == value) {
107
- Guard.add_future_variable(v, f.identifier, f.type, f.witness.slice(0), f?.value ? f.value.slice(0) : undefined, true);
146
+ done = async (fill) => {
147
+ let objects = [];
148
+ this.guard_list.forEach((g) => {
149
+ g.variable.filter(v => v.type == ContextType.TYPE_WITNESS_ID).forEach((q) => {
150
+ objects.push(this.get_object(g.id, q, fill));
151
+ });
152
+ let list = g.query_list.map((q) => {
153
+ if (typeof (q) === "string") {
154
+ objects.push(q);
155
+ return q;
156
+ }
157
+ else {
158
+ let r = this.get_object(g.id, q, fill);
159
+ objects.push(r);
160
+ return r;
108
161
  }
109
162
  });
110
- return { objectid: value, callback: GuardParser.rpc_sense_objects_fn, parser: GuardParser.parse_sense_bsc, data: [], variables: futures ? v : undefined };
111
- });
112
- await protocol.Query(sense_objects); // objects need quering in guards
113
- let sense_objects_result = [];
114
- sense_objects.forEach((value) => {
115
- sense_objects_result = sense_objects_result.concat(value.data);
116
- });
117
- sense_objects_result = array_unique(sense_objects_result); // objects in guards
118
- let queries = sense_objects_result.map((value) => {
119
- return { objectid: value, callback: GuardParser.rpc_query_cmd_fn, data: [] };
163
+ g.query_list = list;
164
+ g.input_witness.forEach((q) => {
165
+ objects.push(this.get_object(g.id, q, fill));
166
+ });
120
167
  });
121
- await protocol.Query(queries, { 'showType': true }); // queries for passport verifing
122
- let res = [];
123
- sense_objects.forEach((guard) => {
124
- res = res.concat(guard.data.map((object) => {
125
- let data = queries.filter((v) => {
126
- return v.objectid == object;
127
- });
128
- if (!data) {
129
- console.error('error find data');
130
- console.log(queries);
131
- console.log(object);
132
- return;
168
+ // objects info
169
+ let res = await this.protocol.Query_Raw(array_unique(objects), { showType: true });
170
+ let query = [];
171
+ let witness = [];
172
+ this.guard_list.forEach(g => {
173
+ g.query_list.forEach(q => {
174
+ let r = res.find(r => r.data?.objectId == q);
175
+ if (!r) {
176
+ ERROR(Errors.Fail, 'query object not match');
133
177
  }
134
- return data[0].data;
135
- }));
136
- });
137
- return res;
138
- };
139
- // parse guard senses input bytes of a guard, return [objectids] for 'query_cmd'
140
- static parse_sense_bsc(result, guardid, chain_sense_bsc, variable) {
141
- var arr = [].slice.call(chain_sense_bsc.reverse());
142
- while (arr.length > 0) {
143
- var type = arr.shift();
144
- // console.log(type);
145
- switch (type) {
146
- case ContextType.TYPE_CONTEXT_SIGNER:
147
- case ContextType.TYPE_CONTEXT_CLOCK:
148
- case OperatorType.TYPE_LOGIC_OPERATOR_U128_GREATER:
149
- case OperatorType.TYPE_LOGIC_OPERATOR_U128_GREATER_EQUAL:
150
- case OperatorType.TYPE_LOGIC_OPERATOR_U128_LESSER:
151
- case OperatorType.TYPE_LOGIC_OPERATOR_U128_LESSER_EQUAL:
152
- case OperatorType.TYPE_LOGIC_OPERATOR_U128_EQUAL:
153
- case OperatorType.TYPE_LOGIC_OPERATOR_EQUAL:
154
- case OperatorType.TYPE_LOGIC_OPERATOR_HAS_SUBSTRING:
155
- case OperatorType.TYPE_LOGIC_ALWAYS_TRUE:
156
- break;
157
- case ContextType.TYPE_CONTEXT_FUTURE_ID: // MACHINE-ID
158
- var v = arr.splice(0, 1);
159
- if (!variable || variable?.get(v[0])?.type != type)
160
- return false;
161
- break;
162
- case ContextType.TYPE_CONTEXT_address:
163
- case ContextType.TYPE_CONTEXT_bool:
164
- case ContextType.TYPE_CONTEXT_u8:
165
- case ContextType.TYPE_CONTEXT_u64:
166
- case ContextType.TYPE_CONTEXT_vec_u8:
167
- arr.splice(0, 1); // identifier
168
- break;
169
- case ValueType.TYPE_STATIC_address:
170
- //console.log('0x' + bcs.de(BCS.ADDRESS, Uint8Array.from(array)).toString());
171
- arr.splice(0, 32);
172
- break;
173
- case ValueType.TYPE_STATIC_bool:
174
- case ValueType.TYPE_STATIC_u8:
175
- arr.splice(0, 1);
176
- break;
177
- case ValueType.TYPE_STATIC_u64:
178
- arr.splice(0, 8);
179
- break;
180
- case ValueType.TYPE_STATIC_u128:
181
- arr.splice(0, 16);
182
- break;
183
- case ValueType.TYPE_STATIC_vec_u8:
184
- let { value, length } = ulebDecode(Uint8Array.from(arr));
185
- arr.splice(0, value + length);
186
- break;
187
- case OperatorType.TYPE_QUERY:
188
- result.push('0x' + Bcs.getInstance().de(BCS.ADDRESS, Uint8Array.from(arr)).toString());
189
- arr.splice(0, 33); // address + cmd
190
- break;
191
- case OperatorType.TYPE_QUERY_FROM_CONTEXT:
192
- case OperatorType.TYPE_FUTURE_QUERY:
193
- var identifer = arr.splice(0, 1);
194
- if (variable) {
195
- let v = Guard.get_variable_value(variable, identifer[0], type);
196
- if (v) {
197
- result.push('0x' + Bcs.getInstance().de(BCS.ADDRESS, Uint8Array.from(v)).toString());
198
- arr.splice(0, 1); // splice cmd
199
- break;
200
- }
201
- }
202
- ;
203
- return false;
204
- default:
205
- console.error('parse_sense_bsc:undefined');
206
- console.log(type);
207
- console.log(arr);
208
- return false; // error
209
- }
210
- }
211
- return true;
212
- }
213
- // callback to parse guard's object-queries into Guard_Query_Object[]
214
- static rpc_sense_objects_fn = (protocol, response, param, option) => {
215
- if (!response.error) {
216
- let c = response?.data?.content;
217
- let index = protocol.WOWOK_OBJECTS_TYPE().findIndex(v => v.includes('guard::Guard') && v == c.type);
218
- if (index >= 0 && c.fields.id.id == param.objectid) { // GUARD OBJECT
219
- if (!param?.variables) {
220
- let v = new Map();
221
- for (let i = 0; i < c.fields.variables.length; i++) {
222
- let variable = c.fields.variables[i];
223
- let bret;
224
- if (variable.type == (protocol.WOWOK_OBJECTS_PREFIX_TYPE()[index] + 'Variable')) { // ...::guard::Variable
225
- if (variable.fields.type == OperatorType.TYPE_FUTURE_QUERY || variable.fields.type == ContextType.TYPE_CONTEXT_FUTURE_ID) {
226
- bret = Guard.add_future_variable(v, variable.fields.identifier, variable.fields.type, variable.fields?.value ? Uint8Array.from(variable.fields.value) : undefined, undefined, false);
227
- }
228
- else {
229
- bret = Guard.add_variable(v, variable.fields.identifier, variable.fields.type, variable.fields?.value ? Uint8Array.from(variable.fields.value) : undefined, false);
230
- }
231
- if (!bret) {
232
- console.log('rpc_sense_objects_fn add_variable error');
233
- console.log(variable);
234
- return;
235
- }
236
- }
237
- }
238
- param.variables = v;
178
+ let object = this.object_query(r.data);
179
+ if (!object) {
180
+ ERROR(Errors.Fail, 'query object fail');
239
181
  }
240
- for (let i = 0; i < c.fields.senses.length; i++) {
241
- let sense = c.fields.senses[i];
242
- if (sense.type == (protocol.WOWOK_OBJECTS_PREFIX_TYPE()[index] + 'Sense')) { // ...::guard::Sense
243
- let result = [];
244
- if (param?.parser && param.parser(result, param.objectid, Uint8Array.from(sense.fields.input.fields.bytes), param.variables)) {
245
- param.data = param.data.concat(result); // DONT array_unique senses
246
- }
182
+ query.push(object);
183
+ });
184
+ res.forEach(q => {
185
+ let r1 = g.variable.find(v => v.future == q.data?.objectId);
186
+ let r2 = g.input_witness.find(v => v.future == q.data?.objectId);
187
+ // not match r1 || r2 means query-cmd, not witness-cmd
188
+ if (r1 || r2) {
189
+ let object = this.object_query(q.data, 'witness');
190
+ if (!object) {
191
+ ERROR(Errors.Fail, 'witness object fail');
247
192
  }
193
+ witness.push(object);
248
194
  }
249
- }
250
- }
195
+ });
196
+ });
197
+ return { guard: this.guards, query: query, witness: witness };
251
198
  };
252
- // construct Guard_Query_Object of wowok objects for passport verify
253
- static rpc_query_cmd_fn = (protocol, response, param, option) => {
254
- if (!response.error && response.data?.objectId == param.objectid && response.data?.type) {
255
- for (let k = 0; k < protocol.WOWOK_OBJECTS_TYPE().length; k++) {
256
- if (response?.data?.type.includes(protocol.WOWOK_OBJECTS_TYPE()[k])) { // type: pack::m::Object<...>
257
- param.data = { target: protocol.WOWOK_OBJECTS_PREFIX_TYPE()[k] + 'guard_query',
258
- object: Inputs.SharedObjectRef({
259
- objectId: response.data.objectId,
260
- mutable: false,
261
- initialSharedVersion: response.data.version,
262
- }),
263
- types: parse_object_type(response?.data?.type),
264
- id: param.objectid, };
265
- }
199
+ object_query = (data, method = 'guard_query') => {
200
+ for (let k = 0; k < this.protocol.WOWOK_OBJECTS_TYPE().length; k++) {
201
+ if (data.type.includes(this.protocol.WOWOK_OBJECTS_TYPE()[k])) { // type: pack::m::Object<...>
202
+ return { target: this.protocol.WOWOK_OBJECTS_PREFIX_TYPE()[k] + method,
203
+ object: Inputs.SharedObjectRef({
204
+ objectId: data.objectId,
205
+ mutable: false,
206
+ initialSharedVersion: data.version,
207
+ }),
208
+ types: parse_object_type(data.type),
209
+ id: data.objectId, };
266
210
  }
267
211
  }
268
212
  };
@@ -273,11 +217,11 @@ export class Passport {
273
217
  protocol;
274
218
  get_object() { return this.passport; }
275
219
  // return passport object used
276
- constructor(protocol, guards, guard_queries, future_values) {
277
- if (!guards || guards.length > Passport.MAX_GUARD_COUNT) {
220
+ constructor(protocol, query) {
221
+ if (!query.guard || query.guard.length > Passport.MAX_GUARD_COUNT) {
278
222
  ERROR(Errors.InvalidParam, 'guards');
279
223
  }
280
- if (!Protocol.IsValidObjects(guards)) {
224
+ if (!Protocol.IsValidObjects(query.guard)) {
281
225
  ERROR(Errors.IsValidObjects, 'guards');
282
226
  }
283
227
  this.protocol = protocol;
@@ -287,41 +231,32 @@ export class Passport {
287
231
  arguments: []
288
232
  });
289
233
  // add others guards, if any
290
- guards.forEach((guard) => {
234
+ query.guard.forEach((g) => {
291
235
  txb.moveCall({
292
236
  target: protocol.PassportFn('guard_add'),
293
- arguments: [this.passport, Protocol.TXB_OBJECT(txb, guard)]
237
+ arguments: [this.passport, Protocol.TXB_OBJECT(txb, g)]
294
238
  });
295
239
  });
296
- let result = new Map();
297
- future_values?.forEach((v) => {
298
- if (result.has(v.guardid)) {
299
- result.get(v.guardid)?.identifier.push(v.identifier);
300
- result.get(v.guardid)?.real_address.push(v.value);
301
- }
302
- else {
303
- result.set(v.guardid, { identifier: [v.identifier], real_address: [v.value] });
304
- }
305
- });
306
- result.forEach((v, k) => {
240
+ // witness
241
+ query?.witness.forEach((w) => {
307
242
  txb.moveCall({
308
- target: protocol.PassportFn('futures_set'),
309
- arguments: [this.passport, txb.pure(Bcs.getInstance().ser_address(k)), txb.pure(Bcs.getInstance().ser_vector_u8(v.identifier)),
310
- txb.pure(v.real_address, 'vector<address>')]
243
+ target: w.target,
244
+ arguments: [this.passport, txb.object(w.object)],
245
+ typeArguments: w.types,
311
246
  });
312
247
  });
313
248
  // rules: 'verify' & 'query' in turns;'verify' at final end.
314
- for (let i = 0; i < guard_queries.length; i++) {
315
- let res = txb.moveCall({
249
+ query?.query.forEach((q) => {
250
+ let address = txb.moveCall({
316
251
  target: protocol.PassportFn('passport_verify'),
317
- arguments: [this.passport, txb.object(Protocol.CLOCK_OBJECT),]
252
+ arguments: [this.passport, txb.object(Protocol.CLOCK_OBJECT)]
318
253
  });
319
254
  txb.moveCall({
320
- target: guard_queries[i].target,
321
- arguments: [txb.object(guard_queries[i].object), this.passport, res],
322
- typeArguments: guard_queries[i].types,
255
+ target: q.target,
256
+ arguments: [txb.object(q.object), this.passport, address],
257
+ typeArguments: q.types,
323
258
  });
324
- }
259
+ });
325
260
  txb.moveCall({
326
261
  target: protocol.PassportFn('passport_verify'),
327
262
  arguments: [this.passport, txb.object(Protocol.CLOCK_OBJECT)]
@@ -7,6 +7,9 @@ export declare enum PermissionIndex {
7
7
  repository_remove_policies = 104,
8
8
  repository_set_policy_description = 105,
9
9
  repository_set_policy_permission = 106,
10
+ repository_reference_add = 107,
11
+ repository_reference_remove = 108,
12
+ repository_reference_removeall = 108,
10
13
  vote = 150,
11
14
  vote_set_description = 151,
12
15
  vote_set_reference = 152,
@@ -1 +1 @@
1
- {"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,9 @@ export var PermissionIndex;
11
11
  PermissionIndex[PermissionIndex["repository_remove_policies"] = 104] = "repository_remove_policies";
12
12
  PermissionIndex[PermissionIndex["repository_set_policy_description"] = 105] = "repository_set_policy_description";
13
13
  PermissionIndex[PermissionIndex["repository_set_policy_permission"] = 106] = "repository_set_policy_permission";
14
+ PermissionIndex[PermissionIndex["repository_reference_add"] = 107] = "repository_reference_add";
15
+ PermissionIndex[PermissionIndex["repository_reference_remove"] = 108] = "repository_reference_remove";
16
+ PermissionIndex[PermissionIndex["repository_reference_removeall"] = 108] = "repository_reference_removeall";
14
17
  PermissionIndex[PermissionIndex["vote"] = 150] = "vote";
15
18
  PermissionIndex[PermissionIndex["vote_set_description"] = 151] = "vote_set_description";
16
19
  PermissionIndex[PermissionIndex["vote_set_reference"] = 152] = "vote_set_reference";