faf-cli 2.1.7 → 2.2.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAgClE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAC1E,EAAE,EAAE,CAAC,EACL,OAAO,CAAC,EAAE,YAAY,GACrB,CAAC,CAWH;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACrE,EAAE,EAAE,CAAC,EACL,OAAO,CAAC,EAAE,YAAY,GACrB,CAAC,CAWH;AAsED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAM3E"}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ /**
3
+ * Error handling wrapper for consistent error management
4
+ * Provides clean error messages and telemetry
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.handleError = handleError;
8
+ exports.withErrorHandling = withErrorHandling;
9
+ exports.withSyncErrorHandling = withSyncErrorHandling;
10
+ exports.createUserError = createUserError;
11
+ const championship_style_1 = require("./championship-style");
12
+ const colors_1 = require("../fix-once/colors");
13
+ /**
14
+ * Standardized error handler
15
+ */
16
+ function handleError(err, context) {
17
+ // In quiet mode, only show critical errors
18
+ if (championship_style_1.OUTPUT_CONFIG.quiet && !isCriticalError(err)) {
19
+ process.exit(1);
20
+ }
21
+ // Format error message based on environment
22
+ const errorMessage = formatErrorMessage(err, context);
23
+ if (!championship_style_1.OUTPUT_CONFIG.quiet) {
24
+ (0, championship_style_1.error)(colors_1.colors.error('─'.repeat(50)));
25
+ (0, championship_style_1.error)(colors_1.colors.error('❌ ERROR'));
26
+ (0, championship_style_1.error)(colors_1.colors.error('─'.repeat(50)));
27
+ }
28
+ (0, championship_style_1.error)(errorMessage);
29
+ if (championship_style_1.OUTPUT_CONFIG.verbose && err.stack) {
30
+ (0, championship_style_1.error)(colors_1.colors.secondary('\nStack trace:'));
31
+ (0, championship_style_1.error)(colors_1.colors.secondary(err.stack));
32
+ }
33
+ // Log context if available
34
+ if (context && !championship_style_1.OUTPUT_CONFIG.quiet) {
35
+ if (context.command)
36
+ (0, championship_style_1.error)(`Command: ${context.command}`);
37
+ if (context.file)
38
+ (0, championship_style_1.error)(`File: ${context.file}`);
39
+ if (context.operation)
40
+ (0, championship_style_1.error)(`Operation: ${context.operation}`);
41
+ }
42
+ // Exit with appropriate code
43
+ const exitCode = getExitCode(err);
44
+ process.exit(exitCode);
45
+ }
46
+ /**
47
+ * Wrapper for async functions with error handling
48
+ */
49
+ function withErrorHandling(fn, context) {
50
+ return (async (...args) => {
51
+ try {
52
+ return await fn(...args);
53
+ }
54
+ catch (err) {
55
+ handleError(err, {
56
+ ...context,
57
+ details: { args }
58
+ });
59
+ }
60
+ });
61
+ }
62
+ /**
63
+ * Wrapper for sync functions with error handling
64
+ */
65
+ function withSyncErrorHandling(fn, context) {
66
+ return ((...args) => {
67
+ try {
68
+ return fn(...args);
69
+ }
70
+ catch (err) {
71
+ handleError(err, {
72
+ ...context,
73
+ details: { args }
74
+ });
75
+ }
76
+ });
77
+ }
78
+ /**
79
+ * Format error message based on error type
80
+ */
81
+ function formatErrorMessage(err, context) {
82
+ // File not found
83
+ if (err.code === 'ENOENT') {
84
+ const file = err.path || context?.file || 'unknown file';
85
+ return `File not found: ${file}`;
86
+ }
87
+ // Permission denied
88
+ if (err.code === 'EACCES' || err.code === 'EPERM') {
89
+ const file = err.path || context?.file || 'unknown file';
90
+ return `Permission denied: ${file}`;
91
+ }
92
+ // Network errors
93
+ if (err.code === 'ECONNREFUSED' || err.code === 'ETIMEDOUT') {
94
+ return `Network error: ${err.message}`;
95
+ }
96
+ // JSON parse errors
97
+ if (err instanceof SyntaxError && err.message.includes('JSON')) {
98
+ return `Invalid JSON: ${err.message}`;
99
+ }
100
+ // FAF-specific errors
101
+ if (err.message?.includes('FAF')) {
102
+ return err.message;
103
+ }
104
+ // Default
105
+ return err.message || 'An unexpected error occurred';
106
+ }
107
+ /**
108
+ * Determine if error is critical (should show even in quiet mode)
109
+ */
110
+ function isCriticalError(err) {
111
+ // Permission errors are critical
112
+ if (err.code === 'EACCES' || err.code === 'EPERM')
113
+ return true;
114
+ // Out of memory/space
115
+ if (err.code === 'ENOMEM' || err.code === 'ENOSPC')
116
+ return true;
117
+ // FAF corruption
118
+ if (err.message?.includes('corrupt') || err.message?.includes('invalid format'))
119
+ return true;
120
+ return false;
121
+ }
122
+ /**
123
+ * Get appropriate exit code for error type
124
+ */
125
+ function getExitCode(err) {
126
+ // Standard POSIX codes
127
+ if (err.code === 'ENOENT')
128
+ return 2; // File not found
129
+ if (err.code === 'EACCES' || err.code === 'EPERM')
130
+ return 126; // Permission denied
131
+ if (err.code === 'EINVAL')
132
+ return 22; // Invalid argument
133
+ // FAF-specific codes
134
+ if (err.message?.includes('score'))
135
+ return 10; // Scoring error
136
+ if (err.message?.includes('sync'))
137
+ return 11; // Sync error
138
+ if (err.message?.includes('trust'))
139
+ return 12; // Trust error
140
+ return 1; // General error
141
+ }
142
+ /**
143
+ * Create a user-friendly error for common issues
144
+ */
145
+ function createUserError(message, suggestion) {
146
+ const err = new Error(message);
147
+ if (suggestion) {
148
+ err.message += `\n\n💡 Suggestion: ${suggestion}`;
149
+ }
150
+ return err;
151
+ }
152
+ //# sourceMappingURL=error-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "faf-cli",
3
- "version": "2.1.7",
3
+ "version": "2.2.0",
4
4
  "description": "🏎️🏁 STOP faffing About! - AI-context ⚡️ FAST AF | Universal, shareable AI-context for any AI, human or team",
5
5
  "icon": "https://faf.one/orange-smiley.svg",
6
6
  "logo": "https://faf.one/orange-smiley.svg",