Update all remaining dependencies in one go (#8011)

* Update all remaining dependencies in one go

* Support changed marked API

* Adapt to use new library

* Removed commented code

* Fixed typo in anchor tag
This commit is contained in:
Andrew Henry 2025-04-01 13:21:13 -07:00 committed by GitHub
parent 28f6987dd7
commit f8e4aba922
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 400 additions and 461 deletions

823
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -16,7 +16,7 @@
],
"devDependencies": {
"@babel/eslint-parser": "7.23.3",
"@braintree/sanitize-url": "6.0.4",
"@braintree/sanitize-url": "7.1.1",
"@types/d3-axis": "3.0.6",
"@types/d3-scale": "4.0.8",
"@types/d3-selection": "3.0.10",
@ -64,7 +64,7 @@
"karma-webpack": "5.0.1",
"location-bar": "3.0.1",
"lodash": "4.17.21",
"marked": "12.0.0",
"marked": "15.0.6",
"mini-css-extract-plugin": "2.9.2",
"moment": "2.30.1",
"moment-duration-format": "2.3.2",
@ -90,7 +90,7 @@
"vue": "3.4.24",
"vue-eslint-parser": "9.4.2",
"vue-loader": "16.8.3",
"webpack": "5.90.3",
"webpack": "5.98.0",
"webpack-cli": "5.1.1",
"webpack-dev-server": "5.0.2",
"webpack-merge": "5.10.0"

View File

@ -344,12 +344,19 @@ export default {
},
beforeMount() {
this.marked = new Marked();
this.renderer = new this.marked.Renderer();
this.marked.use({
breaks: true,
extensions: [
{
name: 'link',
renderer: (options) => {
return this.validateLink(options);
}
}
]
});
},
mounted() {
const originalLinkRenderer = this.renderer.link;
this.renderer.link = this.validateLink.bind(this, originalLinkRenderer);
this.manageEmbedLayout = _.debounce(this.manageEmbedLayout, 400);
if (this.$refs.embedsWrapper) {
@ -437,10 +444,7 @@ export default {
}
},
convertMarkDownToHtml(text = '') {
let markDownHtml = this.marked.parse(text, {
breaks: true,
renderer: this.renderer
});
let markDownHtml = this.marked.parse(text);
markDownHtml = sanitizeHtml(markDownHtml, SANITIZATION_SCHEMA);
return markDownHtml;
},
@ -451,21 +455,19 @@ export default {
this.$refs.entryInput.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}
},
validateLink(originalLinkRenderer, href, title, text) {
validateLink(options) {
const { href, text } = options;
try {
const domain = new URL(href).hostname;
const urlIsWhitelisted = this.urlWhitelist.some((partialDomain) => {
return domain.endsWith(partialDomain);
});
if (!urlIsWhitelisted) {
return text;
}
const linkHtml = originalLinkRenderer.call(this.renderer, href, title, text);
const linkHtmlWithTarget = linkHtml.replace(
/^<a /,
'<a class="c-hyperlink" target="_blank"'
);
return linkHtmlWithTarget;
return `<a class="c-hyperlink" target="_blank" href="${href}">${text}</a>`;
} catch (error) {
// had error parsing this URL, just return the text
return text;