@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.
- package/README.md +846 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +6 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +27 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +224 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +171 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +100 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/loader/cache-manager.d.ts +74 -0
- package/dist/loader/cache-manager.d.ts.map +1 -0
- package/dist/loader/cache-manager.js +107 -0
- package/dist/loader/cache-manager.js.map +1 -0
- package/dist/loader/documentation-loader.d.ts +57 -0
- package/dist/loader/documentation-loader.d.ts.map +1 -0
- package/dist/loader/documentation-loader.js +81 -0
- package/dist/loader/documentation-loader.js.map +1 -0
- package/dist/loader/documentation-source.d.ts +37 -0
- package/dist/loader/documentation-source.d.ts.map +1 -0
- package/dist/loader/documentation-source.js +2 -0
- package/dist/loader/documentation-source.js.map +1 -0
- package/dist/loader/errors.d.ts +34 -0
- package/dist/loader/errors.d.ts.map +1 -0
- package/dist/loader/errors.js +65 -0
- package/dist/loader/errors.js.map +1 -0
- package/dist/loader/http-client.d.ts +43 -0
- package/dist/loader/http-client.d.ts.map +1 -0
- package/dist/loader/http-client.js +144 -0
- package/dist/loader/http-client.js.map +1 -0
- package/dist/loader/index.d.ts +6 -0
- package/dist/loader/index.d.ts.map +1 -0
- package/dist/loader/index.js +5 -0
- package/dist/loader/index.js.map +1 -0
- package/dist/loader/local-documentation-source.d.ts +62 -0
- package/dist/loader/local-documentation-source.d.ts.map +1 -0
- package/dist/loader/local-documentation-source.js +190 -0
- package/dist/loader/local-documentation-source.js.map +1 -0
- package/dist/loader/path-type-detector.d.ts +34 -0
- package/dist/loader/path-type-detector.d.ts.map +1 -0
- package/dist/loader/path-type-detector.js +78 -0
- package/dist/loader/path-type-detector.js.map +1 -0
- package/dist/loader/remote-documentation-source.d.ts +112 -0
- package/dist/loader/remote-documentation-source.d.ts.map +1 -0
- package/dist/loader/remote-documentation-source.js +252 -0
- package/dist/loader/remote-documentation-source.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +211 -0
- package/dist/main.js.map +1 -0
- package/dist/mcp/index.d.ts +5 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +5 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +65 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +224 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/publish/index.d.ts +8 -0
- package/dist/publish/index.d.ts.map +1 -0
- package/dist/publish/index.js +8 -0
- package/dist/publish/index.js.map +1 -0
- package/dist/publish/publish-utils.d.ts +74 -0
- package/dist/publish/publish-utils.d.ts.map +1 -0
- package/dist/publish/publish-utils.js +170 -0
- package/dist/publish/publish-utils.js.map +1 -0
- package/dist/query/component-query.d.ts +33 -0
- package/dist/query/component-query.d.ts.map +1 -0
- package/dist/query/component-query.js +63 -0
- package/dist/query/component-query.js.map +1 -0
- package/dist/query/index-builder.d.ts +79 -0
- package/dist/query/index-builder.d.ts.map +1 -0
- package/dist/query/index-builder.js +217 -0
- package/dist/query/index-builder.js.map +1 -0
- package/dist/query/index.d.ts +5 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +6 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/result-formatter.d.ts +108 -0
- package/dist/query/result-formatter.d.ts.map +1 -0
- package/dist/query/result-formatter.js +165 -0
- package/dist/query/result-formatter.js.map +1 -0
- package/dist/query/search-engine.d.ts +54 -0
- package/dist/query/search-engine.d.ts.map +1 -0
- package/dist/query/search-engine.js +178 -0
- package/dist/query/search-engine.js.map +1 -0
- package/dist/test-error.ts +1 -0
- package/dist/tools/get-component-docs.d.ts +43 -0
- package/dist/tools/get-component-docs.d.ts.map +1 -0
- package/dist/tools/get-component-docs.js +55 -0
- package/dist/tools/get-component-docs.js.map +1 -0
- package/dist/tools/get-component-examples.d.ts +45 -0
- package/dist/tools/get-component-examples.d.ts.map +1 -0
- package/dist/tools/get-component-examples.js +56 -0
- package/dist/tools/get-component-examples.js.map +1 -0
- package/dist/tools/get-component-inputs.d.ts +44 -0
- package/dist/tools/get-component-inputs.d.ts.map +1 -0
- package/dist/tools/get-component-inputs.js +55 -0
- package/dist/tools/get-component-inputs.js.map +1 -0
- package/dist/tools/get-component-outputs.d.ts +44 -0
- package/dist/tools/get-component-outputs.d.ts.map +1 -0
- package/dist/tools/get-component-outputs.js +55 -0
- package/dist/tools/get-component-outputs.js.map +1 -0
- package/dist/tools/index.d.ts +7 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/list-components.d.ts +69 -0
- package/dist/tools/list-components.d.ts.map +1 -0
- package/dist/tools/list-components.js +84 -0
- package/dist/tools/list-components.js.map +1 -0
- package/dist/tools/search-components.d.ts +69 -0
- package/dist/tools/search-components.d.ts.map +1 -0
- package/dist/tools/search-components.js +98 -0
- package/dist/tools/search-components.js.map +1 -0
- package/dist/types/compodoc.d.ts +261 -0
- package/dist/types/compodoc.d.ts.map +1 -0
- package/dist/types/compodoc.js +5 -0
- package/dist/types/compodoc.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/circuit-breaker.d.ts +91 -0
- package/dist/utils/circuit-breaker.d.ts.map +1 -0
- package/dist/utils/circuit-breaker.js +186 -0
- package/dist/utils/circuit-breaker.js.map +1 -0
- package/dist/utils/credential-masking.d.ts +90 -0
- package/dist/utils/credential-masking.d.ts.map +1 -0
- package/dist/utils/credential-masking.js +202 -0
- package/dist/utils/credential-masking.js.map +1 -0
- package/dist/utils/error-handler.d.ts +68 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +184 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/errors.d.ts +156 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +242 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +16 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +76 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +150 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/retry.d.ts +19 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +81 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/version/changelog-file-utils.d.ts +69 -0
- package/dist/version/changelog-file-utils.d.ts.map +1 -0
- package/dist/version/changelog-file-utils.js +161 -0
- package/dist/version/changelog-file-utils.js.map +1 -0
- package/dist/version/changelog-utils.d.ts +98 -0
- package/dist/version/changelog-utils.d.ts.map +1 -0
- package/dist/version/changelog-utils.js +198 -0
- package/dist/version/changelog-utils.js.map +1 -0
- package/dist/version/dry-run-utils.d.ts +108 -0
- package/dist/version/dry-run-utils.d.ts.map +1 -0
- package/dist/version/dry-run-utils.js +126 -0
- package/dist/version/dry-run-utils.js.map +1 -0
- package/dist/version/git-tag-utils.d.ts +50 -0
- package/dist/version/git-tag-utils.d.ts.map +1 -0
- package/dist/version/git-tag-utils.js +66 -0
- package/dist/version/git-tag-utils.js.map +1 -0
- package/dist/version/index.d.ts +11 -0
- package/dist/version/index.d.ts.map +1 -0
- package/dist/version/index.js +11 -0
- package/dist/version/index.js.map +1 -0
- package/dist/version/release-utils.d.ts +94 -0
- package/dist/version/release-utils.d.ts.map +1 -0
- package/dist/version/release-utils.js +170 -0
- package/dist/version/release-utils.js.map +1 -0
- package/dist/version/rollback-utils.d.ts +47 -0
- package/dist/version/rollback-utils.d.ts.map +1 -0
- package/dist/version/rollback-utils.js +73 -0
- package/dist/version/rollback-utils.js.map +1 -0
- package/dist/version/version-manager.d.ts +98 -0
- package/dist/version/version-manager.d.ts.map +1 -0
- package/dist/version/version-manager.js +158 -0
- package/dist/version/version-manager.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for Compodoc documentation.json structure
|
|
3
|
+
*/
|
|
4
|
+
export interface CompodocDocumentation {
|
|
5
|
+
pipes: PipeDoc[];
|
|
6
|
+
components: ComponentDoc[];
|
|
7
|
+
directives: DirectiveDoc[];
|
|
8
|
+
injectables: InjectableDoc[];
|
|
9
|
+
interfaces: InterfaceDoc[];
|
|
10
|
+
classes: ClassDoc[];
|
|
11
|
+
modules: ModuleDoc[];
|
|
12
|
+
miscellaneous?: MiscellaneousDoc;
|
|
13
|
+
routes?: RouteDoc[];
|
|
14
|
+
coverage?: CoverageDoc;
|
|
15
|
+
}
|
|
16
|
+
export interface ComponentDoc {
|
|
17
|
+
name: string;
|
|
18
|
+
id: string;
|
|
19
|
+
file: string;
|
|
20
|
+
type: 'component';
|
|
21
|
+
selector?: string;
|
|
22
|
+
inputs?: PropertyDoc[];
|
|
23
|
+
inputsClass?: PropertyDoc[];
|
|
24
|
+
outputs?: PropertyDoc[];
|
|
25
|
+
outputsClass?: PropertyDoc[];
|
|
26
|
+
properties?: PropertyDoc[];
|
|
27
|
+
methods?: MethodDoc[];
|
|
28
|
+
hostBindings?: HostBindingDoc[];
|
|
29
|
+
hostListeners?: HostListenerDoc[];
|
|
30
|
+
description?: string;
|
|
31
|
+
rawdescription?: string;
|
|
32
|
+
templateUrl?: string[];
|
|
33
|
+
styleUrls?: string[];
|
|
34
|
+
encapsulation?: string[];
|
|
35
|
+
changeDetection?: string;
|
|
36
|
+
implements?: string[];
|
|
37
|
+
extends?: string;
|
|
38
|
+
deprecated: boolean;
|
|
39
|
+
deprecationMessage?: string;
|
|
40
|
+
standalone?: boolean;
|
|
41
|
+
imports?: string[];
|
|
42
|
+
providers?: ProviderDoc[];
|
|
43
|
+
sourceCode?: string;
|
|
44
|
+
exampleUrls?: string[];
|
|
45
|
+
examples?: ExampleDoc[];
|
|
46
|
+
}
|
|
47
|
+
export interface DirectiveDoc {
|
|
48
|
+
name: string;
|
|
49
|
+
id: string;
|
|
50
|
+
file: string;
|
|
51
|
+
type: 'directive';
|
|
52
|
+
selector?: string;
|
|
53
|
+
inputs?: PropertyDoc[];
|
|
54
|
+
inputsClass?: PropertyDoc[];
|
|
55
|
+
outputs?: PropertyDoc[];
|
|
56
|
+
outputsClass?: PropertyDoc[];
|
|
57
|
+
properties?: PropertyDoc[];
|
|
58
|
+
methods?: MethodDoc[];
|
|
59
|
+
hostBindings?: HostBindingDoc[];
|
|
60
|
+
hostListeners?: HostListenerDoc[];
|
|
61
|
+
description?: string;
|
|
62
|
+
rawdescription?: string;
|
|
63
|
+
deprecated: boolean;
|
|
64
|
+
deprecationMessage?: string;
|
|
65
|
+
standalone?: boolean;
|
|
66
|
+
sourceCode?: string;
|
|
67
|
+
}
|
|
68
|
+
export interface PipeDoc {
|
|
69
|
+
name: string;
|
|
70
|
+
id: string;
|
|
71
|
+
file: string;
|
|
72
|
+
type: 'pipe';
|
|
73
|
+
ngname?: string;
|
|
74
|
+
deprecated: boolean;
|
|
75
|
+
deprecationMessage?: string;
|
|
76
|
+
description?: string;
|
|
77
|
+
rawdescription?: string;
|
|
78
|
+
properties?: PropertyDoc[];
|
|
79
|
+
methods?: MethodDoc[];
|
|
80
|
+
standalone?: boolean;
|
|
81
|
+
pure?: boolean;
|
|
82
|
+
sourceCode?: string;
|
|
83
|
+
}
|
|
84
|
+
export interface InjectableDoc {
|
|
85
|
+
name: string;
|
|
86
|
+
id: string;
|
|
87
|
+
file: string;
|
|
88
|
+
type: 'injectable';
|
|
89
|
+
properties?: PropertyDoc[];
|
|
90
|
+
methods?: MethodDoc[];
|
|
91
|
+
description?: string;
|
|
92
|
+
rawdescription?: string;
|
|
93
|
+
deprecated: boolean;
|
|
94
|
+
deprecationMessage?: string;
|
|
95
|
+
providedIn?: string;
|
|
96
|
+
sourceCode?: string;
|
|
97
|
+
}
|
|
98
|
+
export interface PropertyDoc {
|
|
99
|
+
name: string;
|
|
100
|
+
type: string;
|
|
101
|
+
optional?: boolean;
|
|
102
|
+
description?: string;
|
|
103
|
+
line?: number;
|
|
104
|
+
deprecated: boolean;
|
|
105
|
+
deprecationMessage?: string;
|
|
106
|
+
decorators?: DecoratorDoc[];
|
|
107
|
+
defaultValue?: string;
|
|
108
|
+
modifierKind?: number[];
|
|
109
|
+
}
|
|
110
|
+
export interface MethodDoc {
|
|
111
|
+
name: string;
|
|
112
|
+
args?: ArgumentDoc[];
|
|
113
|
+
returnType?: string;
|
|
114
|
+
line?: number;
|
|
115
|
+
description?: string;
|
|
116
|
+
rawdescription?: string;
|
|
117
|
+
deprecated: boolean;
|
|
118
|
+
deprecationMessage?: string;
|
|
119
|
+
jsdoctags?: JsDocTag[];
|
|
120
|
+
modifierKind?: number[];
|
|
121
|
+
optional?: boolean;
|
|
122
|
+
typeParameters?: string[];
|
|
123
|
+
}
|
|
124
|
+
export interface ArgumentDoc {
|
|
125
|
+
name: string;
|
|
126
|
+
type: string;
|
|
127
|
+
optional?: boolean;
|
|
128
|
+
deprecated: boolean;
|
|
129
|
+
deprecationMessage?: string;
|
|
130
|
+
defaultValue?: string;
|
|
131
|
+
}
|
|
132
|
+
export interface DecoratorDoc {
|
|
133
|
+
name: string;
|
|
134
|
+
stringifiedArguments?: string;
|
|
135
|
+
}
|
|
136
|
+
export interface JsDocTag {
|
|
137
|
+
name: string;
|
|
138
|
+
type?: string;
|
|
139
|
+
deprecated?: boolean;
|
|
140
|
+
deprecationMessage?: string;
|
|
141
|
+
tagName?: {
|
|
142
|
+
text: string;
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
export interface HostBindingDoc {
|
|
146
|
+
name: string;
|
|
147
|
+
propertyName?: string;
|
|
148
|
+
description?: string;
|
|
149
|
+
}
|
|
150
|
+
export interface HostListenerDoc {
|
|
151
|
+
name: string;
|
|
152
|
+
args?: string[];
|
|
153
|
+
description?: string;
|
|
154
|
+
}
|
|
155
|
+
export interface ProviderDoc {
|
|
156
|
+
provide: string;
|
|
157
|
+
useClass?: string;
|
|
158
|
+
useValue?: string;
|
|
159
|
+
useFactory?: string;
|
|
160
|
+
}
|
|
161
|
+
export interface ExampleDoc {
|
|
162
|
+
title?: string;
|
|
163
|
+
description?: string;
|
|
164
|
+
example: string;
|
|
165
|
+
language?: string;
|
|
166
|
+
}
|
|
167
|
+
export interface InterfaceDoc {
|
|
168
|
+
name: string;
|
|
169
|
+
id: string;
|
|
170
|
+
file: string;
|
|
171
|
+
type: 'interface';
|
|
172
|
+
properties?: PropertyDoc[];
|
|
173
|
+
methods?: MethodDoc[];
|
|
174
|
+
description?: string;
|
|
175
|
+
deprecated: boolean;
|
|
176
|
+
deprecationMessage?: string;
|
|
177
|
+
sourceCode?: string;
|
|
178
|
+
}
|
|
179
|
+
export interface ClassDoc {
|
|
180
|
+
name: string;
|
|
181
|
+
id: string;
|
|
182
|
+
file: string;
|
|
183
|
+
type: 'class';
|
|
184
|
+
properties?: PropertyDoc[];
|
|
185
|
+
methods?: MethodDoc[];
|
|
186
|
+
description?: string;
|
|
187
|
+
deprecated: boolean;
|
|
188
|
+
deprecationMessage?: string;
|
|
189
|
+
sourceCode?: string;
|
|
190
|
+
}
|
|
191
|
+
export interface ModuleDoc {
|
|
192
|
+
name: string;
|
|
193
|
+
id: string;
|
|
194
|
+
file: string;
|
|
195
|
+
type: 'module';
|
|
196
|
+
description?: string;
|
|
197
|
+
deprecated: boolean;
|
|
198
|
+
deprecationMessage?: string;
|
|
199
|
+
declarations?: string[];
|
|
200
|
+
imports?: string[];
|
|
201
|
+
exports?: string[];
|
|
202
|
+
providers?: ProviderDoc[];
|
|
203
|
+
bootstrap?: string[];
|
|
204
|
+
sourceCode?: string;
|
|
205
|
+
}
|
|
206
|
+
export interface MiscellaneousDoc {
|
|
207
|
+
variables?: VariableDoc[];
|
|
208
|
+
functions?: FunctionDoc[];
|
|
209
|
+
typealiases?: TypeAliasDoc[];
|
|
210
|
+
enumerations?: EnumerationDoc[];
|
|
211
|
+
}
|
|
212
|
+
export interface VariableDoc {
|
|
213
|
+
name: string;
|
|
214
|
+
type: string;
|
|
215
|
+
defaultValue?: string;
|
|
216
|
+
description?: string;
|
|
217
|
+
file: string;
|
|
218
|
+
}
|
|
219
|
+
export interface FunctionDoc {
|
|
220
|
+
name: string;
|
|
221
|
+
args?: ArgumentDoc[];
|
|
222
|
+
returnType?: string;
|
|
223
|
+
description?: string;
|
|
224
|
+
file: string;
|
|
225
|
+
}
|
|
226
|
+
export interface TypeAliasDoc {
|
|
227
|
+
name: string;
|
|
228
|
+
type: string;
|
|
229
|
+
description?: string;
|
|
230
|
+
file: string;
|
|
231
|
+
}
|
|
232
|
+
export interface EnumerationDoc {
|
|
233
|
+
name: string;
|
|
234
|
+
members?: EnumMemberDoc[];
|
|
235
|
+
description?: string;
|
|
236
|
+
file: string;
|
|
237
|
+
}
|
|
238
|
+
export interface EnumMemberDoc {
|
|
239
|
+
name: string;
|
|
240
|
+
value?: string;
|
|
241
|
+
}
|
|
242
|
+
export interface RouteDoc {
|
|
243
|
+
path: string;
|
|
244
|
+
component?: string;
|
|
245
|
+
children?: RouteDoc[];
|
|
246
|
+
}
|
|
247
|
+
export interface CoverageDoc {
|
|
248
|
+
count: number;
|
|
249
|
+
status: string;
|
|
250
|
+
files: FileCoverageDoc[];
|
|
251
|
+
}
|
|
252
|
+
export interface FileCoverageDoc {
|
|
253
|
+
filePath: string;
|
|
254
|
+
type: string;
|
|
255
|
+
linktype: string;
|
|
256
|
+
name: string;
|
|
257
|
+
coveragePercent: number;
|
|
258
|
+
coverageCount: string;
|
|
259
|
+
status: string;
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=compodoc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compodoc.d.ts","sourceRoot":"","sources":["../../src/types/compodoc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compodoc.js","sourceRoot":"","sources":["../../src/types/compodoc.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,186 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/utils/circuit-breaker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credential masking utilities for secure logging
|
|
3
|
+
*
|
|
4
|
+
* This module provides functions to mask sensitive credentials in logs and error messages
|
|
5
|
+
* to prevent accidental exposure of tokens, passwords, and other secrets.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Masks credentials in a string by replacing them with a redacted placeholder
|
|
9
|
+
*
|
|
10
|
+
* @param text - The text that may contain credentials
|
|
11
|
+
* @param customPatterns - Additional regex patterns to match credentials
|
|
12
|
+
* @returns The text with credentials masked
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const log = "Using token: npm_abc123def456";
|
|
17
|
+
* const masked = maskCredentials(log);
|
|
18
|
+
* // Returns: "Using token: ***REDACTED***"
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function maskCredentials(text: string, customPatterns?: RegExp[]): string;
|
|
22
|
+
/**
|
|
23
|
+
* Sanitizes an error message by masking any credentials it may contain
|
|
24
|
+
*
|
|
25
|
+
* @param error - The error object or message to sanitize
|
|
26
|
+
* @returns A sanitized error message safe for logging
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const error = new Error("Auth failed with token npm_abc123");
|
|
31
|
+
* const sanitized = sanitizeErrorMessage(error);
|
|
32
|
+
* // Returns: "Auth failed with token ***REDACTED***"
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function sanitizeErrorMessage(error: unknown): string;
|
|
36
|
+
/**
|
|
37
|
+
* Sanitizes an entire error object, masking credentials in message, stack, and details
|
|
38
|
+
*
|
|
39
|
+
* @param error - The error object to sanitize
|
|
40
|
+
* @returns A sanitized error object safe for logging
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const error = new Error("Failed with token npm_abc123");
|
|
45
|
+
* const sanitized = sanitizeError(error);
|
|
46
|
+
* // Returns error with masked message and stack
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function sanitizeError(error: unknown): Error;
|
|
50
|
+
/**
|
|
51
|
+
* Masks credentials in log arguments before logging
|
|
52
|
+
*
|
|
53
|
+
* @param args - The arguments to be logged
|
|
54
|
+
* @returns Sanitized arguments safe for logging
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* const args = ["User logged in", { token: "npm_abc123" }];
|
|
59
|
+
* const sanitized = maskLogArguments(args);
|
|
60
|
+
* // Returns: ["User logged in", { token: "***REDACTED***" }]
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare function maskLogArguments(args: unknown[]): unknown[];
|
|
64
|
+
/**
|
|
65
|
+
* Creates a safe error message for authentication failures without exposing credentials
|
|
66
|
+
*
|
|
67
|
+
* @param operation - The operation that failed (e.g., "npm publish", "git push")
|
|
68
|
+
* @returns A generic authentication error message
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* const message = createAuthErrorMessage("npm publish");
|
|
73
|
+
* // Returns: "Authentication failed for npm publish. Please check your credentials."
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export declare function createAuthErrorMessage(operation: string): string;
|
|
77
|
+
/**
|
|
78
|
+
* Checks if a string contains potential credentials
|
|
79
|
+
*
|
|
80
|
+
* @param text - The text to check
|
|
81
|
+
* @returns True if the text likely contains credentials
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* containsCredentials("npm_abc123def456"); // true
|
|
86
|
+
* containsCredentials("Hello world"); // false
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export declare function containsCredentials(text: string): boolean;
|
|
90
|
+
//# sourceMappingURL=credential-masking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-masking.d.ts","sourceRoot":"","sources":["../../src/utils/credential-masking.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2BH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,cAAc,GAAE,MAAM,EAAO,GAC5B,MAAM,CAaR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAkB3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAiCnD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAkB3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAUzD"}
|