@taon-dev/cloud 21.0.213 → 21.0.216

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 (173) hide show
  1. package/VERIFIED-BUILD-DATA.jsonc +3 -3
  2. package/bin/cloud +5 -0
  3. package/bin/cloud-debug +5 -0
  4. package/bin/cloud-debug-brk +4 -0
  5. package/browser/fesm2022/cloud-browser.mjs +1 -1
  6. package/browser/fesm2022/cloud-browser.mjs.map +1 -1
  7. package/browser/package.json +1 -1
  8. package/browser/types/cloud-browser.d.ts +1 -1
  9. package/browser-prod/fesm2022/cloud-browser-prod.mjs +1 -1
  10. package/browser-prod/fesm2022/cloud-browser-prod.mjs.map +1 -1
  11. package/browser-prod/package.json +1 -1
  12. package/browser-prod/types/cloud-browser-prod.d.ts +1 -1
  13. package/html/assets/generated/pwa/html-pwa.html +60 -0
  14. package/lib/build-info._auto-generated_.d.ts +1 -1
  15. package/lib/build-info._auto-generated_.js +1 -1
  16. package/lib/package.json +1 -1
  17. package/lib/traefik/traefik.provider.js +1 -1
  18. package/lib/traefik/traefik.provider.js.map +1 -1
  19. package/lib-esm/app.d.ts +3 -0
  20. package/lib-esm/app.electron.d.ts +1 -0
  21. package/lib-esm/app.electron.js +2 -0
  22. package/lib-esm/app.electron.js.map +1 -0
  23. package/lib-esm/app.hosts.d.ts +95 -0
  24. package/lib-esm/app.hosts.js +157 -0
  25. package/lib-esm/app.hosts.js.map +1 -0
  26. package/lib-esm/app.js +460 -0
  27. package/lib-esm/app.js.map +1 -0
  28. package/lib-esm/app.vscode.d.ts +9 -0
  29. package/lib-esm/app.vscode.js +37 -0
  30. package/lib-esm/app.vscode.js.map +1 -0
  31. package/lib-esm/cli.d.ts +1 -0
  32. package/lib-esm/cli.js +4 -0
  33. package/lib-esm/cli.js.map +1 -0
  34. package/lib-esm/index.d.ts +1 -0
  35. package/lib-esm/index.js +2 -0
  36. package/lib-esm/index.js.map +1 -0
  37. package/lib-esm/lib/build-info._auto-generated_.d.ts +24 -0
  38. package/lib-esm/lib/build-info._auto-generated_.js +27 -0
  39. package/lib-esm/lib/build-info._auto-generated_.js.map +1 -0
  40. package/lib-esm/lib/constants.d.ts +1 -0
  41. package/lib-esm/lib/constants.js +3 -0
  42. package/lib-esm/lib/constants.js.map +1 -0
  43. package/lib-esm/lib/env/env.angular-node-app.d.ts +67 -0
  44. package/lib-esm/lib/env/env.angular-node-app.js +137 -0
  45. package/lib-esm/lib/env/env.angular-node-app.js.map +1 -0
  46. package/lib-esm/lib/env/env.docs-webapp.d.ts +67 -0
  47. package/lib-esm/lib/env/env.docs-webapp.js +137 -0
  48. package/lib-esm/lib/env/env.docs-webapp.js.map +1 -0
  49. package/lib-esm/lib/env/env.electron-app.d.ts +67 -0
  50. package/lib-esm/lib/env/env.electron-app.js +137 -0
  51. package/lib-esm/lib/env/env.electron-app.js.map +1 -0
  52. package/lib-esm/lib/env/env.mobile-app.d.ts +67 -0
  53. package/lib-esm/lib/env/env.mobile-app.js +137 -0
  54. package/lib-esm/lib/env/env.mobile-app.js.map +1 -0
  55. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.d.ts +67 -0
  56. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js +137 -0
  57. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js.map +1 -0
  58. package/lib-esm/lib/env/env.vscode-plugin.d.ts +67 -0
  59. package/lib-esm/lib/env/env.vscode-plugin.js +137 -0
  60. package/lib-esm/lib/env/env.vscode-plugin.js.map +1 -0
  61. package/lib-esm/lib/env/index.d.ts +6 -0
  62. package/lib-esm/lib/env/index.js +7 -0
  63. package/lib-esm/lib/env/index.js.map +1 -0
  64. package/lib-esm/lib/index._auto-generated_.d.ts +25 -0
  65. package/lib-esm/lib/index._auto-generated_.js +33 -0
  66. package/lib-esm/lib/index._auto-generated_.js.map +1 -0
  67. package/lib-esm/lib/index.d.ts +4 -0
  68. package/lib-esm/lib/index.js +5 -0
  69. package/lib-esm/lib/index.js.map +1 -0
  70. package/lib-esm/lib/instances/index.d.ts +4 -0
  71. package/lib-esm/lib/instances/index.js +6 -0
  72. package/lib-esm/lib/instances/index.js.map +1 -0
  73. package/lib-esm/lib/instances/instances.context.d.ts +19 -0
  74. package/lib-esm/lib/instances/instances.context.js +64 -0
  75. package/lib-esm/lib/instances/instances.context.js.map +1 -0
  76. package/lib-esm/lib/instances/instances.controller.d.ts +10 -0
  77. package/lib-esm/lib/instances/instances.controller.js +61 -0
  78. package/lib-esm/lib/instances/instances.controller.js.map +1 -0
  79. package/lib-esm/lib/instances/instances.d.ts +9 -0
  80. package/lib-esm/lib/instances/instances.defaults-values.d.ts +2 -0
  81. package/lib-esm/lib/instances/instances.defaults-values.js +5 -0
  82. package/lib-esm/lib/instances/instances.defaults-values.js.map +1 -0
  83. package/lib-esm/lib/instances/instances.js +40 -0
  84. package/lib-esm/lib/instances/instances.js.map +1 -0
  85. package/lib-esm/lib/instances/instances.repository.d.ts +6 -0
  86. package/lib-esm/lib/instances/instances.repository.js +17 -0
  87. package/lib-esm/lib/instances/instances.repository.js.map +1 -0
  88. package/lib-esm/lib/instances/instances.terminal-ui.d.ts +11 -0
  89. package/lib-esm/lib/instances/instances.terminal-ui.js +154 -0
  90. package/lib-esm/lib/instances/instances.terminal-ui.js.map +1 -0
  91. package/lib-esm/lib/instances/instances.worker.d.ts +18 -0
  92. package/lib-esm/lib/instances/instances.worker.js +42 -0
  93. package/lib-esm/lib/instances/instances.worker.js.map +1 -0
  94. package/lib-esm/lib/models.d.ts +8 -0
  95. package/lib-esm/lib/models.js +10 -0
  96. package/lib-esm/lib/models.js.map +1 -0
  97. package/lib-esm/lib/my-organization-proj.d.ts +1 -0
  98. package/lib-esm/lib/my-organization-proj.js +3 -0
  99. package/lib-esm/lib/my-organization-proj.js.map +1 -0
  100. package/lib-esm/lib/processes/index.d.ts +4 -0
  101. package/lib-esm/lib/processes/index.js +6 -0
  102. package/lib-esm/lib/processes/index.js.map +1 -0
  103. package/lib-esm/lib/processes/processes.context.d.ts +19 -0
  104. package/lib-esm/lib/processes/processes.context.js +21 -0
  105. package/lib-esm/lib/processes/processes.context.js.map +1 -0
  106. package/lib-esm/lib/processes/processes.controller.d.ts +13 -0
  107. package/lib-esm/lib/processes/processes.controller.js +168 -0
  108. package/lib-esm/lib/processes/processes.controller.js.map +1 -0
  109. package/lib-esm/lib/processes/processes.d.ts +24 -0
  110. package/lib-esm/lib/processes/processes.defaults-values.d.ts +2 -0
  111. package/lib-esm/lib/processes/processes.defaults-values.js +6 -0
  112. package/lib-esm/lib/processes/processes.defaults-values.js.map +1 -0
  113. package/lib-esm/lib/processes/processes.js +159 -0
  114. package/lib-esm/lib/processes/processes.js.map +1 -0
  115. package/lib-esm/lib/processes/processes.models.d.ts +33 -0
  116. package/lib-esm/lib/processes/processes.models.js +43 -0
  117. package/lib-esm/lib/processes/processes.models.js.map +1 -0
  118. package/lib-esm/lib/processes/processes.repository.d.ts +18 -0
  119. package/lib-esm/lib/processes/processes.repository.js +194 -0
  120. package/lib-esm/lib/processes/processes.repository.js.map +1 -0
  121. package/lib-esm/lib/processes/processes.terminal-ui.d.ts +19 -0
  122. package/lib-esm/lib/processes/processes.terminal-ui.js +378 -0
  123. package/lib-esm/lib/processes/processes.terminal-ui.js.map +1 -0
  124. package/lib-esm/lib/processes/processes.utils.d.ts +6 -0
  125. package/lib-esm/lib/processes/processes.utils.js +83 -0
  126. package/lib-esm/lib/processes/processes.utils.js.map +1 -0
  127. package/lib-esm/lib/processes/processes.worker.controller.d.ts +3 -0
  128. package/lib-esm/lib/processes/processes.worker.controller.js +13 -0
  129. package/lib-esm/lib/processes/processes.worker.controller.js.map +1 -0
  130. package/lib-esm/lib/processes/processes.worker.d.ts +18 -0
  131. package/lib-esm/lib/processes/processes.worker.js +52 -0
  132. package/lib-esm/lib/processes/processes.worker.js.map +1 -0
  133. package/lib-esm/lib/start-cli.d.ts +7 -0
  134. package/lib-esm/lib/start-cli.js +43 -0
  135. package/lib-esm/lib/start-cli.js.map +1 -0
  136. package/lib-esm/lib/traefik/traefik.models.d.ts +20 -0
  137. package/lib-esm/lib/traefik/traefik.models.js +2 -0
  138. package/lib-esm/lib/traefik/traefik.models.js.map +1 -0
  139. package/lib-esm/lib/traefik/traefik.provider.d.ts +42 -0
  140. package/lib-esm/lib/traefik/traefik.provider.js +575 -0
  141. package/lib-esm/lib/traefik/traefik.provider.js.map +1 -0
  142. package/lib-esm/lib/traefik/treafik-service.provider.d.ts +41 -0
  143. package/lib-esm/lib/traefik/treafik-service.provider.js +211 -0
  144. package/lib-esm/lib/traefik/treafik-service.provider.js.map +1 -0
  145. package/lib-prod/build-info._auto-generated_.d.ts +1 -1
  146. package/lib-prod/build-info._auto-generated_.js +1 -1
  147. package/lib-prod/instances/instances.context.js.map +1 -1
  148. package/lib-prod/instances/instances.controller.js.map +1 -1
  149. package/lib-prod/instances/instances.js.map +1 -1
  150. package/lib-prod/instances/instances.repository.js.map +1 -1
  151. package/lib-prod/instances/instances.terminal-ui.js.map +1 -1
  152. package/lib-prod/package.json +1 -1
  153. package/lib-prod/processes/processes.context.js.map +1 -1
  154. package/lib-prod/processes/processes.controller.js.map +1 -1
  155. package/lib-prod/processes/processes.js.map +1 -1
  156. package/lib-prod/processes/processes.repository.js.map +1 -1
  157. package/lib-prod/processes/processes.terminal-ui.js.map +1 -1
  158. package/lib-prod/processes/processes.utils.js.map +1 -1
  159. package/lib-prod/processes/processes.worker.controller.js.map +1 -1
  160. package/lib-prod/processes/processes.worker.js.map +1 -1
  161. package/lib-prod/traefik/traefik.provider.js +2 -2
  162. package/lib-prod/traefik/traefik.provider.js.map +1 -1
  163. package/lib-prod/traefik/treafik-service.provider.js.map +1 -1
  164. package/package.json +6 -2
  165. package/src.js +4 -20
  166. package/websql/fesm2022/cloud-websql.mjs +1 -1
  167. package/websql/fesm2022/cloud-websql.mjs.map +1 -1
  168. package/websql/package.json +1 -1
  169. package/websql/types/cloud-websql.d.ts +1 -1
  170. package/websql-prod/fesm2022/cloud-websql-prod.mjs +1 -1
  171. package/websql-prod/fesm2022/cloud-websql-prod.mjs.map +1 -1
  172. package/websql-prod/package.json +1 -1
  173. package/websql-prod/types/cloud-websql-prod.d.ts +1 -1
