@eui/mcp 1.0.3

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 (191) hide show
  1. package/README.md +846 -0
  2. package/dist/config/index.d.ts +6 -0
  3. package/dist/config/index.d.ts.map +1 -0
  4. package/dist/config/index.js +6 -0
  5. package/dist/config/index.js.map +1 -0
  6. package/dist/config/loader.d.ts +27 -0
  7. package/dist/config/loader.d.ts.map +1 -0
  8. package/dist/config/loader.js +224 -0
  9. package/dist/config/loader.js.map +1 -0
  10. package/dist/config/schema.d.ts +171 -0
  11. package/dist/config/schema.d.ts.map +1 -0
  12. package/dist/config/schema.js +100 -0
  13. package/dist/config/schema.js.map +1 -0
  14. package/dist/index.d.ts +3 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +45 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/loader/cache-manager.d.ts +74 -0
  19. package/dist/loader/cache-manager.d.ts.map +1 -0
  20. package/dist/loader/cache-manager.js +107 -0
  21. package/dist/loader/cache-manager.js.map +1 -0
  22. package/dist/loader/documentation-loader.d.ts +57 -0
  23. package/dist/loader/documentation-loader.d.ts.map +1 -0
  24. package/dist/loader/documentation-loader.js +81 -0
  25. package/dist/loader/documentation-loader.js.map +1 -0
  26. package/dist/loader/documentation-source.d.ts +37 -0
  27. package/dist/loader/documentation-source.d.ts.map +1 -0
  28. package/dist/loader/documentation-source.js +2 -0
  29. package/dist/loader/documentation-source.js.map +1 -0
  30. package/dist/loader/errors.d.ts +34 -0
  31. package/dist/loader/errors.d.ts.map +1 -0
  32. package/dist/loader/errors.js +65 -0
  33. package/dist/loader/errors.js.map +1 -0
  34. package/dist/loader/http-client.d.ts +43 -0
  35. package/dist/loader/http-client.d.ts.map +1 -0
  36. package/dist/loader/http-client.js +144 -0
  37. package/dist/loader/http-client.js.map +1 -0
  38. package/dist/loader/index.d.ts +6 -0
  39. package/dist/loader/index.d.ts.map +1 -0
  40. package/dist/loader/index.js +5 -0
  41. package/dist/loader/index.js.map +1 -0
  42. package/dist/loader/local-documentation-source.d.ts +62 -0
  43. package/dist/loader/local-documentation-source.d.ts.map +1 -0
  44. package/dist/loader/local-documentation-source.js +190 -0
  45. package/dist/loader/local-documentation-source.js.map +1 -0
  46. package/dist/loader/path-type-detector.d.ts +34 -0
  47. package/dist/loader/path-type-detector.d.ts.map +1 -0
  48. package/dist/loader/path-type-detector.js +78 -0
  49. package/dist/loader/path-type-detector.js.map +1 -0
  50. package/dist/loader/remote-documentation-source.d.ts +112 -0
  51. package/dist/loader/remote-documentation-source.d.ts.map +1 -0
  52. package/dist/loader/remote-documentation-source.js +252 -0
  53. package/dist/loader/remote-documentation-source.js.map +1 -0
  54. package/dist/main.d.ts +3 -0
  55. package/dist/main.d.ts.map +1 -0
  56. package/dist/main.js +211 -0
  57. package/dist/main.js.map +1 -0
  58. package/dist/mcp/index.d.ts +5 -0
  59. package/dist/mcp/index.d.ts.map +1 -0
  60. package/dist/mcp/index.js +5 -0
  61. package/dist/mcp/index.js.map +1 -0
  62. package/dist/mcp/server.d.ts +65 -0
  63. package/dist/mcp/server.d.ts.map +1 -0
  64. package/dist/mcp/server.js +224 -0
  65. package/dist/mcp/server.js.map +1 -0
  66. package/dist/publish/index.d.ts +8 -0
  67. package/dist/publish/index.d.ts.map +1 -0
  68. package/dist/publish/index.js +8 -0
  69. package/dist/publish/index.js.map +1 -0
  70. package/dist/publish/publish-utils.d.ts +74 -0
  71. package/dist/publish/publish-utils.d.ts.map +1 -0
  72. package/dist/publish/publish-utils.js +170 -0
  73. package/dist/publish/publish-utils.js.map +1 -0
  74. package/dist/query/component-query.d.ts +33 -0
  75. package/dist/query/component-query.d.ts.map +1 -0
  76. package/dist/query/component-query.js +63 -0
  77. package/dist/query/component-query.js.map +1 -0
  78. package/dist/query/index-builder.d.ts +79 -0
  79. package/dist/query/index-builder.d.ts.map +1 -0
  80. package/dist/query/index-builder.js +217 -0
  81. package/dist/query/index-builder.js.map +1 -0
  82. package/dist/query/index.d.ts +5 -0
  83. package/dist/query/index.d.ts.map +1 -0
  84. package/dist/query/index.js +6 -0
  85. package/dist/query/index.js.map +1 -0
  86. package/dist/query/result-formatter.d.ts +108 -0
  87. package/dist/query/result-formatter.d.ts.map +1 -0
  88. package/dist/query/result-formatter.js +165 -0
  89. package/dist/query/result-formatter.js.map +1 -0
  90. package/dist/query/search-engine.d.ts +54 -0
  91. package/dist/query/search-engine.d.ts.map +1 -0
  92. package/dist/query/search-engine.js +178 -0
  93. package/dist/query/search-engine.js.map +1 -0
  94. package/dist/test-error.ts +1 -0
  95. package/dist/tools/get-component-docs.d.ts +43 -0
  96. package/dist/tools/get-component-docs.d.ts.map +1 -0
  97. package/dist/tools/get-component-docs.js +55 -0
  98. package/dist/tools/get-component-docs.js.map +1 -0
  99. package/dist/tools/get-component-examples.d.ts +45 -0
  100. package/dist/tools/get-component-examples.d.ts.map +1 -0
  101. package/dist/tools/get-component-examples.js +56 -0
  102. package/dist/tools/get-component-examples.js.map +1 -0
  103. package/dist/tools/get-component-inputs.d.ts +44 -0
  104. package/dist/tools/get-component-inputs.d.ts.map +1 -0
  105. package/dist/tools/get-component-inputs.js +55 -0
  106. package/dist/tools/get-component-inputs.js.map +1 -0
  107. package/dist/tools/get-component-outputs.d.ts +44 -0
  108. package/dist/tools/get-component-outputs.d.ts.map +1 -0
  109. package/dist/tools/get-component-outputs.js +55 -0
  110. package/dist/tools/get-component-outputs.js.map +1 -0
  111. package/dist/tools/index.d.ts +7 -0
  112. package/dist/tools/index.d.ts.map +1 -0
  113. package/dist/tools/index.js +8 -0
  114. package/dist/tools/index.js.map +1 -0
  115. package/dist/tools/list-components.d.ts +69 -0
  116. package/dist/tools/list-components.d.ts.map +1 -0
  117. package/dist/tools/list-components.js +84 -0
  118. package/dist/tools/list-components.js.map +1 -0
  119. package/dist/tools/search-components.d.ts +69 -0
  120. package/dist/tools/search-components.d.ts.map +1 -0
  121. package/dist/tools/search-components.js +98 -0
  122. package/dist/tools/search-components.js.map +1 -0
  123. package/dist/types/compodoc.d.ts +261 -0
  124. package/dist/types/compodoc.d.ts.map +1 -0
  125. package/dist/types/compodoc.js +5 -0
  126. package/dist/types/compodoc.js.map +1 -0
  127. package/dist/types/index.d.ts +5 -0
  128. package/dist/types/index.d.ts.map +1 -0
  129. package/dist/types/index.js +5 -0
  130. package/dist/types/index.js.map +1 -0
  131. package/dist/utils/circuit-breaker.d.ts +91 -0
  132. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  133. package/dist/utils/circuit-breaker.js +186 -0
  134. package/dist/utils/circuit-breaker.js.map +1 -0
  135. package/dist/utils/credential-masking.d.ts +90 -0
  136. package/dist/utils/credential-masking.d.ts.map +1 -0
  137. package/dist/utils/credential-masking.js +202 -0
  138. package/dist/utils/credential-masking.js.map +1 -0
  139. package/dist/utils/error-handler.d.ts +68 -0
  140. package/dist/utils/error-handler.d.ts.map +1 -0
  141. package/dist/utils/error-handler.js +184 -0
  142. package/dist/utils/error-handler.js.map +1 -0
  143. package/dist/utils/errors.d.ts +156 -0
  144. package/dist/utils/errors.d.ts.map +1 -0
  145. package/dist/utils/errors.js +242 -0
  146. package/dist/utils/errors.js.map +1 -0
  147. package/dist/utils/index.d.ts +10 -0
  148. package/dist/utils/index.d.ts.map +1 -0
  149. package/dist/utils/index.js +16 -0
  150. package/dist/utils/index.js.map +1 -0
  151. package/dist/utils/logger.d.ts +76 -0
  152. package/dist/utils/logger.d.ts.map +1 -0
  153. package/dist/utils/logger.js +150 -0
  154. package/dist/utils/logger.js.map +1 -0
  155. package/dist/utils/retry.d.ts +19 -0
  156. package/dist/utils/retry.d.ts.map +1 -0
  157. package/dist/utils/retry.js +81 -0
  158. package/dist/utils/retry.js.map +1 -0
  159. package/dist/version/changelog-file-utils.d.ts +69 -0
  160. package/dist/version/changelog-file-utils.d.ts.map +1 -0
  161. package/dist/version/changelog-file-utils.js +161 -0
  162. package/dist/version/changelog-file-utils.js.map +1 -0
  163. package/dist/version/changelog-utils.d.ts +98 -0
  164. package/dist/version/changelog-utils.d.ts.map +1 -0
  165. package/dist/version/changelog-utils.js +198 -0
  166. package/dist/version/changelog-utils.js.map +1 -0
  167. package/dist/version/dry-run-utils.d.ts +108 -0
  168. package/dist/version/dry-run-utils.d.ts.map +1 -0
  169. package/dist/version/dry-run-utils.js +126 -0
  170. package/dist/version/dry-run-utils.js.map +1 -0
  171. package/dist/version/git-tag-utils.d.ts +50 -0
  172. package/dist/version/git-tag-utils.d.ts.map +1 -0
  173. package/dist/version/git-tag-utils.js +66 -0
  174. package/dist/version/git-tag-utils.js.map +1 -0
  175. package/dist/version/index.d.ts +11 -0
  176. package/dist/version/index.d.ts.map +1 -0
  177. package/dist/version/index.js +11 -0
  178. package/dist/version/index.js.map +1 -0
  179. package/dist/version/release-utils.d.ts +94 -0
  180. package/dist/version/release-utils.d.ts.map +1 -0
  181. package/dist/version/release-utils.js +170 -0
  182. package/dist/version/release-utils.js.map +1 -0
  183. package/dist/version/rollback-utils.d.ts +47 -0
  184. package/dist/version/rollback-utils.d.ts.map +1 -0
  185. package/dist/version/rollback-utils.js +73 -0
  186. package/dist/version/rollback-utils.js.map +1 -0
  187. package/dist/version/version-manager.d.ts +98 -0
  188. package/dist/version/version-manager.d.ts.map +1 -0
  189. package/dist/version/version-manager.js +158 -0
  190. package/dist/version/version-manager.js.map +1 -0
  191. package/package.json +61 -0
