wowok 1.2.4 → 1.2.7

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.
Files changed (49) hide show
  1. package/dist/demand.d.ts +3 -2
  2. package/dist/demand.d.ts.map +1 -1
  3. package/dist/demand.js +21 -7
  4. package/dist/entity.d.ts +2 -1
  5. package/dist/entity.d.ts.map +1 -1
  6. package/dist/entity.js +23 -7
  7. package/dist/exception.d.ts +3 -1
  8. package/dist/exception.d.ts.map +1 -1
  9. package/dist/exception.js +3 -1
  10. package/dist/guard.js +1 -1
  11. package/dist/machine.js +2 -2
  12. package/dist/permission.d.ts +23 -7
  13. package/dist/permission.d.ts.map +1 -1
  14. package/dist/permission.js +149 -16
  15. package/dist/protocol.d.ts +35 -10
  16. package/dist/protocol.d.ts.map +1 -1
  17. package/dist/protocol.js +129 -21
  18. package/dist/repository.d.ts +6 -3
  19. package/dist/repository.d.ts.map +1 -1
  20. package/dist/repository.js +59 -40
  21. package/dist/resource.d.ts +20 -6
  22. package/dist/resource.d.ts.map +1 -1
  23. package/dist/resource.js +58 -21
  24. package/dist/reward.d.ts +6 -3
  25. package/dist/reward.d.ts.map +1 -1
  26. package/dist/reward.js +43 -19
  27. package/dist/service.d.ts +15 -9
  28. package/dist/service.d.ts.map +1 -1
  29. package/dist/service.js +94 -56
  30. package/dist/utils.d.ts +18 -4
  31. package/dist/utils.d.ts.map +1 -1
  32. package/dist/utils.js +218 -45
  33. package/dist/vote.d.ts +2 -2
  34. package/dist/vote.d.ts.map +1 -1
  35. package/dist/vote.js +14 -14
  36. package/package.json +1 -1
  37. package/src/demand.ts +22 -8
  38. package/src/entity.ts +25 -6
  39. package/src/exception.ts +3 -1
  40. package/src/guard.ts +1 -1
  41. package/src/machine.ts +2 -2
  42. package/src/permission.ts +168 -14
  43. package/src/protocol.ts +127 -17
  44. package/src/repository.ts +64 -44
  45. package/src/resource.ts +61 -20
  46. package/src/reward.ts +46 -23
  47. package/src/service.ts +100 -57
  48. package/src/utils.ts +186 -22
  49. package/src/vote.ts +14 -14
package/dist/utils.js CHANGED
@@ -1,8 +1,70 @@
1
1
  import { BCS, getSuiMoveConfig } from '@mysten/bcs';
2
2
  import { ERROR, Errors } from './exception';
3
3
  import { isValidSuiAddress } from '@mysten/sui.js/utils';
4
- import { ValueType } from './protocol';
4
+ import { RepositoryValueType, ValueType } from './protocol';
5
+ export const MAX_U8 = BigInt('256');
6
+ export const MAX_U64 = BigInt('18446744073709551615');
7
+ export const MAX_U128 = BigInt('340282366920938463463374607431768211455');
8
+ export const MAX_U256 = BigInt('115792089237316195423570985008687907853269984665640564039457584007913129639935');
5
9
  export const OPTION_NONE = 0;
