@taon-dev/cloud 21.0.213 → 21.0.214

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 (166) hide show
  1. package/VERIFIED-BUILD-DATA.jsonc +3 -3
  2. package/browser/fesm2022/cloud-browser.mjs +1 -1
  3. package/browser/fesm2022/cloud-browser.mjs.map +1 -1
  4. package/browser/package.json +1 -1
  5. package/browser/types/cloud-browser.d.ts +1 -1
  6. package/browser-prod/fesm2022/cloud-browser-prod.mjs +1 -1
  7. package/browser-prod/fesm2022/cloud-browser-prod.mjs.map +1 -1
  8. package/browser-prod/package.json +1 -1
  9. package/browser-prod/types/cloud-browser-prod.d.ts +1 -1
  10. package/lib/build-info._auto-generated_.d.ts +1 -1
  11. package/lib/build-info._auto-generated_.js +1 -1
  12. package/lib/package.json +1 -1
  13. package/lib-esm/app.d.ts +3 -0
  14. package/lib-esm/app.electron.d.ts +1 -0
  15. package/lib-esm/app.electron.js +2 -0
  16. package/lib-esm/app.electron.js.map +1 -0
  17. package/lib-esm/app.hosts.d.ts +95 -0
  18. package/lib-esm/app.hosts.js +157 -0
  19. package/lib-esm/app.hosts.js.map +1 -0
  20. package/lib-esm/app.js +460 -0
  21. package/lib-esm/app.js.map +1 -0
  22. package/lib-esm/app.vscode.d.ts +9 -0
  23. package/lib-esm/app.vscode.js +37 -0
  24. package/lib-esm/app.vscode.js.map +1 -0
  25. package/lib-esm/cli.d.ts +1 -0
  26. package/lib-esm/cli.js +4 -0
  27. package/lib-esm/cli.js.map +1 -0
  28. package/lib-esm/index.d.ts +1 -0
  29. package/lib-esm/index.js +2 -0
  30. package/lib-esm/index.js.map +1 -0
  31. package/lib-esm/lib/build-info._auto-generated_.d.ts +24 -0
  32. package/lib-esm/lib/build-info._auto-generated_.js +27 -0
  33. package/lib-esm/lib/build-info._auto-generated_.js.map +1 -0
  34. package/lib-esm/lib/constants.d.ts +1 -0
  35. package/lib-esm/lib/constants.js +3 -0
  36. package/lib-esm/lib/constants.js.map +1 -0
  37. package/lib-esm/lib/env/env.angular-node-app.d.ts +67 -0
  38. package/lib-esm/lib/env/env.angular-node-app.js +137 -0
  39. package/lib-esm/lib/env/env.angular-node-app.js.map +1 -0
  40. package/lib-esm/lib/env/env.docs-webapp.d.ts +67 -0
  41. package/lib-esm/lib/env/env.docs-webapp.js +137 -0
  42. package/lib-esm/lib/env/env.docs-webapp.js.map +1 -0
  43. package/lib-esm/lib/env/env.electron-app.d.ts +67 -0
  44. package/lib-esm/lib/env/env.electron-app.js +137 -0
  45. package/lib-esm/lib/env/env.electron-app.js.map +1 -0
  46. package/lib-esm/lib/env/env.mobile-app.d.ts +67 -0
  47. package/lib-esm/lib/env/env.mobile-app.js +137 -0
  48. package/lib-esm/lib/env/env.mobile-app.js.map +1 -0
  49. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.d.ts +67 -0
  50. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js +137 -0
  51. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js.map +1 -0
  52. package/lib-esm/lib/env/env.vscode-plugin.d.ts +67 -0
  53. package/lib-esm/lib/env/env.vscode-plugin.js +137 -0
  54. package/lib-esm/lib/env/env.vscode-plugin.js.map +1 -0
  55. package/lib-esm/lib/env/index.d.ts +6 -0
  56. package/lib-esm/lib/env/index.js +7 -0
  57. package/lib-esm/lib/env/index.js.map +1 -0
  58. package/lib-esm/lib/index._auto-generated_.d.ts +25 -0
  59. package/lib-esm/lib/index._auto-generated_.js +33 -0
  60. package/lib-esm/lib/index._auto-generated_.js.map +1 -0
  61. package/lib-esm/lib/index.d.ts +4 -0
  62. package/lib-esm/lib/index.js +5 -0
  63. package/lib-esm/lib/index.js.map +1 -0
  64. package/lib-esm/lib/instances/index.d.ts +4 -0
  65. package/lib-esm/lib/instances/index.js +6 -0
  66. package/lib-esm/lib/instances/index.js.map +1 -0
  67. package/lib-esm/lib/instances/instances.context.d.ts +19 -0
  68. package/lib-esm/lib/instances/instances.context.js +64 -0
  69. package/lib-esm/lib/instances/instances.context.js.map +1 -0
  70. package/lib-esm/lib/instances/instances.controller.d.ts +10 -0
  71. package/lib-esm/lib/instances/instances.controller.js +61 -0
  72. package/lib-esm/lib/instances/instances.controller.js.map +1 -0
  73. package/lib-esm/lib/instances/instances.d.ts +9 -0
  74. package/lib-esm/lib/instances/instances.defaults-values.d.ts +2 -0
  75. package/lib-esm/lib/instances/instances.defaults-values.js +5 -0
  76. package/lib-esm/lib/instances/instances.defaults-values.js.map +1 -0
  77. package/lib-esm/lib/instances/instances.js +40 -0
  78. package/lib-esm/lib/instances/instances.js.map +1 -0
  79. package/lib-esm/lib/instances/instances.repository.d.ts +6 -0
  80. package/lib-esm/lib/instances/instances.repository.js +17 -0
  81. package/lib-esm/lib/instances/instances.repository.js.map +1 -0
  82. package/lib-esm/lib/instances/instances.terminal-ui.d.ts +11 -0
  83. package/lib-esm/lib/instances/instances.terminal-ui.js +154 -0
  84. package/lib-esm/lib/instances/instances.terminal-ui.js.map +1 -0
  85. package/lib-esm/lib/instances/instances.worker.d.ts +18 -0
  86. package/lib-esm/lib/instances/instances.worker.js +42 -0
  87. package/lib-esm/lib/instances/instances.worker.js.map +1 -0
  88. package/lib-esm/lib/models.d.ts +8 -0
  89. package/lib-esm/lib/models.js +10 -0
  90. package/lib-esm/lib/models.js.map +1 -0
  91. package/lib-esm/lib/my-organization-proj.d.ts +1 -0
  92. package/lib-esm/lib/my-organization-proj.js +3 -0
  93. package/lib-esm/lib/my-organization-proj.js.map +1 -0
  94. package/lib-esm/lib/processes/index.d.ts +4 -0
  95. package/lib-esm/lib/processes/index.js +6 -0
  96. package/lib-esm/lib/processes/index.js.map +1 -0
  97. package/lib-esm/lib/processes/processes.context.d.ts +19 -0
  98. package/lib-esm/lib/processes/processes.context.js +21 -0
  99. package/lib-esm/lib/processes/processes.context.js.map +1 -0
  100. package/lib-esm/lib/processes/processes.controller.d.ts +13 -0
  101. package/lib-esm/lib/processes/processes.controller.js +168 -0
  102. package/lib-esm/lib/processes/processes.controller.js.map +1 -0
  103. package/lib-esm/lib/processes/processes.d.ts +24 -0
  104. package/lib-esm/lib/processes/processes.defaults-values.d.ts +2 -0
  105. package/lib-esm/lib/processes/processes.defaults-values.js +6 -0
  106. package/lib-esm/lib/processes/processes.defaults-values.js.map +1 -0
  107. package/lib-esm/lib/processes/processes.js +159 -0
  108. package/lib-esm/lib/processes/processes.js.map +1 -0
  109. package/lib-esm/lib/processes/processes.models.d.ts +33 -0
  110. package/lib-esm/lib/processes/processes.models.js +43 -0
  111. package/lib-esm/lib/processes/processes.models.js.map +1 -0
  112. package/lib-esm/lib/processes/processes.repository.d.ts +18 -0
  113. package/lib-esm/lib/processes/processes.repository.js +194 -0
  114. package/lib-esm/lib/processes/processes.repository.js.map +1 -0
  115. package/lib-esm/lib/processes/processes.terminal-ui.d.ts +19 -0
  116. package/lib-esm/lib/processes/processes.terminal-ui.js +378 -0
  117. package/lib-esm/lib/processes/processes.terminal-ui.js.map +1 -0
  118. package/lib-esm/lib/processes/processes.utils.d.ts +6 -0
  119. package/lib-esm/lib/processes/processes.utils.js +83 -0
  120. package/lib-esm/lib/processes/processes.utils.js.map +1 -0
  121. package/lib-esm/lib/processes/processes.worker.controller.d.ts +3 -0
  122. package/lib-esm/lib/processes/processes.worker.controller.js +13 -0
  123. package/lib-esm/lib/processes/processes.worker.controller.js.map +1 -0
  124. package/lib-esm/lib/processes/processes.worker.d.ts +18 -0
  125. package/lib-esm/lib/processes/processes.worker.js +52 -0
  126. package/lib-esm/lib/processes/processes.worker.js.map +1 -0
  127. package/lib-esm/lib/start-cli.d.ts +7 -0
  128. package/lib-esm/lib/start-cli.js +43 -0
  129. package/lib-esm/lib/start-cli.js.map +1 -0
  130. package/lib-esm/lib/traefik/traefik.models.d.ts +20 -0
  131. package/lib-esm/lib/traefik/traefik.models.js +2 -0
  132. package/lib-esm/lib/traefik/traefik.models.js.map +1 -0
  133. package/lib-esm/lib/traefik/traefik.provider.d.ts +42 -0
  134. package/lib-esm/lib/traefik/traefik.provider.js +575 -0
  135. package/lib-esm/lib/traefik/traefik.provider.js.map +1 -0
  136. package/lib-esm/lib/traefik/treafik-service.provider.d.ts +41 -0
  137. package/lib-esm/lib/traefik/treafik-service.provider.js +211 -0
  138. package/lib-esm/lib/traefik/treafik-service.provider.js.map +1 -0
  139. package/lib-prod/build-info._auto-generated_.d.ts +1 -1
  140. package/lib-prod/build-info._auto-generated_.js +1 -1
  141. package/lib-prod/instances/instances.context.js.map +1 -1
  142. package/lib-prod/instances/instances.controller.js.map +1 -1
  143. package/lib-prod/instances/instances.js.map +1 -1
  144. package/lib-prod/instances/instances.repository.js.map +1 -1
  145. package/lib-prod/instances/instances.terminal-ui.js.map +1 -1
  146. package/lib-prod/package.json +1 -1
  147. package/lib-prod/processes/processes.context.js.map +1 -1
  148. package/lib-prod/processes/processes.controller.js.map +1 -1
  149. package/lib-prod/processes/processes.js.map +1 -1
  150. package/lib-prod/processes/processes.repository.js.map +1 -1
  151. package/lib-prod/processes/processes.terminal-ui.js.map +1 -1
  152. package/lib-prod/processes/processes.utils.js.map +1 -1
  153. package/lib-prod/processes/processes.worker.controller.js.map +1 -1
  154. package/lib-prod/processes/processes.worker.js.map +1 -1
  155. package/lib-prod/traefik/traefik.provider.js.map +1 -1
  156. package/lib-prod/traefik/treafik-service.provider.js.map +1 -1
  157. package/package.json +1 -1
  158. package/src.js +4 -20
  159. package/websql/fesm2022/cloud-websql.mjs +1 -1
  160. package/websql/fesm2022/cloud-websql.mjs.map +1 -1
  161. package/websql/package.json +1 -1
  162. package/websql/types/cloud-websql.d.ts +1 -1
  163. package/websql-prod/fesm2022/cloud-websql-prod.mjs +1 -1
  164. package/websql-prod/fesm2022/cloud-websql-prod.mjs.map +1 -1
  165. package/websql-prod/package.json +1 -1
  166. package/websql-prod/types/cloud-websql-prod.d.ts +1 -1
