wowok_agent 0.1.13 → 0.1.16

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 (253) hide show
  1. package/README.md +17 -0
  2. package/dist/124.index.js +1 -0
  3. package/dist/account.d.ts +38 -0
  4. package/dist/account.d.ts.map +1 -0
  5. package/dist/account.js +273 -0
  6. package/dist/agent/empty.d.ts +1 -0
  7. package/dist/agent/empty.d.ts.map +1 -0
  8. package/dist/agent/src/account.d.ts +38 -0
  9. package/dist/agent/src/account.d.ts.map +1 -0
  10. package/dist/agent/src/cache.d.ts +46 -0
  11. package/dist/agent/src/cache.d.ts.map +1 -0
  12. package/dist/agent/src/call/arbitration.d.ts +63 -0
  13. package/dist/agent/src/call/arbitration.d.ts.map +1 -0
  14. package/dist/agent/src/call/base.d.ts +34 -0
  15. package/dist/agent/src/call/base.d.ts.map +1 -0
  16. package/dist/agent/src/call/demand.d.ts +55 -0
  17. package/dist/agent/src/call/demand.d.ts.map +1 -0
  18. package/dist/agent/src/call/guard.d.ts +44 -0
  19. package/dist/agent/src/call/guard.d.ts.map +1 -0
  20. package/dist/agent/src/call/machine.d.ts +109 -0
  21. package/dist/agent/src/call/machine.d.ts.map +1 -0
  22. package/dist/agent/src/call/object_permission.d.ts +13 -0
  23. package/dist/agent/src/call/object_permission.d.ts.map +1 -0
  24. package/dist/agent/src/call/permission.d.ts +47 -0
  25. package/dist/agent/src/call/permission.d.ts.map +1 -0
  26. package/dist/agent/src/call/personal.d.ts +43 -0
  27. package/dist/agent/src/call/personal.d.ts.map +1 -0
  28. package/dist/agent/src/call/repository.d.ts +53 -0
  29. package/dist/agent/src/call/repository.d.ts.map +1 -0
  30. package/dist/agent/src/call/service.d.ts +134 -0
  31. package/dist/agent/src/call/service.d.ts.map +1 -0
  32. package/dist/agent/src/call/treasury.d.ts +53 -0
  33. package/dist/agent/src/call/treasury.d.ts.map +1 -0
  34. package/dist/agent/src/call.d.ts +24 -0
  35. package/dist/agent/src/call.d.ts.map +1 -0
  36. package/dist/agent/src/events.d.ts +65 -0
  37. package/dist/agent/src/events.d.ts.map +1 -0
  38. package/dist/agent/src/index.d.ts +19 -0
  39. package/dist/agent/src/index.d.ts.map +1 -0
  40. package/dist/agent/src/objects.d.ts +308 -0
  41. package/dist/agent/src/objects.d.ts.map +1 -0
  42. package/dist/agent/src/permission.d.ts +12 -0
  43. package/dist/agent/src/permission.d.ts.map +1 -0
  44. package/dist/agent/src/private_info.d.ts +26 -0
  45. package/dist/agent/src/private_info.d.ts.map +1 -0
  46. package/dist/cache.d.ts +46 -0
  47. package/dist/cache.d.ts.map +1 -0
  48. package/dist/cache.js +59 -0
  49. package/dist/call/arbitration.d.ts +63 -0
  50. package/dist/call/arbitration.d.ts.map +1 -0
  51. package/dist/call/arbitration.js +182 -0
  52. package/dist/call/base.d.ts +34 -0
  53. package/dist/call/base.d.ts.map +1 -0
  54. package/dist/call/base.js +131 -0
  55. package/dist/call/demand.d.ts +55 -0
  56. package/dist/call/demand.d.ts.map +1 -0
  57. package/dist/call/demand.js +135 -0
  58. package/dist/call/guard.d.ts +44 -0
  59. package/dist/call/guard.d.ts.map +1 -0
  60. package/dist/call/guard.js +244 -0
  61. package/dist/call/machine.d.ts +109 -0
  62. package/dist/call/machine.d.ts.map +1 -0
  63. package/dist/call/machine.js +210 -0
  64. package/dist/call/object_permission.d.ts +13 -0
  65. package/dist/call/object_permission.d.ts.map +1 -0
  66. package/dist/call/object_permission.js +49 -0
  67. package/dist/call/permission.d.ts +47 -0
  68. package/dist/call/permission.d.ts.map +1 -0
  69. package/dist/call/permission.js +95 -0
  70. package/dist/call/personal.d.ts +43 -0
  71. package/dist/call/personal.d.ts.map +1 -0
  72. package/dist/call/personal.js +60 -0
  73. package/dist/call/repository.d.ts +53 -0
  74. package/dist/call/repository.d.ts.map +1 -0
  75. package/dist/call/repository.js +125 -0
  76. package/dist/call/service.d.ts +134 -0
  77. package/dist/call/service.d.ts.map +1 -0
  78. package/dist/call/service.js +340 -0
  79. package/dist/call/treasury.d.ts +53 -0
  80. package/dist/call/treasury.d.ts.map +1 -0
  81. package/dist/call/treasury.js +161 -0
  82. package/dist/call.d.ts +24 -0
  83. package/dist/call.d.ts.map +1 -0
  84. package/dist/call.js +58 -0
  85. package/dist/empty.d.ts +1 -0
  86. package/dist/empty.d.ts.map +1 -0
  87. package/dist/empty.js +1 -0
  88. package/dist/events.d.ts +65 -0
  89. package/dist/events.d.ts.map +1 -0
  90. package/dist/events.js +59 -0
  91. package/dist/index.d.ts +19 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +1 -0
  94. package/dist/objects.d.ts +308 -0
  95. package/dist/objects.d.ts.map +1 -0
  96. package/dist/objects.js +448 -0
  97. package/dist/permission.d.ts +12 -0
  98. package/dist/permission.d.ts.map +1 -0
  99. package/dist/permission.js +40 -0
  100. package/dist/private_info.d.ts +26 -0
  101. package/dist/private_info.d.ts.map +1 -0
  102. package/dist/private_info.js +243 -0
  103. package/dist/src/account.d.ts +38 -0
  104. package/dist/src/account.d.ts.map +1 -0
  105. package/dist/src/account.js +273 -0
  106. package/dist/src/cache.d.ts +46 -0
  107. package/dist/src/cache.d.ts.map +1 -0
  108. package/dist/src/cache.js +59 -0
  109. package/dist/src/call/arbitration.d.ts +63 -0
  110. package/dist/src/call/arbitration.d.ts.map +1 -0
  111. package/dist/src/call/arbitration.js +182 -0
  112. package/dist/src/call/base.d.ts +34 -0
  113. package/dist/src/call/base.d.ts.map +1 -0
  114. package/dist/src/call/base.js +131 -0
  115. package/dist/src/call/demand.d.ts +55 -0
  116. package/dist/src/call/demand.d.ts.map +1 -0
  117. package/dist/src/call/demand.js +135 -0
  118. package/dist/src/call/guard.d.ts +44 -0
  119. package/dist/src/call/guard.d.ts.map +1 -0
  120. package/dist/src/call/guard.js +244 -0
  121. package/dist/src/call/machine.d.ts +109 -0
  122. package/dist/src/call/machine.d.ts.map +1 -0
  123. package/dist/src/call/machine.js +210 -0
  124. package/dist/src/call/object_permission.d.ts +13 -0
  125. package/dist/src/call/object_permission.d.ts.map +1 -0
  126. package/dist/src/call/object_permission.js +49 -0
  127. package/dist/src/call/permission.d.ts +47 -0
  128. package/dist/src/call/permission.d.ts.map +1 -0
  129. package/dist/src/call/permission.js +95 -0
  130. package/dist/src/call/personal.d.ts +43 -0
  131. package/dist/src/call/personal.d.ts.map +1 -0
  132. package/dist/src/call/personal.js +60 -0
  133. package/dist/src/call/repository.d.ts +53 -0
  134. package/dist/src/call/repository.d.ts.map +1 -0
  135. package/dist/src/call/repository.js +125 -0
  136. package/dist/src/call/service.d.ts +134 -0
  137. package/dist/src/call/service.d.ts.map +1 -0
  138. package/dist/src/call/service.js +340 -0
  139. package/dist/src/call/treasury.d.ts +53 -0
  140. package/dist/src/call/treasury.d.ts.map +1 -0
  141. package/dist/src/call/treasury.js +161 -0
  142. package/dist/src/call.d.ts +24 -0
  143. package/dist/src/call.d.ts.map +1 -0
  144. package/dist/src/call.js +58 -0
  145. package/dist/src/events.d.ts +65 -0
  146. package/dist/src/events.d.ts.map +1 -0
  147. package/dist/src/events.js +59 -0
  148. package/dist/src/index.d.ts +19 -0
  149. package/dist/src/index.d.ts.map +1 -0
  150. package/dist/src/index.js +18 -0
  151. package/dist/src/objects.d.ts +308 -0
  152. package/dist/src/objects.d.ts.map +1 -0
  153. package/dist/src/objects.js +448 -0
  154. package/dist/src/permission.d.ts +12 -0
  155. package/dist/src/permission.d.ts.map +1 -0
  156. package/dist/src/permission.js +40 -0
  157. package/dist/src/private_info.d.ts +26 -0
  158. package/dist/src/private_info.d.ts.map +1 -0
  159. package/dist/src/private_info.js +243 -0
  160. package/dist/webpack.config.d.ts +2 -0
  161. package/dist/webpack.config.d.ts.map +1 -0
  162. package/dist/webpack.config.js +17 -0
  163. package/dist/wowok/src/arbitration.d.ts +63 -0
  164. package/dist/wowok/src/arbitration.d.ts.map +1 -0
  165. package/dist/wowok/src/demand.d.ts +26 -0
  166. package/dist/wowok/src/demand.d.ts.map +1 -0
  167. package/dist/wowok/src/entity.d.ts +27 -0
  168. package/dist/wowok/src/entity.d.ts.map +1 -0
  169. package/dist/wowok/src/exception.d.ts +31 -0
  170. package/dist/wowok/src/exception.d.ts.map +1 -0
  171. package/dist/wowok/src/guard.d.ts +79 -0
  172. package/dist/wowok/src/guard.d.ts.map +1 -0
  173. package/dist/wowok/src/index.d.ts +35 -0
  174. package/dist/wowok/src/index.d.ts.map +1 -0
  175. package/dist/wowok/src/machine.d.ts +67 -0
  176. package/dist/wowok/src/machine.d.ts.map +1 -0
  177. package/dist/wowok/src/passport.d.ts +86 -0
  178. package/dist/wowok/src/passport.d.ts.map +1 -0
  179. package/dist/wowok/src/payment.d.ts +16 -0
  180. package/dist/wowok/src/payment.d.ts.map +1 -0
  181. package/dist/wowok/src/permission.d.ts +150 -0
  182. package/dist/wowok/src/permission.d.ts.map +1 -0
  183. package/dist/wowok/src/progress.d.ts +72 -0
  184. package/dist/wowok/src/progress.d.ts.map +1 -0
  185. package/dist/wowok/src/protocol.d.ts +226 -0
  186. package/dist/wowok/src/protocol.d.ts.map +1 -0
  187. package/dist/wowok/src/repository.d.ts +83 -0
  188. package/dist/wowok/src/repository.d.ts.map +1 -0
  189. package/dist/wowok/src/resource.d.ts +35 -0
  190. package/dist/wowok/src/resource.d.ts.map +1 -0
  191. package/dist/wowok/src/service.d.ts +138 -0
  192. package/dist/wowok/src/service.d.ts.map +1 -0
  193. package/dist/wowok/src/treasury.d.ts +55 -0
  194. package/dist/wowok/src/treasury.d.ts.map +1 -0
  195. package/dist/wowok/src/utils.d.ts +93 -0
  196. package/dist/wowok/src/utils.d.ts.map +1 -0
  197. package/dist/wowok/src/wowok.d.ts +15 -0
  198. package/dist/wowok/src/wowok.d.ts.map +1 -0
  199. package/dist/wowok_agent/empty.d.ts +1 -0
  200. package/dist/wowok_agent/empty.d.ts.map +1 -0
  201. package/dist/wowok_agent/src/account.d.ts +38 -0
  202. package/dist/wowok_agent/src/account.d.ts.map +1 -0
  203. package/dist/wowok_agent/src/cache.d.ts +46 -0
  204. package/dist/wowok_agent/src/cache.d.ts.map +1 -0
  205. package/dist/wowok_agent/src/call/arbitration.d.ts +63 -0
  206. package/dist/wowok_agent/src/call/arbitration.d.ts.map +1 -0
  207. package/dist/wowok_agent/src/call/base.d.ts +34 -0
  208. package/dist/wowok_agent/src/call/base.d.ts.map +1 -0
  209. package/dist/wowok_agent/src/call/demand.d.ts +55 -0
  210. package/dist/wowok_agent/src/call/demand.d.ts.map +1 -0
  211. package/dist/wowok_agent/src/call/guard.d.ts +44 -0
  212. package/dist/wowok_agent/src/call/guard.d.ts.map +1 -0
  213. package/dist/wowok_agent/src/call/machine.d.ts +109 -0
  214. package/dist/wowok_agent/src/call/machine.d.ts.map +1 -0
  215. package/dist/wowok_agent/src/call/object_permission.d.ts +13 -0
  216. package/dist/wowok_agent/src/call/object_permission.d.ts.map +1 -0
  217. package/dist/wowok_agent/src/call/permission.d.ts +47 -0
  218. package/dist/wowok_agent/src/call/permission.d.ts.map +1 -0
  219. package/dist/wowok_agent/src/call/personal.d.ts +43 -0
  220. package/dist/wowok_agent/src/call/personal.d.ts.map +1 -0
  221. package/dist/wowok_agent/src/call/repository.d.ts +53 -0
  222. package/dist/wowok_agent/src/call/repository.d.ts.map +1 -0
  223. package/dist/wowok_agent/src/call/service.d.ts +134 -0
  224. package/dist/wowok_agent/src/call/service.d.ts.map +1 -0
  225. package/dist/wowok_agent/src/call/treasury.d.ts +53 -0
  226. package/dist/wowok_agent/src/call/treasury.d.ts.map +1 -0
  227. package/dist/wowok_agent/src/call.d.ts +24 -0
  228. package/dist/wowok_agent/src/call.d.ts.map +1 -0
  229. package/dist/wowok_agent/src/events.d.ts +65 -0
  230. package/dist/wowok_agent/src/events.d.ts.map +1 -0
  231. package/dist/wowok_agent/src/index.d.ts +19 -0
  232. package/dist/wowok_agent/src/index.d.ts.map +1 -0
  233. package/dist/wowok_agent/src/objects.d.ts +308 -0
  234. package/dist/wowok_agent/src/objects.d.ts.map +1 -0
  235. package/dist/wowok_agent/src/permission.d.ts +12 -0
  236. package/dist/wowok_agent/src/permission.d.ts.map +1 -0
  237. package/dist/wowok_agent/src/private_info.d.ts +26 -0
  238. package/dist/wowok_agent/src/private_info.d.ts.map +1 -0
  239. package/empty.ts +0 -0
  240. package/package.json +12 -3
  241. package/src/account.ts +40 -37
  242. package/src/call/arbitration.ts +41 -19
  243. package/src/call/base.ts +14 -16
  244. package/src/call/demand.ts +8 -7
  245. package/src/call/guard.ts +2 -7
  246. package/src/call/machine.ts +56 -35
  247. package/src/call/repository.ts +17 -15
  248. package/src/call/service.ts +87 -55
  249. package/src/call/treasury.ts +11 -10
  250. package/src/call.ts +3 -3
  251. package/src/index.ts +1 -1
  252. package/tsconfig.json +6 -2
  253. package/webpack.config.cjs +26 -0
