@mediaproc/core 1.3.0 → 1.5.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 (65) hide show
  1. package/dist/errors/errorTypes.d.ts +63 -13
  2. package/dist/errors/errorTypes.d.ts.map +1 -1
  3. package/dist/errors/errorTypes.js +191 -18
  4. package/dist/errors/errorTypes.js.map +1 -1
  5. package/dist/errors/exitCodes.d.ts +23 -7
  6. package/dist/errors/exitCodes.d.ts.map +1 -1
  7. package/dist/errors/exitCodes.js +24 -7
  8. package/dist/errors/exitCodes.js.map +1 -1
  9. package/dist/explain/explainFlag.d.ts.map +1 -1
  10. package/dist/explain/explainFlag.js +120 -36
  11. package/dist/explain/explainFlag.js.map +1 -1
  12. package/dist/explain/phrases.d.ts +15 -0
  13. package/dist/explain/phrases.d.ts.map +1 -0
  14. package/dist/explain/phrases.js +101 -0
  15. package/dist/explain/phrases.js.map +1 -0
  16. package/dist/explain/templates/explainDetailsTemplate.d.ts.map +1 -1
  17. package/dist/explain/templates/explainDetailsTemplate.js +154 -60
  18. package/dist/explain/templates/explainDetailsTemplate.js.map +1 -1
  19. package/dist/explain/templates/explainHumanTemplate.d.ts.map +1 -1
  20. package/dist/explain/templates/explainHumanTemplate.js +145 -23
  21. package/dist/explain/templates/explainHumanTemplate.js.map +1 -1
  22. package/dist/formatters/explainFormatter.d.ts.map +1 -1
  23. package/dist/formatters/explainFormatter.js +2 -1
  24. package/dist/formatters/explainFormatter.js.map +1 -1
  25. package/dist/handlers/globalErrorHandler.d.ts +10 -0
  26. package/dist/handlers/globalErrorHandler.d.ts.map +1 -0
  27. package/dist/handlers/globalErrorHandler.js +45 -0
  28. package/dist/handlers/globalErrorHandler.js.map +1 -0
  29. package/dist/handlers/index.d.ts +2 -0
  30. package/dist/handlers/index.d.ts.map +1 -0
  31. package/dist/handlers/index.js +2 -0
  32. package/dist/handlers/index.js.map +1 -0
  33. package/dist/index.d.ts +1 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +2 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/types/explainTypes.d.ts +128 -0
  38. package/dist/types/explainTypes.d.ts.map +1 -1
  39. package/dist/types/explainTypes.js +0 -1
  40. package/dist/types/explainTypes.js.map +1 -1
  41. package/dist/utils/constants/supportedExtensions.d.ts.map +1 -0
  42. package/dist/utils/constants/supportedExtensions.js.map +1 -0
  43. package/dist/utils/index.d.ts +2 -1
  44. package/dist/utils/index.d.ts.map +1 -1
  45. package/dist/utils/index.js +2 -1
  46. package/dist/utils/index.js.map +1 -1
  47. package/dist/utils/normalizeColor.d.ts +7 -0
  48. package/dist/utils/normalizeColor.d.ts.map +1 -0
  49. package/dist/utils/normalizeColor.js +82 -0
  50. package/dist/utils/normalizeColor.js.map +1 -0
  51. package/dist/validators/pathValidator.js +1 -1
  52. package/dist/validators/pathValidator.js.map +1 -1
  53. package/package.json +1 -1
  54. package/dist/__tests__/explainFlag.test.d.ts +0 -2
  55. package/dist/__tests__/explainFlag.test.d.ts.map +0 -1
  56. package/dist/__tests__/explainFlag.test.js +0 -44
  57. package/dist/__tests__/explainFlag.test.js.map +0 -1
  58. package/dist/__tests__/explainTemplates.test.d.ts +0 -2
  59. package/dist/__tests__/explainTemplates.test.d.ts.map +0 -1
  60. package/dist/__tests__/explainTemplates.test.js +0 -43
  61. package/dist/__tests__/explainTemplates.test.js.map +0 -1
  62. package/dist/utils/supportedExtensions.d.ts.map +0 -1
  63. package/dist/utils/supportedExtensions.js.map +0 -1
  64. /package/dist/utils/{supportedExtensions.d.ts → constants/supportedExtensions.d.ts} +0 -0
  65. /package/dist/utils/{supportedExtensions.js → constants/supportedExtensions.js} +0 -0
