From 1a2b67b1549f964b51c77abebde954591f117fe8 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 12:53:34 +0100 Subject: [PATCH 01/28] Configure Visual Studio Code extensions Recommend extensions for developing in Visual Studio Code. --- .editorconfig | 1 + .gitignore | 3 +-- .vscode/extensions.json | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 .vscode/extensions.json diff --git a/.editorconfig b/.editorconfig index 1d82f314c9..49abe2ae52 100644 --- a/.editorconfig +++ b/.editorconfig @@ -7,6 +7,7 @@ root = true [*] end_of_line = CRLF +insert_final_newline = true [*.{config,cs,xml}] indent_style = space diff --git a/.gitignore b/.gitignore index 6eed564936..dc6eec25b2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ [Oo]bj/ [Bb]in/ .vs/ -.vscode/ .idea* node_modules/ *.user @@ -13,4 +12,4 @@ Thumbs.db test/WebSites/CliExample/wwwroot/api-docs/v1/*.json test/WebSites/CliExampleWithFactory/wwwroot/api-docs/v1/*.json test/WebSites/NswagClientExample/NSwagClient/ -*ncrunch* \ No newline at end of file +*ncrunch* diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000000..005404a3f3 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "EditorConfig.EditorConfig", + "github.vscode-github-actions", + "ms-dotnettools.csharp" + ] +} From fb677eb970c30d897f323aa0704b7cdb6cf70997 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 13:29:43 +0100 Subject: [PATCH 02/28] Fix/suppress build warnings - Suppress obsolete warnings on Swashbuckle types. - Fix some `#if define`s to use "or greater". - Fix xunit analyser warnings. --- .../AnnotationsSwaggerGenOptionsExtensions.cs | 4 +++ .../ReDocMiddleware.cs | 4 +-- .../ISerializerDataContractResolver.cs | 4 ++- .../SchemaGenerator/SchemaGenerator.cs | 2 ++ .../SwaggerUIMiddleware.cs | 2 +- .../ToolTests.cs | 2 +- .../NewtonsoftSchemaGeneratorTests.cs | 24 +++++++-------- .../JsonSerializerSchemaGeneratorTests.cs | 24 +++++++-------- .../SwaggerGenerator/SwaggerGeneratorTests.cs | 30 +++++++++---------- .../XmlCommentsDocumentFilterTests.cs | 8 ++--- test/WebSites/OAuth2Integration/Startup.cs | 2 ++ 11 files changed, 58 insertions(+), 48 deletions(-) diff --git a/src/Swashbuckle.AspNetCore.Annotations/AnnotationsSwaggerGenOptionsExtensions.cs b/src/Swashbuckle.AspNetCore.Annotations/AnnotationsSwaggerGenOptionsExtensions.cs index f241474982..a7829c0b6a 100644 --- a/src/Swashbuckle.AspNetCore.Annotations/AnnotationsSwaggerGenOptionsExtensions.cs +++ b/src/Swashbuckle.AspNetCore.Annotations/AnnotationsSwaggerGenOptionsExtensions.cs @@ -64,9 +64,11 @@ private static IEnumerable AnnotationsSubTypesSelector(Type type) return subTypeAttributes.Select(attr => attr.SubType); } +#pragma warning disable CS0618 // Type or member is obsolete var obsoleteAttribute = type.GetCustomAttributes(false) .OfType() .FirstOrDefault(); +#pragma warning restore CS0618 // Type or member is obsolete if (obsoleteAttribute != null) { @@ -87,9 +89,11 @@ private static string AnnotationsDiscriminatorNameSelector(Type baseType) return discriminatorAttribute.PropertyName; } +#pragma warning disable CS0618 // Type or member is obsolete var obsoleteAttribute = baseType.GetCustomAttributes(false) .OfType() .FirstOrDefault(); +#pragma warning restore CS0618 // Type or member is obsolete if (obsoleteAttribute != null) { diff --git a/src/Swashbuckle.AspNetCore.ReDoc/ReDocMiddleware.cs b/src/Swashbuckle.AspNetCore.ReDoc/ReDocMiddleware.cs index 849182c377..cd28dbdfb0 100644 --- a/src/Swashbuckle.AspNetCore.ReDoc/ReDocMiddleware.cs +++ b/src/Swashbuckle.AspNetCore.ReDoc/ReDocMiddleware.cs @@ -41,7 +41,7 @@ public ReDocMiddleware( _jsonSerializerOptions = new JsonSerializerOptions(); -#if NET6_0 +#if NET6_0_OR_GREATER _jsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull; #else _jsonSerializerOptions.IgnoreNullValues = true; @@ -126,4 +126,4 @@ private IDictionary GetIndexArguments() }; } } -} \ No newline at end of file +} diff --git a/src/Swashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/ISerializerDataContractResolver.cs b/src/Swashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/ISerializerDataContractResolver.cs index 936482eada..68d19005ef 100644 --- a/src/Swashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/ISerializerDataContractResolver.cs +++ b/src/Swashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/ISerializerDataContractResolver.cs @@ -109,7 +109,9 @@ private DataContract( UnderlyingType = underlyingType; DataType = dataType; DataFormat = dataFormat; +#pragma warning disable CS0618 // Type or member is obsolete EnumValues = enumValues; +#pragma warning restore CS0618 // Type or member is obsolete ArrayItemType = arrayItemType; DictionaryValueType = dictionaryValueType; DictionaryKeys = dictionaryKeys; @@ -176,4 +178,4 @@ public DataProperty( public Type MemberType { get; } public MemberInfo MemberInfo { get; } } -} \ No newline at end of file +} diff --git a/src/Swashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/SchemaGenerator.cs b/src/Swashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/SchemaGenerator.cs index 5ad1494d1d..de2ac497fc 100644 --- a/src/Swashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/SchemaGenerator.cs +++ b/src/Swashbuckle.AspNetCore.SwaggerGen/SchemaGenerator/SchemaGenerator.cs @@ -275,6 +275,7 @@ private OpenApiSchema CreatePrimitiveSchema(DataContract dataContract) Format = dataContract.DataFormat }; +#pragma warning disable CS0618 // Type or member is obsolete // For backcompat only - EnumValues is obsolete if (dataContract.EnumValues != null) { @@ -286,6 +287,7 @@ private OpenApiSchema CreatePrimitiveSchema(DataContract dataContract) return schema; } +#pragma warning restore CS0618 // Type or member is obsolete if (dataContract.UnderlyingType.IsEnum) { diff --git a/src/Swashbuckle.AspNetCore.SwaggerUI/SwaggerUIMiddleware.cs b/src/Swashbuckle.AspNetCore.SwaggerUI/SwaggerUIMiddleware.cs index 391702722b..e5a5ae46b9 100644 --- a/src/Swashbuckle.AspNetCore.SwaggerUI/SwaggerUIMiddleware.cs +++ b/src/Swashbuckle.AspNetCore.SwaggerUI/SwaggerUIMiddleware.cs @@ -42,7 +42,7 @@ public SwaggerUIMiddleware( _staticFileMiddleware = CreateStaticFileMiddleware(next, hostingEnv, loggerFactory, options); _jsonSerializerOptions = new JsonSerializerOptions(); -#if NET6_0 +#if NET6_0_OR_GREATER _jsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull; #else _jsonSerializerOptions.IgnoreNullValues = true; diff --git a/test/Swashbuckle.AspNetCore.Cli.Test/ToolTests.cs b/test/Swashbuckle.AspNetCore.Cli.Test/ToolTests.cs index dba0a076e1..ae6b54df25 100644 --- a/test/Swashbuckle.AspNetCore.Cli.Test/ToolTests.cs +++ b/test/Swashbuckle.AspNetCore.Cli.Test/ToolTests.cs @@ -35,7 +35,7 @@ public void Can_Generate_Swagger_Json() } } -#if NET6_0 +#if NET6_0_OR_GREATER [Fact] public void Can_Generate_Swagger_Json_ForTopLevelApp() { diff --git a/test/Swashbuckle.AspNetCore.Newtonsoft.Test/SchemaGenerator/NewtonsoftSchemaGeneratorTests.cs b/test/Swashbuckle.AspNetCore.Newtonsoft.Test/SchemaGenerator/NewtonsoftSchemaGeneratorTests.cs index 1ef837d221..58b91c440b 100644 --- a/test/Swashbuckle.AspNetCore.Newtonsoft.Test/SchemaGenerator/NewtonsoftSchemaGeneratorTests.cs +++ b/test/Swashbuckle.AspNetCore.Newtonsoft.Test/SchemaGenerator/NewtonsoftSchemaGeneratorTests.cs @@ -421,11 +421,11 @@ public void GenerateSchema_SupportsOption_UseAllOfForInheritance() Assert.Equal("object", schema.Type); Assert.Equal(new[] { "Property1" }, schema.Properties.Keys); Assert.NotNull(schema.AllOf); - Assert.Equal(1, schema.AllOf.Count); - Assert.NotNull(schema.AllOf[0].Reference); - Assert.Equal("BaseType", schema.AllOf[0].Reference.Id); + var allOf = Assert.Single(schema.AllOf); + Assert.NotNull(allOf.Reference); + Assert.Equal("BaseType", allOf.Reference.Id); // The base type schema - var baseTypeSchema = schemaRepository.Schemas[schema.AllOf[0].Reference.Id]; + var baseTypeSchema = schemaRepository.Schemas[allOf.Reference.Id]; Assert.Equal("object", baseTypeSchema.Type); Assert.Equal(new[] { "BaseProperty" }, baseTypeSchema.Properties.Keys); } @@ -490,18 +490,18 @@ public void GenerateSchema_SupportsOption_UseAllOfForPolymorphism() var subType1Schema = schemaRepository.Schemas[schema.OneOf[1].Reference.Id]; Assert.Equal("object", subType1Schema.Type); Assert.NotNull(subType1Schema.AllOf); - Assert.Equal(1, subType1Schema.AllOf.Count); - Assert.NotNull(subType1Schema.AllOf[0].Reference); - Assert.Equal("BaseType", subType1Schema.AllOf[0].Reference.Id); + var allOf = Assert.Single(subType1Schema.AllOf); + Assert.NotNull(allOf.Reference); + Assert.Equal("BaseType", allOf.Reference.Id); Assert.Equal(new[] { "Property1" }, subType1Schema.Properties.Keys); // The second sub type schema Assert.NotNull(schema.OneOf[2].Reference); var subType2Schema = schemaRepository.Schemas[schema.OneOf[2].Reference.Id]; Assert.Equal("object", subType2Schema.Type); Assert.NotNull(subType2Schema.AllOf); - Assert.Equal(1, subType2Schema.AllOf.Count); - Assert.NotNull(subType2Schema.AllOf[0].Reference); - Assert.Equal("BaseType", subType2Schema.AllOf[0].Reference.Id); + allOf = Assert.Single(subType2Schema.AllOf); + Assert.NotNull(allOf.Reference); + Assert.Equal("BaseType", allOf.Reference.Id); Assert.Equal(new[] { "Property2" }, subType2Schema.Properties.Keys); } @@ -517,7 +517,7 @@ public void GenerateSchema_SupportsOption_UseAllOfToExtendReferenceSchemas() Assert.Null(schema.Reference); Assert.NotNull(schema.AllOf); - Assert.Equal(1, schema.AllOf.Count); + Assert.Single(schema.AllOf); } [Fact] @@ -827,7 +827,7 @@ public void GenerateSchema_GeneratesOpenSchema_IfDynamicJsonType(Type type) Assert.Null(schema.Type); } - private SchemaGenerator Subject( + private static SchemaGenerator Subject( Action configureGenerator = null, Action configureSerializer = null) { diff --git a/test/Swashbuckle.AspNetCore.SwaggerGen.Test/SchemaGenerator/JsonSerializerSchemaGeneratorTests.cs b/test/Swashbuckle.AspNetCore.SwaggerGen.Test/SchemaGenerator/JsonSerializerSchemaGeneratorTests.cs index fb7a219506..30da476cec 100644 --- a/test/Swashbuckle.AspNetCore.SwaggerGen.Test/SchemaGenerator/JsonSerializerSchemaGeneratorTests.cs +++ b/test/Swashbuckle.AspNetCore.SwaggerGen.Test/SchemaGenerator/JsonSerializerSchemaGeneratorTests.cs @@ -456,11 +456,11 @@ public void GenerateSchema_SupportsOption_UseAllOfForInheritance() Assert.Equal("object", schema.Type); Assert.Equal(new[] { "Property1" }, schema.Properties.Keys); Assert.NotNull(schema.AllOf); - Assert.Equal(1, schema.AllOf.Count); - Assert.NotNull(schema.AllOf[0].Reference); - Assert.Equal("BaseType", schema.AllOf[0].Reference.Id); + var allOf = Assert.Single(schema.AllOf); + Assert.NotNull(allOf.Reference); + Assert.Equal("BaseType", allOf.Reference.Id); // The base type schema - var baseTypeSchema = schemaRepository.Schemas[schema.AllOf[0].Reference.Id]; + var baseTypeSchema = schemaRepository.Schemas[allOf.Reference.Id]; Assert.Equal("object", baseTypeSchema.Type); Assert.Equal(new[] { "BaseProperty" }, baseTypeSchema.Properties.Keys); } @@ -525,18 +525,18 @@ public void GenerateSchema_SupportsOption_UseAllOfForPolymorphism() var subType1Schema = schemaRepository.Schemas[schema.OneOf[1].Reference.Id]; Assert.Equal("object", subType1Schema.Type); Assert.NotNull(subType1Schema.AllOf); - Assert.Equal(1, subType1Schema.AllOf.Count); - Assert.NotNull(subType1Schema.AllOf[0].Reference); - Assert.Equal("BaseType", subType1Schema.AllOf[0].Reference.Id); + var allOf = Assert.Single(subType1Schema.AllOf); + Assert.NotNull(allOf.Reference); + Assert.Equal("BaseType", allOf.Reference.Id); Assert.Equal(new[] { "Property1" }, subType1Schema.Properties.Keys); // The second sub type schema Assert.NotNull(schema.OneOf[2].Reference); var subType2Schema = schemaRepository.Schemas[schema.OneOf[2].Reference.Id]; Assert.Equal("object", subType2Schema.Type); Assert.NotNull(subType2Schema.AllOf); - Assert.Equal(1, subType2Schema.AllOf.Count); - Assert.NotNull(subType2Schema.AllOf[0].Reference); - Assert.Equal("BaseType", subType2Schema.AllOf[0].Reference.Id); + allOf = Assert.Single(subType2Schema.AllOf); + Assert.NotNull(allOf.Reference); + Assert.Equal("BaseType", allOf.Reference.Id); Assert.Equal(new[] { "Property2" }, subType2Schema.Properties.Keys); } @@ -552,7 +552,7 @@ public void GenerateSchema_SupportsOption_UseAllOfToExtendReferenceSchemas() Assert.Null(schema.Reference); Assert.NotNull(schema.AllOf); - Assert.Equal(1, schema.AllOf.Count); + Assert.Single(schema.AllOf); } [Fact] @@ -860,7 +860,7 @@ public void GenerateSchema_GeneratesSchema_IfParameterHasTypeConstraints() Assert.Equal("integer", schema.Type); } - private SchemaGenerator Subject( + private static SchemaGenerator Subject( Action configureGenerator = null, Action configureSerializer = null) { diff --git a/test/Swashbuckle.AspNetCore.SwaggerGen.Test/SwaggerGenerator/SwaggerGeneratorTests.cs b/test/Swashbuckle.AspNetCore.SwaggerGen.Test/SwaggerGenerator/SwaggerGeneratorTests.cs index de8015624b..81e3260d2e 100644 --- a/test/Swashbuckle.AspNetCore.SwaggerGen.Test/SwaggerGenerator/SwaggerGeneratorTests.cs +++ b/test/Swashbuckle.AspNetCore.SwaggerGen.Test/SwaggerGenerator/SwaggerGeneratorTests.cs @@ -420,8 +420,8 @@ public void GetSwagger_GeneratesParameters_ForApiParametersThatAreNotBoundToBody var document = subject.GetSwagger("v1"); var operation = document.Paths["/resource"].Operations[OperationType.Post]; - Assert.Equal(1, operation.Parameters.Count); - Assert.Equal(expectedParameterLocation, operation.Parameters.First().In); + var parameter = Assert.Single(operation.Parameters); + Assert.Equal(expectedParameterLocation, parameter.In); } [Fact] @@ -449,7 +449,7 @@ public void GetSwagger_IgnoresParameters_IfActionParameterHasBindNeverAttribute( var document = subject.GetSwagger("v1"); var operation = document.Paths["/resource"].Operations[OperationType.Post]; - Assert.Equal(0, operation.Parameters.Count); + Assert.Empty(operation.Parameters); } [Fact] @@ -510,8 +510,8 @@ public void GetSwagger_SetsParameterRequired_IfActionParameterHasRequiredOrBindR var document = subject.GetSwagger("v1"); var operation = document.Paths["/resource"].Operations[OperationType.Post]; - Assert.Equal(1, operation.Parameters.Count); - Assert.Equal(expectedRequired, operation.Parameters.First().Required); + var parameter = Assert.Single(operation.Parameters); + Assert.Equal(expectedRequired, parameter.Required); } [Theory] @@ -519,7 +519,7 @@ public void GetSwagger_SetsParameterRequired_IfActionParameterHasRequiredOrBindR [InlineData(true)] public void GetSwagger_SetsParameterRequired_ForNonControllerActionDescriptor_IfApiParameterDescriptionForBodyIsRequired(bool isRequired) { - void Execute(object obj) { } + static void Execute(object obj) { } Action action = Execute; @@ -577,8 +577,8 @@ public void GetSwagger_SetsParameterTypeToString_IfApiParameterHasNoCorrespondin var document = subject.GetSwagger("v1"); var operation = document.Paths["/resource"].Operations[OperationType.Post]; - Assert.Equal(1, operation.Parameters.Count); - Assert.Equal("string", operation.Parameters.First().Schema.Type); + var parameter = Assert.Single(operation.Parameters); + Assert.Equal("string", parameter.Schema.Type); } [Fact] @@ -1033,8 +1033,8 @@ public void GetSwagger_SupportsOption_DescribeAllParametersInCamelCase( var document = subject.GetSwagger("v1"); var operation = document.Paths["/resource"].Operations[OperationType.Post]; - Assert.Equal(1, operation.Parameters.Count); - Assert.Equal(expectedOpenApiParameterName, operation.Parameters.First().Name); + var parameter = Assert.Single(operation.Parameters); + Assert.Equal(expectedOpenApiParameterName, parameter.Name); } [Fact] @@ -1057,8 +1057,8 @@ public void GetSwagger_SupportsOption_Servers() var document = subject.GetSwagger("v1"); - Assert.Equal(1, document.Servers.Count); - Assert.Equal("http://tempuri.org/api", document.Servers.First().Url); + var server = Assert.Single(document.Servers); + Assert.Equal("http://tempuri.org/api", server.Url); } [Fact] @@ -1179,7 +1179,7 @@ public void GetSwagger_SupportsOption_ParameterFilters() var document = subject.GetSwagger("v1"); var operation = document.Paths["/resource"].Operations[OperationType.Post]; - Assert.Equal(2, operation.Parameters[0].Extensions.Count()); + Assert.Equal(2, operation.Parameters[0].Extensions.Count); Assert.Equal("bar", ((OpenApiString)operation.Parameters[0].Extensions["X-foo"]).Value); Assert.Equal("v1", ((OpenApiString)operation.Parameters[0].Extensions["X-docName"]).Value); } @@ -1277,7 +1277,7 @@ public void GetSwagger_SupportsOption_DocumentFilters() Assert.Contains("ComplexType", document.Components.Schemas.Keys); } - private SwaggerGenerator Subject( + private static SwaggerGenerator Subject( IEnumerable apiDescriptions, SwaggerGeneratorOptions options = null, IEnumerable authenticationSchemes = null) @@ -1298,4 +1298,4 @@ private SwaggerGenerator Subject( } }; } -} \ No newline at end of file +} diff --git a/test/Swashbuckle.AspNetCore.SwaggerGen.Test/XmlComments/XmlCommentsDocumentFilterTests.cs b/test/Swashbuckle.AspNetCore.SwaggerGen.Test/XmlComments/XmlCommentsDocumentFilterTests.cs index 9d391fe3bd..4f3b28a3ad 100644 --- a/test/Swashbuckle.AspNetCore.SwaggerGen.Test/XmlComments/XmlCommentsDocumentFilterTests.cs +++ b/test/Swashbuckle.AspNetCore.SwaggerGen.Test/XmlComments/XmlCommentsDocumentFilterTests.cs @@ -40,11 +40,11 @@ public void Apply_SetsTagDescription_FromControllerSummaryTags() Subject().Apply(document, filterContext); - Assert.Equal(1, document.Tags.Count); - Assert.Equal("Summary for FakeControllerWithXmlComments", document.Tags[0].Description); + var tag = Assert.Single(document.Tags); + Assert.Equal("Summary for FakeControllerWithXmlComments", tag.Description); } - private XmlCommentsDocumentFilter Subject() + private static XmlCommentsDocumentFilter Subject() { using (var xmlComments = File.OpenText($"{typeof(FakeControllerWithXmlComments).Assembly.GetName().Name}.xml")) { @@ -52,4 +52,4 @@ private XmlCommentsDocumentFilter Subject() } } } -} \ No newline at end of file +} diff --git a/test/WebSites/OAuth2Integration/Startup.cs b/test/WebSites/OAuth2Integration/Startup.cs index b208bb8164..3c37912feb 100644 --- a/test/WebSites/OAuth2Integration/Startup.cs +++ b/test/WebSites/OAuth2Integration/Startup.cs @@ -118,7 +118,9 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) resourceServer.UseAuthentication(); +#pragma warning disable ASP0001 // Authorization middleware is incorrectly configured resourceServer.UseAuthorization(); +#pragma warning restore ASP0001 // Authorization middleware is incorrectly configured resourceServer.UseEndpoints(endpoints => { From ea6f2d5a8b3edda904fecfef013404d234258e2f Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 13:31:13 +0100 Subject: [PATCH 03/28] Run npm audit fix Run `npm audit fix` to resolve warnings about vulnerable dependencies. --- .../package-lock.json | 1186 +++++++++-------- 1 file changed, 644 insertions(+), 542 deletions(-) diff --git a/src/Swashbuckle.AspNetCore.ReDoc/package-lock.json b/src/Swashbuckle.AspNetCore.ReDoc/package-lock.json index 80a728b69c..b57080dcd8 100644 --- a/src/Swashbuckle.AspNetCore.ReDoc/package-lock.json +++ b/src/Swashbuckle.AspNetCore.ReDoc/package-lock.json @@ -12,26 +12,28 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "peer": true, "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/generator": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.0.tgz", - "integrity": "sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz", + "integrity": "sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==", "peer": true, "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" @@ -50,50 +52,34 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "peer": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", - "peer": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "peer": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "peer": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -112,44 +98,54 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "peer": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "peer": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "peer": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", - "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", + "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", "peer": true, "bin": { "parser": "bin/babel-parser.js" @@ -170,34 +166,34 @@ } }, "node_modules/@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "peer": true, "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.0.tgz", - "integrity": "sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.0", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.0", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -205,12 +201,13 @@ } }, "node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "peer": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -249,6 +246,64 @@ "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.0.0-rc.6.tgz", "integrity": "sha512-dDnQizD94EdBwEj/fh3zPRa/HWCS9O5au2PuHhZBbuM3xWHxuaKzPBOEWze7Nn0xW68MIpZ7Xdyn1CoCpjKCuQ==" }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "peer": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "peer": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@redocly/ajv": { "version": "8.6.4", "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.6.4.tgz", @@ -305,9 +360,9 @@ } }, "node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "peer": true }, "node_modules/@types/json-schema": { @@ -321,148 +376,148 @@ "integrity": "sha512-6iihJ/Pp5fsFJ/aEDGyvT4pHGmCpq7ToQ/yf4bl5SbVAvwpspYJ+v3jO7n8UyjhQVHTy+KNszOozDdv+O6sovQ==" }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "peer": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "peer": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "peer": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "peer": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "peer": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "peer": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "peer": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "peer": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "peer": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -479,9 +534,9 @@ "peer": true }, "node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "peer": true, "bin": { "acorn": "bin/acorn" @@ -491,9 +546,9 @@ } }, "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "peer": true, "peerDependencies": { "acorn": "^8" @@ -590,26 +645,35 @@ } }, "node_modules/browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "peer": true, "dependencies": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, "node_modules/buffer-from": { @@ -630,14 +694,24 @@ "peer": true }, "node_modules/caniuse-lite": { - "version": "1.0.30001309", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001309.tgz", - "integrity": "sha512-Pl8vfigmBXXq+/yUz1jUwULeq9xhMJznzdc/xwl4WclDAuebcTHVefpz8lE/bMI+UN7TOkSSe7B7RnZd6+dzjA==", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "version": "1.0.30001605", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001605.tgz", + "integrity": "sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true }, "node_modules/chalk": { "version": "2.4.2", @@ -697,7 +771,7 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "peer": true }, "node_modules/colorette": { @@ -770,9 +844,9 @@ "integrity": "sha512-kD+f8qEaa42+mjdOpKeztu9Mfx5bv9gVLO6K9jRx4uGvh6Wv06Srn4jr1wPNY2OOUGGSKHNFN+A8MA3v0E0QAQ==" }, "node_modules/electron-to-chromium": { - "version": "1.4.66", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.66.tgz", - "integrity": "sha512-f1RXFMsvwufWLwYUxTiP7HmjprKXrqEWHiQkjAYa9DJeVIlZk5v8gBGcaV+FhtXLly6C1OTVzQY+2UQrACiLlg==", + "version": "1.4.724", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.724.tgz", + "integrity": "sha512-RTRvkmRkGhNBPPpdrgtDKvmOEYTrPlXDfc0J/Nfq5s29tEahAwhiX4mmhNzj6febWMleulxVYPh7QwCSL/EldA==", "peer": true }, "node_modules/emoji-regex": { @@ -781,9 +855,9 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/enhanced-resolve": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz", - "integrity": "sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", "peer": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -794,9 +868,9 @@ } }, "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz", + "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==", "peer": true }, "node_modules/es6-promise": { @@ -815,7 +889,7 @@ "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "peer": true, "engines": { "node": ">=0.8.0" @@ -923,9 +997,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "peer": true }, "node_modules/has-flag": { @@ -1039,10 +1113,10 @@ "node": ">=4" } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "peer": true }, "node_modules/json-pointer": { @@ -1254,9 +1328,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "peer": true }, "node_modules/oas-kit-common": { @@ -1567,9 +1641,9 @@ } }, "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "peer": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -1585,9 +1659,9 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "peer": true, "dependencies": { "randombytes": "^2.1.0" @@ -1656,9 +1730,9 @@ } }, "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "peer": true, "engines": { "node": ">=0.10.0" @@ -1674,15 +1748,6 @@ "source-map": "^0.6.0" } }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/stickyfill": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stickyfill/-/stickyfill-1.1.1.tgz", @@ -1805,13 +1870,14 @@ } }, "node_modules/terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "version": "5.30.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.2.tgz", + "integrity": "sha512-vTDjRKYKip4dOFL5VizdoxHTYDfEXPdz5t+FbxCC5Rp2s+KbEO8w5wqMDPgj7CtFKZuzq7PXv28fZoXfqqBVuw==", "peer": true, "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", - "source-map": "~0.7.2", "source-map-support": "~0.5.20" }, "bin": { @@ -1819,27 +1885,19 @@ }, "engines": { "node": ">=10" - }, - "peerDependencies": { - "acorn": "^8.5.0" - }, - "peerDependenciesMeta": { - "acorn": { - "optional": true - } } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "peer": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -1863,24 +1921,6 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "peer": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -1895,6 +1935,36 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -1909,9 +1979,9 @@ "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=" }, "node_modules/watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -1927,34 +1997,34 @@ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, "node_modules/webpack": { - "version": "5.68.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.68.0.tgz", - "integrity": "sha512-zUcqaUO0772UuuW2bzaES2Zjlm/y3kRBQDVFVCge+s2Y8mwuUTdperGaAv65/NtRL/1zanpSJOq/MD8u61vo6g==", - "peer": true, - "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "peer": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.16.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { @@ -2086,23 +2156,25 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "peer": true, "requires": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" } }, "@babel/generator": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.0.tgz", - "integrity": "sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz", + "integrity": "sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==", "peer": true, "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" } }, "@babel/helper-annotate-as-pure": { @@ -2115,41 +2187,28 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "peer": true, - "requires": { - "@babel/types": "^7.16.7" - } + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "peer": true }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", - "peer": true, - "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "peer": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" } }, "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "peer": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.5" } }, "@babel/helper-module-imports": { @@ -2162,35 +2221,42 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "peer": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.5" } }, + "@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "peer": true + }, "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "peer": true }, "@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "peer": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" } }, "@babel/parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", - "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", + "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", "peer": true }, "@babel/runtime": { @@ -2202,41 +2268,42 @@ } }, "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "peer": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" } }, "@babel/traverse": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.0.tgz", - "integrity": "sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==", - "peer": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.0", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.0", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "peer": true, + "requires": { + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "peer": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, @@ -2272,6 +2339,55 @@ "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.0.0-rc.6.tgz", "integrity": "sha512-dDnQizD94EdBwEj/fh3zPRa/HWCS9O5au2PuHhZBbuM3xWHxuaKzPBOEWze7Nn0xW68MIpZ7Xdyn1CoCpjKCuQ==" }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "peer": true, + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "peer": true + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "peer": true + }, + "@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "peer": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "peer": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "peer": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "@redocly/ajv": { "version": "8.6.4", "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.6.4.tgz", @@ -2321,9 +2437,9 @@ } }, "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "peer": true }, "@types/json-schema": { @@ -2337,148 +2453,148 @@ "integrity": "sha512-6iihJ/Pp5fsFJ/aEDGyvT4pHGmCpq7ToQ/yf4bl5SbVAvwpspYJ+v3jO7n8UyjhQVHTy+KNszOozDdv+O6sovQ==" }, "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "peer": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "peer": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "peer": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "peer": true }, "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "peer": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "peer": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "peer": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" } }, "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "peer": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "peer": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "peer": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "peer": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "peer": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "peer": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "peer": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "peer": true, "requires": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -2495,15 +2611,15 @@ "peer": true }, "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "peer": true }, "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "peer": true, "requires": {} }, @@ -2585,16 +2701,15 @@ } }, "browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "peer": true, "requires": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" } }, "buffer-from": { @@ -2615,9 +2730,9 @@ "peer": true }, "caniuse-lite": { - "version": "1.0.30001309", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001309.tgz", - "integrity": "sha512-Pl8vfigmBXXq+/yUz1jUwULeq9xhMJznzdc/xwl4WclDAuebcTHVefpz8lE/bMI+UN7TOkSSe7B7RnZd6+dzjA==", + "version": "1.0.30001605", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001605.tgz", + "integrity": "sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==", "peer": true }, "chalk": { @@ -2669,7 +2784,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "peer": true }, "colorette": { @@ -2726,9 +2841,9 @@ "integrity": "sha512-kD+f8qEaa42+mjdOpKeztu9Mfx5bv9gVLO6K9jRx4uGvh6Wv06Srn4jr1wPNY2OOUGGSKHNFN+A8MA3v0E0QAQ==" }, "electron-to-chromium": { - "version": "1.4.66", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.66.tgz", - "integrity": "sha512-f1RXFMsvwufWLwYUxTiP7HmjprKXrqEWHiQkjAYa9DJeVIlZk5v8gBGcaV+FhtXLly6C1OTVzQY+2UQrACiLlg==", + "version": "1.4.724", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.724.tgz", + "integrity": "sha512-RTRvkmRkGhNBPPpdrgtDKvmOEYTrPlXDfc0J/Nfq5s29tEahAwhiX4mmhNzj6febWMleulxVYPh7QwCSL/EldA==", "peer": true }, "emoji-regex": { @@ -2737,9 +2852,9 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "enhanced-resolve": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz", - "integrity": "sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", "peer": true, "requires": { "graceful-fs": "^4.2.4", @@ -2747,9 +2862,9 @@ } }, "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz", + "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==", "peer": true }, "es6-promise": { @@ -2765,7 +2880,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "peer": true }, "eslint-scope": { @@ -2851,9 +2966,9 @@ "peer": true }, "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "peer": true }, "has-flag": { @@ -2941,10 +3056,10 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "peer": true }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "peer": true }, "json-pointer": { @@ -3086,9 +3201,9 @@ } }, "node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "peer": true }, "oas-kit-common": { @@ -3328,9 +3443,9 @@ } }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "peer": true, "requires": { "@types/json-schema": "^7.0.8", @@ -3339,9 +3454,9 @@ } }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "peer": true, "requires": { "randombytes": "^2.1.0" @@ -3407,9 +3522,9 @@ "integrity": "sha512-tf+h5W1IrjNm/9rKKj0JU2MDMruiopx0jjVA5zCdBtcGjfp0+c5rHw/zADLC3IeKlGHtVbHtpfzvYA0OYT+HKg==" }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "peer": true }, "source-map-support": { @@ -3420,14 +3535,6 @@ "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": true - } } }, "stickyfill": { @@ -3511,43 +3618,28 @@ "peer": true }, "terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "version": "5.30.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.2.tgz", + "integrity": "sha512-vTDjRKYKip4dOFL5VizdoxHTYDfEXPdz5t+FbxCC5Rp2s+KbEO8w5wqMDPgj7CtFKZuzq7PXv28fZoXfqqBVuw==", "peer": true, "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", - "source-map": "~0.7.2", "source-map-support": "~0.5.20" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "peer": true - } } }, "terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "peer": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": true - } + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" } }, "to-fast-properties": { @@ -3561,6 +3653,16 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" }, + "update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "peer": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -3575,9 +3677,9 @@ "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=" }, "watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "peer": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -3590,34 +3692,34 @@ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, "webpack": { - "version": "5.68.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.68.0.tgz", - "integrity": "sha512-zUcqaUO0772UuuW2bzaES2Zjlm/y3kRBQDVFVCge+s2Y8mwuUTdperGaAv65/NtRL/1zanpSJOq/MD8u61vo6g==", - "peer": true, - "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "peer": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.16.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" } }, From d3ec037accc37d2e4782cc0067c96f8536b9ba7a Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 13:32:01 +0100 Subject: [PATCH 04/28] Delete build.txt Remove build.txt which presumably was committed by mistake. --- .../build.txt | Bin 3392094 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/Swashbuckle.AspNetCore.SwaggerGen/build.txt diff --git a/src/Swashbuckle.AspNetCore.SwaggerGen/build.txt b/src/Swashbuckle.AspNetCore.SwaggerGen/build.txt deleted file mode 100644 index 709fe9c6e74c713869e20eafb5872058bfed2598..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3392094 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�^E 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 z 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 z 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 From 3d295094362e6f3433de8e36502c859b945e36b5 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 13:38:50 +0100 Subject: [PATCH 05/28] Modernise build - Use .NET 8 SDK as .NET 7 goes out of support in May 2024. - Support C# 12 in all projects. - Bump Newtonsoft.Json and xunit to latest versions. - Use NuGet central package version management. - Enable package source mappings. - Configure recommended properties for deterministic builds. - Configure recommended properties for NuGet package publishing. - Use artifacts output. - Add code coverage. - Prepare for GitHub Actions CI. - Temporarily suppress warnings about out-of-support TFMs and NuGet package dependency vulnerabilities. - Simplify target frameworks when only one is present. - Update some terminology/typos. --- .editorconfig | 5 +- Directory.Build.props | 76 +++++++++++++++++++ Directory.Build.targets | 27 +++++++ Directory.Packages.props | 32 ++++++++ NuGet.config | 12 +++ global.json | 9 ++- src/Directory.Build.props | 25 ------ .../Swashbuckle.AspNetCore.Annotations.csproj | 2 +- ...hbuckle.AspNetCore.ApiTesting.Xunit.csproj | 2 +- .../Swashbuckle.AspNetCore.ApiTesting.csproj | 24 +++--- .../Swashbuckle.AspNetCore.Cli.csproj | 4 +- .../Swashbuckle.AspNetCore.Newtonsoft.csproj | 12 +-- .../Swashbuckle.AspNetCore.ReDoc.csproj | 10 +-- .../Swashbuckle.AspNetCore.Swagger.csproj | 6 +- .../Swashbuckle.AspNetCore.SwaggerGen.csproj | 8 +- .../Swashbuckle.AspNetCore.SwaggerUI.csproj | 10 +-- ...hbuckle.AspNetCore.Annotations.Test.csproj | 13 +--- ...shbuckle.AspNetCore.ApiTesting.Test.csproj | 12 +-- .../Swashbuckle.AspNetCore.Cli.Test.csproj | 12 +-- ...hbuckle.AspNetCore.IntegrationTests.csproj | 16 ++-- .../TestSite.cs | 15 +--- ...shbuckle.AspNetCore.Newtonsoft.Test.csproj | 14 ++-- ...shbuckle.AspNetCore.SwaggerGen.Test.csproj | 15 ++-- .../Swashbuckle.AspNetCore.TestSupport.csproj | 6 +- test/WebSites/CliExample/CliExample.csproj | 4 +- .../CliExampleWithFactory.csproj | 6 +- .../MultipleVersions/MultipleVersions.csproj | 4 +- test/WebSites/NetCore21/NetCore21.csproj | 2 +- .../NswagClientExample.csproj | 7 +- .../OAuth2Integration.csproj | 4 +- .../ApiTestsSetup.cs | 30 +++++++- .../TestFirst.IntegrationTests.csproj | 13 +--- 32 files changed, 273 insertions(+), 164 deletions(-) create mode 100644 Directory.Build.props create mode 100644 Directory.Build.targets create mode 100644 Directory.Packages.props create mode 100644 NuGet.config delete mode 100644 src/Directory.Build.props diff --git a/.editorconfig b/.editorconfig index 49abe2ae52..f274c474de 100644 --- a/.editorconfig +++ b/.editorconfig @@ -14,8 +14,9 @@ indent_style = space indent_size = 4 trim_trailing_whitespace = true -[*.{proj,props,sln,targets}] -indent_style = tab +[*.{proj,props,sln,targets,yml}] +indent_size = 2 +indent_style = space trim_trailing_whitespace = true [*.{kproj,csproj,json,ps1,psd1,psm1,resx,rst}] diff --git a/Directory.Build.props b/Directory.Build.props new file mode 100644 index 0000000000..428b863177 --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,76 @@ + + + $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb + domaindrivendev + SHA256 + https://github.com/domaindrivendev/Swashbuckle.AspNetCore + true + Copyright (c) 2016-$([System.DateTime]::Now.ToString(yyyy)) Richard Morris + true + true + false + + latest + true + en-US + + false + $(NoWarn);NETSDK1138 + + $(NoWarn);NU1902;NU1903 + + $(NoWarn);NU5128 + + + MIT + https://github.com/domaindrivendev/Swashbuckle.AspNetCore + + See $(PackageProjectUrl)/releases for details. + false + true + git + $(PackageProjectUrl).git + snupkg + true + true + 6.5.0 + false + + + preview + pr.$(GITHUB_RUN_NUMBER) + + $(VersionPrefix).$(GITHUB_RUN_NUMBER) + + + + + + + + + true + + + cobertura,json + $(CoverletOutputFormat),opencover + [System.*]*,[*.Test*]*,[xunit.*]* + GeneratedCodeAttribute + + + diff --git a/Directory.Build.targets b/Directory.Build.targets new file mode 100644 index 0000000000..719ddb4f24 --- /dev/null +++ b/Directory.Build.targets @@ -0,0 +1,27 @@ + + + true + + + true + + + + + + + + $([System.IO.Path]::Combine($(ArtifactsPath), 'coverage', 'coverage')) + true + HTML + $(ReportGeneratorReportTypes);MarkdownSummaryGitHub + $([System.IO.Path]::Combine($(ArtifactsPath), 'coverage')) + $([System.IO.Path]::Combine($(ReportGeneratorTargetDirectory), 'coverage.json')) + <_MarkdownSummaryPrefix><details><summary>:chart_with_upwards_trend: <b>$(AssemblyName) Code Coverage report</b></summary> + <_MarkdownSummarySuffix></details> + + + + + + diff --git a/Directory.Packages.props b/Directory.Packages.props new file mode 100644 index 0000000000..6c9d112f2f --- /dev/null +++ b/Directory.Packages.props @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NuGet.config b/NuGet.config new file mode 100644 index 0000000000..38ac8e75ec --- /dev/null +++ b/NuGet.config @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/global.json b/global.json index 2cca158af1..7c4a0199b5 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,7 @@ { - "sdk": { - "version": "7.0.100", - "rollForward": "latestMajor" - } + "sdk": { + "version": "8.0.203", + "allowPrerelease": false, + "rollForward": "latestMajor" } +} diff --git a/src/Directory.Build.props b/src/Directory.Build.props deleted file mode 100644 index acf8dce7cd..0000000000 --- a/src/Directory.Build.props +++ /dev/null @@ -1,25 +0,0 @@ - - - - $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb - true - true - https://licenses.nuget.org/MIT - MIT - https://github.com/domaindrivendev/Swashbuckle.AspNetCore - true - git - https://github.com/domaindrivendev/Swashbuckle.AspNetCore.git - 6.5.0 - 9 - - - - preview-$(APPVEYOR_BUILD_NUMBER) - - - - - - - diff --git a/src/Swashbuckle.AspNetCore.Annotations/Swashbuckle.AspNetCore.Annotations.csproj b/src/Swashbuckle.AspNetCore.Annotations/Swashbuckle.AspNetCore.Annotations.csproj index 3a382718c3..98b1f795e1 100644 --- a/src/Swashbuckle.AspNetCore.Annotations/Swashbuckle.AspNetCore.Annotations.csproj +++ b/src/Swashbuckle.AspNetCore.Annotations/Swashbuckle.AspNetCore.Annotations.csproj @@ -6,7 +6,7 @@ true $(NoWarn);1591 swagger;documentation;discovery;help;webapi;aspnet;aspnetcore;annotations - true + true netstandard2.0;netcoreapp3.0;net5.0;net6.0;net7.0 diff --git a/src/Swashbuckle.AspNetCore.ApiTesting.Xunit/Swashbuckle.AspNetCore.ApiTesting.Xunit.csproj b/src/Swashbuckle.AspNetCore.ApiTesting.Xunit/Swashbuckle.AspNetCore.ApiTesting.Xunit.csproj index a06d6a4938..9d73bfbd0e 100644 --- a/src/Swashbuckle.AspNetCore.ApiTesting.Xunit/Swashbuckle.AspNetCore.ApiTesting.Xunit.csproj +++ b/src/Swashbuckle.AspNetCore.ApiTesting.Xunit/Swashbuckle.AspNetCore.ApiTesting.Xunit.csproj @@ -14,7 +14,7 @@ - + diff --git a/src/Swashbuckle.AspNetCore.ApiTesting/Swashbuckle.AspNetCore.ApiTesting.csproj b/src/Swashbuckle.AspNetCore.ApiTesting/Swashbuckle.AspNetCore.ApiTesting.csproj index ff201852ff..f35d43e46c 100644 --- a/src/Swashbuckle.AspNetCore.ApiTesting/Swashbuckle.AspNetCore.ApiTesting.csproj +++ b/src/Swashbuckle.AspNetCore.ApiTesting/Swashbuckle.AspNetCore.ApiTesting.csproj @@ -8,30 +8,30 @@ netstandard2.0;netcoreapp3.0;net5.0;net6.0;net7.0 + + + + + + - + - + - + - + - - - - - - - - + + diff --git a/src/Swashbuckle.AspNetCore.Cli/Swashbuckle.AspNetCore.Cli.csproj b/src/Swashbuckle.AspNetCore.Cli/Swashbuckle.AspNetCore.Cli.csproj index c1c90fb57a..65231b9115 100644 --- a/src/Swashbuckle.AspNetCore.Cli/Swashbuckle.AspNetCore.Cli.csproj +++ b/src/Swashbuckle.AspNetCore.Cli/Swashbuckle.AspNetCore.Cli.csproj @@ -15,7 +15,7 @@ - + - \ No newline at end of file + diff --git a/src/Swashbuckle.AspNetCore.Newtonsoft/Swashbuckle.AspNetCore.Newtonsoft.csproj b/src/Swashbuckle.AspNetCore.Newtonsoft/Swashbuckle.AspNetCore.Newtonsoft.csproj index cb44a7565f..56bfc04442 100644 --- a/src/Swashbuckle.AspNetCore.Newtonsoft/Swashbuckle.AspNetCore.Newtonsoft.csproj +++ b/src/Swashbuckle.AspNetCore.Newtonsoft/Swashbuckle.AspNetCore.Newtonsoft.csproj @@ -4,7 +4,7 @@ Swashbuckle.AspNetCore.Newtonsoft.snk Swagger Generator opt-in component to support Newtonsoft.Json serializer behaviors swagger;documentation;discovery;help;webapi;aspnet;aspnetcore;newtonsoft - true + true netstandard2.0;netcoreapp3.0;net5.0;net6.0;net7.0 @@ -13,23 +13,23 @@ - + - + - + - + - + diff --git a/src/Swashbuckle.AspNetCore.ReDoc/Swashbuckle.AspNetCore.ReDoc.csproj b/src/Swashbuckle.AspNetCore.ReDoc/Swashbuckle.AspNetCore.ReDoc.csproj index 2e08097a1d..7f9de9d46b 100644 --- a/src/Swashbuckle.AspNetCore.ReDoc/Swashbuckle.AspNetCore.ReDoc.csproj +++ b/src/Swashbuckle.AspNetCore.ReDoc/Swashbuckle.AspNetCore.ReDoc.csproj @@ -6,7 +6,7 @@ true $(NoWarn);1591 swagger;documentation;discovery;help;webapi;aspnet;aspnetcore;redoc - true + true netstandard2.0;netcoreapp3.0;net5.0;net6.0;net7.0 @@ -16,10 +16,10 @@ - - - - + + + + diff --git a/src/Swashbuckle.AspNetCore.Swagger/Swashbuckle.AspNetCore.Swagger.csproj b/src/Swashbuckle.AspNetCore.Swagger/Swashbuckle.AspNetCore.Swagger.csproj index 950e475274..f7bd478f52 100644 --- a/src/Swashbuckle.AspNetCore.Swagger/Swashbuckle.AspNetCore.Swagger.csproj +++ b/src/Swashbuckle.AspNetCore.Swagger/Swashbuckle.AspNetCore.Swagger.csproj @@ -6,12 +6,12 @@ true $(NoWarn);1591 swagger;documentation;discovery;help;webapi;aspnet;aspnetcore - true + true netstandard2.0;netcoreapp3.0;net5.0;net6.0;net7.0 - + @@ -19,7 +19,7 @@ - + diff --git a/src/Swashbuckle.AspNetCore.SwaggerGen/Swashbuckle.AspNetCore.SwaggerGen.csproj b/src/Swashbuckle.AspNetCore.SwaggerGen/Swashbuckle.AspNetCore.SwaggerGen.csproj index 7781dd492e..6ca8869444 100644 --- a/src/Swashbuckle.AspNetCore.SwaggerGen/Swashbuckle.AspNetCore.SwaggerGen.csproj +++ b/src/Swashbuckle.AspNetCore.SwaggerGen/Swashbuckle.AspNetCore.SwaggerGen.csproj @@ -6,7 +6,7 @@ true $(NoWarn);1591 swagger;documentation;discovery;help;webapi;aspnet;aspnetcore - true + true netstandard2.0;netcoreapp3.0;net5.0;net6.0;net7.0 @@ -15,9 +15,9 @@ - - - + + + diff --git a/src/Swashbuckle.AspNetCore.SwaggerUI/Swashbuckle.AspNetCore.SwaggerUI.csproj b/src/Swashbuckle.AspNetCore.SwaggerUI/Swashbuckle.AspNetCore.SwaggerUI.csproj index ebc70ddb71..f4e88f45ef 100644 --- a/src/Swashbuckle.AspNetCore.SwaggerUI/Swashbuckle.AspNetCore.SwaggerUI.csproj +++ b/src/Swashbuckle.AspNetCore.SwaggerUI/Swashbuckle.AspNetCore.SwaggerUI.csproj @@ -6,7 +6,7 @@ true $(NoWarn);1591 swagger;documentation;discovery;help;webapi;aspnet;aspnetcore - true + true netstandard2.0;netcoreapp3.0;net5.0;net6.0;net7.0 @@ -16,10 +16,10 @@ - - - - + + + + diff --git a/test/Swashbuckle.AspNetCore.Annotations.Test/Swashbuckle.AspNetCore.Annotations.Test.csproj b/test/Swashbuckle.AspNetCore.Annotations.Test/Swashbuckle.AspNetCore.Annotations.Test.csproj index d0912b52c7..fed1d26b47 100644 --- a/test/Swashbuckle.AspNetCore.Annotations.Test/Swashbuckle.AspNetCore.Annotations.Test.csproj +++ b/test/Swashbuckle.AspNetCore.Annotations.Test/Swashbuckle.AspNetCore.Annotations.Test.csproj @@ -1,8 +1,7 @@  - 10 - net6.0 + net6.0 @@ -13,13 +12,9 @@ - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + diff --git a/test/Swashbuckle.AspNetCore.ApiTesting.Test/Swashbuckle.AspNetCore.ApiTesting.Test.csproj b/test/Swashbuckle.AspNetCore.ApiTesting.Test/Swashbuckle.AspNetCore.ApiTesting.Test.csproj index 2bf0784f51..8bd159a0bb 100644 --- a/test/Swashbuckle.AspNetCore.ApiTesting.Test/Swashbuckle.AspNetCore.ApiTesting.Test.csproj +++ b/test/Swashbuckle.AspNetCore.ApiTesting.Test/Swashbuckle.AspNetCore.ApiTesting.Test.csproj @@ -1,7 +1,7 @@  - net6.0 + net6.0 @@ -9,13 +9,9 @@ - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + diff --git a/test/Swashbuckle.AspNetCore.Cli.Test/Swashbuckle.AspNetCore.Cli.Test.csproj b/test/Swashbuckle.AspNetCore.Cli.Test/Swashbuckle.AspNetCore.Cli.Test.csproj index 32a8170152..da3d75f117 100644 --- a/test/Swashbuckle.AspNetCore.Cli.Test/Swashbuckle.AspNetCore.Cli.Test.csproj +++ b/test/Swashbuckle.AspNetCore.Cli.Test/Swashbuckle.AspNetCore.Cli.Test.csproj @@ -1,7 +1,7 @@  - net6.0 + net6.0 @@ -11,13 +11,9 @@ - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + diff --git a/test/Swashbuckle.AspNetCore.IntegrationTests/Swashbuckle.AspNetCore.IntegrationTests.csproj b/test/Swashbuckle.AspNetCore.IntegrationTests/Swashbuckle.AspNetCore.IntegrationTests.csproj index 766a12c32f..e19e5cf393 100644 --- a/test/Swashbuckle.AspNetCore.IntegrationTests/Swashbuckle.AspNetCore.IntegrationTests.csproj +++ b/test/Swashbuckle.AspNetCore.IntegrationTests/Swashbuckle.AspNetCore.IntegrationTests.csproj @@ -4,7 +4,7 @@ Swashbuckle.AspNetCore.IntegrationTests.snk $(NoWarn);8002 true - net6.0 + net6.0 @@ -22,15 +22,11 @@ - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - + + + + + diff --git a/test/Swashbuckle.AspNetCore.IntegrationTests/TestSite.cs b/test/Swashbuckle.AspNetCore.IntegrationTests/TestSite.cs index 5ff8606862..475d400c18 100644 --- a/test/Swashbuckle.AspNetCore.IntegrationTests/TestSite.cs +++ b/test/Swashbuckle.AspNetCore.IntegrationTests/TestSite.cs @@ -18,11 +18,12 @@ public TestSite(Type startupType) public TestServer BuildServer() { - var siteContentRoot = GetApplicationPath(Path.Combine("..", "..", "..", "..", "WebSites")); + var startupAssembly = _startupType.GetTypeInfo().Assembly; + var applicationName = startupAssembly.GetName().Name; var builder = new WebHostBuilder() .UseEnvironment("Development") - .UseContentRoot(siteContentRoot) + .UseSolutionRelativeContentRoot(Path.Combine("test", "WebSites", applicationName)) .UseStartup(_startupType); return new TestServer(builder); @@ -35,13 +36,5 @@ public HttpClient BuildClient() return client; } - - private string GetApplicationPath(string relativePath) - { - var startupAssembly = _startupType.GetTypeInfo().Assembly; - var applicationName = startupAssembly.GetName().Name; - var applicationBasePath = System.AppContext.BaseDirectory; - return Path.GetFullPath(Path.Combine(applicationBasePath, relativePath, applicationName)); - } } -} \ No newline at end of file +} diff --git a/test/Swashbuckle.AspNetCore.Newtonsoft.Test/Swashbuckle.AspNetCore.Newtonsoft.Test.csproj b/test/Swashbuckle.AspNetCore.Newtonsoft.Test/Swashbuckle.AspNetCore.Newtonsoft.Test.csproj index 5a159eda70..958de8d8fc 100644 --- a/test/Swashbuckle.AspNetCore.Newtonsoft.Test/Swashbuckle.AspNetCore.Newtonsoft.Test.csproj +++ b/test/Swashbuckle.AspNetCore.Newtonsoft.Test/Swashbuckle.AspNetCore.Newtonsoft.Test.csproj @@ -1,17 +1,13 @@ - + - net6.0 + net6.0 - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + diff --git a/test/Swashbuckle.AspNetCore.SwaggerGen.Test/Swashbuckle.AspNetCore.SwaggerGen.Test.csproj b/test/Swashbuckle.AspNetCore.SwaggerGen.Test/Swashbuckle.AspNetCore.SwaggerGen.Test.csproj index 7270e0f54a..d86382c907 100644 --- a/test/Swashbuckle.AspNetCore.SwaggerGen.Test/Swashbuckle.AspNetCore.SwaggerGen.Test.csproj +++ b/test/Swashbuckle.AspNetCore.SwaggerGen.Test/Swashbuckle.AspNetCore.SwaggerGen.Test.csproj @@ -2,8 +2,9 @@ Swashbuckle.AspNetCore.SwaggerGen.Test.xml + true 1701;1702;1591 - net6.0 + net6.0 @@ -13,13 +14,9 @@ - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + - \ No newline at end of file + diff --git a/test/Swashbuckle.AspNetCore.TestSupport/Swashbuckle.AspNetCore.TestSupport.csproj b/test/Swashbuckle.AspNetCore.TestSupport/Swashbuckle.AspNetCore.TestSupport.csproj index 41fd347761..befe7167b9 100644 --- a/test/Swashbuckle.AspNetCore.TestSupport/Swashbuckle.AspNetCore.TestSupport.csproj +++ b/test/Swashbuckle.AspNetCore.TestSupport/Swashbuckle.AspNetCore.TestSupport.csproj @@ -1,9 +1,11 @@  - net6.0 + net6.0 false false + 1.0.0 + @@ -15,7 +17,7 @@ - + diff --git a/test/WebSites/CliExample/CliExample.csproj b/test/WebSites/CliExample/CliExample.csproj index de789733e5..0c9b782c1f 100644 --- a/test/WebSites/CliExample/CliExample.csproj +++ b/test/WebSites/CliExample/CliExample.csproj @@ -13,7 +13,7 @@ @@ -31,4 +31,4 @@ - \ No newline at end of file + diff --git a/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj b/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj index c47814ab14..a31db2520f 100644 --- a/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj +++ b/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj @@ -6,7 +6,7 @@ - + @@ -17,7 +17,7 @@ @@ -35,4 +35,4 @@ - \ No newline at end of file + diff --git a/test/WebSites/MultipleVersions/MultipleVersions.csproj b/test/WebSites/MultipleVersions/MultipleVersions.csproj index 28a77e2c5f..33ec719e11 100644 --- a/test/WebSites/MultipleVersions/MultipleVersions.csproj +++ b/test/WebSites/MultipleVersions/MultipleVersions.csproj @@ -5,8 +5,8 @@ - - + + diff --git a/test/WebSites/NetCore21/NetCore21.csproj b/test/WebSites/NetCore21/NetCore21.csproj index 952bac97b9..92ab0dbcab 100644 --- a/test/WebSites/NetCore21/NetCore21.csproj +++ b/test/WebSites/NetCore21/NetCore21.csproj @@ -6,7 +6,7 @@ - + diff --git a/test/WebSites/NswagClientExample/NswagClientExample.csproj b/test/WebSites/NswagClientExample/NswagClientExample.csproj index 5ad96bbdfc..60282ca8f8 100644 --- a/test/WebSites/NswagClientExample/NswagClientExample.csproj +++ b/test/WebSites/NswagClientExample/NswagClientExample.csproj @@ -6,11 +6,8 @@ - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - + + diff --git a/test/WebSites/OAuth2Integration/OAuth2Integration.csproj b/test/WebSites/OAuth2Integration/OAuth2Integration.csproj index bbdc1e6830..31bcb43085 100644 --- a/test/WebSites/OAuth2Integration/OAuth2Integration.csproj +++ b/test/WebSites/OAuth2Integration/OAuth2Integration.csproj @@ -5,8 +5,8 @@ - - + + diff --git a/test/WebSites/TestFirst.IntegrationTests/ApiTestsSetup.cs b/test/WebSites/TestFirst.IntegrationTests/ApiTestsSetup.cs index b22d795461..ac9442e9bc 100644 --- a/test/WebSites/TestFirst.IntegrationTests/ApiTestsSetup.cs +++ b/test/WebSites/TestFirst.IntegrationTests/ApiTestsSetup.cs @@ -1,4 +1,6 @@ +using System; using System.IO; +using System.Linq; using Microsoft.OpenApi.Models; using Swashbuckle.AspNetCore.ApiTesting; using Xunit; @@ -11,9 +13,9 @@ public ApiTestRunner() { Configure(c => { - var apiDocsRoot = Path.Combine(System.AppContext.BaseDirectory, "..", "..", "..", "..", "TestFirst", "wwwroot", "swagger"); + var apiDocsRoot = Path.Combine(GetSolutionRelativeContentRoot(Path.Combine("test", "WebSites", "TestFirst")), "wwwroot", "swagger"); - // This app demonstrates the two differnt workflows that can be used with this library ... + // This app demonstrates the two different workflows that can be used with this library ... // 1) Import OpenAPI file(s) from elsewhere (e.g. created via http://editor.swagger.io) c.AddOpenApiFile("v1-imported", $"{apiDocsRoot}/v1-imported/openapi.json"); @@ -32,9 +34,31 @@ public ApiTestRunner() c.FileOutputRoot = apiDocsRoot; }); } + + private static string GetSolutionRelativeContentRoot( + string solutionRelativePath, + string solutionName = "*.sln") + { + ArgumentNullException.ThrowIfNull(solutionRelativePath); + + var directoryInfo = new DirectoryInfo(AppContext.BaseDirectory); + do + { + var solutionPath = Directory.EnumerateFiles(directoryInfo.FullName, solutionName).FirstOrDefault(); + if (solutionPath != null) + { + return Path.GetFullPath(Path.Combine(directoryInfo.FullName, solutionRelativePath)); + } + + directoryInfo = directoryInfo.Parent; + } + while (directoryInfo is not null); + + throw new InvalidOperationException($"Solution root could not be located using application root {AppContext.BaseDirectory}."); + } } [CollectionDefinition("ApiTests")] public class ApiTestsCollection : ICollectionFixture {} -} \ No newline at end of file +} diff --git a/test/WebSites/TestFirst.IntegrationTests/TestFirst.IntegrationTests.csproj b/test/WebSites/TestFirst.IntegrationTests/TestFirst.IntegrationTests.csproj index 2b47923076..6769f0427c 100644 --- a/test/WebSites/TestFirst.IntegrationTests/TestFirst.IntegrationTests.csproj +++ b/test/WebSites/TestFirst.IntegrationTests/TestFirst.IntegrationTests.csproj @@ -5,16 +5,9 @@ - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - + + + From dc519107e27ad7cd4e5aa9b45d9a1b367496c055 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 13:39:27 +0100 Subject: [PATCH 06/28] Remove licenseUrl Remove `licenseUrl` as it is mutually exclusive with `licenseExpression`. --- src/Swashbuckle.AspNetCore/Swashbuckle.AspNetCore.csproj | 1 - src/Swashbuckle.AspNetCore/Swashbuckle.AspNetCore.nuspec | 1 - 2 files changed, 2 deletions(-) diff --git a/src/Swashbuckle.AspNetCore/Swashbuckle.AspNetCore.csproj b/src/Swashbuckle.AspNetCore/Swashbuckle.AspNetCore.csproj index 81c8d03a9c..7719f889e6 100644 --- a/src/Swashbuckle.AspNetCore/Swashbuckle.AspNetCore.csproj +++ b/src/Swashbuckle.AspNetCore/Swashbuckle.AspNetCore.csproj @@ -23,7 +23,6 @@ description=$(PackageDescription); id=$(PackageId); licenseExpression=$(PackageLicenseExpression); - licenseUrl=$(LicenseUrl); microsoftExtensionsApiDescriptionServerPackageVersion=$(MicrosoftExtensionsApiDescriptionServerPackageVersion); projectUrl=$(PackageProjectUrl); repositoryType=$(RepositoryType); diff --git a/src/Swashbuckle.AspNetCore/Swashbuckle.AspNetCore.nuspec b/src/Swashbuckle.AspNetCore/Swashbuckle.AspNetCore.nuspec index f355c947ba..0231c6d279 100644 --- a/src/Swashbuckle.AspNetCore/Swashbuckle.AspNetCore.nuspec +++ b/src/Swashbuckle.AspNetCore/Swashbuckle.AspNetCore.nuspec @@ -7,7 +7,6 @@ $authors$ false $licenseExpression$ - $licenseUrl$ $projectUrl$ $description$ $tags$ From ff8f4beaca083823b60beffda74d388b61cec024 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 13:42:29 +0100 Subject: [PATCH 07/28] Add GitHub Actions workflows - Add workflow to build, pack, test and publish the project. - Add workflow to run CodeQL. - Add workflow to lint GitHub Actions workflows. - Add workflow to generate OSSF scorecard. - Add workflow to update the .NET SDK. - Add workflow to prune stale GitHub issues and PRs. - Add simple build script to share between CI and local development. - Remove AppVeyor CI. --- .github/actionlint-matcher.json | 17 +++ .github/workflows/actions-lint.yml | 36 +++++ .github/workflows/build.yml | 166 ++++++++++++++++++++++++ .github/workflows/codeql-analysis.yml | 54 ++++++++ .github/workflows/ossf-scorecard.yml | 44 +++++++ .github/workflows/stale.yml | 29 +++++ .github/workflows/update-dotnet-sdk.yml | 32 +++++ README.md | 4 +- Swashbuckle.AspNetCore.sln | 33 +++-- appveyor.yml | 39 ------ build.ps1 | 30 +++++ 11 files changed, 435 insertions(+), 49 deletions(-) create mode 100644 .github/actionlint-matcher.json create mode 100644 .github/workflows/actions-lint.yml create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/codeql-analysis.yml create mode 100644 .github/workflows/ossf-scorecard.yml create mode 100644 .github/workflows/stale.yml create mode 100644 .github/workflows/update-dotnet-sdk.yml delete mode 100644 appveyor.yml create mode 100644 build.ps1 diff --git a/.github/actionlint-matcher.json b/.github/actionlint-matcher.json new file mode 100644 index 0000000000..4613e1617b --- /dev/null +++ b/.github/actionlint-matcher.json @@ -0,0 +1,17 @@ +{ + "problemMatcher": [ + { + "owner": "actionlint", + "pattern": [ + { + "regexp": "^(?:\\x1b\\[\\d+m)?(.+?)(?:\\x1b\\[\\d+m)*:(?:\\x1b\\[\\d+m)*(\\d+)(?:\\x1b\\[\\d+m)*:(?:\\x1b\\[\\d+m)*(\\d+)(?:\\x1b\\[\\d+m)*: (?:\\x1b\\[\\d+m)*(.+?)(?:\\x1b\\[\\d+m)* \\[(.+?)\\]$", + "file": 1, + "line": 2, + "column": 3, + "message": 4, + "code": 5 + } + ] + } + ] +} diff --git a/.github/workflows/actions-lint.yml b/.github/workflows/actions-lint.yml new file mode 100644 index 0000000000..342326cc13 --- /dev/null +++ b/.github/workflows/actions-lint.yml @@ -0,0 +1,36 @@ +name: actions-lint + +on: + push: + branches: [ master ] + paths-ignore: + - '**/*.gitattributes' + - '**/*.gitignore' + - '**/*.md' + pull_request: + branches: [ master ] + workflow_dispatch: + +permissions: + contents: read + +env: + FORCE_COLOR: 3 + TERM: xterm + +jobs: + lint: + runs-on: ubuntu-latest + + steps: + + - name: Checkout code + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + + - name: Add actionlint problem matcher + run: echo "::add-matcher::.github/actionlint-matcher.json" + + - name: Lint workflows + uses: docker://rhysd/actionlint@sha256:daa1edae4a6366f320b68abb60b74fb59a458c17b61938d3c62709d92b231558 # v1.6.27 + with: + args: -color diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000000..2b87d1cde5 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,166 @@ +name: build + +on: + push: + branches: [ master ] + tags: [ 'v*' ] + pull_request: + branches: [ master ] + workflow_dispatch: + +env: + DOTNET_CLI_TELEMETRY_OPTOUT: true + DOTNET_GENERATE_ASPNET_CERTIFICATE: false + DOTNET_NOLOGO: true + DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true + DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTION: 1 + NUGET_XMLDOC_MODE: skip + TERM: xterm + +permissions: + contents: read + +jobs: + build: + name: ${{ matrix.os }} + runs-on: ${{ matrix.os }} + + outputs: + dotnet-sdk-version: ${{ steps.setup-dotnet.outputs.dotnet-version }} + + strategy: + fail-fast: false + matrix: + os: + - macos-latest + - ubuntu-latest + - windows-latest + + steps: + + - name: Checkout code + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + + - name: Setup .NET SDK + uses: actions/setup-dotnet@4d6c8fcf3c8f7a60068d26b594648e99df24cee3 # v4.0.0 + id: setup-dotnet + + - name: Setup NuGet cache + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + with: + path: ~/.nuget/packages + key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', '**/*.props') }} + restore-keys: ${{ runner.os }}-nuget- + + - name: Build, Package and Test + shell: pwsh + run: | + ./build.ps1 + + - name: Upload Coverage Reports + if: always() + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + with: + name: coverage-${{ runner.os }} + path: ./artifacts/coverage-reports + if-no-files-found: ignore + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@c16abc29c95fcf9174b58eb7e1abf4c866893bc8 # v4.1.1 + with: + files: ./artifacts/coverage/coverage.cobertura.xml + flags: ${{ runner.os }} + token: ${{ secrets.CODECOV_TOKEN }} + + - name: Publish NuGet packages + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + with: + name: packages-${{ runner.os }} + path: ./artifacts/package/release + if-no-files-found: error + + validate-packages: + needs: build + runs-on: ubuntu-latest + steps: + + - name: Download packages + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 + with: + name: packages-Windows + + - name: Setup .NET SDK + uses: actions/setup-dotnet@4d6c8fcf3c8f7a60068d26b594648e99df24cee3 # v4.0.0 + with: + dotnet-version: ${{ needs.build.outputs.dotnet-sdk-version }} + + - name: Validate NuGet packages + shell: pwsh + run: | + dotnet tool install --global dotnet-validate --version 0.0.1-preview.304 + $packages = Get-ChildItem -Filter "*.nupkg" | ForEach-Object { $_.FullName } + $invalidPackages = 0 + foreach ($package in $packages) { + dotnet validate package local $package + if ($LASTEXITCODE -ne 0) { + $invalidPackages++ + } + } + if ($invalidPackages -gt 0) { + Write-Output "::error::$invalidPackages NuGet package(s) failed validation." + } + + publish-myget: + needs: [ build, validate-packages ] + runs-on: ubuntu-latest + if: | + github.event.repository.fork == false && + (github.ref_name == github.event.repository.default_branch || + startsWith(github.ref, 'refs/tags/v')) + + environment: + name: MyGet.org + url: https://www.myget.org/gallery/domaindrivendev + + steps: + + - name: Download packages + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 + with: + name: packages-Windows + + - name: Setup .NET SDK + uses: actions/setup-dotnet@4d6c8fcf3c8f7a60068d26b594648e99df24cee3 # v4.0.0 + with: + dotnet-version: ${{ needs.build.outputs.dotnet-sdk-version }} + + - name: Push signed NuGet packages to NuGet.org + run: | + dotnet nuget push "*.nupkg" --api-key ${{ secrets.MYGET_TOKEN }} --skip-duplicate --source https://www.myget.org/F/domaindrivendev/api/v2 + + publish-nuget: + needs: [ build, validate-packages ] + runs-on: ubuntu-latest + if: | + github.event.repository.fork == false && + startsWith(github.ref, 'refs/tags/v') + + environment: + name: NuGet.org + url: https://www.nuget.org/profiles/domaindrivendev + + steps: + + - name: Download packages + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 + with: + name: packages-Windows + + - name: Setup .NET SDK + uses: actions/setup-dotnet@4d6c8fcf3c8f7a60068d26b594648e99df24cee3 # v4.0.0 + with: + dotnet-version: ${{ needs.build.outputs.dotnet-sdk-version }} + + - name: Push signed NuGet packages to NuGet.org + run: | + dotnet nuget push "*.nupkg" --api-key ${{ secrets.NUGET_TOKEN }} --skip-duplicate --source https://api.nuget.org/v3/index.json diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 0000000000..f4aa8397b4 --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,54 @@ +name: code-scan + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + schedule: + - cron: '0 8 * * MON' + workflow_dispatch: + +permissions: + actions: read + contents: read + +jobs: + code-ql: + + runs-on: ubuntu-latest + + permissions: + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'csharp' ] + + steps: + - name: Checkout repository + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + + - name: Setup .NET SDK + uses: actions/setup-dotnet@4d6c8fcf3c8f7a60068d26b594648e99df24cee3 # v4.0.0 + + - name: Setup NuGet cache + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + with: + path: ~/.nuget/packages + key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', '**/*.props') }} + restore-keys: ${{ runner.os }}-nuget- + + - name: Initialize CodeQL + uses: github/codeql-action/init@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 + with: + languages: ${{ matrix.language }} + + - name: Autobuild + uses: github/codeql-action/autobuild@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 + with: + category: '/language:${{ matrix.language }}' diff --git a/.github/workflows/ossf-scorecard.yml b/.github/workflows/ossf-scorecard.yml new file mode 100644 index 0000000000..5e48dd0854 --- /dev/null +++ b/.github/workflows/ossf-scorecard.yml @@ -0,0 +1,44 @@ +name: ossf-scorecard + +on: + push: + branches: [ master ] + schedule: + - cron: '0 8 * * MON' + workflow_dispatch: + +permissions: read-all + +jobs: + analysis: + name: analysis + runs-on: ubuntu-latest + + permissions: + id-token: write + security-events: write + + steps: + - name: Checkout code + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + with: + persist-credentials: false + + - name: Run analysis + uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 + with: + publish_results: true + results_file: results.sarif + results_format: sarif + + - name: Upload artifact + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + with: + name: SARIF + path: results.sarif + retention-days: 5 + + - name: Upload to code-scanning + uses: github/codeql-action/upload-sarif@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 + with: + sarif_file: results.sarif diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000000..332a19f0de --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,29 @@ +name: stale + +on: + schedule: + - cron: '30 1 * * *' + workflow_dispatch: + +permissions: + issues: read + pull-requests: read + +jobs: + stale: + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + steps: + - uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0 + with: + days-before-close: 14 + days-before-stale: 60 + exempt-issue-labels: 'announcement,help-wanted' + stale-issue-label: 'stale' + stale-issue-message: 'This issue is stale because it has been open for 60 days with no activity. It will be automatically closed in 14 days if no further updates are made.' + close-issue-message: 'This issue was closed because it has been inactive for 14 days since being marked as stale.' + stale-pr-label: 'stale' + stale-pr-message: 'This pull request is stale because it has been open for 60 days with no activity. It will be automatically closed in 14 days if no further changes are made.' + close-pr-message: 'This pull request was closed because it has been inactive for 14 days since being marked as stale.' diff --git a/.github/workflows/update-dotnet-sdk.yml b/.github/workflows/update-dotnet-sdk.yml new file mode 100644 index 0000000000..3197498804 --- /dev/null +++ b/.github/workflows/update-dotnet-sdk.yml @@ -0,0 +1,32 @@ +name: update-dotnet-sdk + +on: + schedule: + - cron: '0 10 * * WED' + workflow_dispatch: + +permissions: + contents: read + +jobs: + update-dotnet-sdk: + uses: martincostello/update-dotnet-sdk/.github/workflows/update-dotnet-sdk.yml@9d42ad9bcbd97a74394c7273c9c616b4bf136b53 # v3.1.3 + with: + labels: 'dependencies,.NET' + update-nuget-packages: false + secrets: + repo-token: ${{ secrets.GITHUB_TOKEN }} + + add-security-label: + needs: update-dotnet-sdk + permissions: + pull-requests: write + runs-on: ubuntu-latest + if : | + needs.update-dotnet-sdk.outputs.sdk-updated =='true' && + needs.update-dotnet-sdk.outputs.security == 'true' + steps: + - name: Add security label + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: gh pr edit "${{ needs.update-dotnet-sdk.outputs.pull-request-html-url }}" --add-label security diff --git a/README.md b/README.md index dcfda78d8b..0b0779b6d4 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ Swashbuckle.AspNetCore ========= -[![Build status](https://ci.appveyor.com/api/projects/status/xpsk2cj1xn12c0r7/branch/master?svg=true)](https://ci.appveyor.com/project/domaindrivendev/ahoy/branch/master) +[![Build status](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/workflows/build/badge.svg?branch=master&event=push)](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/actions?query=workflow%3Abuild+branch%3Amaster+event%3Apush) [![Code coverage](https://codecov.io/gh/domaindrivendev/Swashbuckle.AspNetCore/branch/master/graph/badge.svg)](https://codecov.io/gh/domaindrivendev/Swashbuckle.AspNetCore) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/domaindrivendev/Swashbuckle.AspNetCore/badge)](https://securityscorecards.dev/viewer/?uri=github.com/domaindrivendev/Swashbuckle.AspNetCore) -[![Nuget](https://img.shields.io/nuget/v/swashbuckle.aspnetcore)](https://www.nuget.org/packages/swashbuckle.aspnetcore/) +[![NuGet](https://buildstats.info/nuget/Swashbuckle.AspNetCore)](https://www.nuget.org/packages/Swashbuckle.AspNetCore/ "Download Swashbuckle.AspNetCore from NuGet.org") [Swagger](http://swagger.io) tooling for APIs built with ASP.NET Core. Generate beautiful API documentation, including a UI to explore and test operations, directly from your routes, controllers and models. diff --git a/Swashbuckle.AspNetCore.sln b/Swashbuckle.AspNetCore.sln index 083033fadb..d310bb0f8b 100644 --- a/Swashbuckle.AspNetCore.sln +++ b/Swashbuckle.AspNetCore.sln @@ -7,11 +7,16 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{15A55F4A-FC3 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{FA1B4021-0A97-4F68-B966-148191F6AAA8}" ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig + .gitattributes = .gitattributes .gitignore = .gitignore - appveyor.yml = appveyor.yml CONTRIBUTING.md = CONTRIBUTING.md - src\Directory.Build.props = src\Directory.Build.props + Directory.Build.props = Directory.Build.props + Directory.Build.targets = Directory.Build.targets + Directory.Packages.props = Directory.Packages.props + global.json = global.json ISSUE_TEMPLATE.md = ISSUE_TEMPLATE.md + LICENSE = LICENSE README.md = README.md EndProjectSection ProjectSection(FolderGlobals) = preProject @@ -24,12 +29,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Swashbuckle.AspNetCore.Swag EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Swashbuckle.AspNetCore", "src\Swashbuckle.AspNetCore\Swashbuckle.AspNetCore.csproj", "{7D077710-1B4A-4DEC-96E9-CE6192D4493D}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ci", "ci", "{65B4042A-F6DC-423A-A494-7CFD610E671B}" - ProjectSection(SolutionItems) = preProject - ci\build.ps1 = ci\build.ps1 - ci\test.ps1 = ci\test.ps1 - EndProjectSection -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Swashbuckle.AspNetCore.ReDoc", "src\Swashbuckle.AspNetCore.ReDoc\Swashbuckle.AspNetCore.ReDoc.csproj", "{B5E94C7D-B76E-4181-87E5-ACD8971A987E}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Swashbuckle.AspNetCore.Cli", "src\Swashbuckle.AspNetCore.Cli\Swashbuckle.AspNetCore.Cli.csproj", "{3164424E-D74A-45CD-BE17-BE33ED79C090}" @@ -92,6 +91,22 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Swashbuckle.AspNetCore.Test EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MinimalApp", "test\WebSites\MinimalApp\MinimalApp.csproj", "{3D0126CB-5439-483C-B2D5-4B4BE111D15C}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{3BA087DA-788C-43D6-9D8B-1EF017014A4A}" + ProjectSection(SolutionItems) = preProject + .github\actionlint-matcher.json = .github\actionlint-matcher.json + .github\dependabot.yml = .github\dependabot.yml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{A0EC16BE-C520-4FCF-BB54-2D79CD255F00}" + ProjectSection(SolutionItems) = preProject + .github\workflows\actions-lint.yml = .github\workflows\actions-lint.yml + .github\workflows\build.yml = .github\workflows\build.yml + .github\workflows\codeql-analysis.yml = .github\workflows\codeql-analysis.yml + .github\workflows\ossf-scorecard.yml = .github\workflows\ossf-scorecard.yml + .github\workflows\stale.yml = .github\workflows\stale.yml + .github\workflows\update-dotnet-sdk.yml = .github\workflows\update-dotnet-sdk.yml + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -524,6 +539,8 @@ Global {76692D68-C38C-4A7D-B3DA-DA78A393E266} = {0ADCB223-F375-45AB-8BC4-834EC9C69554} {66590FBA-5FDD-4AC9-AF91-26ADAB33CCB8} = {0ADCB223-F375-45AB-8BC4-834EC9C69554} {3D0126CB-5439-483C-B2D5-4B4BE111D15C} = {DB3F57FC-1472-4F03-B551-43394DA3C5EB} + {3BA087DA-788C-43D6-9D8B-1EF017014A4A} = {FA1B4021-0A97-4F68-B966-148191F6AAA8} + {A0EC16BE-C520-4FCF-BB54-2D79CD255F00} = {3BA087DA-788C-43D6-9D8B-1EF017014A4A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {36FC6A67-247D-4149-8EDD-79FFD1A75F51} diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index cf38d36b98..0000000000 --- a/appveyor.yml +++ /dev/null @@ -1,39 +0,0 @@ -image: Visual Studio 2019 - -install: - - ps: Invoke-WebRequest "https://dot.net/v1/dotnet-install.ps1" -OutFile "./dotnet-install.ps1" - - ps: ./dotnet-install.ps1 -JsonFile global.json - -init: -- git config --global core.autocrlf true - -environment: - DOTNET_VERSION: "7.0.100" - -build_script: -- ps: dotnet pack -c Release -o artifacts - -test_script: -- ps: dotnet test - -artifacts: -- path: artifacts\*.nupkg - -deploy: -- provider: NuGet - server: https://www.myget.org/F/domaindrivendev/api/v2 - on: - branch: master - appveyor_repo_tag: false - api_key: - secure: 9QrW8KWCDr8G2ufmOX4O7U4yjneFOYY+5h+auICuWYb1YPaKpQBtUVqrRExg8VXR - skip_symbols: true - -- provider: NuGet - server: https://www.nuget.org/api/v2/package - on: - branch: master - appveyor_repo_tag: true - api_key: - secure: 4Ck/dgw64rouEDpv5fpgMsla2ZjM7H3idArzuwP7D8DUIM44BQhSCRhujesSHPAr - skip_symbols: true diff --git a/build.ps1 b/build.ps1 new file mode 100644 index 0000000000..78a8c2b1df --- /dev/null +++ b/build.ps1 @@ -0,0 +1,30 @@ +#! /usr/bin/env pwsh + +#Requires -PSEdition Core +#Requires -Version 7 + +param( + [Parameter(Mandatory = $false)][string] $Configuration = "Release" +) + +$ErrorActionPreference = "Stop" +$ProgressPreference = "SilentlyContinue" + +dotnet pack --configuration $Configuration + +if ($LASTEXITCODE -ne 0) { + throw "dotnet pack failed with exit code $LASTEXITCODE" +} + +$additionalArgs = @() + +if (![string]::IsNullOrEmpty($env:GITHUB_SHA)) { + $additionalArgs += "--logger" + $additionalArgs += "GitHubActions;report-warnings=false" +} + +dotnet test --configuration $Configuration $additionalArgs + +if ($LASTEXITCODE -ne 0) { + throw "dotnet test failed with exit code $LASTEXITCODE" +} From 16f82010c539293e70aaf0be2f20b44ed6a4034a Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 13:43:02 +0100 Subject: [PATCH 08/28] Configure dependabot Enable dependabot for GitHub Actions and NuGet packages. --- .github/dependabot.yml | 58 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..28853aaef9 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,58 @@ +version: 2 +updates: +- package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: weekly + day: wednesday + time: "10:00" + timezone: Europe/London +# TODO Enable npm updates +#- package-ecosystem: npm +# directory: "/src/Swashbuckle.AspNetCore.ReDoc" +# schedule: +# interval: weekly +# day: wednesday +# time: "10:00" +# timezone: Europe/London +#- package-ecosystem: npm +# directory: "/src/Swashbuckle.AspNetCore.SwaggerUI" +# schedule: +# interval: weekly +# day: wednesday +# time: "10:00" +# timezone: Europe/London +- package-ecosystem: nuget + directory: "/" + groups: + coverlet: + patterns: + - coverlet* + Microsoft.OpenApi: + patterns: + - Microsoft.OpenApi* + xunit: + patterns: + - xunit* + schedule: + interval: weekly + day: wednesday + time: "10:00" + timezone: Europe/London + ignore: + # Ignore the libraries which are "pinned" + - dependency-name: "IdentityServer4" + - dependency-name: "IdentityServer4.AccessTokenValidation" + - dependency-name: "Microsoft.AspNetCore" + - dependency-name: "Microsoft.AspNetCore.App" + - dependency-name: "Microsoft.AspNetCore.Mvc.ApiExplorer" + - dependency-name: "Microsoft.AspNetCore.Mvc.DataAnnotations" + - dependency-name: "Microsoft.AspNetCore.Mvc.Formatters.Json" + - dependency-name: "Microsoft.AspNetCore.Mvc.NewtonsoftJson" + - dependency-name: "Microsoft.AspNetCore.Mvc.Testing" + - dependency-name: "Microsoft.AspNetCore.Routing" + - dependency-name: "Microsoft.AspNetCore.StaticFiles" + - dependency-name: "Microsoft.Extensions.FileProviders.Embedded" + - dependency-name: "Microsoft.OpenApi" + - dependency-name: "Microsoft.OpenApi.Readers" + - dependency-name: "System.Text.Json" From b6343410e9e49d13a2ea832cb9b35e1e8a9f5ceb Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 13:52:47 +0100 Subject: [PATCH 09/28] Fix report path Fix coverage reports being collected from the wrong location. --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2b87d1cde5..2f02fdeead 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -62,7 +62,7 @@ jobs: uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: coverage-${{ runner.os }} - path: ./artifacts/coverage-reports + path: ./artifacts/coverage if-no-files-found: ignore - name: Upload coverage to Codecov From 39d88eaca8ee469fc1ca271d58aa57da4210d10d Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 13:53:14 +0100 Subject: [PATCH 10/28] Set executable bit Set the executable bit for Linux and macOS. --- build.ps1 | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 build.ps1 diff --git a/build.ps1 b/build.ps1 old mode 100644 new mode 100755 From 030c3af37beb7db163c572a16bee6580fad29c18 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 14:21:59 +0100 Subject: [PATCH 11/28] Fix DotNetSwaggerPath Fix `DotNetSwaggerPath` being incorrect with artifacts output in use. --- test/WebSites/CliExample/CliExample.csproj | 2 +- .../WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj | 2 +- test/WebSites/MinimalApp/MinimalApp.csproj | 2 +- test/WebSites/NswagClientExample/NswagClientExample.csproj | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/WebSites/CliExample/CliExample.csproj b/test/WebSites/CliExample/CliExample.csproj index 0c9b782c1f..67f1b11d28 100644 --- a/test/WebSites/CliExample/CliExample.csproj +++ b/test/WebSites/CliExample/CliExample.csproj @@ -2,7 +2,7 @@ net6.0;net7.0 - $([System.IO.Path]::Combine("..", "..", "..", "src", "Swashbuckle.AspNetCore.Cli", "bin", $(Configuration), $(TargetFramework), "dotnet-swagger.dll")) + $([System.IO.Path]::Combine('$(ArtifactsPath)', 'bin', 'Swashbuckle.AspNetCore.Cli', '$(Configuration)_$(TargetFramework)', 'dotnet-swagger.dll')) diff --git a/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj b/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj index a31db2520f..8b36c39458 100644 --- a/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj +++ b/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj @@ -2,7 +2,7 @@ net6.0;net7.0 - $([System.IO.Path]::Combine("..", "..", "..", "src", "Swashbuckle.AspNetCore.Cli", "bin", $(Configuration), $(TargetFramework), "dotnet-swagger.dll")) + $([System.IO.Path]::Combine('$(ArtifactsPath)', 'bin', 'Swashbuckle.AspNetCore.Cli', '$(Configuration)_$(TargetFramework)', 'dotnet-swagger.dll')) diff --git a/test/WebSites/MinimalApp/MinimalApp.csproj b/test/WebSites/MinimalApp/MinimalApp.csproj index 6e89e08bf8..f3b09fb04f 100644 --- a/test/WebSites/MinimalApp/MinimalApp.csproj +++ b/test/WebSites/MinimalApp/MinimalApp.csproj @@ -4,7 +4,7 @@ net6.0 enable enable - $([System.IO.Path]::Combine("..", "..", "..", "src", "Swashbuckle.AspNetCore.Cli", "bin", $(Configuration), $(TargetFramework), "dotnet-swagger")) + $([System.IO.Path]::Combine('$(ArtifactsPath)', 'bin', 'Swashbuckle.AspNetCore.Cli', '$(Configuration)_$(TargetFramework)', 'dotnet-swagger.dll')) diff --git a/test/WebSites/NswagClientExample/NswagClientExample.csproj b/test/WebSites/NswagClientExample/NswagClientExample.csproj index 60282ca8f8..b0810e5432 100644 --- a/test/WebSites/NswagClientExample/NswagClientExample.csproj +++ b/test/WebSites/NswagClientExample/NswagClientExample.csproj @@ -2,7 +2,7 @@ net6.0 - $([System.IO.Path]::Combine("..", "..", "..", "src", "Swashbuckle.AspNetCore.Cli", "bin", $(Configuration), $(TargetFramework), "dotnet-swagger.dll")) + $([System.IO.Path]::Combine('$(ArtifactsPath)', 'bin', 'Swashbuckle.AspNetCore.Cli', '$(Configuration)_$(TargetFramework)', 'dotnet-swagger.dll')) From baf8254d3d6f46384b6be49a2583e07a0b4d9d32 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 14:27:13 +0100 Subject: [PATCH 12/28] Fix permissions Fix incorrect workflow permissions when using `GITHUB_TOKEN`. --- .github/workflows/update-dotnet-sdk.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/update-dotnet-sdk.yml b/.github/workflows/update-dotnet-sdk.yml index 3197498804..74690b295a 100644 --- a/.github/workflows/update-dotnet-sdk.yml +++ b/.github/workflows/update-dotnet-sdk.yml @@ -7,10 +7,14 @@ on: permissions: contents: read + pull-requests: read jobs: update-dotnet-sdk: uses: martincostello/update-dotnet-sdk/.github/workflows/update-dotnet-sdk.yml@9d42ad9bcbd97a74394c7273c9c616b4bf136b53 # v3.1.3 + permissions: + contents: write + pull-requests: write with: labels: 'dependencies,.NET' update-nuget-packages: false From 16c4cc92f2be2598673234949bf4059df06ce024 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 14:38:26 +0100 Subject: [PATCH 13/28] Change PR build version suffix Change to `pr..`. --- Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index 428b863177..df8e3b3656 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -53,7 +53,7 @@ preview - pr.$(GITHUB_RUN_NUMBER) + pr.$([System.String]::Copy('$(GITHUB_REF_NAME)').Replace('/merge','')).$(GITHUB_RUN_NUMBER) $(VersionPrefix).$(GITHUB_RUN_NUMBER) From 7f0b0e684b9388698bbfa95331f6d9351b7925d4 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 15:03:00 +0100 Subject: [PATCH 14/28] Fix paths used with exec - Ensure values are quoted. - Use absolute paths. --- test/WebSites/CliExample/CliExample.csproj | 2 +- .../WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj | 2 +- test/WebSites/NswagClientExample/NswagClientExample.csproj | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/WebSites/CliExample/CliExample.csproj b/test/WebSites/CliExample/CliExample.csproj index 67f1b11d28..4620641a10 100644 --- a/test/WebSites/CliExample/CliExample.csproj +++ b/test/WebSites/CliExample/CliExample.csproj @@ -28,7 +28,7 @@ --> - + diff --git a/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj b/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj index 8b36c39458..bec0c5d8db 100644 --- a/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj +++ b/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj @@ -32,7 +32,7 @@ --> - + diff --git a/test/WebSites/NswagClientExample/NswagClientExample.csproj b/test/WebSites/NswagClientExample/NswagClientExample.csproj index b0810e5432..355e65378f 100644 --- a/test/WebSites/NswagClientExample/NswagClientExample.csproj +++ b/test/WebSites/NswagClientExample/NswagClientExample.csproj @@ -22,7 +22,7 @@ - + From 11e6ce7f6c3f200aeef80a50c8b2ce0dc71b5ee3 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 15:09:15 +0100 Subject: [PATCH 15/28] Remove XML file Remove checked-in XML file and use the file from the build output. --- ...shbuckle.AspNetCore.SwaggerGen.Test.csproj | 1 - ...Swashbuckle.AspNetCore.SwaggerGen.Test.xml | 203 ------------------ 2 files changed, 204 deletions(-) delete mode 100644 test/Swashbuckle.AspNetCore.SwaggerGen.Test/Swashbuckle.AspNetCore.SwaggerGen.Test.xml diff --git a/test/Swashbuckle.AspNetCore.SwaggerGen.Test/Swashbuckle.AspNetCore.SwaggerGen.Test.csproj b/test/Swashbuckle.AspNetCore.SwaggerGen.Test/Swashbuckle.AspNetCore.SwaggerGen.Test.csproj index d86382c907..646ab02e11 100644 --- a/test/Swashbuckle.AspNetCore.SwaggerGen.Test/Swashbuckle.AspNetCore.SwaggerGen.Test.csproj +++ b/test/Swashbuckle.AspNetCore.SwaggerGen.Test/Swashbuckle.AspNetCore.SwaggerGen.Test.csproj @@ -1,7 +1,6 @@  - Swashbuckle.AspNetCore.SwaggerGen.Test.xml true 1701;1702;1591 net6.0 diff --git a/test/Swashbuckle.AspNetCore.SwaggerGen.Test/Swashbuckle.AspNetCore.SwaggerGen.Test.xml b/test/Swashbuckle.AspNetCore.SwaggerGen.Test/Swashbuckle.AspNetCore.SwaggerGen.Test.xml deleted file mode 100644 index 7b4ea815f7..0000000000 --- a/test/Swashbuckle.AspNetCore.SwaggerGen.Test/Swashbuckle.AspNetCore.SwaggerGen.Test.xml +++ /dev/null @@ -1,203 +0,0 @@ - - - - Swashbuckle.AspNetCore.SwaggerGen.Test - - - - - Summary for GenericControllerWithXmlComments - - - - - Summary for ActionWithSummaryAndRemarksTags - - - Remarks for ActionWithSummaryAndRemarksTags - - - - Description for param1 - Description for param2 - - - - Summary for FakeControllerWithXmlComments - - Description for default response - - - - Summary for ActionWithSummaryAndRemarksTags - - - Remarks for ActionWithSummaryAndRemarksTags - - - - Description for param1 - Description for param2 - - - Description for 200 response - Description for 400 response - - - - Summary for XmlAnnotatedGenericType - - - - - - - Summary for GenericProperty - - - - - Summary of AcceptsTypeParameters - - - - - - - - Summary of AcceptsConstructedOfTypeParametersType - - - - - - Summary for XmlAnnotatedSubType - - - - - Summary for XmlAnnotatedType - - - - - Summary for BoolField - - true - - - - Summary for BoolProperty - - true - - - - Summary for IntProperty - - 10 - - - - Summary for LongProperty - - 4294967295 - - - - Summary for FloatProperty - - 1.2 - - - - Summary for DoubleProperty - - 1.25 - - - - Summary for EnumProperty - - 2 - - - - Summary for GuidProperty - - d3966535-2637-48fa-b911-e3c27405ee09 - - - - Summary for Nullable StringPropertyWithNullExample - - null - - - - Summary for StringProperty - - Example for StringProperty - - - - Summary for StringPropertyWithUri - - - - - - Summary for ObjectProperty - - {"prop1": 1, "prop2": "foobar"} - - - - Summary for AcceptsNothing - - - - - Summary for AcceptsNestedType - - - - - - Summary for AcceptsConstructedGenericType - - - - - - Summary for AcceptsConstructedOfConstructedGenericType - - - - - - Summary for AcceptsArrayOfConstructedGenericType - - - - - - Summary for NestedType - - - - - Summary of DoubleNestedType.InnerType.Property - - - - - For ad-hoc serializer testing - - - - NOTE: Whitespace in these tests is significant and uses a combination of {tabs} and {spaces} - You should toggle "View White Space" to "on". - - - From 33181c2827f6efb567d33597abfedcad386c140c Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 15:18:20 +0100 Subject: [PATCH 16/28] Another attempt to fix paths Try to fix the path to dotnet-swagger in CI. --- test/WebSites/CliExample/CliExample.csproj | 5 +++-- .../CliExampleWithFactory/CliExampleWithFactory.csproj | 5 +++-- test/WebSites/NswagClientExample/NswagClientExample.csproj | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/test/WebSites/CliExample/CliExample.csproj b/test/WebSites/CliExample/CliExample.csproj index 4620641a10..8a9e36ccf6 100644 --- a/test/WebSites/CliExample/CliExample.csproj +++ b/test/WebSites/CliExample/CliExample.csproj @@ -2,7 +2,7 @@ net6.0;net7.0 - $([System.IO.Path]::Combine('$(ArtifactsPath)', 'bin', 'Swashbuckle.AspNetCore.Cli', '$(Configuration)_$(TargetFramework)', 'dotnet-swagger.dll')) + $([System.IO.Path]::Combine('$(ArtifactsPath)', 'bin', 'Swashbuckle.AspNetCore.Cli', '$(Configuration)_$(TargetFramework)')) @@ -28,7 +28,8 @@ --> - + diff --git a/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj b/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj index bec0c5d8db..11fa0005fe 100644 --- a/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj +++ b/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj @@ -2,7 +2,7 @@ net6.0;net7.0 - $([System.IO.Path]::Combine('$(ArtifactsPath)', 'bin', 'Swashbuckle.AspNetCore.Cli', '$(Configuration)_$(TargetFramework)', 'dotnet-swagger.dll')) + $([System.IO.Path]::Combine('$(ArtifactsPath)', 'bin', 'Swashbuckle.AspNetCore.Cli', '$(Configuration)_$(TargetFramework)')) @@ -32,7 +32,8 @@ --> - + diff --git a/test/WebSites/NswagClientExample/NswagClientExample.csproj b/test/WebSites/NswagClientExample/NswagClientExample.csproj index 355e65378f..d632317e41 100644 --- a/test/WebSites/NswagClientExample/NswagClientExample.csproj +++ b/test/WebSites/NswagClientExample/NswagClientExample.csproj @@ -2,7 +2,7 @@ net6.0 - $([System.IO.Path]::Combine('$(ArtifactsPath)', 'bin', 'Swashbuckle.AspNetCore.Cli', '$(Configuration)_$(TargetFramework)', 'dotnet-swagger.dll')) + $([System.IO.Path]::Combine('$(ArtifactsPath)', 'bin', 'Swashbuckle.AspNetCore.Cli', '$(Configuration)_$(TargetFramework)')) @@ -22,7 +22,8 @@ - + From 405d4f16a0bd07807041f9765cccd56c71461c06 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 15:29:04 +0100 Subject: [PATCH 17/28] Add Swashbuckle.AspNetCore.Cli reference Add an explicit project reference on Swashbuckle.AspNetCore.Cli to ensure that this project depends on it. --- test/WebSites/NswagClientExample/NswagClientExample.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/test/WebSites/NswagClientExample/NswagClientExample.csproj b/test/WebSites/NswagClientExample/NswagClientExample.csproj index d632317e41..907ec62ea6 100644 --- a/test/WebSites/NswagClientExample/NswagClientExample.csproj +++ b/test/WebSites/NswagClientExample/NswagClientExample.csproj @@ -11,6 +11,7 @@ + From e2016060e5dcf22dd5703b816bdce3004e6d6ad3 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 15:31:45 +0100 Subject: [PATCH 18/28] Lowercase Configuration Need to match the file system casing for Linux and macOS. --- test/WebSites/CliExample/CliExample.csproj | 2 +- .../WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj | 2 +- test/WebSites/NswagClientExample/NswagClientExample.csproj | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/WebSites/CliExample/CliExample.csproj b/test/WebSites/CliExample/CliExample.csproj index 8a9e36ccf6..dea08d22df 100644 --- a/test/WebSites/CliExample/CliExample.csproj +++ b/test/WebSites/CliExample/CliExample.csproj @@ -2,7 +2,7 @@ net6.0;net7.0 - $([System.IO.Path]::Combine('$(ArtifactsPath)', 'bin', 'Swashbuckle.AspNetCore.Cli', '$(Configuration)_$(TargetFramework)')) + $([System.IO.Path]::Combine('$(ArtifactsPath)', 'bin', 'Swashbuckle.AspNetCore.Cli', '$(Configuration.ToLower())_$(TargetFramework)')) diff --git a/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj b/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj index 11fa0005fe..d47ca632c2 100644 --- a/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj +++ b/test/WebSites/CliExampleWithFactory/CliExampleWithFactory.csproj @@ -2,7 +2,7 @@ net6.0;net7.0 - $([System.IO.Path]::Combine('$(ArtifactsPath)', 'bin', 'Swashbuckle.AspNetCore.Cli', '$(Configuration)_$(TargetFramework)')) + $([System.IO.Path]::Combine('$(ArtifactsPath)', 'bin', 'Swashbuckle.AspNetCore.Cli', '$(Configuration.ToLower())_$(TargetFramework)')) diff --git a/test/WebSites/NswagClientExample/NswagClientExample.csproj b/test/WebSites/NswagClientExample/NswagClientExample.csproj index 907ec62ea6..dd608ed499 100644 --- a/test/WebSites/NswagClientExample/NswagClientExample.csproj +++ b/test/WebSites/NswagClientExample/NswagClientExample.csproj @@ -2,7 +2,7 @@ net6.0 - $([System.IO.Path]::Combine('$(ArtifactsPath)', 'bin', 'Swashbuckle.AspNetCore.Cli', '$(Configuration)_$(TargetFramework)')) + $([System.IO.Path]::Combine('$(ArtifactsPath)', 'bin', 'Swashbuckle.AspNetCore.Cli', '$(Configuration.ToLower())_$(TargetFramework)')) From 4e72a0b6e04be8909eee70a85f53be218039a7c8 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 15:40:23 +0100 Subject: [PATCH 19/28] Fix condition Include projects ending in `Tests` too. --- Directory.Build.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Build.targets b/Directory.Build.targets index 719ddb4f24..d69a81c44d 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -1,5 +1,5 @@ - + true From 03c79b1fea361510a46838f6d1ccc8b882603f34 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 15:54:57 +0100 Subject: [PATCH 20/28] Tighten coverage scope Just include Swashbuckle assemblies in coverage, so exclude all the test websites etc. --- Directory.Build.props | 1 + 1 file changed, 1 insertion(+) diff --git a/Directory.Build.props b/Directory.Build.props index df8e3b3656..00ccd169e8 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -71,6 +71,7 @@ $(CoverletOutputFormat),opencover [System.*]*,[*.Test*]*,[xunit.*]* GeneratedCodeAttribute + [Swashbuckle.*]* From d324b8e57c03c346b0747175771b377bafd465e1 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 16:01:35 +0100 Subject: [PATCH 21/28] Remove SDK setup steps - Attempt to fix the workflow by removing steps to setup the .NET SDK and use the NuGet cache. - Fix name to match file. --- .github/workflows/codeql-analysis.yml | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index f4aa8397b4..00119b86fa 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -1,4 +1,4 @@ -name: code-scan +name: codeql-analysis on: push: @@ -30,16 +30,6 @@ jobs: - name: Checkout repository uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - name: Setup .NET SDK - uses: actions/setup-dotnet@4d6c8fcf3c8f7a60068d26b594648e99df24cee3 # v4.0.0 - - - name: Setup NuGet cache - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 - with: - path: ~/.nuget/packages - key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', '**/*.props') }} - restore-keys: ${{ runner.os }}-nuget- - - name: Initialize CodeQL uses: github/codeql-action/init@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 with: From 54daca9dfbcb9dba3b17de6c7235f0d62a598f80 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 16:09:10 +0100 Subject: [PATCH 22/28] Re-add setup-dotnet Add the step to install the .NET SDK back. --- .github/workflows/codeql-analysis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 00119b86fa..d698eefad4 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -30,6 +30,9 @@ jobs: - name: Checkout repository uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - name: Setup .NET SDK + uses: actions/setup-dotnet@4d6c8fcf3c8f7a60068d26b594648e99df24cee3 # v4.0.0 + - name: Initialize CodeQL uses: github/codeql-action/init@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 with: From c3277873883831bafcd4fb7333cc220cbc1f2de8 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 16:25:47 +0100 Subject: [PATCH 23/28] Change syntax Match the syntax with another repo where the workflow is definitely doing the right thing. --- .github/workflows/codeql-analysis.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index d698eefad4..2c1e4320b9 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -21,11 +21,6 @@ jobs: permissions: security-events: write - strategy: - fail-fast: false - matrix: - language: [ 'csharp' ] - steps: - name: Checkout repository uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 @@ -36,7 +31,7 @@ jobs: - name: Initialize CodeQL uses: github/codeql-action/init@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 with: - languages: ${{ matrix.language }} + languages: csharp - name: Autobuild uses: github/codeql-action/autobuild@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 @@ -44,4 +39,4 @@ jobs: - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 with: - category: '/language:${{ matrix.language }}' + category: "/language:csharp" From 31f9fec117b573c37670344952000dc9110cd168 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 16:27:00 +0100 Subject: [PATCH 24/28] Try Windows Try running on Windows. --- .github/workflows/codeql-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 2c1e4320b9..ba081f65b3 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -16,7 +16,7 @@ permissions: jobs: code-ql: - runs-on: ubuntu-latest + runs-on: windows-latest permissions: security-events: write From 09fedd05ba88a4fbf0d197cc99325582492c1635 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 16:32:11 +0100 Subject: [PATCH 25/28] Try manual build Switch back to Ubuntu and manually build the solution. --- .github/workflows/codeql-analysis.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index ba081f65b3..69f9c33609 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -16,7 +16,7 @@ permissions: jobs: code-ql: - runs-on: windows-latest + runs-on: ubuntu-latest permissions: security-events: write @@ -32,11 +32,14 @@ jobs: uses: github/codeql-action/init@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 with: languages: csharp + build-mode: manual - - name: Autobuild - uses: github/codeql-action/autobuild@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 + - name: Build, Package and Test + shell: pwsh + run: | + dotnet build --configuration Release - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 with: - category: "/language:csharp" + category: '/language:csharp' From 703d2b83063b6f7e33605238e5e88a54ba12bd93 Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 16:42:21 +0100 Subject: [PATCH 26/28] Rename step Rename step to reflect what it's doing. --- .github/workflows/codeql-analysis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 69f9c33609..1d047b5f99 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -34,10 +34,10 @@ jobs: languages: csharp build-mode: manual - - name: Build, Package and Test + - name: Build shell: pwsh run: | - dotnet build --configuration Release + dotnet build --configuration Release - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 From 53453774293928fee8b138c8f3228a8ac06d5920 Mon Sep 17 00:00:00 2001 From: Martin Costello Date: Wed, 10 Apr 2024 11:02:47 +0100 Subject: [PATCH 27/28] Simplify condition `String.Copy()` isn't needed. --- Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index 00ccd169e8..c213a5e7c4 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -53,7 +53,7 @@ preview - pr.$([System.String]::Copy('$(GITHUB_REF_NAME)').Replace('/merge','')).$(GITHUB_RUN_NUMBER) + pr.$(GITHUB_REF_NAME.Replace('/merge', '')).$(GITHUB_RUN_NUMBER) $(VersionPrefix).$(GITHUB_RUN_NUMBER) From 5e2ea49240e77f7b22d8969e40987333916e84ae Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 3 Apr 2024 16:47:07 +0100 Subject: [PATCH 28/28] Bump version Bump patch version so the version is greater than the current stable release. --- Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index c213a5e7c4..3ea75150b0 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -48,7 +48,7 @@ snupkg true true - 6.5.0 + 6.5.1 false