@eui/mcp 1.5.1 → 1.5.2

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 (481) hide show
  1. package/dist/main.js +540 -209
  2. package/package.json +3 -2
  3. package/dist/config/__tests__/schema.property.test.d.ts +0 -2
  4. package/dist/config/__tests__/schema.property.test.d.ts.map +0 -1
  5. package/dist/config/__tests__/schema.property.test.js +0 -203
  6. package/dist/config/__tests__/schema.property.test.js.map +0 -1
  7. package/dist/config/__tests__/schema.test.d.ts +0 -2
  8. package/dist/config/__tests__/schema.test.d.ts.map +0 -1
  9. package/dist/config/__tests__/schema.test.js +0 -454
  10. package/dist/config/__tests__/schema.test.js.map +0 -1
  11. package/dist/config/index.d.ts +0 -6
  12. package/dist/config/index.d.ts.map +0 -1
  13. package/dist/config/index.js +0 -6
  14. package/dist/config/index.js.map +0 -1
  15. package/dist/config/loader.d.ts +0 -27
  16. package/dist/config/loader.d.ts.map +0 -1
  17. package/dist/config/loader.js +0 -224
  18. package/dist/config/loader.js.map +0 -1
  19. package/dist/config/schema.d.ts +0 -171
  20. package/dist/config/schema.d.ts.map +0 -1
  21. package/dist/config/schema.js +0 -100
  22. package/dist/config/schema.js.map +0 -1
  23. package/dist/index.d.ts +0 -3
  24. package/dist/index.d.ts.map +0 -1
  25. package/dist/index.js +0 -27
  26. package/dist/index.js.map +0 -1
  27. package/dist/loader/__tests__/cache-manager.property.test.d.ts +0 -2
  28. package/dist/loader/__tests__/cache-manager.property.test.d.ts.map +0 -1
  29. package/dist/loader/__tests__/cache-manager.property.test.js +0 -245
  30. package/dist/loader/__tests__/cache-manager.property.test.js.map +0 -1
  31. package/dist/loader/__tests__/cache-manager.test.d.ts +0 -2
  32. package/dist/loader/__tests__/cache-manager.test.d.ts.map +0 -1
  33. package/dist/loader/__tests__/cache-manager.test.js +0 -256
  34. package/dist/loader/__tests__/cache-manager.test.js.map +0 -1
  35. package/dist/loader/__tests__/documentation-loader.integration.test.d.ts +0 -2
  36. package/dist/loader/__tests__/documentation-loader.integration.test.d.ts.map +0 -1
  37. package/dist/loader/__tests__/documentation-loader.integration.test.js +0 -498
  38. package/dist/loader/__tests__/documentation-loader.integration.test.js.map +0 -1
  39. package/dist/loader/__tests__/documentation-loader.property.test.d.ts +0 -2
  40. package/dist/loader/__tests__/documentation-loader.property.test.d.ts.map +0 -1
  41. package/dist/loader/__tests__/documentation-loader.property.test.js +0 -258
  42. package/dist/loader/__tests__/documentation-loader.property.test.js.map +0 -1
  43. package/dist/loader/__tests__/errors.test.d.ts +0 -2
  44. package/dist/loader/__tests__/errors.test.d.ts.map +0 -1
  45. package/dist/loader/__tests__/errors.test.js +0 -132
  46. package/dist/loader/__tests__/errors.test.js.map +0 -1
  47. package/dist/loader/__tests__/http-client.property.test.d.ts +0 -2
  48. package/dist/loader/__tests__/http-client.property.test.d.ts.map +0 -1
  49. package/dist/loader/__tests__/http-client.property.test.js +0 -288
  50. package/dist/loader/__tests__/http-client.property.test.js.map +0 -1
  51. package/dist/loader/__tests__/http-client.test.d.ts +0 -2
  52. package/dist/loader/__tests__/http-client.test.d.ts.map +0 -1
  53. package/dist/loader/__tests__/http-client.test.js +0 -497
  54. package/dist/loader/__tests__/http-client.test.js.map +0 -1
  55. package/dist/loader/__tests__/local-documentation-source.property.test.d.ts +0 -2
  56. package/dist/loader/__tests__/local-documentation-source.property.test.d.ts.map +0 -1
  57. package/dist/loader/__tests__/local-documentation-source.property.test.js +0 -373
  58. package/dist/loader/__tests__/local-documentation-source.property.test.js.map +0 -1
  59. package/dist/loader/__tests__/local-documentation-source.test.d.ts +0 -2
  60. package/dist/loader/__tests__/local-documentation-source.test.d.ts.map +0 -1
  61. package/dist/loader/__tests__/local-documentation-source.test.js +0 -544
  62. package/dist/loader/__tests__/local-documentation-source.test.js.map +0 -1
  63. package/dist/loader/__tests__/path-type-detector.property.test.d.ts +0 -2
  64. package/dist/loader/__tests__/path-type-detector.property.test.d.ts.map +0 -1
  65. package/dist/loader/__tests__/path-type-detector.property.test.js +0 -245
  66. package/dist/loader/__tests__/path-type-detector.property.test.js.map +0 -1
  67. package/dist/loader/__tests__/path-type-detector.test.d.ts +0 -2
  68. package/dist/loader/__tests__/path-type-detector.test.d.ts.map +0 -1
  69. package/dist/loader/__tests__/path-type-detector.test.js +0 -390
  70. package/dist/loader/__tests__/path-type-detector.test.js.map +0 -1
  71. package/dist/loader/__tests__/remote-documentation-source.property.test.d.ts +0 -2
  72. package/dist/loader/__tests__/remote-documentation-source.property.test.d.ts.map +0 -1
  73. package/dist/loader/__tests__/remote-documentation-source.property.test.js +0 -462
  74. package/dist/loader/__tests__/remote-documentation-source.property.test.js.map +0 -1
  75. package/dist/loader/__tests__/remote-documentation-source.test.d.ts +0 -2
  76. package/dist/loader/__tests__/remote-documentation-source.test.d.ts.map +0 -1
  77. package/dist/loader/__tests__/remote-documentation-source.test.js +0 -707
  78. package/dist/loader/__tests__/remote-documentation-source.test.js.map +0 -1
  79. package/dist/loader/cache-manager.d.ts +0 -74
  80. package/dist/loader/cache-manager.d.ts.map +0 -1
  81. package/dist/loader/cache-manager.js +0 -107
  82. package/dist/loader/cache-manager.js.map +0 -1
  83. package/dist/loader/documentation-loader.d.ts +0 -57
  84. package/dist/loader/documentation-loader.d.ts.map +0 -1
  85. package/dist/loader/documentation-loader.js +0 -85
  86. package/dist/loader/documentation-loader.js.map +0 -1
  87. package/dist/loader/documentation-source.d.ts +0 -37
  88. package/dist/loader/documentation-source.d.ts.map +0 -1
  89. package/dist/loader/documentation-source.js +0 -2
  90. package/dist/loader/documentation-source.js.map +0 -1
  91. package/dist/loader/errors.d.ts +0 -34
  92. package/dist/loader/errors.d.ts.map +0 -1
  93. package/dist/loader/errors.js +0 -65
  94. package/dist/loader/errors.js.map +0 -1
  95. package/dist/loader/http-client.d.ts +0 -43
  96. package/dist/loader/http-client.d.ts.map +0 -1
  97. package/dist/loader/http-client.js +0 -144
  98. package/dist/loader/http-client.js.map +0 -1
  99. package/dist/loader/index.d.ts +0 -6
  100. package/dist/loader/index.d.ts.map +0 -1
  101. package/dist/loader/index.js +0 -5
  102. package/dist/loader/index.js.map +0 -1
  103. package/dist/loader/local-documentation-source.d.ts +0 -62
  104. package/dist/loader/local-documentation-source.d.ts.map +0 -1
  105. package/dist/loader/local-documentation-source.js +0 -192
  106. package/dist/loader/local-documentation-source.js.map +0 -1
  107. package/dist/loader/path-type-detector.d.ts +0 -34
  108. package/dist/loader/path-type-detector.d.ts.map +0 -1
  109. package/dist/loader/path-type-detector.js +0 -78
  110. package/dist/loader/path-type-detector.js.map +0 -1
  111. package/dist/loader/remote-documentation-source.d.ts +0 -108
  112. package/dist/loader/remote-documentation-source.d.ts.map +0 -1
  113. package/dist/loader/remote-documentation-source.js +0 -250
  114. package/dist/loader/remote-documentation-source.js.map +0 -1
  115. package/dist/main.d.ts +0 -2
  116. package/dist/main.d.ts.map +0 -1
  117. package/dist/main.js.map +0 -1
  118. package/dist/mcp/__tests__/server.property.test.d.ts +0 -2
  119. package/dist/mcp/__tests__/server.property.test.d.ts.map +0 -1
  120. package/dist/mcp/__tests__/server.property.test.js +0 -286
  121. package/dist/mcp/__tests__/server.property.test.js.map +0 -1
  122. package/dist/mcp/__tests__/server.test.d.ts +0 -2
  123. package/dist/mcp/__tests__/server.test.d.ts.map +0 -1
  124. package/dist/mcp/__tests__/server.test.js +0 -101
  125. package/dist/mcp/__tests__/server.test.js.map +0 -1
  126. package/dist/mcp/index.d.ts +0 -5
  127. package/dist/mcp/index.d.ts.map +0 -1
  128. package/dist/mcp/index.js +0 -5
  129. package/dist/mcp/index.js.map +0 -1
  130. package/dist/mcp/server.d.ts +0 -65
  131. package/dist/mcp/server.d.ts.map +0 -1
  132. package/dist/mcp/server.js +0 -242
  133. package/dist/mcp/server.js.map +0 -1
  134. package/dist/publish/__tests__/publish-utils.test.d.ts +0 -5
  135. package/dist/publish/__tests__/publish-utils.test.d.ts.map +0 -1
  136. package/dist/publish/__tests__/publish-utils.test.js +0 -189
  137. package/dist/publish/__tests__/publish-utils.test.js.map +0 -1
  138. package/dist/publish/index.d.ts +0 -8
  139. package/dist/publish/index.d.ts.map +0 -1
  140. package/dist/publish/index.js +0 -8
  141. package/dist/publish/index.js.map +0 -1
  142. package/dist/publish/publish-utils.d.ts +0 -74
  143. package/dist/publish/publish-utils.d.ts.map +0 -1
  144. package/dist/publish/publish-utils.js +0 -170
  145. package/dist/publish/publish-utils.js.map +0 -1
  146. package/dist/query/__tests__/deprecation-parser.test.d.ts +0 -2
  147. package/dist/query/__tests__/deprecation-parser.test.d.ts.map +0 -1
  148. package/dist/query/__tests__/deprecation-parser.test.js +0 -154
  149. package/dist/query/__tests__/deprecation-parser.test.js.map +0 -1
  150. package/dist/query/__tests__/deprecation-query.test.d.ts +0 -2
  151. package/dist/query/__tests__/deprecation-query.test.d.ts.map +0 -1
  152. package/dist/query/__tests__/deprecation-query.test.js +0 -199
  153. package/dist/query/__tests__/deprecation-query.test.js.map +0 -1
  154. package/dist/query/__tests__/index-builder-debug.test.d.ts +0 -2
  155. package/dist/query/__tests__/index-builder-debug.test.d.ts.map +0 -1
  156. package/dist/query/__tests__/index-builder-debug.test.js +0 -34
  157. package/dist/query/__tests__/index-builder-debug.test.js.map +0 -1
  158. package/dist/query/__tests__/index-builder.property.test.d.ts +0 -2
  159. package/dist/query/__tests__/index-builder.property.test.d.ts.map +0 -1
  160. package/dist/query/__tests__/index-builder.property.test.js +0 -422
  161. package/dist/query/__tests__/index-builder.property.test.js.map +0 -1
  162. package/dist/query/__tests__/index-builder.test.d.ts +0 -2
  163. package/dist/query/__tests__/index-builder.test.d.ts.map +0 -1
  164. package/dist/query/__tests__/index-builder.test.js +0 -55
  165. package/dist/query/__tests__/index-builder.test.js.map +0 -1
  166. package/dist/query/__tests__/result-formatter-deprecation.test.d.ts +0 -2
  167. package/dist/query/__tests__/result-formatter-deprecation.test.d.ts.map +0 -1
  168. package/dist/query/__tests__/result-formatter-deprecation.test.js +0 -159
  169. package/dist/query/__tests__/result-formatter-deprecation.test.js.map +0 -1
  170. package/dist/query/__tests__/result-formatter.integration.test.d.ts +0 -2
  171. package/dist/query/__tests__/result-formatter.integration.test.d.ts.map +0 -1
  172. package/dist/query/__tests__/result-formatter.integration.test.js +0 -140
  173. package/dist/query/__tests__/result-formatter.integration.test.js.map +0 -1
  174. package/dist/query/__tests__/result-formatter.property.test.d.ts +0 -2
  175. package/dist/query/__tests__/result-formatter.property.test.d.ts.map +0 -1
  176. package/dist/query/__tests__/result-formatter.property.test.js +0 -163
  177. package/dist/query/__tests__/result-formatter.property.test.js.map +0 -1
  178. package/dist/query/__tests__/result-formatter.test.d.ts +0 -2
  179. package/dist/query/__tests__/result-formatter.test.d.ts.map +0 -1
  180. package/dist/query/__tests__/result-formatter.test.js +0 -85
  181. package/dist/query/__tests__/result-formatter.test.js.map +0 -1
  182. package/dist/query/__tests__/search-engine.property.test.d.ts +0 -2
  183. package/dist/query/__tests__/search-engine.property.test.d.ts.map +0 -1
  184. package/dist/query/__tests__/search-engine.property.test.js +0 -389
  185. package/dist/query/__tests__/search-engine.property.test.js.map +0 -1
  186. package/dist/query/component-query.d.ts +0 -33
  187. package/dist/query/component-query.d.ts.map +0 -1
  188. package/dist/query/component-query.js +0 -63
  189. package/dist/query/component-query.js.map +0 -1
  190. package/dist/query/deprecation-parser.d.ts +0 -46
  191. package/dist/query/deprecation-parser.d.ts.map +0 -1
  192. package/dist/query/deprecation-parser.js +0 -81
  193. package/dist/query/deprecation-parser.js.map +0 -1
  194. package/dist/query/deprecation-query.d.ts +0 -19
  195. package/dist/query/deprecation-query.d.ts.map +0 -1
  196. package/dist/query/deprecation-query.js +0 -73
  197. package/dist/query/deprecation-query.js.map +0 -1
  198. package/dist/query/index-builder.d.ts +0 -79
  199. package/dist/query/index-builder.d.ts.map +0 -1
  200. package/dist/query/index-builder.js +0 -217
  201. package/dist/query/index-builder.js.map +0 -1
  202. package/dist/query/index.d.ts +0 -5
  203. package/dist/query/index.d.ts.map +0 -1
  204. package/dist/query/index.js +0 -6
  205. package/dist/query/index.js.map +0 -1
  206. package/dist/query/result-formatter.d.ts +0 -135
  207. package/dist/query/result-formatter.d.ts.map +0 -1
  208. package/dist/query/result-formatter.js +0 -226
  209. package/dist/query/result-formatter.js.map +0 -1
  210. package/dist/query/search-engine.d.ts +0 -54
  211. package/dist/query/search-engine.d.ts.map +0 -1
  212. package/dist/query/search-engine.js +0 -178
  213. package/dist/query/search-engine.js.map +0 -1
  214. package/dist/tools/__tests__/deprecation-tools.test.d.ts +0 -2
  215. package/dist/tools/__tests__/deprecation-tools.test.d.ts.map +0 -1
  216. package/dist/tools/__tests__/deprecation-tools.test.js +0 -178
  217. package/dist/tools/__tests__/deprecation-tools.test.js.map +0 -1
  218. package/dist/tools/__tests__/get-component-docs.property.test.d.ts +0 -2
  219. package/dist/tools/__tests__/get-component-docs.property.test.d.ts.map +0 -1
  220. package/dist/tools/__tests__/get-component-docs.property.test.js +0 -594
  221. package/dist/tools/__tests__/get-component-docs.property.test.js.map +0 -1
  222. package/dist/tools/__tests__/get-component-docs.test.d.ts +0 -2
  223. package/dist/tools/__tests__/get-component-docs.test.d.ts.map +0 -1
  224. package/dist/tools/__tests__/get-component-docs.test.js +0 -137
  225. package/dist/tools/__tests__/get-component-docs.test.js.map +0 -1
  226. package/dist/tools/__tests__/get-component-examples.property.test.d.ts +0 -2
  227. package/dist/tools/__tests__/get-component-examples.property.test.d.ts.map +0 -1
  228. package/dist/tools/__tests__/get-component-examples.property.test.js +0 -245
  229. package/dist/tools/__tests__/get-component-examples.property.test.js.map +0 -1
  230. package/dist/tools/__tests__/get-component-examples.test.d.ts +0 -2
  231. package/dist/tools/__tests__/get-component-examples.test.d.ts.map +0 -1
  232. package/dist/tools/__tests__/get-component-examples.test.js +0 -128
  233. package/dist/tools/__tests__/get-component-examples.test.js.map +0 -1
  234. package/dist/tools/__tests__/get-component-inputs.property.test.d.ts +0 -2
  235. package/dist/tools/__tests__/get-component-inputs.property.test.d.ts.map +0 -1
  236. package/dist/tools/__tests__/get-component-inputs.property.test.js +0 -310
  237. package/dist/tools/__tests__/get-component-inputs.property.test.js.map +0 -1
  238. package/dist/tools/__tests__/get-component-inputs.test.d.ts +0 -2
  239. package/dist/tools/__tests__/get-component-inputs.test.d.ts.map +0 -1
  240. package/dist/tools/__tests__/get-component-inputs.test.js +0 -245
  241. package/dist/tools/__tests__/get-component-inputs.test.js.map +0 -1
  242. package/dist/tools/__tests__/get-component-outputs.property.test.d.ts +0 -2
  243. package/dist/tools/__tests__/get-component-outputs.property.test.d.ts.map +0 -1
  244. package/dist/tools/__tests__/get-component-outputs.property.test.js +0 -227
  245. package/dist/tools/__tests__/get-component-outputs.property.test.js.map +0 -1
  246. package/dist/tools/__tests__/get-component-outputs.test.d.ts +0 -2
  247. package/dist/tools/__tests__/get-component-outputs.test.d.ts.map +0 -1
  248. package/dist/tools/__tests__/get-component-outputs.test.js +0 -189
  249. package/dist/tools/__tests__/get-component-outputs.test.js.map +0 -1
  250. package/dist/tools/__tests__/get-library-version.property.test.d.ts +0 -2
  251. package/dist/tools/__tests__/get-library-version.property.test.d.ts.map +0 -1
  252. package/dist/tools/__tests__/get-library-version.property.test.js +0 -115
  253. package/dist/tools/__tests__/get-library-version.property.test.js.map +0 -1
  254. package/dist/tools/__tests__/get-library-version.test.d.ts +0 -2
  255. package/dist/tools/__tests__/get-library-version.test.d.ts.map +0 -1
  256. package/dist/tools/__tests__/get-library-version.test.js +0 -97
  257. package/dist/tools/__tests__/get-library-version.test.js.map +0 -1
  258. package/dist/tools/__tests__/list-components.property.test.d.ts +0 -2
  259. package/dist/tools/__tests__/list-components.property.test.d.ts.map +0 -1
  260. package/dist/tools/__tests__/list-components.property.test.js +0 -241
  261. package/dist/tools/__tests__/list-components.property.test.js.map +0 -1
  262. package/dist/tools/__tests__/list-components.test.d.ts +0 -2
  263. package/dist/tools/__tests__/list-components.test.d.ts.map +0 -1
  264. package/dist/tools/__tests__/list-components.test.js +0 -170
  265. package/dist/tools/__tests__/list-components.test.js.map +0 -1
  266. package/dist/tools/__tests__/search-components.test.d.ts +0 -2
  267. package/dist/tools/__tests__/search-components.test.d.ts.map +0 -1
  268. package/dist/tools/__tests__/search-components.test.js +0 -239
  269. package/dist/tools/__tests__/search-components.test.js.map +0 -1
  270. package/dist/tools/get-component-docs.d.ts +0 -43
  271. package/dist/tools/get-component-docs.d.ts.map +0 -1
  272. package/dist/tools/get-component-docs.js +0 -55
  273. package/dist/tools/get-component-docs.js.map +0 -1
  274. package/dist/tools/get-component-examples.d.ts +0 -45
  275. package/dist/tools/get-component-examples.d.ts.map +0 -1
  276. package/dist/tools/get-component-examples.js +0 -56
  277. package/dist/tools/get-component-examples.js.map +0 -1
  278. package/dist/tools/get-component-inputs.d.ts +0 -44
  279. package/dist/tools/get-component-inputs.d.ts.map +0 -1
  280. package/dist/tools/get-component-inputs.js +0 -55
  281. package/dist/tools/get-component-inputs.js.map +0 -1
  282. package/dist/tools/get-component-outputs.d.ts +0 -44
  283. package/dist/tools/get-component-outputs.d.ts.map +0 -1
  284. package/dist/tools/get-component-outputs.js +0 -55
  285. package/dist/tools/get-component-outputs.js.map +0 -1
  286. package/dist/tools/get-deprecation-info.d.ts +0 -42
  287. package/dist/tools/get-deprecation-info.d.ts.map +0 -1
  288. package/dist/tools/get-deprecation-info.js +0 -55
  289. package/dist/tools/get-deprecation-info.js.map +0 -1
  290. package/dist/tools/get-eui-cli-guide.d.ts +0 -33
  291. package/dist/tools/get-eui-cli-guide.d.ts.map +0 -1
  292. package/dist/tools/get-eui-cli-guide.js +0 -160
  293. package/dist/tools/get-eui-cli-guide.js.map +0 -1
  294. package/dist/tools/get-eui-cli-instructions.d.ts +0 -33
  295. package/dist/tools/get-eui-cli-instructions.d.ts.map +0 -1
  296. package/dist/tools/get-eui-cli-instructions.js +0 -375
  297. package/dist/tools/get-eui-cli-instructions.js.map +0 -1
  298. package/dist/tools/get-library-version.d.ts +0 -34
  299. package/dist/tools/get-library-version.d.ts.map +0 -1
  300. package/dist/tools/get-library-version.js +0 -62
  301. package/dist/tools/get-library-version.js.map +0 -1
  302. package/dist/tools/index.d.ts +0 -12
  303. package/dist/tools/index.d.ts.map +0 -1
  304. package/dist/tools/index.js +0 -13
  305. package/dist/tools/index.js.map +0 -1
  306. package/dist/tools/list-components.d.ts +0 -69
  307. package/dist/tools/list-components.d.ts.map +0 -1
  308. package/dist/tools/list-components.js +0 -84
  309. package/dist/tools/list-components.js.map +0 -1
  310. package/dist/tools/list-deprecated.d.ts +0 -47
  311. package/dist/tools/list-deprecated.d.ts.map +0 -1
  312. package/dist/tools/list-deprecated.js +0 -56
  313. package/dist/tools/list-deprecated.js.map +0 -1
  314. package/dist/tools/search-components.d.ts +0 -69
  315. package/dist/tools/search-components.d.ts.map +0 -1
  316. package/dist/tools/search-components.js +0 -98
  317. package/dist/tools/search-components.js.map +0 -1
  318. package/dist/types/compodoc.d.ts +0 -262
  319. package/dist/types/compodoc.d.ts.map +0 -1
  320. package/dist/types/compodoc.js +0 -5
  321. package/dist/types/compodoc.js.map +0 -1
  322. package/dist/types/deprecation.d.ts +0 -33
  323. package/dist/types/deprecation.d.ts.map +0 -1
  324. package/dist/types/deprecation.js +0 -5
  325. package/dist/types/deprecation.js.map +0 -1
  326. package/dist/types/index.d.ts +0 -5
  327. package/dist/types/index.d.ts.map +0 -1
  328. package/dist/types/index.js +0 -5
  329. package/dist/types/index.js.map +0 -1
  330. package/dist/utils/__tests__/credential-masking.property.test.d.ts +0 -2
  331. package/dist/utils/__tests__/credential-masking.property.test.d.ts.map +0 -1
  332. package/dist/utils/__tests__/credential-masking.property.test.js +0 -145
  333. package/dist/utils/__tests__/credential-masking.property.test.js.map +0 -1
  334. package/dist/utils/__tests__/credential-masking.test.d.ts +0 -2
  335. package/dist/utils/__tests__/credential-masking.test.d.ts.map +0 -1
  336. package/dist/utils/__tests__/credential-masking.test.js +0 -188
  337. package/dist/utils/__tests__/credential-masking.test.js.map +0 -1
  338. package/dist/utils/__tests__/errors.test.d.ts +0 -2
  339. package/dist/utils/__tests__/errors.test.d.ts.map +0 -1
  340. package/dist/utils/__tests__/errors.test.js +0 -110
  341. package/dist/utils/__tests__/errors.test.js.map +0 -1
  342. package/dist/utils/__tests__/integration.test.d.ts +0 -2
  343. package/dist/utils/__tests__/integration.test.d.ts.map +0 -1
  344. package/dist/utils/__tests__/integration.test.js +0 -136
  345. package/dist/utils/__tests__/integration.test.js.map +0 -1
  346. package/dist/utils/__tests__/logger.test.d.ts +0 -2
  347. package/dist/utils/__tests__/logger.test.d.ts.map +0 -1
  348. package/dist/utils/__tests__/logger.test.js +0 -90
  349. package/dist/utils/__tests__/logger.test.js.map +0 -1
  350. package/dist/utils/__tests__/retry.test.d.ts +0 -2
  351. package/dist/utils/__tests__/retry.test.d.ts.map +0 -1
  352. package/dist/utils/__tests__/retry.test.js +0 -84
  353. package/dist/utils/__tests__/retry.test.js.map +0 -1
  354. package/dist/utils/circuit-breaker.d.ts +0 -91
  355. package/dist/utils/circuit-breaker.d.ts.map +0 -1
  356. package/dist/utils/circuit-breaker.js +0 -186
  357. package/dist/utils/circuit-breaker.js.map +0 -1
  358. package/dist/utils/credential-masking.d.ts +0 -90
  359. package/dist/utils/credential-masking.d.ts.map +0 -1
  360. package/dist/utils/credential-masking.js +0 -201
  361. package/dist/utils/credential-masking.js.map +0 -1
  362. package/dist/utils/error-handler.d.ts +0 -68
  363. package/dist/utils/error-handler.d.ts.map +0 -1
  364. package/dist/utils/error-handler.js +0 -184
  365. package/dist/utils/error-handler.js.map +0 -1
  366. package/dist/utils/errors.d.ts +0 -156
  367. package/dist/utils/errors.d.ts.map +0 -1
  368. package/dist/utils/errors.js +0 -242
  369. package/dist/utils/errors.js.map +0 -1
  370. package/dist/utils/index.d.ts +0 -10
  371. package/dist/utils/index.d.ts.map +0 -1
  372. package/dist/utils/index.js +0 -16
  373. package/dist/utils/index.js.map +0 -1
  374. package/dist/utils/logger.d.ts +0 -24
  375. package/dist/utils/logger.d.ts.map +0 -1
  376. package/dist/utils/logger.js +0 -55
  377. package/dist/utils/logger.js.map +0 -1
  378. package/dist/utils/retry.d.ts +0 -19
  379. package/dist/utils/retry.d.ts.map +0 -1
  380. package/dist/utils/retry.js +0 -81
  381. package/dist/utils/retry.js.map +0 -1
  382. package/dist/version/__tests__/changelog-commit-grouping.property.test.d.ts +0 -2
  383. package/dist/version/__tests__/changelog-commit-grouping.property.test.d.ts.map +0 -1
  384. package/dist/version/__tests__/changelog-commit-grouping.property.test.js +0 -297
  385. package/dist/version/__tests__/changelog-commit-grouping.property.test.js.map +0 -1
  386. package/dist/version/__tests__/changelog-commit-parsing.property.test.d.ts +0 -2
  387. package/dist/version/__tests__/changelog-commit-parsing.property.test.d.ts.map +0 -1
  388. package/dist/version/__tests__/changelog-commit-parsing.property.test.js +0 -396
  389. package/dist/version/__tests__/changelog-commit-parsing.property.test.js.map +0 -1
  390. package/dist/version/__tests__/changelog-file-updates.property.test.d.ts +0 -11
  391. package/dist/version/__tests__/changelog-file-updates.property.test.d.ts.map +0 -1
  392. package/dist/version/__tests__/changelog-file-updates.property.test.js +0 -452
  393. package/dist/version/__tests__/changelog-file-updates.property.test.js.map +0 -1
  394. package/dist/version/__tests__/dry-run-action.property.test.d.ts +0 -8
  395. package/dist/version/__tests__/dry-run-action.property.test.d.ts.map +0 -1
  396. package/dist/version/__tests__/dry-run-action.property.test.js +0 -50
  397. package/dist/version/__tests__/dry-run-action.property.test.js.map +0 -1
  398. package/dist/version/__tests__/dry-run-changelog.property.test.d.ts +0 -8
  399. package/dist/version/__tests__/dry-run-changelog.property.test.d.ts.map +0 -1
  400. package/dist/version/__tests__/dry-run-changelog.property.test.js +0 -53
  401. package/dist/version/__tests__/dry-run-changelog.property.test.js.map +0 -1
  402. package/dist/version/__tests__/dry-run-utils.test.d.ts +0 -7
  403. package/dist/version/__tests__/dry-run-utils.test.d.ts.map +0 -1
  404. package/dist/version/__tests__/dry-run-utils.test.js +0 -195
  405. package/dist/version/__tests__/dry-run-utils.test.js.map +0 -1
  406. package/dist/version/__tests__/dry-run-version.property.test.d.ts +0 -8
  407. package/dist/version/__tests__/dry-run-version.property.test.d.ts.map +0 -1
  408. package/dist/version/__tests__/dry-run-version.property.test.js +0 -59
  409. package/dist/version/__tests__/dry-run-version.property.test.js.map +0 -1
  410. package/dist/version/__tests__/git-tag-annotation.property.test.d.ts +0 -11
  411. package/dist/version/__tests__/git-tag-annotation.property.test.d.ts.map +0 -1
  412. package/dist/version/__tests__/git-tag-annotation.property.test.js +0 -271
  413. package/dist/version/__tests__/git-tag-annotation.property.test.js.map +0 -1
  414. package/dist/version/__tests__/git-tag-format.property.test.d.ts +0 -11
  415. package/dist/version/__tests__/git-tag-format.property.test.d.ts.map +0 -1
  416. package/dist/version/__tests__/git-tag-format.property.test.js +0 -411
  417. package/dist/version/__tests__/git-tag-format.property.test.js.map +0 -1
  418. package/dist/version/__tests__/git-tag-utils.test.d.ts +0 -2
  419. package/dist/version/__tests__/git-tag-utils.test.d.ts.map +0 -1
  420. package/dist/version/__tests__/git-tag-utils.test.js +0 -142
  421. package/dist/version/__tests__/git-tag-utils.test.js.map +0 -1
  422. package/dist/version/__tests__/npm-tag-selection.property.test.d.ts +0 -2
  423. package/dist/version/__tests__/npm-tag-selection.property.test.d.ts.map +0 -1
  424. package/dist/version/__tests__/npm-tag-selection.property.test.js +0 -79
  425. package/dist/version/__tests__/npm-tag-selection.property.test.js.map +0 -1
  426. package/dist/version/__tests__/release-title-format.property.test.d.ts +0 -11
  427. package/dist/version/__tests__/release-title-format.property.test.d.ts.map +0 -1
  428. package/dist/version/__tests__/release-title-format.property.test.js +0 -422
  429. package/dist/version/__tests__/release-title-format.property.test.js.map +0 -1
  430. package/dist/version/__tests__/release-utils.test.d.ts +0 -7
  431. package/dist/version/__tests__/release-utils.test.d.ts.map +0 -1
  432. package/dist/version/__tests__/release-utils.test.js +0 -176
  433. package/dist/version/__tests__/release-utils.test.js.map +0 -1
  434. package/dist/version/__tests__/rollback-changelog.property.test.d.ts +0 -8
  435. package/dist/version/__tests__/rollback-changelog.property.test.d.ts.map +0 -1
  436. package/dist/version/__tests__/rollback-changelog.property.test.js +0 -61
  437. package/dist/version/__tests__/rollback-changelog.property.test.js.map +0 -1
  438. package/dist/version/__tests__/rollback-utils.test.d.ts +0 -7
  439. package/dist/version/__tests__/rollback-utils.test.d.ts.map +0 -1
  440. package/dist/version/__tests__/rollback-utils.test.js +0 -74
  441. package/dist/version/__tests__/rollback-utils.test.js.map +0 -1
  442. package/dist/version/__tests__/version-manager.property.test.d.ts +0 -2
  443. package/dist/version/__tests__/version-manager.property.test.d.ts.map +0 -1
  444. package/dist/version/__tests__/version-manager.property.test.js +0 -143
  445. package/dist/version/__tests__/version-manager.property.test.js.map +0 -1
  446. package/dist/version/__tests__/version-manager.test.d.ts +0 -2
  447. package/dist/version/__tests__/version-manager.test.d.ts.map +0 -1
  448. package/dist/version/__tests__/version-manager.test.js +0 -203
  449. package/dist/version/__tests__/version-manager.test.js.map +0 -1
  450. package/dist/version/changelog-file-utils.d.ts +0 -69
  451. package/dist/version/changelog-file-utils.d.ts.map +0 -1
  452. package/dist/version/changelog-file-utils.js +0 -161
  453. package/dist/version/changelog-file-utils.js.map +0 -1
  454. package/dist/version/changelog-utils.d.ts +0 -98
  455. package/dist/version/changelog-utils.d.ts.map +0 -1
  456. package/dist/version/changelog-utils.js +0 -200
  457. package/dist/version/changelog-utils.js.map +0 -1
  458. package/dist/version/dry-run-utils.d.ts +0 -108
  459. package/dist/version/dry-run-utils.d.ts.map +0 -1
  460. package/dist/version/dry-run-utils.js +0 -128
  461. package/dist/version/dry-run-utils.js.map +0 -1
  462. package/dist/version/git-tag-utils.d.ts +0 -50
  463. package/dist/version/git-tag-utils.d.ts.map +0 -1
  464. package/dist/version/git-tag-utils.js +0 -66
  465. package/dist/version/git-tag-utils.js.map +0 -1
  466. package/dist/version/index.d.ts +0 -11
  467. package/dist/version/index.d.ts.map +0 -1
  468. package/dist/version/index.js +0 -11
  469. package/dist/version/index.js.map +0 -1
  470. package/dist/version/release-utils.d.ts +0 -94
  471. package/dist/version/release-utils.d.ts.map +0 -1
  472. package/dist/version/release-utils.js +0 -170
  473. package/dist/version/release-utils.js.map +0 -1
  474. package/dist/version/rollback-utils.d.ts +0 -47
  475. package/dist/version/rollback-utils.d.ts.map +0 -1
  476. package/dist/version/rollback-utils.js +0 -73
  477. package/dist/version/rollback-utils.js.map +0 -1
  478. package/dist/version/version-manager.d.ts +0 -98
  479. package/dist/version/version-manager.d.ts.map +0 -1
  480. package/dist/version/version-manager.js +0 -154
  481. package/dist/version/version-manager.js.map +0 -1
