wowok_agent 1.2.37 → 1.2.40

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 (104) 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 +210 -0
  4. package/dist/call/arbitration.js.map +1 -0
  5. package/dist/call/base.d.ts +37 -0
  6. package/dist/call/base.d.ts.map +1 -0
  7. package/dist/call/base.js +157 -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 +156 -0
  12. package/dist/call/call.js.map +1 -0
  13. package/dist/call/demand.d.ts +57 -0
  14. package/dist/call/demand.d.ts.map +1 -0
  15. package/dist/call/demand.js +160 -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 +264 -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 +250 -0
  24. package/dist/call/machine.js.map +1 -0
  25. package/dist/call/object_permission.d.ts +14 -0
  26. package/dist/call/object_permission.d.ts.map +1 -0
  27. package/dist/call/object_permission.js +52 -0
  28. package/dist/call/object_permission.js.map +1 -0
  29. package/dist/call/permission.d.ts +50 -0
  30. package/dist/call/permission.d.ts.map +1 -0
  31. package/dist/call/permission.js +127 -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 +88 -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 +135 -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 +416 -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 +175 -0
  48. package/dist/call/treasury.js.map +1 -0
  49. package/dist/common.d.ts +3 -0
  50. package/dist/common.d.ts.map +1 -0
  51. package/dist/common.js +13 -0
  52. package/dist/common.js.map +1 -0
  53. package/dist/index.d.ts +22 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +22 -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 +83 -0
  66. package/dist/local/index.d.ts.map +1 -0
  67. package/dist/local/index.js +98 -0
  68. package/dist/local/index.js.map +1 -0
  69. package/dist/local/local.d.ts +56 -0
  70. package/dist/local/local.d.ts.map +1 -0
  71. package/dist/local/local.js +245 -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 +453 -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 +2 -2
  86. package/src/call/arbitration.ts +85 -54
  87. package/src/call/base.ts +22 -12
  88. package/src/call/call.ts +24 -21
  89. package/src/call/demand.ts +60 -30
  90. package/src/call/guard.ts +25 -16
  91. package/src/call/machine.ts +79 -40
  92. package/src/call/object_permission.ts +12 -8
  93. package/src/call/permission.ts +44 -18
  94. package/src/call/personal.ts +39 -13
  95. package/src/call/repository.ts +27 -13
  96. package/src/call/service.ts +150 -73
  97. package/src/call/treasury.ts +68 -50
  98. package/src/common.ts +9 -0
  99. package/src/index.ts +1 -0
  100. package/src/local/account.ts +3 -3
  101. package/src/local/index.ts +54 -50
  102. package/src/local/local.ts +48 -8
  103. package/src/query/objects.ts +14 -6
  104. package/tsconfig.tsbuildinfo +1 -1
@@ -66,75 +66,79 @@ export const query_local_info = async (name: string = LocalInfoNameDefault) : Pr
66
66
  }
67
67
 
68
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};
69
+ gen?: {name?:string, default?: boolean, useAddressIfNameExist?: boolean} | null;
70
+ transfer?: {name_or_address_from?: string, name_or_address_to?:string, amount:number|string, token_type?: string} | null;
71
71
  }
72
72
 
73
73
  export interface AccountOperationResult {
74
- gen?: {address:string};
74
+ gen?: {address:string, default:boolean, name: string};
75
75
  transfer?: CallResponse;
76
76
  }
77
77
 
78
78
  export const account_operation = async(op: AccountOperation) : Promise<AccountOperationResult> => {
79
- var res : AccountOperationResult = {};
79
+ var res : AccountOperationResult = {};
80
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);
81
+ const acc = await Account.Instance().gen(op.gen?.default);
82
+ const name = await LocalMark.Instance().put(op.gen.name, {object: acc, tags: ['account']}, op.gen.useAddressIfNameExist);
83
+ res.gen = {address: acc, default: op.gen.default ?? false, name:name};
84
+ }
85
+
86
+ if(op.transfer) {
87
+ const from = await LocalMark.Instance().get_account(op.transfer?.name_or_address_from, false);
88
+ const to = await LocalMark.Instance().get_account(op.transfer.name_or_address_to, false);
88
89
  if (from && to) {
89
- res.transfer = await Account.Instance().transfer(from, to, op.transfer.amount, op.transfer.token_type);
90
+ res.transfer = await Account.Instance().transfer(from, to, op.transfer?.amount, op.transfer?.token_type);
90
91
  }
91
- }
92
+ }
92
93
  return res;
93
94
  }
94
95
 
95
- export interface LocalMarkOperation {
96
- removeall?: boolean;
97
- add_or_set?: {name:string, address:string, tags?:string[], useAddressIfNameExist?:boolean}[];
98
- remove?: string[];
99
- }
96
+ export interface LocalMarkOperation { data: {op: 'removeall' }
97
+ | {op:'add', data:{name:string, address:string, tags?:string[], useAddressIfNameExist?:boolean}[]}
98
+ | {op:'remove', data: string[]}
99
+ };
100
100
 