@@ -1,33 +1,83 @@
1
1
  export declare enum ErrorType {
2
2
  UserInput = "UserInput",
3
+ Validation = "Validation",
4
+ Config = "Config",
5
+ Unsupported = "Unsupported",
6
+ NotImplemented = "NotImplemented",
3
7
  FileSystem = "FileSystem",
4
8
  Tool = "Tool",
5
- Unsupported = "Unsupported",
9
+ Dependency = "Dependency",
6
10
  Plugin = "Plugin",
7
- Internal = "Internal"
11
+ Internal = "Internal",
12
+ Cancelled = "Cancelled"
13
+ }
14
+ export declare enum ErrorSeverity {
15
+ Info = "Info",
16
+ Warning = "Warning",
17
+ Error = "Error",
18
+ Fatal = "Fatal"
19
+ }
20
+ export declare enum ErrorSource {
21
+ User = "User",
22
+ MediaProc = "MediaProc",
23
+ Plugin = "Plugin",
24
+ ExternalTool = "ExternalTool",
25
+ System = "System"
8
26
  }
9
27
  export declare class MediaProcError extends Error {
10
- type: ErrorType;
11
- exitCode: number;
12
- details?: any;
13
- constructor(message: string, type: ErrorType, exitCode: number, details?: any);
28
+ readonly type: ErrorType;
29
+ readonly exitCode: number;
30
+ readonly severity: ErrorSeverity;
31
+ readonly source: ErrorSource;
32
+ readonly retryable?: boolean;
33
+ readonly details?: unknown;
34
+ readonly hint?: string;
35
+ constructor(options: {
36
+ message: string;
37
+ type: ErrorType;
38
+ exitCode: number;
39
+ severity?: ErrorSeverity;
40
+ source?: ErrorSource;
41
+ retryable?: boolean;
42
+ details?: unknown;
43
+ hint?: string;
44
+ });
14
45
  }
15
46
  export declare class UserInputError extends MediaProcError {
16
- constructor(message: string, details?: any);
47
+ constructor(message: string, details?: unknown, hint?: string);
48
+ }
49
+ export declare class ValidationError extends MediaProcError {
50
+ constructor(message: string, details?: unknown, hint?: string);
51
+ }
52
+ export declare class ConfigError extends MediaProcError {
53
+ constructor(message: string, details?: unknown, hint?: string);
54
+ }
55
+ export declare class UnsupportedError extends MediaProcError {
56
+ constructor(message: string, details?: unknown, hint?: string);
57
+ }
58
+ export declare class NotImplementedError extends MediaProcError {
59
+ constructor(message?: string, details?: unknown);
17
60
  }
18
61
  export declare class FileSystemError extends MediaProcError {
19
- constructor(message: string, details?: any);
62
+ constructor(message: string, details?: unknown, retryable?: boolean);
20
63
  }
21
64
  export declare class ToolError extends MediaProcError {
22
- constructor(message: string, details?: any);
65
+ constructor(message: string, details?: unknown, retryable?: boolean);
23
66
  }
