wowok_agent 1.3.47 → 1.3.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/call/arbitration.d.ts +4 -3
  2. package/dist/call/arbitration.d.ts.map +1 -1
  3. package/dist/call/arbitration.js +134 -131
  4. package/dist/call/arbitration.js.map +1 -1
  5. package/dist/call/base.d.ts +15 -7
  6. package/dist/call/base.d.ts.map +1 -1
  7. package/dist/call/base.js +21 -23
  8. package/dist/call/base.js.map +1 -1
  9. package/dist/call/call.d.ts +0 -6
  10. package/dist/call/call.d.ts.map +1 -1
  11. package/dist/call/demand.d.ts +1 -0
  12. package/dist/call/demand.d.ts.map +1 -1
  13. package/dist/call/demand.js +86 -80
  14. package/dist/call/demand.js.map +1 -1
  15. package/dist/call/machine.d.ts +10 -10
  16. package/dist/call/machine.d.ts.map +1 -1
  17. package/dist/call/machine.js +174 -146
  18. package/dist/call/machine.js.map +1 -1
  19. package/dist/call/permission.d.ts +10 -9
  20. package/dist/call/permission.d.ts.map +1 -1
  21. package/dist/call/permission.js +90 -85
  22. package/dist/call/permission.js.map +1 -1
  23. package/dist/call/personal.d.ts +3 -3
  24. package/dist/call/personal.d.ts.map +1 -1
  25. package/dist/call/personal.js +6 -12
  26. package/dist/call/personal.js.map +1 -1
  27. package/dist/call/repository.d.ts +24 -8
  28. package/dist/call/repository.d.ts.map +1 -1
  29. package/dist/call/repository.js +114 -94
  30. package/dist/call/repository.js.map +1 -1
  31. package/dist/call/service.d.ts +15 -26
  32. package/dist/call/service.d.ts.map +1 -1
  33. package/dist/call/service.js +274 -264
  34. package/dist/call/service.js.map +1 -1
  35. package/dist/call/treasury.d.ts +5 -7
  36. package/dist/call/treasury.d.ts.map +1 -1
  37. package/dist/call/treasury.js +108 -97
  38. package/dist/call/treasury.js.map +1 -1
  39. package/dist/index.d.ts +1 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +1 -0
  42. package/dist/index.js.map +1 -1
  43. package/dist/query/objects.d.ts +2 -1
  44. package/dist/query/objects.d.ts.map +1 -1
  45. package/dist/query/objects.js +7 -7
  46. package/dist/query/objects.js.map +1 -1
  47. package/dist/query/owned.d.ts +2 -0
  48. package/dist/query/owned.d.ts.map +1 -0
  49. package/dist/query/owned.js +2 -0
  50. package/dist/query/owned.js.map +1 -0
  51. package/dist/query/permission.d.ts +3 -2
  52. package/dist/query/permission.d.ts.map +1 -1
  53. package/dist/query/permission.js +6 -3
  54. package/dist/query/permission.js.map +1 -1
  55. package/dist/query/treasury_received.d.ts +14 -0
  56. package/dist/query/treasury_received.d.ts.map +1 -0
  57. package/dist/query/treasury_received.js +19 -0
  58. package/dist/query/treasury_received.js.map +1 -0
  59. package/package.json +1 -1
  60. package/src/call/arbitration.ts +144 -141
  61. package/src/call/base.ts +27 -29
  62. package/src/call/call.ts +6 -6
  63. package/src/call/demand.ts +89 -81
  64. package/src/call/machine.ts +184 -145
  65. package/src/call/permission.ts +98 -90
  66. package/src/call/personal.ts +8 -13
  67. package/src/call/repository.ts +138 -95
  68. package/src/call/service.ts +290 -272
  69. package/src/call/treasury.ts +110 -99
  70. package/src/index.ts +1 -0
  71. package/src/query/objects.ts +10 -10
  72. package/src/query/permission.ts +9 -6
  73. package/src/query/treasury_received.ts +35 -0
  74. package/tsconfig.tsbuildinfo +1 -1
@@ -1,25 +1,34 @@
1
1
  import { PassportObject, Errors, ERROR, Permission, PermissionIndex, TransactionBlock, TxbAddress,
2
- PermissionIndexType, Machine, Machine_Forward, Machine_Node, Deliverable, ParentProgress, Progress, ProgressNext,
2
+ PermissionIndexType, Machine, Machine_Forward, Machine_Node, ParentProgress, Progress, ProgressNext,
3
+ PermissionObject,
4
+ OrderWrap,
5
+ Service,
3
6
  } from 'wowok';