@@ -0,0 +1,575 @@
1
+ //#region imports
2
+ import { promisify } from 'util';
3
+ import { config } from 'tnp-core/lib';
4
+ import { _, chalk, child_process, crossPlatformPath, path, UtilsOs, UtilsTerminal, } from 'tnp-core/lib';
5
+ import { UtilsNetwork } from 'tnp-core/lib';
6
+ import { globalSpinner, taonBasePathToGlobalDockerTemplatesFn, } from 'tnp-core/lib';
7
+ import { BaseCliWorker, Helpers, HelpersTaon, UtilsDocker, } from 'tnp-helpers/lib';
8
+ import { TaonCloudStatus } from '../models';
9
+ // import type { TaonProjectsWorker } from '../taon.worker';
10
+ import { TraefikServiceProvider } from './treafik-service.provider';
11
+ //#endregion
12
+ export class TraefikProvider {
13
+ pathToTraefikComposeSourceTemplateFilesCwd;
14
+ //#region fields & getters
15
+ service = new TraefikServiceProvider(this);
16
+ cloudIps = [];
17
+ taonCloudStatus = TaonCloudStatus.NOT_STARED;
18
+ reverseProxyNetworkName = 'traefik-net';
19
+ //#region fields & getters / cloud is enabled
20
+ get cloudIsEnabled() {
21
+ //#region @backendFunc
22
+ return (this.taonCloudStatus === TaonCloudStatus.ENABLED_NOT_SECURE ||
23
+ this.taonCloudStatus === TaonCloudStatus.ENABLED_SECURED);
24
+ //#endregion
25
+ }
26
+ //#endregion
27
+ //#region fields & getters / is dev mode
28
+ get isDevMode() {
29
+ //#region @backendFunc
30
+ return (this.taonCloudStatus === TaonCloudStatus.ENABLED_NOT_SECURE ||
31
+ this.taonCloudStatus === TaonCloudStatus.STARTING_NOT_SECURE_MODE ||
32
+ Helpers.exists([
33
+ this.pathToTraefikComposeDestCwd,
34
+ `traefik-compose.local-dev.yml`,
35
+ ]));
36
+ //#endregion
37
+ }
38
+ //#endregion
39
+ //#region fields & getters / get path to compose dest
40
+ /**
41
+ * Path to traefik docker compose cwd where
42
+ * compose will be started
43
+ */
44
+ get pathToTraefikComposeDestCwd() {
45
+ //#region @backendFunc
46
+ const pathToComposeDest = crossPlatformPath([
47
+ taonBasePathToGlobalDockerTemplatesFn(),
48
+ path.basename(this.pathToTraefikComposeSourceTemplateFilesCwd()),
49
+ ]);
50
+ return pathToComposeDest;
51
+ //#endregion
52
+ }
53
+ //#endregion
54
+ //#endregion
55
+ constructor(
56
+ /**
57
+ * Path to traefik docker compose template files
58
+ */
59
+ pathToTraefikComposeSourceTemplateFilesCwd) {
60
+ this.pathToTraefikComposeSourceTemplateFilesCwd = pathToTraefikComposeSourceTemplateFilesCwd;
61
+ }
62
+ //#region protected methods
63
+ //#region protected methods / set enabled mode
64
+ setEnabledMode() {
65
+ if (this.isDevMode) {
66
+ this.taonCloudStatus = TaonCloudStatus.ENABLED_NOT_SECURE;
67
+ }
68
+ else {
69
+ this.taonCloudStatus = TaonCloudStatus.ENABLED_SECURED;
70
+ }
71
+ BaseCliWorker.cloudIp.next(_.first(this.cloudIps));
72
+ BaseCliWorker.isCloudEnable.next(true);
73
+ }
74
+ //#endregion
75
+ //#region protected methods / check if docker enabled
76
+ async checkIfDockerEnabled() {
77
+ //#region @backendFunc
78
+ Helpers.taskStarted(`Checking if docker is enabled...`);
79
+ const isEnableDocker = await UtilsOs.isDockerAvailable();
80
+ if (!isEnableDocker) {
81
+ Helpers.error(`
82
+
83
+ Docker is not enabled, please enable docker to use cloud features
84
+
85
+ `, true, true);
86
+ await UtilsTerminal.pressAnyKeyToContinueAsync();
87
+ return false;
88
+ }
89
+ Helpers.taskDone(`Docker is enabled!`);
90
+ return true;
91
+ //#endregion
92
+ }
93
+ //#endregion
94
+ //#region protected methods / delete traefik network
95
+ async deleteTraefikNetwork() {
96
+ //#region @backendFunc
97
+ try {
98
+ child_process.execSync(`docker network rm ${this.reverseProxyNetworkName}`, { stdio: 'inherit' });
99
+ console.log(`🗑️ Network deleted: ${this.reverseProxyNetworkName}`);
100
+ }
101
+ catch (error) {
102
+ console.log(`ℹ️ Network '${this.reverseProxyNetworkName}' probably does not exist, skipping.`);
103
+ }
104
+ //#endregion
105
+ }
106
+ //#endregion
107
+ //#region protected methods / make sure traefik network created
108
+ async makeSureTraefikNetworkCreated() {
109
+ //#region @backendFunc
110
+ try {
111
+ child_process.execSync(`docker network create ${this.reverseProxyNetworkName}`, {
112
+ stdio: 'ignore',
113
+ });
114
+ console.log(`✅ Network created: ${this.reverseProxyNetworkName}`);
115
+ }
116
+ catch (error) {
117
+ console.log(`ℹ️ Network '${this.reverseProxyNetworkName}' probably already exists, skipping.`);
118
+ }
119
+ //#endregion
120
+ }
121
+ //#endregion
122
+ //#region protected methods / select mode explain
123
+ async selectModeExplain() {
124
+ //#region @backendFunc
125
+ UtilsTerminal.clearConsole();
126
+ Helpers.info(`Taon Cloud Modes Explanation:
127
+ => ${chalk.bold.yellow('DEV MODE (ENABLED_NOT_SECURE)')}:
128
+ In this mode, Taon Cloud is enabled without SSL/TLS encryption.
129
+ This mode is suitable for development and testing purposes.
130
+ => ${chalk.bold.green('PRODUCTION MODE (ENABLED_SECURED)')}:
131
+ In this mode, Taon Cloud is enabled with SSL/TLS encryption.
132
+ This mode is intended for production environments where security is crucial.
133
+ `);
134
+ await UtilsTerminal.pressAnyKeyToContinueAsync();
135
+ //#endregion
136
+ }
137
+ //#endregion
138
+ //#region protected methods / select mode
139
+ async selectMode(options) {
140
+ //#region @backendFunc
141
+ options = options || {};
142
+ // options.skipDisabled = options.skipDisabled || false;
143
+ while (true) {
144
+ try {
145
+ let status;
146
+ const isOsWithoutGui = !UtilsOs.isRunningInOsWithGraphicsCapableEnvironment();
147
+ const optSecure = {
148
+ [TaonCloudStatus.STARTING_SECURE_MODE]: 'Enable Taon Cloud (PRODUCTION MODE)',
149
+ };
150
+ const optNotSecure = {
151
+ [TaonCloudStatus.STARTING_NOT_SECURE_MODE]: 'Enable Taon Cloud (DEV MODE)',
152
+ };
153
+ const optExplain = {
154
+ explain: {
155
+ name: '< Explain Taon Cloud modes >',
156
+ },
157
+ };
158
+ const choices = isOsWithoutGui
159
+ ? {
160
+ ...optSecure,
161
+ ...optNotSecure,
162
+ ...optExplain,
163
+ }
164
+ : {
165
+ ...optExplain,
166
+ ...optNotSecure,
167
+ ...optSecure,
168
+ };
169
+ const answer = await UtilsTerminal.select({
170
+ choices: choices,
171
+ question: `Select Taon Cloud mode:`,
172
+ });
173
+ if (answer === 'explain') {
174
+ await this.selectModeExplain();
175
+ continue;
176
+ }
177
+ status = answer;
178
+ return status;
179
+ }
180
+ catch (error) {
181
+ if (!(await UtilsTerminal.pressAnyKeyToTryAgainErrorOccurred(error))) {
182
+ break;
183
+ }
184
+ }
185
+ }
186
+ //#endregion
187
+ }
188
+ //#endregion
189
+ //#region protected methods / get worker terminal actions
190
+ async checkIfTraefikIsRunning(options) {
191
+ //#region @backendFunc
192
+ let tries = 0;
193
+ options = options || {};
194
+ if (options.waitUntilHealthy) {
195
+ options.maxTries = options.maxTries || 50;
196
+ }
197
+ const execAsync = promisify(child_process.exec);
198
+ globalSpinner.instance.start(`Traefik health: checking...`);
199
+ while (true) {
200
+ tries++;
201
+ if (options.maxTries && tries > options.maxTries) {
202
+ globalSpinner.instance.fail(`Traefik is not running or not healthy after ${tries} tries`);
203
+ return false;
204
+ }
205
+ try {
206
+ const { stdout } = await execAsync(process.platform === 'win32'
207
+ ? `docker inspect --format="{{json .State.Health.Status}}" traefik`
208
+ : `docker inspect --format='{{json .State.Health.Status}}' traefik`);
209
+ const status = stdout.trim().replace(/"/g, '');
210
+ globalSpinner.instance.text = `Traefik health: ${status}`;
211
+ if (status === 'healthy') {
212
+ globalSpinner.instance.succeed(`Traefik is ready`);
213
+ await UtilsTerminal.wait(1);
214
+ return true;
215
+ }
216
+ if (status === 'unhealthy') {
217
+ if (options.waitUntilHealthy) {
218
+ globalSpinner.instance.text =
219
+ 'Traefik state is not healthy yet, waiting...';
220
+ }
221
+ else {
222
+ globalSpinner.instance.fail(`Traefik state is not running or not healthy`);
223
+ return false;
224
+ }
225
+ }
226
+ }
227
+ catch (error) {
228
+ if (options.waitUntilHealthy) {
229
+ globalSpinner.instance.text =
230
+ 'Traefik is not healthy yet, waiting...';
231
+ }
232
+ else {
233
+ globalSpinner.instance.fail('Traefik is not running or not healthy');
234
+ return false;
235
+ }
236
+ }
237
+ await UtilsTerminal.wait(1);
238
+ }
239
+ //#endregion
240
+ }
241
+ //#endregion
242
+ //#region protected methods / select cloud ips
243
+ async selectCloudIps() {
244
+ //#region @backendFunc
245
+ //#region select ip type
246
+ const localIps = await UtilsNetwork.getLocalIpAddresses();
247
+ const optPublic = {
248
+ usePublic: {
249
+ name: 'Use Public IP Address (recommended on server)',
250
+ },
251
+ };
252
+ const optLocal = {
253
+ useLocal: {
254
+ name: 'Use Local IP Address',
255
+ },
256
+ };
257
+ const isOsWithoutGui = !UtilsOs.isRunningInOsWithGraphicsCapableEnvironment();
258
+ const choicesIpType = isOsWithoutGui
259
+ ? {
260
+ ...optPublic,
261
+ ...optLocal,
262
+ }
263
+ : {
264
+ ...optLocal,
265
+ ...optPublic,
266
+ };
267
+ const useIp = await UtilsTerminal.select({
268
+ choices: choicesIpType,
269
+ });
270
+ //#endregion
271
+ if (useIp === 'usePublic') {
272
+ //#region use public ip
273
+ while (true) {
274
+ try {
275
+ Helpers.info(`Detecting public IP address...`);
276
+ let publicIp = await UtilsNetwork.getCurrentPublicIpAddress();
277
+ const choicesPublicIp = {
278
+ confirm: {
279
+ name: `Use detected public IP: ${chalk.bold(publicIp)}`,
280
+ },
281
+ manual: {
282
+ name: 'Enter public IP manually',
283
+ },
284
+ abort: {
285
+ name: '< abort and go back >',
286
+ },
287
+ };
288
+ const selectedChoice = await UtilsTerminal.select({
289
+ choices: choicesPublicIp,
290
+ question: `Select option for public IP address:`,
291
+ });
292
+ if (selectedChoice === 'abort') {
293
+ return false;
294
+ }
295
+ if (selectedChoice === 'manual') {
296
+ publicIp = await UtilsTerminal.input({
297
+ question: `Enter public IP address to be used by Taon Cloud:`,
298
+ required: true,
299
+ validate: ip => {
300
+ return UtilsNetwork.isValidIp(ip);
301
+ },
302
+ });
303
+ }
304
+ this.cloudIps.length = 0;
305
+ this.cloudIps.push(publicIp);
306
+ if (!(await this.areCloudIpsValid())) {
307
+ continue;
308
+ }
309
+ return true;
310
+ }
311
+ catch (error) {
312
+ if (!(await UtilsTerminal.pressAnyKeyToTryAgainErrorOccurred(error))) {
313
+ return false;
314
+ }
315
+ else {
316
+ continue;
317
+ }
318
+ }
319
+ }
320
+ //#endregion
321
+ }
322
+ else {
323
+ //#region use local ip
324
+ let i = 0;
325
+ while (true) {
326
+ i++;
327
+ try {
328
+ if (i > 1) {
329
+ const shouldContinue = await UtilsTerminal.confirm({
330
+ message: `Selecting again IP addresses. Do you want to continue?`,
331
+ defaultValue: true,
332
+ });
333
+ if (!shouldContinue) {
334
+ return false;
335
+ }
336
+ }
337
+ const choices = [
338
+ ...localIps
339
+ .filter(f => f.family === 'IPv4')
340
+ .map(ip => ({
341
+ name: `Local IP: ${ip.address} (${ip.type})`,
342
+ value: ip.address,
343
+ })),
344
+ ];
345
+ const selected = await UtilsTerminal.select({
346
+ choices: choices,
347
+ question: `Select IP addresses to be used by Taon Cloud:`,
348
+ });
349
+ this.cloudIps.length = 0;
350
+ this.cloudIps.push(selected);
351
+ if (!(await this.areCloudIpsValid())) {
352
+ continue;
353
+ }
354
+ return true;
355
+ }
356
+ catch (error) {
357
+ if (!(await UtilsTerminal.pressAnyKeyToTryAgainErrorOccurred(error))) {
358
+ break;
359
+ }
360
+ continue;
361
+ }
362
+ }
363
+ //#endregion
364
+ }
365
+ //#endregion
366
+ }
367
+ //#endregion
368
+ //#endregion
369
+ //#region public methods
370
+ //#region protected methods / validate ips
371
+ async areCloudIpsValid() {
372
+ //#region @backendFunc
373
+ for (const localIp of this.cloudIps) {
374
+ Helpers.info(`Validating IP address (ping): ${localIp}...`);
375
+ if (!(await UtilsNetwork.checkIfServerPings(localIp))) {
376
+ Helpers.error(`Server with IP ${localIp} is not reachable! Please select only reachable IPs.`, true, true);
377
+ return false;
378
+ }
379
+ }
380
+ return true;
381
+ //#endregion
382
+ }
383
+ //#endregion
384
+ //#region public methods / initial cloud status check
385
+ async initialCloudStatusCheck() {
386
+ //#region @backendFunc
387
+ const isDockerRunning = await UtilsOs.isDockerAvailable();
388
+ if (isDockerRunning) {
389
+ Helpers.logInfo(`Docker is running.. checking if Traefik is enabled...`);
390
+ }
391
+ else {
392
+ return;
393
+ }
394
+ const ipFromYml = this.service.getIpFromYml();
395
+ if (!ipFromYml) {
396
+ console.warn(`Can find ip from traefik dynamic config yml, assuming Traefik is not configured.`);
397
+ Helpers.info(`Shutting down Traefik if running...`);
398
+ await this.stopTraefik();
399
+ return;
400
+ }
401
+ this.cloudIps.push(ipFromYml);
402
+ const isTraefikRunning = await this.checkIfTraefikIsRunning();
403
+ if (isTraefikRunning) {
404
+ Helpers.info(`Traefik is running with IP: ${ipFromYml}`);
405
+ Helpers.info(`Restarting Traefik to refresh new settings...`);
406
+ await this.restartTraefik();
407
+ this.setEnabledMode();
408
+ }
409
+ else {
410
+ console.warn(`Traefik is not running even if configured with IP: ${ipFromYml}`);
411
+ Helpers.info(`Shutting down Traefik if running...`);
412
+ await this.stopTraefik();
413
+ return;
414
+ }
415
+ //#endregion
416
+ }
417
+ //#endregion
418
+ //#region public methods / restart traefik
419
+ async restartTraefik(options) {
420
+ //#region @backendFunc
421
+ options = options || {};
422
+ if (options.hardRestart) {
423
+ await this.stopTraefik();
424
+ await this.startTraefik();
425
+ return;
426
+ }
427
+ console.log(`🚀 Restarting Traefik ${this.isDevMode ? 'DEV' : 'PROD'}...`);
428
+ const execAsync = promisify(child_process.exec);
429
+ try {
430
+ await execAsync(`docker compose -f ` +
431
+ ` traefik-compose${this.isDevMode ? '.local-dev' : ''}.yml down`, {
432
+ cwd: this.pathToTraefikComposeDestCwd,
433
+ });
434
+ await execAsync(`docker compose -f ` +
435
+ ` traefik-compose${this.isDevMode ? '.local-dev' : ''}.yml up -d traefik`, {
436
+ cwd: this.pathToTraefikComposeDestCwd,
437
+ });
438
+ }
439
+ catch (error) {
440
+ config.frameworkName === 'tnp' && console.error(error);
441
+ Helpers.warn('Error restarting Traefik:');
442
+ }
443
+ //#endregion
444
+ }
445
+ //#endregion
446
+ //#region public methods / start traefik
447
+ async startTraefik() {
448
+ //#region @backendFunc
449
+ if (!(await this.checkIfDockerEnabled())) {
450
+ return false;
451
+ }
452
+ this.taonCloudStatus = await this.selectMode({
453
+ skipDisabled: true,
454
+ });
455
+ if (!(await this.selectCloudIps())) {
456
+ console.error('No IPs selected, cannot start Traefik');
457
+ this.taonCloudStatus = TaonCloudStatus.NOT_STARED;
458
+ return false;
459
+ }
460
+ await this.makeSureTraefikNetworkCreated();
461
+ console.log(`🚀 Starting Traefik ${this.isDevMode ? 'DEV' : 'PROD'}...`);
462
+ const execAsync = promisify(child_process.exec);
463
+ Helpers.removeFolderIfExists(this.pathToTraefikComposeDestCwd);
464
+ HelpersTaon.copy(this.pathToTraefikComposeSourceTemplateFilesCwd(), this.pathToTraefikComposeDestCwd, {
465
+ recursive: true,
466
+ });
467
+ this.service.initServiceReadme();
468
+ // remove not used file
469
+ Helpers.removeFileIfExists([
470
+ this.pathToTraefikComposeDestCwd,
471
+ `traefik-compose${!this.isDevMode ? '.local-dev' : ''}.yml`,
472
+ ]);
473
+ await execAsync(`docker compose -f ` +
474
+ ` traefik-compose${this.isDevMode ? '.local-dev' : ''}.yml up -d traefik`, {
475
+ cwd: this.pathToTraefikComposeDestCwd,
476
+ });
477
+ // Wait until container health becomes healthy
478
+ const isTraefikRunning = await this.checkIfTraefikIsRunning({
479
+ waitUntilHealthy: true,
480
+ });
481
+ if (isTraefikRunning) {
482
+ this.setEnabledMode();
483
+ for (const cloudIp of this.cloudIps) {
484
+ const workers = BaseCliWorker.getAllWorkersStartedInSystemFromCurrentCli();
485
+ await this.service.registerWorkers(cloudIp, workers);
486
+ }
487
+ await this.restartTraefik();
488
+ }
489
+ else {
490
+ this.taonCloudStatus = TaonCloudStatus.NOT_STARED;
491
+ }
492
+ return isTraefikRunning;
493
+ //#endregion
494
+ }
495
+ //#endregion
496
+ //#region public methods / stop traefik
497
+ async stopTraefik() {
498
+ //#region @backendFunc
499
+ this.taonCloudStatus = TaonCloudStatus.KILLING;
500
+ console.log('Stopping Traefik...');
501
+ await this.deleteTraefikNetwork();
502
+ const execAsync = promisify(child_process.exec);
503
+ const localDevFileBasename = `traefik-compose.local-dev.yml`;
504
+ const prodFileBasename = `traefik-compose.yml`;
505
+ // Start traefik in detached mode
506
+ const devFileExists = Helpers.exists([
507
+ this.pathToTraefikComposeDestCwd,
508
+ localDevFileBasename,
509
+ ]);
510
+ const prodFileExists = Helpers.exists([
511
+ this.pathToTraefikComposeDestCwd,
512
+ prodFileBasename,
513
+ ]);
514
+ let composeDownBothFiles = devFileExists && prodFileExists;
515
+ if (!Helpers.exists(this.pathToTraefikComposeDestCwd)) {
516
+ HelpersTaon.copy(this.pathToTraefikComposeSourceTemplateFilesCwd(), this.pathToTraefikComposeDestCwd, {
517
+ recursive: true,
518
+ });
519
+ composeDownBothFiles = true;
520
+ }
521
+ const composeDownFile = async (filename) => {
522
+ return await execAsync(`docker compose -f ${filename} down`, {
523
+ cwd: this.pathToTraefikComposeDestCwd,
524
+ });
525
+ };
526
+ if (composeDownBothFiles) {
527
+ Helpers.logInfo('Composing down both dev and production mode traefik...');
528
+ try {
529
+ await composeDownFile(localDevFileBasename);
530
+ }
531
+ catch (error) {
532
+ console.log('Error stopping Traefik dev mode');
533
+ }
534
+ try {
535
+ await composeDownFile(prodFileBasename);
536
+ }
537
+ catch (error) {
538
+ console.log('Error stopping Traefik production mode');
539
+ }
540
+ }
541
+ else {
542
+ while (true) {
543
+ try {
544
+ if (Helpers.exists([
545
+ this.pathToTraefikComposeDestCwd,
546
+ localDevFileBasename,
547
+ ])) {
548
+ Helpers.logInfo('Composing down dev mode traefik...');
549
+ await composeDownFile(localDevFileBasename);
550
+ }
551
+ if (Helpers.exists([this.pathToTraefikComposeDestCwd, prodFileBasename])) {
552
+ Helpers.logInfo('Composing down production mode traefik...');
553
+ await composeDownFile(prodFileBasename);
554
+ }
555
+ break;
556
+ }
557
+ catch (error) {
558
+ Helpers.error('Error stopping Traefik', true, true);
559
+ const tryAgain = await UtilsTerminal.pressAnyKeyToTryAgainErrorOccurred(error);
560
+ if (!tryAgain) {
561
+ break;
562
+ }
563
+ }
564
+ }
565
+ }
566
+ await UtilsDocker.cleanImagesAndContainersByDockerLabel('org.opencontainers.image.title', 'Traefik');
567
+ Helpers.removeFolderIfExists(this.pathToTraefikComposeDestCwd);
568
+ this.taonCloudStatus = TaonCloudStatus.NOT_STARED;
569
+ BaseCliWorker.isCloudEnable.next(false);
570
+ // docker compose rm -f traefik
571
+ // docker compose down --remove-orphans
572
+ //#endregion
573
+ }
574
+ }
575
+ //# sourceMappingURL=traefik.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traefik.provider.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { BaseCliWorker } from 'tnp-helpers/lib';
2
+ import { TraefikProvider } from './traefik.provider';
3
+ export declare class TraefikServiceProvider {
4
+ private traefikProvider;
5
+ constructor(traefikProvider: TraefikProvider);
6
+ protected get dynamicServicesRelativePathPart(): string;
7
+ protected getRuleFromIp(options: {
8
+ publicOrLocalIp: string;
9
+ worker?: BaseCliWorker<any, any>;
10
+ }): string;
11
+ protected yamlPathForServiceName(options: {
12
+ ipAsServiceName: string;
13
+ }): string;
14
+ getIpFromYml(): string | undefined;
15
+ initServiceReadme(): void;
16
+ registerWorkers(publicOrLocalIp: string, workers: BaseCliWorker<any, any>[], options?: {
17
+ /**
18
+ * If true, Traefik will be restarted after registering the service
19
+ */
20
+ restartTraefikAfterRegister?: boolean;
21
+ }): Promise<void>;
22
+ /**
23
+ * @deprecated
24
+ */
25
+ register(publicOrLocalIp: string, localhostPort: number, options?: {
26
+ /**
27
+ * If true, Traefik will be restarted after registering the service
28
+ */
29
+ restartTraefikAfterRegister?: boolean;
30
+ }): Promise<boolean>;
31
+ /**
32
+ * Remove traefik routes for service
33
+ * @param serviceId service name to unregister (kebab-case)
34
+ */
35
+ unregister(publicOrLocalIp: string): Promise<void>;
36
+ /**
37
+ * Check if a service is already registered in Traefik
38
+ * (by verifying if dynamic YAML config exists)
39
+ */
40
+ isRegistered(publicOrLocalIp: string): Promise<boolean>;
41
+ }