24
- export declare class UnsupportedError extends MediaProcError {
25
- constructor(message: string, details?: any);
67
+ export declare class DependencyError extends MediaProcError {
68
+ constructor(message: string, details?: unknown, hint?: string);
26
69
  }
27
70
  export declare class PluginError extends MediaProcError {
28
- constructor(message: string, details?: any);
71
+ constructor(message: string, details?: unknown);
72
+ }
73
+ export declare class PluginNotFoundError extends MediaProcError {
74
+ constructor(message: string, details?: unknown);
75
+ }
76
+ export declare class CancelledError extends MediaProcError {
77
+ constructor(message?: string);
29
78
  }
30
79
  export declare class InternalError extends MediaProcError {
31
- constructor(message: string, details?: any);
80
+ constructor(message: string, details?: unknown);
32
81
  }
82
+ export declare function isMediaProcError(err: unknown): err is MediaProcError;
33
83
  //# sourceMappingURL=errorTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errorTypes.d.ts","sourceRoot":"","sources":["../../src/errors/errorTypes.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACnB,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,IAAI,SAAS;IACb,WAAW,gBAAgB;IAC3B,MAAM,WAAW;IACjB,QAAQ,aAAa;CACtB;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,GAAG,CAAC;gBAEF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;CAQ9E;AAED,qBAAa,cAAe,SAAQ,cAAc;gBACpC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;CAI3C;AAED,qBAAa,eAAgB,SAAQ,cAAc;gBACrC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;CAI3C;AAED,qBAAa,SAAU,SAAQ,cAAc;gBAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;CAI3C;AAED,qBAAa,gBAAiB,SAAQ,cAAc;gBACtC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;CAI3C;AAED,qBAAa,WAAY,SAAQ,cAAc;gBACjC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;CAI3C;AAED,qBAAa,aAAc,SAAQ,cAAc;gBACnC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;CAI3C"}
1
+ {"version":3,"file":"errorTypes.d.ts","sourceRoot":"","sources":["../../src/errors/errorTypes.ts"],"names":[],"mappings":"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"}
@@ -1,59 +1,232 @@
1
+ /* ============================================================
2
+ * MediaProc Error System (v1.0-ready)
3
+ * ============================================================
4
+ */
5
+ import { EXIT_CODES } from "./exitCodes.js";
6
+ /* -------------------- Error Type -------------------- */
1
7
  export var ErrorType;
2
8
  (function (ErrorType) {
3
9
  ErrorType["UserInput"] = "UserInput";
10
+ ErrorType["Validation"] = "Validation";
11
+ ErrorType["Config"] = "Config";
12
+ ErrorType["Unsupported"] = "Unsupported";
13
+ ErrorType["NotImplemented"] = "NotImplemented";
4
14
  ErrorType["FileSystem"] = "FileSystem";
5
15
  ErrorType["Tool"] = "Tool";
6
- ErrorType["Unsupported"] = "Unsupported";
16
+ ErrorType["Dependency"] = "Dependency";
7
17
  ErrorType["Plugin"] = "Plugin";
8
18
  ErrorType["Internal"] = "Internal";
19
+ ErrorType["Cancelled"] = "Cancelled";
9
20
  })(ErrorType || (ErrorType = {}));
21
+ /* -------------------- Error Severity -------------------- */
22
+ export var ErrorSeverity;
23
+ (function (ErrorSeverity) {
24
+ ErrorSeverity["Info"] = "Info";
25
+ ErrorSeverity["Warning"] = "Warning";
26
+ ErrorSeverity["Error"] = "Error";
27
+ ErrorSeverity["Fatal"] = "Fatal";
28
+ })(ErrorSeverity || (ErrorSeverity = {}));
29
+ /* -------------------- Error Source -------------------- */
30
+ export var ErrorSource;
31
+ (function (ErrorSource) {
32
+ ErrorSource["User"] = "User";
33
+ ErrorSource["MediaProc"] = "MediaProc";
34
+ ErrorSource["Plugin"] = "Plugin";
35
+ ErrorSource["ExternalTool"] = "ExternalTool";
36
+ ErrorSource["System"] = "System";
37
+ })(ErrorSource || (ErrorSource = {}));
38
+ /* -------------------- Base Error -------------------- */
10
39
  export class MediaProcError extends Error {
11
40
  type;
12
41
  exitCode;
42
+ severity;
43
+ source;
44
+ retryable;
13
45
  details;
14
- constructor(message, type, exitCode, details) {
15
- super(message);
46
+ hint;
47
+ constructor(options) {
48
+ super(options.message);
16
49
  this.name = 'MediaProcError';
17
- this.type = type;
18
- this.exitCode = exitCode;
19
- this.details = details;
50
+ this.type = options.type;
51
+ this.exitCode = options.exitCode;
52
+ this.severity = options.severity ?? ErrorSeverity.Error;
53
+ this.source = options.source ?? ErrorSource.MediaProc;
54
+ this.retryable = options.retryable;
55
+ this.details = options.details;
56
+ this.hint = options.hint;
20
57
  Error.captureStackTrace?.(this, MediaProcError);
21
58
  }
22
59
  }
60
+ /* -------------------- User / Validation -------------------- */
23
61
  export class UserInputError extends MediaProcError {
24
- constructor(message, details) {
25
- super(message, ErrorType.UserInput, 1, details);
62
+ constructor(message, details, hint) {
63
+ super({
64
+ message,
65
+ type: ErrorType.UserInput,
66
+ exitCode: EXIT_CODES.USER_INPUT,
67
+ severity: ErrorSeverity.Warning,
68
+ source: ErrorSource.User,
69
+ details,
70
+ hint,
71
+ });
26
72
  this.name = 'UserInputError';
27
73
  }
28
74
  }
75
+ export class ValidationError extends MediaProcError {
76
+ constructor(message, details, hint) {
77
+ super({
78
+ message,
79
+ type: ErrorType.Validation,
80
+ exitCode: EXIT_CODES.VALIDATION,
81
+ severity: ErrorSeverity.Warning,
82
+ source: ErrorSource.User,
83
+ details,
84
+ hint,
85
+ });
86
+ this.name = 'ValidationError';
87
+ }
88
+ }
89
+ export class ConfigError extends MediaProcError {
90
+ constructor(message, details, hint) {
91
+ super({
92
+ message,
93
+ type: ErrorType.Config,
94
+ exitCode: EXIT_CODES.CONFIG,
95
+ severity: ErrorSeverity.Error,
96
+ source: ErrorSource.User,
97
+ details,
98
+ hint,
99
+ });
100
+ this.name = 'ConfigError';
101
+ }
102
+ }
103
+ export class UnsupportedError extends MediaProcError {
104
+ constructor(message, details, hint) {
105
+ super({
106
+ message,
107
+ type: ErrorType.Unsupported,
108
+ exitCode: EXIT_CODES.UNSUPPORTED,
109
+ severity: ErrorSeverity.Error,
110
+ source: ErrorSource.User,
111
+ details,
112
+ hint,
113
+ });
114
+ this.name = 'UnsupportedError';
115
+ }
116
+ }
117
+ export class NotImplementedError extends MediaProcError {
118
+ constructor(message = 'This feature is not implemented yet', details) {
119
+ super({
120
+ message,
121
+ type: ErrorType.NotImplemented,
122
+ exitCode: EXIT_CODES.NOT_IMPLEMENTED,
123
+ severity: ErrorSeverity.Info,
124
+ source: ErrorSource.MediaProc,
125
+ details,
126
+ });
127
+ this.name = 'NotImplementedError';
128
+ }
129
+ }
130
+ /* -------------------- File System -------------------- */
29
131
  export class FileSystemError extends MediaProcError {
30
- constructor(message, details) {
31
- super(message, ErrorType.FileSystem, 2, details);
132
+ constructor(message, details, retryable = false) {
133
+ super({
134
+ message,
135
+ type: ErrorType.FileSystem,
136
+ exitCode: EXIT_CODES.FS_ERROR,
137
+ severity: ErrorSeverity.Error,
138
+ source: ErrorSource.System,
139
+ retryable,
140
+ details,
141
+ });
32
142
  this.name = 'FileSystemError';
33
143
  }
34
144
  }
145
+ /* -------------------- External Tools -------------------- */
35
146
  export class ToolError extends MediaProcError {
36
- constructor(message, details) {
37
- super(message, ErrorType.Tool, 3, details);
147
+ constructor(message, details, retryable = false) {
148
+ super({
149
+ message,
150
+ type: ErrorType.Tool,
151
+ exitCode: EXIT_CODES.TOOL_ERROR,
152
+ severity: ErrorSeverity.Fatal,
153
+ source: ErrorSource.ExternalTool,
154
+ retryable,
155
+ details,
156
+ });
38
157
  this.name = 'ToolError';
39
158
  }
40
159
  }
41
- export class UnsupportedError extends MediaProcError {
42
- constructor(message, details) {
43
- super(message, ErrorType.Unsupported, 4, details);
44
- this.name = 'UnsupportedError';
160
+ export class DependencyError extends MediaProcError {
161
+ constructor(message, details, hint) {
162
+ super({
163
+ message,
164
+ type: ErrorType.Dependency,
165
+ exitCode: EXIT_CODES.DEPENDENCY_MISSING,
166
+ severity: ErrorSeverity.Fatal,
167
+ source: ErrorSource.ExternalTool,
168
+ details,
169
+ hint,
170
+ });
171
+ this.name = 'DependencyError';
45
172
  }
46
173
  }
174
+ /* -------------------- Plugin -------------------- */
47
175
  export class PluginError extends MediaProcError {
48
176
  constructor(message, details) {
49
- super(message, ErrorType.Plugin, 5, details);
177
+ super({
178
+ message,
179
+ type: ErrorType.Plugin,
180
+ exitCode: EXIT_CODES.PLUGIN_ERROR,
181
+ severity: ErrorSeverity.Error,
182
+ source: ErrorSource.Plugin,
183
+ details,
184
+ });
50
185
  this.name = 'PluginError';
51
186
  }
52
187
  }
188
+ export class PluginNotFoundError extends MediaProcError {
189
+ constructor(message, details) {
190
+ super({
191
+ message,
192
+ type: ErrorType.Plugin,
193
+ exitCode: EXIT_CODES.PLUGIN_NOT_FOUND,
194
+ severity: ErrorSeverity.Fatal,
195
+ source: ErrorSource.Plugin,
196
+ details,
197
+ });
198
+ this.name = 'PluginNotFoundError';
199
+ }
200
+ }
201
+ /* -------------------- Cancelled -------------------- */
202
+ export class CancelledError extends MediaProcError {
203
+ constructor(message = 'Operation cancelled by user') {
204
+ super({
205
+ message,
206
+ type: ErrorType.Cancelled,
207
+ exitCode: EXIT_CODES.INTERRUPTED,
208
+ severity: ErrorSeverity.Info,
209
+ source: ErrorSource.User,
210
+ });
211
+ this.name = 'CancelledError';
212
+ }
213
+ }
214
+ /* -------------------- Internal -------------------- */
53
215
  export class InternalError extends MediaProcError {
54
216
  constructor(message, details) {
55
- super(message, ErrorType.Internal, 6, details);
217
+ super({
218
+ message,
219
+ type: ErrorType.Internal,
220
+ exitCode: EXIT_CODES.INTERNAL,
221
+ severity: ErrorSeverity.Fatal,
222
+ source: ErrorSource.MediaProc,
223
+ details,
224
+ });
56
225
  this.name = 'InternalError';
57
226
  }
58
227
  }
228
+ /* -------------------- Type Guard -------------------- */
229
+ export function isMediaProcError(err) {
230
+ return err instanceof MediaProcError;
231
+ }
59
232
  //# sourceMappingURL=errorTypes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errorTypes.js","sourceRoot":"","sources":["../../src/errors/errorTypes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,oCAAuB,CAAA;IACvB,sCAAyB,CAAA;IACzB,0BAAa,CAAA;IACb,wCAA2B,CAAA;IAC3B,8BAAiB,CAAA;IACjB,kCAAqB,CAAA;AACvB,CAAC,EAPW,SAAS,KAAT,SAAS,QAOpB;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,IAAI,CAAY;IAChB,QAAQ,CAAS;IACjB,OAAO,CAAO;IAEd,YAAY,OAAe,EAAE,IAAe,EAAE,QAAgB,EAAE,OAAa;QAC3E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,KAAK,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAClD,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,cAAc;IAChD,YAAY,OAAe,EAAE,OAAa;QACxC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,cAAc;IACjD,YAAY,OAAe,EAAE,OAAa;QACxC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,cAAc;IAC3C,YAAY,OAAe,EAAE,OAAa;QACxC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAClD,YAAY,OAAe,EAAE,OAAa;QACxC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,cAAc;IAC7C,YAAY,OAAe,EAAE,OAAa;QACxC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,cAAc;IAC/C,YAAY,OAAe,EAAE,OAAa;QACxC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF"}
1
+ {"version":3,"file":"errorTypes.js","sourceRoot":"","sources":["../../src/errors/errorTypes.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,26 @@
1
+ /**
2
+ * Exit code ranges (documented contract):
3
+ * * 0 → success
4
+ * * 1–9 → user input / config / validation
5
+ * * 10–19 → filesystem
6
+ * * 20–29 → external tools (ffmpeg, sharp, etc.)
7
+ * * 30–39 → plugin system
8
+ * * 40–49 → internal errors
9
+ * * 130 → user interruption (SIGINT)
10
+ */
1
11
  export declare const EXIT_CODES: {
2
- SUCCESS: number;
3
- USER_INPUT: number;
4
- FS_ERROR: number;
5
- TOOL_ERROR: number;
6
- UNSUPPORTED: number;
7
- PLUGIN_ERROR: number;
8
- INTERNAL: number;
12
+ readonly SUCCESS: 0;
13
+ readonly USER_INPUT: 1;
14
+ readonly VALIDATION: 2;
15
+ readonly CONFIG: 3;
16
+ readonly UNSUPPORTED: 4;
17
+ readonly NOT_IMPLEMENTED: 5;
18
+ readonly FS_ERROR: 10;
19
+ readonly TOOL_ERROR: 20;
20
+ readonly DEPENDENCY_MISSING: 21;
21
+ readonly PLUGIN_ERROR: 30;
22
+ readonly PLUGIN_NOT_FOUND: 31;
23
+ readonly INTERNAL: 40;
24
+ readonly INTERRUPTED: 130;
9
25
  };
10
26
  //# sourceMappingURL=exitCodes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exitCodes.d.ts","sourceRoot":"","sources":["../../src/errors/exitCodes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;CAQtB,CAAA"}
1
+ {"version":3,"file":"exitCodes.d.ts","sourceRoot":"","sources":["../../src/errors/exitCodes.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;CAoBb,CAAC"}
@@ -1,10 +1,27 @@
1
+ /* -------------------- Exit Codes -------------------- */
2
+ /**
3
+ * Exit code ranges (documented contract):
4
+ * * 0 → success
5
+ * * 1–9 → user input / config / validation
6
+ * * 10–19 → filesystem
7
+ * * 20–29 → external tools (ffmpeg, sharp, etc.)
8
+ * * 30–39 → plugin system
9
+ * * 40–49 → internal errors
10
+ * * 130 → user interruption (SIGINT)
11
+ */
1
12
  export const EXIT_CODES = {
2
- SUCCESS: 0, // Meaning: Success
3
- USER_INPUT: 1, // Meaning: Invalid user input (flags, args, paths)
4
- FS_ERROR: 2, // Meaning: File system error (missing file, permission denied)
5
- TOOL_ERROR: 3, // Meaning: External tool error (e.g., ffmpeg failure), Backend/tool error (ffmpeg, sharp, etc.)
6
- UNSUPPORTED: 4, // Meaning: Unsupported operation or format
7
- PLUGIN_ERROR: 5, // Meaning: Plugin-related error, Plugin not found or plugin load failure
8
- INTERNAL: 6 // Meaning: Internal application error, Internal MediaProc error
13
+ SUCCESS: 0,
14
+ USER_INPUT: 1,
15
+ VALIDATION: 2,
16
+ CONFIG: 3,
17
+ UNSUPPORTED: 4,
18
+ NOT_IMPLEMENTED: 5,
19
+ FS_ERROR: 10,
20
+ TOOL_ERROR: 20,
21
+ DEPENDENCY_MISSING: 21,
22
+ PLUGIN_ERROR: 30,
23
+ PLUGIN_NOT_FOUND: 31,
24
+ INTERNAL: 40,
25
+ INTERRUPTED: 130,
9
26
  };
10
27
  //# sourceMappingURL=exitCodes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exitCodes.js","sourceRoot":"","sources":["../../src/errors/exitCodes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,OAAO,EAAE,CAAC,EAAE,mBAAmB;IAC/B,UAAU,EAAE,CAAC,EAAE,mDAAmD;IAClE,QAAQ,EAAE,CAAC,EAAE,+DAA+D;IAC5E,UAAU,EAAE,CAAC,EAAE,gGAAgG;IAC/G,WAAW,EAAE,CAAC,EAAE,2CAA2C;IAC3D,YAAY,EAAE,CAAC,EAAE,yEAAyE;IAC1F,QAAQ,EAAE,CAAC,CAAC,gEAAgE;CAC/E,CAAA"}
1
+ {"version":3,"file":"exitCodes.js","sourceRoot":"","sources":["../../src/errors/exitCodes.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,CAAC;IAEV,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,CAAC;IACb,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,CAAC;IACd,eAAe,EAAE,CAAC;IAElB,QAAQ,EAAE,EAAE;IAEZ,UAAU,EAAE,EAAE;IACd,kBAAkB,EAAE,EAAE;IAEtB,YAAY,EAAE,EAAE;IAChB,gBAAgB,EAAE,EAAE;IAEpB,QAAQ,EAAE,EAAE;IAEZ,WAAW,EAAE,GAAG;CACR,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"explainFlag.d.ts","sourceRoot":"","sources":["../../src/explain/explainFlag.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIvE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,IAAS,EACT,OAAY,EACZ,SAAkC,EAClC,UAA0C,EAC1C,IAAwB,GACzB,EAAE;IACD,OAAO,EAAE,GAAG,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB,QAgKA"}
1
+ {"version":3,"file":"explainFlag.d.ts","sourceRoot":"","sources":["../../src/explain/explainFlag.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkB,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAOvE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,IAAS,EACT,OAAY,EACZ,SAAkC,EAClC,UAA0C,EAC1C,IAAwB,GACzB,EAAE;IACD,OAAO,EAAE,GAAG,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB,QAoOA"}