wowok 1.3.6 → 1.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wowok",
3
- "version": "1.3.6",
3
+ "version": "1.3.9",
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",
@@ -42,8 +42,7 @@
42
42
  "license": "Apache-2.0",
43
43
  "dependencies": {
44
44
  "@mysten/bcs": "^0.11.1",
45
- "@mysten/sui": "^1.7.0",
46
- "graphql-tag": "^2.12.6"
45
+ "@mysten/sui": "^1.7.0"
47
46
  },
48
47
  "devDependencies": {
49
48
  "@types/node": "^20.12.12",
package/src/entity.ts CHANGED
@@ -1,9 +1,13 @@
1
1
  import { Protocol, FnCallType, TxbObject, ResourceAddress, PermissionObject, ResourceObject} from './protocol';
2
- import { IsValidDesription, IsValidAddress, IsValidName, isValidHttpUrl, Bcs, } from './utils';
2
+ import { IsValidDesription, IsValidAddress, IsValidName, isValidHttpUrl, Bcs, IsValidArray, } from './utils';
3
3
  import { ERROR, Errors } from './exception';
4
4
  import { Resource } from './resource';
5
5
  import { type TransactionResult, Transaction as TransactionBlock } from '@mysten/sui/transactions';
6
6
 
7
+ export interface Safer {
8
+ name: string;
9
+ value: string;
10
+ }
7
11
  export interface Entity_Info {
8
12
  name: string;
9
13
  description?: string;
@@ -39,7 +43,42 @@ export class Entity {
39
43
  this.txb.pure.address(address)]
40
44
  })
41
45
  }
