@c9up/ream 0.2.25 → 0.2.27

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 (178) hide show
  1. package/README.md +2 -0
  2. package/dist/Codemods.d.ts +12 -0
  3. package/dist/Codemods.d.ts.map +1 -1
  4. package/dist/Codemods.js +114 -23
  5. package/dist/Codemods.js.map +1 -1
  6. package/dist/HttpKernel.d.ts +5 -1
  7. package/dist/HttpKernel.d.ts.map +1 -1
  8. package/dist/HttpKernel.js +6 -6
  9. package/dist/HttpKernel.js.map +1 -1
  10. package/dist/Ignitor.d.ts.map +1 -1
  11. package/dist/Ignitor.js +87 -14
  12. package/dist/Ignitor.js.map +1 -1
  13. package/dist/console/Kernel.d.ts.map +1 -1
  14. package/dist/console/Kernel.js +20 -1
  15. package/dist/console/Kernel.js.map +1 -1
  16. package/dist/console/cliui.d.ts +9 -245
  17. package/dist/console/cliui.d.ts.map +1 -1
  18. package/dist/console/cliui.js +9 -583
  19. package/dist/console/cliui.js.map +1 -1
  20. package/dist/console/make/commands.d.ts +19 -0
  21. package/dist/console/make/commands.d.ts.map +1 -0
  22. package/dist/console/make/commands.js +252 -0
  23. package/dist/console/make/commands.js.map +1 -0
  24. package/dist/console/make/eject.d.ts +28 -0
  25. package/dist/console/make/eject.d.ts.map +1 -0
  26. package/dist/console/make/eject.js +161 -0
  27. package/dist/console/make/eject.js.map +1 -0
  28. package/dist/console/make/flush.d.ts +51 -0
  29. package/dist/console/make/flush.d.ts.map +1 -0
  30. package/dist/console/make/flush.js +93 -0
  31. package/dist/console/make/flush.js.map +1 -0
  32. package/dist/console/make/generators.d.ts +36 -0
  33. package/dist/console/make/generators.d.ts.map +1 -0
  34. package/dist/console/make/generators.js +148 -0
  35. package/dist/console/make/generators.js.map +1 -0
  36. package/dist/console/make/naming.d.ts +32 -0
  37. package/dist/console/make/naming.d.ts.map +1 -0
  38. package/dist/console/make/naming.js +82 -0
  39. package/dist/console/make/naming.js.map +1 -0
  40. package/dist/console/make/resolve.d.ts +46 -0
  41. package/dist/console/make/resolve.d.ts.map +1 -0
  42. package/dist/console/make/resolve.js +113 -0
  43. package/dist/console/make/resolve.js.map +1 -0
  44. package/dist/console/prompts.d.ts.map +1 -1
  45. package/dist/console/prompts.js +34 -46
  46. package/dist/console/prompts.js.map +1 -1
  47. package/dist/console/selection.d.ts +54 -0
  48. package/dist/console/selection.d.ts.map +1 -0
  49. package/dist/console/selection.js +235 -0
  50. package/dist/console/selection.js.map +1 -0
  51. package/dist/console/ui.d.ts +9 -15
  52. package/dist/console/ui.d.ts.map +1 -1
  53. package/dist/console/ui.js +11 -24
  54. package/dist/console/ui.js.map +1 -1
  55. package/dist/dev/fullReload.d.ts +35 -10
  56. package/dist/dev/fullReload.d.ts.map +1 -1
  57. package/dist/dev/fullReload.js +55 -14
  58. package/dist/dev/fullReload.js.map +1 -1
  59. package/dist/dev/hotWatcher.d.ts +19 -3
  60. package/dist/dev/hotWatcher.d.ts.map +1 -1
  61. package/dist/dev/hotWatcher.js +168 -18
  62. package/dist/dev/hotWatcher.js.map +1 -1
  63. package/dist/dev/readyBanner.d.ts +45 -0
  64. package/dist/dev/readyBanner.d.ts.map +1 -0
  65. package/dist/dev/readyBanner.js +72 -0
  66. package/dist/dev/readyBanner.js.map +1 -0
  67. package/dist/dev/shortcuts.d.ts +41 -0
  68. package/dist/dev/shortcuts.d.ts.map +1 -0
  69. package/dist/dev/shortcuts.js +142 -0
  70. package/dist/dev/shortcuts.js.map +1 -0
  71. package/dist/errors/prettyPrintError.d.ts.map +1 -1
  72. package/dist/errors/prettyPrintError.js +5 -8
  73. package/dist/errors/prettyPrintError.js.map +1 -1
  74. package/dist/errors/renderError.d.ts +46 -0
  75. package/dist/errors/renderError.d.ts.map +1 -0
  76. package/dist/errors/renderError.js +197 -0
  77. package/dist/errors/renderError.js.map +1 -0
  78. package/dist/hot.js +12 -2
  79. package/dist/hot.js.map +1 -1
  80. package/dist/index.d.ts +4 -3
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +5 -2
  83. package/dist/index.js.map +1 -1
  84. package/dist/profiler/MemoryProfileStore.d.ts +23 -0
  85. package/dist/profiler/MemoryProfileStore.d.ts.map +1 -0
  86. package/dist/profiler/MemoryProfileStore.js +70 -0
  87. package/dist/profiler/MemoryProfileStore.js.map +1 -0
  88. package/dist/profiler/Profiler.d.ts +56 -0
  89. package/dist/profiler/Profiler.d.ts.map +1 -0
  90. package/dist/profiler/Profiler.js +162 -0
  91. package/dist/profiler/Profiler.js.map +1 -0
  92. package/dist/profiler/collectors.d.ts +105 -0
  93. package/dist/profiler/collectors.d.ts.map +1 -0
  94. package/dist/profiler/collectors.js +164 -0
  95. package/dist/profiler/collectors.js.map +1 -0
  96. package/dist/profiler/endpoint.d.ts +27 -0
  97. package/dist/profiler/endpoint.d.ts.map +1 -0
  98. package/dist/profiler/endpoint.js +79 -0
  99. package/dist/profiler/endpoint.js.map +1 -0
  100. package/dist/profiler/index.d.ts +26 -0
  101. package/dist/profiler/index.d.ts.map +1 -0
  102. package/dist/profiler/index.js +41 -0
  103. package/dist/profiler/index.js.map +1 -0
  104. package/dist/profiler/middleware.d.ts +17 -0
  105. package/dist/profiler/middleware.d.ts.map +1 -0
  106. package/dist/profiler/middleware.js +79 -0
  107. package/dist/profiler/middleware.js.map +1 -0
  108. package/dist/profiler/render.d.ts +23 -0
  109. package/dist/profiler/render.d.ts.map +1 -0
  110. package/dist/profiler/render.js +141 -0
  111. package/dist/profiler/render.js.map +1 -0
  112. package/dist/profiler/toolbar.d.ts +34 -0
  113. package/dist/profiler/toolbar.d.ts.map +1 -0
  114. package/dist/profiler/toolbar.js +104 -0
  115. package/dist/profiler/toolbar.js.map +1 -0
  116. package/dist/profiler/types.d.ts +70 -0
  117. package/dist/profiler/types.d.ts.map +1 -0
  118. package/dist/profiler/types.js +11 -0
  119. package/dist/profiler/types.js.map +1 -0
  120. package/dist/router/Router.d.ts +11 -0
  121. package/dist/router/Router.d.ts.map +1 -1
  122. package/dist/router/Router.js +16 -0
  123. package/dist/router/Router.js.map +1 -1
  124. package/dist/stubs/index.d.ts +11 -0
  125. package/dist/stubs/index.d.ts.map +1 -0
  126. package/dist/stubs/index.js +12 -0
  127. package/dist/stubs/index.js.map +1 -0
  128. package/dist/stubs/template.d.ts +63 -0
  129. package/dist/stubs/template.d.ts.map +1 -0
  130. package/dist/stubs/template.js +209 -0
  131. package/dist/stubs/template.js.map +1 -0
  132. package/events.win32-x64-msvc.node +0 -0
  133. package/index.win32-x64-msvc.node +0 -0
  134. package/package.json +7 -1
  135. package/scheduler.win32-x64-msvc.node +0 -0
  136. package/src/Codemods.ts +153 -29
  137. package/src/HttpKernel.ts +12 -8
  138. package/src/Ignitor.ts +95 -14
  139. package/src/console/Kernel.ts +21 -1
  140. package/src/console/cliui.ts +44 -754
  141. package/src/console/make/commands.ts +270 -0
  142. package/src/console/make/eject.ts +163 -0
  143. package/src/console/make/flush.ts +125 -0
  144. package/src/console/make/generators.ts +176 -0
  145. package/src/console/make/naming.ts +85 -0
  146. package/src/console/make/resolve.ts +134 -0
  147. package/src/console/prompts.ts +45 -64
  148. package/src/console/selection.ts +274 -0
  149. package/src/console/ui.ts +12 -24
  150. package/src/dev/fullReload.ts +57 -15
  151. package/src/dev/hotWatcher.ts +165 -21
  152. package/src/dev/readyBanner.ts +84 -0
  153. package/src/dev/shortcuts.ts +158 -0
  154. package/src/errors/prettyPrintError.ts +5 -5
  155. package/src/errors/renderError.ts +230 -0
  156. package/src/hot.ts +12 -2
  157. package/src/index.ts +23 -3
  158. package/src/profiler/MemoryProfileStore.ts +75 -0
  159. package/src/profiler/Profiler.ts +182 -0
  160. package/src/profiler/collectors.ts +230 -0
  161. package/src/profiler/endpoint.ts +98 -0
  162. package/src/profiler/index.ts +56 -0
  163. package/src/profiler/middleware.ts +83 -0
  164. package/src/profiler/render.ts +173 -0
  165. package/src/profiler/toolbar.ts +106 -0
  166. package/src/profiler/types.ts +75 -0
  167. package/src/router/Router.ts +16 -0
  168. package/src/stubs/index.ts +14 -0
  169. package/src/stubs/template.ts +262 -0
  170. package/stubs/make/command.stub +29 -0
  171. package/stubs/make/controller.stub +30 -0
  172. package/stubs/make/entity.stub +11 -0
  173. package/stubs/make/event.stub +13 -0
  174. package/stubs/make/listener.stub +13 -0
  175. package/stubs/make/middleware.stub +16 -0
  176. package/stubs/make/provider.stub +26 -0
  177. package/stubs/make/service.stub +27 -0
  178. package/stubs/make/validator.stub +10 -0
@@ -1,588 +1,14 @@
1
1
  /**
2
- * Terminal UI (Console / `@poppinss/cliui` surface).
2
+ * Terminal UI — a thin re-export of `@c9up/lumen`.
3
3
  *
4
- * Everything renders through {@link Ui.write}, which is what makes the layer
5
- * testable: in `raw` mode nothing reaches the terminal and every line is kept
6
- * in memory for assertions. Colours become `name(text)` there — the same trick
7
- * Console uses, so an expected log stays a readable string instead of a soup of
8
- * escape codes.
9
- */
10
- import { stdout } from 'node:process';
11
- import { ReamError } from '../errors/ReamError.js';
12
- /** Style names, in kleur's spelling. */
13
- const STYLES = {
14
- reset: 0,
15
- bold: 1,
16
- dim: 2,
17
- italic: 3,
18
- underline: 4,
19
- red: 31,
20
- green: 32,
21
- yellow: 33,
22
- blue: 34,
23
- magenta: 35,
24
- cyan: 36,
25
- white: 37,
26
- grey: 90,
27
- bgRed: 41,
28
- bgGreen: 42,
29
- bgYellow: 43,
30
- bgBlue: 44,
31
- };
32
- /** Colour is opt-out via NO_COLOR and skipped when piped to a file. */
33
- function coloursEnabled() {
34
- if (process.env.NO_COLOR !== undefined && process.env.NO_COLOR !== '')
35
- return false;
36
- if (process.env.FORCE_COLOR !== undefined && process.env.FORCE_COLOR !== '')
37
- return true;
38
- return Boolean(stdout.isTTY);
39
- }
40
- /**
41
- * The styles were just attached, so this always holds — it is a guard rather
42
- * than a cast because a cast is how a wrong assumption becomes a runtime
43
- * surprise somewhere else.
44
- */
45
- function carriesStyles(value) {
46
- return typeof value === 'function' && 'red' in value && 'bold' in value;
47
- }
48
- function buildColors(applied, isRaw) {
49
- const render = (text) => {
50
- // Raw mode spells the styles out — `blue(info)` — so a test asserts on
51
- // something a human can read and diff.
52
- if (isRaw()) {
53
- return applied.reduceRight((inner, style) => `${style}(${inner})`, text);
54
- }
55
- if (!coloursEnabled() || applied.length === 0)
56
- return text;
57
- const open = applied.map((style) => `\u001B[${STYLES[style]}m`).join('');
58
- return `${open}${text}\u001B[0m`;
59
- };
60
- const callable = (text) => text === undefined ? buildColors(applied, isRaw) : render(text);
61
- const descriptors = {};
62
- for (const style of Object.keys(STYLES)) {
63
- if (!isStyleName(style))
64
- continue;
65
- descriptors[style] = {
66
- configurable: true,
67
- get: () => buildColors([...applied, style], isRaw),
68
- };
69
- }
70
- Object.defineProperties(callable, descriptors);
71
- if (!carriesStyles(callable)) {
72
- throw new Error('unreachable: the style accessors were just defined');
73
- }
74
- return callable;
75
- }
76
- /** `Object.keys` widens to `string`; this narrows it back against the table. */
77
- function isStyleName(value) {
78
- return Object.hasOwn(STYLES, value);
79
- }
80
- export class Ui {
81
- #mode = 'normal';
82
- #logs = [];
83
- #tableRows = [];
84
- #tableHead = [];
85
- colors = buildColors([], () => this.#mode === 'raw');
86
- logger;
87
- constructor() {
88
- this.logger = new Logger(this);
89
- }
90
- /** `raw` keeps every line in memory instead of printing it. */
91
- switchMode(mode) {
92
- this.#mode = mode;
93
- if (mode === 'raw') {
94
- this.#logs.length = 0;
95
- this.#tableRows.length = 0;
96
- this.#tableHead = [];
97
- }
98
- }
99
- get mode() {
100
- return this.#mode;
101
- }
102
- /** Everything written since raw mode was switched on. */
103
- getLogs() {
104
- return this.#logs.map((entry) => entry.message);
105
- }
106
- /** The same lines with the stream each one targeted. */
107
- getCapturedLogs() {
108
- return [...this.#logs];
109
- }
110
- /**
111
- * Table rows as they were given, before padding.
112
- *
113
- * Assertions compare data, not layout: `assertTableRows` should not break
114
- * because a column grew wider.
115
- */
116
- getTableRows() {
117
- return this.#tableRows.map((row) => [...row]);
118
- }
119
- /** @internal Recorded by {@link Table.render}. */
120
- captureTableRow(cells) {
121
- if (this.#mode === 'raw')
122
- this.#tableRows.push([...cells]);
123
- }
124
- /** @internal The head row, kept apart from the data rows. */
125
- captureTableHead(cells) {
126
- if (this.#mode === 'raw')
127
- this.#tableHead = [...cells];
128
- }
129
- /**
130
- * The header cells of the last rendered table.
131
- *
132
- * Kept apart from {@link getTableRows} so a caller can assert the data alone.
133
- * `assertTableRows` looks at both: Console treats the head as one more row, and a
134
- * test may or may not restate it.
135
- */
136
- getTableHead() {
137
- return [...this.#tableHead];
138
- }
139
- /** The single sink every widget writes through. */
140
- write(line, stream = 'stdout') {
141
- if (this.#mode === 'raw') {
142
- this.#logs.push({ message: line, stream });
143
- return;
144
- }
145
- const target = stream === 'stderr' ? process.stderr : stdout;
146
- target.write(`${line}\n`);
147
- }
148
- table() {
149
- return new Table(this);
150
- }
151
- sticker() {
152
- return new Box(this, 'sticker');
153
- }
154
- instructions() {
155
- return new Box(this, 'instructions');
156
- }
157
- tasks(options = {}) {
158
- return new Tasks(this, options);
159
- }
160
- }
161
- /**
162
- * Command logger.
4
+ * This file used to BE the implementation. It moved out because the framework
5
+ * was not its only consumer: the Rust CLI, helix's reporter and every package
6
+ * that prints a line all wanted the same `[ warn ]`, in the same yellow, and
7
+ * none of them can depend on ream.
163
8
  *
164
- * Alert levels go to stderr so a command's data output stays pipeable — a
165
- * warning must not end up inside `ream list --json | jq`.
166
- */
167
- export class Logger {
168
- #ui;
169
- #prefixText = '';
170
- #suffixText = '';
171
- constructor(ui) {
172
- this.#ui = ui;
173
- }
174
- /**
175
- * Prepend a fixed marker to EVERY message from now on.
176
- *
177
- * Console's own `prefix` is per-message (`info(msg, { prefix })`, supported
178
- * below); this sticky form is kept because a command tagging all its output
179
- * should not repeat itself on every call.
180
- */
181
- prefix(value) {
182
- this.#prefixText = value;
183
- return this;
184
- }
185
- suffix(value) {
186
- this.#suffixText = value;
187
- return this;
188
- }
189
- info(message, options = {}) {
190
- this.#write('info', 'blue', message, 'stdout', options);
191
- }
192
- success(message, options = {}) {
193
- this.#write('success', 'green', message, 'stdout', options);
194
- }
195
- warning(message, options = {}) {
196
- this.#write('warn', 'yellow', message, 'stderr', options);
197
- }
198
- error(message, options = {}) {
199
- this.#write('error', 'red', messageOf(message), 'stderr', options);
200
- }
201
- /**
202
- * A message with animated trailing dots (Console `logger.await`).
203
- *
204
- * The animation only ticks on a TTY: on a pipe, or in raw mode, one line per
205
- * frame would be noise in a log and unassertable in a test.
206
- */
207
- await(message, options = {}) {
208
- return new Animation(this.#ui, message, options);
209
- }
210
- fatal(message) {
211
- this.error(message);
212
- if (message instanceof Error && message.stack !== undefined) {
213
- this.#ui.write(this.#ui.colors.dim(message.stack), 'stderr');
214
- }
215
- }
216
- /** Only prints when DEBUG is set — the usual escape hatch for noisy detail. */
217
- debug(message) {
218
- if (process.env.DEBUG === undefined || process.env.DEBUG === '')
219
- return;
220
- this.#write('debug', 'magenta', message, 'stdout');
221
- }
222
- /** A line with no decoration. Use it for the command's own output. */
223
- log(message) {
224
- this.#ui.write(message);
225
- }
226
- /**
227
- * A step whose outcome is reported later (Console `logger.action`).
228
- *
229
- * const create = this.logger.action('creating config/auth.ts')
230
- * try { … ; create.displayDuration().succeeded() }
231
- * catch (error) { create.failed(error) }
232
- */
233
- action(title) {
234
- return new Action(this.#ui, title);
235
- }
236
- #write(label, colour, message, stream, options = {}) {
237
- const tag = this.#ui.colors[colour](label);
238
- // Per-message prefix/suffix win over the sticky ones.
239
- const prefix = options.prefix === undefined ? this.#prefixText : String(options.prefix);
240
- const suffix = options.suffix === undefined ? this.#suffixText : String(options.suffix);
241
- const parts = [
242
- prefix === '' ? '' : this.#ui.colors.dim(prefix),
243
- `[ ${tag} ]`,
244
- message,
245
- suffix === '' ? '' : this.#ui.colors.dim(suffix),
246
- ].filter((part) => part !== '');
247
- this.#ui.write(parts.join(' '), stream);
248
- }
249
- }
250
- /**
251
- * An "in progress" message with animated dots (Console `logger.await`).
252
- *
253
- * Only animates on a TTY. Elsewhere it prints the message once and each
254
- * `update` once more, which keeps logs and test assertions readable.
255
- */
256
- export class Animation {
257
- #ui;
258
- #message;
259
- #options;
260
- #timer;
261
- #frame = 0;
262
- constructor(ui, message, options) {
263
- this.#ui = ui;
264
- this.#message = message;
265
- this.#options = options;
266
- }
267
- start() {
268
- this.#print();
269
- if (this.#animatable()) {
270
- this.#timer = setInterval(() => {
271
- this.#frame = (this.#frame + 1) % 4;
272
- this.#redraw();
273
- }, 300);
274
- // Never hold the process open for a decoration.
275
- this.#timer.unref?.();
276
- }
277
- return this;
278
- }
279
- update(message, options = {}) {
280
- this.#message = message;
281
- this.#options = options;
282
- this.#frame = 0;
283
- if (this.#animatable())
284
- this.#redraw();
285
- else
286
- this.#print();
287
- return this;
288
- }
289
- stop() {
290
- if (this.#timer !== undefined) {
291
- clearInterval(this.#timer);
292
- this.#timer = undefined;
293
- stdout.write('\n');
294
- }
295
- }
296
- #animatable() {
297
- return this.#ui.mode === 'normal' && Boolean(stdout.isTTY);
298
- }
299
- #line() {
300
- const dots = '.'.repeat(this.#frame);
301
- const suffix = this.#options.suffix === undefined
302
- ? ''
303
- : ` ${this.#ui.colors.dim(String(this.#options.suffix))}`;
304
- const prefix = this.#options.prefix === undefined
305
- ? ''
306
- : `${this.#ui.colors.dim(String(this.#options.prefix))} `;
307
- return `${prefix}${this.#message}${dots}${suffix}`;
308
- }
309
- #print() {
310
- this.#ui.write(this.#line());
311
- }
312
- #redraw() {
313
- // Rewrite in place instead of stacking a line per frame.
314
- stdout.write(`\r\u001B[2K${this.#line()}`);
315
- }
316
- }
317
- /** A pending action, reported through one of its terminal methods. */
318
- export class Action {
319
- #ui;
320
- #title;
321
- #startedAt;
322
- #withDuration = false;
323
- constructor(ui, title, startedAt = Date.now()) {
324
- this.#ui = ui;
325
- this.#title = title;
326
- this.#startedAt = startedAt;
327
- }
328
- /** Append how long the action took. */
329
- displayDuration() {
330
- this.#withDuration = true;
331
- return this;
332
- }
333
- succeeded() {
334
- this.#report(this.#ui.colors.green('DONE'), 'stdout');
335
- }
336
- skipped(reason) {
337
- const suffix = reason === undefined ? '' : ` (${reason})`;
338
- this.#report(`${this.#ui.colors.yellow('SKIPPED')}${suffix}`, 'stdout');
339
- }
340
- failed(error) {
341
- this.#report(`${this.#ui.colors.red('FAILED')} ${messageOf(error)}`, 'stderr');
342
- }
343
- #report(status, stream) {
344
- const duration = this.#withDuration ? ` ${this.#ui.colors.dim(`(${this.#elapsed()})`)}` : '';
345
- this.#ui.write(`${status} ${this.#title}${duration}`, stream);
346
- }
347
- #elapsed() {
348
- const ms = Date.now() - this.#startedAt;
349
- return ms < 1000 ? `${ms}ms` : `${(ms / 1000).toFixed(2)}s`;
350
- }
351
- }
352
- /** A column-aligned table (Console `ui.table()`). */
353
- export class Table {
354
- #ui;
355
- #headCells = [];
356
- #rows = [];
357
- #full = false;
358
- #fluidColumn = 0;
359
- constructor(ui) {
360
- this.#ui = ui;
361
- }
362
- head(columns) {
363
- this.#headCells = columns.map(toCell);
364
- return this;
365
- }
366
- row(cells) {
367
- this.#rows.push(cells.map(toCell));
368
- return this;
369
- }
370
- /**
371
- * Stretch the table to the terminal width, the first column absorbing the
372
- * slack (Console `fullWidth`). Falls back to content width when the width is
373
- * unknown — a pipe has no columns.
374
- */
375
- fullWidth() {
376
- this.#full = true;
377
- return this;
378
- }
379
- /**
380
- * Which column absorbs the slack in full-width mode (Console
381
- * `fluidColumnIndex`). Defaults to the first.
382
- */
383
- fluidColumnIndex(index) {
384
- // A negative or fractional index would make `fullWidth()` silently do
385
- // nothing — the kind of failure that is noticed three screens later.
386
- if (!Number.isInteger(index) || index < 0) {
387
- throw new ReamError('E_CONSOLE_INVALID_COLUMN', `fluidColumnIndex(${index}) is not a column position.`, { hint: 'Pass a zero-based integer index.' });
388
- }
389
- this.#fluidColumn = index;
390
- return this;
391
- }
392
- render() {
393
- const all = this.#headCells.length > 0 ? [this.#headCells, ...this.#rows] : this.#rows;
394
- if (all.length === 0)
395
- return;
396
- // Widths are measured on the VISIBLE text: a cell coloured with
397
- // `colors.green('DONE')` carries escape codes that must not shift columns.
398
- const columns = Math.max(...all.map((row) => row.length));
399
- const widths = Array.from({ length: columns }, (_, index) => Math.max(...all.map((row) => visibleWidth(row[index]?.content ?? ''))));
400
- if (this.#full) {
401
- // Known only now: the column count comes from the rows.
402
- if (this.#fluidColumn >= columns) {
403
- throw new ReamError('E_CONSOLE_INVALID_COLUMN', `fluidColumnIndex(${this.#fluidColumn}) is out of range — the table has ${columns} column(s).`);
404
- }
405
- const available = stdout.columns ?? 0;
406
- const used = widths.reduce((total, width) => total + width, 0) + (columns - 1) * 2;
407
- // Only ever grows the fluid column; shrinking would truncate content.
408
- const fluid = this.#fluidColumn;
409
- if (available > used && widths[fluid] !== undefined)
410
- widths[fluid] += available - used;
411
- }
412
- const line = (cells) => cells
413
- .map((cell, index) => align(cell, widths[index] ?? 0))
414
- .join(' ')
415
- .trimEnd();
416
- if (this.#headCells.length > 0) {
417
- this.#ui.write(line(this.#headCells.map((cell) => ({
418
- ...cell,
419
- content: this.#ui.colors.bold(cell.content),
420
- }))));
421
- this.#ui.write(widths.map((width) => '─'.repeat(width)).join(' '));
422
- this.#ui.captureTableHead(this.#headCells.map((cell) => cell.content));
423
- }
424
- for (const row of this.#rows) {
425
- this.#ui.write(line(row));
426
- // Recorded unpadded: an assertion compares data, not layout.
427
- this.#ui.captureTableRow(row.map((cell) => cell.content));
428
- }
429
- }
430
- }
431
- function toCell(input) {
432
- return typeof input === 'string' ? { content: input } : { ...input };
433
- }
434
- /** Pad a cell to `width`, honouring its horizontal alignment. */
435
- function align(cell, width) {
436
- const slack = Math.max(0, width - visibleWidth(cell.content));
437
- if (cell.hAlign === 'right')
438
- return ' '.repeat(slack) + cell.content;
439
- if (cell.hAlign === 'center') {
440
- const left = Math.floor(slack / 2);
441
- return ' '.repeat(left) + cell.content + ' '.repeat(slack - left);
442
- }
443
- return cell.content + ' '.repeat(slack);
444
- }
445
- /**
446
- * A bordered box — `sticker()` for a highlighted block, `instructions()` for a
447
- * decorated list of steps.
9
+ * Kept as a module rather than deleted so existing imports — `from
10
+ * '../console/cliui.js'`, and `Logger`/`Ui` off the package barrel — keep
11
+ * resolving.
448
12
  */
449
- export class Box {
450
- #ui;
451
- #kind;
452
- #lines = [];
453
- constructor(ui, kind) {
454
- this.#ui = ui;
455
- this.#kind = kind;
456
- }
457
- add(line) {
458
- this.#lines.push(line);
459
- return this;
460
- }
461
- render() {
462
- if (this.#lines.length === 0)
463
- return;
464
- // Instructions are steps, marked with a pointer as Console renders them; a
465
- // sticker is a plain highlighted block.
466
- const decorated = this.#kind === 'instructions'
467
- ? this.#lines.map((line) => (line === '' ? line : `${this.#ui.colors.dim('>')} ${line}`))
468
- : this.#lines;
469
- const width = Math.max(...decorated.map(visibleWidth));
470
- const border = this.#ui.colors.dim('─'.repeat(width + 2));
471
- this.#ui.write(`${this.#ui.colors.dim('┌')}${border}${this.#ui.colors.dim('┐')}`);
472
- for (const line of decorated) {
473
- this.#ui.write(`${this.#ui.colors.dim('│')} ${pad(line, width)} ${this.#ui.colors.dim('│')}`);
474
- }
475
- this.#ui.write(`${this.#ui.colors.dim('└')}${border}${this.#ui.colors.dim('┘')}`);
476
- }
477
- }
478
- /** Handed to a task callback so it can report progress and failure. */
479
- export class TaskContext {
480
- #ui;
481
- #title;
482
- #verbose;
483
- #lastMessage = '';
484
- #failure;
485
- constructor(ui, title, verbose = false) {
486
- this.#ui = ui;
487
- this.#title = title;
488
- this.#verbose = verbose;
489
- }
490
- /**
491
- * Report progress.
492
- *
493
- * Verbose prints every message; minimal keeps only the last one, surfaced on
494
- * the task's final line. A progress loop otherwise floods the output with a
495
- * line per percent.
496
- */
497
- update(message) {
498
- this.#lastMessage = message;
499
- if (this.#verbose) {
500
- this.#ui.write(` ${this.#ui.colors.dim(`${this.#title}: ${message}`)}`);
501
- }
502
- }
503
- /** @internal The last progress message, shown when the task ends. */
504
- get lastMessage() {
505
- return this.#lastMessage;
506
- }
507
- /**
508
- * Mark the task as failed. Returned from the callback rather than thrown, so
509
- * an expected failure reads like a value — Console's `return task.error(…)`.
510
- */
511
- error(reason) {
512
- this.#failure = reason instanceof Error ? reason : new Error(reason);
513
- return this.#failure;
514
- }
515
- /** @internal */
516
- get failure() {
517
- return this.#failure;
518
- }
519
- }
520
- export class Tasks {
521
- #ui;
522
- #verbose;
523
- #entries = [];
524
- #outcomes = [];
525
- constructor(ui, options = {}) {
526
- this.#ui = ui;
527
- this.#verbose = options.verbose === true;
528
- }
529
- add(title, work) {
530
- this.#entries.push({ title, work });
531
- return this;
532
- }
533
- /** Results in declaration order, including the task that failed. */
534
- get outcomes() {
535
- return [...this.#outcomes];
536
- }
537
- async run() {
538
- for (const entry of this.#entries) {
539
- const context = new TaskContext(this.#ui, entry.title, this.#verbose);
540
- let message = '';
541
- let failure;
542
- try {
543
- const returned = await entry.work(context);
544
- failure = context.failure ?? (returned instanceof Error ? returned : undefined);
545
- if (failure === undefined) {
546
- message = returned === undefined ? context.lastMessage : String(returned);
547
- }
548
- }
549
- catch (err) {
550
- failure = err instanceof Error ? err : new Error(String(err));
551
- }
552
- if (failure === undefined) {
553
- this.#outcomes.push({ title: entry.title, state: 'succeeded', message });
554
- this.#ui.write(`${this.#ui.colors.green('✔')} ${entry.title}` +
555
- (message === '' ? '' : ` ${this.#ui.colors.dim(message)}`));
556
- continue;
557
- }
558
- this.#outcomes.push({
559
- title: entry.title,
560
- state: 'failed',
561
- message: failure.message,
562
- error: failure,
563
- });
564
- this.#ui.write(`${this.#ui.colors.red('✖')} ${entry.title} ${this.#ui.colors.dim(failure.message)}`, 'stderr');
565
- // Stop here: later steps normally build on this one.
566
- break;
567
- }
568
- return this.outcomes;
569
- }
570
- }
571
- function messageOf(value) {
572
- if (value instanceof Error)
573
- return value.message;
574
- return String(value);
575
- }
576
- /** Width without ANSI escapes, so colour never shifts a column. */
577
- function visibleWidth(text) {
578
- return stripAnsi(text).length;
579
- }
580
- function pad(text, width) {
581
- return text + ' '.repeat(Math.max(0, width - visibleWidth(text)));
582
- }
583
- /** Removes the SGR escape sequences `colors` writes, leaving the visible text. */
584
- export function stripAnsi(text) {
585
- // biome-ignore lint/suspicious/noControlCharactersInRegex: matching ANSI escapes is the point
586
- return text.replace(/\u001B\[[0-9;]*m/g, '');
587
- }
13
+ export { Action, Box, ConsoleRenderer, Logger, MemoryRenderer, Spinner, Steps, stripAnsi, Table, Task, TaskContext, Tasks, Ui, } from '@c9up/lumen';
588
14
  //# sourceMappingURL=cliui.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cliui.js","sourceRoot":"","sources":["../../src/console/cliui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cliui.js","sourceRoot":"","sources":["../../src/console/cliui.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,MAAM,EACN,GAAG,EAGH,eAAe,EACf,MAAM,EAEN,cAAc,EAGd,OAAO,EACP,KAAK,EAEL,SAAS,EACT,KAAK,EAML,IAAI,EAEJ,WAAW,EAMX,KAAK,EAEL,EAAE,GAEH,MAAM,aAAa,CAAA"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * The `make:` commands.
3
+ *
4
+ * They used to live in the `ream` binary, which meant Rust had to render their
5
+ * stubs — and rendering a stub means evaluating `{{#if resourceful}}`, which is
6
+ * JavaScript. Two renderers is two behaviours waiting to drift, so the
7
+ * generators moved to where the engine already is, the way `make:migration`
8
+ * moved to atlas.
9
+ *
10
+ * One class per command, built from the generator table: Adonis ships a class
11
+ * per command too, and the table is what keeps ten of them from being ten
12
+ * copies. `--force` and the skip-rather-than-clobber rule are Adonis'.
13
+ * `--dry-run` and `--json` are ours, and they are why `@c9up/ream-mcp` can
14
+ * show a plan before anything is written.
15
+ */
16
+ import type { CommandClass } from '../types.js';
17
+ /** Every `make:` command, built once. */
18
+ export declare const MAKE_COMMANDS: readonly CommandClass[];
19
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/console/make/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAsP/C,yCAAyC;AACzC,eAAO,MAAM,aAAa,EAAE,SAAS,YAAY,EAIhD,CAAA"}