From b55af177a7c7bb0b99900280a5425263e65e235b Mon Sep 17 00:00:00 2001 From: "benjamin.schmidt" Date: Wed, 18 Feb 2026 12:34:23 +0100 Subject: [PATCH] Allow pinning altair-static package version via AltairOptions --- src/Ui.Altair/AltairOptions.cs | 7 +++++++ src/Ui.Altair/Internal/AltairPageModel.cs | 6 +++++- src/Ui.Altair/Internal/altair.cshtml | 10 +++++----- .../GraphQL.Server.Ui.Altair.approved.txt | 1 + .../GraphQL.Server.Ui.Altair.approved.txt | 1 + 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/Ui.Altair/AltairOptions.cs b/src/Ui.Altair/AltairOptions.cs index a6d99e91..a4e3641c 100644 --- a/src/Ui.Altair/AltairOptions.cs +++ b/src/Ui.Altair/AltairOptions.cs @@ -41,4 +41,11 @@ public class AltairOptions /// Gets or sets a delegate that is called after all transformations of the Altair GraphQL UI page. /// public Func PostConfigure { get; set; } = (options, result) => result; + + /// + /// Optional parameter to pin altair-static package version, e.g. "8.5.1". + /// Will be used to access a specific cdn version e.g.: "https://cdn.jsdelivr.net/npm/altair-static@8.5.1/build/dist". + /// If empty (default value), automatic version resolution is used where no version pinning is utilized (latest). + /// + public string AltairVersion { get; set; } = string.Empty; } diff --git a/src/Ui.Altair/Internal/AltairPageModel.cs b/src/Ui.Altair/Internal/AltairPageModel.cs index 2fa9f3bc..7f34766e 100644 --- a/src/Ui.Altair/Internal/AltairPageModel.cs +++ b/src/Ui.Altair/Internal/AltairPageModel.cs @@ -41,7 +41,11 @@ public string Render() .Replace("@Model.SubscriptionsEndPoint", StringEncode(_options.SubscriptionsEndPoint)) .Replace("@Model.Headers", JsonSerialize(headers)) .Replace("@Model.SubscriptionsPayload", JsonSerialize(_options.SubscriptionsPayload)) - .Replace("@Model.Settings", JsonSerialize(_options.Settings)); + .Replace("@Model.Settings", JsonSerialize(_options.Settings)) + .Replace("@Model.AltairStaticBaseUrl", + string.IsNullOrEmpty(_options.AltairVersion) + ? "//cdn.jsdelivr.net/npm/altair-static/build/dist" + : $"//cdn.jsdelivr.net/npm/altair-static@{_options.AltairVersion}/build/dist"); // Here, fully-qualified, absolute and relative URLs are supported for both the // GraphQLEndPoint and SubscriptionsEndPoint. Those paths can be passed unmodified diff --git a/src/Ui.Altair/Internal/altair.cshtml b/src/Ui.Altair/Internal/altair.cshtml index b3e70540..ee835b34 100644 --- a/src/Ui.Altair/Internal/altair.cshtml +++ b/src/Ui.Altair/Internal/altair.cshtml @@ -4,10 +4,10 @@ Altair - + - - + + @@ -31,8 +31,8 @@ - - + +