tnp-helpers 19.0.2 → 19.0.4

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 (91) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/fesm2022/tnp-helpers.mjs +79 -10
  3. package/browser/fesm2022/tnp-helpers.mjs.map +1 -1
  4. package/browser/lib/base/classes/base-git.d.ts +12 -1
  5. package/browser/lib/base/classes/base-package-json.d.ts +1 -0
  6. package/browser/lib/base/classes/base-release-process.d.ts +1 -0
  7. package/browser/lib/build-info._auto-generated_.d.ts +1 -1
  8. package/browser/lib/helpers/for-backend/helpers-file-folders.d.ts +2 -2
  9. package/browser/package.json +13 -0
  10. package/client/fesm2022/tnp-helpers.mjs +79 -10
  11. package/client/fesm2022/tnp-helpers.mjs.map +1 -1
  12. package/client/lib/base/classes/base-git.d.ts +12 -1
  13. package/client/lib/base/classes/base-package-json.d.ts +1 -0
  14. package/client/lib/base/classes/base-release-process.d.ts +1 -0
  15. package/client/lib/build-info._auto-generated_.d.ts +1 -1
  16. package/client/lib/helpers/for-backend/helpers-file-folders.d.ts +2 -2
  17. package/client/package.json +13 -0
  18. package/lib/base/classes/base-cli-worker-config.d.ts +27 -0
  19. package/lib/base/classes/base-cli-worker-config.js +64 -0
  20. package/lib/base/classes/base-cli-worker-config.js.map +1 -0
  21. package/lib/base/classes/base-cli-worker-controller.d.ts +15 -0
  22. package/lib/base/classes/base-cli-worker-controller.js +124 -0
  23. package/lib/base/classes/base-cli-worker-controller.js.map +1 -0
  24. package/lib/base/classes/base-cli-worker.d.ts +111 -0
  25. package/lib/base/classes/base-cli-worker.js +535 -0
  26. package/lib/base/classes/base-cli-worker.js.map +1 -0
  27. package/lib/base/classes/base-detached-service.d.ts +6 -0
  28. package/lib/base/classes/base-detached-service.js +16 -0
  29. package/lib/base/classes/base-detached-service.js.map +1 -0
  30. package/lib/base/classes/base-git.d.ts +11 -0
  31. package/lib/base/classes/base-git.js +31 -0
  32. package/lib/base/classes/base-git.js.map +1 -1
  33. package/lib/base/classes/base-github-pages.d.ts +14 -0
  34. package/lib/base/classes/base-github-pages.js +173 -0
  35. package/lib/base/classes/base-github-pages.js.map +1 -0
  36. package/lib/base/classes/base-global-command-line.backend.d.ts +1 -0
  37. package/lib/base/classes/base-global-command-line.backend.js +9 -1
  38. package/lib/base/classes/base-global-command-line.backend.js.map +1 -1
  39. package/lib/base/classes/base-node-modules.js +16 -14
  40. package/lib/base/classes/base-node-modules.js.map +1 -1
  41. package/lib/base/classes/base-package-json.d.ts +1 -0
  42. package/lib/base/classes/base-package-json.js +5 -0
  43. package/lib/base/classes/base-package-json.js.map +1 -1
  44. package/lib/base/classes/base-powershell.js +4 -0
  45. package/lib/base/classes/base-powershell.js.map +1 -1
  46. package/lib/base/classes/base-release-process.d.ts +1 -0
  47. package/lib/base/classes/base-release-process.js +40 -13
  48. package/lib/base/classes/base-release-process.js.map +1 -1
  49. package/lib/base/tcp-udp-ports/not-assignable-port.entity.js +2 -2
  50. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +9 -9
  51. package/lib/build-info._auto-generated_.d.ts +1 -1
  52. package/lib/build-info._auto-generated_.js +1 -1
  53. package/lib/helpers/for-backend/helpers-file-folders.backend.d.ts +104 -0
  54. package/lib/helpers/for-backend/helpers-file-folders.backend.js +896 -0
  55. package/lib/helpers/for-backend/helpers-file-folders.backend.js.map +1 -0
  56. package/lib/helpers/for-backend/helpers-file-folders.d.ts +2 -2
  57. package/lib/helpers/for-backend/helpers-file-folders.js +9 -8
  58. package/lib/helpers/for-backend/helpers-file-folders.js.map +1 -1
  59. package/lib/helpers/for-backend/helpers-git.backend.d.ts +10 -0
  60. package/lib/helpers/for-backend/helpers-git.backend.js +76 -2
  61. package/lib/helpers/for-backend/helpers-git.backend.js.map +1 -1
  62. package/lib/helpers/for-backend/helpers-process.backend.d.ts +87 -0
  63. package/lib/helpers/for-backend/helpers-process.backend.js +456 -0
  64. package/lib/helpers/for-backend/helpers-process.backend.js.map +1 -0
  65. package/lib/helpers/for-backend/ts-code/index.d.ts +1 -0
  66. package/lib/helpers/for-backend/ts-code/index.js +5 -0
  67. package/lib/helpers/for-backend/ts-code/index.js.map +1 -0
  68. package/lib/helpers/for-backend/ts-code/ts-import-export-extractor.d.ts +29 -0
  69. package/lib/helpers/for-backend/ts-code/ts-import-export-extractor.js +81 -0
  70. package/lib/helpers/for-backend/ts-code/ts-import-export-extractor.js.map +1 -0
  71. package/lib/helpers/for-browser/angular.helper.js +2 -2
  72. package/lib/helpers/helpers.js +5 -1
  73. package/lib/helpers/helpers.js.map +1 -1
  74. package/lib/index.js +1 -0
  75. package/lib/index.js.map +1 -1
  76. package/lib/old/base-component.js +2 -2
  77. package/lib/old/base-formly-component.js +2 -2
  78. package/lib/old/dual-component-ctrl.js +2 -2
  79. package/lib/old/execute-command.d.ts +1 -1
  80. package/lib/old/execute-command.js +2 -2
  81. package/lib/old/execute-command.js.map +1 -1
  82. package/package.json +1 -1
  83. package/tmp-environment.json +4 -3
  84. package/websql/fesm2022/tnp-helpers.mjs +79 -10
  85. package/websql/fesm2022/tnp-helpers.mjs.map +1 -1
  86. package/websql/lib/base/classes/base-git.d.ts +12 -1
  87. package/websql/lib/base/classes/base-package-json.d.ts +1 -0
  88. package/websql/lib/base/classes/base-release-process.d.ts +1 -0
  89. package/websql/lib/build-info._auto-generated_.d.ts +1 -1
  90. package/websql/lib/helpers/for-backend/helpers-file-folders.d.ts +2 -2
  91. package/websql/package.json +13 -0
