tnp-helpers 18.0.14 → 18.0.16

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 (216) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/README.md +24 -24
  3. package/browser/esm2022/lib/base/base-cli-worker-config.mjs +40 -0
  4. package/browser/esm2022/lib/base/base-cli-worker-controller.mjs +125 -0
  5. package/browser/esm2022/lib/base/base-cli-worker.mjs +451 -0
  6. package/browser/esm2022/lib/base/base-compiler-for-project.mjs +14 -1
  7. package/browser/esm2022/lib/base/base-db.mjs +2 -1
  8. package/browser/esm2022/lib/base/base-debounce-compiler-for-project.mjs +6 -2
  9. package/browser/esm2022/lib/base/base-git.mjs +9 -4
  10. package/browser/esm2022/lib/base/base-github-pages.mjs +110 -0
  11. package/browser/esm2022/lib/base/base-linked-projects.mjs +22 -3
  12. package/browser/esm2022/lib/base/base-project-resolver.mjs +9 -6
  13. package/browser/esm2022/lib/base/base-project.mjs +34 -2
  14. package/browser/esm2022/lib/base/base-quick-fixes.mjs +1 -1
  15. package/browser/esm2022/lib/base/base-release-process.mjs +1 -1
  16. package/browser/esm2022/lib/base/base-vscode.mjs +27 -1
  17. package/browser/esm2022/lib/base/core-project.mjs +1 -1
  18. package/browser/esm2022/lib/base/index.mjs +4 -1
  19. package/browser/esm2022/lib/base/linked-project.mjs +18 -1
  20. package/browser/esm2022/lib/base/ports-worker.mjs +162 -0
  21. package/browser/esm2022/lib/helpers/helpers.mjs +1 -3
  22. package/browser/esm2022/lib/models.mjs +1 -1
  23. package/browser/esm2022/lib/utils.mjs +119 -1
  24. package/browser/fesm2022/tnp-helpers.mjs +1066 -74
  25. package/browser/fesm2022/tnp-helpers.mjs.map +1 -1
  26. package/browser/lib/base/base-cli-worker-config.d.ts +28 -0
  27. package/browser/lib/base/base-cli-worker-controller.d.ts +16 -0
  28. package/browser/lib/base/base-cli-worker.d.ts +83 -0
  29. package/browser/lib/base/base-compiler-for-project.d.ts +2 -0
  30. package/browser/lib/base/base-debounce-compiler-for-project.d.ts +4 -0
  31. package/browser/lib/base/base-git.d.ts +3 -3
  32. package/browser/lib/base/base-github-pages.d.ts +15 -0
  33. package/browser/lib/base/base-linked-projects.d.ts +2 -1
  34. package/browser/lib/base/base-project-resolver.d.ts +6 -7
  35. package/browser/lib/base/base-project.d.ts +18 -7
  36. package/browser/lib/base/base-quick-fixes.d.ts +1 -1
  37. package/browser/lib/base/base-release-process.d.ts +1 -1
  38. package/browser/lib/base/core-project.d.ts +2 -2
  39. package/browser/lib/base/index.d.ts +3 -0
  40. package/browser/lib/base/linked-project.d.ts +1 -0
  41. package/browser/lib/base/ports-worker.d.ts +33 -0
  42. package/browser/lib/utils.d.ts +12 -0
  43. package/client/README.md +24 -24
  44. package/client/esm2022/lib/base/base-cli-worker-config.mjs +40 -0
  45. package/client/esm2022/lib/base/base-cli-worker-controller.mjs +125 -0
  46. package/client/esm2022/lib/base/base-cli-worker.mjs +451 -0
  47. package/client/esm2022/lib/base/base-compiler-for-project.mjs +14 -1
  48. package/client/esm2022/lib/base/base-db.mjs +2 -1
  49. package/client/esm2022/lib/base/base-debounce-compiler-for-project.mjs +6 -2
  50. package/client/esm2022/lib/base/base-git.mjs +9 -4
  51. package/client/esm2022/lib/base/base-github-pages.mjs +110 -0
  52. package/client/esm2022/lib/base/base-linked-projects.mjs +22 -3
  53. package/client/esm2022/lib/base/base-project-resolver.mjs +9 -6
  54. package/client/esm2022/lib/base/base-project.mjs +34 -2
  55. package/client/esm2022/lib/base/base-quick-fixes.mjs +1 -1
  56. package/client/esm2022/lib/base/base-release-process.mjs +1 -1
  57. package/client/esm2022/lib/base/base-vscode.mjs +27 -1
  58. package/client/esm2022/lib/base/core-project.mjs +1 -1
  59. package/client/esm2022/lib/base/index.mjs +4 -1
  60. package/client/esm2022/lib/base/linked-project.mjs +18 -1
  61. package/client/esm2022/lib/base/ports-worker.mjs +162 -0
  62. package/client/esm2022/lib/helpers/helpers.mjs +1 -3
  63. package/client/esm2022/lib/models.mjs +1 -1
  64. package/client/esm2022/lib/utils.mjs +119 -1
  65. package/client/fesm2022/tnp-helpers.mjs +1066 -74
  66. package/client/fesm2022/tnp-helpers.mjs.map +1 -1
  67. package/client/lib/base/base-cli-worker-config.d.ts +28 -0
  68. package/client/lib/base/base-cli-worker-controller.d.ts +16 -0
  69. package/client/lib/base/base-cli-worker.d.ts +83 -0
  70. package/client/lib/base/base-compiler-for-project.d.ts +2 -0
  71. package/client/lib/base/base-debounce-compiler-for-project.d.ts +4 -0
  72. package/client/lib/base/base-git.d.ts +3 -3
  73. package/client/lib/base/base-github-pages.d.ts +15 -0
  74. package/client/lib/base/base-linked-projects.d.ts +2 -1
  75. package/client/lib/base/base-project-resolver.d.ts +6 -7
  76. package/client/lib/base/base-project.d.ts +18 -7
  77. package/client/lib/base/base-quick-fixes.d.ts +1 -1
  78. package/client/lib/base/base-release-process.d.ts +1 -1
  79. package/client/lib/base/core-project.d.ts +2 -2
  80. package/client/lib/base/index.d.ts +3 -0
  81. package/client/lib/base/linked-project.d.ts +1 -0
  82. package/client/lib/base/ports-worker.d.ts +33 -0
  83. package/client/lib/utils.d.ts +12 -0
  84. package/lib/base/base-cli-worker-config.d.ts +27 -0
  85. package/lib/base/base-cli-worker-config.js +53 -0
  86. package/lib/base/base-cli-worker-config.js.map +1 -0
  87. package/lib/base/base-cli-worker-controller.d.ts +15 -0
  88. package/lib/base/base-cli-worker-controller.js +154 -0
  89. package/lib/base/base-cli-worker-controller.js.map +1 -0
  90. package/lib/base/base-cli-worker.d.ts +82 -0
  91. package/lib/base/base-cli-worker.js +654 -0
  92. package/lib/base/base-cli-worker.js.map +1 -0
  93. package/lib/base/base-command-line.backend.d.ts +3 -0
  94. package/lib/base/base-command-line.backend.js +41 -0
  95. package/lib/base/base-command-line.backend.js.map +1 -1
  96. package/lib/base/base-compiler-for-project.js +2 -1
  97. package/lib/base/base-compiler-for-project.js.map +1 -1
  98. package/lib/base/base-db.d.ts +1 -1
  99. package/lib/base/base-db.js +2 -2
  100. package/lib/base/base-db.js.map +1 -1
  101. package/lib/base/base-debounce-compiler-for-project.d.ts +4 -0
  102. package/lib/base/base-debounce-compiler-for-project.js +5 -1
  103. package/lib/base/base-debounce-compiler-for-project.js.map +1 -1
  104. package/lib/base/base-git.d.ts +3 -3
  105. package/lib/base/base-git.js +18 -18
  106. package/lib/base/base-git.js.map +1 -1
  107. package/lib/base/base-github-pages.d.ts +14 -0
  108. package/lib/base/base-github-pages.js +173 -0
  109. package/lib/base/base-github-pages.js.map +1 -0
  110. package/lib/base/base-linked-projects.d.ts +2 -1
  111. package/lib/base/base-linked-projects.js +30 -22
  112. package/lib/base/base-linked-projects.js.map +1 -1
  113. package/lib/base/base-project-resolver.d.ts +6 -7
  114. package/lib/base/base-project-resolver.js +14 -5
  115. package/lib/base/base-project-resolver.js.map +1 -1
  116. package/lib/base/base-project.d.ts +18 -7
  117. package/lib/base/base-project.js +38 -2
  118. package/lib/base/base-project.js.map +1 -1
  119. package/lib/base/base-quick-fixes.d.ts +1 -1
  120. package/lib/base/base-release-process.d.ts +1 -1
  121. package/lib/base/base-vscode.js +19 -5
  122. package/lib/base/base-vscode.js.map +1 -1
  123. package/lib/base/config-database.js +2 -2
  124. package/lib/base/config-database.js.map +1 -1
  125. package/lib/base/core-project.d.ts +2 -2
  126. package/lib/base/gh-temp-code.d.ts +3 -0
  127. package/lib/base/gh-temp-code.js +4 -2
  128. package/lib/base/gh-temp-code.js.map +1 -1
  129. package/lib/base/index.d.ts +3 -0
  130. package/lib/base/index.js +3 -0
  131. package/lib/base/index.js.map +1 -1
  132. package/lib/base/linked-project.d.ts +1 -0
  133. package/lib/base/linked-project.js +18 -0
  134. package/lib/base/linked-project.js.map +1 -1
  135. package/lib/base/ports-worker.d.ts +32 -0
  136. package/lib/base/ports-worker.js +244 -0
  137. package/lib/base/ports-worker.js.map +1 -0
  138. package/lib/base/project-database.js +1 -1
  139. package/lib/base/project-database.js.map +1 -1
  140. package/lib/helpers/for-backend/helpers-cli-tool.backend.js +0 -1
  141. package/lib/helpers/for-backend/helpers-cli-tool.backend.js.map +1 -1
  142. package/lib/helpers/for-backend/helpers-console-gui.d.ts +1 -1
  143. package/lib/helpers/for-backend/helpers-file-folders.backend.js +1 -1
  144. package/lib/helpers/for-backend/helpers-file-folders.backend.js.map +1 -1
  145. package/lib/helpers/for-backend/helpers-process.backend.d.ts +7 -3
  146. package/lib/helpers/for-backend/helpers-process.backend.js +28 -36
  147. package/lib/helpers/for-backend/helpers-process.backend.js.map +1 -1
  148. package/lib/helpers/for-backend/ts-code/index.d.ts +0 -2
  149. package/lib/helpers/for-backend/ts-code/index.js +0 -2
  150. package/lib/helpers/for-backend/ts-code/index.js.map +1 -1
  151. package/lib/helpers/for-browser/angular.helper.js +2 -2
  152. package/lib/helpers/helpers.d.ts +0 -4
  153. package/lib/helpers/helpers.js +1 -7
  154. package/lib/helpers/helpers.js.map +1 -1
  155. package/lib/old/base-component.js +2 -2
  156. package/lib/old/base-formly-component.js +2 -2
  157. package/lib/old/dual-component-ctrl.js +2 -2
  158. package/lib/utils.d.ts +12 -0
  159. package/lib/utils.js +123 -0
  160. package/lib/utils.js.map +1 -1
  161. package/migrations/index.d.ts +1 -0
  162. package/migrations/index.js +6 -0
  163. package/migrations/index.js.map +1 -0
  164. package/migrations/migrations_index._auto-generated_.d.ts +0 -0
  165. package/migrations/migrations_index._auto-generated_.js +4 -0
  166. package/migrations/migrations_index._auto-generated_.js.map +1 -0
  167. package/package.json +5 -5
  168. package/taon.jsonc +49 -49
  169. package/tmp-environment.json +39 -31
  170. package/websql/README.md +24 -24
  171. package/websql/esm2022/lib/base/base-cli-worker-config.mjs +40 -0
  172. package/websql/esm2022/lib/base/base-cli-worker-controller.mjs +125 -0
  173. package/websql/esm2022/lib/base/base-cli-worker.mjs +451 -0
  174. package/websql/esm2022/lib/base/base-compiler-for-project.mjs +14 -1
  175. package/websql/esm2022/lib/base/base-db.mjs +2 -1
  176. package/websql/esm2022/lib/base/base-debounce-compiler-for-project.mjs +6 -2
  177. package/websql/esm2022/lib/base/base-git.mjs +9 -4
  178. package/websql/esm2022/lib/base/base-github-pages.mjs +110 -0
  179. package/websql/esm2022/lib/base/base-linked-projects.mjs +22 -3
  180. package/websql/esm2022/lib/base/base-project-resolver.mjs +9 -6
  181. package/websql/esm2022/lib/base/base-project.mjs +34 -2
  182. package/websql/esm2022/lib/base/base-quick-fixes.mjs +1 -1
  183. package/websql/esm2022/lib/base/base-release-process.mjs +1 -1
  184. package/websql/esm2022/lib/base/base-vscode.mjs +27 -1
  185. package/websql/esm2022/lib/base/core-project.mjs +1 -1
  186. package/websql/esm2022/lib/base/index.mjs +4 -1
  187. package/websql/esm2022/lib/base/linked-project.mjs +18 -1
  188. package/websql/esm2022/lib/base/ports-worker.mjs +165 -0
  189. package/websql/esm2022/lib/helpers/helpers.mjs +1 -3
  190. package/websql/esm2022/lib/models.mjs +1 -1
  191. package/websql/esm2022/lib/utils.mjs +119 -1
  192. package/websql/fesm2022/tnp-helpers.mjs +1060 -65
  193. package/websql/fesm2022/tnp-helpers.mjs.map +1 -1
  194. package/websql/lib/base/base-cli-worker-config.d.ts +28 -0
  195. package/websql/lib/base/base-cli-worker-controller.d.ts +16 -0
  196. package/websql/lib/base/base-cli-worker.d.ts +83 -0
  197. package/websql/lib/base/base-compiler-for-project.d.ts +2 -0
  198. package/websql/lib/base/base-debounce-compiler-for-project.d.ts +4 -0
  199. package/websql/lib/base/base-git.d.ts +3 -3
  200. package/websql/lib/base/base-github-pages.d.ts +15 -0
  201. package/websql/lib/base/base-linked-projects.d.ts +2 -1
  202. package/websql/lib/base/base-project-resolver.d.ts +6 -7
  203. package/websql/lib/base/base-project.d.ts +18 -7
  204. package/websql/lib/base/base-quick-fixes.d.ts +1 -1
  205. package/websql/lib/base/base-release-process.d.ts +1 -1
  206. package/websql/lib/base/core-project.d.ts +2 -2
  207. package/websql/lib/base/index.d.ts +3 -0
  208. package/websql/lib/base/linked-project.d.ts +1 -0
  209. package/websql/lib/base/ports-worker.d.ts +33 -0
  210. package/websql/lib/utils.d.ts +12 -0
  211. package/lib/helpers/for-backend/ts-code/ts-code-extractor.d.ts +0 -26
  212. package/lib/helpers/for-backend/ts-code/ts-code-extractor.js +0 -62
  213. package/lib/helpers/for-backend/ts-code/ts-code-extractor.js.map +0 -1
  214. package/lib/helpers/for-backend/ts-code/ts-code-modifier.backend.d.ts +0 -19
  215. package/lib/helpers/for-backend/ts-code/ts-code-modifier.backend.js +0 -81
  216. package/lib/helpers/for-backend/ts-code/ts-code-modifier.backend.js.map +0 -1
