@ui5/mcp-server 0.2.8 → 0.2.10
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 +26 -0
- package/lib/registerTools.d.ts +2 -0
- package/lib/tools/create_integration_card/index.d.ts +1 -1
- package/lib/tools/get_api_reference/index.js +1 -1
- package/lib/tools/get_api_reference/index.js.map +1 -1
- package/lib/tools/get_version_info/index.js +1 -1
- package/lib/tools/get_version_info/index.js.map +1 -1
- package/lib/tools/run_manifest_validation/createValidationFunction.d.ts +2 -0
- package/lib/tools/run_manifest_validation/createValidationFunction.js +160 -0
- package/lib/tools/run_manifest_validation/createValidationFunction.js.map +1 -0
- package/lib/tools/run_manifest_validation/runValidation.js +2 -69
- package/lib/tools/run_manifest_validation/runValidation.js.map +1 -1
- package/lib/tools/run_ui5_linter/index.js +3 -3
- package/lib/tools/run_ui5_linter/index.js.map +1 -1
- package/lib/utils/ui5Manifest.js +1 -2
- package/lib/utils/ui5Manifest.js.map +1 -1
- package/npm-shrinkwrap.json +235 -320
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.2.10](https://github.com/UI5/mcp-server/compare/v0.2.9...v0.2.10) (2026-04-02)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* Reduce whitespace in tool responses by not formatting JSON ([#284](https://github.com/UI5/mcp-server/issues/284)) ([d436789](https://github.com/UI5/mcp-server/commit/d436789d35fa5deada38af6573ae1269b8ff0a5c))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Dependencies
|
|
12
|
+
|
|
13
|
+
* **lockfile:** In-range update of npm dependencies ([44c972c](https://github.com/UI5/mcp-server/commit/44c972c3ba1e9b5f45c90baf1dc751e01838155d))
|
|
14
|
+
* **lockfile:** In-range update of npm dependencies ([#291](https://github.com/UI5/mcp-server/issues/291)) ([e50018b](https://github.com/UI5/mcp-server/commit/e50018b21638bface8afe881224a5b1bde67650a))
|
|
15
|
+
* **lockfile:** In-range update of npm dependencies ([#292](https://github.com/UI5/mcp-server/issues/292)) ([299a087](https://github.com/UI5/mcp-server/commit/299a087cd01884d91a40ada991cb0255b4967e50))
|
|
16
|
+
|
|
17
|
+
## [0.2.9](https://github.com/UI5/mcp-server/compare/v0.2.8...v0.2.9) (2026-03-17)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* **run_manifest_validation:** Declare earlier manifest schema versions as now supported ([#250](https://github.com/UI5/mcp-server/issues/250)) ([dfe5c91](https://github.com/UI5/mcp-server/commit/dfe5c915e9c3fc1dce53817865fcdd5aca5651a6))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Dependencies
|
|
26
|
+
|
|
27
|
+
* **lockfile:** In-range update of npm dependencies ([06b445e](https://github.com/UI5/mcp-server/commit/06b445e7a8ebc47799b690fdd050ff3903d61603))
|
|
28
|
+
|
|
3
29
|
## [0.2.8](https://github.com/UI5/mcp-server/compare/v0.2.7...v0.2.8) (2026-03-06)
|
|
4
30
|
|
|
5
31
|
|
package/lib/registerTools.d.ts
CHANGED
|
@@ -52,6 +52,7 @@ export declare function _processResponse({ content, structuredContent }: CallToo
|
|
|
52
52
|
type: "resource_link";
|
|
53
53
|
description?: string | undefined;
|
|
54
54
|
mimeType?: string | undefined;
|
|
55
|
+
size?: number | undefined;
|
|
55
56
|
annotations?: {
|
|
56
57
|
audience?: ("user" | "assistant")[] | undefined;
|
|
57
58
|
priority?: number | undefined;
|
|
@@ -135,6 +136,7 @@ export declare function _processResponse({ content, structuredContent }: CallToo
|
|
|
135
136
|
type: "resource_link";
|
|
136
137
|
description?: string | undefined;
|
|
137
138
|
mimeType?: string | undefined;
|
|
139
|
+
size?: number | undefined;
|
|
138
140
|
annotations?: {
|
|
139
141
|
audience?: ("user" | "assistant")[] | undefined;
|
|
140
142
|
priority?: number | undefined;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import Context from "../../Context.js";
|
|
2
2
|
import { RegisterTool } from "../../registerTools.js";
|
|
3
|
-
export default function registerTool(registerTool: RegisterTool, context: Context): import("@modelcontextprotocol/sdk/server/mcp
|
|
3
|
+
export default function registerTool(registerTool: RegisterTool, context: Context): import("@modelcontextprotocol/sdk/server/mcp").RegisteredTool;
|
|
@@ -29,7 +29,7 @@ function createResource(apiRef, frameworkName, frameworkVersion) {
|
|
|
29
29
|
return {
|
|
30
30
|
type: "resource",
|
|
31
31
|
resource: {
|
|
32
|
-
text: JSON.stringify(apiRef
|
|
32
|
+
text: JSON.stringify(apiRef),
|
|
33
33
|
uri: createUriForSymbol(apiRef, frameworkName, frameworkVersion),
|
|
34
34
|
mimeType: "application/json",
|
|
35
35
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/get_api_reference/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,cAAc,MAAM,uCAAuC,CAAC;AACnE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAMtC,MAAM,GAAG,GAAG,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAEjD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,YAA0B,EAAE,OAAgB;IAChF,YAAY,CAAC,mBAAmB,EAAE;QACjC,WAAW,EAAE,2DAA2D;QACxE,WAAW,EAAE;YACZ,KAAK,EAAE,mBAAmB;YAC1B,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;SACpB;QACD,WAAW;KACX,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,KAAK,EAAC,EAAE,EAAE;QAChC,GAAG,CAAC,IAAI,CAAC,uCAAuC,KAAK,uBAAuB,UAAU,GAAG,CAAC,CAAC;QAC3F,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,IAAI,SAAS,CAAC;QAC7D,MAAM,gBAAgB,GACrB,WAAW,CAAC,gBAAgB,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACvF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;QAE7E,OAAO;YACN,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;SACxF,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAAuB,EAAE,aAAqB,EAAE,gBAAwB;IAC/F,OAAO;QACN,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACT,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/get_api_reference/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,cAAc,MAAM,uCAAuC,CAAC;AACnE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAMtC,MAAM,GAAG,GAAG,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAEjD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,YAA0B,EAAE,OAAgB;IAChF,YAAY,CAAC,mBAAmB,EAAE;QACjC,WAAW,EAAE,2DAA2D;QACxE,WAAW,EAAE;YACZ,KAAK,EAAE,mBAAmB;YAC1B,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;SACpB;QACD,WAAW;KACX,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,KAAK,EAAC,EAAE,EAAE;QAChC,GAAG,CAAC,IAAI,CAAC,uCAAuC,KAAK,uBAAuB,UAAU,GAAG,CAAC,CAAC;QAC3F,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,IAAI,SAAS,CAAC;QAC7D,MAAM,gBAAgB,GACrB,WAAW,CAAC,gBAAgB,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACvF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;QAE7E,OAAO;YACN,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;SACxF,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAAuB,EAAE,aAAqB,EAAE,gBAAwB;IAC/F,OAAO;QACN,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACT,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAC5B,GAAG,EAAE,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,CAAC;YAChE,QAAQ,EAAE,kBAAkB;SAC5B;KACD,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/get_version_info/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAC,WAAW,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AACtD,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,QAAiB;IACjF,YAAY,CAAC,kBAAkB,EAAE;QAChC,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE;YACZ,KAAK,EAAE,kBAAkB;YACzB,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;SACpB;QACD,WAAW;QACX,YAAY;KACZ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;QACvB,GAAG,CAAC,IAAI,CAAC,0CAA0C,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC;QAChF,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;QACrD,OAAO;YACN,OAAO,EAAE,CAAC;oBACT,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/get_version_info/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAC,WAAW,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AACtD,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,QAAiB;IACjF,YAAY,CAAC,kBAAkB,EAAE;QAChC,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE;YACZ,KAAK,EAAE,kBAAkB;YACzB,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;SACpB;QACD,WAAW;QACX,YAAY;KACZ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;QACvB,GAAG,CAAC,IAAI,CAAC,0CAA0C,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC;QAChF,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;QACrD,OAAO;YACN,OAAO,EAAE,CAAC;oBACT,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;iBACjC,CAAC;YACF,iBAAiB,EAAE,WAAW;SAC9B,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { fetchCdn } from "../../utils/cdnHelper.js";
|
|
2
|
+
import Ajv2020 from "ajv/dist/2020.js";
|
|
3
|
+
import Ajv from "ajv";
|
|
4
|
+
import addFormats from "ajv-formats";
|
|
5
|
+
import { readFile } from "fs/promises";
|
|
6
|
+
import { getLogger } from "@ui5/logger";
|
|
7
|
+
import { Mutex } from "async-mutex";
|
|
8
|
+
import { fileURLToPath } from "url";
|
|
9
|
+
const log = getLogger("tools:run_manifest_validation:createValidationFunction");
|
|
10
|
+
const schemaCache = new Map();
|
|
11
|
+
const fetchSchemaMutex = new Mutex();
|
|
12
|
+
const AJV_SCHEMA_PATHS = {
|
|
13
|
+
draft06: fileURLToPath(import.meta.resolve("ajv/dist/refs/json-schema-draft-06.json")),
|
|
14
|
+
draft07: fileURLToPath(import.meta.resolve("ajv/dist/refs/json-schema-draft-07.json")),
|
|
15
|
+
};
|
|
16
|
+
async function createUI5ManifestValidateFunction2020(ui5Schema) {
|
|
17
|
+
try {
|
|
18
|
+
const ajv = new Ajv2020.default({
|
|
19
|
+
// Collect all errors, not just the first one
|
|
20
|
+
allErrors: true,
|
|
21
|
+
// Allow additional properties that are not in schema such as "i18n",
|
|
22
|
+
// otherwise compilation fails
|
|
23
|
+
strict: false,
|
|
24
|
+
// Don't use Unicode-aware regular expressions,
|
|
25
|
+
// otherwise compilation fails with "Invalid escape" errors
|
|
26
|
+
unicodeRegExp: false,
|
|
27
|
+
loadSchema: async (uri) => {
|
|
28
|
+
const release = await fetchSchemaMutex.acquire();
|
|
29
|
+
try {
|
|
30
|
+
if (schemaCache.has(uri)) {
|
|
31
|
+
log.info(`Loading cached schema: ${uri}`);
|
|
32
|
+
return schemaCache.get(uri);
|
|
33
|
+
}
|
|
34
|
+
log.info(`Loading external schema: ${uri}`);
|
|
35
|
+
const schema = await fetchCdn(uri);
|
|
36
|
+
// Special handling for Adaptive Card schema to fix unsupported "id" property
|
|
37
|
+
// According to the JSON Schema spec Draft 06 (used by Adaptive Card schema),
|
|
38
|
+
// "$id" should be used instead of "id"
|
|
39
|
+
// See https://github.com/microsoft/AdaptiveCards/issues/9274
|
|
40
|
+
if (uri.includes("adaptive-card.json") && typeof schema.id === "string") {
|
|
41
|
+
schema.$id = schema.id;
|
|
42
|
+
delete schema.id;
|
|
43
|
+
}
|
|
44
|
+
schemaCache.set(uri, schema);
|
|
45
|
+
return schema;
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
log.warn(`Failed to load external schema ${uri}:` +
|
|
49
|
+
`${error instanceof Error ? error.message : String(error)}`);
|
|
50
|
+
throw error;
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
release();
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
addFormats.default(ajv);
|
|
58
|
+
const draft06MetaSchema = JSON.parse(await readFile(AJV_SCHEMA_PATHS.draft06, "utf-8"));
|
|
59
|
+
const draft07MetaSchema = JSON.parse(await readFile(AJV_SCHEMA_PATHS.draft07, "utf-8"));
|
|
60
|
+
// Add meta-schemas for draft-06 and draft-07.
|
|
61
|
+
// These are required to support schemas that reference these drafts,
|
|
62
|
+
// for example the Adaptive Card schema and some sap.bpa.task properties.
|
|
63
|
+
ajv.addMetaSchema(draft06MetaSchema, "http://json-schema.org/draft-06/schema#");
|
|
64
|
+
ajv.addMetaSchema(draft07MetaSchema, "http://json-schema.org/draft-07/schema#");
|
|
65
|
+
const schemaToCompile = ui5Schema;
|
|
66
|
+
if (schemaToCompile?.$defs) {
|
|
67
|
+
for (const defKey in schemaToCompile.$defs) {
|
|
68
|
+
const def = schemaToCompile.$defs[defKey];
|
|
69
|
+
if (def?.oneOf) {
|
|
70
|
+
for (const option of def.oneOf) {
|
|
71
|
+
if (Array.isArray(option?.items)) {
|
|
72
|
+
option.prefixItems = option.items;
|
|
73
|
+
delete option.items;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const validate = await ajv.compileAsync(schemaToCompile);
|
|
80
|
+
return validate;
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
throw new Error(`Failed to create UI5 manifest validate function: ` +
|
|
84
|
+
`${error instanceof Error ? error.message : String(error)}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async function createUI5ManifestValidateFunctionDraft07(ui5Schema) {
|
|
88
|
+
try {
|
|
89
|
+
const ajv = new Ajv.default({
|
|
90
|
+
// Collect all errors, not just the first one
|
|
91
|
+
allErrors: true,
|
|
92
|
+
// Allow additional properties that are not in schema such as "i18n",
|
|
93
|
+
// otherwise compilation fails
|
|
94
|
+
strict: false,
|
|
95
|
+
// Don't use Unicode-aware regular expressions,
|
|
96
|
+
// otherwise compilation fails with "Invalid escape" errors
|
|
97
|
+
unicodeRegExp: false,
|
|
98
|
+
loadSchema: async (uri) => {
|
|
99
|
+
const release = await fetchSchemaMutex.acquire();
|
|
100
|
+
try {
|
|
101
|
+
if (schemaCache.has(uri)) {
|
|
102
|
+
log.info(`Loading cached schema: ${uri}`);
|
|
103
|
+
return schemaCache.get(uri);
|
|
104
|
+
}
|
|
105
|
+
log.info(`Loading external schema: ${uri}`);
|
|
106
|
+
const schema = await fetchCdn(uri);
|
|
107
|
+
// Special handling for Adaptive Card schema to fix unsupported "id" property
|
|
108
|
+
// According to the JSON Schema spec Draft 06 (used by Adaptive Card schema),
|
|
109
|
+
// "$id" should be used instead of "id"
|
|
110
|
+
// See https://github.com/microsoft/AdaptiveCards/issues/9274
|
|
111
|
+
if (uri.includes("adaptive-card.json") && typeof schema.id === "string") {
|
|
112
|
+
schema.$id = schema.id;
|
|
113
|
+
delete schema.id;
|
|
114
|
+
}
|
|
115
|
+
schemaCache.set(uri, schema);
|
|
116
|
+
return schema;
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
log.warn(`Failed to load external schema ${uri}:` +
|
|
120
|
+
`${error instanceof Error ? error.message : String(error)}`);
|
|
121
|
+
throw error;
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
release();
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
addFormats.default(ajv);
|
|
129
|
+
const draft06MetaSchema = JSON.parse(await readFile(AJV_SCHEMA_PATHS.draft06, "utf-8"));
|
|
130
|
+
// Add meta-schema for draft-06.
|
|
131
|
+
// This is required to support schemas that reference this draft,
|
|
132
|
+
// for example the Adaptive Card schema.
|
|
133
|
+
ajv.addMetaSchema(draft06MetaSchema, "http://json-schema.org/draft-06/schema#");
|
|
134
|
+
const validate = await ajv.compileAsync(ui5Schema);
|
|
135
|
+
return validate;
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
throw new Error(`Failed to create UI5 manifest validate function: ` +
|
|
139
|
+
`${error instanceof Error ? error.message : String(error)}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
export async function createValidateFunction(ui5ManifestSchema) {
|
|
143
|
+
// Determine which validator to use based on the $schema attribute
|
|
144
|
+
const schema = ui5ManifestSchema;
|
|
145
|
+
const metaSchema = schema?.$schema;
|
|
146
|
+
if (metaSchema === "https://json-schema.org/draft/2020-12/schema") {
|
|
147
|
+
log.info(`Using JSON Schema 2020-12 validation (detected from $schema: ${metaSchema})`);
|
|
148
|
+
return createUI5ManifestValidateFunction2020(ui5ManifestSchema);
|
|
149
|
+
}
|
|
150
|
+
else if (metaSchema === "http://json-schema.org/draft-07/schema#") {
|
|
151
|
+
log.info(`Using Draft-07 validation (detected from $schema: ${metaSchema})`);
|
|
152
|
+
return createUI5ManifestValidateFunctionDraft07(ui5ManifestSchema);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
throw new Error(`Failed to create UI5 manifest validate function:` +
|
|
156
|
+
` ${metaSchema ?? "undefined"} is not a supported meta-schema. ` +
|
|
157
|
+
`Supported meta-schemas: "https://json-schema.org/draft/2020-12/schema", "http://json-schema.org/draft-07/schema#"`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=createValidationFunction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createValidationFunction.js","sourceRoot":"","sources":["../../../src/tools/run_manifest_validation/createValidationFunction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,77 +1,10 @@
|
|
|
1
|
-
import { fetchCdn } from "../../utils/cdnHelper.js";
|
|
2
|
-
import Ajv2020 from "ajv/dist/2020.js";
|
|
3
|
-
import addFormats from "ajv-formats";
|
|
4
1
|
import { readFile } from "fs/promises";
|
|
5
2
|
import { getLogger } from "@ui5/logger";
|
|
6
3
|
import { InvalidInputError } from "../../utils.js";
|
|
7
4
|
import { getManifestSchema, getManifestVersion } from "../../utils/ui5Manifest.js";
|
|
8
|
-
import { Mutex } from "async-mutex";
|
|
9
|
-
import { fileURLToPath } from "url";
|
|
10
5
|
import { isAbsolute } from "path";
|
|
6
|
+
import { createValidateFunction } from "./createValidationFunction.js";
|
|
11
7
|
const log = getLogger("tools:run_manifest_validation:runValidation");
|
|
12
|
-
const schemaCache = new Map();
|
|
13
|
-
const fetchSchemaMutex = new Mutex();
|
|
14
|
-
const AJV_SCHEMA_PATHS = {
|
|
15
|
-
draft06: fileURLToPath(import.meta.resolve("ajv/dist/refs/json-schema-draft-06.json")),
|
|
16
|
-
draft07: fileURLToPath(import.meta.resolve("ajv/dist/refs/json-schema-draft-07.json")),
|
|
17
|
-
};
|
|
18
|
-
async function createUI5ManifestValidateFunction(ui5Schema) {
|
|
19
|
-
try {
|
|
20
|
-
const ajv = new Ajv2020.default({
|
|
21
|
-
// Collect all errors, not just the first one
|
|
22
|
-
allErrors: true,
|
|
23
|
-
// Allow additional properties that are not in schema such as "i18n",
|
|
24
|
-
// otherwise compilation fails
|
|
25
|
-
strict: false,
|
|
26
|
-
// Don't use Unicode-aware regular expressions,
|
|
27
|
-
// otherwise compilation fails with "Invalid escape" errors
|
|
28
|
-
unicodeRegExp: false,
|
|
29
|
-
loadSchema: async (uri) => {
|
|
30
|
-
const release = await fetchSchemaMutex.acquire();
|
|
31
|
-
try {
|
|
32
|
-
if (schemaCache.has(uri)) {
|
|
33
|
-
log.info(`Loading cached schema: ${uri}`);
|
|
34
|
-
return schemaCache.get(uri);
|
|
35
|
-
}
|
|
36
|
-
log.info(`Loading external schema: ${uri}`);
|
|
37
|
-
const schema = await fetchCdn(uri);
|
|
38
|
-
// Special handling for Adaptive Card schema to fix unsupported "id" property
|
|
39
|
-
// According to the JSON Schema spec Draft 06 (used by Adaptive Card schema),
|
|
40
|
-
// "$id" should be used instead of "id"
|
|
41
|
-
// See https://github.com/microsoft/AdaptiveCards/issues/9274
|
|
42
|
-
if (uri.includes("adaptive-card.json") && typeof schema.id === "string") {
|
|
43
|
-
schema.$id = schema.id;
|
|
44
|
-
delete schema.id;
|
|
45
|
-
}
|
|
46
|
-
schemaCache.set(uri, schema);
|
|
47
|
-
return schema;
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
log.warn(`Failed to load external schema ${uri}:` +
|
|
51
|
-
`${error instanceof Error ? error.message : String(error)}`);
|
|
52
|
-
throw error;
|
|
53
|
-
}
|
|
54
|
-
finally {
|
|
55
|
-
release();
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
addFormats.default(ajv);
|
|
60
|
-
const draft06MetaSchema = JSON.parse(await readFile(AJV_SCHEMA_PATHS.draft06, "utf-8"));
|
|
61
|
-
const draft07MetaSchema = JSON.parse(await readFile(AJV_SCHEMA_PATHS.draft07, "utf-8"));
|
|
62
|
-
// Add meta-schemas for draft-06 and draft-07.
|
|
63
|
-
// These are required to support schemas that reference these drafts,
|
|
64
|
-
// for example the Adaptive Card schema and some sap.bpa.task properties.
|
|
65
|
-
ajv.addMetaSchema(draft06MetaSchema, "http://json-schema.org/draft-06/schema#");
|
|
66
|
-
ajv.addMetaSchema(draft07MetaSchema, "http://json-schema.org/draft-07/schema#");
|
|
67
|
-
const validate = await ajv.compileAsync(ui5Schema);
|
|
68
|
-
return validate;
|
|
69
|
-
}
|
|
70
|
-
catch (error) {
|
|
71
|
-
throw new Error(`Failed to create UI5 manifest validate function: ` +
|
|
72
|
-
`${error instanceof Error ? error.message : String(error)}`);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
8
|
async function readManifest(path) {
|
|
76
9
|
let content;
|
|
77
10
|
let json;
|
|
@@ -100,7 +33,7 @@ export default async function runValidation(manifestPath) {
|
|
|
100
33
|
const manifestVersion = await getManifestVersion(manifest);
|
|
101
34
|
log.info(`Using manifest version: ${manifestVersion}`);
|
|
102
35
|
const ui5ManifestSchema = await getManifestSchema(manifestVersion);
|
|
103
|
-
const validate = await
|
|
36
|
+
const validate = await createValidateFunction(ui5ManifestSchema);
|
|
104
37
|
const isValid = validate(manifest);
|
|
105
38
|
if (isValid) {
|
|
106
39
|
log.info("Manifest validation successful");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runValidation.js","sourceRoot":"","sources":["../../../src/tools/run_manifest_validation/runValidation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runValidation.js","sourceRoot":"","sources":["../../../src/tools/run_manifest_validation/runValidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ export default function registerTool(registerTool, context) {
|
|
|
31
31
|
});
|
|
32
32
|
const content = [{
|
|
33
33
|
type: "text",
|
|
34
|
-
text: JSON.stringify(results.results
|
|
34
|
+
text: JSON.stringify(results.results),
|
|
35
35
|
}];
|
|
36
36
|
if (results.contextInformation) {
|
|
37
37
|
const { ruleDescriptions, documentationResources, migrationGuides, apiReferences } = results.contextInformation;
|
|
@@ -42,7 +42,7 @@ export default function registerTool(registerTool, context) {
|
|
|
42
42
|
type: "resource",
|
|
43
43
|
resource: {
|
|
44
44
|
uri: `ui5-linter-result://${projectUri.pathname}/api-reference-extract-${timestamp}.json`,
|
|
45
|
-
text: JSON.stringify(apiReferences
|
|
45
|
+
text: JSON.stringify(apiReferences),
|
|
46
46
|
mimeType: "application/json",
|
|
47
47
|
},
|
|
48
48
|
});
|
|
@@ -70,7 +70,7 @@ export default function registerTool(registerTool, context) {
|
|
|
70
70
|
if (ruleDescriptions.length) {
|
|
71
71
|
content.push({
|
|
72
72
|
type: "text",
|
|
73
|
-
text: JSON.stringify(ruleDescriptions
|
|
73
|
+
text: JSON.stringify(ruleDescriptions),
|
|
74
74
|
});
|
|
75
75
|
}
|
|
76
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/run_ui5_linter/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,WAAW,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAGtC,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AAEvC,MAAM,GAAG,GAAG,SAAS,CAAC,sBAAsB,CAAC,CAAC;AAE9C,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,YAA0B,EAAE,OAAgB;IAChF,YAAY,CAAC,gBAAgB,EAAE;QAC9B,WAAW,EACV,oGAAoG;YACpG,kBAAkB;YAClB,wGAAwG;YACxG,aAAa;QACd,WAAW,EAAE;YACZ,KAAK,EAAE,YAAY;YACnB,YAAY,EAAE,KAAK;SACnB;QACD,WAAW;QACX,YAAY;KACZ,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,YAAY,EAAE,yBAAyB,EAAE,GAAG,EAAC,EAAE,EAAE;QACvE,GAAG,CAAC,IAAI,CAAC,oCAAoC,UAAU,EAAE,CAAC,CAAC;QAC3D,IAAI,YAAY,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC,oBAAoB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,kCAAkC,yBAAyB,EAAE,CAAC,CAAC;QACxE,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC;YAClC,UAAU,EAAE,mBAAmB;YAC/B,YAAY;YACZ,yBAAyB;YACzB,GAAG;SACH,CAAC,CAAC;QACH,MAAM,OAAO,GAAuC,CAAC;gBACpD,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/run_ui5_linter/index.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/ui5Manifest.js
CHANGED
|
@@ -8,8 +8,7 @@ const fetchSchemaMutex = new Mutex();
|
|
|
8
8
|
let UI5ToManifestVersionMapping = null;
|
|
9
9
|
const MAPPING_URL = "https://raw.githubusercontent.com/UI5/manifest/main/mapping.json";
|
|
10
10
|
const ui5ToManifestVersionMappingMutex = new Mutex();
|
|
11
|
-
|
|
12
|
-
const LOWEST_SUPPORTED_MANIFEST_VERSION = "1.69.0";
|
|
11
|
+
const LOWEST_SUPPORTED_MANIFEST_VERSION = "1.48.1";
|
|
13
12
|
function getSchemaURL(manifestVersion) {
|
|
14
13
|
return `https://raw.githubusercontent.com/UI5/manifest/v${manifestVersion}/schema.json`;
|
|
15
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui5Manifest.js","sourceRoot":"","sources":["../../src/utils/ui5Manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAC;AAClC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,GAAG,GAAG,SAAS,CAAC,mBAAmB,CAAC,CAAC;AAE3C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC9C,MAAM,gBAAgB,GAAG,IAAI,KAAK,EAAE,CAAC;AAErC,IAAI,2BAA2B,GAAkC,IAAI,CAAC;AACtE,MAAM,WAAW,GAAG,kEAAkE,CAAC;AACvF,MAAM,gCAAgC,GAAG,IAAI,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ui5Manifest.js","sourceRoot":"","sources":["../../src/utils/ui5Manifest.ts"],"names":[],"mappings":"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"}
|