wowok_agent 0.1.12 → 0.1.13
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 +1 -1
- package/src/account.ts +51 -55
- package/src/call/arbitration.ts +8 -15
- package/src/call/demand.ts +10 -10
- package/src/call/machine.ts +20 -25
- package/src/call/permission.ts +21 -20
- package/src/call/personal.ts +1 -0
- package/src/call/repository.ts +18 -16
- package/src/call/service.ts +67 -66
- package/src/call/treasury.ts +13 -12
- package/src/call.ts +1 -1
- package/src/permission.ts +1 -3
- package/src/private_info.ts +217 -0
package/package.json
CHANGED
package/src/account.ts
CHANGED
|
@@ -15,8 +15,8 @@ export interface AccountData_Show {
|
|
|
15
15
|
address: string;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
const Account_FileName = 'wowok.dat';
|
|
19
|
-
const Account_Key = 'wowok-
|
|
18
|
+
const Account_FileName = 'wowok.acc.dat';
|
|
19
|
+
const Account_Key = 'wowok-acc-v1';
|
|
20
20
|
|
|
21
21
|
export class Account {
|
|
22
22
|
constructor(storage: 'File' | 'Explorer' = 'File') {
|
|
@@ -32,64 +32,61 @@ export class Account {
|
|
|
32
32
|
|
|
33
33
|
private storage: 'File' | 'Explorer' = 'File';
|
|
34
34
|
|
|
35
|
-
private _add(buffer:string | null | undefined, name:string, bDefault?: boolean) : AccountData[] {
|
|
35
|
+
private _add(buffer:string | null | undefined, name:string, bDefault?: boolean) : AccountData[] | undefined {
|
|
36
36
|
var data : AccountData[] | undefined;
|
|
37
37
|
var key = '0x'+toHEX(decodeSuiPrivateKey(Ed25519Keypair.generate().getSecretKey()).secretKey);
|
|
38
38
|
|
|
39
39
|
try {
|
|
40
40
|
if (buffer) {
|
|
41
|
-
data = JSON.parse(buffer) as AccountData[];
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
41
|
+
data = JSON.parse(buffer) as AccountData[];
|
|
42
|
+
if (data) {
|
|
43
|
+
const f = data.find(v => v.name === name);
|
|
44
|
+
if (f) {
|
|
45
|
+
f.default = bDefault;
|
|
46
|
+
} else {
|
|
47
|
+
if (bDefault) {
|
|
48
|
+
data.forEach(v => v.default = false)
|
|
49
|
+
}
|
|
50
|
+
data.push({name:name, key:key, default:bDefault})
|
|
51
|
+
}
|
|
52
|
+
} else {
|
|
53
|
+
data = [{name:name, key:key, default:bDefault}];
|
|
52
54
|
}
|
|
53
|
-
data
|
|
55
|
+
return data
|
|
54
56
|
}
|
|
55
|
-
}
|
|
56
|
-
data = [{name:name, key:key, default:bDefault}];
|
|
57
|
-
}
|
|
58
|
-
return data
|
|
57
|
+
} catch(e) { console.log(e) }
|
|
59
58
|
}
|
|
60
59
|
|
|
61
60
|
private _default(buffer:string | null | undefined) : AccountData | undefined {
|
|
62
61
|
var data : AccountData[] | undefined;
|
|
63
62
|
try {
|
|
64
63
|
if (buffer) {
|
|
65
|
-
data = JSON.parse(buffer) as AccountData[];
|
|
64
|
+
data = JSON.parse(buffer) as AccountData[];
|
|
65
|
+
if (data) {
|
|
66
|
+
const f = data.find(v => v.default);
|
|
67
|
+
if (f) {
|
|
68
|
+
return f
|
|
69
|
+
}
|
|
70
|
+
}
|
|
66
71
|
}
|
|
67
72
|
} catch(e) { console.log(e) }
|
|
68
|
-
|
|
69
|
-
if (data) {
|
|
70
|
-
const f = data.find(v => v.default);
|
|
71
|
-
if (f) {
|
|
72
|
-
return f
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
73
|
}
|
|
76
74
|
private _get(buffer:string | null | undefined, name?:string, bNotFoundReturnDefault?:boolean) : AccountData | undefined {
|
|
77
75
|
var data : AccountData[] | undefined;
|
|
78
76
|
try {
|
|
79
77
|
if (buffer) {
|
|
80
|
-
data = JSON.parse(buffer) as AccountData[];
|
|
78
|
+
data = JSON.parse(buffer) as AccountData[];
|
|
79
|
+
if (data) {
|
|
80
|
+
const f = data.find(v => v.name === name);
|
|
81
|
+
if (f) {
|
|
82
|
+
return f
|
|
83
|
+
}
|
|
84
|
+
if (bNotFoundReturnDefault) {
|
|
85
|
+
return data.find(v => v.default)
|
|
86
|
+
}
|
|
87
|
+
}
|
|
81
88
|
}
|
|
82
89
|
} catch(e) { console.log(e) }
|
|
83
|
-
|
|
84
|
-
if (data) {
|
|
85
|
-
const f = data.find(v => v.name === name);
|
|
86
|
-
if (f) {
|
|
87
|
-
return f
|
|
88
|
-
}
|
|
89
|
-
if (bNotFoundReturnDefault) {
|
|
90
|
-
return data.find(v => v.default)
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
90
|
}
|
|
94
91
|
private _rename(buffer:string | null | undefined, oldName:string, newName:string, bSwapIfExisted:boolean=true) : AccountData[] | undefined {
|
|
95
92
|
var data : AccountData[] | undefined;
|
|
@@ -97,25 +94,24 @@ export class Account {
|
|
|
97
94
|
if (buffer) {
|
|
98
95
|
data = JSON.parse(buffer) as AccountData[];
|
|
99
96
|
}
|
|
100
|
-
} catch(e) { console.log(e) }
|
|
101
|
-
|
|
102
|
-
if (data) {
|
|
103
|
-
const f1 = data.find(v => v.name === oldName);
|
|
104
|
-
if (!f1) return undefined;
|
|
105
97
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
if (
|
|
98
|
+
if (data) {
|
|
99
|
+
const f1 = data.find(v => v.name === oldName);
|
|
100
|
+
if (!f1) return undefined;
|
|
101
|
+
|
|
102
|
+
const f2 = data.find(v => v.name === newName);
|
|
103
|
+
if (f2) {
|
|
104
|
+
if (bSwapIfExisted) {
|
|
105
|
+
f1.name = newName;
|
|
106
|
+
f2.name = oldName;
|
|
107
|
+
return data
|
|
108
|
+
}
|
|
109
|
+
} else {
|
|
109
110
|
f1.name = newName;
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
f1.name = newName;
|
|
115
|
-
return data;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return undefined
|
|
111
|
+
return data;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
} catch(e) { console.log(e) }
|
|
119
115
|
}
|
|
120
116
|
|
|
121
117
|
set_storage(storage: 'File' | 'Explorer' = 'File') {
|
package/src/call/arbitration.ts
CHANGED
|
@@ -1,27 +1,26 @@
|
|
|
1
|
-
import { TransactionBlock, IsValidArgType,
|
|
2
|
-
|
|
3
|
-
Arbitration, Dispute, Feedback, Vote, VotingGuard, WithdrawFee, WitnessFill
|
|
1
|
+
import { TransactionBlock, IsValidArgType, PassportObject, IsValidAddress, Errors, ERROR, Permission, PermissionIndex,
|
|
2
|
+
PermissionIndexType, Treasury, Arbitration, Dispute, Feedback, Vote, VotingGuard, WithdrawFee,
|
|
4
3
|
} from 'wowok';
|
|
5
4
|
import { query_objects, ObjectArbitration, } from '../objects';
|
|
6
|
-
import { CallBase, CallResult,
|
|
5
|
+
import { CallBase, CallResult, Namedbject} from "./base";
|
|
7
6
|
|
|
8
7
|
export interface CallArbitration_Data {
|
|
8
|
+
type_parameter: string;
|
|
9
9
|
object?: {address:string} | {namedNew: Namedbject}; // undefined or {named_new...} for creating a new object
|
|
10
10
|
permission?: {address:string} | {namedNew: Namedbject, description?:string};
|
|
11
|
-
type_parameter: string;
|
|
12
|
-
permission_new?: string;
|
|
13
11
|
description?: string;
|
|
14
|
-
bPaused?: boolean;
|
|
15
12
|
endpoint?: string;
|
|
16
13
|
fee?: string;
|
|
17
14
|
fee_treasury?: {address:string} | {namedNew: Namedbject, description?:string};
|
|
18
|
-
usage_guard?: string;
|
|
19
|
-
voting_guard?: {op:'add' | 'set'; data:VotingGuard[]} | {op:'remove', guards:string[]} | {op:'removeall'};
|
|
20
15
|
arb_new?: {data: Dispute; guard?:string | 'fetch'; namedNew?: Namedbject}; // dispute an order, and a new Arb launched.
|
|
21
16
|
arb_withdraw_fee?: {arb:string; data:WithdrawFee};
|
|
22
17
|
arb_vote?: Vote;
|
|
23
18
|
arb_arbitration?: Feedback;
|
|
19
|
+
usage_guard?: string;
|
|
20
|
+
voting_guard?: {op:'add' | 'set'; data:VotingGuard[]} | {op:'remove', guards:string[]} | {op:'removeall'};
|
|
21
|
+
bPaused?: boolean;
|
|
24
22
|
}
|
|
23
|
+
|
|
25
24
|
export class CallArbitration extends CallBase {
|
|
26
25
|
data: CallArbitration_Data;
|
|
27
26
|
constructor (data: CallArbitration_Data) {
|
|
@@ -44,9 +43,6 @@ export class CallArbitration extends CallBase {
|
|
|
44
43
|
if (!this.data?.object) {
|
|
45
44
|
perms.push(PermissionIndex.arbitration)
|
|
46
45
|
}
|
|
47
|
-
if (this.data?.permission_new !== undefined) {
|
|
48
|
-
checkOwner = true;
|
|
49
|
-
}
|
|
50
46
|
if (this.data?.description !== undefined && object_address) {
|
|
51
47
|
perms.push(PermissionIndex.arbitration_description)
|
|
52
48
|
}
|
|
@@ -155,9 +151,6 @@ export class CallArbitration extends CallBase {
|
|
|
155
151
|
if (this.data?.arb_withdraw_fee !== undefined) {
|
|
156
152
|
obj?.withdraw_fee(this.data.arb_withdraw_fee.arb, this.data.arb_withdraw_fee.data, passport)
|
|
157
153
|
}
|
|
158
|
-
if (this.data?.permission_new !== undefined) {
|
|
159
|
-
obj?.change_permission(this.data.permission_new);
|
|
160
|
-
}
|
|
161
154
|
if (this.data?.voting_guard !== undefined) {
|
|
162
155
|
switch (this.data.voting_guard.op) {
|
|
163
156
|
case 'add':
|
package/src/call/demand.ts
CHANGED
|
@@ -5,18 +5,18 @@ import { query_objects, ObjectDemand } from '../objects';
|
|
|
5
5
|
import { CallBase, CallResult, Namedbject } from "./base";
|
|
6
6
|
import { Account } from '../account';
|
|
7
7
|
|
|
8
|
+
/// The execution priority is determined by the order in which the object attributes are arranged
|
|
8
9
|
export interface CallDemand_Data {
|
|
10
|
+
type_parameter: string;
|
|
9
11
|
object?: {address:string} | {namedNew: Namedbject}; // undefined or {named_new...} for creating a new object
|
|
10
12
|
permission?: {address:string} | {namedNew: Namedbject, description?:string};
|
|
11
|
-
type_parameter: string;
|
|
12
|
-
guard?: {address:string; service_id_in_guard?:number};
|
|
13
13
|
description?: string;
|
|
14
14
|
time_expire?: {op: 'duration'; minutes:number} | {op:'set'; time:number};
|
|
15
|
-
bounty?: {op:'add'; object:{address:string}|{balance:string|number}} | {op:'
|
|
15
|
+
bounty?: {op:'add'; object:{address:string}|{balance:string|number}} | {op:'reward'; service:string} | {op:'refund'} ;
|
|
16
16
|
present?: {service: string | number; recommend_words:string; service_pay_type:string, guard?:string | 'fetch'}; // guard is the present guard of Demand
|
|
17
|
-
|
|
18
|
-
refund?: boolean;
|
|
17
|
+
guard?: {address:string; service_id_in_guard?:number};
|
|
19
18
|
}
|
|
19
|
+
|
|
20
20
|
export class CallDemand extends CallBase {
|
|
21
21
|
data: CallDemand_Data;
|
|
22
22
|
constructor(data: CallDemand_Data) {
|
|
@@ -46,10 +46,10 @@ export class CallDemand extends CallBase {
|
|
|
46
46
|
if (this.data?.guard !== undefined) {
|
|
47
47
|
perms.push(PermissionIndex.demand_guard)
|
|
48
48
|
}
|
|
49
|
-
if (this.data?.
|
|
49
|
+
if (this.data?.bounty?.op === 'reward') {
|
|
50
50
|
perms.push(PermissionIndex.demand_yes)
|
|
51
51
|
}
|
|
52
|
-
if (this.data?.refund) {
|
|
52
|
+
if (this.data?.bounty?.op === 'refund') {
|
|
53
53
|
perms.push(PermissionIndex.demand_refund)
|
|
54
54
|
}
|
|
55
55
|
if (this.data?.present?.guard !== undefined) {
|
|
@@ -121,11 +121,11 @@ export class CallDemand extends CallBase {
|
|
|
121
121
|
const r = await Account.Instance().get_coin_object(txb, (this.data.bounty.object as any)?.balance, account, this.data.type_parameter);
|
|
122
122
|
if (r) obj.deposit(r)
|
|
123
123
|
}
|
|
124
|
-
} else if (this.data.bounty.op === 'refund') {
|
|
125
|
-
obj?.refund(passport);
|
|
126
124
|
} else if (this.data.bounty.op === 'reward') {
|
|
127
125
|
obj?.yes(this.data.bounty.service, passport);
|
|
128
|
-
}
|
|
126
|
+
} else if (this.data.bounty.op === 'refund') {
|
|
127
|
+
obj?.refund(passport);
|
|
128
|
+
}
|
|
129
129
|
}
|
|
130
130
|
if (this.data?.present !== undefined) {
|
|
131
131
|
//@ demand guard and its passport, if set
|
package/src/call/machine.ts
CHANGED
|
@@ -1,33 +1,31 @@
|
|
|
1
|
-
import { PassportObject, IsValidAddress, Errors, ERROR, Permission, PermissionIndex, TransactionBlock,
|
|
1
|
+
import { PassportObject, IsValidAddress, Errors, ERROR, Permission, PermissionIndex, TransactionBlock, TxbAddress,
|
|
2
2
|
PermissionIndexType, Machine, Machine_Forward, Machine_Node, Deliverable, ParentProgress, Progress, ProgressNext,
|
|
3
|
-
TxbAddress,
|
|
4
|
-
Resource,
|
|
5
|
-
ResourceObject,
|
|
6
3
|
} from 'wowok';
|
|
7
4
|
import { CallBase, CallResult, Namedbject } from "./base";
|
|
8
5
|
import { Account } from '../account';
|
|
9
6
|
|
|
7
|
+
/// The execution priority is determined by the order in which the object attributes are arranged
|
|
10
8
|
export interface CallMachine_Data {
|
|
11
9
|
object?: {address:string} | {namedNew: Namedbject}; // undefined or {named_new...} for creating a new object
|
|
12
10
|
permission?: {address:string} | {namedNew: Namedbject, description?:string};
|
|
13
|
-
bPaused?: boolean;
|
|
14
|
-
bPublished?: boolean;
|
|
15
|
-
consensus_repository?: {op:'set' | 'add' | 'remove' ; repositories:string[]} | {op:'removeall'};
|
|
16
11
|
description?: string;
|
|
17
12
|
endpoint?: string;
|
|
18
|
-
|
|
13
|
+
consensus_repository?: {op:'set' | 'add' | 'remove' ; repositories:string[]} | {op:'removeall'};
|
|
19
14
|
nodes?: {op: 'add'; data: Machine_Node[]} | {op: 'remove'; names: string[], bTransferMyself?:boolean}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
| {op:'rename node'; data:{old:string; new:string}[]} | {op:'add from myself'; addresses: string[]}
|
|
16
|
+
| {op:'remove pair'; pairs: {prior_node_name:string; node_name:string}[]}
|
|
17
|
+
| {op:'add forward'; data: {prior_node_name:string; node_name:string; forward:Machine_Forward; threshold?:number; old_need_remove?:string}[]}
|
|
18
|
+
| {op:'remove forward'; data:{prior_node_name:string; node_name:string; forward_name:string}[]}
|
|
19
|
+
bPublished?: boolean;
|
|
24
20
|
progress_new?: {task_address?:string; namedNew?: Namedbject};
|
|
25
21
|
progress_context_repository?: {progress:string; repository:string};
|
|
22
|
+
progress_namedOperator?: {progress:string; data:{name:string, operator:string[]}[]};
|
|
26
23
|
progress_parent?: {progress:string, parent?:ParentProgress};
|
|
27
24
|
progress_task?: {progress:string; task:string};
|
|
28
|
-
progress_namedOperator?: {progress:string; data:{name:string, operator:string[]}[]};
|
|
29
25
|
progress_hold?: {progress:string; data:ProgressNext; bHold:boolean; adminUnhold?:boolean};
|
|
30
26
|
progress_next?: {progress:string; data:ProgressNext; deliverable:Deliverable; guard?:string | 'fetch'};
|
|
27
|
+
bPaused?: boolean;
|
|
28
|
+
clone_new?: {namedNew: Namedbject/*, description?:string*/};
|
|
31
29
|
}
|
|
32
30
|
export class CallMachine extends CallBase { //@ todo self-owned node operate
|
|
33
31
|
data: CallMachine_Data;
|
|
@@ -48,24 +46,18 @@ export class CallMachine extends CallBase { //@ todo self-owned node operate
|
|
|
48
46
|
if (this.data?.description !== undefined && object_address) {
|
|
49
47
|
perms.push(PermissionIndex.machine_description)
|
|
50
48
|
}
|
|
51
|
-
if (this.data?.bPaused !== undefined) {
|
|
52
|
-
perms.push(PermissionIndex.machine_pause)
|
|
53
|
-
}
|
|
54
|
-
if (this.data?.bPublished) { // publish is an irreversible one-time operation
|
|
55
|
-
perms.push(PermissionIndex.machine_publish)
|
|
56
|
-
}
|
|
57
49
|
if (this.data?.endpoint !== undefined && object_address) {
|
|
58
50
|
perms.push(PermissionIndex.machine_endpoint)
|
|
59
51
|
}
|
|
60
52
|
if (this.data?.consensus_repository !== undefined) {
|
|
61
53
|
perms.push(PermissionIndex.machine_repository)
|
|
62
54
|
}
|
|
63
|
-
if (this.data?.clone_new !== undefined) {
|
|
64
|
-
perms.push(PermissionIndex.machine_clone)
|
|
65
|
-
}
|
|
66
55
|
if (this.data?.nodes !== undefined) {
|
|
67
56
|
perms.push(PermissionIndex.machine_node)
|
|
68
57
|
}
|
|
58
|
+
if (this.data?.bPublished) { // publish is an irreversible one-time operation
|
|
59
|
+
perms.push(PermissionIndex.machine_publish)
|
|
60
|
+
}
|
|
69
61
|
if (this.data?.progress_new !== undefined) {
|
|
70
62
|
perms.push(PermissionIndex.progress)
|
|
71
63
|
}
|
|
@@ -86,6 +78,9 @@ export class CallMachine extends CallBase { //@ todo self-owned node operate
|
|
|
86
78
|
perms.push(PermissionIndex.progress_unhold)
|
|
87
79
|
}
|
|
88
80
|
}
|
|
81
|
+
if (this.data?.bPaused !== undefined) {
|
|
82
|
+
perms.push(PermissionIndex.machine_pause)
|
|
83
|
+
}
|
|
89
84
|
if (this.data?.progress_next?.guard !== undefined) {
|
|
90
85
|
if (IsValidAddress(this.data?.progress_next?.guard)) {
|
|
91
86
|
guards.push(this.data?.progress_next?.guard)
|
|
@@ -170,6 +165,9 @@ export class CallMachine extends CallBase { //@ todo self-owned node operate
|
|
|
170
165
|
break;
|
|
171
166
|
}
|
|
172
167
|
}
|
|
168
|
+
if (this.data?.bPublished ) {
|
|
169
|
+
obj?.publish(passport)
|
|
170
|
+
}
|
|
173
171
|
if (this.data?.progress_new !== undefined) {
|
|
174
172
|
const addr = Progress?.New(txb, obj?.get_object(), permission??this.data?.permission, this.data?.progress_new.task_address, passport).launch();
|
|
175
173
|
if (addr) {
|
|
@@ -207,9 +205,6 @@ export class CallMachine extends CallBase { //@ todo self-owned node operate
|
|
|
207
205
|
if (this.data?.bPaused !== undefined) {
|
|
208
206
|
obj?.pause(this.data.bPaused, passport)
|
|
209
207
|
}
|
|
210
|
-
if (this.data?.bPublished ) {
|
|
211
|
-
obj?.publish(passport)
|
|
212
|
-
}
|
|
213
208
|
if (this.data?.clone_new !== undefined && obj) {
|
|
214
209
|
await this.new_with_mark(txb, obj?.clone(true, passport) as TxbAddress, (this.data?.clone_new as any)?.namedNew, account);
|
|
215
210
|
}
|
package/src/call/permission.ts
CHANGED
|
@@ -3,15 +3,16 @@ import { PassportObject, IsValidAddress, Errors, ERROR, Permission, Permission_E
|
|
|
3
3
|
PermissionIndexType, TransactionBlock
|
|
4
4
|
} from 'wowok';
|
|
5
5
|
|
|
6
|
+
/// The execution priority is determined by the order in which the object attributes are arranged
|
|
6
7
|
export interface CallPermission_Data {
|
|
7
8
|
object?: {address:string} | {namedNew: Namedbject}; // undefined or {named_new...} for creating a new object
|
|
8
|
-
builder?: string;
|
|
9
|
-
admin?: {op:'add' | 'remove' | 'set', address:string[]};
|
|
10
9
|
description?: string;
|
|
10
|
+
admin?: {op:'add' | 'remove' | 'set', address:string[]};
|
|
11
|
+
biz_permission?: {op:'add'; data: BizPermission[]} | {op:'remove'; permissions: PermissionIndexType[]};
|
|
11
12
|
permission?: {op:'add entity'; entities:Permission_Entity[]} | {op:'add permission'; permissions:Permission_Index[]}
|
|
12
13
|
| {op:'remove entity'; addresses:string[]} | {op:'remove permission'; address:string; index:PermissionIndexType[]}
|
|
13
14
|
| {op:'transfer permission', from_address: string; to_address: string};
|
|
14
|
-
|
|
15
|
+
builder?: string;
|
|
15
16
|
}
|
|
16
17
|
export class CallPermission extends CallBase {
|
|
17
18
|
data: CallPermission_Data;
|
|
@@ -49,6 +50,23 @@ export class CallPermission extends CallBase {
|
|
|
49
50
|
}
|
|
50
51
|
|
|
51
52
|
if (obj) {
|
|
53
|
+
if (this.data?.description !== undefined && this.data.object) {
|
|
54
|
+
obj?.set_description(this.data.description)
|
|
55
|
+
}
|
|
56
|
+
if (this.data?.admin !== undefined) {
|
|
57
|
+
switch(this.data.admin.op) {
|
|
58
|
+
case 'add':
|
|
59
|
+
obj?.add_admin(this.data.admin.address);
|
|
60
|
+
break;
|
|
61
|
+
case 'remove':
|
|
62
|
+
obj?.remove_admin(this.data.admin.address);
|
|
63
|
+
break;
|
|
64
|
+
case 'set':
|
|
65
|
+
obj?.remove_admin([], true);
|
|
66
|
+
obj?.add_admin(this.data.admin.address);
|
|
67
|
+
break
|
|
68
|
+
}
|
|
69
|
+
}
|
|
52
70
|
if (this.data?.biz_permission !== undefined) { // High priority operate
|
|
53
71
|
switch(this.data.biz_permission.op) {
|
|
54
72
|
case 'add':
|
|
@@ -63,9 +81,6 @@ export class CallPermission extends CallBase {
|
|
|
63
81
|
break;
|
|
64
82
|
}
|
|
65
83
|
}
|
|
66
|
-
if (this.data?.description !== undefined && this.data.object) {
|
|
67
|
-
obj?.set_description(this.data.description)
|
|
68
|
-
}
|
|
69
84
|
if (this.data?.permission !== undefined) {
|
|
70
85
|
switch (this.data.permission.op) {
|
|
71
86
|
case 'add entity':
|
|
@@ -85,20 +100,6 @@ export class CallPermission extends CallBase {
|
|
|
85
100
|
break;
|
|
86
101
|
}
|
|
87
102
|
}
|
|
88
|
-
if (this.data?.admin !== undefined) {
|
|
89
|
-
switch(this.data.admin.op) {
|
|
90
|
-
case 'add':
|
|
91
|
-
obj?.add_admin(this.data.admin.address);
|
|
92
|
-
break;
|
|
93
|
-
case 'remove':
|
|
94
|
-
obj?.remove_admin(this.data.admin.address);
|
|
95
|
-
break;
|
|
96
|
-
case 'set':
|
|
97
|
-
obj?.remove_admin([], true);
|
|
98
|
-
obj?.add_admin(this.data.admin.address);
|
|
99
|
-
break
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
103
|
if (this.data?.builder !== undefined ) {
|
|
103
104
|
obj?.change_owner(this.data.builder);
|
|
104
105
|
}
|
package/src/call/personal.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { ResourceObject, TransactionBlock } from 'wowok';
|
|
|
2
2
|
import { PassportObject, IsValidAddress, Errors, ERROR, Entity, Entity_Info, TagName, Resource} from 'wowok';
|
|
3
3
|
import { CallBase, CallResult, Namedbject } from "./base";
|
|
4
4
|
|
|
5
|
+
/// The execution priority is determined by the order in which the object attributes are arranged
|
|
5
6
|
export interface CallPersonal_Data {
|
|
6
7
|
object?: {address:string} | {namedNew: Namedbject}; // undefined or {named_new...} for creating a new object
|
|
7
8
|
information?: Entity_Info;
|
package/src/call/repository.ts
CHANGED
|
@@ -5,12 +5,13 @@ import { PassportObject, IsValidAddress, Errors, ERROR, Permission, PermissionIn
|
|
|
5
5
|
} from 'wowok';
|
|
6
6
|
import { CallBase, CallResult, Namedbject} from "./base";
|
|
7
7
|
|
|
8
|
+
/// The execution priority is determined by the order in which the object attributes are arranged
|
|
8
9
|
export interface CallRepository_Data {
|
|
9
10
|
object?: {address:string} | {namedNew: Namedbject}; // undefined or {named_new...} for creating a new object
|
|
10
11
|
permission?: {address:string} | {namedNew: Namedbject, description?:string};
|
|
11
12
|
description?: string;
|
|
12
|
-
mode?: Repository_Policy_Mode; // default: 'Relax' (POLICY_MODE_FREE)
|
|
13
13
|
reference?: {op:'set' | 'add' | 'remove' ; addresses:string[]} | {op:'removeall'};
|
|
14
|
+
mode?: Repository_Policy_Mode; // default: 'Relax' (POLICY_MODE_FREE)
|
|
14
15
|
policy?: {op:'add' | 'set'; data:Repository_Policy[]} | {op:'remove'; data:string[]} | {op:'removeall'} | {op:'rename'; data:{old:string; new:string}[]};
|
|
15
16
|
data?: {op:'add', data: Repository_Policy_Data | Repository_Policy_Data2} | {op:'remove'; data: Repository_Policy_Data_Remove};
|
|
16
17
|
}
|
|
@@ -89,19 +90,8 @@ export class CallRepository extends CallBase {
|
|
|
89
90
|
break;
|
|
90
91
|
}
|
|
91
92
|
}
|
|
92
|
-
if (this.data?.
|
|
93
|
-
|
|
94
|
-
case 'add':
|
|
95
|
-
if ((this.data.data?.data as any)?.key !== undefined) {
|
|
96
|
-
obj?.add_data(this.data.data.data as Repository_Policy_Data);
|
|
97
|
-
} else if ((this.data.data?.data as any)?.address !== undefined) {
|
|
98
|
-
obj?.add_data2(this.data.data.data as Repository_Policy_Data2);
|
|
99
|
-
}
|
|
100
|
-
break;
|
|
101
|
-
case 'remove':
|
|
102
|
-
obj?.remove(this.data.data.data.address, this.data.data.data.key);
|
|
103
|
-
break;
|
|
104
|
-
}
|
|
93
|
+
if (this.data?.mode !== undefined && object_address) { //@ priority??
|
|
94
|
+
obj?.set_policy_mode(this.data.mode, passport)
|
|
105
95
|
}
|
|
106
96
|
if (this.data?.policy !== undefined) {
|
|
107
97
|
switch(this.data.policy.op) {
|
|
@@ -125,9 +115,21 @@ export class CallRepository extends CallBase {
|
|
|
125
115
|
break;
|
|
126
116
|
}
|
|
127
117
|
}
|
|
128
|
-
if (this.data?.
|
|
129
|
-
|
|
118
|
+
if (this.data?.data !== undefined) {
|
|
119
|
+
switch(this.data.data.op) {
|
|
120
|
+
case 'add':
|
|
121
|
+
if ((this.data.data?.data as any)?.key !== undefined) {
|
|
122
|
+
obj?.add_data(this.data.data.data as Repository_Policy_Data);
|
|
123
|
+
} else if ((this.data.data?.data as any)?.address !== undefined) {
|
|
124
|
+
obj?.add_data2(this.data.data.data as Repository_Policy_Data2);
|
|
125
|
+
}
|
|
126
|
+
break;
|
|
127
|
+
case 'remove':
|
|
128
|
+
obj?.remove(this.data.data.data.address, this.data.data.data.key);
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
130
131
|
}
|
|
132
|
+
|
|
131
133
|
if (permission) {
|
|
132
134
|
await this.new_with_mark(txb, permission.launch(), (this.data?.permission as any)?.namedNew, account);
|
|
133
135
|
}
|
package/src/call/service.ts
CHANGED
|
@@ -1,43 +1,44 @@
|
|
|
1
|
-
import { TransactionBlock,
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Service_Guard_Percent, Service_Sale, WithdrawPayee, Treasury, WitnessFill
|
|
1
|
+
import { TransactionBlock, IsValidArgType, TxbAddress, TagName, PassportObject, IsValidAddress, Errors, ERROR, Permission,
|
|
2
|
+
PermissionIndex, PermissionIndexType, BuyRequiredEnum, Customer_RequiredInfo, DicountDispatch, Service, Service_Buy,
|
|
3
|
+
Service_Guard_Percent, Service_Sale, WithdrawPayee, Treasury,
|
|
5
4
|
} from 'wowok';
|
|
6
5
|
import { query_objects, ObjectService } from '../objects';
|
|
7
6
|
import { CallBase, CallResult, Namedbject } from "./base";
|
|
8
7
|
import { Account } from '../account';
|
|
9
8
|
|
|
9
|
+
/// The execution priority is determined by the order in which the object attributes are arranged
|
|
10
10
|
export interface CallService_Data {
|
|
11
|
+
type_parameter: string;
|
|
11
12
|
object?: {address:string} | {namedNew: Namedbject}; // undefined or {named_new...} for creating a new object
|
|
12
13
|
permission?: {address:string} | {namedNew: Namedbject, description?:string};
|
|
13
|
-
type_parameter: string;
|
|
14
|
-
bPaused?: boolean;
|
|
15
|
-
bPublished?: boolean;
|
|
16
14
|
description?: string;
|
|
17
|
-
gen_discount?: DicountDispatch[];
|
|
18
|
-
arbitration?: {op:'set' | 'add'; arbitrations:{address:string, type_parameter:string}[]}
|
|
19
|
-
| {op:'removeall'} | {op:'remove', addresses:string[]};
|
|
20
|
-
buy_guard?: string;
|
|
21
15
|
endpoint?: string;
|
|
16
|
+
payee_treasury?:{address:string} | {namedNew: Namedbject, description?:string};
|
|
17
|
+
gen_discount?: DicountDispatch[];
|
|
18
|
+
repository?: {op:'set' | 'add' | 'remove' ; repositories:string[]} | {op:'removeall'};
|
|
22
19
|
extern_withdraw_treasury?: {op:'set' | 'add'; treasuries:{address:string, token_type:string}[]}
|
|
23
20
|
| {op:'removeall'} | {op:'remove', addresses:string[]};
|
|
24
21
|
machine?: string;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
arbitration?: {op:'set' | 'add'; arbitrations:{address:string, type_parameter:string}[]}
|
|
23
|
+
| {op:'removeall'} | {op:'remove', addresses:string[]};
|
|
24
|
+
customer_required_info?: {pubkey:string; required_info:(string | BuyRequiredEnum)[]};
|
|
25
|
+
sales?: {op:'add', sales:Service_Sale[]} | {op:'remove'; sales_name:string[]}
|
|
28
26
|
withdraw_guard?: {op:'add' | 'set'; guards:Service_Guard_Percent[]}
|
|
29
27
|
| {op:'removeall'} | {op:'remove', addresses:string[]};
|
|
30
28
|
refund_guard?: {op:'add' | 'set'; guards:Service_Guard_Percent[]}
|
|
31
29
|
| {op:'removeall'} | {op:'remove', addresses:string[]};
|
|
32
|
-
|
|
33
|
-
sales?: {op:'add', sales:Service_Sale[]} | {op:'remove'; sales_name:string[]}
|
|
30
|
+
bPublished?: boolean;
|
|
34
31
|
order_new?: {buy_items:Service_Buy[], discount?:string, machine?:string, customer_info_crypto?: Customer_RequiredInfo, guard?:string | 'fetch', namedNew?: Namedbject}
|
|
32
|
+
order_agent?: {order:string; agents: string[]; progress?:string};
|
|
35
33
|
order_required_info?: {order:string; info:Customer_RequiredInfo};
|
|
36
34
|
order_refund?: {order:string; guard?:string;} | {order:string; arb:string; arb_token_type:string}; // guard address
|
|
37
35
|
order_withdrawl?: {order:string; data:WithdrawPayee}; // guard address
|
|
38
36
|
order_payer?: {order:string; payer_new: string}; // transfer the order payer permission to someaddress
|
|
39
|
-
|
|
37
|
+
buy_guard?: string;
|
|
38
|
+
bPaused?: boolean;
|
|
39
|
+
clone_new?: {token_type_new?:string; namedNew?: Namedbject};
|
|
40
40
|
}
|
|
41
|
+
|
|
41
42
|
export class CallService extends CallBase {
|
|
42
43
|
data: CallService_Data;
|
|
43
44
|
constructor(data: CallService_Data) {
|
|
@@ -175,14 +176,11 @@ export class CallService extends CallBase {
|
|
|
175
176
|
if (this.data?.description !== undefined && object_address) {
|
|
176
177
|
obj?.set_description(this.data.description, passport);
|
|
177
178
|
}
|
|
178
|
-
if (this.data?.payee_treasury !== undefined && object_address) {
|
|
179
|
-
obj?.set_payee(treasury_address, passport);
|
|
180
|
-
}
|
|
181
179
|
if (this.data?.endpoint !== undefined) {
|
|
182
180
|
obj?.set_endpoint(this.data.endpoint, passport)
|
|
183
181
|
}
|
|
184
|
-
if (this.data?.
|
|
185
|
-
obj?.
|
|
182
|
+
if (this.data?.payee_treasury !== undefined && object_address) {
|
|
183
|
+
obj?.set_payee(treasury_address, passport);
|
|
186
184
|
}
|
|
187
185
|
if (this.data?.gen_discount !== undefined) {
|
|
188
186
|
obj?.discount_transfer(this.data.gen_discount, passport)
|
|
@@ -221,6 +219,9 @@ export class CallService extends CallBase {
|
|
|
221
219
|
break;
|
|
222
220
|
}
|
|
223
221
|
}
|
|
222
|
+
if (this.data?.machine !== undefined) {
|
|
223
|
+
obj?.set_machine(this.data.machine, passport)
|
|
224
|
+
}
|
|
224
225
|
if (this.data?.arbitration !== undefined) {
|
|
225
226
|
switch(this.data.arbitration.op) {
|
|
226
227
|
case 'add':
|
|
@@ -238,6 +239,13 @@ export class CallService extends CallBase {
|
|
|
238
239
|
break;
|
|
239
240
|
}
|
|
240
241
|
}
|
|
242
|
+
if (this.data?.customer_required_info !== undefined) {
|
|
243
|
+
if (this.data.customer_required_info.required_info && this.data.customer_required_info.pubkey) {
|
|
244
|
+
obj?.set_customer_required(this.data.customer_required_info.pubkey, this.data.customer_required_info.required_info, passport);
|
|
245
|
+
} else if (this.data.customer_required_info.pubkey) {
|
|
246
|
+
obj?.change_required_pubkey(this.data.customer_required_info.pubkey, passport);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
241
249
|
if (this.data?.sales !== undefined) {
|
|
242
250
|
switch(this.data.sales.op) {
|
|
243
251
|
case 'add':
|
|
@@ -248,47 +256,6 @@ export class CallService extends CallBase {
|
|
|
248
256
|
break;
|
|
249
257
|
}
|
|
250
258
|
}
|
|
251
|
-
if (this.data?.order_new !== undefined) {
|
|
252
|
-
let b = BigInt(0); let coin : any;
|
|
253
|
-
this.data.order_new.buy_items.forEach(v => {
|
|
254
|
-
b += BigInt(v.max_price) * BigInt(v.count)
|
|
255
|
-
})
|
|
256
|
-
if (b > BigInt(0)) {
|
|
257
|
-
const coin = await Account.Instance().get_coin_object(txb, b, account, this.data.type_parameter);
|
|
258
|
-
if (coin) {
|
|
259
|
-
//@ crypto tools support
|
|
260
|
-
const addr = obj.buy(this.data.order_new.buy_items, coin, this.data.order_new.discount,
|
|
261
|
-
this.data.order_new.machine, this.data.order_new.customer_info_crypto, passport) ;
|
|
262
|
-
await this.new_with_mark(txb, addr, (this.data?.order_new as any)?.namedNew, account, [TagName.Launch, TagName.Order]);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
if (this.data?.order_payer !== undefined && obj) {
|
|
267
|
-
obj?.change_order_payer(this.data?.order_payer.order, this.data.order_payer.payer_new)
|
|
268
|
-
}
|
|
269
|
-
if (this.data?.order_agent !== undefined) {
|
|
270
|
-
obj?.set_order_agent(this.data.order_agent.order, this.data.order_agent.agents, this.data.order_agent.progress)
|
|
271
|
-
}
|
|
272
|
-
if (this.data?.order_required_info !== undefined) {
|
|
273
|
-
obj?.update_order_required_info(this.data.order_required_info.order, this.data.order_required_info.info)
|
|
274
|
-
}
|
|
275
|
-
if (this.data?.order_refund !== undefined) {
|
|
276
|
-
if ((this.data?.order_refund as any)?.arb && (this.data?.order_refund as any)?.arb_token_type) {
|
|
277
|
-
obj?.refund_withArb(this.data.order_refund.order, (this.data?.order_refund as any)?.arb, (this.data?.order_refund as any)?.arb_token_type)
|
|
278
|
-
} else {
|
|
279
|
-
obj?.refund(this.data.order_refund.order, (this.data?.order_refund as any)?.guard, passport)
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
if (this.data?.order_withdrawl !== undefined && passport) { //@ need withdrawal passport
|
|
283
|
-
obj?.withdraw(this.data.order_withdrawl.order, this.data.order_withdrawl.data, passport)
|
|
284
|
-
}
|
|
285
|
-
if (this.data?.customer_required_info !== undefined) {
|
|
286
|
-
if (this.data.customer_required_info.required_info && this.data.customer_required_info.pubkey) {
|
|
287
|
-
obj?.set_customer_required(this.data.customer_required_info.pubkey, this.data.customer_required_info.required_info, passport);
|
|
288
|
-
} else if (this.data.customer_required_info.pubkey) {
|
|
289
|
-
obj?.change_required_pubkey(this.data.customer_required_info.pubkey, passport);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
259
|
if (this.data?.withdraw_guard !== undefined) {
|
|
293
260
|
switch(this.data.withdraw_guard.op) {
|
|
294
261
|
case 'add':
|
|
@@ -323,15 +290,49 @@ export class CallService extends CallBase {
|
|
|
323
290
|
break;
|
|
324
291
|
}
|
|
325
292
|
}
|
|
293
|
+
if (this.data?.bPublished) {
|
|
294
|
+
obj?.publish(passport)
|
|
295
|
+
}
|
|
296
|
+
if (this.data?.order_new !== undefined) {
|
|
297
|
+
let b = BigInt(0); let coin : any;
|
|
298
|
+
this.data.order_new.buy_items.forEach(v => {
|
|
299
|
+
b += BigInt(v.max_price) * BigInt(v.count)
|
|
300
|
+
})
|
|
301
|
+
if (b > BigInt(0)) {
|
|
302
|
+
const coin = await Account.Instance().get_coin_object(txb, b, account, this.data.type_parameter);
|
|
303
|
+
if (coin) {
|
|
304
|
+
//@ crypto tools support
|
|
305
|
+
const addr = obj.buy(this.data.order_new.buy_items, coin, this.data.order_new.discount,
|
|
306
|
+
this.data.order_new.machine, this.data.order_new.customer_info_crypto, passport) ;
|
|
307
|
+
await this.new_with_mark(txb, addr, (this.data?.order_new as any)?.namedNew, account, [TagName.Launch, TagName.Order]);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
if (this.data?.order_agent !== undefined) {
|
|
312
|
+
obj?.set_order_agent(this.data.order_agent.order, this.data.order_agent.agents, this.data.order_agent.progress)
|
|
313
|
+
}
|
|
314
|
+
if (this.data?.order_required_info !== undefined) {
|
|
315
|
+
obj?.update_order_required_info(this.data.order_required_info.order, this.data.order_required_info.info)
|
|
316
|
+
}
|
|
317
|
+
if (this.data?.order_refund !== undefined) {
|
|
318
|
+
if ((this.data?.order_refund as any)?.arb && (this.data?.order_refund as any)?.arb_token_type) {
|
|
319
|
+
obj?.refund_withArb(this.data.order_refund.order, (this.data?.order_refund as any)?.arb, (this.data?.order_refund as any)?.arb_token_type)
|
|
320
|
+
} else {
|
|
321
|
+
obj?.refund(this.data.order_refund.order, (this.data?.order_refund as any)?.guard, passport)
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
if (this.data?.order_withdrawl !== undefined && passport) { //@ need withdrawal passport
|
|
325
|
+
obj?.withdraw(this.data.order_withdrawl.order, this.data.order_withdrawl.data, passport)
|
|
326
|
+
}
|
|
327
|
+
if (this.data?.order_payer !== undefined && obj) {
|
|
328
|
+
obj?.change_order_payer(this.data?.order_payer.order, this.data.order_payer.payer_new)
|
|
329
|
+
}
|
|
326
330
|
if (this.data?.buy_guard !== undefined) {
|
|
327
331
|
obj?.set_buy_guard(this.data.buy_guard, passport)
|
|
328
332
|
}
|
|
329
333
|
if (this.data?.bPaused !== undefined) {
|
|
330
334
|
obj?.pause(this.data.bPaused, passport)
|
|
331
335
|
}
|
|
332
|
-
if (this.data?.bPublished) {
|
|
333
|
-
obj?.publish(passport)
|
|
334
|
-
}
|
|
335
336
|
if (this.data?.clone_new !== undefined && obj) {
|
|
336
337
|
await this.new_with_mark(txb, obj.clone(this.data.clone_new?.token_type_new, true, passport) as TxbAddress, (this.data?.clone_new as any)?.namedNew, account);
|
|
337
338
|
}
|
package/src/call/treasury.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { TransactionBlock,
|
|
2
|
-
|
|
3
|
-
PermissionIndexType, DepositParam, Treasury, Treasury_WithdrawMode, WithdrawParam, WitnessFill
|
|
1
|
+
import { TransactionBlock, IsValidArgType, PassportObject, IsValidAddress, Errors, ERROR, Permission, PermissionIndex,
|
|
2
|
+
PermissionIndexType, Treasury, Treasury_WithdrawMode, WithdrawParam,
|
|
4
3
|
} from 'wowok';
|
|
5
4
|
import { query_objects, ObjectTreasury } from '../objects';
|
|
6
5
|
import { CallBase, CallResult, Namedbject } from "./base";
|
|
7
6
|
import { Account } from '../account';
|
|
8
7
|
|
|
8
|
+
/// The execution priority is determined by the order in which the object attributes are arranged
|
|
9
9
|
export interface CallTreasury_Data {
|
|
10
|
+
type_parameter: string;
|
|
10
11
|
object?: {address:string} | {namedNew: Namedbject}; // undefined or {named_new...} for creating a new object
|
|
11
12
|
permission?: {address:string} | {namedNew: Namedbject, description?:string};
|
|
12
|
-
type_parameter: string;
|
|
13
13
|
description?: string;
|
|
14
|
-
withdraw_mode?: Treasury_WithdrawMode;
|
|
15
|
-
withdraw_guard?: {op:'add' | 'set'; data:{guard:string, amount:string|number}[]} | {op:'remove', guards:string[]} | {op:'removeall'};
|
|
16
|
-
deposit_guard?: string;
|
|
17
14
|
deposit?: {data:{balance:string|number; index?:number; remark?:string; for_object?:string; for_guard?:string}; guard?:string | 'fetch'};
|
|
18
15
|
receive?: {payment:string; received_object:string};
|
|
19
16
|
withdraw?:WithdrawParam;
|
|
17
|
+
deposit_guard?: string;
|
|
18
|
+
withdraw_guard?: {op:'add' | 'set'; data:{guard:string, amount:string|number}[]} | {op:'remove', guards:string[]} | {op:'removeall'};
|
|
19
|
+
withdraw_mode?: Treasury_WithdrawMode;
|
|
20
20
|
}
|
|
21
21
|
export class CallTreasury extends CallBase {
|
|
22
22
|
data: CallTreasury_Data;
|
|
@@ -120,6 +120,9 @@ export class CallTreasury extends CallBase {
|
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
if (obj) {
|
|
123
|
+
if (this.data?.description !== undefined && object_address) {
|
|
124
|
+
obj?.set_description(this.data.description, passport);
|
|
125
|
+
}
|
|
123
126
|
if (this.data.deposit !== undefined) {
|
|
124
127
|
const coin = await Account.Instance().get_coin_object(txb, this.data.deposit.data.balance, account, this.data.type_parameter);
|
|
125
128
|
if (coin) {
|
|
@@ -130,15 +133,13 @@ export class CallTreasury extends CallBase {
|
|
|
130
133
|
})
|
|
131
134
|
}
|
|
132
135
|
}
|
|
133
|
-
if (this.data?.withdraw !== undefined) {
|
|
134
|
-
obj?.withdraw(this.data.withdraw, passport)
|
|
135
|
-
}
|
|
136
136
|
if (this.data?.receive !== undefined) {
|
|
137
137
|
obj?.receive(this.data.receive.payment, this.data.receive.received_object, passport);
|
|
138
138
|
}
|
|
139
|
-
if (this.data?.
|
|
140
|
-
obj?.
|
|
139
|
+
if (this.data?.withdraw !== undefined) {
|
|
140
|
+
obj?.withdraw(this.data.withdraw, passport)
|
|
141
141
|
}
|
|
142
|
+
|
|
142
143
|
if (this.data?.deposit_guard !== undefined) {
|
|
143
144
|
obj?.set_deposit_guard(this.data.deposit_guard, passport);
|
|
144
145
|
}
|
package/src/call.ts
CHANGED
package/src/permission.ts
CHANGED
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
* not only the permission table, but also the administrator or Builder identity.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { TransactionBlock, } from 'wowok';
|
|
7
|
-
import { Protocol, Bcs, IsValidAddress, Errors, ERROR, Permission, PermissionAnswer, BCS} from 'wowok';
|
|
8
|
-
|
|
6
|
+
import { TransactionBlock, Protocol, Bcs, IsValidAddress, Errors, ERROR, Permission, PermissionAnswer, BCS} from 'wowok';
|
|
9
7
|
|
|
10
8
|
export interface PermissionQuery {
|
|
11
9
|
permission_object: string;
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import * as os from 'os';
|
|
4
|
+
import { BuyRequiredEnum } from 'wowok';
|
|
5
|
+
|
|
6
|
+
const Private_FileName = 'wowok.sel.dat';
|
|
7
|
+
const Private_Key = 'wowok-sel-v1';
|
|
8
|
+
|
|
9
|
+
export interface PrivateInfo_Data {
|
|
10
|
+
name: string;
|
|
11
|
+
default?: boolean;
|
|
12
|
+
info: Map<BuyRequiredEnum | string, string>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export class PrivateInfo {
|
|
16
|
+
constructor(storage: 'File' | 'Explorer' = 'File') {
|
|
17
|
+
this.storage = storage;
|
|
18
|
+
}
|
|
19
|
+
static _instance: any;
|
|
20
|
+
|
|
21
|
+
static Instance() : PrivateInfo {
|
|
22
|
+
if (!PrivateInfo._instance) {
|
|
23
|
+
PrivateInfo._instance = new PrivateInfo();
|
|
24
|
+
}; return PrivateInfo._instance
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
private storage: 'File' | 'Explorer' = 'File';
|
|
28
|
+
|
|
29
|
+
private _add(buffer:string | null | undefined, name:string, info:Map<BuyRequiredEnum | string, string>, bDefault?: boolean) : PrivateInfo_Data[] | undefined{
|
|
30
|
+
var data : PrivateInfo_Data[] | undefined;
|
|
31
|
+
|
|
32
|
+
try {
|
|
33
|
+
if (buffer) {
|
|
34
|
+
data = JSON.parse(buffer) as PrivateInfo_Data[];
|
|
35
|
+
if (data) {
|
|
36
|
+
const f = data.find(v => v.name === name);
|
|
37
|
+
if (f) {
|
|
38
|
+
f.default = bDefault;
|
|
39
|
+
f.info = info;
|
|
40
|
+
} else {
|
|
41
|
+
if (bDefault) {
|
|
42
|
+
data.forEach(v => v.default = false)
|
|
43
|
+
}
|
|
44
|
+
data.push({name:name, info:info, default:bDefault})
|
|
45
|
+
}
|
|
46
|
+
} else {
|
|
47
|
+
data = [{name:name, info:info, default:bDefault}];
|
|
48
|
+
}
|
|
49
|
+
return data
|
|
50
|
+
}
|
|
51
|
+
} catch(e) { console.log(e) }
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
private _remove(buffer:string | null | undefined, name:string) : PrivateInfo_Data[] | undefined{
|
|
55
|
+
var data : PrivateInfo_Data[] | undefined;
|
|
56
|
+
|
|
57
|
+
try {
|
|
58
|
+
if (buffer) {
|
|
59
|
+
data = JSON.parse(buffer) as PrivateInfo_Data[];
|
|
60
|
+
if (data) {
|
|
61
|
+
return data.filter(v => v.name !== name);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
} catch(e) { console.log(e) }
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
private _default(buffer:string | null | undefined) : PrivateInfo_Data | undefined {
|
|
68
|
+
var data : PrivateInfo_Data[] | undefined;
|
|
69
|
+
try {
|
|
70
|
+
if (buffer) {
|
|
71
|
+
data = JSON.parse(buffer) as PrivateInfo_Data[];
|
|
72
|
+
if (data) {
|
|
73
|
+
const f = data.find(v => v.default);
|
|
74
|
+
if (f) {
|
|
75
|
+
return f
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
} catch(e) { console.log(e) }
|
|
80
|
+
}
|
|
81
|
+
private _get(buffer:string | null | undefined, name?:string, bNotFoundReturnDefault?:boolean) : PrivateInfo_Data | undefined {
|
|
82
|
+
var data : PrivateInfo_Data[] | undefined;
|
|
83
|
+
try {
|
|
84
|
+
if (buffer) {
|
|
85
|
+
data = JSON.parse(buffer) as PrivateInfo_Data[];
|
|
86
|
+
if (data) {
|
|
87
|
+
const f = data.find(v => v.name === name);
|
|
88
|
+
if (f) {
|
|
89
|
+
return f
|
|
90
|
+
}
|
|
91
|
+
if (bNotFoundReturnDefault) {
|
|
92
|
+
return data.find(v => v.default)
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
} catch(e) { console.log(e) }
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
private _rename(buffer:string | null | undefined, oldName:string, newName:string, bSwapIfExisted:boolean=true) : PrivateInfo_Data[] | undefined {
|
|
100
|
+
var data : PrivateInfo_Data[] | undefined;
|
|
101
|
+
try {
|
|
102
|
+
if (buffer) {
|
|
103
|
+
data = JSON.parse(buffer) as PrivateInfo_Data[];
|
|
104
|
+
|
|
105
|
+
if (data) {
|
|
106
|
+
const f1 = data.find(v => v.name === oldName);
|
|
107
|
+
if (!f1) return undefined;
|
|
108
|
+
|
|
109
|
+
const f2 = data.find(v => v.name === newName);
|
|
110
|
+
if (f2) {
|
|
111
|
+
if (bSwapIfExisted) {
|
|
112
|
+
f1.name = newName;
|
|
113
|
+
f2.name = oldName;
|
|
114
|
+
return data
|
|
115
|
+
}
|
|
116
|
+
} else {
|
|
117
|
+
f1.name = newName;
|
|
118
|
+
return data;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
} catch(e) { console.log(e) }
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
set_storage(storage: 'File' | 'Explorer' = 'File') {
|
|
126
|
+
this.storage = storage
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
default() : PrivateInfo_Data | undefined {
|
|
130
|
+
try {
|
|
131
|
+
if (this.storage === 'File') {
|
|
132
|
+
const filePath = path.join(os.homedir(), Private_FileName);
|
|
133
|
+
return this._default(fs.readFileSync(filePath, 'utf-8'));
|
|
134
|
+
} else if (this.storage === 'Explorer') {
|
|
135
|
+
return this._default(localStorage.getItem(Private_Key));
|
|
136
|
+
}
|
|
137
|
+
} catch (e) { console.log(e) }
|
|
138
|
+
}
|
|
139
|
+
get(name?: string, bNotFoundReturnDefault:boolean=true) : PrivateInfo_Data | undefined {
|
|
140
|
+
try {
|
|
141
|
+
if (this.storage === 'File') {
|
|
142
|
+
const filePath = path.join(os.homedir(), Private_FileName);
|
|
143
|
+
return this._get(fs.readFileSync(filePath, 'utf-8'), name, bNotFoundReturnDefault);
|
|
144
|
+
} else if (this.storage === 'Explorer') {
|
|
145
|
+
return this._get(localStorage.getItem(Private_Key), name, bNotFoundReturnDefault);
|
|
146
|
+
}
|
|
147
|
+
} catch (e) { console.log(e) }
|
|
148
|
+
}
|
|
149
|
+
rename(oldName:string, newName:string, bSwapIfExisted:boolean=true) : boolean {
|
|
150
|
+
var res : PrivateInfo_Data[] | undefined;
|
|
151
|
+
try {
|
|
152
|
+
if (this.storage === 'File') {
|
|
153
|
+
const filePath = path.join(os.homedir(), Private_FileName);
|
|
154
|
+
res = this._rename(fs.readFileSync(filePath, 'utf-8'), oldName, newName, bSwapIfExisted);
|
|
155
|
+
if (res) {fs.writeFileSync(filePath, JSON.stringify(res), 'utf-8') }
|
|
156
|
+
} else if (this.storage === 'Explorer') {
|
|
157
|
+
res = this._rename(localStorage.getItem(Private_Key), oldName, newName, bSwapIfExisted);
|
|
158
|
+
if (res) localStorage.setItem(Private_Key, JSON.stringify(res));
|
|
159
|
+
}
|
|
160
|
+
} catch (e) { console.log(e) }
|
|
161
|
+
return res ? true : false
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
list() : PrivateInfo_Data[] {
|
|
165
|
+
try {
|
|
166
|
+
if (this.storage === 'File') {
|
|
167
|
+
const filePath = path.join(os.homedir(), Private_FileName);
|
|
168
|
+
return JSON.parse(fs.readFileSync(filePath, 'utf-8')) as PrivateInfo_Data[];
|
|
169
|
+
} else if (this.storage === 'Explorer') {
|
|
170
|
+
return JSON.parse(localStorage.getItem(Private_Key) ?? '') as PrivateInfo_Data[];
|
|
171
|
+
}
|
|
172
|
+
} catch (e) { console.log(e) }
|
|
173
|
+
return []
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
add(name:string, info:Map<BuyRequiredEnum | string, string>, bDefault?: boolean) {
|
|
177
|
+
try {
|
|
178
|
+
if (this.storage === 'File') {
|
|
179
|
+
const filePath = path.join(os.homedir(), Private_FileName);
|
|
180
|
+
fs.readFile(filePath, 'utf-8', (err, d) => {
|
|
181
|
+
const data = this._add(d, name, info, bDefault);
|
|
182
|
+
fs.writeFileSync(filePath, JSON.stringify(data), 'utf-8')
|
|
183
|
+
});
|
|
184
|
+
} else if (this.storage === 'Explorer') {
|
|
185
|
+
const data = this._add(localStorage.getItem(Private_Key), name, info, bDefault);
|
|
186
|
+
localStorage.setItem(Private_Key, JSON.stringify(data))
|
|
187
|
+
}
|
|
188
|
+
} catch (e) { console.log(e) }
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
remove(name:string) {
|
|
192
|
+
try {
|
|
193
|
+
if (this.storage === 'File') {
|
|
194
|
+
const filePath = path.join(os.homedir(), Private_FileName);
|
|
195
|
+
fs.readFile(filePath, 'utf-8', (err, d) => {
|
|
196
|
+
const data = this._remove(d, name);
|
|
197
|
+
fs.writeFileSync(filePath, JSON.stringify(data), 'utf-8')
|
|
198
|
+
});
|
|
199
|
+
} else if (this.storage === 'Explorer') {
|
|
200
|
+
const data = this._remove(localStorage.getItem(Private_Key), name);
|
|
201
|
+
localStorage.setItem(Private_Key, JSON.stringify(data))
|
|
202
|
+
}
|
|
203
|
+
} catch (e) { console.log(e) }
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
removeall() {
|
|
207
|
+
try {
|
|
208
|
+
if (this.storage === 'File') {
|
|
209
|
+
const filePath = path.join(os.homedir(), Private_FileName);
|
|
210
|
+
fs.unlink(filePath, (err) => {console.log(err)});
|
|
211
|
+
} else if (this.storage === 'Explorer') {
|
|
212
|
+
localStorage.removeItem(Private_Key)
|
|
213
|
+
}
|
|
214
|
+
} catch (e) { console.log(e) }
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|