@@ -0,0 +1,654 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseCliWorker = void 0;
4
+ var tslib_1 = require("tslib");
5
+ //#region imports
6
+ var tnp_core_1 = require("tnp-core");
7
+ var index_1 = require("../index");
8
+ var base_cli_worker_config_1 = require("./base-cli-worker-config");
9
+ //#endregion
10
+ //#region constants
11
+ var WORKER_INIT_START_TIME_LIMIT = 25; // 15 seconds max to start worker
12
+ var START_PORT_FOR_SERVICES = 3600;
13
+ //#endregion
14
+ var BaseCliWorker = /** @class */ (function () {
15
+ //#region constructor
16
+ function BaseCliWorker(
17
+ /**
18
+ * unique id for service
19
+ */
20
+ serviceID,
21
+ /**
22
+ * external command that will start service
23
+ */
24
+ startCommand,
25
+ /**
26
+ * unique id for service
27
+ */
28
+ serviceVersion) {
29
+ this.serviceID = serviceID;
30
+ this.startCommand = startCommand;
31
+ this.serviceVersion = serviceVersion;
32
+ }
33
+ Object.defineProperty(BaseCliWorker.prototype, "pathToProcessLocalInfoJson", {
34
+ //#endregion
35
+ //#region fields & getters
36
+ //#region fields & getters / path to process local info
37
+ get: function () {
38
+ //#region @backendFunc
39
+ // console.log('os.userInfo()', os.userInfo());
40
+ return (0, tnp_core_1.crossPlatformPath)([
41
+ tnp_core_1.os.userInfo().homedir,
42
+ ".taon",
43
+ '__workers-service-process-info__',
44
+ "".concat(this.serviceID, ".json"),
45
+ ]);
46
+ //#endregion
47
+ },
48
+ enumerable: false,
49
+ configurable: true
50
+ });
51
+ Object.defineProperty(BaseCliWorker.prototype, "processLocalInfoObj", {
52
+ //#endregion
53
+ //#region fields & getters / process local info json object
54
+ get: function () {
55
+ //#region @backendFunc
56
+ var configJson = index_1.Helpers.readJson5(this.pathToProcessLocalInfoJson) || {};
57
+ if (tnp_core_1._.isObject(configJson)) {
58
+ return tnp_core_1._.merge(new base_cli_worker_config_1.BaseCliWorkerConfig(), configJson);
59
+ }
60
+ return new base_cli_worker_config_1.BaseCliWorkerConfig();
61
+ //#endregion
62
+ },
63
+ enumerable: false,
64
+ configurable: true
65
+ });
66
+ //#endregion
67
+ //#endregion
68
+ //#region public methods
69
+ //#region public methods / start if needs to be started
70
+ BaseCliWorker.prototype.startDetachedIfNeedsToBeStarted = function () {
71
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
72
+ var serviceIsHealthy;
73
+ return tslib_1.__generator(this, function (_a) {
74
+ switch (_a.label) {
75
+ case 0:
76
+ if (!this.processLocalInfoObj.isEmpty) return [3 /*break*/, 2];
77
+ // not started ever yet
78
+ return [4 /*yield*/, this.startDetached()];
79
+ case 1:
80
+ // not started ever yet
81
+ _a.sent();
82
+ return [2 /*return*/];
83
+ case 2: return [4 /*yield*/, this.isServiceHealthy({
84
+ healthCheckRequestTrys: 1, // just quick check
85
+ })];
86
+ case 3:
87
+ serviceIsHealthy = _a.sent();
88
+ if (!!serviceIsHealthy) return [3 /*break*/, 5];
89
+ return [4 /*yield*/, this.startDetached()];
90
+ case 4:
91
+ _a.sent();
92
+ return [2 /*return*/];
93
+ case 5:
94
+ index_1.Helpers.log("Service \"".concat(this.serviceID, "\" is already started/healthy..."));
95
+ return [2 /*return*/];
96
+ }
97
+ });
98
+ });
99
+ };
100
+ //#endregion
101
+ //#region public methods / kill
102
+ /**
103
+ * stop if started
104
+ */
105
+ BaseCliWorker.prototype.kill = function (options) {
106
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
107
+ var ctrl, error_1;
108
+ return tslib_1.__generator(this, function (_a) {
109
+ switch (_a.label) {
110
+ case 0:
111
+ //#region @backendFunc
112
+ options = options || {};
113
+ index_1.Helpers.log("Killing service \"".concat(this.serviceID, "\"..."));
114
+ if (this.processLocalInfoObj.isEmpty) {
115
+ index_1.Helpers.log("Service \"".concat(this.serviceID, "\" not started - nothing to kill..."));
116
+ return [2 /*return*/];
117
+ }
118
+ return [4 /*yield*/, this.getControllerForRemoteConnection()];
119
+ case 1:
120
+ ctrl = _a.sent();
121
+ _a.label = 2;
122
+ case 2:
123
+ _a.trys.push([2, 4, , 5]);
124
+ if (!options.dontRemoveConfigFile) {
125
+ index_1.Helpers.removeFileIfExists(this.pathToProcessLocalInfoJson);
126
+ }
127
+ return [4 /*yield*/, ctrl.baseCLiWorkerCommand_kill().received];
128
+ case 3:
129
+ _a.sent();
130
+ index_1.Helpers.log("Service \"".concat(this.serviceID, "\" killed..."));
131
+ return [3 /*break*/, 5];
132
+ case 4:
133
+ error_1 = _a.sent();
134
+ index_1.Helpers.log(error_1);
135
+ index_1.Helpers.log("Service \"".concat(this.serviceID, "\" not killed... "));
136
+ return [3 /*break*/, 5];
137
+ case 5: return [2 /*return*/];
138
+ }
139
+ });
140
+ });
141
+ };
142
+ //#endregion
143
+ //#region public methods / restart
144
+ /**
145
+ * kill detached process and start again
146
+ * @param options.detached - default true
147
+ */
148
+ BaseCliWorker.prototype.restart = function (options) {
149
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
150
+ return tslib_1.__generator(this, function (_a) {
151
+ switch (_a.label) {
152
+ case 0:
153
+ options = options || {};
154
+ options.detached = tnp_core_1._.isUndefined(options.detached) ? true : false;
155
+ return [4 /*yield*/, this.kill()];
156
+ case 1:
157
+ _a.sent();
158
+ if (!options.detached) return [3 /*break*/, 3];
159
+ index_1.Helpers.info("Restarting service \"".concat(this.serviceID, "\" in detached mode..."));
160
+ return [4 /*yield*/, this.startDetached()];
161
+ case 2:
162
+ _a.sent();
163
+ return [3 /*break*/, 5];
164
+ case 3:
165
+ index_1.Helpers.info("Restarting service \"".concat(this.serviceID, "\" in current process..."));
166
+ return [4 /*yield*/, this.startNormallyInCurrentProcess()];
167
+ case 4:
168
+ _a.sent();
169
+ _a.label = 5;
170
+ case 5: return [2 /*return*/];
171
+ }
172
+ });
173
+ });
174
+ };
175
+ //#endregion
176
+ //#region public methods / cli start
177
+ /**
178
+ * only for cli start
179
+ * @param cliParams on from cli
180
+ */
181
+ BaseCliWorker.prototype.cliStartProcedure = function (cliParams) {
182
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
183
+ var instance, detached;
184
+ return tslib_1.__generator(this, function (_a) {
185
+ switch (_a.label) {
186
+ case 0:
187
+ instance = this;
188
+ detached = !!cliParams['detached'] || !!cliParams['detach'];
189
+ if (!cliParams['restart']) return [3 /*break*/, 2];
190
+ return [4 /*yield*/, instance.restart({
191
+ detached: detached,
192
+ })];
193
+ case 1:
194
+ _a.sent();
195
+ process.exit(0);
196
+ _a.label = 2;
197
+ case 2:
198
+ if (!cliParams['kill']) return [3 /*break*/, 4];
199
+ return [4 /*yield*/, instance.kill()];
200
+ case 3:
201
+ _a.sent();
202
+ process.exit(0);
203
+ _a.label = 4;
204
+ case 4:
205
+ if (!detached) return [3 /*break*/, 6];
206
+ return [4 /*yield*/, instance.startDetachedIfNeedsToBeStarted()];
207
+ case 5:
208
+ _a.sent();
209
+ process.exit(0);
210
+ return [3 /*break*/, 8];
211
+ case 6: return [4 /*yield*/, instance.startNormallyInCurrentProcess()];
212
+ case 7:
213
+ _a.sent();
214
+ _a.label = 8;
215
+ case 8: return [2 /*return*/];
216
+ }
217
+ });
218
+ });
219
+ };
220
+ //#endregion
221
+ //#endregion
222
+ //#region protected methods
223
+ //#region protected methods / prevent external config change
224
+ BaseCliWorker.prototype.preventExternalConfigChange = function () {
225
+ var _this = this;
226
+ //#region @backendFunc
227
+ index_1.Helpers.info("watching: ".concat(this.pathToProcessLocalInfoJson));
228
+ var currentConfig = this.processLocalInfoObj;
229
+ tnp_core_1.chokidar.watch(this.pathToProcessLocalInfoJson).on('change', function () {
230
+ index_1.Helpers.log("Service data changed...");
231
+ if (!_this.processLocalInfoObj.isEquals(currentConfig)) {
232
+ index_1.Helpers.error("Service config data externally changed... killing service", false, true);
233
+ }
234
+ });
235
+ //#endregion
236
+ };
237
+ //#endregion
238
+ //#region protected methods / prevent start if already started
239
+ BaseCliWorker.prototype.preventStartIfAlreadyStarted = function () {
240
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
241
+ var isHealthy, error_2;
242
+ return tslib_1.__generator(this, function (_a) {
243
+ switch (_a.label) {
244
+ case 0:
245
+ _a.trys.push([0, 2, , 3]);
246
+ return [4 /*yield*/, this.isServiceHealthy({
247
+ healthCheckRequestTrys: 2, // check only twice
248
+ })];
249
+ case 1:
250
+ isHealthy = _a.sent();
251
+ if (isHealthy) {
252
+ index_1.Helpers.error("Service already started on port ".concat(this.processLocalInfoObj.port, " !"), false, true);
253
+ }
254
+ return [3 /*break*/, 3];
255
+ case 2:
256
+ error_2 = _a.sent();
257
+ return [3 /*break*/, 3];
258
+ case 3: return [2 /*return*/];
259
+ }
260
+ });
261
+ });
262
+ };
263
+ //#endregion
264
+ //#region protected methods / prevent start if already started
265
+ BaseCliWorker.prototype.killWorkerWithLowerVersion = function () {
266
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
267
+ var ctrl, req, isUpToDate, error_3;
268
+ return tslib_1.__generator(this, function (_a) {
269
+ switch (_a.label) {
270
+ case 0:
271
+ _a.trys.push([0, 6, , 7]);
272
+ return [4 /*yield*/, this.getControllerForRemoteConnection()];
273
+ case 1:
274
+ ctrl = _a.sent();
275
+ index_1.Helpers.log("Checking if current working version is up to date...");
276
+ return [4 /*yield*/, ctrl.baseCLiWorkerCommand_hasUpToDateVersion(tnp_core_1._.merge(this.processLocalInfoObj, {
277
+ version: this.serviceVersion,
278
+ })).received];
279
+ case 2:
280
+ req = _a.sent();
281
+ isUpToDate = req.body.booleanValue;
282
+ if (!!isUpToDate) return [3 /*break*/, 5];
283
+ index_1.Helpers.info("Killing service with lower version...");
284
+ return [4 /*yield*/, this.kill({
285
+ dontRemoveConfigFile: true,
286
+ })];
287
+ case 3:
288
+ _a.sent();
289
+ return [4 /*yield*/, index_1.Helpers.wait(1)];
290
+ case 4:
291
+ _a.sent();
292
+ _a.label = 5;
293
+ case 5: return [3 /*break*/, 7];
294
+ case 6:
295
+ error_3 = _a.sent();
296
+ return [3 /*break*/, 7];
297
+ case 7: return [2 /*return*/];
298
+ }
299
+ });
300
+ });
301
+ };
302
+ //#endregion
303
+ //#region protected methods / is service healthy
304
+ /**
305
+ * This has 2 purposes:
306
+ * - infinite check when when detached process finished starting
307
+ * - quick check if service is healthy / already started
308
+ */
309
+ BaseCliWorker.prototype.isServiceHealthy = function (options) {
310
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
311
+ var healthCheckRequestTrys, i, workerIsStarting, isWaitingNotCheckingWhen, ctrl, req, isHealthy, error_4;
312
+ return tslib_1.__generator(this, function (_a) {
313
+ switch (_a.label) {
314
+ case 0:
315
+ //#region @backendFunc
316
+ options = options || {};
317
+ healthCheckRequestTrys = options.healthCheckRequestTrys || 1;
318
+ i = 0;
319
+ _a.label = 1;
320
+ case 1:
321
+ if (!true) return [3 /*break*/, 3];
322
+ i++;
323
+ index_1.Helpers.log("Checking if service \"".concat(this.serviceID, "\" is starting..."));
324
+ workerIsStarting = !!this.processLocalInfoObj.startTimestamp;
325
+ if (!workerIsStarting) {
326
+ // initialized worker does not have startTimestamp
327
+ return [3 /*break*/, 3];
328
+ }
329
+ if (i > WORKER_INIT_START_TIME_LIMIT) {
330
+ return [2 /*return*/, false];
331
+ }
332
+ return [4 /*yield*/, index_1.Helpers.wait(1)];
333
+ case 2:
334
+ _a.sent();
335
+ return [3 /*break*/, 1];
336
+ case 3:
337
+ i = 0;
338
+ isWaitingNotCheckingWhen = 10;
339
+ _a.label = 4;
340
+ case 4:
341
+ if (!true) return [3 /*break*/, 16];
342
+ i++;
343
+ _a.label = 5;
344
+ case 5:
345
+ _a.trys.push([5, 11, , 15]);
346
+ if (isWaitingNotCheckingWhen === i) {
347
+ index_1.Helpers.info("Waiting for service \"".concat(this.serviceID, "\" to start..."));
348
+ }
349
+ else {
350
+ index_1.Helpers.log("Checking if service \"".concat(this.serviceID, "\" is healthy..."));
351
+ }
352
+ return [4 /*yield*/, this.getControllerForRemoteConnection()];
353
+ case 6:
354
+ ctrl = _a.sent();
355
+ index_1.Helpers.log("Sending is healthy request...");
356
+ return [4 /*yield*/, ctrl.baseCLiWorkerCommand_isHealthy(this.processLocalInfoObj).received];
357
+ case 7:
358
+ req = _a.sent();
359
+ isHealthy = req.body.booleanValue;
360
+ // console.log('isHealthy', { isHealthy });
361
+ if (isHealthy) {
362
+ index_1.Helpers.log("Service \"".concat(this.serviceID, "\" is healthy (response is true)..."));
363
+ }
364
+ else {
365
+ index_1.Helpers.log("Service \"".concat(this.serviceID, "\" is not healthy (response is false)..."));
366
+ }
367
+ if (!(isHealthy || i === healthCheckRequestTrys)) return [3 /*break*/, 8];
368
+ return [2 /*return*/, isHealthy];
369
+ case 8:
370
+ index_1.Helpers.log('Trying again...');
371
+ return [4 /*yield*/, index_1.Helpers.wait(1)];
372
+ case 9:
373
+ _a.sent();
374
+ return [3 /*break*/, 4];
375
+ case 10: return [3 /*break*/, 15];
376
+ case 11:
377
+ error_4 = _a.sent();
378
+ // Helpers.tryCatchError(error);
379
+ index_1.Helpers.log("Service \"".concat(this.serviceID, "\" is not healthy (can't check health)..."));
380
+ if (!(i === healthCheckRequestTrys)) return [3 /*break*/, 12];
381
+ return [2 /*return*/, false];
382
+ case 12:
383
+ index_1.Helpers.log('Trying again...');
384
+ return [4 /*yield*/, index_1.Helpers.wait(1)];
385
+ case 13:
386
+ _a.sent();
387
+ return [3 /*break*/, 4];
388
+ case 14: return [3 /*break*/, 15];
389
+ case 15: return [3 /*break*/, 4];
390
+ case 16: return [2 /*return*/];
391
+ }
392
+ });
393
+ });
394
+ };
395
+ //#endregion
396
+ //#region protected methods / start
397
+ /**
398
+ * start if not started detached process
399
+ */
400
+ BaseCliWorker.prototype.startDetached = function () {
401
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
402
+ var isServiceHealthy;
403
+ return tslib_1.__generator(this, function (_a) {
404
+ switch (_a.label) {
405
+ case 0:
406
+ //#region @backendFunc
407
+ index_1.Helpers.log("Starting detached command in new terminal \"".concat(tnp_core_1.chalk.bold(this.startCommand), "\"..."));
408
+ return [4 /*yield*/, tnp_core_1.UtilsProcess.startInNewTerminalWindow(this.startCommand)];
409
+ case 1:
410
+ _a.sent();
411
+ index_1.Helpers.log("Starting detached service \"".concat(tnp_core_1.chalk.bold(this.serviceID), "\" - waiting until healthy..."));
412
+ return [4 /*yield*/, this.isServiceHealthy({
413
+ healthCheckRequestTrys: Infinity, // wait infinity until started
414
+ })];
415
+ case 2:
416
+ isServiceHealthy = _a.sent();
417
+ if (!isServiceHealthy) {
418
+ index_1.Helpers.throw("Not able to start service \"".concat(this.serviceID, "\"..."));
419
+ return [2 /*return*/];
420
+ }
421
+ index_1.Helpers.log("Healthy detached service \"".concat(tnp_core_1.chalk.bold(this.serviceID), "\" started."));
422
+ return [2 /*return*/];
423
+ }
424
+ });
425
+ });
426
+ };
427
+ //#endregion
428
+ //#region protected methods / text for header
429
+ BaseCliWorker.prototype.headerText = function () {
430
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
431
+ return tslib_1.__generator(this, function (_a) {
432
+ return [2 /*return*/, tnp_core_1._.startCase(this.serviceID)];
433
+ });
434
+ });
435
+ };
436
+ //#endregion
437
+ //#region protected methods / text header style
438
+ BaseCliWorker.prototype.textHeaderStyle = function () {
439
+ return 'block';
440
+ };
441
+ //#endregion
442
+ //#region protected methods / header text align
443
+ BaseCliWorker.prototype.headerTextAlign = function () {
444
+ return 'left';
445
+ };
446
+ //#endregion
447
+ //#region protected methods / header
448
+ /**
449
+ * override whole terminal header
450
+ */
451
+ BaseCliWorker.prototype.header = function () {
452
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
453
+ var cfonts, output, _a, _b;
454
+ return tslib_1.__generator(this, function (_c) {
455
+ switch (_c.label) {
456
+ case 0:
457
+ cfonts = require('cfonts');
458
+ _b = (_a = cfonts).render;
459
+ return [4 /*yield*/, this.headerText()];
460
+ case 1:
461
+ output = _b.apply(_a, [_c.sent(), {
462
+ font: this.textHeaderStyle(),
463
+ align: this.headerTextAlign(),
464
+ colors: ['system'],
465
+ background: 'transparent',
466
+ letterSpacing: 1,
467
+ lineHeight: 1,
468
+ space: true,
469
+ maxLength: '0',
470
+ gradient: false,
471
+ independentGradient: false,
472
+ transitionGradient: false,
473
+ env: 'node',
474
+ }]);
475
+ console.log(output.string);
476
+ return [2 /*return*/];
477
+ }
478
+ });
479
+ });
480
+ };
481
+ //#endregion
482
+ //#region protected methods / info message below header
483
+ BaseCliWorker.prototype.infoMessageBelowHeader = function () {
484
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
485
+ var _a, _b;
486
+ return tslib_1.__generator(this, function (_c) {
487
+ //#region @backendFunc
488
+ index_1.Helpers.info("\n\n Service ".concat(tnp_core_1.chalk.bold.red(this.serviceID)) +
489
+ " (version: ".concat(this.serviceVersion, ") started..\n Check info here http://localhost:").concat(tnp_core_1.chalk.bold((_b = (_a = this.processLocalInfoObj) === null || _a === void 0 ? void 0 : _a.port) === null || _b === void 0 ? void 0 : _b.toString()), "/").concat('info', "\n\n "));
490
+ return [2 /*return*/];
491
+ });
492
+ });
493
+ };
494
+ //#endregion
495
+ //#region protected methods / info screen
496
+ BaseCliWorker.prototype._infoScreen = function () {
497
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
498
+ var choices, choice, openInBrowser;
499
+ return tslib_1.__generator(this, function (_a) {
500
+ switch (_a.label) {
501
+ case 0:
502
+ if (!true) return [3 /*break*/, 4];
503
+ index_1.Helpers.clearConsole();
504
+ return [4 /*yield*/, this.header()];
505
+ case 1:
506
+ _a.sent();
507
+ return [4 /*yield*/, this.infoMessageBelowHeader()];
508
+ case 2:
509
+ _a.sent();
510
+ choices = {
511
+ openBrowser: {
512
+ name: 'Open browser with service info',
513
+ },
514
+ // showAllProcesses: {
515
+ // name: 'Show all processes',
516
+ // },
517
+ // showLogo: {
518
+ // name: 'Show logo',
519
+ // },
520
+ exit: {
521
+ name: "Shut down service",
522
+ },
523
+ };
524
+ return [4 /*yield*/, index_1.UtilsTerminal.select({
525
+ choices: choices,
526
+ question: 'Choose action',
527
+ })];
528
+ case 3:
529
+ choice = _a.sent();
530
+ if (choice === 'openBrowser') {
531
+ openInBrowser = require('open');
532
+ openInBrowser("http://localhost:".concat(this.processLocalInfoObj.port, "/info"));
533
+ }
534
+ if (choice === 'exit') {
535
+ process.exit(0);
536
+ }
537
+ switch (choice) {
538
+ }
539
+ return [3 /*break*/, 0];
540
+ case 4: return [2 /*return*/];
541
+ }
542
+ });
543
+ });
544
+ };
545
+ //#endregion
546
+ //#region protected methods / save process info
547
+ BaseCliWorker.prototype.saveProcessInfo = function (processConfig) {
548
+ //#region @backendFunc
549
+ processConfig = processConfig || {};
550
+ if (index_1.Helpers.exists(this.pathToProcessLocalInfoJson)) {
551
+ var jsonConfig = index_1.Helpers.readJson(this.pathToProcessLocalInfoJson);
552
+ if (tnp_core_1._.isObject(jsonConfig) && Object.keys(jsonConfig).length > 0) {
553
+ processConfig = tnp_core_1._.merge(jsonConfig, processConfig);
554
+ }
555
+ }
556
+ index_1.Helpers.log("Saving process info to \"".concat(this.pathToProcessLocalInfoJson, "\"..."));
557
+ index_1.Helpers.log(processConfig);
558
+ index_1.Helpers.writeJson(this.pathToProcessLocalInfoJson, processConfig);
559
+ //#endregion
560
+ };
561
+ //#endregion
562
+ //#region protected methods / initialize worker
563
+ BaseCliWorker.prototype.initializeWorkerMetadata = function () {
564
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
565
+ var portControllerInstance, error_5;
566
+ return tslib_1.__generator(this, function (_a) {
567
+ switch (_a.label) {
568
+ case 0:
569
+ _a.trys.push([0, 3, , 4]);
570
+ return [4 /*yield*/, this.getControllerForRemoteConnection()];
571
+ case 1:
572
+ portControllerInstance = _a.sent();
573
+ return [4 /*yield*/, portControllerInstance.baseCLiWorkerCommand_initializeMetadata(this.serviceID, this.serviceVersion).received];
574
+ case 2:
575
+ _a.sent();
576
+ this.saveProcessInfo({
577
+ startTimestamp: null,
578
+ });
579
+ return [3 /*break*/, 4];
580
+ case 3:
581
+ error_5 = _a.sent();
582
+ this.saveProcessInfo({
583
+ startTimestamp: null,
584
+ });
585
+ index_1.Helpers.throw(error_5);
586
+ return [3 /*break*/, 4];
587
+ case 4: return [2 /*return*/];
588
+ }
589
+ });
590
+ });
591
+ };
592
+ //#endregion
593
+ //#region protected methods / wait for process port saved to disk
594
+ BaseCliWorker.prototype.waitForProcessPortSavedToDisk = function () {
595
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
596
+ var portForRemote, MAX_TRYS, i;
597
+ return tslib_1.__generator(this, function (_a) {
598
+ switch (_a.label) {
599
+ case 0:
600
+ portForRemote = this.processLocalInfoObj.port;
601
+ MAX_TRYS = 10;
602
+ i = 0;
603
+ if (!!portForRemote) return [3 /*break*/, 5];
604
+ _a.label = 1;
605
+ case 1:
606
+ if (!!portForRemote) return [3 /*break*/, 5];
607
+ i++;
608
+ portForRemote = this.processLocalInfoObj.port;
609
+ if (!portForRemote) return [3 /*break*/, 2];
610
+ return [3 /*break*/, 5];
611
+ case 2:
612
+ index_1.Helpers.log("Waiting for port to be available...");
613
+ if (i > MAX_TRYS) {
614
+ index_1.Helpers.throw("Can't get port for remote connection.." +
615
+ " worker process did not start correctly");
616
+ }
617
+ return [4 /*yield*/, index_1.Helpers.wait(1)];
618
+ case 3:
619
+ _a.sent();
620
+ _a.label = 4;
621
+ case 4: return [3 /*break*/, 1];
622
+ case 5: return [2 /*return*/];
623
+ }
624
+ });
625
+ });
626
+ };
627
+ //#endregion
628
+ //#region protected methods / get free port
629
+ BaseCliWorker.prototype.getServicePort = function () {
630
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
631
+ var port;
632
+ return tslib_1.__generator(this, function (_a) {
633
+ switch (_a.label) {
634
+ case 0: return [4 /*yield*/, tnp_core_1.Utils.getFreePort({
635
+ startFrom: START_PORT_FOR_SERVICES,
636
+ })];
637
+ case 1:
638
+ port = _a.sent();
639
+ this.saveProcessInfo({
640
+ port: port,
641
+ serviceID: this.serviceID,
642
+ pid: process.pid,
643
+ startTimestamp: Date.now(),
644
+ version: this.serviceVersion,
645
+ });
646
+ return [2 /*return*/, port];
647
+ }
648
+ });
649
+ });
650
+ };
651
+ return BaseCliWorker;
652
+ }());
653
+ exports.BaseCliWorker = BaseCliWorker;
654
+ //# sourceMappingURL=base-cli-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-cli-worker.js","sourceRoot":"","sources":[""],"names":[],"mappings":";;;;AAAA,iBAAiB;AACjB,qCAUkB;AAElB,kCAAkD;AAElD,mEAA+D;AAC/D,YAAY;AAEZ,mBAAmB;AACnB,IAAM,4BAA4B,GAAG,EAAE,CAAC,CAAC,iCAAiC;AAC1E,IAAM,uBAAuB,GAAG,IAAI,CAAC;AAmBrC,YAAY;AAEZ;IAIE,qBAAqB;IACrB;IACE;;OAEG;IACgB,SAAiB;IACpC;;OAEG;IACgB,YAAoB;IACvC;;OAEG;IACgB,cAAsB;QARtB,cAAS,GAAT,SAAS,CAAQ;QAIjB,iBAAY,GAAZ,YAAY,CAAQ;QAIpB,mBAAc,GAAd,cAAc,CAAQ;IACxC,CAAC;IAYJ,sBAAc,qDAA0B;QALxC,YAAY;QAEZ,0BAA0B;QAE1B,uDAAuD;aACvD;YACE,sBAAsB;YACtB,+CAA+C;YAC/C,OAAO,IAAA,4BAAiB,EAAC;gBACvB,aAAE,CAAC,QAAQ,EAAE,CAAC,OAAO;gBACrB,OAAO;gBACP,kCAAkC;gBAClC,UAAG,IAAI,CAAC,SAAS,UAAO;aACzB,CAAC,CAAC;YACH,YAAY;QACd,CAAC;;;OAAA;IAID,sBAAc,8CAAmB;QAHjC,YAAY;QAEZ,2DAA2D;aAC3D;YACE,sBAAsB;YACtB,IAAM,UAAU,GAAG,eAAO,CAAC,SAAS,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC;YAC5E,IAAI,YAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3B,OAAO,YAAC,CAAC,KAAK,CAAC,IAAI,4CAAmB,EAAE,EAAE,UAAU,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,IAAI,4CAAmB,EAAE,CAAC;YACjC,YAAY;QACd,CAAC;;;OAAA;IACD,YAAY;IAEZ,YAAY;IAEZ,wBAAwB;IAExB,uDAAuD;IAC1C,uDAA+B,GAA5C;;;;;;6BAGM,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAhC,wBAAgC;wBAClC,uBAAuB;wBACvB,qBAAM,IAAI,CAAC,aAAa,EAAE,EAAA;;wBAD1B,uBAAuB;wBACvB,SAA0B,CAAC;wBAC3B,sBAAO;4BAGgB,qBAAM,IAAI,CAAC,gBAAgB,CAAC;4BACnD,sBAAsB,EAAE,CAAC,EAAE,mBAAmB;yBAC/C,CAAC,EAAA;;wBAFI,gBAAgB,GAAG,SAEvB;6BACE,CAAC,gBAAgB,EAAjB,wBAAiB;wBACnB,qBAAM,IAAI,CAAC,aAAa,EAAE,EAAA;;wBAA1B,SAA0B,CAAC;wBAC3B,sBAAO;;wBAET,eAAO,CAAC,GAAG,CAAC,oBAAY,IAAI,CAAC,SAAS,qCAAiC,CAAC,CAAC;;;;;KAE1E;IACD,YAAY;IAEZ,+BAA+B;IAC/B;;OAEG;IACG,4BAAI,GAAV,UAAW,OAA4C;;;;;;wBACrD,sBAAsB;wBACtB,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;wBACxB,eAAO,CAAC,GAAG,CAAC,4BAAoB,IAAI,CAAC,SAAS,UAAM,CAAC,CAAC;wBACtD,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;4BACrC,eAAO,CAAC,GAAG,CACT,oBAAY,IAAI,CAAC,SAAS,wCAAoC,CAC/D,CAAC;4BACF,sBAAO;wBACT,CAAC;wBACY,qBAAM,IAAI,CAAC,gCAAgC,EAAE,EAAA;;wBAApD,IAAI,GAAG,SAA6C;;;;wBAExD,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;4BAClC,eAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;wBAC9D,CAAC;wBACD,qBAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC,QAAQ,EAAA;;wBAA/C,SAA+C,CAAC;wBAChD,eAAO,CAAC,GAAG,CAAC,oBAAY,IAAI,CAAC,SAAS,iBAAa,CAAC,CAAC;;;;wBAErD,eAAO,CAAC,GAAG,CAAC,OAAK,CAAC,CAAC;wBACnB,eAAO,CAAC,GAAG,CAAC,oBAAY,IAAI,CAAC,SAAS,wBAAoB,CAAC,CAAC;;;;;;KAG/D;IACD,YAAY;IAEZ,kCAAkC;IAClC;;;OAGG;IACG,+BAAO,GAAb,UAAc,OAAgC;;;;;wBAC5C,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;wBACxB,OAAO,CAAC,QAAQ,GAAG,YAAC,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;wBAClE,qBAAM,IAAI,CAAC,IAAI,EAAE,EAAA;;wBAAjB,SAAiB,CAAC;6BAGd,OAAO,CAAC,QAAQ,EAAhB,wBAAgB;wBAClB,eAAO,CAAC,IAAI,CACV,+BAAuB,IAAI,CAAC,SAAS,2BAAuB,CAC7D,CAAC;wBACF,qBAAM,IAAI,CAAC,aAAa,EAAE,EAAA;;wBAA1B,SAA0B,CAAC;;;wBAE3B,eAAO,CAAC,IAAI,CACV,+BAAuB,IAAI,CAAC,SAAS,6BAAyB,CAC/D,CAAC;wBACF,qBAAM,IAAI,CAAC,6BAA6B,EAAE,EAAA;;wBAA1C,SAA0C,CAAC;;;;;;KAE9C;IACD,YAAY;IAEZ,oCAAoC;IACpC;;;OAGG;IACG,yCAAiB,GAAvB,UAAwB,SAAc;;;;;;wBAC9B,QAAQ,GAAkB,IAAI,CAAC;wBAC/B,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;6BAE9D,SAAS,CAAC,SAAS,CAAC,EAApB,wBAAoB;wBACtB,qBAAM,QAAQ,CAAC,OAAO,CAAC;gCACrB,QAAQ,UAAA;6BACT,CAAC,EAAA;;wBAFF,SAEE,CAAC;wBACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;;6BAGd,SAAS,CAAC,MAAM,CAAC,EAAjB,wBAAiB;wBACnB,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;wBAArB,SAAqB,CAAC;wBACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;;6BAGd,QAAQ,EAAR,wBAAQ;wBACV,qBAAM,QAAQ,CAAC,+BAA+B,EAAE,EAAA;;wBAAhD,SAAgD,CAAC;wBACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;4BAEhB,qBAAM,QAAQ,CAAC,6BAA6B,EAAE,EAAA;;wBAA9C,SAA8C,CAAC;;;;;;KAGlD;IACD,YAAY;IAEZ,YAAY;IAEZ,2BAA2B;IAE3B,4DAA4D;IAClD,mDAA2B,GAArC;QAAA,iBAeC;QAdC,sBAAsB;QACtB,eAAO,CAAC,IAAI,CAAC,oBAAa,IAAI,CAAC,0BAA0B,CAAE,CAAC,CAAC;QAC7D,IAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC/C,mBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE;YAC3D,eAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACvC,IAAI,CAAC,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBACtD,eAAO,CAAC,KAAK,CACX,2DAA2D,EAC3D,KAAK,EACL,IAAI,CACL,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QACH,YAAY;IACd,CAAC;IACD,YAAY;IAEZ,8DAA8D;IAC9C,oDAA4B,GAA5C;;;;;;;wBAGsB,qBAAM,IAAI,CAAC,gBAAgB,CAAC;gCAC5C,sBAAsB,EAAE,CAAC,EAAE,mBAAmB;6BAC/C,CAAC,EAAA;;wBAFI,SAAS,GAAG,SAEhB;wBACF,IAAI,SAAS,EAAE,CAAC;4BACd,eAAO,CAAC,KAAK,CACX,0CAAmC,IAAI,CAAC,mBAAmB,CAAC,IAAI,OAAI,EACpE,KAAK,EACL,IAAI,CACL,CAAC;wBACJ,CAAC;;;;;;;;;KAGJ;IACD,YAAY;IAEZ,8DAA8D;IAC9C,kDAA0B,GAA1C;;;;;;;wBAGiB,qBAAM,IAAI,CAAC,gCAAgC,EAAE,EAAA;;wBAApD,IAAI,GAAG,SAA6C;wBAC1D,eAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;wBAExD,qBAAM,IAAI,CAAC,uCAAuC,CAC5D,YAAC,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE;gCAChC,OAAO,EAAE,IAAI,CAAC,cAAc;6BAC7B,CAAC,CACH,CAAC,QAAQ,EAAA;;wBAJJ,GAAG,GAAG,SAIF;wBACJ,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;6BACrC,CAAC,UAAU,EAAX,wBAAW;wBACb,eAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;wBACtD,qBAAM,IAAI,CAAC,IAAI,CAAC;gCACd,oBAAoB,EAAE,IAAI;6BAC3B,CAAC,EAAA;;wBAFF,SAEE,CAAC;wBACH,qBAAM,eAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAA;;wBAArB,SAAqB,CAAC;;;;;;;;;;KAI3B;IACD,YAAY;IAEZ,gDAAgD;IAChD;;;;OAIG;IACa,wCAAgB,GAAhC,UAAiC,OAEhC;;;;;;wBACC,sBAAsB;wBACtB,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;wBAClB,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,IAAI,CAAC,CAAC;wBAC/D,CAAC,GAAG,CAAC,CAAC;;;6BACH,IAAI;wBACT,CAAC,EAAE,CAAC;wBACJ,eAAO,CAAC,GAAG,CAAC,gCAAwB,IAAI,CAAC,SAAS,sBAAkB,CAAC,CAAC;wBAChE,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC;wBAEnE,IAAI,CAAC,gBAAgB,EAAE,CAAC;4BACtB,kDAAkD;4BAClD,wBAAM;wBACR,CAAC;wBACD,IAAI,CAAC,GAAG,4BAA4B,EAAE,CAAC;4BACrC,sBAAO,KAAK,EAAC;wBACf,CAAC;wBACD,qBAAM,eAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAA;;wBAArB,SAAqB,CAAC;;;wBAGxB,CAAC,GAAG,CAAC,CAAC;wBAEA,wBAAwB,GAAG,EAAE,CAAC;;;6BAE7B,IAAI;wBACT,CAAC,EAAE,CAAC;;;;wBAEF,IAAI,wBAAwB,KAAK,CAAC,EAAE,CAAC;4BACnC,eAAO,CAAC,IAAI,CAAC,gCAAwB,IAAI,CAAC,SAAS,mBAAe,CAAC,CAAC;wBACtE,CAAC;6BAAM,CAAC;4BACN,eAAO,CAAC,GAAG,CAAC,gCAAwB,IAAI,CAAC,SAAS,qBAAiB,CAAC,CAAC;wBACvE,CAAC;wBACY,qBAAM,IAAI,CAAC,gCAAgC,EAAE,EAAA;;wBAApD,IAAI,GAAG,SAA6C;wBAC1D,eAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;wBAEjC,qBAAM,IAAI,CAAC,8BAA8B,CACnD,IAAI,CAAC,mBAAmB,CACzB,CAAC,QAAQ,EAAA;;wBAFJ,GAAG,GAAG,SAEF;wBACJ,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;wBACxC,2CAA2C;wBAC3C,IAAI,SAAS,EAAE,CAAC;4BACd,eAAO,CAAC,GAAG,CACT,oBAAY,IAAI,CAAC,SAAS,wCAAoC,CAC/D,CAAC;wBACJ,CAAC;6BAAM,CAAC;4BACN,eAAO,CAAC,GAAG,CACT,oBAAY,IAAI,CAAC,SAAS,6CAAyC,CACpE,CAAC;wBACJ,CAAC;6BACG,CAAA,SAAS,IAAI,CAAC,KAAK,sBAAsB,CAAA,EAAzC,wBAAyC;wBAC3C,sBAAO,SAAS,EAAC;;wBAEjB,eAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;wBAC/B,qBAAM,eAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAA;;wBAArB,SAAqB,CAAC;wBACtB,wBAAS;;;;wBAGX,gCAAgC;wBAChC,eAAO,CAAC,GAAG,CACT,oBAAY,IAAI,CAAC,SAAS,8CAA0C,CACrE,CAAC;6BACE,CAAA,CAAC,KAAK,sBAAsB,CAAA,EAA5B,yBAA4B;wBAC9B,sBAAO,KAAK,EAAC;;wBAEb,eAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;wBAC/B,qBAAM,eAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAA;;wBAArB,SAAqB,CAAC;wBACtB,wBAAS;;;;;;;KAKhB;IACD,YAAY;IAEZ,mCAAmC;IACnC;;OAEG;IACa,qCAAa,GAA7B;;;;;;wBACE,sBAAsB;wBAEtB,eAAO,CAAC,GAAG,CACT,sDAA8C,gBAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAM,CAClF,CAAC;wBACF,qBAAM,uBAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAA;;wBAA9D,SAA8D,CAAC;wBAC/D,eAAO,CAAC,GAAG,CACT,sCAA8B,gBAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kCAA8B,CACvF,CAAC;wBACuB,qBAAM,IAAI,CAAC,gBAAgB,CAAC;gCACnD,sBAAsB,EAAE,QAAQ,EAAE,8BAA8B;6BACjE,CAAC,EAAA;;wBAFI,gBAAgB,GAAG,SAEvB;wBACF,IAAI,CAAC,gBAAgB,EAAE,CAAC;4BACtB,eAAO,CAAC,KAAK,CAAC,sCAA8B,IAAI,CAAC,SAAS,UAAM,CAAC,CAAC;4BAClE,sBAAO;wBACT,CAAC;wBACD,eAAO,CAAC,GAAG,CACT,qCAA6B,gBAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAY,CACpE,CAAC;;;;;KAEH;IACD,YAAY;IAEZ,6CAA6C;IAC7B,kCAAU,GAA1B;;;gBACE,sBAAO,YAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC;;;KACpC;IACD,YAAY;IAEZ,+CAA+C;IACrC,uCAAe,GAAzB;QACE,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,YAAY;IAEZ,+CAA+C;IACrC,uCAAe,GAAzB;QACE,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,YAAY;IAEZ,oCAAoC;IACpC;;OAEG;IACa,8BAAM,GAAtB;;;;;;wBAEQ,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;wBAClB,KAAA,CAAA,KAAA,MAAM,CAAA,CAAC,MAAM,CAAA;wBAAC,qBAAM,IAAI,CAAC,UAAU,EAAE,EAAA;;wBAA9C,MAAM,GAAG,cAAc,SAAuB,EAAE;gCACpD,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE;gCAC5B,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE;gCAC7B,MAAM,EAAE,CAAC,QAAQ,CAAC;gCAClB,UAAU,EAAE,aAAa;gCACzB,aAAa,EAAE,CAAC;gCAChB,UAAU,EAAE,CAAC;gCACb,KAAK,EAAE,IAAI;gCACX,SAAS,EAAE,GAAG;gCACd,QAAQ,EAAE,KAAK;gCACf,mBAAmB,EAAE,KAAK;gCAC1B,kBAAkB,EAAE,KAAK;gCACzB,GAAG,EAAE,MAAM;6BACZ,EAAC;wBACF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;;;;KAE5B;IACD,YAAY;IAEZ,uDAAuD;IACjD,8CAAsB,GAA5B;;;;gBACE,sBAAsB;gBACtB,eAAO,CAAC,IAAI,CACV,4BAEU,gBAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAE;oBACxC,qBAAc,IAAI,CAAC,cAAc,iEACA,gBAAK,CAAC,IAAI,CAC3C,MAAA,MAAA,IAAI,CAAC,mBAAmB,0CAAE,IAAI,0CAAE,QAAQ,EAAE,CAC3C,cAAI,MAA4C,iBAE9C,CACJ,CAAC;;;;KAEH;IACD,YAAY;IAEZ,yCAAyC;IACzB,mCAAW,GAA3B;;;;;;6BACS,IAAI;wBACT,eAAO,CAAC,YAAY,EAAE,CAAC;wBAEvB,qBAAM,IAAI,CAAC,MAAM,EAAE,EAAA;;wBAAnB,SAAmB,CAAC;wBAEpB,qBAAM,IAAI,CAAC,sBAAsB,EAAE,EAAA;;wBAAnC,SAAmC,CAAC;wBAC9B,OAAO,GAAG;4BACd,WAAW,EAAE;gCACX,IAAI,EAAE,gCAAgC;6BACvC;4BACD,sBAAsB;4BACtB,gCAAgC;4BAChC,KAAK;4BACL,cAAc;4BACd,uBAAuB;4BACvB,KAAK;4BACL,IAAI,EAAE;gCACJ,IAAI,EAAE,mBAAmB;6BAC1B;yBACF,CAAC;wBACa,qBAAM,qBAAa,CAAC,MAAM,CAAuB;gCAC9D,OAAO,SAAA;gCACP,QAAQ,EAAE,eAAe;6BAC1B,CAAC,EAAA;;wBAHI,MAAM,GAAG,SAGb;wBACF,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;4BACvB,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;4BACtC,aAAa,CAAC,2BAAoB,IAAI,CAAC,mBAAmB,CAAC,IAAI,UAAO,CAAC,CAAC;wBAC1E,CAAC;wBACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;4BACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBAClB,CAAC;wBACD,QAAQ,MAAM,EAAE,CAAC;wBACjB,CAAC;;;;;;KAEJ;IACD,YAAY;IAEZ,+CAA+C;IACvC,uCAAe,GAAvB,UAAwB,aAA2C;QACjE,sBAAsB;QACtB,aAAa,GAAG,aAAa,IAAK,EAAU,CAAC;QAC7C,IAAI,eAAO,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC;YACpD,IAAM,UAAU,GAAG,eAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACrE,IAAI,YAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjE,aAAa,GAAG,YAAC,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,eAAO,CAAC,GAAG,CACT,mCAA2B,IAAI,CAAC,0BAA0B,UAAM,CACjE,CAAC;QACF,eAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAE3B,eAAO,CAAC,SAAS,CAAC,IAAI,CAAC,0BAA0B,EAAE,aAAa,CAAC,CAAC;QAClE,YAAY;IACd,CAAC;IACD,YAAY;IAEZ,+CAA+C;IAC/B,gDAAwB,GAAxC;;;;;;;wBAIM,qBAAM,IAAI,CAAC,gCAAgC,EAAE,EAAA;;wBADzC,sBAAsB,GAC1B,SAA6C;wBAE/C,qBAAM,sBAAsB,CAAC,uCAAuC,CAClE,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,cAAc,CACpB,CAAC,QAAQ,EAAA;;wBAHV,SAGU,CAAC;wBACX,IAAI,CAAC,eAAe,CAAC;4BACnB,cAAc,EAAE,IAAI;yBACrB,CAAC,CAAC;;;;wBAEH,IAAI,CAAC,eAAe,CAAC;4BACnB,cAAc,EAAE,IAAI;yBACrB,CAAC,CAAC;wBACH,eAAO,CAAC,KAAK,CAAC,OAAK,CAAC,CAAC;;;;;;KAMxB;IACD,YAAY;IAEZ,iEAAiE;IACjD,qDAA6B,GAA7C;;;;;;wBAEM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;wBAC5C,QAAQ,GAAG,EAAE,CAAC;wBAChB,CAAC,GAAG,CAAC,CAAC;6BACN,CAAC,aAAa,EAAd,wBAAc;;;6BACT,CAAC,aAAa;wBACnB,CAAC,EAAE,CAAC;wBACJ,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;6BAC1C,aAAa,EAAb,wBAAa;wBACf,wBAAM;;wBAEN,eAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;wBACnD,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC;4BACjB,eAAO,CAAC,KAAK,CACX,wCAAwC;gCACtC,yCAAyC,CAC5C,CAAC;wBACJ,CAAC;wBACD,qBAAM,eAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAA;;wBAArB,SAAqB,CAAC;;;;;;;KAK7B;IACD,YAAY;IAEZ,2CAA2C;IACrC,sCAAc,GAApB;;;;;4BAEe,qBAAM,gBAAK,CAAC,WAAW,CAAC;4BACnC,SAAS,EAAE,uBAAuB;yBACnC,CAAC,EAAA;;wBAFI,IAAI,GAAG,SAEX;wBAEF,IAAI,CAAC,eAAe,CAAC;4BACnB,IAAI,MAAA;4BACJ,SAAS,EAAE,IAAI,CAAC,SAAS;4BACzB,GAAG,EAAE,OAAO,CAAC,GAAG;4BAChB,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE;4BAC1B,OAAO,EAAE,IAAI,CAAC,cAAc;yBAC7B,CAAC,CAAC;wBACH,sBAAO,IAAI,EAAC;;;;KAEb;IAIH,oBAAC;AAAD,CAAC,AA5hBD,IA4hBC;AA5hBqB,sCAAa"}