Skip to content

Conversation

@d3xter666
Copy link
Member

JIRA: CPOUI5FOUNDATION-904

@d3xter666 d3xter666 marked this pull request as draft December 11, 2025 07:33
@cla-assistant
Copy link

cla-assistant bot commented Dec 11, 2025

CLA assistant check
All committers have signed the CLA.

@coveralls
Copy link

coveralls commented Dec 11, 2025

Coverage Status

coverage: 94.337%. remained the same
when pulling c02266f on jsdoc-to-markdow
into f7e2e73 on main.

}
}
},
"githubSourceBaseUrl": "https://github.com/UI5/cli/blob/main/pacakges/"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"githubSourceBaseUrl": "https://github.com/UI5/cli/blob/main/pacakges/"
"githubSourceBaseUrl": "https://github.com/UI5/cli/blob/main/packages/"

@@ -1,4 +1,4 @@
(function(window) {
nbpm(function(window) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?

CONTRIBUTING.md Outdated
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?

Copy link
Member Author

@d3xter666 d3xter666 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And one general comment:

We shall not modify the content within packages/ folder, nor delete anything from there. That will impact the UI5 CLI functionality, tests and docs

if (process.argv[2] == "gh-pages") {
// Read package.json of packages/builder
const builderJson = JSON.parse(fs.readFileSync("tmp/packages/@ui5/builder/package.json"));
packageTagName = `https://github.com/UI5/cli/blob/cli-v${builderJson["version"]}/packages/`;
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This link is invalid, because the previous versions of UI5 CLI are not within a monorepo, but separate packages and they have separate repositories. There is no packages folder, except for the main branch

Comment on lines 116 to 119
for (const file of fs.readdirSync(outputDirectory)) {
fs.rmSync(path.join(outputDirectory, file));
}
}
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can use the rimraf package and clean the whole dir

}

async function checkDeadlinks(link, sourcePath) {
if ((await fetch(link)).status != 200) {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should not be within the 4xx range. Please take a look here: https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status

@@ -0,0 +1,92 @@
## Modified by SAP
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this package copied here, but not used as dependency to the documentation?

Comment on lines 87 to 89
* <pre>
* this["name"] = name;
* </pre>
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is how our current JSDoc works. Can we handle this in the transofrmation?
I know that if we leave it like that here, the vitepress build might fail

@werwolf2303 werwolf2303 force-pushed the jsdoc-to-markdow branch 8 times, most recently from 075a37e to 426458e Compare January 20, 2026 10:26
@matz3
Copy link
Member

matz3 commented Jan 20, 2026

There are still some dead links. You can find them by searching for .md" within ./internal/documentation/dist/api. Note that some of those links are correct (e.g. links to a RFC document on GitHub).

Please continue to create new commits, as that makes reviewing changes easier. We can squash all commits again after all open points have been addressed.


// Recursively handle the inner type
if (isComplexTypeExpression(innerType)) {
result += linkComplexType(innerType, null, classString.replace(' class="', '').replace('"', ''));

Check failure

Code scanning / CodeQL

Incomplete string escaping or encoding High documentation

This replaces only the first occurrence of '"'.

Copilot Autofix

AI about 4 hours ago

In general, the problem should be fixed by ensuring that all occurrences of the characters being stripped or escaped are handled, rather than just the first one. For JavaScript strings, this typically means using replace with a regular expression that has the g (global) flag, or using replaceAll where available, instead of passing a plain string as the pattern.

In this specific case, the intention on line 695 is to strip the entire class="..."> fragment down to just the class value (e.g., class="foo bar"foo bar) before passing it onward. The current code uses classString.replace(' class="', '').replace('"', ''), which: (1) removes only the first exact class=" substring, and (2) removes only the first remaining " character. A safer and clearer way is to:

  • First extract the class name using a capturing regular expression like /\sclass="([^"]*)"/, then
  • Use that captured value as the class string (or empty string if no match).

This avoids any dependence on fragile multiple replace calls and fully removes quotes instead of just the first occurrence, while preserving existing functionality (it still turns something like class="foo" into foo).

Concretely:

  • In internal/documentation/jsdoc/docdash/publish.js, update the expression used as the third argument to linkComplexType on line 695.
  • Instead of chaining two string-based replace calls, use String.prototype.match with /\sclass="([^"]*)"/ to extract the class name; if the regexp does not match, fall back to an empty string.
  • No new imports or helpers are needed; this can be done inline where the argument is constructed.
Suggested changeset 1
internal/documentation/jsdoc/docdash/publish.js

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/internal/documentation/jsdoc/docdash/publish.js b/internal/documentation/jsdoc/docdash/publish.js
--- a/internal/documentation/jsdoc/docdash/publish.js
+++ b/internal/documentation/jsdoc/docdash/publish.js
@@ -692,7 +692,9 @@
 
 	// Recursively handle the inner type
 	if (isComplexTypeExpression(innerType)) {
-		result += linkComplexType(innerType, null, classString.replace(' class="', '').replace('"', ''));
+		const classMatch = classString && String(classString).match(/\sclass="([^"]*)"/);
+		const innerClassString = classMatch ? classMatch[1] : '';
+		result += linkComplexType(innerType, null, innerClassString);
 	} else {
 		let innerUrl = helper.longnameToUrl[innerType];
 		if (innerUrl) {
EOF
@@ -692,7 +692,9 @@

// Recursively handle the inner type
if (isComplexTypeExpression(innerType)) {
result += linkComplexType(innerType, null, classString.replace(' class="', '').replace('"', ''));
const classMatch = classString && String(classString).match(/\sclass="([^"]*)"/);
const innerClassString = classMatch ? classMatch[1] : '';
result += linkComplexType(innerType, null, innerClassString);
} else {
let innerUrl = helper.longnameToUrl[innerType];
if (innerUrl) {
Copilot is powered by AI and may make mistakes. Always verify output.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants