@antelopejs/core 1.10.3 → 1.12.0

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 (272) hide show
  1. package/README.md +1 -1
  2. package/dist/core/cli/cancellation.d.ts +4 -0
  3. package/dist/core/cli/cancellation.js +19 -0
  4. package/dist/core/cli/cancellation.js.map +1 -0
  5. package/dist/core/cli/cli-ui.d.ts +8 -13
  6. package/dist/core/cli/cli-ui.js +36 -116
  7. package/dist/core/cli/cli-ui.js.map +1 -1
  8. package/dist/core/cli/command.d.ts +11 -0
  9. package/dist/core/cli/command.js +30 -4
  10. package/dist/core/cli/command.js.map +1 -1
  11. package/dist/core/cli/commands/config/get-action.d.ts +6 -0
  12. package/dist/core/cli/commands/config/get-action.js +39 -0
  13. package/dist/core/cli/commands/config/get-action.js.map +1 -0
  14. package/dist/core/cli/commands/config/get.d.ts +2 -1
  15. package/dist/core/cli/commands/config/get.js +50 -33
  16. package/dist/core/cli/commands/config/get.js.map +1 -1
  17. package/dist/core/cli/commands/config/index.js +2 -2
  18. package/dist/core/cli/commands/config/index.js.map +1 -1
  19. package/dist/core/cli/commands/config/keys.d.ts +3 -0
  20. package/dist/core/cli/commands/config/keys.js +13 -0
  21. package/dist/core/cli/commands/config/keys.js.map +1 -0
  22. package/dist/core/cli/commands/config/reset-action.d.ts +5 -0
  23. package/dist/core/cli/commands/config/reset-action.js +45 -0
  24. package/dist/core/cli/commands/config/reset-action.js.map +1 -0
  25. package/dist/core/cli/commands/config/reset.js +13 -49
  26. package/dist/core/cli/commands/config/reset.js.map +1 -1
  27. package/dist/core/cli/commands/config/set-action.d.ts +1 -0
  28. package/dist/core/cli/commands/config/set-action.js +24 -0
  29. package/dist/core/cli/commands/config/set-action.js.map +1 -0
  30. package/dist/core/cli/commands/config/set.js +48 -34
  31. package/dist/core/cli/commands/config/set.js.map +1 -1
  32. package/dist/core/cli/commands/config/show-action.d.ts +6 -0
  33. package/dist/core/cli/commands/config/show-action.js +38 -0
  34. package/dist/core/cli/commands/config/show-action.js.map +1 -0
  35. package/dist/core/cli/commands/config/show.d.ts +2 -1
  36. package/dist/core/cli/commands/config/show.js +45 -23
  37. package/dist/core/cli/commands/config/show.js.map +1 -1
  38. package/dist/core/cli/commands/module/index.js +2 -1
  39. package/dist/core/cli/commands/module/index.js.map +1 -1
  40. package/dist/core/cli/commands/module/init-action.d.ts +20 -0
  41. package/dist/core/cli/commands/module/init-action.js +311 -0
  42. package/dist/core/cli/commands/module/init-action.js.map +1 -0
  43. package/dist/core/cli/commands/module/init.d.ts +0 -5
  44. package/dist/core/cli/commands/module/init.js +29 -168
  45. package/dist/core/cli/commands/module/init.js.map +1 -1
  46. package/dist/core/cli/commands/module/test-action.d.ts +5 -0
  47. package/dist/core/cli/commands/module/test-action.js +45 -0
  48. package/dist/core/cli/commands/module/test-action.js.map +1 -0
  49. package/dist/core/cli/commands/module/test.d.ts +0 -5
  50. package/dist/core/cli/commands/module/test.js +51 -30
  51. package/dist/core/cli/commands/module/test.js.map +1 -1
  52. package/dist/core/cli/commands/plugins-action.d.ts +7 -0
  53. package/dist/core/cli/commands/plugins-action.js +17 -0
  54. package/dist/core/cli/commands/plugins-action.js.map +1 -0
  55. package/dist/core/cli/commands/plugins.d.ts +2 -1
  56. package/dist/core/cli/commands/plugins.js +58 -25
  57. package/dist/core/cli/commands/plugins.js.map +1 -1
  58. package/dist/core/cli/commands/project/build-action.d.ts +7 -0
  59. package/dist/core/cli/commands/project/build-action.js +54 -0
  60. package/dist/core/cli/commands/project/build-action.js.map +1 -0
  61. package/dist/core/cli/commands/project/build.js +48 -64
  62. package/dist/core/cli/commands/project/build.js.map +1 -1
  63. package/dist/core/cli/commands/project/dev-action.d.ts +13 -0
  64. package/dist/core/cli/commands/project/dev-action.js +231 -0
  65. package/dist/core/cli/commands/project/dev-action.js.map +1 -0
  66. package/dist/core/cli/commands/project/dev.d.ts +1 -2
  67. package/dist/core/cli/commands/project/dev.js +28 -206
  68. package/dist/core/cli/commands/project/dev.js.map +1 -1
  69. package/dist/core/cli/commands/project/index.js +2 -2
  70. package/dist/core/cli/commands/project/index.js.map +1 -1
  71. package/dist/core/cli/commands/project/init-action.d.ts +10 -0
  72. package/dist/core/cli/commands/project/init-action.js +183 -0
  73. package/dist/core/cli/commands/project/init-action.js.map +1 -0
  74. package/dist/core/cli/commands/project/init.js +62 -111
  75. package/dist/core/cli/commands/project/init.js.map +1 -1
  76. package/dist/core/cli/commands/project/logging/index.js +2 -2
  77. package/dist/core/cli/commands/project/logging/index.js.map +1 -1
  78. package/dist/core/cli/commands/project/logging/logging-draft.d.ts +14 -0
  79. package/dist/core/cli/commands/project/logging/logging-draft.js +34 -0
  80. package/dist/core/cli/commands/project/logging/logging-draft.js.map +1 -0
  81. package/dist/core/cli/commands/project/logging/set-action.d.ts +2 -0
  82. package/dist/core/cli/commands/project/logging/set-action.js +217 -0
  83. package/dist/core/cli/commands/project/logging/set-action.js.map +1 -0
  84. package/dist/core/cli/commands/project/logging/set-operations.d.ts +24 -0
  85. package/dist/core/cli/commands/project/logging/set-operations.js +115 -0
  86. package/dist/core/cli/commands/project/logging/set-operations.js.map +1 -0
  87. package/dist/core/cli/commands/project/logging/set-usage.d.ts +8 -0
  88. package/dist/core/cli/commands/project/logging/set-usage.js +71 -0
  89. package/dist/core/cli/commands/project/logging/set-usage.js.map +1 -0
  90. package/dist/core/cli/commands/project/logging/set.js +98 -355
  91. package/dist/core/cli/commands/project/logging/set.js.map +1 -1
  92. package/dist/core/cli/commands/project/logging/show-action.d.ts +8 -0
  93. package/dist/core/cli/commands/project/logging/show-action.js +71 -0
  94. package/dist/core/cli/commands/project/logging/show-action.js.map +1 -0
  95. package/dist/core/cli/commands/project/logging/show.d.ts +2 -1
  96. package/dist/core/cli/commands/project/logging/show.js +54 -89
  97. package/dist/core/cli/commands/project/logging/show.js.map +1 -1
  98. package/dist/core/cli/commands/project/modules/add-action.d.ts +17 -0
  99. package/dist/core/cli/commands/project/modules/add-action.js +240 -0
  100. package/dist/core/cli/commands/project/modules/add-action.js.map +1 -0
  101. package/dist/core/cli/commands/project/modules/add.d.ts +1 -15
  102. package/dist/core/cli/commands/project/modules/add.js +56 -261
  103. package/dist/core/cli/commands/project/modules/add.js.map +1 -1
  104. package/dist/core/cli/commands/project/modules/index.js +2 -2
  105. package/dist/core/cli/commands/project/modules/index.js.map +1 -1
  106. package/dist/core/cli/commands/project/modules/install-action.d.ts +17 -0
  107. package/dist/core/cli/commands/project/modules/install-action.js +265 -0
  108. package/dist/core/cli/commands/project/modules/install-action.js.map +1 -0
  109. package/dist/core/cli/commands/project/modules/install.d.ts +0 -9
  110. package/dist/core/cli/commands/project/modules/install.js +54 -240
  111. package/dist/core/cli/commands/project/modules/install.js.map +1 -1
  112. package/dist/core/cli/commands/project/modules/list-action.d.ts +8 -0
  113. package/dist/core/cli/commands/project/modules/list-action.js +85 -0
  114. package/dist/core/cli/commands/project/modules/list-action.js.map +1 -0
  115. package/dist/core/cli/commands/project/modules/list.d.ts +2 -1
  116. package/dist/core/cli/commands/project/modules/list.js +54 -116
  117. package/dist/core/cli/commands/project/modules/list.js.map +1 -1
  118. package/dist/core/cli/commands/project/modules/remove-action.d.ts +7 -0
  119. package/dist/core/cli/commands/project/modules/remove-action.js +81 -0
  120. package/dist/core/cli/commands/project/modules/remove-action.js.map +1 -0
  121. package/dist/core/cli/commands/project/modules/remove.d.ts +0 -7
  122. package/dist/core/cli/commands/project/modules/remove.js +50 -100
  123. package/dist/core/cli/commands/project/modules/remove.js.map +1 -1
  124. package/dist/core/cli/commands/project/modules/update-action.d.ts +7 -0
  125. package/dist/core/cli/commands/project/modules/update-action.js +117 -0
  126. package/dist/core/cli/commands/project/modules/update-action.js.map +1 -0
  127. package/dist/core/cli/commands/project/modules/update.js +54 -86
  128. package/dist/core/cli/commands/project/modules/update.js.map +1 -1
  129. package/dist/core/cli/commands/project/run.js +2 -2
  130. package/dist/core/cli/commands/project/run.js.map +1 -1
  131. package/dist/core/cli/commands/project/start-action.d.ts +8 -0
  132. package/dist/core/cli/commands/project/start-action.js +47 -0
  133. package/dist/core/cli/commands/project/start-action.js.map +1 -0
  134. package/dist/core/cli/commands/project/start.js +53 -55
  135. package/dist/core/cli/commands/project/start.js.map +1 -1
  136. package/dist/core/cli/commands/shared/names.d.ts +1 -0
  137. package/dist/core/cli/commands/shared/names.js +10 -0
  138. package/dist/core/cli/commands/shared/names.js.map +1 -0
  139. package/dist/core/cli/commands/shared/next-steps.d.ts +5 -0
  140. package/dist/core/cli/commands/shared/next-steps.js +26 -0
  141. package/dist/core/cli/commands/shared/next-steps.js.map +1 -0
  142. package/dist/core/cli/commands/shared/project-command.d.ts +9 -0
  143. package/dist/core/cli/commands/shared/project-command.js +79 -14
  144. package/dist/core/cli/commands/shared/project-command.js.map +1 -1
  145. package/dist/core/cli/commands/update.js +47 -9
  146. package/dist/core/cli/commands/update.js.map +1 -1
  147. package/dist/core/cli/common.d.ts +3 -8
  148. package/dist/core/cli/common.js +26 -32
  149. package/dist/core/cli/common.js.map +1 -1
  150. package/dist/core/cli/exit-codes.d.ts +2 -0
  151. package/dist/core/cli/exit-codes.js +4 -1
  152. package/dist/core/cli/exit-codes.js.map +1 -1
  153. package/dist/core/cli/full-cli.js +62 -41
  154. package/dist/core/cli/full-cli.js.map +1 -1
  155. package/dist/core/cli/git-operations.js +10 -17
  156. package/dist/core/cli/git-operations.js.map +1 -1
  157. package/dist/core/cli/help.d.ts +8 -0
  158. package/dist/core/cli/help.js +34 -0
  159. package/dist/core/cli/help.js.map +1 -0
  160. package/dist/core/cli/index.js +9 -16
  161. package/dist/core/cli/index.js.map +1 -1
  162. package/dist/core/cli/lazy-action.d.ts +4 -0
  163. package/dist/core/cli/lazy-action.js +10 -0
  164. package/dist/core/cli/lazy-action.js.map +1 -0
  165. package/dist/core/cli/logging-utils.js +18 -14
  166. package/dist/core/cli/logging-utils.js.map +1 -1
  167. package/dist/core/cli/options.d.ts +20 -0
  168. package/dist/core/cli/options.js +51 -0
  169. package/dist/core/cli/options.js.map +1 -0
  170. package/dist/core/cli/output/boundary.d.ts +7 -0
  171. package/dist/core/cli/output/boundary.js +78 -0
  172. package/dist/core/cli/output/boundary.js.map +1 -0
  173. package/dist/core/cli/output/capabilities.d.ts +10 -0
  174. package/dist/core/cli/output/capabilities.js +114 -0
  175. package/dist/core/cli/output/capabilities.js.map +1 -0
  176. package/dist/core/cli/output/data.d.ts +7 -0
  177. package/dist/core/cli/output/data.js +11 -0
  178. package/dist/core/cli/output/data.js.map +1 -0
  179. package/dist/core/cli/output/errors.d.ts +14 -0
  180. package/dist/core/cli/output/errors.js +67 -0
  181. package/dist/core/cli/output/errors.js.map +1 -0
  182. package/dist/core/cli/output/failures.d.ts +3 -0
  183. package/dist/core/cli/output/failures.js +97 -0
  184. package/dist/core/cli/output/failures.js.map +1 -0
  185. package/dist/core/cli/output/format.d.ts +7 -0
  186. package/dist/core/cli/output/format.js +64 -0
  187. package/dist/core/cli/output/format.js.map +1 -0
  188. package/dist/core/cli/output/index.d.ts +13 -0
  189. package/dist/core/cli/output/index.js +30 -0
  190. package/dist/core/cli/output/index.js.map +1 -0
  191. package/dist/core/cli/output/prompt.d.ts +15 -0
  192. package/dist/core/cli/output/prompt.js +145 -0
  193. package/dist/core/cli/output/prompt.js.map +1 -0
  194. package/dist/core/cli/output/symbols.d.ts +4 -0
  195. package/dist/core/cli/output/symbols.js +44 -0
  196. package/dist/core/cli/output/symbols.js.map +1 -0
  197. package/dist/core/cli/output/tasks.d.ts +57 -0
  198. package/dist/core/cli/output/tasks.js +310 -0
  199. package/dist/core/cli/output/tasks.js.map +1 -0
  200. package/dist/core/cli/output/translations.d.ts +4 -0
  201. package/dist/core/cli/output/translations.js +109 -0
  202. package/dist/core/cli/output/translations.js.map +1 -0
  203. package/dist/core/cli/output/types.d.ts +140 -0
  204. package/dist/core/cli/output/types.js +3 -0
  205. package/dist/core/cli/output/types.js.map +1 -0
  206. package/dist/core/cli/output/ui.d.ts +2 -0
  207. package/dist/core/cli/output/ui.js +155 -0
  208. package/dist/core/cli/output/ui.js.map +1 -0
  209. package/dist/core/cli/output/verbosity.d.ts +8 -0
  210. package/dist/core/cli/output/verbosity.js +19 -0
  211. package/dist/core/cli/output/verbosity.js.map +1 -0
  212. package/dist/core/cli/package-manager.js +2 -2
  213. package/dist/core/cli/package-manager.js.map +1 -1
  214. package/dist/core/cli/plugin-arguments.d.ts +5 -0
  215. package/dist/core/cli/plugin-arguments.js +40 -0
  216. package/dist/core/cli/plugin-arguments.js.map +1 -0
  217. package/dist/core/cli/plugin-compatibility.d.ts +5 -2
  218. package/dist/core/cli/plugin-compatibility.js +22 -15
  219. package/dist/core/cli/plugin-compatibility.js.map +1 -1
  220. package/dist/core/cli/plugin-management.d.ts +19 -1
  221. package/dist/core/cli/plugin-management.js +102 -48
  222. package/dist/core/cli/plugin-management.js.map +1 -1
  223. package/dist/core/cli/plugin-registry.d.ts +0 -1
  224. package/dist/core/cli/plugin-registry.js +2 -3
  225. package/dist/core/cli/plugin-registry.js.map +1 -1
  226. package/dist/core/cli/plugin.js +54 -59
  227. package/dist/core/cli/plugin.js.map +1 -1
  228. package/dist/core/cli/process-runner.d.ts +2 -0
  229. package/dist/core/cli/process-runner.js +3 -0
  230. package/dist/core/cli/process-runner.js.map +1 -1
  231. package/dist/core/cli/production-start.d.ts +0 -1
  232. package/dist/core/cli/production-start.js +12 -21
  233. package/dist/core/cli/production-start.js.map +1 -1
  234. package/dist/core/cli/public.d.ts +13 -0
  235. package/dist/core/cli/public.js +42 -0
  236. package/dist/core/cli/public.js.map +1 -0
  237. package/dist/core/cli/usage-errors.d.ts +2 -0
  238. package/dist/core/cli/usage-errors.js +50 -0
  239. package/dist/core/cli/usage-errors.js.map +1 -0
  240. package/dist/core/cli/version-check.d.ts +22 -3
  241. package/dist/core/cli/version-check.js +140 -16
  242. package/dist/core/cli/version-check.js.map +1 -1
  243. package/dist/core/config/config-loader.d.ts +2 -1
  244. package/dist/core/config/config-loader.js +6 -2
  245. package/dist/core/config/config-loader.js.map +1 -1
  246. package/dist/core/downloaders/git.js +26 -20
  247. package/dist/core/downloaders/git.js.map +1 -1
  248. package/dist/core/downloaders/local.js +0 -1
  249. package/dist/core/downloaders/local.js.map +1 -1
  250. package/dist/core/downloaders/package.js +4 -5
  251. package/dist/core/downloaders/package.js.map +1 -1
  252. package/dist/core/downloaders/utils.d.ts +3 -1
  253. package/dist/core/downloaders/utils.js +39 -29
  254. package/dist/core/downloaders/utils.js.map +1 -1
  255. package/dist/core/runtime/launch-sequence.js +4 -4
  256. package/dist/core/runtime/launch-sequence.js.map +1 -1
  257. package/dist/core/runtime/module-loading.js +43 -36
  258. package/dist/core/runtime/module-loading.js.map +1 -1
  259. package/dist/core/version-checker.js +19 -13
  260. package/dist/core/version-checker.js.map +1 -1
  261. package/dist/logging/index.js +31 -7
  262. package/dist/logging/index.js.map +1 -1
  263. package/dist/logging/log-template.d.ts +8 -0
  264. package/dist/logging/log-template.js +45 -0
  265. package/dist/logging/log-template.js.map +1 -0
  266. package/dist/utils/object.d.ts +1 -0
  267. package/dist/utils/object.js +12 -0
  268. package/dist/utils/object.js.map +1 -1
  269. package/package.json +12 -6
  270. package/dist/core/cli/terminal-display.d.ts +0 -17
  271. package/dist/core/cli/terminal-display.js +0 -113
  272. package/dist/core/cli/terminal-display.js.map +0 -1
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runSet = runSet;
4
+ const logging_1 = require("../../../../../logging");
5
+ const common_1 = require("../../../common");
6
+ const cli_ui_1 = require("../../../cli-ui");
7
+ const output_1 = require("../../../output");
8
+ const next_steps_1 = require("../../shared/next-steps");
9
+ const project_command_1 = require("../../shared/project-command");
10
+ const logging_draft_1 = require("./logging-draft");
11
+ const set_operations_1 = require("./set-operations");
12
+ const set_usage_1 = require("./set-usage");
13
+ const NOTHING_TO_CHANGE = "Nothing to change";
14
+ const UNCHANGED_CONFIGURATION = "the logging configuration already has these settings";
15
+ const SHOW_COMMAND = "ajs project logging show";
16
+ const SHOW_DESCRIPTION = "view the current settings";
17
+ const DATE_FORMAT_TOKENS = [
18
+ "Format tokens: yyyy, MM, dd, HH, mm, ss (padded values)",
19
+ "Additional: SSS (milliseconds), M, d, H, m, s (non-padded)",
20
+ ];
21
+ async function runSet(options) {
22
+ const prompter = (0, output_1.createPrompter)({ command: set_usage_1.SET_COMMAND });
23
+ (0, set_usage_1.assertSetUsage)(options, prompter);
24
+ const { config, environmentConfig } = await (0, project_command_1.resolveProjectContext)(options.project, options.env);
25
+ const before = (0, logging_draft_1.resolveLoggingDraft)(config, environmentConfig);
26
+ const after = structuredClone(before);
27
+ const results = await collectChanges(after, options, config.name, prompter);
28
+ if (!(0, logging_draft_1.applyLoggingChanges)(environmentConfig, before, after)) {
29
+ reportNothingToChange(results);
30
+ return;
31
+ }
32
+ await (0, common_1.writeConfig)(options.project, config);
33
+ reportSaved(results, projectLabel(config.name, options.env), options);
34
+ }
35
+ async function collectChanges(logging, options, projectName, prompter) {
36
+ if (!(0, set_usage_1.isInteractiveRun)(options)) {
37
+ return (0, set_operations_1.applySetOptions)(logging, options);
38
+ }
39
+ await configureInteractively(logging, projectLabel(projectName, options.env), prompter);
40
+ return [];
41
+ }
42
+ function projectLabel(projectName, envName) {
43
+ return `${projectName}${envName ? ` (${envName})` : ""}`;
44
+ }
45
+ function reportNothingToChange(results) {
46
+ const reasons = results.map((result) => result.message);
47
+ const lines = reasons.length > 0 ? reasons : [UNCHANGED_CONFIGURATION];
48
+ lines.forEach((line) => (0, cli_ui_1.info)(`${NOTHING_TO_CHANGE}: ${line}`));
49
+ }
50
+ function reportResult(result) {
51
+ if (result.isChange) {
52
+ (0, output_1.getProcessUi)().message("success", result.message);
53
+ return;
54
+ }
55
+ (0, output_1.getProcessUi)().message("skip", `${NOTHING_TO_CHANGE}: ${result.message}`);
56
+ }
57
+ function reportSaved(results, label, options) {
58
+ results.forEach(reportResult);
59
+ (0, output_1.getProcessUi)().summary({
60
+ headline: `Saved the logging configuration of ${(0, output_1.getProcessPalette)().bold(label)}`,
61
+ nextSteps: [
62
+ {
63
+ command: (0, next_steps_1.scopedCommand)(SHOW_COMMAND, options),
64
+ description: SHOW_DESCRIPTION,
65
+ },
66
+ ],
67
+ });
68
+ }
69
+ async function configureInteractively(logging, label, prompter) {
70
+ (0, cli_ui_1.info)(`Configuring logging for ${(0, output_1.getProcessPalette)().bold(label)}`);
71
+ logging.enabled = await prompter.confirm({
72
+ message: "Enable logging?",
73
+ flag: `${set_usage_1.SET_OPTION_FLAGS.enable} | ${set_usage_1.SET_OPTION_FLAGS.disable}`,
74
+ defaultAnswer: logging.enabled,
75
+ });
76
+ if (!logging.enabled) {
77
+ (0, cli_ui_1.warning)(`Logging has been disabled.`);
78
+ return;
79
+ }
80
+ await configureModuleTracking(logging, prompter);
81
+ await configureFormatters(logging, prompter);
82
+ await configureDateFormat(logging, prompter);
83
+ }
84
+ const TRACKING_MODE_HANDLERS = {
85
+ all: async (tracking) => {
86
+ tracking.includes = [];
87
+ tracking.excludes = [];
88
+ },
89
+ whitelist: async (tracking, prompter) => {
90
+ await handleModuleList(prompter, tracking.includes, {
91
+ message: "Enter module name to include (empty to finish):",
92
+ flag: `${set_usage_1.SET_OPTION_FLAGS.includeModule} <module>`,
93
+ title: "Included modules:",
94
+ });
95
+ tracking.excludes = [];
96
+ },
97
+ blacklist: async (tracking, prompter) => {
98
+ await handleModuleList(prompter, tracking.excludes, {
99
+ message: "Enter module name to exclude (empty to finish):",
100
+ flag: `${set_usage_1.SET_OPTION_FLAGS.excludeModule} <module>`,
101
+ title: "Excluded modules:",
102
+ });
103
+ tracking.includes = [];
104
+ },
105
+ };
106
+ function currentTrackingMode(logging) {
107
+ if (logging.moduleTracking.includes.length > 0) {
108
+ return "whitelist";
109
+ }
110
+ return logging.moduleTracking.excludes.length > 0 ? "blacklist" : "all";
111
+ }
112
+ async function configureModuleTracking(logging, prompter) {
113
+ logging.moduleTracking.enabled = await prompter.confirm({
114
+ message: "Enable module tracking?",
115
+ flag: set_usage_1.SET_OPTION_FLAGS.enableModuleTracking,
116
+ defaultAnswer: logging.moduleTracking.enabled,
117
+ });
118
+ if (!logging.moduleTracking.enabled) {
119
+ return;
120
+ }
121
+ const trackingMode = await prompter.select({
122
+ message: "Select module tracking mode:",
123
+ flag: `${set_usage_1.SET_OPTION_FLAGS.includeModule} <module>`,
124
+ choices: [
125
+ { value: "all", label: "Log all modules" },
126
+ { value: "whitelist", label: "Only log specific modules (whitelist)" },
127
+ {
128
+ value: "blacklist",
129
+ label: "Log all except specific modules (blacklist)",
130
+ },
131
+ ],
132
+ defaultAnswer: currentTrackingMode(logging),
133
+ });
134
+ await TRACKING_MODE_HANDLERS[trackingMode](logging.moduleTracking, prompter);
135
+ }
136
+ const LEVEL_FORMAT_FLAG = `${set_usage_1.SET_OPTION_FLAGS.level} <level> ${set_usage_1.SET_OPTION_FLAGS.format} <format>`;
137
+ const DATE_FORMAT_FLAG = `${set_usage_1.SET_OPTION_FLAGS.dateFormat} <format>`;
138
+ async function configureFormatters(logging, prompter) {
139
+ const isConfiguringFormatters = await prompter.confirm({
140
+ message: "Do you want to configure log formatters?",
141
+ flag: LEVEL_FORMAT_FLAG,
142
+ defaultAnswer: false,
143
+ });
144
+ if (!isConfiguringFormatters) {
145
+ return;
146
+ }
147
+ for (const level of set_operations_1.FORMATTER_LEVELS) {
148
+ await configureLevelFormat(logging, level, prompter);
149
+ }
150
+ }
151
+ async function configureLevelFormat(logging, level, prompter) {
152
+ const levelKey = (0, set_operations_1.formatterKeyOf)(level);
153
+ const levelName = level.toUpperCase();
154
+ const isCustomizing = await prompter.confirm({
155
+ message: `Customize ${levelName} log format?`,
156
+ flag: LEVEL_FORMAT_FLAG,
157
+ defaultAnswer: false,
158
+ });
159
+ if (!isCustomizing) {
160
+ return;
161
+ }
162
+ logging.formatter[levelKey] = await prompter.text({
163
+ message: `Enter format for ${levelName} level:`,
164
+ flag: LEVEL_FORMAT_FLAG,
165
+ defaultAnswer: logging.formatter[levelKey] ?? "",
166
+ });
167
+ }
168
+ async function configureDateFormat(logging, prompter) {
169
+ const isCustomizing = await prompter.confirm({
170
+ message: "Do you want to customize the date format?",
171
+ flag: DATE_FORMAT_FLAG,
172
+ defaultAnswer: false,
173
+ });
174
+ if (!isCustomizing) {
175
+ return;
176
+ }
177
+ const dateFormat = await prompter.text({
178
+ message: "Enter date format:",
179
+ flag: DATE_FORMAT_FLAG,
180
+ defaultAnswer: logging.dateFormat || logging_1.defaultConfigLogging.dateFormat,
181
+ });
182
+ logging.dateFormat = dateFormat;
183
+ (0, output_1.getProcessUi)().message("info", `Date format set to ${dateFormat}`, {
184
+ details: DATE_FORMAT_TOKENS,
185
+ });
186
+ }
187
+ async function handleModuleList(prompter, list, prompt) {
188
+ if (list.length > 0) {
189
+ (0, output_1.getProcessUi)().message("info", prompt.title, {
190
+ details: list.map((module, index) => `${index + 1}. ${module}`),
191
+ });
192
+ }
193
+ const askModuleName = () => prompter.text({ message: prompt.message, flag: prompt.flag });
194
+ let moduleName = await askModuleName();
195
+ while (moduleName) {
196
+ await toggleListedModule(prompter, list, moduleName);
197
+ moduleName = await askModuleName();
198
+ }
199
+ }
200
+ async function toggleListedModule(prompter, list, moduleName) {
201
+ if (!list.includes(moduleName)) {
202
+ list.push(moduleName);
203
+ (0, cli_ui_1.success)(`Added ${(0, output_1.getProcessPalette)().bold(moduleName)} to the list.`);
204
+ return;
205
+ }
206
+ (0, cli_ui_1.warning)(`Module ${(0, output_1.getProcessPalette)().bold(moduleName)} is already in the list.`);
207
+ const isRemoving = await prompter.confirm({
208
+ message: `Do you want to remove ${moduleName} from the list?`,
209
+ flag: `${set_usage_1.SET_OPTION_FLAGS.removeInclude} <module>`,
210
+ defaultAnswer: false,
211
+ });
212
+ if (isRemoving) {
213
+ list.splice(list.indexOf(moduleName), 1);
214
+ (0, cli_ui_1.info)(`Removed ${(0, output_1.getProcessPalette)().bold(moduleName)} from the list.`);
215
+ }
216
+ }
217
+ //# sourceMappingURL=set-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-action.js","sourceRoot":"","sources":["../../../../../../src/core/cli/commands/project/logging/set-action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { LoggingDraft } from "./logging-draft";
2
+ export interface SetOptions {
3
+ project: string;
4
+ env?: string;
5
+ enable?: boolean;
6
+ disable?: boolean;
7
+ enableModuleTracking?: boolean;
8
+ disableModuleTracking?: boolean;
9
+ includeModule?: string;
10
+ excludeModule?: string;
11
+ removeInclude?: string;
12
+ removeExclude?: string;
13
+ interactive?: boolean;
14
+ level?: string;
15
+ format?: string;
16
+ dateFormat?: string;
17
+ }
18
+ export interface OperationResult {
19
+ isChange: boolean;
20
+ message: string;
21
+ }
22
+ export declare const FORMATTER_LEVELS: string[];
23
+ export declare function formatterKeyOf(level: string): string;
24
+ export declare function applySetOptions(logging: LoggingDraft, options: SetOptions): OperationResult[];
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FORMATTER_LEVELS = void 0;
4
+ exports.formatterKeyOf = formatterKeyOf;
5
+ exports.applySetOptions = applySetOptions;
6
+ const logging_1 = require("../../../../../logging");
7
+ const output_1 = require("../../../output");
8
+ const DEFAULT_FORMATTER_LEVEL = "default";
9
+ exports.FORMATTER_LEVELS = [
10
+ ...Object.keys(logging_1.levelMap),
11
+ DEFAULT_FORMATTER_LEVEL,
12
+ ];
13
+ const MODULE_LIST_NAMES = {
14
+ includes: "include list",
15
+ excludes: "exclude list",
16
+ };
17
+ function formatterKeyOf(level) {
18
+ return Object.hasOwn(logging_1.levelMap, level)
19
+ ? String(logging_1.levelMap[level])
20
+ : DEFAULT_FORMATTER_LEVEL;
21
+ }
22
+ function toggle(label, current, wanted, write) {
23
+ const state = wanted ? "enabled" : "disabled";
24
+ if (current === wanted) {
25
+ return { isChange: false, message: `${label} is already ${state}` };
26
+ }
27
+ write();
28
+ return { isChange: true, message: `${label} ${state}` };
29
+ }
30
+ function toggleLogging(logging, wanted) {
31
+ return toggle("Logging", logging.enabled, wanted, () => {
32
+ logging.enabled = wanted;
33
+ });
34
+ }
35
+ function toggleModuleTracking(logging, wanted) {
36
+ const tracking = logging.moduleTracking;
37
+ return toggle("Module tracking", tracking.enabled, wanted, () => {
38
+ tracking.enabled = wanted;
39
+ });
40
+ }
41
+ function assign(label, current, wanted, write) {
42
+ if (current === wanted) {
43
+ return {
44
+ isChange: false,
45
+ message: `${label} is already ${(0, output_1.getProcessPalette)().dim(wanted)}`,
46
+ };
47
+ }
48
+ write();
49
+ return {
50
+ isChange: true,
51
+ message: `Set ${label} to ${(0, output_1.getProcessPalette)().dim(wanted)}`,
52
+ };
53
+ }
54
+ function setDateFormat(logging, dateFormat) {
55
+ return assign("date format", logging.dateFormat, dateFormat, () => {
56
+ logging.dateFormat = dateFormat;
57
+ });
58
+ }
59
+ function setLevelFormat(logging, level, format) {
60
+ const key = formatterKeyOf(level);
61
+ const label = `${(0, output_1.getProcessPalette)().bold(level.toUpperCase())} format`;
62
+ return assign(label, logging.formatter[key] ?? "", format, () => {
63
+ logging.formatter[key] = format;
64
+ });
65
+ }
66
+ function addModule(logging, listKey, module) {
67
+ const list = logging.moduleTracking[listKey];
68
+ const listName = MODULE_LIST_NAMES[listKey];
69
+ if (list.includes(module)) {
70
+ return {
71
+ isChange: false,
72
+ message: `${(0, output_1.getProcessPalette)().bold(module)} is already in the ${listName}`,
73
+ };
74
+ }
75
+ list.push(module);
76
+ return {
77
+ isChange: true,
78
+ message: `Added ${(0, output_1.getProcessPalette)().bold(module)} to the ${listName}`,
79
+ };
80
+ }
81
+ function removeModule(logging, listKey, module) {
82
+ const list = logging.moduleTracking[listKey];
83
+ const listName = MODULE_LIST_NAMES[listKey];
84
+ const index = list.indexOf(module);
85
+ if (index === -1) {
86
+ return {
87
+ isChange: false,
88
+ message: `${(0, output_1.getProcessPalette)().bold(module)} is not in the ${listName}`,
89
+ };
90
+ }
91
+ list.splice(index, 1);
92
+ return {
93
+ isChange: true,
94
+ message: `Removed ${(0, output_1.getProcessPalette)().bold(module)} from the ${listName}`,
95
+ };
96
+ }
97
+ function whenGiven(value, operation) {
98
+ return value ? operation(value) : undefined;
99
+ }
100
+ const OPERATIONS = [
101
+ (logging, options) => whenGiven(options.enable, () => toggleLogging(logging, true)),
102
+ (logging, options) => whenGiven(options.disable, () => toggleLogging(logging, false)),
103
+ (logging, options) => whenGiven(options.enableModuleTracking, () => toggleModuleTracking(logging, true)),
104
+ (logging, options) => whenGiven(options.disableModuleTracking, () => toggleModuleTracking(logging, false)),
105
+ (logging, options) => whenGiven(options.dateFormat, (dateFormat) => setDateFormat(logging, dateFormat)),
106
+ (logging, options) => whenGiven(options.includeModule, (module) => addModule(logging, "includes", module)),
107
+ (logging, options) => whenGiven(options.excludeModule, (module) => addModule(logging, "excludes", module)),
108
+ (logging, options) => whenGiven(options.removeInclude, (module) => removeModule(logging, "includes", module)),
109
+ (logging, options) => whenGiven(options.removeExclude, (module) => removeModule(logging, "excludes", module)),
110
+ (logging, options) => whenGiven(options.level, (level) => setLevelFormat(logging, level, options.format ?? "")),
111
+ ];
112
+ function applySetOptions(logging, options) {
113
+ return OPERATIONS.flatMap((operation) => operation(logging, options) ?? []);
114
+ }
115
+ //# sourceMappingURL=set-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-operations.js","sourceRoot":"","sources":["../../../../../../src/core/cli/commands/project/logging/set-operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type Prompter } from "../../../output";
2
+ import type { SetOptions } from "./set-operations";
3
+ type SettingOption = keyof Omit<SetOptions, "project" | "env" | "interactive">;
4
+ export declare const SET_COMMAND = "ajs project logging set";
5
+ export declare const SET_OPTION_FLAGS: Record<SettingOption, string>;
6
+ export declare function isInteractiveRun(options: SetOptions): boolean;
7
+ export declare function assertSetUsage(options: SetOptions, prompter: Prompter): void;
8
+ export {};
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SET_OPTION_FLAGS = exports.SET_COMMAND = void 0;
4
+ exports.isInteractiveRun = isInteractiveRun;
5
+ exports.assertSetUsage = assertSetUsage;
6
+ const output_1 = require("../../../output");
7
+ const exit_codes_1 = require("../../../exit-codes");
8
+ const LEVEL_FORMAT_EXAMPLE = "ajs project logging set --level debug --format '[{{DATE}}] {{ARGS}}'";
9
+ const OPTION_PAIRINGS = [
10
+ {
11
+ given: "level",
12
+ missing: "format",
13
+ reason: "--level selects which level template --format replaces; it does not set a minimum log level.",
14
+ },
15
+ {
16
+ given: "format",
17
+ missing: "level",
18
+ reason: "--format replaces the template of the level --level selects.",
19
+ },
20
+ ];
21
+ exports.SET_COMMAND = "ajs project logging set";
22
+ exports.SET_OPTION_FLAGS = {
23
+ enable: "--enable",
24
+ disable: "--disable",
25
+ enableModuleTracking: "--enable-module-tracking",
26
+ disableModuleTracking: "--disable-module-tracking",
27
+ includeModule: "--include-module",
28
+ excludeModule: "--exclude-module",
29
+ removeInclude: "--remove-include",
30
+ removeExclude: "--remove-exclude",
31
+ level: "--level",
32
+ format: "--format",
33
+ dateFormat: "--date-format",
34
+ };
35
+ const SETTING_OPTIONS = Object.keys(exports.SET_OPTION_FLAGS);
36
+ function hasSetting(options) {
37
+ return SETTING_OPTIONS.some((option) => options[option] !== undefined);
38
+ }
39
+ function isInteractiveRun(options) {
40
+ return Boolean(options.interactive) || !hasSetting(options);
41
+ }
42
+ function pairingError(pairing) {
43
+ return new output_1.CliError({
44
+ title: `${exports.SET_OPTION_FLAGS[pairing.given]} needs ${exports.SET_OPTION_FLAGS[pairing.missing]}`,
45
+ reason: pairing.reason,
46
+ fixes: [`Example: ${(0, output_1.getProcessPalette)().cyan(LEVEL_FORMAT_EXAMPLE)}`],
47
+ exitCode: exit_codes_1.USAGE_EXIT_CODE,
48
+ });
49
+ }
50
+ function missingTerminalError() {
51
+ const palette = (0, output_1.getProcessPalette)();
52
+ return new output_1.NeedsInputError({
53
+ command: exports.SET_COMMAND,
54
+ flags: [exports.SET_OPTION_FLAGS.enable],
55
+ fixes: [
56
+ `Pass the settings to change as flags, e.g. ${palette.cyan(`${exports.SET_COMMAND} ${exports.SET_OPTION_FLAGS.enable}`)}`,
57
+ `Run ${palette.cyan(`${exports.SET_COMMAND} --help`)} to list them`,
58
+ ],
59
+ });
60
+ }
61
+ function assertSetUsage(options, prompter) {
62
+ const brokenPairing = OPTION_PAIRINGS.find((pairing) => options[pairing.given] !== undefined &&
63
+ options[pairing.missing] === undefined);
64
+ if (brokenPairing) {
65
+ throw pairingError(brokenPairing);
66
+ }
67
+ if (isInteractiveRun(options) && !prompter.isInteractive) {
68
+ throw missingTerminalError();
69
+ }
70
+ }
71
+ //# sourceMappingURL=set-usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-usage.js","sourceRoot":"","sources":["../../../../../../src/core/cli/commands/project/logging/set-usage.ts"],"names":[],"mappings":";;;AA4DA,4CAEC;AA6BD,wCAYC;AAvGD,4CAKyB;AACzB,oDAAsD;AAWtD,MAAM,oBAAoB,GACxB,sEAAsE,CAAC;AAEzE,MAAM,eAAe,GAAoB;IACvC;QACE,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,QAAQ;QACjB,MAAM,EACJ,8FAA8F;KACjG;IACD;QACE,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,OAAO;QAChB,MAAM,EAAE,8DAA8D;KACvE;CACF,CAAC;AAEW,QAAA,WAAW,GAAG,yBAAyB,CAAC;AAExC,QAAA,gBAAgB,GAAkC;IAC7D,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,WAAW;IACpB,oBAAoB,EAAE,0BAA0B;IAChD,qBAAqB,EAAE,2BAA2B;IAClD,aAAa,EAAE,kBAAkB;IACjC,aAAa,EAAE,kBAAkB;IACjC,aAAa,EAAE,kBAAkB;IACjC,aAAa,EAAE,kBAAkB;IACjC,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,UAAU;IAClB,UAAU,EAAE,eAAe;CAC5B,CAAC;AAEF,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,wBAAgB,CAAoB,CAAC;AAEzE,SAAS,UAAU,CAAC,OAAmB;IACrC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC;AACzE,CAAC;AAMD,SAAgB,gBAAgB,CAAC,OAAmB;IAClD,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,YAAY,CAAC,OAAsB;IAC1C,OAAO,IAAI,iBAAQ,CAAC;QAClB,KAAK,EAAE,GAAG,wBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,wBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACtF,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,CAAC,YAAY,IAAA,0BAAiB,GAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACrE,QAAQ,EAAE,4BAAe;KAC1B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB;IAC3B,MAAM,OAAO,GAAG,IAAA,0BAAiB,GAAE,CAAC;IACpC,OAAO,IAAI,wBAAe,CAAC;QACzB,OAAO,EAAE,mBAAW;QACpB,KAAK,EAAE,CAAC,wBAAgB,CAAC,MAAM,CAAC;QAChC,KAAK,EAAE;YACL,8CAA8C,OAAO,CAAC,IAAI,CAAC,GAAG,mBAAW,IAAI,wBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE;YACzG,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,mBAAW,SAAS,CAAC,eAAe;SAC5D;KACF,CAAC,CAAC;AACL,CAAC;AAQD,SAAgB,cAAc,CAAC,OAAmB,EAAE,QAAkB;IACpE,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CACxC,CAAC,OAAO,EAAE,EAAE,CACV,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,SAAS;QACpC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,SAAS,CACzC,CAAC;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,YAAY,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QACzD,MAAM,oBAAoB,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC"}