@ui5/mcp-server 0.1.0
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/CHANGELOG.md +9 -0
- package/LICENSE +201 -0
- package/LICENSES/Apache-2.0.txt +73 -0
- package/README.md +131 -0
- package/bin/ui5mcp.js +2 -0
- package/lib/Context.d.ts +28 -0
- package/lib/Context.js +71 -0
- package/lib/Context.js.map +1 -0
- package/lib/api.d.ts +3 -0
- package/lib/api.js +3 -0
- package/lib/api.js.map +1 -0
- package/lib/cli.d.ts +1 -0
- package/lib/cli.js +12 -0
- package/lib/cli.js.map +1 -0
- package/lib/registerTools.d.ts +133 -0
- package/lib/registerTools.js +59 -0
- package/lib/registerTools.js.map +1 -0
- package/lib/resources/documentation/getDocumentation.d.ts +18 -0
- package/lib/resources/documentation/getDocumentation.js +70 -0
- package/lib/resources/documentation/getDocumentation.js.map +1 -0
- package/lib/server.d.ts +10 -0
- package/lib/server.js +113 -0
- package/lib/server.js.map +1 -0
- package/lib/tools/create_ui5_app/ODataMetadata.d.ts +55 -0
- package/lib/tools/create_ui5_app/ODataMetadata.js +99 -0
- package/lib/tools/create_ui5_app/ODataMetadata.js.map +1 -0
- package/lib/tools/create_ui5_app/createSuccessMessage.d.ts +13 -0
- package/lib/tools/create_ui5_app/createSuccessMessage.js +45 -0
- package/lib/tools/create_ui5_app/createSuccessMessage.js.map +1 -0
- package/lib/tools/create_ui5_app/create_ui5_app.d.ts +8 -0
- package/lib/tools/create_ui5_app/create_ui5_app.js +273 -0
- package/lib/tools/create_ui5_app/create_ui5_app.js.map +1 -0
- package/lib/tools/create_ui5_app/index.d.ts +3 -0
- package/lib/tools/create_ui5_app/index.js +58 -0
- package/lib/tools/create_ui5_app/index.js.map +1 -0
- package/lib/tools/create_ui5_app/isValidUrl.d.ts +16 -0
- package/lib/tools/create_ui5_app/isValidUrl.js +59 -0
- package/lib/tools/create_ui5_app/isValidUrl.js.map +1 -0
- package/lib/tools/create_ui5_app/schema.d.ts +135 -0
- package/lib/tools/create_ui5_app/schema.js +67 -0
- package/lib/tools/create_ui5_app/schema.js.map +1 -0
- package/lib/tools/create_ui5_app/templateProcessor.d.ts +67 -0
- package/lib/tools/create_ui5_app/templateProcessor.js +59 -0
- package/lib/tools/create_ui5_app/templateProcessor.js.map +1 -0
- package/lib/tools/create_ui5_app/ui5Version.d.ts +2 -0
- package/lib/tools/create_ui5_app/ui5Version.js +6 -0
- package/lib/tools/create_ui5_app/ui5Version.js.map +1 -0
- package/lib/tools/get_api_reference/createUriForSymbol.d.ts +2 -0
- package/lib/tools/get_api_reference/createUriForSymbol.js +49 -0
- package/lib/tools/get_api_reference/createUriForSymbol.js.map +1 -0
- package/lib/tools/get_api_reference/getApiReference.d.ts +10 -0
- package/lib/tools/get_api_reference/getApiReference.js +51 -0
- package/lib/tools/get_api_reference/getApiReference.js.map +1 -0
- package/lib/tools/get_api_reference/index.d.ts +3 -0
- package/lib/tools/get_api_reference/index.js +38 -0
- package/lib/tools/get_api_reference/index.js.map +1 -0
- package/lib/tools/get_api_reference/lib/ApiReferenceProvider.d.ts +85 -0
- package/lib/tools/get_api_reference/lib/ApiReferenceProvider.js +452 -0
- package/lib/tools/get_api_reference/lib/ApiReferenceProvider.js.map +1 -0
- package/lib/tools/get_api_reference/lib/apiReferenceResources.d.ts +18 -0
- package/lib/tools/get_api_reference/lib/apiReferenceResources.js +138 -0
- package/lib/tools/get_api_reference/lib/apiReferenceResources.js.map +1 -0
- package/lib/tools/get_api_reference/lib/formatSymbol.d.ts +24 -0
- package/lib/tools/get_api_reference/lib/formatSymbol.js +109 -0
- package/lib/tools/get_api_reference/lib/formatSymbol.js.map +1 -0
- package/lib/tools/get_api_reference/schema.d.ts +16 -0
- package/lib/tools/get_api_reference/schema.js +12 -0
- package/lib/tools/get_api_reference/schema.js.map +1 -0
- package/lib/tools/get_guidelines/guidelines.d.ts +1 -0
- package/lib/tools/get_guidelines/guidelines.js +6 -0
- package/lib/tools/get_guidelines/guidelines.js.map +1 -0
- package/lib/tools/get_guidelines/index.d.ts +3 -0
- package/lib/tools/get_guidelines/index.js +30 -0
- package/lib/tools/get_guidelines/index.js.map +1 -0
- package/lib/tools/get_project_info/getProjectInfo.d.ts +2 -0
- package/lib/tools/get_project_info/getProjectInfo.js +205 -0
- package/lib/tools/get_project_info/getProjectInfo.js.map +1 -0
- package/lib/tools/get_project_info/index.d.ts +3 -0
- package/lib/tools/get_project_info/index.js +28 -0
- package/lib/tools/get_project_info/index.js.map +1 -0
- package/lib/tools/get_project_info/schema.d.ts +87 -0
- package/lib/tools/get_project_info/schema.js +28 -0
- package/lib/tools/get_project_info/schema.js.map +1 -0
- package/lib/tools/get_version_info/getVersionInfo.d.ts +8 -0
- package/lib/tools/get_version_info/getVersionInfo.js +41 -0
- package/lib/tools/get_version_info/getVersionInfo.js.map +1 -0
- package/lib/tools/get_version_info/index.d.ts +9 -0
- package/lib/tools/get_version_info/index.js +33 -0
- package/lib/tools/get_version_info/index.js.map +1 -0
- package/lib/tools/get_version_info/schema.d.ts +66 -0
- package/lib/tools/get_version_info/schema.js +16 -0
- package/lib/tools/get_version_info/schema.js.map +1 -0
- package/lib/tools/get_version_info/types.d.ts +5 -0
- package/lib/tools/get_version_info/types.js +2 -0
- package/lib/tools/get_version_info/types.js.map +1 -0
- package/lib/tools/run_ui5_linter/index.d.ts +3 -0
- package/lib/tools/run_ui5_linter/index.js +86 -0
- package/lib/tools/run_ui5_linter/index.js.map +1 -0
- package/lib/tools/run_ui5_linter/migrationGuides.d.ts +6 -0
- package/lib/tools/run_ui5_linter/migrationGuides.js +88 -0
- package/lib/tools/run_ui5_linter/migrationGuides.js.map +1 -0
- package/lib/tools/run_ui5_linter/resultContext.d.ts +3 -0
- package/lib/tools/run_ui5_linter/resultContext.js +236 -0
- package/lib/tools/run_ui5_linter/resultContext.js.map +1 -0
- package/lib/tools/run_ui5_linter/runUi5Linter.d.ts +2 -0
- package/lib/tools/run_ui5_linter/runUi5Linter.js +72 -0
- package/lib/tools/run_ui5_linter/runUi5Linter.js.map +1 -0
- package/lib/tools/run_ui5_linter/schema.d.ts +340 -0
- package/lib/tools/run_ui5_linter/schema.js +55 -0
- package/lib/tools/run_ui5_linter/schema.js.map +1 -0
- package/lib/utils/cdnHelper.d.ts +9 -0
- package/lib/utils/cdnHelper.js +50 -0
- package/lib/utils/cdnHelper.js.map +1 -0
- package/lib/utils/dataStorageHelper.d.ts +2 -0
- package/lib/utils/dataStorageHelper.js +65 -0
- package/lib/utils/dataStorageHelper.js.map +1 -0
- package/lib/utils/ui5Framework.d.ts +4 -0
- package/lib/utils/ui5Framework.js +6 -0
- package/lib/utils/ui5Framework.js.map +1 -0
- package/lib/utils.d.ts +10 -0
- package/lib/utils.js +87 -0
- package/lib/utils.js.map +1 -0
- package/npm-shrinkwrap.json +7880 -0
- package/package.json +121 -0
- package/resources/docs/1.136.7/00737d6c1b864dc3ab72ef56611491c4.md +155 -0
- package/resources/docs/1.136.7/0187ea5e2eff4166b0453b9dcc8fc64f.md +164 -0
- package/resources/docs/1.136.7/032be2cb2e1d4115af20862673bedcdb.md +12 -0
- package/resources/docs/1.136.7/28fcd55b04654977b63dacbee0552712.md +317 -0
- package/resources/docs/1.136.7/676b636446c94eada183b1218a824717.md +135 -0
- package/resources/docs/1.136.7/a87ca843bcee469f82a9072927a7dcdb.md +355 -0
- package/resources/docs/1.136.7/b0fb4de7364f4bcbb053a99aa645affe.md +126 -0
- package/resources/docs/1.136.7/fe1a6dba940e479fb7c3bc753f92b28c.md +670 -0
- package/resources/docs/1.136.7/index.json +58 -0
- package/resources/guidelines.md +104 -0
- package/resources/migrationGuides/deprecated-controller-factory.md +116 -0
- package/resources/migrationGuides/deprecated-getLibraryResourceBundle.md +62 -0
- package/resources/migrationGuides/deprecated-jquery-sap-require.md +141 -0
- package/resources/migrationGuides/deprecated-messagePage.md +162 -0
- package/resources/migrationGuides/deprecated-table-table-property.md +154 -0
- package/resources/template-js/LICENSE +201 -0
- package/resources/template-js/README.md +87 -0
- package/resources/template-js/_.editorconfig +22 -0
- package/resources/template-js/_.gitignore +17 -0
- package/resources/template-js/eslint.config.js +68 -0
- package/resources/template-js/karma-ci-cov.conf.js +20 -0
- package/resources/template-js/karma-ci.conf.js +9 -0
- package/resources/template-js/karma.conf.js +9 -0
- package/resources/template-js/package.json +34 -0
- package/resources/template-js/ui5-dist.yaml +18 -0
- package/resources/template-js/ui5.yaml +24 -0
- package/resources/template-js/webapp/Component.js +41 -0
- package/resources/template-js/webapp/controller/App.controller.js +10 -0
- package/resources/template-js/webapp/controller/BaseController.js +67 -0
- package/resources/template-js/webapp/controller/Main.controller.js +14 -0
- package/resources/template-js/webapp/i18n/i18n.properties +3 -0
- package/resources/template-js/webapp/i18n/i18n_en.properties +3 -0
- package/resources/template-js/webapp/index-cdn.html +34 -0
- package/resources/template-js/webapp/index.html +34 -0
- package/resources/template-js/webapp/manifest.json +103 -0
- package/resources/template-js/webapp/model/formatter.js +9 -0
- package/resources/template-js/webapp/model/models.js +11 -0
- package/resources/template-js/webapp/test/Test.qunit.html +16 -0
- package/resources/template-js/webapp/test/integration/HelloJourney.js +85 -0
- package/resources/template-js/webapp/test/integration/opaTests.qunit.js +1 -0
- package/resources/template-js/webapp/test/integration/pages/Main.js +112 -0
- package/resources/template-js/webapp/test/testsuite.qunit.html +18 -0
- package/resources/template-js/webapp/test/testsuite.qunit.js +37 -0
- package/resources/template-js/webapp/test/unit/controller/Main.qunit.js +11 -0
- package/resources/template-js/webapp/test/unit/unitTests.qunit.js +1 -0
- package/resources/template-js/webapp/test-lt1_124/integration/HelloJourney.js +85 -0
- package/resources/template-js/webapp/test-lt1_124/integration/opaTests.qunit.html +31 -0
- package/resources/template-js/webapp/test-lt1_124/integration/opaTests.qunit.js +11 -0
- package/resources/template-js/webapp/test-lt1_124/integration/pages/Main.js +112 -0
- package/resources/template-js/webapp/test-lt1_124/testsuite.qunit.html +13 -0
- package/resources/template-js/webapp/test-lt1_124/testsuite.qunit.js +9 -0
- package/resources/template-js/webapp/test-lt1_124/unit/controller/Main.qunit.js +11 -0
- package/resources/template-js/webapp/test-lt1_124/unit/unitTests.qunit.html +30 -0
- package/resources/template-js/webapp/test-lt1_124/unit/unitTests.qunit.js +12 -0
- package/resources/template-js/webapp/view/App.view.xml +9 -0
- package/resources/template-js/webapp/view/Main.view.xml +90 -0
- package/resources/template-ts/LICENSE +201 -0
- package/resources/template-ts/README.md +101 -0
- package/resources/template-ts/_.editorconfig +23 -0
- package/resources/template-ts/_.gitignore +18 -0
- package/resources/template-ts/_.nycrc.json +7 -0
- package/resources/template-ts/_tsconfig.json +21 -0
- package/resources/template-ts/eslint.config.mjs +27 -0
- package/resources/template-ts/package.json +40 -0
- package/resources/template-ts/ui5-coverage.yaml +40 -0
- package/resources/template-ts/ui5-dist.yaml +18 -0
- package/resources/template-ts/ui5.yaml +27 -0
- package/resources/template-ts/webapp/Component.ts +49 -0
- package/resources/template-ts/webapp/controller/App.controller.ts +11 -0
- package/resources/template-ts/webapp/controller/BaseController.ts +83 -0
- package/resources/template-ts/webapp/controller/Main.controller.ts +19 -0
- package/resources/template-ts/webapp/i18n/i18n.properties +3 -0
- package/resources/template-ts/webapp/i18n/i18n_en.properties +3 -0
- package/resources/template-ts/webapp/index-cdn.html +35 -0
- package/resources/template-ts/webapp/index.html +35 -0
- package/resources/template-ts/webapp/manifest.json +105 -0
- package/resources/template-ts/webapp/model/formatter.ts +5 -0
- package/resources/template-ts/webapp/model/models.ts +15 -0
- package/resources/template-ts/webapp/test/Test.qunit.html +16 -0
- package/resources/template-ts/webapp/test/integration/HelloJourney.ts +84 -0
- package/resources/template-ts/webapp/test/integration/opaTests.qunit.ts +2 -0
- package/resources/template-ts/webapp/test/integration/pages/MainPage.ts +112 -0
- package/resources/template-ts/webapp/test/testsuite.qunit.html +18 -0
- package/resources/template-ts/webapp/test/testsuite.qunit.ts +33 -0
- package/resources/template-ts/webapp/test/unit/controller/Main.qunit.ts +8 -0
- package/resources/template-ts/webapp/test/unit/unitTests.qunit.ts +2 -0
- package/resources/template-ts/webapp/test-lt1_124/integration/HelloJourney.ts +86 -0
- package/resources/template-ts/webapp/test-lt1_124/integration/opaTests.qunit.html +34 -0
- package/resources/template-ts/webapp/test-lt1_124/integration/opaTests.qunit.ts +8 -0
- package/resources/template-ts/webapp/test-lt1_124/integration/pages/MainPage.ts +112 -0
- package/resources/template-ts/webapp/test-lt1_124/testsuite.qunit.html +13 -0
- package/resources/template-ts/webapp/test-lt1_124/testsuite.qunit.ts +9 -0
- package/resources/template-ts/webapp/test-lt1_124/unit/controller/Main.qunit.ts +8 -0
- package/resources/template-ts/webapp/test-lt1_124/unit/unitTests.qunit.html +37 -0
- package/resources/template-ts/webapp/test-lt1_124/unit/unitTests.qunit.ts +8 -0
- package/resources/template-ts/webapp/view/App.view.xml +9 -0
- package/resources/template-ts/webapp/view/Main.view.xml +90 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ConcreteSymbol } from "./api-json.js";
|
|
2
|
+
import { ConcreteSymbolField, SymbolKind } from "./ApiReferenceProvider.js";
|
|
3
|
+
export interface FormattedSymbol {
|
|
4
|
+
kind: SymbolKind;
|
|
5
|
+
name: string;
|
|
6
|
+
library: string;
|
|
7
|
+
module?: string;
|
|
8
|
+
export?: string;
|
|
9
|
+
[k: string]: unknown;
|
|
10
|
+
}
|
|
11
|
+
export interface FormattedSymbolSummary {
|
|
12
|
+
_summaryInfo: string;
|
|
13
|
+
kind: SymbolKind;
|
|
14
|
+
name: string;
|
|
15
|
+
library: string;
|
|
16
|
+
module?: string;
|
|
17
|
+
export?: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
deprecatedText?: string;
|
|
20
|
+
experimentalText?: string;
|
|
21
|
+
extends?: string | string[];
|
|
22
|
+
}
|
|
23
|
+
export declare function formatSymbol(inputSymbol: ConcreteSymbol | ConcreteSymbolField, libraryName: string, moduleName: string | undefined): FormattedSymbol;
|
|
24
|
+
export declare function summarizeSymbol(inputSymbol: ConcreteSymbol, libraryName: string, moduleName: string | undefined): FormattedSymbolSummary;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
const REMOVE_ATTRIBUTES = [
|
|
2
|
+
"basename",
|
|
3
|
+
"resource",
|
|
4
|
+
"visibility",
|
|
5
|
+
];
|
|
6
|
+
const SUMMARY_ATTRIBUTES = [
|
|
7
|
+
"kind",
|
|
8
|
+
"name",
|
|
9
|
+
"module",
|
|
10
|
+
"library",
|
|
11
|
+
"export",
|
|
12
|
+
"description",
|
|
13
|
+
"extends",
|
|
14
|
+
];
|
|
15
|
+
export function formatSymbol(inputSymbol, libraryName, moduleName) {
|
|
16
|
+
const symbol = JSON.parse(JSON.stringify(inputSymbol));
|
|
17
|
+
deleteEmptyAttributes(symbol);
|
|
18
|
+
deleteRestricted(symbol);
|
|
19
|
+
removeAttributes(symbol, REMOVE_ATTRIBUTES);
|
|
20
|
+
if (moduleName && !("module" in inputSymbol)) {
|
|
21
|
+
// Do not overwrite existing module names, but add them to symbols that do not have one (like properties)
|
|
22
|
+
// Some symbols like some namespaces might not have a module (e.g. sap.ui.model.odata)
|
|
23
|
+
symbol.module = moduleName;
|
|
24
|
+
}
|
|
25
|
+
symbol.library = libraryName;
|
|
26
|
+
return symbol;
|
|
27
|
+
}
|
|
28
|
+
export function summarizeSymbol(inputSymbol, libraryName, moduleName) {
|
|
29
|
+
const symbol = formatSymbol(inputSymbol, libraryName, moduleName);
|
|
30
|
+
if (symbol.deprecated) {
|
|
31
|
+
symbol.deprecatedText = symbol.deprecated.text;
|
|
32
|
+
}
|
|
33
|
+
if (symbol.experimental) {
|
|
34
|
+
symbol.experimentalText = symbol.experimental.text;
|
|
35
|
+
}
|
|
36
|
+
keepAttributes(symbol, SUMMARY_ATTRIBUTES);
|
|
37
|
+
symbol._summaryInfo = `Note: This object is a shortened version of the full API object`;
|
|
38
|
+
return symbol;
|
|
39
|
+
}
|
|
40
|
+
/* eslint-disable
|
|
41
|
+
@typescript-eslint/no-unsafe-assignment,
|
|
42
|
+
@typescript-eslint/no-explicit-any,
|
|
43
|
+
@typescript-eslint/no-unsafe-member-access,
|
|
44
|
+
@typescript-eslint/no-unsafe-argument */
|
|
45
|
+
function deleteEmptyAttributes(symbol) {
|
|
46
|
+
for (const key of Object.keys(symbol)) {
|
|
47
|
+
const value = symbol[key];
|
|
48
|
+
if (value === null || value === undefined || value === "") {
|
|
49
|
+
delete symbol[key];
|
|
50
|
+
}
|
|
51
|
+
else if (Array.isArray(value) && value.length === 0) {
|
|
52
|
+
delete symbol[key];
|
|
53
|
+
}
|
|
54
|
+
else if (typeof value === "object") {
|
|
55
|
+
deleteEmptyAttributes(value);
|
|
56
|
+
// If the object is now empty, remove it
|
|
57
|
+
if (Object.keys(value).length === 0) {
|
|
58
|
+
delete symbol[key];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Recursively delete all object that have a key "visibility" with a value of either "private" or "restricted"
|
|
65
|
+
* Also remove the "visibility" key from all other objects
|
|
66
|
+
*/
|
|
67
|
+
function deleteRestricted(symbol) {
|
|
68
|
+
for (const [key, value] of Object.entries(symbol)) {
|
|
69
|
+
if (Array.isArray(value)) {
|
|
70
|
+
// If the value is an array, filter out all entries that are private or restricted
|
|
71
|
+
const filtered = value.filter((entry) => {
|
|
72
|
+
if (typeof entry === "object" && entry !== null) {
|
|
73
|
+
return entry.visibility !== "private" && entry.visibility !== "restricted";
|
|
74
|
+
}
|
|
75
|
+
return true;
|
|
76
|
+
});
|
|
77
|
+
// Recursively delete restricted entries in the remaining entries
|
|
78
|
+
for (const entry of filtered) {
|
|
79
|
+
if (typeof entry === "object" && entry !== null) {
|
|
80
|
+
deleteRestricted(entry);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
symbol[key] = filtered;
|
|
84
|
+
}
|
|
85
|
+
else if (typeof value === "object" && value !== null && "visibility" in value) {
|
|
86
|
+
if (value.visibility === "private" || value.visibility === "restricted") {
|
|
87
|
+
delete symbol[key];
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function removeAttributes(symbol, attrToRemove) {
|
|
93
|
+
for (const attr of attrToRemove) {
|
|
94
|
+
delete symbol[attr];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function keepAttributes(symbol, attrsToKeep) {
|
|
98
|
+
for (const key of Object.keys(symbol)) {
|
|
99
|
+
if (!attrsToKeep.includes(key)) {
|
|
100
|
+
delete symbol[key];
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/* eslint-enable
|
|
105
|
+
@typescript-eslint/no-unsafe-assignment,
|
|
106
|
+
@typescript-eslint/no-explicit-any,
|
|
107
|
+
@typescript-eslint/no-unsafe-member-access,
|
|
108
|
+
@typescript-eslint/no-unsafe-argument */
|
|
109
|
+
//# sourceMappingURL=formatSymbol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatSymbol.js","sourceRoot":"","sources":["../../../../src/tools/get_api_reference/lib/formatSymbol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const inputSchema: {
|
|
3
|
+
projectDir: z.ZodString;
|
|
4
|
+
query: z.ZodString;
|
|
5
|
+
};
|
|
6
|
+
export declare const inputSchemaObject: z.ZodObject<{
|
|
7
|
+
projectDir: z.ZodString;
|
|
8
|
+
query: z.ZodString;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
query: string;
|
|
11
|
+
projectDir: string;
|
|
12
|
+
}, {
|
|
13
|
+
query: string;
|
|
14
|
+
projectDir: string;
|
|
15
|
+
}>;
|
|
16
|
+
export type GetApiReferenceParams = z.infer<typeof inputSchemaObject>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const inputSchema = {
|
|
3
|
+
projectDir: z.string().describe("The root directory of the UI5 project, containing the 'package.json' and 'ui5.yaml' files. " +
|
|
4
|
+
"This is used to determine the UI5 framework version and libraries used in the project. "),
|
|
5
|
+
query: z.string()
|
|
6
|
+
.regex(/^[^<>"'()]+$/, { message: `Characters < > ( ) " ' are not allowed.` })
|
|
7
|
+
.describe("Name of the UI5 module or symbol using either dot or slash notation. " +
|
|
8
|
+
"Examples: 'sap.m.Button', 'sap/ui/core/Core'. Individual symbols can be requested as well, e.g. " +
|
|
9
|
+
"'sap.m.Button#text', 'sap.ui.core.Core#init'"),
|
|
10
|
+
};
|
|
11
|
+
export const inputSchemaObject = z.object(inputSchema);
|
|
12
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/tools/get_api_reference/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,MAAM,CAAC,MAAM,WAAW,GAAG;IAC1B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC9B,6FAA6F;QAC7F,yFAAyF,CACzF;IACD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;SACf,KAAK,CAAC,cAAc,EAAE,EAAC,OAAO,EAAE,yCAAyC,EAAC,CAAC;SAC3E,QAAQ,CACR,uEAAuE;QACvE,kGAAkG;QAClG,8CAA8C,CAC9C;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getGuidelines(): Promise<string>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
const guidelinesFileUrl = new URL("../../../resources/guidelines.md", import.meta.url);
|
|
3
|
+
export async function getGuidelines() {
|
|
4
|
+
return readFile(guidelinesFileUrl, { encoding: "utf-8" });
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=guidelines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guidelines.js","sourceRoot":"","sources":["../../../src/tools/get_guidelines/guidelines.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAE1C,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEvF,MAAM,CAAC,KAAK,UAAU,aAAa;IAClC,OAAO,QAAQ,CAAC,iBAAiB,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { getGuidelines } from "./guidelines.js";
|
|
2
|
+
import { getLogger } from "@ui5/logger";
|
|
3
|
+
const log = getLogger("tools:get_guidelines");
|
|
4
|
+
export default function registerTool(registerTool, _context) {
|
|
5
|
+
registerTool("get_guidelines", {
|
|
6
|
+
description: "This tool MUST be called once to retrieve UI5 guidelines " +
|
|
7
|
+
"before working on any UI5 (SAPUI5/OpenUI5) related task or project " +
|
|
8
|
+
"or creating a UI5 project. " +
|
|
9
|
+
"The guidelines provided by this tool MUST be followed to ensure " +
|
|
10
|
+
"best practices and avoid common pitfalls in UI5 development.",
|
|
11
|
+
annotations: {
|
|
12
|
+
title: "Get UI5 Guidelines",
|
|
13
|
+
readOnlyHint: true,
|
|
14
|
+
idempotentHint: true,
|
|
15
|
+
openWorldHint: false,
|
|
16
|
+
},
|
|
17
|
+
}, async () => {
|
|
18
|
+
log.info("Retrieving UI5 guidelines...");
|
|
19
|
+
const guidelines = await getGuidelines();
|
|
20
|
+
return {
|
|
21
|
+
content: [
|
|
22
|
+
{
|
|
23
|
+
type: "text",
|
|
24
|
+
text: guidelines,
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/get_guidelines/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAItC,MAAM,GAAG,GAAG,SAAS,CAAC,sBAAsB,CAAC,CAAC;AAE9C,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,YAA0B,EAAE,QAAiB;IACjF,YAAY,CAAC,gBAAgB,EAAE;QAC9B,WAAW,EAAE,2DAA2D;YACvE,qEAAqE;YACrE,6BAA6B;YAC7B,kEAAkE;YAClE,8DAA8D;QAC/D,WAAW,EAAE;YACZ,KAAK,EAAE,oBAAoB;YAC3B,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACpB;KACD,EAAE,KAAK,IAAI,EAAE;QACb,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,MAAM,aAAa,EAAE,CAAC;QACzC,OAAO;YACN,OAAO,EAAE;gBACR;oBACC,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU;iBAChB;aACD;SACD,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { graphFromObject } from "@ui5/project/graph";
|
|
3
|
+
import { dirExists, fileExists, InvalidInputError } from "../../utils.js";
|
|
4
|
+
import getVersionInfo from "../get_version_info/getVersionInfo.js";
|
|
5
|
+
import semver from "semver";
|
|
6
|
+
import { isUi5Framework } from "../../utils/ui5Framework.js";
|
|
7
|
+
export default async function getProjectInfo(projectDir, includeVersionInfo = false) {
|
|
8
|
+
if (!await dirExists(projectDir)) {
|
|
9
|
+
// If a file path was provided, use the directory of the file
|
|
10
|
+
projectDir = path.dirname(projectDir);
|
|
11
|
+
}
|
|
12
|
+
let graph;
|
|
13
|
+
try {
|
|
14
|
+
// First attempt to crate project with the provided path
|
|
15
|
+
graph = await getProjectGraph(projectDir);
|
|
16
|
+
}
|
|
17
|
+
catch (initialError) {
|
|
18
|
+
// If that fails, try to search for the correct project root path
|
|
19
|
+
const projectRootDir = await findProjectRoot(projectDir);
|
|
20
|
+
try {
|
|
21
|
+
graph = await getProjectGraph(projectRootDir);
|
|
22
|
+
}
|
|
23
|
+
catch (_) {
|
|
24
|
+
// If that fails as well, throw the initial error
|
|
25
|
+
throw initialError;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const project = graph.getRoot();
|
|
29
|
+
const res = {
|
|
30
|
+
projectDir: project.getRootPath(),
|
|
31
|
+
projectName: project.getName(),
|
|
32
|
+
projectType: project.getType(),
|
|
33
|
+
frameworkName: project.getFrameworkName(),
|
|
34
|
+
frameworkVersion: project.getFrameworkVersion(),
|
|
35
|
+
frameworkLibraries: project.getFrameworkDependencies().map((lib) => lib.name),
|
|
36
|
+
};
|
|
37
|
+
if (includeVersionInfo) {
|
|
38
|
+
res.versionInfo = await getVersionInfoForProject(project);
|
|
39
|
+
}
|
|
40
|
+
return res;
|
|
41
|
+
}
|
|
42
|
+
const KNOWN_SRC_DIRS = [
|
|
43
|
+
"webapp", "src",
|
|
44
|
+
];
|
|
45
|
+
async function findProjectRoot(dir) {
|
|
46
|
+
let currentDir = dir;
|
|
47
|
+
let lastDirName;
|
|
48
|
+
while (currentDir !== path.parse(currentDir).root) {
|
|
49
|
+
const ui5YamlPath = path.join(currentDir, "ui5.yaml");
|
|
50
|
+
const packageJsonPath = path.join(currentDir, "package.json");
|
|
51
|
+
if (await fileExists(ui5YamlPath) || await fileExists(packageJsonPath)) {
|
|
52
|
+
return currentDir;
|
|
53
|
+
}
|
|
54
|
+
if (lastDirName && KNOWN_SRC_DIRS.includes(lastDirName)) {
|
|
55
|
+
// If the current directory contains a known source directory,
|
|
56
|
+
// we assume it is the root directory of a UI5 project
|
|
57
|
+
return currentDir;
|
|
58
|
+
}
|
|
59
|
+
lastDirName = path.basename(currentDir);
|
|
60
|
+
currentDir = path.dirname(currentDir);
|
|
61
|
+
}
|
|
62
|
+
throw new InvalidInputError(`Unable to locate a UI5 project in directory ${dir} or any of its parents`);
|
|
63
|
+
}
|
|
64
|
+
async function getProjectGraph(rootDir) {
|
|
65
|
+
let rootConfigPath, rootConfiguration;
|
|
66
|
+
// Prefer ui5-local.yaml over ui5.yaml since that is usually where a framework version is configured
|
|
67
|
+
const ui5YamlPaths = ["ui5-local.yaml", "ui5.yaml"];
|
|
68
|
+
// Check if ui5.yaml or ui5-local.yaml exists in the root directory
|
|
69
|
+
for (const yamlPath of ui5YamlPaths) {
|
|
70
|
+
const fullPath = path.join(rootDir, yamlPath);
|
|
71
|
+
if (await fileExists(fullPath)) {
|
|
72
|
+
rootConfigPath = fullPath;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (!rootConfigPath) {
|
|
77
|
+
// Could not find a ui5.yaml file
|
|
78
|
+
// => Attempt to create a "virtual" project depending on the directory structure
|
|
79
|
+
const dirChecks = await Promise.all([
|
|
80
|
+
dirExists(path.join(rootDir, "webapp")),
|
|
81
|
+
dirExists(path.join(rootDir, "src", "main", "webapp")),
|
|
82
|
+
dirExists(path.join(rootDir, "src", "main", "jslib")),
|
|
83
|
+
dirExists(path.join(rootDir, "src", "main", "js")),
|
|
84
|
+
dirExists(path.join(rootDir, "src", "main", "uilib")),
|
|
85
|
+
dirExists(path.join(rootDir, "src")),
|
|
86
|
+
dirExists(path.join(rootDir, "WebContent")),
|
|
87
|
+
]);
|
|
88
|
+
if (dirChecks[0]) {
|
|
89
|
+
// Common app with webapp folder
|
|
90
|
+
rootConfiguration = createProjectConfig("application", "webapp");
|
|
91
|
+
}
|
|
92
|
+
else if (dirChecks[1]) {
|
|
93
|
+
// Legacy app with src/main/webapp folder
|
|
94
|
+
rootConfiguration = createProjectConfig("application", "src/main/webapp");
|
|
95
|
+
}
|
|
96
|
+
else if (dirChecks[2]) {
|
|
97
|
+
// Library with src/main/jslib folder
|
|
98
|
+
rootConfiguration = createProjectConfig("library", "src/main/jslib", "src/test/jslib");
|
|
99
|
+
}
|
|
100
|
+
else if (dirChecks[3]) {
|
|
101
|
+
// Library with src/main/js folder
|
|
102
|
+
rootConfiguration = createProjectConfig("library", "src/main/js", "src/test/js");
|
|
103
|
+
}
|
|
104
|
+
else if (dirChecks[4]) {
|
|
105
|
+
// Library with src/main/uilib folder
|
|
106
|
+
rootConfiguration = createProjectConfig("library", "src/main/uilib", "src/test/uilib");
|
|
107
|
+
}
|
|
108
|
+
else if (dirChecks[5]) {
|
|
109
|
+
// Library with src folder
|
|
110
|
+
rootConfiguration = createProjectConfig("library", "src", "test");
|
|
111
|
+
}
|
|
112
|
+
else if (dirChecks[6]) {
|
|
113
|
+
// Legacy app with WebContent folder
|
|
114
|
+
rootConfiguration = createProjectConfig("application", "WebContent");
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (!rootConfigPath && !rootConfiguration) {
|
|
118
|
+
throw new InvalidInputError(`Unable to find a UI5 project at ${rootDir}. ` +
|
|
119
|
+
`Make sure the provided path is correct and contains a valid UI5 project`);
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
return await graphFromObject({
|
|
123
|
+
dependencyTree: {
|
|
124
|
+
id: "ui5-project",
|
|
125
|
+
version: "1.0.0",
|
|
126
|
+
path: rootDir,
|
|
127
|
+
dependencies: [],
|
|
128
|
+
},
|
|
129
|
+
rootConfigPath,
|
|
130
|
+
rootConfiguration,
|
|
131
|
+
resolveFrameworkDependencies: false,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
throw new InvalidInputError(`Unable to use the UI5 project located at ${rootDir}. ` +
|
|
136
|
+
`Make sure the provided path is correct and contains a valid UI5 project. ` +
|
|
137
|
+
`Error: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
function createProjectConfig(projectType, projectSrcPath, projectTestPath) {
|
|
141
|
+
let resourcesConfig = {
|
|
142
|
+
configuration: {
|
|
143
|
+
paths: {},
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
if (projectType === "application") {
|
|
147
|
+
resourcesConfig.configuration.paths.webapp = projectSrcPath ?? "webapp";
|
|
148
|
+
}
|
|
149
|
+
else if (projectType === "library") {
|
|
150
|
+
resourcesConfig.configuration.paths.src = projectSrcPath ?? "src";
|
|
151
|
+
resourcesConfig.configuration.paths.test = projectTestPath ?? "test";
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
// Do not set a resources configuration for other project types
|
|
155
|
+
resourcesConfig = undefined;
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
specVersion: "4.0",
|
|
159
|
+
type: projectType,
|
|
160
|
+
metadata: {
|
|
161
|
+
name: "ui5-project-without-ui5-yaml",
|
|
162
|
+
},
|
|
163
|
+
resources: resourcesConfig,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
async function getVersionInfoForProject(project) {
|
|
167
|
+
const frameworkName = project.getFrameworkName();
|
|
168
|
+
const frameworkVersion = project.getFrameworkVersion();
|
|
169
|
+
if (!frameworkVersion || !isUi5Framework(frameworkName)) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const { versions } = await getVersionInfo({
|
|
173
|
+
frameworkName,
|
|
174
|
+
});
|
|
175
|
+
const latestVersion = versions.latest.version;
|
|
176
|
+
const allLtsVersions = Object.values(versions).filter((v) => v.lts).map((v) => v.version);
|
|
177
|
+
const latestLtsVersion = semver.maxSatisfying(allLtsVersions, "*") ?? undefined;
|
|
178
|
+
for (const versionEntry of Object.values(versions)) {
|
|
179
|
+
if (versionEntry.version === frameworkVersion) {
|
|
180
|
+
return {
|
|
181
|
+
supportStatus: versionEntry.support,
|
|
182
|
+
isLts: versionEntry.lts,
|
|
183
|
+
latestVersion,
|
|
184
|
+
latestLtsVersion,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// Get major/minor for version
|
|
189
|
+
const key = `${semver.major(frameworkVersion)}.${semver.minor(frameworkVersion)}`;
|
|
190
|
+
if (versions[key]) {
|
|
191
|
+
const versionEntry = versions[key];
|
|
192
|
+
return {
|
|
193
|
+
supportStatus: `Outdated patch version. Upgrade to '${versionEntry.version}'.`,
|
|
194
|
+
isLts: versionEntry.lts,
|
|
195
|
+
latestVersion,
|
|
196
|
+
latestLtsVersion,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
supportStatus: "Out of Maintenance",
|
|
201
|
+
latestVersion,
|
|
202
|
+
latestLtsVersion,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=getProjectInfo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getProjectInfo.js","sourceRoot":"","sources":["../../../src/tools/get_project_info/getProjectInfo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { inputSchema, outputSchema } from "./schema.js";
|
|
2
|
+
import getProjectInfo from "./getProjectInfo.js";
|
|
3
|
+
import { getLogger } from "@ui5/logger";
|
|
4
|
+
const log = getLogger("tools:get_project_info");
|
|
5
|
+
export default function registerTool(registerTool, context) {
|
|
6
|
+
registerTool("get_project_info", {
|
|
7
|
+
description: "Get general information about a local UI5 project.",
|
|
8
|
+
annotations: {
|
|
9
|
+
title: "UI5 Project Info",
|
|
10
|
+
readOnlyHint: true,
|
|
11
|
+
idempotentHint: true,
|
|
12
|
+
},
|
|
13
|
+
inputSchema,
|
|
14
|
+
outputSchema,
|
|
15
|
+
}, async ({ projectDir }) => {
|
|
16
|
+
log.info(`Retrieving project info for project at '${projectDir}'`);
|
|
17
|
+
const resolvedProjectDir = await context.normalizePath(projectDir);
|
|
18
|
+
const info = await getProjectInfo(resolvedProjectDir, true);
|
|
19
|
+
return {
|
|
20
|
+
content: [{
|
|
21
|
+
type: "text",
|
|
22
|
+
text: JSON.stringify(info, null, 2),
|
|
23
|
+
}],
|
|
24
|
+
structuredContent: info,
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/get_project_info/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AACtD,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAItC,MAAM,GAAG,GAAG,SAAS,CAAC,wBAAwB,CAAC,CAAC;AAEhD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,YAA0B,EAAE,OAAgB;IAChF,YAAY,CAAC,kBAAkB,EAAE;QAChC,WAAW,EAAE,oDAAoD;QACjE,WAAW,EAAE;YACZ,KAAK,EAAE,kBAAkB;YACzB,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;SACpB;QACD,WAAW;QACX,YAAY;KACZ,EAAE,KAAK,EAAE,EAAC,UAAU,EAAC,EAAE,EAAE;QACzB,GAAG,CAAC,IAAI,CAAC,2CAA2C,UAAU,GAAG,CAAC,CAAC;QACnE,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC5D,OAAO;YACN,OAAO,EAAE,CAAC;oBACT,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBACnC,CAAC;YACF,iBAAiB,EAAE,IAAI;SACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const inputSchema: {
|
|
3
|
+
projectDir: z.ZodString;
|
|
4
|
+
};
|
|
5
|
+
export declare const inputSchemaObject: z.ZodObject<{
|
|
6
|
+
projectDir: z.ZodString;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
projectDir: string;
|
|
9
|
+
}, {
|
|
10
|
+
projectDir: string;
|
|
11
|
+
}>;
|
|
12
|
+
export declare const outputSchema: {
|
|
13
|
+
projectDir: z.ZodString;
|
|
14
|
+
projectName: z.ZodString;
|
|
15
|
+
projectType: z.ZodString;
|
|
16
|
+
frameworkName: z.ZodOptional<z.ZodEnum<["OpenUI5", "SAPUI5"]>>;
|
|
17
|
+
frameworkVersion: z.ZodOptional<z.ZodString>;
|
|
18
|
+
frameworkLibraries: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
19
|
+
versionInfo: z.ZodOptional<z.ZodObject<{
|
|
20
|
+
supportStatus: z.ZodString;
|
|
21
|
+
isLts: z.ZodOptional<z.ZodBoolean>;
|
|
22
|
+
latestVersion: z.ZodString;
|
|
23
|
+
latestLtsVersion: z.ZodOptional<z.ZodString>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
supportStatus: string;
|
|
26
|
+
latestVersion: string;
|
|
27
|
+
isLts?: boolean | undefined;
|
|
28
|
+
latestLtsVersion?: string | undefined;
|
|
29
|
+
}, {
|
|
30
|
+
supportStatus: string;
|
|
31
|
+
latestVersion: string;
|
|
32
|
+
isLts?: boolean | undefined;
|
|
33
|
+
latestLtsVersion?: string | undefined;
|
|
34
|
+
}>>;
|
|
35
|
+
};
|
|
36
|
+
export declare const outputSchemaObject: z.ZodObject<{
|
|
37
|
+
projectDir: z.ZodString;
|
|
38
|
+
projectName: z.ZodString;
|
|
39
|
+
projectType: z.ZodString;
|
|
40
|
+
frameworkName: z.ZodOptional<z.ZodEnum<["OpenUI5", "SAPUI5"]>>;
|
|
41
|
+
frameworkVersion: z.ZodOptional<z.ZodString>;
|
|
42
|
+
frameworkLibraries: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
43
|
+
versionInfo: z.ZodOptional<z.ZodObject<{
|
|
44
|
+
supportStatus: z.ZodString;
|
|
45
|
+
isLts: z.ZodOptional<z.ZodBoolean>;
|
|
46
|
+
latestVersion: z.ZodString;
|
|
47
|
+
latestLtsVersion: z.ZodOptional<z.ZodString>;
|
|
48
|
+
}, "strip", z.ZodTypeAny, {
|
|
49
|
+
supportStatus: string;
|
|
50
|
+
latestVersion: string;
|
|
51
|
+
isLts?: boolean | undefined;
|
|
52
|
+
latestLtsVersion?: string | undefined;
|
|
53
|
+
}, {
|
|
54
|
+
supportStatus: string;
|
|
55
|
+
latestVersion: string;
|
|
56
|
+
isLts?: boolean | undefined;
|
|
57
|
+
latestLtsVersion?: string | undefined;
|
|
58
|
+
}>>;
|
|
59
|
+
}, "strip", z.ZodTypeAny, {
|
|
60
|
+
projectDir: string;
|
|
61
|
+
projectName: string;
|
|
62
|
+
projectType: string;
|
|
63
|
+
frameworkName?: "OpenUI5" | "SAPUI5" | undefined;
|
|
64
|
+
frameworkVersion?: string | undefined;
|
|
65
|
+
frameworkLibraries?: string[] | undefined;
|
|
66
|
+
versionInfo?: {
|
|
67
|
+
supportStatus: string;
|
|
68
|
+
latestVersion: string;
|
|
69
|
+
isLts?: boolean | undefined;
|
|
70
|
+
latestLtsVersion?: string | undefined;
|
|
71
|
+
} | undefined;
|
|
72
|
+
}, {
|
|
73
|
+
projectDir: string;
|
|
74
|
+
projectName: string;
|
|
75
|
+
projectType: string;
|
|
76
|
+
frameworkName?: "OpenUI5" | "SAPUI5" | undefined;
|
|
77
|
+
frameworkVersion?: string | undefined;
|
|
78
|
+
frameworkLibraries?: string[] | undefined;
|
|
79
|
+
versionInfo?: {
|
|
80
|
+
supportStatus: string;
|
|
81
|
+
latestVersion: string;
|
|
82
|
+
isLts?: boolean | undefined;
|
|
83
|
+
latestLtsVersion?: string | undefined;
|
|
84
|
+
} | undefined;
|
|
85
|
+
}>;
|
|
86
|
+
export type GetProjectInfoParams = z.infer<typeof inputSchemaObject>;
|
|
87
|
+
export type GetProjectInfoResult = z.infer<typeof outputSchemaObject>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { Ui5FrameworkSchema } from "../../utils/ui5Framework.js";
|
|
3
|
+
export const inputSchema = {
|
|
4
|
+
projectDir: z.string()
|
|
5
|
+
.describe("Root directory of the UI5 project to analyze. Must be an absolute path. If a path to a file " +
|
|
6
|
+
"is provided, the root directory will be determined automatically."),
|
|
7
|
+
};
|
|
8
|
+
export const inputSchemaObject = z.object(inputSchema);
|
|
9
|
+
export const outputSchema = {
|
|
10
|
+
projectDir: z.string().describe("The root directory of the UI5 project, containing the 'package.json' and 'ui5.yaml' files."),
|
|
11
|
+
projectName: z.string().describe("The name of the project. Note that this may *not* be the namespace"),
|
|
12
|
+
projectType: z.string(),
|
|
13
|
+
frameworkName: Ui5FrameworkSchema.optional()
|
|
14
|
+
.describe("Whether the project uses OpenUI5 or SAPUI5"),
|
|
15
|
+
frameworkVersion: z.string().optional()
|
|
16
|
+
.describe("The version of the framework used in the project"),
|
|
17
|
+
frameworkLibraries: z.array(z.string()).optional()
|
|
18
|
+
.describe("The framework libraries used in the project"),
|
|
19
|
+
versionInfo: z.object({
|
|
20
|
+
supportStatus: z.string(),
|
|
21
|
+
isLts: z.boolean().optional()
|
|
22
|
+
.describe("Whether the framework version is a Long Term Support (LTS) version"),
|
|
23
|
+
latestVersion: z.string(),
|
|
24
|
+
latestLtsVersion: z.string().optional(),
|
|
25
|
+
}).optional(),
|
|
26
|
+
};
|
|
27
|
+
export const outputSchemaObject = z.object(outputSchema);
|
|
28
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/tools/get_project_info/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAE/D,MAAM,CAAC,MAAM,WAAW,GAAG;IAC1B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;SACpB,QAAQ,CACR,8FAA8F;QAC9F,mEAAmE,CAAC;CACtE,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,YAAY,GAAG;IAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC9B,4FAA4F,CAAC;IAC9F,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;IACtG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,aAAa,EAAE,kBAAkB,CAAC,QAAQ,EAAE;SAC1C,QAAQ,CAAC,4CAA4C,CAAC;IACxD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACrC,QAAQ,CAAC,kDAAkD,CAAC;IAC9D,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;SAChD,QAAQ,CAAC,6CAA6C,CAAC;IACzD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACrB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;QACzB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aAC3B,QAAQ,CAAC,oEAAoE,CAAC;QAChF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;QACzB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACvC,CAAC,CAAC,QAAQ,EAAE;CACb,CAAC;AACF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { GetVersionInfoParams, GetVersionInfoResult } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Fetch version information for the specified UI5 framework
|
|
4
|
+
* @param framework The UI5 framework (OpenUI5 or SAPUI5)
|
|
5
|
+
* @returns The version information
|
|
6
|
+
* @throws {Error} If the version information cannot be fetched
|
|
7
|
+
*/
|
|
8
|
+
export default function getVersionInfo(params: GetVersionInfoParams): Promise<GetVersionInfoResult>;
|