From cf190b96b71ef06719966040469a2f073790c494 Mon Sep 17 00:00:00 2001 From: Gavin Faux Date: Sun, 8 Jun 2025 11:31:51 +0100 Subject: [PATCH] Deprecate hey-red/Markdown #19500 - Replace with xoofx/markdig - Update package version in Directory.Packages.props - Update license entry in NOTICES.txt - Update package reference in src\Umbraco.Infrastructure\Umbraco.Infrastructure.csproj - Update src\Umbraco.Core\Composing\TypeFinder.cs - Update src\Umbraco.Infrastructure\HealthChecks\MarkdownToHtmlConverter.cs - Update src\Umbraco.Infrastructure\PropertyEditors\ValueConverters\MarkdownEditorValueConverter.cs --- Directory.Packages.props | 2 +- NOTICES.txt | 8 ++++---- src/Umbraco.Core/Composing/TypeFinder.cs | 2 +- .../HealthChecks/MarkdownToHtmlConverter.cs | 7 ++++--- .../ValueConverters/MarkdownEditorValueConverter.cs | 6 +++--- src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj | 2 +- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index d41b6eb92c19..0da4260341d5 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -54,7 +54,7 @@ - + diff --git a/NOTICES.txt b/NOTICES.txt index 1ea114b71598..7db126d3e386 100644 --- a/NOTICES.txt +++ b/NOTICES.txt @@ -202,11 +202,11 @@ Copyright: 2013-2024 .NET Foundation and Contributors --- -Markdown: A library for parsing and compiling Markdown +Markdig: A fast, powerful, CommonMark compliant, extensible Markdown processor for .NET -URL: https://github.com/hey-red/Markdown -License: MIT License -Copyright: 2018 red +URL: https://github.com/xoofx/markdig +License: BSD-2-Clause license +Copyright: 2018+, Alexandre Mutel. All rights reserved. --- diff --git a/src/Umbraco.Core/Composing/TypeFinder.cs b/src/Umbraco.Core/Composing/TypeFinder.cs index 2d715ba01b62..dd0c12c15027 100644 --- a/src/Umbraco.Core/Composing/TypeFinder.cs +++ b/src/Umbraco.Core/Composing/TypeFinder.cs @@ -29,7 +29,7 @@ public class TypeFinder : ITypeFinder "DataAnnotationsExtensions,", "DataAnnotationsExtensions.", "Dynamic,", "Examine,", "Examine.", "HtmlAgilityPack,", "HtmlAgilityPack.", "HtmlDiff,", "ICSharpCode.", "Iesi.Collections,", // used by NHibernate "JetBrains.Annotations,", "LightInject.", // DI - "LightInject,", "Lucene.", "Markdown,", "Microsoft.", "MiniProfiler,", "Moq,", "MySql.", "NHibernate,", + "LightInject,", "Lucene.", "Markdig,", "Microsoft.", "MiniProfiler,", "Moq,", "MySql.", "NHibernate,", "NHibernate.", "Newtonsoft.", "NPoco,", "NuGet.", "RouteDebugger,", "Semver.", "Serilog.", "Serilog,", "ServiceStack.", "SqlCE4Umbraco,", "Superpower,", // used by Serilog "System.", "TidyNet,", "TidyNet.", "WebDriver,", "itextsharp,", "mscorlib,", "NUnit,", "NUnit.", "NUnit3.", diff --git a/src/Umbraco.Infrastructure/HealthChecks/MarkdownToHtmlConverter.cs b/src/Umbraco.Infrastructure/HealthChecks/MarkdownToHtmlConverter.cs index 4020dc313661..a6e5083e60bd 100644 --- a/src/Umbraco.Infrastructure/HealthChecks/MarkdownToHtmlConverter.cs +++ b/src/Umbraco.Infrastructure/HealthChecks/MarkdownToHtmlConverter.cs @@ -1,4 +1,4 @@ -using HeyRed.MarkdownSharp; +using Markdig; using Umbraco.Cms.Core.HealthChecks; using Umbraco.Cms.Core.HealthChecks.NotificationMethods; @@ -6,10 +6,11 @@ namespace Umbraco.Cms.Infrastructure.HealthChecks; public class MarkdownToHtmlConverter : IMarkdownToHtmlConverter { + private static readonly MarkdownPipeline _markdownPipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build(); + public string ToHtml(HealthCheckResults results, HealthCheckNotificationVerbosity verbosity) { - var mark = new Markdown(); - var html = mark.Transform(results.ResultsAsMarkDown(verbosity)); + var html = Markdown.ToHtml(results.ResultsAsMarkDown(verbosity), _markdownPipeline); html = ApplyHtmlHighlighting(html); return html; } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/MarkdownEditorValueConverter.cs b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/MarkdownEditorValueConverter.cs index 05c6a8a4f1d1..493856a199b1 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/MarkdownEditorValueConverter.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/MarkdownEditorValueConverter.cs @@ -1,7 +1,7 @@ // Copyright (c) Umbraco. // See LICENSE for more details. -using HeyRed.MarkdownSharp; +using Markdig; using Umbraco.Cms.Core.Models.PublishedContent; using Umbraco.Cms.Core.PropertyEditors.DeliveryApi; using Umbraco.Cms.Core.Strings; @@ -15,6 +15,7 @@ public class MarkdownEditorValueConverter : PropertyValueConverterBase, IDeliver { private readonly HtmlLocalLinkParser _localLinkParser; private readonly HtmlUrlParser _urlParser; + private static readonly MarkdownPipeline _markdownPipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build(); public MarkdownEditorValueConverter(HtmlLocalLinkParser localLinkParser, HtmlUrlParser urlParser) { @@ -51,8 +52,7 @@ public override object ConvertIntermediateToObject(IPublishedElement owner, IPub { // convert markup to HTML for frontend rendering. // source should come from ConvertSource and be a string (or null) already - var mark = new Markdown(); - return new HtmlEncodedString(inter == null ? string.Empty : mark.Transform((string)inter)); + return new HtmlEncodedString(inter == null ? string.Empty : Markdown.ToHtml((string)inter, _markdownPipeline)); } public PropertyCacheLevel GetDeliveryApiPropertyCacheLevel(IPublishedPropertyType propertyType) => PropertyCacheLevel.Element; diff --git a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj index 7df82c5cb032..c8968d83cf82 100644 --- a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj +++ b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj @@ -39,7 +39,7 @@ - +