@c9up/ream 0.1.26 → 0.1.28

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 (179) hide show
  1. package/README.md +65 -0
  2. package/dist/Ignitor.d.ts +115 -7
  3. package/dist/Ignitor.d.ts.map +1 -1
  4. package/dist/Ignitor.js +233 -37
  5. package/dist/Ignitor.js.map +1 -1
  6. package/dist/console/BaseCommand.d.ts +217 -0
  7. package/dist/console/BaseCommand.d.ts.map +1 -0
  8. package/dist/console/BaseCommand.js +340 -0
  9. package/dist/console/BaseCommand.js.map +1 -0
  10. package/dist/console/Console.d.ts +86 -0
  11. package/dist/console/Console.d.ts.map +1 -0
  12. package/dist/console/Console.js +134 -0
  13. package/dist/console/Console.js.map +1 -0
  14. package/dist/console/ExceptionHandler.d.ts +28 -0
  15. package/dist/console/ExceptionHandler.d.ts.map +1 -0
  16. package/dist/console/ExceptionHandler.js +76 -0
  17. package/dist/console/ExceptionHandler.js.map +1 -0
  18. package/dist/console/HelpCommand.d.ts +16 -0
  19. package/dist/console/HelpCommand.d.ts.map +1 -0
  20. package/dist/console/HelpCommand.js +40 -0
  21. package/dist/console/HelpCommand.js.map +1 -0
  22. package/dist/console/IndexGenerator.d.ts +24 -0
  23. package/dist/console/IndexGenerator.d.ts.map +1 -0
  24. package/dist/console/IndexGenerator.js +65 -0
  25. package/dist/console/IndexGenerator.js.map +1 -0
  26. package/dist/console/Kernel.d.ts +298 -0
  27. package/dist/console/Kernel.d.ts.map +1 -0
  28. package/dist/console/Kernel.js +1120 -0
  29. package/dist/console/Kernel.js.map +1 -0
  30. package/dist/console/ListCommand.d.ts +18 -0
  31. package/dist/console/ListCommand.d.ts.map +1 -0
  32. package/dist/console/ListCommand.js +60 -0
  33. package/dist/console/ListCommand.js.map +1 -0
  34. package/dist/console/assertions.d.ts +20 -0
  35. package/dist/console/assertions.d.ts.map +1 -0
  36. package/dist/console/assertions.js +84 -0
  37. package/dist/console/assertions.js.map +1 -0
  38. package/dist/console/cliui.d.ts +248 -0
  39. package/dist/console/cliui.d.ts.map +1 -0
  40. package/dist/console/cliui.js +587 -0
  41. package/dist/console/cliui.js.map +1 -0
  42. package/dist/console/decorators.d.ts +90 -0
  43. package/dist/console/decorators.d.ts.map +1 -0
  44. package/dist/console/decorators.js +142 -0
  45. package/dist/console/decorators.js.map +1 -0
  46. package/dist/console/index.d.ts +32 -0
  47. package/dist/console/index.d.ts.map +1 -0
  48. package/dist/console/index.js +24 -0
  49. package/dist/console/index.js.map +1 -0
  50. package/dist/console/loaders.d.ts +52 -0
  51. package/dist/console/loaders.d.ts.map +1 -0
  52. package/dist/console/loaders.js +131 -0
  53. package/dist/console/loaders.js.map +1 -0
  54. package/dist/console/parser.d.ts +86 -0
  55. package/dist/console/parser.d.ts.map +1 -0
  56. package/dist/console/parser.js +440 -0
  57. package/dist/console/parser.js.map +1 -0
  58. package/dist/console/prompts.d.ts +124 -0
  59. package/dist/console/prompts.d.ts.map +1 -0
  60. package/dist/console/prompts.js +364 -0
  61. package/dist/console/prompts.js.map +1 -0
  62. package/dist/console/tracing.d.ts +17 -0
  63. package/dist/console/tracing.d.ts.map +1 -0
  64. package/dist/console/tracing.js +11 -0
  65. package/dist/console/tracing.js.map +1 -0
  66. package/dist/console/types.d.ts +255 -0
  67. package/dist/console/types.d.ts.map +1 -0
  68. package/dist/console/types.js +25 -0
  69. package/dist/console/types.js.map +1 -0
  70. package/dist/console/ui.d.ts +20 -0
  71. package/dist/console/ui.d.ts.map +1 -0
  72. package/dist/console/ui.js +31 -0
  73. package/dist/console/ui.js.map +1 -0
  74. package/dist/console/utils.d.ts +27 -0
  75. package/dist/console/utils.d.ts.map +1 -0
  76. package/dist/console/utils.js +56 -0
  77. package/dist/console/utils.js.map +1 -0
  78. package/dist/container/Container.d.ts.map +1 -1
  79. package/dist/container/Container.js +40 -12
  80. package/dist/container/Container.js.map +1 -1
  81. package/dist/container/types.d.ts +14 -2
  82. package/dist/container/types.d.ts.map +1 -1
  83. package/dist/decorators/Service.d.ts +7 -0
  84. package/dist/decorators/Service.d.ts.map +1 -1
  85. package/dist/decorators/Service.js +23 -3
  86. package/dist/decorators/Service.js.map +1 -1
  87. package/dist/errors/ReamError.d.ts +25 -0
  88. package/dist/errors/ReamError.d.ts.map +1 -1
  89. package/dist/errors/ReamError.js +5 -0
  90. package/dist/errors/ReamError.js.map +1 -1
  91. package/dist/errors/prettyPrintError.d.ts +9 -0
  92. package/dist/errors/prettyPrintError.d.ts.map +1 -0
  93. package/dist/errors/prettyPrintError.js +22 -0
  94. package/dist/errors/prettyPrintError.js.map +1 -0
  95. package/dist/index.d.ts +14 -4
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +16 -2
  98. package/dist/index.js.map +1 -1
  99. package/dist/middleware/Pipeline.d.ts +29 -8
  100. package/dist/middleware/Pipeline.d.ts.map +1 -1
  101. package/dist/middleware/Pipeline.js +39 -1
  102. package/dist/middleware/Pipeline.js.map +1 -1
  103. package/dist/rpc/RpcRouter.d.ts.map +1 -1
  104. package/dist/rpc/RpcRouter.js +13 -2
  105. package/dist/rpc/RpcRouter.js.map +1 -1
  106. package/dist/services/app.d.ts +1 -1
  107. package/dist/services/app.js +1 -1
  108. package/dist/services/console.d.ts +21 -0
  109. package/dist/services/console.d.ts.map +1 -0
  110. package/dist/services/console.js +35 -0
  111. package/dist/services/console.js.map +1 -0
  112. package/dist/testing/ApiResponse.d.ts +218 -0
  113. package/dist/testing/ApiResponse.d.ts.map +1 -0
  114. package/dist/testing/ApiResponse.js +576 -0
  115. package/dist/testing/ApiResponse.js.map +1 -0
  116. package/dist/testing/RequestBuilder.d.ts +132 -72
  117. package/dist/testing/RequestBuilder.d.ts.map +1 -1
  118. package/dist/testing/RequestBuilder.js +389 -222
  119. package/dist/testing/RequestBuilder.js.map +1 -1
  120. package/dist/testing/TestClient.d.ts +34 -39
  121. package/dist/testing/TestClient.d.ts.map +1 -1
  122. package/dist/testing/TestClient.js +48 -56
  123. package/dist/testing/TestClient.js.map +1 -1
  124. package/dist/utils/Macroable.js +3 -3
  125. package/dist/utils/Macroable.js.map +1 -1
  126. package/events.darwin-arm64.node +0 -0
  127. package/events.darwin-x64.node +0 -0
  128. package/events.linux-arm64-gnu.node +0 -0
  129. package/events.linux-x64-gnu.node +0 -0
  130. package/events.win32-x64-msvc.node +0 -0
  131. package/index.darwin-arm64.node +0 -0
  132. package/index.darwin-x64.node +0 -0
  133. package/index.linux-arm64-gnu.node +0 -0
  134. package/index.linux-x64-gnu.node +0 -0
  135. package/index.win32-x64-msvc.node +0 -0
  136. package/package.json +15 -2
  137. package/scheduler.darwin-arm64.node +0 -0
  138. package/scheduler.darwin-x64.node +0 -0
  139. package/scheduler.linux-arm64-gnu.node +0 -0
  140. package/scheduler.linux-x64-gnu.node +0 -0
  141. package/scheduler.win32-x64-msvc.node +0 -0
  142. package/src/Ignitor.ts +340 -42
  143. package/src/console/BaseCommand.ts +467 -0
  144. package/src/console/Console.ts +174 -0
  145. package/src/console/ExceptionHandler.ts +91 -0
  146. package/src/console/HelpCommand.ts +37 -0
  147. package/src/console/IndexGenerator.ts +79 -0
  148. package/src/console/Kernel.ts +1382 -0
  149. package/src/console/ListCommand.ts +55 -0
  150. package/src/console/assertions.ts +114 -0
  151. package/src/console/cliui.ts +756 -0
  152. package/src/console/decorators.ts +199 -0
  153. package/src/console/index.ts +67 -0
  154. package/src/console/loaders.ts +145 -0
  155. package/src/console/parser.ts +598 -0
  156. package/src/console/prompts.ts +556 -0
  157. package/src/console/tracing.ts +22 -0
  158. package/src/console/types.ts +280 -0
  159. package/src/console/ui.ts +37 -0
  160. package/src/console/utils.ts +69 -0
  161. package/src/container/Container.ts +55 -13
  162. package/src/container/types.ts +15 -2
  163. package/src/decorators/Service.ts +28 -3
  164. package/src/errors/ReamError.ts +31 -0
  165. package/src/errors/prettyPrintError.ts +20 -0
  166. package/src/index.ts +30 -4
  167. package/src/middleware/Pipeline.ts +76 -5
  168. package/src/rpc/RpcRouter.ts +16 -2
  169. package/src/services/app.ts +1 -1
  170. package/src/services/console.ts +42 -0
  171. package/src/testing/ApiResponse.ts +691 -0
  172. package/src/testing/RequestBuilder.ts +498 -275
  173. package/src/testing/TestClient.ts +63 -86
  174. package/src/utils/Macroable.ts +3 -3
  175. package/dist/console/CommandRunner.d.ts +0 -18
  176. package/dist/console/CommandRunner.d.ts.map +0 -1
  177. package/dist/console/CommandRunner.js +0 -65
  178. package/dist/console/CommandRunner.js.map +0 -1
  179. package/src/console/CommandRunner.ts +0 -82
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseCommand.js","sourceRoot":"","sources":["../../src/console/BaseCommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * `consoleApp` — the programmatic face of the console.
3
+ *
4
+ * The CLI is not the only caller: a test wants to run a command and inspect the
5
+ * result, a controller may want to trigger one, a script may want to check a
6
+ * command exists before calling it. Spawning a process for that is both slow
7
+ * and untestable.
8
+ *
9
+ * import consoleApp from '@c9up/ream/services/console'
10
+ *
11
+ * const command = await consoleApp.exec('make:controller', ['user', '--resource'])
12
+ * command.exitCode // 0 on success, 1 on an unhandled failure
13
+ * command.result // whatever run() returned
14
+ * command.error // the failure, when one survived completed()
15
+ */
16
+ import type { Ui } from './cliui.js';
17
+ import type { Kernel, KernelState } from './Kernel.js';
18
+ import type { CommandClass, CommandInstance, ExecutedCommand, SerializedCommand } from './types.js';
19
+ export interface ConsoleOptions {
20
+ kernel: Kernel;
21
+ /**
22
+ * Loads the application's commands into the kernel. Called once, on first
23
+ * use — discovery reads the filesystem and imports modules, which is too much
24
+ * to do at every `hasCommand()`.
25
+ */
26
+ load: () => Promise<void>;
27
+ }
28
+ export declare class Console {
29
+ #private;
30
+ constructor(options: ConsoleOptions);
31
+ /**
32
+ * Load the commands if that has not happened yet.
33
+ *
34
+ * Idempotent, and safe under concurrent calls: the in-flight promise is
35
+ * shared, so two parallel `exec()` calls do not each import every command.
36
+ */
37
+ boot(): Promise<void>;
38
+ /** Run a command and return it, carrying `exitCode`, `result` and `error`. */
39
+ exec(commandName: string, argv?: readonly string[], options?: {
40
+ ui?: Ui;
41
+ }): Promise<ExecutedCommand>;
42
+ /**
43
+ * Does a command (or alias) by this name exist?
44
+ *
45
+ * Synchronous, as in Console — `await consoleApp.boot()` then `if (consoleApp.hasCommand(…))`.
46
+ * An async version would be a trap: a Promise is always truthy, so Adonis
47
+ * code copied over would take every branch.
48
+ *
49
+ * Calling it before `boot()` throws rather than answering `false`: an
50
+ * unloaded registry cannot tell "no such command" from "not looked yet", and
51
+ * a silent `false` is exactly the failure this signature exists to avoid.
52
+ */
53
+ hasCommand(name: string): boolean;
54
+ /** The metadata of every registered command. Requires {@link boot} too. */
55
+ getCommands(): SerializedCommand[];
56
+ /**
57
+ * The rest of Console's introspection surface, relayed as-is.
58
+ *
59
+ * All of it reads the registry, so all of it needs {@link boot} first —
60
+ * answering from an empty registry would be worse than the error, since
61
+ * "no such command" and "commands not loaded yet" are indistinguishable to
62
+ * the caller.
63
+ */
64
+ getCommand(commandName: string): SerializedCommand | null;
65
+ getNamespaceCommands(namespace?: string): SerializedCommand[];
66
+ getNamespaces(): string[];
67
+ getAliases(): string[];
68
+ getAliasCommand(alias: string): SerializedCommand | null;
69
+ getCommandAliases(commandName: string): string[];
70
+ getCommandSuggestions(name: string): string[];
71
+ getNamespaceSuggestions(name: string): string[];
72
+ /** The kernel's lifecycle stage — Console `getState()`. */
73
+ getState(): KernelState;
74
+ /** The command run when none is named. */
75
+ getDefaultCommand(): CommandClass;
76
+ /** The command invoked from the command line, once it has been built. */
77
+ getMainCommand(): CommandInstance | undefined;
78
+ /**
79
+ * Resolve a command class by name or alias, throwing when there is none.
80
+ * Loads the commands first, like {@link exec}.
81
+ */
82
+ find(commandName: string): Promise<CommandClass>;
83
+ /** The underlying kernel, for anything the façade does not cover. */
84
+ get kernel(): Kernel;
85
+ }
86
+ //# sourceMappingURL=Console.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Console.d.ts","sourceRoot":"","sources":["../../src/console/Console.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnG,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AAED,qBAAa,OAAO;;gBAMN,OAAO,EAAE,cAAc;IAKnC;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,8EAA8E;IACxE,IAAI,CACR,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,SAAS,MAAM,EAAO,EAC5B,OAAO,GAAE;QAAE,EAAE,CAAC,EAAE,EAAE,CAAA;KAAO,GACxB,OAAO,CAAC,eAAe,CAAC;IAK3B;;;;;;;;;;OAUG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKjC,2EAA2E;IAC3E,WAAW,IAAI,iBAAiB,EAAE;IAKlC;;;;;;;OAOG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAKzD,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAK7D,aAAa,IAAI,MAAM,EAAE;IAKzB,UAAU,IAAI,MAAM,EAAE;IAKtB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAKxD,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;IAKhD,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAK7C,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAK/C,2DAA2D;IAC3D,QAAQ,IAAI,WAAW;IAIvB,0CAA0C;IAC1C,iBAAiB,IAAI,YAAY;IAKjC,yEAAyE;IACzE,cAAc,IAAI,eAAe,GAAG,SAAS;IAI7C;;;OAGG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IActD,qEAAqE;IACrE,IAAI,MAAM,IAAI,MAAM,CAEnB;CACF"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * `consoleApp` — the programmatic face of the console.
3
+ *
4
+ * The CLI is not the only caller: a test wants to run a command and inspect the
5
+ * result, a controller may want to trigger one, a script may want to check a
6
+ * command exists before calling it. Spawning a process for that is both slow
7
+ * and untestable.
8
+ *
9
+ * import consoleApp from '@c9up/ream/services/console'
10
+ *
11
+ * const command = await consoleApp.exec('make:controller', ['user', '--resource'])
12
+ * command.exitCode // 0 on success, 1 on an unhandled failure
13
+ * command.result // whatever run() returned
14
+ * command.error // the failure, when one survived completed()
15
+ */
16
+ import { ReamError } from '../errors/ReamError.js';
17
+ export class Console {
18
+ #kernel;
19
+ #load;
20
+ #booting;
21
+ #booted = false;
22
+ constructor(options) {
23
+ this.#kernel = options.kernel;
24
+ this.#load = options.load;
25
+ }
26
+ /**
27
+ * Load the commands if that has not happened yet.
28
+ *
29
+ * Idempotent, and safe under concurrent calls: the in-flight promise is
30
+ * shared, so two parallel `exec()` calls do not each import every command.
31
+ */
32
+ async boot() {
33
+ this.#booting ??= this.#load().then(() => {
34
+ this.#booted = true;
35
+ });
36
+ await this.#booting;
37
+ }
38
+ /** Run a command and return it, carrying `exitCode`, `result` and `error`. */
39
+ async exec(commandName, argv = [], options = {}) {
40
+ await this.boot();
41
+ return this.#kernel.exec(commandName, argv, options);
42
+ }
43
+ /**
44
+ * Does a command (or alias) by this name exist?
45
+ *
46
+ * Synchronous, as in Console — `await consoleApp.boot()` then `if (consoleApp.hasCommand(…))`.
47
+ * An async version would be a trap: a Promise is always truthy, so Adonis
48
+ * code copied over would take every branch.
49
+ *
50
+ * Calling it before `boot()` throws rather than answering `false`: an
51
+ * unloaded registry cannot tell "no such command" from "not looked yet", and
52
+ * a silent `false` is exactly the failure this signature exists to avoid.
53
+ */
54
+ hasCommand(name) {
55
+ this.#assertBooted('hasCommand');
56
+ return this.#kernel.hasCommand(name);
57
+ }
58
+ /** The metadata of every registered command. Requires {@link boot} too. */
59
+ getCommands() {
60
+ this.#assertBooted('getCommands');
61
+ return this.#kernel.getCommands();
62
+ }
63
+ /**
64
+ * The rest of Console's introspection surface, relayed as-is.
65
+ *
66
+ * All of it reads the registry, so all of it needs {@link boot} first —
67
+ * answering from an empty registry would be worse than the error, since
68
+ * "no such command" and "commands not loaded yet" are indistinguishable to
69
+ * the caller.
70
+ */
71
+ getCommand(commandName) {
72
+ this.#assertBooted('getCommand');
73
+ return this.#kernel.getCommand(commandName);
74
+ }
75
+ getNamespaceCommands(namespace) {
76
+ this.#assertBooted('getNamespaceCommands');
77
+ return this.#kernel.getNamespaceCommands(namespace);
78
+ }
79
+ getNamespaces() {
80
+ this.#assertBooted('getNamespaces');
81
+ return this.#kernel.getNamespaces();
82
+ }
83
+ getAliases() {
84
+ this.#assertBooted('getAliases');
85
+ return this.#kernel.getAliases();
86
+ }
87
+ getAliasCommand(alias) {
88
+ this.#assertBooted('getAliasCommand');
89
+ return this.#kernel.getAliasCommand(alias);
90
+ }
91
+ getCommandAliases(commandName) {
92
+ this.#assertBooted('getCommandAliases');
93
+ return this.#kernel.getCommandAliases(commandName);
94
+ }
95
+ getCommandSuggestions(name) {
96
+ this.#assertBooted('getCommandSuggestions');
97
+ return this.#kernel.getCommandSuggestions(name);
98
+ }
99
+ getNamespaceSuggestions(name) {
100
+ this.#assertBooted('getNamespaceSuggestions');
101
+ return this.#kernel.getNamespaceSuggestions(name);
102
+ }
103
+ /** The kernel's lifecycle stage — Console `getState()`. */
104
+ getState() {
105
+ return this.#kernel.getState();
106
+ }
107
+ /** The command run when none is named. */
108
+ getDefaultCommand() {
109
+ this.#assertBooted('getDefaultCommand');
110
+ return this.#kernel.getDefaultCommand();
111
+ }
112
+ /** The command invoked from the command line, once it has been built. */
113
+ getMainCommand() {
114
+ return this.#kernel.getMainCommand();
115
+ }
116
+ /**
117
+ * Resolve a command class by name or alias, throwing when there is none.
118
+ * Loads the commands first, like {@link exec}.
119
+ */
120
+ async find(commandName) {
121
+ await this.boot();
122
+ return this.#kernel.find(commandName);
123
+ }
124
+ #assertBooted(method) {
125
+ if (this.#booted)
126
+ return;
127
+ throw new ReamError('E_CONSOLE_NOT_BOOTED', `consoleApp.${method}() was called before the commands were loaded.`, { hint: 'Await consoleApp.boot() first — consoleApp.exec() does it for you.' });
128
+ }
129
+ /** The underlying kernel, for anything the façade does not cover. */
130
+ get kernel() {
131
+ return this.#kernel;
132
+ }
133
+ }
134
+ //# sourceMappingURL=Console.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Console.js","sourceRoot":"","sources":["../../src/console/Console.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The default renderer for a failure of the command line (Console's
3
+ * `ExceptionHandler`).
4
+ *
5
+ * A class rather than a function so an application can extend it and override
6
+ * one step — the usual need is "report this error like the framework does, but
7
+ * ship it somewhere too".
8
+ */
9
+ import type { Kernel } from './Kernel.js';
10
+ export declare class ExceptionHandler {
11
+ /** Print the whole error, stack included. */
12
+ debug: boolean;
13
+ /**
14
+ * Error codes to report as a single line, without a stack.
15
+ *
16
+ * The framework's own call errors are always in this set: a missing flag is
17
+ * something the user typed, and a stack trace of the parser tells them
18
+ * nothing about it.
19
+ */
20
+ knownErrorCodes: string[];
21
+ protected get internalKnownErrorCodes(): readonly string[];
22
+ /** One line on stderr, through the kernel's own UI. */
23
+ protected logError(message: string, kernel: Kernel): void;
24
+ /** The full error, with its stack — what a developer needs. */
25
+ protected prettyPrintError(error: unknown): Promise<void>;
26
+ render(error: unknown, kernel: Kernel): Promise<void>;
27
+ }
28
+ //# sourceMappingURL=ExceptionHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExceptionHandler.d.ts","sourceRoot":"","sources":["../../src/console/ExceptionHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAgBzC,qBAAa,gBAAgB;IAC3B,6CAA6C;IAC7C,KAAK,UAAO;IAEZ;;;;;;OAMG;IACH,eAAe,EAAE,MAAM,EAAE,CAAK;IAE9B,SAAS,KAAK,uBAAuB,IAAI,SAAS,MAAM,EAAE,CAEzD;IAED,uDAAuD;IACvD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzD,+DAA+D;cAC/C,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAoC5D"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * The default renderer for a failure of the command line (Console's
3
+ * `ExceptionHandler`).
4
+ *
5
+ * A class rather than a function so an application can extend it and override
6
+ * one step — the usual need is "report this error like the framework does, but
7
+ * ship it somewhere too".
8
+ */
9
+ import { prettyPrintError } from '../errors/prettyPrintError.js';
10
+ import { isReamError } from '../errors/ReamError.js';
11
+ /** Errors the console raises when a command is called wrongly. */
12
+ const CALL_ERROR_CODES = [
13
+ 'E_CONSOLE_COMMAND_NOT_FOUND',
14
+ 'E_CONSOLE_MISSING_ARGUMENT',
15
+ 'E_CONSOLE_MISSING_ARGUMENT_VALUE',
16
+ 'E_CONSOLE_MISSING_FLAG',
17
+ 'E_CONSOLE_MISSING_FLAG_VALUE',
18
+ 'E_CONSOLE_UNKNOWN_FLAG',
19
+ 'E_CONSOLE_INVALID_FLAG_VALUE',
20
+ 'E_CONSOLE_INVALID_FLAG_GROUP',
21
+ 'E_CONSOLE_UNEXPECTED_ARGUMENT',
22
+ 'E_CONSOLE_PROMPT_CANCELLED',
23
+ ];
24
+ export class ExceptionHandler {
25
+ /** Print the whole error, stack included. */
26
+ debug = true;
27
+ /**
28
+ * Error codes to report as a single line, without a stack.
29
+ *
30
+ * The framework's own call errors are always in this set: a missing flag is
31
+ * something the user typed, and a stack trace of the parser tells them
32
+ * nothing about it.
33
+ */
34
+ knownErrorCodes = [];
35
+ get internalKnownErrorCodes() {
36
+ return CALL_ERROR_CODES;
37
+ }
38
+ /** One line on stderr, through the kernel's own UI. */
39
+ logError(message, kernel) {
40
+ kernel.logger.error(message);
41
+ }
42
+ /** The full error, with its stack — what a developer needs. */
43
+ async prettyPrintError(error) {
44
+ prettyPrintError(error);
45
+ }
46
+ async render(error, kernel) {
47
+ if (typeof error !== 'object' || error === null || !('message' in error)) {
48
+ this.logError(String(error), kernel);
49
+ return;
50
+ }
51
+ // An unknown command is a typo: the suggestion is the useful part, the
52
+ // stack is noise.
53
+ if (isReamError(error, 'E_CONSOLE_COMMAND_NOT_FOUND')) {
54
+ this.logError(String(error.message), kernel);
55
+ return;
56
+ }
57
+ const code = Reflect.get(error, 'code');
58
+ if (typeof code === 'string' &&
59
+ (this.internalKnownErrorCodes.includes(code) || this.knownErrorCodes.includes(code))) {
60
+ this.logError(String(Reflect.get(error, 'message')), kernel);
61
+ return;
62
+ }
63
+ // An error that knows how to report itself is left to do it.
64
+ const render = Reflect.get(error, 'render');
65
+ if (typeof render === 'function') {
66
+ await Reflect.apply(render, error, [error, kernel]);
67
+ return;
68
+ }
69
+ if (!this.debug) {
70
+ kernel.logger.fatal(error instanceof Error ? error : String(error));
71
+ return;
72
+ }
73
+ await this.prettyPrintError(error);
74
+ }
75
+ }
76
+ //# sourceMappingURL=ExceptionHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExceptionHandler.js","sourceRoot":"","sources":["../../src/console/ExceptionHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAGpD,kEAAkE;AAClE,MAAM,gBAAgB,GAAG;IACvB,6BAA6B;IAC7B,4BAA4B;IAC5B,kCAAkC;IAClC,wBAAwB;IACxB,8BAA8B;IAC9B,wBAAwB;IACxB,8BAA8B;IAC9B,8BAA8B;IAC9B,+BAA+B;IAC/B,4BAA4B;CAC7B,CAAA;AAED,MAAM,OAAO,gBAAgB;IAC3B,6CAA6C;IAC7C,KAAK,GAAG,IAAI,CAAA;IAEZ;;;;;;OAMG;IACH,eAAe,GAAa,EAAE,CAAA;IAE9B,IAAc,uBAAuB;QACnC,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,uDAAuD;IAC7C,QAAQ,CAAC,OAAe,EAAE,MAAc;QAChD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;IAED,+DAA+D;IACrD,KAAK,CAAC,gBAAgB,CAAC,KAAc;QAC7C,gBAAgB,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAc,EAAE,MAAc;QACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,EAAE,CAAC;YACzE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;YACpC,OAAM;QACR,CAAC;QAED,uEAAuE;QACvE,kBAAkB;QAClB,IAAI,WAAW,CAAC,KAAK,EAAE,6BAA6B,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAA;YAC5C,OAAM;QACR,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACvC,IACE,OAAO,IAAI,KAAK,QAAQ;YACxB,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EACpF,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YAC5D,OAAM;QACR,CAAC;QAED,6DAA6D;QAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAC3C,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;YACnD,OAAM;QACR,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YACnE,OAAM;QACR,CAAC;QAED,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;IACpC,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * `help <command>` — the built-in command explaining another one (Console's
3
+ * `HelpCommand`).
4
+ *
5
+ * A registered command, not a branch in the dispatcher: `hasCommand('help')` is
6
+ * true, `exec('help', ['make:controller'])` works, and it is replaceable like
7
+ * any other. It reads METADATA, so explaining a command does not import it.
8
+ */
9
+ import { BaseCommand } from './BaseCommand.js';
10
+ export default class HelpCommand extends BaseCommand {
11
+ static commandName: string;
12
+ static description: string;
13
+ name: string;
14
+ run(): void;
15
+ }
16
+ //# sourceMappingURL=HelpCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HelpCommand.d.ts","sourceRoot":"","sources":["../../src/console/HelpCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAI9C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IAClD,OAAgB,WAAW,SAAS;IACpC,OAAgB,WAAW,SAAkC;IAGrD,IAAI,EAAE,MAAM,CAAA;IAEpB,GAAG,IAAI,IAAI;CAgBZ"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * `help <command>` — the built-in command explaining another one (Console's
3
+ * `HelpCommand`).
4
+ *
5
+ * A registered command, not a branch in the dispatcher: `hasCommand('help')` is
6
+ * true, `exec('help', ['make:controller'])` works, and it is replaceable like
7
+ * any other. It reads METADATA, so explaining a command does not import it.
8
+ */
9
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
10
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
11
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
12
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
13
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
14
+ };
15
+ var __metadata = (this && this.__metadata) || function (k, v) {
16
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
17
+ };
18
+ import { BaseCommand } from './BaseCommand.js';
19
+ import { args } from './decorators.js';
20
+ import { renderErrorWithSuggestions } from './utils.js';
21
+ export default class HelpCommand extends BaseCommand {
22
+ static commandName = 'help';
23
+ static description = 'View help for a given command';
24
+ run() {
25
+ const command = this.kernel.getCommand(this.name);
26
+ if (command === null) {
27
+ // The same report the kernel gives for an unknown command — one dead end,
28
+ // one wording.
29
+ renderErrorWithSuggestions(this.logger, `Command "${this.name}" is not defined.`, this.kernel.getCommandSuggestions(this.name));
30
+ this.exitCode = 1;
31
+ return;
32
+ }
33
+ this.kernel.printCommandHelp(command);
34
+ }
35
+ }
36
+ __decorate([
37
+ args.string({ argumentName: 'command', description: 'Command name' }),
38
+ __metadata("design:type", String)
39
+ ], HelpCommand.prototype, "name", void 0);
40
+ //# sourceMappingURL=HelpCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HelpCommand.js","sourceRoot":"","sources":["../../src/console/HelpCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;;;;;;;;;;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AAEvD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IAClD,MAAM,CAAU,WAAW,GAAG,MAAM,CAAA;IACpC,MAAM,CAAU,WAAW,GAAG,+BAA+B,CAAA;IAK7D,GAAG;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,0EAA0E;YAC1E,eAAe;YACf,0BAA0B,CACxB,IAAI,CAAC,MAAM,EACX,YAAY,IAAI,CAAC,IAAI,mBAAmB,EACxC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7C,CAAA;YACD,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;YACjB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACvC,CAAC;;AAjBO;IADP,IAAI,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;;yCAClD"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Writes a commands manifest next to the built commands (Console's
3
+ * `IndexGenerator`).
4
+ *
5
+ * What it buys: listing the commands, or checking that one exists, without
6
+ * importing a single command module. Scanning a directory means importing every
7
+ * file in it — the manifest replaces that with one JSON read.
8
+ */
9
+ import type { SerializedCommand } from './types.js';
10
+ /** What `commands.json` holds. `version` is there to survive a format change. */
11
+ export interface CommandsManifest {
12
+ version: 1;
13
+ commands: SerializedCommand[];
14
+ }
15
+ export declare class IndexGenerator {
16
+ #private;
17
+ constructor(commandsDirectory: string | URL);
18
+ /**
19
+ * Write `commands.json` and the `main.js` / `main.d.ts` loader beside the
20
+ * commands. Returns the manifest, so a caller can report what it indexed.
21
+ */
22
+ generate(): Promise<CommandsManifest>;
23
+ }
24
+ //# sourceMappingURL=IndexGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexGenerator.d.ts","sourceRoot":"","sources":["../../src/console/IndexGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAA;IACV,QAAQ,EAAE,iBAAiB,EAAE,CAAA;CAC9B;AAED,qBAAa,cAAc;;gBAGb,iBAAiB,EAAE,MAAM,GAAG,GAAG;IAO3C;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAW5C"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Writes a commands manifest next to the built commands (Console's
3
+ * `IndexGenerator`).
4
+ *
5
+ * What it buys: listing the commands, or checking that one exists, without
6
+ * importing a single command module. Scanning a directory means importing every
7
+ * file in it — the manifest replaces that with one JSON read.
8
+ */
9
+ import { mkdir, writeFile } from 'node:fs/promises';
10
+ import { pathToFileURL } from 'node:url';
11
+ import { FsLoader } from './loaders.js';
12
+ export class IndexGenerator {
13
+ #directory;
14
+ constructor(commandsDirectory) {
15
+ this.#directory =
16
+ typeof commandsDirectory === 'string'
17
+ ? pathToFileURL(`${commandsDirectory}/`)
18
+ : commandsDirectory;
19
+ }
20
+ /**
21
+ * Write `commands.json` and the `main.js` / `main.d.ts` loader beside the
22
+ * commands. Returns the manifest, so a caller can report what it indexed.
23
+ */
24
+ async generate() {
25
+ const commands = await new FsLoader(this.#directory).getMetaData();
26
+ const manifest = { version: 1, commands };
27
+ await mkdir(this.#directory, { recursive: true });
28
+ await writeFile(new URL('commands.json', this.#directory), JSON.stringify(manifest, null, 2));
29
+ await writeFile(new URL('main.js', this.#directory), LOADER);
30
+ await writeFile(new URL('main.d.ts', this.#directory), LOADER_TYPES);
31
+ return manifest;
32
+ }
33
+ }
34
+ /**
35
+ * The generated loader. It satisfies `CommandLoader` structurally, so the
36
+ * kernel takes it as-is: `kernel.addLoader(await import('./commands/main.js'))`.
37
+ */
38
+ const LOADER = `import { readFile } from 'node:fs/promises'
39
+
40
+ /** Generated by Ream's IndexGenerator — do not edit. */
41
+ let manifest
42
+
43
+ export async function getMetaData() {
44
+ if (manifest === undefined) {
45
+ const contents = await readFile(new URL('./commands.json', import.meta.url), 'utf-8')
46
+ manifest = JSON.parse(contents).commands
47
+ }
48
+ return manifest
49
+ }
50
+
51
+ export async function getCommand(metadata) {
52
+ const commands = await getMetaData()
53
+ const command = commands.find((entry) => entry.commandName === metadata.commandName)
54
+ if (command === undefined) return null
55
+
56
+ const imported = await import(new URL(command.filePath, import.meta.url).href)
57
+ return imported.default ?? null
58
+ }
59
+ `;
60
+ const LOADER_TYPES = `import type { CommandClass, SerializedCommand } from '@c9up/ream'
61
+
62
+ export declare function getMetaData(): Promise<SerializedCommand[]>
63
+ export declare function getCommand(metadata: SerializedCommand): Promise<CommandClass | null>
64
+ `;
65
+ //# sourceMappingURL=IndexGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexGenerator.js","sourceRoot":"","sources":["../../src/console/IndexGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AASvC,MAAM,OAAO,cAAc;IAChB,UAAU,CAAK;IAExB,YAAY,iBAA+B;QACzC,IAAI,CAAC,UAAU;YACb,OAAO,iBAAiB,KAAK,QAAQ;gBACnC,CAAC,CAAC,aAAa,CAAC,GAAG,iBAAiB,GAAG,CAAC;gBACxC,CAAC,CAAC,iBAAiB,CAAA;IACzB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,QAAQ,GAAG,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAA;QAClE,MAAM,QAAQ,GAAqB,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAA;QAE3D,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACjD,MAAM,SAAS,CAAC,IAAI,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAC7F,MAAM,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAA;QAC5D,MAAM,SAAS,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,CAAA;QAEpE,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBd,CAAA;AAED,MAAM,YAAY,GAAG;;;;CAIpB,CAAA"}