wowok_agent 1.2.35 → 1.2.38

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 (98) hide show
  1. package/dist/call/arbitration.d.ts +69 -0
  2. package/dist/call/arbitration.d.ts.map +1 -0
  3. package/dist/call/arbitration.js +186 -0
  4. package/dist/call/arbitration.js.map +1 -0
  5. package/dist/call/base.d.ts +35 -0
  6. package/dist/call/base.d.ts.map +1 -0
  7. package/dist/call/base.js +148 -0
  8. package/dist/call/base.js.map +1 -0
  9. package/dist/call/call.d.ts +84 -0
  10. package/dist/call/call.d.ts.map +1 -0
  11. package/dist/call/call.js +153 -0
  12. package/dist/call/call.js.map +1 -0
  13. package/dist/call/demand.d.ts +55 -0
  14. package/dist/call/demand.d.ts.map +1 -0
  15. package/dist/call/demand.js +135 -0
  16. package/dist/call/demand.js.map +1 -0
  17. package/dist/call/guard.d.ts +42 -0
  18. package/dist/call/guard.d.ts.map +1 -0
  19. package/dist/call/guard.js +253 -0
  20. package/dist/call/guard.js.map +1 -0
  21. package/dist/call/machine.d.ts +109 -0
  22. package/dist/call/machine.d.ts.map +1 -0
  23. package/dist/call/machine.js +213 -0
  24. package/dist/call/machine.js.map +1 -0
  25. package/dist/call/object_permission.d.ts +13 -0
  26. package/dist/call/object_permission.d.ts.map +1 -0
  27. package/dist/call/object_permission.js +49 -0
  28. package/dist/call/object_permission.js.map +1 -0
  29. package/dist/call/permission.d.ts +49 -0
  30. package/dist/call/permission.d.ts.map +1 -0
  31. package/dist/call/permission.js +98 -0
  32. package/dist/call/permission.js.map +1 -0
  33. package/dist/call/personal.d.ts +42 -0
  34. package/dist/call/personal.d.ts.map +1 -0
  35. package/dist/call/personal.js +61 -0
  36. package/dist/call/personal.js.map +1 -0
  37. package/dist/call/repository.d.ts +52 -0
  38. package/dist/call/repository.d.ts.map +1 -0
  39. package/dist/call/repository.js +125 -0
  40. package/dist/call/repository.js.map +1 -0
  41. package/dist/call/service.d.ts +134 -0
  42. package/dist/call/service.d.ts.map +1 -0
  43. package/dist/call/service.js +340 -0
  44. package/dist/call/service.js.map +1 -0
  45. package/dist/call/treasury.d.ts +53 -0
  46. package/dist/call/treasury.d.ts.map +1 -0
  47. package/dist/call/treasury.js +161 -0
  48. package/dist/call/treasury.js.map +1 -0
  49. package/dist/common.d.ts +2 -0
  50. package/dist/common.d.ts.map +1 -0
  51. package/dist/common.js +4 -0
  52. package/dist/common.js.map +1 -0
  53. package/dist/index.d.ts +21 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +21 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/local/account.d.ts +24 -0
  58. package/dist/local/account.d.ts.map +1 -0
  59. package/dist/local/account.js +188 -0
  60. package/dist/local/account.js.map +1 -0
  61. package/dist/local/cache.d.ts +32 -0
  62. package/dist/local/cache.d.ts.map +1 -0
  63. package/dist/local/cache.js +71 -0
  64. package/dist/local/cache.js.map +1 -0
  65. package/dist/local/index.d.ts +69 -0
  66. package/dist/local/index.d.ts.map +1 -0
  67. package/dist/local/index.js +94 -0
  68. package/dist/local/index.js.map +1 -0
  69. package/dist/local/local.d.ts +53 -0
  70. package/dist/local/local.d.ts.map +1 -0
  71. package/dist/local/local.js +211 -0
  72. package/dist/local/local.js.map +1 -0
  73. package/dist/query/events.d.ts +63 -0
  74. package/dist/query/events.d.ts.map +1 -0
  75. package/dist/query/events.js +78 -0
  76. package/dist/query/events.js.map +1 -0
  77. package/dist/query/objects.d.ts +323 -0
  78. package/dist/query/objects.d.ts.map +1 -0
  79. package/dist/query/objects.js +445 -0
  80. package/dist/query/objects.js.map +1 -0
  81. package/dist/query/permission.d.ts +12 -0
  82. package/dist/query/permission.d.ts.map +1 -0
  83. package/dist/query/permission.js +41 -0
  84. package/dist/query/permission.js.map +1 -0
  85. package/package.json +1 -1
  86. package/src/call/arbitration.ts +1 -1
  87. package/src/call/base.ts +1 -1
  88. package/src/call/call.ts +1 -2
  89. package/src/call/demand.ts +1 -1
  90. package/src/call/object_permission.ts +1 -1
  91. package/src/call/service.ts +1 -1
  92. package/src/call/treasury.ts +2 -2
  93. package/src/index.ts +2 -0
  94. package/src/local/account.ts +19 -1
  95. package/src/local/index.ts +140 -0
  96. package/src/local/local.ts +38 -9
  97. package/src/query/objects.ts +8 -7
  98. package/tsconfig.tsbuildinfo +1 -1
