@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,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IndexBuilder - Transforms raw Compodoc JSON into searchable in-memory structures
|
|
3
|
+
*/
|
|
4
|
+
import { CompodocDocumentation, ComponentDoc, DirectiveDoc, PipeDoc, InjectableDoc } from '../types/compodoc.js';
|
|
5
|
+
/**
|
|
6
|
+
* Type union for all indexable documentation items
|
|
7
|
+
*/
|
|
8
|
+
export type IndexableDoc = ComponentDoc | DirectiveDoc | PipeDoc | InjectableDoc;
|
|
9
|
+
/**
|
|
10
|
+
* In-memory index structure for fast lookups and searches
|
|
11
|
+
*/
|
|
12
|
+
export interface ComponentIndex {
|
|
13
|
+
byName: Map<string, IndexableDoc>;
|
|
14
|
+
bySelector: Map<string, IndexableDoc>;
|
|
15
|
+
searchIndex: Map<string, Set<string>>;
|
|
16
|
+
components: ComponentDoc[];
|
|
17
|
+
directives: DirectiveDoc[];
|
|
18
|
+
pipes: PipeDoc[];
|
|
19
|
+
services: InjectableDoc[];
|
|
20
|
+
lastUpdated: Date;
|
|
21
|
+
totalCount: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Statistics about the index
|
|
25
|
+
*/
|
|
26
|
+
export interface IndexStatistics {
|
|
27
|
+
totalCount: number;
|
|
28
|
+
componentCount: number;
|
|
29
|
+
directiveCount: number;
|
|
30
|
+
pipeCount: number;
|
|
31
|
+
serviceCount: number;
|
|
32
|
+
lastUpdated: Date;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* IndexBuilder class
|
|
36
|
+
* Builds searchable in-memory structures from Compodoc documentation
|
|
37
|
+
*/
|
|
38
|
+
export declare class IndexBuilder {
|
|
39
|
+
/**
|
|
40
|
+
* Build a complete index from Compodoc documentation
|
|
41
|
+
* @throws Error if duplicate names are found across types
|
|
42
|
+
*/
|
|
43
|
+
build(documentation: CompodocDocumentation): ComponentIndex;
|
|
44
|
+
/**
|
|
45
|
+
* Index a component
|
|
46
|
+
*/
|
|
47
|
+
private indexComponent;
|
|
48
|
+
/**
|
|
49
|
+
* Index a directive
|
|
50
|
+
*/
|
|
51
|
+
private indexDirective;
|
|
52
|
+
/**
|
|
53
|
+
* Index a pipe
|
|
54
|
+
*/
|
|
55
|
+
private indexPipe;
|
|
56
|
+
/**
|
|
57
|
+
* Index an injectable (service)
|
|
58
|
+
*/
|
|
59
|
+
private indexInjectable;
|
|
60
|
+
/**
|
|
61
|
+
* Add a document to the search index
|
|
62
|
+
* Creates an inverted index: word -> set of component names
|
|
63
|
+
*/
|
|
64
|
+
private addToSearchIndex;
|
|
65
|
+
/**
|
|
66
|
+
* Extract searchable words from text
|
|
67
|
+
* Converts to lowercase, splits on non-alphanumeric characters
|
|
68
|
+
*/
|
|
69
|
+
private extractWords;
|
|
70
|
+
/**
|
|
71
|
+
* Get statistics about the index
|
|
72
|
+
*/
|
|
73
|
+
getStatistics(index: ComponentIndex): IndexStatistics;
|
|
74
|
+
/**
|
|
75
|
+
* Rebuild the index with new documentation
|
|
76
|
+
*/
|
|
77
|
+
rebuild(documentation: CompodocDocumentation, _existingIndex?: ComponentIndex): ComponentIndex;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=index-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-builder.d.ts","sourceRoot":"","sources":["../../src/query/index-builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,aAAa,EACd,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,YAAY,GAAG,OAAO,GAAG,aAAa,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,cAAc;IAE7B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAGlC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAGtC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAGtC,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAG1B,WAAW,EAAE,IAAI,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,IAAI,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB;;;OAGG;IACH,KAAK,CAAC,aAAa,EAAE,qBAAqB,GAAG,cAAc;IAkF3D;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,SAAS;IAWjB;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAoDxB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAmBpB;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe;IAWrD;;OAEG;IACH,OAAO,CAAC,aAAa,EAAE,qBAAqB,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,cAAc;CAK/F"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IndexBuilder class
|
|
3
|
+
* Builds searchable in-memory structures from Compodoc documentation
|
|
4
|
+
*/
|
|
5
|
+
export class IndexBuilder {
|
|
6
|
+
/**
|
|
7
|
+
* Build a complete index from Compodoc documentation
|
|
8
|
+
* @throws Error if duplicate names are found across types
|
|
9
|
+
*/
|
|
10
|
+
build(documentation) {
|
|
11
|
+
const index = {
|
|
12
|
+
byName: new Map(),
|
|
13
|
+
bySelector: new Map(),
|
|
14
|
+
searchIndex: new Map(),
|
|
15
|
+
components: [],
|
|
16
|
+
directives: [],
|
|
17
|
+
pipes: [],
|
|
18
|
+
services: [],
|
|
19
|
+
lastUpdated: new Date(),
|
|
20
|
+
totalCount: 0,
|
|
21
|
+
};
|
|
22
|
+
// Track names to detect duplicates
|
|
23
|
+
const seenNames = new Map(); // name -> type
|
|
24
|
+
// Index components
|
|
25
|
+
if (documentation.components) {
|
|
26
|
+
for (const component of documentation.components) {
|
|
27
|
+
if (seenNames.has(component.name)) {
|
|
28
|
+
throw new Error(`Duplicate name detected: "${component.name}" exists as both ${seenNames.get(component.name)} and component. ` +
|
|
29
|
+
`All component, directive, pipe, and service names must be unique across the entire documentation.`);
|
|
30
|
+
}
|
|
31
|
+
seenNames.set(component.name, 'component');
|
|
32
|
+
this.indexComponent(component, index);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Index directives
|
|
36
|
+
if (documentation.directives) {
|
|
37
|
+
for (const directive of documentation.directives) {
|
|
38
|
+
if (seenNames.has(directive.name)) {
|
|
39
|
+
throw new Error(`Duplicate name detected: "${directive.name}" exists as both ${seenNames.get(directive.name)} and directive. ` +
|
|
40
|
+
`All component, directive, pipe, and service names must be unique across the entire documentation.`);
|
|
41
|
+
}
|
|
42
|
+
seenNames.set(directive.name, 'directive');
|
|
43
|
+
this.indexDirective(directive, index);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Index pipes
|
|
47
|
+
if (documentation.pipes) {
|
|
48
|
+
for (const pipe of documentation.pipes) {
|
|
49
|
+
if (seenNames.has(pipe.name)) {
|
|
50
|
+
throw new Error(`Duplicate name detected: "${pipe.name}" exists as both ${seenNames.get(pipe.name)} and pipe. ` +
|
|
51
|
+
`All component, directive, pipe, and service names must be unique across the entire documentation.`);
|
|
52
|
+
}
|
|
53
|
+
seenNames.set(pipe.name, 'pipe');
|
|
54
|
+
this.indexPipe(pipe, index);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Index services (injectables)
|
|
58
|
+
if (documentation.injectables) {
|
|
59
|
+
for (const injectable of documentation.injectables) {
|
|
60
|
+
if (seenNames.has(injectable.name)) {
|
|
61
|
+
throw new Error(`Duplicate name detected: "${injectable.name}" exists as both ${seenNames.get(injectable.name)} and injectable. ` +
|
|
62
|
+
`All component, directive, pipe, and service names must be unique across the entire documentation.`);
|
|
63
|
+
}
|
|
64
|
+
seenNames.set(injectable.name, 'injectable');
|
|
65
|
+
this.indexInjectable(injectable, index);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Calculate total count
|
|
69
|
+
index.totalCount =
|
|
70
|
+
index.components.length +
|
|
71
|
+
index.directives.length +
|
|
72
|
+
index.pipes.length +
|
|
73
|
+
index.services.length;
|
|
74
|
+
return index;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Index a component
|
|
78
|
+
*/
|
|
79
|
+
indexComponent(component, index) {
|
|
80
|
+
// Add to type-specific array
|
|
81
|
+
index.components.push(component);
|
|
82
|
+
// Add to name lookup
|
|
83
|
+
index.byName.set(component.name, component);
|
|
84
|
+
// Add to selector lookup
|
|
85
|
+
if (component.selector) {
|
|
86
|
+
index.bySelector.set(component.selector, component);
|
|
87
|
+
}
|
|
88
|
+
// Add to search index
|
|
89
|
+
this.addToSearchIndex(component, index);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Index a directive
|
|
93
|
+
*/
|
|
94
|
+
indexDirective(directive, index) {
|
|
95
|
+
// Add to type-specific array
|
|
96
|
+
index.directives.push(directive);
|
|
97
|
+
// Add to name lookup
|
|
98
|
+
index.byName.set(directive.name, directive);
|
|
99
|
+
// Add to selector lookup
|
|
100
|
+
if (directive.selector) {
|
|
101
|
+
index.bySelector.set(directive.selector, directive);
|
|
102
|
+
}
|
|
103
|
+
// Add to search index
|
|
104
|
+
this.addToSearchIndex(directive, index);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Index a pipe
|
|
108
|
+
*/
|
|
109
|
+
indexPipe(pipe, index) {
|
|
110
|
+
// Add to type-specific array
|
|
111
|
+
index.pipes.push(pipe);
|
|
112
|
+
// Add to name lookup
|
|
113
|
+
index.byName.set(pipe.name, pipe);
|
|
114
|
+
// Add to search index
|
|
115
|
+
this.addToSearchIndex(pipe, index);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Index an injectable (service)
|
|
119
|
+
*/
|
|
120
|
+
indexInjectable(injectable, index) {
|
|
121
|
+
// Add to type-specific array
|
|
122
|
+
index.services.push(injectable);
|
|
123
|
+
// Add to name lookup
|
|
124
|
+
index.byName.set(injectable.name, injectable);
|
|
125
|
+
// Add to search index
|
|
126
|
+
this.addToSearchIndex(injectable, index);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Add a document to the search index
|
|
130
|
+
* Creates an inverted index: word -> set of component names
|
|
131
|
+
*/
|
|
132
|
+
addToSearchIndex(doc, index) {
|
|
133
|
+
const words = new Set();
|
|
134
|
+
// Extract words from name
|
|
135
|
+
this.extractWords(doc.name, words);
|
|
136
|
+
// Extract words from selector (if available)
|
|
137
|
+
if ('selector' in doc && doc.selector) {
|
|
138
|
+
this.extractWords(doc.selector, words);
|
|
139
|
+
}
|
|
140
|
+
// Extract words from description
|
|
141
|
+
if (doc.description) {
|
|
142
|
+
this.extractWords(doc.description, words);
|
|
143
|
+
}
|
|
144
|
+
// Extract words from input names
|
|
145
|
+
if ('inputs' in doc && doc.inputs) {
|
|
146
|
+
for (const input of doc.inputs) {
|
|
147
|
+
this.extractWords(input.name, words);
|
|
148
|
+
if (input.description) {
|
|
149
|
+
this.extractWords(input.description, words);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Extract words from output names
|
|
154
|
+
if ('outputs' in doc && doc.outputs) {
|
|
155
|
+
for (const output of doc.outputs) {
|
|
156
|
+
this.extractWords(output.name, words);
|
|
157
|
+
if (output.description) {
|
|
158
|
+
this.extractWords(output.description, words);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// Extract words from method names
|
|
163
|
+
if ('methods' in doc && doc.methods) {
|
|
164
|
+
for (const method of doc.methods) {
|
|
165
|
+
this.extractWords(method.name, words);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// Add to inverted index
|
|
169
|
+
for (const word of words) {
|
|
170
|
+
if (!index.searchIndex.has(word)) {
|
|
171
|
+
index.searchIndex.set(word, new Set());
|
|
172
|
+
}
|
|
173
|
+
index.searchIndex.get(word).add(doc.name);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Extract searchable words from text
|
|
178
|
+
* Converts to lowercase, splits on non-alphanumeric characters
|
|
179
|
+
*/
|
|
180
|
+
extractWords(text, words) {
|
|
181
|
+
// Convert to lowercase
|
|
182
|
+
const normalized = text.toLowerCase();
|
|
183
|
+
// Split on non-alphanumeric characters and filter out empty strings
|
|
184
|
+
const tokens = normalized.split(/[^a-z0-9]+/).filter((token) => token.length > 0);
|
|
185
|
+
// Add to word set
|
|
186
|
+
for (const token of tokens) {
|
|
187
|
+
words.add(token);
|
|
188
|
+
}
|
|
189
|
+
// If no tokens were extracted but text is non-empty, add the original text
|
|
190
|
+
// This handles cases where the name consists only of special characters
|
|
191
|
+
if (tokens.length === 0 && text.trim().length > 0) {
|
|
192
|
+
words.add(normalized.trim());
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Get statistics about the index
|
|
197
|
+
*/
|
|
198
|
+
getStatistics(index) {
|
|
199
|
+
return {
|
|
200
|
+
totalCount: index.totalCount,
|
|
201
|
+
componentCount: index.components.length,
|
|
202
|
+
directiveCount: index.directives.length,
|
|
203
|
+
pipeCount: index.pipes.length,
|
|
204
|
+
serviceCount: index.services.length,
|
|
205
|
+
lastUpdated: index.lastUpdated,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Rebuild the index with new documentation
|
|
210
|
+
*/
|
|
211
|
+
rebuild(documentation, _existingIndex) {
|
|
212
|
+
// For now, just build a new index
|
|
213
|
+
// In the future, we could implement incremental updates
|
|
214
|
+
return this.build(documentation);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=index-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-builder.js","sourceRoot":"","sources":["../../src/query/index-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { IndexBuilder, ComponentIndex, IndexStatistics, IndexableDoc } from './index-builder.js';
|
|
2
|
+
export { ComponentQuery } from './component-query.js';
|
|
3
|
+
export { SearchEngine, SearchOptions, SearchResult, SearchResultItem } from './search-engine.js';
|
|
4
|
+
export { ResultFormatter, ComponentSummary, ComponentDetails, PropertySummary, MethodSummary, ParameterSummary, SearchResultSummary, } from './result-formatter.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Query engine exports
|
|
2
|
+
export { IndexBuilder } from './index-builder.js';
|
|
3
|
+
export { ComponentQuery } from './component-query.js';
|
|
4
|
+
export { SearchEngine } from './search-engine.js';
|
|
5
|
+
export { ResultFormatter, } from './result-formatter.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,OAAO,EAAE,YAAY,EAAiD,MAAM,oBAAoB,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAiD,MAAM,oBAAoB,CAAC;AACjG,OAAO,EACL,eAAe,GAOhB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ResultFormatter - Formats query results for MCP responses
|
|
3
|
+
*/
|
|
4
|
+
import { IndexableDoc } from './index-builder.js';
|
|
5
|
+
import { SearchResultItem } from './search-engine.js';
|
|
6
|
+
import { ExampleDoc } from '../types/compodoc.js';
|
|
7
|
+
export interface ComponentSummary {
|
|
8
|
+
name: string;
|
|
9
|
+
type: 'component' | 'directive' | 'pipe' | 'service';
|
|
10
|
+
selector?: string;
|
|
11
|
+
description: string;
|
|
12
|
+
deprecated: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface ComponentDetails {
|
|
15
|
+
name: string;
|
|
16
|
+
type: 'component' | 'directive' | 'pipe' | 'service';
|
|
17
|
+
selector?: string;
|
|
18
|
+
description: string;
|
|
19
|
+
inputs: PropertySummary[];
|
|
20
|
+
outputs: PropertySummary[];
|
|
21
|
+
methods: MethodSummary[];
|
|
22
|
+
examples: ExampleDoc[];
|
|
23
|
+
deprecated: boolean;
|
|
24
|
+
deprecationMessage?: string;
|
|
25
|
+
standalone?: boolean;
|
|
26
|
+
imports?: string[];
|
|
27
|
+
}
|
|
28
|
+
export interface PropertySummary {
|
|
29
|
+
name: string;
|
|
30
|
+
type: string;
|
|
31
|
+
required: boolean;
|
|
32
|
+
description: string;
|
|
33
|
+
defaultValue?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface MethodSummary {
|
|
36
|
+
name: string;
|
|
37
|
+
signature: string;
|
|
38
|
+
description: string;
|
|
39
|
+
parameters: ParameterSummary[];
|
|
40
|
+
returnType: string;
|
|
41
|
+
}
|
|
42
|
+
export interface ParameterSummary {
|
|
43
|
+
name: string;
|
|
44
|
+
type: string;
|
|
45
|
+
optional: boolean;
|
|
46
|
+
defaultValue?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface SearchResultSummary {
|
|
49
|
+
name: string;
|
|
50
|
+
type: 'component' | 'directive' | 'pipe' | 'service';
|
|
51
|
+
selector?: string;
|
|
52
|
+
description: string;
|
|
53
|
+
deprecated: boolean;
|
|
54
|
+
relevanceScore: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* ResultFormatter class
|
|
58
|
+
* Formats query results into structured responses
|
|
59
|
+
*/
|
|
60
|
+
export declare class ResultFormatter {
|
|
61
|
+
/**
|
|
62
|
+
* Format a list of documents as summaries
|
|
63
|
+
*/
|
|
64
|
+
formatList(docs: IndexableDoc[], includeDeprecated?: boolean): ComponentSummary[];
|
|
65
|
+
/**
|
|
66
|
+
* Format a single document as a summary
|
|
67
|
+
*/
|
|
68
|
+
formatSummary(doc: IndexableDoc): ComponentSummary;
|
|
69
|
+
/**
|
|
70
|
+
* Format a document with full details
|
|
71
|
+
*/
|
|
72
|
+
formatDetails(doc: IndexableDoc): ComponentDetails;
|
|
73
|
+
/**
|
|
74
|
+
* Format inputs as property summaries
|
|
75
|
+
* Checks both 'inputs' (metadata inputs) and 'inputsClass' (modern @Input() decorator)
|
|
76
|
+
*/
|
|
77
|
+
formatInputs(doc: IndexableDoc): PropertySummary[];
|
|
78
|
+
/**
|
|
79
|
+
* Format outputs as property summaries
|
|
80
|
+
* Checks both 'outputs' (metadata outputs) and 'outputsClass' (modern @Output() decorator)
|
|
81
|
+
*/
|
|
82
|
+
formatOutputs(doc: IndexableDoc): PropertySummary[];
|
|
83
|
+
/**
|
|
84
|
+
* Format a property
|
|
85
|
+
*/
|
|
86
|
+
private formatProperty;
|
|
87
|
+
/**
|
|
88
|
+
* Format methods as method summaries
|
|
89
|
+
*/
|
|
90
|
+
formatMethods(doc: IndexableDoc): MethodSummary[];
|
|
91
|
+
/**
|
|
92
|
+
* Format a method
|
|
93
|
+
*/
|
|
94
|
+
private formatMethod;
|
|
95
|
+
/**
|
|
96
|
+
* Format examples
|
|
97
|
+
*/
|
|
98
|
+
formatExamples(doc: IndexableDoc): ExampleDoc[];
|
|
99
|
+
/**
|
|
100
|
+
* Format search results
|
|
101
|
+
*/
|
|
102
|
+
formatSearchResults(results: SearchResultItem[]): SearchResultSummary[];
|
|
103
|
+
/**
|
|
104
|
+
* Format as JSON string
|
|
105
|
+
*/
|
|
106
|
+
toJSON(data: unknown): string;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=result-formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result-formatter.d.ts","sourceRoot":"","sources":["../../src/query/result-formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ResultFormatter class
|
|
3
|
+
* Formats query results into structured responses
|
|
4
|
+
*/
|
|
5
|
+
export class ResultFormatter {
|
|
6
|
+
/**
|
|
7
|
+
* Format a list of documents as summaries
|
|
8
|
+
*/
|
|
9
|
+
formatList(docs, includeDeprecated = false) {
|
|
10
|
+
return docs
|
|
11
|
+
.filter((doc) => includeDeprecated || !doc.deprecated)
|
|
12
|
+
.map((doc) => this.formatSummary(doc));
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Format a single document as a summary
|
|
16
|
+
*/
|
|
17
|
+
formatSummary(doc) {
|
|
18
|
+
// Map 'injectable' to 'service' for output
|
|
19
|
+
const type = doc.type === 'injectable' ? 'service' : doc.type;
|
|
20
|
+
return {
|
|
21
|
+
name: doc.name,
|
|
22
|
+
type: type,
|
|
23
|
+
selector: 'selector' in doc ? doc.selector : undefined,
|
|
24
|
+
description: doc.description || '',
|
|
25
|
+
deprecated: doc.deprecated,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Format a document with full details
|
|
30
|
+
*/
|
|
31
|
+
formatDetails(doc) {
|
|
32
|
+
const inputs = this.formatInputs(doc);
|
|
33
|
+
const outputs = this.formatOutputs(doc);
|
|
34
|
+
const methods = this.formatMethods(doc);
|
|
35
|
+
const examples = this.formatExamples(doc);
|
|
36
|
+
// Map 'injectable' to 'service' for output
|
|
37
|
+
const type = doc.type === 'injectable' ? 'service' : doc.type;
|
|
38
|
+
return {
|
|
39
|
+
name: doc.name,
|
|
40
|
+
type: type,
|
|
41
|
+
selector: 'selector' in doc ? doc.selector : undefined,
|
|
42
|
+
description: doc.description || '',
|
|
43
|
+
inputs,
|
|
44
|
+
outputs,
|
|
45
|
+
methods,
|
|
46
|
+
examples,
|
|
47
|
+
deprecated: doc.deprecated,
|
|
48
|
+
deprecationMessage: doc.deprecationMessage,
|
|
49
|
+
standalone: 'standalone' in doc ? doc.standalone : undefined,
|
|
50
|
+
imports: 'imports' in doc ? doc.imports : undefined,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Format inputs as property summaries
|
|
55
|
+
* Checks both 'inputs' (metadata inputs) and 'inputsClass' (modern @Input() decorator)
|
|
56
|
+
*/
|
|
57
|
+
formatInputs(doc) {
|
|
58
|
+
const inputs = [];
|
|
59
|
+
// Check metadata inputs (defined in @Component decorator)
|
|
60
|
+
if ('inputs' in doc && doc.inputs) {
|
|
61
|
+
inputs.push(...doc.inputs.map((input) => this.formatProperty(input)));
|
|
62
|
+
}
|
|
63
|
+
// Check class inputs (modern @Input() decorator)
|
|
64
|
+
if ('inputsClass' in doc && doc.inputsClass) {
|
|
65
|
+
inputs.push(...doc.inputsClass.map((input) => this.formatProperty(input)));
|
|
66
|
+
}
|
|
67
|
+
return inputs;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Format outputs as property summaries
|
|
71
|
+
* Checks both 'outputs' (metadata outputs) and 'outputsClass' (modern @Output() decorator)
|
|
72
|
+
*/
|
|
73
|
+
formatOutputs(doc) {
|
|
74
|
+
const outputs = [];
|
|
75
|
+
// Check metadata outputs (defined in @Component/@Directive decorator)
|
|
76
|
+
if ('outputs' in doc && doc.outputs) {
|
|
77
|
+
outputs.push(...doc.outputs.map((output) => this.formatProperty(output)));
|
|
78
|
+
}
|
|
79
|
+
// Check class outputs (modern @Output() decorator)
|
|
80
|
+
if ('outputsClass' in doc && doc.outputsClass) {
|
|
81
|
+
outputs.push(...doc.outputsClass.map((output) => this.formatProperty(output)));
|
|
82
|
+
}
|
|
83
|
+
return outputs;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Format a property
|
|
87
|
+
*/
|
|
88
|
+
formatProperty(prop) {
|
|
89
|
+
return {
|
|
90
|
+
name: prop.name,
|
|
91
|
+
type: prop.type || 'any',
|
|
92
|
+
required: !prop.optional,
|
|
93
|
+
description: prop.description || '',
|
|
94
|
+
defaultValue: prop.defaultValue,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Format methods as method summaries
|
|
99
|
+
*/
|
|
100
|
+
formatMethods(doc) {
|
|
101
|
+
if (!('methods' in doc) || !doc.methods) {
|
|
102
|
+
return [];
|
|
103
|
+
}
|
|
104
|
+
return doc.methods.map((method) => this.formatMethod(method));
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Format a method
|
|
108
|
+
*/
|
|
109
|
+
formatMethod(method) {
|
|
110
|
+
const parameters = (method.args || []).map((arg) => ({
|
|
111
|
+
name: arg.name,
|
|
112
|
+
type: arg.type || 'any',
|
|
113
|
+
optional: arg.optional || false,
|
|
114
|
+
defaultValue: arg.defaultValue,
|
|
115
|
+
}));
|
|
116
|
+
const paramSignature = parameters
|
|
117
|
+
.map((p) => {
|
|
118
|
+
const optional = p.optional ? '?' : '';
|
|
119
|
+
const defaultVal = p.defaultValue ? ` = ${p.defaultValue}` : '';
|
|
120
|
+
return `${p.name}${optional}: ${p.type}${defaultVal}`;
|
|
121
|
+
})
|
|
122
|
+
.join(', ');
|
|
123
|
+
const signature = `${method.name}(${paramSignature}): ${method.returnType || 'void'}`;
|
|
124
|
+
return {
|
|
125
|
+
name: method.name,
|
|
126
|
+
signature,
|
|
127
|
+
description: method.description || '',
|
|
128
|
+
parameters,
|
|
129
|
+
returnType: method.returnType || 'void',
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Format examples
|
|
134
|
+
*/
|
|
135
|
+
formatExamples(doc) {
|
|
136
|
+
if (!('examples' in doc) || !doc.examples) {
|
|
137
|
+
return [];
|
|
138
|
+
}
|
|
139
|
+
return doc.examples;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Format search results
|
|
143
|
+
*/
|
|
144
|
+
formatSearchResults(results) {
|
|
145
|
+
return results.map((result) => {
|
|
146
|
+
// Map 'injectable' to 'service' for output
|
|
147
|
+
const type = result.doc.type === 'injectable' ? 'service' : result.doc.type;
|
|
148
|
+
return {
|
|
149
|
+
name: result.doc.name,
|
|
150
|
+
type: type,
|
|
151
|
+
selector: 'selector' in result.doc ? result.doc.selector : undefined,
|
|
152
|
+
description: result.doc.description || '',
|
|
153
|
+
deprecated: result.doc.deprecated,
|
|
154
|
+
relevanceScore: result.relevanceScore,
|
|
155
|
+
};
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Format as JSON string
|
|
160
|
+
*/
|
|
161
|
+
toJSON(data) {
|
|
162
|
+
return JSON.stringify(data, null, 2);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=result-formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result-formatter.js","sourceRoot":"","sources":["../../src/query/result-formatter.ts"],"names":[],"mappings":"AA8DA;;;GAGG;AACH,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACH,UAAU,CAAC,IAAoB,EAAE,oBAA6B,KAAK;QACjE,OAAO,IAAI;aACR,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;aACrD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,GAAiB;QAC7B,2CAA2C;QAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;QAE9D,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,IAAsD;YAC5D,QAAQ,EAAE,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACtD,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;YAClC,UAAU,EAAE,GAAG,CAAC,UAAU;SAC3B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,GAAiB;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAE1C,2CAA2C;QAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;QAE9D,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,IAAsD;YAC5D,QAAQ,EAAE,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACtD,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;YAClC,MAAM;YACN,OAAO;YACP,OAAO;YACP,QAAQ;YACR,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;YAC1C,UAAU,EAAE,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YAC5D,OAAO,EAAE,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;SACpD,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,GAAiB;QAC5B,MAAM,MAAM,GAAsB,EAAE,CAAC;QAErC,0DAA0D;QAC1D,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,iDAAiD;QACjD,IAAI,aAAa,IAAI,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,GAAiB;QAC7B,MAAM,OAAO,GAAsB,EAAE,CAAC;QAEtC,sEAAsE;QACtE,IAAI,SAAS,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5E,CAAC;QAED,mDAAmD;QACnD,IAAI,cAAc,IAAI,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,IAAiB;QACtC,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK;YACxB,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ;YACxB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,GAAiB;QAC7B,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACxC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,MAAiB;QACpC,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,KAAK;YACvB,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,KAAK;YAC/B,YAAY,EAAE,GAAG,CAAC,YAAY;SAC/B,CAAC,CAAC,CAAC;QAEJ,MAAM,cAAc,GAAG,UAAU;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,QAAQ,KAAK,CAAC,CAAC,IAAI,GAAG,UAAU,EAAE,CAAC;QACxD,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,cAAc,MAAM,MAAM,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC;QAEtF,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS;YACT,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;YACrC,UAAU;YACV,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM;SACxC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,GAAiB;QAC9B,IAAI,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,GAAG,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,OAA2B;QAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC5B,2CAA2C;YAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YAE5E,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI;gBACrB,IAAI,EAAE,IAAsD;gBAC5D,QAAQ,EAAE,UAAU,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBACpE,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE;gBACzC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU;gBACjC,cAAc,EAAE,MAAM,CAAC,cAAc;aACtC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAa;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;CACF"}
|