@ama-mcp/otter 13.3.0-prerelease.22
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/LICENSE +26 -0
- package/README.md +15 -0
- package/package.json +166 -0
- package/src/metadata-per-release/index.d.ts +26 -0
- package/src/metadata-per-release/index.d.ts.map +1 -0
- package/src/metadata-per-release/index.js +198 -0
- package/src/metadata-per-release/index.js.map +1 -0
- package/src/public_api.d.ts +2 -0
- package/src/public_api.d.ts.map +1 -0
- package/src/public_api.js +5 -0
- package/src/public_api.js.map +1 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
Copyright Amadeus SAS
|
|
2
|
+
|
|
3
|
+
Redistribution and use in source and binary forms, with or without modification,
|
|
4
|
+
are permitted provided that the following conditions are met:
|
|
5
|
+
|
|
6
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
7
|
+
list of conditions and the following disclaimer.
|
|
8
|
+
|
|
9
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
10
|
+
this list of conditions and the following disclaimer in the documentation and/or
|
|
11
|
+
other materials provided with the distribution.
|
|
12
|
+
|
|
13
|
+
3. Neither the name of the copyright holder nor the names of its contributors
|
|
14
|
+
may be used to endorse or promote products derived from this software without
|
|
15
|
+
specific prior written permission.
|
|
16
|
+
|
|
17
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
18
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
19
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
20
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
|
21
|
+
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
22
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
23
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
24
|
+
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
25
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
26
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
package/README.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<h1 align="center">Otter MCP</h1>
|
|
2
|
+
<p align="center">
|
|
3
|
+
<img src="https://raw.githubusercontent.com/AmadeusITGroup/otter/main/assets/logo/otter.png" alt="Super cute Otter!" width="40%"/>
|
|
4
|
+
</p>
|
|
5
|
+
|
|
6
|
+
<br />
|
|
7
|
+
<br />
|
|
8
|
+
|
|
9
|
+
## Description
|
|
10
|
+
|
|
11
|
+
This module provides a set of MCP tools to retrieve information from Otter.
|
|
12
|
+
|
|
13
|
+
## Tools
|
|
14
|
+
|
|
15
|
+
- [metadata-per-release](./src/metadata-per-release/README.md)
|
package/package.json
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ama-mcp/otter",
|
|
3
|
+
"version": "13.3.0-prerelease.22",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public"
|
|
6
|
+
},
|
|
7
|
+
"description": "This module provides a set of MCP tools to retrieve information from Otter",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"mcp",
|
|
10
|
+
"otter",
|
|
11
|
+
"otter-module"
|
|
12
|
+
],
|
|
13
|
+
"module": "src/public_api.js",
|
|
14
|
+
"typings": "src/public_api.d.ts",
|
|
15
|
+
"sideEffects": false,
|
|
16
|
+
"exports": {
|
|
17
|
+
"./package.json": {
|
|
18
|
+
"default": "./package.json"
|
|
19
|
+
},
|
|
20
|
+
".": {
|
|
21
|
+
"typings": "./src/public_api.d.ts",
|
|
22
|
+
"default": "./src/public_api.js"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"scripts": {
|
|
26
|
+
"nx": "nx",
|
|
27
|
+
"ng": "yarn nx",
|
|
28
|
+
"build": "yarn nx build ama-mcp-otter",
|
|
29
|
+
"compile": "tsc -b ./tsconfig.build.json && yarn cpy package.json dist && patch-package-json-main"
|
|
30
|
+
},
|
|
31
|
+
"peerDependencies": {
|
|
32
|
+
"@ama-mcp/core": "^13.3.0-prerelease.22",
|
|
33
|
+
"@modelcontextprotocol/sdk": "~1.20.0",
|
|
34
|
+
"compressing": "^2.0.0",
|
|
35
|
+
"globby": "^11.1.0",
|
|
36
|
+
"zod": "~3.25.76"
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"tslib": "^2.6.2"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@ama-mcp/core": "^13.3.0-prerelease.22",
|
|
43
|
+
"@angular/common": "~20.3.0",
|
|
44
|
+
"@angular/compiler": "~20.3.0",
|
|
45
|
+
"@angular/compiler-cli": "~20.3.0",
|
|
46
|
+
"@angular/core": "~20.3.0",
|
|
47
|
+
"@angular/platform-browser": "~20.3.0",
|
|
48
|
+
"@angular/platform-browser-dynamic": "~20.3.0",
|
|
49
|
+
"@eslint-community/eslint-plugin-eslint-comments": "^4.4.0",
|
|
50
|
+
"@modelcontextprotocol/sdk": "~1.20.0",
|
|
51
|
+
"@nx/eslint": "~21.6.0",
|
|
52
|
+
"@nx/eslint-plugin": "~21.6.0",
|
|
53
|
+
"@nx/jest": "~21.6.0",
|
|
54
|
+
"@nx/js": "~21.6.0",
|
|
55
|
+
"@o3r/build-helpers": "^13.3.0-prerelease.22",
|
|
56
|
+
"@o3r/eslint-config": "^13.3.0-prerelease.22",
|
|
57
|
+
"@o3r/eslint-plugin": "^13.3.0-prerelease.22",
|
|
58
|
+
"@o3r/test-helpers": "^13.3.0-prerelease.22",
|
|
59
|
+
"@stylistic/eslint-plugin": "~5.4.0",
|
|
60
|
+
"@types/jest": "~29.5.2",
|
|
61
|
+
"@types/node": "~22.18.0",
|
|
62
|
+
"@typescript-eslint/parser": "~8.46.0",
|
|
63
|
+
"angular-eslint": "~20.4.0",
|
|
64
|
+
"compressing": "^2.0.0",
|
|
65
|
+
"cpy-cli": "^6.0.0",
|
|
66
|
+
"eslint": "~9.37.0",
|
|
67
|
+
"eslint-import-resolver-node": "~0.3.9",
|
|
68
|
+
"eslint-import-resolver-typescript": "~4.4.0",
|
|
69
|
+
"eslint-plugin-import": "~2.32.0",
|
|
70
|
+
"eslint-plugin-import-newlines": "~1.4.0",
|
|
71
|
+
"eslint-plugin-jest": "~29.0.0",
|
|
72
|
+
"eslint-plugin-jsdoc": "~54.7.0",
|
|
73
|
+
"eslint-plugin-prefer-arrow": "~1.2.3",
|
|
74
|
+
"eslint-plugin-unicorn": "~60.0.0",
|
|
75
|
+
"eslint-plugin-unused-imports": "~4.2.0",
|
|
76
|
+
"globals": "^16.0.0",
|
|
77
|
+
"globby": "^11.1.0",
|
|
78
|
+
"jest": "~29.7.0",
|
|
79
|
+
"jest-environment-jsdom": "~29.7.0",
|
|
80
|
+
"jest-junit": "~16.0.0",
|
|
81
|
+
"jest-preset-angular": "~14.6.0",
|
|
82
|
+
"jest-util": "~29.7.0",
|
|
83
|
+
"jsonc-eslint-parser": "~2.4.0",
|
|
84
|
+
"nx": "~21.6.0",
|
|
85
|
+
"rxjs": "^7.8.1",
|
|
86
|
+
"ts-jest": "~29.4.0",
|
|
87
|
+
"ts-node": "~10.9.2",
|
|
88
|
+
"type-fest": "^4.30.1",
|
|
89
|
+
"typescript": "~5.9.2",
|
|
90
|
+
"typescript-eslint": "~8.46.0",
|
|
91
|
+
"zod": "~3.25.76",
|
|
92
|
+
"zone.js": "~0.15.0"
|
|
93
|
+
},
|
|
94
|
+
"engines": {
|
|
95
|
+
"node": "^20.19.0 || ^22.17.0 || ^24.0.0"
|
|
96
|
+
},
|
|
97
|
+
"contributors": [
|
|
98
|
+
{
|
|
99
|
+
"name": "Yannick Adam",
|
|
100
|
+
"url": "https://github.com/yannickadam",
|
|
101
|
+
"email": "yannickadam@users.noreply.github.com"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"name": "Kilian Panot",
|
|
105
|
+
"url": "https://github.com/kpanot",
|
|
106
|
+
"email": "kpanot@users.noreply.github.com"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"name": "Jeremy Bourgeois",
|
|
110
|
+
"url": "https://github.com/jbourgeois-1A",
|
|
111
|
+
"email": "jbourgeois-1A@users.noreply.github.com"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"name": "Pierre Henri Ginoux",
|
|
115
|
+
"url": "https://github.com/pginoux-1A",
|
|
116
|
+
"email": "pginoux-1A@users.noreply.github.com"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"name": "Mircea Vasile Rednic",
|
|
120
|
+
"url": "https://github.com/mrednic-1A",
|
|
121
|
+
"email": "mrednic-1A@users.noreply.github.com"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"name": "Stephane Dalle",
|
|
125
|
+
"url": "https://github.com/sdalle-1A",
|
|
126
|
+
"email": "sdalle-1A@users.noreply.github.com"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"name": "Nicolas Hoffmann",
|
|
130
|
+
"url": "https://github.com/nhoffmann-1A",
|
|
131
|
+
"email": "nhoffmann-1A@users.noreply.github.com"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"name": "Victor Scaiceanu",
|
|
135
|
+
"url": "https://github.com/vscaiceanu-1a",
|
|
136
|
+
"email": "vscaiceanu-1A@users.noreply.github.com"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"name": "Florian Paul",
|
|
140
|
+
"url": "https://github.com/fpaul-1A",
|
|
141
|
+
"email": "fpaul-1A@users.noreply.github.com"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"name": "Corinne Paulve",
|
|
145
|
+
"url": "https://github.com/cpaulve-1A",
|
|
146
|
+
"email": "cpaulve-1A@users.noreply.github.com"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"name": "Matthieu Crouzet",
|
|
150
|
+
"url": "https://github.com/matthieu-crouzet",
|
|
151
|
+
"email": "matthieu-crouzet@users.noreply.github.com"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"name": "Salome Do",
|
|
155
|
+
"url": "https://github.com/sdo-1A",
|
|
156
|
+
"email": "sdo-1A@users.noreply.github.com"
|
|
157
|
+
}
|
|
158
|
+
],
|
|
159
|
+
"bugs": "https://github.com/AmadeusITGroup/otter/issues",
|
|
160
|
+
"repository": {
|
|
161
|
+
"type": "git",
|
|
162
|
+
"url": "git+https://github.com/AmadeusITGroup/otter.git"
|
|
163
|
+
},
|
|
164
|
+
"license": "BSD-3-Clause",
|
|
165
|
+
"homepage": "https://amadeusitgroup.github.io/otter/"
|
|
166
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type CacheToolOptions, type ResourceToolOptions, type ToolDefinition } from '@ama-mcp/core';
|
|
2
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
+
/**
|
|
4
|
+
* Options for the tool metadata per release
|
|
5
|
+
*/
|
|
6
|
+
export interface MetadataPerReleaseOptions extends ToolDefinition, ResourceToolOptions, CacheToolOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Returns the list of package names
|
|
9
|
+
*/
|
|
10
|
+
retrievePackages: () => Promise<string[]>;
|
|
11
|
+
/**
|
|
12
|
+
* Returns the list of tags for a package name
|
|
13
|
+
*/
|
|
14
|
+
retrieveTags: (packageName: string) => Promise<string[]>;
|
|
15
|
+
/**
|
|
16
|
+
* Returns the response of a request that returns the tgz artifact of the package
|
|
17
|
+
*/
|
|
18
|
+
fetchPackageArtifact: (packageName: string, tagName: string) => Promise<Response>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Registers the metadata per release resource template and tool on the MCP server.
|
|
22
|
+
* @param server
|
|
23
|
+
* @param options
|
|
24
|
+
*/
|
|
25
|
+
export declare function registerMetadataPerRelease(server: McpServer, options: MetadataPerReleaseOptions): Promise<void>;
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/metadata-per-release/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,KAAK,gBAAgB,EAGrB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAKvB,OAAO,EACL,SAAS,EAEV,MAAM,yCAAyC,CAAC;AAWjD;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,cAAc,EAAE,mBAAmB,EAAE,gBAAgB;IACtG;;OAEG;IACH,gBAAgB,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C;;OAEG;IACH,YAAY,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzD;;OAEG;IACH,oBAAoB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACnF;AAwGD;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,yBAAyB,iBAqInC"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerMetadataPerRelease = registerMetadataPerRelease;
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
|
+
const promises_1 = require("node:fs/promises");
|
|
6
|
+
const node_os_1 = require("node:os");
|
|
7
|
+
const node_path_1 = require("node:path");
|
|
8
|
+
const promises_2 = require("node:stream/promises");
|
|
9
|
+
const core_1 = require("@ama-mcp/core");
|
|
10
|
+
const core_2 = require("@ama-mcp/core");
|
|
11
|
+
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
12
|
+
const compressing_1 = require("compressing");
|
|
13
|
+
const globby_1 = require("globby");
|
|
14
|
+
const zod_1 = require("zod");
|
|
15
|
+
var MetadataType;
|
|
16
|
+
(function (MetadataType) {
|
|
17
|
+
MetadataType["LOCALIZATION"] = "localization";
|
|
18
|
+
MetadataType["CONFIGURATION"] = "configuration";
|
|
19
|
+
MetadataType["COMPONENT"] = "component";
|
|
20
|
+
MetadataType["RULES_ENGINE_FACT"] = "fact";
|
|
21
|
+
MetadataType["RULES_ENGINE_OPERATOR"] = "operator";
|
|
22
|
+
MetadataType["STYLING"] = "styling";
|
|
23
|
+
})(MetadataType || (MetadataType = {}));
|
|
24
|
+
const METADATA_TYPE_LIST = Object.values(MetadataType);
|
|
25
|
+
const METADATA_FILE_NAME = {
|
|
26
|
+
[MetadataType.LOCALIZATION]: 'localisation.metadata.json',
|
|
27
|
+
[MetadataType.CONFIGURATION]: 'component.config.metadata.json',
|
|
28
|
+
[MetadataType.COMPONENT]: 'component.class.metadata.json',
|
|
29
|
+
[MetadataType.RULES_ENGINE_FACT]: 'rules.facts.metadata.json',
|
|
30
|
+
[MetadataType.RULES_ENGINE_OPERATOR]: 'rules.operators.metadata.json',
|
|
31
|
+
[MetadataType.STYLING]: 'styling.metadata.json'
|
|
32
|
+
};
|
|
33
|
+
const cacheEntrySeparator = '::';
|
|
34
|
+
const getCacheEntryKey = (packageName, tagName) => `${packageName}${cacheEntrySeparator}${tagName}`;
|
|
35
|
+
const getPackageAndTagFromKey = (key) => key.split(cacheEntrySeparator);
|
|
36
|
+
const getUriFactory = (options) => (packageName, tagName, metadataType) => `${options.uriPrefix}://metadata/${packageName.replace(/^@[/]+\//, '')}/${tagName}/${metadataType}`;
|
|
37
|
+
const toArray = (value) => Array.isArray(value) ? value : [value];
|
|
38
|
+
const extractPackageArtifactFactory = (fetchPackageArtifact, logger) => {
|
|
39
|
+
const archiveDir = (0, node_os_1.tmpdir)();
|
|
40
|
+
const extractDir = (0, node_os_1.tmpdir)();
|
|
41
|
+
return async (packageName, tagName) => {
|
|
42
|
+
const response = await fetchPackageArtifact(packageName, tagName);
|
|
43
|
+
const tgzFilePath = (0, node_path_1.resolve)(archiveDir, `${packageName}-${tagName}.tgz`);
|
|
44
|
+
if (!(0, node_fs_1.existsSync)((0, node_path_1.dirname)(tgzFilePath))) {
|
|
45
|
+
await (0, promises_1.mkdir)((0, node_path_1.dirname)(tgzFilePath), { recursive: true });
|
|
46
|
+
}
|
|
47
|
+
const extractPath = (0, node_path_1.resolve)(extractDir, `${packageName}-${tagName}`);
|
|
48
|
+
if (!(0, node_fs_1.existsSync)((0, node_path_1.dirname)(extractPath))) {
|
|
49
|
+
await (0, promises_1.mkdir)((0, node_path_1.dirname)(extractPath), { recursive: true });
|
|
50
|
+
}
|
|
51
|
+
if (!response.ok) {
|
|
52
|
+
logger.error?.(`Failed to download package artifact for ${packageName}@${tagName}: ${response.status} ${response.statusText}`);
|
|
53
|
+
throw new Error(`Download failed: ${response.status} ${response.statusText}`);
|
|
54
|
+
}
|
|
55
|
+
if (!response.body) {
|
|
56
|
+
logger.error?.(`No body stream in response when downloading package artifact for ${packageName}@${tagName}`);
|
|
57
|
+
throw new Error('Response has no body stream');
|
|
58
|
+
}
|
|
59
|
+
// Stream to file to avoid buffering the entire archive in memory
|
|
60
|
+
await (0, promises_2.pipeline)(response.body, (0, node_fs_1.createWriteStream)(tgzFilePath));
|
|
61
|
+
await compressing_1.tgz.uncompress(tgzFilePath, extractPath);
|
|
62
|
+
void (0, promises_1.rm)(tgzFilePath);
|
|
63
|
+
return extractPath;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
const retrieveAllMetadata = async (onMetadataRetrieved, options, cacheManager, logger) => {
|
|
67
|
+
const { retrievePackages, fetchPackageArtifact, retrieveTags } = options;
|
|
68
|
+
const packageNames = await retrievePackages();
|
|
69
|
+
const extractPackageArtifact = extractPackageArtifactFactory(fetchPackageArtifact, logger);
|
|
70
|
+
return Promise.allSettled(packageNames.map(async (packageName) => {
|
|
71
|
+
const tags = await retrieveTags(packageName);
|
|
72
|
+
return Promise.allSettled(tags.map(async (tagName) => {
|
|
73
|
+
if (!cacheManager.isExpired(getCacheEntryKey(packageName, tagName))) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const extractPath = await extractPackageArtifact(packageName, tagName);
|
|
77
|
+
return Promise.allSettled(METADATA_TYPE_LIST.map(async (metadataType) => {
|
|
78
|
+
const [metadataFile] = (0, globby_1.sync)(`**/${METADATA_FILE_NAME[metadataType]}`, { cwd: extractPath, absolute: true });
|
|
79
|
+
if (!metadataFile) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
// Store minified content to avoid unnecessary differences due to formatting
|
|
83
|
+
const content = JSON.stringify(JSON.parse(await (0, promises_1.readFile)(metadataFile, { encoding: 'utf8' })));
|
|
84
|
+
return onMetadataRetrieved(packageName, tagName, metadataType, content);
|
|
85
|
+
}));
|
|
86
|
+
}));
|
|
87
|
+
}));
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Registers the metadata per release resource template and tool on the MCP server.
|
|
91
|
+
* @param server
|
|
92
|
+
* @param options
|
|
93
|
+
*/
|
|
94
|
+
async function registerMetadataPerRelease(server, options) {
|
|
95
|
+
const logger = options.logger ?? new core_2.MCPLogger('metadata_per_release', options.logLevel);
|
|
96
|
+
const cacheManager = new core_2.CacheManager(options);
|
|
97
|
+
await cacheManager.initialize();
|
|
98
|
+
const getUri = getUriFactory(options);
|
|
99
|
+
cacheManager.forEach((key, entry) => {
|
|
100
|
+
const [packageName, tagName] = getPackageAndTagFromKey(key);
|
|
101
|
+
Object.entries(entry || {}).forEach(([metadataType, content]) => {
|
|
102
|
+
const resourceUri = getUri(packageName, tagName, metadataType);
|
|
103
|
+
core_1.resourceRegistry.set(resourceUri, content);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
void retrieveAllMetadata((packageName, tagName, metadataType, content) => {
|
|
107
|
+
const cacheEntryKey = getCacheEntryKey(packageName, tagName);
|
|
108
|
+
const cachedEntry = cacheManager.get(cacheEntryKey);
|
|
109
|
+
const entry = {
|
|
110
|
+
...cachedEntry,
|
|
111
|
+
[metadataType]: content
|
|
112
|
+
};
|
|
113
|
+
core_1.resourceRegistry.set(getUri(packageName, tagName, metadataType), content);
|
|
114
|
+
return cacheManager.set(cacheEntryKey, entry);
|
|
115
|
+
}, options, cacheManager, logger);
|
|
116
|
+
server.registerResource('metadata per release', new mcp_js_1.ResourceTemplate(getUri('{packageName}', '{tagName}', '{metadataType}'), {
|
|
117
|
+
list: undefined,
|
|
118
|
+
complete: {
|
|
119
|
+
packageName: (userInput) => {
|
|
120
|
+
return cacheManager.getEntries()
|
|
121
|
+
.filter(([key, entry]) => Object.keys(entry).length > 0
|
|
122
|
+
&& key.split(cacheEntrySeparator)[0]?.toLowerCase().includes(userInput.toLowerCase())).map(([key]) => key.split(cacheEntrySeparator)[0]);
|
|
123
|
+
},
|
|
124
|
+
tagName: (userInput, params) => {
|
|
125
|
+
const packageName = params?.arguments?.packageName;
|
|
126
|
+
return packageName
|
|
127
|
+
? cacheManager.getEntries()
|
|
128
|
+
.filter(([key, entry]) => Object.keys(entry).length > 0
|
|
129
|
+
&& key.startsWith(packageName)
|
|
130
|
+
&& key.split(cacheEntrySeparator)[1]?.toLowerCase().includes(userInput.toLowerCase())).map(([key]) => key.split(cacheEntrySeparator)[1])
|
|
131
|
+
: [];
|
|
132
|
+
},
|
|
133
|
+
metadataType: (userInput, params) => {
|
|
134
|
+
const { packageName, tagName } = params?.arguments || {};
|
|
135
|
+
return Object.keys(cacheManager.get(getCacheEntryKey(packageName, tagName)) || {})
|
|
136
|
+
.filter((type) => type.toLowerCase().includes(userInput.toLowerCase()));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}), {
|
|
140
|
+
description: 'Metadata associated to a specific release of an application',
|
|
141
|
+
mimeType: 'application/json'
|
|
142
|
+
}, (uri, params) => {
|
|
143
|
+
const packageNames = toArray(params.packageName);
|
|
144
|
+
const tagNames = toArray(params.tagName);
|
|
145
|
+
const metadataTypes = toArray(params.metadataType);
|
|
146
|
+
const allPossibleCombinations = packageNames.flatMap((packageName) => tagNames.flatMap((tagName) => metadataTypes.map((metadataType) => [packageName, tagName, metadataType])));
|
|
147
|
+
return {
|
|
148
|
+
contents: allPossibleCombinations.map(([packageName, tagName, metadataType]) => {
|
|
149
|
+
const content = core_1.resourceRegistry.get(getUri(packageName, tagName, metadataType));
|
|
150
|
+
logger.debug?.(`Providing metadata for package=${packageName}, tag=${tagName}, type=${metadataType}: ${content}`);
|
|
151
|
+
return ({
|
|
152
|
+
uri: uri.href,
|
|
153
|
+
// Format for readability
|
|
154
|
+
text: JSON.stringify(JSON.parse(content), null, 2),
|
|
155
|
+
mimeType: 'application/json'
|
|
156
|
+
});
|
|
157
|
+
})
|
|
158
|
+
};
|
|
159
|
+
});
|
|
160
|
+
server.registerTool('metadata_per_release_tool', {
|
|
161
|
+
title: 'Metadata per release tool',
|
|
162
|
+
description: 'Tool to fetch metadata associated to a specific release of an application',
|
|
163
|
+
annotations: {
|
|
164
|
+
readOnlyHint: true,
|
|
165
|
+
openWorldHint: false
|
|
166
|
+
},
|
|
167
|
+
inputSchema: {
|
|
168
|
+
packageName: zod_1.z.string().describe('The name of the package. Format: app-name for @scope/app-name'),
|
|
169
|
+
tagName: zod_1.z.string().describe('The tag name of the release'),
|
|
170
|
+
metadataType: zod_1.z.enum(METADATA_TYPE_LIST)
|
|
171
|
+
.describe('The type of metadata to fetch')
|
|
172
|
+
},
|
|
173
|
+
outputSchema: {
|
|
174
|
+
metadata: zod_1.z.any().describe('The metadata associated to the specified release')
|
|
175
|
+
}
|
|
176
|
+
}, ({ packageName, tagName, metadataType }) => {
|
|
177
|
+
const uri = getUri(packageName, tagName, metadataType);
|
|
178
|
+
const metadataContent = core_1.resourceRegistry.get(uri);
|
|
179
|
+
if (!metadataContent) {
|
|
180
|
+
throw new Error(`Metadata not found for packageName=${packageName}, tagName=${tagName}, metadataType=${metadataType}`);
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
content: [{
|
|
184
|
+
type: 'text',
|
|
185
|
+
// Format for readability
|
|
186
|
+
text: JSON.stringify(JSON.parse(core_1.resourceRegistry.get(uri)), null, 2)
|
|
187
|
+
}, {
|
|
188
|
+
type: 'resource_link',
|
|
189
|
+
name: `Metadata for ${packageName} ${tagName} ${metadataType}`,
|
|
190
|
+
uri
|
|
191
|
+
}],
|
|
192
|
+
structuredContent: {
|
|
193
|
+
metadata: JSON.parse(metadataContent)
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metadata-per-release/index.ts"],"names":[],"mappings":";;AAyKA,gEAuIC;AAhTD,qCAGiB;AACjB,+CAI0B;AAC1B,qCAEiB;AACjB,yCAGmB;AACnB,mDAE8B;AAC9B,wCAMuB;AACvB,wCAGuB;AACvB,oEAGiD;AACjD,6CAEqB;AACrB,mCAEgB;AAChB,6BAEa;AAoBb,IAAK,YAOJ;AAPD,WAAK,YAAY;IACf,6CAA6B,CAAA;IAC7B,+CAA+B,CAAA;IAC/B,uCAAuB,CAAA;IACvB,0CAA0B,CAAA;IAC1B,kDAAkC,CAAA;IAClC,mCAAmB,CAAA;AACrB,CAAC,EAPI,YAAY,KAAZ,YAAY,QAOhB;AAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAEvD,MAAM,kBAAkB,GAAiC;IACvD,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,4BAA4B;IACzD,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,gCAAgC;IAC9D,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,+BAA+B;IACzD,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,2BAA2B;IAC7D,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,+BAA+B;IACrE,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,uBAAuB;CAChD,CAAC;AAMF,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACjC,MAAM,gBAAgB,GAAG,CAAC,WAAmB,EAAE,OAAe,EAAE,EAAE,CAAC,GAAG,WAAW,GAAG,mBAAmB,GAAG,OAAO,EAAE,CAAC;AACpH,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAEhF,MAAM,aAAa,GAAG,CAAC,OAA4B,EAAE,EAAE,CAAC,CACtD,WAAmB,EACnB,OAAe,EACf,YAAoB,EACpB,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,eAAe,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;AAEzG,MAAM,OAAO,GAAG,CAAC,KAAwB,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAErF,MAAM,6BAA6B,GAAG,CACpC,oBAAuE,EACvE,MAAc,EACd,EAAE;IACF,MAAM,UAAU,GAAG,IAAA,gBAAM,GAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,IAAA,gBAAM,GAAE,CAAC;IAC5B,OAAO,KAAK,EACV,WAAmB,EACnB,OAAe,EACf,EAAE;QACF,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClE,MAAM,WAAW,GAAG,IAAA,mBAAO,EAAC,UAAU,EAAE,GAAG,WAAW,IAAI,OAAO,MAAM,CAAC,CAAC;QACzE,IAAI,CAAC,IAAA,oBAAU,EAAC,IAAA,mBAAO,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC;YACtC,MAAM,IAAA,gBAAK,EAAC,IAAA,mBAAO,EAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,WAAW,GAAG,IAAA,mBAAO,EAAC,UAAU,EAAE,GAAG,WAAW,IAAI,OAAO,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,IAAA,oBAAU,EAAC,IAAA,mBAAO,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC;YACtC,MAAM,IAAA,gBAAK,EAAC,IAAA,mBAAO,EAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,EAAE,CAAC,2CAA2C,WAAW,IAAI,OAAO,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/H,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,CAAC,KAAK,EAAE,CAAC,oEAAoE,WAAW,IAAI,OAAO,EAAE,CAAC,CAAC;YAC7G,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,iEAAiE;QACjE,MAAM,IAAA,mBAAQ,EAAC,QAAQ,CAAC,IAAI,EAAE,IAAA,2BAAiB,EAAC,WAAW,CAAC,CAAC,CAAC;QAC9D,MAAM,iBAAG,CAAC,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC/C,KAAK,IAAA,aAAE,EAAC,WAAW,CAAC,CAAC;QAErB,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,EAC/B,mBAAmH,EACnH,OAAkC,EAClC,YAAsC,EACtC,MAAc,EACd,EAAE;IACF,MAAM,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACzE,MAAM,YAAY,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC9C,MAAM,sBAAsB,GAAG,6BAA6B,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAC3F,OAAO,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;QAC/D,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACnD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;gBACpE,OAAO;YACT,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAEvE,OAAO,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE;gBACtE,MAAM,CAAC,YAAY,CAAC,GAAG,IAAA,aAAM,EAAC,MAAM,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9G,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO;gBACT,CAAC;gBACD,4EAA4E;gBAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,mBAAQ,EAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/F,OAAO,mBAAmB,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC;AAEF;;;;GAIG;AACI,KAAK,UAAU,0BAA0B,CAC9C,MAAiB,EACjB,OAAkC;IAElC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,gBAAS,CAAC,sBAAsB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzF,MAAM,YAAY,GAAG,IAAI,mBAAY,CAAa,OAAO,CAAC,CAAC;IAC3D,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAClC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,EAAE;YAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YAC/D,uBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,mBAAmB,CACtB,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE;QAC9C,MAAM,aAAa,GAAG,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,KAAK,GAAe;YACxB,GAAG,WAAW;YACd,CAAC,YAAY,CAAC,EAAE,OAAO;SACxB,CAAC;QACF,uBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1E,OAAO,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC,EACD,OAAO,EACP,YAAY,EACZ,MAAM,CACP,CAAC;IAEF,MAAM,CAAC,gBAAgB,CACrB,sBAAsB,EACtB,IAAI,yBAAgB,CAClB,MAAM,CAAC,eAAe,EAAE,WAAW,EAAE,gBAAgB,CAAC,EACtD;QACE,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE;YACR,WAAW,EAAE,CAAC,SAAS,EAAE,EAAE;gBACzB,OAAO,YAAY,CAAC,UAAU,EAAE;qBAC7B,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACvB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;uBAC1B,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CACtF,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;gBAC7B,MAAM,WAAW,GAAG,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC;gBACnD,OAAO,WAAW;oBAChB,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE;yBACxB,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACvB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;2BAC1B,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;2BAC3B,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CACtF,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrD,CAAC,CAAC,EAAE,CAAC;YACT,CAAC;YACD,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;gBAClC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC;gBACzD,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;qBAC/E,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACf,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CACrD,CAAC;YACN,CAAC;SACF;KACF,CACF,EACD;QACE,WAAW,EAAE,6DAA6D;QAC1E,QAAQ,EAAE,kBAAkB;KAC7B,EACD,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QACd,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACnD,MAAM,uBAAuB,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhL,OAAO;YACL,QAAQ,EAAE,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,EAAE;gBAC7E,MAAM,OAAO,GAAG,uBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;gBACjF,MAAM,CAAC,KAAK,EAAE,CAAC,kCAAkC,WAAW,SAAS,OAAO,UAAU,YAAY,KAAK,OAAO,EAAE,CAAC,CAAC;gBAClH,OAAO,CACL;oBACE,GAAG,EAAE,GAAG,CAAC,IAAI;oBACb,yBAAyB;oBACzB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;oBACnD,QAAQ,EAAE,kBAAkB;iBAC7B,CACF,CAAC;YACJ,CAAC,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,2EAA2E;QACxF,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK;SACrB;QACD,WAAW,EAAE;YACX,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;YACjG,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YAC3D,YAAY,EAAE,OAAC,CAAC,IAAI,CAAC,kBAAuD,CAAC;iBAC1E,QAAQ,CAAC,+BAA+B,CAAC;SAC7C;QACD,YAAY,EAAE;YACZ,QAAQ,EAAE,OAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;SAC/E;KACF,EACD,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE;QACzC,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QACvD,MAAM,eAAe,GAAG,uBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,sCAAsC,WAAW,aAAa,OAAO,kBAAkB,YAAY,EAAE,CAAC,CAAC;QACzH,CAAC;QACD,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,yBAAyB;oBACzB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAgB,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtE,EAAE;oBACD,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,gBAAgB,WAAW,IAAI,OAAO,IAAI,YAAY,EAAE;oBAC9D,GAAG;iBACJ,CAAC;YACF,iBAAiB,EAAE;gBACjB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;aACtC;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public_api.d.ts","sourceRoot":"","sources":["../../src/public_api.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public_api.js","sourceRoot":"","sources":["../../src/public_api.ts"],"names":[],"mappings":";;;AAAA,uEAA6C"}
|