@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 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":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './metadata-per-release/index';
2
+ //# sourceMappingURL=public_api.d.ts.map
@@ -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,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./metadata-per-release/index"), exports);
5
+ //# sourceMappingURL=public_api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public_api.js","sourceRoot":"","sources":["../../src/public_api.ts"],"names":[],"mappings":";;;AAAA,uEAA6C"}