@@ -0,0 +1,535 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseCliWorker = void 0;
4
+ const tnp_core_1 = require("tnp-core");
5
+ const index_1 = require("../../index");
6
+ const base_cli_worker_config_1 = require("./base-cli-worker-config");
7
+ //#endregion
8
+ //#region constants
9
+ const WORKER_INIT_START_TIME_LIMIT = 25; // 15 seconds max to start worker
10
+ const START_PORT_FOR_SERVICES = 3600;
11
+ //#endregion
12
+ class BaseCliWorker {
13
+ serviceID;
14
+ startCommand;
15
+ serviceVersion;
16
+ SPECIAL_WORKER_READY_MESSAGE = '$$$ WORKER_READY $$$';
17
+ //#region constructor
18
+ constructor(
19
+ /**
20
+ * unique id for service
21
+ */
22
+ serviceID,
23
+ /**
24
+ * external command that will start service
25
+ */
26
+ startCommand,
27
+ /**
28
+ * unique id for service
29
+ */
30
+ serviceVersion) {
31
+ this.serviceID = serviceID;
32
+ this.startCommand = startCommand;
33
+ this.serviceVersion = serviceVersion;
34
+ }
35
+ //#endregion
36
+ //#region fields & getters
37
+ //#region fields & getters / path to process local info
38
+ get pathToProcessLocalInfoJson() {
39
+ //#region @backendFunc
40
+ // console.log('os.userInfo()', os.userInfo());
41
+ return (0, tnp_core_1.crossPlatformPath)([
42
+ tnp_core_1.os.userInfo().homedir,
43
+ `.taon`,
44
+ '__workers-service-process-info__',
45
+ `${this.serviceID}.json`,
46
+ ]);
47
+ //#endregion
48
+ }
49
+ //#endregion
50
+ //#region fields & getters / process local info json object
51
+ get processLocalInfoObj() {
52
+ //#region @backendFunc
53
+ const configJson = index_1.Helpers.readJson5(this.pathToProcessLocalInfoJson) || {};
54
+ if (tnp_core_1._.isObject(configJson)) {
55
+ return tnp_core_1._.merge(new base_cli_worker_config_1.BaseCliWorkerConfig(), configJson);
56
+ }
57
+ return new base_cli_worker_config_1.BaseCliWorkerConfig();
58
+ //#endregion
59
+ }
60
+ //#endregion
61
+ //#endregion
62
+ //#region public methods
63
+ //#region public methods / start if needs to be started
64
+ async startDetachedIfNeedsToBeStarted(options) {
65
+ //#region @backendFunc
66
+ if (this.processLocalInfoObj.isEmpty) {
67
+ // not started ever yet
68
+ await this.startDetached(options);
69
+ return;
70
+ }
71
+ const serviceIsHealthy = await this.isServiceHealthy({
72
+ healthCheckRequestTrys: 1, // just quick check
73
+ });
74
+ if (!serviceIsHealthy) {
75
+ await this.startDetached(options);
76
+ return;
77
+ }
78
+ index_1.Helpers.log(`Service "${this.serviceID}" is already started/healthy...`);
79
+ //#endregion
80
+ }
81
+ //#endregion
82
+ //#region public methods / kill
83
+ /**
84
+ * stop if started
85
+ */
86
+ async kill(options) {
87
+ //#region @backendFunc
88
+ options = options || {};
89
+ index_1.Helpers.log(`Killing service "${this.serviceID}"...`);
90
+ if (this.processLocalInfoObj.isEmpty) {
91
+ index_1.Helpers.log(`Service "${this.serviceID}" not started - nothing to kill...`);
92
+ return;
93
+ }
94
+ const ctrl = await this.getControllerForRemoteConnection();
95
+ try {
96
+ if (!options.dontRemoveConfigFile) {
97
+ index_1.Helpers.removeFileIfExists(this.pathToProcessLocalInfoJson);
98
+ }
99
+ await ctrl.baseCLiWorkerCommand_kill().received;
100
+ index_1.Helpers.log(`Service "${this.serviceID}" killed...`);
101
+ }
102
+ catch (error) {
103
+ index_1.Helpers.log(error);
104
+ index_1.Helpers.log(`Service "${this.serviceID}" not killed... `);
105
+ }
106
+ //#endregion
107
+ }
108
+ //#endregion
109
+ //#region public methods / restart
110
+ /**
111
+ * kill detached process and start again
112
+ * @param options.detached - default true
113
+ */
114
+ async restart(options) {
115
+ options = options || {};
116
+ options.detached = tnp_core_1._.isUndefined(options.detached) ? true : false;
117
+ await this.kill();
118
+ //longer because os is disposing process previous process
119
+ if (options.detached) {
120
+ index_1.Helpers.info(`Restarting service "${this.serviceID}" in detached mode...`);
121
+ await this.startDetached(options);
122
+ }
123
+ else {
124
+ index_1.Helpers.info(`Restarting service "${this.serviceID}" in current process...`);
125
+ await this.startNormallyInCurrentProcess();
126
+ }
127
+ }
128
+ //#endregion
129
+ //#region public methods / cli start
130
+ /**
131
+ * only for cli start
132
+ * @param cliParams on from cli
133
+ */
134
+ async cliStartProcedure(cliParams) {
135
+ const instance = this;
136
+ const detached = !!cliParams['detached'] || !!cliParams['detach'];
137
+ //#region @backendFunc
138
+ if (cliParams['restart']) {
139
+ await instance.restart({
140
+ detached,
141
+ });
142
+ process.exit(0);
143
+ }
144
+ if (cliParams['kill']) {
145
+ await instance.kill();
146
+ process.exit(0);
147
+ }
148
+ if (detached) {
149
+ await instance.startDetachedIfNeedsToBeStarted();
150
+ process.exit(0);
151
+ }
152
+ else {
153
+ await instance.startNormallyInCurrentProcess();
154
+ }
155
+ //#endregion
156
+ }
157
+ //#endregion
158
+ //#endregion
159
+ //#region protected methods
160
+ //#region protected methods / prevent external config change
161
+ preventExternalConfigChange() {
162
+ //#region @backendFunc
163
+ index_1.Helpers.info(`watching: ${this.pathToProcessLocalInfoJson}`);
164
+ const currentConfig = this.processLocalInfoObj;
165
+ tnp_core_1.chokidar.watch(this.pathToProcessLocalInfoJson).on('change', () => {
166
+ index_1.Helpers.log(`Service data changed...`);
167
+ if (!this.processLocalInfoObj.isEquals(currentConfig)) {
168
+ index_1.Helpers.error(`Service config data externally changed... killing service`, false, true);
169
+ }
170
+ });
171
+ //#endregion
172
+ }
173
+ //#endregion
174
+ //#region protected methods / prevent start if already started
175
+ async preventStartIfAlreadyStarted() {
176
+ //#region @backendFunc
177
+ try {
178
+ const isHealthy = await this.isServiceHealthy({
179
+ healthCheckRequestTrys: 2, // check only twice
180
+ });
181
+ if (isHealthy) {
182
+ index_1.Helpers.error(`Service already started on port ${this.processLocalInfoObj.port} !`, false, true);
183
+ }
184
+ }
185
+ catch (error) { }
186
+ //#endregion
187
+ }
188
+ //#endregion
189
+ //#region protected methods / prevent start if already started
190
+ async killWorkerWithLowerVersion() {
191
+ //#region @backendFunc
192
+ try {
193
+ const ctrl = await this.getControllerForRemoteConnection();
194
+ index_1.Helpers.log(`Checking if current working version is up to date...`);
195
+ // console.log('this.processLocalInfoObj', this.processLocalInfoObj);
196
+ const req = await ctrl.baseCLiWorkerCommand_hasUpToDateVersion(tnp_core_1._.merge(this.processLocalInfoObj, {
197
+ version: this.serviceVersion,
198
+ })).received;
199
+ const isUpToDate = req.body.booleanValue;
200
+ if (!isUpToDate) {
201
+ index_1.Helpers.info(`Killing service with lower version...`);
202
+ await this.kill({
203
+ dontRemoveConfigFile: true,
204
+ });
205
+ await index_1.Helpers.wait(1);
206
+ }
207
+ }
208
+ catch (error) { }
209
+ //#endregion
210
+ }
211
+ //#endregion
212
+ //#region protected methods / is service healthy
213
+ /**
214
+ * This has 2 purposes:
215
+ * - infinite check when when detached process finished starting
216
+ * - quick check if service is healthy / already started
217
+ */
218
+ async isServiceHealthy(options) {
219
+ //#region @backendFunc
220
+ options = options || {};
221
+ const healthCheckRequestTrys = options.healthCheckRequestTrys || 1;
222
+ let i = 0; // 15 seconds to start worker
223
+ while (true) {
224
+ i++;
225
+ index_1.Helpers.log(`Checking if service "${this.serviceID}" is starting...`);
226
+ const workerIsStarting = !!this.processLocalInfoObj.startTimestamp;
227
+ if (!workerIsStarting) {
228
+ // initialized worker does not have startTimestamp
229
+ break;
230
+ }
231
+ if (i > WORKER_INIT_START_TIME_LIMIT) {
232
+ return false;
233
+ }
234
+ await index_1.Helpers.wait(1);
235
+ }
236
+ i = 0;
237
+ const isWaitingNotCheckingWhen = 10;
238
+ while (true) {
239
+ i++;
240
+ try {
241
+ // const isWaitingNotChecking = i >= isWaitingNotCheckingWhen;
242
+ // TODO: check why this is may not work
243
+ if (isWaitingNotCheckingWhen === i) {
244
+ index_1.Helpers.info(`Waiting for service "${this.serviceID}" to start...`);
245
+ }
246
+ else {
247
+ index_1.Helpers.log(`Checking if service "${this.serviceID}" is healthy...`);
248
+ }
249
+ const ctrl = await this.getControllerForRemoteConnection();
250
+ index_1.Helpers.log(`Sending is healthy request...`);
251
+ // console.log('this.processLocalInfoObj', this.processLocalInfoObj);
252
+ const req = await ctrl.baseCLiWorkerCommand_isHealthy(this.processLocalInfoObj).received;
253
+ const isHealthy = req.body.booleanValue;
254
+ // console.log('isHealthy', { isHealthy });
255
+ if (isHealthy) {
256
+ index_1.Helpers.log(`Service "${this.serviceID}" is healthy (response is true)...`);
257
+ }
258
+ else {
259
+ index_1.Helpers.log(`Service "${this.serviceID}" is not healthy (response is false)...`);
260
+ }
261
+ if (isHealthy || i === healthCheckRequestTrys) {
262
+ return isHealthy;
263
+ }
264
+ else {
265
+ index_1.Helpers.log('Trying again...');
266
+ await index_1.Helpers.wait(1);
267
+ continue;
268
+ }
269
+ }
270
+ catch (error) {
271
+ if (i >= isWaitingNotCheckingWhen && error?.message) {
272
+ console.error(error.message);
273
+ }
274
+ index_1.Helpers.log(`Service "${this.serviceID}" is not healthy (can't check health)...`);
275
+ if (i === healthCheckRequestTrys) {
276
+ return false;
277
+ }
278
+ else {
279
+ index_1.Helpers.log('Trying again...');
280
+ await index_1.Helpers.wait(1);
281
+ continue;
282
+ }
283
+ }
284
+ }
285
+ //#endregion
286
+ }
287
+ //#endregion
288
+ //#region protected methods / start detached
289
+ /**
290
+ * start if not started detached process
291
+ */
292
+ async startDetached(options) {
293
+ //#region @backendFunc
294
+ options = options || {};
295
+ index_1.Helpers.log(`Starting detached command in new terminal "${tnp_core_1.chalk.bold(this.startCommand)}"...`);
296
+ if (options.useCurrentWindowForDetach) {
297
+ await tnp_core_1.UtilsProcess.startAsyncChildProcessCommandUntil(this.startCommand, {
298
+ untilOptions: {
299
+ stdout: [this.SPECIAL_WORKER_READY_MESSAGE],
300
+ stderr: [this.SPECIAL_WORKER_READY_MESSAGE],
301
+ },
302
+ });
303
+ }
304
+ else {
305
+ await tnp_core_1.UtilsProcess.startInNewTerminalWindow(this.startCommand);
306
+ }
307
+ index_1.Helpers.log(`Starting detached service "${tnp_core_1.chalk.bold(this.serviceID)}" - waiting until healthy...`);
308
+ const isServiceHealthy = await this.isServiceHealthy({
309
+ healthCheckRequestTrys: Infinity, // wait infinity until started
310
+ });
311
+ if (!isServiceHealthy) {
312
+ index_1.Helpers.throw(`Not able to start service "${this.serviceID}"...`);
313
+ return;
314
+ }
315
+ index_1.Helpers.log(`Healthy detached service "${tnp_core_1.chalk.bold(this.serviceID)}" started.`);
316
+ //#endregion
317
+ }
318
+ //#endregion
319
+ //#region protected methods / text for header
320
+ async headerText() {
321
+ return tnp_core_1._.startCase(this.serviceID);
322
+ }
323
+ //#endregion
324
+ //#region protected methods / text header style
325
+ textHeaderStyle() {
326
+ return 'block';
327
+ }
328
+ //#endregion
329
+ //#region protected methods / header text align
330
+ headerTextAlign() {
331
+ return 'left';
332
+ }
333
+ //#endregion
334
+ //#region protected methods / header
335
+ /**
336
+ * override whole terminal header
337
+ */
338
+ async header() {
339
+ //#region @backendFunc
340
+ const cfonts = require('cfonts');
341
+ const output = cfonts.render(await this.headerText(), {
342
+ font: this.textHeaderStyle(),
343
+ align: this.headerTextAlign(),
344
+ colors: ['system'],
345
+ background: 'transparent',
346
+ letterSpacing: 1,
347
+ lineHeight: 1,
348
+ space: true,
349
+ maxLength: '0',
350
+ gradient: false,
351
+ independentGradient: false,
352
+ transitionGradient: false,
353
+ env: 'node',
354
+ });
355
+ console.log(output.string);
356
+ //#endregion
357
+ }
358
+ //#endregion
359
+ //#region protected methods / info message below header
360
+ async infoMessageBelowHeader() {
361
+ //#region @backendFunc
362
+ index_1.Helpers.info(`
363
+
364
+ Service ${tnp_core_1.chalk.bold.red(this.serviceID)}` +
365
+ ` (version: ${this.serviceVersion}) started..
366
+ Check info here http://localhost:${tnp_core_1.chalk.bold(this.processLocalInfoObj?.port?.toString())}/${'info'}
367
+
368
+ `);
369
+ //#endregion
370
+ }
371
+ //#endregion
372
+ //#region protected methods / get back action
373
+ get backAction() {
374
+ return {
375
+ back: {
376
+ name: 'Back',
377
+ },
378
+ };
379
+ }
380
+ //#endregion
381
+ //#region protected methods / choose action
382
+ get chooseAction() {
383
+ return {
384
+ emptyAction: {
385
+ name: ' -- choose any action below --',
386
+ action: async () => { },
387
+ },
388
+ };
389
+ }
390
+ //#endregion
391
+ //#region protected methods / display special worker ready message
392
+ displaySpecialWorkerReadyMessage() {
393
+ console.log(this.SPECIAL_WORKER_READY_MESSAGE);
394
+ }
395
+ //#endregion
396
+ //#region protected methods / worker terminal actions
397
+ getWorkerTerminalActions(options) {
398
+ //#region @backendFunc
399
+ options = options || {};
400
+ options.chooseAction = tnp_core_1._.isBoolean(options.chooseAction)
401
+ ? options.chooseAction
402
+ : true;
403
+ return {
404
+ ...(options.chooseAction ? this.chooseAction : {}),
405
+ openBrowser: {
406
+ name: 'Open browser with service info',
407
+ action: async () => {
408
+ const openInBrowser = require('open');
409
+ openInBrowser(`http://localhost:${this.processLocalInfoObj.port}/info`);
410
+ },
411
+ },
412
+ exit: {
413
+ name: options.exitIsOnlyReturn
414
+ ? '< Return to previous menu'
415
+ : `Shut down service`,
416
+ action: async () => {
417
+ if (options.exitIsOnlyReturn) {
418
+ return true; // false will keep loop running
419
+ }
420
+ if (await tnp_core_1.UtilsTerminal.confirm({
421
+ defaultValue: false,
422
+ message: 'Are you sure you want to shut down service?',
423
+ })) {
424
+ await this.kill();
425
+ process.exit(0);
426
+ }
427
+ },
428
+ },
429
+ };
430
+ //#endregion
431
+ }
432
+ //#endregion
433
+ //#region protected methods / info screen
434
+ async infoScreen(options) {
435
+ options = options || {};
436
+ while (true) {
437
+ index_1.Helpers.clearConsole();
438
+ await this.header();
439
+ await this.infoMessageBelowHeader();
440
+ const choices = this.getWorkerTerminalActions(options);
441
+ const choice = await tnp_core_1.UtilsTerminal.select({
442
+ choices,
443
+ question: 'Choose action',
444
+ });
445
+ const action = choices[choice].action;
446
+ const result = await action();
447
+ if (choice === 'exit' && result) {
448
+ break;
449
+ }
450
+ }
451
+ }
452
+ //#endregion
453
+ //#region protected methods / save process info
454
+ saveProcessInfo(processConfig) {
455
+ //#region @backendFunc
456
+ processConfig = processConfig || {};
457
+ if (index_1.Helpers.exists(this.pathToProcessLocalInfoJson)) {
458
+ const jsonConfig = index_1.Helpers.readJson(this.pathToProcessLocalInfoJson);
459
+ if (tnp_core_1._.isObject(jsonConfig) && Object.keys(jsonConfig).length > 0) {
460
+ processConfig = tnp_core_1._.merge(jsonConfig, processConfig);
461
+ }
462
+ }
463
+ index_1.Helpers.log(`Saving process info to "${this.pathToProcessLocalInfoJson}"...`);
464
+ index_1.Helpers.log(processConfig);
465
+ index_1.Helpers.writeJson(this.pathToProcessLocalInfoJson, processConfig);
466
+ //#endregion
467
+ }
468
+ //#endregion
469
+ //#region protected methods / initialize worker
470
+ async initializeWorkerMetadata() {
471
+ //#region @backendFunc
472
+ try {
473
+ const portControllerInstance = await this.getControllerForRemoteConnection();
474
+ await portControllerInstance.baseCLiWorkerCommand_initializeMetadata(this.serviceID, this.serviceVersion).received;
475
+ this.saveProcessInfo({
476
+ startTimestamp: null,
477
+ });
478
+ }
479
+ catch (error) {
480
+ this.saveProcessInfo({
481
+ startTimestamp: null,
482
+ });
483
+ index_1.Helpers.throw(error);
484
+ }
485
+ // process.on('SIGINT', () => {
486
+ // this.kill();
487
+ // });
488
+ //#endregion
489
+ }
490
+ //#endregion
491
+ //#region protected methods / wait for process port saved to disk
492
+ async waitForProcessPortSavedToDisk() {
493
+ //#region @backendFunc
494
+ let portForRemote = this.processLocalInfoObj.port;
495
+ const MAX_TRYS = 10;
496
+ let i = 0;
497
+ if (!portForRemote) {
498
+ while (!portForRemote) {
499
+ i++;
500
+ portForRemote = this.processLocalInfoObj.port;
501
+ if (portForRemote) {
502
+ break;
503
+ }
504
+ else {
505
+ index_1.Helpers.log(`Waiting for port to be available...`);
506
+ if (i > MAX_TRYS) {
507
+ index_1.Helpers.throw(`Can't get port for remote connection..` +
508
+ ` worker process did not start correctly`);
509
+ }
510
+ await index_1.Helpers.wait(1);
511
+ }
512
+ }
513
+ }
514
+ //#endregion
515
+ }
516
+ //#endregion
517
+ //#region protected methods / get free port
518
+ async getServicePort() {
519
+ //#region @backendFunc
520
+ const port = await tnp_core_1.Utils.getFreePort({
521
+ startFrom: START_PORT_FOR_SERVICES,
522
+ });
523
+ this.saveProcessInfo({
524
+ port,
525
+ serviceID: this.serviceID,
526
+ pid: process.pid,
527
+ startTimestamp: Date.now(),
528
+ version: this.serviceVersion,
529
+ });
530
+ return port;
531
+ //#endregion
532
+ }
533
+ }
534
+ exports.BaseCliWorker = BaseCliWorker;
535
+ //# sourceMappingURL=base-cli-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-cli-worker.js","sourceRoot":"","sources":["c:/Users/darek/projects/npm/taon-dev/tnp-helpers/src/lib/base/classes/base-cli-worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { BaseFeatureForProject } from './base-feature-for-project';
2
+ import { BaseProject } from './base-project';
3
+ export declare class BaseDetachedService<PROJECT extends BaseProject = any> extends BaseFeatureForProject {
4
+ project: PROJECT;
5
+ constructor(project: PROJECT);
6
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseDetachedService = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var base_feature_for_project_1 = require("./base-feature-for-project");
6
+ var BaseDetachedService = /** @class */ (function (_super) {
7
+ tslib_1.__extends(BaseDetachedService, _super);
8
+ function BaseDetachedService(project) {
9
+ var _this = _super.call(this, project) || this;
10
+ _this.project = project;
11
+ return _this;
12
+ }
13
+ return BaseDetachedService;
14
+ }(base_feature_for_project_1.BaseFeatureForProject));
15
+ exports.BaseDetachedService = BaseDetachedService;
16
+ //# sourceMappingURL=base-detached-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-detached-service.js","sourceRoot":"","sources":["c:/Users/darek/projects/npm/taon-dev/tnp-helpers/src/lib/base/classes/base-detached-service.ts"],"names":[],"mappings":";;;;AAAA,uEAAmE;AAGnE;IAEU,+CAAqB;IAG7B,6BAAY,OAAgB;QAC1B,YAAA,MAAK,YAAC,OAAO,CAAC,SAAC;QACf,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;;IACzB,CAAC;IACH,0BAAC;AAAD,CAAC,AATD,CAEU,gDAAqB,GAO9B;AATY,kDAAmB"}
@@ -63,8 +63,18 @@ export declare class BaseGit<PROJECT extends BaseProject = any> extends BaseFeat
63
63
  }): Promise<void>;