@@ -0,0 +1,194 @@
1
+ import { TaonRepository } from 'taon/lib';
2
+ import { child_process, dateformat, UtilsProcess, } from 'tnp-core/lib';
3
+ import { UtilsProcessLogger } from 'tnp-core/lib';
4
+ import { Processes } from './processes';
5
+ import { TaonBaseRepository } from 'taon/lib';
6
+ import { ProcessesState, ProcessesStatesAllowedStart, ProcessesStatesAllowedStop, } from './processes.models';
7
+ //#endregion
8
+ let ProcessesRepository = class ProcessesRepository extends TaonBaseRepository {
9
+ //#region fields and getters
10
+ entityClassResolveFn = () => Processes;
11
+ processFileLoggers = {};
12
+ //#endregion
13
+ //#region get by process id
14
+ async getByProcessID(processId) {
15
+ //#region @websqlFunc
16
+ const proc = await this.findOne({
17
+ where: {
18
+ id: processId?.toString(),
19
+ },
20
+ });
21
+ return proc;
22
+ //#endregion
23
+ }
24
+ //#endregion
25
+ //#region get by uniquer params
26
+ async getByUniqueParams({ cwd, command, }) {
27
+ //#region @websqlFunc
28
+ const proc = await this.findOne({
29
+ where: {
30
+ cwd,
31
+ command,
32
+ },
33
+ });
34
+ return proc;
35
+ //#endregion
36
+ }
37
+ //#endregion
38
+ //#region start process
39
+ async triggerStart(processId, options) {
40
+ //#region @backendFunc
41
+ options = options || {};
42
+ await this.getAndUpdateProcess(processId, async (proc) => {
43
+ if (!ProcessesStatesAllowedStart.includes(proc.state)) {
44
+ throw new Error(`Process not allowed to start with state: ${proc.state}`);
45
+ }
46
+ //#region prepare process for start
47
+ proc.state = ProcessesState.STARTING;
48
+ proc.outputLast40lines =
49
+ `${proc.outputLast40lines}` +
50
+ `\n----- new session ${dateformat(new Date(), 'dd-mm-yyyy_HH:MM:ss')} -----\n`;
51
+ const [cmd, ...commandArgs] = proc.command.split(' '); // safer: parse properly
52
+ const realProcess = child_process.spawn(cmd, commandArgs, {
53
+ env: { ...process.env, FORCE_COLOR: '1' },
54
+ stdio: ['ignore', 'pipe', 'pipe'], // don't inherit console
55
+ shell: true, // use shell if command has operators (&&, |, etc.)
56
+ });
57
+ proc.pid = realProcess.pid;
58
+ proc.ppid = process.pid;
59
+ //#endregion
60
+ //#region prepare logging
61
+ const processFileLogger = new UtilsProcessLogger.ProcessFileLogger({
62
+ name: options.processName || `unknow-proc-name__id-${proc.id}`,
63
+ id: proc.id,
64
+ }, {
65
+ specialEvent: {
66
+ stderr: (proc.conditionProcessActiveStderr || []).map(stringInStream => ({
67
+ stringInStream,
68
+ callback: async () => {
69
+ await this.getAndUpdateProcess(proc.id, proc1 => {
70
+ proc1.state = ProcessesState.ACTIVE;
71
+ });
72
+ },
73
+ })),
74
+ stdout: (proc.conditionProcessActiveStdout || []).map(stringInStream => ({
75
+ stringInStream,
76
+ callback: async () => {
77
+ await this.getAndUpdateProcess(proc.id, proc1 => {
78
+ proc1.state = ProcessesState.ACTIVE;
79
+ });
80
+ },
81
+ })),
82
+ },
83
+ });
84
+ this.processFileLoggers[proc.id] = processFileLogger;
85
+ processFileLogger.startLogging(realProcess, {
86
+ cacheLinesMax: 40,
87
+ update: async ({ outputLines, stderrLines, stdoutLines }) => {
88
+ await this.getAndUpdateProcess(proc.id, proc1 => {
89
+ proc1.outputLast40lines = outputLines;
90
+ });
91
+ },
92
+ });
93
+ proc.fileLogAbsPath = processFileLogger.processLogAbsFilePath;
94
+ //#endregion
95
+ //#region handle process exit
96
+ /**
97
+ * 15 - soft kill
98
+ * 9 - hard kill
99
+ * 1 - from code exit
100
+ * 0 - process done
101
+ */
102
+ realProcess.on('exit', async (code, data) => {
103
+ await this.getAndUpdateProcess(proc.id, proc1 => {
104
+ if (proc1) {
105
+ if (proc1.state === ProcessesState.KILLING) {
106
+ proc1.state = ProcessesState.KILLED;
107
+ }
108
+ else {
109
+ proc1.state =
110
+ code === 0
111
+ ? ProcessesState.ENDED_OK
112
+ : ProcessesState.ENDED_WITH_ERROR;
113
+ }
114
+ proc1.pid = null;
115
+ }
116
+ delete this.processFileLoggers[proc.id];
117
+ }, {
118
+ skipThrowingErrorWhenNoProcess: true,
119
+ executeCallbackWhenNoProcess: true,
120
+ });
121
+ });
122
+ //#endregion
123
+ });
124
+ //#endregion
125
+ }
126
+ //#endregion
127
+ //#region stop/remove process
128
+ async triggerStop(processId, options) {
129
+ //#region @websqlFunc
130
+ options = options || {};
131
+ await this.getAndUpdateProcess(processId, proc => {
132
+ const alreadyStopped = ProcessesStatesAllowedStart.includes(proc.state);
133
+ if (!alreadyStopped) {
134
+ if (!ProcessesStatesAllowedStop.includes(proc.state)) {
135
+ throw new Error(`Process not allowed to stop with state: ${proc.state}`);
136
+ }
137
+ }
138
+ if (!alreadyStopped) {
139
+ proc.state = ProcessesState.KILLING;
140
+ }
141
+ setTimeout(async () => {
142
+ try {
143
+ await UtilsProcess.killProcess(proc.pid);
144
+ console.info(`Process killed successfully (by pid = ${proc.pid})`);
145
+ }
146
+ catch (error) {
147
+ console.error(`Not able to kill process by pid ${proc.pid}`);
148
+ }
149
+ if (options.deleteAfterKill) {
150
+ try {
151
+ await this.remove(proc);
152
+ }
153
+ catch (error) { }
154
+ }
155
+ }, 1000);
156
+ });
157
+ //#endregion
158
+ }
159
+ //#endregion
160
+ //#region private methods
161
+ //#region private methods / get and update process
162
+ async getAndUpdateProcess(processId,
163
+ /**
164
+ * Callback with process to update
165
+ * (any modifications done in callback will be saved after its end)
166
+ */
167
+ callback, options) {
168
+ //#region @backendFunc
169
+ options = options || {};
170
+ const proc = await this.findOne({
171
+ where: { id: processId?.toString() },
172
+ });
173
+ if (!proc) {
174
+ if (options.skipThrowingErrorWhenNoProcess) {
175
+ if (options.executeCallbackWhenNoProcess) {
176
+ await callback();
177
+ }
178
+ return;
179
+ }
180
+ throw new Error(`No process with id ${processId}`);
181
+ }
182
+ await callback(proc);
183
+ await this.update(proc);
184
+ this.ctx.realtimeServer.triggerEntityPropertyChanges(proc, 'outputLast40lines');
185
+ //#endregion
186
+ }
187
+ };
188
+ ProcessesRepository = __decorate([
189
+ TaonRepository({
190
+ className: 'ProcessesRepository',
191
+ })
192
+ ], ProcessesRepository);
193
+ export { ProcessesRepository };
194
+ //# sourceMappingURL=processes.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processes.repository.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { CoreModels } from 'tnp-core/lib';
2
+ import { BaseCliWorkerTerminalUI, BaseWorkerTerminalActionReturnType } from 'tnp-helpers/lib';
3
+ import { Processes } from './processes';
4
+ import { ProcessesController } from './processes.controller';
5
+ import { ProcessesWorker } from './processes.worker';
6
+ export declare class ProcessesTerminalUI extends BaseCliWorkerTerminalUI<ProcessesWorker> {
7
+ protected headerText(): Promise<string>;
8
+ protected textHeaderStyle(): CoreModels.CfontStyle;
9
+ getDummyProcessParams(): Promise<{
10
+ command: string;
11
+ cwd: string;
12
+ }>;
13
+ protected refetchProcess(process: Processes, processesController: ProcessesController): Promise<Processes>;
14
+ protected crudMenuForSingleProcess(processFromDb: Processes, processesController: ProcessesController): Promise<void>;
15
+ getWorkerTerminalActions(options?: {
16
+ exitIsOnlyReturn?: boolean;
17
+ chooseAction?: boolean;
18
+ }): BaseWorkerTerminalActionReturnType;
19
+ }
@@ -0,0 +1,378 @@
1
+ import { config } from 'tnp-core/lib';
2
+ import { Helpers, UtilsCliClassMethod, UtilsTerminal, } from 'tnp-core/lib';
3
+ import { UtilsOs } from 'tnp-core/lib';
4
+ import { BaseCliWorkerTerminalUI, } from 'tnp-helpers/lib';
5
+ import { Processes } from './processes';
6
+ import { ProcessesController } from './processes.controller';
7
+ import { ProcessesStatesAllowedStart } from './processes.models';
8
+ import { ProcessesUtils } from './processes.utils';
9
+ //#endregion
10
+ let dummyProcessCreate = false;
11
+ export class ProcessesTerminalUI extends BaseCliWorkerTerminalUI {
12
+ //#region header text
13
+ async headerText() {
14
+ return 'Processes';
15
+ }
16
+ //#endregion
17
+ //#region text header style
18
+ textHeaderStyle() {
19
+ return 'simpleBlock';
20
+ }
21
+ //#endregion
22
+ //#region dummy process params
23
+ async getDummyProcessParams() {
24
+ //#region @backendFunc
25
+ // @ts-ignore
26
+ const { $Global } = await import('tnp/lib');
27
+ const dummyDummyCommand = `${config.frameworkName} ${UtilsCliClassMethod.getFrom($Global.prototype.showRandomHamstersTypes, { globalMethod: true })}`;
28
+ const dummyProcessCwd = UtilsOs.getRealHomeDir();
29
+ return { command: dummyDummyCommand, cwd: dummyProcessCwd };
30
+ //#endregion
31
+ }
32
+ //#endregion
33
+ //#region refetch process
34
+ async refetchProcess(process, processesController) {
35
+ //#region @backendFunc
36
+ while (true) {
37
+ try {
38
+ process = (await processesController.getByProcessID(process.id).request()).body.json;
39
+ return process;
40
+ }
41
+ catch (error) {
42
+ const fetchAgain = await UtilsTerminal.confirm({
43
+ message: `Not able to fetch process (id=${process.id}). Try again?`,
44
+ defaultValue: true,
45
+ });
46
+ if (!fetchAgain) {
47
+ return;
48
+ }
49
+ }
50
+ }
51
+ //#endregion
52
+ }
53
+ //#endregion
54
+ //#region crud menu for single deployment
55
+ async crudMenuForSingleProcess(processFromDb, processesController) {
56
+ //#region @backendFunc
57
+ while (true) {
58
+ Helpers.info(`Fetching processes data...`);
59
+ processFromDb = (await processesController.getByProcessID(processFromDb.id).request()).body.json;
60
+ UtilsTerminal.clearConsole();
61
+ // Helpers.info(`You selected process:
62
+ // id: ${processFromDb.id}
63
+ // command: ${processFromDb.command}
64
+ // cwd: ${processFromDb.cwd}
65
+ // state: ${processFromDb.state}`);
66
+ const choices = {
67
+ back: {
68
+ name: ' - back - ',
69
+ },
70
+ startProcess: {
71
+ name: 'Start Process',
72
+ },
73
+ processInfo: {
74
+ name: 'Process Info',
75
+ },
76
+ realtimeProcessMonitor: {
77
+ name: 'Realtime Monitor',
78
+ },
79
+ displayProcessLog: {
80
+ name: 'Display Log File',
81
+ },
82
+ stopProcess: {
83
+ name: 'Stop Process',
84
+ },
85
+ removeProcess: {
86
+ name: 'Remove Process',
87
+ },
88
+ };
89
+ if (ProcessesStatesAllowedStart.includes(processFromDb.state)) {
90
+ delete choices.stopProcess;
91
+ delete choices.realtimeProcessMonitor;
92
+ }
93
+ else {
94
+ delete choices.startProcess;
95
+ }
96
+ const selected = await UtilsTerminal.select({
97
+ choices,
98
+ question: `[Process id=${processFromDb.id},status=${processFromDb.state}] What do you want to do?`,
99
+ });
100
+ switch (selected) {
101
+ case 'back':
102
+ return;
103
+ case 'processInfo':
104
+ processFromDb = await this.refetchProcess(processFromDb, processesController);
105
+ if (!processFromDb) {
106
+ return;
107
+ }
108
+ UtilsTerminal.clearConsole();
109
+ console.log(processFromDb.fullPreviewString({ boldValues: true }));
110
+ await UtilsTerminal.pressAnyKeyToContinueAsync();
111
+ break;
112
+ case 'startProcess':
113
+ await processesController.triggerStart(processFromDb.id).request();
114
+ Helpers.info(`Triggered start for process`);
115
+ await UtilsTerminal.pressAnyKeyToContinueAsync({
116
+ message: 'Press any key to go back to main menu',
117
+ });
118
+ break;
119
+ case 'realtimeProcessMonitor':
120
+ await ProcessesUtils.displayRealtimeProgressMonitor(processFromDb.id, processesController);
121
+ break;
122
+ case 'displayProcessLog':
123
+ await UtilsTerminal.previewLongListGitLogLike(Helpers.readFile(processFromDb.fileLogAbsPath) ||
124
+ '< empty log file >');
125
+ break;
126
+ case 'stopProcess':
127
+ await processesController.triggerStop(processFromDb.id).request();
128
+ Helpers.info(`Triggered stop for process..please wait`);
129
+ await processesController.waitUntilProcessStopped(processFromDb.id);
130
+ await UtilsTerminal.pressAnyKeyToContinueAsync({
131
+ message: 'Press any key to go back to main menu',
132
+ });
133
+ break;
134
+ case 'removeProcess':
135
+ await processesController
136
+ .triggerStop(processFromDb.id, true)
137
+ .request();
138
+ Helpers.info(`Triggered remove of process... please wait... `);
139
+ await processesController.waitUntilProcessDeleted(processFromDb.id);
140
+ Helpers.info(`Process removed successfully.`);
141
+ await UtilsTerminal.pressAnyKeyToContinueAsync({
142
+ message: 'Press any key to go back to main menu',
143
+ });
144
+ return;
145
+ }
146
+ }
147
+ //#endregion
148
+ }
149
+ //#endregion
150
+ getWorkerTerminalActions(options) {
151
+ //#region @backendFunc
152
+ const myActions = {
153
+ //#region get all processes from backend
154
+ getStuffFromBackend: {
155
+ name: 'Get all processes from backend',
156
+ action: async () => {
157
+ // Helpers.info(`Stuff from backend will be fetched`);
158
+ const processesController = await this.worker.getRemoteControllerFor({
159
+ methodOptions: {
160
+ calledFrom: 'ProcessesTerminalUI.getWorkerTerminalActions/getStuffFromBackend',
161
+ },
162
+ controllerClass: ProcessesController,
163
+ });
164
+ while (true) {
165
+ const list = (await processesController.getAll().request())?.body.json || [];
166
+ Helpers.info(`Fetched ${list.length} processes from backend.`);
167
+ const options = [
168
+ { name: ' - back - ', value: 'back' },
169
+ ...list.map(c => ({
170
+ name: c.previewString,
171
+ value: c.id?.toString(),
172
+ })),
173
+ ];
174
+ const selected = await UtilsTerminal.select({
175
+ choices: options,
176
+ question: 'Select process',
177
+ });
178
+ if (selected !== 'back') {
179
+ await this.crudMenuForSingleProcess(list.find(l => l.id?.toString() === selected), processesController);
180
+ }
181
+ if (selected === 'back') {
182
+ return;
183
+ }
184
+ }
185
+ },
186
+ },
187
+ //#endregion
188
+ //#region create custom process
189
+ startCustomProcess: {
190
+ name: 'Start custom process',
191
+ action: async () => {
192
+ // Helpers.info(`Stuff from backend will be fetched`);
193
+ const processesController = await this.worker.getRemoteControllerFor({
194
+ methodOptions: {
195
+ calledFrom: 'ProcessesTerminalUI.getWorkerTerminalActions/startCustomProcess',
196
+ },
197
+ controllerClass: ProcessesController,
198
+ });
199
+ const command = await UtilsTerminal.input({
200
+ required: true,
201
+ question: 'Enter command to run:',
202
+ });
203
+ const processFromDBReq = await processesController
204
+ .save(new Processes().clone({
205
+ command,
206
+ cwd: process.cwd(),
207
+ }))
208
+ .request();
209
+ const processFromDB = processFromDBReq.body.json;
210
+ await processesController.triggerStart(processFromDB.id).request();
211
+ Helpers.info(`Triggered start for process -
212
+
213
+ > command: "${command}"
214
+
215
+ `);
216
+ await UtilsTerminal.pressAnyKeyToContinueAsync({
217
+ message: 'Press any key to go back to main menu',
218
+ });
219
+ },
220
+ },
221
+ //#endregion
222
+ //#region create dummy process
223
+ createDummyProcess: {
224
+ name: 'DUMMY PROCESS - create and start',
225
+ action: async () => {
226
+ // Helpers.info(`Stuff from backend will be fetched`);
227
+ try {
228
+ const processesController = await this.worker.getRemoteControllerFor({
229
+ methodOptions: {
230
+ calledFrom: 'ProcessesTerminalUI.getWorkerTerminalActions/createDummyProcess',
231
+ },
232
+ controllerClass: ProcessesController,
233
+ });
234
+ const { command, cwd } = await this.getDummyProcessParams();
235
+ const processFromDBReq = await processesController
236
+ .save(new Processes().clone({
237
+ command,
238
+ cwd,
239
+ }))
240
+ .request();
241
+ const processFromDB = processFromDBReq.body.json;
242
+ await processesController.triggerStart(processFromDB.id).request();
243
+ dummyProcessCreate = true;
244
+ Helpers.info(`Triggered start for dummy process -
245
+
246
+ > command: "${command}"
247
+
248
+ `);
249
+ }
250
+ catch (error) {
251
+ console.log(error);
252
+ await UtilsTerminal.pressAnyKeyToContinueAsync({
253
+ message: 'Press any key to go back to main menu',
254
+ });
255
+ }
256
+ },
257
+ },
258
+ //#endregion
259
+ //#region stop dummy process
260
+ stopDummyProcess: {
261
+ name: 'DUMMY PROCESS - stop process',
262
+ action: async () => {
263
+ // Helpers.info(`Stuff from backend will be fetched`);
264
+ const processesController = await this.worker.getRemoteControllerFor({
265
+ methodOptions: {
266
+ calledFrom: 'ProcessesTerminalUI.getWorkerTerminalActions/stopDummyProcess',
267
+ },
268
+ controllerClass: ProcessesController,
269
+ });
270
+ const { command, cwd } = await this.getDummyProcessParams();
271
+ const processFromDBReq = await processesController
272
+ .save(new Processes().clone({
273
+ command,
274
+ cwd,
275
+ }))
276
+ .request();
277
+ const processFromDB = processFromDBReq.body.json;
278
+ await processesController.triggerStop(processFromDB.id).request();
279
+ Helpers.info(`Triggered stop for dummy process `);
280
+ await UtilsTerminal.pressAnyKeyToContinueAsync({
281
+ message: 'Press any key to go back to main menu',
282
+ });
283
+ },
284
+ },
285
+ //#endregion
286
+ //#region get dummy process info
287
+ getDummyProcessInfo: {
288
+ name: 'DUMMY PROCESS - get info',
289
+ action: async () => {
290
+ // Helpers.info(`Stuff from backend will be fetched`);
291
+ const processesController = await this.worker.getRemoteControllerFor({
292
+ methodOptions: {
293
+ calledFrom: 'ProcessesTerminalUI.getWorkerTerminalActions/getDummyProcessInfo',
294
+ },
295
+ controllerClass: ProcessesController,
296
+ });
297
+ const { command, cwd } = await this.getDummyProcessParams();
298
+ const processFromDBReq = await processesController
299
+ .getByUniqueParams(cwd, command)
300
+ .request();
301
+ const processFromDB = processFromDBReq.body.json;
302
+ Helpers.info(`
303
+ Dummy process info:
304
+
305
+ > id: ${processFromDB.id}
306
+ > cwd: ${processFromDB.cwd}
307
+ > command: ${processFromDB.command}
308
+ > state: ${processFromDB.state}
309
+ > pid: ${processFromDB.pid}
310
+ > ppid: ${processFromDB.ppid}
311
+ > log path: ${processFromDB.fileLogAbsPath}
312
+ > conditionProcessActiveStdout: ${(processFromDB.conditionProcessActiveStdout || []).join(', ') || '<empty>'}
313
+ > conditionProcessActiveStderr: ${(processFromDB.conditionProcessActiveStderr || []).join(', ') || '<empty>'}
314
+
315
+ `);
316
+ await UtilsTerminal.pressAnyKeyToContinueAsync({
317
+ message: 'Press any key to go back to main menu',
318
+ });
319
+ },
320
+ },
321
+ //#endregion
322
+ //#region preview log file of dummy process
323
+ getPreviewLogFile: {
324
+ name: 'DUMMY PROCESS - preview log file',
325
+ action: async () => {
326
+ // Helpers.info(`Stuff from backend will be fetched`);
327
+ const processesController = await this.worker.getRemoteControllerFor({
328
+ methodOptions: {
329
+ calledFrom: 'ProcessesTerminalUI.getWorkerTerminalActions/getPreviewLogFile',
330
+ },
331
+ controllerClass: ProcessesController,
332
+ });
333
+ const { command, cwd } = await this.getDummyProcessParams();
334
+ const processFromDBReq = await processesController
335
+ .getByUniqueParams(cwd, command)
336
+ .request();
337
+ const processFromDB = processFromDBReq.body.json;
338
+ await UtilsTerminal.previewLongListGitLogLike(Helpers.readFile(processFromDB.fileLogAbsPath) ||
339
+ '< empty log file >');
340
+ },
341
+ },
342
+ //#endregion
343
+ //#region get realtime preview of dummy process output
344
+ realtimePreviewDummyProcess: {
345
+ name: 'DUMMY PROCESS - get realtime preview',
346
+ action: async () => {
347
+ // Helpers.info(`Stuff from backend will be fetched`);
348
+ const processesController = await this.worker.getRemoteControllerFor({
349
+ methodOptions: {
350
+ calledFrom: 'realtimePreviewDummyProcess',
351
+ },
352
+ controllerClass: ProcessesController,
353
+ });
354
+ const { command, cwd } = await this.getDummyProcessParams();
355
+ const processFromDBReq = await processesController
356
+ .getByUniqueParams(cwd, command)
357
+ .request();
358
+ const processFromDB = processFromDBReq.body.json;
359
+ await ProcessesUtils.displayRealtimeProgressMonitor(processFromDB.id, processesController);
360
+ },
361
+ },
362
+ //#endregion
363
+ };
364
+ if (!dummyProcessCreate) {
365
+ delete myActions.stopDummyProcess;
366
+ delete myActions.getDummyProcessInfo;
367
+ delete myActions.getPreviewLogFile;
368
+ delete myActions.realtimePreviewDummyProcess;
369
+ }
370
+ return {
371
+ ...this.chooseAction,
372
+ ...myActions,
373
+ ...super.getWorkerTerminalActions({ ...options, chooseAction: false }),
374
+ };
375
+ //#endregion
376
+ }
377
+ }
378
+ //# sourceMappingURL=processes.terminal-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processes.terminal-ui.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { ProcessesController } from './processes.controller';
2
+ export declare namespace ProcessesUtils {
3
+ const displayRealtimeProgressMonitor: (processId: number | string, processesController: ProcessesController, options?: {
4
+ resolveWhenTextInOutput?: string;
5
+ }) => Promise<void>;
6
+ }