4
- import { CallBase, CallResult, GetObjectExisted, GetObjectMain, GetObjectParam, Namedbject, ObjectMain, TypeNamedObjectWithPermission } from "./base.js";
5
- import { ObjectMachine } from '../query/objects.js';
7
+ import { AccountOrMark_Address, CallBase, CallResult, GetAccountOrMark_Address, GetManyAccountOrMark_Address, GetObjectExisted, GetObjectMain, GetObjectParam, Namedbject, ObjectMain, ObjectsOp, TypeNamedObjectWithPermission } from "./base.js";
8
+ import { ObjectMachine, query_objects } from '../query/objects.js';
6
9
  import { LocalMark } from '../local/local.js';
7
10
  import { Account } from '../local/account.js';
8
11
 
12
+
13
+ export interface ProgressDeliverable {
14
+ msg: string;
15
+ orders: string[];
16
+ }
17
+
9
18
  /// The execution priority is determined by the order in which the object attributes are arranged
10
19
  export interface CallMachine_Data {
11
20
  object?: ObjectMain;
12
21
  progress_new?: {task_address?:string, namedNew?: Namedbject};
13
22
  progress_context_repository?: {progress?:string; repository?:string};
14
- progress_namedOperator?: {progress?:string; data:{name:string, operators:string[]}[]};
23
+ progress_namedOperator?: {progress?:string; data:{name:string, operators:AccountOrMark_Address[]}[]};
15
24
  progress_parent?: {progress?:string, parent?:ParentProgress};
16
25
  progress_hold?: {progress?:string; operation:ProgressNext; bHold:boolean; adminUnhold?:boolean};
17
26
  progress_task?: {progress:string; task_address:string};
18
- progress_next?: {progress:string; operation:ProgressNext; deliverable:Deliverable};
27
+ progress_next?: {progress:string; operation:ProgressNext; deliverable:ProgressDeliverable};
19
28
 
20
29
  description?: string;
21
30
  endpoint?: string;
22
- consensus_repository?: {op:'set' | 'add' | 'remove' ; repositories:string[]} | {op:'removeall'};
31
+ consensus_repository?: ObjectsOp;
23
32
  nodes?: {op: 'add'; data: Machine_Node[]} | {op: 'remove'; names: string[], bTransferMyself?:boolean}
24
33
  | {op:'rename node'; data:{old:string; new:string}[]} | {op:'add from myself'; addresses: string[]}
25
34
  | {op:'remove pair'; pairs: {prior_node_name:string; node_name:string}[]}
@@ -38,19 +47,26 @@ export class CallMachine extends CallBase { //@ todo self-owned node operate
38
47
  super();
39
48
  this.data = data;
40
49
  }
50
+ protected async prepare() {
51
+ if (!this.object_address) {
52
+ this.object_address = (await LocalMark.Instance().get_address(GetObjectExisted(this.data?.object)));
53
+
54
+ if (this.object_address) {
55
+ await this.update_content('Machine', this.object_address);
56
+ if (!this.content) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.object:' + this.object_address);
57
+ this.permission_address = (this.content as ObjectMachine).permission;
58
+ } else {
59
+ const n = GetObjectMain(this.data?.object) as TypeNamedObjectWithPermission;
60
+ this.permission_address = (await LocalMark.Instance().get_address(GetObjectExisted(n?.permission)));
61
+ }
62
+ }
63
+ }
64
+
41
65
  async call(account?:string) : Promise<CallResult> {
42
66
  var checkOwner = false; const guards : string[] = [];
43
67
  const perms : PermissionIndexType[] = [];
44
- this.object_address = (await LocalMark.Instance().get_address(GetObjectExisted(this.data?.object)));
45
- if (this.object_address) {
46
- await this.update_content('Machine', this.object_address);
47
- if (!this.content) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.object:' + this.object_address);
48
- this.permission_address = (this.content as ObjectMachine).permission;
49
- } else {
50
- const n = GetObjectMain(this.data?.object) as TypeNamedObjectWithPermission;
51
- this.permission_address = (await LocalMark.Instance().get_address(GetObjectExisted(n?.permission)));
52
- }
53
-
68
+
69
+ await this.prepare();
54
70
  if (this.permission_address) {
55
71
  if (!this.data?.object) {
56
72
  perms.push(PermissionIndex.machine)
@@ -120,158 +136,181 @@ export class CallMachine extends CallBase { //@ todo self-owned node operate
120
136
  }
121
137
 
122
138
  protected async operate(txb:TransactionBlock, passport?:PassportObject, account?:string) {
123
- let obj : Machine | undefined ; let permission: any;
139
+ let obj : Machine | undefined ; let perm: Permission | undefined;
140
+ let permission : PermissionObject | undefined;
141
+
124
142
  if (this.object_address) {
125
143
  obj = Machine.From(txb, this.permission_address!, this.object_address);
144
+ permission = this.permission_address;
126
145
  } else {
127
146
  const n = GetObjectMain(this.data?.object) as TypeNamedObjectWithPermission;
128
- if (!this.permission_address) {
129
- permission = Permission.New(txb, GetObjectParam(n?.permission)?.description ?? '');
147
+ permission = await LocalMark.Instance().get_address(GetObjectExisted(n?.permission));
148
+ if (!permission) {
149
+ perm = Permission.New(txb, GetObjectParam(n?.permission)?.description ?? '');
150
+ permission = perm.get_object();
130
151
  }
131
-
132
- obj = Machine.New(txb, permission ? permission.get_object() : this.permission_address, this.data?.description??'',
152
+
153
+ obj = Machine.New(txb, permission, this.data?.description??'',
133
154
  this.data?.endpoint, permission?undefined:passport);
134
155
  }
135
156
 
136
- if (obj) {
137
- const pst = permission?undefined:passport;
138
- const perm = permission ? permission.get_object() : this.permission_address;
157
+ if (!obj) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.object');
158
+ if (!permission) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.object.permission');
139
159
 
140
- var new_progress : Progress | undefined;
141
- if (this.data?.progress_new !== undefined) {
142
- const task = await LocalMark.Instance().get_address(this.data?.progress_new?.task_address);
143
- new_progress = Progress?.New(txb, obj?.get_object(), perm, task, pst);
144
- }
145
- if (this.data?.progress_context_repository !== undefined) {
146
- const p = this.data?.progress_context_repository.progress
147
- ? await LocalMark.Instance().get_address(this.data?.progress_context_repository.progress)
148
- : new_progress?.get_object();
149
- if (!p) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.progress_context_repository.progress');
150
- const rep = await LocalMark.Instance().get_address(this.data?.progress_context_repository.repository);
151
- Progress.From(txb, obj?.get_object(), perm, p!).set_context_repository(rep, pst)
152
- }
153
- if (this.data?.progress_namedOperator !== undefined) {
154
- const p = this.data?.progress_namedOperator.progress
155
- ? await LocalMark.Instance().get_address(this.data?.progress_namedOperator.progress)
156
- : new_progress?.get_object();
157
- if (!p) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.progress_namedOperator.progress');
160
+ const pst = perm?undefined:passport;
161
+ var new_progress : Progress | undefined;
162
+ if (this.data?.progress_new !== undefined) {
163
+ const task = await LocalMark.Instance().get_address(this.data?.progress_new?.task_address);
164
+ new_progress = Progress?.New(txb, obj?.get_object(), permission, task, pst);
165
+ }
166
+ if (this.data?.progress_context_repository !== undefined) {
167
+ const p = this.data?.progress_context_repository.progress
168
+ ? await LocalMark.Instance().get_address(this.data?.progress_context_repository.progress)
169
+ : new_progress?.get_object();
170
+ if (!p) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.progress_context_repository.progress');
171
+ const rep = await LocalMark.Instance().get_address(this.data?.progress_context_repository.repository);
172
+ Progress.From(txb, obj?.get_object(), permission, p!).set_context_repository(rep, pst)
173
+ }
174
+ if (this.data?.progress_namedOperator !== undefined) {
175
+ const p = this.data?.progress_namedOperator.progress
176
+ ? await LocalMark.Instance().get_address(this.data?.progress_namedOperator.progress)
177
+ : new_progress?.get_object();
178
+ if (!p) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.progress_namedOperator.progress');
158
179
 
159
- let pp = Progress.From(txb, obj?.get_object(), perm, p!);
160
- this.data.progress_namedOperator.data.forEach(v => pp.set_namedOperator(v.name, v.operators, pst));
180
+ let pp = Progress.From(txb, obj?.get_object(), permission, p!);
181
+ for(let i=0; i<this.data.progress_namedOperator.data.length; i++) {
182
+ const v = this.data.progress_namedOperator.data[i];
183
+ const addrs = await GetManyAccountOrMark_Address(v.operators);
184
+ pp.set_namedOperator(v.name, addrs, pst);
161
185
  }
162
- if (this.data?.progress_parent !== undefined) {
163
- const p = this.data?.progress_parent.progress
164
- ? await LocalMark.Instance().get_address(this.data?.progress_parent.progress)
165
- : new_progress?.get_object();
166
- if (!p) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.progress_parent.progress');
186
+ }
187
+ if (this.data?.progress_parent !== undefined) {
188
+ const p = this.data?.progress_parent.progress
189
+ ? await LocalMark.Instance().get_address(this.data?.progress_parent.progress)
190
+ : new_progress?.get_object();
191
+ if (!p) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.progress_parent.progress');
167
192
 
168
- if (this.data.progress_parent.parent) {
169
- const parent = await LocalMark.Instance().get_address(this.data.progress_parent.parent.parent_id);
170
- if (parent) {
171
- this.data.progress_parent.parent.parent_id = parent;
172
- Progress.From(txb, obj?.get_object(), perm, p!).parent(this.data.progress_parent.parent);
173
- }
174
- } else {
175
- Progress.From(txb, obj?.get_object(), perm, p!).parent_none();
193
+ if (this.data.progress_parent.parent) {
194
+ const parent = await LocalMark.Instance().get_address(this.data.progress_parent.parent.parent_id);
195
+ if (parent) {
196
+ this.data.progress_parent.parent.parent_id = parent;
197
+ Progress.From(txb, obj?.get_object(), permission, p!).parent(this.data.progress_parent.parent);
176
198
  }
199
+ } else {
200
+ Progress.From(txb, obj?.get_object(), permission, p!).parent_none();
177
201
  }
178
- if (this.data?.progress_hold !== undefined) {
179
- const p = this.data?.progress_hold.progress
180
- ? await LocalMark.Instance().get_address(this.data?.progress_hold.progress)
181
- : new_progress?.get_object();
182
- if (!p) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.progress_hold.progress');
202
+ }
203
+ if (this.data?.progress_hold !== undefined) {
204
+ const p = this.data?.progress_hold.progress
205
+ ? await LocalMark.Instance().get_address(this.data?.progress_hold.progress)
206
+ : new_progress?.get_object();
207
+ if (!p) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.progress_hold.progress');
183
208
 
184
- if (this.data?.progress_hold.adminUnhold) {
185
- Progress.From(txb, obj?.get_object(), perm, p!).unhold(this.data.progress_hold.operation, pst)
186
- } else {
187
- Progress.From(txb, obj?.get_object(), perm, p!).hold(this.data.progress_hold.operation, this.data.progress_hold.bHold)
188
- }
189
- }
190
- if (this.data?.progress_task !== undefined) {
191
- const [p, task] = await LocalMark.Instance().get_many_address([this.data?.progress_task.progress, this.data?.progress_task.task_address]);
192
- if (p && task) Progress.From(txb, obj?.get_object(), perm, p).bind_task(task, pst);
193
- }
194
- if (this.data?.progress_next !== undefined) {
195
- const p = await LocalMark.Instance().get_address(this.data?.progress_next.progress);
196
- if (!p) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.progress_next.progress');
197
- Progress.From(txb, obj?.get_object(), perm, p!).next(this.data.progress_next.operation, this.data.progress_next.deliverable, pst)
198
- }
209
+ if (this.data?.progress_hold.adminUnhold) {
210
+ Progress.From(txb, obj?.get_object(), permission, p!).unhold(this.data.progress_hold.operation, pst)
211
+ } else {
212
+ Progress.From(txb, obj?.get_object(), permission, p!).hold(this.data.progress_hold.operation, this.data.progress_hold.bHold)
213
+ }
214
+ }
215
+ if (this.data?.progress_task !== undefined) {
216
+ const [p, task] = await LocalMark.Instance().get_many_address([this.data?.progress_task.progress, this.data?.progress_task.task_address]);
217
+ if (p && task) Progress.From(txb, obj?.get_object(), permission, p).bind_task(task, pst);
218
+ }
219
+ if (this.data?.progress_next !== undefined) {
220
+ const p = await LocalMark.Instance().get_address(this.data?.progress_next.progress);
221
+ if (!p) ERROR(Errors.InvalidParam, 'CallMachine_Data.data.progress_next.progress');
222
+ var t: OrderWrap[] = [];
199
223
 
200
- const addr = new_progress?.launch();
201
- if (addr) {
202
- await this.new_with_mark('Progress', txb, addr, this.data?.progress_new?.namedNew, account);
224
+ if (this.data.progress_next.deliverable.orders.length > 0) {
225
+ const o = await query_objects({objects:this.data.progress_next.deliverable.orders});
226
+ if (o?.objects?.length !== this.data.progress_next.deliverable.orders.length) {
227
+ ERROR(Errors.InvalidParam, 'CallMachine_Data.data.progress_next.deliverable.orders');
228
+ }
229
+ t = o.objects.map(v => {
230
+ if (v.type !== 'Order') {
231
+ ERROR(Errors.InvalidParam, 'CallMachine_Data.data.progress_next.deliverable.orders');
232
+ }
233
+ return {object:v.object, pay_token_type:Service.parseOrderObjectType(v.type_raw)}
234
+ })
203
235
  }
236
+ Progress.From(txb, obj?.get_object(), permission, p!).next(this.data.progress_next.operation,
237
+ {msg:this.data.progress_next.deliverable.msg, orders:t}, pst);
238
+ }
204
239
 
205
- if (this.data?.description !== undefined && this.object_address) {
206
- obj?.set_description(this.data.description, pst);
207
- }
208
- if (this.data?.endpoint !== undefined && this.object_address) {
209
- obj?.set_endpoint(this.data.endpoint, pst)
210
- }
240
+ const addr = new_progress?.launch();
241
+ if (addr) {
242
+ await this.new_with_mark('Progress', txb, addr, this.data?.progress_new?.namedNew, account);
243
+ }
211
244
 
212
- if (this.data?.consensus_repository !== undefined) {
213
- switch (this.data.consensus_repository.op) {
214
- case 'add':
215
- case 'set':
216
- if (this.data.consensus_repository.op === 'set') {
217
- obj?.remove_repository([], true, pst);
218
- }
219
- var reps = await LocalMark.Instance().get_many_address2(this.data.consensus_repository.repositories);
220
- reps.forEach(v=>obj?.add_repository(v, pst)) ;
221
- break;
222
- case 'remove':
223
- var reps = await LocalMark.Instance().get_many_address2(this.data.consensus_repository.repositories);
224
- if (reps.length > 0) {
225
- obj?.remove_repository(reps, false, pst);
226
- }
227
- break;
228
- case 'removeall':
245
+ if (this.data?.description !== undefined && this.object_address) {
246
+ obj?.set_description(this.data.description, pst);
247
+ }
248
+ if (this.data?.endpoint !== undefined && this.object_address) {
249
+ obj?.set_endpoint(this.data.endpoint, pst)
250
+ }
251
+
252
+ if (this.data?.consensus_repository !== undefined) {
253
+ switch (this.data.consensus_repository.op) {
254
+ case 'add':
255
+ case 'set':
256
+ if (this.data.consensus_repository.op === 'set') {
229
257
  obj?.remove_repository([], true, pst);
230
- break;
231
- }
232
- }
233
- if (this.data?.nodes !== undefined) {
234
- switch (this.data?.nodes?.op) {
235
- case 'add':
236
- obj?.add_node(this.data.nodes.data, pst)
237
- break;
238
- case 'remove':
239
- obj?.remove_node(this.data.nodes.names, this.data.nodes?.bTransferMyself, pst)
240
- break;
241
- case 'rename node':
242
- this.data.nodes.data.forEach(v => obj?.rename_node(v.old, v.new, pst));
243
- break;
244
- case 'add from myself':
245
- obj?.add_node2(this.data.nodes.addresses, pst);
246
- break;
247
- case 'add forward':
248
- this.data.nodes.data.forEach(v => obj?.add_forward(v.prior_node_name, v.node_name, v.forward, v.threshold, v.remove_forward, pst))
249
- break;
250
- case 'remove forward':
251
- this.data.nodes.data.forEach(v => obj?.remove_forward(v.prior_node_name, v.node_name, v.forward_name, pst))
252
- break;
253
- case 'remove pair':
254
- this.data.nodes.pairs.forEach(v => obj?.remove_pair(v.prior_node_name, v.node_name, pst));
255
- break;
256
258
  }
259
+ var reps = await LocalMark.Instance().get_many_address2(this.data.consensus_repository.objects);
260
+ reps.forEach(v=>obj?.add_repository(v, pst)) ;
261
+ break;
262
+ case 'remove':
263
+ var reps = await LocalMark.Instance().get_many_address2(this.data.consensus_repository.objects);
264
+ if (reps.length > 0) {
265
+ obj?.remove_repository(reps, false, pst);
266
+ }
267
+ break;
268
+ case 'removeall':
269
+ obj?.remove_repository([], true, pst);
270
+ break;
257
271
  }
258
- if (this.data?.bPublished ) {
259
- obj?.publish(passport)
260
- }
272
+ }
273
+ if (this.data?.nodes !== undefined) {
274
+ switch (this.data?.nodes?.op) {
275
+ case 'add':
276
+ obj?.add_node(this.data.nodes.data, pst)
277
+ break;
278
+ case 'remove':
279
+ obj?.remove_node(this.data.nodes.names, this.data.nodes?.bTransferMyself, pst)
280
+ break;
281
+ case 'rename node':
282
+ this.data.nodes.data.forEach(v => obj?.rename_node(v.old, v.new, pst));
283
+ break;
284
+ case 'add from myself':
285
+ obj?.add_node2(this.data.nodes.addresses, pst);
286
+ break;
287
+ case 'add forward':
288
+ this.data.nodes.data.forEach(v => obj?.add_forward(v.prior_node_name, v.node_name, v.forward, v.threshold, v.remove_forward, pst))
289
+ break;
290
+ case 'remove forward':
291
+ this.data.nodes.data.forEach(v => obj?.remove_forward(v.prior_node_name, v.node_name, v.forward_name, pst))
292
+ break;
293
+ case 'remove pair':
294
+ this.data.nodes.pairs.forEach(v => obj?.remove_pair(v.prior_node_name, v.node_name, pst));
295
+ break;
296
+ }
297
+ }
298
+ if (this.data?.bPublished ) {
299
+ obj?.publish(passport)
300
+ }
261
301
 
262
- if (this.data?.bPaused !== undefined) {
263
- obj?.pause(this.data.bPaused, pst)
264
- }
265
- if (this.data?.clone_new !== undefined && this.object_address) {
266
- await this.new_with_mark('Machine', txb, obj?.clone(true, pst) as TxbAddress, (this.data?.clone_new as any)?.namedNew, account);
267
- }
268
- if (permission) {
269
- const n = GetObjectMain(this.data?.object) as TypeNamedObjectWithPermission;
270
- await this.new_with_mark('Permission', txb, permission.launch(), GetObjectParam(n?.permission), account);
271
- }
272
- if (!this.object_address) {
273
- await this.new_with_mark('Machine', txb, obj.launch(), GetObjectMain(this.data?.object), account);
274
- }
302
+ if (this.data?.bPaused !== undefined) {
303
+ obj?.pause(this.data.bPaused, pst)
304
+ }
305
+ if (this.data?.clone_new !== undefined && this.object_address) {
306
+ await this.new_with_mark('Machine', txb, obj?.clone(true, pst) as TxbAddress, (this.data?.clone_new as any)?.namedNew, account);
307
+ }
308
+ if (perm) {
309
+ const n = GetObjectMain(this.data?.object) as TypeNamedObjectWithPermission;
310
+ await this.new_with_mark('Permission', txb, perm.launch(), GetObjectParam(n?.permission), account);
311
+ }
312
+ if (!this.object_address) {
313
+ await this.new_with_mark('Machine', txb, obj.launch(), GetObjectMain(this.data?.object), account);
275
314
  }
276
315
  }
277
316
  }
@@ -1,9 +1,12 @@
1
1
  import { LocalMark } from "../local/local.js";
2
2
  import { AccountOrMark_Address, CallBase, CallResult, GetAccountOrMark_Address, GetManyAccountOrMark_Address,
3
- GetObjectExisted, GetObjectMain, ObjectMain } from "./base.js";
3
+ GetObjectExisted, GetObjectMain, ObjectMain,
4
+ ObjectPermissionMain} from "./base.js";
4
5
  import { PassportObject, Permission, BizPermission,
5
6
  PermissionIndexType, TransactionBlock, Permission_Entity as Wowok_Permission_Entity,
6
- Permission_Index as Wowok_Permission_Index, Permission_Index_Entity as Wowok_Permission_Index_Entity,
7
+ Permission_Index as Wowok_Permission_Index, Permission_Index_Entity as Wowok_Permission_Index_Entity,
8
+ ERROR,
9
+ Errors,
7
10
  } from 'wowok';
8
11
 
9
12
 
@@ -14,12 +17,12 @@ export interface Entity_Permission {
14
17
  }
15
18
 
16
19
  export interface Permission_Entity {
17
- entity: AccountOrMark_Address;
20
+ address: AccountOrMark_Address;
18
21
  permissions:Entity_Permission[];
19
22
  }
20
23
 
21
24
  export interface Permission_Index_Entity {
22
- entity: AccountOrMark_Address;
25
+ address: AccountOrMark_Address;
23
26
  guard?: string;
24
27
  }
25
28
 
@@ -29,13 +32,13 @@ export interface Permission_Index {
29
32
  }
30
33
  /// The execution priority is determined by the order in which the object attributes are arranged
31
34
  export interface CallPermission_Data {
32
- object?: ObjectMain;
35
+ object?: ObjectPermissionMain;
33
36
  description?: string;
34
37
  biz_permission?: {op:'add'; data: BizPermission[]} | {op:'remove'; permissions: PermissionIndexType[]};
35
38
  permission?: {op:'add entity'; entities:Permission_Entity[]} | {op:'add permission'; permissions:Permission_Index[]}
36
- | {op:'remove entity'; entities:AccountOrMark_Address[]} | {op:'remove permission'; entity:AccountOrMark_Address; index:PermissionIndexType[]}
37
- | {op:'transfer permission', from_entity: AccountOrMark_Address; to_entity: AccountOrMark_Address};
38
- admin?: {op:'add' | 'remove' | 'set', entities:AccountOrMark_Address[]} | {op:'removeall'};
39
+ | {op:'remove entity'; addresses:AccountOrMark_Address[]} | {op:'remove permission'; address:AccountOrMark_Address; index:PermissionIndexType[]}
40
+ | {op:'transfer permission', from: AccountOrMark_Address, to: AccountOrMark_Address};
41
+ admin?: {op:'add' | 'remove' | 'set', addresses:AccountOrMark_Address[]} | {op:'removeall'};
39
42
  builder?: AccountOrMark_Address;
40
43
  }
41
44
  export class CallPermission extends CallBase {
@@ -46,10 +49,15 @@ export class CallPermission extends CallBase {
46
49
  this.data = data;
47
50
  }
48
51
 
52
+ protected async prepare(): Promise<void> {
53
+ if (!this.object_address) {
54
+ this.object_address = await LocalMark.Instance().get_address(GetObjectExisted(this.data?.object));
55
+ }
56
+ }
49
57
  async call(account?:string) : Promise<CallResult> {
50
58
  var checkOwner = false; var checkAdmin = false;
51
- this.object_address = await LocalMark.Instance().get_address(GetObjectExisted(this.data?.object));
52
-
59
+
60
+ await this.prepare();
53
61
  if (this.object_address) {
54
62
  if (this.data?.builder !== undefined || this.data?.admin !== undefined) {
55
63
  checkOwner = true;
@@ -73,92 +81,92 @@ export class CallPermission extends CallBase {
73
81
  obj = Permission.From(txb, this.object_address)
74
82
  }
75
83
 
76
- if (obj) {
77
- if (this.data?.description !== undefined && this.data?.object) {
78
- obj?.set_description(this.data.description)
79
- }
80
- if (this.data?.biz_permission !== undefined) { // High priority operate
81
- switch(this.data.biz_permission.op) {
82
- case 'add':
83
- this.data.biz_permission.data.forEach(v => {
84
- obj?.add_bizPermission(v.index, v.name);
85
- })
86
- break;
87
- case 'remove':
88
- this.data.biz_permission.permissions.forEach(v => {
89
- obj?.remove_bizPermission(v);
90
- })
91
- break;
92
- }
84
+ if (!obj) ERROR(Errors.InvalidParam, 'CallPermission_Data.data.object');
85
+
86
+ if (this.data?.description !== undefined && this.data?.object) {
87
+ obj?.set_description(this.data.description)
88
+ }
89
+ if (this.data?.biz_permission !== undefined) { // High priority operate
90
+ switch(this.data.biz_permission.op) {
91
+ case 'add':
92
+ this.data.biz_permission.data.forEach(v => {
93
+ obj?.add_bizPermission(v.index, v.name);
94
+ })
95
+ break;
96
+ case 'remove':
97
+ this.data.biz_permission.permissions.forEach(v => {
98
+ obj?.remove_bizPermission(v);
99
+ })
100
+ break;
93
101
  }
94
- if (this.data?.permission !== undefined) {
95
- switch (this.data.permission.op) {
96
- case 'add entity':
97
- var add_entity:Wowok_Permission_Entity[] = [];
98
- for (let i = 0; i < this.data.permission.entities.length; ++i) {
99
- const v = this.data.permission.entities[i];
100
- const addr = await GetAccountOrMark_Address(v.entity);
101
- if (addr) {
102
- add_entity.push({address:addr, permissions:v.permissions});
103
- }
102
+ }
103
+ if (this.data?.permission !== undefined) {
104
+ switch (this.data.permission.op) {
105
+ case 'add entity':
106
+ var add_entity:Wowok_Permission_Entity[] = [];
107
+ for (let i = 0; i < this.data.permission.entities.length; ++i) {
108
+ const v = this.data.permission.entities[i];
109
+ const addr = await GetAccountOrMark_Address(v.address);
110
+ if (addr) {
111
+ add_entity.push({address:addr, permissions:v.permissions});
104
112
  }
105
- obj?.add_entity(add_entity);
106
- break;
107
- case 'add permission':
108
- var add_permission: Wowok_Permission_Index[] = [];
109
- for (let i = 0; i < this.data.permission.permissions.length; ++i) {
110
- const v = this.data.permission.permissions[i];
111
- const e:Wowok_Permission_Index_Entity[] = [];
112
- for (let j = 0; j < v.entities.length; ++j) {
113
- const addr = await GetAccountOrMark_Address(v.entities[j].entity);
114
- const guard = await LocalMark.Instance().get_address(v.entities[j].guard as string) ;
115
- if (addr) {
116
- e.push({address:addr, guard:guard})
117
- }
113
+ }
114
+ obj?.add_entity(add_entity);
115
+ break;
116
+ case 'add permission':
117
+ var add_permission: Wowok_Permission_Index[] = [];
118
+ for (let i = 0; i < this.data.permission.permissions.length; ++i) {
119
+ const v = this.data.permission.permissions[i];
120
+ const e:Wowok_Permission_Index_Entity[] = [];
121
+ for (let j = 0; j < v.entities.length; ++j) {
122
+ const addr = await GetAccountOrMark_Address(v.entities[j].address);
123
+ const guard = await LocalMark.Instance().get_address(v.entities[j].guard as string) ;
124
+ if (addr) {
125
+ e.push({address:addr, guard:guard})
118
126
  }
119
- add_permission.push({index:v.index, entities:e});
120
127
  }
121
- obj?.add_entity3(add_permission);
122
- break;
123
- case 'remove entity':
124
- const entities:string[] = (await GetManyAccountOrMark_Address(this.data.permission.entities)).filter((v): v is string => v!== undefined);
125
- obj?.remove_entity(entities);
126
- break;
127
- case 'remove permission':
128
- const addr = await GetAccountOrMark_Address(this.data.permission.entity);
129
- if (addr) obj?.remove_index(addr, this.data.permission.index);
130
- break;
131
- case 'transfer permission':
132
- const from = await GetAccountOrMark_Address(this.data.permission.from_entity);
133
- const to = await GetAccountOrMark_Address(this.data.permission.to_entity);
134
- if (from && to) obj?.transfer_permission(from, to);
135
- break;
136
- }
137
- }
138
- if (this.data?.admin !== undefined) {
139
- switch(this.data.admin?.op) {
140
- case 'add':
141
- case 'set':
142
- if (this.data.admin?.op === 'set') obj?.remove_admin([], true);
143
- const add = await GetManyAccountOrMark_Address(this.data.admin.entities);
144
- obj?.add_admin(add.filter((v): v is string => v!== undefined));
145
- break;
146
- case 'remove':
147
- const remove = await GetManyAccountOrMark_Address(this.data.admin.entities);
148
- obj?.remove_admin(remove.filter((v): v is string => typeof(v) === 'string'));
149
- break;
150
- case 'removeall':
151
- obj?.remove_admin([], true);
152
- break;
153
- }
154
- }
155
- if (this.data?.builder !== undefined ) {
156
- const b = await GetAccountOrMark_Address(this.data.builder);
157
- if (b) obj?.change_owner(b);
128
+ add_permission.push({index:v.index, entities:e});
129
+ }
130
+ obj?.add_entity3(add_permission);
131
+ break;
132
+ case 'remove entity':
133
+ const entities:string[] = (await GetManyAccountOrMark_Address(this.data.permission.addresses)).filter((v): v is string => v!== undefined);
134
+ obj?.remove_entity(entities);
135
+ break;
136
+ case 'remove permission':
137
+ const addr = await GetAccountOrMark_Address(this.data.permission.address);
138
+ if (addr) obj?.remove_index(addr, this.data.permission.index);
139
+ break;
140
+ case 'transfer permission':
141
+ const from = await GetAccountOrMark_Address(this.data.permission.from);
142
+ const to = await GetAccountOrMark_Address(this.data.permission.to);
143
+ if (from && to) obj?.transfer_permission(from, to);
144
+ break;
158
145
  }
159
- if (!this.object_address) {
160
- await this.new_with_mark('Permission', txb, obj.launch(), GetObjectMain(this.data?.object), account);
146
+ }
147
+ if (this.data?.admin !== undefined) {
148
+ switch(this.data.admin?.op) {
149
+ case 'add':
150
+ case 'set':
151
+ if (this.data.admin?.op === 'set') obj?.remove_admin([], true);
152
+ const add = await GetManyAccountOrMark_Address(this.data.admin.addresses);
153
+ obj?.add_admin(add.filter((v): v is string => v!== undefined));
154
+ break;
155
+ case 'remove':
156
+ const remove = await GetManyAccountOrMark_Address(this.data.admin.addresses);
157
+ obj?.remove_admin(remove.filter((v): v is string => typeof(v) === 'string'));
158
+ break;
159
+ case 'removeall':
160
+ obj?.remove_admin([], true);
161
+ break;
161
162
  }
162
163
  }
164
+ if (this.data?.builder !== undefined ) {
165
+ const b = await GetAccountOrMark_Address(this.data.builder);
166
+ if (b) obj?.change_owner(b);
167
+ }
168
+ if (!this.object_address) {
169
+ await this.new_with_mark('Permission', txb, obj.launch(), GetObjectMain(this.data?.object), account);
170
+ }
163
171
  }
164
172
  }