Skip to content
Merged
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
161605f
Initial plan
Copilot Oct 2, 2025
31b3821
Add support for media types components in OAS 3.2.0
Copilot Oct 2, 2025
41a231e
Add comprehensive tests for media types components support
Copilot Oct 2, 2025
c1a7106
Merge branch 'feat/oai-3-2-support' into copilot/fix-1e80ce48-c500-40…
baywet Oct 2, 2025
9928a7b
chore: partial fix of the walker implementation for media type support
baywet Oct 2, 2025
3461332
Address code review feedback: use inheritdoc and StringComparer.Ordinal
Copilot Oct 2, 2025
02cf2b8
chore: use json node deep equals for comparison
baywet Oct 3, 2025
834e41f
feat: make response request body, header and parameter content refere…
baywet Oct 3, 2025
fda6621
Add media type reference tests for various usage scenarios
Copilot Oct 3, 2025
1d80375
chore: fixes is component information while walking media types
baywet Oct 3, 2025
c574203
fix: content property for header is not getting deserialized v3/3.1/3.2
baywet Oct 3, 2025
c4238b6
feat: implements media types references resolution
baywet Oct 3, 2025
c7d7753
chore: do not serialize media type components in version prior to 3.2
baywet Oct 3, 2025
a10eec7
chore: updates comment
baywet Oct 3, 2025
de83a99
Merge branch 'feat/oai-3-2-support' into copilot/fix-1e80ce48-c500-40…
baywet Oct 3, 2025
86f4e83
chore: avoid serializing media types components for anything bellow v…
baywet Oct 3, 2025
7ebed6d
chore: refreshes benchmarks
baywet Oct 3, 2025
91f51bb
test: adds unit tests for header content property deserialization
baywet Oct 3, 2025
1fc5629
Merge branch 'feat/oai-3-2-support' into copilot/fix-1e80ce48-c500-40…
baywet Oct 3, 2025
78458e8
test: adds serialization tests for 32 media type reference serialization
baywet Oct 3, 2025
6c5f86f
test: fixes media type inlining behaviour based on settings
baywet Oct 3, 2025
49f3921
feat: implements inlining of referenced media types when serializing …
baywet Oct 3, 2025
13e2ee9
chore: updates public api export
baywet Oct 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ WarmupCount=3
```
| Method | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated |
|------------- |---------------:|-------------:|-------------:|-----------:|-----------:|----------:|-------------:|
| PetStoreYaml | 492.5 μs | 1,328.0 μs | 72.79 μs | 62.5000 | 11.7188 | - | 387.71 KB |
| PetStoreJson | 197.1 μs | 127.1 μs | 6.97 μs | 40.0391 | 8.7891 | - | 249.85 KB |
| GHESYaml | 1,134,963.6 μs | 681,713.6 μs | 37,367.02 μs | 66000.0000 | 22000.0000 | 4000.0000 | 384551.49 KB |
| GHESJson | 750,469.7 μs | 851,637.3 μs | 46,681.12 μs | 40000.0000 | 15000.0000 | 3000.0000 | 246021.99 KB |
| PetStoreYaml | 525.7 μs | 1,392.5 μs | 76.33 μs | 62.5000 | 11.7188 | - | 387.72 KB |
| PetStoreJson | 241.1 μs | 706.2 μs | 38.71 μs | 40.0391 | 8.7891 | - | 249.86 KB |
| GHESYaml | 1,126,435.6 μs | 361,261.8 μs | 19,801.98 μs | 66000.0000 | 22000.0000 | 4000.0000 | 384551.24 KB |
| GHESJson | 970,225.6 μs | 187,943.8 μs | 10,301.84 μs | 40000.0000 | 16000.0000 | 3000.0000 | 246022.93 KB |
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev,Gen0,Gen1,Gen2,Allocated
PetStoreYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,492.5 μs,"1,328.0 μs",72.79 μs,62.5000,11.7188,0.0000,387.71 KB
PetStoreJson,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,197.1 μs,127.1 μs,6.97 μs,40.0391,8.7891,0.0000,249.85 KB
GHESYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"1,134,963.6 μs","681,713.6 μs","37,367.02 μs",66000.0000,22000.0000,4000.0000,384551.49 KB
GHESJson,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"750,469.7 μs","851,637.3 μs","46,681.12 μs",40000.0000,15000.0000,3000.0000,246021.99 KB
PetStoreYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,525.7 μs,"1,392.5 μs",76.33 μs,62.5000,11.7188,0.0000,387.72 KB
PetStoreJson,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,241.1 μs,706.2 μs,38.71 μs,40.0391,8.7891,0.0000,249.86 KB
GHESYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"1,126,435.6 μs","361,261.8 μs","19,801.98 μs",66000.0000,22000.0000,4000.0000,384551.24 KB
GHESJson,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"970,225.6 μs","187,943.8 μs","10,301.84 μs",40000.0000,16000.0000,3000.0000,246022.93 KB
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<html lang='en'>
<head>
<meta charset='utf-8' />
<title>performance.Descriptions-20251003-081742</title>
<title>performance.Descriptions-20251003-105951</title>

<style type="text/css">
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
Expand All @@ -26,10 +26,10 @@
<table>
<thead><tr><th>Method</th><th>Mean </th><th>Error </th><th>StdDev</th><th>Gen0</th><th>Gen1</th><th>Gen2</th><th>Allocated</th>
</tr>
</thead><tbody><tr><td>PetStoreYaml</td><td>492.5 &mu;s</td><td>1,328.0 &mu;s</td><td>72.79 &mu;s</td><td>62.5000</td><td>11.7188</td><td>-</td><td>387.71 KB</td>
</tr><tr><td>PetStoreJson</td><td>197.1 &mu;s</td><td>127.1 &mu;s</td><td>6.97 &mu;s</td><td>40.0391</td><td>8.7891</td><td>-</td><td>249.85 KB</td>
</tr><tr><td>GHESYaml</td><td>1,134,963.6 &mu;s</td><td>681,713.6 &mu;s</td><td>37,367.02 &mu;s</td><td>66000.0000</td><td>22000.0000</td><td>4000.0000</td><td>384551.49 KB</td>
</tr><tr><td>GHESJson</td><td>750,469.7 &mu;s</td><td>851,637.3 &mu;s</td><td>46,681.12 &mu;s</td><td>40000.0000</td><td>15000.0000</td><td>3000.0000</td><td>246021.99 KB</td>
</thead><tbody><tr><td>PetStoreYaml</td><td>525.7 &mu;s</td><td>1,392.5 &mu;s</td><td>76.33 &mu;s</td><td>62.5000</td><td>11.7188</td><td>-</td><td>387.72 KB</td>
</tr><tr><td>PetStoreJson</td><td>241.1 &mu;s</td><td>706.2 &mu;s</td><td>38.71 &mu;s</td><td>40.0391</td><td>8.7891</td><td>-</td><td>249.86 KB</td>
</tr><tr><td>GHESYaml</td><td>1,126,435.6 &mu;s</td><td>361,261.8 &mu;s</td><td>19,801.98 &mu;s</td><td>66000.0000</td><td>22000.0000</td><td>4000.0000</td><td>384551.24 KB</td>
</tr><tr><td>GHESJson</td><td>970,225.6 &mu;s</td><td>187,943.8 &mu;s</td><td>10,301.84 &mu;s</td><td>40000.0000</td><td>16000.0000</td><td>3000.0000</td><td>246022.93 KB</td>
</tr></tbody></table>
</body>
</html>

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -10,33 +10,33 @@ Job=ShortRun IterationCount=3 LaunchCount=1
WarmupCount=3

```
| Method | Mean | Error | StdDev | Gen0 | Gen1 | Allocated |
|---------------------------- |-----------:|------------:|-----------:|-------:|-------:|----------:|
| EmptyApiCallback | 5.645 ns | 7.8741 ns | 0.4316 ns | 0.0051 | - | 32 B |
| EmptyApiComponents | 6.006 ns | 5.2597 ns | 0.2883 ns | 0.0166 | - | 104 B |
| EmptyApiContact | 4.089 ns | 0.5878 ns | 0.0322 ns | 0.0076 | - | 48 B |
| EmptyApiDiscriminator | 4.782 ns | 8.0499 ns | 0.4412 ns | 0.0076 | - | 48 B |
| EmptyDocument | 433.420 ns | 187.8471 ns | 10.2965 ns | 0.1822 | 0.0005 | 1144 B |
| EmptyApiEncoding | 4.530 ns | 5.1398 ns | 0.2817 ns | 0.0089 | - | 56 B |
| EmptyApiExample | 7.305 ns | 43.4382 ns | 2.3810 ns | 0.0115 | - | 72 B |
| EmptyApiExternalDocs | 3.674 ns | 1.4908 ns | 0.0817 ns | 0.0064 | - | 40 B |
| EmptyApiHeader | 4.717 ns | 2.2016 ns | 0.1207 ns | 0.0127 | - | 80 B |
| EmptyApiInfo | 4.111 ns | 2.9213 ns | 0.1601 ns | 0.0127 | - | 80 B |
| EmptyApiLicense | 6.578 ns | 20.7582 ns | 1.1378 ns | 0.0076 | - | 48 B |
| EmptyApiLink | 4.809 ns | 7.0818 ns | 0.3882 ns | 0.0115 | - | 72 B |
| EmptyApiMediaType | 8.162 ns | 22.2763 ns | 1.2210 ns | 0.0127 | - | 80 B |
| EmptyApiOAuthFlow | 4.741 ns | 9.7498 ns | 0.5344 ns | 0.0102 | - | 64 B |
| EmptyApiOAuthFlows | 4.431 ns | 3.7652 ns | 0.2064 ns | 0.0102 | - | 64 B |
| EmptyApiOperation | 54.763 ns | 39.4861 ns | 2.1644 ns | 0.0599 | 0.0001 | 376 B |
| EmptyApiParameter | 5.538 ns | 5.7246 ns | 0.3138 ns | 0.0153 | - | 96 B |
| EmptyApiPathItem | 4.709 ns | 4.4763 ns | 0.2454 ns | 0.0102 | - | 64 B |
| EmptyApiPaths | 45.287 ns | 13.3268 ns | 0.7305 ns | 0.0395 | - | 248 B |
| EmptyApiRequestBody | 7.107 ns | 30.9082 ns | 1.6942 ns | 0.0076 | - | 48 B |
| EmptyApiResponse | 4.630 ns | 4.9979 ns | 0.2740 ns | 0.0102 | - | 64 B |
| EmptyApiResponses | 51.217 ns | 91.3082 ns | 5.0049 ns | 0.0395 | - | 248 B |
| EmptyApiSchema | 13.945 ns | 4.5336 ns | 0.2485 ns | 0.0650 | - | 408 B |
| EmptyApiSecurityRequirement | 8.539 ns | 2.4608 ns | 0.1349 ns | 0.0166 | - | 104 B |
| EmptyApiSecurityScheme | 5.019 ns | 5.0371 ns | 0.2761 ns | 0.0153 | - | 96 B |
| EmptyApiServer | 4.910 ns | 6.7044 ns | 0.3675 ns | 0.0089 | - | 56 B |
| EmptyApiServerVariable | 4.658 ns | 9.8425 ns | 0.5395 ns | 0.0076 | - | 48 B |
| EmptyApiTag | 4.635 ns | 2.2431 ns | 0.1230 ns | 0.0115 | - | 72 B |
| Method | Mean | Error | StdDev | Gen0 | Gen1 | Allocated |
|---------------------------- |-----------:|--------------:|------------:|-------:|-------:|----------:|
| EmptyApiCallback | 10.878 ns | 19.9347 ns | 1.0927 ns | 0.0051 | - | 32 B |
| EmptyApiComponents | 22.201 ns | 103.1325 ns | 5.6530 ns | 0.0179 | - | 112 B |
| EmptyApiContact | 6.480 ns | 19.5579 ns | 1.0720 ns | 0.0076 | - | 48 B |
| EmptyApiDiscriminator | 3.720 ns | 7.4808 ns | 0.4100 ns | 0.0076 | - | 48 B |
| EmptyDocument | 609.429 ns | 1,856.4007 ns | 101.7556 ns | 0.1822 | 0.0005 | 1144 B |
| EmptyApiEncoding | 8.411 ns | 31.0542 ns | 1.7022 ns | 0.0089 | - | 56 B |
| EmptyApiExample | 6.252 ns | 6.6823 ns | 0.3663 ns | 0.0115 | - | 72 B |
| EmptyApiExternalDocs | 4.488 ns | 7.6954 ns | 0.4218 ns | 0.0064 | - | 40 B |
| EmptyApiHeader | 5.854 ns | 24.3009 ns | 1.3320 ns | 0.0127 | - | 80 B |
| EmptyApiInfo | 8.092 ns | 40.7052 ns | 2.2312 ns | 0.0127 | - | 80 B |
| EmptyApiLicense | 4.119 ns | 4.6988 ns | 0.2576 ns | 0.0076 | - | 48 B |
| EmptyApiLink | 5.871 ns | 27.3828 ns | 1.5009 ns | 0.0115 | - | 72 B |
| EmptyApiMediaType | 6.413 ns | 7.4302 ns | 0.4073 ns | 0.0127 | - | 80 B |
| EmptyApiOAuthFlow | 5.674 ns | 13.8818 ns | 0.7609 ns | 0.0102 | - | 64 B |
| EmptyApiOAuthFlows | 5.290 ns | 7.3937 ns | 0.4053 ns | 0.0102 | - | 64 B |
| EmptyApiOperation | 65.442 ns | 21.1815 ns | 1.1610 ns | 0.0598 | - | 376 B |
| EmptyApiParameter | 5.995 ns | 3.5703 ns | 0.1957 ns | 0.0153 | - | 96 B |
| EmptyApiPathItem | 7.622 ns | 13.4673 ns | 0.7382 ns | 0.0102 | - | 64 B |
| EmptyApiPaths | 60.400 ns | 33.8603 ns | 1.8560 ns | 0.0395 | - | 248 B |
| EmptyApiRequestBody | 4.788 ns | 2.1215 ns | 0.1163 ns | 0.0076 | - | 48 B |
| EmptyApiResponse | 4.473 ns | 4.4310 ns | 0.2429 ns | 0.0102 | - | 64 B |
| EmptyApiResponses | 51.883 ns | 17.2049 ns | 0.9431 ns | 0.0395 | - | 248 B |
| EmptyApiSchema | 14.649 ns | 12.0213 ns | 0.6589 ns | 0.0650 | - | 408 B |
| EmptyApiSecurityRequirement | 11.993 ns | 51.2809 ns | 2.8109 ns | 0.0166 | - | 104 B |
| EmptyApiSecurityScheme | 18.539 ns | 21.9011 ns | 1.2005 ns | 0.0153 | - | 96 B |
| EmptyApiServer | 11.425 ns | 73.5659 ns | 4.0324 ns | 0.0089 | - | 56 B |
| EmptyApiServerVariable | 16.196 ns | 0.6269 ns | 0.0344 ns | 0.0076 | - | 48 B |
| EmptyApiTag | 19.659 ns | 6.4560 ns | 0.3539 ns | 0.0115 | - | 72 B |
Loading
Loading