64
64
  get hasActionCommitsToMelt(): boolean;
65
65
  meltActionCommits(): number;
66
+ /**
67
+ *
68
+ * @param newVersion
69
+ * @param pushWithoutAsking
70
+ */
71
+ tagAndPushToGitRepo(newVersion: string, autoReleaseUsingConfig: boolean, isCiProcess: boolean): Promise<void>;
66
72
  pullCurrentBranch(options?: {
67
73
  askToRetry?: boolean;
74
+ /**
75
+ * default true, when false it will throw error instead process.exit(0)
76
+ */
77
+ exitOnError?: boolean;
68
78
  defaultHardResetCommits?: number;
69
79
  }): Promise<void>;
70
80
  get currentBranchName(): string;
@@ -95,6 +105,7 @@ export declare class BaseGit<PROJECT extends BaseProject = any> extends BaseFeat
95
105
  fetchBeforeCheckout?: boolean;
96
106
  switchBranchWhenExists?: boolean;
97
107
  }): void;
108
+ cleanRepoFromAnyFilesExceptDotGitFolder(): void;
98
109
  checkoutFromTo(checkoutFromBranch: string, branch: string, origin?: string): void;
99
110
  /**
100
111
  *
@@ -291,6 +291,9 @@ Please provide proper commit message for lastest changes in your project:
291
291
  addToLastCommitAndPush: {
292
292
  name: `Add to last commit ("${lastCommitName}") and ${hadMeltedActionCommits ? 'force ' : ''}push`,
293
293
  },
294
+ discard: {
295
+ name: `Discard all changes`,
296
+ },
294
297
  commitAsChoreUpdateAndPush: {
295
298
  name: `Commit as "chore: update" and ${hadMeltedActionCommits ? 'force ' : ''}push`,
296
299
  },
@@ -326,6 +329,13 @@ Please provide proper commit message for lastest changes in your project:
326
329
  if (selected === 'skip') {
327
330
  return;
328
331
  }
332
+ if (selected === 'discard') {
333
+ try {
334
+ this.project.git.resetHard({ HEAD: 0 });
335
+ }
336
+ catch (error) { }
337
+ return;
338
+ }
329
339
  if (selected === 'exit') {
330
340
  process.exit(0);
331
341
  }
@@ -388,6 +398,22 @@ Please provide proper commit message for lastest changes in your project:
388
398
  //#endregion
389
399
  }
390
400
  //#endregion
401
+ //#region push to git repo
402
+ /**
403
+ *
404
+ * @param newVersion
405
+ * @param pushWithoutAsking
406
+ */
407
+ async tagAndPushToGitRepo(newVersion, autoReleaseUsingConfig, isCiProcess) {
408
+ //#region @backendFunc
409
+ return await index_1.Helpers.git.tagAndPushToGitRepo(this.project.location, {
410
+ newVersion,
411
+ autoReleaseUsingConfig,
412
+ isCiProcess,
413
+ });
414
+ //#endregion
415
+ }
416
+ //#endregion
391
417
  //#region methods & getters / pull current branch
392
418
  async pullCurrentBranch(options) {
393
419
  //#region @backendFunc
@@ -521,6 +547,11 @@ Please provide proper commit message for lastest changes in your project:
521
547
  //#endregion
522
548
  }
523
549
  //#endregion
550
+ cleanRepoFromAnyFilesExceptDotGitFolder() {
551
+ //#region @backendFunc
552
+ return index_1.Helpers.git.cleanRepoFromAnyFilesExceptDotGitFolder(this.project.location);
553
+ //#endregion
554
+ }
524
555
  //#region methods & getters / checkout from to
525
556
  checkoutFromTo(checkoutFromBranch, branch, origin = 'origin') {
526
557
  //#region @backendFunc