@taon-dev/cloud 21.0.207

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