@@ -0,0 +1,242 @@
1
+ /**
2
+ * Custom error classes for different error types
3
+ */
4
+ /**
5
+ * Base error class for all application errors
6
+ */
7
+ export class AppError extends Error {
8
+ code;
9
+ statusCode;
10
+ isOperational;
11
+ details;
12
+ constructor(message, code, statusCode = 500, isOperational = true, details) {
13
+ super(message);
14
+ this.name = this.constructor.name;
15
+ this.code = code;
16
+ this.statusCode = statusCode;
17
+ this.isOperational = isOperational;
18
+ this.details = details;
19
+ // Maintains proper stack trace for where our error was thrown
20
+ Error.captureStackTrace(this, this.constructor);
21
+ }
22
+ /**
23
+ * Converts error to JSON format for MCP responses
24
+ */
25
+ toJSON() {
26
+ return {
27
+ error: {
28
+ code: this.code,
29
+ message: this.message,
30
+ details: this.details,
31
+ },
32
+ };
33
+ }
34
+ }
35
+ /**
36
+ * File system related errors
37
+ */
38
+ export class FileSystemError extends AppError {
39
+ constructor(message, details) {
40
+ super(message, 'FILE_SYSTEM_ERROR', 500, true, details);
41
+ }
42
+ }
43
+ /**
44
+ * File not found error
45
+ */
46
+ export class FileNotFoundError extends FileSystemError {
47
+ constructor(filePath) {
48
+ super(`File not found: ${filePath}`, { filePath });
49
+ this.code = 'FILE_NOT_FOUND';
50
+ this.statusCode = 404;
51
+ }
52
+ }
53
+ /**
54
+ * Permission denied error
55
+ */
56
+ export class PermissionDeniedError extends FileSystemError {
57
+ constructor(filePath) {
58
+ super(`Permission denied: ${filePath}`, { filePath });
59
+ this.code = 'PERMISSION_DENIED';
60
+ this.statusCode = 403;
61
+ }
62
+ }
63
+ /**
64
+ * Parsing related errors
65
+ */
66
+ export class ParsingError extends AppError {
67
+ constructor(message, details) {
68
+ super(message, 'PARSING_ERROR', 400, true, details);
69
+ }
70
+ }
71
+ /**
72
+ * Invalid JSON error
73
+ */
74
+ export class InvalidJsonError extends ParsingError {
75
+ constructor(message, details) {
76
+ super(`Invalid JSON: ${message}`, details);
77
+ this.code = 'INVALID_JSON';
78
+ }
79
+ }
80
+ /**
81
+ * Invalid structure error
82
+ */
83
+ export class InvalidStructureError extends ParsingError {
84
+ constructor(message, details) {
85
+ super(`Invalid structure: ${message}`, details);
86
+ this.code = 'INVALID_STRUCTURE';
87
+ }
88
+ }
89
+ /**
90
+ * Validation related errors
91
+ */
92
+ export class ValidationError extends AppError {
93
+ constructor(message, details) {
94
+ super(message, 'VALIDATION_ERROR', 400, true, details);
95
+ }
96
+ }
97
+ /**
98
+ * Duplicate name error
99
+ */
100
+ export class DuplicateNameError extends ValidationError {
101
+ constructor(name, types) {
102
+ super(`Duplicate name '${name}' found across types: ${types.join(', ')}`, { name, types });
103
+ this.code = 'DUPLICATE_NAME';
104
+ }
105
+ }
106
+ /**
107
+ * Invalid component structure error
108
+ */
109
+ export class InvalidComponentError extends ValidationError {
110
+ constructor(message, details) {
111
+ super(`Invalid component: ${message}`, details);
112
+ this.code = 'INVALID_COMPONENT';
113
+ }
114
+ }
115
+ /**
116
+ * Query related errors
117
+ */
118
+ export class QueryError extends AppError {
119
+ constructor(message, details) {
120
+ super(message, 'QUERY_ERROR', 400, true, details);
121
+ }
122
+ }
123
+ /**
124
+ * Component not found error
125
+ */
126
+ export class ComponentNotFoundError extends QueryError {
127
+ constructor(name) {
128
+ super(`Component not found: ${name}`, { name });
129
+ this.code = 'COMPONENT_NOT_FOUND';
130
+ this.statusCode = 404;
131
+ }
132
+ }
133
+ /**
134
+ * Invalid search query error
135
+ */
136
+ export class InvalidSearchQueryError extends QueryError {
137
+ constructor(message, details) {
138
+ super(`Invalid search query: ${message}`, details);
139
+ this.code = 'INVALID_SEARCH_QUERY';
140
+ }
141
+ }
142
+ /**
143
+ * Invalid pagination parameters error
144
+ */
145
+ export class InvalidPaginationError extends QueryError {
146
+ constructor(message, details) {
147
+ super(`Invalid pagination: ${message}`, details);
148
+ this.code = 'INVALID_PAGINATION';
149
+ }
150
+ }
151
+ /**
152
+ * MCP protocol related errors
153
+ */
154
+ export class McpError extends AppError {
155
+ constructor(message, details) {
156
+ super(message, 'MCP_ERROR', 400, true, details);
157
+ }
158
+ }
159
+ /**
160
+ * Invalid tool name error
161
+ */
162
+ export class InvalidToolError extends McpError {
163
+ constructor(toolName) {
164
+ super(`Invalid tool: ${toolName}`, { toolName });
165
+ this.code = 'INVALID_TOOL';
166
+ }
167
+ }
168
+ /**
169
+ * Missing required parameter error
170
+ */
171
+ export class MissingParameterError extends McpError {
172
+ constructor(parameterName, toolName) {
173
+ super(`Missing required parameter '${parameterName}' for tool '${toolName}'`, { parameterName, toolName });
174
+ this.code = 'MISSING_PARAMETER';
175
+ }
176
+ }
177
+ /**
178
+ * Invalid parameter type error
179
+ */
180
+ export class InvalidParameterError extends McpError {
181
+ constructor(parameterName, expectedType, actualType) {
182
+ super(`Invalid parameter '${parameterName}': expected ${expectedType}, got ${actualType}`, { parameterName, expectedType, actualType });
183
+ this.code = 'INVALID_PARAMETER';
184
+ }
185
+ }
186
+ /**
187
+ * Runtime errors
188
+ */
189
+ export class RuntimeError extends AppError {
190
+ constructor(message, details) {
191
+ super(message, 'RUNTIME_ERROR', 500, false, details);
192
+ }
193
+ }
194
+ /**
195
+ * Out of memory error
196
+ */
197
+ export class OutOfMemoryError extends RuntimeError {
198
+ constructor(details) {
199
+ super('Out of memory', details);
200
+ this.code = 'OUT_OF_MEMORY';
201
+ }
202
+ }
203
+ /**
204
+ * Unexpected error
205
+ */
206
+ export class UnexpectedError extends RuntimeError {
207
+ constructor(message, details) {
208
+ super(`Unexpected error: ${message}`, details);
209
+ this.code = 'UNEXPECTED_ERROR';
210
+ }
211
+ }
212
+ /**
213
+ * Type guard to check if an error is an AppError
214
+ */
215
+ export function isAppError(error) {
216
+ return error instanceof AppError;
217
+ }
218
+ /**
219
+ * Type guard to check if an error is operational
220
+ */
221
+ export function isOperationalError(error) {
222
+ if (isAppError(error)) {
223
+ return error.isOperational;
224
+ }
225
+ return false;
226
+ }
227
+ /**
228
+ * Converts any error to an AppError
229
+ */
230
+ export function toAppError(error) {
231
+ if (isAppError(error)) {
232
+ return error;
233
+ }
234
+ if (error instanceof Error) {
235
+ return new UnexpectedError(error.message, {
236
+ originalError: error.name,
237
+ stack: error.stack,
238
+ });
239
+ }
240
+ return new UnexpectedError('Unknown error occurred', { error });
241
+ }
242
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAC1B,IAAI,CAAS;IACb,UAAU,CAAS;IACV,aAAa,CAAU;IACvB,OAAO,CAAW;IAElC,YACE,OAAe,EACf,IAAY,EACZ,aAAqB,GAAG,EACxB,gBAAyB,IAAI,EAC7B,OAAiB;QAEjB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,8DAA8D;QAC9D,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO;YACL,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB;SACF,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,OAAe,EAAE,OAAiB;QAC5C,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,eAAe;IACpD,YAAY,QAAgB;QAC1B,KAAK,CAAC,mBAAmB,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IACxB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IACxD,YAAY,QAAgB;QAC1B,KAAK,CAAC,sBAAsB,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IACxB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,YAAY,OAAe,EAAE,OAAiB;QAC5C,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAChD,YAAY,OAAe,EAAE,OAAiB;QAC5C,KAAK,CAAC,iBAAiB,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,YAAY;IACrD,YAAY,OAAe,EAAE,OAAiB;QAC5C,KAAK,CAAC,sBAAsB,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,OAAe,EAAE,OAAiB;QAC5C,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,eAAe;IACrD,YAAY,IAAY,EAAE,KAAe;QACvC,KAAK,CACH,mBAAmB,IAAI,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAClE,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IACxD,YAAY,OAAe,EAAE,OAAiB;QAC5C,KAAK,CAAC,sBAAsB,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,QAAQ;IACtC,YAAY,OAAe,EAAE,OAAiB;QAC5C,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,UAAU;IACpD,YAAY,IAAY;QACtB,KAAK,CAAC,wBAAwB,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IACxB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,UAAU;IACrD,YAAY,OAAe,EAAE,OAAiB;QAC5C,KAAK,CAAC,yBAAyB,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,UAAU;IACpD,YAAY,OAAe,EAAE,OAAiB;QAC5C,KAAK,CAAC,uBAAuB,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,QAAQ;IACpC,YAAY,OAAe,EAAE,OAAiB;QAC5C,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IAC5C,YAAY,QAAgB;QAC1B,KAAK,CAAC,iBAAiB,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IACjD,YAAY,aAAqB,EAAE,QAAgB;QACjD,KAAK,CACH,+BAA+B,aAAa,eAAe,QAAQ,GAAG,EACtE,EAAE,aAAa,EAAE,QAAQ,EAAE,CAC5B,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IACjD,YAAY,aAAqB,EAAE,YAAoB,EAAE,UAAkB;QACzE,KAAK,CACH,sBAAsB,aAAa,eAAe,YAAY,SAAS,UAAU,EAAE,EACnF,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,CAC5C,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,YAAY,OAAe,EAAE,OAAiB;QAC5C,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAChD,YAAY,OAAiB;QAC3B,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC/C,YAAY,OAAe,EAAE,OAAiB;QAC5C,KAAK,CAAC,qBAAqB,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,KAAK,YAAY,QAAQ,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,aAAa,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE;YACxC,aAAa,EAAE,KAAK,CAAC,IAAI;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,eAAe,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Utility module exports
3
+ */
4
+ export { Logger, LogLevel, LogFormat, LogEntry, LoggerOptions, initLogger, getLogger, } from './logger.js';
5
+ export { AppError, FileSystemError, FileNotFoundError, PermissionDeniedError, ParsingError, InvalidJsonError, InvalidStructureError, ValidationError, DuplicateNameError, InvalidComponentError, QueryError, ComponentNotFoundError, InvalidSearchQueryError, InvalidPaginationError, McpError, InvalidToolError, MissingParameterError, InvalidParameterError, RuntimeError, OutOfMemoryError, UnexpectedError, isAppError, isOperationalError, toAppError, } from './errors.js';
6
+ export { RetryOptions, retry, isRetryableError, } from './retry.js';
7
+ export { CircuitBreaker, CircuitBreakerOptions, CircuitBreakerRegistry, CircuitState, circuitBreakerRegistry, } from './circuit-breaker.js';
8
+ export { ErrorHandler, ErrorHandlerOptions, initErrorHandler, getErrorHandler, safeAsync, safeSync, } from './error-handler.js';
9
+ export { maskCredentials, sanitizeErrorMessage, sanitizeError, maskLogArguments, createAuthErrorMessage, containsCredentials, } from './credential-masking.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,MAAM,EACN,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,aAAa,EACb,UAAU,EACV,SAAS,GACV,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,UAAU,EACV,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,QAAQ,EACR,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,UAAU,GACX,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,YAAY,EACZ,KAAK,EACL,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,QAAQ,GACT,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Utility module exports
3
+ */
4
+ // Logger
5
+ export { Logger, initLogger, getLogger, } from './logger.js';
6
+ // Errors
7
+ export { AppError, FileSystemError, FileNotFoundError, PermissionDeniedError, ParsingError, InvalidJsonError, InvalidStructureError, ValidationError, DuplicateNameError, InvalidComponentError, QueryError, ComponentNotFoundError, InvalidSearchQueryError, InvalidPaginationError, McpError, InvalidToolError, MissingParameterError, InvalidParameterError, RuntimeError, OutOfMemoryError, UnexpectedError, isAppError, isOperationalError, toAppError, } from './errors.js';
8
+ // Retry
9
+ export { retry, isRetryableError, } from './retry.js';
10
+ // Circuit Breaker
11
+ export { CircuitBreaker, CircuitBreakerRegistry, CircuitState, circuitBreakerRegistry, } from './circuit-breaker.js';
12
+ // Error Handler
13
+ export { ErrorHandler, initErrorHandler, getErrorHandler, safeAsync, safeSync, } from './error-handler.js';
14
+ // Credential Masking
15
+ export { maskCredentials, sanitizeErrorMessage, sanitizeError, maskLogArguments, createAuthErrorMessage, containsCredentials, } from './credential-masking.js';
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,SAAS;AACT,OAAO,EACL,MAAM,EAKN,UAAU,EACV,SAAS,GACV,MAAM,aAAa,CAAC;AAErB,SAAS;AACT,OAAO,EACL,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,UAAU,EACV,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,QAAQ,EACR,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,QAAQ;AACR,OAAO,EAEL,KAAK,EACL,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,kBAAkB;AAClB,OAAO,EACL,cAAc,EAEd,sBAAsB,EACtB,YAAY,EACZ,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,gBAAgB;AAChB,OAAO,EACL,YAAY,EAEZ,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,QAAQ,GACT,MAAM,oBAAoB,CAAC;AAE5B,qBAAqB;AACrB,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Logger utility with configurable log levels and structured logging
3
+ */
4
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
5
+ export type LogFormat = 'json' | 'text';
6
+ export interface LogEntry {
7
+ timestamp: string;
8
+ level: LogLevel;
9
+ message: string;
10
+ context?: string;
11
+ data?: unknown;
12
+ error?: {
13
+ name: string;
14
+ message: string;
15
+ stack?: string;
16
+ };
17
+ }
18
+ export interface LoggerOptions {
19
+ level: LogLevel;
20
+ format: LogFormat;
21
+ context?: string;
22
+ }
23
+ /**
24
+ * Logger class for structured logging with configurable levels
25
+ */
26
+ export declare class Logger {
27
+ private level;
28
+ private format;
29
+ private context?;
30
+ constructor(options: LoggerOptions);
31
+ /**
32
+ * Creates a child logger with a specific context
33
+ */
34
+ child(context: string): Logger;
35
+ /**
36
+ * Updates the log level
37
+ */
38
+ setLevel(level: LogLevel): void;
39
+ /**
40
+ * Checks if a log level is enabled
41
+ */
42
+ private isLevelEnabled;
43
+ /**
44
+ * Formats a log entry based on the configured format
45
+ */
46
+ private formatEntry;
47
+ /**
48
+ * Writes a log entry
49
+ */
50
+ private log;
51
+ /**
52
+ * Logs a debug message
53
+ */
54
+ debug(message: string, data?: unknown): void;
55
+ /**
56
+ * Logs an info message
57
+ */
58
+ info(message: string, data?: unknown): void;
59
+ /**
60
+ * Logs a warning message
61
+ */
62
+ warn(message: string, data?: unknown): void;
63
+ /**
64
+ * Logs an error message
65
+ */
66
+ error(message: string, error?: Error, data?: unknown): void;
67
+ }
68
+ /**
69
+ * Initializes the global logger
70
+ */
71
+ export declare function initLogger(options: LoggerOptions): Logger;
72
+ /**
73
+ * Gets the global logger instance
74
+ */
75
+ export declare function getLogger(): Logger;
76
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAC3D,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AASD;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,OAAO,CAAC,CAAS;gBAEb,OAAO,EAAE,aAAa;IAMlC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAQ9B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,WAAW;IA+BnB;;OAEG;IACH,OAAO,CAAC,GAAG;IA+BX;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;CAG5D;AAOD;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAGzD;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CASlC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Logger utility with configurable log levels and structured logging
3
+ */
4
+ const LOG_LEVELS = {
5
+ debug: 0,
6
+ info: 1,
7
+ warn: 2,
8
+ error: 3,
9
+ };
10
+ /**
11
+ * Logger class for structured logging with configurable levels
12
+ */
13
+ export class Logger {
14
+ level;
15
+ format;
16
+ context;
17
+ constructor(options) {
18
+ this.level = options.level;
19
+ this.format = options.format;
20
+ this.context = options.context;
21
+ }
22
+ /**
23
+ * Creates a child logger with a specific context
24
+ */
25
+ child(context) {
26
+ return new Logger({
27
+ level: this.level,
28
+ format: this.format,
29
+ context: this.context ? `${this.context}:${context}` : context,
30
+ });
31
+ }
32
+ /**
33
+ * Updates the log level
34
+ */
35
+ setLevel(level) {
36
+ this.level = level;
37
+ }
38
+ /**
39
+ * Checks if a log level is enabled
40
+ */
41
+ isLevelEnabled(level) {
42
+ return LOG_LEVELS[level] >= LOG_LEVELS[this.level];
43
+ }
44
+ /**
45
+ * Formats a log entry based on the configured format
46
+ */
47
+ formatEntry(entry) {
48
+ if (this.format === 'json') {
49
+ return JSON.stringify(entry);
50
+ }
51
+ // Text format
52
+ const parts = [
53
+ entry.timestamp,
54
+ `[${entry.level.toUpperCase()}]`,
55
+ ];
56
+ if (entry.context) {
57
+ parts.push(`[${entry.context}]`);
58
+ }
59
+ parts.push(entry.message);
60
+ if (entry.data !== undefined) {
61
+ parts.push(JSON.stringify(entry.data));
62
+ }
63
+ if (entry.error) {
64
+ parts.push(`\nError: ${entry.error.name}: ${entry.error.message}`);
65
+ if (entry.error.stack) {
66
+ parts.push(`\n${entry.error.stack}`);
67
+ }
68
+ }
69
+ return parts.join(' ');
70
+ }
71
+ /**
72
+ * Writes a log entry
73
+ */
74
+ log(level, message, data, error) {
75
+ if (!this.isLevelEnabled(level)) {
76
+ return;
77
+ }
78
+ const entry = {
79
+ timestamp: new Date().toISOString(),
80
+ level,
81
+ message,
82
+ context: this.context,
83
+ data,
84
+ };
85
+ if (error) {
86
+ entry.error = {
87
+ name: error.name,
88
+ message: error.message,
89
+ stack: error.stack,
90
+ };
91
+ }
92
+ const formatted = this.formatEntry(entry);
93
+ // Write to appropriate stream
94
+ if (level === 'error') {
95
+ console.error(formatted);
96
+ }
97
+ else {
98
+ console.log(formatted);
99
+ }
100
+ }
101
+ /**
102
+ * Logs a debug message
103
+ */
104
+ debug(message, data) {
105
+ this.log('debug', message, data);
106
+ }
107
+ /**
108
+ * Logs an info message
109
+ */
110
+ info(message, data) {
111
+ this.log('info', message, data);
112
+ }
113
+ /**
114
+ * Logs a warning message
115
+ */
116
+ warn(message, data) {
117
+ this.log('warn', message, data);
118
+ }
119
+ /**
120
+ * Logs an error message
121
+ */
122
+ error(message, error, data) {
123
+ this.log('error', message, data, error);
124
+ }
125
+ }
126
+ /**
127
+ * Global logger instance
128
+ */
129
+ let globalLogger = null;
130
+ /**
131
+ * Initializes the global logger
132
+ */
133
+ export function initLogger(options) {
134
+ globalLogger = new Logger(options);
135
+ return globalLogger;
136
+ }
137
+ /**
138
+ * Gets the global logger instance
139
+ */
140
+ export function getLogger() {
141
+ if (!globalLogger) {
142
+ // Create default logger if not initialized
143
+ globalLogger = new Logger({
144
+ level: 'info',
145
+ format: 'text',
146
+ });
147
+ }
148
+ return globalLogger;
149
+ }
150
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Retry logic with exponential backoff
3
+ */
4
+ export interface RetryOptions {
5
+ maxAttempts: number;
6
+ initialDelay: number;
7
+ maxDelay: number;
8
+ backoffMultiplier: number;
9
+ shouldRetry?: (error: unknown) => boolean;
10
+ }
11
+ /**
12
+ * Executes a function with retry logic and exponential backoff
13
+ */
14
+ export declare function retry<T>(fn: () => Promise<T>, options?: Partial<RetryOptions>): Promise<T>;
15
+ /**
16
+ * Checks if an error is retryable (typically transient errors)
17
+ */
18
+ export declare function isRetryableError(error: unknown): boolean;
19
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC3C;AASD;;GAEG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAClC,OAAO,CAAC,CAAC,CAAC,CA2CZ;AASD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA0BxD"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Retry logic with exponential backoff
3
+ */
4
+ import { getLogger } from './logger.js';
5
+ const DEFAULT_RETRY_OPTIONS = {
6
+ maxAttempts: 3,
7
+ initialDelay: 100,
8
+ maxDelay: 5000,
9
+ backoffMultiplier: 2,
10
+ };
11
+ /**
12
+ * Executes a function with retry logic and exponential backoff
13
+ */
14
+ export async function retry(fn, options = {}) {
15
+ const opts = { ...DEFAULT_RETRY_OPTIONS, ...options };
16
+ const logger = getLogger();
17
+ let lastError;
18
+ let delay = opts.initialDelay;
19
+ for (let attempt = 1; attempt <= opts.maxAttempts; attempt++) {
20
+ try {
21
+ return await fn();
22
+ }
23
+ catch (error) {
24
+ lastError = error;
25
+ // Check if we should retry this error
26
+ if (opts.shouldRetry && !opts.shouldRetry(error)) {
27
+ logger.debug('Error is not retryable, throwing immediately', { error });
28
+ throw error;
29
+ }
30
+ // Don't retry on last attempt
31
+ if (attempt === opts.maxAttempts) {
32
+ logger.warn('Max retry attempts reached', {
33
+ attempts: attempt,
34
+ error,
35
+ });
36
+ break;
37
+ }
38
+ logger.debug('Retrying after error', {
39
+ attempt,
40
+ maxAttempts: opts.maxAttempts,
41
+ delay,
42
+ error,
43
+ });
44
+ // Wait before retrying
45
+ await sleep(delay);
46
+ // Calculate next delay with exponential backoff
47
+ delay = Math.min(delay * opts.backoffMultiplier, opts.maxDelay);
48
+ }
49
+ }
50
+ throw lastError;
51
+ }
52
+ /**
53
+ * Sleep utility
54
+ */
55
+ function sleep(ms) {
56
+ return new Promise((resolve) => setTimeout(resolve, ms));
57
+ }
58
+ /**
59
+ * Checks if an error is retryable (typically transient errors)
60
+ */
61
+ export function isRetryableError(error) {
62
+ if (error instanceof Error) {
63
+ const message = error.message.toLowerCase();
64
+ // File system transient errors
65
+ if (message.includes('ebusy') ||
66
+ message.includes('eagain') ||
67
+ message.includes('emfile') ||
68
+ message.includes('enfile') ||
69
+ message.includes('etimedout')) {
70
+ return true;
71
+ }
72
+ // Network transient errors
73
+ if (message.includes('econnreset') ||
74
+ message.includes('econnrefused') ||
75
+ message.includes('enetunreach')) {
76
+ return true;
77
+ }
78
+ }
79
+ return false;
80
+ }
81
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAUxC,MAAM,qBAAqB,GAAiB;IAC1C,WAAW,EAAE,CAAC;IACd,YAAY,EAAE,GAAG;IACjB,QAAQ,EAAE,IAAI;IACd,iBAAiB,EAAE,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,EAAoB,EACpB,UAAiC,EAAE;IAEnC,MAAM,IAAI,GAAG,EAAE,GAAG,qBAAqB,EAAE,GAAG,OAAO,EAAE,CAAC;IACtD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,SAAkB,CAAC;IACvB,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;IAE9B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QAC7D,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,CAAC;YAElB,sCAAsC;YACtC,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxE,MAAM,KAAK,CAAC;YACd,CAAC;YAED,8BAA8B;YAC9B,IAAI,OAAO,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;oBACxC,QAAQ,EAAE,OAAO;oBACjB,KAAK;iBACN,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE;gBACnC,OAAO;gBACP,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,KAAK;gBACL,KAAK;aACN,CAAC,CAAC;YAEH,uBAAuB;YACvB,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;YAEnB,gDAAgD;YAChD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAE5C,+BAA+B;QAC/B,IACE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;YACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC7B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,2BAA2B;QAC3B,IACE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;YAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAC/B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}