wowok_agent 1.2.37 → 1.2.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/dist/call/arbitration.d.ts +69 -0
  2. package/dist/call/arbitration.d.ts.map +1 -0
  3. package/dist/call/arbitration.js +210 -0
  4. package/dist/call/arbitration.js.map +1 -0
  5. package/dist/call/base.d.ts +37 -0
  6. package/dist/call/base.d.ts.map +1 -0
  7. package/dist/call/base.js +157 -0
  8. package/dist/call/base.js.map +1 -0
  9. package/dist/call/call.d.ts +84 -0
  10. package/dist/call/call.d.ts.map +1 -0
  11. package/dist/call/call.js +156 -0
  12. package/dist/call/call.js.map +1 -0
  13. package/dist/call/demand.d.ts +57 -0
  14. package/dist/call/demand.d.ts.map +1 -0
  15. package/dist/call/demand.js +160 -0
  16. package/dist/call/demand.js.map +1 -0
  17. package/dist/call/guard.d.ts +42 -0
  18. package/dist/call/guard.d.ts.map +1 -0
  19. package/dist/call/guard.js +264 -0
  20. package/dist/call/guard.js.map +1 -0
  21. package/dist/call/machine.d.ts +109 -0
  22. package/dist/call/machine.d.ts.map +1 -0
  23. package/dist/call/machine.js +250 -0
  24. package/dist/call/machine.js.map +1 -0
  25. package/dist/call/object_permission.d.ts +14 -0
  26. package/dist/call/object_permission.d.ts.map +1 -0
  27. package/dist/call/object_permission.js +52 -0
  28. package/dist/call/object_permission.js.map +1 -0
  29. package/dist/call/permission.d.ts +50 -0
  30. package/dist/call/permission.d.ts.map +1 -0
  31. package/dist/call/permission.js +127 -0
  32. package/dist/call/permission.js.map +1 -0
  33. package/dist/call/personal.d.ts +42 -0
  34. package/dist/call/personal.d.ts.map +1 -0
  35. package/dist/call/personal.js +88 -0
  36. package/dist/call/personal.js.map +1 -0
  37. package/dist/call/repository.d.ts +52 -0
  38. package/dist/call/repository.d.ts.map +1 -0
  39. package/dist/call/repository.js +135 -0
  40. package/dist/call/repository.js.map +1 -0
  41. package/dist/call/service.d.ts +134 -0
  42. package/dist/call/service.d.ts.map +1 -0
  43. package/dist/call/service.js +416 -0
  44. package/dist/call/service.js.map +1 -0
  45. package/dist/call/treasury.d.ts +53 -0
  46. package/dist/call/treasury.d.ts.map +1 -0
  47. package/dist/call/treasury.js +175 -0
  48. package/dist/call/treasury.js.map +1 -0
  49. package/dist/common.d.ts +3 -0
  50. package/dist/common.d.ts.map +1 -0
  51. package/dist/common.js +13 -0
  52. package/dist/common.js.map +1 -0
  53. package/dist/index.d.ts +22 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +22 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/local/account.d.ts +24 -0
  58. package/dist/local/account.d.ts.map +1 -0
  59. package/dist/local/account.js +188 -0
  60. package/dist/local/account.js.map +1 -0
  61. package/dist/local/cache.d.ts +32 -0
  62. package/dist/local/cache.d.ts.map +1 -0
  63. package/dist/local/cache.js +71 -0
  64. package/dist/local/cache.js.map +1 -0
  65. package/dist/local/index.d.ts +83 -0
  66. package/dist/local/index.d.ts.map +1 -0
  67. package/dist/local/index.js +98 -0
  68. package/dist/local/index.js.map +1 -0
  69. package/dist/local/local.d.ts +56 -0
  70. package/dist/local/local.d.ts.map +1 -0
  71. package/dist/local/local.js +245 -0
  72. package/dist/local/local.js.map +1 -0
  73. package/dist/query/events.d.ts +63 -0
  74. package/dist/query/events.d.ts.map +1 -0
  75. package/dist/query/events.js +78 -0
  76. package/dist/query/events.js.map +1 -0
  77. package/dist/query/objects.d.ts +323 -0
  78. package/dist/query/objects.d.ts.map +1 -0
  79. package/dist/query/objects.js +453 -0
  80. package/dist/query/objects.js.map +1 -0
  81. package/dist/query/permission.d.ts +12 -0
  82. package/dist/query/permission.d.ts.map +1 -0
  83. package/dist/query/permission.js +41 -0
  84. package/dist/query/permission.js.map +1 -0
  85. package/package.json +2 -2
  86. package/src/call/arbitration.ts +85 -54
  87. package/src/call/base.ts +22 -12
  88. package/src/call/call.ts +24 -21
  89. package/src/call/demand.ts +60 -30
  90. package/src/call/guard.ts +25 -16
  91. package/src/call/machine.ts +79 -40
  92. package/src/call/object_permission.ts +12 -8
  93. package/src/call/permission.ts +44 -18
  94. package/src/call/personal.ts +39 -13
  95. package/src/call/repository.ts +27 -13
  96. package/src/call/service.ts +150 -73
  97. package/src/call/treasury.ts +68 -50
  98. package/src/common.ts +9 -0
  99. package/src/index.ts +1 -0
  100. package/src/local/account.ts +3 -3
  101. package/src/local/index.ts +54 -50
  102. package/src/local/local.ts +48 -8
  103. package/src/query/objects.ts +14 -6
  104. package/tsconfig.tsbuildinfo +1 -1