@@ -64,7 +64,7 @@ export class CallTreasury extends CallBase {
64
64
  }
65
65
  } else {
66
66
  if (!obj) {
67
- const r = await query_objects({objects:[object_address], showContent:true});
67
+ const r = await query_objects({objects:[object_address]});
68
68
  if (r?.objects && r.objects[0].type === 'Treasury') {
69
69
  obj = r.objects[0] as ObjectTreasury;
70
70
  }
@@ -84,7 +84,7 @@ export class CallTreasury extends CallBase {
84
84
  guards.push(this.data.withdraw.withdraw_guard)
85
85
  } else if (this.data.object) {
86
86
  if (!obj) {
87
- const r = await query_objects({objects:[object_address], showContent:true});
87
+ const r = await query_objects({objects:[object_address]});
88
88
  if (r?.objects && r.objects[0].type === 'Treasury') {
89
89
  obj = r.objects[0] as ObjectTreasury;
90
90
  }
package/src/index.ts CHANGED
@@ -16,4 +16,6 @@ export * from './call/call.js'
16
16
  export * from './local/account.js'
17
17
  export * from './local/cache.js'
18
18
  export * from './local/local.js'
19
+ export * from './local/index.js'
20
+
19
21
  export * as WOWOK from 'wowok'
@@ -76,7 +76,7 @@ export class Account {
76
76
  }
77
77
 
78
78
  async list() : Promise<string[]> {
79
- return await this.storage.keys().all();
79
+ return (await this.storage.keys().all()).filter(v => v !== SettingDefault);
80
80
  }
81
81
 
82
82
  async faucet(address?:string) {
@@ -160,6 +160,24 @@ export class Account {
160
160
  }
161
161
  }
162
162
  }
163
+ async transfer(from:string, to:string, amount:number|string, token_type?:string) : Promise<CallResponse | undefined> {
164
+ const secret: string | undefined = await this.storage.get(from);
165
+ if (!secret) return undefined;
166
+ const pair = Ed25519Keypair.fromSecretKey(fromHEX(secret))
167
+ if (!pair) return undefined;
168
+
169
+ const txb = new TransactionBlock();
170
+ const coin = await this.get_coin_object(txb, amount, from, token_type);
171
+ if (coin) {
172
+ txb.transferObjects([(coin as unknown) as TransactionArgument], to)
173
+ const r = await Protocol.Client().signAndExecuteTransaction({
174
+ transaction: txb,
175
+ signer: pair,
176
+ options:{showObjectChanges:true},
177
+ });
178
+ return r;
179
+ }
180
+ }
163
181
 
164
182
  coinObject_with_balance = async(balance_required:string | bigint | number, address?:string, token_type?:string) : Promise<string | undefined> => {
165
183
  if (!address) {
@@ -0,0 +1,140 @@
1
+ import { CallResponse, CoinBalance, CoinStruct } from "wowok"
2
+ import { Account } from "./account.js"
3
+ import { LocalInfo, LocalInfoNameDefault, LocalMark, LocalMarkFilter, MarkData } from "./local.js"
4
+
5
+ export const query_local_mark_list = async (filter?:LocalMarkFilter) : Promise<string> => {
6
+ return JSON.stringify(await LocalMark.Instance().list(filter))
7
+ }
8
+
9
+ export const query_account_list = async () : Promise<QueryAccountsResult> => {
10
+ const res : QueryAccountsResult = {};
11
+ res.addresses = await Account.Instance().list();
12
+ res.default = await Account.Instance().default(false);
13
+ return res;
14
+ }
15
+
16
+ export const query_local_info_list = async () : Promise<string> => {
17
+ return JSON.stringify(await LocalInfo.Instance().list())
18
+ }
19
+
20
+ export interface QueryAccountsResult {
21
+ default?: string;
22
+ addresses?: string[];
23
+ }
24
+
25
+ export const query_local_mark = async (name: string) : Promise<MarkData | undefined> => {
26
+ return await LocalMark.Instance().get(name)
27
+ }
28
+
29
+
30
+ export enum BalanceOrCoin {
31
+ Balance = 'balance',
32
+ Coin = 'coin'
33
+ }
34
+
35
+ export interface QueryAccount {
36
+ name_or_address?: string; // undifined if query the default account.
37
+ balance_or_coin?: BalanceOrCoin;
38
+ token_type?:string; // 0x2::sui::SUI, if not specified.
39
+ }
40
+
41
+ export interface QueryAccountResult {
42
+ name_or_address?: string;
43
+ address?: string;
44
+ balance?: CoinBalance;
45
+ coin?: CoinStruct[];
46
+ }
47
+
48
+ export const query_account = async (query: QueryAccount) : Promise<QueryAccountResult> => {
49
+ const r = await LocalMark.Instance().get_account(query.name_or_address);
50
+ const res : QueryAccountResult = {address: r};
51
+ if (query.name_or_address) { res.name_or_address = query.name_or_address; }
52
+
53
+ if (r) {
54
+ if (query?.balance_or_coin === BalanceOrCoin.Balance) {
55
+ res.balance = await Account.Instance().balance(r, query.token_type);
56
+ } else if (query?.balance_or_coin === BalanceOrCoin.Coin) {
57
+ res.coin = await Account.Instance().coin(r, query.token_type);
58
+ }
59
+ }
60
+
61
+ return res;
62
+ }
63
+
64
+ export const query_local_info = async (name: string = LocalInfoNameDefault) : Promise<LocalInfo | undefined> => {
65
+ return await LocalInfo.Instance().get(name)
66
+ }
67
+
68
+ export interface AccountOperation {
69
+ gen?: {name?:string, default?: boolean, useAddressIfNameExist?: boolean};
70
+ transfer?: {name_or_address_from?: string, name_or_address_to?:string, amount:number|string, token_type?: string};
71
+ }
72
+
73
+ export interface AccountOperationResult {
74
+ gen?: {address:string};
75
+ transfer?: CallResponse;
76
+ }
77
+
78
+ export const account_operation = async(op: AccountOperation) : Promise<AccountOperationResult> => {
79
+ var res : AccountOperationResult = {};
80
+ if (op.gen) {
81
+ const acc = await Account.Instance().gen(op.gen.default);
82
+ if (await LocalMark.Instance().put(op.gen.name, {object: acc, tags: ['account']}, op.gen.useAddressIfNameExist)) {
83
+ res.gen = {address: acc};
84
+ }
85
+ } else if (op.transfer) {
86
+ const from = await LocalMark.Instance().get_account(op.transfer.name_or_address_from);
87
+ const to = await LocalMark.Instance().get_account(op.transfer.name_or_address_to);
88
+ if (from && to) {
89
+ res.transfer = await Account.Instance().transfer(from, to, op.transfer.amount, op.transfer.token_type);
90
+ }
91
+ }
92
+ return res;
93
+ }
94
+
95
+ export interface LocalMarkOperation {
96
+ removeall?: boolean;
97
+ add_or_set?: {name:string, address:string, tags?:string[], useAddressIfNameExist?:boolean}[];
98
+ remove?: string[];
99
+ }
100
+
101
+ export const local_mark_operation = async(op: LocalMarkOperation) : Promise<void> => {
102
+ if (op.removeall) {
103
+ await LocalMark.Instance().clear();
104
+ } else if (op.add_or_set) {
105
+ for (let i = 0; i < op.add_or_set.length; ++ i) {
106
+ const v = op.add_or_set[i];
107
+ await LocalMark.Instance().put(v.name, {object: v.address, tags: v.tags}, v.useAddressIfNameExist);
108
+ }
109
+ } else if (op.remove) {
110
+ for (let i = 0; i < op.remove.length; ++ i) {
111
+ const v = op.remove[i];
112
+ await LocalMark.Instance().del(v);
113
+ }
114
+ }
115
+ return undefined;
116
+ }
117
+
118
+ export interface LocalInfoOperation {
119
+ removeall?: boolean;
120
+ add?: {name:string, content:string, bdefault?: boolean}[];
121
+ remove?: string[];
122
+ }
123
+
124
+ export const local_info_operation = async(op: LocalInfoOperation) : Promise<void> => {
125
+ if (op.removeall) {
126
+ await LocalInfo.Instance().clear();
127
+ }
128
+ else if (op.add) {
129
+ for (let i = 0; i < op.add.length; ++ i) {
130
+ const v = op.add[i];
131
+ await LocalInfo.Instance().put(v.name, v.content, v.bdefault);
132
+ }
133
+ }
134
+ else if (op.remove) {
135
+ for (let i = 0; i < op.remove.length; ++ i) {
136
+ const v = op.remove[i];
137
+ await LocalInfo.Instance().del(v);
138
+ }
139
+ }
140
+ }
@@ -7,7 +7,7 @@ import path from "path";
7
7
  import os from "os";
8
8
  import { Level } from "level";
9
9
  import { isBrowser } from "../common.js";
10
- import { IsValidAddress } from "wowok";
10
+ import { IsValidAddress, TagName } from "wowok";
11
11
  import { Account } from "./account.js";
12
12
 
13
13
  export interface MarkData {
@@ -20,10 +20,16 @@ export interface InfoData {
20
20
  others?: string[];
21
21
  }
22
22
 
23
+ export interface LocalMarkFilter {
24
+ name?: string;
25
+ tags?: string[];
26
+ object?: string;
27
+ }
28
+
23
29
  export const LocalMarkLocation = 'wowok-mark';
24
30
  export const LocalInfoLocation = 'wowok-info';
25
31
  export const LocalMarkNameMaxLength = 32;
26
-
32
+ export const LocalInfoNameDefault = 'Address of delivery';
27
33
  export class LocalMark {
28
34
  static _instance: any;
29
35
  private storage;
@@ -101,7 +107,7 @@ export class LocalMark {
101
107
 
102
108
  if (genNewIfNotFound) {
103
109
  const addr = await Account.Instance().gen(false);
104
- await this.put(name_or_address, {object:addr});
110
+ await this.put(name_or_address, {object:addr, tags:[TagName.Account]});
105
111
  }
106
112
  }
107
113
  }
@@ -149,8 +155,27 @@ export class LocalMark {
149
155
  }
150
156
  return false;
151
157
  }
158
+
159
+ async list(filter?: LocalMarkFilter) : Promise<QueryNameData[]> {
160
+ return (await this.storage.iterator().all()).filter(v => {
161
+ const obj = JSON.parse(v[1]) as MarkData;
162
+ if (filter?.name && v[0] !== filter.name) return false;
163
+ if (filter?.object && obj.object !== filter.object) return false;
164
+ if (filter?.tags && obj.tags) {
165
+ for (let i = 0; i < filter.tags.length; ++ i) {
166
+ if (!obj.tags.includes(filter.tags[i])) return false;
167
+ }
168
+ }
169
+ return true;
170
+ }).map(v => {return {name:v[0], data:v[1]}});
171
+ }
152
172
  }
153
173
 
174
+ export interface QueryNameData {
175
+ name: string;
176
+ data: any;
177
+ };
178
+
154
179
  export class LocalInfo {
155
180
  static _instance: any;
156
181
  private storage;
@@ -169,7 +194,7 @@ export class LocalInfo {
169
194
  }; return LocalInfo._instance
170
195
  }
171
196
 
172
- async put(name:string, content:string, bDefault:boolean=true) : Promise<void> {
197
+ async put(name:string = LocalInfoNameDefault, content:string, bDefault:boolean=true) : Promise<void> {
173
198
  const r = await this.storage.get(name);
174
199
  if (r) {
175
200
  const obj = JSON.parse(r) as InfoData;
@@ -185,25 +210,25 @@ export class LocalInfo {
185
210
  }
186
211
  }
187
212
 
188
- async get(name: string) : Promise<LocalInfo | undefined> {
213
+ async get(name: string = LocalInfoNameDefault) : Promise<LocalInfo | undefined> {
189
214
  const r = await this.storage.get(name);
190
215
  if (r) {
191
216
  return JSON.parse(r);
192
217
  }
193
218
  }
194
219
 
195
- async get_default(name: string) : Promise<string | undefined> {
220
+ async get_default(name: string = LocalInfoNameDefault) : Promise<string | undefined> {
196
221
  const r = await this.storage.get(name);
197
222
  if (r) {
198
223
  return (JSON.parse(r) as InfoData).default;
199
224
  }
200
225
  }
201
226
 
202
- async del(name:string) {
203
- return await this.storage.del(name);
227
+ async del(name:string = LocalInfoNameDefault) : Promise<void> {
228
+ await this.storage.del(name);
204
229
  }
205
230
 
206
- async del_content(name:string, index:number) : Promise<boolean> {
231
+ async del_content(name:string = LocalInfoNameDefault, index:number) : Promise<boolean> {
207
232
  const r = await this.storage.get(name);
208
233
  if (r) {
209
234
  const obj = JSON.parse(r) as InfoData;
@@ -219,5 +244,9 @@ export class LocalInfo {
219
244
  async clear() {
220
245
  return await this.storage.clear();
221
246
  }
247
+
248
+ async list() : Promise<QueryNameData[]> {
249
+ return (await this.storage.iterator().all()).map(v => {return {name:v[0], data:v[1]}});
250
+ }
222
251
  }
223
252
 
@@ -235,9 +235,6 @@ export interface TableItem_PersonalMark extends ObjectBase, Tags {
235
235
 
236
236
  export interface ObjectsQuery {
237
237
  objects: string[];
238
- showType?: boolean;
239
- showContent?: boolean;
240
- showOwner?: boolean;
241
238
  no_cache?: boolean;
242
239
  }
243
240
 
@@ -306,12 +303,11 @@ export const query_personal_json = async (json:string) : Promise<string> => {
306
303
 
307
304
  export const query_objects = async (query: ObjectsQuery) : Promise<ObjectsAnswer> => {
308
305
  var ret:ObjectBase[] = []; var pending : string[] = [];
309
- const showTypeOnly = !(query.showContent || query.showContent);
310
306
 
311
- if (!query.no_cache || (query.no_cache && showTypeOnly)) { // showType only, use cache
307
+ if (!query.no_cache) { // showType only, use cache
312
308
  for (let i = 0; i < query.objects.length; ++i) {
313
309
  try {
314
- const cache = await Cache.Instance().cache_get(query.objects[i], CacheName.object, showTypeOnly);
310
+ const cache = await Cache.Instance().cache_get(query.objects[i], CacheName.object);
315
311
 
316
312
  if (cache) {
317
313
  const d = data2object(JSON.parse(cache.data));
@@ -324,11 +320,13 @@ export const query_objects = async (query: ObjectsQuery) : Promise<ObjectsAnswer
324
320
  } catch (e) { /*console.log(e)*/}
325
321
  pending.push(query.objects[i]);
326
322
  }
323
+ } else {
324
+ pending = [...query.objects];
327
325
  }
328
326
 
329
327
  if (pending.length > 0) {
330
328
  const res = await Protocol.Client().multiGetObjects({ids:[...pending],
331
- options:{showContent:query.showContent, showType:query.showType, showOwner:query.showOwner}});
329
+ options:{showContent:true, showOwner:true}});
332
330
 
333
331
  for (let i = 0; i < res.length; ++i) {
334
332
  const d = res[i]?.data;
@@ -474,6 +472,9 @@ export const queryTableItem_ProgressHistory = async (query:QueryTableItem_Index)
474
472
  export const queryTableItem_TreasuryHistory = async (query:QueryTableItem_Index) : Promise<ObjectBase> => {
475
473
  return await tableItemQuery_byIndex(query)
476
474
  }
475
+ export const queryTableItem_MarkTag = async (query:QueryTableItem_Address) : Promise<ObjectBase> => {
476
+ return await tableItemQuery_byAddress(query)
477
+ }
477
478
 
478
479
  const tableItemQuery_byAddress = async (query:QueryTableItem_Address) : Promise<ObjectBase> => {
479
480
  const parent = typeof(query.parent) === 'string' ? query.parent : query.parent.object;