42
-
46
+
47
+ add_safer(safer: Safer[], bExistModify:boolean=true) {
48
+ if (safer.length === 0) return ;
49
+ if (!IsValidArray(safer, (v:Safer) => {
50
+ if (!IsValidName(v.name) || !IsValidDesription(v.value)) {
51
+ return false
52
+ }
53
+ })) {
54
+ ERROR(Errors.InvalidParam, 'add_safer');
55
+ }
56
+
57
+ const name = safer.map((v)=>v.name);
58
+ const value = safer.map((v)=>v.value);
59
+ this.txb.moveCall({
60
+ target:Protocol.Instance().EntityFn('safer_add') as FnCallType,
61
+ arguments:[Protocol.TXB_OBJECT(this.txb, this.object), this.txb.pure.vector('string', name),
62
+ this.txb.pure.vector('string', value), this.txb.pure.bool(bExistModify)]
63
+ })
64
+ }
65
+
66
+ remove_safer(name:string[], removeall?:boolean) {
67
+ if (name.length === 0 && !removeall) return;
68
+
69
+ if (removeall) {
70
+ this.txb.moveCall({
71
+ target:Protocol.Instance().EntityFn('safer_remove_all') as FnCallType,
72
+ arguments:[Protocol.TXB_OBJECT(this.txb, this.object)]
73
+ })
74
+ } else {
75
+ this.txb.moveCall({
76
+ target:Protocol.Instance().EntityFn('safer_remove') as FnCallType,
77
+ arguments:[Protocol.TXB_OBJECT(this.txb, this.object), this.txb.pure.vector('string', name)]
78
+ })
79
+ }
80
+ }
81
+
43
82
  update(info: Entity_Info) {
44
83
  if (!IsValidName(info.name)) ERROR(Errors.IsValidName, 'update');
45
84
  if (info?.description && !IsValidDesription(info.description)) ERROR(Errors.IsValidDesription, 'update');
@@ -63,7 +102,6 @@ export class Entity {
63
102
  }
64
103
 
65
104
  create_resource() : ResourceAddress {
66
-
67
105
  return this.txb.moveCall({
68
106
  target:Protocol.Instance().EntityFn('resource_create') as FnCallType,
69
107
  arguments:[Protocol.TXB_OBJECT(this.txb, this.object)]
@@ -71,7 +109,6 @@ export class Entity {
71
109
  }
72
110
 
73
111
  create_resource2(): ResourceObject {
74
-
75
112
  return this.txb.moveCall({
76
113
  target:Protocol.Instance().EntityFn('resource_create2') as FnCallType,
77
114
  arguments:[Protocol.TXB_OBJECT(this.txb, this.object)]
@@ -79,7 +116,6 @@ export class Entity {
79
116
  }
80
117
 
81
118
  destroy_resource(resource:Resource) {
82
-
83
119
  return this.txb.moveCall({
84
120
  target:Protocol.Instance().EntityFn('resource_destroy') as FnCallType,
85
121
  arguments:[Protocol.TXB_OBJECT(this.txb, this.object), Protocol.TXB_OBJECT(this.txb, resource.get_object())]
@@ -98,7 +134,7 @@ export class Entity {
98
134
 
99
135
  query_ent(address_queried:string) {
100
136
  if (!IsValidAddress(address_queried)) {
101
- ERROR(Errors.InvalidParam, 'query_ent');
137
+ ERROR(Errors.InvalidParam, 'query_ent');
102
138
  }
103
139
 
104
140
  this.txb.moveCall({
package/src/guard.ts CHANGED
@@ -157,15 +157,12 @@ export class Guard {
157
157
  [MODULES.order, 'Service', 93, [], ValueType.TYPE_ADDRESS],
158
158
  [MODULES.order, 'Has Progress', 94, [], ValueType.TYPE_BOOL],
159
159
  [MODULES.order, 'Progress', 95, [], ValueType.TYPE_ADDRESS],
160
- [MODULES.order, 'Has Required Info', 96, [], ValueType.TYPE_BOOL],
161
- [MODULES.order, 'Required Info of Service-Pubkey', 97, [], ValueType.TYPE_VEC_U8],
162
- [MODULES.order, 'Required Info of Customer-Pubkey', 98, [], ValueType.TYPE_VEC_U8],
163
- [MODULES.order, 'Required Info', 99, [], ValueType.TYPE_VEC_VEC_U8],
164
- [MODULES.order, 'Discount Used', 100, [], ValueType.TYPE_BOOL],
165
- [MODULES.order, 'Discount', 101, [], ValueType.TYPE_ADDRESS],
166
- [MODULES.order, 'Balance', 102, [], ValueType.TYPE_U64],
167
- [MODULES.order, 'Be Refunded', 103, [], ValueType.TYPE_BOOL],
168
- [MODULES.order, 'Be Withdrawed', 104, [], ValueType.TYPE_BOOL],
160
+ [MODULES.order, 'Required Info Counts', 96, [], ValueType.TYPE_U64],
161
+ [MODULES.order, 'Discount Used', 97, [], ValueType.TYPE_BOOL],
162
+ [MODULES.order, 'Discount', 98, [], ValueType.TYPE_ADDRESS],
163
+ [MODULES.order, 'Balance', 99, [], ValueType.TYPE_U64],
164
+ [MODULES.order, 'Be Refunded', 100, [], ValueType.TYPE_BOOL],
165
+ [MODULES.order, 'Be Withdrawed', 101, [], ValueType.TYPE_BOOL],
169
166
 
170
167
  [MODULES.service, 'Permission', 111, [], ValueType.TYPE_ADDRESS],
171
168
  [MODULES.service, 'Payee', 112, [], ValueType.TYPE_ADDRESS],
package/src/permission.ts CHANGED
@@ -44,7 +44,7 @@ export enum PermissionIndex {
44
44
  service_publish = 220,
45
45
  service_clone = 221,
46
46
  service_customer_required = 222,
47
- service_change_order_required_pubkey = 224,
47
+ //service_change_order_required_pubkey = 224,
48
48
  service_pause = 225,
49
49
 
50
50
  reward = 240,
@@ -141,7 +141,7 @@ export const PermissionInfo : PermissionInfoType[] = [
141
141
  {index:PermissionIndex.service_publish, name:'Publish', description:'Publish Service', module: 'service'},
142
142
  {index:PermissionIndex.service_clone, name:'Clone', description:'Clone Service', module: 'service'},
143
143
  {index:PermissionIndex.service_customer_required, name:'Buyer info', description:'Set Service buyer info required', module: 'service'},
144
- {index:PermissionIndex.service_change_order_required_pubkey, name:'Order pubkey', description:'Update Serivce order pubkey', module: 'service'},
144
+ //{index:PermissionIndex.service_change_order_required_pubkey, name:'Order pubkey', description:'Update Serivce order pubkey', module: 'service'},
145
145
  {index:PermissionIndex.service_pause, name:'Pause', description:'Pause/Unpause Service', module: 'service'},
146
146
 
147
147
  {index:PermissionIndex.reward, name:'Reward', description:'Launch new Reward', module: 'reward'},
package/src/protocol.ts CHANGED
@@ -191,9 +191,9 @@ export enum ENTRYPOINT {
191
191
  }
192
192
 
193
193
  const TESTNET = {
194
- package: "0xa5a2e79de613b6585a584dd9aee8f464a1a1f2826fefc656f44e95ee3c60d673",
195
- wowok_object: '0x4723d6660029b1d1a70d6ebb7bfed4b3f06c7e811d6b9845b41d7451555fee02',
196
- entity_object: '0xb91ae0f0e38f205c7d4f90639fa0bd6fc6448889f8de38547dd6fb29304fc89b',
194
+ package: "0x366cbf58452fca91d1028af0bc9709c1826c2d89dce258ddf1d4fe9a95ffa6d7",
195
+ wowok_object: '0xadd1755c84aa7e99ecd84a71eed6b7150f097a88f3a60f4770be72a93f03fca4',
196
+ entity_object: '0x41b5e7defd512bb098c367c04f2731c81e468365f824b2ab354fb9dbf5a42549',
197
197
  }
198
198
 
199
199
  const MAINNET = {
package/src/service.ts CHANGED
@@ -35,7 +35,6 @@ export type Service_Buy_RequiredInfo = {
35
35
  customer_info: string[];
36
36
  }
37
37
  export type Customer_RequiredInfo = {
38
- pubkey: string;
39
38
  customer_pubkey: string;
40
39
  customer_info_crypt: string[];
41
40
  }
@@ -625,7 +624,7 @@ export class Service {
625
624
  });
626
625
  }
627
626
 
628
- // 同时支持withdraw guardpermission guard
627
+ // support both withdraw guard and permission guard
629
628
  withdraw(order:OrderObject, passport?:PassportObject) {
630
629
  if (!Protocol.IsValidObjects([order])) {
631
630
  ERROR(Errors.IsValidObjects, 'order')
@@ -644,8 +643,8 @@ export class Service {
644
643
  typeArguments:[this.pay_token_type]
645
644
  })
646
645
  }
647
-
648
646
  }
647
+
649
648
  set_buy_guard(guard?:GuardObject, passport?:PassportObject) {
650
649
  if (passport) {
651
650
  if (guard) {
@@ -729,6 +728,7 @@ export class Service {
729
728
  })
730
729
  }
731
730
  }
731
+
732
732
  publish(passport?:PassportObject) {
733
733
  if (passport) {
734
734
  this.txb.moveCall({
@@ -745,6 +745,7 @@ export class Service {
745
745
  }
746
746
 
747
747
  }
748
+
748
749
  clone(new_token_type?:string, passport?:PassportObject) : ServiceObject {
749
750
  if (passport) {
750
751
  return this.txb.moveCall({
@@ -786,6 +787,7 @@ export class Service {
786
787
  })
787
788
  }
788
789
  }
790
+
789
791
  remove_customer_required(passport?:PassportObject) {
790
792
  if (passport) {
791
793
  this.txb.moveCall({
@@ -801,6 +803,7 @@ export class Service {
801
803
  })
802
804
  }
803
805
  }
806
+
804
807
  change_required_pubkey(pubkey:string, passport?:PassportObject) {
805
808
  if (!pubkey) {
806
809
  ERROR(Errors.InvalidParam, 'pubkey')
@@ -822,6 +825,7 @@ export class Service {
822
825
  })
823
826
  }
824
827
  }
828
+ /*
825
829
  change_order_required_pubkey(order:OrderObject, pubkey:string, passport?:PassportObject) {
826
830
  if (!Protocol.IsValidObjects([order])) {
827
831
  ERROR(Errors.IsValidObjects, 'order')
@@ -845,7 +849,8 @@ export class Service {
845
849
  typeArguments:[this.pay_token_type]
846
850
  })
847
851
  }
848
- }
852
+ } */
853
+
849
854
  pause(pause:boolean, passport?:PassportObject) {
850
855
  if (passport) {
851
856
  this.txb.moveCall({
@@ -860,9 +865,9 @@ export class Service {
860
865
  typeArguments:[this.pay_token_type]
861
866
  })
862
867
  }
863
-
864
868
  }
865
- customer_refund(order:OrderObject, passport?:PassportObject) {
869
+
870
+ refund(order:OrderObject, passport?:PassportObject) {
866
871
  if (!Protocol.IsValidObjects([order])) {
867
872
  ERROR(Errors.IsValidObjects, 'order')
868
873
  }
@@ -883,22 +888,21 @@ export class Service {
883
888
  }
884
889
 
885
890
  update_order_required_info(order:OrderObject, customer_info_crypto: Customer_RequiredInfo) {
891
+ if (!customer_info_crypto.customer_pubkey || customer_info_crypto.customer_info_crypt.length === 0) {
892
+ return
893
+ }
894
+
886
895
  if (!Protocol.IsValidObjects([order])) {
887
896
  ERROR(Errors.IsValidObjects, 'order')
888
897
  }
889
- if (!customer_info_crypto.pubkey || !customer_info_crypto.customer_info_crypt) {
890
- ERROR(Errors.InvalidParam, 'customer_info_crypto')
891
- }
892
898
 
893
899
  this.txb.moveCall({
894
900
  target:Protocol.Instance().ServiceFn('order_required_info_update') as FnCallType,
895
901
  arguments:[Protocol.TXB_OBJECT(this.txb, this.object), Protocol.TXB_OBJECT(this.txb, order),
896
- this.txb.pure.string(customer_info_crypto.pubkey),
897
902
  this.txb.pure.string(customer_info_crypto.customer_pubkey),
898
- this.txb.pure.vector('vector<u8>', array_unique(customer_info_crypto.customer_info_crypt))],
903
+ this.txb.pure.vector('string', customer_info_crypto.customer_info_crypt)],
899
904
  typeArguments:[this.pay_token_type]
900
905
  })
901
-
902
906
  }
903
907
 
904
908
  buy(buy_items:Service_Buy[], coin:CoinObject, discount?:DiscountObject, machine?:MachineObject,
@@ -924,7 +928,6 @@ export class Service {
924
928
  const clock = this.txb.sharedObjectRef(Protocol.CLOCK_OBJECT);
925
929
  if (passport) {
926
930
  if (discount) {
927
- console.log(1)
928
931
  order = this.txb.moveCall({
929
932
  target:Protocol.Instance().ServiceFn('dicount_buy_with_passport') as FnCallType,
930
933
  arguments: [passport, Protocol.TXB_OBJECT(this.txb, this.object), this.txb.pure.vector('string', name),
@@ -932,7 +935,6 @@ export class Service {
932
935
  Protocol.TXB_OBJECT(this.txb, coin), Protocol.TXB_OBJECT(this.txb, discount), this.txb.object(clock)],
933
936
  typeArguments:[this.pay_token_type]
934
937
  })} else {
935
- console.log(2)
936
938
  order = this.txb.moveCall({
937
939
  target:Protocol.Instance().ServiceFn('buy_with_passport') as FnCallType,
938
940
  arguments: [passport, Protocol.TXB_OBJECT(this.txb, this.object), this.txb.pure.vector('string', name),
@@ -941,7 +943,6 @@ export class Service {
941
943
  typeArguments:[this.pay_token_type]
942
944
  })}
943
945
  } else {
944
- console.log(3)
945
946
  if (discount) {
946
947
  order = this.txb.moveCall({
947
948
  target:Protocol.Instance().ServiceFn('disoucnt_buy') as FnCallType,
@@ -952,7 +953,6 @@ export class Service {
952
953
  Protocol.TXB_OBJECT(this.txb, discount), this.txb.object(clock)],
953
954
  typeArguments:[this.pay_token_type]
954
955
  })} else {
955
- console.log(4)
956
956
  order = this.txb.moveCall({
957
957
  target:Protocol.Instance().ServiceFn('buy') as FnCallType,
958
958
  arguments: [Protocol.TXB_OBJECT(this.txb, this.object), this.txb.pure.vector('string', name),
@@ -1022,6 +1022,18 @@ export class Service {
1022
1022
  }
1023
1023
  return '';
1024
1024
  }
1025
+
1026
+ static parseOrderObjectType = (chain_type:string | undefined | null) : string => {
1027
+ if (chain_type) {
1028
+ const s = 'order::Order<'
1029
+ const i = chain_type.indexOf(s);
1030
+ if (i > 0) {
1031
+ return chain_type.slice(i + s.length, chain_type.length-1);
1032
+ }
1033
+ }
1034
+ return '';
1035
+ }
1036
+
1025
1037
  static endpoint = (service_endpoint:string, item_endpoint:string, item_name:string) => {
1026
1038
  if (item_endpoint) {
1027
1039
  return item_endpoint
@@ -1029,6 +1041,7 @@ export class Service {
1029
1041
  return service_endpoint + '/sales/' + encodeURI(item_name);
1030
1042
  }
1031
1043
  }
1044
+
1032
1045
  static DiscountObjects = (owner:string, handleDiscountObject:handleDiscountObject) => {
1033
1046
  Protocol.Client().getOwnedObjects({owner:owner,
1034
1047
  filter:{MoveModule:{module:'order', package:Protocol.Instance().Package()}},
package/src/utils.ts CHANGED
@@ -1,8 +1,7 @@
1
- import { bcs, BCS, toHEX, fromHEX, getSuiMoveConfig, TypeName, BcsReader } from '@mysten/bcs';
2
- import { Transaction as TransactionBlock, Inputs, TransactionResult, TransactionArgument } from '@mysten/sui/transactions';
1
+ import { BCS, getSuiMoveConfig, } from '@mysten/bcs';
3
2
  import { SuiObjectResponse, DynamicFieldPage } from '@mysten/sui/client';
4
3
  import { ERROR, Errors } from './exception';
5
- import { isValidSuiAddress, isValidSuiObjectId } from '@mysten/sui/utils'
4
+ import { isValidSuiAddress} from '@mysten/sui/utils'
6
5
  import { RepositoryValueType, ValueType, Protocol } from './protocol'
7
6
 
8
7
  export const MAX_U8 = BigInt('255');
@@ -162,6 +161,8 @@ export class Bcs {
162
161
  this.bcs.registerStructType('EntStruct', {
163
162
  'avatar': 'vector<u8>',
164
163
  'resource': "Option<address>",
164
+ "safer_name": "vector<string>",
165
+ "safer_value": "vector<string>",
165
166
  'like': BCS.U32,
166
167
  'dislike': BCS.U32,
167
168
  })
@@ -306,19 +307,6 @@ export class Bcs {
306
307
  if (!data || data.length < 2) return ''
307
308
  const struct_vec = this.bcs.de('vector<u8>', data);
308
309
  return this.bcs.de('EntStruct', Uint8Array.from(struct_vec));
309
- /* const reader = new BcsReader(data);
310
- const total_len = reader.readULEB();
311
- console.log(avatar_len)
312
- const avatar = reader.readBytes(avatar_len);
313
- console.log(avatar)
314
- const option_resource = reader.read8();
315
- var resource = '';
316
- if (option_resource != 0) {
317
- resource = reader.read256();
318
- }
319
- const like = reader.read32();
320
- const dislike = reader.read32();
321
- return {avatar:avatar, resource:resource, like:like, dislike:dislike}*/
322
310
  }
323
311
  de_entInfo(data:Uint8Array | undefined) : any {
324
312
  if (!data || data.length === 0) return ''
@@ -558,7 +546,7 @@ export interface query_object_param {
558
546
  export const query_object = (param:query_object_param) => {
559
547
  if (param.id) {
560
548
  if(param?.onBegin) param.onBegin(param.id);
561
- Protocol.Client().getObject({id:param.id, options:{showContent:true, showType:true}}).then((res) => {
549
+ Protocol.Client().getObject({id:param.id, options:{showContent:true, showType:true, showOwner:true}}).then((res) => {
562
550
  if (res.error) {
563
551
  if(param?.onObjectErr) param.onObjectErr(param.id, res.error);
564
552
  } else {