101
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
- }
102
+ switch(op.data?.op) {
103
+ case 'removeall':
104
+ return await LocalMark.Instance().clear();
105
+ case 'add':
106
+ for (let i = 0; i < op.data.data.length; ++ i) {
107
+ const v = op.data.data[i];
108
+ await LocalMark.Instance().put(v.name, {object: v.address, tags: v.tags}, v.useAddressIfNameExist);
109
+ };
110
+ return ;
111
+ case 'remove':
112
+ for (let i = 0; i < op.data.data.length; ++ i) {
113
+ const v = op.data.data[i];
114
+ await LocalMark.Instance().del(v);
115
+ }
116
+ return
114
117
  }
115
- return undefined;
116
118
  }
117
119
 
118
- export interface LocalInfoOperation {
119
- removeall?: boolean;
120
- add?: {name:string, content:string, bdefault?: boolean}[];
121
- remove?: string[];
122
- }
120
+ export interface LocalInfoOperation {
121
+ data: {op: 'removeall' }
122
+ | {op:'add', data:{name:string, content:string, bdefault?: boolean}[]}
123
+ | {op:'remove', data: string[]}
124
+ };
123
125
 
124
126
  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
- }
127
+ switch (op.data?.op) {
128
+ case 'removeall':
129
+ await LocalInfo.Instance().clear();
130
+ break;
131
+ case 'add' :
132
+ for (let i = 0; i < op.data?.data.length; ++ i) {
133
+ const v = op.data.data[i];
134
+ await LocalInfo.Instance().put(v.name, v.content, v?.bdefault);
135
+ }
136
+ break;
137
+ case 'remove' :
138
+ for (let i = 0; i < op.data?.data.length; ++ i) {
139
+ const v = op.data.data[i];
140
+ await LocalInfo.Instance().del(v);
141
+ }
142
+ break;
139
143
  }
140
144
  }
@@ -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, TagName } from "wowok";
10
+ import { ERROR, Errors, IsValidAddress, TagName } from "wowok";
11
11
  import { Account } from "./account.js";
12
12
 
