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/call/machine.ts
CHANGED
|
@@ -4,6 +4,8 @@ import { PassportObject, IsValidAddress, Errors, ERROR, Permission, PermissionIn
|
|
|
4
4
|
} from 'wowok';
|
|
5
5
|
import { CallBase, CallResult, Namedbject } from "./base.js";
|
|
6
6
|
import { Account } from '../local/account.js';
|
|
7
|
+
import { ObjectMachine } from '../query/objects.js';
|
|
8
|
+
import { LocalMark } from '../local/local.js';
|
|
7
9
|
|
|
8
10
|
/// The execution priority is determined by the order in which the object attributes are arranged
|
|
9
11
|
export interface CallMachine_Data {
|
|
@@ -24,7 +26,7 @@ export interface CallMachine_Data {
|
|
|
24
26
|
progress_parent?: {progress?:string, parent?:ParentProgress};
|
|
25
27
|
progress_task?: {progress?:string; task:string};
|
|
26
28
|
progress_hold?: {progress?:string; operation:ProgressNext; bHold:boolean; adminUnhold?:boolean};
|
|
27
|
-
progress_next?: {progress:string; operation:ProgressNext; deliverable:Deliverable; guard?:string
|
|
29
|
+
progress_next?: {progress:string; operation:ProgressNext; deliverable:Deliverable; guard?:string};
|
|
28
30
|
bPaused?: boolean;
|
|
29
31
|
clone_new?: {namedNew?: Namedbject/*, description?:string*/};
|
|
30
32
|
}
|
|
@@ -37,10 +39,21 @@ export class CallMachine extends CallBase { //@ todo self-owned node operate
|
|
|
37
39
|
async call(account?:string) : Promise<CallResult> {
|
|
38
40
|
var checkOwner = false; const guards : string[] = [];
|
|
39
41
|
const perms : PermissionIndexType[] = [];
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
var [permission_address, object_address] =
|
|
43
|
+
await LocalMark.Instance().get_many_address(
|
|
44
|
+
[(this.data?.permission as any)?.address,
|
|
45
|
+
(this.data?.object as any)?.address]);
|
|
42
46
|
|
|
43
|
-
if (
|
|
47
|
+
if (object_address) {
|
|
48
|
+
if (!permission_address) {
|
|
49
|
+
await this.update_content(object_address, 'Machine');
|
|
50
|
+
if (this.content) {
|
|
51
|
+
permission_address = (this.content as ObjectMachine).permission;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (permission_address) {
|
|
44
57
|
if (!this.data?.object) {
|
|
45
58
|
perms.push(PermissionIndex.machine)
|
|
46
59
|
}
|
|
@@ -82,15 +95,19 @@ export class CallMachine extends CallBase { //@ todo self-owned node operate
|
|
|
82
95
|
if (this.data?.bPaused !== undefined) {
|
|
83
96
|
perms.push(PermissionIndex.machine_pause)
|
|
84
97
|
}
|
|
85
|
-
if (this.data?.progress_next
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
98
|
+
if (this.data?.progress_next !== undefined) {
|
|
99
|
+
const guard = await LocalMark.Instance().get_address(this.data?.progress_next?.guard);
|
|
100
|
+
if (guard) {
|
|
101
|
+
guards.push(guard)
|
|
102
|
+
} else if (object_address) { // fetch guard
|
|
103
|
+
const p = await LocalMark.Instance().get_address(this.data?.progress_next.progress);
|
|
104
|
+
if (p) {
|
|
105
|
+
const guard = await Progress.QueryForwardGuard(this.data?.progress_next.progress, object_address,
|
|
106
|
+
await Account.Instance().default() ?? '0xe386bb9e01b3528b75f3751ad8a1e418b207ad979fea364087deef5250a73d3f',
|
|
107
|
+
this.data.progress_next.operation.next_node_name, this.data.progress_next.operation.forward);
|
|
108
|
+
if (guard) {
|
|
109
|
+
guards.push(guard)
|
|
110
|
+
}
|
|
94
111
|
}
|
|
95
112
|
}
|
|
96
113
|
}
|
|
@@ -102,20 +119,23 @@ export class CallMachine extends CallBase { //@ todo self-owned node operate
|
|
|
102
119
|
|
|
103
120
|
protected async operate(txb:TransactionBlock, passport?:PassportObject, account?:string) {
|
|
104
121
|
let obj : Machine | undefined ; let permission: any;
|
|
105
|
-
|
|
106
|
-
|
|
122
|
+
var [permission_address, object_address] = this?.content ?
|
|
123
|
+
[(this.content as ObjectMachine).permission, this.content.object] :
|
|
124
|
+
await LocalMark.Instance().get_many_address(
|
|
125
|
+
[(this.data?.permission as any)?.address,
|
|
126
|
+
(this.data?.object as any)?.address]);
|
|
107
127
|
|
|
108
128
|
if (!object_address) {
|
|
109
|
-
if (!permission_address
|
|
129
|
+
if (!permission_address) {
|
|
110
130
|
const d = (this.data?.permission as any)?.description ?? '';
|
|
111
131
|
permission = Permission.New(txb, d);
|
|
112
132
|
}
|
|
113
133
|
obj = Machine.New(txb, permission ? permission.get_object() : permission_address, this.data?.description??'', this.data?.endpoint ?? '', permission?undefined:passport);
|
|
114
134
|
} else {
|
|
115
|
-
if (
|
|
135
|
+
if (permission_address) {
|
|
116
136
|
obj = Machine.From(txb, permission_address, object_address)
|
|
117
137
|
} else {
|
|
118
|
-
ERROR(Errors.InvalidParam, '
|
|
138
|
+
ERROR(Errors.InvalidParam, 'CallMachine_Data.data.permission')
|
|
119
139
|
}
|
|
120
140
|
}
|
|
121
141
|
|
|
@@ -133,18 +153,22 @@ export class CallMachine extends CallBase { //@ todo self-owned node operate
|
|
|
133
153
|
if (this.data?.consensus_repository !== undefined) {
|
|
134
154
|
switch (this.data.consensus_repository.op) {
|
|
135
155
|
case 'add':
|
|
136
|
-
|
|
156
|
+
case 'set':
|
|
157
|
+
if (this.data.consensus_repository.op === 'set') {
|
|
158
|
+
obj?.remove_repository([], true, pst);
|
|
159
|
+
}
|
|
160
|
+
var reps = await LocalMark.Instance().get_many_address2(this.data.consensus_repository.repositories);
|
|
161
|
+
reps.forEach(v=>obj?.add_repository(v, pst)) ;
|
|
137
162
|
break;
|
|
138
163
|
case 'remove':
|
|
139
|
-
|
|
164
|
+
var reps = await LocalMark.Instance().get_many_address2(this.data.consensus_repository.repositories);
|
|
165
|
+
if (reps.length > 0) {
|
|
166
|
+
obj?.remove_repository(reps, false, pst);
|
|
167
|
+
}
|
|
140
168
|
break;
|
|
141
169
|
case 'removeall':
|
|
142
170
|
obj?.remove_repository([], true, pst);
|
|
143
171
|
break;
|
|
144
|
-
case 'set':
|
|
145
|
-
obj?.remove_repository([], true, pst);
|
|
146
|
-
this.data.consensus_repository.repositories.forEach(v=>obj?.add_repository(v, pst)) ;
|
|
147
|
-
break;
|
|
148
172
|
}
|
|
149
173
|
}
|
|
150
174
|
if (this.data?.nodes !== undefined) {
|
|
@@ -177,40 +201,55 @@ export class CallMachine extends CallBase { //@ todo self-owned node operate
|
|
|
177
201
|
}
|
|
178
202
|
var new_progress : Progress | undefined;
|
|
179
203
|
if (this.data?.progress_new !== undefined) {
|
|
180
|
-
|
|
204
|
+
const task = await LocalMark.Instance().get_address(this.data?.progress_new.task_address);
|
|
205
|
+
new_progress = Progress?.New(txb, obj?.get_object(), perm, task, pst);
|
|
181
206
|
}
|
|
182
207
|
if (this.data?.progress_context_repository !== undefined) {
|
|
183
|
-
const p = this.data?.progress_context_repository.progress
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
208
|
+
const p = this.data?.progress_context_repository.progress
|
|
209
|
+
? await LocalMark.Instance().get_address(this.data?.progress_context_repository.progress)
|
|
210
|
+
: new_progress?.get_object();
|
|
211
|
+
if (!p) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.progress_context_repository.progress');
|
|
212
|
+
const rep = await LocalMark.Instance().get_address(this.data?.progress_context_repository.repository);
|
|
213
|
+
Progress.From(txb, obj?.get_object(), perm, p!).set_context_repository(rep, pst)
|
|
187
214
|
}
|
|
188
215
|
if (this.data?.progress_namedOperator !== undefined) {
|
|
189
|
-
const p = this.data?.progress_namedOperator.progress
|
|
190
|
-
|
|
216
|
+
const p = this.data?.progress_namedOperator.progress
|
|
217
|
+
? await LocalMark.Instance().get_address(this.data?.progress_namedOperator.progress)
|
|
218
|
+
: new_progress?.get_object();
|
|
219
|
+
if (!p) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.progress_namedOperator.progress');
|
|
191
220
|
|
|
192
221
|
let pp = Progress.From(txb, obj?.get_object(), perm, p!);
|
|
193
222
|
this.data.progress_namedOperator.data.forEach(v => pp.set_namedOperator(v.name, v.operators, pst));
|
|
194
223
|
}
|
|
195
224
|
if (this.data?.progress_parent !== undefined) {
|
|
196
|
-
const p = this.data?.progress_parent.progress
|
|
197
|
-
|
|
225
|
+
const p = this.data?.progress_parent.progress
|
|
226
|
+
? await LocalMark.Instance().get_address(this.data?.progress_parent.progress)
|
|
227
|
+
: new_progress?.get_object();
|
|
228
|
+
if (!p) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.progress_parent.progress');
|
|
198
229
|
|
|
199
230
|
if (this.data.progress_parent.parent) {
|
|
200
|
-
|
|
231
|
+
const parent = await LocalMark.Instance().get_address(this.data.progress_parent.parent.parent_id);
|
|
232
|
+
if (parent) {
|
|
233
|
+
this.data.progress_parent.parent.parent_id = parent;
|
|
234
|
+
Progress.From(txb, obj?.get_object(), perm, p!).parent(this.data.progress_parent.parent);
|
|
235
|
+
}
|
|
201
236
|
} else {
|
|
202
237
|
Progress.From(txb, obj?.get_object(), perm, p!).parent_none();
|
|
203
238
|
}
|
|
204
239
|
}
|
|
205
240
|
if (this.data?.progress_task !== undefined) {
|
|
206
|
-
const p = this.data?.progress_task.progress
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
241
|
+
const p = this.data?.progress_task.progress
|
|
242
|
+
? await LocalMark.Instance().get_address(this.data?.progress_task.progress)
|
|
243
|
+
: new_progress?.get_object();
|
|
244
|
+
if (!p) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.progress_task.progress');
|
|
245
|
+
const task = await LocalMark.Instance().get_address(this.data.progress_task.task);
|
|
246
|
+
if (task) Progress.From(txb, obj?.get_object(), perm, p!).bind_task(task, pst);
|
|
210
247
|
}
|
|
211
248
|
if (this.data?.progress_hold !== undefined) {
|
|
212
|
-
const p = this.data?.progress_hold.progress
|
|
213
|
-
|
|
249
|
+
const p = this.data?.progress_hold.progress
|
|
250
|
+
? await LocalMark.Instance().get_address(this.data?.progress_hold.progress)
|
|
251
|
+
: new_progress?.get_object();
|
|
252
|
+
if (!p) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.progress_hold.progress');
|
|
214
253
|
|
|
215
254
|
if (this.data?.progress_hold.adminUnhold) {
|
|
216
255
|
Progress.From(txb, obj?.get_object(), perm, p!).unhold(this.data.progress_hold.operation, pst)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CallBase, CallResult } from "./base.js";
|
|
2
2
|
import { TransactionBlock, PassportObject, IsValidAddress, Errors, ERROR, Demand, Machine, Service, Treasury, Arbitration, Repository} from 'wowok';
|
|
3
3
|
import { ObjectArbitration, ObjectDemand, ObjectMachine, ObjectRepository, ObjectService, ObjectTreasury, query_objects } from "../query/objects.js";
|
|
4
|
+
import { LocalMark } from "../local/local.js";
|
|
4
5
|
|
|
5
6
|
export interface CallObjectPermission_Data {
|
|
6
7
|
objects: string[];
|
|
@@ -9,14 +10,17 @@ export interface CallObjectPermission_Data {
|
|
|
9
10
|
|
|
10
11
|
export class CallObjectPermission extends CallBase {
|
|
11
12
|
data: CallObjectPermission_Data;
|
|
13
|
+
new_perm: string | undefined = undefined;
|
|
14
|
+
|
|
12
15
|
constructor(data:CallObjectPermission_Data) {
|
|
13
16
|
super();
|
|
14
17
|
this.data = data;
|
|
15
18
|
}
|
|
16
19
|
|
|
17
20
|
async call(account?:string) : Promise<CallResult> {
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
this.new_perm = await LocalMark.Instance().get_address(this.data.new_permission);
|
|
22
|
+
if (!this.new_perm) {
|
|
23
|
+
ERROR(Errors.InvalidParam, 'CallObjectPermission_Data.new_permission:' + this.data.new_permission)
|
|
20
24
|
}
|
|
21
25
|
|
|
22
26
|
if (this.data?.objects.length > 0) {
|
|
@@ -29,27 +33,27 @@ export class CallObjectPermission extends CallBase {
|
|
|
29
33
|
switch(v.type) {
|
|
30
34
|
case 'Demand':
|
|
31
35
|
const demand = v as ObjectDemand;
|
|
32
|
-
Demand.From(txb, Demand.parseObjectType(demand.type_raw), demand.permission, demand.object).change_permission(this.
|
|
36
|
+
Demand.From(txb, Demand.parseObjectType(demand.type_raw), demand.permission, demand.object).change_permission(this.new_perm!);
|
|
33
37
|
break;
|
|
34
38
|
case 'Machine':
|
|
35
39
|
const machine = v as ObjectMachine;
|
|
36
|
-
Machine.From(txb, machine.permission, machine.object).change_permission(this.
|
|
40
|
+
Machine.From(txb, machine.permission, machine.object).change_permission(this.new_perm!);
|
|
37
41
|
break;
|
|
38
42
|
case 'Service':
|
|
39
43
|
const service = v as ObjectService;
|
|
40
|
-
Service.From(txb, Service.parseObjectType(service.type_raw), service.permission, service.object).change_permission(this.
|
|
44
|
+
Service.From(txb, Service.parseObjectType(service.type_raw), service.permission, service.object).change_permission(this.new_perm!);
|
|
41
45
|
break;
|
|
42
46
|
case 'Treasury':
|
|
43
47
|
const treasury = v as ObjectTreasury;
|
|
44
|
-
Treasury.From(txb, Treasury.parseObjectType(treasury.type_raw), treasury.permission, treasury.object).change_permission(this.
|
|
48
|
+
Treasury.From(txb, Treasury.parseObjectType(treasury.type_raw), treasury.permission, treasury.object).change_permission(this.new_perm!);
|
|
45
49
|
break;
|
|
46
50
|
case 'Arbitration':
|
|
47
51
|
const arbitraion = v as ObjectArbitration;
|
|
48
|
-
Arbitration.From(txb, Arbitration.parseObjectType(arbitraion.type_raw), arbitraion.permission, arbitraion.object).change_permission(this.
|
|
52
|
+
Arbitration.From(txb, Arbitration.parseObjectType(arbitraion.type_raw), arbitraion.permission, arbitraion.object).change_permission(this.new_perm!);
|
|
49
53
|
break;
|
|
50
54
|
case 'Repository':
|
|
51
55
|
const repository = v as ObjectRepository;
|
|
52
|
-
Repository.From(txb, repository.permission, repository.object).change_permission(this.
|
|
56
|
+
Repository.From(txb, repository.permission, repository.object).change_permission(this.new_perm!);
|
|
53
57
|
break;
|
|
54
58
|
}
|
|
55
59
|
})
|
package/src/call/permission.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { LocalMark } from "../local/local.js";
|
|
1
2
|
import { CallBase, CallResult, Namedbject } from "./base.js";
|
|
2
3
|
import { PassportObject, IsValidAddress, Errors, ERROR, Permission, Permission_Entity, Permission_Index, BizPermission,
|
|
3
|
-
PermissionIndexType, TransactionBlock
|
|
4
|
+
PermissionIndexType, TransactionBlock,
|
|
5
|
+
Permission_Index_Entity
|
|
4
6
|
} from 'wowok';
|
|
5
7
|
|
|
6
8
|
/// The execution priority is determined by the order in which the object attributes are arranged
|
|
@@ -16,6 +18,7 @@ export interface CallPermission_Data {
|
|
|
16
18
|
}
|
|
17
19
|
export class CallPermission extends CallBase {
|
|
18
20
|
data: CallPermission_Data;
|
|
21
|
+
object_address: string | undefined = undefined;
|
|
19
22
|
constructor(data:CallPermission_Data) {
|
|
20
23
|
super();
|
|
21
24
|
this.data = data;
|
|
@@ -23,9 +26,9 @@ export class CallPermission extends CallBase {
|
|
|
23
26
|
|
|
24
27
|
async call(account?:string) : Promise<CallResult> {
|
|
25
28
|
var checkOwner = false; var checkAdmin = false;
|
|
26
|
-
|
|
29
|
+
this.object_address = await LocalMark.Instance().get_address((this.data?.object as any)?.address);
|
|
27
30
|
|
|
28
|
-
if (object_address
|
|
31
|
+
if (this.object_address) {
|
|
29
32
|
if (this.data?.builder !== undefined || this.data?.admin !== undefined) {
|
|
30
33
|
checkOwner = true;
|
|
31
34
|
}
|
|
@@ -35,18 +38,17 @@ export class CallPermission extends CallBase {
|
|
|
35
38
|
if (this.data?.description !== undefined) {
|
|
36
39
|
checkAdmin = true;
|
|
37
40
|
}
|
|
38
|
-
return await this.check_permission_and_call(object_address, [], [], checkOwner, checkAdmin, account)
|
|
41
|
+
return await this.check_permission_and_call(this.object_address, [], [], checkOwner, checkAdmin, account)
|
|
39
42
|
}
|
|
40
43
|
return await this.exec(account)
|
|
41
44
|
}
|
|
42
45
|
protected async operate (txb:TransactionBlock, passport?:PassportObject, account?:string) {
|
|
43
46
|
let obj : Permission | undefined ;
|
|
44
|
-
const object_address = (this.data?.object as any)?.address;
|
|
45
47
|
|
|
46
|
-
if (!object_address
|
|
48
|
+
if (!this.object_address) {
|
|
47
49
|
obj = Permission.New(txb, this.data?.description??'');
|
|
48
50
|
} else {
|
|
49
|
-
obj = Permission.From(txb, object_address)
|
|
51
|
+
obj = Permission.From(txb, this.object_address)
|
|
50
52
|
}
|
|
51
53
|
|
|
52
54
|
if (obj) {
|
|
@@ -56,15 +58,15 @@ export class CallPermission extends CallBase {
|
|
|
56
58
|
if (this.data?.admin !== undefined) {
|
|
57
59
|
switch(this.data.admin?.op) {
|
|
58
60
|
case 'add':
|
|
59
|
-
|
|
61
|
+
case 'set':
|
|
62
|
+
if (this.data.admin?.op === 'set') obj?.remove_admin([], true);
|
|
63
|
+
var addrs = await LocalMark.Instance().get_many_address2(this.data.admin.addresses);
|
|
64
|
+
obj?.add_admin(addrs);
|
|
60
65
|
break;
|
|
61
66
|
case 'remove':
|
|
67
|
+
var addrs = await LocalMark.Instance().get_many_address2(this.data.admin.addresses);
|
|
62
68
|
obj?.remove_admin(this.data.admin.addresses);
|
|
63
69
|
break;
|
|
64
|
-
case 'set':
|
|
65
|
-
obj?.remove_admin([], true);
|
|
66
|
-
obj?.add_admin(this.data.admin.addresses);
|
|
67
|
-
break
|
|
68
70
|
case 'removeall':
|
|
69
71
|
obj?.remove_admin([], true);
|
|
70
72
|
break;
|
|
@@ -87,26 +89,50 @@ export class CallPermission extends CallBase {
|
|
|
87
89
|
if (this.data?.permission !== undefined) {
|
|
88
90
|
switch (this.data.permission.op) {
|
|
89
91
|
case 'add entity':
|
|
90
|
-
|
|
92
|
+
var add = [];
|
|
93
|
+
for (let i = 0; i < this.data.permission.entities.length; ++i) {
|
|
94
|
+
const v = this.data.permission.entities[i];
|
|
95
|
+
const addr = await LocalMark.Instance().get_address(v.address);
|
|
96
|
+
if (addr) {
|
|
97
|
+
v.address = addr;
|
|
98
|
+
add.push(v);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
obj?.add_entity(add);
|
|
91
102
|
break;
|
|
92
103
|
case 'add permission':
|
|
104
|
+
for (let i = 0; i < this.data.permission.permissions.length; ++i) {
|
|
105
|
+
const v = this.data.permission.permissions[i];
|
|
106
|
+
const e:Permission_Index_Entity[] = [];
|
|
107
|
+
for (let j = 0; j < v.entities.length; ++j) {
|
|
108
|
+
const addr = await LocalMark.Instance().get_address(v.entities[j].address);
|
|
109
|
+
const guard = (typeof(v.entities[j].guard) === 'string') ? await LocalMark.Instance().get_address(v.entities[j].guard as string) : undefined;
|
|
110
|
+
if (addr) {
|
|
111
|
+
e.push({address:addr, guard:guard})
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
v.entities = e;
|
|
115
|
+
}
|
|
93
116
|
obj?.add_entity3(this.data.permission.permissions);
|
|
94
117
|
break;
|
|
95
118
|
case 'remove entity':
|
|
96
|
-
obj?.remove_entity(this.data.permission.addresses);
|
|
119
|
+
obj?.remove_entity(await LocalMark.Instance().get_many_address2(this.data.permission.addresses));
|
|
97
120
|
break;
|
|
98
121
|
case 'remove permission':
|
|
99
|
-
|
|
122
|
+
const addr = await LocalMark.Instance().get_address(this.data.permission.address);
|
|
123
|
+
if (addr) obj?.remove_index(addr, this.data.permission.index);
|
|
100
124
|
break;
|
|
101
125
|
case 'transfer permission':
|
|
102
|
-
|
|
126
|
+
const [from, to] = await LocalMark.Instance().get_many_address([this.data.permission.from_address, this.data.permission.to_address]);
|
|
127
|
+
if (from && to) obj?.transfer_permission(from, to);
|
|
103
128
|
break;
|
|
104
129
|
}
|
|
105
130
|
}
|
|
106
131
|
if (this.data?.builder !== undefined ) {
|
|
107
|
-
|
|
132
|
+
const b = await LocalMark.Instance().get_account(this.data.builder);
|
|
133
|
+
if (b) obj?.change_owner(b);
|
|
108
134
|
}
|
|
109
|
-
if (!object_address) {
|
|
135
|
+
if (!this.object_address) {
|
|
110
136
|
await this.new_with_mark('Permission', txb, obj.launch(), (this.data?.object as any)?.namedNew, account);
|
|
111
137
|
}
|
|
112
138
|
}
|
package/src/call/personal.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { TransactionBlock, PassportObject, IsValidAddress, Errors, ERROR, Entity, Entity_Info, Resource} from 'wowok';
|
|
2
2
|
import { CallBase, CallResult, Namedbject } from "./base.js";
|
|
3
|
+
import { LocalMark } from '../local/local.js';
|
|
3
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
|
mark_object?: {address:string} | {namedNew?: Namedbject}; // undefined or {named_new...} for creating a new personal resource object ; // undefined for creating personal resource object
|
|
7
8
|
information?: Entity_Info;
|
|
8
|
-
mark?: {op:'add
|
|
9
|
+
mark?: {op:'add'; data:{address:string; name?:string; tags?:string[]}[]}
|
|
9
10
|
| {op:'remove'; data:{address:string; tags?:string[]}[]}
|
|
10
11
|
| {op:'removeall'; addresses:string[]}
|
|
11
12
|
| {op:'transfer'; address: string}
|
|
@@ -33,8 +34,8 @@ export class CallPersonal extends CallBase {
|
|
|
33
34
|
return ;
|
|
34
35
|
}
|
|
35
36
|
|
|
36
|
-
const object_address = (this.data?.mark_object as any)?.address;
|
|
37
|
-
if (!object_address
|
|
37
|
+
const object_address = await LocalMark.Instance().get_address((this.data?.mark_object as any)?.address);
|
|
38
|
+
if (!object_address) {
|
|
38
39
|
obj = Resource.From(txb, entity.create_resource2());
|
|
39
40
|
} else {
|
|
40
41
|
obj = Resource.From(txb, object_address)
|
|
@@ -47,28 +48,53 @@ export class CallPersonal extends CallBase {
|
|
|
47
48
|
|
|
48
49
|
if (obj && obj?.get_object()) {
|
|
49
50
|
switch(this.data.mark.op) {
|
|
50
|
-
case 'add
|
|
51
|
-
|
|
51
|
+
case 'add':
|
|
52
|
+
const add = [];
|
|
53
|
+
for (let i = 0; i < this.data.mark.data.length; ++i) {
|
|
54
|
+
const v = this.data.mark.data[i];
|
|
55
|
+
const addr = await LocalMark.Instance().get_address(v.address);
|
|
56
|
+
if (addr) {
|
|
57
|
+
v.address = addr;
|
|
58
|
+
add.push(v)
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
add.forEach(v => {
|
|
52
63
|
obj?.add(v.address, v.tags ?? [], v.name)
|
|
53
64
|
})
|
|
54
65
|
break;
|
|
55
66
|
case 'remove':
|
|
56
|
-
|
|
67
|
+
const remove = [];
|
|
68
|
+
for (let i = 0; i < this.data.mark.data.length; ++i) {
|
|
69
|
+
const v = this.data.mark.data[i];
|
|
70
|
+
const addr = await LocalMark.Instance().get_address(v.address);
|
|
71
|
+
if (addr) {
|
|
72
|
+
v.address = addr;
|
|
73
|
+
remove.push(v)
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
remove.forEach(v => {
|
|
57
77
|
obj?.remove(v.address, v.tags ?? [])
|
|
58
78
|
})
|
|
59
79
|
break;
|
|
60
80
|
case 'removeall':
|
|
61
|
-
this.data.mark.addresses.
|
|
62
|
-
|
|
63
|
-
|
|
81
|
+
for (let i = 0; i < this.data.mark.addresses.length; ++i) {
|
|
82
|
+
const v = this.data.mark.addresses[i];
|
|
83
|
+
const addr = await LocalMark.Instance().get_address(v);
|
|
84
|
+
if (addr) {
|
|
85
|
+
obj?.removeall(v)
|
|
86
|
+
}
|
|
87
|
+
}
|
|
64
88
|
break;
|
|
65
89
|
}
|
|
66
90
|
|
|
67
|
-
if (this.data?.mark?.op === 'transfer' && obj
|
|
68
|
-
|
|
91
|
+
if (this.data?.mark?.op === 'transfer' && obj) {
|
|
92
|
+
const addr = await LocalMark.Instance().get_address(this.data.mark.address);
|
|
93
|
+
if (addr) entity.transfer_resource(obj, addr);
|
|
69
94
|
}
|
|
70
|
-
if (this.data?.mark?.op === 'replace'
|
|
71
|
-
|
|
95
|
+
if (this.data?.mark?.op === 'replace') {
|
|
96
|
+
const addr = await LocalMark.Instance().get_address(this.data.mark.address);
|
|
97
|
+
if (addr) entity.use_resource(Resource.From(txb, addr));
|
|
72
98
|
}
|
|
73
99
|
|
|
74
100
|
if (!object_address) {
|
package/src/call/repository.ts
CHANGED
|
@@ -3,6 +3,8 @@ import { TransactionBlock, PassportObject, IsValidAddress, Errors, ERROR, Permis
|
|
|
3
3
|
Repository_Policy_Data_Remove, Repository_Policy_Mode,
|
|
4
4
|
} from 'wowok';
|
|
5
5
|
import { CallBase, CallResult, Namedbject} from "./base.js";
|
|
6
|
+
import { LocalMark } from '../local/local.js';
|
|
7
|
+
import { ObjectRepository } from '../query/objects.js';
|
|
6
8
|
|
|
7
9
|
|
|
8
10
|
/// The execution priority is determined by the order in which the object attributes are arranged
|
|
@@ -25,10 +27,21 @@ export class CallRepository extends CallBase {
|
|
|
25
27
|
async call(account?:string) : Promise<CallResult> {
|
|
26
28
|
var checkOwner = false;
|
|
27
29
|
const perms : PermissionIndexType[] = [];
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
var [permission_address, object_address] =
|
|
31
|
+
await LocalMark.Instance().get_many_address(
|
|
32
|
+
[(this.data?.permission as any)?.address,
|
|
33
|
+
(this.data?.object as any)?.address]);
|
|
30
34
|
|
|
31
|
-
if (
|
|
35
|
+
if (object_address) {
|
|
36
|
+
if (!permission_address) {
|
|
37
|
+
await this.update_content(object_address, 'Repository');
|
|
38
|
+
if (this.content) {
|
|
39
|
+
permission_address = (this.content as ObjectRepository).permission;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (permission_address) {
|
|
32
45
|
if (!this.data?.object) {
|
|
33
46
|
perms.push(PermissionIndex.repository)
|
|
34
47
|
}
|
|
@@ -51,21 +64,24 @@ export class CallRepository extends CallBase {
|
|
|
51
64
|
|
|
52
65
|
protected async operate(txb:TransactionBlock, passport?:PassportObject, account?:string) {
|
|
53
66
|
let obj : Repository | undefined ; let permission: any;
|
|
54
|
-
|
|
55
|
-
|
|
67
|
+
var [permission_address, object_address] = this?.content ?
|
|
68
|
+
[(this.content as ObjectRepository).permission, this.content.object] :
|
|
69
|
+
await LocalMark.Instance().get_many_address(
|
|
70
|
+
[(this.data?.permission as any)?.address,
|
|
71
|
+
(this.data?.object as any)?.address]);
|
|
56
72
|
|
|
57
73
|
if (!object_address) {
|
|
58
|
-
if (!permission_address
|
|
74
|
+
if (!permission_address) {
|
|
59
75
|
const d = (this.data?.permission as any)?.description ?? '';
|
|
60
76
|
permission = Permission.New(txb, d);
|
|
61
77
|
}
|
|
62
78
|
|
|
63
79
|
obj = Repository.New(txb, permission ? permission.get_object() : permission_address, this.data?.description??'', this.data?.mode, permission?undefined:passport)
|
|
64
80
|
} else {
|
|
65
|
-
if (
|
|
81
|
+
if (permission_address) {
|
|
66
82
|
obj = Repository.From(txb, permission_address, object_address)
|
|
67
83
|
} else {
|
|
68
|
-
ERROR(Errors.InvalidParam, '
|
|
84
|
+
ERROR(Errors.InvalidParam, 'CallRepository_Data.data.permission')
|
|
69
85
|
}
|
|
70
86
|
}
|
|
71
87
|
|
|
@@ -77,14 +93,12 @@ export class CallRepository extends CallBase {
|
|
|
77
93
|
if (this.data?.reference !== undefined) {
|
|
78
94
|
switch (this.data.reference.op) {
|
|
79
95
|
case 'set':
|
|
80
|
-
obj?.remove_reference([], true, pst);
|
|
81
|
-
obj?.add_reference(this.data.reference.addresses, pst);
|
|
82
|
-
break;
|
|
83
96
|
case 'add':
|
|
84
|
-
|
|
97
|
+
if (this.data.reference.op === 'set') obj?.remove_reference([], true, pst);
|
|
98
|
+
obj?.add_reference(await LocalMark.Instance().get_many_address2(this.data.reference.addresses), pst);
|
|
85
99
|
break;
|
|
86
100
|
case 'remove':
|
|
87
|
-
obj?.remove_reference(this.data.reference.addresses, false, pst);
|
|
101
|
+
obj?.remove_reference(await LocalMark.Instance().get_many_address2(this.data.reference.addresses), false, pst);
|
|
88
102
|
break;
|
|
89
103
|
case 'removeall':
|
|
90
104
|
obj?.remove_reference([], true, pst);
|