verteilen-core 1.2.4 → 1.2.6

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 (92) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/jest.config.d.ts +2 -0
  3. package/dist/src/client/analysis.d.ts +35 -0
  4. package/dist/src/client/analysis.js +318 -319
  5. package/dist/src/client/client.d.ts +25 -0
  6. package/dist/src/client/client.js +162 -168
  7. package/dist/src/client/cluster.d.ts +1 -0
  8. package/dist/src/client/cluster.js +1 -2
  9. package/dist/src/client/database.d.ts +13 -0
  10. package/dist/src/client/database.js +28 -27
  11. package/dist/src/client/execute.d.ts +24 -0
  12. package/dist/src/client/execute.js +61 -51
  13. package/dist/src/client/http.d.ts +7 -0
  14. package/dist/src/client/http.js +29 -26
  15. package/dist/src/client/javascript.d.ts +47 -0
  16. package/dist/src/client/javascript.js +110 -136
  17. package/dist/src/client/job_database.d.ts +10 -0
  18. package/dist/src/client/job_database.js +27 -29
  19. package/dist/src/client/job_execute.d.ts +20 -0
  20. package/dist/src/client/job_execute.js +148 -146
  21. package/dist/src/client/os.d.ts +29 -0
  22. package/dist/src/client/os.js +131 -136
  23. package/dist/src/client/resource.d.ts +7 -0
  24. package/dist/src/client/resource.js +93 -104
  25. package/dist/src/client/shell.d.ts +16 -0
  26. package/dist/src/client/shell.js +102 -98
  27. package/dist/src/computed.d.ts +13 -0
  28. package/dist/src/interface/base.d.ts +70 -0
  29. package/dist/src/interface/bus.d.ts +90 -0
  30. package/dist/src/interface/enum.d.ts +143 -0
  31. package/dist/src/interface/execute.d.ts +20 -0
  32. package/dist/src/interface/record.d.ts +93 -0
  33. package/dist/src/interface/server.d.ts +76 -0
  34. package/dist/src/interface/struct.d.ts +182 -0
  35. package/dist/src/interface/table.d.ts +20 -0
  36. package/dist/src/interface/ui.d.ts +29 -0
  37. package/dist/src/interface.d.ts +29 -0
  38. package/dist/src/plugins/i18n.d.ts +1666 -0
  39. package/dist/src/script/console_manager.d.ts +18 -0
  40. package/dist/src/script/console_manager.js +97 -91
  41. package/dist/src/script/console_server_manager.d.ts +13 -0
  42. package/dist/src/script/console_server_manager.js +29 -26
  43. package/dist/src/script/execute/base.d.ts +45 -0
  44. package/dist/src/script/execute/base.js +165 -162
  45. package/dist/src/script/execute/feedback.d.ts +12 -0
  46. package/dist/src/script/execute/feedback.js +162 -171
  47. package/dist/src/script/execute/interface.d.ts +8 -0
  48. package/dist/src/script/execute/region_job.d.ts +5 -0
  49. package/dist/src/script/execute/region_job.js +1 -0
  50. package/dist/src/script/execute/region_project.d.ts +10 -0
  51. package/dist/src/script/execute/region_project.js +4 -0
  52. package/dist/src/script/execute/region_subtask.d.ts +5 -0
  53. package/dist/src/script/execute/region_subtask.js +1 -0
  54. package/dist/src/script/execute/region_task.d.ts +10 -0
  55. package/dist/src/script/execute/region_task.js +4 -0
  56. package/dist/src/script/execute/runner.d.ts +14 -0
  57. package/dist/src/script/execute/runner.js +129 -139
  58. package/dist/src/script/execute/util_parser.d.ts +14 -0
  59. package/dist/src/script/execute/util_parser.js +119 -121
  60. package/dist/src/script/execute_manager.d.ts +25 -0
  61. package/dist/src/script/execute_manager.js +266 -278
  62. package/dist/src/script/socket_manager.d.ts +31 -0
  63. package/dist/src/script/socket_manager.js +196 -193
  64. package/dist/src/script/webhook_manager.d.ts +3 -0
  65. package/dist/src/script/webhook_server_manager.d.ts +13 -0
  66. package/dist/src/script/webhook_server_manager.js +79 -86
  67. package/dist/src/server/detail.d.ts +72 -0
  68. package/dist/src/server/detail.js +401 -378
  69. package/dist/src/server/io.d.ts +46 -0
  70. package/dist/src/server/io.js +42 -51
  71. package/dist/src/server/plugin.d.ts +18 -0
  72. package/dist/src/server/plugin.js +45 -54
  73. package/dist/src/server/server.d.ts +27 -0
  74. package/dist/src/server/server.js +38 -36
  75. package/dist/src/server.d.ts +4 -0
  76. package/dist/src/util/console_handle.d.ts +20 -0
  77. package/dist/src/util/console_handle.js +214 -218
  78. package/dist/src/util/log_handle.d.ts +23 -0
  79. package/dist/src/util/log_handle.js +158 -164
  80. package/dist/test/TEST.d.ts +1 -0
  81. package/dist/test/TEST.js +37 -54
  82. package/dist/test/client/execute.test.d.ts +1 -0
  83. package/dist/test/client/execute.test.js +6 -15
  84. package/dist/test/client/javascript.test.d.ts +1 -0
  85. package/dist/test/client/javascript.test.js +21 -30
  86. package/dist/test/client/server.test.d.ts +1 -0
  87. package/dist/test/client/task.test.d.ts +1 -0
  88. package/dist/test/client/task.test.js +1 -1
  89. package/dist/test/script/parser.test.d.ts +1 -0
  90. package/dist/test/script/socket.test.d.ts +1 -0
  91. package/package.json +1 -1
  92. package/tsconfig.json +5 -3