10
+ export const ValueTypeConvert = (type) => {
11
+ if (type === ValueType.TYPE_U8 || type === ValueType.TYPE_U64 || type === ValueType.TYPE_U128 ||
12
+ type === ValueType.TYPE_U256 || type === ValueType.TYPE_BOOL) {
13
+ return RepositoryValueType.PositiveNumber;
14
+ }
15
+ else if (type === ValueType.TYPE_VEC_U8 || type === ValueType.TYPE_VEC_U64 || type === ValueType.TYPE_VEC_U128 ||
16
+ type === ValueType.TYPE_VEC_U256 || type === ValueType.TYPE_VEC_BOOL) {
17
+ return RepositoryValueType.PositiveNumber_Vec;
18
+ }
19
+ else if (type === ValueType.TYPE_ADDRESS) {
20
+ return RepositoryValueType.Address;
21
+ }
22
+ else if (type === ValueType.TYPE_VEC_ADDRESS) {
23
+ return RepositoryValueType.Address_Vec;
24
+ }
25
+ else if (type === ValueType.TYPE_STRING) {
26
+ return RepositoryValueType.String;
27
+ }
28
+ else if (type === ValueType.TYPE_VEC_STRING) {
29
+ return RepositoryValueType.String_Vec;
30
+ }
31
+ return -1;
32
+ };
33
+ export const ResolveRepositoryData = (dataType, data) => {
34
+ if (dataType === RepositoryValueType.String) {
35
+ return { type: ValueType.TYPE_STRING, data: Bcs.getInstance().ser(ValueType.TYPE_VEC_U8, new TextEncoder().encode(data.toString())) };
36
+ }
37
+ else if (dataType === RepositoryValueType.PositiveNumber) {
38
+ try {
39
+ const value = BigInt(data.toString());
40
+ var t = ValueType.TYPE_U8;
41
+ if (value <= MAX_U8) {
42
+ }
43
+ else if (value <= MAX_U64) {
44
+ t = ValueType.TYPE_U64;
45
+ }
46
+ else if (value <= MAX_U128) {
47
+ t = ValueType.TYPE_U128;
48
+ }
49
+ else if (value <= MAX_U256) {
50
+ t = ValueType.TYPE_U256;
51
+ }
52
+ else {
53
+ return undefined;
54
+ }
55
+ }
56
+ catch (e) {
57
+ console.log(e);
58
+ return undefined;
59
+ }
60
+ return { type: t, data: Bcs.getInstance().ser(t, data) };
61
+ }
62
+ else if (dataType === RepositoryValueType.Address) {
63
+ return { type: ValueType.TYPE_ADDRESS, data: Bcs.getInstance().ser(ValueType.TYPE_ADDRESS, data) };
64
+ }
65
+ //@ todo vector....
66
+ return undefined;
67
+ };
6
68
  export const readOption = (arr, de) => {
7
69
  let o = arr.splice(0, 1);
8
70
  if (o[0] == 1) { // true
@@ -122,6 +184,20 @@ export class Bcs {
122
184
  'none': null,
123
185
  'some': 'T',
124
186
  });
187
+ this.bcs.registerStructType('EntStruct', {
188
+ 'avatar': 'vector<u8>',
189
+ 'resource': "Option<address>",
190
+ 'like': BCS.U32,
191
+ 'dislike': BCS.U32,
192
+ });
193
+ this.bcs.registerStructType('PersonalInfo', {
194
+ 'name': 'vector<u8>',
195
+ 'description': 'vector<u8>',
196
+ 'avatar': BCS.STRING,
197
+ 'twitter': BCS.STRING,
198
+ 'discord': BCS.STRING,
199
+ 'homepage': BCS.STRING,
200
+ });
125
201
  }
