-
Notifications
You must be signed in to change notification settings - Fork 75
feat: Integrate JSDoc output into vitepress #1240
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
| } | ||
| } | ||
| }, | ||
| "githubSourceBaseUrl": "https://github.com/UI5/cli/blob/main/pacakges/" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| "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) { | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
?
CONTRIBUTING.md
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
?
d3xter666
left a comment
There was a problem hiding this 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/`; |
There was a problem hiding this comment.
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
| for (const file of fs.readdirSync(outputDirectory)) { | ||
| fs.rmSync(path.join(outputDirectory, file)); | ||
| } | ||
| } |
There was a problem hiding this comment.
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) { |
There was a problem hiding this comment.
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 | |||
There was a problem hiding this comment.
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?
| * <pre> | ||
| * this["name"] = name; | ||
| * </pre> |
There was a problem hiding this comment.
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
075a37e to
426458e
Compare
|
There are still some dead links. You can find them by searching for 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. |
3ab8984 to
453fa3e
Compare
|
|
||
| // 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
Show autofix suggestion
Hide autofix suggestion
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 tolinkComplexTypeon line 695. - Instead of chaining two string-based
replacecalls, useString.prototype.matchwith/\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.
-
Copy modified lines R695-R697
| @@ -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) { |
f856fae to
2ee1b26
Compare
This commit adds a copy of original files from docdash 2.0.2 [1]. [1] https://github.com/clenemt/docdash/tree/bee5d0789068be6a1e01ce02968b23dd021b4fb6
This had the risk of potentially destroying an external link that pointed to an .md file with a line number
c3dfbc9 to
c02266f
Compare
JIRA: CPOUI5FOUNDATION-904