@@ -1,136 +0,0 @@
1
- /**
2
- * Integration tests for logging and error handling
3
- */
4
- import { describe, it, expect, beforeEach } from '@jest/globals';
5
- import { initLogger, getLogger } from '../logger.js';
6
- import { initErrorHandler, getErrorHandler } from '../error-handler.js';
7
- import { FileNotFoundError, ComponentNotFoundError } from '../errors.js';
8
- import { retry, isRetryableError } from '../retry.js';
9
- import { CircuitBreaker } from '../circuit-breaker.js';
10
- describe('Logging and Error Handling Integration', () => {
11
- beforeEach(() => {
12
- // Initialize logger for tests
13
- initLogger({
14
- level: 'error', // Only log errors in tests
15
- format: 'json',
16
- });
17
- // Initialize error handler
18
- initErrorHandler({
19
- exitOnUnhandledRejection: false,
20
- exitOnUncaughtException: false,
21
- });
22
- });
23
- describe('Error handling with logging', () => {
24
- it('should handle and log errors properly', () => {
25
- const errorHandler = getErrorHandler();
26
- const error = new FileNotFoundError('/path/to/file');
27
- const handledError = errorHandler.handleError(error);
28
- expect(handledError).toBeInstanceOf(FileNotFoundError);
29
- expect(handledError.code).toBe('FILE_NOT_FOUND');
30
- expect(handledError.isOperational).toBe(true);
31
- });
32
- it('should wrap async functions with error handling', async () => {
33
- const errorHandler = getErrorHandler();
34
- const fn = async () => {
35
- throw new ComponentNotFoundError('TestComponent');
36
- };
37
- const wrapped = errorHandler.wrapAsync(fn);
38
- await expect(wrapped()).rejects.toThrow('TestComponent');
39
- });
40
- });
41
- describe('Retry with error handling', () => {
42
- it('should retry retryable errors', async () => {
43
- let attempts = 0;
44
- const fn = async () => {
45
- attempts++;
46
- if (attempts < 3) {
47
- throw new Error('EBUSY: resource busy');
48
- }
49
- return 'success';
50
- };
51
- const result = await retry(fn, {
52
- maxAttempts: 5,
53
- initialDelay: 10,
54
- shouldRetry: isRetryableError,
55
- });
56
- expect(result).toBe('success');
57
- expect(attempts).toBe(3);
58
- });
59
- it('should not retry non-retryable errors', async () => {
60
- let attempts = 0;
61
- const fn = async () => {
62
- attempts++;
63
- throw new ComponentNotFoundError('TestComponent');
64
- };
65
- await expect(retry(fn, {
66
- maxAttempts: 5,
67
- initialDelay: 10,
68
- shouldRetry: isRetryableError,
69
- })).rejects.toThrow('TestComponent');
70
- expect(attempts).toBe(1);
71
- });
72
- });
73
- describe('Circuit breaker with error handling', () => {
74
- it('should open circuit after failures', async () => {
75
- const breaker = new CircuitBreaker('test-service', {
76
- failureThreshold: 2,
77
- timeout: 1000,
78
- resetTimeout: 5000,
79
- });
80
- const failingFn = async () => {
81
- throw new Error('Service unavailable');
82
- };
83
- // First failure
84
- await expect(breaker.execute(failingFn)).rejects.toThrow('Service unavailable');
85
- expect(breaker.getState()).toBe('CLOSED');
86
- // Second failure - should open circuit
87
- await expect(breaker.execute(failingFn)).rejects.toThrow('Service unavailable');
88
- expect(breaker.getState()).toBe('OPEN');
89
- // Third attempt - should fail immediately due to open circuit
90
- await expect(breaker.execute(failingFn)).rejects.toThrow('Circuit breaker');
91
- });
92
- it('should close circuit after successful attempts in half-open state', async () => {
93
- const breaker = new CircuitBreaker('test-service', {
94
- failureThreshold: 1,
95
- successThreshold: 2,
96
- timeout: 1000,
97
- resetTimeout: 100,
98
- });
99
- // Cause failure to open circuit
100
- await expect(breaker.execute(async () => {
101
- throw new Error('fail');
102
- })).rejects.toThrow('fail');
103
- expect(breaker.getState()).toBe('OPEN');
104
- // Wait for reset timeout
105
- await new Promise(resolve => setTimeout(resolve, 150));
106
- // Should transition to half-open and allow attempts
107
- const successFn = async () => 'success';
108
- await breaker.execute(successFn);
109
- expect(breaker.getState()).toBe('HALF_OPEN');
110
- await breaker.execute(successFn);
111
- expect(breaker.getState()).toBe('CLOSED');
112
- });
113
- });
114
- describe('Logger with context', () => {
115
- it('should create child loggers with nested context', () => {
116
- const logger = getLogger();
117
- const child1 = logger.child('module1');
118
- const child2 = child1.child('submodule');
119
- // Just verify they can be created without errors
120
- expect(child1).toBeDefined();
121
- expect(child2).toBeDefined();
122
- });
123
- it('should respect log levels', () => {
124
- const logger = initLogger({
125
- level: 'error',
126
- format: 'json',
127
- });
128
- // Verify logging methods don't throw
129
- expect(() => logger.debug('debug message')).not.toThrow();
130
- expect(() => logger.info('info message')).not.toThrow();
131
- expect(() => logger.warn('warn message')).not.toThrow();
132
- expect(() => logger.error('error message')).not.toThrow();
133
- });
134
- });
135
- });
136
- //# sourceMappingURL=integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=logger.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/logger.test.ts"],"names":[],"mappings":""}
@@ -1,90 +0,0 @@
1
- /**
2
- * Tests for logger utility
3
- */
4
- import { describe, it, expect } from '@jest/globals';
5
- import { Logger, initLogger, getLogger } from '../logger.js';
6
- describe('Logger', () => {
7
- describe('Logger creation', () => {
8
- it('should create a logger with specified options', () => {
9
- const logger = new Logger({
10
- level: 'debug',
11
- format: 'json',
12
- context: 'test',
13
- });
14
- expect(logger).toBeDefined();
15
- });
16
- it('should create a child logger', () => {
17
- const parent = new Logger({
18
- level: 'info',
19
- format: 'json',
20
- context: 'parent',
21
- });
22
- const child = parent.child('child');
23
- expect(child).toBeDefined();
24
- // Verify it can log without errors
25
- expect(() => child.info('test message')).not.toThrow();
26
- });
27
- });
28
- describe('Log levels', () => {
29
- it('should allow setting log level', () => {
30
- const logger = new Logger({
31
- level: 'warn',
32
- format: 'json',
33
- });
34
- // Verify logging methods don't throw
35
- expect(() => logger.debug('debug message')).not.toThrow();
36
- expect(() => logger.info('info message')).not.toThrow();
37
- expect(() => logger.warn('warn message')).not.toThrow();
38
- expect(() => logger.error('error message')).not.toThrow();
39
- });
40
- it('should support all log levels', () => {
41
- const logger = new Logger({
42
- level: 'debug',
43
- format: 'json',
44
- });
45
- expect(() => logger.debug('debug message')).not.toThrow();
46
- expect(() => logger.info('info message')).not.toThrow();
47
- expect(() => logger.warn('warn message')).not.toThrow();
48
- expect(() => logger.error('error message')).not.toThrow();
49
- });
50
- });
51
- describe('Log formats', () => {
52
- it('should support JSON format', () => {
53
- const logger = new Logger({
54
- level: 'info',
55
- format: 'json',
56
- });
57
- expect(() => logger.info('test message', { key: 'value' })).not.toThrow();
58
- });
59
- it('should support text format', () => {
60
- const logger = new Logger({
61
- level: 'info',
62
- format: 'text',
63
- });
64
- expect(() => logger.info('test message', { key: 'value' })).not.toThrow();
65
- });
66
- it('should handle errors in logs', () => {
67
- const logger = new Logger({
68
- level: 'error',
69
- format: 'json',
70
- });
71
- const error = new Error('test error');
72
- expect(() => logger.error('error occurred', error, { key: 'value' })).not.toThrow();
73
- });
74
- });
75
- describe('Global logger', () => {
76
- it('should initialize and retrieve global logger', () => {
77
- const logger = initLogger({
78
- level: 'info',
79
- format: 'json',
80
- });
81
- const retrieved = getLogger();
82
- expect(retrieved).toBe(logger);
83
- });
84
- it('should create default logger if not initialized', () => {
85
- const logger = getLogger();
86
- expect(logger).toBeDefined();
87
- });
88
- });
89
- });
90
- //# sourceMappingURL=logger.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/logger.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=retry.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/retry.test.ts"],"names":[],"mappings":""}
@@ -1,84 +0,0 @@
1
- /**
2
- * Tests for retry utility
3
- */
4
- import { describe, it, expect, jest } from '@jest/globals';
5
- import { retry, isRetryableError } from '../retry.js';
6
- describe('Retry utility', () => {
7
- describe('retry', () => {
8
- it('should succeed on first attempt', async () => {
9
- const fn = jest.fn().mockResolvedValue('success');
10
- const result = await retry(fn, { maxAttempts: 3 });
11
- expect(result).toBe('success');
12
- expect(fn).toHaveBeenCalledTimes(1);
13
- });
14
- it('should retry on failure and eventually succeed', async () => {
15
- const fn = jest
16
- .fn()
17
- .mockRejectedValueOnce(new Error('fail 1'))
18
- .mockRejectedValueOnce(new Error('fail 2'))
19
- .mockResolvedValue('success');
20
- const result = await retry(fn, {
21
- maxAttempts: 3,
22
- initialDelay: 10,
23
- maxDelay: 100,
24
- });
25
- expect(result).toBe('success');
26
- expect(fn).toHaveBeenCalledTimes(3);
27
- });
28
- it('should throw after max attempts', async () => {
29
- const error = new Error('persistent failure');
30
- const fn = jest.fn().mockRejectedValue(error);
31
- await expect(retry(fn, {
32
- maxAttempts: 3,
33
- initialDelay: 10,
34
- })).rejects.toThrow('persistent failure');
35
- expect(fn).toHaveBeenCalledTimes(3);
36
- });
37
- it('should respect shouldRetry predicate', async () => {
38
- const error = new Error('non-retryable');
39
- const fn = jest.fn().mockRejectedValue(error);
40
- await expect(retry(fn, {
41
- maxAttempts: 3,
42
- shouldRetry: () => false,
43
- })).rejects.toThrow('non-retryable');
44
- expect(fn).toHaveBeenCalledTimes(1);
45
- });
46
- it('should use exponential backoff', async () => {
47
- const fn = jest
48
- .fn()
49
- .mockRejectedValueOnce(new Error('fail 1'))
50
- .mockRejectedValueOnce(new Error('fail 2'))
51
- .mockResolvedValue('success');
52
- const startTime = Date.now();
53
- await retry(fn, {
54
- maxAttempts: 3,
55
- initialDelay: 50,
56
- backoffMultiplier: 2,
57
- maxDelay: 1000,
58
- });
59
- const duration = Date.now() - startTime;
60
- // Should take at least 50ms (first retry) + 100ms (second retry) = 150ms
61
- expect(duration).toBeGreaterThanOrEqual(100);
62
- });
63
- });
64
- describe('isRetryableError', () => {
65
- it('should identify retryable file system errors', () => {
66
- expect(isRetryableError(new Error('EBUSY: resource busy'))).toBe(true);
67
- expect(isRetryableError(new Error('EAGAIN: try again'))).toBe(true);
68
- expect(isRetryableError(new Error('EMFILE: too many open files'))).toBe(true);
69
- expect(isRetryableError(new Error('ETIMEDOUT: operation timed out'))).toBe(true);
70
- });
71
- it('should identify retryable network errors', () => {
72
- expect(isRetryableError(new Error('ECONNRESET: connection reset'))).toBe(true);
73
- expect(isRetryableError(new Error('ECONNREFUSED: connection refused'))).toBe(true);
74
- expect(isRetryableError(new Error('ENETUNREACH: network unreachable'))).toBe(true);
75
- });
76
- it('should not identify non-retryable errors', () => {
77
- expect(isRetryableError(new Error('Invalid input'))).toBe(false);
78
- expect(isRetryableError(new Error('Not found'))).toBe(false);
79
- expect(isRetryableError('string error')).toBe(false);
80
- expect(isRetryableError(null)).toBe(false);
81
- });
82
- });
83
- });
84
- //# sourceMappingURL=retry.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/retry.test.ts"],"names":[],"mappings":"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"}
@@ -1,91 +0,0 @@
1
- /**
2
- * Circuit breaker pattern for error recovery
3
- */
4
- export declare enum CircuitState {
5
- CLOSED = "CLOSED",
6
- OPEN = "OPEN",
7
- HALF_OPEN = "HALF_OPEN"
8
- }
9
- export interface CircuitBreakerOptions {
10
- failureThreshold: number;
11
- successThreshold: number;
12
- timeout: number;
13
- resetTimeout: number;
14
- }
15
- /**
16
- * Circuit breaker implementation to prevent cascading failures
17
- */
18
- export declare class CircuitBreaker {
19
- private state;
20
- private failureCount;
21
- private successCount;
22
- private nextAttempt;
23
- private readonly options;
24
- private readonly name;
25
- constructor(name: string, options?: Partial<CircuitBreakerOptions>);
26
- /**
27
- * Gets the current state of the circuit breaker
28
- */
29
- getState(): CircuitState;
30
- /**
31
- * Gets circuit breaker statistics
32
- */
33
- getStats(): {
34
- state: CircuitState;
35
- failureCount: number;
36
- successCount: number;
37
- nextAttempt: number;
38
- };
39
- /**
40
- * Executes a function with circuit breaker protection
41
- */
42
- execute<T>(fn: () => Promise<T>): Promise<T>;
43
- /**
44
- * Executes function with timeout
45
- */
46
- private executeWithTimeout;
47
- /**
48
- * Handles successful execution
49
- */
50
- private onSuccess;
51
- /**
52
- * Handles failed execution
53
- */
54
- private onFailure;
55
- /**
56
- * Manually resets the circuit breaker
57
- */
58
- reset(): void;
59
- }
60
- /**
61
- * Registry for managing multiple circuit breakers
62
- */
63
- export declare class CircuitBreakerRegistry {
64
- private breakers;
65
- /**
66
- * Gets or creates a circuit breaker
67
- */
68
- get(name: string, options?: Partial<CircuitBreakerOptions>): CircuitBreaker;
69
- /**
70
- * Gets all circuit breakers
71
- */
72
- getAll(): Map<string, CircuitBreaker>;
73
- /**
74
- * Resets all circuit breakers
75
- */
76
- resetAll(): void;
77
- /**
78
- * Gets statistics for all circuit breakers
79
- */
80
- getAllStats(): Record<string, {
81
- state: CircuitState;
82
- failureCount: number;
83
- successCount: number;
84
- nextAttempt: number;
85
- }>;
86
- }
87
- /**
88
- * Global circuit breaker registry
89
- */
90
- export declare const circuitBreakerRegistry: CircuitBreakerRegistry;
91
- //# sourceMappingURL=circuit-breaker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/utils/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,oBAAY,YAAY;IACtB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,SAAS,cAAc;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AASD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAElB,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,CAAC,qBAAqB,CAAM;IAKtE;;OAEG;IACH,QAAQ,IAAI,YAAY;IAIxB;;OAEG;IACH,QAAQ;;;;;;IASR;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmClD;;OAEG;YACW,kBAAkB;IAYhC;;OAEG;IACH,OAAO,CAAC,SAAS;IAoBjB;;OAEG;IACH,OAAO,CAAC,SAAS;IAyBjB;;OAEG;IACH,KAAK,IAAI,IAAI;CAQd;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAA0C;IAE1D;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,cAAc;IAO3E;;OAEG;IACH,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAIrC;;OAEG;IACH,QAAQ,IAAI,IAAI;IAMhB;;OAEG;IACH,WAAW;;;;;;CAOZ;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,wBAA+B,CAAC"}
@@ -1,186 +0,0 @@
1
- /**
2
- * Circuit breaker pattern for error recovery
3
- */
4
- import { getLogger } from './logger.js';
5
- export var CircuitState;
6
- (function (CircuitState) {
7
- CircuitState["CLOSED"] = "CLOSED";
8
- CircuitState["OPEN"] = "OPEN";
9
- CircuitState["HALF_OPEN"] = "HALF_OPEN";
10
- })(CircuitState || (CircuitState = {}));
11
- const DEFAULT_OPTIONS = {
12
- failureThreshold: 5,
13
- successThreshold: 2,
14
- timeout: 10000,
15
- resetTimeout: 60000,
16
- };
17
- /**
18
- * Circuit breaker implementation to prevent cascading failures
19
- */
20
- export class CircuitBreaker {
21
- state = CircuitState.CLOSED;
22
- failureCount = 0;
23
- successCount = 0;
24
- nextAttempt = Date.now();
25
- options;
26
- name;
27
- constructor(name, options = {}) {
28
- this.name = name;
29
- this.options = { ...DEFAULT_OPTIONS, ...options };
30
- }
31
- /**
32
- * Gets the current state of the circuit breaker
33
- */
34
- getState() {
35
- return this.state;
36
- }
37
- /**
38
- * Gets circuit breaker statistics
39
- */
40
- getStats() {
41
- return {
42
- state: this.state,
43
- failureCount: this.failureCount,
44
- successCount: this.successCount,
45
- nextAttempt: this.nextAttempt,
46
- };
47
- }
48
- /**
49
- * Executes a function with circuit breaker protection
50
- */
51
- async execute(fn) {
52
- const logger = getLogger();
53
- if (this.state === CircuitState.OPEN) {
54
- if (Date.now() < this.nextAttempt) {
55
- const error = new Error(`Circuit breaker '${this.name}' is OPEN. Next attempt at ${new Date(this.nextAttempt).toISOString()}`);
56
- logger.warn('Circuit breaker is open', {
57
- name: this.name,
58
- nextAttempt: this.nextAttempt,
59
- });
60
- throw error;
61
- }
62
- // Transition to half-open to test if service recovered
63
- this.state = CircuitState.HALF_OPEN;
64
- this.successCount = 0;
65
- logger.info('Circuit breaker transitioning to HALF_OPEN', {
66
- name: this.name,
67
- });
68
- }
69
- try {
70
- const result = await this.executeWithTimeout(fn);
71
- this.onSuccess();
72
- return result;
73
- }
74
- catch (error) {
75
- this.onFailure();
76
- throw error;
77
- }
78
- }
79
- /**
80
- * Executes function with timeout
81
- */
82
- async executeWithTimeout(fn) {
83
- return Promise.race([
84
- fn(),
85
- new Promise((_, reject) => setTimeout(() => reject(new Error(`Operation timed out after ${this.options.timeout}ms`)), this.options.timeout)),
86
- ]);
87
- }
88
- /**
89
- * Handles successful execution
90
- */
91
- onSuccess() {
92
- const logger = getLogger();
93
- this.failureCount = 0;
94
- if (this.state === CircuitState.HALF_OPEN) {
95
- this.successCount++;
96
- logger.debug('Circuit breaker success in HALF_OPEN', {
97
- name: this.name,
98
- successCount: this.successCount,
99
- threshold: this.options.successThreshold,
100
- });
101
- if (this.successCount >= this.options.successThreshold) {
102
- this.state = CircuitState.CLOSED;
103
- this.successCount = 0;
104
- logger.info('Circuit breaker closed', { name: this.name });
105
- }
106
- }
107
- }
108
- /**
109
- * Handles failed execution
110
- */
111
- onFailure() {
112
- const logger = getLogger();
113
- this.failureCount++;
114
- logger.debug('Circuit breaker failure', {
115
- name: this.name,
116
- failureCount: this.failureCount,
117
- threshold: this.options.failureThreshold,
118
- state: this.state,
119
- });
120
- if (this.state === CircuitState.HALF_OPEN ||
121
- this.failureCount >= this.options.failureThreshold) {
122
- this.state = CircuitState.OPEN;
123
- this.nextAttempt = Date.now() + this.options.resetTimeout;
124
- logger.warn('Circuit breaker opened', {
125
- name: this.name,
126
- failureCount: this.failureCount,
127
- nextAttempt: this.nextAttempt,
128
- });
129
- }
130
- }
131
- /**
132
- * Manually resets the circuit breaker
133
- */
134
- reset() {
135
- const logger = getLogger();
136
- this.state = CircuitState.CLOSED;
137
- this.failureCount = 0;
138
- this.successCount = 0;
139
- this.nextAttempt = Date.now();
140
- logger.info('Circuit breaker manually reset', { name: this.name });
141
- }
142
- }
143
- /**
144
- * Registry for managing multiple circuit breakers
145
- */
146
- export class CircuitBreakerRegistry {
147
- breakers = new Map();
148
- /**
149
- * Gets or creates a circuit breaker
150
- */
151
- get(name, options) {
152
- if (!this.breakers.has(name)) {
153
- this.breakers.set(name, new CircuitBreaker(name, options));
154
- }
155
- return this.breakers.get(name);
156
- }
157
- /**
158
- * Gets all circuit breakers
159
- */
160
- getAll() {
161
- return new Map(this.breakers);
162
- }
163
- /**
164
- * Resets all circuit breakers
165
- */
166
- resetAll() {
167
- this.breakers.forEach((breaker) => {
168
- breaker.reset();
169
- });
170
- }
171
- /**
172
- * Gets statistics for all circuit breakers
173
- */
174
- getAllStats() {
175
- const stats = {};
176
- this.breakers.forEach((breaker, name) => {
177
- stats[name] = breaker.getStats();
178
- });
179
- return stats;
180
- }
181
- }
182
- /**
183
- * Global circuit breaker registry
184
- */
185
- export const circuitBreakerRegistry = new CircuitBreakerRegistry();
186
- //# sourceMappingURL=circuit-breaker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/utils/circuit-breaker.ts"],"names":[],"mappings":"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"}