@@ -0,0 +1,244 @@
1
+ /**
2
+ * generate and launch a guard
3
+ */
4
+ import { Bcs, ContextType, ERROR, Errors, IsValidU8, OperatorType, ValueType, GUARD_QUERIES, IsValidAddress, concatenate, Protocol, hasDuplicates, insertAtHead, IsValidDesription, IsValidGuardIdentifier } from "wowok";
5
+ import { CallBase } from "./base";
6
+ export class CallGuard extends CallBase {
7
+ data;
8
+ constructor(data) {
9
+ super();
10
+ this.data = data;
11
+ }
12
+ async call(account) {
13
+ return await this.exec(account);
14
+ }
15
+ async operate(txb, passport, account) {
16
+ if (!this.data?.root) {
17
+ ERROR(Errors.InvalidParam, 'guard root node invalid');
18
+ }
19
+ if (!IsValidDesription(this.data?.description)) {
20
+ ERROR(Errors.IsValidDesription, 'build_guard - ' + this.data.description);
21
+ }
22
+ // check const
23
+ this.data?.table?.forEach(v => {
24
+ if (!IsValidU8(v.identifier) || v.identifier < 1)
25
+ ERROR(Errors.InvalidParam, 'table.identifer invalid');
26
+ if (!v.bWitness && v.value === undefined)
27
+ ERROR(Errors.InvalidParam, 'table.value');
28
+ });
29
+ if (this.data?.table && hasDuplicates(this.data?.table?.map(v => v.identifier))) {
30
+ ERROR(Errors.InvalidParam, 'table.identifer duplicates');
31
+ }
32
+ // check root
33
+ var output = [];
34
+ buildNode(this.data.root, ValueType.TYPE_BOOL, this.data?.table ?? [], output);
35
+ const bytes = concatenate(Uint8Array, ...output);
36
+ const obj = txb.moveCall({
37
+ target: Protocol.Instance().guardFn('new'),
38
+ arguments: [txb.pure.string(this.data.description), txb.pure.vector('u8', [].slice.call(bytes.reverse()))],
39
+ });
40
+ this.data?.table?.forEach((v) => {
41
+ if (v.bWitness) {
42
+ const n = new Uint8Array(1);
43
+ n.set([v.value_type], 0);
44
+ txb.moveCall({
45
+ target: Protocol.Instance().guardFn("constant_add"),
46
+ arguments: [txb.object(obj), txb.pure.u8(v.identifier), txb.pure.bool(true), txb.pure.vector('u8', [].slice.call(n)), txb.pure.bool(false)]
47
+ });
48
+ }
49
+ else {
50
+ const tmp = Uint8Array.from(Bcs.getInstance().ser(v.value_type, v.value));
51
+ const n = insertAtHead(tmp, v.value_type);
52
+ txb.moveCall({
53
+ target: Protocol.Instance().guardFn("constant_add"),
54
+ arguments: [txb.object(obj), txb.pure.u8(v.identifier), txb.pure.bool(false), txb.pure.vector('u8', [].slice.call(n)), txb.pure.bool(false)]
55
+ });
56
+ }
57
+ });
58
+ const addr = txb.moveCall({
59
+ target: Protocol.Instance().guardFn("create"),
60
+ arguments: [txb.object(obj)]
61
+ });
62
+ await this.new_with_mark(txb, addr, this.data?.namedNew, account);
63
+ }
64
+ }
65
+ //export const MAX_CHILD_NODE_COUNT = 6;
66
+ const buildNode = (guard_node, type_required, table, output) => {
67
+ const node = guard_node;
68
+ if (node?.identifier !== undefined) {
69
+ const f = table.find(v => v.identifier === node.identifier);
70
+ if (f) {
71
+ checkType(f.value_type, type_required, node);
72
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_U8, ContextType.TYPE_CONSTANT));
73
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_U8, node.identifier));
74
+ }
75
+ else {
76
+ ERROR(Errors.InvalidParam, 'node identifier - ' + JSON.stringify(node));
77
+ }
78
+ }
79
+ else if (node?.query !== undefined) {
80
+ var q;
81
+ if (typeof (node.query) === 'string') {
82
+ q = GUARD_QUERIES.find(v => v[1] === node.query);
83
+ }
84
+ else if (typeof (node.query) === 'number') {
85
+ q = GUARD_QUERIES.find(v => v[2] === node.query);
86
+ }
87
+ if (!q)
88
+ ERROR(Errors.InvalidParam, 'query invalid - ' + node?.query);
89
+ checkType(q[4], type_required, node); // Return type checking
90
+ if ((q[3]).length === node.parameters.length) {
91
+ for (let i = node.parameters.length - 1; i >= 0; --i) { // stack: first in, last out
92
+ buildNode(node.parameters[i], q[3][i], table, output); // Recursive check
93
+ }
94
+ }
95
+ else {
96
+ ERROR(Errors.InvalidParam, 'node query parameters length not match - ' + JSON.stringify(node));
97
+ }
98
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_U8, OperatorType.TYPE_QUERY)); // QUERY TYPE + addr + cmd
99
+ if (typeof (node.object) === 'string') {
100
+ if (!IsValidAddress(node.object)) {
101
+ ERROR(Errors.InvalidParam, 'node object from address string - ' + JSON.stringify(node));
102
+ }
103
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_U8, ValueType.TYPE_ADDRESS));
104
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_ADDRESS, node.object)); // object address
105
+ }
106
+ else {
107
+ const f = table.find(v => v.identifier === node.object);
108
+ if (f) {
109
+ checkType(f.value_type, ValueType.TYPE_ADDRESS, node);
110
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_U8, ContextType.TYPE_CONSTANT));
111
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_U8, node.object)); // object id
112
+ }
113
+ else {
114
+ ERROR(Errors.InvalidParam, 'node object from identifier - ' + JSON.stringify(node));
115
+ }
116
+ }
117
+ output.push(Bcs.getInstance().ser('u16', q[2])); // cmd(u16)
118
+ }
119
+ else if (node?.logic !== undefined) {
120
+ checkType(ValueType.TYPE_BOOL, type_required, node); // bool
121
+ switch (node?.logic) {
122
+ case OperatorType.TYPE_LOGIC_AND:
123
+ case OperatorType.TYPE_LOGIC_OR:
124
+ if (node.parameters.length < 2)
125
+ ERROR(Errors.InvalidParam, 'node logic parameters length must >= 2' + JSON.stringify(node));
126
+ node.parameters.reverse().forEach(v => buildNode(v, ValueType.TYPE_BOOL, table, output)); // reserve
127
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_U8, node.logic)); // TYPE
128
+ output.push((Bcs.getInstance().ser(ValueType.TYPE_U8, node.parameters.length)));
129
+ break;
130
+ case OperatorType.TYPE_LOGIC_NOT:
131
+ if (node.parameters.length !== 1)
132
+ ERROR(Errors.InvalidParam, 'node logic parameters length must be 1' + JSON.stringify(node));
133
+ node.parameters.reverse().forEach(v => buildNode(v, ValueType.TYPE_BOOL, table, output)); // reserve
134
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_U8, node.logic)); // TYPE
135
+ break;
136
+ case OperatorType.TYPE_LOGIC_AS_U256_GREATER:
137
+ case OperatorType.TYPE_LOGIC_AS_U256_GREATER_EQUAL:
138
+ case OperatorType.TYPE_LOGIC_AS_U256_LESSER:
139
+ case OperatorType.TYPE_LOGIC_AS_U256_LESSER_EQUAL:
140
+ case OperatorType.TYPE_LOGIC_AS_U256_EQUAL:
141
+ if (node.parameters.length < 2)
142
+ ERROR(Errors.InvalidParam, 'node logic parameters length must >= 2' + JSON.stringify(node));
143
+ node.parameters.reverse().forEach(v => buildNode(v, 'number', table, output));
144
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_U8, node.logic)); // TYPE
145
+ output.push((Bcs.getInstance().ser(ValueType.TYPE_U8, node.parameters.length)));
146
+ break;
147
+ case OperatorType.TYPE_LOGIC_EQUAL:
148
+ if (node.parameters.length < 2)
149
+ ERROR(Errors.InvalidParam, 'node logic parameters length must >= 2' + JSON.stringify(node));
150
+ var any_type = 'variable';
151
+ node.parameters.reverse().forEach(v => buildNode(v, any_type, table, output));
152
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_U8, node.logic)); // TYPE
153
+ output.push((Bcs.getInstance().ser(ValueType.TYPE_U8, node.parameters.length)));
154
+ break;
155
+ case OperatorType.TYPE_LOGIC_HAS_SUBSTRING:
156
+ if (node.parameters.length < 2)
157
+ ERROR(Errors.InvalidParam, 'node logic parameters length must >= 2' + JSON.stringify(node));
158
+ node.parameters.reverse().forEach(v => buildNode(v, ValueType.TYPE_STRING, table, output));
159
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_U8, node.logic)); // TYPE
160
+ output.push((Bcs.getInstance().ser(ValueType.TYPE_U8, node.parameters.length)));
161
+ break;
162
+ }
163
+ }
164
+ else if (node?.calc !== undefined) {
165
+ checkType(ValueType.TYPE_U256, type_required, node);
166
+ if (node.parameters.length < 2)
167
+ ERROR(Errors.InvalidParam, 'node calc parameters length must >= 2' + JSON.stringify(node));
168
+ node.parameters.reverse().forEach(v => buildNode(v, 'number', table, output));
169
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_U8, node.calc)); // TYPE
170
+ output.push((Bcs.getInstance().ser(ValueType.TYPE_U8, node.parameters.length)));
171
+ }
172
+ else if (node?.value_type !== undefined) {
173
+ checkType(node?.value_type, type_required, node);
174
+ if (node?.value === undefined)
175
+ ERROR(Errors.InvalidParam, 'node value undefined - ' + JSON.stringify(node));
176
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_U8, node.value_type)); // TYPE
177
+ if (node.value_type == ValueType.TYPE_STRING || node.value_type === ValueType.TYPE_VEC_U8) {
178
+ if (typeof (node.value) == 'string') {
179
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_STRING, node.value));
180
+ }
181
+ else {
182
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_VEC_U8, node.value));
183
+ }
184
+ }
185
+ else {
186
+ output.push(Bcs.getInstance().ser(node?.value_type, node.value));
187
+ }
188
+ }
189
+ else if (node?.context !== undefined) {
190
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_U8, node.context));
191
+ switch (node.context) {
192
+ case ContextType.TYPE_CLOCK:
193
+ checkType(ValueType.TYPE_U64, type_required, node);
194
+ break;
195
+ case ContextType.TYPE_GUARD:
196
+ case ContextType.TYPE_SIGNER:
197
+ checkType(ValueType.TYPE_ADDRESS, type_required, node);
198
+ break;
199
+ }
200
+ }
201
+ else if (node?.identifier !== undefined) {
202
+ if (!IsValidGuardIdentifier(node.identifier))
203
+ ERROR(Errors.IsValidGuardIdentifier, 'node - ' + JSON.stringify(node));
204
+ const i = table.find(v => v.identifier === node.identifier);
205
+ if (!i)
206
+ ERROR(Errors.InvalidParam, 'identifier not found. node - ' + JSON.stringify(node));
207
+ checkType(i.value_type, type_required, node);
208
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_U8, ContextType.TYPE_CONSTANT));
209
+ output.push(Bcs.getInstance().ser(ValueType.TYPE_U8, node.identifier));
210
+ }
211
+ else {
212
+ ERROR(Errors.InvalidParam, 'node - ' + JSON.stringify(node));
213
+ }
214
+ };
215
+ const checkType = (type, type_required, node) => {
216
+ if (type_required === 'variable') {
217
+ type_required = type;
218
+ }
219
+ else if (type_required === 'number') {
220
+ if (type === ValueType.TYPE_U128 || type === ValueType.TYPE_U256 || type === ValueType.TYPE_U8 ||
221
+ type === ValueType.TYPE_U64 || type === ContextType.TYPE_CLOCK) {
222
+ return;
223
+ }
224
+ }
225
+ else if (type_required === ValueType.TYPE_ADDRESS) {
226
+ if (type === ContextType.TYPE_SIGNER || type === ContextType.TYPE_GUARD) {
227
+ return;
228
+ }
229
+ } /*else if (type_required === ValueType.TYPE_STRING) {
230
+ if (type === ValueType.TYPE_VEC_U8) {
231
+ return
232
+ }
233
+ } else if (type_required === ValueType.TYPE_VEC_U8) {
234
+ if (type === ValueType.TYPE_STRING) {
235
+ return
236
+ }
237
+ } */
238
+ if (type !== type_required) {
239
+ var str = '';
240
+ if (node)
241
+ str = ' - ' + JSON.stringify(node);
242
+ ERROR(Errors.InvalidParam, 'checkType: ' + type + ' require type: ' + type_required + str);
243
+ }
244
+ };
@@ -0,0 +1,109 @@
1
+ import { PassportObject, TransactionBlock, Machine_Forward, Machine_Node, Deliverable, ParentProgress, ProgressNext } from 'wowok';
2
+ import { CallBase, CallResult, Namedbject } from "./base";
3
+ export interface CallMachine_Data {
4
+ object?: {
5
+ address: string;
6
+ } | {
7
+ namedNew: Namedbject;
8
+ };
9
+ permission?: {
10
+ address: string;
11
+ } | {
12
+ namedNew: Namedbject;
13
+ description?: string;
14
+ };
15
+ description?: string;
16
+ endpoint?: string;
17
+ consensus_repository?: {
18
+ op: 'set' | 'add' | 'remove';
19
+ repositories: string[];
20
+ } | {
21
+ op: 'removeall';
22
+ };
23
+ nodes?: {
24
+ op: 'add';
25
+ data: Machine_Node[];
26
+ } | {
27
+ op: 'remove';
28
+ names: string[];
29
+ bTransferMyself?: boolean;
30
+ } | {
31
+ op: 'rename node';
32
+ data: {
33
+ old: string;
34
+ new: string;
35
+ }[];
36
+ } | {
37
+ op: 'add from myself';
38
+ addresses: string[];
39
+ } | {
40
+ op: 'remove pair';
41
+ pairs: {
42
+ prior_node_name: string;
43
+ node_name: string;
44
+ }[];
45
+ } | {
46
+ op: 'add forward';
47
+ data: {
48
+ prior_node_name: string;
49
+ node_name: string;
50
+ forward: Machine_Forward;
51
+ threshold?: number;
52
+ old_need_remove?: string;
53
+ }[];
54
+ } | {
55
+ op: 'remove forward';
56
+ data: {
57
+ prior_node_name: string;
58
+ node_name: string;
59
+ forward_name: string;
60
+ }[];
61
+ };
62
+ bPublished?: boolean;
63
+ progress_new?: {
64
+ task_address?: string;
65
+ namedNew?: Namedbject;
66
+ };
67
+ progress_context_repository?: {
68
+ progress?: string;
69
+ repository: string;
70
+ };
71
+ progress_namedOperator?: {
72
+ progress?: string;
73
+ data: {
74
+ name: string;
75
+ operator: string[];
76
+ }[];
77
+ };
78
+ progress_parent?: {
79
+ progress?: string;
80
+ parent?: ParentProgress;
81
+ };
82
+ progress_task?: {
83
+ progress?: string;
84
+ task: string;
85
+ };
86
+ progress_hold?: {
87
+ progress?: string;
88
+ data: ProgressNext;
89
+ bHold: boolean;
90
+ adminUnhold?: boolean;
91
+ };
92
+ progress_next?: {
93
+ progress: string;
94
+ data: ProgressNext;
95
+ deliverable: Deliverable;
96
+ guard?: string | 'fetch';
97
+ };
98
+ bPaused?: boolean;
99
+ clone_new?: {
100
+ namedNew: Namedbject;
101
+ };
102
+ }
103
+ export declare class CallMachine extends CallBase {
104
+ data: CallMachine_Data;
105
+ constructor(data: CallMachine_Data);
106
+ call(account?: string): Promise<CallResult>;
107
+ protected operate(txb: TransactionBlock, passport?: PassportObject, account?: string): Promise<void>;
108
+ }
109
+ //# sourceMappingURL=machine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../../../src/call/machine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,210 @@
1
+ import { IsValidAddress, Errors, ERROR, Permission, PermissionIndex, Machine, Progress, } from 'wowok';
2
+ import { CallBase } from "./base";
3
+ import { Account } from '../account';
4
+ export class CallMachine extends CallBase {
5
+ data;
6
+ constructor(data) {
7
+ super();
8
+ this.data = data;
9
+ }
10
+ async call(account) {
11
+ var checkOwner = false;
12
+ const guards = [];
13
+ const perms = [];
14
+ const permission_address = this.data?.permission?.address;
15
+ const object_address = this.data?.object?.address;
16
+ if (permission_address && IsValidAddress(permission_address)) {
17
+ if (!this.data?.object) {
18
+ perms.push(PermissionIndex.machine);
19
+ }
20
+ if (this.data?.description !== undefined && object_address) {
21
+ perms.push(PermissionIndex.machine_description);
22
+ }
23
+ if (this.data?.endpoint !== undefined && object_address) {
24
+ perms.push(PermissionIndex.machine_endpoint);
25
+ }
26
+ if (this.data?.consensus_repository !== undefined) {
27
+ perms.push(PermissionIndex.machine_repository);
28
+ }
29
+ if (this.data?.nodes !== undefined) {
30
+ perms.push(PermissionIndex.machine_node);
31
+ }
32
+ if (this.data?.bPublished) { // publish is an irreversible one-time operation
33
+ perms.push(PermissionIndex.machine_publish);
34
+ }
35
+ if (this.data?.progress_new !== undefined) {
36
+ perms.push(PermissionIndex.progress);
37
+ }
38
+ if (this.data?.progress_context_repository !== undefined) {
39
+ perms.push(PermissionIndex.progress_context_repository);
40
+ }
41
+ if (this.data?.progress_namedOperator !== undefined) {
42
+ perms.push(PermissionIndex.progress_namedOperator);
43
+ }
44
+ if (this.data?.progress_parent !== undefined) {
45
+ perms.push(PermissionIndex.progress_parent);
46
+ }
47
+ if (this.data?.progress_task !== undefined) {
48
+ perms.push(PermissionIndex.progress_bind_task);
49
+ }
50
+ if (this.data?.progress_hold !== undefined) {
51
+ if (this.data.progress_hold.adminUnhold) {
52
+ perms.push(PermissionIndex.progress_unhold);
53
+ }
54
+ }
55
+ if (this.data?.bPaused !== undefined) {
56
+ perms.push(PermissionIndex.machine_pause);
57
+ }
58
+ if (this.data?.progress_next?.guard !== undefined) {
59
+ if (IsValidAddress(this.data?.progress_next?.guard)) {
60
+ guards.push(this.data?.progress_next?.guard);
61
+ }
62
+ else if (this.data?.object && IsValidAddress(object_address)) { // fetch guard
63
+ const guard = await Progress.QueryForwardGuard(this.data?.progress_next.progress, object_address, await Account.Instance().get_address() ?? '0xe386bb9e01b3528b75f3751ad8a1e418b207ad979fea364087deef5250a73d3f', this.data.progress_next.data.next_node_name, this.data.progress_next.data.forward);
64
+ if (guard) {
65
+ guards.push(guard);
66
+ }
67
+ }
68
+ }
69
+ return await this.check_permission_and_call(permission_address, perms, guards, checkOwner, undefined, account);
70
+ }
71
+ return await this.exec(account);
72
+ }
73
+ async operate(txb, passport, account) {
74
+ let obj;
75
+ let permission;
76
+ const permission_address = this.data?.permission?.address;
77
+ const object_address = this.data?.object?.address;
78
+ if (!object_address) {
79
+ if (!permission_address || !IsValidAddress(permission_address)) {
80
+ const d = this.data?.permission?.description ?? '';
81
+ permission = Permission.New(txb, d);
82
+ }
83
+ obj = Machine.New(txb, permission ? permission.get_object() : permission_address, this.data?.description ?? '', this.data?.endpoint ?? '', permission ? undefined : passport);
84
+ }
85
+ else {
86
+ if (IsValidAddress(object_address) && permission_address && IsValidAddress(permission_address)) {
87
+ obj = Machine.From(txb, permission_address, object_address);
88
+ }
89
+ else {
90
+ ERROR(Errors.InvalidParam, 'object or permission address invalid.');
91
+ }
92
+ }
93
+ if (obj) {
94
+ const perm = permission ? permission.get_object() : permission_address;
95
+ const pst = permission ? undefined : passport;
96
+ if (this.data?.description !== undefined && object_address) {
97
+ obj?.set_description(this.data.description, pst);
98
+ }
99
+ if (this.data?.endpoint !== undefined && object_address) {
100
+ obj?.set_endpoint(this.data.endpoint, pst);
101
+ }
102
+ if (this.data?.consensus_repository !== undefined) {
103
+ switch (this.data.consensus_repository.op) {
104
+ case 'add':
105
+ this.data.consensus_repository.repositories.forEach(v => obj?.add_repository(v, pst));
106
+ break;
107
+ case 'remove':
108
+ obj?.remove_repository(this.data.consensus_repository.repositories, false, pst);
109
+ break;
110
+ case 'removeall':
111
+ obj?.remove_repository([], true, pst);
112
+ break;
113
+ case 'set':
114
+ obj?.remove_repository([], true, pst);
115
+ this.data.consensus_repository.repositories.forEach(v => obj?.add_repository(v, pst));
116
+ break;
117
+ }
118
+ }
119
+ if (this.data?.nodes !== undefined) {
120
+ switch (this.data?.nodes?.op) {
121
+ case 'add':
122
+ obj?.add_node(this.data.nodes.data, pst);
123
+ break;
124
+ case 'remove':
125
+ obj?.remove_node(this.data.nodes.names, this.data.nodes?.bTransferMyself, pst);
126
+ break;
127
+ case 'rename node':
128
+ this.data.nodes.data.forEach(v => obj?.rename_node(v.old, v.new, pst));
129
+ break;
130
+ case 'add from myself':
131
+ obj?.add_node2(this.data.nodes.addresses, pst);
132
+ break;
133
+ case 'add forward':
134
+ this.data.nodes.data.forEach(v => obj?.add_forward(v.prior_node_name, v.node_name, v.forward, v.threshold, v.old_need_remove, pst));
135
+ break;
136
+ case 'remove forward':
137
+ this.data.nodes.data.forEach(v => obj?.remove_forward(v.prior_node_name, v.node_name, v.forward_name, pst));
138
+ break;
139
+ }
140
+ }
141
+ if (this.data?.bPublished) {
142
+ obj?.publish(passport);
143
+ }
144
+ var new_progress;
145
+ if (this.data?.progress_new !== undefined) {
146
+ new_progress = Progress?.New(txb, obj?.get_object(), perm, this.data?.progress_new.task_address, pst);
147
+ }
148
+ if (this.data?.progress_context_repository !== undefined) {
149
+ const p = this.data?.progress_context_repository.progress ?? new_progress?.get_object();
150
+ if (!p)
151
+ ERROR(Errors.Fail, 'progress invalid: progress_context_repository');
152
+ Progress.From(txb, obj?.get_object(), perm, p).set_context_repository(this.data?.progress_context_repository.repository, pst);
153
+ }
154
+ if (this.data?.progress_namedOperator !== undefined) {
155
+ const p = this.data?.progress_namedOperator.progress ?? new_progress?.get_object();
156
+ if (!p)
157
+ ERROR(Errors.Fail, 'progress invalid: progress_namedOperator');
158
+ let pp = Progress.From(txb, obj?.get_object(), perm, p);
159
+ this.data.progress_namedOperator.data.forEach(v => pp.set_namedOperator(v.name, v.operator, pst));
160
+ }
161
+ if (this.data?.progress_parent !== undefined) {
162
+ const p = this.data?.progress_parent.progress ?? new_progress?.get_object();
163
+ if (!p)
164
+ ERROR(Errors.Fail, 'progress invalid: progress_parent');
165
+ if (this.data.progress_parent.parent) {
166
+ Progress.From(txb, obj?.get_object(), perm, p).parent(this.data.progress_parent.parent);
167
+ }
168
+ else {
169
+ Progress.From(txb, obj?.get_object(), perm, p).parent_none();
170
+ }
171
+ }
172
+ if (this.data?.progress_task !== undefined) {
173
+ const p = this.data?.progress_task.progress ?? new_progress?.get_object();
174
+ if (!p)
175
+ ERROR(Errors.Fail, 'progress invalid: progress_task');
176
+ Progress.From(txb, obj?.get_object(), perm, p).bind_task(this.data.progress_task.task, pst);
177
+ }
178
+ if (this.data?.progress_hold !== undefined) {
179
+ const p = this.data?.progress_hold.progress ?? new_progress?.get_object();
180
+ if (!p)
181
+ ERROR(Errors.Fail, 'progress invalid: progress_hold');
182
+ if (this.data?.progress_hold.adminUnhold) {
183
+ Progress.From(txb, obj?.get_object(), perm, p).unhold(this.data.progress_hold.data, pst);
184
+ }
185
+ else {
186
+ Progress.From(txb, obj?.get_object(), perm, p).hold(this.data.progress_hold.data, this.data.progress_hold.bHold);
187
+ }
188
+ }
189
+ const addr = new_progress?.launch();
190
+ if (addr) {
191
+ await this.new_with_mark(txb, addr, this.data?.progress_new?.namedNew, account);
192
+ }
193
+ if (this.data?.progress_next !== undefined) {
194
+ Progress.From(txb, obj?.get_object(), perm, this.data?.progress_next.progress).next(this.data.progress_next.data, this.data.progress_next.deliverable, pst);
195
+ }
196
+ if (this.data?.bPaused !== undefined) {
197
+ obj?.pause(this.data.bPaused, pst);
198
+ }
199
+ if (this.data?.clone_new !== undefined && obj) {
200
+ await this.new_with_mark(txb, obj?.clone(true, pst), this.data?.clone_new?.namedNew, account);
201
+ }
202
+ if (permission) {
203
+ await this.new_with_mark(txb, permission.launch(), this.data?.permission?.namedNew, account);
204
+ }
205
+ if (!object_address) {
206
+ await this.new_with_mark(txb, obj.launch(), this.data?.object?.namedNew, account);
207
+ }
208
+ }
209
+ }
210
+ }
@@ -0,0 +1,13 @@
1
+ import { CallBase, CallResult } from "./base";
2
+ import { TransactionBlock, PassportObject } from 'wowok';
3
+ export interface CallObjectPermission_Data {
4
+ objects: string[];
5
+ new_permission: string;
6
+ }
7
+ export declare class CallObjectPermission extends CallBase {
8
+ data: CallObjectPermission_Data;
9
+ constructor(data: CallObjectPermission_Data);
10
+ call(account?: string): Promise<CallResult>;
11
+ protected operate(txb: TransactionBlock, passport?: PassportObject): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=object_permission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object_permission.d.ts","sourceRoot":"","sources":["../../../src/call/object_permission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAA8F,MAAM,OAAO,CAAC;AAGrJ,MAAM,WAAW,yBAAyB;IACtC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,oBAAqB,SAAQ,QAAQ;IAC9C,IAAI,EAAE,yBAAyB,CAAC;gBACpB,IAAI,EAAC,yBAAyB;IAKpC,IAAI,CAAC,OAAO,CAAC,EAAC,MAAM,GAAI,OAAO,CAAC,UAAU,CAAC;cASjC,OAAO,CAAE,GAAG,EAAC,gBAAgB,EAAE,QAAQ,CAAC,EAAC,cAAc;CA+B1E"}
@@ -0,0 +1,49 @@
1
+ import { CallBase } from "./base";
2
+ import { IsValidAddress, Errors, ERROR, Demand, Machine, Service, Treasury, Arbitration, Repository } from 'wowok';
3
+ import { query_objects } from "../objects";
4
+ export class CallObjectPermission extends CallBase {
5
+ data;
6
+ constructor(data) {
7
+ super();
8
+ this.data = data;
9
+ }
10
+ async call(account) {
11
+ if (!IsValidAddress(this.data.new_permission)) {
12
+ ERROR(Errors.InvalidParam, 'CallObjectPermission_Data.new_permission' + this.data.new_permission);
13
+ }
14
+ if (this.data?.objects.length > 0) {
15
+ return await this.exec(account);
16
+ }
17
+ }
18
+ async operate(txb, passport) {
19
+ const r = await query_objects({ objects: this.data.objects, showContent: true });
20
+ r.objects?.forEach(v => {
21
+ switch (v.type) {
22
+ case 'Demand':
23
+ const demand = v;
24
+ Demand.From(txb, Demand.parseObjectType(demand.type_raw), demand.permission, demand.object).change_permission(this.data.new_permission);
25
+ break;
26
+ case 'Machine':
27
+ const machine = v;
28
+ Machine.From(txb, machine.permission, machine.object).change_permission(this.data.new_permission);
29
+ break;
30
+ case 'Service':
31
+ const service = v;
32
+ Service.From(txb, Service.parseObjectType(service.type_raw), service.permission, service.object).change_permission(this.data.new_permission);
33
+ break;
34
+ case 'Treasury':
35
+ const treasury = v;
36
+ Treasury.From(txb, Treasury.parseObjectType(treasury.type_raw), treasury.permission, treasury.object).change_permission(this.data.new_permission);
37
+ break;
38
+ case 'Arbitration':
39
+ const arbitraion = v;
40
+ Arbitration.From(txb, Arbitration.parseObjectType(arbitraion.type_raw), arbitraion.permission, arbitraion.object).change_permission(this.data.new_permission);
41
+ break;
42
+ case 'Repository':
43
+ const repository = v;
44
+ Repository.From(txb, repository.permission, repository.object).change_permission(this.data.new_permission);
45
+ break;
46
+ }
47
+ });
48
+ }
49
+ }