126
202
  static getInstance() {
127
203
  if (!Bcs._instance) {
@@ -184,53 +260,77 @@ export class Bcs {
184
260
  de(type, data) {
185
261
  switch (type) {
186
262
  case ValueType.TYPE_BOOL:
187
- return this.bcs.de(BCS.BOOL, data).toBytes();
263
+ return this.bcs.de(BCS.BOOL, data);
188
264
  case ValueType.TYPE_ADDRESS:
189
- return this.bcs.de(BCS.ADDRESS, data).toBytes();
265
+ return this.bcs.de(BCS.ADDRESS, data);
190
266
  case ValueType.TYPE_U64:
191
- return this.bcs.de(BCS.U64, data).toBytes();
267
+ return this.bcs.de(BCS.U64, data);
192
268
  case ValueType.TYPE_U8:
193
- return this.bcs.de(BCS.U8, data).toBytes();
269
+ console.log(data);
270
+ return this.bcs.de(BCS.U8, data);
194
271
  case ValueType.TYPE_VEC_U8:
195
- return this.bcs.de('vector<u8>', data).toBytes();
272
+ return this.bcs.de('vector<u8>', data);
196
273
  case ValueType.TYPE_U128:
197
- return this.bcs.de(BCS.U128, data).toBytes();
274
+ return this.bcs.de(BCS.U128, data);
198
275
  case ValueType.TYPE_VEC_ADDRESS:
199
- return this.bcs.de('vector<address>', data).toBytes();
276
+ return this.bcs.de('vector<address>', data);
200
277
  case ValueType.TYPE_VEC_BOOL:
201
- return this.bcs.de('vector<bool>', data).toBytes();
278
+ return this.bcs.de('vector<bool>', data);
202
279
  case ValueType.TYPE_VEC_VEC_U8:
203
- return this.bcs.de('vector<vector<u8>>', data).toBytes();
280
+ return this.bcs.de('vector<vector<u8>>', data);
204
281
  case ValueType.TYPE_VEC_U64:
205
- return this.bcs.de('vector<u64>', data).toBytes();
282
+ return this.bcs.de('vector<u64>', data);
206
283
  case ValueType.TYPE_VEC_U128:
207
- return this.bcs.de('vector<u128>', data).toBytes();
284
+ return this.bcs.de('vector<u128>', data);
208
285
  case ValueType.TYPE_OPTION_ADDRESS:
209
- return this.bcs.de('Option<address>', data).toBytes();
286
+ return this.bcs.de('Option<address>', data);
210
287
  case ValueType.TYPE_OPTION_BOOL:
211
- return this.bcs.de('Option<bool>', data).toBytes();
288
+ return this.bcs.de('Option<bool>', data);
212
289
  case ValueType.TYPE_OPTION_U8:
213
- return this.bcs.de('Option<u8>', data).toBytes();
290
+ return this.bcs.de('Option<u8>', data);
214
291
  case ValueType.TYPE_OPTION_U64:
215
- return this.bcs.de('Option<u64>', data).toBytes();
292
+ return this.bcs.de('Option<u64>', data);
216
293
  case ValueType.TYPE_OPTION_U128:
217
- return this.bcs.de('Option<u128>', data).toBytes();
294
+ return this.bcs.de('Option<u128>', data);
218
295
  case ValueType.TYPE_OPTION_U256:
219
- return this.bcs.de('Option<u256>', data).toBytes();
296
+ return this.bcs.de('Option<u256>', data);
220
297
  case ValueType.TYPE_OPTION_STRING:
221
- return this.bcs.de('Option<string>', data).toBytes();
298
+ return this.bcs.de('Option<string>', data);
222
299
  case ValueType.TYPE_VEC_U256:
223
- return this.bcs.de('vector<u256>', data).toBytes();
300
+ return this.bcs.de('vector<u256>', data);
224
301
  case ValueType.TYPE_STRING:
225
- return this.bcs.de(BCS.STRING, data).toBytes();
302
+ return this.bcs.de(BCS.STRING, data);
226
303
  case ValueType.TYPE_VEC_STRING:
227
- return this.bcs.de('vector<string>', data).toBytes();
304
+ return this.bcs.de('vector<string>', data);
228
305
  case ValueType.TYPE_U256:
229
- return this.bcs.de(BCS.U256, data).toBytes();
306
+ return this.bcs.de(BCS.U256, data);
230
307
  default:
231
308
  ERROR(Errors.bcsTypeInvalid, 'de');
232
309
  }
233
310
  }
311
+ de_ent(data) {
312
+ const struct_vec = this.bcs.de('vector<u8>', data);
313
+ return this.bcs.de('EntStruct', Uint8Array.from(struct_vec));
314
+ /* const reader = new BcsReader(data);
315
+ const total_len = reader.readULEB();
316
+ console.log(avatar_len)
317
+ const avatar = reader.readBytes(avatar_len);
318
+ console.log(avatar)
319
+ const option_resource = reader.read8();
320
+ var resource = '';
321
+ if (option_resource != 0) {
322
+ resource = reader.read256();
323
+ }
324
+ const like = reader.read32();
325
+ const dislike = reader.read32();
326
+ return {avatar:avatar, resource:resource, like:like, dislike:dislike}*/
327
+ }
328
+ de_entInfo(data) {
329
+ let r = this.bcs.de('PersonalInfo', data);
330
+ r.name = new TextDecoder().decode(Uint8Array.from(r.name));
331
+ r.description = new TextDecoder().decode(Uint8Array.from(r.description));
332
+ return r;
333
+ }
234
334
  }
235
335
  export function stringToUint8Array(str) {
236
336
  var arr = [];
@@ -251,7 +351,6 @@ export function numToUint8Array(num) {
251
351
  }
252
352
  return new Uint8Array(a);
253
353
  }
254
- // 判断是否为数组
255
354
  export const isArr = (origin) => {
256
355
  let str = '[object Array]';
257
356
  return Object.prototype.toString.call(origin) == str ? true : false;
@@ -281,31 +380,105 @@ export const IsValidName = (name) => { if (!name)
281
380
  export const IsValidName_AllowEmpty = (name) => { return name.length <= MAX_NAME_LENGTH; };
282
381
  export const IsValidEndpoint = (endpoint) => { if (!endpoint)
283
382
  return false; return endpoint.length <= MAX_ENDPOINT_LENGTH; };
284
- export const IsValidAddress = (addr) => { if (!addr || !isValidSuiAddress(addr))
285
- return false; return true; };
286
- export const IsValidArgType = (argType) => { if (!argType)
287
- return false; return argType.length != 0; };
288
- export const IsValidUint = (value) => { return Number.isSafeInteger(value) && value != 0; };
289
- export const IsValidInt = (value) => { return Number.isSafeInteger(value); };
290
- export const IsValidPercent = (value) => { return Number.isSafeInteger(value) && value > 0 && value <= 100; };
383
+ export const IsValidAddress = (addr) => {
384
+ if (!addr || !isValidSuiAddress(addr)) {
385
+ return false;
386
+ }
387
+ return true;
388
+ };
389
+ export const IsValidTokenType = (argType) => {
390
+ if (!argType || argType.length === 0) {
391
+ return false;
392
+ }
393
+ let arr = argType.split('::');
394
+ if (arr.length !== 3) {
395
+ return false;
396
+ }
397
+ if ((!IsValidAddress(arr[0]) && arr[0] != '0x2') || arr[1].length === 0 || arr[2].length === 0) {
398
+ return false;
399
+ }
400
+ return true;
401
+ };
402
+ export const IsValidArgType = (argType) => {
403
+ if (!argType || argType.length === 0) {
404
+ return false;
405
+ }
406
+ let arr = argType.split('::');
407
+ if (arr.length < 3) {
408
+ return false;
409
+ }
410
+ return true;
411
+ };
412
+ export const IsValidUint = (value) => {
413
+ if (typeof (value) === 'string') {
414
+ value = parseInt(value);
415
+ }
416
+ return Number.isSafeInteger(value) && value > 0;
417
+ };
418
+ export const IsValidInt = (value) => {
419
+ if (typeof (value) === 'string') {
420
+ value = parseInt(value);
421
+ }
422
+ return Number.isSafeInteger(value);
423
+ };
424
+ export const IsValidPercent = (value) => {
425
+ if (typeof (value) === 'string') {
426
+ value = parseInt(value);
427
+ }
428
+ return Number.isSafeInteger(value) && value > 0 && value <= 100;
429
+ };
291
430
  export const IsValidArray = (arr, validFunc) => {
292
- let bValid = true;
293
- arr.forEach((v) => {
294
- if (!validFunc(v)) {
295
- bValid = false;
431
+ for (let i = 0; i < arr.length; ++i) {
432
+ if (!validFunc(arr[i])) {
433
+ return false;
296
434
  }
297
- });
298
- return bValid;
435
+ }
436
+ return true;
437
+ };
438
+ export const ResolveU64 = (value) => {
439
+ const max = MAX_U64;
440
+ if (value > max) {
441
+ return max;
442
+ }
443
+ else {
444
+ return value;
445
+ }
446
+ };
447
+ export const ResolveBalance = (balance, decimals) => {
448
+ if (!balance)
449
+ return '';
450
+ if (balance === '0')
451
+ return '0';
452
+ if (decimals <= 0)
453
+ return balance;
454
+ var pos = decimals - balance.length;
455
+ if (pos === 0) {
456
+ return '.' + balance;
457
+ }
458
+ else if (pos < 0) {
459
+ let start = balance.slice(0, Math.abs(pos));
460
+ let end = balance.slice(Math.abs(pos));
461
+ return start + '.' + end;
462
+ }
463
+ else {
464
+ return '.' + balance.padStart(pos, '0');
465
+ }
299
466
  };
300
467
  export const OptionNone = (txb) => { return txb.pure([], BCS.U8); };
301
468
  export const ParseType = (type) => {
302
- let i = type.indexOf('<');
303
- if (i > 0 && type.length > 12) {
304
- let c = type.slice(0, i);
305
- if (c === '0x2::coin::Coin' || c === '0x0000000000000000000000000000000000000000000000000000000000000002::coin::Coin') {
306
- let coin = type.slice(i + 1, type.length - 1); // < >>
307
- let t = coin.lastIndexOf('::');
308
- return { isCoin: true, coin: coin, token: coin.slice(t + 2) };
469
+ if (type) {
470
+ const COIN = '0x2::coin::Coin<';
471
+ let i = type.indexOf(COIN);
472
+ if (i >= 0) {
473
+ let coin = type.slice(i + COIN.length, type.length - 1);
474
+ if (coin.indexOf('<') === -1) {
475
+ while (coin[coin.length - 1] == '>') {
476
+ coin = coin.slice(0, -1);
477
+ }
478
+ ;
479
+ let t = coin.lastIndexOf('::');
480
+ return { isCoin: true, coin: coin, token: coin.slice(t + 2) };
481
+ }
309
482
  }
310
483
  }
311
484
  return { isCoin: false, coin: '', token: '' };
@@ -337,5 +510,5 @@ export function isValidHttpUrl(url) {
337
510
  catch (_) {
338
511
  return false;
339
512
  }
340
- return r.protocol === "http:" || r.protocol === "https:";
513
+ return r.protocol === "http:" || r.protocol === "https:" || r.protocol === 'ipfs:';
341
514
  }
package/dist/vote.d.ts CHANGED
@@ -12,7 +12,7 @@ export declare class Vote {
12
12
  get_object(): TxbObject;
13
13
  private constructor();
14
14
  static From(protocol: Protocol, permission: PermissionObject, object: TxbObject): Vote;
15
- static New(protocol: Protocol, permission: PermissionObject, description: string, minutes_duration: number, max_choice_count?: number, reference_address?: string, passport?: PassportObject): Vote;
15
+ static New(protocol: Protocol, permission: PermissionObject, description: string, minutes_duration: boolean, time: number, max_choice_count?: number, reference_address?: string, passport?: PassportObject): Vote;
16
16
  launch(): VoteAddress;
17
17
  destroy(): void;
18
18
  set_description(description: string, passport?: PassportObject): void;
@@ -24,7 +24,7 @@ export declare class Vote {
24
24
  set_max_choice_count(max_choice_count: number, passport?: PassportObject): void;
25
25
  open_voting(passport?: PassportObject): void;
26
26
  lock_deadline(passport?: PassportObject): void;
27
- expand_deadline(minutes_expand: number, passport?: PassportObject): void;
27
+ expand_deadline(ms_expand: boolean, time: number, passport?: PassportObject): void;
28
28
  lock_guard(passport?: PassportObject): void;
29
29
  agree(options: string[], passport?: PassportObject): void;
30
30
  change_permission(new_permission: PermissionObject): void;
@@ -1 +1 @@
1
- {"version":3,"file":"vote.d.ts","sourceRoot":"","sources":["../src/vote.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAC,MAAM,YAAY,CAAC;AAKxH,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,MAAM,MAAM,UAAU,GAAG;IACrB,IAAI,EAAC,MAAM,CAAC;IACZ,iBAAiB,CAAC,EAAC,MAAM,CAAC;CAC7B,CAAA;AAED,qBAAa,IAAI;IACb,SAAS,CAAC,UAAU,mBAAC;IACrB,SAAS,CAAC,MAAM,EAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,QAAQ,WAAC;IAEnB,UAAU;IACV,OAAO;IAKP,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAC,QAAQ,EAAE,UAAU,EAAC,gBAAgB,EAAE,MAAM,EAAC,SAAS,GAAI,IAAI;IAKpF,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAC,QAAQ,EAAE,UAAU,EAAC,gBAAgB,EAAE,WAAW,EAAC,MAAM,EAAE,gBAAgB,EAAC,MAAM,EAClG,gBAAgB,CAAC,EAAC,MAAM,EAAE,iBAAiB,CAAC,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAC,cAAc,GAAI,IAAI;IAyCzF,MAAM,IAAK,WAAW;IAQtB,OAAO;IAQP,eAAe,CAAC,WAAW,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAC,cAAc;IAoB5D,aAAa,CAAC,iBAAiB,CAAC,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAC,cAAc;IAoBjE,SAAS,CAAC,KAAK,EAAC,WAAW,EAAE,MAAM,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAC,cAAc;IAwBpE,YAAY,CAAC,aAAa,EAAC,MAAM,EAAE,EAAE,SAAS,CAAC,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAC,cAAc;IAwCjF,UAAU,CAAC,OAAO,EAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,EAAC,cAAc;IAmCzD,aAAa,CAAC,OAAO,EAAC,MAAM,EAAE,EAAE,SAAS,CAAC,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAC,cAAc;IAuC5E,oBAAoB,CAAC,gBAAgB,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAC,cAAc;IAoBtE,WAAW,CAAC,QAAQ,CAAC,EAAC,cAAc;IAepC,aAAa,CAAC,QAAQ,CAAC,EAAC,cAAc;IAetC,eAAe,CAAC,cAAc,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAC,cAAc;IAqB/D,UAAU,CAAC,QAAQ,CAAC,EAAC,cAAc;IAenC,KAAK,CAAC,OAAO,EAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAC,cAAc;IAsBhD,iBAAiB,CAAC,cAAc,EAAC,gBAAgB;CAYpD"}
1
+ {"version":3,"file":"vote.d.ts","sourceRoot":"","sources":["../src/vote.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAC,MAAM,YAAY,CAAC;AAKxH,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,MAAM,MAAM,UAAU,GAAG;IACrB,IAAI,EAAC,MAAM,CAAC;IACZ,iBAAiB,CAAC,EAAC,MAAM,CAAC;CAC7B,CAAA;AAED,qBAAa,IAAI;IACb,SAAS,CAAC,UAAU,mBAAC;IACrB,SAAS,CAAC,MAAM,EAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,QAAQ,WAAC;IAEnB,UAAU;IACV,OAAO;IAKP,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAC,QAAQ,EAAE,UAAU,EAAC,gBAAgB,EAAE,MAAM,EAAC,SAAS,GAAI,IAAI;IAKpF,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAC,QAAQ,EAAE,UAAU,EAAC,gBAAgB,EAAE,WAAW,EAAC,MAAM,EAAE,gBAAgB,EAAC,OAAO,EAAG,IAAI,EAAC,MAAM,EACjH,gBAAgB,CAAC,EAAC,MAAM,EAAE,iBAAiB,CAAC,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAC,cAAc,GAAI,IAAI;IAyCzF,MAAM,IAAK,WAAW;IAQtB,OAAO;IAQP,eAAe,CAAC,WAAW,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAC,cAAc;IAoB5D,aAAa,CAAC,iBAAiB,CAAC,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAC,cAAc;IAoBjE,SAAS,CAAC,KAAK,EAAC,WAAW,EAAE,MAAM,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAC,cAAc;IAwBpE,YAAY,CAAC,aAAa,EAAC,MAAM,EAAE,EAAE,SAAS,CAAC,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAC,cAAc;IAwCjF,UAAU,CAAC,OAAO,EAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,EAAC,cAAc;IAmCzD,aAAa,CAAC,OAAO,EAAC,MAAM,EAAE,EAAE,SAAS,CAAC,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAC,cAAc;IAuC5E,oBAAoB,CAAC,gBAAgB,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAC,cAAc;IAoBtE,WAAW,CAAC,QAAQ,CAAC,EAAC,cAAc;IAepC,aAAa,CAAC,QAAQ,CAAC,EAAC,cAAc;IAetC,eAAe,CAAC,SAAS,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAC,cAAc;IAqBxE,UAAU,CAAC,QAAQ,CAAC,EAAC,cAAc;IAenC,KAAK,CAAC,OAAO,EAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAC,cAAc;IAsBhD,iBAAiB,CAAC,cAAc,EAAC,gBAAgB;CAYpD"}
package/dist/vote.js CHANGED
@@ -20,15 +20,15 @@ export class Vote {
20
20
  v.object = Protocol.TXB_OBJECT(protocol.CurrentSession(), object);
21
21
  return v;
22
22
  }
23
- static New(protocol, permission, description, minutes_duration, max_choice_count, reference_address, passport) {
23
+ static New(protocol, permission, description, minutes_duration, time, max_choice_count, reference_address, passport) {
24
24
  if (!Protocol.IsValidObjects([permission])) {
25
25
  ERROR(Errors.IsValidObjects, 'permission');
26
26
  }
27
27
  if (!IsValidDesription(description)) {
28
28
  ERROR(Errors.IsValidDesription);
29
29
  }
30
- if (!IsValidUint(minutes_duration)) {
31
- ERROR(Errors.IsValidUint, 'minutes_duration');
30
+ if (!IsValidUint(time)) {
31
+ ERROR(Errors.IsValidUint, 'time');
32
32
  }
33
33
  if (max_choice_count && !IsValidUint(max_choice_count)) {
34
34
  ERROR(Errors.IsValidUint, 'max_choice_count');
@@ -46,15 +46,15 @@ export class Vote {
46
46
  if (passport) {
47
47
  v.object = txb.moveCall({
48
48
  target: protocol.VoteFn('new_with_passport'),
49
- arguments: [passport, txb.pure(description), reference, txb.pure(Protocol.CLOCK_OBJECT),
50
- txb.pure(minutes_duration, BCS.U64), txb.pure(choice_count, BCS.U8), Protocol.TXB_OBJECT(txb, permission)]
49
+ arguments: [passport, txb.pure(description), reference, txb.pure(Protocol.CLOCK_OBJECT), txb.pure(minutes_duration, BCS.BOOL),
50
+ txb.pure(time, BCS.U64), txb.pure(choice_count, BCS.U8), Protocol.TXB_OBJECT(txb, permission)]
51
51
  });
52
52
  }
53
53
  else {
54
54
  v.object = txb.moveCall({
55
55
  target: protocol.VoteFn('new'),
56
- arguments: [txb.pure(description), reference, txb.pure(Protocol.CLOCK_OBJECT),
57
- txb.pure(minutes_duration, BCS.U64), txb.pure(choice_count, BCS.U8), Protocol.TXB_OBJECT(txb, permission)]
56
+ arguments: [txb.pure(description), reference, txb.pure(Protocol.CLOCK_OBJECT), txb.pure(minutes_duration, BCS.BOOL),
57
+ txb.pure(time, BCS.U64), txb.pure(choice_count, BCS.U8), Protocol.TXB_OBJECT(txb, permission)]
58
58
  });
59
59
  }
60
60
  return v;
@@ -298,23 +298,23 @@ export class Vote {
298
298
  });
299
299
  }
300
300
  }
301
- expand_deadline(minutes_expand, passport) {
302
- if (!IsValidUint(minutes_expand)) {
303
- ERROR(Errors.IsValidUint, 'minutes_expand');
301
+ expand_deadline(ms_expand, time, passport) {
302
+ if (!IsValidUint(time)) {
303
+ ERROR(Errors.IsValidUint, 'time');
304
304
  }
305
305
  let txb = this.protocol.CurrentSession();
306
306
  if (passport) {
307
307
  txb.moveCall({
308
308
  target: this.protocol.VoteFn('deadline_expand_with_passport'),
309
- arguments: [passport, Protocol.TXB_OBJECT(txb, this.object),
310
- txb.pure(minutes_expand, BCS.U64), Protocol.TXB_OBJECT(txb, this.permission)]
309
+ arguments: [passport, Protocol.TXB_OBJECT(txb, this.object), txb.pure(ms_expand, BCS.BOOL),
310
+ txb.pure(time, BCS.U64), Protocol.TXB_OBJECT(txb, this.permission)]
311
311
  });
312
312
  }
313
313
  else {
314
314
  txb.moveCall({
315
315
  target: this.protocol.VoteFn('deadline_expand'),
316
- arguments: [Protocol.TXB_OBJECT(txb, this.object),
317
- txb.pure(minutes_expand, BCS.U64), Protocol.TXB_OBJECT(txb, this.permission)]
316
+ arguments: [Protocol.TXB_OBJECT(txb, this.object), txb.pure(ms_expand, BCS.BOOL),
317
+ txb.pure(time, BCS.U64), Protocol.TXB_OBJECT(txb, this.permission)]
318
318
  });
319
319
  }
320
320
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wowok",
3
- "version": "1.2.4",
3
+ "version": "1.2.7",
4
4
  "description": "Create, collaborate, and transact on your own terms with the AI-driven web3 collaboration protocol.",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
package/src/demand.ts CHANGED
@@ -28,7 +28,7 @@ export class Demand {
28
28
  this.object = '';
29
29
  }
30
30
  static New(protocol:Protocol, bounty_type:string, permission:PermissionObject, description:string,
31
- bounty:TransactionResult, passport?:PassportObject) : Demand {
31
+ bounty:TransactionResult | string, passport?:PassportObject) : Demand {
32
32
  if (!Protocol.IsValidObjects([permission, bounty])) {
33
33
  ERROR(Errors.IsValidObjects, 'permission, bounty');
34
34
  }
@@ -44,13 +44,13 @@ export class Demand {
44
44
  if (passport) {
45
45
  d.object = txb.moveCall({
46
46
  target:protocol.DemandFn('new_with_passport') as FnCallType,
47
- arguments:[passport, txb.pure(description), bounty, Protocol.TXB_OBJECT(txb, permission)],
47
+ arguments:[passport, txb.pure(description), txb.object(bounty), Protocol.TXB_OBJECT(txb, permission)],
48
48
  typeArguments:[bounty_type],
49
49
  })
50
50
  } else {
51
51
  d.object = txb.moveCall({
52
52
  target:protocol.DemandFn('new') as FnCallType,
53
- arguments:[txb.pure(description), bounty, Protocol.TXB_OBJECT(txb, permission)],
53
+ arguments:[txb.pure(description), txb.object(bounty), Protocol.TXB_OBJECT(txb, permission)],
54
54
  typeArguments:[bounty_type],
55
55
  })
56
56
  }
@@ -92,23 +92,26 @@ export class Demand {
92
92
  }
93
93
  }
94
94
 
95
- expand_time(minutes_duration:number, passport?:PassportObject) {
96
- if (!IsValidUint(minutes_duration)) {
97
- ERROR(Errors.IsValidUint, 'minutes_duration');
95
+ // minutes_duration TRUE , time is minutes count; otherwise, the deadline time
96
+ expand_time(minutes_duration:boolean, time: number, passport?:PassportObject) {
97
+ if (!IsValidUint(time)) {
98
+ ERROR(Errors.IsValidUint, 'time');
98
99
  }
99
100
 
100
101
  let txb = this.protocol.CurrentSession();
101
102
  if (passport) {
102
103
  txb.moveCall({
103
104
  target:this.protocol.DemandFn('time_expand_with_passport') as FnCallType,
104
- arguments:[passport, Protocol.TXB_OBJECT(txb, this.object), txb.pure(minutes_duration, BCS.U64),
105
+ arguments:[passport, Protocol.TXB_OBJECT(txb, this.object), txb.pure(minutes_duration, BCS.BOOL),
106
+ txb.pure(time, BCS.U64),
105
107
  txb.object(Protocol.CLOCK_OBJECT), Protocol.TXB_OBJECT(txb, this.permission)],
106
108
  typeArguments:[this.bounty_type],
107
109
  })
108
110
  } else {
109
111
  txb.moveCall({
110
112
  target:this.protocol.DemandFn('time_expand') as FnCallType,
111
- arguments:[Protocol.TXB_OBJECT(txb, this.object), txb.pure(minutes_duration, BCS.U64),
113
+ arguments:[Protocol.TXB_OBJECT(txb, this.object), txb.pure(minutes_duration, BCS.BOOL),
114
+ txb.pure(time, BCS.U64),
112
115
  txb.object(Protocol.CLOCK_OBJECT), Protocol.TXB_OBJECT(txb, this.permission)],
113
116
  typeArguments:[this.bounty_type],
114
117
  })
@@ -255,6 +258,17 @@ export class Demand {
255
258
  })
256
259
  this.permission = new_permission
257
260
  }
261
+ static parseObjectType = (chain_type:string) : string => {
262
+ if (chain_type) {
263
+ const s = 'demand::Demand<'
264
+ const i = chain_type.indexOf(s);
265
+ if (i > 0) {
266
+ let r = chain_type.slice(i + s.length, chain_type.length-1);
267
+ return r
268
+ }
269
+ }
270
+ return '';
271
+ }
258
272
 
259
273
  static MAX_BOUNTY_COUNT = 200;
260
274
  static MAX_PRESENTERS_COUNT = 200;
package/src/entity.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { BCS } from '@mysten/bcs';
1
+ import { BCS, encodeStr, getSuiMoveConfig } from '@mysten/bcs';
2
2
  import { Protocol, FnCallType, TxbObject, ResourceAddress, PermissionObject, ResourceObject} from './protocol';
3
3
  import { IsValidDesription, IsValidAddress, IsValidName, isValidHttpUrl, Bcs, } from './utils';
4
4
  import { ERROR, Errors } from './exception';
@@ -48,19 +48,26 @@ export class Entity {
48
48
  if (info?.homepage && !isValidHttpUrl(info.homepage)) ERROR(Errors.isValidHttpUrl, 'update:homepage');
49
49
  if (info?.discord && !IsValidName(info.discord)) ERROR(Errors.IsValidName, 'update:discord');
50
50
 
51
- let txb = this.protocol.CurrentSession();
51
+ const txb = this.protocol.CurrentSession();
52
+ const bytes = Bcs.getInstance().bcs.ser('PersonalInfo', {
53
+ name:info.name ? new TextEncoder().encode(info.name) :'',
54
+ description : info?.description ? new TextEncoder().encode(info.description) : '',
55
+ avatar : info?.avatar ?? '',
56
+ twitter : info?.twitter ?? '',
57
+ discord : info?.discord ?? '',
58
+ homepage : info?.homepage ?? '',
59
+ }).toBytes();
52
60
  txb.moveCall({
53
61
  target:this.protocol.EntityFn('avatar_update') as FnCallType,
54
- arguments:[Protocol.TXB_OBJECT(txb, this.object), txb.pure(JSON.stringify(info), BCS.STRING)]
62
+ arguments:[Protocol.TXB_OBJECT(txb, this.object), txb.pure([].slice.call(bytes), 'vector<u8>')]
55
63
  })
56
64
  }
57
65
 
58
- create_resource(description:string) : ResourceAddress {
59
- if (!IsValidDesription(description)) ERROR(Errors.IsValidDesription, 'create_resource');
66
+ create_resource() : ResourceAddress {
60
67
  let txb = this.protocol.CurrentSession();
61
68
  return txb.moveCall({
62
69
  target:this.protocol.EntityFn('resource_create') as FnCallType,
63
- arguments:[Protocol.TXB_OBJECT(txb, this.object), txb.pure(description, BCS.STRING)]
70
+ arguments:[Protocol.TXB_OBJECT(txb, this.object)]
64
71
  })
65
72
  }
66
73
 
@@ -80,4 +87,16 @@ export class Entity {
80
87
  arguments:[Protocol.TXB_OBJECT(txb, this.object), Protocol.TXB_OBJECT(txb, resource.get_object()), txb.pure(new_address, BCS.ADDRESS)]
81
88
  })
82
89
  }
90
+
91
+ query_ent(address_queried:string) {
92
+ if (!address_queried) {
93
+ ERROR(Errors.InvalidParam, 'query_ent');
94
+ }
95
+
96
+ const txb = this.protocol.CurrentSession();
97
+ txb.moveCall({
98
+ target:this.protocol.EntityFn('QueryEnt') as FnCallType,
99
+ arguments:[Protocol.TXB_OBJECT(txb, this.object), txb.pure(address_queried, BCS.ADDRESS)]
100
+ })
101
+ }
83
102
  }
package/src/exception.ts CHANGED
@@ -5,7 +5,8 @@ export enum Errors {
5
5
  IsValidName_AllowEmpty = 'invalid name',
6
6
  IsValidEndpoint = 'invalid endpoint',
7
7
  IsValidAddress = 'invalid address',
8
- IsValidArgType = 'invalid argumentType',
8
+ IsValidArgType = 'invalid argument type',
9
+ IsValidTokenType = 'invalid token type',
9
10
  IsValidUint = 'invalid uint',
10
11
  IsValidInt = 'invalid int',
11
12
  IsValidPercent = 'invalid percent',
@@ -18,6 +19,7 @@ export enum Errors {
18
19
  Fail = 'fail',
19
20
  IsValidIndentifier = 'indentifier invalid',
20
21
  isValidHttpUrl = 'invalid url',
22
+ IsValidUserDefinedIndex = 'invalid user defined permission index',
21
23
  bcsTypeInvalid = 'invalid bcs type',
22
24
  }
23
25
 
package/src/guard.ts CHANGED
@@ -194,7 +194,7 @@ export class Guard {
194
194
  [MODULES.reward, 'sponsor', 162, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
195
195
  [MODULES.reward, 'sponsor_count', 163, [], ValueType.TYPE_U64],
196
196
  [MODULES.reward, 'bAllowRepeatClaim', 164, [], ValueType.TYPE_BOOL],
197
- [MODULES.reward, 'claimed_potions_count', 165, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
197
+ [MODULES.reward, 'claimed_portions_count', 165, [ValueType.TYPE_ADDRESS], ValueType.TYPE_U64],
198
198
 
199
199
  [MODULES.vote, 'permission', 171, [], ValueType.TYPE_ADDRESS],
200
200
  [MODULES.vote, 'bOptions_locked_for_voting', 172, [], ValueType.TYPE_BOOL],
package/src/machine.ts CHANGED
@@ -247,7 +247,7 @@ export class Machine {
247
247
  } else {
248
248
  txb.moveCall({
249
249
  target:this.protocol.MachineFn('repository_remove_with_passport') as FnCallType,
250
- arguments:[passport, Protocol.TXB_OBJECT(txb, this.object), txb.pure(repositories, 'vector<address>'),
250
+ arguments:[passport, Protocol.TXB_OBJECT(txb, this.object), txb.pure(array_unique(repositories), 'vector<address>'),
251
251
  Protocol.TXB_OBJECT(txb, this.permission)],
252
252
  })
253
253
  }
@@ -260,7 +260,7 @@ export class Machine {
260
260
  } else {
261
261
  txb.moveCall({
262
262
  target:this.protocol.MachineFn('repository_remove') as FnCallType,
263
- arguments:[Protocol.TXB_OBJECT(txb, this.object), txb.pure(repositories, 'vector<address>'),
263
+ arguments:[Protocol.TXB_OBJECT(txb, this.object), txb.pure(array_unique(repositories), 'vector<address>'),
264
264
  Protocol.TXB_OBJECT(txb, this.permission)],
265
265
  })
266
266
  }