@@ -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 | 'fetch'};
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
- const permission_address = (this.data?.permission as any)?.address;
41
- const object_address = (this.data?.object as any)?.address;
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 (permission_address && IsValidAddress(permission_address)) {
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?.guard !== undefined) {
86
- if (IsValidAddress(this.data?.progress_next?.guard)) {
87
- guards.push(this.data?.progress_next?.guard)
88
- } else if (this.data?.object && IsValidAddress(object_address)) { // fetch guard
89
- const guard = await Progress.QueryForwardGuard(this.data?.progress_next.progress, object_address,
90
- await Account.Instance().default() ?? '0xe386bb9e01b3528b75f3751ad8a1e418b207ad979fea364087deef5250a73d3f',
91
- this.data.progress_next.operation.next_node_name, this.data.progress_next.operation.forward);
92
- if (guard) {
93
- guards.push(guard)
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
- const permission_address = (this.data?.permission as any)?.address;
106
- const object_address = (this.data?.object as any)?.address;
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 || !IsValidAddress(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 (IsValidAddress(object_address) &&permission_address && IsValidAddress(permission_address)) {
135
+ if (permission_address) {
116
136
  obj = Machine.From(txb, permission_address, object_address)
117
137
  } else {
118
- ERROR(Errors.InvalidParam, 'object or permission address invalid.')
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
- this.data.consensus_repository.repositories.forEach(v=>obj?.add_repository(v, pst)) ;
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
- obj?.remove_repository(this.data.consensus_repository.repositories, false, pst);
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
- new_progress = Progress?.New(txb, obj?.get_object(), perm, this.data?.progress_new.task_address, pst);
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 ?? new_progress?.get_object();
184
- if (!p) ERROR(Errors.Fail, 'progress invalid: progress_context_repository');
185
-
186
- Progress.From(txb, obj?.get_object(), perm, p!).set_context_repository(this.data?.progress_context_repository.repository, pst)
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 ?? new_progress?.get_object();
190
- if (!p) ERROR(Errors.Fail, 'progress invalid: progress_namedOperator');
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 ?? new_progress?.get_object();
197
- if (!p) ERROR(Errors.Fail, 'progress invalid: progress_parent');
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
- Progress.From(txb, obj?.get_object(), perm, p!).parent(this.data.progress_parent.parent);
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 ?? new_progress?.get_object();
207
- if (!p) ERROR(Errors.Fail, 'progress invalid: progress_task');
208
-
209
- Progress.From(txb, obj?.get_object(), perm, p!).bind_task(this.data.progress_task.task, pst)
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 ?? new_progress?.get_object();
213
- if (!p) ERROR(Errors.Fail, 'progress invalid: progress_hold');
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
- if (!IsValidAddress(this.data.new_permission)) {
19
- ERROR(Errors.InvalidParam, 'CallObjectPermission_Data.new_permission' + this.data.new_permission)
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.data.new_permission);
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.data.new_permission);
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.data.new_permission);
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.data.new_permission);
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.data.new_permission);
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.data.new_permission);
56
+ Repository.From(txb, repository.permission, repository.object).change_permission(this.new_perm!);
53
57
  break;
54
58
  }
55
59
  })
@@ -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
- const object_address = (this.data?.object as any)?.address;
29
+ this.object_address = await LocalMark.Instance().get_address((this.data?.object as any)?.address);
27
30
 
28
- if (object_address && IsValidAddress(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 || !IsValidAddress(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
- obj?.add_admin(this.data.admin.addresses);
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
- obj?.add_entity(this.data.permission.entities);
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
- obj?.remove_index(this.data.permission.address, this.data.permission.index);
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
- obj?.transfer_permission(this.data.permission.from_address, this.data.permission.to_address);
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
- obj?.change_owner(this.data.builder);
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
  }
@@ -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 or set'; data:{address:string; name?:string; tags?:string[]}[]}
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 || !IsValidAddress(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 or set':
51
- this.data.mark.data.forEach(v => {
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
- this.data.mark.data.forEach(v => {
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.forEach(v => {
62
- obj?.removeall(v)
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 && IsValidAddress(this.data.mark.address)) {
68
- entity.transfer_resource(obj, this.data.mark.address);
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' && IsValidAddress(this.data.mark.address)) {
71
- entity.use_resource(Resource.From(txb, this.data.mark.address));
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) {
@@ -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
- const permission_address = (this.data?.permission as any)?.address;
29
- const object_address = (this.data?.object as any)?.address;
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 (permission_address && IsValidAddress(permission_address)) {
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
- const permission_address = (this.data?.permission as any)?.address;
55
- const object_address = (this.data?.object as any)?.address;
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 || !IsValidAddress(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 (IsValidAddress(object_address) && this.data.permission && IsValidAddress(permission_address)) {
81
+ if (permission_address) {
66
82
  obj = Repository.From(txb, permission_address, object_address)
67
83
  } else {
68
- ERROR(Errors.InvalidParam, 'object or permission address invalid.')
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
- obj?.add_reference(this.data.reference.addresses, pst);
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);