@pristine-ts/cli 2.0.4 → 2.0.5

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 (140) hide show
  1. package/dist/bin/pristine.cjs +6 -2
  2. package/dist/lib/cjs/bin.js +18 -1
  3. package/dist/lib/cjs/bin.js.map +1 -1
  4. package/dist/lib/cjs/bootstrap/app-module-loader.js +40 -78
  5. package/dist/lib/cjs/bootstrap/app-module-loader.js.map +1 -1
  6. package/dist/lib/cjs/bootstrap/loaded-app-module.js +9 -13
  7. package/dist/lib/cjs/bootstrap/loaded-app-module.js.map +1 -1
  8. package/dist/lib/cjs/bootstrap/plugin-loader.js +3 -3
  9. package/dist/lib/cjs/bootstrap/plugin-loader.js.map +1 -1
  10. package/dist/lib/cjs/cli.js +173 -85
  11. package/dist/lib/cjs/cli.js.map +1 -1
  12. package/dist/lib/cjs/cli.module.js +24 -8
  13. package/dist/lib/cjs/cli.module.js.map +1 -1
  14. package/dist/lib/cjs/commands/build-alias.command.js.map +1 -1
  15. package/dist/lib/cjs/commands/build.command.js +9 -10
  16. package/dist/lib/cjs/commands/build.command.js.map +1 -1
  17. package/dist/lib/cjs/commands/config-print.command.js +1 -2
  18. package/dist/lib/cjs/commands/config-print.command.js.map +1 -1
  19. package/dist/lib/cjs/commands/help-alias.command.js.map +1 -1
  20. package/dist/lib/cjs/commands/help.command.js +1 -2
  21. package/dist/lib/cjs/commands/help.command.js.map +1 -1
  22. package/dist/lib/cjs/commands/info-alias.command.js.map +1 -1
  23. package/dist/lib/cjs/commands/info.command.js +7 -8
  24. package/dist/lib/cjs/commands/info.command.js.map +1 -1
  25. package/dist/lib/cjs/commands/init-alias.command.js.map +1 -1
  26. package/dist/lib/cjs/commands/init.command.js +13 -12
  27. package/dist/lib/cjs/commands/init.command.js.map +1 -1
  28. package/dist/lib/cjs/commands/list-alias.command.js.map +1 -1
  29. package/dist/lib/cjs/commands/list.command.js +1 -2
  30. package/dist/lib/cjs/commands/list.command.js.map +1 -1
  31. package/dist/lib/cjs/commands/start-alias.command.js.map +1 -1
  32. package/dist/lib/cjs/commands/start.command.js +3 -4
  33. package/dist/lib/cjs/commands/start.command.js.map +1 -1
  34. package/dist/lib/cjs/commands/verify-alias.command.js.map +1 -1
  35. package/dist/lib/cjs/commands/verify.command.js +3 -4
  36. package/dist/lib/cjs/commands/verify.command.js.map +1 -1
  37. package/dist/lib/cjs/config/resolved-pristine-config.js +2 -3
  38. package/dist/lib/cjs/config/resolved-pristine-config.js.map +1 -1
  39. package/dist/lib/cjs/errors/cli-error-code.enum.js +17 -0
  40. package/dist/lib/cjs/errors/cli-error-code.enum.js.map +1 -0
  41. package/dist/lib/cjs/errors/command-not-found.error.js +11 -12
  42. package/dist/lib/cjs/errors/command-not-found.error.js.map +1 -1
  43. package/dist/lib/cjs/errors/errors.js +1 -0
  44. package/dist/lib/cjs/errors/errors.js.map +1 -1
  45. package/dist/lib/cjs/event-handlers/cli.event-handler.js +28 -20
  46. package/dist/lib/cjs/event-handlers/cli.event-handler.js.map +1 -1
  47. package/dist/lib/cjs/reporters/cli-error.reporter.js +121 -0
  48. package/dist/lib/cjs/reporters/cli-error.reporter.js.map +1 -0
  49. package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  50. package/dist/lib/cjs/types/command-event-response.type.js.map +1 -1
  51. package/dist/lib/esm/bin.js +18 -1
  52. package/dist/lib/esm/bin.js.map +1 -1
  53. package/dist/lib/esm/bootstrap/app-module-loader.js +40 -78
  54. package/dist/lib/esm/bootstrap/app-module-loader.js.map +1 -1
  55. package/dist/lib/esm/bootstrap/loaded-app-module.js +9 -13
  56. package/dist/lib/esm/bootstrap/loaded-app-module.js.map +1 -1
  57. package/dist/lib/esm/bootstrap/plugin-loader.js +3 -3
  58. package/dist/lib/esm/bootstrap/plugin-loader.js.map +1 -1
  59. package/dist/lib/esm/cli.js +172 -84
  60. package/dist/lib/esm/cli.js.map +1 -1
  61. package/dist/lib/esm/cli.module.js +24 -8
  62. package/dist/lib/esm/cli.module.js.map +1 -1
  63. package/dist/lib/esm/commands/build-alias.command.js.map +1 -1
  64. package/dist/lib/esm/commands/build.command.js +10 -11
  65. package/dist/lib/esm/commands/build.command.js.map +1 -1
  66. package/dist/lib/esm/commands/config-print.command.js +2 -3
  67. package/dist/lib/esm/commands/config-print.command.js.map +1 -1
  68. package/dist/lib/esm/commands/help-alias.command.js.map +1 -1
  69. package/dist/lib/esm/commands/help.command.js +2 -3
  70. package/dist/lib/esm/commands/help.command.js.map +1 -1
  71. package/dist/lib/esm/commands/info-alias.command.js.map +1 -1
  72. package/dist/lib/esm/commands/info.command.js +8 -9
  73. package/dist/lib/esm/commands/info.command.js.map +1 -1
  74. package/dist/lib/esm/commands/init-alias.command.js.map +1 -1
  75. package/dist/lib/esm/commands/init.command.js +14 -13
  76. package/dist/lib/esm/commands/init.command.js.map +1 -1
  77. package/dist/lib/esm/commands/list-alias.command.js.map +1 -1
  78. package/dist/lib/esm/commands/list.command.js +2 -3
  79. package/dist/lib/esm/commands/list.command.js.map +1 -1
  80. package/dist/lib/esm/commands/start-alias.command.js.map +1 -1
  81. package/dist/lib/esm/commands/start.command.js +4 -5
  82. package/dist/lib/esm/commands/start.command.js.map +1 -1
  83. package/dist/lib/esm/commands/verify-alias.command.js.map +1 -1
  84. package/dist/lib/esm/commands/verify.command.js +4 -5
  85. package/dist/lib/esm/commands/verify.command.js.map +1 -1
  86. package/dist/lib/esm/config/resolved-pristine-config.js +2 -3
  87. package/dist/lib/esm/config/resolved-pristine-config.js.map +1 -1
  88. package/dist/lib/esm/errors/cli-error-code.enum.js +14 -0
  89. package/dist/lib/esm/errors/cli-error-code.enum.js.map +1 -0
  90. package/dist/lib/esm/errors/command-not-found.error.js +12 -13
  91. package/dist/lib/esm/errors/command-not-found.error.js.map +1 -1
  92. package/dist/lib/esm/errors/errors.js +1 -0
  93. package/dist/lib/esm/errors/errors.js.map +1 -1
  94. package/dist/lib/esm/event-handlers/cli.event-handler.js +29 -21
  95. package/dist/lib/esm/event-handlers/cli.event-handler.js.map +1 -1
  96. package/dist/lib/esm/reporters/cli-error.reporter.js +118 -0
  97. package/dist/lib/esm/reporters/cli-error.reporter.js.map +1 -0
  98. package/dist/lib/esm/tsconfig.tsbuildinfo +1 -1
  99. package/dist/lib/esm/types/command-event-response.type.js.map +1 -1
  100. package/dist/types/bin.d.ts +1 -0
  101. package/dist/types/bootstrap/app-module-loader.d.ts +24 -25
  102. package/dist/types/bootstrap/loaded-app-module.d.ts +12 -26
  103. package/dist/types/bootstrap/plugin-loader.d.ts +1 -1
  104. package/dist/types/cli.d.ts +69 -9
  105. package/dist/types/cli.module.d.ts +2 -2
  106. package/dist/types/commands/build-alias.command.d.ts +2 -2
  107. package/dist/types/commands/build.command.d.ts +2 -2
  108. package/dist/types/commands/config-print.command.d.ts +2 -2
  109. package/dist/types/commands/help-alias.command.d.ts +2 -2
  110. package/dist/types/commands/help.command.d.ts +2 -2
  111. package/dist/types/commands/info-alias.command.d.ts +2 -2
  112. package/dist/types/commands/info.command.d.ts +2 -2
  113. package/dist/types/commands/init-alias.command.d.ts +2 -2
  114. package/dist/types/commands/init.command.d.ts +2 -2
  115. package/dist/types/commands/list-alias.command.d.ts +2 -2
  116. package/dist/types/commands/list.command.d.ts +2 -2
  117. package/dist/types/commands/start-alias.command.d.ts +2 -2
  118. package/dist/types/commands/start.command.d.ts +2 -2
  119. package/dist/types/commands/verify-alias.command.d.ts +2 -2
  120. package/dist/types/commands/verify.command.d.ts +2 -2
  121. package/dist/types/config/pristine-config.interface.d.ts +38 -12
  122. package/dist/types/config/resolved-pristine-config.d.ts +4 -6
  123. package/dist/types/errors/cli-error-code.enum.d.ts +12 -0
  124. package/dist/types/errors/command-not-found.error.d.ts +8 -7
  125. package/dist/types/errors/errors.d.ts +1 -0
  126. package/dist/types/event-handlers/cli.event-handler.d.ts +4 -19
  127. package/dist/types/interfaces/command.interface.d.ts +2 -2
  128. package/dist/types/reporters/cli-error.reporter.d.ts +45 -0
  129. package/dist/types/types/command-event-response.type.d.ts +2 -2
  130. package/package.json +9 -9
  131. package/dist/lib/cjs/enums/enums.js +0 -18
  132. package/dist/lib/cjs/enums/enums.js.map +0 -1
  133. package/dist/lib/cjs/enums/exit-code.enum.js +0 -9
  134. package/dist/lib/cjs/enums/exit-code.enum.js.map +0 -1
  135. package/dist/lib/esm/enums/enums.js +0 -2
  136. package/dist/lib/esm/enums/enums.js.map +0 -1
  137. package/dist/lib/esm/enums/exit-code.enum.js +0 -6
  138. package/dist/lib/esm/enums/exit-code.enum.js.map +0 -1
  139. package/dist/types/enums/enums.d.ts +0 -1
  140. package/dist/types/enums/exit-code.enum.d.ts +0 -4