13
13
  export interface MarkData {
@@ -50,16 +50,16 @@ export class LocalMark {
50
50
 
51
51
  // useAddressIfNameExist true: use address as the name if the name exist;
52
52
  // otherwise, use this name and change the original name to its address.
53
- async put(name:string | undefined | null, mark:MarkData, useAddressIfNameExist?:boolean) : Promise<boolean> {
53
+ async put(name:string | undefined | null, mark:MarkData, useAddressIfNameExist?:boolean) : Promise<string> {
54
54
  // object address invalid
55
55
  if (!IsValidAddress(mark.object) && mark.object !== '0x2' && mark.object !== '0x6') {
56
- return false;
56
+ ERROR(Errors.InvalidParam, `LocalMark.put.mark.object: ${mark.object}`)
57
57
  };
58
58
 
59
59
  // use address as name if name is undefined or null
60
60
  if (name === undefined || name === null) {
61
61
  this.storage.put(mark.object, JSON.stringify(mark));
62
- return true;
62
+ return mark.object
63
63
  }
64
64
 
65
65
  if (name.length > LocalMarkNameMaxLength) {
@@ -70,7 +70,7 @@ export class LocalMark {
70
70
  if (r) {
71
71
  if (useAddressIfNameExist) {
72
72
  this.storage.put(mark.object, JSON.stringify(mark));
73
- return true;
73
+ return mark.object
74
74
  } else {
75
75
  const obj = JSON.parse(r) as MarkData;
76
76
  await this.storage.put(obj.object, r)
@@ -78,7 +78,7 @@ export class LocalMark {
78
78
  }
79
79
 
80
80
  await this.storage.put(name, JSON.stringify(mark));
81
- return true;
81
+ return name
82
82
  }
83
83
 
84
84
  async get(name: string) : Promise<MarkData | undefined> {
@@ -88,6 +88,39 @@ export class LocalMark {
88
88
  }
89
89
  }
90
90
 
91
+ async get_address(name_or_address?: string | null) : Promise<string | undefined> {
92
+ if (IsValidAddress(name_or_address)) {
93
+ return name_or_address!;
94
+ }
95
+
96
+ if (name_or_address !== undefined && name_or_address !== null) {
97
+ const r = await this.storage.get(name_or_address);
98
+ if (r) {
99
+ return JSON.parse(r).object;
100
+ }
101
+ }
102
+ }
103
+
104
+ async get_many_address(name_or_addresses: (string | null | undefined)[]) : Promise<(string | undefined)[]> {
105
+ const check = (v: string | null | undefined) : boolean => {
106
+ return v!==undefined && v!==null && !IsValidAddress(v)
107
+ }
108
+ const q = await this.storage.getMany((name_or_addresses.filter(v => check(v)) as string[]));
109
+ return name_or_addresses.map(v => {
110
+ if (check(v)) {
111
+ const r = q.shift();
112
+ if (r) {
113
+ return JSON.parse(q.shift()!)?.object;
114
+ }
115
+ }
116
+ return v
117
+ })
118
+ }
119
+
120
+ async get_many_address2(name_or_addresses: (string | null | undefined)[]) : Promise<string[]> {
121
+ return (await this.get_many_address(name_or_addresses)).filter(v => v!==undefined && v!== null) as string[]
122
+ }
123
+
91
124
  // get account address:
92
125
  // 1. if name_or_address is undefined, return default account address.
93
126
  // 2. if name_or_address is address, return it.
@@ -157,13 +190,20 @@ export class LocalMark {
157
190
  }
158
191
 
159
192
  async list(filter?: LocalMarkFilter) : Promise<QueryNameData[]> {
193
+ if (filter && filter.tags) filter.tags = filter.tags.filter(v => v !== '' && v);
194
+
160
195
  return (await this.storage.iterator().all()).filter(v => {
161
196
  const obj = JSON.parse(v[1]) as MarkData;
162
197
  if (filter?.name && v[0] !== filter.name) return false;
163
198
  if (filter?.object && obj.object !== filter.object) return false;
164
- if (filter?.tags && obj.tags) {
199
+
200
+ if (filter?.tags && filter.tags.length > 0) {
201
+ if (!obj.tags || obj.tags.length === 0) return false;
202
+
165
203
  for (let i = 0; i < filter.tags.length; ++ i) {
166
- if (!obj.tags.includes(filter.tags[i])) return false;
204
+ if (!obj.tags.includes(filter.tags[i])) {
205
+ return false
206
+ }
167
207
  }
168
208
  }
169
209
  return true;
@@ -7,6 +7,7 @@ import { Protocol, Machine_Node, Machine, Treasury_WithdrawMode, Treasury_Operat
7
7
  Repository_Type, Repository_Policy_Mode, Repository_Policy, Service_Discount_Type, Service_Sale,
8
8
  Progress, History, ERROR, Errors, IsValidAddress, Bcs, Entity_Info, Tags, uint2address} from 'wowok';
9
9
  import { CacheExpireType, CacheName, CachedData, Cache } from '../local/cache.js'
10
+ import { LocalMark } from '../local/local.js';
10
11
 
11
12
  export type ObjectBaseType = 'Demand' | 'Progress' | 'Service' | 'Machine' | 'Order' | 'Treasury' | 'Arbitration' | 'Arb' | 'Payment' | 'Guard' | 'Discount' |
12
13
  'Personal' | 'Permission' | 'PersonalMark' | 'Repository' | 'TableItem_ProgressHistory' | 'TableItem_PermissionEntity' |
@@ -303,6 +304,7 @@ export const query_personal_json = async (json:string) : Promise<string> => {
303
304
 
304
305
  export const query_objects = async (query: ObjectsQuery) : Promise<ObjectsAnswer> => {
305
306
  var ret:ObjectBase[] = []; var pending : string[] = [];
307
+ query.objects = await LocalMark.Instance().get_many_address2(query.objects);
306
308
 
307
309
  if (!query.no_cache) { // showType only, use cache
308
310
  for (let i = 0; i < query.objects.length; ++i) {
@@ -343,9 +345,11 @@ export const query_objects = async (query: ObjectsQuery) : Promise<ObjectsAnswer
343
345
  }
344
346
 
345
347
  export const query_personal = async (query:PersonalQuery) : Promise<ObjectPersonal | undefined> => {
346
- if (!IsValidAddress(query.address)) {
347
- ERROR(Errors.IsValidAddress, 'query_personal.query.address')
348
+ const addr = await LocalMark.Instance().get_address(query.address);
349
+ if (!addr) {
350
+ ERROR(Errors.InvalidParam, 'query_personal.query.address')
348
351
  }
352
+ query.address = addr;
349
353
 
350
354
  if (!query.no_cache) {
351
355
  try {
@@ -365,9 +369,11 @@ export const query_personal = async (query:PersonalQuery) : Promise<ObjectPerson
365
369
  }
366
370
 
367
371
  export const query_table = async (query:TableQuery) : Promise<TableAnswer> => {
368
- if (!IsValidAddress(query.parent)) {
369
- ERROR(Errors.IsValidAddress, 'query_table.query.parent');
372
+ const addr = await LocalMark.Instance().get_address(query.parent);
373
+ if (!addr) {
374
+ ERROR(Errors.InvalidParam, 'query_table.query.parent')
370
375
  }
376
+ query.parent = addr;
371
377
 
372
378
  if (!query.no_cache) {
373
379
  try {
@@ -394,9 +400,11 @@ export const query_table = async (query:TableQuery) : Promise<TableAnswer> => {
394
400
  }
395
401
 
396
402
  const tableItem = async (query:TableItemQuery) : Promise<ObjectBase> => {
397
- if (!IsValidAddress(query.parent)) {
398
- ERROR(Errors.IsValidAddress, 'query_table.query.parent');
403
+ const addr = await LocalMark.Instance().get_address(query.parent);
404
+ if (!addr) {
405
+ ERROR(Errors.InvalidParam, 'tableItem.query.parent')
399
406
  }
407
+ query.parent = addr;
400
408
 
401
409
  if (!query.no_cache) {
402
410
  try {