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 @@
-
+