@@ -6,385 +6,19 @@ const interface_1 = require("../interface");
6
6
  const console_handle_1 = require("../util/console_handle");
7
7
  const log_handle_1 = require("../util/log_handle");
8
8
  class ServerDetail {
9
+ execute_manager = [];
10
+ console;
11
+ websocket_manager;
12
+ shellBind = new Map();
13
+ loader;
14
+ backend;
15
+ feedback;
16
+ message;
17
+ messager_log;
18
+ t;
19
+ updatehandle;
20
+ re = [];
9
21
  constructor(loader, backend, feedback, message, messager_log, t) {
10
- this.execute_manager = [];
11
- this.shellBind = new Map();
12
- this.re = [];
13
- this.NewConnection = (x) => {
14
- const p = {
15
- title: this.t('toast.connection-create-title'),
16
- type: 'success',
17
- message: `${this.t('toast.connection-create-des')}: ${x.websocket.url} \n${x.uuid}`
18
- };
19
- if (this.feedback.electron) {
20
- this.feedback.electron('makeToast', p);
21
- }
22
- if (this.feedback.socket && this.backend.Boradcasting) {
23
- this.backend.Boradcasting('makeToast', p);
24
- }
25
- this.execute_manager.forEach(y => {
26
- y.manager.NewConnection(x);
27
- });
28
- };
29
- this.DisConnection = (x) => {
30
- const p = {
31
- title: this.t('toast.connection-remove-title'),
32
- type: 'error',
33
- message: `${this.t('toast.connection-remove-des')}: ${x.websocket.url} \n${x.uuid}`
34
- };
35
- if (this.feedback.electron) {
36
- this.feedback.electron('makeToast', p);
37
- }
38
- if (this.feedback.socket && this.backend.Boradcasting) {
39
- this.backend.Boradcasting('makeToast', p);
40
- }
41
- this.execute_manager.forEach(y => {
42
- y.manager.Disconnect(x);
43
- });
44
- };
45
- this.Analysis = (d) => {
46
- this.execute_manager.forEach(x => x.manager.Analysis(JSON.parse(JSON.stringify(d))));
47
- };
48
- this.shellReply = (data, p) => {
49
- if (this.feedback.electron) {
50
- this.feedback.electron("shellReply", data);
51
- }
52
- if (this.feedback.socket) {
53
- if (p == undefined)
54
- return;
55
- if (this.shellBind.has(p.uuid)) {
56
- const k = this.shellBind.get(p.uuid);
57
- k.forEach(x => {
58
- const h = { name: "shellReply", data: data };
59
- x.send(JSON.stringify(h));
60
- });
61
- }
62
- }
63
- };
64
- this.folderReply = (data, p) => {
65
- if (this.feedback.electron) {
66
- this.feedback.electron("folderReply", data);
67
- }
68
- if (this.feedback.socket) {
69
- if (p == undefined)
70
- return;
71
- if (this.shellBind.has(p.uuid)) {
72
- const k = this.shellBind.get(p.uuid);
73
- k.forEach(x => {
74
- const h = {
75
- name: "folderReply", data: data
76
- };
77
- x.send(JSON.stringify(h));
78
- });
79
- }
80
- }
81
- };
82
- this.console_update = () => {
83
- const re = [];
84
- this.execute_manager.forEach(x => {
85
- if (x.record.running && !x.record.stop) {
86
- try {
87
- x.manager.Update();
88
- }
89
- catch (err) {
90
- x.record.stop = true;
91
- console.log(err);
92
- re.push({
93
- code: 400,
94
- name: err.name,
95
- message: err.message,
96
- stack: err.stack
97
- });
98
- }
99
- }
100
- if (x.record.stop) {
101
- if (x.manager.jobstack == 0) {
102
- x.record.running = false;
103
- }
104
- }
105
- if (x.record.command.length > 0) {
106
- const p = x.record.command.shift();
107
- if (p[0] == 'clean')
108
- this.console_clean(undefined, x.record.uuid);
109
- else if (p[0] == 'stop')
110
- this.console_stop(undefined, x.record.uuid);
111
- else if (p[0] == 'skip')
112
- this.console_skip(undefined, x.record.uuid, p[1], p[2]);
113
- else if (p[0] == 'execute')
114
- this.console_execute(undefined, x.record.uuid, p[1]);
115
- }
116
- });
117
- if (this.loader != undefined) {
118
- const logss = this.backend.memory.logs.filter(x => x.dirty && x.output);
119
- for (var x of logss) {
120
- x.dirty = false;
121
- const filename = this.loader.join(this.loader.root, "log", `${x.uuid}.json`);
122
- this.loader.write_string(filename, JSON.stringify(x, null, 4));
123
- }
124
- }
125
- return re;
126
- };
127
- this.resource_start = (socket, uuid) => {
128
- const p = this.websocket_manager.targets.find(x => x.uuid == uuid);
129
- const d = { name: 'resource_start', data: 0 };
130
- p === null || p === void 0 ? void 0 : p.websocket.send(JSON.stringify(d));
131
- };
132
- this.resource_end = (socket, uuid) => {
133
- const p = this.websocket_manager.targets.find(x => x.uuid == uuid);
134
- const d = { name: 'resource_end', data: 0 };
135
- p === null || p === void 0 ? void 0 : p.websocket.send(JSON.stringify(d));
136
- };
137
- this.shell_enter = (socket, uuid, value) => {
138
- this.websocket_manager.shell_enter(uuid, value);
139
- };
140
- this.shell_open = (socket, uuid) => {
141
- this.websocket_manager.shell_open(uuid);
142
- if (this.shellBind.has(uuid)) {
143
- this.shellBind.get(uuid).push(this.feedback.socket);
144
- }
145
- else {
146
- this.shellBind.set(uuid, [this.feedback.socket]);
147
- }
148
- };
149
- this.shell_close = (socket, uuid) => {
150
- this.websocket_manager.shell_close(uuid);
151
- if (this.shellBind.has(uuid)) {
152
- const p = this.shellBind.get(uuid);
153
- const index = p.findIndex(x => x == this.feedback.socket);
154
- if (index != -1)
155
- p.splice(index, 1);
156
- this.shellBind.set(uuid, p);
157
- }
158
- };
159
- this.shell_folder = (socket, uuid, path) => {
160
- this.websocket_manager.shell_folder(uuid, path);
161
- };
162
- this.node_list = (socket) => {
163
- var _a, _b;
164
- const p = (_a = this.websocket_manager) === null || _a === void 0 ? void 0 : _a.targets;
165
- if (socket != undefined) {
166
- const h = {
167
- name: "node_list-feedback",
168
- data: (_b = this.websocket_manager) === null || _b === void 0 ? void 0 : _b.targets
169
- };
170
- socket.send(JSON.stringify(h));
171
- }
172
- return p;
173
- };
174
- this.node_add = (socket, url, id) => {
175
- const p = this.websocket_manager.server_start(url, id);
176
- if (socket != undefined) {
177
- const h = {
178
- name: "node_add-feedback",
179
- data: p
180
- };
181
- socket.send(JSON.stringify(h));
182
- }
183
- };
184
- this.node_update = (socket) => {
185
- var _a;
186
- const p = (_a = this.websocket_manager) === null || _a === void 0 ? void 0 : _a.server_update();
187
- if (socket != undefined) {
188
- const h = {
189
- name: "node_update-feedback",
190
- data: [p]
191
- };
192
- socket.send(JSON.stringify(h));
193
- }
194
- return p;
195
- };
196
- this.node_delete = (socket, uuid, reason) => {
197
- this.websocket_manager.server_stop(uuid, reason);
198
- };
199
- this.console_list = (socket) => {
200
- if (this.feedback.electron) {
201
- return this.execute_manager.map(x => x.record).filter(x => x != undefined);
202
- }
203
- if (this.feedback.socket) {
204
- const h = {
205
- name: "console_list-feedback",
206
- data: this.execute_manager.map(x => x.record)
207
- };
208
- this.feedback.socket(JSON.stringify(h));
209
- }
210
- };
211
- this.console_record = (socket, uuid) => {
212
- var _a;
213
- const r = (_a = this.execute_manager.find(x => { var _a; return ((_a = x.record) === null || _a === void 0 ? void 0 : _a.uuid) == uuid; })) === null || _a === void 0 ? void 0 : _a.record;
214
- if (socket != undefined) {
215
- const h = {
216
- name: "console_record-feedback",
217
- data: JSON.stringify(r)
218
- };
219
- socket.send(JSON.stringify(h));
220
- }
221
- return JSON.stringify(r);
222
- };
223
- this.console_execute = (socket, uuid, type) => {
224
- const target = this.execute_manager.find(x => x.record.uuid == uuid);
225
- if (target == undefined)
226
- return;
227
- target.record.process_type = type;
228
- target.record.running = true;
229
- target.record.stop = false;
230
- target.manager.first = true;
231
- };
232
- this.console_stop = (socket, uuid) => {
233
- const target = this.execute_manager.find(x => x.record.uuid == uuid);
234
- if (target == undefined)
235
- return;
236
- target.record.stop = true;
237
- target.manager.Stop();
238
- };
239
- this.console_add = (socket, name, record, preference) => {
240
- record.projects.forEach(x => x.uuid = (0, uuid_1.v6)());
241
- const em = new interface_1.Execute_ExecuteManager.ExecuteManager(name, this.websocket_manager, this.message, JSON.parse(JSON.stringify(record)));
242
- const er = Object.assign(Object.assign({}, record), { uuid: em.uuid, name: name, running: false, stop: true, process_type: -1, useCron: false, para: undefined, command: [], project: '', task: '', project_index: -1, task_index: -1, project_state: [], task_state: [], task_detail: [] });
243
- em.libs = { libs: this.backend.memory.libs };
244
- const p = { manager: em, record: er };
245
- const uscp = new console_handle_1.Util_Server_Console_Proxy(p);
246
- const uslp = new log_handle_1.Util_Server_Log_Proxy(p, { logs: this.backend.memory.logs }, preference);
247
- em.proxy = this.CombineProxy([uscp.execute_proxy, uslp.execute_proxy]);
248
- const r = this.console.receivedPack(p, record);
249
- if (r)
250
- this.execute_manager.push(p);
251
- if (socket != undefined) {
252
- const h = {
253
- name: "console_add-feedback",
254
- data: r ? er : undefined
255
- };
256
- socket.send(JSON.stringify(h));
257
- }
258
- if (this.feedback.electron)
259
- return r ? er : undefined;
260
- };
261
- this.console_update_call = () => {
262
- const p = this.re;
263
- this.re = [];
264
- if (this.feedback.socket) {
265
- const h = {
266
- name: "console_update-feedback",
267
- data: JSON.stringify(p)
268
- };
269
- this.feedback.socket(JSON.stringify(h));
270
- }
271
- };
272
- this.console_clean = (socket, uuid) => {
273
- const target = this.execute_manager.find(x => x.record.uuid == uuid);
274
- if (target == undefined)
275
- return;
276
- target.manager.Clean();
277
- target.record.projects = [];
278
- target.record.project = "";
279
- target.record.task = "";
280
- target.record.project_index = -1;
281
- target.record.task_index = -1;
282
- target.record.project_state = [];
283
- target.record.task_state = [];
284
- target.record.task_detail = [];
285
- target.manager.Release();
286
- const index = this.execute_manager.findIndex(x => x.record.uuid == uuid);
287
- this.execute_manager.splice(index, 1);
288
- };
289
- this.console_skip = (socket, uuid, forward, type, state = interface_1.ExecuteState.FINISH) => {
290
- const target = this.execute_manager.find(x => x.record.uuid == uuid);
291
- if (target == undefined)
292
- return;
293
- if (type == 0) {
294
- target.record.project_state[target.record.project_index].state = forward ? (state != undefined ? state : interface_1.ExecuteState.FINISH) : interface_1.ExecuteState.NONE;
295
- target.record.project_index += forward ? 1 : -1;
296
- if (target.record.project_index == target.record.projects.length) {
297
- target.record.project_index = -1;
298
- this.console_clean(socket, uuid);
299
- }
300
- else {
301
- if (target.record.project_index < 0) {
302
- target.record.project_index = 0;
303
- }
304
- target.record.task_state = target.record.projects[target.record.project_index].task.map(x => {
305
- return {
306
- uuid: x.uuid,
307
- state: interface_1.ExecuteState.NONE
308
- };
309
- });
310
- target.record.task_detail = [];
311
- const p = target.record.projects[target.record.project_index];
312
- const t = p.task[target.record.task_index];
313
- const count = target.manager.get_task_state_count(t);
314
- for (let i = 0; i < count; i++) {
315
- target.record.task_detail.push({
316
- index: i,
317
- node: "",
318
- message: [],
319
- state: interface_1.ExecuteState.NONE
320
- });
321
- }
322
- const index = forward ? target.manager.SkipProject() : target.manager.PreviousProject();
323
- console.log("%s project, index: %d, next count: %d", forward ? "Skip" : "Previous", index, count);
324
- }
325
- }
326
- else if (type == 1) {
327
- const begining = target.record.task_state[0].state == interface_1.ExecuteState.NONE;
328
- if (!begining && forward)
329
- target.record.task_state[target.record.task_index].state = state != undefined ? state : interface_1.ExecuteState.FINISH;
330
- if (!forward)
331
- target.record.task_state[target.record.task_index].state = interface_1.ExecuteState.NONE;
332
- target.record.task_index += forward ? 1 : -1;
333
- if (target.record.task_index == target.record.task_state.length) {
334
- this.console_skip(socket, uuid, true, 0);
335
- }
336
- else {
337
- if (!begining && forward)
338
- target.record.task_state[target.record.task_index].state = state != undefined ? state : interface_1.ExecuteState.FINISH;
339
- else if (!forward)
340
- target.record.task_state[target.record.task_index].state = interface_1.ExecuteState.RUNNING;
341
- target.record.task_detail = [];
342
- const p = target.record.projects[target.record.project_index];
343
- const t = p.task[target.record.task_index];
344
- const count = target.manager.get_task_state_count(t);
345
- for (let i = 0; i < count; i++) {
346
- target.record.task_detail.push({
347
- index: i,
348
- node: "",
349
- message: [],
350
- state: interface_1.ExecuteState.NONE
351
- });
352
- }
353
- const index = forward ? target.manager.SkipTask() : target.manager.PreviousTask();
354
- console.log("Skip task, index: %d, next count: %d", index, count);
355
- }
356
- }
357
- };
358
- this.console_skip2 = (socket, uuid, v) => {
359
- const target = this.execute_manager.find(x => x.record.uuid == uuid);
360
- if (target == undefined)
361
- return;
362
- const index = target.manager.SkipSubTask(v);
363
- if (index < 0) {
364
- console.error("Skip step failed: ", index);
365
- return;
366
- }
367
- for (let i = 0; i < index; i++) {
368
- target.record.task_detail[i].state = interface_1.ExecuteState.FINISH;
369
- }
370
- console.log("Skip task", index);
371
- };
372
- this.CombineProxy = (eps) => {
373
- const p = {
374
- executeProjectStart: (data) => { eps.forEach(x => x.executeProjectStart(JSON.parse(JSON.stringify(data)))); },
375
- executeProjectFinish: (data) => { eps.forEach(x => x.executeProjectFinish(JSON.parse(JSON.stringify(data)))); },
376
- executeTaskStart: (data) => { eps.forEach(x => x.executeTaskStart(JSON.parse(JSON.stringify(data)))); },
377
- executeTaskFinish: (data) => { eps.forEach(x => x.executeTaskFinish(JSON.parse(JSON.stringify(data)))); },
378
- executeSubtaskStart: (data) => { eps.forEach(x => x.executeSubtaskStart(JSON.parse(JSON.stringify(data)))); },
379
- executeSubtaskUpdate: (data) => { eps.forEach(x => x.executeSubtaskUpdate(JSON.parse(JSON.stringify(data)))); },
380
- executeSubtaskFinish: (data) => { eps.forEach(x => x.executeSubtaskFinish(JSON.parse(JSON.stringify(data)))); },
381
- executeJobStart: (data) => { eps.forEach(x => x.executeJobStart(JSON.parse(JSON.stringify(data)))); },
382
- executeJobFinish: (data) => { eps.forEach(x => x.executeJobFinish(JSON.parse(JSON.stringify(data)))); },
383
- feedbackMessage: (data) => { eps.forEach(x => x.feedbackMessage(JSON.parse(JSON.stringify(data)))); },
384
- updateDatabase: (data) => { eps.forEach(x => x.updateDatabase(JSON.parse(JSON.stringify(data)))); },
385
- };
386
- return p;
387
- };
388
22
  this.loader = loader;
389
23
  this.backend = backend;
390
24
  this.feedback = feedback;
@@ -424,5 +58,394 @@ class ServerDetail {
424
58
  console_update: this.console_update,
425
59
  };
426
60
  }
61
+ NewConnection = (x) => {
62
+ const p = {
63
+ title: this.t('toast.connection-create-title'),
64
+ type: 'success',
65
+ message: `${this.t('toast.connection-create-des')}: ${x.websocket.url} \n${x.uuid}`
66
+ };
67
+ if (this.feedback.electron) {
68
+ this.feedback.electron('makeToast', p);
69
+ }
70
+ if (this.feedback.socket && this.backend.Boradcasting) {
71
+ this.backend.Boradcasting('makeToast', p);
72
+ }
73
+ this.execute_manager.forEach(y => {
74
+ y.manager.NewConnection(x);
75
+ });
76
+ };
77
+ DisConnection = (x) => {
78
+ const p = {
79
+ title: this.t('toast.connection-remove-title'),
80
+ type: 'error',
81
+ message: `${this.t('toast.connection-remove-des')}: ${x.websocket.url} \n${x.uuid}`
82
+ };
83
+ if (this.feedback.electron) {
84
+ this.feedback.electron('makeToast', p);
85
+ }
86
+ if (this.feedback.socket && this.backend.Boradcasting) {
87
+ this.backend.Boradcasting('makeToast', p);
88
+ }
89
+ this.execute_manager.forEach(y => {
90
+ y.manager.Disconnect(x);
91
+ });
92
+ };
93
+ Analysis = (d) => {
94
+ this.execute_manager.forEach(x => x.manager.Analysis(JSON.parse(JSON.stringify(d))));
95
+ };
96
+ shellReply = (data, p) => {
97
+ if (this.feedback.electron) {
98
+ this.feedback.electron("shellReply", data);
99
+ }
100
+ if (this.feedback.socket) {
101
+ if (p == undefined)
102
+ return;
103
+ if (this.shellBind.has(p.uuid)) {
104
+ const k = this.shellBind.get(p.uuid);
105
+ k.forEach(x => {
106
+ const h = { name: "shellReply", data: data };
107
+ x.send(JSON.stringify(h));
108
+ });
109
+ }
110
+ }
111
+ };
112
+ folderReply = (data, p) => {
113
+ if (this.feedback.electron) {
114
+ this.feedback.electron("folderReply", data);
115
+ }
116
+ if (this.feedback.socket) {
117
+ if (p == undefined)
118
+ return;
119
+ if (this.shellBind.has(p.uuid)) {
120
+ const k = this.shellBind.get(p.uuid);
121
+ k.forEach(x => {
122
+ const h = {
123
+ name: "folderReply", data: data
124
+ };
125
+ x.send(JSON.stringify(h));
126
+ });
127
+ }
128
+ }
129
+ };
130
+ console_update = () => {
131
+ const re = [];
132
+ this.execute_manager.forEach(x => {
133
+ if (x.record.running && !x.record.stop) {
134
+ try {
135
+ x.manager.Update();
136
+ }
137
+ catch (err) {
138
+ x.record.stop = true;
139
+ console.log(err);
140
+ re.push({
141
+ code: 400,
142
+ name: err.name,
143
+ message: err.message,
144
+ stack: err.stack
145
+ });
146
+ }
147
+ }
148
+ if (x.record.stop) {
149
+ if (x.manager.jobstack == 0) {
150
+ x.record.running = false;
151
+ }
152
+ }
153
+ if (x.record.command.length > 0) {
154
+ const p = x.record.command.shift();
155
+ if (p[0] == 'clean')
156
+ this.console_clean(undefined, x.record.uuid);
157
+ else if (p[0] == 'stop')
158
+ this.console_stop(undefined, x.record.uuid);
159
+ else if (p[0] == 'skip')
160
+ this.console_skip(undefined, x.record.uuid, p[1], p[2]);
161
+ else if (p[0] == 'execute')
162
+ this.console_execute(undefined, x.record.uuid, p[1]);
163
+ }
164
+ });
165
+ if (this.loader != undefined) {
166
+ const logss = this.backend.memory.logs.filter(x => x.dirty && x.output);
167
+ for (var x of logss) {
168
+ x.dirty = false;
169
+ const filename = this.loader.join(this.loader.root, "log", `${x.uuid}.json`);
170
+ this.loader.write_string(filename, JSON.stringify(x, null, 4));
171
+ }
172
+ }
173
+ return re;
174
+ };
175
+ resource_start = (socket, uuid) => {
176
+ const p = this.websocket_manager.targets.find(x => x.uuid == uuid);
177
+ const d = { name: 'resource_start', data: 0 };
178
+ p?.websocket.send(JSON.stringify(d));
179
+ };
180
+ resource_end = (socket, uuid) => {
181
+ const p = this.websocket_manager.targets.find(x => x.uuid == uuid);
182
+ const d = { name: 'resource_end', data: 0 };
183
+ p?.websocket.send(JSON.stringify(d));
184
+ };
185
+ shell_enter = (socket, uuid, value) => {
186
+ this.websocket_manager.shell_enter(uuid, value);
187
+ };
188
+ shell_open = (socket, uuid) => {
189
+ this.websocket_manager.shell_open(uuid);
190
+ if (this.shellBind.has(uuid)) {
191
+ this.shellBind.get(uuid).push(this.feedback.socket);
192
+ }
193
+ else {
194
+ this.shellBind.set(uuid, [this.feedback.socket]);
195
+ }
196
+ };
197
+ shell_close = (socket, uuid) => {
198
+ this.websocket_manager.shell_close(uuid);
199
+ if (this.shellBind.has(uuid)) {
200
+ const p = this.shellBind.get(uuid);
201
+ const index = p.findIndex(x => x == this.feedback.socket);
202
+ if (index != -1)
203
+ p.splice(index, 1);
204
+ this.shellBind.set(uuid, p);
205
+ }
206
+ };
207
+ shell_folder = (socket, uuid, path) => {
208
+ this.websocket_manager.shell_folder(uuid, path);
209
+ };
210
+ node_list = (socket) => {
211
+ const p = this.websocket_manager?.targets;
212
+ if (socket != undefined) {
213
+ const h = {
214
+ name: "node_list-feedback",
215
+ data: this.websocket_manager?.targets
216
+ };
217
+ socket.send(JSON.stringify(h));
218
+ }
219
+ return p;
220
+ };
221
+ node_add = (socket, url, id) => {
222
+ const p = this.websocket_manager.server_start(url, id);
223
+ if (socket != undefined) {
224
+ const h = {
225
+ name: "node_add-feedback",
226
+ data: p
227
+ };
228
+ socket.send(JSON.stringify(h));
229
+ }
230
+ };
231
+ node_update = (socket) => {
232
+ const p = this.websocket_manager?.server_update();
233
+ if (socket != undefined) {
234
+ const h = {
235
+ name: "node_update-feedback",
236
+ data: [p]
237
+ };
238
+ socket.send(JSON.stringify(h));
239
+ }
240
+ return p;
241
+ };
242
+ node_delete = (socket, uuid, reason) => {
243
+ this.websocket_manager.server_stop(uuid, reason);
244
+ };
245
+ console_list = (socket) => {
246
+ if (this.feedback.electron) {
247
+ return this.execute_manager.map(x => x.record).filter(x => x != undefined);
248
+ }
249
+ if (this.feedback.socket) {
250
+ const h = {
251
+ name: "console_list-feedback",
252
+ data: this.execute_manager.map(x => x.record)
253
+ };
254
+ this.feedback.socket(JSON.stringify(h));
255
+ }
256
+ };
257
+ console_record = (socket, uuid) => {
258
+ const r = this.execute_manager.find(x => x.record?.uuid == uuid)?.record;
259
+ if (socket != undefined) {
260
+ const h = {
261
+ name: "console_record-feedback",
262
+ data: JSON.stringify(r)
263
+ };
264
+ socket.send(JSON.stringify(h));
265
+ }
266
+ return JSON.stringify(r);
267
+ };
268
+ console_execute = (socket, uuid, type) => {
269
+ const target = this.execute_manager.find(x => x.record.uuid == uuid);
270
+ if (target == undefined)
271
+ return;
272
+ target.record.process_type = type;
273
+ target.record.running = true;
274
+ target.record.stop = false;
275
+ target.manager.first = true;
276
+ };
277
+ console_stop = (socket, uuid) => {
278
+ const target = this.execute_manager.find(x => x.record.uuid == uuid);
279
+ if (target == undefined)
280
+ return;
281
+ target.record.stop = true;
282
+ target.manager.Stop();
283
+ };
284
+ console_add = (socket, name, record, preference) => {
285
+ record.projects.forEach(x => x.uuid = (0, uuid_1.v6)());
286
+ const em = new interface_1.Execute_ExecuteManager.ExecuteManager(name, this.websocket_manager, this.message, JSON.parse(JSON.stringify(record)));
287
+ const er = {
288
+ ...record,
289
+ uuid: em.uuid,
290
+ name: name,
291
+ running: false,
292
+ stop: true,
293
+ process_type: -1,
294
+ useCron: false,
295
+ para: undefined,
296
+ command: [],
297
+ project: '',
298
+ task: '',
299
+ project_index: -1,
300
+ task_index: -1,
301
+ project_state: [],
302
+ task_state: [],
303
+ task_detail: [],
304
+ };
305
+ em.libs = { libs: this.backend.memory.libs };
306
+ const p = { manager: em, record: er };
307
+ const uscp = new console_handle_1.Util_Server_Console_Proxy(p);
308
+ const uslp = new log_handle_1.Util_Server_Log_Proxy(p, { logs: this.backend.memory.logs }, preference);
309
+ em.proxy = this.CombineProxy([uscp.execute_proxy, uslp.execute_proxy]);
310
+ const r = this.console.receivedPack(p, record);
311
+ if (r)
312
+ this.execute_manager.push(p);
313
+ if (socket != undefined) {
314
+ const h = {
315
+ name: "console_add-feedback",
316
+ data: r ? er : undefined
317
+ };
318
+ socket.send(JSON.stringify(h));
319
+ }
320
+ if (this.feedback.electron)
321
+ return r ? er : undefined;
322
+ };
323
+ console_update_call = () => {
324
+ const p = this.re;
325
+ this.re = [];
326
+ if (this.feedback.socket) {
327
+ const h = {
328
+ name: "console_update-feedback",
329
+ data: JSON.stringify(p)
330
+ };
331
+ this.feedback.socket(JSON.stringify(h));
332
+ }
333
+ };
334
+ console_clean = (socket, uuid) => {
335
+ const target = this.execute_manager.find(x => x.record.uuid == uuid);
336
+ if (target == undefined)
337
+ return;
338
+ target.manager.Clean();
339
+ target.record.projects = [];
340
+ target.record.project = "";
341
+ target.record.task = "";
342
+ target.record.project_index = -1;
343
+ target.record.task_index = -1;
344
+ target.record.project_state = [];
345
+ target.record.task_state = [];
346
+ target.record.task_detail = [];
347
+ target.manager.Release();
348
+ const index = this.execute_manager.findIndex(x => x.record.uuid == uuid);
349
+ this.execute_manager.splice(index, 1);
350
+ };
351
+ console_skip = (socket, uuid, forward, type, state = interface_1.ExecuteState.FINISH) => {
352
+ const target = this.execute_manager.find(x => x.record.uuid == uuid);
353
+ if (target == undefined)
354
+ return;
355
+ if (type == 0) {
356
+ target.record.project_state[target.record.project_index].state = forward ? (state != undefined ? state : interface_1.ExecuteState.FINISH) : interface_1.ExecuteState.NONE;
357
+ target.record.project_index += forward ? 1 : -1;
358
+ if (target.record.project_index == target.record.projects.length) {
359
+ target.record.project_index = -1;
360
+ this.console_clean(socket, uuid);
361
+ }
362
+ else {
363
+ if (target.record.project_index < 0) {
364
+ target.record.project_index = 0;
365
+ }
366
+ target.record.task_state = target.record.projects[target.record.project_index].task.map(x => {
367
+ return {
368
+ uuid: x.uuid,
369
+ state: interface_1.ExecuteState.NONE
370
+ };
371
+ });
372
+ target.record.task_detail = [];
373
+ const p = target.record.projects[target.record.project_index];
374
+ const t = p.task[target.record.task_index];
375
+ const count = target.manager.get_task_state_count(t);
376
+ for (let i = 0; i < count; i++) {
377
+ target.record.task_detail.push({
378
+ index: i,
379
+ node: "",
380
+ message: [],
381
+ state: interface_1.ExecuteState.NONE
382
+ });
383
+ }
384
+ const index = forward ? target.manager.SkipProject() : target.manager.PreviousProject();
385
+ console.log("%s project, index: %d, next count: %d", forward ? "Skip" : "Previous", index, count);
386
+ }
387
+ }
388
+ else if (type == 1) {
389
+ const begining = target.record.task_state[0].state == interface_1.ExecuteState.NONE;
390
+ if (!begining && forward)
391
+ target.record.task_state[target.record.task_index].state = state != undefined ? state : interface_1.ExecuteState.FINISH;
392
+ if (!forward)
393
+ target.record.task_state[target.record.task_index].state = interface_1.ExecuteState.NONE;
394
+ target.record.task_index += forward ? 1 : -1;
395
+ if (target.record.task_index == target.record.task_state.length) {
396
+ this.console_skip(socket, uuid, true, 0);
397
+ }
398
+ else {
399
+ if (!begining && forward)
400
+ target.record.task_state[target.record.task_index].state = state != undefined ? state : interface_1.ExecuteState.FINISH;
401
+ else if (!forward)
402
+ target.record.task_state[target.record.task_index].state = interface_1.ExecuteState.RUNNING;
403
+ target.record.task_detail = [];
404
+ const p = target.record.projects[target.record.project_index];
405
+ const t = p.task[target.record.task_index];
406
+ const count = target.manager.get_task_state_count(t);
407
+ for (let i = 0; i < count; i++) {
408
+ target.record.task_detail.push({
409
+ index: i,
410
+ node: "",
411
+ message: [],
412
+ state: interface_1.ExecuteState.NONE
413
+ });
414
+ }
415
+ const index = forward ? target.manager.SkipTask() : target.manager.PreviousTask();
416
+ console.log("Skip task, index: %d, next count: %d", index, count);
417
+ }
418
+ }
419
+ };
420
+ console_skip2 = (socket, uuid, v) => {
421
+ const target = this.execute_manager.find(x => x.record.uuid == uuid);
422
+ if (target == undefined)
423
+ return;
424
+ const index = target.manager.SkipSubTask(v);
425
+ if (index < 0) {
426
+ console.error("Skip step failed: ", index);
427
+ return;
428
+ }
429
+ for (let i = 0; i < index; i++) {
430
+ target.record.task_detail[i].state = interface_1.ExecuteState.FINISH;
431
+ }
432
+ console.log("Skip task", index);
433
+ };
434
+ CombineProxy = (eps) => {
435
+ const p = {
436
+ executeProjectStart: (data) => { eps.forEach(x => x.executeProjectStart(JSON.parse(JSON.stringify(data)))); },
437
+ executeProjectFinish: (data) => { eps.forEach(x => x.executeProjectFinish(JSON.parse(JSON.stringify(data)))); },
438
+ executeTaskStart: (data) => { eps.forEach(x => x.executeTaskStart(JSON.parse(JSON.stringify(data)))); },
439
+ executeTaskFinish: (data) => { eps.forEach(x => x.executeTaskFinish(JSON.parse(JSON.stringify(data)))); },
440
+ executeSubtaskStart: (data) => { eps.forEach(x => x.executeSubtaskStart(JSON.parse(JSON.stringify(data)))); },
441
+ executeSubtaskUpdate: (data) => { eps.forEach(x => x.executeSubtaskUpdate(JSON.parse(JSON.stringify(data)))); },
442
+ executeSubtaskFinish: (data) => { eps.forEach(x => x.executeSubtaskFinish(JSON.parse(JSON.stringify(data)))); },
443
+ executeJobStart: (data) => { eps.forEach(x => x.executeJobStart(JSON.parse(JSON.stringify(data)))); },
444
+ executeJobFinish: (data) => { eps.forEach(x => x.executeJobFinish(JSON.parse(JSON.stringify(data)))); },
445
+ feedbackMessage: (data) => { eps.forEach(x => x.feedbackMessage(JSON.parse(JSON.stringify(data)))); },
446
+ updateDatabase: (data) => { eps.forEach(x => x.updateDatabase(JSON.parse(JSON.stringify(data)))); },
447
+ };
448
+ return p;
449
+ };
427
450
  }
428
451
  exports.ServerDetail = ServerDetail;