Skip to content

Commit 9ad2b48

Browse files
Adds support for JSONC in plugin files. Closes #1194 (#1195)
1 parent df4de7d commit 9ad2b48

File tree

6 files changed

+13
-6
lines changed

6 files changed

+13
-6
lines changed

dev-proxy-abstractions/BaseLoader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public abstract class BaseLoader(ILogger logger, bool validateSchemas) : IDispos
2121

2222
private async Task<bool> ValidateFileContents(string fileContents)
2323
{
24-
using var document = JsonDocument.Parse(fileContents);
24+
using var document = JsonDocument.Parse(fileContents, ProxyUtils.JsonDocumentOptions);
2525
var root = document.RootElement;
2626

2727
if (!root.TryGetProperty("$schema", out var schemaUrl))

dev-proxy-abstractions/BaseProxyPlugin.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public virtual async Task RegisterAsync()
7474
var configSectionName = ConfigSection.Key;
7575
var configFile = await File.ReadAllTextAsync(Context.Configuration.ConfigFile);
7676

77-
using var document = JsonDocument.Parse(configFile);
77+
using var document = JsonDocument.Parse(configFile, ProxyUtils.JsonDocumentOptions);
7878
var root = document.RootElement;
7979

8080
if (!root.TryGetProperty(configSectionName, out var configSection))

dev-proxy-abstractions/ProxyUtils.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,13 +355,20 @@ public static void MergeHeaders(IList<MockResponseHeader> allHeaders, IList<Mock
355355
}
356356

357357
public static JsonSerializerOptions JsonSerializerOptions => jsonSerializerOptions;
358+
359+
public static JsonDocumentOptions JsonDocumentOptions { get; } = new()
360+
{
361+
AllowTrailingCommas = true,
362+
CommentHandling = JsonCommentHandling.Skip
363+
};
358364

359365
public static bool MatchesUrlToWatch(ISet<UrlToWatch> watchedUrls, string url, bool evaluateWildcards = false)
360366
{
361367
if (evaluateWildcards && url.Contains('*'))
362368
{
363369
// url contains a wildcard, so convert it to regex and compare
364-
var match = watchedUrls.FirstOrDefault(r => {
370+
var match = watchedUrls.FirstOrDefault(r =>
371+
{
365372
var pattern = RegexToPattern(r.Url);
366373
var result = UrlRegexComparer.CompareRegexPatterns(pattern, url);
367374
return result != UrlRegexComparisonResult.PatternsMutuallyExclusive;

dev-proxy-plugins/Inspection/LanguageModelPricingLoader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ protected override void LoadData(string fileContents)
2121
{
2222
// we need to deserialize manually because standard deserialization
2323
// doesn't support nested dictionaries
24-
using JsonDocument document = JsonDocument.Parse(fileContents);
24+
using JsonDocument document = JsonDocument.Parse(fileContents, ProxyUtils.JsonDocumentOptions);
2525

2626
if (document.RootElement.TryGetProperty("prices", out JsonElement pricesElement))
2727
{

dev-proxy-plugins/RequestLogs/OpenApiSpecGeneratorPlugin.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -747,7 +747,7 @@ private static OpenApiSchema GetSchemaFromJsonString(string jsonString)
747747
{
748748
try
749749
{
750-
using var doc = JsonDocument.Parse(jsonString);
750+
using var doc = JsonDocument.Parse(jsonString, ProxyUtils.JsonDocumentOptions);
751751
JsonElement root = doc.RootElement;
752752
var schema = GetSchemaFromJsonElement(root);
753753
return schema;

dev-proxy-plugins/RequestLogs/TypeSpecGeneratorPlugin.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -709,7 +709,7 @@ private async Task<Model[]> GetModelsFromStringAsync(string? str, string name, b
709709

710710
try
711711
{
712-
using var doc = JsonDocument.Parse(str);
712+
using var doc = JsonDocument.Parse(str, ProxyUtils.JsonDocumentOptions);
713713
JsonElement root = doc.RootElement;
714714
await AddModelFromJsonElementAsync(root, name, isError, models);
715715
}

0 commit comments

Comments
 (0)