@@ -0,0 +1,118 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { injectable } from "tsyringe";
11
+ import { ExitCode, PristineError, PristineErrorKind, } from "@pristine-ts/common";
12
+ import { EnvironmentManager, PristineEnvironment } from "@pristine-ts/core";
13
+ /**
14
+ * Renders any thrown value to stderr and returns an appropriate process exit code.
15
+ * Counterpart to networking's `HttpErrorResponder`: same `PristineError`-based contract,
16
+ * different channel.
17
+ *
18
+ * **Production mode** (default): one-line `✗ CODE: message` for `UserError`s; a generic
19
+ * `Internal Error` for `SystemError`s (raw `Error`s, third-party throws). No stack
20
+ * trace, no cause chain.
21
+ *
22
+ * **Development mode** (`pristine.environment = dev`, env override
23
+ * `PRISTINE_ENV=dev`): full message even for system errors, structured details
24
+ * printed below, stack trace and cause chain appended at the end. Useful when debugging
25
+ * locally.
26
+ *
27
+ * Exit code selection: `error.options.exitCode` wins when present. Otherwise:
28
+ * `ExitCode.Error` (1) for user errors, `ExitCode.Software` (70) for system errors —
29
+ * both follow `sysexits.h` conventions.
30
+ *
31
+ * **Environment source**: `EnvironmentManager` is injected, not read from `process.env`
32
+ * directly. For the bin script's pre-DI fallback (kernel-boot failures), `bootstrap()`
33
+ * builds the manager from the configuration that `AppModuleLoader.load()` produced — same
34
+ * `pristine.environment` value that would have reached DI if the kernel had started. No
35
+ * code path reads `process.env` directly; env-var input enters exclusively through the
36
+ * `EnvironmentVariableResolver` registered on `CoreModule`'s configuration definitions.
37
+ *
38
+ * **Crash-isolated**: every stderr write is wrapped — if stderr is closed/broken, we
39
+ * still return an exit code rather than throwing back into the bin's catch handler.
40
+ */
41
+ let CliErrorReporter = class CliErrorReporter {
42
+ constructor(environmentManager) {
43
+ this.environmentManager = environmentManager;
44
+ }
45
+ /**
46
+ * Writes the error to stderr and returns the exit code the caller should pass to
47
+ * `process.exit`. The bin script wraps `bootstrap().catch(err => process.exit(reporter.report(err)))`.
48
+ */
49
+ report(error) {
50
+ var _a, _b;
51
+ const e = PristineError.from(error);
52
+ const isDev = this.environmentManager.getEnvironment() === PristineEnvironment.Development;
53
+ const isUserError = e.options.kind !== PristineErrorKind.SystemError;
54
+ // Headline: in production, system errors get a generic message so we don't dump
55
+ // internal-bug messages to the user. User errors always show their own message.
56
+ const headline = isUserError || isDev ? e.message : "Internal Error";
57
+ const code = (_a = e.options.code) !== null && _a !== void 0 ? _a : "ERROR";
58
+ this.write(`✗ ${code}: ${headline}\n`);
59
+ // Details: per-error-class structured fields. Surfaced for user errors always, for
60
+ // system errors only in dev (helps debugging without leaking in prod CI logs).
61
+ if (e.options.details && (isUserError || isDev)) {
62
+ for (const [k, v] of Object.entries(e.options.details)) {
63
+ const rendered = typeof v === "string" ? v : this.safeStringify(v);
64
+ this.write(` ${k}: ${rendered}\n`);
65
+ }
66
+ }
67
+ // Stack + cause chain are dev-only. Production stderr stays clean.
68
+ if (isDev) {
69
+ if (e.stack) {
70
+ this.write(`\n${e.stack}\n`);
71
+ }
72
+ let current = e.cause;
73
+ let depth = 0;
74
+ while (current instanceof Error && depth < 10) {
75
+ this.write(`\ncaused by: ${current.name}: ${current.message}\n`);
76
+ if (current.stack)
77
+ this.write(`${current.stack}\n`);
78
+ current = current.cause;
79
+ depth++;
80
+ }
81
+ }
82
+ // Exit code fallback: ExitCode.Error (1) for user errors, ExitCode.Software (70)
83
+ // for system errors. Both follow sysexits.h conventions.
84
+ return (_b = e.options.exitCode) !== null && _b !== void 0 ? _b : (isUserError ? ExitCode.Error : ExitCode.Software);
85
+ }
86
+ /**
87
+ * Wraps `process.stderr.write` so a broken stderr (closed pipe, etc.) doesn't itself
88
+ * throw and confuse the bin's outer `.catch`. The exit code is the only thing that
89
+ * matters when stderr is dead.
90
+ */
91
+ write(text) {
92
+ try {
93
+ process.stderr.write(text);
94
+ }
95
+ catch (_a) {
96
+ // Nothing useful to do if stderr is unwritable.
97
+ }
98
+ }
99
+ safeStringify(value) {
100
+ try {
101
+ return JSON.stringify(value);
102
+ }
103
+ catch (_a) {
104
+ try {
105
+ return String(value);
106
+ }
107
+ catch (_b) {
108
+ return "[unrepresentable]";
109
+ }
110
+ }
111
+ }
112
+ };
113
+ CliErrorReporter = __decorate([
114
+ injectable(),
115
+ __metadata("design:paramtypes", [EnvironmentManager])
116
+ ], CliErrorReporter);
117
+ export { CliErrorReporter };
118
+ //# sourceMappingURL=cli-error.reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-error.reporter.js","sourceRoot":"","sources":["../../../../src/reporters/cli-error.reporter.ts"],"names":[],"mappings":"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"}