diff --git a/Directory.Packages.props b/Directory.Packages.props
index 6803cc34b..da8fb8caf 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -42,6 +42,7 @@
+
diff --git a/src/docs-assembler/Configuration/AssemblyConfiguration.cs b/Elastic.Documentation/Configuration/Assembler/AssemblyConfiguration.cs
similarity index 67%
rename from src/docs-assembler/Configuration/AssemblyConfiguration.cs
rename to Elastic.Documentation/Configuration/Assembler/AssemblyConfiguration.cs
index c8ad25452..7144c759f 100644
--- a/src/docs-assembler/Configuration/AssemblyConfiguration.cs
+++ b/Elastic.Documentation/Configuration/Assembler/AssemblyConfiguration.cs
@@ -2,10 +2,10 @@
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information
-using Elastic.Markdown.IO.State;
+using Elastic.Documentation.Serialization;
using YamlDotNet.Serialization;
-namespace Documentation.Assembler.Configuration;
+namespace Elastic.Documentation.Configuration.Assembler;
public record AssemblyConfiguration
{
@@ -78,53 +78,3 @@ private static TRepository RepositoryDefaults(TRepository r, string
[YamlMember(Alias = "named_git_references")]
public Dictionary NamedGitReferences { get; set; } = [];
}
-
-public record PublishEnvironment
-{
- [YamlIgnore]
- public string Name { get; set; } = string.Empty;
-
- [YamlMember(Alias = "uri")]
- public string Uri { get; set; } = string.Empty;
-
- [YamlMember(Alias = "path_prefix")]
- public string? PathPrefix { get; set; } = string.Empty;
-
- [YamlMember(Alias = "allow_indexing")]
- public bool AllowIndexing { get; set; }
-
- [YamlMember(Alias = "content_source")]
- public ContentSource ContentSource { get; set; }
-
- [YamlMember(Alias = "google_tag_manager")]
- public GoogleTagManager GoogleTagManager { get; set; } = new();
-}
-
-public record GoogleTagManager
-{
- [YamlMember(Alias = "enabled")]
- public bool Enabled { get; set; }
-
- private string _id = string.Empty;
-
- [YamlMember(Alias = "id")]
- public string Id
- {
- get => _id;
- set
- {
- if (Enabled && string.IsNullOrEmpty(value))
- throw new ArgumentException("Id is required when Enabled is true.");
- _id = value;
- }
- }
-
- [YamlMember(Alias = "auth")]
- public string? Auth { get; set; }
-
- [YamlMember(Alias = "preview")]
- public string? Preview { get; set; }
-
- [YamlMember(Alias = "cookies_win")]
- public string? CookiesWin { get; set; }
-}
diff --git a/src/Elastic.Markdown/IO/State/ContentSource.cs b/Elastic.Documentation/Configuration/Assembler/ContentSource.cs
similarity index 90%
rename from src/Elastic.Markdown/IO/State/ContentSource.cs
rename to Elastic.Documentation/Configuration/Assembler/ContentSource.cs
index 77f9d82c4..59282eba2 100644
--- a/src/Elastic.Markdown/IO/State/ContentSource.cs
+++ b/Elastic.Documentation/Configuration/Assembler/ContentSource.cs
@@ -6,7 +6,7 @@
using System.Text.Json.Serialization;
using NetEscapades.EnumGenerators;
-namespace Elastic.Markdown.IO.State;
+namespace Elastic.Documentation.Configuration.Assembler;
[EnumExtensions]
public enum ContentSource
diff --git a/Elastic.Documentation/Configuration/Assembler/GoogleTagManager.cs b/Elastic.Documentation/Configuration/Assembler/GoogleTagManager.cs
new file mode 100644
index 000000000..4e39c659c
--- /dev/null
+++ b/Elastic.Documentation/Configuration/Assembler/GoogleTagManager.cs
@@ -0,0 +1,36 @@
+// Licensed to Elasticsearch B.V under one or more agreements.
+// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
+// See the LICENSE file in the project root for more information
+
+using YamlDotNet.Serialization;
+
+namespace Elastic.Documentation.Configuration.Assembler;
+
+public record GoogleTagManager
+{
+ [YamlMember(Alias = "enabled")]
+ public bool Enabled { get; set; }
+
+ private string _id = string.Empty;
+
+ [YamlMember(Alias = "id")]
+ public string Id
+ {
+ get => _id;
+ set
+ {
+ if (Enabled && string.IsNullOrEmpty(value))
+ throw new ArgumentException("Id is required when Enabled is true.");
+ _id = value;
+ }
+ }
+
+ [YamlMember(Alias = "auth")]
+ public string? Auth { get; set; }
+
+ [YamlMember(Alias = "preview")]
+ public string? Preview { get; set; }
+
+ [YamlMember(Alias = "cookies_win")]
+ public string? CookiesWin { get; set; }
+}
diff --git a/Elastic.Documentation/Configuration/Assembler/GoogleTagManagerConfiguration.cs b/Elastic.Documentation/Configuration/Assembler/GoogleTagManagerConfiguration.cs
new file mode 100644
index 000000000..d36091598
--- /dev/null
+++ b/Elastic.Documentation/Configuration/Assembler/GoogleTagManagerConfiguration.cs
@@ -0,0 +1,33 @@
+// Licensed to Elasticsearch B.V under one or more agreements.
+// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
+// See the LICENSE file in the project root for more information
+
+using System.Diagnostics.CodeAnalysis;
+using System.Web;
+
+namespace Elastic.Documentation.Configuration.Assembler;
+
+public record GoogleTagManagerConfiguration
+{
+ public bool Enabled { get; init; }
+ [MemberNotNullWhen(returnValue: true, nameof(Enabled))]
+ public string? Id { get; init; }
+ public string? Auth { get; init; }
+ public string? Preview { get; init; }
+ public string? CookiesWin { get; init; }
+
+ public string QueryString()
+ {
+ var queryString = HttpUtility.ParseQueryString(string.Empty);
+ if (Auth is not null)
+ queryString.Add("gtm_auth", Auth);
+
+ if (Preview is not null)
+ queryString.Add("gtm_preview", Preview);
+
+ if (CookiesWin is not null)
+ queryString.Add("gtm_cookies_win", CookiesWin);
+
+ return queryString.Count > 0 ? $"&{queryString}" : string.Empty;
+ }
+}
diff --git a/Elastic.Documentation/Configuration/Assembler/PublishEnvironment.cs b/Elastic.Documentation/Configuration/Assembler/PublishEnvironment.cs
new file mode 100644
index 000000000..c3dcbccce
--- /dev/null
+++ b/Elastic.Documentation/Configuration/Assembler/PublishEnvironment.cs
@@ -0,0 +1,28 @@
+// Licensed to Elasticsearch B.V under one or more agreements.
+// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
+// See the LICENSE file in the project root for more information
+
+using YamlDotNet.Serialization;
+
+namespace Elastic.Documentation.Configuration.Assembler;
+
+public record PublishEnvironment
+{
+ [YamlIgnore]
+ public string Name { get; set; } = string.Empty;
+
+ [YamlMember(Alias = "uri")]
+ public string Uri { get; set; } = string.Empty;
+
+ [YamlMember(Alias = "path_prefix")]
+ public string? PathPrefix { get; set; } = string.Empty;
+
+ [YamlMember(Alias = "allow_indexing")]
+ public bool AllowIndexing { get; set; }
+
+ [YamlMember(Alias = "content_source")]
+ public ContentSource ContentSource { get; set; }
+
+ [YamlMember(Alias = "google_tag_manager")]
+ public GoogleTagManager GoogleTagManager { get; set; } = new();
+}
diff --git a/src/docs-assembler/Configuration/Repository.cs b/Elastic.Documentation/Configuration/Assembler/Repository.cs
similarity index 93%
rename from src/docs-assembler/Configuration/Repository.cs
rename to Elastic.Documentation/Configuration/Assembler/Repository.cs
index e928ca355..93d0d5667 100644
--- a/src/docs-assembler/Configuration/Repository.cs
+++ b/Elastic.Documentation/Configuration/Assembler/Repository.cs
@@ -2,10 +2,9 @@
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information
-using Elastic.Markdown.IO.State;
using YamlDotNet.Serialization;
-namespace Documentation.Assembler.Configuration;
+namespace Elastic.Documentation.Configuration.Assembler;
public record NarrativeRepository : Repository
{
diff --git a/src/Elastic.Markdown/IO/Configuration/EnabledExtensions.cs b/Elastic.Documentation/Configuration/Builder/EnabledExtensions.cs
similarity index 90%
rename from src/Elastic.Markdown/IO/Configuration/EnabledExtensions.cs
rename to Elastic.Documentation/Configuration/Builder/EnabledExtensions.cs
index 1ab29db42..df3ae0997 100644
--- a/src/Elastic.Markdown/IO/Configuration/EnabledExtensions.cs
+++ b/Elastic.Documentation/Configuration/Builder/EnabledExtensions.cs
@@ -2,7 +2,7 @@
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information
-namespace Elastic.Markdown.IO.Configuration;
+namespace Elastic.Documentation.Configuration.Builder;
public class EnabledExtensions(IReadOnlyCollection extensions)
{
diff --git a/src/Elastic.Markdown/IO/Configuration/FeatureFlags.cs b/Elastic.Documentation/Configuration/Builder/FeatureFlags.cs
similarity index 93%
rename from src/Elastic.Markdown/IO/Configuration/FeatureFlags.cs
rename to Elastic.Documentation/Configuration/Builder/FeatureFlags.cs
index 79c9e0df4..ee7ca7a7c 100644
--- a/src/Elastic.Markdown/IO/Configuration/FeatureFlags.cs
+++ b/Elastic.Documentation/Configuration/Builder/FeatureFlags.cs
@@ -2,7 +2,7 @@
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information
-namespace Elastic.Markdown.IO.Configuration;
+namespace Elastic.Documentation.Configuration.Builder;
public class FeatureFlags(Dictionary featureFlags)
{
diff --git a/src/Elastic.Markdown/IO/Configuration/ITocItem.cs b/Elastic.Documentation/Configuration/TableOfContents/ITocItem.cs
similarity index 90%
rename from src/Elastic.Markdown/IO/Configuration/ITocItem.cs
rename to Elastic.Documentation/Configuration/TableOfContents/ITocItem.cs
index 223fd687c..c1187d87f 100644
--- a/src/Elastic.Markdown/IO/Configuration/ITocItem.cs
+++ b/Elastic.Documentation/Configuration/TableOfContents/ITocItem.cs
@@ -2,7 +2,9 @@
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information
-namespace Elastic.Markdown.IO.Configuration;
+using Elastic.Documentation.Navigation;
+
+namespace Elastic.Documentation.Configuration.TableOfContents;
public interface ITocItem
{
diff --git a/Elastic.Documentation/ContentSourceMoniker.cs b/Elastic.Documentation/ContentSourceMoniker.cs
new file mode 100644
index 000000000..242195207
--- /dev/null
+++ b/Elastic.Documentation/ContentSourceMoniker.cs
@@ -0,0 +1,18 @@
+// Licensed to Elasticsearch B.V under one or more agreements.
+// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
+// See the LICENSE file in the project root for more information
+
+namespace Elastic.Documentation;
+
+public static class ContentSourceMoniker
+{
+ public static Uri Create(string repo, string? path) => new(CreateString(repo, path));
+
+ public static string CreateString(string repo, string? path)
+ {
+ path = path?.Replace("\\", "/").Trim('/');
+ if (string.IsNullOrWhiteSpace(path) || path == ".")
+ return $"{repo}://";
+ return $"{repo}://{path}/";
+ }
+}
diff --git a/Elastic.Documentation/Diagnostics/Diagnostic.cs b/Elastic.Documentation/Diagnostics/Diagnostic.cs
new file mode 100644
index 000000000..f0c230216
--- /dev/null
+++ b/Elastic.Documentation/Diagnostics/Diagnostic.cs
@@ -0,0 +1,15 @@
+// Licensed to Elasticsearch B.V under one or more agreements.
+// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
+// See the LICENSE file in the project root for more information
+
+namespace Elastic.Documentation.Diagnostics;
+
+public readonly record struct Diagnostic
+{
+ public Severity Severity { get; init; }
+ public int? Line { get; init; }
+ public int? Column { get; init; }
+ public int? Length { get; init; }
+ public string File { get; init; }
+ public string Message { get; init; }
+}
diff --git a/src/Elastic.Markdown/Diagnostics/DiagnosticsChannel.cs b/Elastic.Documentation/Diagnostics/DiagnosticsChannel.cs
similarity index 91%
rename from src/Elastic.Markdown/Diagnostics/DiagnosticsChannel.cs
rename to Elastic.Documentation/Diagnostics/DiagnosticsChannel.cs
index c04101d1f..a6e418c54 100644
--- a/src/Elastic.Markdown/Diagnostics/DiagnosticsChannel.cs
+++ b/Elastic.Documentation/Diagnostics/DiagnosticsChannel.cs
@@ -6,24 +6,7 @@
using System.Threading.Channels;
using Microsoft.Extensions.Hosting;
-namespace Elastic.Markdown.Diagnostics;
-
-public enum Severity
-{
- Error,
- Warning,
- Hint
-}
-
-public readonly record struct Diagnostic
-{
- public Severity Severity { get; init; }
- public int? Line { get; init; }
- public int? Column { get; init; }
- public int? Length { get; init; }
- public string File { get; init; }
- public string Message { get; init; }
-}
+namespace Elastic.Documentation.Diagnostics;
public sealed class DiagnosticsChannel : IDisposable
{
@@ -69,8 +52,7 @@ public interface IDiagnosticsOutput
void Write(Diagnostic diagnostic);
}
-public class DiagnosticsCollector(IReadOnlyCollection outputs)
- : IHostedService, IAsyncDisposable
+public class DiagnosticsCollector(IReadOnlyCollection outputs) : IHostedService, IAsyncDisposable
{
public DiagnosticsChannel Channel { get; } = new();
diff --git a/Elastic.Documentation/Diagnostics/Severity.cs b/Elastic.Documentation/Diagnostics/Severity.cs
new file mode 100644
index 000000000..28ab2e8bb
--- /dev/null
+++ b/Elastic.Documentation/Diagnostics/Severity.cs
@@ -0,0 +1,12 @@
+// Licensed to Elasticsearch B.V under one or more agreements.
+// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
+// See the LICENSE file in the project root for more information
+
+namespace Elastic.Documentation.Diagnostics;
+
+public enum Severity
+{
+ Error = 0,
+ Warning = 1,
+ Hint = 2
+}
diff --git a/Elastic.Documentation/Elastic.Documentation.csproj b/Elastic.Documentation/Elastic.Documentation.csproj
new file mode 100644
index 000000000..d3495f776
--- /dev/null
+++ b/Elastic.Documentation/Elastic.Documentation.csproj
@@ -0,0 +1,19 @@
+
+
+
+ net9.0
+ enable
+ enable
+ Elastic.Documentation
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Elastic.Markdown/IO/Discovery/GitCheckoutInformation.cs b/Elastic.Documentation/GitCheckoutInformation.cs
similarity index 97%
rename from src/Elastic.Markdown/IO/Discovery/GitCheckoutInformation.cs
rename to Elastic.Documentation/GitCheckoutInformation.cs
index aeb554e50..c724b7dc2 100644
--- a/src/Elastic.Markdown/IO/Discovery/GitCheckoutInformation.cs
+++ b/Elastic.Documentation/GitCheckoutInformation.cs
@@ -7,7 +7,7 @@
using Microsoft.Extensions.Logging;
using SoftCircuits.IniFileParser;
-namespace Elastic.Markdown.IO.Discovery;
+namespace Elastic.Documentation;
public record GitCheckoutInformation
{
@@ -60,7 +60,7 @@ public static GitCheckoutInformation Create(IDirectoryInfo? source, IFileSystem
var gitRef = head;
var branch = head.Replace("refs/heads/", string.Empty);
//not detached HEAD
- if (head.StartsWith("ref:"))
+ if (head.StartsWith("ref:", StringComparison.OrdinalIgnoreCase))
{
head = head.Replace("ref: ", string.Empty);
gitRef = Read(source, Path.Combine(".git", head)) ?? fakeRef;
diff --git a/src/Elastic.Markdown/IO/State/LinkReference.cs b/Elastic.Documentation/LinkReference.cs
similarity index 73%
rename from src/Elastic.Markdown/IO/State/LinkReference.cs
rename to Elastic.Documentation/LinkReference.cs
index acf0dd6a1..5e2d5a3c7 100644
--- a/src/Elastic.Markdown/IO/State/LinkReference.cs
+++ b/Elastic.Documentation/LinkReference.cs
@@ -2,12 +2,11 @@
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information
-using System.Runtime.InteropServices;
using System.Text.Json;
using System.Text.Json.Serialization;
-using Elastic.Markdown.IO.Discovery;
+using Elastic.Documentation.Serialization;
-namespace Elastic.Markdown.IO.State;
+namespace Elastic.Documentation;
public record LinkMetadata
{
@@ -70,28 +69,4 @@ public static LinkReference Deserialize(string json) =>
public static string Serialize(LinkReference reference) =>
JsonSerializer.Serialize(reference, SourceGenerationContext.Default.LinkReference);
-
- public static LinkReference Create(DocumentationSet set)
- {
- var redirects = set.Configuration.Redirects;
- var crossLinks = set.Build.Collector.CrossLinks.ToHashSet().ToArray();
- var links = set.MarkdownFiles.Values
- .Select(m => (m.LinkReferenceRelativePath, File: m))
- .ToDictionary(k => RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
- ? k.LinkReferenceRelativePath.Replace('\\', '/')
- : k.LinkReferenceRelativePath, v =>
- {
- var anchors = v.File.Anchors.Count == 0 ? null : v.File.Anchors.ToArray();
- return new LinkMetadata { Anchors = anchors, Hidden = v.File.Hidden };
- });
-
- return new LinkReference
- {
- Redirects = redirects,
- UrlPathPrefix = set.Build.UrlPathPrefix,
- Origin = set.Build.Git,
- Links = links,
- CrossLinks = crossLinks
- };
- }
}
diff --git a/Elastic.Documentation/Links/LinkIndex.cs b/Elastic.Documentation/Links/LinkIndex.cs
new file mode 100644
index 000000000..d32559c42
--- /dev/null
+++ b/Elastic.Documentation/Links/LinkIndex.cs
@@ -0,0 +1,47 @@
+// Licensed to Elasticsearch B.V under one or more agreements.
+// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
+// See the LICENSE file in the project root for more information
+
+using System.Text.Json;
+using System.Text.Json.Serialization;
+using Elastic.Documentation.Serialization;
+
+namespace Elastic.Documentation.Links;
+
+public record LinkIndex
+{
+ [JsonPropertyName("repositories")] public required Dictionary> Repositories { get; init; }
+
+ public static LinkIndex Deserialize(Stream json) =>
+ JsonSerializer.Deserialize(json, SourceGenerationContext.Default.LinkIndex)!;
+
+ public static LinkIndex Deserialize(string json) =>
+ JsonSerializer.Deserialize(json, SourceGenerationContext.Default.LinkIndex)!;
+
+ public static string Serialize(LinkIndex index) =>
+ JsonSerializer.Serialize(index, SourceGenerationContext.Default.LinkIndex);
+}
+
+public record LinkIndexEntry
+{
+ [JsonPropertyName("repository")]
+ public required string Repository { get; init; }
+
+ [JsonPropertyName("path")]
+ public required string Path { get; init; }
+
+ [JsonPropertyName("branch")]
+ public required string Branch { get; init; }
+
+ [JsonPropertyName("etag")]
+ public required string ETag { get; init; }
+
+ // TODO can be made required after all doc_sets have published again
+ [JsonPropertyName("ref")]
+ public string GitReference { get; init; } = "unknown";
+
+ // TODO can be made required after all doc_sets have published again
+ [JsonPropertyName("updated_at")]
+ public DateTime UpdatedAt { get; init; } = DateTime.MinValue;
+}
+
diff --git a/Elastic.Documentation/Navigation/ITableOfContentsScope.cs b/Elastic.Documentation/Navigation/ITableOfContentsScope.cs
new file mode 100644
index 000000000..8e4e6e117
--- /dev/null
+++ b/Elastic.Documentation/Navigation/ITableOfContentsScope.cs
@@ -0,0 +1,12 @@
+// Licensed to Elasticsearch B.V under one or more agreements.
+// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
+// See the LICENSE file in the project root for more information
+
+using System.IO.Abstractions;
+
+namespace Elastic.Documentation.Navigation;
+
+public interface ITableOfContentsScope
+{
+ IDirectoryInfo ScopeDirectory { get; }
+}
diff --git a/src/Elastic.Markdown/SourceGenerationContext.cs b/Elastic.Documentation/Serialization/SourceGenerationContext.cs
similarity index 83%
rename from src/Elastic.Markdown/SourceGenerationContext.cs
rename to Elastic.Documentation/Serialization/SourceGenerationContext.cs
index 850734d8a..e310e4d75 100644
--- a/src/Elastic.Markdown/SourceGenerationContext.cs
+++ b/Elastic.Documentation/Serialization/SourceGenerationContext.cs
@@ -3,11 +3,10 @@
// See the LICENSE file in the project root for more information
using System.Text.Json.Serialization;
-using Elastic.Markdown.IO.Discovery;
-using Elastic.Markdown.IO.State;
-using Elastic.Markdown.Links.CrossLinks;
+using Elastic.Documentation.Links;
+using Elastic.Documentation.State;
-namespace Elastic.Markdown;
+namespace Elastic.Documentation.Serialization;
// This configures the source generation for json (de)serialization.
diff --git a/src/docs-assembler/YamlStaticContext.cs b/Elastic.Documentation/Serialization/YamlStaticContext.cs
similarity index 83%
rename from src/docs-assembler/YamlStaticContext.cs
rename to Elastic.Documentation/Serialization/YamlStaticContext.cs
index 118ec943b..13538fd87 100644
--- a/src/docs-assembler/YamlStaticContext.cs
+++ b/Elastic.Documentation/Serialization/YamlStaticContext.cs
@@ -2,11 +2,10 @@
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information
-using Documentation.Assembler.Configuration;
-using Elastic.Markdown.IO.State;
+using Elastic.Documentation.Configuration.Assembler;
using YamlDotNet.Serialization;
-namespace Documentation.Assembler;
+namespace Elastic.Documentation.Serialization;
[YamlStaticContext]
[YamlSerializable(typeof(AssemblyConfiguration))]
diff --git a/src/Elastic.Markdown/IO/State/GenerationState.cs b/Elastic.Documentation/State/GenerationState.cs
similarity index 76%
rename from src/Elastic.Markdown/IO/State/GenerationState.cs
rename to Elastic.Documentation/State/GenerationState.cs
index 00aaa4d9a..2c25f06dd 100644
--- a/src/Elastic.Markdown/IO/State/GenerationState.cs
+++ b/Elastic.Documentation/State/GenerationState.cs
@@ -3,10 +3,8 @@
// See the LICENSE file in the project root for more information
using System.Text.Json.Serialization;
-using Elastic.Markdown.Exporters;
-using Elastic.Markdown.IO.Discovery;
-namespace Elastic.Markdown.IO.State;
+namespace Elastic.Documentation.State;
public record GenerationState
{
@@ -17,7 +15,7 @@ public record GenerationState
public required string[] InvalidFiles { get; init; } = [];
[JsonPropertyName("exporter")]
- public string Exporter { get; init; } = nameof(DocumentationFileExporter);
+ public required string Exporter { get; init; }
[JsonPropertyName("git")]
public required GitCheckoutInformation Git { get; init; }
diff --git a/docs-builder.sln b/docs-builder.sln
index a045d3eee..4790affff 100644
--- a/docs-builder.sln
+++ b/docs-builder.sln
@@ -83,6 +83,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "validate-path-prefixes-loca
actions\validate-path-prefixes-local\action.yml = actions\validate-path-prefixes-local\action.yml
EndProjectSection
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elastic.Documentation", "Elastic.Documentation\Elastic.Documentation.csproj", "{09CE30F6-013A-49ED-B3D6-60AFA84682AC}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -136,6 +138,10 @@ Global
{CDC0ECF4-6597-4FBA-8D25-5C244F0877E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CDC0ECF4-6597-4FBA-8D25-5C244F0877E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CDC0ECF4-6597-4FBA-8D25-5C244F0877E3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {09CE30F6-013A-49ED-B3D6-60AFA84682AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {09CE30F6-013A-49ED-B3D6-60AFA84682AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {09CE30F6-013A-49ED-B3D6-60AFA84682AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {09CE30F6-013A-49ED-B3D6-60AFA84682AC}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{4D198E25-C211-41DC-9E84-B15E89BD7048} = {BE6011CC-1200-4957-B01F-FCCA10C5CF5A}
@@ -155,5 +161,6 @@ Global
{4894063D-0DEF-4B7E-97D0-0D0A5B85C608} = {BE6011CC-1200-4957-B01F-FCCA10C5CF5A}
{C559D52D-100B-4B2B-BE87-2344D835761D} = {4894063D-0DEF-4B7E-97D0-0D0A5B85C608}
{BB789671-B262-43DD-91DB-39F9186B8257} = {245023D2-D3CA-47B9-831D-DAB91A2FFDC7}
+ {09CE30F6-013A-49ED-B3D6-60AFA84682AC} = {BE6011CC-1200-4957-B01F-FCCA10C5CF5A}
EndGlobalSection
EndGlobal
diff --git a/src/Elastic.Documentation.Tooling/Diagnostics/Console/ConsoleDiagnosticsCollector.cs b/src/Elastic.Documentation.Tooling/Diagnostics/Console/ConsoleDiagnosticsCollector.cs
index 5aa5ce497..dedf1f4e5 100644
--- a/src/Elastic.Documentation.Tooling/Diagnostics/Console/ConsoleDiagnosticsCollector.cs
+++ b/src/Elastic.Documentation.Tooling/Diagnostics/Console/ConsoleDiagnosticsCollector.cs
@@ -3,10 +3,11 @@
// See the LICENSE file in the project root for more information
using Actions.Core.Services;
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.Diagnostics;
using Microsoft.Extensions.Logging;
using Spectre.Console;
-using Diagnostic = Elastic.Markdown.Diagnostics.Diagnostic;
+using Diagnostic = Elastic.Documentation.Diagnostics.Diagnostic;
namespace Elastic.Documentation.Tooling.Diagnostics.Console;
diff --git a/src/Elastic.Documentation.Tooling/Diagnostics/Console/ErrataFileSourceRepository.cs b/src/Elastic.Documentation.Tooling/Diagnostics/Console/ErrataFileSourceRepository.cs
index 74962613c..1ceca1093 100644
--- a/src/Elastic.Documentation.Tooling/Diagnostics/Console/ErrataFileSourceRepository.cs
+++ b/src/Elastic.Documentation.Tooling/Diagnostics/Console/ErrataFileSourceRepository.cs
@@ -5,10 +5,11 @@
using System.Diagnostics.CodeAnalysis;
using System.Text;
using Cysharp.IO;
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.Diagnostics;
using Errata;
using Spectre.Console;
-using Diagnostic = Elastic.Markdown.Diagnostics.Diagnostic;
+using Diagnostic = Elastic.Documentation.Diagnostics.Diagnostic;
namespace Elastic.Documentation.Tooling.Diagnostics.Console;
diff --git a/src/Elastic.Documentation.Tooling/Diagnostics/Console/GithubAnnotationOutput.cs b/src/Elastic.Documentation.Tooling/Diagnostics/Console/GithubAnnotationOutput.cs
index cfa66d913..a1ba21fe4 100644
--- a/src/Elastic.Documentation.Tooling/Diagnostics/Console/GithubAnnotationOutput.cs
+++ b/src/Elastic.Documentation.Tooling/Diagnostics/Console/GithubAnnotationOutput.cs
@@ -4,6 +4,7 @@
using Actions.Core;
using Actions.Core.Services;
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.Diagnostics;
namespace Elastic.Documentation.Tooling.Diagnostics.Console;
diff --git a/src/Elastic.Documentation.Tooling/Diagnostics/Log.cs b/src/Elastic.Documentation.Tooling/Diagnostics/Log.cs
index 2334e5412..60f0bb0ac 100644
--- a/src/Elastic.Documentation.Tooling/Diagnostics/Log.cs
+++ b/src/Elastic.Documentation.Tooling/Diagnostics/Log.cs
@@ -2,6 +2,7 @@
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.Diagnostics;
using Microsoft.Extensions.Logging;
diff --git a/src/Elastic.Markdown/BuildContext.cs b/src/Elastic.Markdown/BuildContext.cs
index 1d5d26613..2f5db3170 100644
--- a/src/Elastic.Markdown/BuildContext.cs
+++ b/src/Elastic.Markdown/BuildContext.cs
@@ -2,14 +2,12 @@
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information
-using System.Diagnostics.CodeAnalysis;
using System.IO.Abstractions;
-using System.Web;
-using Elastic.Markdown.Diagnostics;
+using Elastic.Documentation;
+using Elastic.Documentation.Configuration.Assembler;
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.IO;
using Elastic.Markdown.IO.Configuration;
-using Elastic.Markdown.IO.Discovery;
-using Elastic.Markdown.IO.State;
namespace Elastic.Markdown;
@@ -117,28 +115,3 @@ from folder in knownFolders
}
}
-
-public record GoogleTagManagerConfiguration
-{
- public bool Enabled { get; init; }
- [MemberNotNullWhen(returnValue: true, nameof(Enabled))]
- public string? Id { get; init; }
- public string? Auth { get; init; }
- public string? Preview { get; init; }
- public string? CookiesWin { get; init; }
-
- public string QueryString()
- {
- var queryString = HttpUtility.ParseQueryString(string.Empty);
- if (Auth is not null)
- queryString.Add("gtm_auth", Auth);
-
- if (Preview is not null)
- queryString.Add("gtm_preview", Preview);
-
- if (CookiesWin is not null)
- queryString.Add("gtm_cookies_win", CookiesWin);
-
- return queryString.Count > 0 ? $"&{queryString}" : string.Empty;
- }
-}
diff --git a/src/Elastic.Markdown/Diagnostics/ProcessorDiagnosticExtensions.cs b/src/Elastic.Markdown/Diagnostics/ProcessorDiagnosticExtensions.cs
index c644e3395..136f3c605 100644
--- a/src/Elastic.Markdown/Diagnostics/ProcessorDiagnosticExtensions.cs
+++ b/src/Elastic.Markdown/Diagnostics/ProcessorDiagnosticExtensions.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information
using System.IO.Abstractions;
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.Myst;
using Elastic.Markdown.Myst.Directives;
using Markdig.Parsers;
diff --git a/src/Elastic.Markdown/DocumentationGenerator.cs b/src/Elastic.Markdown/DocumentationGenerator.cs
index 282195508..be029b2ba 100644
--- a/src/Elastic.Markdown/DocumentationGenerator.cs
+++ b/src/Elastic.Markdown/DocumentationGenerator.cs
@@ -5,10 +5,11 @@
using System.IO.Abstractions;
using System.Reflection;
using System.Text.Json;
+using Elastic.Documentation.Serialization;
+using Elastic.Documentation.State;
using Elastic.Markdown.Exporters;
using Elastic.Markdown.IO;
using Elastic.Markdown.IO.HistoryMapping;
-using Elastic.Markdown.IO.State;
using Elastic.Markdown.Links.CrossLinks;
using Elastic.Markdown.Slices;
using Markdig.Syntax;
@@ -268,7 +269,7 @@ private bool CompilationNotNeeded(GenerationState? generationState, out HashSet<
private async Task GenerateLinkReference(Cancel ctx)
{
var file = DocumentationSet.LinkReferenceFile;
- var state = LinkReference.Create(DocumentationSet);
+ var state = DocumentationSet.CreateLinkReference();
var bytes = JsonSerializer.SerializeToUtf8Bytes(state, SourceGenerationContext.Default.LinkReference);
await DocumentationSet.OutputDirectory.FileSystem.File.WriteAllBytesAsync(file.FullName, bytes, ctx);
diff --git a/src/Elastic.Markdown/Elastic.Markdown.csproj b/src/Elastic.Markdown/Elastic.Markdown.csproj
index 5dbb7560b..39084cb72 100644
--- a/src/Elastic.Markdown/Elastic.Markdown.csproj
+++ b/src/Elastic.Markdown/Elastic.Markdown.csproj
@@ -53,7 +53,6 @@
-
@@ -65,4 +64,8 @@
+
+
+
+
diff --git a/src/Elastic.Markdown/Extensions/DetectionRules/DetectionRulesDocsBuilderExtension.cs b/src/Elastic.Markdown/Extensions/DetectionRules/DetectionRulesDocsBuilderExtension.cs
index 66d29a176..2d89613d4 100644
--- a/src/Elastic.Markdown/Extensions/DetectionRules/DetectionRulesDocsBuilderExtension.cs
+++ b/src/Elastic.Markdown/Extensions/DetectionRules/DetectionRulesDocsBuilderExtension.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information
using System.IO.Abstractions;
+using Elastic.Documentation.Configuration.TableOfContents;
using Elastic.Markdown.Exporters;
using Elastic.Markdown.IO;
using Elastic.Markdown.IO.Configuration;
diff --git a/src/Elastic.Markdown/Extensions/DetectionRules/DetectionRulesReference.cs b/src/Elastic.Markdown/Extensions/DetectionRules/DetectionRulesReference.cs
index a9db2a53f..9dd3b804b 100644
--- a/src/Elastic.Markdown/Extensions/DetectionRules/DetectionRulesReference.cs
+++ b/src/Elastic.Markdown/Extensions/DetectionRules/DetectionRulesReference.cs
@@ -2,6 +2,8 @@
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information
+using Elastic.Documentation.Configuration.TableOfContents;
+using Elastic.Documentation.Navigation;
using Elastic.Markdown.IO.Configuration;
namespace Elastic.Markdown.Extensions.DetectionRules;
diff --git a/src/Elastic.Markdown/Extensions/IDocsBuilderExtension.cs b/src/Elastic.Markdown/Extensions/IDocsBuilderExtension.cs
index cc5a5546b..730fda0d3 100644
--- a/src/Elastic.Markdown/Extensions/IDocsBuilderExtension.cs
+++ b/src/Elastic.Markdown/Extensions/IDocsBuilderExtension.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information
using System.IO.Abstractions;
+using Elastic.Documentation.Configuration.TableOfContents;
using Elastic.Markdown.Exporters;
using Elastic.Markdown.IO;
using Elastic.Markdown.IO.Configuration;
diff --git a/src/Elastic.Markdown/Helpers/Interpolation.cs b/src/Elastic.Markdown/Helpers/Interpolation.cs
index ef11e9bf1..332c5e172 100644
--- a/src/Elastic.Markdown/Helpers/Interpolation.cs
+++ b/src/Elastic.Markdown/Helpers/Interpolation.cs
@@ -4,6 +4,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Text.RegularExpressions;
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.Diagnostics;
using Elastic.Markdown.Myst;
diff --git a/src/Elastic.Markdown/IO/Configuration/ConfigurationFile.cs b/src/Elastic.Markdown/IO/Configuration/ConfigurationFile.cs
index d733e6287..d2953ee2f 100644
--- a/src/Elastic.Markdown/IO/Configuration/ConfigurationFile.cs
+++ b/src/Elastic.Markdown/IO/Configuration/ConfigurationFile.cs
@@ -4,17 +4,22 @@
using System.IO.Abstractions;
using DotNet.Globbing;
+using Elastic.Documentation;
+using Elastic.Documentation.Configuration.Builder;
+using Elastic.Documentation.Configuration.TableOfContents;
+using Elastic.Documentation.Navigation;
using Elastic.Markdown.Diagnostics;
using Elastic.Markdown.Extensions;
using Elastic.Markdown.Extensions.DetectionRules;
-using Elastic.Markdown.IO.State;
namespace Elastic.Markdown.IO.Configuration;
-public record ConfigurationFile : DocumentationFile, ITableOfContentsScope
+public record ConfigurationFile : ITableOfContentsScope
{
private readonly BuildContext _context;
+ public IFileInfo SourceFile => _context.ConfigurationPath;
+
public string? Project { get; }
public Glob[] Exclude { get; } = [];
@@ -57,7 +62,6 @@ Project is not null
&& Project.Equals("Elastic documentation", StringComparison.OrdinalIgnoreCase);
public ConfigurationFile(BuildContext context)
- : base(context.ConfigurationPath, context.DocumentationSourceDirectory, context.Git.RepositoryName)
{
_context = context;
ScopeDirectory = context.ConfigurationPath.Directory!;
diff --git a/src/Elastic.Markdown/IO/Configuration/RedirectFile.cs b/src/Elastic.Markdown/IO/Configuration/RedirectFile.cs
index 9c24d2066..e44439114 100644
--- a/src/Elastic.Markdown/IO/Configuration/RedirectFile.cs
+++ b/src/Elastic.Markdown/IO/Configuration/RedirectFile.cs
@@ -3,7 +3,7 @@
// See the LICENSE file in the project root for more information
using System.IO.Abstractions;
-using Elastic.Markdown.IO.State;
+using Elastic.Documentation;
using YamlDotNet.RepresentationModel;
namespace Elastic.Markdown.IO.Configuration;
diff --git a/src/Elastic.Markdown/IO/Configuration/TableOfContentsConfiguration.cs b/src/Elastic.Markdown/IO/Configuration/TableOfContentsConfiguration.cs
index 69e1bd2b0..e8ef5c8fb 100644
--- a/src/Elastic.Markdown/IO/Configuration/TableOfContentsConfiguration.cs
+++ b/src/Elastic.Markdown/IO/Configuration/TableOfContentsConfiguration.cs
@@ -4,29 +4,14 @@
using System.IO.Abstractions;
using System.Runtime.InteropServices;
+using Elastic.Documentation;
+using Elastic.Documentation.Configuration.TableOfContents;
+using Elastic.Documentation.Navigation;
using Elastic.Markdown.Extensions.DetectionRules;
using YamlDotNet.RepresentationModel;
namespace Elastic.Markdown.IO.Configuration;
-public interface ITableOfContentsScope
-{
- IDirectoryInfo ScopeDirectory { get; }
-}
-
-public static class ContentSourceMoniker
-{
- public static Uri Create(string repo, string? path) => new(CreateString(repo, path));
-
- public static string CreateString(string repo, string? path)
- {
- path = path?.Replace("\\", "/").Trim('/');
- if (string.IsNullOrWhiteSpace(path) || path == ".")
- return $"{repo}://";
- return $"{repo}://{path}/";
- }
-}
-
public record TableOfContentsConfiguration : ITableOfContentsScope
{
private readonly BuildContext _context;
diff --git a/src/Elastic.Markdown/IO/Configuration/YamlStreamReader.cs b/src/Elastic.Markdown/IO/Configuration/YamlStreamReader.cs
index c85d5836e..d691f156b 100644
--- a/src/Elastic.Markdown/IO/Configuration/YamlStreamReader.cs
+++ b/src/Elastic.Markdown/IO/Configuration/YamlStreamReader.cs
@@ -4,6 +4,7 @@
using System.Diagnostics.CodeAnalysis;
using System.IO.Abstractions;
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.Diagnostics;
using YamlDotNet.Core;
using YamlDotNet.RepresentationModel;
diff --git a/src/Elastic.Markdown/IO/DocumentationSet.cs b/src/Elastic.Markdown/IO/DocumentationSet.cs
index eac36321c..3c3d896c5 100644
--- a/src/Elastic.Markdown/IO/DocumentationSet.cs
+++ b/src/Elastic.Markdown/IO/DocumentationSet.cs
@@ -5,10 +5,11 @@
using System.Collections.Frozen;
using System.IO.Abstractions;
using System.Runtime.InteropServices;
+using Elastic.Documentation;
+using Elastic.Documentation.Configuration.TableOfContents;
using Elastic.Markdown.Diagnostics;
using Elastic.Markdown.Extensions;
using Elastic.Markdown.IO.Configuration;
-using Elastic.Markdown.IO.Discovery;
using Elastic.Markdown.IO.Navigation;
using Elastic.Markdown.Links.CrossLinks;
using Elastic.Markdown.Myst;
@@ -111,7 +112,6 @@ public class DocumentationSet : INavigationLookups, IPositionalNavigation
public FrozenDictionary MarkdownNavigationLookup { get; }
- // FrozenDictionary? indexedTableOfContents = null
public DocumentationSet(
BuildContext build,
ILoggerFactory logger,
@@ -320,7 +320,6 @@ void ValidateExists(string from, string to, IReadOnlyDictionary
return null;
}
-
public async Task ResolveDirectoryTree(Cancel ctx) =>
await Tree.Resolve(ctx);
@@ -358,6 +357,31 @@ MarkdownFile ExtensionOrDefaultMarkdown()
return new MarkdownFile(file, SourceDirectory, MarkdownParser, context, this);
}
}
+
+ public LinkReference CreateLinkReference()
+ {
+ var redirects = Configuration.Redirects;
+ var crossLinks = Build.Collector.CrossLinks.ToHashSet().ToArray();
+ var links = MarkdownFiles.Values
+ .Select(m => (m.LinkReferenceRelativePath, File: m))
+ .ToDictionary(k => RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
+ ? k.LinkReferenceRelativePath.Replace('\\', '/')
+ : k.LinkReferenceRelativePath, v =>
+ {
+ var anchors = v.File.Anchors.Count == 0 ? null : v.File.Anchors.ToArray();
+ return new LinkMetadata { Anchors = anchors, Hidden = v.File.Hidden };
+ });
+
+ return new LinkReference
+ {
+ Redirects = redirects,
+ UrlPathPrefix = Build.UrlPathPrefix,
+ Origin = Build.Git,
+ Links = links,
+ CrossLinks = crossLinks
+ };
+ }
+
public void ClearOutputDirectory()
{
if (OutputDirectory.Exists)
diff --git a/src/Elastic.Markdown/IO/MarkdownFile.cs b/src/Elastic.Markdown/IO/MarkdownFile.cs
index f5089a884..a5f021cf4 100644
--- a/src/Elastic.Markdown/IO/MarkdownFile.cs
+++ b/src/Elastic.Markdown/IO/MarkdownFile.cs
@@ -4,6 +4,8 @@
using System.IO.Abstractions;
using System.Runtime.InteropServices;
+using Elastic.Documentation.Diagnostics;
+using Elastic.Documentation.Navigation;
using Elastic.Markdown.Diagnostics;
using Elastic.Markdown.Helpers;
using Elastic.Markdown.IO.Configuration;
diff --git a/src/Elastic.Markdown/IO/Navigation/DocumentationGroup.cs b/src/Elastic.Markdown/IO/Navigation/DocumentationGroup.cs
index 60b9f02c9..fd5c31b6b 100644
--- a/src/Elastic.Markdown/IO/Navigation/DocumentationGroup.cs
+++ b/src/Elastic.Markdown/IO/Navigation/DocumentationGroup.cs
@@ -4,6 +4,7 @@
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
+using Elastic.Documentation.Configuration.TableOfContents;
using Elastic.Markdown.Diagnostics;
using Elastic.Markdown.IO.Configuration;
diff --git a/src/Elastic.Markdown/Links/CrossLinks/ConfigurationCrossLinkFetcher.cs b/src/Elastic.Markdown/Links/CrossLinks/ConfigurationCrossLinkFetcher.cs
index f62202715..81a7e33e4 100644
--- a/src/Elastic.Markdown/Links/CrossLinks/ConfigurationCrossLinkFetcher.cs
+++ b/src/Elastic.Markdown/Links/CrossLinks/ConfigurationCrossLinkFetcher.cs
@@ -3,8 +3,9 @@
// See the LICENSE file in the project root for more information
using System.Collections.Frozen;
+using Elastic.Documentation;
+using Elastic.Documentation.Links;
using Elastic.Markdown.IO.Configuration;
-using Elastic.Markdown.IO.State;
using Microsoft.Extensions.Logging;
namespace Elastic.Markdown.Links.CrossLinks;
diff --git a/src/Elastic.Markdown/Links/CrossLinks/CrossLinkFetcher.cs b/src/Elastic.Markdown/Links/CrossLinks/CrossLinkFetcher.cs
index 6fd7c9acd..5c3d7ccd5 100644
--- a/src/Elastic.Markdown/Links/CrossLinks/CrossLinkFetcher.cs
+++ b/src/Elastic.Markdown/Links/CrossLinks/CrossLinkFetcher.cs
@@ -4,8 +4,10 @@
using System.Collections.Frozen;
using System.Text.Json;
+using Elastic.Documentation;
+using Elastic.Documentation.Links;
+using Elastic.Documentation.Serialization;
using Elastic.Markdown.IO;
-using Elastic.Markdown.IO.State;
using Microsoft.Extensions.Logging;
namespace Elastic.Markdown.Links.CrossLinks;
diff --git a/src/Elastic.Markdown/Links/CrossLinks/CrossLinkResolver.cs b/src/Elastic.Markdown/Links/CrossLinks/CrossLinkResolver.cs
index 60a070aef..82bf88003 100644
--- a/src/Elastic.Markdown/Links/CrossLinks/CrossLinkResolver.cs
+++ b/src/Elastic.Markdown/Links/CrossLinks/CrossLinkResolver.cs
@@ -4,49 +4,10 @@
using System.Collections.Frozen;
using System.Diagnostics.CodeAnalysis;
-using System.Text.Json;
-using System.Text.Json.Serialization;
-using Elastic.Markdown.IO.State;
+using Elastic.Documentation;
namespace Elastic.Markdown.Links.CrossLinks;
-public record LinkIndex
-{
- [JsonPropertyName("repositories")] public required Dictionary> Repositories { get; init; }
-
- public static LinkIndex Deserialize(Stream json) =>
- JsonSerializer.Deserialize(json, SourceGenerationContext.Default.LinkIndex)!;
-
- public static LinkIndex Deserialize(string json) =>
- JsonSerializer.Deserialize(json, SourceGenerationContext.Default.LinkIndex)!;
-
- public static string Serialize(LinkIndex index) =>
- JsonSerializer.Serialize(index, SourceGenerationContext.Default.LinkIndex);
-}
-
-public record LinkIndexEntry
-{
- [JsonPropertyName("repository")]
- public required string Repository { get; init; }
-
- [JsonPropertyName("path")]
- public required string Path { get; init; }
-
- [JsonPropertyName("branch")]
- public required string Branch { get; init; }
-
- [JsonPropertyName("etag")]
- public required string ETag { get; init; }
-
- // TODO can be made required after all doc_sets have published again
- [JsonPropertyName("updated_at")]
- public DateTime UpdatedAt { get; init; } = DateTime.MinValue;
-
- // TODO can be made required after all doc_sets have published again
- [JsonPropertyName("ref")]
- public string GitReference { get; init; } = "unknown";
-}
-
public interface ICrossLinkResolver
{
Task FetchLinks(Cancel ctx);
diff --git a/src/Elastic.Markdown/Links/InboundLinks/LinkIndexCrossLinkFetcher.cs b/src/Elastic.Markdown/Links/InboundLinks/LinkIndexCrossLinkFetcher.cs
index d9ecfe50d..0caa7917e 100644
--- a/src/Elastic.Markdown/Links/InboundLinks/LinkIndexCrossLinkFetcher.cs
+++ b/src/Elastic.Markdown/Links/InboundLinks/LinkIndexCrossLinkFetcher.cs
@@ -3,7 +3,8 @@
// See the LICENSE file in the project root for more information
using System.Collections.Frozen;
-using Elastic.Markdown.IO.State;
+using Elastic.Documentation;
+using Elastic.Documentation.Links;
using Elastic.Markdown.Links.CrossLinks;
using Microsoft.Extensions.Logging;
diff --git a/src/Elastic.Markdown/Links/InboundLinks/LinkIndexLinkChecker.cs b/src/Elastic.Markdown/Links/InboundLinks/LinkIndexLinkChecker.cs
index 1183e2b91..d6777b926 100644
--- a/src/Elastic.Markdown/Links/InboundLinks/LinkIndexLinkChecker.cs
+++ b/src/Elastic.Markdown/Links/InboundLinks/LinkIndexLinkChecker.cs
@@ -2,9 +2,9 @@
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information
-using Elastic.Markdown.Diagnostics;
+using Elastic.Documentation;
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.IO;
-using Elastic.Markdown.IO.State;
using Elastic.Markdown.Links.CrossLinks;
using Microsoft.Extensions.Logging;
diff --git a/src/Elastic.Markdown/Slices/HtmlWriter.cs b/src/Elastic.Markdown/Slices/HtmlWriter.cs
index 19c48096c..f23f432ac 100644
--- a/src/Elastic.Markdown/Slices/HtmlWriter.cs
+++ b/src/Elastic.Markdown/Slices/HtmlWriter.cs
@@ -4,9 +4,9 @@
using System.Collections.Concurrent;
using System.IO.Abstractions;
+using Elastic.Documentation;
using Elastic.Markdown.Extensions.DetectionRules;
using Elastic.Markdown.IO;
-using Elastic.Markdown.IO.Discovery;
using Elastic.Markdown.IO.HistoryMapping;
using Elastic.Markdown.IO.Navigation;
using Markdig.Syntax;
diff --git a/src/Elastic.Markdown/Slices/_ViewModels.cs b/src/Elastic.Markdown/Slices/_ViewModels.cs
index 8e0bf3c07..cc845c2be 100644
--- a/src/Elastic.Markdown/Slices/_ViewModels.cs
+++ b/src/Elastic.Markdown/Slices/_ViewModels.cs
@@ -2,8 +2,9 @@
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information
+using Elastic.Documentation.Configuration.Assembler;
+using Elastic.Documentation.Configuration.Builder;
using Elastic.Markdown.IO;
-using Elastic.Markdown.IO.Configuration;
using Elastic.Markdown.IO.HistoryMapping;
using Elastic.Markdown.IO.Navigation;
using Elastic.Markdown.Myst.FrontMatter;
diff --git a/src/docs-assembler/AssembleContext.cs b/src/docs-assembler/AssembleContext.cs
index da6f71679..5cc98e192 100644
--- a/src/docs-assembler/AssembleContext.cs
+++ b/src/docs-assembler/AssembleContext.cs
@@ -4,10 +4,9 @@
using System.IO.Abstractions;
using System.Reflection;
-using Documentation.Assembler.Configuration;
-using Elastic.Markdown.Diagnostics;
+using Elastic.Documentation.Configuration.Assembler;
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.IO;
-using Elastic.Markdown.IO.State;
namespace Documentation.Assembler;
diff --git a/src/docs-assembler/AssembleSources.cs b/src/docs-assembler/AssembleSources.cs
index e11a8b553..c31868bc5 100644
--- a/src/docs-assembler/AssembleSources.cs
+++ b/src/docs-assembler/AssembleSources.cs
@@ -5,9 +5,10 @@
using System.Collections.Frozen;
using System.IO.Abstractions;
using Documentation.Assembler.Building;
-using Documentation.Assembler.Configuration;
using Documentation.Assembler.Navigation;
using Documentation.Assembler.Sourcing;
+using Elastic.Documentation;
+using Elastic.Documentation.Configuration.Assembler;
using Elastic.Markdown.IO.Configuration;
using Elastic.Markdown.IO.Navigation;
using Elastic.Markdown.Links.CrossLinks;
diff --git a/src/docs-assembler/Building/AssemblerCrossLinkFetcher.cs b/src/docs-assembler/Building/AssemblerCrossLinkFetcher.cs
index 815a5f442..624c5beb0 100644
--- a/src/docs-assembler/Building/AssemblerCrossLinkFetcher.cs
+++ b/src/docs-assembler/Building/AssemblerCrossLinkFetcher.cs
@@ -3,8 +3,9 @@
// See the LICENSE file in the project root for more information
using System.Collections.Frozen;
-using Documentation.Assembler.Configuration;
-using Elastic.Markdown.IO.State;
+using Elastic.Documentation;
+using Elastic.Documentation.Configuration.Assembler;
+using Elastic.Documentation.Links;
using Elastic.Markdown.Links.CrossLinks;
using Microsoft.Extensions.Logging;
diff --git a/src/docs-assembler/Building/PublishEnvironmentUriResolver.cs b/src/docs-assembler/Building/PublishEnvironmentUriResolver.cs
index 8d279c99a..b588bb97f 100644
--- a/src/docs-assembler/Building/PublishEnvironmentUriResolver.cs
+++ b/src/docs-assembler/Building/PublishEnvironmentUriResolver.cs
@@ -3,8 +3,8 @@
// See the LICENSE file in the project root for more information
using System.Collections.Frozen;
-using Documentation.Assembler.Configuration;
using Documentation.Assembler.Extensions;
+using Elastic.Documentation.Configuration.Assembler;
using Elastic.Markdown.Links.CrossLinks;
namespace Documentation.Assembler.Building;
diff --git a/src/docs-assembler/Cli/InboundLinkCommands.cs b/src/docs-assembler/Cli/InboundLinkCommands.cs
index 631ee891b..aa3238ff5 100644
--- a/src/docs-assembler/Cli/InboundLinkCommands.cs
+++ b/src/docs-assembler/Cli/InboundLinkCommands.cs
@@ -6,9 +6,9 @@
using System.IO.Abstractions;
using Actions.Core.Services;
using ConsoleAppFramework;
+using Elastic.Documentation;
using Elastic.Documentation.Tooling.Diagnostics.Console;
using Elastic.Markdown.IO;
-using Elastic.Markdown.IO.Discovery;
using Elastic.Markdown.Links.InboundLinks;
using Microsoft.Extensions.Logging;
diff --git a/src/docs-assembler/Cli/NavigationCommands.cs b/src/docs-assembler/Cli/NavigationCommands.cs
index 0c8cfc165..64deccc8c 100644
--- a/src/docs-assembler/Cli/NavigationCommands.cs
+++ b/src/docs-assembler/Cli/NavigationCommands.cs
@@ -6,14 +6,12 @@
using System.IO.Abstractions;
using Actions.Core.Services;
using ConsoleAppFramework;
-using Documentation.Assembler.Building;
using Documentation.Assembler.Links;
using Documentation.Assembler.Navigation;
+using Elastic.Documentation;
using Elastic.Documentation.Tooling.Diagnostics.Console;
using Elastic.Documentation.Tooling.Filters;
using Elastic.Markdown.IO;
-using Elastic.Markdown.IO.Discovery;
-using Elastic.Markdown.Links.InboundLinks;
using Microsoft.Extensions.Logging;
namespace Documentation.Assembler.Cli;
diff --git a/src/docs-assembler/Cli/RepositoryCommands.cs b/src/docs-assembler/Cli/RepositoryCommands.cs
index c2b7c0552..85e757150 100644
--- a/src/docs-assembler/Cli/RepositoryCommands.cs
+++ b/src/docs-assembler/Cli/RepositoryCommands.cs
@@ -12,15 +12,14 @@
using Amazon.S3.Model;
using ConsoleAppFramework;
using Documentation.Assembler.Building;
-using Documentation.Assembler.Configuration;
using Documentation.Assembler.Mapping;
using Documentation.Assembler.Navigation;
using Documentation.Assembler.Sourcing;
+using Elastic.Documentation.Configuration.Assembler;
using Elastic.Documentation.Tooling.Diagnostics.Console;
using Elastic.Markdown;
using Elastic.Markdown.Exporters;
using Elastic.Markdown.IO;
-using Elastic.Markdown.IO.State;
using Microsoft.Extensions.Logging;
namespace Documentation.Assembler.Cli;
diff --git a/src/docs-assembler/Links/NavigationPrefixChecker.cs b/src/docs-assembler/Links/NavigationPrefixChecker.cs
index 88413df81..c693e2326 100644
--- a/src/docs-assembler/Links/NavigationPrefixChecker.cs
+++ b/src/docs-assembler/Links/NavigationPrefixChecker.cs
@@ -3,13 +3,11 @@
// See the LICENSE file in the project root for more information
using System.Collections.Immutable;
-using System.Diagnostics.CodeAnalysis;
using Documentation.Assembler.Building;
-using Documentation.Assembler.Configuration;
using Documentation.Assembler.Navigation;
-using Elastic.Markdown.Diagnostics;
+using Elastic.Documentation;
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.IO;
-using Elastic.Markdown.IO.State;
using Elastic.Markdown.Links.CrossLinks;
using Elastic.Markdown.Links.InboundLinks;
using Microsoft.Extensions.Logging;
diff --git a/src/docs-assembler/Navigation/AssemblerDocumentationSet.cs b/src/docs-assembler/Navigation/AssemblerDocumentationSet.cs
index 38b5c3c25..caef24b34 100644
--- a/src/docs-assembler/Navigation/AssemblerDocumentationSet.cs
+++ b/src/docs-assembler/Navigation/AssemblerDocumentationSet.cs
@@ -3,9 +3,10 @@
// See the LICENSE file in the project root for more information
using Documentation.Assembler.Sourcing;
+using Elastic.Documentation;
+using Elastic.Documentation.Configuration.Assembler;
using Elastic.Markdown;
using Elastic.Markdown.IO;
-using Elastic.Markdown.IO.Discovery;
using Elastic.Markdown.IO.Navigation;
using Elastic.Markdown.Links.CrossLinks;
using Microsoft.Extensions.Logging;
diff --git a/src/docs-assembler/Navigation/GlobalNavigation.cs b/src/docs-assembler/Navigation/GlobalNavigation.cs
index 967cc247c..5560e09f4 100644
--- a/src/docs-assembler/Navigation/GlobalNavigation.cs
+++ b/src/docs-assembler/Navigation/GlobalNavigation.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information
using System.Collections.Frozen;
+using Elastic.Documentation.Configuration.TableOfContents;
using Elastic.Markdown.IO;
using Elastic.Markdown.IO.Configuration;
using Elastic.Markdown.IO.Navigation;
diff --git a/src/docs-assembler/Navigation/GlobalNavigationFile.cs b/src/docs-assembler/Navigation/GlobalNavigationFile.cs
index a04cd2950..1af4eae69 100644
--- a/src/docs-assembler/Navigation/GlobalNavigationFile.cs
+++ b/src/docs-assembler/Navigation/GlobalNavigationFile.cs
@@ -4,7 +4,10 @@
using System.Collections.Immutable;
using System.IO.Abstractions;
-using Documentation.Assembler.Configuration;
+using Elastic.Documentation;
+using Elastic.Documentation.Configuration.Assembler;
+using Elastic.Documentation.Configuration.TableOfContents;
+using Elastic.Documentation.Navigation;
using Elastic.Markdown.IO.Configuration;
using YamlDotNet.RepresentationModel;
diff --git a/src/docs-assembler/Navigation/GlobalNavigationPathProvider.cs b/src/docs-assembler/Navigation/GlobalNavigationPathProvider.cs
index 83d54c109..a5cd4f60b 100644
--- a/src/docs-assembler/Navigation/GlobalNavigationPathProvider.cs
+++ b/src/docs-assembler/Navigation/GlobalNavigationPathProvider.cs
@@ -5,11 +5,11 @@
using System.Collections.Immutable;
using System.IO.Abstractions;
using Documentation.Assembler.Extensions;
+using Elastic.Documentation;
using Elastic.Markdown;
using Elastic.Markdown.Diagnostics;
using Elastic.Markdown.Extensions.DetectionRules;
using Elastic.Markdown.IO;
-using Elastic.Markdown.IO.Configuration;
namespace Documentation.Assembler.Navigation;
diff --git a/src/docs-assembler/Program.cs b/src/docs-assembler/Program.cs
index 6cce8258d..96f198715 100644
--- a/src/docs-assembler/Program.cs
+++ b/src/docs-assembler/Program.cs
@@ -5,6 +5,7 @@
using Actions.Core.Services;
using ConsoleAppFramework;
using Documentation.Assembler.Cli;
+using Elastic.Documentation.Diagnostics;
using Elastic.Documentation.Tooling;
using Elastic.Documentation.Tooling.Filters;
using Elastic.Markdown.Diagnostics;
diff --git a/src/docs-assembler/Sourcing/Checkout.cs b/src/docs-assembler/Sourcing/Checkout.cs
index 655b25302..c6ea887b6 100644
--- a/src/docs-assembler/Sourcing/Checkout.cs
+++ b/src/docs-assembler/Sourcing/Checkout.cs
@@ -3,7 +3,7 @@
// See the LICENSE file in the project root for more information
using System.IO.Abstractions;
-using Documentation.Assembler.Configuration;
+using Elastic.Documentation.Configuration.Assembler;
namespace Documentation.Assembler.Sourcing;
diff --git a/src/docs-assembler/Sourcing/RepositorySourcesFetcher.cs b/src/docs-assembler/Sourcing/RepositorySourcesFetcher.cs
index d3ed69ebe..743b3b198 100644
--- a/src/docs-assembler/Sourcing/RepositorySourcesFetcher.cs
+++ b/src/docs-assembler/Sourcing/RepositorySourcesFetcher.cs
@@ -6,11 +6,9 @@
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.IO.Abstractions;
-using Documentation.Assembler.Configuration;
-using Elastic.Documentation.Tooling.Diagnostics.Console;
-using Elastic.Markdown.Diagnostics;
+using Elastic.Documentation.Configuration.Assembler;
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.IO;
-using Elastic.Markdown.IO.State;
using Microsoft.Extensions.Logging;
using ProcNet;
using ProcNet.Std;
diff --git a/src/docs-assembler/docs-assembler.csproj b/src/docs-assembler/docs-assembler.csproj
index d28197929..eca28182e 100644
--- a/src/docs-assembler/docs-assembler.csproj
+++ b/src/docs-assembler/docs-assembler.csproj
@@ -26,6 +26,7 @@
+
@@ -35,4 +36,8 @@
+
+
+
+
diff --git a/src/docs-builder/Cli/InboundLinkCommands.cs b/src/docs-builder/Cli/InboundLinkCommands.cs
index 6c07ea930..7463a854a 100644
--- a/src/docs-builder/Cli/InboundLinkCommands.cs
+++ b/src/docs-builder/Cli/InboundLinkCommands.cs
@@ -6,10 +6,10 @@
using System.IO.Abstractions;
using Actions.Core.Services;
using ConsoleAppFramework;
+using Elastic.Documentation;
using Elastic.Documentation.Tooling.Diagnostics.Console;
using Elastic.Documentation.Tooling.Filters;
using Elastic.Markdown.IO;
-using Elastic.Markdown.IO.Discovery;
using Elastic.Markdown.Links.InboundLinks;
using Microsoft.Extensions.Logging;
diff --git a/src/docs-builder/Diagnostics/LiveMode/LiveModeDiagnosticsCollector.cs b/src/docs-builder/Diagnostics/LiveMode/LiveModeDiagnosticsCollector.cs
index 66f39cadf..3d38c2cd9 100644
--- a/src/docs-builder/Diagnostics/LiveMode/LiveModeDiagnosticsCollector.cs
+++ b/src/docs-builder/Diagnostics/LiveMode/LiveModeDiagnosticsCollector.cs
@@ -2,10 +2,11 @@
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information
+using Elastic.Documentation.Diagnostics;
using Elastic.Documentation.Tooling.Diagnostics;
using Elastic.Markdown.Diagnostics;
using Microsoft.Extensions.Logging;
-using Diagnostic = Elastic.Markdown.Diagnostics.Diagnostic;
+using Diagnostic = Elastic.Documentation.Diagnostics.Diagnostic;
namespace Documentation.Builder.Diagnostics.LiveMode;
diff --git a/src/docs-builder/Http/StaticWebHost.cs b/src/docs-builder/Http/StaticWebHost.cs
index a4950137a..a6599e121 100644
--- a/src/docs-builder/Http/StaticWebHost.cs
+++ b/src/docs-builder/Http/StaticWebHost.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information
using System.IO.Abstractions;
+using Elastic.Documentation.Diagnostics;
using Elastic.Documentation.Tooling;
using Elastic.Markdown;
using Elastic.Markdown.Diagnostics;
diff --git a/src/docs-builder/Program.cs b/src/docs-builder/Program.cs
index dea9f7007..a73494faa 100644
--- a/src/docs-builder/Program.cs
+++ b/src/docs-builder/Program.cs
@@ -4,6 +4,7 @@
using ConsoleAppFramework;
using Documentation.Builder.Cli;
+using Elastic.Documentation.Diagnostics;
using Elastic.Documentation.Tooling;
using Elastic.Markdown.Diagnostics;
using Microsoft.Extensions.DependencyInjection;
diff --git a/src/infra/docs-lambda-index-publisher/LinkIndexProvider.cs b/src/infra/docs-lambda-index-publisher/LinkIndexProvider.cs
index 6b00ab82b..3f7a3e9b5 100644
--- a/src/infra/docs-lambda-index-publisher/LinkIndexProvider.cs
+++ b/src/infra/docs-lambda-index-publisher/LinkIndexProvider.cs
@@ -5,7 +5,7 @@
using Amazon.Lambda.Core;
using Amazon.S3;
using Amazon.S3.Model;
-using Elastic.Markdown.Links.CrossLinks;
+using Elastic.Documentation.Links;
namespace Elastic.Documentation.Lambda.LinkIndexUploader;
diff --git a/src/infra/docs-lambda-index-publisher/LinkReferenceProvider.cs b/src/infra/docs-lambda-index-publisher/LinkReferenceProvider.cs
index cafcdb5b0..8be53f2d5 100644
--- a/src/infra/docs-lambda-index-publisher/LinkReferenceProvider.cs
+++ b/src/infra/docs-lambda-index-publisher/LinkReferenceProvider.cs
@@ -5,7 +5,6 @@
using Amazon.Lambda.Core;
using Amazon.S3;
using Amazon.S3.Model;
-using Elastic.Markdown.IO.State;
namespace Elastic.Documentation.Lambda.LinkIndexUploader;
diff --git a/src/infra/docs-lambda-index-publisher/Program.cs b/src/infra/docs-lambda-index-publisher/Program.cs
index 2ba317e28..ab434ab16 100644
--- a/src/infra/docs-lambda-index-publisher/Program.cs
+++ b/src/infra/docs-lambda-index-publisher/Program.cs
@@ -9,9 +9,9 @@
using Amazon.Lambda.SQSEvents;
using Amazon.S3;
using Amazon.S3.Util;
+using Elastic.Documentation;
using Elastic.Documentation.Lambda.LinkIndexUploader;
-using Elastic.Markdown.IO.State;
-using Elastic.Markdown.Links.CrossLinks;
+using Elastic.Documentation.Links;
const string bucketName = "elastic-docs-link-index";
const string indexFile = "link-index.json";
diff --git a/tests/Elastic.Markdown.Tests/Directives/ImageTests.cs b/tests/Elastic.Markdown.Tests/Directives/ImageTests.cs
index 8a6bcfc72..673e3eb9d 100644
--- a/tests/Elastic.Markdown.Tests/Directives/ImageTests.cs
+++ b/tests/Elastic.Markdown.Tests/Directives/ImageTests.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information
using System.IO.Abstractions.TestingHelpers;
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.Diagnostics;
using Elastic.Markdown.Myst.Directives;
using FluentAssertions;
diff --git a/tests/Elastic.Markdown.Tests/Directives/UnsupportedTests.cs b/tests/Elastic.Markdown.Tests/Directives/UnsupportedTests.cs
index ad8a8ca47..d2ed9f71b 100644
--- a/tests/Elastic.Markdown.Tests/Directives/UnsupportedTests.cs
+++ b/tests/Elastic.Markdown.Tests/Directives/UnsupportedTests.cs
@@ -2,6 +2,7 @@
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.Diagnostics;
using Elastic.Markdown.Myst.Directives;
using FluentAssertions;
diff --git a/tests/Elastic.Markdown.Tests/DocSet/LinkReferenceTests.cs b/tests/Elastic.Markdown.Tests/DocSet/LinkReferenceTests.cs
index d11ff457f..18e67b44c 100644
--- a/tests/Elastic.Markdown.Tests/DocSet/LinkReferenceTests.cs
+++ b/tests/Elastic.Markdown.Tests/DocSet/LinkReferenceTests.cs
@@ -2,16 +2,15 @@
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information
+using Elastic.Documentation;
using Elastic.Markdown.IO;
-using Elastic.Markdown.IO.Discovery;
-using Elastic.Markdown.IO.State;
using FluentAssertions;
namespace Elastic.Markdown.Tests.DocSet;
public class LinkReferenceTests : NavigationTestsBase
{
- public LinkReferenceTests(ITestOutputHelper output) : base(output) => Reference = LinkReference.Create(Set);
+ public LinkReferenceTests(ITestOutputHelper output) : base(output) => Reference = Set.CreateLinkReference();
private LinkReference Reference { get; }
diff --git a/tests/Elastic.Markdown.Tests/FileInclusion/IncludeTests.cs b/tests/Elastic.Markdown.Tests/FileInclusion/IncludeTests.cs
index 072fd206a..d6f345583 100644
--- a/tests/Elastic.Markdown.Tests/FileInclusion/IncludeTests.cs
+++ b/tests/Elastic.Markdown.Tests/FileInclusion/IncludeTests.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information
using System.IO.Abstractions.TestingHelpers;
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.Diagnostics;
using Elastic.Markdown.Myst.Directives;
using Elastic.Markdown.Tests.Directives;
diff --git a/tests/Elastic.Markdown.Tests/Inline/InlineLinkTests.cs b/tests/Elastic.Markdown.Tests/Inline/InlineLinkTests.cs
index ad5558d27..8d44e07ed 100644
--- a/tests/Elastic.Markdown.Tests/Inline/InlineLinkTests.cs
+++ b/tests/Elastic.Markdown.Tests/Inline/InlineLinkTests.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information
using System.IO.Abstractions.TestingHelpers;
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.Diagnostics;
using FluentAssertions;
using JetBrains.Annotations;
diff --git a/tests/Elastic.Markdown.Tests/SettingsInclusion/IncludeTests.cs b/tests/Elastic.Markdown.Tests/SettingsInclusion/IncludeTests.cs
index 8c639ff4c..5f4283810 100644
--- a/tests/Elastic.Markdown.Tests/SettingsInclusion/IncludeTests.cs
+++ b/tests/Elastic.Markdown.Tests/SettingsInclusion/IncludeTests.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information
using System.IO.Abstractions.TestingHelpers;
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.Diagnostics;
using Elastic.Markdown.IO;
using Elastic.Markdown.Myst.Directives;
diff --git a/tests/Elastic.Markdown.Tests/TestCrossLinkResolver.cs b/tests/Elastic.Markdown.Tests/TestCrossLinkResolver.cs
index 6d739f2a6..b359b415a 100644
--- a/tests/Elastic.Markdown.Tests/TestCrossLinkResolver.cs
+++ b/tests/Elastic.Markdown.Tests/TestCrossLinkResolver.cs
@@ -4,7 +4,8 @@
using System.Collections.Frozen;
using System.Diagnostics.CodeAnalysis;
-using Elastic.Markdown.IO.State;
+using Elastic.Documentation;
+using Elastic.Documentation.Links;
using Elastic.Markdown.Links.CrossLinks;
using Xunit.Internal;
diff --git a/tests/Elastic.Markdown.Tests/TestDiagnosticsCollector.cs b/tests/Elastic.Markdown.Tests/TestDiagnosticsCollector.cs
index 820808d23..fd28aa402 100644
--- a/tests/Elastic.Markdown.Tests/TestDiagnosticsCollector.cs
+++ b/tests/Elastic.Markdown.Tests/TestDiagnosticsCollector.cs
@@ -2,6 +2,7 @@
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.Diagnostics;
namespace Elastic.Markdown.Tests;
diff --git a/tests/authoring/Framework/ErrorCollectorAssertions.fs b/tests/authoring/Framework/ErrorCollectorAssertions.fs
index 95c4c9033..9e844f67a 100644
--- a/tests/authoring/Framework/ErrorCollectorAssertions.fs
+++ b/tests/authoring/Framework/ErrorCollectorAssertions.fs
@@ -6,7 +6,7 @@ namespace authoring
open System.Diagnostics
open System.Linq
-open Elastic.Markdown.Diagnostics
+open Elastic.Documentation.Diagnostics
open FsUnitTyped
open Swensen.Unquote
diff --git a/tests/authoring/Framework/TestCrossLinkResolver.fs b/tests/authoring/Framework/TestCrossLinkResolver.fs
index cc97b3027..9e645e92a 100644
--- a/tests/authoring/Framework/TestCrossLinkResolver.fs
+++ b/tests/authoring/Framework/TestCrossLinkResolver.fs
@@ -10,9 +10,10 @@ open System.Collections.Frozen
open System.Runtime.InteropServices
open System.Threading.Tasks
open System.Linq
+open Elastic.Documentation
+open Elastic.Documentation.Links
open Elastic.Markdown.Links.CrossLinks
open Elastic.Markdown.IO.Configuration
-open Elastic.Markdown.IO.State
type TestCrossLinkResolver (config: ConfigurationFile) =
diff --git a/tests/authoring/Framework/TestValues.fs b/tests/authoring/Framework/TestValues.fs
index c68c6c6b2..63dffdabd 100644
--- a/tests/authoring/Framework/TestValues.fs
+++ b/tests/authoring/Framework/TestValues.fs
@@ -7,8 +7,8 @@ namespace authoring
open System
open System.Collections.Concurrent
open System.IO.Abstractions
+open Elastic.Documentation.Diagnostics
open Elastic.Markdown
-open Elastic.Markdown.Diagnostics
open Elastic.Markdown.IO
open Markdig.Syntax
open Microsoft.Extensions.Logging
diff --git a/tests/docs-assembler.Tests/src/docs-assembler.Tests/AssemblerConfigurationTests.cs b/tests/docs-assembler.Tests/src/docs-assembler.Tests/AssemblerConfigurationTests.cs
index 2b527db89..5fad5cc61 100644
--- a/tests/docs-assembler.Tests/src/docs-assembler.Tests/AssemblerConfigurationTests.cs
+++ b/tests/docs-assembler.Tests/src/docs-assembler.Tests/AssemblerConfigurationTests.cs
@@ -3,10 +3,9 @@
// See the LICENSE file in the project root for more information
using System.IO.Abstractions;
-using Documentation.Assembler.Configuration;
-using Elastic.Markdown.Diagnostics;
+using Elastic.Documentation.Configuration.Assembler;
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.IO;
-using Elastic.Markdown.IO.State;
using FluentAssertions;
namespace Documentation.Assembler.Tests;
diff --git a/tests/docs-assembler.Tests/src/docs-assembler.Tests/GlobalNavigationTests.cs b/tests/docs-assembler.Tests/src/docs-assembler.Tests/GlobalNavigationTests.cs
index 39972f022..9ba1503bd 100644
--- a/tests/docs-assembler.Tests/src/docs-assembler.Tests/GlobalNavigationTests.cs
+++ b/tests/docs-assembler.Tests/src/docs-assembler.Tests/GlobalNavigationTests.cs
@@ -3,10 +3,10 @@
// See the LICENSE file in the project root for more information
using System.IO.Abstractions;
-using Documentation.Assembler.Configuration;
using Documentation.Assembler.Navigation;
using Documentation.Assembler.Sourcing;
-using Elastic.Markdown.Diagnostics;
+using Elastic.Documentation.Configuration.Assembler;
+using Elastic.Documentation.Diagnostics;
using Elastic.Markdown.IO;
using Elastic.Markdown.IO.Navigation;
using FluentAssertions;