Skip to content

Commit 2835473

Browse files
authored
Merge pull request #1349 from json-api-dotnet/multi-target-net8-ef8
Multi-target against .NET 6 and .NET 8
2 parents c1b911f + dea63fd commit 2835473

File tree

270 files changed

+4093
-3730
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

270 files changed

+4093
-3730
lines changed

.config/dotnet-tools.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"isRoot": true,
44
"tools": {
55
"jetbrains.resharper.globaltools": {
6-
"version": "2023.2.3",
6+
"version": "2023.3.0-eap08",
77
"commands": [
88
"jb"
99
]
@@ -21,7 +21,7 @@
2121
]
2222
},
2323
"docfx": {
24-
"version": "2.72.1",
24+
"version": "2.74.0",
2525
"commands": [
2626
"docfx"
2727
]

.github/workflows/build.yml

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,13 @@ jobs:
4747
- name: Setup .NET
4848
uses: actions/setup-dotnet@v3
4949
with:
50-
dotnet-version: 6.0.x
50+
dotnet-version: |
51+
6.0.x
52+
8.0.x
5153
- name: Setup PowerShell (Ubuntu)
5254
if: matrix.os == 'ubuntu-latest'
5355
run: |
54-
# Temporary version downgrade because .NET 8 is not installed on runner.
55-
dotnet tool install --global PowerShell --version 7.3.10
56+
dotnet tool install --global PowerShell
5657
- name: Find latest PowerShell version (Windows)
5758
if: matrix.os == 'windows-latest'
5859
shell: pwsh
@@ -182,7 +183,9 @@ jobs:
182183
- name: Setup .NET
183184
uses: actions/setup-dotnet@v3
184185
with:
185-
dotnet-version: 6.0.x
186+
dotnet-version: |
187+
6.0.x
188+
8.0.x
186189
- name: Git checkout
187190
uses: actions/checkout@v4
188191
- name: Restore tools
@@ -193,7 +196,7 @@ jobs:
193196
run: |
194197
$inspectCodeOutputPath = Join-Path $env:RUNNER_TEMP 'jetbrains-inspectcode-results.xml'
195198
Write-Output "INSPECT_CODE_OUTPUT_PATH=$inspectCodeOutputPath" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
196-
dotnet jb inspectcode JsonApiDotNetCore.sln --build --output="$inspectCodeOutputPath" --profile=WarningSeverities.DotSettings --properties:Configuration=Release --properties:ContinuousIntegrationBuild=false --severity=WARNING --verbosity=WARN -dsl=GlobalAll -dsl=GlobalPerProduct -dsl=SolutionPersonal -dsl=ProjectPersonal
199+
dotnet jb inspectcode JsonApiDotNetCore.sln --build --dotnetcoresdk=$(dotnet --version) --output="$inspectCodeOutputPath" --profile=WarningSeverities.DotSettings --properties:Configuration=Release --properties:ContinuousIntegrationBuild=false --severity=WARNING --verbosity=WARN -dsl=GlobalAll -dsl=GlobalPerProduct -dsl=SolutionPersonal -dsl=ProjectPersonal
197200
- name: Verify outcome
198201
shell: pwsh
199202
run: |
@@ -233,7 +236,9 @@ jobs:
233236
- name: Setup .NET
234237
uses: actions/setup-dotnet@v3
235238
with:
236-
dotnet-version: 6.0.x
239+
dotnet-version: |
240+
6.0.x
241+
8.0.x
237242
- name: Git checkout
238243
uses: actions/checkout@v4
239244
with:
@@ -254,13 +259,13 @@ jobs:
254259
$baseCommitHash = git rev-parse HEAD~1
255260
256261
Write-Output "Running code cleanup on commit range $baseCommitHash..$headCommitHash in pull request."
257-
dotnet regitlint -s JsonApiDotNetCore.sln --print-command --skip-tool-check --max-runs=5 --jb-profile="JADNC Full Cleanup" --jb --properties:Configuration=Release --jb --verbosity=WARN -f commits -a $headCommitHash -b $baseCommitHash --fail-on-diff --print-diff
262+
dotnet regitlint -s JsonApiDotNetCore.sln --print-command --skip-tool-check --max-runs=5 --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="JADNC Full Cleanup" --jb --properties:Configuration=Release --jb --verbosity=WARN -f commits -a $headCommitHash -b $baseCommitHash --fail-on-diff --print-diff
258263
- name: CleanupCode (on branch)
259264
if: github.event_name == 'push' || github.event_name == 'release'
260265
shell: pwsh
261266
run: |
262267
Write-Output "Running code cleanup on all files."
263-
dotnet regitlint -s JsonApiDotNetCore.sln --print-command --skip-tool-check --jb-profile="JADNC Full Cleanup" --jb --properties:Configuration=Release --jb --verbosity=WARN --fail-on-diff --print-diff
268+
dotnet regitlint -s JsonApiDotNetCore.sln --print-command --skip-tool-check --jb --dotnetcoresdk=$(dotnet --version)--jb-profile="JADNC Full Cleanup" --jb --properties:Configuration=Release --jb --verbosity=WARN --fail-on-diff --print-diff
264269
265270
publish:
266271
timeout-minutes: 60

.github/workflows/codeql.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: "CodeQL"
2+
3+
on:
4+
push:
5+
branches: [ 'master', 'release/**' ]
6+
pull_request:
7+
# The branches below must be a subset of the branches above
8+
branches: [ 'master', 'release/**' ]
9+
schedule:
10+
- cron: '0 0 * * 5'
11+
12+
jobs:
13+
analyze:
14+
name: Analyze
15+
runs-on: 'ubuntu-latest'
16+
timeout-minutes: 60
17+
permissions:
18+
actions: read
19+
contents: read
20+
security-events: write
21+
strategy:
22+
fail-fast: false
23+
matrix:
24+
language: [ 'csharp' ]
25+
steps:
26+
- name: Setup .NET
27+
uses: actions/setup-dotnet@v3
28+
with:
29+
dotnet-version: |
30+
6.0.x
31+
8.0.x
32+
- name: Git checkout
33+
uses: actions/checkout@v4
34+
- name: Initialize CodeQL
35+
uses: github/codeql-action/init@v2
36+
with:
37+
languages: ${{ matrix.language }}
38+
- name: Autobuild
39+
uses: github/codeql-action/autobuild@v2
40+
- name: Perform CodeQL Analysis
41+
uses: github/codeql-action/analyze@v2
42+
with:
43+
category: "/language:${{matrix.language}}"

Directory.Build.props

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -13,43 +13,15 @@
1313
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
1414
</PropertyGroup>
1515

16-
<PropertyGroup>
17-
<!-- Published dependencies (only update on major version change) -->
18-
<TargetFrameworkName>net6.0</TargetFrameworkName>
19-
<CodeAnalysisFrozenVersion>4.1.0</CodeAnalysisFrozenVersion>
20-
<DemystifierFrozenVersion>0.4.1</DemystifierFrozenVersion>
21-
<EntityFrameworkCoreFrozenVersion>6.0.0</EntityFrameworkCoreFrozenVersion>
22-
<HumanizerFrozenVersion>2.14.1</HumanizerFrozenVersion>
23-
24-
<!-- Non-published dependencies (these are safe to update, won't cause a breaking change) -->
25-
<AspNetCoreVersion>6.0.*</AspNetCoreVersion>
26-
<BenchmarkDotNetVersion>0.13.*</BenchmarkDotNetVersion>
27-
<BogusVersion>34.0.*</BogusVersion>
28-
<CSharpGuidelinesAnalyzerVersion>3.8.*</CSharpGuidelinesAnalyzerVersion>
29-
<CodeAnalysisVersion>4.7.*</CodeAnalysisVersion>
30-
<CoverletVersion>6.0.*</CoverletVersion>
31-
<DapperVersion>2.1.*</DapperVersion>
32-
<DateOnlyTimeOnlyVersion>2.1.*</DateOnlyTimeOnlyVersion>
33-
<EntityFrameworkCoreVersion>7.0.*</EntityFrameworkCoreVersion>
34-
<FluentAssertionsVersion>6.12.*</FluentAssertionsVersion>
35-
<GitHubActionsTestLoggerVersion>2.3.*</GitHubActionsTestLoggerVersion>
36-
<InheritDocVersion>1.3.*</InheritDocVersion>
37-
<JetBrainsAnnotationsVersion>2023.3.*</JetBrainsAnnotationsVersion>
38-
<NpgsqlVersion>7.0.*</NpgsqlVersion>
39-
<SourceLinkVersion>8.0.*</SourceLinkVersion>
40-
<SystemTextJsonVersion>7.0.*</SystemTextJsonVersion>
41-
<TestSdkVersion>17.8.*</TestSdkVersion>
42-
<XunitVersion>2.5.*</XunitVersion>
43-
</PropertyGroup>
44-
4516
<ItemGroup>
46-
<PackageReference Include="JetBrains.Annotations" Version="$(JetBrainsAnnotationsVersion)" PrivateAssets="All" />
47-
<PackageReference Include="CSharpGuidelinesAnalyzer" Version="$(CSharpGuidelinesAnalyzerVersion)" PrivateAssets="All" />
17+
<PackageReference Include="JetBrains.Annotations" Version="2023.3.*" PrivateAssets="All" />
18+
<PackageReference Include="CSharpGuidelinesAnalyzer" Version="3.8.*" PrivateAssets="All" />
4819
<AdditionalFiles Include="$(MSBuildThisFileDirectory)CSharpGuidelinesAnalyzer.config" Visible="False" />
4920
</ItemGroup>
5021

5122
<PropertyGroup>
5223
<Nullable>enable</Nullable>
24+
<LangVersion>latest</LangVersion>
5325
<ImplicitUsings>enable</ImplicitUsings>
5426
<IsPackable>false</IsPackable>
5527
<WarnOnPackingNonPackableProject>false</WarnOnPackingNonPackableProject>

JsonApiDotNetCore.sln

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
1414
CSharpGuidelinesAnalyzer.config = CSharpGuidelinesAnalyzer.config
1515
Directory.Build.props = Directory.Build.props
1616
tests.runsettings = tests.runsettings
17+
package-versions.props = package-versions.props
1718
EndProjectSection
1819
EndProject
1920
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Examples", "Examples", "{026FBC6C-AF76-4568-9B87-EC73457899FD}"

JsonApiDotNetCore.sln.DotSettings

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ JsonApiDotNetCore.ArgumentGuard.NotNull($EXPR$);</s:String>
6666
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=MethodHasAsyncOverload/@EntryIndexedValue">WARNING</s:String>
6767
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=MethodHasAsyncOverloadWithCancellation/@EntryIndexedValue">WARNING</s:String>
6868
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=PublicConstructorInAbstractClass/@EntryIndexedValue">WARNING</s:String>
69+
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RawStringCanBeSimplified/@EntryIndexedValue">SUGGESTION</s:String>
6970
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RedundantArrayCreationExpression/@EntryIndexedValue">SUGGESTION</s:String>
7071
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RedundantAttributeParentheses/@EntryIndexedValue">SUGGESTION</s:String>
7172
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RedundantCollectionInitializerElementBraces/@EntryIndexedValue">DO_NOT_SHOW</s:String>
@@ -92,7 +93,9 @@ JsonApiDotNetCore.ArgumentGuard.NotNull($EXPR$);</s:String>
9293
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UseEventArgsEmptyField/@EntryIndexedValue">WARNING</s:String>
9394
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UseNegatedPatternInIsExpression/@EntryIndexedValue">SUGGESTION</s:String>
9495
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UseNegatedPatternMatching/@EntryIndexedValue">SUGGESTION</s:String>
96+
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UseRawString/@EntryIndexedValue">SUGGESTION</s:String>
9597
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=VirtualMemberNeverOverridden_002ELocal/@EntryIndexedValue">WARNING</s:String>
98+
<s:String x:Key="/Default/CodeInspection/Highlighting/UseCollectionExpression/ConvertEmptyCollection/@EntryValue">SUGGESTION</s:String>
9699
<s:String x:Key="/Default/CodeStyle/CodeCleanup/Profiles/=JADNC_0020Full_0020Cleanup/@EntryIndexedValue">&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;Profile name="JADNC Full Cleanup"&gt;&lt;XMLReformatCode&gt;True&lt;/XMLReformatCode&gt;&lt;CSCodeStyleAttributes ArrangeTypeAccessModifier="True" ArrangeTypeMemberAccessModifier="True" SortModifiers="True" RemoveRedundantParentheses="True" AddMissingParentheses="True" ArrangeBraces="True" ArrangeAttributes="True" ArrangeArgumentsStyle="True" ArrangeCodeBodyStyle="True" ArrangeVarStyle="True" ArrangeTrailingCommas="True" ArrangeObjectCreation="True" ArrangeDefaultValue="True" ArrangeNamespaces="True" ArrangeNullCheckingPattern="True" /&gt;&lt;CssAlphabetizeProperties&gt;True&lt;/CssAlphabetizeProperties&gt;&lt;JsInsertSemicolon&gt;True&lt;/JsInsertSemicolon&gt;&lt;FormatAttributeQuoteDescriptor&gt;True&lt;/FormatAttributeQuoteDescriptor&gt;&lt;CorrectVariableKindsDescriptor&gt;True&lt;/CorrectVariableKindsDescriptor&gt;&lt;VariablesToInnerScopesDescriptor&gt;True&lt;/VariablesToInnerScopesDescriptor&gt;&lt;StringToTemplatesDescriptor&gt;True&lt;/StringToTemplatesDescriptor&gt;&lt;JsReformatCode&gt;True&lt;/JsReformatCode&gt;&lt;JsFormatDocComments&gt;True&lt;/JsFormatDocComments&gt;&lt;RemoveRedundantQualifiersTs&gt;True&lt;/RemoveRedundantQualifiersTs&gt;&lt;OptimizeImportsTs&gt;True&lt;/OptimizeImportsTs&gt;&lt;OptimizeReferenceCommentsTs&gt;True&lt;/OptimizeReferenceCommentsTs&gt;&lt;PublicModifierStyleTs&gt;True&lt;/PublicModifierStyleTs&gt;&lt;ExplicitAnyTs&gt;True&lt;/ExplicitAnyTs&gt;&lt;TypeAnnotationStyleTs&gt;True&lt;/TypeAnnotationStyleTs&gt;&lt;RelativePathStyleTs&gt;True&lt;/RelativePathStyleTs&gt;&lt;AsInsteadOfCastTs&gt;True&lt;/AsInsteadOfCastTs&gt;&lt;HtmlReformatCode&gt;True&lt;/HtmlReformatCode&gt;&lt;AspOptimizeRegisterDirectives&gt;True&lt;/AspOptimizeRegisterDirectives&gt;&lt;RemoveCodeRedundancies&gt;True&lt;/RemoveCodeRedundancies&gt;&lt;CSUseAutoProperty&gt;True&lt;/CSUseAutoProperty&gt;&lt;CSMakeFieldReadonly&gt;True&lt;/CSMakeFieldReadonly&gt;&lt;CSMakeAutoPropertyGetOnly&gt;True&lt;/CSMakeAutoPropertyGetOnly&gt;&lt;CSArrangeQualifiers&gt;True&lt;/CSArrangeQualifiers&gt;&lt;CSFixBuiltinTypeReferences&gt;True&lt;/CSFixBuiltinTypeReferences&gt;&lt;CssReformatCode&gt;True&lt;/CssReformatCode&gt;&lt;CSOptimizeUsings&gt;&lt;OptimizeUsings&gt;True&lt;/OptimizeUsings&gt;&lt;/CSOptimizeUsings&gt;&lt;CSShortenReferences&gt;True&lt;/CSShortenReferences&gt;&lt;CSReformatCode&gt;True&lt;/CSReformatCode&gt;&lt;CSharpFormatDocComments&gt;True&lt;/CSharpFormatDocComments&gt;&lt;CSReorderTypeMembers&gt;True&lt;/CSReorderTypeMembers&gt;&lt;XAMLCollapseEmptyTags&gt;False&lt;/XAMLCollapseEmptyTags&gt;&lt;CSReformatInactiveBranches&gt;True&lt;/CSReformatInactiveBranches&gt;&lt;/Profile&gt;</s:String>
97100
<s:String x:Key="/Default/CodeStyle/CodeCleanup/SilentCleanupProfile/@EntryValue">JADNC Full Cleanup</s:String>
98101
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FOR/@EntryValue">Required</s:String>
@@ -113,6 +116,7 @@ JsonApiDotNetCore.ArgumentGuard.NotNull($EXPR$);</s:String>
113116
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/INDENT_NESTED_LOCK_STMT/@EntryValue">True</s:Boolean>
114117
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/INDENT_NESTED_USINGS_STMT/@EntryValue">True</s:Boolean>
115118
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/INDENT_NESTED_WHILE_STMT/@EntryValue">True</s:Boolean>
119+
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/INDENT_RAW_LITERAL_STRING/@EntryValue">INDENT</s:String>
116120
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_BLANK_LINES_IN_CODE/@EntryValue">1</s:Int64>
117121
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_BLANK_LINES_IN_DECLARATIONS/@EntryValue">1</s:Int64>
118122
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_EXISTING_DECLARATION_PARENS_ARRANGEMENT/@EntryValue">False</s:Boolean>
@@ -125,6 +129,7 @@ JsonApiDotNetCore.ArgumentGuard.NotNull($EXPR$);</s:String>
125129
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_EXISTING_SWITCH_EXPRESSION_ARRANGEMENT/@EntryValue">False</s:Boolean>
126130
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_USER_LINEBREAKS/@EntryValue">False</s:Boolean>
127131
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/LINE_FEED_AT_FILE_END/@EntryValue">True</s:Boolean>
132+
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/MAX_ARRAY_INITIALIZER_ELEMENTS_ON_LINE/@EntryValue">1</s:Int64>
128133
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_ACCESSOR_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
129134
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_ACCESSORHOLDER_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
130135
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_CONSTRUCTOR_INITIALIZER_ON_SAME_LINE/@EntryValue">False</s:Boolean>
@@ -145,6 +150,7 @@ JsonApiDotNetCore.ArgumentGuard.NotNull($EXPR$);</s:String>
145150
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_BEFORE_LINQ_EXPRESSION/@EntryValue">True</s:Boolean>
146151
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_FOR_STMT_HEADER_STYLE/@EntryValue">WRAP_IF_LONG</s:String>
147152
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_LIMIT/@EntryValue">160</s:Int64>
153+
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_LIST_PATTERN/@EntryValue">CHOP_IF_LONG</s:String>
148154
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_MULTIPLE_DECLARATION_STYLE/@EntryValue">WRAP_IF_LONG</s:String>
149155
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_MULTIPLE_TYPE_PARAMEER_CONSTRAINTS_STYLE/@EntryValue">CHOP_ALWAYS</s:String>
150156
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_OBJECT_AND_COLLECTION_INITIALIZER_STYLE/@EntryValue">CHOP_ALWAYS</s:String>

README.md

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,24 @@ app.MapControllers();
7676
The following chart should help you pick the best version, based on your environment.
7777
See also our [versioning policy](./VERSIONING_POLICY.md).
7878

79-
| JsonApiDotNetCore | Status | .NET | Entity Framework Core |
80-
| ----------------- | ----------- | -------- | --------------------- |
81-
| 3.x | Stable | Core 2.x | 2.x |
82-
| 4.x | Stable | Core 3.1 | 3.1 |
83-
| | | Core 3.1 | 5 |
84-
| | | 5 | 5 |
85-
| | | 6 | 5 |
86-
| 5.0.0-5.0.2 | Stable | 6 | 6 |
87-
| 5.0.3+ | Stable | 6 | 6 |
88-
| | | 6 | 7 |
89-
| | | 7 | 7 |
79+
| JsonApiDotNetCore | Status | .NET | Entity Framework Core |
80+
| ----------------- | ------------ | -------- | --------------------- |
81+
| 3.x | Stable | Core 2.x | 2.x |
82+
| 4.x | Stable | Core 3.1 | 3.1, 5 |
83+
| | | 5 | 5 |
84+
| | | 6 | 5 |
85+
| 5.0.0-5.0.2 | Stable | 6 | 6 |
86+
| 5.0.3-5.4.0 | Stable | 6 | 6, 7 |
87+
| | | 7 | 7 |
88+
| 5.5+ | Stable | 6 | 6, 7 |
89+
| | | 7 | 7 |
90+
| | | 8 | 8 |
91+
| master | Preview | 6 | 6, 7 |
92+
| | | 7 | 7 |
93+
| | | 8 | 8 |
94+
| openapi | Experimental | 6 | 6, 7 |
95+
| | | 7 | 7 |
96+
| | | 8 | 8 |
9097

9198
## Contributing
9299

0 commit comments

Comments
 (0)