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.
- package/dist/call/arbitration.d.ts +69 -0
- package/dist/call/arbitration.d.ts.map +1 -0
- package/dist/call/arbitration.js +210 -0
- package/dist/call/arbitration.js.map +1 -0
- package/dist/call/base.d.ts +37 -0
- package/dist/call/base.d.ts.map +1 -0
- package/dist/call/base.js +157 -0
- package/dist/call/base.js.map +1 -0
- package/dist/call/call.d.ts +84 -0
- package/dist/call/call.d.ts.map +1 -0
- package/dist/call/call.js +156 -0
- package/dist/call/call.js.map +1 -0
- package/dist/call/demand.d.ts +57 -0
- package/dist/call/demand.d.ts.map +1 -0
- package/dist/call/demand.js +160 -0
- package/dist/call/demand.js.map +1 -0
- package/dist/call/guard.d.ts +42 -0
- package/dist/call/guard.d.ts.map +1 -0
- package/dist/call/guard.js +264 -0
- package/dist/call/guard.js.map +1 -0
- package/dist/call/machine.d.ts +109 -0
- package/dist/call/machine.d.ts.map +1 -0
- package/dist/call/machine.js +250 -0
- package/dist/call/machine.js.map +1 -0
- package/dist/call/object_permission.d.ts +14 -0
- package/dist/call/object_permission.d.ts.map +1 -0
- package/dist/call/object_permission.js +52 -0
- package/dist/call/object_permission.js.map +1 -0
- package/dist/call/permission.d.ts +50 -0
- package/dist/call/permission.d.ts.map +1 -0
- package/dist/call/permission.js +127 -0
- package/dist/call/permission.js.map +1 -0
- package/dist/call/personal.d.ts +42 -0
- package/dist/call/personal.d.ts.map +1 -0
- package/dist/call/personal.js +88 -0
- package/dist/call/personal.js.map +1 -0
- package/dist/call/repository.d.ts +52 -0
- package/dist/call/repository.d.ts.map +1 -0
- package/dist/call/repository.js +135 -0
- package/dist/call/repository.js.map +1 -0
- package/dist/call/service.d.ts +134 -0
- package/dist/call/service.d.ts.map +1 -0
- package/dist/call/service.js +416 -0
- package/dist/call/service.js.map +1 -0
- package/dist/call/treasury.d.ts +53 -0
- package/dist/call/treasury.d.ts.map +1 -0
- package/dist/call/treasury.js +175 -0
- package/dist/call/treasury.js.map +1 -0
- package/dist/common.d.ts +3 -0
- package/dist/common.d.ts.map +1 -0
- package/dist/common.js +13 -0
- package/dist/common.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/local/account.d.ts +24 -0
- package/dist/local/account.d.ts.map +1 -0
- package/dist/local/account.js +188 -0
- package/dist/local/account.js.map +1 -0
- package/dist/local/cache.d.ts +32 -0
- package/dist/local/cache.d.ts.map +1 -0
- package/dist/local/cache.js +71 -0
- package/dist/local/cache.js.map +1 -0
- package/dist/local/index.d.ts +83 -0
- package/dist/local/index.d.ts.map +1 -0
- package/dist/local/index.js +98 -0
- package/dist/local/index.js.map +1 -0
- package/dist/local/local.d.ts +56 -0
- package/dist/local/local.d.ts.map +1 -0
- package/dist/local/local.js +245 -0
- package/dist/local/local.js.map +1 -0
- package/dist/query/events.d.ts +63 -0
- package/dist/query/events.d.ts.map +1 -0
- package/dist/query/events.js +78 -0
- package/dist/query/events.js.map +1 -0
- package/dist/query/objects.d.ts +323 -0
- package/dist/query/objects.d.ts.map +1 -0
- package/dist/query/objects.js +453 -0
- package/dist/query/objects.js.map +1 -0
- package/dist/query/permission.d.ts +12 -0
- package/dist/query/permission.d.ts.map +1 -0
- package/dist/query/permission.js +41 -0
- package/dist/query/permission.js.map +1 -0
- package/package.json +2 -2
- package/src/call/arbitration.ts +85 -54
- package/src/call/base.ts +22 -12
- package/src/call/call.ts +24 -21
- package/src/call/demand.ts +60 -30
- package/src/call/guard.ts +25 -16
- package/src/call/machine.ts +79 -40
- package/src/call/object_permission.ts +12 -8
- package/src/call/permission.ts +44 -18
- package/src/call/personal.ts +39 -13
- package/src/call/repository.ts +27 -13
- package/src/call/service.ts +150 -73
- package/src/call/treasury.ts +68 -50
- package/src/common.ts +9 -0
- package/src/index.ts +1 -0
- package/src/local/account.ts +3 -3
- package/src/local/index.ts +54 -50
- package/src/local/local.ts +48 -8
- package/src/query/objects.ts +14 -6
- package/tsconfig.tsbuildinfo +1 -1
package/src/local/index.ts
CHANGED
|
@@ -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
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
const
|
|
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
|
|
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
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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
|
|
120
|
-
add
|
|
121
|
-
remove
|
|
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
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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
|
}
|
package/src/local/local.ts
CHANGED
|
@@ -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<
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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]))
|
|
204
|
+
if (!obj.tags.includes(filter.tags[i])) {
|
|
205
|
+
return false
|
|
206
|
+
}
|
|
167
207
|
}
|
|
168
208
|
}
|
|
169
209
|
return true;
|
package/src/query/objects.ts
CHANGED
|
@@ -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
|
-
|
|
347
|
-
|
|
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
|
-
|
|
369
|
-
|
|
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
|
-
|
|
398
|
-
|
|
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 {
|