diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json deleted file mode 100644 index a857ad3..0000000 --- a/.config/dotnet-tools.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "version": 1, - "isRoot": true, - "tools": { - "docfx": { - "version": "2.78.4", - "commands": [ - "docfx" - ], - "rollForward": false - } - } -} \ No newline at end of file diff --git a/.editorconfig b/.editorconfig index 543a92b..b9e168b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,25 +1,34 @@ # Remove the line below if you want to inherit .editorconfig settings from higher directories root = true -[*] -#### Core EditorConfig Options #### +#### Global Settings #### +[*] # Indentation and spacing indent_size = 4 indent_style = space -tab_width = 4 # New line preferences end_of_line = lf insert_final_newline = true -# Razor files -[*.{cs,razor}] -dotnet_diagnostic.CA2007.severity = none +#### JSON Files #### + +[*.json] +indent_size = 2 +tab_width = 2 + +#### MSBuild Files #### + +[*.{csproj,props,targets}] +indent_size = 2 +tab_width = 2 + +#### C# Files #### -# C# files [*.cs] -#### .NET Coding Conventions #### + +# .NET Coding Conventions # this. and Me. preferences dotnet_style_qualification_for_event = false @@ -40,10 +49,13 @@ dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity # Modifier preferences dotnet_style_require_accessibility_modifiers = for_non_interface_members +# Field preferences +dotnet_style_readonly_field = true:suggestion + +# Parameter preferences +dotnet_code_quality_unused_parameters = all:suggestion + # Expression-level preferences -csharp_style_deconstructed_variable_declaration = true:suggestion -csharp_style_inlined_variable_declaration = true:suggestion -csharp_style_throw_expression = true:suggestion dotnet_style_coalesce_expression = true:suggestion dotnet_style_collection_initializer = true:suggestion dotnet_style_explicit_tuple_names = true:suggestion @@ -57,13 +69,7 @@ dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion dotnet_style_prefer_inferred_tuple_names = true:suggestion dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion -# Field preferences -dotnet_style_readonly_field = true:suggestion - -# Parameter preferences -dotnet_code_quality_unused_parameters = all:suggestion - -#### C# Coding Conventions #### +# C# Coding Conventions # var preferences csharp_style_var_elsewhere = false:warning @@ -94,6 +100,9 @@ csharp_preferred_modifier_order = public, private, protected, internal, static, csharp_prefer_braces = true # Expression-level preferences +csharp_style_deconstructed_variable_declaration = true:suggestion +csharp_style_inlined_variable_declaration = true:suggestion +csharp_style_throw_expression = true:suggestion csharp_prefer_simple_default_expression = true:suggestion csharp_style_pattern_local_over_anonymous_function = true:suggestion csharp_style_prefer_index_operator = true:suggestion @@ -104,15 +113,13 @@ csharp_style_unused_value_expression_statement_preference = discard_variable # 'using' directive preferences csharp_using_directive_placement = inside_namespace -# Constructor Preferences +# Constructor preferences csharp_style_prefer_primary_constructors = false -dotnet_diagnostic.IDE0290.severity = none -resharper_convert_to_primary_constructor_highlighting = none -#### C# Formatting Rules #### +# C# Formatting Rules # New line preferences -csharp_new_line_before_open_brace = methods, properties, control_blocks, types +csharp_new_line_before_open_brace = all csharp_new_line_before_catch = true csharp_new_line_before_else = true csharp_new_line_before_finally = true @@ -129,7 +136,7 @@ csharp_indent_labels = one_less_than_current csharp_indent_switch_labels = true # Space preferences -csharp_space_after_cast = true +csharp_space_after_cast = false csharp_space_after_colon_in_inheritance_clause = true csharp_space_after_comma = true csharp_space_after_dot = false @@ -156,13 +163,12 @@ csharp_space_between_square_brackets = false csharp_preserve_single_line_blocks = true csharp_preserve_single_line_statements = true -#### Resharper Formatting Rules #### +# ReSharper Formatting Rules -resharper_csharp_accessor_declaration_braces = next_line -resharper_csharp_accessor_owner_declaration_braces = next_line -resharper_csharp_align_first_arg_by_paren = true +# Alignment +resharper_csharp_align_first_arg_by_paren = false resharper_csharp_align_linq_query = true -resharper_csharp_align_multiline_argument = true +resharper_csharp_align_multiline_argument = false resharper_csharp_align_multiline_array_and_object_initializer = false resharper_csharp_align_multiline_binary_expressions_chain = true resharper_csharp_align_multiline_binary_patterns = true @@ -179,10 +185,20 @@ resharper_csharp_align_multline_type_parameter_list = true resharper_csharp_align_tuple_components = true resharper_csharp_alignment_tab_fill_style = optimal_fill resharper_csharp_allow_far_alignment = true + +# Braces +resharper_csharp_accessor_declaration_braces = next_line +resharper_csharp_accessor_owner_declaration_braces = next_line resharper_csharp_brace_style = next_line resharper_csharp_case_block_braces = next_line +resharper_csharp_initializer_braces = next_line +resharper_csharp_invocable_declaration_braces = next_line +resharper_csharp_other_braces = next_line +resharper_csharp_type_declaration_braces = next_line + +# Indentation resharper_csharp_continuous_indent_multiplier = 1 -resharper_csharp_indent_anonymous_method_block = true +resharper_csharp_indent_anonymous_method_block = false resharper_csharp_indent_braces_inside_statement_conditions = true resharper_csharp_indent_inside_namespace = true resharper_csharp_indent_nested_fixed_stmt = false @@ -195,24 +211,49 @@ resharper_csharp_indent_preprocessor_if = no_indent resharper_csharp_indent_preprocessor_other = usual_indent resharper_csharp_indent_preprocessor_region = no_indent resharper_csharp_indent_type_constraints = true -resharper_csharp_initializer_braces = next_line -resharper_csharp_invocable_declaration_braces = next_line + +# Wrapping and layout resharper_csharp_keep_existing_attribute_arrangement = false resharper_csharp_keep_existing_initializer_arrangement = false resharper_csharp_max_attribute_length_for_same_line = 120 resharper_csharp_max_initializer_elements_on_line = 1 -resharper_csharp_naming_rule.enum_member = AaBb -resharper_csharp_other_braces = next_line resharper_csharp_outdent_binary_ops = true resharper_csharp_outdent_binary_pattern_ops = true resharper_csharp_outdent_dots = true resharper_csharp_place_attribute_on_same_line = false resharper_csharp_place_record_field_attribute_on_same_line = true resharper_csharp_place_simple_initializer_on_single_line = true -resharper_csharp_type_declaration_braces = next_line resharper_csharp_wrap_object_and_collection_initializer_style = chop_always +resharper_csharp_wrap_array_initializer_style = chop_always + +# Naming conventions +resharper_csharp_naming_rule.enum_member = PascalCase +# Diagnostic Severity Overrides dotnet_diagnostic.CA2007.severity = error +dotnet_diagnostic.IDE0290.severity = none +resharper_convert_to_primary_constructor_highlighting = none + +# Meziantou Rules +dotnet_diagnostic.MA0003.severity = none + +#### Razor Files #### + +[*.{razor,razor.cs}] +# Diagnostic severity overrides +dotnet_diagnostic.CA2007.severity = none +dotnet_diagnostic.CA1515.severity = none +dotnet_diagnostic.CA1822.severity = suggestion +dotnet_diagnostic.CA1823.severity = suggestion +dotnet_diagnostic.IDE0044.severity = suggestion +dotnet_diagnostic.IDE0051.severity = none +dotnet_diagnostic.IDE0052.severity = none +dotnet_diagnostic.IDE0060.severity = none +dotnet_diagnostic.S1144.severity = suggestion -# warning suppressions -dotnet_diagnostic.CA2255.severity = none +# Disable CA1707 for test sources only +[tests/**.cs] +dotnet_diagnostic.CA1031.severity = none +dotnet_diagnostic.CA1308.severity = none +dotnet_diagnostic.CA1707.severity = none +dotnet_diagnostic.MA0038.severity = none diff --git a/.gitignore b/.gitignore index 9c0288a..43e2541 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,10 @@ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## -## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore +## Get latest from `dotnet new gitignore` + +# dotenv files +.env # User-specific files *.rsuser @@ -35,7 +38,7 @@ bld/ # Visual Studio 2015/2017 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ +wwwroot/ # Visual Studio 2017 auto generated files Generated\ Files/ @@ -57,11 +60,14 @@ dlldata.c # Benchmark Results BenchmarkDotNet.Artifacts/ -# .NET Core +# .NET project.lock.json project.fragment.lock.json artifacts/ +# Tye +.tye/ + # ASP.NET Scaffolding ScaffoldingReadMe.txt @@ -328,8 +334,8 @@ __pycache__/ *.pyc # Cake - Uncomment if you are using it -tools/** -!tools/packages.config +#tools/** +#!tools/packages.config # Tabs Studio *.tss @@ -384,9 +390,6 @@ FodyWeavers.xsd !.vscode/extensions.json *.code-workspace -# Rider -.idea/* - # Local History for Visual Studio Code .history/ @@ -399,8 +402,83 @@ FodyWeavers.xsd # JetBrains Rider *.sln.iml +.idea/ + +## +## Visual studio for Mac +## + +# globs +Makefile.in +*.userprefs +*.usertasks +config.make +config.status +aclocal.m4 +install-sh +autom4te.cache/ +*.tar.gz +tarballs/ +test-results/ + +# Mac bundle stuff +*.dmg +*.app + +# content below from: https://github.com/github/gitignore/blob/main/Global/macOS.gitignore +# General .DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# content below from: https://github.com/github/gitignore/blob/main/Global/Windows.gitignore +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk -# SonarQube -.sonarqube +# Vim temporary swap files +*.swp diff --git a/.nuke/.gitignore b/.nuke/.gitignore deleted file mode 100644 index 36445e5..0000000 --- a/.nuke/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/temp diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json deleted file mode 100644 index c380d5d..0000000 --- a/.nuke/build.schema.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "definitions": { - "Host": { - "type": "string", - "enum": [ - "AppVeyor", - "AzurePipelines", - "Bamboo", - "Bitbucket", - "Bitrise", - "GitHubActions", - "GitLab", - "Jenkins", - "Rider", - "SpaceAutomation", - "TeamCity", - "Terminal", - "TravisCI", - "VisualStudio", - "VSCode" - ] - }, - "ExecutableTarget": { - "type": "string", - "enum": [ - "Clean", - "Compile", - "CompileDocs", - "DeployDocs", - "PublishDemo", - "Restore", - "SonarScanBegin", - "SonarScanEnd", - "Test" - ] - }, - "Verbosity": { - "type": "string", - "description": "", - "enum": [ - "Verbose", - "Normal", - "Minimal", - "Quiet" - ] - }, - "NukeBuild": { - "properties": { - "Continue": { - "type": "boolean", - "description": "Indicates to continue a previously failed build attempt" - }, - "Help": { - "type": "boolean", - "description": "Shows the help text for this build assembly" - }, - "Host": { - "description": "Host for execution. Default is 'automatic'", - "$ref": "#/definitions/Host" - }, - "NoLogo": { - "type": "boolean", - "description": "Disables displaying the NUKE logo" - }, - "Partition": { - "type": "string", - "description": "Partition to use on CI" - }, - "Plan": { - "type": "boolean", - "description": "Shows the execution plan (HTML)" - }, - "Profile": { - "type": "array", - "description": "Defines the profiles to load", - "items": { - "type": "string" - } - }, - "Root": { - "type": "string", - "description": "Root directory during build execution" - }, - "Skip": { - "type": "array", - "description": "List of targets to be skipped. Empty list skips all dependencies", - "items": { - "$ref": "#/definitions/ExecutableTarget" - } - }, - "Target": { - "type": "array", - "description": "List of targets to be invoked. Default is '{default_target}'", - "items": { - "$ref": "#/definitions/ExecutableTarget" - } - }, - "Verbosity": { - "description": "Logging verbosity during build execution. Default is 'Normal'", - "$ref": "#/definitions/Verbosity" - } - } - } - }, - "allOf": [ - { - "properties": { - "Configuration": { - "type": "string", - "description": "Configuration to build - Default is 'Debug' (local) or 'Release' (server)", - "enum": [ - "Debug", - "Release" - ] - }, - "Solution": { - "type": "string", - "description": "Path to a solution file that is automatically loaded" - } - } - }, - { - "$ref": "#/definitions/NukeBuild" - } - ] -} diff --git a/.nuke/parameters.json b/.nuke/parameters.json deleted file mode 100644 index 838a86f..0000000 --- a/.nuke/parameters.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$schema": "build.schema.json", - "Host": "GitHubActions", - "Solution": "AddressValidation.sln" -} diff --git a/AddressValidation.sln b/AddressValidation.sln deleted file mode 100644 index 4e0c800..0000000 --- a/AddressValidation.sln +++ /dev/null @@ -1,150 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5EC7A540-5858-4C0A-A0CE-ABCB3D48AFEB}" - ProjectSection(SolutionItems) = preProject - global.json = global.json - nuget.config = nuget.config - Directory.Build.props = Directory.Build.props - Directory.Packages.props = Directory.Packages.props - README.md = README.md - .gitignore = .gitignore - .editorconfig = .editorconfig - renovate.json = renovate.json - Directory.Build.targets = Directory.Build.targets - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Visus.AddressValidation", "src\Visus.AddressValidation\Visus.AddressValidation.csproj", "{64B9D329-F983-49D5-A73F-C5EA8B1F16A9}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "01. Foundation", "01. Foundation", "{7EF92B20-2457-4E9A-AF09-610675F68F62}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "02. Integrations", "02. Integrations", "{458D4B81-3659-4CDC-82E6-F0AC7DA1383D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Visus.AddressValidation.Integration.Google", "src\Visus.AddressValidation.Integration.Google\Visus.AddressValidation.Integration.Google.csproj", "{5BECB362-2B3C-454E-BA26-F3287B237223}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "03. Unit Tests", "03. Unit Tests", "{6D41E71C-E6E0-4BE8-934C-6E6E88C3F8C7}" - ProjectSection(SolutionItems) = preProject - tests\Directory.Build.props = tests\Directory.Build.props - tests\.editorconfig = tests\.editorconfig - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Visus.AddressValidation.Tests", "tests\Visus.AddressValidation.Tests\Visus.AddressValidation.Tests.csproj", "{45F5AE68-6E31-478A-80D3-8A1E3881DDBB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Visus.AddressValidation.Integration.Google.Tests", "tests\Visus.AddressValidation.Integration.Google.Tests\Visus.AddressValidation.Integration.Google.Tests.csproj", "{7B3EBF81-F228-4F8B-AC17-5C83DAA8406A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Visus.AddressValidation.Integration.Ups", "src\Visus.AddressValidation.Integration.Ups\Visus.AddressValidation.Integration.Ups.csproj", "{B843071E-F639-4E7C-BA8F-93D9469483D9}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Visus.AddressValidation.Integration.Ups.Tests", "tests\Visus.AddressValidation.Integration.Ups.Tests\Visus.AddressValidation.Integration.Ups.Tests.csproj", "{9A898866-579D-4395-A893-FBD1B359036E}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "04. Demo", "04. Demo", "{425D5463-85C9-469D-AA3E-33927EE2FF70}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddressValidation.Demo", "demo\src\AddressValidation.Demo\AddressValidation.Demo.csproj", "{20A59A0F-DFD5-4355-BB00-821D382A42FC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Visus.AddressValidation.Integration.PitneyBowes", "src\Visus.AddressValidation.Integration.PitneyBowes\Visus.AddressValidation.Integration.PitneyBowes.csproj", "{6CB8C731-D125-475E-B798-AC81481960D4}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Visus.AddressValidation.Integration.PitneyBowes.Tests", "tests\Visus.AddressValidation.Integration.PitneyBowes.Tests\Visus.AddressValidation.Integration.PitneyBowes.Tests.csproj", "{03B65269-1328-4B48-8213-21F69557B707}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Visus.AddressValidation.SourceGeneration", "src\Visus.AddressValidation.SourceGeneration\Visus.AddressValidation.SourceGeneration.csproj", "{F57B9E9C-7183-44E4-8EB4-2A39C32E7016}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Visus.AddressValidation.SourceGeneration.Tests", "tests\Visus.AddressValidation.SourceGeneration.Tests\Visus.AddressValidation.SourceGeneration.Tests.csproj", "{370B8EEE-BE35-430E-A01F-3CF779DA8B40}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{EF31F8F1-4EE0-446B-A017-555AE37362CB}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{E49A8B03-9020-4B86-9029-9B0901F864A8}" - ProjectSection(SolutionItems) = preProject - .github\workflows\ci.yml = .github\workflows\ci.yml - .github\workflows\docs.yml = .github\workflows\docs.yml - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "00. Build", "00. Build", "{32B364CE-8825-4295-8F73-479C3F13543B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "build\_build.csproj", "{B104A7C9-1E92-4D16-A823-6FB67366B0FA}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "05. Documentation", "05. Documentation", "{0F4402B0-2710-4688-A20A-48F255E0A5A0}" - ProjectSection(SolutionItems) = preProject - docs\docfx.json = docs\docfx.json - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Visus.AddressValidation.Integration.FedEx", "src\Visus.AddressValidation.Integration.FedEx\Visus.AddressValidation.Integration.FedEx.csproj", "{088A30F2-4105-4AD1-8D0E-5B0A92AAE59F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Visus.AddressValidation.Integration.FedEx.Tests", "tests\Visus.AddressValidation.Integration.FedEx.Tests\Visus.AddressValidation.Integration.FedEx.Tests.csproj", "{F2C51F6E-9C90-4BBC-8EC5-0CC52DAC28ED}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B104A7C9-1E92-4D16-A823-6FB67366B0FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B104A7C9-1E92-4D16-A823-6FB67366B0FA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {64B9D329-F983-49D5-A73F-C5EA8B1F16A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {64B9D329-F983-49D5-A73F-C5EA8B1F16A9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {64B9D329-F983-49D5-A73F-C5EA8B1F16A9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {64B9D329-F983-49D5-A73F-C5EA8B1F16A9}.Release|Any CPU.Build.0 = Release|Any CPU - {5BECB362-2B3C-454E-BA26-F3287B237223}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5BECB362-2B3C-454E-BA26-F3287B237223}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5BECB362-2B3C-454E-BA26-F3287B237223}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5BECB362-2B3C-454E-BA26-F3287B237223}.Release|Any CPU.Build.0 = Release|Any CPU - {45F5AE68-6E31-478A-80D3-8A1E3881DDBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {45F5AE68-6E31-478A-80D3-8A1E3881DDBB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {45F5AE68-6E31-478A-80D3-8A1E3881DDBB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {45F5AE68-6E31-478A-80D3-8A1E3881DDBB}.Release|Any CPU.Build.0 = Release|Any CPU - {7B3EBF81-F228-4F8B-AC17-5C83DAA8406A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7B3EBF81-F228-4F8B-AC17-5C83DAA8406A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7B3EBF81-F228-4F8B-AC17-5C83DAA8406A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7B3EBF81-F228-4F8B-AC17-5C83DAA8406A}.Release|Any CPU.Build.0 = Release|Any CPU - {B843071E-F639-4E7C-BA8F-93D9469483D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B843071E-F639-4E7C-BA8F-93D9469483D9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B843071E-F639-4E7C-BA8F-93D9469483D9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B843071E-F639-4E7C-BA8F-93D9469483D9}.Release|Any CPU.Build.0 = Release|Any CPU - {9A898866-579D-4395-A893-FBD1B359036E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9A898866-579D-4395-A893-FBD1B359036E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9A898866-579D-4395-A893-FBD1B359036E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9A898866-579D-4395-A893-FBD1B359036E}.Release|Any CPU.Build.0 = Release|Any CPU - {20A59A0F-DFD5-4355-BB00-821D382A42FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {20A59A0F-DFD5-4355-BB00-821D382A42FC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {20A59A0F-DFD5-4355-BB00-821D382A42FC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {20A59A0F-DFD5-4355-BB00-821D382A42FC}.Release|Any CPU.Build.0 = Release|Any CPU - {6CB8C731-D125-475E-B798-AC81481960D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6CB8C731-D125-475E-B798-AC81481960D4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6CB8C731-D125-475E-B798-AC81481960D4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6CB8C731-D125-475E-B798-AC81481960D4}.Release|Any CPU.Build.0 = Release|Any CPU - {03B65269-1328-4B48-8213-21F69557B707}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {03B65269-1328-4B48-8213-21F69557B707}.Debug|Any CPU.Build.0 = Debug|Any CPU - {03B65269-1328-4B48-8213-21F69557B707}.Release|Any CPU.ActiveCfg = Release|Any CPU - {03B65269-1328-4B48-8213-21F69557B707}.Release|Any CPU.Build.0 = Release|Any CPU - {F57B9E9C-7183-44E4-8EB4-2A39C32E7016}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F57B9E9C-7183-44E4-8EB4-2A39C32E7016}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F57B9E9C-7183-44E4-8EB4-2A39C32E7016}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F57B9E9C-7183-44E4-8EB4-2A39C32E7016}.Release|Any CPU.Build.0 = Release|Any CPU - {370B8EEE-BE35-430E-A01F-3CF779DA8B40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {370B8EEE-BE35-430E-A01F-3CF779DA8B40}.Debug|Any CPU.Build.0 = Debug|Any CPU - {370B8EEE-BE35-430E-A01F-3CF779DA8B40}.Release|Any CPU.ActiveCfg = Release|Any CPU - {370B8EEE-BE35-430E-A01F-3CF779DA8B40}.Release|Any CPU.Build.0 = Release|Any CPU - {088A30F2-4105-4AD1-8D0E-5B0A92AAE59F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {088A30F2-4105-4AD1-8D0E-5B0A92AAE59F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {088A30F2-4105-4AD1-8D0E-5B0A92AAE59F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {088A30F2-4105-4AD1-8D0E-5B0A92AAE59F}.Release|Any CPU.Build.0 = Release|Any CPU - {F2C51F6E-9C90-4BBC-8EC5-0CC52DAC28ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F2C51F6E-9C90-4BBC-8EC5-0CC52DAC28ED}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F2C51F6E-9C90-4BBC-8EC5-0CC52DAC28ED}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F2C51F6E-9C90-4BBC-8EC5-0CC52DAC28ED}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {64B9D329-F983-49D5-A73F-C5EA8B1F16A9} = {7EF92B20-2457-4E9A-AF09-610675F68F62} - {5BECB362-2B3C-454E-BA26-F3287B237223} = {458D4B81-3659-4CDC-82E6-F0AC7DA1383D} - {45F5AE68-6E31-478A-80D3-8A1E3881DDBB} = {6D41E71C-E6E0-4BE8-934C-6E6E88C3F8C7} - {7B3EBF81-F228-4F8B-AC17-5C83DAA8406A} = {6D41E71C-E6E0-4BE8-934C-6E6E88C3F8C7} - {B843071E-F639-4E7C-BA8F-93D9469483D9} = {458D4B81-3659-4CDC-82E6-F0AC7DA1383D} - {9A898866-579D-4395-A893-FBD1B359036E} = {6D41E71C-E6E0-4BE8-934C-6E6E88C3F8C7} - {20A59A0F-DFD5-4355-BB00-821D382A42FC} = {425D5463-85C9-469D-AA3E-33927EE2FF70} - {6CB8C731-D125-475E-B798-AC81481960D4} = {458D4B81-3659-4CDC-82E6-F0AC7DA1383D} - {03B65269-1328-4B48-8213-21F69557B707} = {6D41E71C-E6E0-4BE8-934C-6E6E88C3F8C7} - {F57B9E9C-7183-44E4-8EB4-2A39C32E7016} = {7EF92B20-2457-4E9A-AF09-610675F68F62} - {370B8EEE-BE35-430E-A01F-3CF779DA8B40} = {6D41E71C-E6E0-4BE8-934C-6E6E88C3F8C7} - {EF31F8F1-4EE0-446B-A017-555AE37362CB} = {5EC7A540-5858-4C0A-A0CE-ABCB3D48AFEB} - {E49A8B03-9020-4B86-9029-9B0901F864A8} = {EF31F8F1-4EE0-446B-A017-555AE37362CB} - {B104A7C9-1E92-4D16-A823-6FB67366B0FA} = {32B364CE-8825-4295-8F73-479C3F13543B} - {088A30F2-4105-4AD1-8D0E-5B0A92AAE59F} = {458D4B81-3659-4CDC-82E6-F0AC7DA1383D} - {F2C51F6E-9C90-4BBC-8EC5-0CC52DAC28ED} = {6D41E71C-E6E0-4BE8-934C-6E6E88C3F8C7} - EndGlobalSection -EndGlobal diff --git a/AddressValidation.sln.DotSettings b/AddressValidation.sln.DotSettings index 741c5ed..dd3923f 100644 --- a/AddressValidation.sln.DotSettings +++ b/AddressValidation.sln.DotSettings @@ -1,7 +1,9 @@  - True Built-in: Full Cleanup Built-in: Full Cleanup + True + True + False False <?xml version="1.0" encoding="utf-16"?> <Patterns xmlns="urn:schemas-jetbrains-com:member-reordering-patterns"> @@ -294,23 +296,13 @@ </Group> </TypePattern> </Patterns> -True -True -True -True -True -True + True + True + True True -True -True - True - True - True - True - True - True - True - True - True - True + True + True + + + True diff --git a/AddressValidation.slnx b/AddressValidation.slnx new file mode 100644 index 0000000..4bbfc69 --- /dev/null +++ b/AddressValidation.slnx @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Directory.Build.props b/Directory.Build.props index 46a3d13..88dfb61 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,50 +1,47 @@ - - - Visus Development Team - Copyright (c) 2024 Visus Development Team - enable - false - 12 - en-US - enable - true - 0.0.1 - - - true - false - AllEnabledByDefault - + + Visus Development Team + Copyright (c) 2024-2026 Visus Development Team + enable + 14 + en-US + enable + - - embedded - true - true - false - https://github.com/visus-io/addressvalidation - true - git - https://github.com/visus-io/addressvalidation.git - + + true + false + AllEnabledByDefault + - - true - true - - - - $(BeforePack);IncludeAnalyzersInPackage - + + embedded + true + true + false + https://github.com/visus-io/addressvalidation + true + git + https://github.com/visus-io/addressvalidation.git + + + + true + true + + + + $(BeforePack);IncludeAnalyzersInPackage + + + + + <_Parameter1>$(AssemblyName).Tests + + + <_Parameter1>DynamicProxyGenAssembly2 + + - - - <_Parameter1>$(AssemblyName).Tests - - - <_Parameter1>DynamicProxyGenAssembly2 - - - diff --git a/Directory.Build.targets b/Directory.Build.targets index b5bc844..e74dd1a 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -1,47 +1,47 @@ - - analyzers/dotnet - $(GeneratorProjectBaseTargetPath)/$(AnalyzerLanguage) - $(NoWarn);RS1041 - + + analyzers/dotnet + $(GeneratorProjectBaseTargetPath)/$(AnalyzerLanguage) + $(NoWarn);RS1041 + + + + + $(GeneratorProjectBaseTargetPath) + + - - - $(GeneratorProjectBaseTargetPath) - - - - - - - + + + + - - - <_TargetPathsToSymbols Include="@(_AnalyzerFile)" TargetPath="/%(_AnalyzerFile.PackagePath)" Condition="%(_AnalyzerFile.IsSymbol)" /> - - + + + <_TargetPathsToSymbols Include="@(_AnalyzerFile)" TargetPath="/%(_AnalyzerFile.PackagePath)" Condition="%(_AnalyzerFile.IsSymbol)"/> + + - + - - <_AnalyzerPath>analyzers/dotnet - <_AnalyzerPath Condition="'$(AnalyzerRoslynVersion)' != ''">$(_AnalyzerPath)/roslyn$(AnalyzerRoslynVersion) - <_AnalyzerPath Condition="'$(AnalyzerLanguage)' != ''">$(_AnalyzerPath)/$(AnalyzerLanguage) - + + <_AnalyzerPath>analyzers/dotnet + <_AnalyzerPath Condition="'$(AnalyzerRoslynVersion)' != ''">$(_AnalyzerPath)/roslyn$(AnalyzerRoslynVersion) + <_AnalyzerPath Condition="'$(AnalyzerLanguage)' != ''">$(_AnalyzerPath)/$(AnalyzerLanguage) + - - <_AnalyzerPackFile Include="@(_BuildOutputInPackage->WithMetadataValue('TargetFramework', 'netstandard2.0'))" IsSymbol="false" /> - <_AnalyzerPackFile Include="@(_TargetPathsToSymbols->WithMetadataValue('TargetFramework', 'netstandard2.0'))" IsSymbol="true" /> - <_AnalyzerPackFile PackagePath="$(_AnalyzerPath)/%(TargetPath)" /> - + + <_AnalyzerPackFile Include="@(_BuildOutputInPackage->WithMetadataValue('TargetFramework', 'netstandard2.0'))" IsSymbol="false"/> + <_AnalyzerPackFile Include="@(_TargetPathsToSymbols->WithMetadataValue('TargetFramework', 'netstandard2.0'))" IsSymbol="true"/> + <_AnalyzerPackFile PackagePath="$(_AnalyzerPath)/%(TargetPath)"/> + - - + + diff --git a/Directory.Packages.props b/Directory.Packages.props index 0bd40d4..442435b 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -4,47 +4,30 @@ true - - - - - - - - + + + + - - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - + - + - + \ No newline at end of file diff --git a/build.cmd b/build.cmd deleted file mode 100755 index b08cc59..0000000 --- a/build.cmd +++ /dev/null @@ -1,7 +0,0 @@ -:; set -eo pipefail -:; SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd) -:; ${SCRIPT_DIR}/build.sh "$@" -:; exit $? - -@ECHO OFF -powershell -ExecutionPolicy ByPass -NoProfile -File "%~dp0build.ps1" %* diff --git a/build.ps1 b/build.ps1 deleted file mode 100644 index 381a7be..0000000 --- a/build.ps1 +++ /dev/null @@ -1,74 +0,0 @@ -[CmdletBinding()] -Param( - [Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)] - [string[]]$BuildArguments -) - -Write-Output "PowerShell $($PSVersionTable.PSEdition) version $($PSVersionTable.PSVersion)" - -Set-StrictMode -Version 2.0; $ErrorActionPreference = "Stop"; $ConfirmPreference = "None"; trap { Write-Error $_ -ErrorAction Continue; exit 1 } -$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent - -########################################################################### -# CONFIGURATION -########################################################################### - -$BuildProjectFile = "$PSScriptRoot\build\_build.csproj" -$TempDirectory = "$PSScriptRoot\\.nuke\temp" - -$DotNetGlobalFile = "$PSScriptRoot\\global.json" -$DotNetInstallUrl = "https://dot.net/v1/dotnet-install.ps1" -$DotNetChannel = "STS" - -$env:DOTNET_CLI_TELEMETRY_OPTOUT = 1 -$env:DOTNET_NOLOGO = 1 - -########################################################################### -# EXECUTION -########################################################################### - -function ExecSafe([scriptblock] $cmd) { - & $cmd - if ($LASTEXITCODE) { exit $LASTEXITCODE } -} - -# If dotnet CLI is installed globally and it matches requested version, use for execution -if ($null -ne (Get-Command "dotnet" -ErrorAction SilentlyContinue) -and ` - $(dotnet --version) -and $LASTEXITCODE -eq 0) { - $env:DOTNET_EXE = (Get-Command "dotnet").Path -} -else { - # Download install script - $DotNetInstallFile = "$TempDirectory\dotnet-install.ps1" - New-Item -ItemType Directory -Path $TempDirectory -Force | Out-Null - [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 - (New-Object System.Net.WebClient).DownloadFile($DotNetInstallUrl, $DotNetInstallFile) - - # If global.json exists, load expected version - if (Test-Path $DotNetGlobalFile) { - $DotNetGlobal = $(Get-Content $DotNetGlobalFile | Out-String | ConvertFrom-Json) - if ($DotNetGlobal.PSObject.Properties["sdk"] -and $DotNetGlobal.sdk.PSObject.Properties["version"]) { - $DotNetVersion = $DotNetGlobal.sdk.version - } - } - - # Install by channel or version - $DotNetDirectory = "$TempDirectory\dotnet-win" - if (!(Test-Path variable:DotNetVersion)) { - ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Channel $DotNetChannel -NoPath } - } else { - ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Version $DotNetVersion -NoPath } - } - $env:DOTNET_EXE = "$DotNetDirectory\dotnet.exe" - $env:PATH = "$DotNetDirectory;$env:PATH" -} - -Write-Output "Microsoft (R) .NET SDK version $(& $env:DOTNET_EXE --version)" - -if (Test-Path env:NUKE_ENTERPRISE_TOKEN) { - & $env:DOTNET_EXE nuget remove source "nuke-enterprise" > $null - & $env:DOTNET_EXE nuget add source "https://f.feedz.io/nuke/enterprise/nuget" --name "nuke-enterprise" --username "PAT" --password $env:NUKE_ENTERPRISE_TOKEN > $null -} - -ExecSafe { & $env:DOTNET_EXE build $BuildProjectFile /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet } -ExecSafe { & $env:DOTNET_EXE run --project $BuildProjectFile --no-build -- $BuildArguments } diff --git a/build/.editorconfig b/build/.editorconfig deleted file mode 100644 index a67d8b1..0000000 --- a/build/.editorconfig +++ /dev/null @@ -1,15 +0,0 @@ -[*.cs] -dotnet_style_qualification_for_field = false:warning -dotnet_style_qualification_for_property = false:warning -dotnet_style_qualification_for_method = false:warning -dotnet_style_qualification_for_event = false:warning -dotnet_style_require_accessibility_modifiers = never:warning - -csharp_style_expression_bodied_methods = true:silent -csharp_style_expression_bodied_properties = true:warning -csharp_style_expression_bodied_indexers = true:warning -csharp_style_expression_bodied_accessors = true:warning - -resharper_place_record_field_attribute_on_same_line = false -resharper_place_field_attribute_on_same_line = false -resharper_place_property_attribute_on_same_line = false \ No newline at end of file diff --git a/build/AwsS3Tasks.cs b/build/AwsS3Tasks.cs deleted file mode 100644 index 677b8f9..0000000 --- a/build/AwsS3Tasks.cs +++ /dev/null @@ -1,54 +0,0 @@ -// ReSharper disable InconsistentNaming - -using System; -using System.IO; -using System.Threading.Tasks; -using Amazon.S3; -using Amazon.S3.Model; -using Amazon.S3.Transfer; - -internal sealed class AwsS3Tasks(AmazonS3Client client) -{ - private readonly AmazonS3Client _client = client ?? throw new ArgumentNullException(nameof(client)); - - public ValueTask EmptyAsync(string bucketName) - { - ArgumentException.ThrowIfNullOrWhiteSpace(bucketName); - return EmptyInternalAsync(bucketName); - } - - public ValueTask UploadAsync(string directory, string bucketName) - { - ArgumentException.ThrowIfNullOrEmpty(directory); - ArgumentException.ThrowIfNullOrEmpty(bucketName); - - return UploadInternalAsync(directory, bucketName); - } - - private async ValueTask EmptyInternalAsync(string bucketName) - { - ListObjectsResponse items = await _client.ListObjectsAsync(bucketName) - .ConfigureAwait(false); - - do - { - if ( items.S3Objects is null ) - { - break; - } - - foreach ( S3Object obj in items.S3Objects ) - { - await client.DeleteObjectAsync(obj.BucketName, obj.Key).ConfigureAwait(false); - } - } while ( items.IsTruncated ?? false ); - } - - private async ValueTask UploadInternalAsync(string directory, string bucketName) - { - TransferUtility transfer = new(_client); - - await transfer.UploadDirectoryAsync(directory, bucketName, "*.*", SearchOption.AllDirectories) - .ConfigureAwait(false); - } -} diff --git a/build/Build.cs b/build/Build.cs deleted file mode 100644 index e525133..0000000 --- a/build/Build.cs +++ /dev/null @@ -1,208 +0,0 @@ -// ReSharper disable AllUnderscoreLocalParameterName - -using System.IO; -using Amazon.S3; -using Nuke.Common; -using Nuke.Common.Execution; -using Nuke.Common.IO; -using Nuke.Common.ProjectModel; -using Nuke.Common.Tooling; -using Nuke.Common.Tools.Coverlet; -using Nuke.Common.Tools.DotNet; -using Nuke.Common.Tools.GitVersion; -using Nuke.Common.Tools.SonarScanner; -using Serilog; -using Spectre.Console; -using static Nuke.Common.Tools.DotNet.DotNetTasks; -using static Nuke.Common.Tools.SonarScanner.SonarScannerTasks; - -[UnsetVisualStudioEnvironmentVariables] -[DotNetVerbosityMapping] -class Build : NukeBuild -{ - [Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")] - readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release; - - [Required] - [GitVersion(Framework = "net8.0", NoCache = true, NoFetch = true)] - readonly GitVersion GitVersion; - - readonly string MergedCoverletOutputFormat = $"\\\"{CoverletOutputFormat.opencover},{CoverletOutputFormat.json}\\\""; - - [Solution(GenerateProjects = true)] - readonly Solution Solution; - - Target Clean => _ => _ - .Before(Restore) - .Executes(() => - { - DotNetClean(c => c.SetProject(Solution)); - - if ( Directory.Exists(CoverageResultsDirectory) ) - { - Directory.Delete(CoverageResultsDirectory, true); - } - - if ( Directory.Exists(TestResultsDirectory) ) - { - Directory.Delete(TestResultsDirectory, true); - } - - if ( Directory.Exists(DocsArtifactsDirectory) ) - { - Directory.Delete(DocsArtifactsDirectory, true); - } - - if ( Directory.Exists(DemoArtifactsDirectory) ) - { - Directory.Delete(DemoArtifactsDirectory, true); - } - }); - - Target Compile => _ => _ - .DependsOn(Restore) - .Executes(() => - { - DotNetBuild(_ => _ - .SetProjectFile(Solution) - .SetConfiguration(Configuration) - .EnableNoLogo() - .EnableNoRestore()); - }); - - Target CompileDocs => _ => _ - .DependsOn(Compile) - .Executes(() => - { - AbsolutePath docFxConfig = DocsDirectory / "docfx.json"; - DotNet($"docfx {docFxConfig} -o {DocsArtifactsDirectory}"); - }); - - AbsolutePath CoverageResultsDirectory => TemporaryDirectory / "CoverageResults"; - - AbsolutePath DemoArtifactsDirectory => TemporaryDirectory / "AddressValidation.Demo"; - - AbsolutePath DemoProjectDirectory => RootDirectory / "demo" / "src" / "AddressValidation.Demo"; - - Target DeployDocs => _ => _ - .DependsOn(CompileDocs) - .Executes(async () => - { - AwsS3Tasks awsS3Tasks = new(new AmazonS3Client()); - string bucketName = EnvironmentInfo.GetVariable("AWS_S3_BUCKET_NAME"); - - await AnsiConsole.Status() - .StartAsync("Starting...", - async ctx => - { - ctx.Status("Emptying bucket..."); - await awsS3Tasks.EmptyAsync(bucketName) - .ConfigureAwait(false); - - ctx.Status("Uploading documentation..."); - await awsS3Tasks.UploadAsync(DocsArtifactsDirectory, - bucketName) - .ConfigureAwait(false); - }) - .ConfigureAwait(false); - }); - - AbsolutePath DocsArtifactsDirectory => TemporaryDirectory / "docs"; - - AbsolutePath DocsDirectory => RootDirectory / "docs"; - - Target PublishDemo => _ => _ - .DependsOn(Clean) - .Executes(() => - { - DotNetPublish(_ => _ - .SetProject(DemoProjectDirectory / "AddressValidation.Demo.csproj") - .SetConfiguration(Configuration) - .SetOutput(DemoArtifactsDirectory) - .SetSelfContained(false) - .EnableNoLogo() - ); - }); - - Target Restore => _ => _ - .DependsOn(Clean) - .Executes(() => - { - DotNetToolRestore(); - DotNetRestore(_ => _ - .SetProjectFile(Solution) - .EnableNoCache() - .SetConfigFile(RootDirectory / "nuget.config")); - }); - - string SonarOrganization => EnvironmentInfo.GetVariable("SONAR_ORGANIZATION"); - - string SonarProjectKey => EnvironmentInfo.GetVariable("SONAR_PROJECT_KEY"); - - Target SonarScanBegin => _ => _ - .After(Restore) - .OnlyWhenDynamic(() => IsServerBuild) - .Executes(() => - { - AbsolutePath openCoverReportPath = CoverageResultsDirectory / "coverage.opencover.xml"; - AbsolutePath vsTestReportPath = TestResultsDirectory / "*.trx"; - - SonarScannerBegin(_ => _ - .SetOrganization(SonarOrganization) - .SetOpenCoverPaths(openCoverReportPath) - .SetVSTestReports(vsTestReportPath) - .SetProjectKey(SonarProjectKey) - .SetToken(SonarToken)); - }); - - Target SonarScanEnd => _ => _ - .After(Test) - .OnlyWhenDynamic(() => IsServerBuild) - .Executes(() => - { - SonarScannerEnd(_ => _.SetToken(SonarToken)); - }); - - string SonarToken => EnvironmentInfo.GetVariable("SONAR_TOKEN"); - - Target Test => _ => _ - .DependsOn(Restore, SonarScanBegin) - .Executes(() => - { - string[] arguments = - [ - $"-p:MergeWith={CoverageResultsDirectory}/coverage.json", - "-m:1" - ]; - - DotNetTest(_ => _ - .EnableCollectCoverage() - .EnableNoRestore() - .SetConfiguration(Configuration) - .SetCoverletOutput($"{CoverageResultsDirectory}/") - .SetCoverletOutputFormat(MergedCoverletOutputFormat) - .SetLoggers("trx") - .SetProcessAdditionalArguments(arguments) - .SetProjectFile(Solution) - .SetResultsDirectory(TestResultsDirectory)); - }) - .Triggers(SonarScanEnd); - - AbsolutePath TestResultsDirectory => TemporaryDirectory / "TestResults"; - - public static int Main() => Execute(e => e.Compile); - - protected override void OnBuildInitialized() - { - base.OnBuildInitialized(); - - if ( IsServerBuild ) - { - Log.Logger = new LoggerConfiguration() - .Enrich.FromLogContext() - .MinimumLevel.Information() - .WriteTo.Logger(Log.Logger) - .CreateLogger(); - } - } -} diff --git a/build/Configuration.cs b/build/Configuration.cs deleted file mode 100644 index 8d57b51..0000000 --- a/build/Configuration.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.ComponentModel; -using Nuke.Common.Tooling; - -[TypeConverter(typeof(TypeConverter))] -public class Configuration : Enumeration -{ - public static Configuration Debug = new() - { - Value = nameof(Debug) - }; - - public static Configuration Release = new() - { - Value = nameof(Release) - }; - - public static implicit operator string(Configuration configuration) - { - return configuration.Value; - } -} diff --git a/build/Directory.Build.props b/build/Directory.Build.props deleted file mode 100644 index cda8c36..0000000 --- a/build/Directory.Build.props +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/build/Directory.Build.targets b/build/Directory.Build.targets deleted file mode 100644 index fcaf591..0000000 --- a/build/Directory.Build.targets +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/build/_build.csproj b/build/_build.csproj deleted file mode 100644 index 42ef43d..0000000 --- a/build/_build.csproj +++ /dev/null @@ -1,31 +0,0 @@ - - - - Exe - net8.0 - - CS0649;CS0169;CA1050;CA1822;CA2211;IDE1006 - .. - .. - 1 - false - - - - - - - - - - - - - - - - - - - - diff --git a/build/_build.csproj.DotSettings b/build/_build.csproj.DotSettings deleted file mode 100644 index e174ed0..0000000 --- a/build/_build.csproj.DotSettings +++ /dev/null @@ -1,324 +0,0 @@ - - DO_NOT_SHOW - DO_NOT_SHOW - DO_NOT_SHOW - DO_NOT_SHOW - DO_NOT_SHOW - Implicit - Implicit - ExpressionBody - 0 - NEXT_LINE - True - False - 120 - IF_OWNER_IS_SINGLE_LINE - WRAP_IF_LONG - False - <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> - <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> - <Policy><Descriptor Staticness="Instance" AccessRightKinds="Private" Description="Instance fields (private)"><ElementKinds><Kind Name="FIELD" /><Kind Name="READONLY_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="AaBb" /></Policy> - <Policy><Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static fields (private)"><ElementKinds><Kind Name="FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="AaBb" /></Policy> - True - True - True - True - True - True - True - True - True - True - True - <?xml version="1.0" encoding="utf-16"?> -<Patterns xmlns="urn:schemas-jetbrains-com:member-reordering-patterns"> - <TypePattern DisplayName="Non-reorderable types"> - <TypePattern.Match> - <Or> - <And> - <Kind Is="Interface" /> - <Or> - <HasAttribute Name="System.Runtime.InteropServices.InterfaceTypeAttribute" /> - <HasAttribute Name="System.Runtime.InteropServices.ComImport" /> - </Or> - </And> - <Kind Is="Struct" /> - <HasAttribute Name="JetBrains.Annotations.NoReorderAttribute" /> - <HasAttribute Name="JetBrains.Annotations.NoReorder" /> - </Or> - </TypePattern.Match> - </TypePattern> - <TypePattern DisplayName="xUnit.net Test Classes" RemoveRegions="All"> - <TypePattern.Match> - <And> - <Kind Is="Class" /> - <HasMember> - <And> - <Kind Is="Method" /> - <HasAttribute Name="Xunit.FactAttribute" Inherited="True" /> - </And> - </HasMember> - </And> - </TypePattern.Match> - <Entry DisplayName="Setup/Teardown Methods"> - <Entry.Match> - <Or> - <Kind Is="Constructor" /> - <And> - <Kind Is="Method" /> - <ImplementsInterface Name="System.IDisposable" /> - </And> - </Or> - </Entry.Match> - <Entry.SortBy> - <Kind Order="Constructor" /> - </Entry.SortBy> - </Entry> - <Entry DisplayName="All other members" /> - <Entry DisplayName="Test Methods" Priority="100"> - <Entry.Match> - <And> - <Kind Is="Method" /> - <HasAttribute Name="Xunit.FactAttribute" /> - </And> - </Entry.Match> - <Entry.SortBy> - <Name /> - </Entry.SortBy> - </Entry> - </TypePattern> - <TypePattern DisplayName="NUnit Test Fixtures" RemoveRegions="All"> - <TypePattern.Match> - <And> - <Kind Is="Class" /> - <HasAttribute Name="NUnit.Framework.TestFixtureAttribute" Inherited="True" /> - </And> - </TypePattern.Match> - <Entry DisplayName="Setup/Teardown Methods"> - <Entry.Match> - <And> - <Kind Is="Method" /> - <Or> - <HasAttribute Name="NUnit.Framework.SetUpAttribute" Inherited="True" /> - <HasAttribute Name="NUnit.Framework.TearDownAttribute" Inherited="True" /> - <HasAttribute Name="NUnit.Framework.FixtureSetUpAttribute" Inherited="True" /> - <HasAttribute Name="NUnit.Framework.FixtureTearDownAttribute" Inherited="True" /> - </Or> - </And> - </Entry.Match> - </Entry> - <Entry DisplayName="All other members" /> - <Entry DisplayName="Test Methods" Priority="100"> - <Entry.Match> - <And> - <Kind Is="Method" /> - <HasAttribute Name="NUnit.Framework.TestAttribute" /> - </And> - </Entry.Match> - <Entry.SortBy> - <Name /> - </Entry.SortBy> - </Entry> - </TypePattern> - <TypePattern DisplayName="Default Pattern" RemoveRegions="All" Priority="150"> - <Group DisplayName="Group by Access"> - <Group.GroupBy> - <Access /> - </Group.GroupBy> - <Entry DisplayName="Constant or Field Constant"> - <Entry.Match> - <Or> - <Kind Is="Constant" /> - <And> - <Static /> - <Kind Is="Field" /> - </And> - </Or> - </Entry.Match> - <Entry.SortBy> - <Static /> - <Readonly /> - <Name /> - </Entry.SortBy> - </Entry> - </Group> - <Group DisplayName="Group by Access"> - <Group.GroupBy> - <Access /> - </Group.GroupBy> - <Entry DisplayName="Field"> - <Entry.Match> - <Kind Is="Field" /> - </Entry.Match> - <Entry.SortBy> - <Static /> - <Readonly /> - <Name /> - </Entry.SortBy> - </Entry> - </Group> - <Group DisplayName="Group by Access"> - <Group.GroupBy> - <Access /> - </Group.GroupBy> - <Entry DisplayName="Constructor"> - <Entry.Match> - <Kind Is="Constructor" /> - </Entry.Match> - <Entry.SortBy> - <Static /> - <Name /> - </Entry.SortBy> - </Entry> - </Group> - <Group DisplayName="Group by Access"> - <Group.GroupBy> - <Access /> - </Group.GroupBy> - <Entry DisplayName="Destructor"> - <Entry.Match> - <Kind Is="Destructor" /> - </Entry.Match> - <Entry.SortBy> - <Static /> - <Name /> - </Entry.SortBy> - </Entry> - </Group> - <Group DisplayName="Group by Access"> - <Group.GroupBy> - <Access /> - </Group.GroupBy> - <Entry DisplayName="Delegate"> - <Entry.Match> - <Kind Is="Delegate" /> - </Entry.Match> - <Entry.SortBy> - <Static /> - <Name /> - </Entry.SortBy> - </Entry> - </Group> - <Group DisplayName="Group by Access"> - <Group.GroupBy> - <Access /> - </Group.GroupBy> - <Entry DisplayName="Event"> - <Entry.Match> - <Kind Is="Event" /> - </Entry.Match> - <Entry.SortBy> - <Static /> - <Name /> - </Entry.SortBy> - </Entry> - </Group> - <Group DisplayName="Group by Access"> - <Group.GroupBy> - <Access /> - </Group.GroupBy> - <Entry DisplayName="Enum"> - <Entry.Match> - <Kind Is="Enum" /> - </Entry.Match> - <Entry.SortBy> - <Name /> - </Entry.SortBy> - </Entry> - </Group> - <Group DisplayName="Group by Access"> - <Group.GroupBy> - <Access /> - </Group.GroupBy> - <Entry DisplayName="Interface"> - <Entry.Match> - <Kind Is="Interface" /> - </Entry.Match> - <Entry.SortBy> - <Name /> - </Entry.SortBy> - </Entry> - </Group> - <Group DisplayName="Group by Access"> - <Group.GroupBy> - <Access /> - </Group.GroupBy> - <Entry DisplayName="Property"> - <Entry.Match> - <Kind Is="Property" /> - </Entry.Match> - <Entry.SortBy> - <Static /> - <Readonly /> - <Name /> - </Entry.SortBy> - </Entry> - </Group> - <Group DisplayName="Group by Access"> - <Group.GroupBy> - <Access /> - </Group.GroupBy> - <Entry DisplayName="Indexer"> - <Entry.Match> - <Kind Is="Indexer" /> - </Entry.Match> - <Entry.SortBy> - <Static /> - <Name /> - </Entry.SortBy> - </Entry> - </Group> - <Group DisplayName="Group by Access"> - <Group.GroupBy> - <Access /> - </Group.GroupBy> - <Entry DisplayName="Method"> - <Entry.Match> - <Kind Is="Method" /> - </Entry.Match> - <Entry.SortBy> - <Static /> - <Name /> - </Entry.SortBy> - </Entry> - </Group> - <Group DisplayName="Group by Access"> - <Group.GroupBy> - <Access /> - </Group.GroupBy> - <Entry DisplayName="Struct"> - <Entry.Match> - <Kind Is="Struct" /> - </Entry.Match> - <Entry.SortBy> - <Name /> - </Entry.SortBy> - </Entry> - </Group> - <Group DisplayName="Group by Access"> - <Group.GroupBy> - <Access /> - </Group.GroupBy> - <Entry DisplayName="Class"> - <Entry.Match> - <Kind Is="Class" /> - </Entry.Match> - <Entry.SortBy> - <Static /> - <Sealed /> - <Name /> - </Entry.SortBy> - </Entry> - <Entry DisplayName="Record"> - <Entry.Match> - <Kind Is="Record" /> - </Entry.Match> - <Entry.SortBy> - <Readonly /> - <Name /> - </Entry.SortBy> - </Entry> - </Group> - </TypePattern> -</Patterns> - diff --git a/demo/src/AddressValidation.Demo/.gitignore b/demo/src/AddressValidation.Demo/.gitignore deleted file mode 100644 index 160739f..0000000 --- a/demo/src/AddressValidation.Demo/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# Settings Database - -Data/settings.db -Data/Keys - -*.sqlite3-shm -*.sqlite3-wal -*.db-shm -*.db-wal diff --git a/demo/src/AddressValidation.Demo/AddressValidation.Demo.csproj b/demo/src/AddressValidation.Demo/AddressValidation.Demo.csproj deleted file mode 100644 index bfb0f03..0000000 --- a/demo/src/AddressValidation.Demo/AddressValidation.Demo.csproj +++ /dev/null @@ -1,54 +0,0 @@ - - - - net8.0 - false - $(NoWarn);CA1724 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - - - - - - - - - - - - - - - diff --git a/demo/src/AddressValidation.Demo/App.razor b/demo/src/AddressValidation.Demo/App.razor deleted file mode 100644 index ca7c35c..0000000 --- a/demo/src/AddressValidation.Demo/App.razor +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/demo/src/AddressValidation.Demo/Common/.editorconfig b/demo/src/AddressValidation.Demo/Common/.editorconfig deleted file mode 100644 index 377bce4..0000000 --- a/demo/src/AddressValidation.Demo/Common/.editorconfig +++ /dev/null @@ -1,10 +0,0 @@ -# see https://github.com/dotnet/sdk/issues/39817 - -[*.razor.cs] -dotnet_diagnostic.CA1822.severity = suggestion -dotnet_diagnostic.CA1823.severity = suggestion -dotnet_diagnostic.IDE0044.severity = suggestion -dotnet_diagnostic.IDE0051.severity = suggestion -dotnet_diagnostic.IDE0052.severity = suggestion -dotnet_diagnostic.IDE0060.severity = none -dotnet_diagnostic.S1144.severity = suggestion diff --git a/demo/src/AddressValidation.Demo/Common/Components/LoadingIndicator.razor b/demo/src/AddressValidation.Demo/Common/Components/LoadingIndicator.razor deleted file mode 100644 index c2ac5ec..0000000 --- a/demo/src/AddressValidation.Demo/Common/Components/LoadingIndicator.razor +++ /dev/null @@ -1,19 +0,0 @@ -@if (!IsLoading) -{ -
- - @ChildContent - - - @if (IsVisible) - { -
-
-
- } -
-} -else -{ -

Loading...

-} diff --git a/demo/src/AddressValidation.Demo/Common/Components/LoadingIndicator.razor.cs b/demo/src/AddressValidation.Demo/Common/Components/LoadingIndicator.razor.cs deleted file mode 100644 index 3146727..0000000 --- a/demo/src/AddressValidation.Demo/Common/Components/LoadingIndicator.razor.cs +++ /dev/null @@ -1,78 +0,0 @@ -namespace AddressValidation.Demo.Common.Components; - -using System.Diagnostics.CodeAnalysis; -using Services.Abstractions; - -public sealed partial class LoadingIndicator : ComponentBase, IDisposable -{ - private ILoadingIndicatorService? _loadingIndicatorService; - - ~LoadingIndicator() - { - Dispose(); - } - - [Parameter] - public RenderFragment ChildContent { get; set; } = null!; - - [Parameter] - public bool IsLoading { get; set; } - - [Parameter] - public bool IsVisible { get; set; } - - [Parameter] - [SuppressMessage("Usage", "BL0007:Component parameters should be auto properties")] - public ILoadingIndicatorService? LoadingIndicatorService - { - get => _loadingIndicatorService; - set - { - if ( value != _loadingIndicatorService ) - { - _loadingIndicatorService?.Unsubscribe(this); - } - - _loadingIndicatorService = value; - _loadingIndicatorService?.Subscribe(this); - } - } - - public void Dispose() - { - _loadingIndicatorService = null; - GC.SuppressFinalize(this); - } - - public Task HideAsync() - { - return SetIsVisible(false); - } - - public Task ShowAsync() - { - return SetIsVisible(true); - } - - internal async Task SetIsLoading(bool value) - { - if ( IsLoading == value ) - { - return; - } - - IsLoading = value; - await InvokeAsync(StateHasChanged); - } - - internal async Task SetIsVisible(bool value) - { - if ( IsVisible == value ) - { - return; - } - - IsVisible = value; - await InvokeAsync(StateHasChanged); - } -} diff --git a/demo/src/AddressValidation.Demo/Common/Components/LoadingIndicator.razor.css b/demo/src/AddressValidation.Demo/Common/Components/LoadingIndicator.razor.css deleted file mode 100644 index 7b4f486..0000000 --- a/demo/src/AddressValidation.Demo/Common/Components/LoadingIndicator.razor.css +++ /dev/null @@ -1,93 +0,0 @@ -.avd-loader-wrapper { - position: relative; -} - -.avd-loader-container { - position: absolute; - top: 0; - left: 0; - background: rgb(255, 255, 255, 0.5); - width: 100%; - height: 100%; - z-index: 2147483647; -} - -.avd-loader-whirlpool, -.avd-loader-whirlpool::before, -.avd-loader-whirlpool::after { - position: absolute; - top: 50%; - left: 50%; - border: 1px solid rgb(204, 204, 204); - border-left-color: rgb(0, 0, 0); - border-radius: 974px; - -o-border-radius: 974px; - -ms-border-radius: 974px; - -webkit-border-radius: 974px; - -moz-border-radius: 974px; -} - -.avd-loader-whirlpool { - margin: -24px 0 0 -24px; - height: 49px; - width: 49px; - animation: avd-loader-rotate 1150ms linear infinite; - -o-animation: avd-loader-rotate 1150ms linear infinite; - -ms-animation: avd-loader-rotate 1150ms linear infinite; - -webkit-animation: avd-loader-rotate 1150ms linear infinite; - -moz-animation: avd-loader-rotate 1150ms linear infinite; -} - -.avd-loader-whirlpool::before { - content: ""; - margin: -22px 0 0 -22px; - height: 43px; - width: 43px; - animation: avd-loader-rotate 1150ms linear infinite; - -o-animation: avd-loader-rotate 1150ms linear infinite; - -ms-animation: avd-loader-rotate 1150ms linear infinite; - -webkit-animation: avd-loader-rotate 1150ms linear infinite; - -moz-animation: avd-loader-rotate 1150ms linear infinite; -} - -.avd-loader-whirlpool::after { - content: ""; - margin: -28px 0 0 -28px; - height: 55px; - width: 55px; - animation: avd-loader-rotate 2300ms linear infinite; - -o-animation: avd-loader-rotate 2300ms linear infinite; - -ms-animation: avd-loader-rotate 2300ms linear infinite; - -webkit-animation: avd-loader-rotate 2300ms linear infinite; - -moz-animation: avd-loader-rotate 2300ms linear infinite; -} - -@keyframes avd-loader-rotate { - 100% { - transform: rotate(360deg); - } -} - -@-o-keyframes avd-loader-rotate { - 100% { - -o-transform: rotate(360deg); - } -} - -@-ms-keyframes avd-loader-rotate { - 100% { - -ms-transform: rotate(360deg); - } -} - -@-webkit-keyframes avd-loader-rotate { - 100% { - -webkit-transform: rotate(360deg); - } -} - -@-moz-keyframes avd-loader-rotate { - 100% { - -moz-transform: rotate(360deg); - } -} diff --git a/demo/src/AddressValidation.Demo/Common/Components/SyntaxHighlighter.cs b/demo/src/AddressValidation.Demo/Common/Components/SyntaxHighlighter.cs deleted file mode 100644 index a41b05f..0000000 --- a/demo/src/AddressValidation.Demo/Common/Components/SyntaxHighlighter.cs +++ /dev/null @@ -1,26 +0,0 @@ -namespace AddressValidation.Demo.Common.Components; - -using Microsoft.AspNetCore.Components.Rendering; - -public sealed class SyntaxHighlighter : ComponentBase -{ - [Parameter] - public RenderFragment? ChildContent { get; set; } - - [Parameter] - public string Language { get; set; } = null!; - - protected override void BuildRenderTree(RenderTreeBuilder builder) - { - ArgumentNullException.ThrowIfNull(builder); - - builder.OpenElement(0, "pre"); - builder.OpenElement(1, "code"); - - builder.AddAttribute(2, "class", $"language-{Language}"); - builder.AddContent(3, ChildContent); - - builder.CloseElement(); - builder.CloseElement(); - } -} diff --git a/demo/src/AddressValidation.Demo/Common/MainLayout.razor b/demo/src/AddressValidation.Demo/Common/MainLayout.razor deleted file mode 100644 index 49be647..0000000 --- a/demo/src/AddressValidation.Demo/Common/MainLayout.razor +++ /dev/null @@ -1,39 +0,0 @@ -@inherits LayoutComponentBase - - - - - - - - - - - - - - - - - - - - -
- @Body -
-
- - - Designed for demonstration purposes only and should not be used in a Production - environment. - - -
- -
- An unhandled error has occurred. - Reload - 🗙 -
diff --git a/demo/src/AddressValidation.Demo/Common/MainLayout.razor.cs b/demo/src/AddressValidation.Demo/Common/MainLayout.razor.cs deleted file mode 100644 index 88e22e4..0000000 --- a/demo/src/AddressValidation.Demo/Common/MainLayout.razor.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace AddressValidation.Demo.Common; - -public partial class MainLayout : LayoutComponentBase -{ - private bool _isExpanded = true; -} diff --git a/demo/src/AddressValidation.Demo/Common/MainLayout.razor.css b/demo/src/AddressValidation.Demo/Common/MainLayout.razor.css deleted file mode 100644 index 0d26cfc..0000000 --- a/demo/src/AddressValidation.Demo/Common/MainLayout.razor.css +++ /dev/null @@ -1,18 +0,0 @@ -#blazor-error-ui { - background: lightyellow; - bottom: 0; - box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); - display: none; - left: 0; - padding: 0.6rem 1.25rem 0.7rem 1.25rem; - position: fixed; - width: 100%; - z-index: 1000; -} - -#blazor-error-ui .dismiss { - cursor: pointer; - position: absolute; - right: 0.75rem; - top: 0.5rem; -} diff --git a/demo/src/AddressValidation.Demo/Configuration/SqliteConfigurationProvider.cs b/demo/src/AddressValidation.Demo/Configuration/SqliteConfigurationProvider.cs deleted file mode 100644 index 7d0f34a..0000000 --- a/demo/src/AddressValidation.Demo/Configuration/SqliteConfigurationProvider.cs +++ /dev/null @@ -1,37 +0,0 @@ -namespace AddressValidation.Demo.Configuration; - -using Infrastructure; -using Infrastructure.Repositories; -using Microsoft.AspNetCore.DataProtection; -using Microsoft.Data.Sqlite; -using Microsoft.Extensions.Logging.Abstractions; -using Models.Entities; - -internal sealed class SqliteConfigurationProvider : ConfigurationProvider -{ - public override void Load() - { - string keysDirectory = Path.Join(AppDomain.CurrentDomain.GetData("DataDirectory")!.ToString(), "Keys"); - IDataProtectionProvider provider = DataProtectionProvider.Create(new DirectoryInfo(keysDirectory), - config => { config.SetApplicationName("AddressValidation.Demo"); }); - - SettingsContextFactory contextFactory = new(NullLoggerFactory.Instance); - SettingsRepository repository = new(contextFactory, NullLogger.Instance); - - try - { - IReadOnlyList items = repository.List(); - - IDataProtector protector = provider.CreateProtector("AddressValidation.Demo.Settings.V1"); - - Data = items.Select(s => new - { - s.Key, - Value = s.IsEncrypted ? protector.Unprotect(s.Value) : s.Value - }).ToDictionary(k => k.Key, string? (v) => v.Value); - } - catch ( SqliteException ) - { - } - } -} diff --git a/demo/src/AddressValidation.Demo/Configuration/SqliteConfigurationSource.cs b/demo/src/AddressValidation.Demo/Configuration/SqliteConfigurationSource.cs deleted file mode 100644 index a7d0f9b..0000000 --- a/demo/src/AddressValidation.Demo/Configuration/SqliteConfigurationSource.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace AddressValidation.Demo.Configuration; - -internal sealed class SqliteConfigurationSource : IConfigurationSource -{ - public IConfigurationProvider Build(IConfigurationBuilder builder) - { - return new SqliteConfigurationProvider(); - } -} diff --git a/demo/src/AddressValidation.Demo/Data/countries+states.db b/demo/src/AddressValidation.Demo/Data/countries+states.db deleted file mode 100644 index d0933aa..0000000 Binary files a/demo/src/AddressValidation.Demo/Data/countries+states.db and /dev/null differ diff --git a/demo/src/AddressValidation.Demo/Dockerfile b/demo/src/AddressValidation.Demo/Dockerfile deleted file mode 100644 index b5b5960..0000000 --- a/demo/src/AddressValidation.Demo/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM mcr.microsoft.com/dotnet/aspnet:8.0-noble-chiseled-extra@sha256:1ec4c9605a8fc97d3c2045d46557e51d9ca54ba4f91339205be2e44bfb184732 - -WORKDIR /app - -COPY --chown=$APP_UID:$APP_UID .nuke/temp/AddressValidation.Demo/ . - -ENV ASPNETCORE_HTTP_PORTS=3000 -EXPOSE 3000 - -USER $APP_UID - -ENTRYPOINT ["dotnet", "AddressValidation.Demo.dll"] diff --git a/demo/src/AddressValidation.Demo/Extensions/ConfigurationBuilderExtensions.cs b/demo/src/AddressValidation.Demo/Extensions/ConfigurationBuilderExtensions.cs deleted file mode 100644 index ac83c8c..0000000 --- a/demo/src/AddressValidation.Demo/Extensions/ConfigurationBuilderExtensions.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace AddressValidation.Demo.Extensions; - -using Configuration; - -internal static class ConfigurationBuilderExtensions -{ - public static IConfigurationBuilder AddSqlite(this IConfigurationBuilder builder) - { - ArgumentNullException.ThrowIfNull(builder); - return builder.Add(new SqliteConfigurationSource()); - } -} diff --git a/demo/src/AddressValidation.Demo/Features/.editorconfig b/demo/src/AddressValidation.Demo/Features/.editorconfig deleted file mode 100644 index 377bce4..0000000 --- a/demo/src/AddressValidation.Demo/Features/.editorconfig +++ /dev/null @@ -1,10 +0,0 @@ -# see https://github.com/dotnet/sdk/issues/39817 - -[*.razor.cs] -dotnet_diagnostic.CA1822.severity = suggestion -dotnet_diagnostic.CA1823.severity = suggestion -dotnet_diagnostic.IDE0044.severity = suggestion -dotnet_diagnostic.IDE0051.severity = suggestion -dotnet_diagnostic.IDE0052.severity = suggestion -dotnet_diagnostic.IDE0060.severity = none -dotnet_diagnostic.S1144.severity = suggestion diff --git a/demo/src/AddressValidation.Demo/Features/Error.razor b/demo/src/AddressValidation.Demo/Features/Error.razor deleted file mode 100644 index b9571fc..0000000 --- a/demo/src/AddressValidation.Demo/Features/Error.razor +++ /dev/null @@ -1,40 +0,0 @@ -@page "/Error" -@using System.Diagnostics - -Error - -

Error.

-

An error occurred while processing your request.

- -@if (ShowRequestId) -{ -

- Request ID: @RequestId -

-} - -

Development Mode

-

- Swapping to Development environment will display more detailed information about the error that - occurred. -

-

- The Development environment shouldn't be enabled for deployed applications. - It can result in displaying sensitive information from exceptions to end users. - For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT - environment variable to Development - and restarting the app. -

- -@code{ - [CascadingParameter] private HttpContext? HttpContext { get; set; } - - private string? RequestId { get; set; } - private bool ShowRequestId => !string.IsNullOrEmpty(RequestId); - - protected override void OnInitialized() - { - RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier; - } - -} diff --git a/demo/src/AddressValidation.Demo/Features/Index.razor b/demo/src/AddressValidation.Demo/Features/Index.razor deleted file mode 100644 index c9291d4..0000000 --- a/demo/src/AddressValidation.Demo/Features/Index.razor +++ /dev/null @@ -1,3 +0,0 @@ -@page "/" - -Address Validation Demo diff --git a/demo/src/AddressValidation.Demo/Features/Validators/Abstractions/AbstractValidatorComponent.cs b/demo/src/AddressValidation.Demo/Features/Validators/Abstractions/AbstractValidatorComponent.cs deleted file mode 100644 index 5ce66a4..0000000 --- a/demo/src/AddressValidation.Demo/Features/Validators/Abstractions/AbstractValidatorComponent.cs +++ /dev/null @@ -1,188 +0,0 @@ -namespace AddressValidation.Demo.Features.Validators.Abstractions; - -using System.Text.Json; -using Common.Components; -using Microsoft.JSInterop; -using Models.Forms.Abstractions; -using Radzen; -using Services.Abstractions; -using Visus.AddressValidation.Abstractions; -using Visus.AddressValidation.Http; -using Visus.AddressValidation.Model; -using Visus.AddressValidation.Services; - -public abstract class AbstractValidatorComponent : ComponentBase - where TValidationRequest : AbstractAddressValidationRequest, new() - where TValidationFormModel : AbstractAddressValidationFormModel, new() -{ - private readonly JsonSerializerOptions _serializerOptions = new() - { - WriteIndented = true - }; - - protected TValidationFormModel AddressValidationFormModel { get; } = new(); - - protected bool IsCityOrTownDisabled - { - get - { - if ( string.IsNullOrWhiteSpace(AddressValidationFormModel.CityOrTown) || - string.IsNullOrWhiteSpace(AddressValidationFormModel.StateOrProvince) ) - { - return false; - } - - string? stateOrProvinceName = Provinces!.GetValueOrDefault(AddressValidationFormModel.StateOrProvince); - - return !string.IsNullOrWhiteSpace(stateOrProvinceName) - && string.Equals(stateOrProvinceName, - AddressValidationFormModel.CityOrTown, - StringComparison.OrdinalIgnoreCase); - } - } - - [Inject] - protected IConfiguration Configuration { get; set; } = null!; - - protected IReadOnlyDictionary Countries { get; private set; } = new Dictionary(); - - [Inject] - protected IGeographyService GeographyService { get; set; } = null!; - - [Inject] - protected IJSRuntime JsRuntime { get; set; } = null!; - - [Inject] - protected NotificationService NotificationService { get; set; } = null!; - - protected IReadOnlyDictionary Provinces { get; private set; } = new Dictionary(); - - protected MarkupString? RequestJson { get; private set; } - - protected LoadingIndicator RequestLoadingIndicator { get; set; } = null!; - - protected MarkupString? ResponseJson { get; private set; } - - protected LoadingIndicator ResponseLoadingIndicator { get; set; } = null!; - - protected LoadingIndicator SettingsLoadingIndicator { get; set; } = null!; - - [Inject] - protected ISettingsService SettingsService { get; set; } = null!; - - protected LoadingIndicator ValidateLoadingIndicator { get; set; } = null!; - - [Inject] - protected IAddressValidationService ValidationService { get; set; } = null!; - - protected virtual IEnumerable InitializeCountries() - { - yield break; - } - - protected async Task OnAddressValidationFormSubmitAsync() - { - await ValidateLoadingIndicator.ShowAsync(); - await RequestLoadingIndicator.ShowAsync(); - await ResponseLoadingIndicator.ShowAsync(); - - try - { - await RenderRequestJsonAsync(); - - IAddressValidationResponse? result = await ValidationService.ValidateAsync(AddressValidationFormModel.Request); - if ( result is not null ) - { - await RenderResponseJsonAsync(result); - } - } - finally - { - await ValidateLoadingIndicator.HideAsync(); - await RequestLoadingIndicator.HideAsync(); - await ResponseLoadingIndicator.HideAsync(); - } - } - - protected override async Task OnAfterRenderAsync(bool firstRender) - { - if ( !firstRender ) - { - return; - } - - await ValidateLoadingIndicator.ShowAsync(); - - try - { - await Task.WhenAll(LoadCountriesAsync(), OnCountryChangedAsync()); - } - finally - { - await ValidateLoadingIndicator.HideAsync(); - } - } - - protected Task OnCountryChangedAsync() - { - if ( string.IsNullOrWhiteSpace(AddressValidationFormModel.Country) ) - { - return Task.CompletedTask; - } - - return Task.Run(async () => await GeographyService.ListProvincesAsDictionaryAsync(AddressValidationFormModel.Country)) - .ContinueWith(t => - { - Provinces = t.Result; - }, CancellationToken.None, TaskContinuationOptions.LongRunning, TaskScheduler.Default); - } - - protected override void OnInitialized() - { - AddressValidationFormModel.Country = nameof(CountryCode.US); - } - - protected Task OnProvinceChangedAsync() - { - if ( string.IsNullOrWhiteSpace(AddressValidationFormModel.Country) || - string.IsNullOrWhiteSpace(AddressValidationFormModel.StateOrProvince) ) - { - return Task.CompletedTask; - } - - return Task.Run(async () => await GeographyService.ListAutonomousCitiesAsync(AddressValidationFormModel.Country)) - .ContinueWith(t => - { - string? stateOrProvinceName = Provinces.GetValueOrDefault(AddressValidationFormModel.StateOrProvince); - if ( !string.IsNullOrWhiteSpace(stateOrProvinceName) && t.Result.Contains(stateOrProvinceName) ) - { - AddressValidationFormModel.CityOrTown = stateOrProvinceName; - } - }, CancellationToken.None, TaskContinuationOptions.LongRunning, TaskScheduler.Default); - } - - private Task LoadCountriesAsync() - { - return Task.Run(async () => await GeographyService.ListCountriesAsDictionaryAsync()) - .ContinueWith(t => - { - Countries = t.Result; - }, CancellationToken.None, TaskContinuationOptions.LongRunning, TaskScheduler.Default); - } - - private async Task RenderRequestJsonAsync() - { - string json = AddressValidationFormModel.ToJson(); - string result = await JsRuntime.InvokeAsync("highlightJson", json); - - RequestJson = new MarkupString(result); - } - - private async Task RenderResponseJsonAsync(IAddressValidationResponse response) - { - string json = JsonSerializer.Serialize(response, _serializerOptions); - string result = await JsRuntime.InvokeAsync("highlightJson", json); - - ResponseJson = new MarkupString(result); - } -} diff --git a/demo/src/AddressValidation.Demo/Features/Validators/FedEx.razor b/demo/src/AddressValidation.Demo/Features/Validators/FedEx.razor deleted file mode 100644 index ac2d242..0000000 --- a/demo/src/AddressValidation.Demo/Features/Validators/FedEx.razor +++ /dev/null @@ -1,242 +0,0 @@ -@page "/validator/fedex" -@using AddressValidation.Demo.Models.Forms -@using Visus.AddressValidation.Abstractions -@inherits AddressValidation.Demo.Features.Validators.Abstractions.AbstractValidatorComponent - -FedEx Address Validation - -

FedEx Address Validation Dem1

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @if (Provinces.Count > 0) - { - - } - else - { - - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @ResponseJson - - - - - @RequestJson - - - - - - diff --git a/demo/src/AddressValidation.Demo/Features/Validators/FedEx.razor.cs b/demo/src/AddressValidation.Demo/Features/Validators/FedEx.razor.cs deleted file mode 100644 index 466254a..0000000 --- a/demo/src/AddressValidation.Demo/Features/Validators/FedEx.razor.cs +++ /dev/null @@ -1,82 +0,0 @@ -namespace AddressValidation.Demo.Features.Validators; - -using System.Diagnostics.CodeAnalysis; -using Abstractions; -using Configuration; -using Models.Forms; -using Radzen; -using Visus.AddressValidation.Abstractions; -using Visus.AddressValidation.Integration.FedEx; -using Visus.AddressValidation.Integration.FedEx.Http; - -[SuppressMessage("Naming", "CA1711:Identifiers should not have incorrect suffix")] -public partial class FedEx : AbstractValidatorComponent -{ - private readonly Dictionary _clientEnvironments = new(StringComparer.OrdinalIgnoreCase) - { - [nameof(ClientEnvironment.DEVELOPMENT)] = ClientEnvironment.DEVELOPMENT, - [nameof(ClientEnvironment.PRODUCTION)] = ClientEnvironment.PRODUCTION - }; - - private readonly OAuthApiSettingsFormModel _settingsFormModel = new(); - - protected override IEnumerable InitializeCountries() - { - return Constants.SupportedCountries; - } - - protected override async Task OnInitializedAsync() - { - await base.OnInitializedAsync(); - - _settingsFormModel.AccountNumber = Configuration.GetValue(Constants.AccountNumberConfigurationKey); - - string? clientEnvironmentValue = Configuration.GetValue(Constants.ClientEnvironmentConfigurationKey); - if ( !Enum.TryParse(clientEnvironmentValue, out ClientEnvironment clientEnvironment) ) - { - _settingsFormModel.ClientEnvironment = ClientEnvironment.DEVELOPMENT; - } - - _settingsFormModel.ClientEnvironment = clientEnvironment; - _settingsFormModel.ClientId = Configuration.GetValue(Constants.ClientIdConfigurationKey); - _settingsFormModel.ClientSecret = Configuration.GetValue(Constants.ClientSecretConfigurationKey); - } - - private async Task OnSettingsFormSubmitAsync() - { - await SettingsLoadingIndicator.ShowAsync(); - - try - { - bool[] results = - [ - await SettingsService.AddOrUpdateAsync(Constants.AccountNumberConfigurationKey, _settingsFormModel.AccountNumber), - await SettingsService.AddOrUpdateAsync(Constants.ClientEnvironmentConfigurationKey, _settingsFormModel.ClientEnvironment.ToString()), - await SettingsService.AddOrUpdateAsync(Constants.ClientIdConfigurationKey, _settingsFormModel.ClientId, true), - await SettingsService.AddOrUpdateAsync(Constants.ClientSecretConfigurationKey, _settingsFormModel.ClientSecret, true) - ]; - - if ( results.All(a => a) ) - { - NotificationService.Notify(NotificationSeverity.Success, "Configuration Updated"); - - // remark: refresh underlying IConfiguration provider for validation services - if ( Configuration is IConfigurationRoot configurationRoot ) - { - IConfigurationProvider? provider = configurationRoot.Providers.FirstOrDefault(f => f is SqliteConfigurationProvider); - provider?.Load(); - } - } - else - { - NotificationService.Notify(NotificationSeverity.Error, "Configuration Update Failed"); - } - } - finally - { - await SettingsLoadingIndicator.HideAsync(); - } - - await InvokeAsync(StateHasChanged); - } -} diff --git a/demo/src/AddressValidation.Demo/Features/Validators/Google.razor b/demo/src/AddressValidation.Demo/Features/Validators/Google.razor deleted file mode 100644 index 2fc7f33..0000000 --- a/demo/src/AddressValidation.Demo/Features/Validators/Google.razor +++ /dev/null @@ -1,222 +0,0 @@ -@page "/validator/google" -@using AddressValidation.Demo.Models.Forms -@inherits AddressValidation.Demo.Features.Validators.Abstractions.AbstractValidatorComponent - -Google Address Validation Demo - -

Google Address Validation Demo

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @if (Provinces.Count > 0) - { - - } - else - { - - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @RequestJson - - - - - @ResponseJson - - - - - - diff --git a/demo/src/AddressValidation.Demo/Features/Validators/Google.razor.cs b/demo/src/AddressValidation.Demo/Features/Validators/Google.razor.cs deleted file mode 100644 index 3fe11c7..0000000 --- a/demo/src/AddressValidation.Demo/Features/Validators/Google.razor.cs +++ /dev/null @@ -1,65 +0,0 @@ -namespace AddressValidation.Demo.Features.Validators; - -using Abstractions; -using Configuration; -using Models.Forms; -using Radzen; -using Visus.AddressValidation.Abstractions; -using Visus.AddressValidation.Integration.Google.Http; -using Constants = Visus.AddressValidation.Integration.Google.Constants; - -public partial class Google : AbstractValidatorComponent -{ - private readonly GoogleApiSettingsFormModel _settingsFormModel = new(); - - protected override IEnumerable InitializeCountries() - { - return Constants.SupportedCountries; - } - - protected override async Task OnInitializedAsync() - { - await base.OnInitializedAsync(); - - _settingsFormModel.PrivateKey = Configuration.GetValue(Constants.PrivateKeyConfigurationKey); - _settingsFormModel.ProjectId = Configuration.GetValue(Constants.ProjectIdConfigurationKey); - _settingsFormModel.ServiceAccountEmailAddress = Configuration.GetValue(Constants.ServiceAccountEmailConfigurationKey); - } - - private async Task OnSettingsFormSubmitAsync() - { - await SettingsLoadingIndicator.ShowAsync(); - - try - { - bool[] results = - [ - await SettingsService.AddOrUpdateAsync(Constants.PrivateKeyConfigurationKey, _settingsFormModel.PrivateKey, true), - await SettingsService.AddOrUpdateAsync(Constants.ProjectIdConfigurationKey, _settingsFormModel.ProjectId), - await SettingsService.AddOrUpdateAsync(Constants.ServiceAccountEmailConfigurationKey, _settingsFormModel.ServiceAccountEmailAddress) - ]; - - if ( results.All(a => a) ) - { - NotificationService.Notify(NotificationSeverity.Success, "Configuration Updated"); - - // remark: refresh underlying IConfiguration provider for validation services - if ( Configuration is IConfigurationRoot configurationRoot ) - { - IConfigurationProvider? provider = configurationRoot.Providers.FirstOrDefault(f => f is SqliteConfigurationProvider); - provider?.Load(); - } - } - else - { - NotificationService.Notify(NotificationSeverity.Error, "Configuration Update Failed"); - } - } - finally - { - await SettingsLoadingIndicator.HideAsync(); - } - - await InvokeAsync(StateHasChanged); - } -} diff --git a/demo/src/AddressValidation.Demo/Features/Validators/PitneyBowes.razor b/demo/src/AddressValidation.Demo/Features/Validators/PitneyBowes.razor deleted file mode 100644 index 83f969f..0000000 --- a/demo/src/AddressValidation.Demo/Features/Validators/PitneyBowes.razor +++ /dev/null @@ -1,239 +0,0 @@ -@page "/validator/pitney-bowes" -@using AddressValidation.Demo.Models.Forms -@using Visus.AddressValidation.Abstractions -@inherits AddressValidation.Demo.Features.Validators.Abstractions.AbstractValidatorComponent - -Pitney Bowes Address Validator - -

Pitney Bowes Address Validation Demo

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @if (Provinces.Count > 0) - { - - } - else - { - - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @RequestJson - - - - - @ResponseJson - - - - - - diff --git a/demo/src/AddressValidation.Demo/Features/Validators/PitneyBowes.razor.cs b/demo/src/AddressValidation.Demo/Features/Validators/PitneyBowes.razor.cs deleted file mode 100644 index 5c816a5..0000000 --- a/demo/src/AddressValidation.Demo/Features/Validators/PitneyBowes.razor.cs +++ /dev/null @@ -1,80 +0,0 @@ -namespace AddressValidation.Demo.Features.Validators; - -using Abstractions; -using Configuration; -using Models.Forms; -using Radzen; -using Visus.AddressValidation.Abstractions; -using Visus.AddressValidation.Integration.PitneyBowes; -using Visus.AddressValidation.Integration.PitneyBowes.Http; - -public partial class PitneyBowes : AbstractValidatorComponent -{ - private readonly Dictionary _clientEnvironments = new(StringComparer.OrdinalIgnoreCase) - { - [nameof(ClientEnvironment.DEVELOPMENT)] = ClientEnvironment.DEVELOPMENT, - [nameof(ClientEnvironment.PRODUCTION)] = ClientEnvironment.PRODUCTION - }; - - private readonly PitneyBowesApiSettingsFormModel _settingsFormModel = new(); - - protected override IEnumerable InitializeCountries() - { - return Constants.SupportedCountries; - } - - protected override async Task OnInitializedAsync() - { - await base.OnInitializedAsync(); - - _settingsFormModel.DeveloperId = Configuration.GetValue(Constants.DeveloperIdConfigurationKey); - - string? clientEnvironmentValue = Configuration.GetValue(Constants.ClientEnvironmentConfigurationKey); - if ( !Enum.TryParse(clientEnvironmentValue, out ClientEnvironment clientEnvironment) ) - { - _settingsFormModel.ClientEnvironment = ClientEnvironment.DEVELOPMENT; - } - - _settingsFormModel.ClientEnvironment = clientEnvironment; - _settingsFormModel.ApiKey = Configuration.GetValue(Constants.ApiKeyConfigurationKey); - _settingsFormModel.ApiSecret = Configuration.GetValue(Constants.ApiSecretConfigurationKey); - } - - private async Task OnSettingsFormSubmitAsync() - { - await SettingsLoadingIndicator.ShowAsync(); - - try - { - bool[] results = - [ - await SettingsService.AddOrUpdateAsync(Constants.DeveloperIdConfigurationKey, _settingsFormModel.DeveloperId), - await SettingsService.AddOrUpdateAsync(Constants.ClientEnvironmentConfigurationKey, _settingsFormModel.ClientEnvironment.ToString()), - await SettingsService.AddOrUpdateAsync(Constants.ApiKeyConfigurationKey, _settingsFormModel.ApiKey, true), - await SettingsService.AddOrUpdateAsync(Constants.ApiSecretConfigurationKey, _settingsFormModel.ApiSecret, true) - ]; - - if ( results.All(a => a) ) - { - NotificationService.Notify(NotificationSeverity.Success, "Configuration Updated"); - - // remark: refresh underlying IConfiguration provider for validation services - if ( Configuration is IConfigurationRoot configurationRoot ) - { - IConfigurationProvider? provider = configurationRoot.Providers.FirstOrDefault(f => f is SqliteConfigurationProvider); - provider?.Load(); - } - } - else - { - NotificationService.Notify(NotificationSeverity.Error, "Configuration Update Failed"); - } - } - finally - { - await SettingsLoadingIndicator.HideAsync(); - } - - await InvokeAsync(StateHasChanged); - } -} diff --git a/demo/src/AddressValidation.Demo/Features/Validators/Ups.razor b/demo/src/AddressValidation.Demo/Features/Validators/Ups.razor deleted file mode 100644 index 8539915..0000000 --- a/demo/src/AddressValidation.Demo/Features/Validators/Ups.razor +++ /dev/null @@ -1,242 +0,0 @@ -@page "/validator/ups" -@using AddressValidation.Demo.Models.Forms -@using Visus.AddressValidation.Abstractions -@inherits AddressValidation.Demo.Features.Validators.Abstractions.AbstractValidatorComponent - -UPS Address Validation - -

UPS Address Validation Demo

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @if (Provinces.Count > 0) - { - - } - else - { - - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @RequestJson - - - - - @ResponseJson - - - - - - - diff --git a/demo/src/AddressValidation.Demo/Features/Validators/Ups.razor.cs b/demo/src/AddressValidation.Demo/Features/Validators/Ups.razor.cs deleted file mode 100644 index d45ac91..0000000 --- a/demo/src/AddressValidation.Demo/Features/Validators/Ups.razor.cs +++ /dev/null @@ -1,80 +0,0 @@ -namespace AddressValidation.Demo.Features.Validators; - -using Abstractions; -using Configuration; -using Models.Forms; -using Radzen; -using Visus.AddressValidation.Abstractions; -using Visus.AddressValidation.Integration.Ups; -using Visus.AddressValidation.Integration.Ups.Http; - -public partial class Ups : AbstractValidatorComponent -{ - private readonly Dictionary _clientEnvironments = new(StringComparer.OrdinalIgnoreCase) - { - [nameof(ClientEnvironment.DEVELOPMENT)] = ClientEnvironment.DEVELOPMENT, - [nameof(ClientEnvironment.PRODUCTION)] = ClientEnvironment.PRODUCTION - }; - - private readonly OAuthApiSettingsFormModel _settingsFormModel = new(); - - protected override IEnumerable InitializeCountries() - { - return Constants.SupportedCountries; - } - - protected override async Task OnInitializedAsync() - { - await base.OnInitializedAsync(); - - _settingsFormModel.AccountNumber = Configuration.GetValue(Constants.AccountNumberConfigurationKey); - - string? clientEnvironmentValue = Configuration.GetValue(Constants.ClientEnvironmentConfigurationKey); - if ( !Enum.TryParse(clientEnvironmentValue, out ClientEnvironment clientEnvironment) ) - { - _settingsFormModel.ClientEnvironment = ClientEnvironment.DEVELOPMENT; - } - - _settingsFormModel.ClientEnvironment = clientEnvironment; - _settingsFormModel.ClientId = Configuration.GetValue(Constants.ClientIdConfigurationKey); - _settingsFormModel.ClientSecret = Configuration.GetValue(Constants.ClientSecretConfigurationKey); - } - - private async Task OnSettingsFormSubmitAsync() - { - await SettingsLoadingIndicator.ShowAsync(); - - try - { - bool[] results = - [ - await SettingsService.AddOrUpdateAsync(Constants.AccountNumberConfigurationKey, _settingsFormModel.AccountNumber), - await SettingsService.AddOrUpdateAsync(Constants.ClientEnvironmentConfigurationKey, _settingsFormModel.ClientEnvironment.ToString()), - await SettingsService.AddOrUpdateAsync(Constants.ClientIdConfigurationKey, _settingsFormModel.ClientId, true), - await SettingsService.AddOrUpdateAsync(Constants.ClientSecretConfigurationKey, _settingsFormModel.ClientSecret, true) - ]; - - if ( results.All(a => a) ) - { - NotificationService.Notify(NotificationSeverity.Success, "Configuration Updated"); - - // remark: refresh underlying IConfiguration provider for validation services - if ( Configuration is IConfigurationRoot configurationRoot ) - { - IConfigurationProvider? provider = configurationRoot.Providers.FirstOrDefault(f => f is SqliteConfigurationProvider); - provider?.Load(); - } - } - else - { - NotificationService.Notify(NotificationSeverity.Error, "Configuration Update Failed"); - } - } - finally - { - await SettingsLoadingIndicator.HideAsync(); - } - - await InvokeAsync(StateHasChanged); - } -} diff --git a/demo/src/AddressValidation.Demo/GlobalSupression.cs b/demo/src/AddressValidation.Demo/GlobalSupression.cs deleted file mode 100644 index ade9e36..0000000 --- a/demo/src/AddressValidation.Demo/GlobalSupression.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Diagnostics.CodeAnalysis; - -[assembly: SuppressMessage("Reliability", - "CA2007:Do not directly await a Task", - Justification = "Discouraged for Blazor UI Components", - Scope = "namespaceanddescendants", - Target = "~N:AddressValidation.Demo.Common")] - -[assembly: SuppressMessage("Reliability", - "CA2007:Do not directly await a Task", - Justification = "Discouraged for Blazor UI Components", - Scope = "namespaceanddescendants", - Target = "~N:AddressValidation.Demo.Features")] diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Configuration/CountryConfig.cs b/demo/src/AddressValidation.Demo/Infrastructure/Configuration/CountryConfig.cs deleted file mode 100644 index 9d4470a..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Configuration/CountryConfig.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Configuration; - -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Models.Entities; - -public sealed class CountryConfig : IEntityTypeConfiguration -{ - public void Configure(EntityTypeBuilder builder) - { - ArgumentNullException.ThrowIfNull(builder); - - builder.HasKey(p => p.Id); - - builder.ToTable("countries"); - - builder.Property(p => p.Id).IsRequired(); - builder.Property(p => p.Name).IsRequired().HasMaxLength(100); - builder.Property(p => p.IsoCode).HasColumnName("iso2").IsRequired().HasMaxLength(2); - } -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Configuration/SettingsConfig.cs b/demo/src/AddressValidation.Demo/Infrastructure/Configuration/SettingsConfig.cs deleted file mode 100644 index 26d8575..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Configuration/SettingsConfig.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Configuration; - -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Models.Entities; - -public sealed class SettingsConfig : IEntityTypeConfiguration -{ - public void Configure(EntityTypeBuilder builder) - { - ArgumentNullException.ThrowIfNull(builder); - - builder.HasKey(p => p.Key); - - builder.ToTable("Settings"); - - builder.Property(p => p.Key).ValueGeneratedNever().IsRequired().HasMaxLength(255).IsUnicode(false); - builder.Property(p => p.Value).IsUnicode().HasMaxLength(int.MaxValue); - builder.Property(p => p.IsEncrypted).IsRequired().HasDefaultValue(false); - } -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Configuration/StateConfig.cs b/demo/src/AddressValidation.Demo/Infrastructure/Configuration/StateConfig.cs deleted file mode 100644 index 6fe20c1..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Configuration/StateConfig.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Configuration; - -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Models.Entities; - -public sealed class StateConfig : IEntityTypeConfiguration -{ - public void Configure(EntityTypeBuilder builder) - { - ArgumentNullException.ThrowIfNull(builder); - - builder.HasKey(p => p.Id); - - builder.ToTable("states"); - - builder.Property(p => p.CountryCode).HasColumnName("country_code").IsRequired().HasMaxLength(2); - builder.Property(p => p.Id).IsRequired(); - builder.Property(p => p.Name).IsRequired().HasMaxLength(100); - builder.Property(p => p.IsoCode).HasColumnName("iso2").IsRequired().HasMaxLength(255); - } -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/GeoContext.cs b/demo/src/AddressValidation.Demo/Infrastructure/GeoContext.cs deleted file mode 100644 index ff11384..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/GeoContext.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure; - -using Configuration; -using Microsoft.EntityFrameworkCore; -using Models.Entities; - -public sealed class GeoContext(DbContextOptions options) : DbContext(options) -{ - public DbSet Countries { get; set; } - - public DbSet States { get; set; } - - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - ArgumentNullException.ThrowIfNull(modelBuilder); - - modelBuilder.ApplyConfiguration(new CountryConfig()); - modelBuilder.ApplyConfiguration(new StateConfig()); - } -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/GeoContextFactory.cs b/demo/src/AddressValidation.Demo/Infrastructure/GeoContextFactory.cs deleted file mode 100644 index 653363c..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/GeoContextFactory.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure; - -using Microsoft.EntityFrameworkCore; - -public sealed class GeoContextFactory(ILoggerFactory loggerFactory) : IDbContextFactory -{ - private readonly ILoggerFactory _loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); - - public GeoContext CreateDbContext() - { - DbContextOptionsBuilder options = new(); - - string database = Path.Join(AppDomain.CurrentDomain.GetData("DataDirectory")!.ToString(), "countries+states.db"); - - options.UseSqlite($"Data Source={database}"); - - options.UseLoggerFactory(_loggerFactory); - options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); - - return new GeoContext(options.Options); - } -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/ICountryRepository.cs b/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/ICountryRepository.cs deleted file mode 100644 index 60c52fc..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/ICountryRepository.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Repositories.Abstractions; - -using Models.Entities; - -public interface ICountryRepository : ISqlRepository -{ -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/ISettingsRepository.cs b/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/ISettingsRepository.cs deleted file mode 100644 index cf5e26c..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/ISettingsRepository.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Repositories.Abstractions; - -using Models.Entities; - -public interface ISettingsRepository : ISqlRepository -{ -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/ISqlRepository.cs b/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/ISqlRepository.cs deleted file mode 100644 index 94f0be9..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/ISqlRepository.cs +++ /dev/null @@ -1,48 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Repositories.Abstractions; - -using System.Linq.Expressions; -using Microsoft.EntityFrameworkCore.Query; - -public interface ISqlRepository - where TEntity : class, new() -{ - ValueTask AddAsync(TEntity entity, CancellationToken cancellationToken = default); - - ValueTask AnyAsync(CancellationToken cancellationToken = default); - - ValueTask AnyAsync(Expression> predicate, CancellationToken cancellationToken = default); - - ValueTask CountAsync(CancellationToken cancellationToken = default); - - ValueTask CountAsync(Expression> predicate, CancellationToken cancellationToken = default); - - ValueTask DeleteAsync(TEntity entity, CancellationToken cancellationToken = default); - - ValueTask DeleteAsync(Expression> predicate, CancellationToken cancellationToken = default); - - ValueTask GetAsync(Expression> predicate, CancellationToken cancellationToken = default); - - ValueTask> ListAsync(CancellationToken cancellationToken = default); - - ValueTask> ListAsync(Expression> keySelector, CancellationToken cancellationToken = default); - - ValueTask> ListAsync(Expression> predicate, Expression> keySelector, CancellationToken cancellationToken = default); - - ValueTask> ListAsync(Expression> predicate, CancellationToken cancellationToken = default); - - ValueTask LongCountAsync(CancellationToken cancellationToken = default); - - ValueTask LongCountAsync(Expression> predicate, CancellationToken cancellationToken = default); - - ValueTask MaxAsync(CancellationToken cancellationToken = default); - - ValueTask MaxAsync(Expression> predicate, CancellationToken cancellationToken = default); - - ValueTask MinAsync(CancellationToken cancellationToken = default); - - ValueTask MinAsync(Expression> predicate, CancellationToken cancellationToken = default); - - ValueTask UpdateAsync(TEntity entity, CancellationToken cancellationToken = default); - - ValueTask UpdateAsync(Expression> predicate, Expression, SetPropertyCalls>> statements, CancellationToken cancellationToken = default); -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/IStateRepository.cs b/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/IStateRepository.cs deleted file mode 100644 index 214ca36..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/IStateRepository.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Repositories.Abstractions; - -using Models.Entities; - -public interface IStateRepository : ISqlRepository -{ -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Add.cs b/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Add.cs deleted file mode 100644 index 10f51b1..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Add.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Repositories.Abstractions; - -using System.Runtime.CompilerServices; -using Microsoft.EntityFrameworkCore; - -public abstract partial class SqlRepository - where TEntity : class, new() - where TContext : DbContext -{ - public ValueTask AddAsync(TEntity entity, CancellationToken cancellationToken = default) - { - ArgumentNullException.ThrowIfNull(entity); - - return !HasPrimaryKey - ? ValueTask.FromResult(false) - : AddInternalAsync(entity, cancellationToken); - } - - private async ValueTask AddInternalAsync(TEntity entity, CancellationToken cancellationToken) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - context.Set().Add(entity); - - return await SaveChangesAsync(context, cancellationToken).ConfigureAwait(false); - } -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Any.cs b/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Any.cs deleted file mode 100644 index 419f3df..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Any.cs +++ /dev/null @@ -1,32 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Repositories.Abstractions; - -using System.Linq.Expressions; -using System.Runtime.CompilerServices; -using Microsoft.EntityFrameworkCore; - -public abstract partial class SqlRepository - where TEntity : class, new() - where TContext : DbContext -{ - public async ValueTask AnyAsync(CancellationToken cancellationToken = default) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - return await context.Set().AnyAsync(cancellationToken).ConfigureAwait(false); - } - - public ValueTask AnyAsync(Expression> predicate, CancellationToken cancellationToken = default) - { - ArgumentNullException.ThrowIfNull(predicate); - return AnyInternalAsync(predicate, cancellationToken); - } - - private async ValueTask AnyInternalAsync(Expression> predicate, CancellationToken cancellationToken) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - return await context.Set().Where(predicate).AnyAsync(cancellationToken).ConfigureAwait(false); - } -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Count.cs b/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Count.cs deleted file mode 100644 index f503d17..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Count.cs +++ /dev/null @@ -1,54 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Repositories.Abstractions; - -using System.Linq.Expressions; -using System.Runtime.CompilerServices; -using Microsoft.EntityFrameworkCore; - -public abstract partial class SqlRepository - where TEntity : class, new() - where TContext : DbContext -{ - public async ValueTask CountAsync(CancellationToken cancellationToken = default) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - return await context.Set().CountAsync(cancellationToken).ConfigureAwait(false); - } - - public ValueTask CountAsync(Expression> predicate, CancellationToken cancellationToken = default) - { - ArgumentNullException.ThrowIfNull(predicate); - return CountInternalAsync(predicate, cancellationToken); - } - - public async ValueTask LongCountAsync(CancellationToken cancellationToken = default) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - return await context.Set().LongCountAsync(cancellationToken).ConfigureAwait(false); - } - - public ValueTask LongCountAsync(Expression> predicate, CancellationToken cancellationToken = default) - { - ArgumentNullException.ThrowIfNull(predicate); - return LongCountInternalAsync(predicate, cancellationToken); - } - - private async ValueTask CountInternalAsync(Expression> predicate, CancellationToken cancellationToken) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - return await context.Set().CountAsync(predicate, cancellationToken).ConfigureAwait(false); - } - - private async ValueTask LongCountInternalAsync(Expression> predicate, CancellationToken cancellationToken) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - return await context.Set().LongCountAsync(predicate, cancellationToken).ConfigureAwait(false); - } -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Delete.cs b/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Delete.cs deleted file mode 100644 index 3988cbf..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Delete.cs +++ /dev/null @@ -1,43 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Repositories.Abstractions; - -using System.Linq.Expressions; -using System.Runtime.CompilerServices; -using Microsoft.EntityFrameworkCore; - -public abstract partial class SqlRepository - where TEntity : class, new() - where TContext : DbContext -{ - public ValueTask DeleteAsync(TEntity entity, CancellationToken cancellationToken = default) - { - ArgumentNullException.ThrowIfNull(entity); - - return !HasPrimaryKey - ? ValueTask.FromResult(false) - : DeleteInternalAsync(entity, cancellationToken); - } - - public ValueTask DeleteAsync(Expression> predicate, CancellationToken cancellationToken = default) - { - ArgumentNullException.ThrowIfNull(predicate); - return DeleteInternalAsync(predicate, cancellationToken); - } - - private async ValueTask DeleteInternalAsync(TEntity entity, CancellationToken cancellationToken) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - context.Set().Remove(entity); - - return await SaveChangesAsync(context, cancellationToken).ConfigureAwait(false); - } - - private async ValueTask DeleteInternalAsync(Expression> predicate, CancellationToken cancellationToken) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - return await context.Set().Where(predicate).ExecuteDeleteAsync(cancellationToken).ConfigureAwait(false) >= 0; - } -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Get.cs b/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Get.cs deleted file mode 100644 index b694f10..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Get.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Repositories.Abstractions; - -using System.Linq.Expressions; -using System.Runtime.CompilerServices; -using Microsoft.EntityFrameworkCore; - -public abstract partial class SqlRepository - where TEntity : class, new() - where TContext : DbContext -{ - public ValueTask GetAsync(Expression> predicate, CancellationToken cancellationToken = default) - { - ArgumentNullException.ThrowIfNull(predicate); - return GetInternalAsync(predicate, cancellationToken); - } - - private async ValueTask GetInternalAsync(Expression> predicate, CancellationToken cancellationToken) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - return await context.Set().Where(predicate).FirstOrDefaultAsync(cancellationToken).ConfigureAwait(false); - } -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.List.cs b/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.List.cs deleted file mode 100644 index e99b387..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.List.cs +++ /dev/null @@ -1,65 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Repositories.Abstractions; - -using System.Linq.Expressions; -using System.Runtime.CompilerServices; -using Microsoft.EntityFrameworkCore; - -public abstract partial class SqlRepository - where TEntity : class, new() - where TContext : DbContext -{ - public async ValueTask> ListAsync(CancellationToken cancellationToken = default) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - return await context.Set().ToListAsync(cancellationToken).ConfigureAwait(false); - } - - public ValueTask> ListAsync(Expression> keySelector, CancellationToken cancellationToken = default) - { - ArgumentNullException.ThrowIfNull(nameof(keySelector)); - return ListInternalAsync(keySelector, cancellationToken); - } - - public ValueTask> ListAsync(Expression> predicate, Expression> keySelector, CancellationToken cancellationToken = default) - { - ArgumentNullException.ThrowIfNull(nameof(predicate)); - ArgumentNullException.ThrowIfNull(nameof(keySelector)); - return ListInternalAsync(predicate, keySelector, cancellationToken); - } - - public ValueTask> ListAsync(Expression> predicate, CancellationToken cancellationToken = default) - { - ArgumentNullException.ThrowIfNull(predicate); - return ListInternalAsync(predicate, cancellationToken); - } - - private async ValueTask> ListInternalAsync(Expression> predicate, CancellationToken cancellationToken) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - return await context.Set().Where(predicate).ToListAsync(cancellationToken).ConfigureAwait(false); - } - - private async ValueTask> ListInternalAsync(Expression> keySelector, CancellationToken cancellationToken) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - return await context.Set().Select(keySelector).ToListAsync(cancellationToken).ConfigureAwait(false); - } - - private async ValueTask> ListInternalAsync(Expression> predicate, Expression> keySelector, CancellationToken cancellationToken) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - return await context.Set() - .Where(predicate) - .Select(keySelector) - .ToListAsync(cancellationToken) - .ConfigureAwait(false); - } -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Max.cs b/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Max.cs deleted file mode 100644 index e7169cf..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Max.cs +++ /dev/null @@ -1,32 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Repositories.Abstractions; - -using System.Linq.Expressions; -using System.Runtime.CompilerServices; -using Microsoft.EntityFrameworkCore; - -public abstract partial class SqlRepository - where TEntity : class, new() - where TContext : DbContext -{ - public async ValueTask MaxAsync(CancellationToken cancellationToken = default) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - return await context.Set().MaxAsync(cancellationToken).ConfigureAwait(false); - } - - public ValueTask MaxAsync(Expression> predicate, CancellationToken cancellationToken = default) - { - ArgumentNullException.ThrowIfNull(predicate); - return MaxInternalAsync(predicate, cancellationToken); - } - - private async ValueTask MaxInternalAsync(Expression> predicate, CancellationToken cancellationToken) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - return await context.Set().MaxAsync(predicate, cancellationToken).ConfigureAwait(false); - } -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Min.cs b/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Min.cs deleted file mode 100644 index e6e0816..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Min.cs +++ /dev/null @@ -1,32 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Repositories.Abstractions; - -using System.Linq.Expressions; -using System.Runtime.CompilerServices; -using Microsoft.EntityFrameworkCore; - -public abstract partial class SqlRepository - where TEntity : class, new() - where TContext : DbContext -{ - public async ValueTask MinAsync(CancellationToken cancellationToken = default) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - return await context.Set().MinAsync(cancellationToken).ConfigureAwait(false); - } - - public ValueTask MinAsync(Expression> predicate, CancellationToken cancellationToken = default) - { - ArgumentNullException.ThrowIfNull(predicate); - return MinInternalAsync(predicate, cancellationToken); - } - - private async ValueTask MinInternalAsync(Expression> predicate, CancellationToken cancellationToken) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - return await context.Set().MinAsync(predicate, cancellationToken).ConfigureAwait(false); - } -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Update.cs b/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Update.cs deleted file mode 100644 index c5f736d..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.Update.cs +++ /dev/null @@ -1,44 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Repositories.Abstractions; - -using System.Linq.Expressions; -using System.Runtime.CompilerServices; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Query; - -public abstract partial class SqlRepository - where TEntity : class, new() - where TContext : DbContext -{ - public ValueTask UpdateAsync(TEntity entity, CancellationToken cancellationToken = default) - { - ArgumentNullException.ThrowIfNull(entity); - - return !HasPrimaryKey - ? ValueTask.FromResult(false) - : UpdateInternalAsync(entity, cancellationToken); - } - - public ValueTask UpdateAsync(Expression> predicate, Expression, SetPropertyCalls>> statements, CancellationToken cancellationToken = default) - { - ArgumentNullException.ThrowIfNull(predicate); - return UpdateInternalAsync(predicate, statements, cancellationToken); - } - - private async ValueTask UpdateInternalAsync(TEntity entity, CancellationToken cancellationToken) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - context.Set().Update(entity); - - return await SaveChangesAsync(context, cancellationToken).ConfigureAwait(false); - } - - private async ValueTask UpdateInternalAsync(Expression> predicate, Expression, SetPropertyCalls>> statements, CancellationToken cancellationToken) - { - TContext context = await _contextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); - await using ConfiguredAsyncDisposable _ = context.ConfigureAwait(false); - - return await context.Set().Where(predicate).ExecuteUpdateAsync(statements, cancellationToken).ConfigureAwait(false) >= 0; - } -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.cs b/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.cs deleted file mode 100644 index 32032bb..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/Abstractions/SqlRepository.cs +++ /dev/null @@ -1,109 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Repositories.Abstractions; - -using System.Diagnostics.CodeAnalysis; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata; - -public abstract partial class SqlRepository : ISqlRepository - where TEntity : class, new() - where TContext : DbContext -{ - [SuppressMessage("ReSharper", "StaticMemberInGenericType")] - private static readonly Action LogDbUpdateException = - LoggerMessage.Define(LogLevel.Error, - new EventId(2203, nameof(SaveChangesAsync)), - "{Message}: {@Exception}"); - - private readonly Lazy> _columns; - - private readonly IDbContextFactory _contextFactory; - - private readonly ILogger> _logger; - - private readonly Lazy> _primaryKeys; - - private readonly Lazy _schemaName; - - private readonly Lazy _tableName; - - protected SqlRepository(IDbContextFactory contextFactory, ILogger> logger) - { - _contextFactory = contextFactory ?? throw new ArgumentNullException(nameof(contextFactory)); - _logger = logger ?? throw new ArgumentNullException(nameof(logger)); - - // note: must be initialized first - _schemaName = new Lazy(GetEntitySchemaName); - _tableName = new Lazy(GetEntityTableName); - - _columns = new Lazy>(GetEntityColumns); - _primaryKeys = new Lazy>(GetEntityPrimaryKeys); - } - - protected IReadOnlyDictionary Columns => _columns.Value; - - [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] - protected bool HasPrimaryKey => _primaryKeys.Value.Any(); - - protected IReadOnlyList PrimaryKeys => _primaryKeys.Value; - - protected string? SchemaName => _schemaName.Value; - - protected string? TableName => _tableName.Value; - - [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] - protected async ValueTask SaveChangesAsync(TContext context, CancellationToken cancellationToken = default) - { - ArgumentNullException.ThrowIfNull(context); - - try - { - bool result = await context.SaveChangesAsync(cancellationToken).ConfigureAwait(false) > 0; - - // Note: intentional as we are working in a 'disconnected' state. - context.ChangeTracker.Clear(); - - return result; - } - catch ( DbUpdateException e ) - { - LogDbUpdateException(_logger, e, e.Message, null); - } - - return false; - } - - private Dictionary GetEntityColumns() - { - if ( string.IsNullOrWhiteSpace(_tableName.Value) ) - { - return new Dictionary(); - } - - StoreObjectIdentifier storeObjectIdentifier = StoreObjectIdentifier.Table(_tableName.Value, _schemaName.Value); - - using TContext context = _contextFactory.CreateDbContext(); - - return context.Model.FindEntityType(typeof(TEntity))?.GetProperties() - .Where(w => string.IsNullOrWhiteSpace(w.GetComputedColumnSql(storeObjectIdentifier)) && - ( w.ValueGenerated & ValueGenerated.OnAddOrUpdate ) != ValueGenerated.OnAddOrUpdate) - .ToDictionary(d => d.Name, d => d.GetColumnName(storeObjectIdentifier)) ?? new Dictionary(); - } - - private IReadOnlyList GetEntityPrimaryKeys() - { - using TContext context = _contextFactory.CreateDbContext(); - return context.Model.FindEntityType(typeof(TEntity))?.FindPrimaryKey()?.Properties ?? new List().AsReadOnly(); - } - - private string? GetEntitySchemaName() - { - using TContext context = _contextFactory.CreateDbContext(); - return context.Model.FindEntityType(typeof(TEntity))?.GetSchema(); - } - - private string? GetEntityTableName() - { - using TContext context = _contextFactory.CreateDbContext(); - return context.Model.FindEntityType(typeof(TEntity))?.GetTableName(); - } -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/CountryRepository.cs b/demo/src/AddressValidation.Demo/Infrastructure/Repositories/CountryRepository.cs deleted file mode 100644 index c8ac3cc..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/CountryRepository.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Repositories; - -using Abstractions; -using Microsoft.EntityFrameworkCore; -using Models.Entities; - -public sealed class CountryRepository(IDbContextFactory contextFactory, ILogger logger) - : SqlRepository(contextFactory, logger), ICountryRepository; diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/SettingsRepository.cs b/demo/src/AddressValidation.Demo/Infrastructure/Repositories/SettingsRepository.cs deleted file mode 100644 index e22aceb..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/SettingsRepository.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Repositories; - -using Abstractions; -using Microsoft.EntityFrameworkCore; -using Models.Entities; - -public sealed class SettingsRepository( - IDbContextFactory contextFactory, - ILogger logger) : SqlRepository(contextFactory, logger), ISettingsRepository -{ - private readonly IDbContextFactory _contextFactory = contextFactory ?? throw new ArgumentNullException(nameof(contextFactory)); - - public IReadOnlyList List() - { - using SettingsContext context = _contextFactory.CreateDbContext(); - return context.Set().ToList().AsReadOnly(); - } -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/StateRepository.cs b/demo/src/AddressValidation.Demo/Infrastructure/Repositories/StateRepository.cs deleted file mode 100644 index a0c8b64..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/Repositories/StateRepository.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure.Repositories; - -using Abstractions; -using Microsoft.EntityFrameworkCore; -using Models.Entities; - -public sealed class StateRepository(IDbContextFactory contextFactory, ILogger> logger) - : SqlRepository(contextFactory, logger), IStateRepository; diff --git a/demo/src/AddressValidation.Demo/Infrastructure/SettingsContext.cs b/demo/src/AddressValidation.Demo/Infrastructure/SettingsContext.cs deleted file mode 100644 index e9cff42..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/SettingsContext.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure; - -using Configuration; -using Microsoft.EntityFrameworkCore; -using Models.Entities; - -public sealed class SettingsContext(DbContextOptions options) : DbContext(options) -{ - public DbSet Config { get; set; } - - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - ArgumentNullException.ThrowIfNull(modelBuilder); - - modelBuilder.ApplyConfiguration(new SettingsConfig()); - } -} diff --git a/demo/src/AddressValidation.Demo/Infrastructure/SettingsContextFactory.cs b/demo/src/AddressValidation.Demo/Infrastructure/SettingsContextFactory.cs deleted file mode 100644 index d6455b4..0000000 --- a/demo/src/AddressValidation.Demo/Infrastructure/SettingsContextFactory.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace AddressValidation.Demo.Infrastructure; - -using Microsoft.EntityFrameworkCore; - -public sealed class SettingsContextFactory(ILoggerFactory loggerFactory) : IDbContextFactory -{ - private readonly ILoggerFactory _loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); - - public SettingsContext CreateDbContext() - { - DbContextOptionsBuilder options = new(); - - string database = Path.Join(AppDomain.CurrentDomain.GetData("DataDirectory")!.ToString(), "settings.db"); - - options.UseSqlite($"Data Source={database}"); - - options.UseLoggerFactory(_loggerFactory); - options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); - - return new SettingsContext(options.Options); - } -} diff --git a/demo/src/AddressValidation.Demo/Models/Entities/CountryModel.cs b/demo/src/AddressValidation.Demo/Models/Entities/CountryModel.cs deleted file mode 100644 index 7d11b6b..0000000 --- a/demo/src/AddressValidation.Demo/Models/Entities/CountryModel.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace AddressValidation.Demo.Models.Entities; - -public sealed class CountryModel -{ - public int Id { get; set; } - - public string IsoCode { get; set; } = null!; - - public string Name { get; set; } = null!; -} diff --git a/demo/src/AddressValidation.Demo/Models/Entities/SettingsModel.cs b/demo/src/AddressValidation.Demo/Models/Entities/SettingsModel.cs deleted file mode 100644 index c9cc1f0..0000000 --- a/demo/src/AddressValidation.Demo/Models/Entities/SettingsModel.cs +++ /dev/null @@ -1,17 +0,0 @@ -#nullable disable - -namespace AddressValidation.Demo.Models.Entities; - -using System.ComponentModel.DataAnnotations.Schema; - -public class SettingsModel -{ - [Column(Order = 2)] - public bool IsEncrypted { get; set; } - - [Column(Order = 0)] - public string Key { get; set; } - - [Column(Order = 1)] - public string Value { get; set; } -} diff --git a/demo/src/AddressValidation.Demo/Models/Entities/StateModel.cs b/demo/src/AddressValidation.Demo/Models/Entities/StateModel.cs deleted file mode 100644 index e7ad470..0000000 --- a/demo/src/AddressValidation.Demo/Models/Entities/StateModel.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace AddressValidation.Demo.Models.Entities; - -public sealed class StateModel -{ - public string CountryCode { get; set; } = null!; - - public int Id { get; set; } - - public string IsoCode { get; set; } = null!; - - public string Name { get; set; } = null!; - - public string? Type { get; set; } -} diff --git a/demo/src/AddressValidation.Demo/Models/Forms/Abstractions/AbstractAddressValidationFormModel.cs b/demo/src/AddressValidation.Demo/Models/Forms/Abstractions/AbstractAddressValidationFormModel.cs deleted file mode 100644 index 35f4fa1..0000000 --- a/demo/src/AddressValidation.Demo/Models/Forms/Abstractions/AbstractAddressValidationFormModel.cs +++ /dev/null @@ -1,101 +0,0 @@ -namespace AddressValidation.Demo.Models.Forms.Abstractions; - -using System.Text.Json; -using Visus.AddressValidation.Abstractions; -using Visus.AddressValidation.Http; - -public abstract class AbstractAddressValidationFormModel - where TRequest : AbstractAddressValidationRequest, new() -{ - private readonly Dictionary _addressLines = new() - { - { 0, null }, - { 1, null } - }; - - private readonly JsonSerializerOptions _serializerOptions = new() - { - WriteIndented = true - }; - - public TRequest Request { get; } = new(); - - public string? AddressLine1 - { - get => _addressLines[0]; - set - { - _addressLines[0] = value; - UpdateAddressLines(); - } - } - - public string? AddressLine2 - { - get => _addressLines[1]; - set - { - _addressLines[1] = value; - UpdateAddressLines(); - } - } - - public string? CityOrTown - { - get => Request.CityOrTown; - set => Request.CityOrTown = value; - } - - public string? Country - { - get => Request.Country.ToString(); - set - { - if ( string.IsNullOrWhiteSpace(value) ) - { - Request.Country = null; - return; - } - - if ( Enum.TryParse(value, true, out CountryCode result) ) - { - Request.Country = result; - return; - } - - Request.Country = null; - } - } - - public string? PostalCode - { - get => Request.PostalCode; - set => Request.PostalCode = value; - } - - public string? StateOrProvince - { - get => Request.StateOrProvince; - set => Request.StateOrProvince = value; - } - - public string ToJson() - { - return JsonSerializer.Serialize(Request, _serializerOptions); - } - - private void UpdateAddressLines() - { - Request.AddressLines.Clear(); - - foreach ( ( int _, string? value ) in _addressLines.OrderBy(o => o.Key) ) - { - if ( string.IsNullOrWhiteSpace(value) ) - { - continue; - } - - Request.AddressLines.Add(value); - } - } -} diff --git a/demo/src/AddressValidation.Demo/Models/Forms/FedExAddressValidationFormModel.cs b/demo/src/AddressValidation.Demo/Models/Forms/FedExAddressValidationFormModel.cs deleted file mode 100644 index 433fc59..0000000 --- a/demo/src/AddressValidation.Demo/Models/Forms/FedExAddressValidationFormModel.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace AddressValidation.Demo.Models.Forms; - -using Abstractions; -using Visus.AddressValidation.Integration.FedEx.Http; - -public sealed class FedExAddressValidationFormModel : AbstractAddressValidationFormModel; diff --git a/demo/src/AddressValidation.Demo/Models/Forms/GoogleAddressValidationFormModel.cs b/demo/src/AddressValidation.Demo/Models/Forms/GoogleAddressValidationFormModel.cs deleted file mode 100644 index c8616c8..0000000 --- a/demo/src/AddressValidation.Demo/Models/Forms/GoogleAddressValidationFormModel.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace AddressValidation.Demo.Models.Forms; - -using Abstractions; -using Visus.AddressValidation.Integration.Google.Http; - -public sealed class GoogleAddressValidationFormModel : AbstractAddressValidationFormModel; diff --git a/demo/src/AddressValidation.Demo/Models/Forms/GoogleApiSettingsFormModel.cs b/demo/src/AddressValidation.Demo/Models/Forms/GoogleApiSettingsFormModel.cs deleted file mode 100644 index 65b8b1c..0000000 --- a/demo/src/AddressValidation.Demo/Models/Forms/GoogleApiSettingsFormModel.cs +++ /dev/null @@ -1,30 +0,0 @@ -namespace AddressValidation.Demo.Models.Forms; - -public sealed class GoogleApiSettingsFormModel -{ - private string? _privateKey; - - public string? PrivateKey - { - get => _privateKey; - set - { - if ( string.IsNullOrWhiteSpace(value) ) - { - _privateKey = null; - return; - } - - if ( value.Contains("\\n", StringComparison.OrdinalIgnoreCase) ) - { - value = value.Replace("\\n", Environment.NewLine, StringComparison.OrdinalIgnoreCase); - } - - _privateKey = value; - } - } - - public string? ProjectId { get; set; } - - public string? ServiceAccountEmailAddress { get; set; } -} diff --git a/demo/src/AddressValidation.Demo/Models/Forms/OAuthApiSettingsFormModel.cs b/demo/src/AddressValidation.Demo/Models/Forms/OAuthApiSettingsFormModel.cs deleted file mode 100644 index d659016..0000000 --- a/demo/src/AddressValidation.Demo/Models/Forms/OAuthApiSettingsFormModel.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace AddressValidation.Demo.Models.Forms; - -using Visus.AddressValidation.Abstractions; - -public class OAuthApiSettingsFormModel -{ - public string? AccountNumber { get; set; } - - public ClientEnvironment ClientEnvironment { get; set; } = ClientEnvironment.DEVELOPMENT; - - public string? ClientId { get; set; } - - public string? ClientSecret { get; set; } -} diff --git a/demo/src/AddressValidation.Demo/Models/Forms/PitneyBowesAddressValidationFormModel.cs b/demo/src/AddressValidation.Demo/Models/Forms/PitneyBowesAddressValidationFormModel.cs deleted file mode 100644 index f7b24f5..0000000 --- a/demo/src/AddressValidation.Demo/Models/Forms/PitneyBowesAddressValidationFormModel.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace AddressValidation.Demo.Models.Forms; - -using Abstractions; -using Visus.AddressValidation.Integration.PitneyBowes.Http; - -public sealed class PitneyBowesAddressValidationFormModel : AbstractAddressValidationFormModel -{ - public bool IncludeSuggestions - { - get => Request.IncludeSuggestions; - set => Request.IncludeSuggestions = value; - } -} diff --git a/demo/src/AddressValidation.Demo/Models/Forms/PitneyBowesApiSettingsFormModel.cs b/demo/src/AddressValidation.Demo/Models/Forms/PitneyBowesApiSettingsFormModel.cs deleted file mode 100644 index 15b99a5..0000000 --- a/demo/src/AddressValidation.Demo/Models/Forms/PitneyBowesApiSettingsFormModel.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace AddressValidation.Demo.Models.Forms; - -using Visus.AddressValidation.Abstractions; - -public class PitneyBowesApiSettingsFormModel -{ - public string? ApiKey { get; set; } - - public string? ApiSecret { get; set; } - - public ClientEnvironment ClientEnvironment { get; set; } = ClientEnvironment.DEVELOPMENT; - - public string? DeveloperId { get; set; } -} diff --git a/demo/src/AddressValidation.Demo/Models/Forms/UpsAddressValidationFormModel.cs b/demo/src/AddressValidation.Demo/Models/Forms/UpsAddressValidationFormModel.cs deleted file mode 100644 index d14d9c6..0000000 --- a/demo/src/AddressValidation.Demo/Models/Forms/UpsAddressValidationFormModel.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace AddressValidation.Demo.Models.Forms; - -using Abstractions; -using Visus.AddressValidation.Integration.Ups.Http; - -public sealed class UpsAddressValidationFormModel : AbstractAddressValidationFormModel; diff --git a/demo/src/AddressValidation.Demo/Program.cs b/demo/src/AddressValidation.Demo/Program.cs deleted file mode 100644 index 7b28983..0000000 --- a/demo/src/AddressValidation.Demo/Program.cs +++ /dev/null @@ -1,111 +0,0 @@ -namespace AddressValidation.Demo; - -using System.Diagnostics.CodeAnalysis; -using System.Globalization; -using Extensions; -using Infrastructure; -using Infrastructure.Repositories; -using Infrastructure.Repositories.Abstractions; -using Microsoft.AspNetCore.DataProtection; -using Microsoft.EntityFrameworkCore; -using Radzen; -using Serilog; -using Serilog.Events; -using Serilog.Sinks.SystemConsole.Themes; -using Services; -using Services.Abstractions; -using Visus.AddressValidation.Integration.FedEx.Extensions; -using Visus.AddressValidation.Integration.Google.Extensions; -using Visus.AddressValidation.Integration.PitneyBowes.Extensions; -using Visus.AddressValidation.Integration.Ups.Extensions; - -[SuppressMessage("Reliability", "CA2007:Consider calling ConfigureAwait on the awaited task")] -[SuppressMessage("Design", "CA1031:Do not catch general exception types")] -internal static class Program -{ - public static async Task Main(string[] args) - { - Log.Logger = new LoggerConfiguration() - .MinimumLevel.Debug() - .MinimumLevel.Override("Microsoft", LogEventLevel.Information) - .Enrich.FromLogContext() - .Enrich.WithThreadId() - .Enrich.WithMachineName() - .WriteTo.Console(formatProvider: CultureInfo.InvariantCulture, theme: AnsiConsoleTheme.Code) - .WriteTo.ApplicationInsights(TelemetryConverter.Traces) - .CreateBootstrapLogger(); - - try - { - WebApplicationBuilder builder = WebApplication.CreateBuilder(args); - - AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(builder.Environment.ContentRootPath, "Data")); - - builder.Configuration.AddSqlite(); - - builder.Services.AddDataProtection() - .SetApplicationName("AddressValidation.Demo") - .PersistKeysToFileSystem(new DirectoryInfo(Path.Combine(builder.Environment.ContentRootPath, "Data", "Keys"))); - - builder.Services.AddApplicationInsightsTelemetry(); - - builder.Services.AddDbContextFactory(); - builder.Services.AddDbContextFactory(); - - builder.Services.AddRadzenComponents(); - builder.Services.AddRazorComponents().AddInteractiveServerComponents(); - - builder.Services.AddScoped(); - builder.Services.AddScoped(); - builder.Services.AddScoped(); - - builder.Services.AddDistributedMemoryCache(); - - builder.Services.AddFedExAddressValidation(); - builder.Services.AddGoogleAddressValidation(); - builder.Services.AddPitneyBowesAddressValidation(); - builder.Services.AddUpsAddressValidation(); - - builder.Services.AddTransient(); - builder.Services.AddScoped(); - builder.Services.AddTransient(); - - builder.Services.AddSerilog(); - - WebApplication app = builder.Build(); - - if ( !app.Environment.IsDevelopment() ) - { - app.UseExceptionHandler("/Error"); - app.UseHsts(); - } - - app.UseHttpsRedirection(); - - app.UseStaticFiles(); - app.UseAntiforgery(); - - app.MapRazorComponents().AddInteractiveServerRenderMode(); - - using ( IServiceScope scope = app.Services.CreateScope() ) - { - IDbContextFactory contextFactory = scope.ServiceProvider.GetRequiredService>(); - - await using SettingsContext dbContext = await contextFactory.CreateDbContextAsync(); - await dbContext.Database.EnsureCreatedAsync(); - } - - await app.RunAsync(); - } - catch ( Exception e ) - { - Log.Fatal(e, "Host terminated unexpectedly."); - Environment.ExitCode = 1; - } - finally - { - await Task.Delay(1000); - await Log.CloseAndFlushAsync(); - } - } -} diff --git a/demo/src/AddressValidation.Demo/Properties/launchSettings.json b/demo/src/AddressValidation.Demo/Properties/launchSettings.json deleted file mode 100644 index 8c823c8..0000000 --- a/demo/src/AddressValidation.Demo/Properties/launchSettings.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "$schema": "http://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:56591", - "sslPort": 44300 - } - }, - "profiles": { - "generators": { - "commandName": "DebugRoslynComponent", - "targetProject": "../AddressValidation.Demo/AddressValidation.Demo.csproj", - "dotnetRunMessages": true, - "launchBrowser": true, - "applicationUrl": "https://localhost:7074;http://localhost:5030", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "http": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "applicationUrl": "http://localhost:5030", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "https": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "applicationUrl": "https://localhost:7074;http://localhost:5030", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} diff --git a/demo/src/AddressValidation.Demo/Routes.razor b/demo/src/AddressValidation.Demo/Routes.razor deleted file mode 100644 index 6e5be68..0000000 --- a/demo/src/AddressValidation.Demo/Routes.razor +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/demo/src/AddressValidation.Demo/Services/Abstractions/IGeographyService.cs b/demo/src/AddressValidation.Demo/Services/Abstractions/IGeographyService.cs deleted file mode 100644 index 8e1726c..0000000 --- a/demo/src/AddressValidation.Demo/Services/Abstractions/IGeographyService.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace AddressValidation.Demo.Services.Abstractions; - -using Visus.AddressValidation.Abstractions; - -public interface IGeographyService -{ - ValueTask> ListAutonomousCitiesAsync(string countryCode); - - ValueTask> ListCountriesAsDictionaryAsync(params CountryCode[] countryCodes); - - ValueTask> ListProvincesAsDictionaryAsync(string countryCode); -} diff --git a/demo/src/AddressValidation.Demo/Services/Abstractions/ILoadingIndicatorService.cs b/demo/src/AddressValidation.Demo/Services/Abstractions/ILoadingIndicatorService.cs deleted file mode 100644 index 387c988..0000000 --- a/demo/src/AddressValidation.Demo/Services/Abstractions/ILoadingIndicatorService.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace AddressValidation.Demo.Services.Abstractions; - -using Common.Components; - -public interface ILoadingIndicatorService -{ - bool? IsLoading { get; } - - bool? IsVisible { get; } - - Task HideAsync(); - - Task SetIsLoadingAsync(bool value); - - Task ShowAsync(); - - public void Subscribe(LoadingIndicator loadIndicator); - - public void Unsubscribe(LoadingIndicator loadIndicator); -} diff --git a/demo/src/AddressValidation.Demo/Services/Abstractions/ISettingsService.cs b/demo/src/AddressValidation.Demo/Services/Abstractions/ISettingsService.cs deleted file mode 100644 index 4898e3c..0000000 --- a/demo/src/AddressValidation.Demo/Services/Abstractions/ISettingsService.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace AddressValidation.Demo.Services.Abstractions; - -public interface ISettingsService -{ - ValueTask AddOrUpdateAsync(string key, string? value, bool encrypt = false, CancellationToken cancellationToken = default); -} diff --git a/demo/src/AddressValidation.Demo/Services/GeographyService.cs b/demo/src/AddressValidation.Demo/Services/GeographyService.cs deleted file mode 100644 index fa1dc7e..0000000 --- a/demo/src/AddressValidation.Demo/Services/GeographyService.cs +++ /dev/null @@ -1,173 +0,0 @@ -namespace AddressValidation.Demo.Services; - -using System.Security.Cryptography; -using System.Text; -using System.Text.Json; -using Abstractions; -using Infrastructure.Repositories.Abstractions; -using Microsoft.Extensions.Caching.Distributed; -using Models.Entities; -using Visus.AddressValidation.Abstractions; - -public sealed class GeographyService( - IDistributedCache cache, - ICountryRepository countryRepository, - IStateRepository stateRepository) : IGeographyService -{ - private readonly IDistributedCache _cache = cache ?? throw new ArgumentNullException(nameof(cache)); - - private readonly ICountryRepository _countryRepository = countryRepository ?? throw new ArgumentNullException(nameof(countryRepository)); - - private readonly IStateRepository _stateRepository = stateRepository ?? throw new ArgumentNullException(nameof(stateRepository)); - - private readonly HashSet autonomousTypes = - [ - "autonomous region", - "city" - ]; - - public ValueTask> ListAutonomousCitiesAsync(string countryCode) - { - ArgumentException.ThrowIfNullOrWhiteSpace(countryCode); - return ListAutonomousCitiesInternalAsync(countryCode); - } - - public ValueTask> ListCountriesAsDictionaryAsync(params CountryCode[] countryCodes) - { - ArgumentNullException.ThrowIfNull(countryCodes); - return ListCountriesAsDictionaryInternalAsync(countryCodes); - } - - public ValueTask> ListProvincesAsDictionaryAsync(string countryCode) - { - if ( !Enum.TryParse(countryCode, true, out CountryCode _) ) - { - throw new ArgumentException($"'{countryCode}' is not a valid country code.", nameof(countryCode)); - } - - return ListProvincesAsDictionaryInternalAsync(countryCode); - } - - private static async ValueTask GenerateCacheKeyAsync(string prefix, IReadOnlySet values) - { - using SHA256 sha = SHA256.Create(); - - byte[] checksum = await sha.ComputeHashAsync(Stream.Null).ConfigureAwait(false); - if ( values.Count == 0 ) - { - return prefix + "_" + BitConverter.ToString(checksum).Replace("-", string.Empty, StringComparison.OrdinalIgnoreCase); - } - - string content = string.Join(";", values); - using MemoryStream stream = new(Encoding.UTF8.GetBytes(content)); - - checksum = await sha.ComputeHashAsync(stream).ConfigureAwait(false); - - return prefix + "_" + BitConverter.ToString(checksum).Replace("-", string.Empty, StringComparison.OrdinalIgnoreCase); - } - - private async ValueTask> ListAutonomousCitiesInternalAsync(string countryCode) - { - string cacheKey = await GenerateCacheKeyAsync($"autonomous_cities_{countryCode}", new HashSet - { - countryCode - }).ConfigureAwait(false); - - string? response = await _cache.GetStringAsync(cacheKey).ConfigureAwait(false); - if ( !string.IsNullOrWhiteSpace(response) ) - { - return JsonSerializer.Deserialize>(response)!; - } - - IReadOnlyList results = await _stateRepository.ListAsync(l => l.CountryCode == countryCode - && autonomousTypes.Contains(l.Type!), - l => l.Name).ConfigureAwait(false); - - HashSet set = [.. results]; - - await _cache.SetStringAsync(cacheKey, - JsonSerializer.Serialize(set), - new DistributedCacheEntryOptions - { - AbsoluteExpirationRelativeToNow = TimeSpan.FromDays(1) - } - ).ConfigureAwait(false); - - return set; - } - - private async ValueTask> ListCountriesAsDictionaryInternalAsync(params CountryCode[] supportedCountryCodes) - { - HashSet countryCodes = new(StringComparer.OrdinalIgnoreCase); - if ( supportedCountryCodes.Length > 0 ) - { - foreach ( CountryCode countryCode in supportedCountryCodes ) - { - countryCodes.Add(countryCode.ToString()); - } - } - - string cacheKey = await GenerateCacheKeyAsync("countries", countryCodes).ConfigureAwait(false); - - string? response = await _cache.GetStringAsync(cacheKey).ConfigureAwait(false); - if ( !string.IsNullOrWhiteSpace(response) ) - { - return JsonSerializer.Deserialize>(response)!; - } - - IReadOnlyList results; - if ( countryCodes.Count == 0 ) - { - results = await _countryRepository.ListAsync().ConfigureAwait(false); - } - else - { - results = await _countryRepository.ListAsync(l => countryCodes.Contains(l.IsoCode)).ConfigureAwait(false); - } - - Dictionary dict = results.OrderBy(o => o.Name) - .ToDictionary(country => country.IsoCode, - country => country.Name, - StringComparer.OrdinalIgnoreCase); - - await _cache.SetStringAsync(cacheKey, - JsonSerializer.Serialize(dict), - new DistributedCacheEntryOptions - { - AbsoluteExpirationRelativeToNow = TimeSpan.FromDays(1) - }).ConfigureAwait(false); - - return dict; - } - - private async ValueTask> ListProvincesAsDictionaryInternalAsync(string countryCode) - { - string cacheKey = await GenerateCacheKeyAsync("provinces", new HashSet - { - countryCode - }).ConfigureAwait(false); - - string? response = await _cache.GetStringAsync(cacheKey).ConfigureAwait(false); - if ( !string.IsNullOrWhiteSpace(response) ) - { - return JsonSerializer.Deserialize>(response)!; - } - - IReadOnlyList results = await _stateRepository.ListAsync(l => l.CountryCode == countryCode) - .ConfigureAwait(false); - - Dictionary dict = results.OrderBy(o => o.Name) - .ToDictionary(state => state.IsoCode, - state => state.Name, - StringComparer.OrdinalIgnoreCase); - - await _cache.SetStringAsync(cacheKey, - JsonSerializer.Serialize(dict), - new DistributedCacheEntryOptions - { - AbsoluteExpirationRelativeToNow = TimeSpan.FromDays(1) - }).ConfigureAwait(false); - - return dict; - } -} diff --git a/demo/src/AddressValidation.Demo/Services/LoadingIndicatorService.cs b/demo/src/AddressValidation.Demo/Services/LoadingIndicatorService.cs deleted file mode 100644 index b603ceb..0000000 --- a/demo/src/AddressValidation.Demo/Services/LoadingIndicatorService.cs +++ /dev/null @@ -1,148 +0,0 @@ -namespace AddressValidation.Demo.Services; - -using System.Collections.Concurrent; -using Abstractions; -using Common.Components; - -public sealed class LoadingIndicatorService : ILoadingIndicatorService -{ - private readonly ConcurrentDictionary _indicators = new(); - - private Func _isLoading = null!; - - private Func _isVisible = null!; - - private Func _setIsLoading = null!; - - private Func _setIsVisible = null!; - - public LoadingIndicatorService() - { - MultipleInstanceMode(); - } - - public bool? IsLoading => _isLoading(); - - public bool? IsVisible => _isVisible(); - - public Task HideAsync() - { - return _setIsVisible(true); - } - - public Task SetIsLoadingAsync(bool value) - { - return _setIsLoading(value); - } - - public Task ShowAsync() - { - return _setIsVisible(false); - } - - private bool? GetIsLoadingMultiple() - { - bool? result = null; - foreach ( LoadingIndicator indicator in _indicators.Keys ) - { - switch ( result ) - { - case null: - result = indicator.IsLoading; - break; - default: - { - if ( result != indicator.IsLoading ) - { - return null; - } - - break; - } - } - } - - return result; - } - - private bool? GetIsVisibleMultiple() - { - bool? result = null; - foreach ( LoadingIndicator indicator in _indicators.Keys ) - { - switch ( result ) - { - case null: - result = indicator.IsVisible; - break; - default: - { - if ( result != indicator.IsVisible ) - { - return null; - } - - break; - } - } - } - - return result; - } - - private void MultipleInstanceMode() - { - _isLoading = GetIsLoadingMultiple; - _isVisible = GetIsVisibleMultiple; - _setIsLoading = SetIsLoadingMultipleAsync; - _setIsVisible = SetIsVisibleMultipleAsync; - } - - private Task SetIsLoadingMultipleAsync(bool value) - { - List tasks = new(_indicators.Count); - tasks.AddRange(_indicators.Keys.Select(indicator => indicator.SetIsLoading(value))); - - return Task.WhenAll(tasks); - } - - private Task SetIsVisibleMultipleAsync(bool value) - { - List tasks = new(_indicators.Count); - tasks.AddRange(_indicators.Keys.Select(indicator => indicator.SetIsVisible(value))); - - return Task.WhenAll(tasks); - } - - private void SingleInstanceMode(LoadingIndicator loadIndicator) - { - _isLoading = () => loadIndicator.IsLoading; - _isVisible = () => loadIndicator.IsVisible; - } - - void ILoadingIndicatorService.Subscribe(LoadingIndicator loadIndicator) - { - _indicators.TryAdd(loadIndicator, 0); - if ( _indicators.Count == 1 ) - { - SingleInstanceMode(loadIndicator); - } - else - { - MultipleInstanceMode(); - } - } - - void ILoadingIndicatorService.Unsubscribe(LoadingIndicator loadIndicator) - { - _indicators.TryRemove(loadIndicator, out _); - if ( _indicators.Count == 1 ) - { - SingleInstanceMode(loadIndicator); - } - else - { - MultipleInstanceMode(); - } - } -} diff --git a/demo/src/AddressValidation.Demo/Services/SettingsService.cs b/demo/src/AddressValidation.Demo/Services/SettingsService.cs deleted file mode 100644 index e2b16b4..0000000 --- a/demo/src/AddressValidation.Demo/Services/SettingsService.cs +++ /dev/null @@ -1,53 +0,0 @@ -namespace AddressValidation.Demo.Services; - -using Abstractions; -using Infrastructure.Repositories.Abstractions; -using Microsoft.AspNetCore.DataProtection; -using Models.Entities; - -public sealed class SettingsService( - IDataProtectionProvider dataProtectionProvider, - ISettingsRepository settingsRepository) : ISettingsService -{ - private readonly IDataProtectionProvider _dataProtectionProvider = dataProtectionProvider ?? throw new ArgumentNullException(nameof(dataProtectionProvider)); - - private readonly ISettingsRepository _settingsRepository = settingsRepository ?? throw new ArgumentNullException(nameof(settingsRepository)); - - public ValueTask AddOrUpdateAsync(string key, string? value, bool encrypt = false, CancellationToken cancellationToken = default) - { - ArgumentException.ThrowIfNullOrWhiteSpace(key); - return AddOrUpdateInternalAsync(key, value, encrypt, cancellationToken); - } - - private async ValueTask AddOrUpdateInternalAsync(string key, string? value, bool encrypt, CancellationToken cancellationToken) - { - if ( !string.IsNullOrWhiteSpace(value) && encrypt ) - { - IDataProtector protector = _dataProtectionProvider.CreateProtector("AddressValidation.Demo.Settings.V1"); - value = protector.Protect(value); - } - - bool result; - if ( !await _settingsRepository.AnyAsync(a => a.Key == key, cancellationToken).ConfigureAwait(false) ) - { - SettingsModel model = new() - { - Key = key, - Value = value, - IsEncrypted = encrypt - }; - - result = await _settingsRepository.AddAsync(model, cancellationToken).ConfigureAwait(false); - } - else - { - result = await _settingsRepository.UpdateAsync(u => u.Key == key, - s => - s.SetProperty(p => p.Value, value) - .SetProperty(p => p.IsEncrypted, encrypt), - cancellationToken).ConfigureAwait(false); - } - - return result; - } -} diff --git a/demo/src/AddressValidation.Demo/_Imports.razor b/demo/src/AddressValidation.Demo/_Imports.razor deleted file mode 100644 index 0bf774f..0000000 --- a/demo/src/AddressValidation.Demo/_Imports.razor +++ /dev/null @@ -1,13 +0,0 @@ -@using System.Net.Http -@using System.Net.Http.Json -@using Microsoft.AspNetCore.Components.Forms -@using Microsoft.AspNetCore.Components.Routing -@using Microsoft.AspNetCore.Components.Web -@using static RenderMode -@using Microsoft.AspNetCore.Components.Web.Virtualization -@using Microsoft.JSInterop -@using AddressValidation.Demo -@using AddressValidation.Demo.Common -@using Radzen -@using Radzen.Blazor -@using AddressValidation.Demo.Common.Components diff --git a/demo/src/AddressValidation.Demo/appsettings.Development.json b/demo/src/AddressValidation.Demo/appsettings.Development.json deleted file mode 100644 index a34cd70..0000000 --- a/demo/src/AddressValidation.Demo/appsettings.Development.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - } -} diff --git a/demo/src/AddressValidation.Demo/appsettings.json b/demo/src/AddressValidation.Demo/appsettings.json deleted file mode 100644 index 23160a4..0000000 --- a/demo/src/AddressValidation.Demo/appsettings.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - }, - "AllowedHosts": "*" -} diff --git a/demo/src/AddressValidation.Demo/packages.lock.json b/demo/src/AddressValidation.Demo/packages.lock.json deleted file mode 100644 index 01aa426..0000000 --- a/demo/src/AddressValidation.Demo/packages.lock.json +++ /dev/null @@ -1,1020 +0,0 @@ -{ - "version": 2, - "dependencies": { - "net8.0": { - "Microsoft.ApplicationInsights.AspNetCore": { - "type": "Direct", - "requested": "[2.23.0, )", - "resolved": "2.23.0", - "contentHash": "we/RsIn0Mwf/4ZNGXZixJ0lVD3pqjx2yVeKfqJybgYY/Lib8nnf+8YGJp+ULN3kOk39I0pI/7ZnF9LFy6hS3lw==", - "dependencies": { - "Microsoft.ApplicationInsights": "2.23.0", - "Microsoft.ApplicationInsights.DependencyCollector": "2.23.0", - "Microsoft.ApplicationInsights.EventCounterCollector": "2.23.0", - "Microsoft.ApplicationInsights.PerfCounterCollector": "2.23.0", - "Microsoft.ApplicationInsights.WindowsServer": "2.23.0", - "Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel": "2.23.0", - "Microsoft.AspNetCore.Hosting": "2.1.1", - "Microsoft.AspNetCore.Http": "2.1.22", - "Microsoft.Extensions.Configuration.Json": "3.1.0", - "Microsoft.Extensions.Logging.ApplicationInsights": "2.23.0", - "System.Text.Encodings.Web": "4.7.2" - } - }, - "Microsoft.EntityFrameworkCore": { - "type": "Direct", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "lqqV6JEmVv8s0Y/25RnKtYZ6qL+Vz14wEsrBV1ubVUyzDGrOp+10XJ54HNuRLUzdvzVPR2uQ5li/CPrBj0kQHg==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "9.0.11", - "Microsoft.EntityFrameworkCore.Analyzers": "9.0.11", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Extensions.Logging": "9.0.11" - } - }, - "Microsoft.EntityFrameworkCore.Sqlite": { - "type": "Direct", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "mEmJMkMGpIB1J5gBTkbs4ximer2G+G/I8mO2unMjtimFo1XvV7+vTqUJ9ReEMMI/BGUFtIGifFUSy7QsqKUnRA==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Sqlite.Core": "9.0.11", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyModel": "9.0.11", - "Microsoft.Extensions.Logging": "9.0.11", - "SQLitePCLRaw.bundle_e_sqlite3": "2.1.10", - "SQLitePCLRaw.core": "2.1.10", - "System.Text.Json": "9.0.11" - } - }, - "Radzen.Blazor": { - "type": "Direct", - "requested": "[8.3.8, )", - "resolved": "8.3.8", - "contentHash": "gk9YaAjvOPk7OEEzNLQFylRhaj0syQjRSDQMDE47grv7Fub4q8CV88iAqMIJAm3K6oNrYNjSgSUmBasQvvt9WA==", - "dependencies": { - "Microsoft.AspNetCore.Components": "8.0.0", - "Microsoft.AspNetCore.Components.Web": "8.0.0" - } - }, - "Serilog": { - "type": "Direct", - "requested": "[4.3.0, )", - "resolved": "4.3.0", - "contentHash": "+cDryFR0GRhsGOnZSKwaDzRRl4MupvJ42FhCE4zhQRVanX0Jpg6WuCBk59OVhVDPmab1bB+nRykAnykYELA9qQ==" - }, - "Serilog.AspNetCore": { - "type": "Direct", - "requested": "[9.0.0, )", - "resolved": "9.0.0", - "contentHash": "JslDajPlBsn3Pww1554flJFTqROvK9zz9jONNQgn0D8Lx2Trw8L0A8/n6zEQK1DAZWXrJwiVLw8cnTR3YFuYsg==", - "dependencies": { - "Serilog": "4.2.0", - "Serilog.Extensions.Hosting": "9.0.0", - "Serilog.Formatting.Compact": "3.0.0", - "Serilog.Settings.Configuration": "9.0.0", - "Serilog.Sinks.Console": "6.0.0", - "Serilog.Sinks.Debug": "3.0.0", - "Serilog.Sinks.File": "6.0.0" - } - }, - "Serilog.Enrichers.Environment": { - "type": "Direct", - "requested": "[3.0.1, )", - "resolved": "3.0.1", - "contentHash": "9BqCE4C9FF+/rJb/CsQwe7oVf44xqkOvMwX//CUxvUR25lFL4tSS6iuxE5eW07quby1BAyAEP+vM6TWsnT3iqw==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "Serilog.Enrichers.Thread": { - "type": "Direct", - "requested": "[4.0.0, )", - "resolved": "4.0.0", - "contentHash": "C7BK25a1rhUyr+Tp+1BYcVlBJq7M2VCHlIgnwoIUVJcicM9jYcvQK18+OeHiXw7uLPSjqWxJIp1EfaZ/RGmEwA==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "Serilog.Sinks.ApplicationInsights": { - "type": "Direct", - "requested": "[4.1.0, )", - "resolved": "4.1.0", - "contentHash": "IC7su1J9FFkceWESs1A+AfM/NnBEKRpLpNYzEl+SYPe+RQWgs9PhPSgrIzsj3Un8oGgC/F9OrxibNNZwe+RDTg==", - "dependencies": { - "Microsoft.ApplicationInsights": "2.23.0", - "Serilog": "4.2.0" - } - }, - "Serilog.Sinks.Console": { - "type": "Direct", - "requested": "[6.1.1, )", - "resolved": "6.1.1", - "contentHash": "8jbqgjUyZlfCuSTaJk6lOca465OndqOz3KZP6Cryt/IqZYybyBu7GP0fE/AXBzrrQB3EBmQntBFAvMVz1COvAA==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "Microsoft.ApplicationInsights": { - "type": "Transitive", - "resolved": "2.23.0", - "contentHash": "nWArUZTdU7iqZLycLKWe0TDms48KKGE6pONH2terYNa8REXiqixrMOkf1sk5DHGMaUTqONU2YkS4SAXBhLStgw==", - "dependencies": { - "System.Diagnostics.DiagnosticSource": "5.0.0" - } - }, - "Microsoft.ApplicationInsights.DependencyCollector": { - "type": "Transitive", - "resolved": "2.23.0", - "contentHash": "9YRdl9SNbTxd4AafJckyoJLr5gJdnvqFivjo+PY0lQTPEncPB+z3ZABG4iDfxN9HI1aLqyRINr1/7de9Wg8ZuQ==", - "dependencies": { - "Microsoft.ApplicationInsights": "2.23.0", - "System.Diagnostics.DiagnosticSource": "5.0.0" - } - }, - "Microsoft.ApplicationInsights.EventCounterCollector": { - "type": "Transitive", - "resolved": "2.23.0", - "contentHash": "gGt0JPw2dcSeIAIefyORJBdeMz8KgAFIktu8HV/NwkiGmLyw+YtifLm6B5gvGxO15AeMsGPbmvWEIvLfq88XPw==", - "dependencies": { - "Microsoft.ApplicationInsights": "2.23.0" - } - }, - "Microsoft.ApplicationInsights.PerfCounterCollector": { - "type": "Transitive", - "resolved": "2.23.0", - "contentHash": "q9ApjZfBS9O8m3aQM2oVjsGBmlE8BCFywT7UR+8aqdNuz7HpoIxw4jHy0XOBergiFX/olrJF4OyPkGxc3H5JHg==", - "dependencies": { - "Microsoft.ApplicationInsights": "2.23.0", - "Microsoft.Extensions.Caching.Memory": "1.0.0", - "System.Diagnostics.PerformanceCounter": "6.0.0" - } - }, - "Microsoft.ApplicationInsights.WindowsServer": { - "type": "Transitive", - "resolved": "2.23.0", - "contentHash": "2B8CGfnB/tribkQAqRBhMvJYJK5TkEPMG/BB0QrlxdwVGEufayNLMveXjkQCqld9arXd6wKR1ve2XmkA0+xXKQ==", - "dependencies": { - "Microsoft.ApplicationInsights": "2.23.0", - "Microsoft.ApplicationInsights.DependencyCollector": "2.23.0", - "Microsoft.ApplicationInsights.PerfCounterCollector": "2.23.0", - "Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel": "2.23.0", - "System.Diagnostics.DiagnosticSource": "5.0.0" - } - }, - "Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel": { - "type": "Transitive", - "resolved": "2.23.0", - "contentHash": "798Dudr4tkujslk1w+XcXOcCErmVsk+nhp+QCHLa3lcgi25vkAxBmzPUeQlRJVCNL/1f4x/YF+vQZ8RSuTXWCw==", - "dependencies": { - "Microsoft.ApplicationInsights": "2.23.0", - "System.IO.FileSystem.AccessControl": "4.7.0" - } - }, - "Microsoft.AspNetCore.Authorization": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "OGIGJMnlWvQgcweHcv1Mq/P24Zx/brUHeEdD05NzqkSXmQSnFomTvVyCuBtCXT4JPfv2m70y1RSocmd9bIbJRg==", - "dependencies": { - "Microsoft.AspNetCore.Metadata": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0" - } - }, - "Microsoft.AspNetCore.Components": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "kqspqWo3lT+rrSd39kvrV7SZYl0znYZQbQ8SJaHjDA8ffMPV6BkfVe0i6LvxRPwq/agwSWdIDq2j4x+78Frypg==", - "dependencies": { - "Microsoft.AspNetCore.Authorization": "8.0.0", - "Microsoft.AspNetCore.Components.Analyzers": "8.0.0" - } - }, - "Microsoft.AspNetCore.Components.Analyzers": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "lJMa9kQDw3vkqcMMbuicIpyax7QH6imQFbLRzVqJzrGs5LN954IPaJVkDzRCEXFVAN24Cml6g4mEF3b0D7Oa+Q==" - }, - "Microsoft.AspNetCore.Components.Forms": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "iiYB/7Sl/vTURO4EiTUCmfIXujlJOl+Gh7nknCFhvFQ+kKMFFXYcrszYwLN9aQSolpswc/A9a78KL59/UIezig==", - "dependencies": { - "Microsoft.AspNetCore.Components": "8.0.0" - } - }, - "Microsoft.AspNetCore.Components.Web": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "aokUKvFoNqxR6bf0+iKrDfQ79OLHWYn5UGYp5MU65/il1vuRK7MAF18oGj7QgiZJUu3cMAZjCFkHbsWLhQxCsA==", - "dependencies": { - "Microsoft.AspNetCore.Components": "8.0.0", - "Microsoft.AspNetCore.Components.Forms": "8.0.0", - "Microsoft.Extensions.DependencyInjection": "8.0.0", - "Microsoft.Extensions.Primitives": "8.0.0", - "Microsoft.JSInterop": "8.0.0", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.AspNetCore.Hosting": { - "type": "Transitive", - "resolved": "2.1.1", - "contentHash": "MqYc0DUxrhAPnb5b4HFspxsoJT+gJlLsliSxIgovf4BsbmpaXQId0/pDiVzLuEbmks2w1/lRfY8w0lQOuK1jQQ==", - "dependencies": { - "Microsoft.AspNetCore.Hosting.Abstractions": "2.1.1", - "Microsoft.AspNetCore.Http": "2.1.1", - "Microsoft.AspNetCore.Http.Extensions": "2.1.1", - "Microsoft.Extensions.Configuration": "2.1.1", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "2.1.1", - "Microsoft.Extensions.Configuration.FileExtensions": "2.1.1", - "Microsoft.Extensions.DependencyInjection": "2.1.1", - "Microsoft.Extensions.FileProviders.Physical": "2.1.1", - "Microsoft.Extensions.Hosting.Abstractions": "2.1.1", - "Microsoft.Extensions.Logging": "2.1.1", - "Microsoft.Extensions.Options": "2.1.1", - "System.Diagnostics.DiagnosticSource": "4.5.0", - "System.Reflection.Metadata": "1.6.0" - } - }, - "Microsoft.AspNetCore.Hosting.Abstractions": { - "type": "Transitive", - "resolved": "2.1.1", - "contentHash": "76cKcp2pWhvdV2TXTqMg/DyW7N6cDzTEhtL8vVWFShQN+Ylwv3eO/vUQr2BS3Hz4IZHEpL+FOo2T+MtymHDqDQ==", - "dependencies": { - "Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.1.1", - "Microsoft.AspNetCore.Http.Abstractions": "2.1.1", - "Microsoft.Extensions.Hosting.Abstractions": "2.1.1" - } - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions": { - "type": "Transitive", - "resolved": "2.1.1", - "contentHash": "+vD7HJYzAXNq17t+NgRkpS38cxuAyOBu8ixruOiA3nWsybozolUdALWiZ5QFtGRzajSLPFA2YsbO3NPcqoUwcw==", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.1.1", - "Microsoft.Extensions.Configuration.Abstractions": "2.1.1" - } - }, - "Microsoft.AspNetCore.Http": { - "type": "Transitive", - "resolved": "2.1.22", - "contentHash": "+Blk++1JWqghbl8+3azQmKhiNZA5wAepL9dY2I6KVmu2Ri07MAcvAVC888qUvO7yd7xgRgZOMfihezKg14O/2A==", - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.1.1", - "Microsoft.AspNetCore.WebUtilities": "2.1.1", - "Microsoft.Extensions.ObjectPool": "2.1.1", - "Microsoft.Extensions.Options": "2.1.1", - "Microsoft.Net.Http.Headers": "2.1.1" - } - }, - "Microsoft.AspNetCore.Http.Abstractions": { - "type": "Transitive", - "resolved": "2.1.1", - "contentHash": "kQUEVOU4loc8CPSb2WoHFTESqwIa8Ik7ysCBfTwzHAd0moWovc9JQLmhDIHlYLjHbyexqZAlkq/FPRUZqokebw==", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.1.1", - "System.Text.Encodings.Web": "4.5.0" - } - }, - "Microsoft.AspNetCore.Http.Extensions": { - "type": "Transitive", - "resolved": "2.1.1", - "contentHash": "ncAgV+cqsWSqjLXFUTyObGh4Tr7ShYYs3uW8Q/YpRwZn7eLV7dux5Z6GLY+rsdzmIHiia3Q2NWbLULQi7aziHw==", - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.1.1", - "Microsoft.Extensions.FileProviders.Abstractions": "2.1.1", - "Microsoft.Net.Http.Headers": "2.1.1", - "System.Buffers": "4.5.0" - } - }, - "Microsoft.AspNetCore.Http.Features": { - "type": "Transitive", - "resolved": "2.1.1", - "contentHash": "VklZ7hWgSvHBcDtwYYkdMdI/adlf7ebxTZ9kdzAhX+gUs5jSHE9mZlTamdgf9miSsxc1QjNazHXTDJdVPZKKTw==", - "dependencies": { - "Microsoft.Extensions.Primitives": "2.1.1" - } - }, - "Microsoft.AspNetCore.Metadata": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "OmuSztiZMitRTYlbMNDkBk3BinSsVcOApSNBAsrw+KYNJh6ALarPhWLlKdtvMgrKzpyCY06xtLAjTmQLURHSlQ==" - }, - "Microsoft.AspNetCore.WebUtilities": { - "type": "Transitive", - "resolved": "2.1.1", - "contentHash": "PGKIZt4+412Z/XPoSjvYu/QIbTxcAQuEFNoA1Pw8a9mgmO0ZhNBmfaNyhgXFf7Rq62kP0tT/2WXpxdcQhkFUPA==", - "dependencies": { - "Microsoft.Net.Http.Headers": "2.1.1", - "System.Text.Encodings.Web": "4.5.0" - } - }, - "Microsoft.Data.Sqlite.Core": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "l0IFYa6sxJdlDDfMaw/fMNIoXyWnBx6w5fu7BsNaqU8sXLuotFzUjsutXosu/IPUyBOpO2GG3hLuPMLz/CwWTQ==", - "dependencies": { - "SQLitePCLRaw.core": "2.1.10" - } - }, - "Microsoft.EntityFrameworkCore.Abstractions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "MHcdHm7vF71MfqYC68Jx9YfDAjxcuClGBZJk5zcJDRhVO4HgX+QFsOqcAisKWb20aBeF0IN1YkSktnEUf/tmLQ==" - }, - "Microsoft.EntityFrameworkCore.Analyzers": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "ccEk88YkXXWV+s5ZS+27UoY5YUVzgx8mq7kl+e05+AgJPGLhtmpQL26LxqBV1StJZEl2KaL8BxzABvXTXBAkoQ==" - }, - "Microsoft.EntityFrameworkCore.Relational": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "b6A19xFuU2F92C7N70+HSjRcxwDHTYTdZ/1PyLpHmzXt35G6ugCVKTPS+YJVK1u5ArrDFGQNu+EI+UrSRgUwGA==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "9.0.11", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Logging": "9.0.11" - } - }, - "Microsoft.EntityFrameworkCore.Sqlite.Core": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "NNfHGXUZ+Ie3Wrzja9ar3hU3octv/fi4ELS6poG2Ncp4p1Kj2rgIhXRMK8zL2BjcNAnGQojhJkBKjEOmhJaIxA==", - "dependencies": { - "Microsoft.Data.Sqlite.Core": "9.0.11", - "Microsoft.EntityFrameworkCore.Relational": "9.0.11", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyModel": "9.0.11", - "Microsoft.Extensions.Logging": "9.0.11", - "SQLitePCLRaw.core": "2.1.10", - "System.Text.Json": "9.0.11" - } - }, - "Microsoft.Extensions.AmbientMetadata.Application": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "ndm/eoOzk61Csn+ojv5z3Kt7YWAdUNR8ruFaf1b69kSbeqDPoV96f1GR1OWTIrCN9bm83V8CSkhvnnG+LrLTvg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "Tgu40iIg2Kr8s+BoOhb8r8kQfcagwm1VnpnMZA9fd/sD8Hlj13cNpyCfLRrYEBP+VmfmaoficQvRNEUqH+F4mw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.ObjectPool": "8.0.21" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "4ceMQRCIMP9AxxZOQ0k+xYXCfgSEmEsnt6s0o/KkpeLqwm3kGKBbsiJlyMk56GnKJtk4SI7nTpIIzb+Qdk+FMQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "iPE1jROL5uK/6iJSRzwpEIJt6BuANN36Io+6bLss67JVjbG6DdVedrMnB9nqsxs+Lx3X9RxvARTgFsUgP0MB0g==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables": { - "type": "Transitive", - "resolved": "2.1.1", - "contentHash": "6xMxFIfKL+7J/jwlk8zV8I61sF3+DRG19iKQxnSfYQU+iMMjGbcWNCHFF/3MHf3o4sTZPZ8D6Io+GwKFc3TIZA==", - "dependencies": { - "Microsoft.Extensions.Configuration": "2.1.1" - } - }, - "Microsoft.Extensions.Configuration.FileExtensions": { - "type": "Transitive", - "resolved": "3.1.0", - "contentHash": "OjRJIkVxUFiVkr9a39AqVThft9QHoef4But5pDCydJOXJ4D/SkmzuW1tm6J2IXynxj6qfeAz9QTnzQAvOcGvzg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.0", - "Microsoft.Extensions.FileProviders.Physical": "3.1.0" - } - }, - "Microsoft.Extensions.Configuration.Json": { - "type": "Transitive", - "resolved": "3.1.0", - "contentHash": "gBpBE1GoaCf1PKYC7u0Bd4mVZ/eR2bnOvn7u8GBXEy3JGar6sC3UVpVfTB9w+biLPtzcukZynBG9uchSBbLTNQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.0", - "Microsoft.Extensions.Configuration.FileExtensions": "3.1.0" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "UquyDzvz0EneIQrrU67GJkIgynS+VD7t+RDtNv6VgKMOFrLBjldn6hzlXppGGecFMvAkMTqn4T8RYvzw7j7fQA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection.AutoActivation": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "qk5+lY0MUl7Y77TjM6HzfQPOY4CqoTg281OddyDC5iU2hf+cIxhx0VbNuJH77vqB6qyCP1OsuQmCzvlpf9yxBQ==", - "dependencies": { - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1" - } - }, - "Microsoft.Extensions.DependencyModel": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "DaBLlKcD5AYFLEeX7M07Q0vWOEBd86KYXOb+5ZRdQ1jYtN39cJd6fftxdNbRazEYQc9QqsAZiqKb9ub0gA+q+Q==", - "dependencies": { - "System.Text.Encodings.Web": "9.0.11", - "System.Text.Json": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "WkriTCwxW0QbIgPYXGy329wQKcS4lmstwwysCHcjok2acPd626ysPcwMpw1pSBNzkdkMsqcbcJLlpVc9kP/YiQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "9.0.11", - "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.11", - "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "D9gu4weEmvWGuz8zp5xwsOr0ldmWphMKr7+IW66hG4rnrgpMLtTWoOINBOX5mcRTPL39+AVd3BJdc4HTvl2NrA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "SRJgt408OA/+v2o47Kjx8Wf+rbCJMmTsbsnkuzVzeP9xfcn4dIoMJXLCKiRlDNzJ3pXLYrXmkyOSY81BehoVHw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "uK439QzYR0q2emLVtYzwyK3x+T5bTY4yWsd/k/ZUS9LR6Sflp8MIdhGXW8kQCd86dQD4tLqvcbLkku8qHY263Q==", - "dependencies": { - "Microsoft.Extensions.Primitives": "9.0.0" - } - }, - "Microsoft.Extensions.FileProviders.Physical": { - "type": "Transitive", - "resolved": "3.1.0", - "contentHash": "KsvgrYp2fhNXoD9gqSu8jPK9Sbvaa7SqNtsLqHugJkCwFmgRvdz76z6Jz2tlFlC7wyMTZxwwtRF8WAorRQWTEA==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "3.1.0", - "Microsoft.Extensions.FileSystemGlobbing": "3.1.0" - } - }, - "Microsoft.Extensions.FileSystemGlobbing": { - "type": "Transitive", - "resolved": "3.1.0", - "contentHash": "tK5HZOmVv0kUYkonMjuSsxR0CBk+Rd/69QU3eOMv9FvODGZ2d0SR+7R+n8XIgBcCCoCHJBSsI4GPRaoN3Le4rA==" - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "yUKJgu81ExjvqbNWqZKshBbLntZMbMVz/P7Way2SBx7bMqA08Mfdc9O7hWDKAiSp+zPUGT6LKcSCQIPeDK+CCw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0", - "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.0", - "Microsoft.Extensions.FileProviders.Abstractions": "9.0.0", - "Microsoft.Extensions.Logging.Abstractions": "9.0.0" - } - }, - "Microsoft.Extensions.Http.Diagnostics": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "3IJjOPm4CRmv7zzjPV+RCyvS4kWJ9BNr1k/MWgRTQds6LcIhAgwh+ToZ8O4fKMFlme0EGLvTm27ARKqp468pQw==", - "dependencies": { - "Microsoft.Extensions.Http": "8.0.1", - "Microsoft.Extensions.Telemetry": "9.10.0", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.Extensions.Logging": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "PVHYgMmMZFEE3PGpc7oZ9CnoyNonNyT5klrV9pNIzCPxL12FpQ7kNhliXAwowmtaDVBmKnG/1db6d7gqPwDj8g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Logging.ApplicationInsights": { - "type": "Transitive", - "resolved": "2.23.0", - "contentHash": "JLEabPz445i1yRB0hKZVzJJE35QatRIzWlrMOiBQXr9kBJod0jkpkrBf94ln6kXu+jlEGohnXtuXacPPhybJDw==", - "dependencies": { - "Microsoft.ApplicationInsights": "2.23.0", - "Microsoft.Extensions.Logging": "2.1.1" - } - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "QWwTrsgOnJMmn+XUslm8D2H1n3PkP/u/v52FODtyBc/k4W9r3i2vcXXeeX/upnzllJYRRbrzVzT0OclfNJtBJA==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.Configuration.Binder": "8.0.2", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Logging": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2", - "Microsoft.Extensions.Options": "8.0.2", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "8.0.21", - "contentHash": "UBuyxD9CqasYKmwP41Skar2+f2Bk47V3NAPXh3a3Rxsmt2NTB1qynDU8zHkHWEts/07QykmzYAWLHPgHsROe0w==" - }, - "Microsoft.Extensions.Options": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HX4M3BLkW1dtByMKHDVq6r7Jy6e4hf8NDzHpIgz7C8BtYk9JQHhfYX5c1UheQTD5Veg1yBhz/cD9C8vtrGrk9w==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HUzr4c1eMXCQN8Yre2JdCzYmLJAecFGVXfByVhjEY4jBaHIs8EAxdv72WMUa2GcROlkYPbYNzMbcqJPMiznHxw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Configuration.Binder": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==" - }, - "Microsoft.Extensions.Resilience": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "tNptjYbHq73emZok4HBbpV41Afwoclga5LaKux8RV27lOA2lyQxeJFKNTWYQauJmWxxwXmwG7bgitbnIDh4eXA==", - "dependencies": { - "Microsoft.Extensions.Diagnostics": "8.0.1", - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "9.10.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0", - "Polly.Extensions": "8.4.2", - "Polly.RateLimiting": "8.4.2" - } - }, - "Microsoft.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "FGEOTEjMB+1T69PLp5GrG4UOsIjcdNQcoiXpC+KV9NRejl6vSMLhVqQ6g6c+cxLXzx8xc2J90GAMhD1wPHjKHg==", - "dependencies": { - "Microsoft.Extensions.AmbientMetadata.Application": "9.10.0", - "Microsoft.Extensions.DependencyInjection.AutoActivation": "9.10.0", - "Microsoft.Extensions.Logging.Configuration": "8.0.1", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0" - } - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "hJflG5if8NqElmybxXDf38d4EPopOo9H+Qg6l5LKTsavqE4CFdA5DIPb9+jjAeL22FN+rs6KuuEIuBPS4PNXvw==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "9.10.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.3", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Options": "8.0.2" - } - }, - "Microsoft.IdentityModel.Abstractions": { - "type": "Transitive", - "resolved": "8.15.0", - "contentHash": "e/DApa1GfxUqHSBHcpiQg8yaghKAvFVBQFcWh25jNoRobDZbduTUACY8bZ54eeGWXvimGmEDdF0zkS5Dq16XPQ==" - }, - "Microsoft.IdentityModel.JsonWebTokens": { - "type": "Transitive", - "resolved": "8.15.0", - "contentHash": "3513f5VzvOZy3ELd42wGnh1Q3e83tlGAuXFSNbENpgWYoAhLLzgFtd5PiaOPGAU0gqKhYGVzKavghLUGfX3HQg==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "8.15.0" - } - }, - "Microsoft.IdentityModel.Logging": { - "type": "Transitive", - "resolved": "8.15.0", - "contentHash": "1gJLjhy0LV2RQMJ9NGzi5Tnb2l+c37o8D8Lrk2mrvmb6OQHZ7XJstd/XxvncXgBpad4x9CGXdipbZzJJCXKyAg==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.15.0" - } - }, - "Microsoft.JSInterop": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "qQqASbHxWIddssdEBKUQ/49j21SEstiho6VAepPQa9eISLCBCE6wq0m3YaB6cpdF5U+AWX5F3FvDfmssql3xtw==" - }, - "Microsoft.Net.Http.Headers": { - "type": "Transitive", - "resolved": "2.1.1", - "contentHash": "lPNIphl8b2EuhOE9dMH6EZDmu7pS882O+HMi5BJNsigxHaWlBrYxZHFZgE18cyaPp6SSZcTkKkuzfjV/RRQKlA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "2.1.1", - "System.Buffers": "4.5.0" - } - }, - "Microsoft.Win32.SystemEvents": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "hqTM5628jSsQiv+HGpiq3WKBl2c8v1KZfby2J6Pr7pEPlK9waPdgEO6b8A/+/xn/yZ9ulv8HuqK71ONy2tg67A==" - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" - }, - "Polly.Extensions": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0", - "Polly.Core": "8.4.2" - } - }, - "Polly.RateLimiting": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", - "dependencies": { - "Polly.Core": "8.4.2", - "System.Threading.RateLimiting": "8.0.0" - } - }, - "Serilog.Extensions.Hosting": { - "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "u2TRxuxbjvTAldQn7uaAwePkWxTHIqlgjelekBtilAGL5sYyF3+65NWctN4UrwwGLsDC7c3Vz3HnOlu+PcoxXg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "9.0.0", - "Microsoft.Extensions.Logging.Abstractions": "9.0.0", - "Serilog": "4.2.0", - "Serilog.Extensions.Logging": "9.0.0" - } - }, - "Serilog.Extensions.Logging": { - "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "NwSSYqPJeKNzl5AuXVHpGbr6PkZJFlNa14CdIebVjK3k/76kYj/mz5kiTRNVSsSaxM8kAIa1kpy/qyT9E4npRQ==", - "dependencies": { - "Microsoft.Extensions.Logging": "9.0.0", - "Serilog": "4.2.0" - } - }, - "Serilog.Formatting.Compact": { - "type": "Transitive", - "resolved": "3.0.0", - "contentHash": "wQsv14w9cqlfB5FX2MZpNsTawckN4a8dryuNGbebB/3Nh1pXnROHZov3swtu3Nj5oNG7Ba+xdu7Et/ulAUPanQ==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "Serilog.Settings.Configuration": { - "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "4/Et4Cqwa+F88l5SeFeNZ4c4Z6dEAIKbu3MaQb2Zz9F/g27T5a3wvfMcmCOaAiACjfUb4A6wrlTVfyYUZk3RRQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Binder": "9.0.0", - "Microsoft.Extensions.DependencyModel": "9.0.0", - "Serilog": "4.2.0" - } - }, - "Serilog.Sinks.Debug": { - "type": "Transitive", - "resolved": "3.0.0", - "contentHash": "4BzXcdrgRX7wde9PmHuYd9U6YqycCC28hhpKonK7hx0wb19eiuRj16fPcPSVp0o/Y1ipJuNLYQ00R3q2Zs8FDA==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "Serilog.Sinks.File": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "lxjg89Y8gJMmFxVkbZ+qDgjl+T4yC5F7WSLTvA+5q0R04tfKVLRL/EHpYoJ/MEQd2EeCKDuylBIVnAYMotmh2A==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "SQLitePCLRaw.bundle_e_sqlite3": { - "type": "Transitive", - "resolved": "2.1.10", - "contentHash": "UxWuisvZ3uVcVOLJQv7urM/JiQH+v3TmaJc1BLKl5Dxfm/nTzTUrqswCqg/INiYLi61AXnHo1M1JPmPqqLnAdg==", - "dependencies": { - "SQLitePCLRaw.lib.e_sqlite3": "2.1.10", - "SQLitePCLRaw.provider.e_sqlite3": "2.1.10" - } - }, - "SQLitePCLRaw.core": { - "type": "Transitive", - "resolved": "2.1.10", - "contentHash": "Ii8JCbC7oiVclaE/mbDEK000EFIJ+ShRPwAvvV89GOZhQ+ZLtlnSWl6ksCNMKu/VGXA4Nfi2B7LhN/QFN9oBcw==", - "dependencies": { - "System.Memory": "4.5.3" - } - }, - "SQLitePCLRaw.lib.e_sqlite3": { - "type": "Transitive", - "resolved": "2.1.10", - "contentHash": "mAr69tDbnf3QJpRy2nJz8Qdpebdil00fvycyByR58Cn9eARvR+UiG2Vzsp+4q1tV3ikwiYIjlXCQFc12GfebbA==" - }, - "SQLitePCLRaw.provider.e_sqlite3": { - "type": "Transitive", - "resolved": "2.1.10", - "contentHash": "uZVTi02C1SxqzgT0HqTWatIbWGb40iIkfc3FpFCpE/r7g6K0PqzDUeefL6P6HPhDtc6BacN3yQysfzP7ks+wSQ==", - "dependencies": { - "SQLitePCLRaw.core": "2.1.10" - } - }, - "System.Buffers": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "pL2ChpaRRWI/p4LXyy4RgeWlYF2sgfj/pnVMvBqwNFr5cXg7CXNnWZWxrOONLg8VGdFB8oB+EG2Qw4MLgTOe+A==" - }, - "System.Configuration.ConfigurationManager": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "7T+m0kDSlIPTHIkPMIu6m6tV6qsMqJpvQWW2jIc2qi7sn40qxFo0q+7mEQAhMPXZHMKnWrnv47ntGlM/ejvw3g==", - "dependencies": { - "System.Security.Cryptography.ProtectedData": "6.0.0", - "System.Security.Permissions": "6.0.0" - } - }, - "System.Diagnostics.DiagnosticSource": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "/QzMFklOm8Ak//YB0I2kR+ByxUndT63ucrRWQm0xZsuLExJWrVDeGKtYZDuBackd9dThbwMdOotIEc4c4KwJiw==" - }, - "System.Diagnostics.PerformanceCounter": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "gbeE5tNp/oB7O8kTTLh3wPPJCxpNOphXPTWVs1BsYuFOYapFijWuh0LYw1qnDo4gwDUYPXOmpTIhvtxisGsYOQ==", - "dependencies": { - "System.Configuration.ConfigurationManager": "6.0.0" - } - }, - "System.Drawing.Common": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "NfuoKUiP2nUWwKZN6twGqXioIe1zVD0RIj2t976A+czLHr2nY454RwwXs6JU9Htc6mwqL6Dn/nEL3dpVf2jOhg==", - "dependencies": { - "Microsoft.Win32.SystemEvents": "6.0.0" - } - }, - "System.IO.FileSystem.AccessControl": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "vMToiarpU81LR1/KZtnT7VDPvqAZfw9oOS5nY6pPP78nGYz3COLsQH3OfzbR+SjTgltd31R6KmKklz/zDpTmzw==", - "dependencies": { - "System.Security.AccessControl": "4.7.0", - "System.Security.Principal.Windows": "4.7.0" - } - }, - "System.IO.Pipelines": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "NfGnevAV0r2gqtZWxa/7uCm3MNRYz1o4WRHhFahgBq46LuG2eaLwXIlPgtgaRUvf9CCrGFnuzN47MOzJUH1HKg==" - }, - "System.Memory": { - "type": "Transitive", - "resolved": "4.5.3", - "contentHash": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==" - }, - "System.Reflection.Metadata": { - "type": "Transitive", - "resolved": "1.6.0", - "contentHash": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==" - }, - "System.Security.AccessControl": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "AUADIc0LIEQe7MzC+I0cl0rAT8RrTAKFHl53yHjEUzNVIaUlhFY11vc2ebiVJzVBuOzun6F7FBA+8KAbGTTedQ==" - }, - "System.Security.Cryptography.ProtectedData": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "rp1gMNEZpvx9vP0JW0oHLxlf8oSiQgtno77Y4PLUBjSiDYoD77Y8uXHr1Ea5XG4/pIKhqAdxZ8v8OTUtqo9PeQ==" - }, - "System.Security.Permissions": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "T/uuc7AklkDoxmcJ7LGkyX1CcSviZuLCa4jg3PekfJ7SU0niF0IVTXwUiNVP9DSpzou2PpxJ+eNY2IfDM90ZCg==", - "dependencies": { - "System.Security.AccessControl": "6.0.0", - "System.Windows.Extensions": "6.0.0" - } - }, - "System.Security.Principal.Windows": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "ojD0PX0XhneCsUbAZVKdb7h/70vyYMDYs85lwEI+LngEONe/17A0cFaRFqZU+sOEidcVswYWikYOQ9PPfjlbtQ==" - }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "l5L3Ov+pyD0dfK2bv6IMU2KPEyaaWnix6U0/YhgkNBGEOAgVTVlvh5ZyXWuuRlCtLnOziz+VtM5HFeqLlH2AbA==" - }, - "System.Text.Json": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "DGToqSFbBSU6pMSbZuJ+7jDvLa73rvpcYdGFqZIB3FKdCVlEAbrBJrl9PuCT6E0QbdhXjPwqalYc5lxjUqMQzw==", - "dependencies": { - "System.IO.Pipelines": "9.0.11", - "System.Text.Encodings.Web": "9.0.11" - } - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "System.Windows.Extensions": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "IXoJOXIqc39AIe+CIR7koBtRGMiCt/LPM3lI+PELtDIy9XdyeSrwXFdWV9dzJ2Awl0paLWUaknLxFQ5HpHZUog==", - "dependencies": { - "System.Drawing.Common": "6.0.0" - } - }, - "visus.addressvalidation": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "[10.0.0, )", - "Microsoft.Extensions.Configuration.Abstractions": "[10.0.0, )" - } - }, - "visus.addressvalidation.integration.fedex": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Memory": "[9.0.11, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[9.0.11, )", - "Microsoft.Extensions.Http": "[9.0.11, )", - "Microsoft.Extensions.Http.Resilience": "[9.10.0, )", - "Visus.AddressValidation": "[0.0.1, )" - } - }, - "visus.addressvalidation.integration.google": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Memory": "[9.0.11, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[9.0.11, )", - "Microsoft.Extensions.Http": "[9.0.11, )", - "Microsoft.Extensions.Http.Resilience": "[9.10.0, )", - "Microsoft.IdentityModel.Tokens": "[8.15.0, )", - "System.IdentityModel.Tokens.Jwt": "[8.15.0, )", - "Visus.AddressValidation": "[0.0.1, )" - } - }, - "visus.addressvalidation.integration.pitneybowes": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Memory": "[9.0.11, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[9.0.11, )", - "Microsoft.Extensions.Http": "[9.0.11, )", - "Microsoft.Extensions.Http.Resilience": "[9.10.0, )", - "Visus.AddressValidation": "[0.0.1, )" - } - }, - "visus.addressvalidation.integration.ups": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Memory": "[9.0.11, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[9.0.11, )", - "Microsoft.Extensions.Http": "[9.0.11, )", - "Microsoft.Extensions.Http.Resilience": "[9.10.0, )", - "Visus.AddressValidation": "[0.0.1, )" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "Zcoy6H9mSoGyvr7UvlGokEZrlZkcPCICPZr8mCsSt9U/N8eeCwCXwKF5bShdA66R0obxBCwP4AxomQHvVkC/uA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.Caching.Memory": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "J77oUeVZXdMoiUiCPkL4v13KrNRuMQnSHHw78cTh/2ZidyiMFm8jhu49OUKvNydMUX8ZcuM5g8uohW18YaglMw==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "d2kDKnCsJvY7mBVhcjPSp9BkJk48DsaHPg5u+Oy4f8XaOqnEedRy/USyvnpHL92wpJ6DrTPy7htppUUzskbCXQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "+ZxxZzcVU+IEzq12GItUzf/V3mEc5nSLiXijwvDc4zyhbjvSZZ043giSZqGnhakrjwRWjkerIHPrRwm9okEIpw==" - }, - "Microsoft.Extensions.Http": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "QEa12ESaPAKR3M40N8dawVd+LPOgxCrGsUmC7Myfhn44AQiWh7X9PiTAagrAnJSaGqsb+yx+KRNSjrm8wx1TVQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Diagnostics": "9.0.11", - "Microsoft.Extensions.Logging": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Http.Resilience": { - "type": "CentralTransitive", - "requested": "[9.10.0, )", - "resolved": "9.10.0", - "contentHash": "4Bt58q+Oqpj4VYm3T7hcmsb1zVhmUTNNggDkjlWBIv3bv6MVRPGqIokK2tRHsD8bM4i3GkJLRWe8lQwbsWS6PQ==", - "dependencies": { - "Microsoft.Extensions.Http.Diagnostics": "9.10.0", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Resilience": "9.10.0" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "UKWFTDwtZQIoypyt1YPVsxTnDK+0sKn26+UeSGeNlkRQddrkt9EC6kP4g94rgO/WOZkz94bKNlF1dVZN3QfPFQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - }, - "Microsoft.IdentityModel.Tokens": { - "type": "CentralTransitive", - "requested": "[8.15.0, )", - "resolved": "8.15.0", - "contentHash": "zUE9ysJXBtXlHHRtcRK3Sp8NzdCI1z/BRDTXJQ2TvBoI0ENRtnufYIep0O5TSCJRJGDwwuLTUx+l/bEYZUxpCA==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.IdentityModel.Logging": "8.15.0" - } - }, - "System.IdentityModel.Tokens.Jwt": { - "type": "CentralTransitive", - "requested": "[8.15.0, )", - "resolved": "8.15.0", - "contentHash": "dpodi7ixz6hxK8YCBYAWzm0IA8JYXoKcz0hbCbNifo519//rjUI0fBD8rfNr+IGqq+2gm4oQoXwHk09LX5SqqQ==", - "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "8.15.0", - "Microsoft.IdentityModel.Tokens": "8.15.0" - } - } - } - } -} \ No newline at end of file diff --git a/demo/src/AddressValidation.Demo/wwwroot/app.css b/demo/src/AddressValidation.Demo/wwwroot/app.css deleted file mode 100644 index 9982277..0000000 --- a/demo/src/AddressValidation.Demo/wwwroot/app.css +++ /dev/null @@ -1,53 +0,0 @@ -h1:focus { - outline: none; -} - -.valid.modified:not([type=checkbox]) { - outline: 1px solid #26b050; -} - -.invalid { - outline: 1px solid #e50000; -} - -.validation-message { - color: #e50000; -} - -.blazor-error-boundary { - background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; - padding: 1rem 1rem 1rem 3.7rem; - color: white; -} - -.blazor-error-boundary::after { - content: "An error has occurred." -} - -.darker-border-checkbox.form-check-input { - border-color: #929292; -} - -.avd-input-text-masked { - transition: all 0.5s ease; - color: transparent !important; - text-shadow: 0 0 5px #000 !important; -} - -.avd-input-text-masked:hover { - color: #000 !important; - text-shadow: none !important; -} - -pre { - margin: 0 !important; - overflow: scroll !important; -} - -.font-awesome { - --rz-icon-font-family: 'Font Awesome 6 Free'; -} - -.font-awesome-brands { - --rz-icon-font-family: 'Font Awesome 6 Brands'; -} diff --git a/global.json b/global.json index c4b369f..ec779e0 100644 --- a/global.json +++ b/global.json @@ -1,8 +1,11 @@ { - "sdk": { - "version": "8.0.416", - "rollForward": "latestFeature", - "allowPrerelease": false - } + "sdk": { + "version": "10.0.103", + "rollForward": "latestFeature", + "allowPrerelease": false + }, + "test": { + "runner": "Microsoft.Testing.Platform" + } } diff --git a/renovate.json b/renovate.json index 92f9e9a..a09f4ba 100644 --- a/renovate.json +++ b/renovate.json @@ -1,11 +1,8 @@ { - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": [ - "local>visus-io/renovate-config", - ":preserveSemverRanges" - ], - "ignoreDeps": [ - "Microsoft.CodeAnalysis.CSharp.Workspaces" - ], - "timezone": "America/New_York" + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "local>visus-io/renovate-config", + ":preserveSemverRanges" + ], + "timezone": "America/New_York" } diff --git a/src/Visus.AddressValidation.Integration.FedEx/Abstractions/AddressClassification.cs b/src/Visus.AddressValidation.Integration.FedEx/Abstractions/AddressClassification.cs index 7fbee0d..dceea13 100644 --- a/src/Visus.AddressValidation.Integration.FedEx/Abstractions/AddressClassification.cs +++ b/src/Visus.AddressValidation.Integration.FedEx/Abstractions/AddressClassification.cs @@ -25,5 +25,5 @@ internal enum AddressClassification /// /// Residential Address /// - RESIDENTIAL + RESIDENTIAL, } diff --git a/src/Visus.AddressValidation.Integration.FedEx/Abstractions/AddressType.cs b/src/Visus.AddressValidation.Integration.FedEx/Abstractions/AddressType.cs index ef3dbc9..9d94811 100644 --- a/src/Visus.AddressValidation.Integration.FedEx/Abstractions/AddressType.cs +++ b/src/Visus.AddressValidation.Integration.FedEx/Abstractions/AddressType.cs @@ -8,17 +8,17 @@ namespace Visus.AddressValidation.Integration.FedEx.Abstractions; internal enum AddressType { /// - /// Address country not supported + /// Address country not supported /// RAW, - + /// - /// Address country supported, but unable to match the address against reference data. + /// Address country supported, but unable to match the address against reference data. /// NORMAL, - + /// - /// Address service was able to successfully match the address against reference data. + /// Address service was able to successfully match the address against reference data. /// - STANDARDIZED + STANDARDIZED, } diff --git a/src/Visus.AddressValidation.Integration.FedEx/Abstractions/ResolutionMethod.cs b/src/Visus.AddressValidation.Integration.FedEx/Abstractions/ResolutionMethod.cs index 7650010..d7bac46 100644 --- a/src/Visus.AddressValidation.Integration.FedEx/Abstractions/ResolutionMethod.cs +++ b/src/Visus.AddressValidation.Integration.FedEx/Abstractions/ResolutionMethod.cs @@ -1,6 +1,5 @@ namespace Visus.AddressValidation.Integration.FedEx.Abstractions; -using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.Text.Json.Serialization; @@ -31,5 +30,5 @@ internal enum ResolutionMethod /// /// US Geo/Map Validated /// - TELEATLAS_GEO_VALIDATE + TELEATLAS_GEO_VALIDATE, } diff --git a/src/Visus.AddressValidation.Integration.FedEx/Constants.cs b/src/Visus.AddressValidation.Integration.FedEx/Constants.cs index 50beb59..6c0f2e3 100644 --- a/src/Visus.AddressValidation.Integration.FedEx/Constants.cs +++ b/src/Visus.AddressValidation.Integration.FedEx/Constants.cs @@ -1,6 +1,5 @@ namespace Visus.AddressValidation.Integration.FedEx; -using Abstractions; using AddressValidation.Abstractions; /// @@ -86,6 +85,6 @@ public static class Constants CountryCode.UY, CountryCode.VE, CountryCode.VI, - CountryCode.ZA + CountryCode.ZA, }; } diff --git a/src/Visus.AddressValidation.Integration.FedEx/Extensions/ServiceCollectionExtensions.cs b/src/Visus.AddressValidation.Integration.FedEx/Extensions/ServiceCollectionExtensions.cs index 59118e8..94b2798 100644 --- a/src/Visus.AddressValidation.Integration.FedEx/Extensions/ServiceCollectionExtensions.cs +++ b/src/Visus.AddressValidation.Integration.FedEx/Extensions/ServiceCollectionExtensions.cs @@ -1,11 +1,10 @@ -using Microsoft.Extensions.DependencyInjection; -using Visus.AddressValidation.Services; - namespace Visus.AddressValidation.Integration.FedEx.Extensions; using AddressValidation.Http; +using AddressValidation.Services; using AddressValidation.Validation; using Http; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Services; using Validation; @@ -26,24 +25,24 @@ public static IServiceCollection AddFedExAddressValidation(this IServiceCollecti ArgumentNullException.ThrowIfNull(services); services.TryAddSingleton(); - + services.TryAddScoped, AddressValidationRequestValidator>(); services.TryAddScoped, ApiResponseValidator>(); - + services.TryAddScoped, AddressValidationService>(); services.AddHttpClient() .AddStandardResilienceHandler(); services.AddHttpClient() - .RedactLoggedHeaders(["Authorization"]) + .RedactLoggedHeaders(["Authorization",]) .AddHttpMessageHandler(provider => - { - FedExAuthenticationService authenticationService = - provider.GetRequiredService(); - - return new BearerTokenDelegatingHandler(authenticationService); - }) + { + FedExAuthenticationService authenticationService = + provider.GetRequiredService(); + + return new BearerTokenDelegatingHandler(authenticationService); + }) .AddStandardResilienceHandler(); return services; diff --git a/src/Visus.AddressValidation.Integration.FedEx/Http/FedExAddressValidationClient.cs b/src/Visus.AddressValidation.Integration.FedEx/Http/FedExAddressValidationClient.cs index 68dc1d0..1a5ef00 100644 --- a/src/Visus.AddressValidation.Integration.FedEx/Http/FedExAddressValidationClient.cs +++ b/src/Visus.AddressValidation.Integration.FedEx/Http/FedExAddressValidationClient.cs @@ -2,7 +2,6 @@ namespace Visus.AddressValidation.Integration.FedEx.Http; using System.Net.Http.Json; using System.Runtime.CompilerServices; -using Abstractions; using AddressValidation.Abstractions; using Microsoft.Extensions.Configuration; using Serialization.Json; @@ -35,7 +34,7 @@ internal sealed class FedExAddressValidationClient( { ClientEnvironment.DEVELOPMENT => Constants.DevelopmentEndpointBaseUri, ClientEnvironment.PRODUCTION => Constants.ProductionEndpointBaseUri, - _ => Constants.DevelopmentEndpointBaseUri + _ => Constants.DevelopmentEndpointBaseUri, }; Uri requestUri = new(baseUri, "/address/v1/addresses/resolve"); @@ -48,19 +47,19 @@ internal sealed class FedExAddressValidationClient( if ( response.IsSuccessStatusCode ) { return await response.Content.ReadFromJsonAsync(ApiJsonSerializerContext.Default.ApiResponse, - cancellationToken) + cancellationToken) .ConfigureAwait(false); } ApiErrorResponse? errorResponse = await response.Content.ReadFromJsonAsync(ApiJsonSerializerContext.Default.ApiErrorResponse, - cancellationToken) + cancellationToken) .ConfigureAwait(false); if ( errorResponse is not null ) { return new ApiResponse { - ErrorResponse = errorResponse + ErrorResponse = errorResponse, }; } diff --git a/src/Visus.AddressValidation.Integration.FedEx/Http/FedExAddressValidationRequest.cs b/src/Visus.AddressValidation.Integration.FedEx/Http/FedExAddressValidationRequest.cs index 2d8d8c0..bbe64d8 100644 --- a/src/Visus.AddressValidation.Integration.FedEx/Http/FedExAddressValidationRequest.cs +++ b/src/Visus.AddressValidation.Integration.FedEx/Http/FedExAddressValidationRequest.cs @@ -1,9 +1,8 @@ -using System.Text.Json.Serialization; -using Visus.AddressValidation.Integration.FedEx.Serialization.Json; - namespace Visus.AddressValidation.Integration.FedEx.Http; +using System.Text.Json.Serialization; using AddressValidation.Http; +using Serialization.Json; /// /// Representation of a uniformed address validation request to FedEx. diff --git a/src/Visus.AddressValidation.Integration.FedEx/Http/FedExAuthenticationClient.cs b/src/Visus.AddressValidation.Integration.FedEx/Http/FedExAuthenticationClient.cs index 3eb054a..260b43a 100644 --- a/src/Visus.AddressValidation.Integration.FedEx/Http/FedExAuthenticationClient.cs +++ b/src/Visus.AddressValidation.Integration.FedEx/Http/FedExAuthenticationClient.cs @@ -41,7 +41,7 @@ public FedExAuthenticationClient(IConfiguration configuration, { ClientEnvironment.DEVELOPMENT => Constants.DevelopmentEndpointBaseUri, ClientEnvironment.PRODUCTION => Constants.ProductionEndpointBaseUri, - _ => Constants.DevelopmentEndpointBaseUri + _ => Constants.DevelopmentEndpointBaseUri, }; Uri requestUri = new(baseUri, "/oauth/token"); @@ -50,7 +50,7 @@ public FedExAuthenticationClient(IConfiguration configuration, [ new("client_id", clientId), new("client_secret", clientSecret), - new("grant_type", "client_credentials") + new("grant_type", "client_credentials"), ]; using HttpRequestMessage request = new(HttpMethod.Post, requestUri); @@ -64,7 +64,7 @@ public FedExAuthenticationClient(IConfiguration configuration, } return await response.Content.ReadFromJsonAsync(DefaultJsonSerializerContext.Default.TokenResponse, - cancellationToken) + cancellationToken) .ConfigureAwait(false); } } diff --git a/src/Visus.AddressValidation.Integration.FedEx/Model/AddressValidationResponse.cs b/src/Visus.AddressValidation.Integration.FedEx/Model/AddressValidationResponse.cs index 2c45ed1..a9a796c 100644 --- a/src/Visus.AddressValidation.Integration.FedEx/Model/AddressValidationResponse.cs +++ b/src/Visus.AddressValidation.Integration.FedEx/Model/AddressValidationResponse.cs @@ -5,7 +5,6 @@ namespace Visus.AddressValidation.Integration.FedEx.Model; using AddressValidation.Model; using AddressValidation.Validation; using Http; -using Validation; internal sealed class AddressValidationResponse : AbstractAddressValidationResponse { @@ -28,13 +27,13 @@ public AddressValidationResponse(ApiResponse response, IValidationResult? valida PostalCode = primaryAddress.PostalCode; StateOrProvince = primaryAddress.StateOrProvince; IsResidential = primaryAddress.Classification == AddressClassification.RESIDENTIAL; - + Dictionary customResponseData = new(StringComparer.OrdinalIgnoreCase); - + customResponseData.Merge(response.GetCustomResponseData()); customResponseData.Merge(primaryAddress.GetCustomResponseData()); customResponseData.Merge(primaryAddress.Attributes.GetCustomResponseData()); - + CustomResponseData = customResponseData; } } diff --git a/src/Visus.AddressValidation.Integration.FedEx/Serialization/Json/AddressValidationRequestConverter.cs b/src/Visus.AddressValidation.Integration.FedEx/Serialization/Json/AddressValidationRequestConverter.cs index a575f02..deeee65 100644 --- a/src/Visus.AddressValidation.Integration.FedEx/Serialization/Json/AddressValidationRequestConverter.cs +++ b/src/Visus.AddressValidation.Integration.FedEx/Serialization/Json/AddressValidationRequestConverter.cs @@ -38,12 +38,13 @@ public override void Write(Utf8JsonWriter writer, FedExAddressValidationRequest? writer.WriteStartArray(AddressesToValidatePropertyName); writer.WriteStartObject(); writer.WriteStartObject(AddressPropertyName); - + writer.WriteStartArray(StreetLinesPropertyName); foreach ( string addressLine in value.AddressLines ) { writer.WriteStringValue(addressLine); } + writer.WriteEndArray(); if ( !string.IsNullOrWhiteSpace(value.CityOrTown) ) @@ -60,9 +61,9 @@ public override void Write(Utf8JsonWriter writer, FedExAddressValidationRequest? { writer.WriteString(PostalCodePropertyName, value.PostalCode); } - + writer.WriteString(CountryCodePropertyName, value.Country.Value.ToString()); - + writer.WriteEndObject(); writer.WriteEndObject(); writer.WriteEndArray(); diff --git a/src/Visus.AddressValidation.Integration.FedEx/Services/AddressValidationService.cs b/src/Visus.AddressValidation.Integration.FedEx/Services/AddressValidationService.cs index d2048cf..591f22b 100644 --- a/src/Visus.AddressValidation.Integration.FedEx/Services/AddressValidationService.cs +++ b/src/Visus.AddressValidation.Integration.FedEx/Services/AddressValidationService.cs @@ -3,7 +3,6 @@ namespace Visus.AddressValidation.Integration.FedEx.Services; using AddressValidation.Services; using AddressValidation.Validation; using Http; -using Validation; internal sealed class AddressValidationService : AbstractAddressValidationService { diff --git a/src/Visus.AddressValidation.Integration.FedEx/Validation/ApiResponseValidator.cs b/src/Visus.AddressValidation.Integration.FedEx/Validation/ApiResponseValidator.cs index 708d9f4..7fa02b2 100644 --- a/src/Visus.AddressValidation.Integration.FedEx/Validation/ApiResponseValidator.cs +++ b/src/Visus.AddressValidation.Integration.FedEx/Validation/ApiResponseValidator.cs @@ -27,7 +27,7 @@ protected override ValueTask PreValidateAsync(ApiResponse instance, ISet results, CancellationToken cancellationToken = default) { - Debug.Assert(instance.Result != null, "instance.Result != null"); + Debug.Assert(instance.Result != null); for ( int i = 0; i < instance.Result.ResolvedAddresses.Length; i++ ) { @@ -37,8 +37,8 @@ protected override ValueTask ValidateAsync(ApiResponse instance, ISet - - net8.0 - true - + + net10.0 + true + - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + - - - + + + + + + + - - - - diff --git a/src/Visus.AddressValidation.Integration.FedEx/packages.lock.json b/src/Visus.AddressValidation.Integration.FedEx/packages.lock.json deleted file mode 100644 index 96922e6..0000000 --- a/src/Visus.AddressValidation.Integration.FedEx/packages.lock.json +++ /dev/null @@ -1,353 +0,0 @@ -{ - "version": 2, - "dependencies": { - "net8.0": { - "Microsoft.Extensions.Caching.Memory": { - "type": "Direct", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "J77oUeVZXdMoiUiCPkL4v13KrNRuMQnSHHw78cTh/2ZidyiMFm8jhu49OUKvNydMUX8ZcuM5g8uohW18YaglMw==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "Direct", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "+ZxxZzcVU+IEzq12GItUzf/V3mEc5nSLiXijwvDc4zyhbjvSZZ043giSZqGnhakrjwRWjkerIHPrRwm9okEIpw==" - }, - "Microsoft.Extensions.Http": { - "type": "Direct", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "QEa12ESaPAKR3M40N8dawVd+LPOgxCrGsUmC7Myfhn44AQiWh7X9PiTAagrAnJSaGqsb+yx+KRNSjrm8wx1TVQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Diagnostics": "9.0.11", - "Microsoft.Extensions.Logging": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Http.Resilience": { - "type": "Direct", - "requested": "[9.10.0, )", - "resolved": "9.10.0", - "contentHash": "4Bt58q+Oqpj4VYm3T7hcmsb1zVhmUTNNggDkjlWBIv3bv6MVRPGqIokK2tRHsD8bM4i3GkJLRWe8lQwbsWS6PQ==", - "dependencies": { - "Microsoft.Extensions.Http.Diagnostics": "9.10.0", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Resilience": "9.10.0" - } - }, - "Microsoft.NET.ILLink.Tasks": { - "type": "Direct", - "requested": "[8.0.22, )", - "resolved": "8.0.22", - "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" - }, - "Microsoft.SourceLink.GitHub": { - "type": "Direct", - "requested": "[8.0.0, )", - "resolved": "8.0.0", - "contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==", - "dependencies": { - "Microsoft.Build.Tasks.Git": "8.0.0", - "Microsoft.SourceLink.Common": "8.0.0" - } - }, - "Microsoft.Build.Tasks.Git": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ==" - }, - "Microsoft.Extensions.AmbientMetadata.Application": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "ndm/eoOzk61Csn+ojv5z3Kt7YWAdUNR8ruFaf1b69kSbeqDPoV96f1GR1OWTIrCN9bm83V8CSkhvnnG+LrLTvg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "Tgu40iIg2Kr8s+BoOhb8r8kQfcagwm1VnpnMZA9fd/sD8Hlj13cNpyCfLRrYEBP+VmfmaoficQvRNEUqH+F4mw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.ObjectPool": "8.0.21" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "4ceMQRCIMP9AxxZOQ0k+xYXCfgSEmEsnt6s0o/KkpeLqwm3kGKBbsiJlyMk56GnKJtk4SI7nTpIIzb+Qdk+FMQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "iPE1jROL5uK/6iJSRzwpEIJt6BuANN36Io+6bLss67JVjbG6DdVedrMnB9nqsxs+Lx3X9RxvARTgFsUgP0MB0g==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "UquyDzvz0EneIQrrU67GJkIgynS+VD7t+RDtNv6VgKMOFrLBjldn6hzlXppGGecFMvAkMTqn4T8RYvzw7j7fQA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection.AutoActivation": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "qk5+lY0MUl7Y77TjM6HzfQPOY4CqoTg281OddyDC5iU2hf+cIxhx0VbNuJH77vqB6qyCP1OsuQmCzvlpf9yxBQ==", - "dependencies": { - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1" - } - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "WkriTCwxW0QbIgPYXGy329wQKcS4lmstwwysCHcjok2acPd626ysPcwMpw1pSBNzkdkMsqcbcJLlpVc9kP/YiQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "9.0.11", - "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.11", - "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "D9gu4weEmvWGuz8zp5xwsOr0ldmWphMKr7+IW66hG4rnrgpMLtTWoOINBOX5mcRTPL39+AVd3BJdc4HTvl2NrA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "SRJgt408OA/+v2o47Kjx8Wf+rbCJMmTsbsnkuzVzeP9xfcn4dIoMJXLCKiRlDNzJ3pXLYrXmkyOSY81BehoVHw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", - "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.Http.Diagnostics": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "3IJjOPm4CRmv7zzjPV+RCyvS4kWJ9BNr1k/MWgRTQds6LcIhAgwh+ToZ8O4fKMFlme0EGLvTm27ARKqp468pQw==", - "dependencies": { - "Microsoft.Extensions.Http": "8.0.1", - "Microsoft.Extensions.Telemetry": "9.10.0", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.Extensions.Logging": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "PVHYgMmMZFEE3PGpc7oZ9CnoyNonNyT5klrV9pNIzCPxL12FpQ7kNhliXAwowmtaDVBmKnG/1db6d7gqPwDj8g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "QWwTrsgOnJMmn+XUslm8D2H1n3PkP/u/v52FODtyBc/k4W9r3i2vcXXeeX/upnzllJYRRbrzVzT0OclfNJtBJA==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.Configuration.Binder": "8.0.2", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Logging": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2", - "Microsoft.Extensions.Options": "8.0.2", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "8.0.21", - "contentHash": "UBuyxD9CqasYKmwP41Skar2+f2Bk47V3NAPXh3a3Rxsmt2NTB1qynDU8zHkHWEts/07QykmzYAWLHPgHsROe0w==" - }, - "Microsoft.Extensions.Options": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HX4M3BLkW1dtByMKHDVq6r7Jy6e4hf8NDzHpIgz7C8BtYk9JQHhfYX5c1UheQTD5Veg1yBhz/cD9C8vtrGrk9w==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HUzr4c1eMXCQN8Yre2JdCzYmLJAecFGVXfByVhjEY4jBaHIs8EAxdv72WMUa2GcROlkYPbYNzMbcqJPMiznHxw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Configuration.Binder": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==" - }, - "Microsoft.Extensions.Resilience": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "tNptjYbHq73emZok4HBbpV41Afwoclga5LaKux8RV27lOA2lyQxeJFKNTWYQauJmWxxwXmwG7bgitbnIDh4eXA==", - "dependencies": { - "Microsoft.Extensions.Diagnostics": "8.0.1", - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "9.10.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0", - "Polly.Extensions": "8.4.2", - "Polly.RateLimiting": "8.4.2" - } - }, - "Microsoft.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "FGEOTEjMB+1T69PLp5GrG4UOsIjcdNQcoiXpC+KV9NRejl6vSMLhVqQ6g6c+cxLXzx8xc2J90GAMhD1wPHjKHg==", - "dependencies": { - "Microsoft.Extensions.AmbientMetadata.Application": "9.10.0", - "Microsoft.Extensions.DependencyInjection.AutoActivation": "9.10.0", - "Microsoft.Extensions.Logging.Configuration": "8.0.1", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0" - } - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "hJflG5if8NqElmybxXDf38d4EPopOo9H+Qg6l5LKTsavqE4CFdA5DIPb9+jjAeL22FN+rs6KuuEIuBPS4PNXvw==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "9.10.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.3", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Options": "8.0.2" - } - }, - "Microsoft.SourceLink.Common": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" - }, - "Polly.Extensions": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0", - "Polly.Core": "8.4.2" - } - }, - "Polly.RateLimiting": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", - "dependencies": { - "Polly.Core": "8.4.2", - "System.Threading.RateLimiting": "8.0.0" - } - }, - "System.Diagnostics.DiagnosticSource": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "/QzMFklOm8Ak//YB0I2kR+ByxUndT63ucrRWQm0xZsuLExJWrVDeGKtYZDuBackd9dThbwMdOotIEc4c4KwJiw==" - }, - "System.IO.Pipelines": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==" - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "visus.addressvalidation": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "[10.0.0, )", - "Microsoft.Extensions.Configuration.Abstractions": "[10.0.0, )" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "Zcoy6H9mSoGyvr7UvlGokEZrlZkcPCICPZr8mCsSt9U/N8eeCwCXwKF5bShdA66R0obxBCwP4AxomQHvVkC/uA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "d2kDKnCsJvY7mBVhcjPSp9BkJk48DsaHPg5u+Oy4f8XaOqnEedRy/USyvnpHL92wpJ6DrTPy7htppUUzskbCXQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "UKWFTDwtZQIoypyt1YPVsxTnDK+0sKn26+UeSGeNlkRQddrkt9EC6kP4g94rgO/WOZkz94bKNlF1dVZN3QfPFQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - } - } - } -} \ No newline at end of file diff --git a/src/Visus.AddressValidation.Integration.Google/Abstractions/ConfirmationLevel.cs b/src/Visus.AddressValidation.Integration.Google/Abstractions/ConfirmationLevel.cs index 845299b..7fd032e 100644 --- a/src/Visus.AddressValidation.Integration.Google/Abstractions/ConfirmationLevel.cs +++ b/src/Visus.AddressValidation.Integration.Google/Abstractions/ConfirmationLevel.cs @@ -18,5 +18,5 @@ internal enum ConfirmationLevel UNCONFIRMED_BUT_PLAUSIBLE = 2, [Description("This component was not confirmed and is likely to be wrong. For example, a neighborhood that does not fit the rest of the address.")] - UNCONFIRMED_AND_SUSPICIOUS = 3 + UNCONFIRMED_AND_SUSPICIOUS = 3, } diff --git a/src/Visus.AddressValidation.Integration.Google/Abstractions/Granularity.cs b/src/Visus.AddressValidation.Integration.Google/Abstractions/Granularity.cs index 1b0deb2..fdd0c4d 100644 --- a/src/Visus.AddressValidation.Integration.Google/Abstractions/Granularity.cs +++ b/src/Visus.AddressValidation.Integration.Google/Abstractions/Granularity.cs @@ -27,5 +27,5 @@ internal enum Granularity ROUTE = 5, [Description("All other granularities, which are bucketed together since they are not deliverable.")] - OTHER = 6 + OTHER = 6, } diff --git a/src/Visus.AddressValidation.Integration.Google/Abstractions/VerificationResult.cs b/src/Visus.AddressValidation.Integration.Google/Abstractions/VerificationResult.cs index 7715077..26b013b 100644 --- a/src/Visus.AddressValidation.Integration.Google/Abstractions/VerificationResult.cs +++ b/src/Visus.AddressValidation.Integration.Google/Abstractions/VerificationResult.cs @@ -8,6 +8,6 @@ internal enum VerificationResult UNKNOWN = 0, UNVERIFIED = 1, #pragma warning disable CA1707 - PARTIALLY_VERIFIED = 2 + PARTIALLY_VERIFIED = 2, #pragma warning restore CA1707 } diff --git a/src/Visus.AddressValidation.Integration.Google/Constants.cs b/src/Visus.AddressValidation.Integration.Google/Constants.cs index 7af95c2..2a8d3d1 100644 --- a/src/Visus.AddressValidation.Integration.Google/Constants.cs +++ b/src/Visus.AddressValidation.Integration.Google/Constants.cs @@ -69,6 +69,6 @@ public static class Constants CountryCode.SG, CountryCode.SI, CountryCode.SK, - CountryCode.US + CountryCode.US, }; } diff --git a/src/Visus.AddressValidation.Integration.Google/Extensions/ServiceCollectionExtensions.cs b/src/Visus.AddressValidation.Integration.Google/Extensions/ServiceCollectionExtensions.cs index 623e2eb..dd96d06 100644 --- a/src/Visus.AddressValidation.Integration.Google/Extensions/ServiceCollectionExtensions.cs +++ b/src/Visus.AddressValidation.Integration.Google/Extensions/ServiceCollectionExtensions.cs @@ -35,12 +35,12 @@ public static IServiceCollection AddGoogleAddressValidation(this IServiceCollect .AddStandardResilienceHandler(); services.AddHttpClient() - .RedactLoggedHeaders(["Authorization", "X-Goog-User-Project"]) + .RedactLoggedHeaders(["Authorization", "X-Goog-User-Project",]) .AddHttpMessageHandler(provider => - { - GoogleAuthenticationService authenticationService = provider.GetRequiredService(); - return new BearerTokenDelegatingHandler(authenticationService); - }) + { + GoogleAuthenticationService authenticationService = provider.GetRequiredService(); + return new BearerTokenDelegatingHandler(authenticationService); + }) .AddStandardResilienceHandler(); diff --git a/src/Visus.AddressValidation.Integration.Google/Http/GoogleAddressValidationClient.cs b/src/Visus.AddressValidation.Integration.Google/Http/GoogleAddressValidationClient.cs index 66bb3c9..52064b2 100644 --- a/src/Visus.AddressValidation.Integration.Google/Http/GoogleAddressValidationClient.cs +++ b/src/Visus.AddressValidation.Integration.Google/Http/GoogleAddressValidationClient.cs @@ -26,26 +26,26 @@ public GoogleAddressValidationClient(IConfiguration configuration, HttpClient ht private async ValueTask ValidateAddressInternalAsync(GoogleAddressValidationRequest request, CancellationToken cancellationToken) { using HttpResponseMessage response = await _httpClient.PostAsJsonAsync("/v1:validateAddress", - request, - GoogleJsonSerializerContext.Default.GoogleAddressValidationRequest, - cancellationToken) + request, + GoogleJsonSerializerContext.Default.GoogleAddressValidationRequest, + cancellationToken) .ConfigureAwait(false); if ( response.IsSuccessStatusCode ) { return await response.Content.ReadFromJsonAsync(ApiJsonSerializerContext.Default.ApiResponse, - cancellationToken) + cancellationToken) .ConfigureAwait(false); } ApiErrorResponse? errorResponse = await response.Content.ReadFromJsonAsync(ApiJsonSerializerContext.Default.ApiErrorResponse, - cancellationToken) + cancellationToken) .ConfigureAwait(false); if ( errorResponse is not null ) { return new ApiResponse { - ErrorResponse = errorResponse + ErrorResponse = errorResponse, }; } diff --git a/src/Visus.AddressValidation.Integration.Google/Http/GoogleAuthenticationClient.cs b/src/Visus.AddressValidation.Integration.Google/Http/GoogleAuthenticationClient.cs index 6a0caa7..ff627e4 100644 --- a/src/Visus.AddressValidation.Integration.Google/Http/GoogleAuthenticationClient.cs +++ b/src/Visus.AddressValidation.Integration.Google/Http/GoogleAuthenticationClient.cs @@ -39,7 +39,7 @@ public GoogleAuthenticationClient(IConfiguration configuration, HttpClient httpC [ new(JwtRegisteredClaimNames.Iat, currentDateTimeOffset.ToUnixTimeSeconds().ToString(CultureInfo.InvariantCulture), ClaimValueTypes.Integer64), new(JwtRegisteredClaimNames.Exp, currentDateTimeOffset.AddMinutes(60).ToUnixTimeSeconds().ToString(CultureInfo.InvariantCulture), ClaimValueTypes.Integer64), - new("scope", "https://www.googleapis.com/auth/cloud-platform") + new("scope", "https://www.googleapis.com/auth/cloud-platform"), ]; string[] privateKeyBlocks = privateKey.Split('-', StringSplitOptions.RemoveEmptyEntries); @@ -55,14 +55,14 @@ public GoogleAuthenticationClient(IConfiguration configuration, HttpClient httpC { CryptoProviderFactory = new CryptoProviderFactory { - CacheSignatureProviders = false - } + CacheSignatureProviders = false, + }, }; JwtSecurityToken token = new(issuer, - AuthenticationUrl.ToString(), - claims, - signingCredentials: credentials); + AuthenticationUrl.ToString(), + claims, + signingCredentials: credentials); string? jwtToken = new JwtSecurityTokenHandler().WriteToken(token); if ( string.IsNullOrWhiteSpace(jwtToken) ) @@ -73,7 +73,7 @@ public GoogleAuthenticationClient(IConfiguration configuration, HttpClient httpC List> payload = [ new("grant_type", "urn:ietf:params:oauth:grant-type:jwt-bearer"), - new("assertion", jwtToken) + new("assertion", jwtToken), ]; using HttpRequestMessage request = new(HttpMethod.Post, AuthenticationUrl); @@ -89,7 +89,7 @@ public GoogleAuthenticationClient(IConfiguration configuration, HttpClient httpC } return await response.Content.ReadFromJsonAsync(DefaultJsonSerializerContext.Default.TokenResponse, - cancellationToken) + cancellationToken) .ConfigureAwait(false); } } diff --git a/src/Visus.AddressValidation.Integration.Google/Services/GoogleAuthenticationService.cs b/src/Visus.AddressValidation.Integration.Google/Services/GoogleAuthenticationService.cs index 2addfe9..9bdcc31 100644 --- a/src/Visus.AddressValidation.Integration.Google/Services/GoogleAuthenticationService.cs +++ b/src/Visus.AddressValidation.Integration.Google/Services/GoogleAuthenticationService.cs @@ -11,7 +11,7 @@ internal sealed class GoogleAuthenticationService : AbstractAuthenticationServic public GoogleAuthenticationService(IDistributedCache cache, IConfiguration configuration, - GoogleAuthenticationClient authenticationClient) + GoogleAuthenticationClient authenticationClient) : base(authenticationClient, cache) { _configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); diff --git a/src/Visus.AddressValidation.Integration.Google/Validation/ApiResponseValidator.cs b/src/Visus.AddressValidation.Integration.Google/Validation/ApiResponseValidator.cs index 444b151..6714d1d 100644 --- a/src/Visus.AddressValidation.Integration.Google/Validation/ApiResponseValidator.cs +++ b/src/Visus.AddressValidation.Integration.Google/Validation/ApiResponseValidator.cs @@ -10,13 +10,13 @@ internal sealed class ApiResponseValidator : AbstractValidator private readonly HashSet _confirmedGranularity = [ Granularity.PREMISE, - Granularity.SUB_PREMISE + Granularity.SUB_PREMISE, ]; private readonly HashSet _tenuousConfirmations = [ ConfirmationLevel.UNCONFIRMED_BUT_PLAUSIBLE, - ConfirmationLevel.UNCONFIRMED_AND_SUSPICIOUS + ConfirmationLevel.UNCONFIRMED_AND_SUSPICIOUS, ]; private readonly HashSet _tenuousGranularity = @@ -24,7 +24,7 @@ internal sealed class ApiResponseValidator : AbstractValidator Granularity.BLOCK, Granularity.GRANULARITY_UNSPECIFIED, Granularity.PREMISE_PROXIMITY, - Granularity.ROUTE + Granularity.ROUTE, ]; protected override ValueTask PreValidateAsync(ApiResponse instance, ISet results, CancellationToken cancellationToken = default) @@ -52,7 +52,7 @@ protected override ValueTask PreValidateAsync(ApiResponse instance, ISet PreValidateAsync(ApiResponse instance, ISet results, CancellationToken cancellationToken = default) { - Debug.Assert(instance.Result != null, "instance.Result != null"); + Debug.Assert(instance.Result != null); // provide a validation warning if the validationGranularity is BLOCK or GRANULARITY_UNSPECIFIED or PREMISE_PROXIMITY // or ROUTE along with having either hasInferredComponents = true or hasReplacedComponents = true @@ -82,7 +82,7 @@ protected override ValueTask ValidateAsync(ApiResponse instance, ISet - - net8.0 - true - + + net10.0 + true + - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + - - - + + + - - - + + + diff --git a/src/Visus.AddressValidation.Integration.Google/packages.lock.json b/src/Visus.AddressValidation.Integration.Google/packages.lock.json deleted file mode 100644 index 357d0a5..0000000 --- a/src/Visus.AddressValidation.Integration.Google/packages.lock.json +++ /dev/null @@ -1,394 +0,0 @@ -{ - "version": 2, - "dependencies": { - "net8.0": { - "Microsoft.Extensions.Caching.Memory": { - "type": "Direct", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "J77oUeVZXdMoiUiCPkL4v13KrNRuMQnSHHw78cTh/2ZidyiMFm8jhu49OUKvNydMUX8ZcuM5g8uohW18YaglMw==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "Direct", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "+ZxxZzcVU+IEzq12GItUzf/V3mEc5nSLiXijwvDc4zyhbjvSZZ043giSZqGnhakrjwRWjkerIHPrRwm9okEIpw==" - }, - "Microsoft.Extensions.Http": { - "type": "Direct", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "QEa12ESaPAKR3M40N8dawVd+LPOgxCrGsUmC7Myfhn44AQiWh7X9PiTAagrAnJSaGqsb+yx+KRNSjrm8wx1TVQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Diagnostics": "9.0.11", - "Microsoft.Extensions.Logging": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Http.Resilience": { - "type": "Direct", - "requested": "[9.10.0, )", - "resolved": "9.10.0", - "contentHash": "4Bt58q+Oqpj4VYm3T7hcmsb1zVhmUTNNggDkjlWBIv3bv6MVRPGqIokK2tRHsD8bM4i3GkJLRWe8lQwbsWS6PQ==", - "dependencies": { - "Microsoft.Extensions.Http.Diagnostics": "9.10.0", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Resilience": "9.10.0" - } - }, - "Microsoft.IdentityModel.Tokens": { - "type": "Direct", - "requested": "[8.15.0, )", - "resolved": "8.15.0", - "contentHash": "zUE9ysJXBtXlHHRtcRK3Sp8NzdCI1z/BRDTXJQ2TvBoI0ENRtnufYIep0O5TSCJRJGDwwuLTUx+l/bEYZUxpCA==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.IdentityModel.Logging": "8.15.0" - } - }, - "Microsoft.NET.ILLink.Tasks": { - "type": "Direct", - "requested": "[8.0.22, )", - "resolved": "8.0.22", - "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" - }, - "Microsoft.SourceLink.GitHub": { - "type": "Direct", - "requested": "[8.0.0, )", - "resolved": "8.0.0", - "contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==", - "dependencies": { - "Microsoft.Build.Tasks.Git": "8.0.0", - "Microsoft.SourceLink.Common": "8.0.0" - } - }, - "System.IdentityModel.Tokens.Jwt": { - "type": "Direct", - "requested": "[8.15.0, )", - "resolved": "8.15.0", - "contentHash": "dpodi7ixz6hxK8YCBYAWzm0IA8JYXoKcz0hbCbNifo519//rjUI0fBD8rfNr+IGqq+2gm4oQoXwHk09LX5SqqQ==", - "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "8.15.0", - "Microsoft.IdentityModel.Tokens": "8.15.0" - } - }, - "Microsoft.Build.Tasks.Git": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ==" - }, - "Microsoft.Extensions.AmbientMetadata.Application": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "ndm/eoOzk61Csn+ojv5z3Kt7YWAdUNR8ruFaf1b69kSbeqDPoV96f1GR1OWTIrCN9bm83V8CSkhvnnG+LrLTvg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "Tgu40iIg2Kr8s+BoOhb8r8kQfcagwm1VnpnMZA9fd/sD8Hlj13cNpyCfLRrYEBP+VmfmaoficQvRNEUqH+F4mw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.ObjectPool": "8.0.21" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "4ceMQRCIMP9AxxZOQ0k+xYXCfgSEmEsnt6s0o/KkpeLqwm3kGKBbsiJlyMk56GnKJtk4SI7nTpIIzb+Qdk+FMQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "iPE1jROL5uK/6iJSRzwpEIJt6BuANN36Io+6bLss67JVjbG6DdVedrMnB9nqsxs+Lx3X9RxvARTgFsUgP0MB0g==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "UquyDzvz0EneIQrrU67GJkIgynS+VD7t+RDtNv6VgKMOFrLBjldn6hzlXppGGecFMvAkMTqn4T8RYvzw7j7fQA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection.AutoActivation": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "qk5+lY0MUl7Y77TjM6HzfQPOY4CqoTg281OddyDC5iU2hf+cIxhx0VbNuJH77vqB6qyCP1OsuQmCzvlpf9yxBQ==", - "dependencies": { - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1" - } - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "WkriTCwxW0QbIgPYXGy329wQKcS4lmstwwysCHcjok2acPd626ysPcwMpw1pSBNzkdkMsqcbcJLlpVc9kP/YiQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "9.0.11", - "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.11", - "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "D9gu4weEmvWGuz8zp5xwsOr0ldmWphMKr7+IW66hG4rnrgpMLtTWoOINBOX5mcRTPL39+AVd3BJdc4HTvl2NrA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "SRJgt408OA/+v2o47Kjx8Wf+rbCJMmTsbsnkuzVzeP9xfcn4dIoMJXLCKiRlDNzJ3pXLYrXmkyOSY81BehoVHw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", - "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.Http.Diagnostics": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "3IJjOPm4CRmv7zzjPV+RCyvS4kWJ9BNr1k/MWgRTQds6LcIhAgwh+ToZ8O4fKMFlme0EGLvTm27ARKqp468pQw==", - "dependencies": { - "Microsoft.Extensions.Http": "8.0.1", - "Microsoft.Extensions.Telemetry": "9.10.0", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.Extensions.Logging": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "PVHYgMmMZFEE3PGpc7oZ9CnoyNonNyT5klrV9pNIzCPxL12FpQ7kNhliXAwowmtaDVBmKnG/1db6d7gqPwDj8g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "QWwTrsgOnJMmn+XUslm8D2H1n3PkP/u/v52FODtyBc/k4W9r3i2vcXXeeX/upnzllJYRRbrzVzT0OclfNJtBJA==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.Configuration.Binder": "8.0.2", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Logging": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2", - "Microsoft.Extensions.Options": "8.0.2", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "8.0.21", - "contentHash": "UBuyxD9CqasYKmwP41Skar2+f2Bk47V3NAPXh3a3Rxsmt2NTB1qynDU8zHkHWEts/07QykmzYAWLHPgHsROe0w==" - }, - "Microsoft.Extensions.Options": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HX4M3BLkW1dtByMKHDVq6r7Jy6e4hf8NDzHpIgz7C8BtYk9JQHhfYX5c1UheQTD5Veg1yBhz/cD9C8vtrGrk9w==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HUzr4c1eMXCQN8Yre2JdCzYmLJAecFGVXfByVhjEY4jBaHIs8EAxdv72WMUa2GcROlkYPbYNzMbcqJPMiznHxw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Configuration.Binder": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==" - }, - "Microsoft.Extensions.Resilience": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "tNptjYbHq73emZok4HBbpV41Afwoclga5LaKux8RV27lOA2lyQxeJFKNTWYQauJmWxxwXmwG7bgitbnIDh4eXA==", - "dependencies": { - "Microsoft.Extensions.Diagnostics": "8.0.1", - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "9.10.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0", - "Polly.Extensions": "8.4.2", - "Polly.RateLimiting": "8.4.2" - } - }, - "Microsoft.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "FGEOTEjMB+1T69PLp5GrG4UOsIjcdNQcoiXpC+KV9NRejl6vSMLhVqQ6g6c+cxLXzx8xc2J90GAMhD1wPHjKHg==", - "dependencies": { - "Microsoft.Extensions.AmbientMetadata.Application": "9.10.0", - "Microsoft.Extensions.DependencyInjection.AutoActivation": "9.10.0", - "Microsoft.Extensions.Logging.Configuration": "8.0.1", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0" - } - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "hJflG5if8NqElmybxXDf38d4EPopOo9H+Qg6l5LKTsavqE4CFdA5DIPb9+jjAeL22FN+rs6KuuEIuBPS4PNXvw==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "9.10.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.3", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Options": "8.0.2" - } - }, - "Microsoft.IdentityModel.Abstractions": { - "type": "Transitive", - "resolved": "8.15.0", - "contentHash": "e/DApa1GfxUqHSBHcpiQg8yaghKAvFVBQFcWh25jNoRobDZbduTUACY8bZ54eeGWXvimGmEDdF0zkS5Dq16XPQ==" - }, - "Microsoft.IdentityModel.JsonWebTokens": { - "type": "Transitive", - "resolved": "8.15.0", - "contentHash": "3513f5VzvOZy3ELd42wGnh1Q3e83tlGAuXFSNbENpgWYoAhLLzgFtd5PiaOPGAU0gqKhYGVzKavghLUGfX3HQg==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "8.15.0" - } - }, - "Microsoft.IdentityModel.Logging": { - "type": "Transitive", - "resolved": "8.15.0", - "contentHash": "1gJLjhy0LV2RQMJ9NGzi5Tnb2l+c37o8D8Lrk2mrvmb6OQHZ7XJstd/XxvncXgBpad4x9CGXdipbZzJJCXKyAg==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.15.0" - } - }, - "Microsoft.SourceLink.Common": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" - }, - "Polly.Extensions": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0", - "Polly.Core": "8.4.2" - } - }, - "Polly.RateLimiting": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", - "dependencies": { - "Polly.Core": "8.4.2", - "System.Threading.RateLimiting": "8.0.0" - } - }, - "System.Diagnostics.DiagnosticSource": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "/QzMFklOm8Ak//YB0I2kR+ByxUndT63ucrRWQm0xZsuLExJWrVDeGKtYZDuBackd9dThbwMdOotIEc4c4KwJiw==" - }, - "System.IO.Pipelines": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==" - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "visus.addressvalidation": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "[10.0.0, )", - "Microsoft.Extensions.Configuration.Abstractions": "[10.0.0, )" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "Zcoy6H9mSoGyvr7UvlGokEZrlZkcPCICPZr8mCsSt9U/N8eeCwCXwKF5bShdA66R0obxBCwP4AxomQHvVkC/uA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "d2kDKnCsJvY7mBVhcjPSp9BkJk48DsaHPg5u+Oy4f8XaOqnEedRy/USyvnpHL92wpJ6DrTPy7htppUUzskbCXQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "UKWFTDwtZQIoypyt1YPVsxTnDK+0sKn26+UeSGeNlkRQddrkt9EC6kP4g94rgO/WOZkz94bKNlF1dVZN3QfPFQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - } - } - } -} \ No newline at end of file diff --git a/src/Visus.AddressValidation.Integration.PitneyBowes/Abstractions/StatusCode.cs b/src/Visus.AddressValidation.Integration.PitneyBowes/Abstractions/StatusCode.cs index 908843a..f4b2206 100644 --- a/src/Visus.AddressValidation.Integration.PitneyBowes/Abstractions/StatusCode.cs +++ b/src/Visus.AddressValidation.Integration.PitneyBowes/Abstractions/StatusCode.cs @@ -9,5 +9,5 @@ internal enum StatusCode { VALIDATED_CHANGED, VALIDATED_AND_NOT_CHANGED, - NOT_CHANGED + NOT_CHANGED, } diff --git a/src/Visus.AddressValidation.Integration.PitneyBowes/Constants.cs b/src/Visus.AddressValidation.Integration.PitneyBowes/Constants.cs index b76e8a7..20fa139 100644 --- a/src/Visus.AddressValidation.Integration.PitneyBowes/Constants.cs +++ b/src/Visus.AddressValidation.Integration.PitneyBowes/Constants.cs @@ -42,6 +42,6 @@ public static class Constants /// public static readonly IReadOnlySet SupportedCountries = new HashSet { - CountryCode.US + CountryCode.US, }; } diff --git a/src/Visus.AddressValidation.Integration.PitneyBowes/Extensions/ServiceCollectionExtensions.cs b/src/Visus.AddressValidation.Integration.PitneyBowes/Extensions/ServiceCollectionExtensions.cs index 6a7a15d..af57eaf 100644 --- a/src/Visus.AddressValidation.Integration.PitneyBowes/Extensions/ServiceCollectionExtensions.cs +++ b/src/Visus.AddressValidation.Integration.PitneyBowes/Extensions/ServiceCollectionExtensions.cs @@ -35,12 +35,12 @@ public static IServiceCollection AddPitneyBowesAddressValidation(this IServiceCo .AddStandardResilienceHandler(); services.AddHttpClient() - .RedactLoggedHeaders(["Authorization"]) + .RedactLoggedHeaders(["Authorization",]) .AddHttpMessageHandler(provider => - { - PitneyBowesAuthenticationService authenticationService = provider.GetRequiredService(); - return new BearerTokenDelegatingHandler(authenticationService); - }) + { + PitneyBowesAuthenticationService authenticationService = provider.GetRequiredService(); + return new BearerTokenDelegatingHandler(authenticationService); + }) .AddStandardResilienceHandler(); return services; diff --git a/src/Visus.AddressValidation.Integration.PitneyBowes/Http/PitneyBowesAddressValidationClient.cs b/src/Visus.AddressValidation.Integration.PitneyBowes/Http/PitneyBowesAddressValidationClient.cs index fbe58a5..0bc8f53 100644 --- a/src/Visus.AddressValidation.Integration.PitneyBowes/Http/PitneyBowesAddressValidationClient.cs +++ b/src/Visus.AddressValidation.Integration.PitneyBowes/Http/PitneyBowesAddressValidationClient.cs @@ -37,7 +37,7 @@ public PitneyBowesAddressValidationClient(IConfiguration configuration, { ClientEnvironment.DEVELOPMENT => Constants.DevelopmentEndpointBaseUri, ClientEnvironment.PRODUCTION => Constants.ProductionEndpointBaseUri, - _ => Constants.DevelopmentEndpointBaseUri + _ => Constants.DevelopmentEndpointBaseUri, }; Uri requestUri = request.IncludeSuggestions @@ -55,27 +55,27 @@ public PitneyBowesAddressValidationClient(IConfiguration configuration, if ( request.IncludeSuggestions ) { return await response.Content.ReadFromJsonAsync(ApiJsonSerializerContext.Default.ApiResponse, - cancellationToken) + cancellationToken) .ConfigureAwait(false); } ApiResponse.AddressResult? result = await response.Content.ReadFromJsonAsync(ApiJsonSerializerContext.Default.AddressResult, - cancellationToken) + cancellationToken) .ConfigureAwait(false); return new ApiResponse { - Result = result + Result = result, }; } ApiErrorResponse? errorResponse = await response.Content.ReadFromJsonAsync(ApiJsonSerializerContext.Default.ApiErrorResponse, - cancellationToken) + cancellationToken) .ConfigureAwait(false); if ( errorResponse is not null ) { return new ApiResponse { - ErrorResponse = errorResponse + ErrorResponse = errorResponse, }; } diff --git a/src/Visus.AddressValidation.Integration.PitneyBowes/Http/PitneyBowesAuthenticationClient.cs b/src/Visus.AddressValidation.Integration.PitneyBowes/Http/PitneyBowesAuthenticationClient.cs index 5fcf44f..ba27765 100644 --- a/src/Visus.AddressValidation.Integration.PitneyBowes/Http/PitneyBowesAuthenticationClient.cs +++ b/src/Visus.AddressValidation.Integration.PitneyBowes/Http/PitneyBowesAuthenticationClient.cs @@ -37,14 +37,14 @@ public PitneyBowesAuthenticationClient(IConfiguration configuration, HttpClient { ClientEnvironment.DEVELOPMENT => Constants.DevelopmentEndpointBaseUri, ClientEnvironment.PRODUCTION => Constants.ProductionEndpointBaseUri, - _ => Constants.DevelopmentEndpointBaseUri + _ => Constants.DevelopmentEndpointBaseUri, }; Uri requestUri = new(baseUri, "/oauth/token"); List> payload = [ - new("grant_type", "client_credentials") + new("grant_type", "client_credentials"), ]; using HttpRequestMessage request = new(HttpMethod.Post, requestUri); @@ -59,7 +59,7 @@ public PitneyBowesAuthenticationClient(IConfiguration configuration, HttpClient } return await response.Content.ReadFromJsonAsync(DefaultJsonSerializerContext.Default.TokenResponse, - cancellationToken) + cancellationToken) .ConfigureAwait(false); } } diff --git a/src/Visus.AddressValidation.Integration.PitneyBowes/Model/AddressValidationResponse.cs b/src/Visus.AddressValidation.Integration.PitneyBowes/Model/AddressValidationResponse.cs index e5ae09d..ab9290b 100644 --- a/src/Visus.AddressValidation.Integration.PitneyBowes/Model/AddressValidationResponse.cs +++ b/src/Visus.AddressValidation.Integration.PitneyBowes/Model/AddressValidationResponse.cs @@ -57,6 +57,6 @@ private static ReadOnlyCollection ListSuggestions(Ap .Select(s => new AddressSuggestionValidationResponse(s, response.Result.CountryCode, response.Result.PostalCode)) .ToHashSet(); - return new ReadOnlyCollection([.. results]); + return new ReadOnlyCollection([.. results,]); } } diff --git a/src/Visus.AddressValidation.Integration.PitneyBowes/Services/AddressValidationService.cs b/src/Visus.AddressValidation.Integration.PitneyBowes/Services/AddressValidationService.cs index c16e55d..035e8d8 100644 --- a/src/Visus.AddressValidation.Integration.PitneyBowes/Services/AddressValidationService.cs +++ b/src/Visus.AddressValidation.Integration.PitneyBowes/Services/AddressValidationService.cs @@ -10,7 +10,7 @@ internal sealed class AddressValidationService : AbstractAddressValidationServic public AddressValidationService(PitneyBowesAddressValidationClient client, IValidator requestValidator, - IValidator responseValidator) + IValidator responseValidator) : base(requestValidator, responseValidator) { _client = client ?? throw new ArgumentNullException(nameof(client)); diff --git a/src/Visus.AddressValidation.Integration.PitneyBowes/Services/PitneyBowesAuthenticationService.cs b/src/Visus.AddressValidation.Integration.PitneyBowes/Services/PitneyBowesAuthenticationService.cs index c6200e2..2f7a783 100644 --- a/src/Visus.AddressValidation.Integration.PitneyBowes/Services/PitneyBowesAuthenticationService.cs +++ b/src/Visus.AddressValidation.Integration.PitneyBowes/Services/PitneyBowesAuthenticationService.cs @@ -12,7 +12,7 @@ internal sealed class PitneyBowesAuthenticationService : AbstractAuthenticationS public PitneyBowesAuthenticationService(IDistributedCache cache, IConfiguration configuration, - PitneyBowesAuthenticationClient authenticationClient) + PitneyBowesAuthenticationClient authenticationClient) : base(authenticationClient, cache) { _configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); diff --git a/src/Visus.AddressValidation.Integration.PitneyBowes/Validation/ApiResponseValidator.cs b/src/Visus.AddressValidation.Integration.PitneyBowes/Validation/ApiResponseValidator.cs index 33aeae6..35fd342 100644 --- a/src/Visus.AddressValidation.Integration.PitneyBowes/Validation/ApiResponseValidator.cs +++ b/src/Visus.AddressValidation.Integration.PitneyBowes/Validation/ApiResponseValidator.cs @@ -33,7 +33,7 @@ protected override ValueTask PreValidateAsync(ApiResponse instance, ISet results, CancellationToken cancellationToken = default) { - Debug.Assert(instance.Result != null, "instance.Result != null"); + Debug.Assert(instance.Result != null); if ( string.IsNullOrWhiteSpace(instance.Result.PostalCode) ) { diff --git a/src/Visus.AddressValidation.Integration.PitneyBowes/Visus.AddressValidation.Integration.PitneyBowes.csproj b/src/Visus.AddressValidation.Integration.PitneyBowes/Visus.AddressValidation.Integration.PitneyBowes.csproj index b9cea6a..da2d4ac 100644 --- a/src/Visus.AddressValidation.Integration.PitneyBowes/Visus.AddressValidation.Integration.PitneyBowes.csproj +++ b/src/Visus.AddressValidation.Integration.PitneyBowes/Visus.AddressValidation.Integration.PitneyBowes.csproj @@ -1,30 +1,30 @@  - - net8.0 - true - + + net10.0 + true + - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + - - - + + + - - - + + + diff --git a/src/Visus.AddressValidation.Integration.PitneyBowes/packages.lock.json b/src/Visus.AddressValidation.Integration.PitneyBowes/packages.lock.json deleted file mode 100644 index 96922e6..0000000 --- a/src/Visus.AddressValidation.Integration.PitneyBowes/packages.lock.json +++ /dev/null @@ -1,353 +0,0 @@ -{ - "version": 2, - "dependencies": { - "net8.0": { - "Microsoft.Extensions.Caching.Memory": { - "type": "Direct", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "J77oUeVZXdMoiUiCPkL4v13KrNRuMQnSHHw78cTh/2ZidyiMFm8jhu49OUKvNydMUX8ZcuM5g8uohW18YaglMw==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "Direct", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "+ZxxZzcVU+IEzq12GItUzf/V3mEc5nSLiXijwvDc4zyhbjvSZZ043giSZqGnhakrjwRWjkerIHPrRwm9okEIpw==" - }, - "Microsoft.Extensions.Http": { - "type": "Direct", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "QEa12ESaPAKR3M40N8dawVd+LPOgxCrGsUmC7Myfhn44AQiWh7X9PiTAagrAnJSaGqsb+yx+KRNSjrm8wx1TVQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Diagnostics": "9.0.11", - "Microsoft.Extensions.Logging": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Http.Resilience": { - "type": "Direct", - "requested": "[9.10.0, )", - "resolved": "9.10.0", - "contentHash": "4Bt58q+Oqpj4VYm3T7hcmsb1zVhmUTNNggDkjlWBIv3bv6MVRPGqIokK2tRHsD8bM4i3GkJLRWe8lQwbsWS6PQ==", - "dependencies": { - "Microsoft.Extensions.Http.Diagnostics": "9.10.0", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Resilience": "9.10.0" - } - }, - "Microsoft.NET.ILLink.Tasks": { - "type": "Direct", - "requested": "[8.0.22, )", - "resolved": "8.0.22", - "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" - }, - "Microsoft.SourceLink.GitHub": { - "type": "Direct", - "requested": "[8.0.0, )", - "resolved": "8.0.0", - "contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==", - "dependencies": { - "Microsoft.Build.Tasks.Git": "8.0.0", - "Microsoft.SourceLink.Common": "8.0.0" - } - }, - "Microsoft.Build.Tasks.Git": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ==" - }, - "Microsoft.Extensions.AmbientMetadata.Application": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "ndm/eoOzk61Csn+ojv5z3Kt7YWAdUNR8ruFaf1b69kSbeqDPoV96f1GR1OWTIrCN9bm83V8CSkhvnnG+LrLTvg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "Tgu40iIg2Kr8s+BoOhb8r8kQfcagwm1VnpnMZA9fd/sD8Hlj13cNpyCfLRrYEBP+VmfmaoficQvRNEUqH+F4mw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.ObjectPool": "8.0.21" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "4ceMQRCIMP9AxxZOQ0k+xYXCfgSEmEsnt6s0o/KkpeLqwm3kGKBbsiJlyMk56GnKJtk4SI7nTpIIzb+Qdk+FMQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "iPE1jROL5uK/6iJSRzwpEIJt6BuANN36Io+6bLss67JVjbG6DdVedrMnB9nqsxs+Lx3X9RxvARTgFsUgP0MB0g==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "UquyDzvz0EneIQrrU67GJkIgynS+VD7t+RDtNv6VgKMOFrLBjldn6hzlXppGGecFMvAkMTqn4T8RYvzw7j7fQA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection.AutoActivation": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "qk5+lY0MUl7Y77TjM6HzfQPOY4CqoTg281OddyDC5iU2hf+cIxhx0VbNuJH77vqB6qyCP1OsuQmCzvlpf9yxBQ==", - "dependencies": { - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1" - } - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "WkriTCwxW0QbIgPYXGy329wQKcS4lmstwwysCHcjok2acPd626ysPcwMpw1pSBNzkdkMsqcbcJLlpVc9kP/YiQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "9.0.11", - "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.11", - "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "D9gu4weEmvWGuz8zp5xwsOr0ldmWphMKr7+IW66hG4rnrgpMLtTWoOINBOX5mcRTPL39+AVd3BJdc4HTvl2NrA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "SRJgt408OA/+v2o47Kjx8Wf+rbCJMmTsbsnkuzVzeP9xfcn4dIoMJXLCKiRlDNzJ3pXLYrXmkyOSY81BehoVHw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", - "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.Http.Diagnostics": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "3IJjOPm4CRmv7zzjPV+RCyvS4kWJ9BNr1k/MWgRTQds6LcIhAgwh+ToZ8O4fKMFlme0EGLvTm27ARKqp468pQw==", - "dependencies": { - "Microsoft.Extensions.Http": "8.0.1", - "Microsoft.Extensions.Telemetry": "9.10.0", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.Extensions.Logging": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "PVHYgMmMZFEE3PGpc7oZ9CnoyNonNyT5klrV9pNIzCPxL12FpQ7kNhliXAwowmtaDVBmKnG/1db6d7gqPwDj8g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "QWwTrsgOnJMmn+XUslm8D2H1n3PkP/u/v52FODtyBc/k4W9r3i2vcXXeeX/upnzllJYRRbrzVzT0OclfNJtBJA==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.Configuration.Binder": "8.0.2", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Logging": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2", - "Microsoft.Extensions.Options": "8.0.2", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "8.0.21", - "contentHash": "UBuyxD9CqasYKmwP41Skar2+f2Bk47V3NAPXh3a3Rxsmt2NTB1qynDU8zHkHWEts/07QykmzYAWLHPgHsROe0w==" - }, - "Microsoft.Extensions.Options": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HX4M3BLkW1dtByMKHDVq6r7Jy6e4hf8NDzHpIgz7C8BtYk9JQHhfYX5c1UheQTD5Veg1yBhz/cD9C8vtrGrk9w==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HUzr4c1eMXCQN8Yre2JdCzYmLJAecFGVXfByVhjEY4jBaHIs8EAxdv72WMUa2GcROlkYPbYNzMbcqJPMiznHxw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Configuration.Binder": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==" - }, - "Microsoft.Extensions.Resilience": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "tNptjYbHq73emZok4HBbpV41Afwoclga5LaKux8RV27lOA2lyQxeJFKNTWYQauJmWxxwXmwG7bgitbnIDh4eXA==", - "dependencies": { - "Microsoft.Extensions.Diagnostics": "8.0.1", - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "9.10.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0", - "Polly.Extensions": "8.4.2", - "Polly.RateLimiting": "8.4.2" - } - }, - "Microsoft.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "FGEOTEjMB+1T69PLp5GrG4UOsIjcdNQcoiXpC+KV9NRejl6vSMLhVqQ6g6c+cxLXzx8xc2J90GAMhD1wPHjKHg==", - "dependencies": { - "Microsoft.Extensions.AmbientMetadata.Application": "9.10.0", - "Microsoft.Extensions.DependencyInjection.AutoActivation": "9.10.0", - "Microsoft.Extensions.Logging.Configuration": "8.0.1", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0" - } - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "hJflG5if8NqElmybxXDf38d4EPopOo9H+Qg6l5LKTsavqE4CFdA5DIPb9+jjAeL22FN+rs6KuuEIuBPS4PNXvw==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "9.10.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.3", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Options": "8.0.2" - } - }, - "Microsoft.SourceLink.Common": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" - }, - "Polly.Extensions": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0", - "Polly.Core": "8.4.2" - } - }, - "Polly.RateLimiting": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", - "dependencies": { - "Polly.Core": "8.4.2", - "System.Threading.RateLimiting": "8.0.0" - } - }, - "System.Diagnostics.DiagnosticSource": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "/QzMFklOm8Ak//YB0I2kR+ByxUndT63ucrRWQm0xZsuLExJWrVDeGKtYZDuBackd9dThbwMdOotIEc4c4KwJiw==" - }, - "System.IO.Pipelines": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==" - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "visus.addressvalidation": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "[10.0.0, )", - "Microsoft.Extensions.Configuration.Abstractions": "[10.0.0, )" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "Zcoy6H9mSoGyvr7UvlGokEZrlZkcPCICPZr8mCsSt9U/N8eeCwCXwKF5bShdA66R0obxBCwP4AxomQHvVkC/uA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "d2kDKnCsJvY7mBVhcjPSp9BkJk48DsaHPg5u+Oy4f8XaOqnEedRy/USyvnpHL92wpJ6DrTPy7htppUUzskbCXQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "UKWFTDwtZQIoypyt1YPVsxTnDK+0sKn26+UeSGeNlkRQddrkt9EC6kP4g94rgO/WOZkz94bKNlF1dVZN3QfPFQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - } - } - } -} \ No newline at end of file diff --git a/src/Visus.AddressValidation.Integration.Ups/Abstractions/AddressClassificationCode.cs b/src/Visus.AddressValidation.Integration.Ups/Abstractions/AddressClassificationCode.cs index 2fcec06..ce0428d 100644 --- a/src/Visus.AddressValidation.Integration.Ups/Abstractions/AddressClassificationCode.cs +++ b/src/Visus.AddressValidation.Integration.Ups/Abstractions/AddressClassificationCode.cs @@ -7,5 +7,5 @@ internal enum AddressClassificationCode { UNCLASSIFIED = 0, COMMERCIAL = 1, - RESIDENTIAL = 2 + RESIDENTIAL = 2, } diff --git a/src/Visus.AddressValidation.Integration.Ups/Abstractions/ResponseStatusCode.cs b/src/Visus.AddressValidation.Integration.Ups/Abstractions/ResponseStatusCode.cs index c414fd5..6f14b41 100644 --- a/src/Visus.AddressValidation.Integration.Ups/Abstractions/ResponseStatusCode.cs +++ b/src/Visus.AddressValidation.Integration.Ups/Abstractions/ResponseStatusCode.cs @@ -6,5 +6,5 @@ namespace Visus.AddressValidation.Integration.Ups.Abstractions; internal enum ResponseStatusCode { FAILURE = 0, - SUCCESS = 1 + SUCCESS = 1, } diff --git a/src/Visus.AddressValidation.Integration.Ups/Constants.cs b/src/Visus.AddressValidation.Integration.Ups/Constants.cs index 0fd7438..a002a83 100644 --- a/src/Visus.AddressValidation.Integration.Ups/Constants.cs +++ b/src/Visus.AddressValidation.Integration.Ups/Constants.cs @@ -43,6 +43,6 @@ public static class Constants public static readonly IReadOnlySet SupportedCountries = new HashSet { CountryCode.US, - CountryCode.PR + CountryCode.PR, }; } diff --git a/src/Visus.AddressValidation.Integration.Ups/Extensions/ServiceCollectionExtensions.cs b/src/Visus.AddressValidation.Integration.Ups/Extensions/ServiceCollectionExtensions.cs index b0073a4..5beeb13 100644 --- a/src/Visus.AddressValidation.Integration.Ups/Extensions/ServiceCollectionExtensions.cs +++ b/src/Visus.AddressValidation.Integration.Ups/Extensions/ServiceCollectionExtensions.cs @@ -35,12 +35,12 @@ public static IServiceCollection AddUpsAddressValidation(this IServiceCollection .AddStandardResilienceHandler(); services.AddHttpClient() - .RedactLoggedHeaders(["Authorization"]) + .RedactLoggedHeaders(["Authorization",]) .AddHttpMessageHandler(provider => - { - UpsAuthenticationService authenticationService = provider.GetRequiredService(); - return new BearerTokenDelegatingHandler(authenticationService); - }) + { + UpsAuthenticationService authenticationService = provider.GetRequiredService(); + return new BearerTokenDelegatingHandler(authenticationService); + }) .AddStandardResilienceHandler(); return services; diff --git a/src/Visus.AddressValidation.Integration.Ups/Http/ApiResponse.cs b/src/Visus.AddressValidation.Integration.Ups/Http/ApiResponse.cs index 343866c..7c3ba90 100644 --- a/src/Visus.AddressValidation.Integration.Ups/Http/ApiResponse.cs +++ b/src/Visus.AddressValidation.Integration.Ups/Http/ApiResponse.cs @@ -33,7 +33,7 @@ internal sealed class AddressClassification internal sealed class AddressKeyFormat { public string[] AddressLine { get; set; } = []; - + public CountryCode CountryCode { get; set; } public string? PoliticalDivision1 { get; set; } diff --git a/src/Visus.AddressValidation.Integration.Ups/Http/UpsAddressValidationClient.cs b/src/Visus.AddressValidation.Integration.Ups/Http/UpsAddressValidationClient.cs index 15aec59..87ecd3c 100644 --- a/src/Visus.AddressValidation.Integration.Ups/Http/UpsAddressValidationClient.cs +++ b/src/Visus.AddressValidation.Integration.Ups/Http/UpsAddressValidationClient.cs @@ -37,7 +37,7 @@ public UpsAddressValidationClient(IConfiguration configuration, { ClientEnvironment.DEVELOPMENT => Constants.DevelopmentEndpointBaseUri, ClientEnvironment.PRODUCTION => Constants.ProductionEndpointBaseUri, - _ => Constants.DevelopmentEndpointBaseUri + _ => Constants.DevelopmentEndpointBaseUri, }; Uri requestUri = new(baseUri, "/api/addressvalidation/v2/3"); @@ -50,18 +50,18 @@ public UpsAddressValidationClient(IConfiguration configuration, if ( response.IsSuccessStatusCode ) { return await response.Content.ReadFromJsonAsync(ApiJsonSerializerContext.Default.ApiResponse, - cancellationToken) + cancellationToken) .ConfigureAwait(false); } ApiErrorResponse? errorResponse = await response.Content.ReadFromJsonAsync(ApiJsonSerializerContext.Default.ApiErrorResponse, - cancellationToken) + cancellationToken) .ConfigureAwait(false); if ( errorResponse is not null ) { return new ApiResponse { - ErrorResponse = errorResponse + ErrorResponse = errorResponse, }; } diff --git a/src/Visus.AddressValidation.Integration.Ups/Http/UpsAuthenticationClient.cs b/src/Visus.AddressValidation.Integration.Ups/Http/UpsAuthenticationClient.cs index 9cc384a..2b6c571 100644 --- a/src/Visus.AddressValidation.Integration.Ups/Http/UpsAuthenticationClient.cs +++ b/src/Visus.AddressValidation.Integration.Ups/Http/UpsAuthenticationClient.cs @@ -40,14 +40,14 @@ public UpsAuthenticationClient(IConfiguration configuration, HttpClient httpClie { ClientEnvironment.DEVELOPMENT => Constants.DevelopmentEndpointBaseUri, ClientEnvironment.PRODUCTION => Constants.ProductionEndpointBaseUri, - _ => Constants.DevelopmentEndpointBaseUri + _ => Constants.DevelopmentEndpointBaseUri, }; Uri requestUri = new(baseUri, "/security/v1/oauth/token"); List> payload = [ - new("grant_type", "client_credentials") + new("grant_type", "client_credentials"), ]; using HttpRequestMessage request = new(HttpMethod.Post, requestUri); @@ -63,7 +63,7 @@ public UpsAuthenticationClient(IConfiguration configuration, HttpClient httpClie } return await response.Content.ReadFromJsonAsync(DefaultJsonSerializerContext.Default.TokenResponse, - cancellationToken) + cancellationToken) .ConfigureAwait(false); } } diff --git a/src/Visus.AddressValidation.Integration.Ups/Model/AddressValidationResponse.cs b/src/Visus.AddressValidation.Integration.Ups/Model/AddressValidationResponse.cs index 3d5b89d..a508eac 100644 --- a/src/Visus.AddressValidation.Integration.Ups/Model/AddressValidationResponse.cs +++ b/src/Visus.AddressValidation.Integration.Ups/Model/AddressValidationResponse.cs @@ -61,10 +61,10 @@ public AddressValidationResponse(ApiResponse response, IValidationResult? valida HashSet codes = new(StringComparer.OrdinalIgnoreCase) { addressKeyFormat.PostcodePrimaryLow, - addressKeyFormat.PostcodeExtendedLow + addressKeyFormat.PostcodeExtendedLow, }; - return string.Join("-", [.. codes]).ToUpperInvariant(); + return string.Join("-", [.. codes,]).ToUpperInvariant(); } private static ReadOnlyCollection ListSuggestions(IEnumerable candidates) @@ -73,6 +73,6 @@ private static ReadOnlyCollection ListSuggestions(IE .Select(s => new AddressSuggestionValidationResponse(s)) .ToHashSet(); - return new ReadOnlyCollection([.. results]); + return new ReadOnlyCollection([.. results,]); } } diff --git a/src/Visus.AddressValidation.Integration.Ups/Services/AddressValidationService.cs b/src/Visus.AddressValidation.Integration.Ups/Services/AddressValidationService.cs index 5592f95..99f41d3 100644 --- a/src/Visus.AddressValidation.Integration.Ups/Services/AddressValidationService.cs +++ b/src/Visus.AddressValidation.Integration.Ups/Services/AddressValidationService.cs @@ -10,7 +10,7 @@ internal sealed class AddressValidationService : AbstractAddressValidationServic public AddressValidationService(UpsAddressValidationClient client, IValidator requestValidator, - IValidator responseValidator) + IValidator responseValidator) : base(requestValidator, responseValidator) { _client = client ?? throw new ArgumentNullException(nameof(client)); diff --git a/src/Visus.AddressValidation.Integration.Ups/Services/UpsAuthenticationService.cs b/src/Visus.AddressValidation.Integration.Ups/Services/UpsAuthenticationService.cs index 0f87207..c51f331 100644 --- a/src/Visus.AddressValidation.Integration.Ups/Services/UpsAuthenticationService.cs +++ b/src/Visus.AddressValidation.Integration.Ups/Services/UpsAuthenticationService.cs @@ -12,7 +12,7 @@ internal sealed class UpsAuthenticationService : AbstractAuthenticationService _supportedDevelopmentRegions = new(StringComparer.OrdinalIgnoreCase) { "CA", - "NY" + "NY", }; protected override ValueTask ValidateAsync(UpsAddressValidationRequest instance, ISet results, CancellationToken cancellationToken = default) @@ -21,8 +21,8 @@ protected override ValueTask ValidateAsync(UpsAddressValidationRequest instance, if ( !Constants.SupportedCountries.Contains(instance.Country!.Value) ) { results.Add(ValidationState.CreateError("{0}: {1} is currently not supported by the UPS Address Validation API.", - nameof(instance.Country), - instance.Country)); + nameof(instance.Country), + instance.Country)); } if ( !Enum.TryParse(_configuration[Constants.ClientEnvironmentConfigurationKey], out ClientEnvironment clientEnvironment) ) @@ -38,9 +38,9 @@ protected override ValueTask ValidateAsync(UpsAddressValidationRequest instance, if ( instance.Country.Value != CountryCode.US ) { results.Add(ValidationState.CreateError("{0}: Only the value {1} is supported by the UPS Address Validation API while in {2} mode.", - nameof(instance.Country), - CountryCode.US, - ClientEnvironment.DEVELOPMENT)); + nameof(instance.Country), + CountryCode.US, + ClientEnvironment.DEVELOPMENT)); } if ( instance.Country.Value == CountryCode.US @@ -48,9 +48,9 @@ protected override ValueTask ValidateAsync(UpsAddressValidationRequest instance, && !_supportedDevelopmentRegions.Contains(instance.StateOrProvince) ) { results.Add(ValidationState.CreateError("{0}: Only the values {1} are supported by the UPS Address Validation API while in {2} mode.", - nameof(instance.StateOrProvince), - string.Join(", ", _supportedDevelopmentRegions), - ClientEnvironment.DEVELOPMENT)); + nameof(instance.StateOrProvince), + string.Join(", ", _supportedDevelopmentRegions), + ClientEnvironment.DEVELOPMENT)); } return base.ValidateAsync(instance, results, cancellationToken); diff --git a/src/Visus.AddressValidation.Integration.Ups/Visus.AddressValidation.Integration.Ups.csproj b/src/Visus.AddressValidation.Integration.Ups/Visus.AddressValidation.Integration.Ups.csproj index 18160ee..09ee0fb 100644 --- a/src/Visus.AddressValidation.Integration.Ups/Visus.AddressValidation.Integration.Ups.csproj +++ b/src/Visus.AddressValidation.Integration.Ups/Visus.AddressValidation.Integration.Ups.csproj @@ -1,23 +1,23 @@  - - net8.0 - true - + + net10.0 + true + - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + - - - + + + diff --git a/src/Visus.AddressValidation.Integration.Ups/packages.lock.json b/src/Visus.AddressValidation.Integration.Ups/packages.lock.json deleted file mode 100644 index 96922e6..0000000 --- a/src/Visus.AddressValidation.Integration.Ups/packages.lock.json +++ /dev/null @@ -1,353 +0,0 @@ -{ - "version": 2, - "dependencies": { - "net8.0": { - "Microsoft.Extensions.Caching.Memory": { - "type": "Direct", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "J77oUeVZXdMoiUiCPkL4v13KrNRuMQnSHHw78cTh/2ZidyiMFm8jhu49OUKvNydMUX8ZcuM5g8uohW18YaglMw==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "Direct", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "+ZxxZzcVU+IEzq12GItUzf/V3mEc5nSLiXijwvDc4zyhbjvSZZ043giSZqGnhakrjwRWjkerIHPrRwm9okEIpw==" - }, - "Microsoft.Extensions.Http": { - "type": "Direct", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "QEa12ESaPAKR3M40N8dawVd+LPOgxCrGsUmC7Myfhn44AQiWh7X9PiTAagrAnJSaGqsb+yx+KRNSjrm8wx1TVQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Diagnostics": "9.0.11", - "Microsoft.Extensions.Logging": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Http.Resilience": { - "type": "Direct", - "requested": "[9.10.0, )", - "resolved": "9.10.0", - "contentHash": "4Bt58q+Oqpj4VYm3T7hcmsb1zVhmUTNNggDkjlWBIv3bv6MVRPGqIokK2tRHsD8bM4i3GkJLRWe8lQwbsWS6PQ==", - "dependencies": { - "Microsoft.Extensions.Http.Diagnostics": "9.10.0", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Resilience": "9.10.0" - } - }, - "Microsoft.NET.ILLink.Tasks": { - "type": "Direct", - "requested": "[8.0.22, )", - "resolved": "8.0.22", - "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" - }, - "Microsoft.SourceLink.GitHub": { - "type": "Direct", - "requested": "[8.0.0, )", - "resolved": "8.0.0", - "contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==", - "dependencies": { - "Microsoft.Build.Tasks.Git": "8.0.0", - "Microsoft.SourceLink.Common": "8.0.0" - } - }, - "Microsoft.Build.Tasks.Git": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ==" - }, - "Microsoft.Extensions.AmbientMetadata.Application": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "ndm/eoOzk61Csn+ojv5z3Kt7YWAdUNR8ruFaf1b69kSbeqDPoV96f1GR1OWTIrCN9bm83V8CSkhvnnG+LrLTvg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "Tgu40iIg2Kr8s+BoOhb8r8kQfcagwm1VnpnMZA9fd/sD8Hlj13cNpyCfLRrYEBP+VmfmaoficQvRNEUqH+F4mw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.ObjectPool": "8.0.21" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "4ceMQRCIMP9AxxZOQ0k+xYXCfgSEmEsnt6s0o/KkpeLqwm3kGKBbsiJlyMk56GnKJtk4SI7nTpIIzb+Qdk+FMQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "iPE1jROL5uK/6iJSRzwpEIJt6BuANN36Io+6bLss67JVjbG6DdVedrMnB9nqsxs+Lx3X9RxvARTgFsUgP0MB0g==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "UquyDzvz0EneIQrrU67GJkIgynS+VD7t+RDtNv6VgKMOFrLBjldn6hzlXppGGecFMvAkMTqn4T8RYvzw7j7fQA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection.AutoActivation": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "qk5+lY0MUl7Y77TjM6HzfQPOY4CqoTg281OddyDC5iU2hf+cIxhx0VbNuJH77vqB6qyCP1OsuQmCzvlpf9yxBQ==", - "dependencies": { - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1" - } - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "WkriTCwxW0QbIgPYXGy329wQKcS4lmstwwysCHcjok2acPd626ysPcwMpw1pSBNzkdkMsqcbcJLlpVc9kP/YiQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "9.0.11", - "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.11", - "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "D9gu4weEmvWGuz8zp5xwsOr0ldmWphMKr7+IW66hG4rnrgpMLtTWoOINBOX5mcRTPL39+AVd3BJdc4HTvl2NrA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "SRJgt408OA/+v2o47Kjx8Wf+rbCJMmTsbsnkuzVzeP9xfcn4dIoMJXLCKiRlDNzJ3pXLYrXmkyOSY81BehoVHw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", - "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.Http.Diagnostics": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "3IJjOPm4CRmv7zzjPV+RCyvS4kWJ9BNr1k/MWgRTQds6LcIhAgwh+ToZ8O4fKMFlme0EGLvTm27ARKqp468pQw==", - "dependencies": { - "Microsoft.Extensions.Http": "8.0.1", - "Microsoft.Extensions.Telemetry": "9.10.0", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.Extensions.Logging": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "PVHYgMmMZFEE3PGpc7oZ9CnoyNonNyT5klrV9pNIzCPxL12FpQ7kNhliXAwowmtaDVBmKnG/1db6d7gqPwDj8g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "QWwTrsgOnJMmn+XUslm8D2H1n3PkP/u/v52FODtyBc/k4W9r3i2vcXXeeX/upnzllJYRRbrzVzT0OclfNJtBJA==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.Configuration.Binder": "8.0.2", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Logging": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2", - "Microsoft.Extensions.Options": "8.0.2", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "8.0.21", - "contentHash": "UBuyxD9CqasYKmwP41Skar2+f2Bk47V3NAPXh3a3Rxsmt2NTB1qynDU8zHkHWEts/07QykmzYAWLHPgHsROe0w==" - }, - "Microsoft.Extensions.Options": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HX4M3BLkW1dtByMKHDVq6r7Jy6e4hf8NDzHpIgz7C8BtYk9JQHhfYX5c1UheQTD5Veg1yBhz/cD9C8vtrGrk9w==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HUzr4c1eMXCQN8Yre2JdCzYmLJAecFGVXfByVhjEY4jBaHIs8EAxdv72WMUa2GcROlkYPbYNzMbcqJPMiznHxw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Configuration.Binder": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==" - }, - "Microsoft.Extensions.Resilience": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "tNptjYbHq73emZok4HBbpV41Afwoclga5LaKux8RV27lOA2lyQxeJFKNTWYQauJmWxxwXmwG7bgitbnIDh4eXA==", - "dependencies": { - "Microsoft.Extensions.Diagnostics": "8.0.1", - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "9.10.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0", - "Polly.Extensions": "8.4.2", - "Polly.RateLimiting": "8.4.2" - } - }, - "Microsoft.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "FGEOTEjMB+1T69PLp5GrG4UOsIjcdNQcoiXpC+KV9NRejl6vSMLhVqQ6g6c+cxLXzx8xc2J90GAMhD1wPHjKHg==", - "dependencies": { - "Microsoft.Extensions.AmbientMetadata.Application": "9.10.0", - "Microsoft.Extensions.DependencyInjection.AutoActivation": "9.10.0", - "Microsoft.Extensions.Logging.Configuration": "8.0.1", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0" - } - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "hJflG5if8NqElmybxXDf38d4EPopOo9H+Qg6l5LKTsavqE4CFdA5DIPb9+jjAeL22FN+rs6KuuEIuBPS4PNXvw==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "9.10.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.3", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Options": "8.0.2" - } - }, - "Microsoft.SourceLink.Common": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" - }, - "Polly.Extensions": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0", - "Polly.Core": "8.4.2" - } - }, - "Polly.RateLimiting": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", - "dependencies": { - "Polly.Core": "8.4.2", - "System.Threading.RateLimiting": "8.0.0" - } - }, - "System.Diagnostics.DiagnosticSource": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "/QzMFklOm8Ak//YB0I2kR+ByxUndT63ucrRWQm0xZsuLExJWrVDeGKtYZDuBackd9dThbwMdOotIEc4c4KwJiw==" - }, - "System.IO.Pipelines": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==" - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "visus.addressvalidation": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "[10.0.0, )", - "Microsoft.Extensions.Configuration.Abstractions": "[10.0.0, )" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "Zcoy6H9mSoGyvr7UvlGokEZrlZkcPCICPZr8mCsSt9U/N8eeCwCXwKF5bShdA66R0obxBCwP4AxomQHvVkC/uA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "d2kDKnCsJvY7mBVhcjPSp9BkJk48DsaHPg5u+Oy4f8XaOqnEedRy/USyvnpHL92wpJ6DrTPy7htppUUzskbCXQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "UKWFTDwtZQIoypyt1YPVsxTnDK+0sKn26+UeSGeNlkRQddrkt9EC6kP4g94rgO/WOZkz94bKNlF1dVZN3QfPFQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - } - } - } -} \ No newline at end of file diff --git a/src/Visus.AddressValidation.SourceGeneration/CustomResponseDataGenerator.cs b/src/Visus.AddressValidation.SourceGeneration/CustomResponseDataGenerator.cs index ab0586e..646fc49 100644 --- a/src/Visus.AddressValidation.SourceGeneration/CustomResponseDataGenerator.cs +++ b/src/Visus.AddressValidation.SourceGeneration/CustomResponseDataGenerator.cs @@ -22,31 +22,31 @@ public void Initialize(IncrementalGeneratorInitializationContext context) IncrementalValuesProvider<(HierarchyInfo, PropertyInfo)> propertyInfo = context.SyntaxProvider .ForAttributeWithMetadataName(CustomResponseDataPropertyAttribute, - static (node, _) => node is PropertyDeclarationSyntax { Parent: ClassDeclarationSyntax or RecordDeclarationSyntax, AttributeLists.Count: > 0 }, - static (ctx, _) => - ctx.TargetSymbol is not IPropertySymbol propertySymbol - ? default - : ( HierarchyInfo.From(propertySymbol.ContainingType), new PropertyInfo(propertySymbol) )); + static (node, _) => node is PropertyDeclarationSyntax { Parent: ClassDeclarationSyntax or RecordDeclarationSyntax, AttributeLists.Count: > 0, }, + static (ctx, _) => + ctx.TargetSymbol is not IPropertySymbol propertySymbol + ? default + : ( HierarchyInfo.From(propertySymbol.ContainingType), new PropertyInfo(propertySymbol) )); IncrementalValuesProvider<(HierarchyInfo Hierarchy, ImmutableArray Properties)> groupedPropertyInfo = propertyInfo.GroupBy(static g => g.Left, static g => g.Right); context.RegisterSourceOutput(groupedPropertyInfo, - static (ctx, item) => - { - MethodDeclarationSyntax methodDeclaration = - MethodDeclaration(GetDictionaryMethodSyntax(), GetCustomResponseDataMethodName) - .AddModifiers(Token(SyntaxKind.PublicKeyword)) - .NormalizeWhitespace() - .WithTrailingTrivia(CarriageReturnLineFeed) - .WithBody(Block(SingletonList(GetDictionaryMethodBodySyntax(item.Properties)))); - - CompilationUnitSyntax? compilationUnit = item.Hierarchy.GetCompilationUnit([methodDeclaration]); - if ( compilationUnit is not null ) - { - ctx.AddSource($"{item.Hierarchy.FileNameHint}.g", compilationUnit.GetText(Encoding.UTF8)); - } - }); + static (ctx, item) => + { + MethodDeclarationSyntax methodDeclaration = + MethodDeclaration(GetDictionaryMethodSyntax(), GetCustomResponseDataMethodName) + .AddModifiers(Token(SyntaxKind.PublicKeyword)) + .NormalizeWhitespace() + .WithTrailingTrivia(CarriageReturnLineFeed) + .WithBody(Block(SingletonList(GetDictionaryMethodBodySyntax(item.Properties)))); + + CompilationUnitSyntax? compilationUnit = item.Hierarchy.GetCompilationUnit([methodDeclaration,]); + if ( compilationUnit is not null ) + { + ctx.AddSource($"{item.Hierarchy.FileNameHint}.g", compilationUnit.GetText(Encoding.UTF8)); + } + }); } private static ReturnStatementSyntax GetDictionaryMethodBodySyntax(ImmutableArray properties) @@ -55,17 +55,17 @@ private static ReturnStatementSyntax GetDictionaryMethodBodySyntax(ImmutableArra [ PredefinedType(Token(SyntaxKind.StringKeyword)), Token(SyntaxKind.CommaToken), - NullableType(PredefinedType(Token(SyntaxKind.ObjectKeyword))) + NullableType(PredefinedType(Token(SyntaxKind.ObjectKeyword))), ]; GenericNameSyntax dictionaryType = GenericName(Identifier("Dictionary"), - TypeArgumentList(SeparatedList(typeArguments))); + TypeArgumentList(SeparatedList(typeArguments))); ArgumentListSyntax dictionaryArguments = ArgumentList() .AddArguments(Argument(MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, - IdentifierName(nameof(StringComparer)), - IdentifierName(nameof(StringComparer.OrdinalIgnoreCase))))); + IdentifierName(nameof(StringComparer)), + IdentifierName(nameof(StringComparer.OrdinalIgnoreCase))))); LinkedList entities = []; @@ -73,11 +73,11 @@ private static ReturnStatementSyntax GetDictionaryMethodBodySyntax(ImmutableArra { BracketedArgumentListSyntax key = BracketedArgumentList(SingletonSeparatedList(Argument(LiteralExpression(SyntaxKind.StringLiteralExpression, - Literal(property.PropertyNameKey))))); + Literal(property.PropertyNameKey))))); AssignmentExpressionSyntax entity = AssignmentExpression(SyntaxKind.SimpleAssignmentExpression, - ImplicitElementAccess().WithArgumentList(key), - IdentifierName(property.PropertyName)); + ImplicitElementAccess().WithArgumentList(key), + IdentifierName(property.PropertyName)); entities.AddLast(entity); } @@ -85,7 +85,7 @@ private static ReturnStatementSyntax GetDictionaryMethodBodySyntax(ImmutableArra ObjectCreationExpressionSyntax dictionary = ObjectCreationExpression(dictionaryType, dictionaryArguments, null) .WithInitializer(InitializerExpression(SyntaxKind.ObjectInitializerExpression, - SeparatedList(entities))); + SeparatedList(entities))); return ReturnStatement(dictionary); } @@ -96,10 +96,10 @@ private static GenericNameSyntax GetDictionaryMethodSyntax() [ PredefinedType(Token(SyntaxKind.StringKeyword)), Token(SyntaxKind.CommaToken), - NullableType(PredefinedType(Token(SyntaxKind.ObjectKeyword))) + NullableType(PredefinedType(Token(SyntaxKind.ObjectKeyword))), ]; return GenericName(Identifier("IReadOnlyDictionary"), - TypeArgumentList(SeparatedList(arguments))); + TypeArgumentList(SeparatedList(arguments))); } } diff --git a/src/Visus.AddressValidation.SourceGeneration/Extensions/IncrementalValuesProviderExtensions.cs b/src/Visus.AddressValidation.SourceGeneration/Extensions/IncrementalValuesProviderExtensions.cs index 04d5938..757cd49 100644 --- a/src/Visus.AddressValidation.SourceGeneration/Extensions/IncrementalValuesProviderExtensions.cs +++ b/src/Visus.AddressValidation.SourceGeneration/Extensions/IncrementalValuesProviderExtensions.cs @@ -18,35 +18,35 @@ internal static class IncrementalValuesProviderExtensions where TElement : IEquatable { return source.Collect().SelectMany((item, token) => - { - Dictionary.Builder> map = new(); + { + Dictionary.Builder> map = new(); - foreach ( (TLeft, TRight) pair in item ) - { - TKey key = keySelector(pair); - TElement element = elementSelector(pair); + foreach ( (TLeft, TRight) pair in item ) + { + TKey key = keySelector(pair); + TElement element = elementSelector(pair); - if ( !map.TryGetValue(key, out ImmutableArray.Builder builder) ) - { - builder = ImmutableArray.CreateBuilder(); + if ( !map.TryGetValue(key, out ImmutableArray.Builder builder) ) + { + builder = ImmutableArray.CreateBuilder(); - map.Add(key, builder); - } + map.Add(key, builder); + } - builder.Add(element); - } + builder.Add(element); + } - token.ThrowIfCancellationRequested(); + token.ThrowIfCancellationRequested(); - ImmutableArray<(TKey Key, ImmutableArray Elements)>.Builder result = - ImmutableArray.CreateBuilder<(TKey, ImmutableArray)>(); + ImmutableArray<(TKey Key, ImmutableArray Elements)>.Builder result = + ImmutableArray.CreateBuilder<(TKey, ImmutableArray)>(); - foreach ( KeyValuePair.Builder> entry in map ) - { - result.Add(( entry.Key, entry.Value.ToImmutable() )); - } + foreach ( KeyValuePair.Builder> entry in map ) + { + result.Add(( entry.Key, entry.Value.ToImmutable() )); + } - return result; - }); + return result; + }); } } diff --git a/src/Visus.AddressValidation.SourceGeneration/Model/HierarchyInfo.Syntax.cs b/src/Visus.AddressValidation.SourceGeneration/Model/HierarchyInfo.Syntax.cs index 9694a80..3b5a5a2 100644 --- a/src/Visus.AddressValidation.SourceGeneration/Model/HierarchyInfo.Syntax.cs +++ b/src/Visus.AddressValidation.SourceGeneration/Model/HierarchyInfo.Syntax.cs @@ -16,10 +16,10 @@ internal partial class HierarchyInfo TypeDeclarationSyntax typeDeclarationSyntax = Hierarchy[0].GetSyntax() .AddModifiers(Token(TriviaList(Comment("/// ")), - Hierarchy[0].AccessibilityKind, - TriviaList())) + Hierarchy[0].AccessibilityKind, + TriviaList())) .AddModifiers(GetKeywordModifierTokens(Hierarchy[0])) - .AddMembers([.. memberDeclarations]) + .AddMembers([.. memberDeclarations,]) .NormalizeWhitespace(); foreach ( TypeInfo parentType in Hierarchy.AsSpan().Slice(1) ) @@ -27,17 +27,17 @@ internal partial class HierarchyInfo typeDeclarationSyntax = parentType.GetSyntax() .AddModifiers(Token(TriviaList(Comment("/// ")), - parentType.AccessibilityKind, - TriviaList())) + parentType.AccessibilityKind, + TriviaList())) .AddModifiers(GetKeywordModifierTokens(parentType)) .AddMembers(typeDeclarationSyntax) .NormalizeWhitespace(); } SyntaxTriviaList syntaxTriviaList = TriviaList( - Comment("// "), - Trivia(PragmaWarningDirectiveTrivia(Token(SyntaxKind.DisableKeyword), true)), - Trivia(NullableDirectiveTrivia(Token(SyntaxKind.EnableKeyword), true))); + Comment("// "), + Trivia(PragmaWarningDirectiveTrivia(Token(SyntaxKind.DisableKeyword), true)), + Trivia(NullableDirectiveTrivia(Token(SyntaxKind.EnableKeyword), true))); return CompilationUnit() .AddMembers(NamespaceDeclaration(IdentifierName(Namespace)) @@ -57,6 +57,6 @@ private static SyntaxToken[] GetKeywordModifierTokens(TypeInfo typeInfo) tokens.Add(Token(SyntaxKind.PartialKeyword)); - return [.. tokens]; + return [.. tokens,]; } } diff --git a/src/Visus.AddressValidation.SourceGeneration/Model/HierarchyInfo.cs b/src/Visus.AddressValidation.SourceGeneration/Model/HierarchyInfo.cs index cda3182..67c9dca 100644 --- a/src/Visus.AddressValidation.SourceGeneration/Model/HierarchyInfo.cs +++ b/src/Visus.AddressValidation.SourceGeneration/Model/HierarchyInfo.cs @@ -41,15 +41,15 @@ public static HierarchyInfo From(INamedTypeSymbol typeSymbol) parent = parent.ContainingType ) { hierarchy.AddLast(new TypeInfo(parent.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat), - parent.TypeKind, - parent.DeclaredAccessibility, - parent.IsRecord, - parent.IsSealed)); + parent.TypeKind, + parent.DeclaredAccessibility, + parent.IsRecord, + parent.IsSealed)); } return new HierarchyInfo(typeSymbol.ToDisplayString(new SymbolDisplayFormat(typeQualificationStyle: NameAndContainingTypesAndNamespaces)), - typeSymbol.ContainingNamespace.ToDisplayString(new SymbolDisplayFormat(typeQualificationStyle: NameAndContainingTypesAndNamespaces)), - [..hierarchy]); + typeSymbol.ContainingNamespace.ToDisplayString(new SymbolDisplayFormat(typeQualificationStyle: NameAndContainingTypesAndNamespaces)), + [..hierarchy,]); } public static bool operator ==(HierarchyInfo? left, HierarchyInfo? right) diff --git a/src/Visus.AddressValidation.SourceGeneration/Model/TypeInfo.cs b/src/Visus.AddressValidation.SourceGeneration/Model/TypeInfo.cs index edd4229..de1bbe1 100644 --- a/src/Visus.AddressValidation.SourceGeneration/Model/TypeInfo.cs +++ b/src/Visus.AddressValidation.SourceGeneration/Model/TypeInfo.cs @@ -22,7 +22,7 @@ internal sealed record TypeInfo( Accessibility.Internal => SyntaxKind.InternalKeyword, Accessibility.Private => SyntaxKind.PrivateKeyword, Accessibility.Protected => SyntaxKind.ProtectedKeyword, - _ => SyntaxKind.None + _ => SyntaxKind.None, }; public Accessibility DeclaredAccessibility { get; } = DeclaredAccessibility; @@ -43,7 +43,7 @@ public TypeDeclarationSyntax GetSyntax() RecordDeclaration(Token(SyntaxKind.RecordKeyword), QualifiedName) .WithOpenBraceToken(Token(SyntaxKind.OpenBraceToken)) .WithCloseBraceToken(Token(SyntaxKind.CloseBraceToken)), - _ => ClassDeclaration(QualifiedName) + _ => ClassDeclaration(QualifiedName), }; } } diff --git a/src/Visus.AddressValidation.SourceGeneration/Visus.AddressValidation.SourceGeneration.csproj b/src/Visus.AddressValidation.SourceGeneration/Visus.AddressValidation.SourceGeneration.csproj index 4910157..3ad922d 100644 --- a/src/Visus.AddressValidation.SourceGeneration/Visus.AddressValidation.SourceGeneration.csproj +++ b/src/Visus.AddressValidation.SourceGeneration/Visus.AddressValidation.SourceGeneration.csproj @@ -1,16 +1,16 @@  - - netstandard2.0 - Visus.AddressValidation.SourceGeneration - cs - true - true - false - true - + + netstandard2.0 + Visus.AddressValidation.SourceGeneration + cs + true + true + false + true + - - - + + + diff --git a/src/Visus.AddressValidation.SourceGeneration/packages.lock.json b/src/Visus.AddressValidation.SourceGeneration/packages.lock.json deleted file mode 100644 index af22a65..0000000 --- a/src/Visus.AddressValidation.SourceGeneration/packages.lock.json +++ /dev/null @@ -1,245 +0,0 @@ -{ - "version": 2, - "dependencies": { - ".NETStandard,Version=v2.0": { - "Microsoft.CodeAnalysis.CSharp.Workspaces": { - "type": "Direct", - "requested": "[4.11.0, 4.11.0]", - "resolved": "4.11.0", - "contentHash": "/oRJPIMvzOfiunIegSF6FEa4VvBAUSXlbLDKxyzXuOZN9nLHg3fHuX6Mr9JZLNIupbe2xqQZEmfsPxgB01vCmg==", - "dependencies": { - "Humanizer.Core": "2.14.1", - "Microsoft.Bcl.AsyncInterfaces": "8.0.0", - "Microsoft.CodeAnalysis.Analyzers": "3.3.4", - "Microsoft.CodeAnalysis.CSharp": "[4.11.0]", - "Microsoft.CodeAnalysis.Common": "[4.11.0]", - "Microsoft.CodeAnalysis.Workspaces.Common": "[4.11.0]", - "System.Buffers": "4.5.1", - "System.Collections.Immutable": "8.0.0", - "System.Composition": "8.0.0", - "System.IO.Pipelines": "8.0.0", - "System.Memory": "4.5.5", - "System.Numerics.Vectors": "4.5.0", - "System.Reflection.Metadata": "8.0.0", - "System.Runtime.CompilerServices.Unsafe": "6.0.0", - "System.Text.Encoding.CodePages": "7.0.0", - "System.Threading.Channels": "7.0.0", - "System.Threading.Tasks.Extensions": "4.5.4" - } - }, - "NETStandard.Library": { - "type": "Direct", - "requested": "[2.0.3, )", - "resolved": "2.0.3", - "contentHash": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0" - } - }, - "Humanizer.Core": { - "type": "Transitive", - "resolved": "2.14.1", - "contentHash": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==" - }, - "Microsoft.Bcl.AsyncInterfaces": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==", - "dependencies": { - "System.Threading.Tasks.Extensions": "4.5.4" - } - }, - "Microsoft.CodeAnalysis.Analyzers": { - "type": "Transitive", - "resolved": "3.3.4", - "contentHash": "AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g==" - }, - "Microsoft.CodeAnalysis.Common": { - "type": "Transitive", - "resolved": "4.11.0", - "contentHash": "djf8ujmqYImFgB04UGtcsEhHrzVqzHowS+EEl/Yunc5LdrYrZhGBWUTXoCF0NzYXJxtfuD+UVQarWpvrNc94Qg==", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.3.4", - "System.Buffers": "4.5.1", - "System.Collections.Immutable": "8.0.0", - "System.Memory": "4.5.5", - "System.Numerics.Vectors": "4.5.0", - "System.Reflection.Metadata": "8.0.0", - "System.Runtime.CompilerServices.Unsafe": "6.0.0", - "System.Text.Encoding.CodePages": "7.0.0", - "System.Threading.Tasks.Extensions": "4.5.4" - } - }, - "Microsoft.CodeAnalysis.CSharp": { - "type": "Transitive", - "resolved": "4.11.0", - "contentHash": "6XYi2EusI8JT4y2l/F3VVVS+ISoIX9nqHsZRaG6W5aFeJ5BEuBosHfT/ABb73FN0RZ1Z3cj2j7cL28SToJPXOw==", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.3.4", - "Microsoft.CodeAnalysis.Common": "[4.11.0]", - "System.Buffers": "4.5.1", - "System.Collections.Immutable": "8.0.0", - "System.Memory": "4.5.5", - "System.Numerics.Vectors": "4.5.0", - "System.Reflection.Metadata": "8.0.0", - "System.Runtime.CompilerServices.Unsafe": "6.0.0", - "System.Text.Encoding.CodePages": "7.0.0", - "System.Threading.Tasks.Extensions": "4.5.4" - } - }, - "Microsoft.CodeAnalysis.Workspaces.Common": { - "type": "Transitive", - "resolved": "4.11.0", - "contentHash": "UtwEt42V7/LnvAcschSlmUXRLEj0poX1H7QeFbY5bezcS+tJBCssAq8C7GfisgIA0qZPo2xzOrwKGBbg51CetA==", - "dependencies": { - "Humanizer.Core": "2.14.1", - "Microsoft.Bcl.AsyncInterfaces": "8.0.0", - "Microsoft.CodeAnalysis.Analyzers": "3.3.4", - "Microsoft.CodeAnalysis.Common": "[4.11.0]", - "System.Buffers": "4.5.1", - "System.Collections.Immutable": "8.0.0", - "System.Composition": "8.0.0", - "System.IO.Pipelines": "8.0.0", - "System.Memory": "4.5.5", - "System.Numerics.Vectors": "4.5.0", - "System.Reflection.Metadata": "8.0.0", - "System.Runtime.CompilerServices.Unsafe": "6.0.0", - "System.Text.Encoding.CodePages": "7.0.0", - "System.Threading.Channels": "7.0.0", - "System.Threading.Tasks.Extensions": "4.5.4" - } - }, - "Microsoft.NETCore.Platforms": { - "type": "Transitive", - "resolved": "1.1.0", - "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==" - }, - "System.Buffers": { - "type": "Transitive", - "resolved": "4.5.1", - "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" - }, - "System.Collections.Immutable": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==", - "dependencies": { - "System.Memory": "4.5.5", - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - } - }, - "System.Composition": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "E9oO9olNNxA39J8CxQwf7ceIPm+j/B/PhYpyK9M4LhN/OLLRw6u5fNInkhVqaWueMB9iXxYqnwqwgz+W91loIA==", - "dependencies": { - "System.Composition.AttributedModel": "8.0.0", - "System.Composition.Convention": "8.0.0", - "System.Composition.Hosting": "8.0.0", - "System.Composition.Runtime": "8.0.0", - "System.Composition.TypedParts": "8.0.0" - } - }, - "System.Composition.AttributedModel": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "NyElSuvmBMYdn2iPG0n29i7Igu0bq99izOP3MAtEwskY3OP9jqsavvVmPn9lesVaj/KT/o/QkNjA43dOJTsDQw==" - }, - "System.Composition.Convention": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "UuVkc1B3vQU/LzEbWLMZ1aYVssv4rpShzf8wPEyrUqoGNqdYKREmB8bXR73heOMKkwS6ZnPz3PjGODT2MenukQ==", - "dependencies": { - "System.Composition.AttributedModel": "8.0.0" - } - }, - "System.Composition.Hosting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "qwbONqoxlazxcbiohvb3t1JWZgKIKcRdXS5uEeLbo5wtuBupIbAvdC3PYTAeBCZrZeERvrtAbhYHuuS43Zr1bQ==", - "dependencies": { - "System.Composition.Runtime": "8.0.0" - } - }, - "System.Composition.Runtime": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "G+kRyB5/6+3ucRRQz+DF4uSHGqpkK8Q4ilVdbt4zvxpmvLVZNmSkyFAQpJLcbOyVF85aomJx0m+TGMDVlwx7ZQ==" - }, - "System.Composition.TypedParts": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "DsSklhuA+Dsgo3ZZrar8hjBFvq1wa1grrkNCTt+6SoX3vq0Vy+HXJnVXrU/nNH1BjlGH684A7h4hJQHZd/u5mA==", - "dependencies": { - "System.Composition.AttributedModel": "8.0.0", - "System.Composition.Hosting": "8.0.0", - "System.Composition.Runtime": "8.0.0" - } - }, - "System.IO.Pipelines": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==", - "dependencies": { - "System.Buffers": "4.5.1", - "System.Memory": "4.5.5", - "System.Threading.Tasks.Extensions": "4.5.4" - } - }, - "System.Memory": { - "type": "Transitive", - "resolved": "4.5.5", - "contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==", - "dependencies": { - "System.Buffers": "4.5.1", - "System.Numerics.Vectors": "4.4.0", - "System.Runtime.CompilerServices.Unsafe": "4.5.3" - } - }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" - }, - "System.Reflection.Metadata": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==", - "dependencies": { - "System.Collections.Immutable": "8.0.0", - "System.Memory": "4.5.5" - } - }, - "System.Runtime.CompilerServices.Unsafe": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==" - }, - "System.Text.Encoding.CodePages": { - "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "LSyCblMpvOe0N3E+8e0skHcrIhgV2huaNcjUUEa8hRtgEAm36aGkRoC8Jxlb6Ra6GSfF29ftduPNywin8XolzQ==", - "dependencies": { - "System.Memory": "4.5.5", - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - } - }, - "System.Threading.Channels": { - "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "qmeeYNROMsONF6ndEZcIQ+VxR4Q/TX/7uIVLJqtwIWL7dDWeh0l1UIqgo4wYyjG//5lUNhwkLDSFl+pAWO6oiA==", - "dependencies": { - "System.Threading.Tasks.Extensions": "4.5.4" - } - }, - "System.Threading.Tasks.Extensions": { - "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==", - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "4.5.3" - } - } - } - } -} \ No newline at end of file diff --git a/src/Visus.AddressValidation/Abstractions/ClientEnvironment.cs b/src/Visus.AddressValidation/Abstractions/ClientEnvironment.cs index 17c57a4..c02ebd6 100644 --- a/src/Visus.AddressValidation/Abstractions/ClientEnvironment.cs +++ b/src/Visus.AddressValidation/Abstractions/ClientEnvironment.cs @@ -19,5 +19,5 @@ public enum ClientEnvironment /// Production /// [Description("Production")] - PRODUCTION = 1 + PRODUCTION = 1, } diff --git a/src/Visus.AddressValidation/Abstractions/CountryCode.cs b/src/Visus.AddressValidation/Abstractions/CountryCode.cs index 3195798..6bf0c7d 100644 --- a/src/Visus.AddressValidation/Abstractions/CountryCode.cs +++ b/src/Visus.AddressValidation/Abstractions/CountryCode.cs @@ -1510,5 +1510,5 @@ public enum CountryCode /// Zambia /// [Description("Zambia")] - ZM = 894 + ZM = 894, } diff --git a/src/Visus.AddressValidation/Constants.cs b/src/Visus.AddressValidation/Constants.cs index ebce33f..b7b4c2c 100644 --- a/src/Visus.AddressValidation/Constants.cs +++ b/src/Visus.AddressValidation/Constants.cs @@ -8,7 +8,7 @@ internal static class Constants { CountryCode.MC, CountryCode.SG, - CountryCode.VA + CountryCode.VA, }; public static IReadOnlySet NoPostalCode => new HashSet @@ -71,6 +71,6 @@ internal static class Constants CountryCode.VU, CountryCode.YE, CountryCode.ZW, - CountryCode.ZZ + CountryCode.ZZ, }; } diff --git a/src/Visus.AddressValidation/Http/IApiResponse.cs b/src/Visus.AddressValidation/Http/IApiResponse.cs index 2cad935..3bdcabb 100644 --- a/src/Visus.AddressValidation/Http/IApiResponse.cs +++ b/src/Visus.AddressValidation/Http/IApiResponse.cs @@ -17,5 +17,5 @@ public interface IApiResponse /// . /// /// An instance that implements . - public IAddressValidationResponse ToAddressValidationResponse(IValidationResult? validationResult = null); + IAddressValidationResponse ToAddressValidationResponse(IValidationResult? validationResult = null); } diff --git a/src/Visus.AddressValidation/Model/AbstractAddressValidationResponse.cs b/src/Visus.AddressValidation/Model/AbstractAddressValidationResponse.cs index cd780b9..d7e5ce6 100644 --- a/src/Visus.AddressValidation/Model/AbstractAddressValidationResponse.cs +++ b/src/Visus.AddressValidation/Model/AbstractAddressValidationResponse.cs @@ -133,7 +133,7 @@ public override int GetHashCode() } hashCode.Add(CityOrTown, StringComparer.OrdinalIgnoreCase); - hashCode.Add((int) Country); + hashCode.Add((int)Country); hashCode.Add(IsResidential); hashCode.Add(PostalCode, StringComparer.OrdinalIgnoreCase); hashCode.Add(StateOrProvince, StringComparer.OrdinalIgnoreCase); diff --git a/src/Visus.AddressValidation/Model/IAddressValidationResponse.cs b/src/Visus.AddressValidation/Model/IAddressValidationResponse.cs index 0cdbfb8..1e503dc 100644 --- a/src/Visus.AddressValidation/Model/IAddressValidationResponse.cs +++ b/src/Visus.AddressValidation/Model/IAddressValidationResponse.cs @@ -12,33 +12,33 @@ public interface IAddressValidationResponse /// Gets the address lines /// [JsonPropertyName("addressLines")] - public IReadOnlySet AddressLines { get; } + IReadOnlySet AddressLines { get; } /// /// Gets the city (town) /// [JsonPropertyName("cityOrTown")] - public string? CityOrTown { get; } + string? CityOrTown { get; } /// /// Gets the country code /// /// Refer to for values. [JsonPropertyName("country")] - public CountryCode Country { get; } + CountryCode Country { get; } /// /// Gets custom response data /// /// Collection may be empty for services that do not provide additional response information. [JsonPropertyName("customResponseData")] - public IReadOnlyDictionary CustomResponseData { get; } + IReadOnlyDictionary CustomResponseData { get; } /// /// Gets any errors returned during validation /// [JsonPropertyName("errors")] - public IReadOnlySet Errors { get; } + IReadOnlySet Errors { get; } /// /// Gets the residential indicator for the address @@ -48,32 +48,32 @@ public interface IAddressValidationResponse /// return an indicator. /// [JsonPropertyName("isResidential")] - public bool? IsResidential { get; } + bool? IsResidential { get; } /// /// Gets the zip (postal) code /// /// Value may be omitted for countries that do not support the concept of a postal code. [JsonPropertyName("postalCode")] - public string? PostalCode { get; } + string? PostalCode { get; } /// /// Gets the state (province) /// /// Value may be omitted for countries that are considered city-states. [JsonPropertyName("stateOrProvince")] - public string? StateOrProvince { get; } + string? StateOrProvince { get; } /// /// Gets suggested addresses created during validation /// /// Collection may be empty if no suggestions provided or validation service does not provide them. [JsonPropertyName("suggestions")] - public IReadOnlyList Suggestions { get; } + IReadOnlyList Suggestions { get; } /// /// Gets any warnings returned during validation /// [JsonPropertyName("warnings")] - public IReadOnlySet Warnings { get; } + IReadOnlySet Warnings { get; } } diff --git a/src/Visus.AddressValidation/Serialization/Json/JsonStringBooleanConverter.cs b/src/Visus.AddressValidation/Serialization/Json/JsonStringBooleanConverter.cs index 29ff6a1..6389609 100644 --- a/src/Visus.AddressValidation/Serialization/Json/JsonStringBooleanConverter.cs +++ b/src/Visus.AddressValidation/Serialization/Json/JsonStringBooleanConverter.cs @@ -11,7 +11,7 @@ public sealed class JsonStringBooleanConverter : JsonConverter "F", "False", "N", - "NO" + "NO", }; private static readonly HashSet PossibleBooleanTrueStrings = new(StringComparer.OrdinalIgnoreCase) @@ -21,7 +21,7 @@ public sealed class JsonStringBooleanConverter : JsonConverter "T", "True", "Y", - "YES" + "YES", }; /// @@ -32,7 +32,7 @@ public override bool Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSer JsonTokenType.True => true, JsonTokenType.False => false, JsonTokenType.String => ToBoolOrDefault(reader.GetString()), - _ => throw new JsonException() + _ => throw new JsonException(), }; } diff --git a/src/Visus.AddressValidation/Serialization/Json/TokenResponseConverter.cs b/src/Visus.AddressValidation/Serialization/Json/TokenResponseConverter.cs index adbc3a4..244d1b4 100644 --- a/src/Visus.AddressValidation/Serialization/Json/TokenResponseConverter.cs +++ b/src/Visus.AddressValidation/Serialization/Json/TokenResponseConverter.cs @@ -38,7 +38,7 @@ public sealed class TokenResponseConverter : JsonConverter { nameof(TokenResponse.IdentityToken), nameof(TokenResponse.IdentityToken) }, { nameof(TokenResponse.IssuedTokenType), nameof(TokenResponse.IssuedTokenType) }, { nameof(TokenResponse.RefreshToken), nameof(TokenResponse.RefreshToken) }, - { nameof(TokenResponse.TokenType), nameof(TokenResponse.TokenType) } + { nameof(TokenResponse.TokenType), nameof(TokenResponse.TokenType) }, }; /// diff --git a/src/Visus.AddressValidation/Services/AbstractAuthenticationService.cs b/src/Visus.AddressValidation/Services/AbstractAuthenticationService.cs index 6597a03..4622c40 100644 --- a/src/Visus.AddressValidation/Services/AbstractAuthenticationService.cs +++ b/src/Visus.AddressValidation/Services/AbstractAuthenticationService.cs @@ -2,7 +2,6 @@ namespace Visus.AddressValidation.Services; using Http; using Microsoft.Extensions.Caching.Distributed; -using Microsoft.Extensions.Caching.Memory; /// /// Abstraction for implementing an authentication service that relies on an @@ -79,7 +78,7 @@ public string? CacheKey await _cache.SetStringAsync(CacheKey, response.AccessToken, new DistributedCacheEntryOptions { - AbsoluteExpiration = expires + AbsoluteExpiration = expires, }, cancellationToken).ConfigureAwait(false); return response.AccessToken; diff --git a/src/Visus.AddressValidation/Validation/AbstractAddressValidationRequestValidator.cs b/src/Visus.AddressValidation/Validation/AbstractAddressValidationRequestValidator.cs index ae54d1b..bf168b4 100644 --- a/src/Visus.AddressValidation/Validation/AbstractAddressValidationRequestValidator.cs +++ b/src/Visus.AddressValidation/Validation/AbstractAddressValidationRequestValidator.cs @@ -14,7 +14,7 @@ protected override ValueTask PreValidateAsync(T instance, ISet res { Debug.Assert(instance != null, nameof(instance) + " != null"); Debug.Assert(results != null, nameof(results) + " != null"); - + switch ( instance.AddressLines.Count ) { case 0: diff --git a/src/Visus.AddressValidation/Validation/ValidationSeverity.cs b/src/Visus.AddressValidation/Validation/ValidationSeverity.cs index d650d70..69736a0 100644 --- a/src/Visus.AddressValidation/Validation/ValidationSeverity.cs +++ b/src/Visus.AddressValidation/Validation/ValidationSeverity.cs @@ -13,5 +13,5 @@ public enum ValidationSeverity /// /// Error /// - Error + Error, } diff --git a/src/Visus.AddressValidation/Validation/ValidationState.cs b/src/Visus.AddressValidation/Validation/ValidationState.cs index bd8c7bb..1f41f1f 100644 --- a/src/Visus.AddressValidation/Validation/ValidationState.cs +++ b/src/Visus.AddressValidation/Validation/ValidationState.cs @@ -128,7 +128,7 @@ public override int GetHashCode() HashCode hashCode = new(); hashCode.Add(Message, StringComparer.OrdinalIgnoreCase); - hashCode.Add((int) Severity); + hashCode.Add((int)Severity); return hashCode.ToHashCode(); } diff --git a/src/Visus.AddressValidation/Visus.AddressValidation.csproj b/src/Visus.AddressValidation/Visus.AddressValidation.csproj index e709e82..45ce8c9 100644 --- a/src/Visus.AddressValidation/Visus.AddressValidation.csproj +++ b/src/Visus.AddressValidation/Visus.AddressValidation.csproj @@ -1,23 +1,23 @@  - - net8.0 - true - + + net10.0 + true + - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + - - - - diff --git a/src/Visus.AddressValidation/packages.lock.json b/src/Visus.AddressValidation/packages.lock.json deleted file mode 100644 index dc318f5..0000000 --- a/src/Visus.AddressValidation/packages.lock.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "version": 2, - "dependencies": { - "net8.0": { - "Microsoft.Extensions.Caching.Abstractions": { - "type": "Direct", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "Zcoy6H9mSoGyvr7UvlGokEZrlZkcPCICPZr8mCsSt9U/N8eeCwCXwKF5bShdA66R0obxBCwP4AxomQHvVkC/uA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "Direct", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "d2kDKnCsJvY7mBVhcjPSp9BkJk48DsaHPg5u+Oy4f8XaOqnEedRy/USyvnpHL92wpJ6DrTPy7htppUUzskbCXQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.NET.ILLink.Tasks": { - "type": "Direct", - "requested": "[8.0.22, )", - "resolved": "8.0.22", - "contentHash": "MhcMithKEiyyNkD2ZfbDZPmcOdi0GheGfg8saEIIEfD/fol3iHmcV8TsZkD4ZYz5gdUuoX4YtlVySUU7Sxl9SQ==" - }, - "Microsoft.SourceLink.GitHub": { - "type": "Direct", - "requested": "[8.0.0, )", - "resolved": "8.0.0", - "contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==", - "dependencies": { - "Microsoft.Build.Tasks.Git": "8.0.0", - "Microsoft.SourceLink.Common": "8.0.0" - } - }, - "Microsoft.Build.Tasks.Git": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ==" - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==" - }, - "Microsoft.SourceLink.Common": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" - } - } - } -} \ No newline at end of file diff --git a/tests/.editorconfig b/tests/.editorconfig deleted file mode 100644 index 806bea4..0000000 --- a/tests/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -# C# files -[*.cs] - -#### C# Coding Conventions #### - -# var preferences -csharp_style_var_elsewhere = true:suggestion -csharp_style_var_for_built_in_types = true:suggestion -csharp_style_var_when_type_is_apparent = true:suggestion diff --git a/tests/Directory.Build.props b/tests/Directory.Build.props deleted file mode 100644 index e556cab..0000000 --- a/tests/Directory.Build.props +++ /dev/null @@ -1,19 +0,0 @@ - - - false - false - enable - true - false - true - - - - true - true - - - - - - diff --git a/tests/Visus.AddressValidation.Integration.FedEx.Tests/Visus.AddressValidation.Integration.FedEx.Tests.csproj b/tests/Visus.AddressValidation.Integration.FedEx.Tests/Visus.AddressValidation.Integration.FedEx.Tests.csproj index 27a38d6..ce124ee 100644 --- a/tests/Visus.AddressValidation.Integration.FedEx.Tests/Visus.AddressValidation.Integration.FedEx.Tests.csproj +++ b/tests/Visus.AddressValidation.Integration.FedEx.Tests/Visus.AddressValidation.Integration.FedEx.Tests.csproj @@ -1,7 +1,7 @@ - net8.0 + net10.0 true diff --git a/tests/Visus.AddressValidation.Integration.FedEx.Tests/packages.lock.json b/tests/Visus.AddressValidation.Integration.FedEx.Tests/packages.lock.json deleted file mode 100644 index ae2f825..0000000 --- a/tests/Visus.AddressValidation.Integration.FedEx.Tests/packages.lock.json +++ /dev/null @@ -1,566 +0,0 @@ -{ - "version": 2, - "dependencies": { - "net8.0": { - "coverlet.collector": { - "type": "Direct", - "requested": "[6.0.4, )", - "resolved": "6.0.4", - "contentHash": "lkhqpF8Pu2Y7IiN7OntbsTtdbpR1syMsm2F3IgX6ootA4ffRqWL5jF7XipHuZQTdVuWG/gVAAcf8mjk8Tz0xPg==" - }, - "coverlet.msbuild": { - "type": "Direct", - "requested": "[6.0.4, )", - "resolved": "6.0.4", - "contentHash": "Qa7Hg+wrOMDKpXVn2dw4Wlun490bIWsFW0fdNJQFJLZnbU27MCP0HJ2mPgS+3EQBQUb0zKlkwiQzP+j38Hc3Iw==" - }, - "JunitXml.TestLogger": { - "type": "Direct", - "requested": "[7.0.2, )", - "resolved": "7.0.2", - "contentHash": "f6swYzT8DOVS6byaz1f7SYT06aoZTFXooLlJFX9Da3JB1/RLK+Z0UW1Q33NqMX+T9JFpal276qAJfPVUp96qbg==" - }, - "Microsoft.NET.Test.Sdk": { - "type": "Direct", - "requested": "[18.0.1, )", - "resolved": "18.0.1", - "contentHash": "WNpu6vI2rA0pXY4r7NKxCN16XRWl5uHu6qjuyVLoDo6oYEggIQefrMjkRuibQHm/NslIUNCcKftvoWAN80MSAg==", - "dependencies": { - "Microsoft.CodeCoverage": "18.0.1", - "Microsoft.TestPlatform.TestHost": "18.0.1" - } - }, - "NSubstitute": { - "type": "Direct", - "requested": "[5.3.0, )", - "resolved": "5.3.0", - "contentHash": "lJ47Cps5Qzr86N99lcwd+OUvQma7+fBgr8+Mn+aOC0WrlqMNkdivaYD9IvnZ5Mqo6Ky3LS7ZI+tUq1/s9ERd0Q==", - "dependencies": { - "Castle.Core": "5.1.1" - } - }, - "PublicApiGenerator": { - "type": "Direct", - "requested": "[11.5.4, )", - "resolved": "11.5.4", - "contentHash": "Va382WG4Vng8kCtDaAP5solqbhayMMlW1E+e/DV/w39yJPybmMgy8fbdUvvQgG93EMILx7JtJbGS1HRhVNTUVQ==", - "dependencies": { - "Mono.Cecil": "0.11.6", - "System.CodeDom": "6.0.0" - } - }, - "RichardSzalay.MockHttp": { - "type": "Direct", - "requested": "[7.0.0, )", - "resolved": "7.0.0", - "contentHash": "QwnauYiaywp65QKFnP+wvgiQ2D8Pv888qB2dyfd7MSVDF06sIvxqASenk+RxsWybyyt+Hu1Y251wQxpHTv3UYg==" - }, - "Verify.Xunit": { - "type": "Direct", - "requested": "[31.8.0, )", - "resolved": "31.8.0", - "contentHash": "f+oaf/znLk/aeX6nAK9z8gjAuAnpZPSr9vixHAMveS6G3FP9dBCDCvu7UsZUKBQLgVT17Ie38LkXvmFgLx7Aqw==", - "dependencies": { - "Argon": "0.33.0", - "DiffEngine": "17.0.1", - "SimpleInfoName": "3.1.2", - "Verify": "31.8.0", - "xunit.abstractions": "2.0.3", - "xunit.extensibility.execution": "2.9.3" - } - }, - "xunit": { - "type": "Direct", - "requested": "[2.9.3, )", - "resolved": "2.9.3", - "contentHash": "TlXQBinK35LpOPKHAqbLY4xlEen9TBafjs0V5KnA4wZsoQLQJiirCR4CbIXvOH8NzkW4YeJKP5P/Bnrodm0h9Q==", - "dependencies": { - "xunit.analyzers": "1.18.0", - "xunit.assert": "2.9.3", - "xunit.core": "[2.9.3]" - } - }, - "xunit.runner.visualstudio": { - "type": "Direct", - "requested": "[3.1.5, )", - "resolved": "3.1.5", - "contentHash": "tKi7dSTwP4m5m9eXPM2Ime4Kn7xNf4x4zT9sdLO/G4hZVnQCRiMTWoSZqI/pYTVeI27oPPqHBKYI/DjJ9GsYgA==" - }, - "Argon": { - "type": "Transitive", - "resolved": "0.33.0", - "contentHash": "4MIj5MosLqRlKAz16Ir5rz1gyocC6npJGGXqkTIIVby0yPYKk56Lm9X5tEQv6MbStLUOv3aDfya6FKAqcRhxTA==" - }, - "Castle.Core": { - "type": "Transitive", - "resolved": "5.1.1", - "contentHash": "rpYtIczkzGpf+EkZgDr9CClTdemhsrwA/W5hMoPjLkRFnXzH44zDLoovXeKtmxb1ykXK9aJVODSpiJml8CTw2g==", - "dependencies": { - "System.Diagnostics.EventLog": "6.0.0" - } - }, - "DiffEngine": { - "type": "Transitive", - "resolved": "17.0.1", - "contentHash": "GZ1w8uedF2CpcJzwPJkBMYRVJRETbmmqKAqhTJlIMRiKeEYk68yTXZIXS+7fSwx8jgK5loGhKPyZYPxqXCn2oA==", - "dependencies": { - "EmptyFiles": "8.17.1", - "System.Management": "8.0.0" - } - }, - "EmptyFiles": { - "type": "Transitive", - "resolved": "8.17.1", - "contentHash": "pVmxBQer9yeFhYg6X27YMB/RDxYT99ms5QD8IT2KTj/WzygRtWZ0l7jlk4I4aAztNT7QjvHQ6tQ1/ox07C552A==" - }, - "Microsoft.CodeCoverage": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "O+utSr97NAJowIQT/OVp3Lh9QgW/wALVTP4RG1m2AfFP4IyJmJz0ZBmFJUsRQiAPgq6IRC0t8AAzsiPIsaUDEA==" - }, - "Microsoft.Extensions.AmbientMetadata.Application": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "ndm/eoOzk61Csn+ojv5z3Kt7YWAdUNR8ruFaf1b69kSbeqDPoV96f1GR1OWTIrCN9bm83V8CSkhvnnG+LrLTvg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "Tgu40iIg2Kr8s+BoOhb8r8kQfcagwm1VnpnMZA9fd/sD8Hlj13cNpyCfLRrYEBP+VmfmaoficQvRNEUqH+F4mw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.ObjectPool": "8.0.21" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "4ceMQRCIMP9AxxZOQ0k+xYXCfgSEmEsnt6s0o/KkpeLqwm3kGKBbsiJlyMk56GnKJtk4SI7nTpIIzb+Qdk+FMQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "iPE1jROL5uK/6iJSRzwpEIJt6BuANN36Io+6bLss67JVjbG6DdVedrMnB9nqsxs+Lx3X9RxvARTgFsUgP0MB0g==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "UquyDzvz0EneIQrrU67GJkIgynS+VD7t+RDtNv6VgKMOFrLBjldn6hzlXppGGecFMvAkMTqn4T8RYvzw7j7fQA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection.AutoActivation": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "qk5+lY0MUl7Y77TjM6HzfQPOY4CqoTg281OddyDC5iU2hf+cIxhx0VbNuJH77vqB6qyCP1OsuQmCzvlpf9yxBQ==", - "dependencies": { - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1" - } - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "WkriTCwxW0QbIgPYXGy329wQKcS4lmstwwysCHcjok2acPd626ysPcwMpw1pSBNzkdkMsqcbcJLlpVc9kP/YiQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "9.0.11", - "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.11", - "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "D9gu4weEmvWGuz8zp5xwsOr0ldmWphMKr7+IW66hG4rnrgpMLtTWoOINBOX5mcRTPL39+AVd3BJdc4HTvl2NrA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "SRJgt408OA/+v2o47Kjx8Wf+rbCJMmTsbsnkuzVzeP9xfcn4dIoMJXLCKiRlDNzJ3pXLYrXmkyOSY81BehoVHw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", - "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.Http.Diagnostics": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "3IJjOPm4CRmv7zzjPV+RCyvS4kWJ9BNr1k/MWgRTQds6LcIhAgwh+ToZ8O4fKMFlme0EGLvTm27ARKqp468pQw==", - "dependencies": { - "Microsoft.Extensions.Http": "8.0.1", - "Microsoft.Extensions.Telemetry": "9.10.0", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.Extensions.Logging": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "PVHYgMmMZFEE3PGpc7oZ9CnoyNonNyT5klrV9pNIzCPxL12FpQ7kNhliXAwowmtaDVBmKnG/1db6d7gqPwDj8g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "QWwTrsgOnJMmn+XUslm8D2H1n3PkP/u/v52FODtyBc/k4W9r3i2vcXXeeX/upnzllJYRRbrzVzT0OclfNJtBJA==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.Configuration.Binder": "8.0.2", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Logging": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2", - "Microsoft.Extensions.Options": "8.0.2", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "8.0.21", - "contentHash": "UBuyxD9CqasYKmwP41Skar2+f2Bk47V3NAPXh3a3Rxsmt2NTB1qynDU8zHkHWEts/07QykmzYAWLHPgHsROe0w==" - }, - "Microsoft.Extensions.Options": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HX4M3BLkW1dtByMKHDVq6r7Jy6e4hf8NDzHpIgz7C8BtYk9JQHhfYX5c1UheQTD5Veg1yBhz/cD9C8vtrGrk9w==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HUzr4c1eMXCQN8Yre2JdCzYmLJAecFGVXfByVhjEY4jBaHIs8EAxdv72WMUa2GcROlkYPbYNzMbcqJPMiznHxw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Configuration.Binder": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==" - }, - "Microsoft.Extensions.Resilience": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "tNptjYbHq73emZok4HBbpV41Afwoclga5LaKux8RV27lOA2lyQxeJFKNTWYQauJmWxxwXmwG7bgitbnIDh4eXA==", - "dependencies": { - "Microsoft.Extensions.Diagnostics": "8.0.1", - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "9.10.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0", - "Polly.Extensions": "8.4.2", - "Polly.RateLimiting": "8.4.2" - } - }, - "Microsoft.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "FGEOTEjMB+1T69PLp5GrG4UOsIjcdNQcoiXpC+KV9NRejl6vSMLhVqQ6g6c+cxLXzx8xc2J90GAMhD1wPHjKHg==", - "dependencies": { - "Microsoft.Extensions.AmbientMetadata.Application": "9.10.0", - "Microsoft.Extensions.DependencyInjection.AutoActivation": "9.10.0", - "Microsoft.Extensions.Logging.Configuration": "8.0.1", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0" - } - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "hJflG5if8NqElmybxXDf38d4EPopOo9H+Qg6l5LKTsavqE4CFdA5DIPb9+jjAeL22FN+rs6KuuEIuBPS4PNXvw==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "9.10.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.3", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Options": "8.0.2" - } - }, - "Microsoft.TestPlatform.ObjectModel": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "qT/mwMcLF9BieRkzOBPL2qCopl8hQu6A1P7JWAoj/FMu5i9vds/7cjbJ/LLtaiwWevWLAeD5v5wjQJ/l6jvhWQ==", - "dependencies": { - "System.Reflection.Metadata": "8.0.0" - } - }, - "Microsoft.TestPlatform.TestHost": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "uDJKAEjFTaa2wHdWlfo6ektyoh+WD4/Eesrwb4FpBFKsLGehhACVnwwTI4qD3FrIlIEPlxdXg3SyrYRIcO+RRQ==", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "18.0.1", - "Newtonsoft.Json": "13.0.3" - } - }, - "Mono.Cecil": { - "type": "Transitive", - "resolved": "0.11.6", - "contentHash": "f33RkDtZO8VlGXCtmQIviOtxgnUdym9xx/b1p9h91CRGOsJFxCFOFK1FDbVt1OCf1aWwYejUFa2MOQyFWTFjbA==" - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.3", - "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" - }, - "Polly.Extensions": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0", - "Polly.Core": "8.4.2" - } - }, - "Polly.RateLimiting": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", - "dependencies": { - "Polly.Core": "8.4.2", - "System.Threading.RateLimiting": "8.0.0" - } - }, - "SimpleInfoName": { - "type": "Transitive", - "resolved": "3.1.2", - "contentHash": "/OoEZQxSW6DeTJ9nfrg8BLCOCWpxBiWHV4NkG3t+Xpe8tvzm7yCwKwxkhpauMl3fg9OjlIjJMKX61H6VavLkrw==" - }, - "System.CodeDom": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "WTlRjL6KWIMr/pAaq3rYqh0TJlzpouaQ/W1eelssHgtlwHAH25jXTkUphTYx9HaIIf7XA6qs/0+YhtLEQRkJ+Q==" - }, - "System.Collections.Immutable": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==" - }, - "System.Diagnostics.DiagnosticSource": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "/QzMFklOm8Ak//YB0I2kR+ByxUndT63ucrRWQm0xZsuLExJWrVDeGKtYZDuBackd9dThbwMdOotIEc4c4KwJiw==" - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw==" - }, - "System.IO.Pipelines": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "jrK22i5LRzxZCfGb+tGmke2VH7oE0DvcDlJ1HAKYU8cPmD8XnpUT0bYn2Gy98GEhGjtfbR/sxKTVb+dE770pfA==", - "dependencies": { - "System.CodeDom": "8.0.0" - } - }, - "System.Reflection.Metadata": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==", - "dependencies": { - "System.Collections.Immutable": "8.0.0" - } - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "Verify": { - "type": "Transitive", - "resolved": "31.8.0", - "contentHash": "xZFQX/xVM8rCG1LkXVSBi7cp+eujrE++RDTMMztw6Vt1KjoETFsr8hd0uwYHmIDpvHu/vK877WVn8XVMxDHFfA==", - "dependencies": { - "Argon": "0.33.0", - "DiffEngine": "17.0.1", - "SimpleInfoName": "3.1.2" - } - }, - "xunit.abstractions": { - "type": "Transitive", - "resolved": "2.0.3", - "contentHash": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==" - }, - "xunit.analyzers": { - "type": "Transitive", - "resolved": "1.18.0", - "contentHash": "OtFMHN8yqIcYP9wcVIgJrq01AfTxijjAqVDy/WeQVSyrDC1RzBWeQPztL49DN2syXRah8TYnfvk035s7L95EZQ==" - }, - "xunit.assert": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "/Kq28fCE7MjOV42YLVRAJzRF0WmEqsmflm0cfpMjGtzQ2lR5mYVj1/i0Y8uDAOLczkL3/jArrwehfMD0YogMAA==" - }, - "xunit.core": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "BiAEvqGvyme19wE0wTKdADH+NloYqikiU0mcnmiNyXaF9HyHmE6sr/3DC5vnBkgsWaE6yPyWszKSPSApWdRVeQ==", - "dependencies": { - "xunit.extensibility.core": "[2.9.3]", - "xunit.extensibility.execution": "[2.9.3]" - } - }, - "xunit.extensibility.core": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "kf3si0YTn2a8J8eZNb+zFpwfoyvIrQ7ivNk5ZYA5yuYk1bEtMe4DxJ2CF/qsRgmEnDr7MnW1mxylBaHTZ4qErA==", - "dependencies": { - "xunit.abstractions": "2.0.3" - } - }, - "xunit.extensibility.execution": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "yMb6vMESlSrE3Wfj7V6cjQ3S4TXdXpRqYeNEI3zsX31uTsGMJjEw6oD5F5u1cHnMptjhEECnmZSsPxB6ChZHDQ==", - "dependencies": { - "xunit.extensibility.core": "[2.9.3]" - } - }, - "visus.addressvalidation": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "[10.0.0, )", - "Microsoft.Extensions.Configuration.Abstractions": "[10.0.0, )" - } - }, - "visus.addressvalidation.integration.fedex": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Memory": "[9.0.11, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[9.0.11, )", - "Microsoft.Extensions.Http": "[9.0.11, )", - "Microsoft.Extensions.Http.Resilience": "[9.10.0, )", - "Visus.AddressValidation": "[0.0.1, )" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "Zcoy6H9mSoGyvr7UvlGokEZrlZkcPCICPZr8mCsSt9U/N8eeCwCXwKF5bShdA66R0obxBCwP4AxomQHvVkC/uA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.Caching.Memory": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "J77oUeVZXdMoiUiCPkL4v13KrNRuMQnSHHw78cTh/2ZidyiMFm8jhu49OUKvNydMUX8ZcuM5g8uohW18YaglMw==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "d2kDKnCsJvY7mBVhcjPSp9BkJk48DsaHPg5u+Oy4f8XaOqnEedRy/USyvnpHL92wpJ6DrTPy7htppUUzskbCXQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "+ZxxZzcVU+IEzq12GItUzf/V3mEc5nSLiXijwvDc4zyhbjvSZZ043giSZqGnhakrjwRWjkerIHPrRwm9okEIpw==" - }, - "Microsoft.Extensions.Http": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "QEa12ESaPAKR3M40N8dawVd+LPOgxCrGsUmC7Myfhn44AQiWh7X9PiTAagrAnJSaGqsb+yx+KRNSjrm8wx1TVQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Diagnostics": "9.0.11", - "Microsoft.Extensions.Logging": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Http.Resilience": { - "type": "CentralTransitive", - "requested": "[9.10.0, )", - "resolved": "9.10.0", - "contentHash": "4Bt58q+Oqpj4VYm3T7hcmsb1zVhmUTNNggDkjlWBIv3bv6MVRPGqIokK2tRHsD8bM4i3GkJLRWe8lQwbsWS6PQ==", - "dependencies": { - "Microsoft.Extensions.Http.Diagnostics": "9.10.0", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Resilience": "9.10.0" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "UKWFTDwtZQIoypyt1YPVsxTnDK+0sKn26+UeSGeNlkRQddrkt9EC6kP4g94rgO/WOZkz94bKNlF1dVZN3QfPFQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - } - } - } -} \ No newline at end of file diff --git a/tests/Visus.AddressValidation.Integration.Google.Tests/Visus.AddressValidation.Integration.Google.Tests.csproj b/tests/Visus.AddressValidation.Integration.Google.Tests/Visus.AddressValidation.Integration.Google.Tests.csproj index 2b1dbb6..56fd0a6 100644 --- a/tests/Visus.AddressValidation.Integration.Google.Tests/Visus.AddressValidation.Integration.Google.Tests.csproj +++ b/tests/Visus.AddressValidation.Integration.Google.Tests/Visus.AddressValidation.Integration.Google.Tests.csproj @@ -1,7 +1,7 @@ - net8.0 + net10.0 true diff --git a/tests/Visus.AddressValidation.Integration.Google.Tests/packages.lock.json b/tests/Visus.AddressValidation.Integration.Google.Tests/packages.lock.json deleted file mode 100644 index ce740e7..0000000 --- a/tests/Visus.AddressValidation.Integration.Google.Tests/packages.lock.json +++ /dev/null @@ -1,609 +0,0 @@ -{ - "version": 2, - "dependencies": { - "net8.0": { - "coverlet.collector": { - "type": "Direct", - "requested": "[6.0.4, )", - "resolved": "6.0.4", - "contentHash": "lkhqpF8Pu2Y7IiN7OntbsTtdbpR1syMsm2F3IgX6ootA4ffRqWL5jF7XipHuZQTdVuWG/gVAAcf8mjk8Tz0xPg==" - }, - "coverlet.msbuild": { - "type": "Direct", - "requested": "[6.0.4, )", - "resolved": "6.0.4", - "contentHash": "Qa7Hg+wrOMDKpXVn2dw4Wlun490bIWsFW0fdNJQFJLZnbU27MCP0HJ2mPgS+3EQBQUb0zKlkwiQzP+j38Hc3Iw==" - }, - "JunitXml.TestLogger": { - "type": "Direct", - "requested": "[7.0.2, )", - "resolved": "7.0.2", - "contentHash": "f6swYzT8DOVS6byaz1f7SYT06aoZTFXooLlJFX9Da3JB1/RLK+Z0UW1Q33NqMX+T9JFpal276qAJfPVUp96qbg==" - }, - "Microsoft.NET.Test.Sdk": { - "type": "Direct", - "requested": "[18.0.1, )", - "resolved": "18.0.1", - "contentHash": "WNpu6vI2rA0pXY4r7NKxCN16XRWl5uHu6qjuyVLoDo6oYEggIQefrMjkRuibQHm/NslIUNCcKftvoWAN80MSAg==", - "dependencies": { - "Microsoft.CodeCoverage": "18.0.1", - "Microsoft.TestPlatform.TestHost": "18.0.1" - } - }, - "NSubstitute": { - "type": "Direct", - "requested": "[5.3.0, )", - "resolved": "5.3.0", - "contentHash": "lJ47Cps5Qzr86N99lcwd+OUvQma7+fBgr8+Mn+aOC0WrlqMNkdivaYD9IvnZ5Mqo6Ky3LS7ZI+tUq1/s9ERd0Q==", - "dependencies": { - "Castle.Core": "5.1.1" - } - }, - "PublicApiGenerator": { - "type": "Direct", - "requested": "[11.5.4, )", - "resolved": "11.5.4", - "contentHash": "Va382WG4Vng8kCtDaAP5solqbhayMMlW1E+e/DV/w39yJPybmMgy8fbdUvvQgG93EMILx7JtJbGS1HRhVNTUVQ==", - "dependencies": { - "Mono.Cecil": "0.11.6", - "System.CodeDom": "6.0.0" - } - }, - "RichardSzalay.MockHttp": { - "type": "Direct", - "requested": "[7.0.0, )", - "resolved": "7.0.0", - "contentHash": "QwnauYiaywp65QKFnP+wvgiQ2D8Pv888qB2dyfd7MSVDF06sIvxqASenk+RxsWybyyt+Hu1Y251wQxpHTv3UYg==" - }, - "Verify.Xunit": { - "type": "Direct", - "requested": "[31.8.0, )", - "resolved": "31.8.0", - "contentHash": "f+oaf/znLk/aeX6nAK9z8gjAuAnpZPSr9vixHAMveS6G3FP9dBCDCvu7UsZUKBQLgVT17Ie38LkXvmFgLx7Aqw==", - "dependencies": { - "Argon": "0.33.0", - "DiffEngine": "17.0.1", - "SimpleInfoName": "3.1.2", - "Verify": "31.8.0", - "xunit.abstractions": "2.0.3", - "xunit.extensibility.execution": "2.9.3" - } - }, - "xunit": { - "type": "Direct", - "requested": "[2.9.3, )", - "resolved": "2.9.3", - "contentHash": "TlXQBinK35LpOPKHAqbLY4xlEen9TBafjs0V5KnA4wZsoQLQJiirCR4CbIXvOH8NzkW4YeJKP5P/Bnrodm0h9Q==", - "dependencies": { - "xunit.analyzers": "1.18.0", - "xunit.assert": "2.9.3", - "xunit.core": "[2.9.3]" - } - }, - "xunit.runner.visualstudio": { - "type": "Direct", - "requested": "[3.1.5, )", - "resolved": "3.1.5", - "contentHash": "tKi7dSTwP4m5m9eXPM2Ime4Kn7xNf4x4zT9sdLO/G4hZVnQCRiMTWoSZqI/pYTVeI27oPPqHBKYI/DjJ9GsYgA==" - }, - "Argon": { - "type": "Transitive", - "resolved": "0.33.0", - "contentHash": "4MIj5MosLqRlKAz16Ir5rz1gyocC6npJGGXqkTIIVby0yPYKk56Lm9X5tEQv6MbStLUOv3aDfya6FKAqcRhxTA==" - }, - "Castle.Core": { - "type": "Transitive", - "resolved": "5.1.1", - "contentHash": "rpYtIczkzGpf+EkZgDr9CClTdemhsrwA/W5hMoPjLkRFnXzH44zDLoovXeKtmxb1ykXK9aJVODSpiJml8CTw2g==", - "dependencies": { - "System.Diagnostics.EventLog": "6.0.0" - } - }, - "DiffEngine": { - "type": "Transitive", - "resolved": "17.0.1", - "contentHash": "GZ1w8uedF2CpcJzwPJkBMYRVJRETbmmqKAqhTJlIMRiKeEYk68yTXZIXS+7fSwx8jgK5loGhKPyZYPxqXCn2oA==", - "dependencies": { - "EmptyFiles": "8.17.1", - "System.Management": "8.0.0" - } - }, - "EmptyFiles": { - "type": "Transitive", - "resolved": "8.17.1", - "contentHash": "pVmxBQer9yeFhYg6X27YMB/RDxYT99ms5QD8IT2KTj/WzygRtWZ0l7jlk4I4aAztNT7QjvHQ6tQ1/ox07C552A==" - }, - "Microsoft.CodeCoverage": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "O+utSr97NAJowIQT/OVp3Lh9QgW/wALVTP4RG1m2AfFP4IyJmJz0ZBmFJUsRQiAPgq6IRC0t8AAzsiPIsaUDEA==" - }, - "Microsoft.Extensions.AmbientMetadata.Application": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "ndm/eoOzk61Csn+ojv5z3Kt7YWAdUNR8ruFaf1b69kSbeqDPoV96f1GR1OWTIrCN9bm83V8CSkhvnnG+LrLTvg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "Tgu40iIg2Kr8s+BoOhb8r8kQfcagwm1VnpnMZA9fd/sD8Hlj13cNpyCfLRrYEBP+VmfmaoficQvRNEUqH+F4mw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.ObjectPool": "8.0.21" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "4ceMQRCIMP9AxxZOQ0k+xYXCfgSEmEsnt6s0o/KkpeLqwm3kGKBbsiJlyMk56GnKJtk4SI7nTpIIzb+Qdk+FMQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "iPE1jROL5uK/6iJSRzwpEIJt6BuANN36Io+6bLss67JVjbG6DdVedrMnB9nqsxs+Lx3X9RxvARTgFsUgP0MB0g==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "UquyDzvz0EneIQrrU67GJkIgynS+VD7t+RDtNv6VgKMOFrLBjldn6hzlXppGGecFMvAkMTqn4T8RYvzw7j7fQA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection.AutoActivation": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "qk5+lY0MUl7Y77TjM6HzfQPOY4CqoTg281OddyDC5iU2hf+cIxhx0VbNuJH77vqB6qyCP1OsuQmCzvlpf9yxBQ==", - "dependencies": { - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1" - } - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "WkriTCwxW0QbIgPYXGy329wQKcS4lmstwwysCHcjok2acPd626ysPcwMpw1pSBNzkdkMsqcbcJLlpVc9kP/YiQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "9.0.11", - "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.11", - "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "D9gu4weEmvWGuz8zp5xwsOr0ldmWphMKr7+IW66hG4rnrgpMLtTWoOINBOX5mcRTPL39+AVd3BJdc4HTvl2NrA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "SRJgt408OA/+v2o47Kjx8Wf+rbCJMmTsbsnkuzVzeP9xfcn4dIoMJXLCKiRlDNzJ3pXLYrXmkyOSY81BehoVHw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", - "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.Http.Diagnostics": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "3IJjOPm4CRmv7zzjPV+RCyvS4kWJ9BNr1k/MWgRTQds6LcIhAgwh+ToZ8O4fKMFlme0EGLvTm27ARKqp468pQw==", - "dependencies": { - "Microsoft.Extensions.Http": "8.0.1", - "Microsoft.Extensions.Telemetry": "9.10.0", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.Extensions.Logging": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "PVHYgMmMZFEE3PGpc7oZ9CnoyNonNyT5klrV9pNIzCPxL12FpQ7kNhliXAwowmtaDVBmKnG/1db6d7gqPwDj8g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "QWwTrsgOnJMmn+XUslm8D2H1n3PkP/u/v52FODtyBc/k4W9r3i2vcXXeeX/upnzllJYRRbrzVzT0OclfNJtBJA==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.Configuration.Binder": "8.0.2", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Logging": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2", - "Microsoft.Extensions.Options": "8.0.2", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "8.0.21", - "contentHash": "UBuyxD9CqasYKmwP41Skar2+f2Bk47V3NAPXh3a3Rxsmt2NTB1qynDU8zHkHWEts/07QykmzYAWLHPgHsROe0w==" - }, - "Microsoft.Extensions.Options": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HX4M3BLkW1dtByMKHDVq6r7Jy6e4hf8NDzHpIgz7C8BtYk9JQHhfYX5c1UheQTD5Veg1yBhz/cD9C8vtrGrk9w==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HUzr4c1eMXCQN8Yre2JdCzYmLJAecFGVXfByVhjEY4jBaHIs8EAxdv72WMUa2GcROlkYPbYNzMbcqJPMiznHxw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Configuration.Binder": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==" - }, - "Microsoft.Extensions.Resilience": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "tNptjYbHq73emZok4HBbpV41Afwoclga5LaKux8RV27lOA2lyQxeJFKNTWYQauJmWxxwXmwG7bgitbnIDh4eXA==", - "dependencies": { - "Microsoft.Extensions.Diagnostics": "8.0.1", - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "9.10.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0", - "Polly.Extensions": "8.4.2", - "Polly.RateLimiting": "8.4.2" - } - }, - "Microsoft.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "FGEOTEjMB+1T69PLp5GrG4UOsIjcdNQcoiXpC+KV9NRejl6vSMLhVqQ6g6c+cxLXzx8xc2J90GAMhD1wPHjKHg==", - "dependencies": { - "Microsoft.Extensions.AmbientMetadata.Application": "9.10.0", - "Microsoft.Extensions.DependencyInjection.AutoActivation": "9.10.0", - "Microsoft.Extensions.Logging.Configuration": "8.0.1", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0" - } - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "hJflG5if8NqElmybxXDf38d4EPopOo9H+Qg6l5LKTsavqE4CFdA5DIPb9+jjAeL22FN+rs6KuuEIuBPS4PNXvw==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "9.10.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.3", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Options": "8.0.2" - } - }, - "Microsoft.IdentityModel.Abstractions": { - "type": "Transitive", - "resolved": "8.15.0", - "contentHash": "e/DApa1GfxUqHSBHcpiQg8yaghKAvFVBQFcWh25jNoRobDZbduTUACY8bZ54eeGWXvimGmEDdF0zkS5Dq16XPQ==" - }, - "Microsoft.IdentityModel.JsonWebTokens": { - "type": "Transitive", - "resolved": "8.15.0", - "contentHash": "3513f5VzvOZy3ELd42wGnh1Q3e83tlGAuXFSNbENpgWYoAhLLzgFtd5PiaOPGAU0gqKhYGVzKavghLUGfX3HQg==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "8.15.0" - } - }, - "Microsoft.IdentityModel.Logging": { - "type": "Transitive", - "resolved": "8.15.0", - "contentHash": "1gJLjhy0LV2RQMJ9NGzi5Tnb2l+c37o8D8Lrk2mrvmb6OQHZ7XJstd/XxvncXgBpad4x9CGXdipbZzJJCXKyAg==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.15.0" - } - }, - "Microsoft.TestPlatform.ObjectModel": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "qT/mwMcLF9BieRkzOBPL2qCopl8hQu6A1P7JWAoj/FMu5i9vds/7cjbJ/LLtaiwWevWLAeD5v5wjQJ/l6jvhWQ==", - "dependencies": { - "System.Reflection.Metadata": "8.0.0" - } - }, - "Microsoft.TestPlatform.TestHost": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "uDJKAEjFTaa2wHdWlfo6ektyoh+WD4/Eesrwb4FpBFKsLGehhACVnwwTI4qD3FrIlIEPlxdXg3SyrYRIcO+RRQ==", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "18.0.1", - "Newtonsoft.Json": "13.0.3" - } - }, - "Mono.Cecil": { - "type": "Transitive", - "resolved": "0.11.6", - "contentHash": "f33RkDtZO8VlGXCtmQIviOtxgnUdym9xx/b1p9h91CRGOsJFxCFOFK1FDbVt1OCf1aWwYejUFa2MOQyFWTFjbA==" - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.3", - "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" - }, - "Polly.Extensions": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0", - "Polly.Core": "8.4.2" - } - }, - "Polly.RateLimiting": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", - "dependencies": { - "Polly.Core": "8.4.2", - "System.Threading.RateLimiting": "8.0.0" - } - }, - "SimpleInfoName": { - "type": "Transitive", - "resolved": "3.1.2", - "contentHash": "/OoEZQxSW6DeTJ9nfrg8BLCOCWpxBiWHV4NkG3t+Xpe8tvzm7yCwKwxkhpauMl3fg9OjlIjJMKX61H6VavLkrw==" - }, - "System.CodeDom": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "WTlRjL6KWIMr/pAaq3rYqh0TJlzpouaQ/W1eelssHgtlwHAH25jXTkUphTYx9HaIIf7XA6qs/0+YhtLEQRkJ+Q==" - }, - "System.Collections.Immutable": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==" - }, - "System.Diagnostics.DiagnosticSource": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "/QzMFklOm8Ak//YB0I2kR+ByxUndT63ucrRWQm0xZsuLExJWrVDeGKtYZDuBackd9dThbwMdOotIEc4c4KwJiw==" - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw==" - }, - "System.IO.Pipelines": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "jrK22i5LRzxZCfGb+tGmke2VH7oE0DvcDlJ1HAKYU8cPmD8XnpUT0bYn2Gy98GEhGjtfbR/sxKTVb+dE770pfA==", - "dependencies": { - "System.CodeDom": "8.0.0" - } - }, - "System.Reflection.Metadata": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==", - "dependencies": { - "System.Collections.Immutable": "8.0.0" - } - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "Verify": { - "type": "Transitive", - "resolved": "31.8.0", - "contentHash": "xZFQX/xVM8rCG1LkXVSBi7cp+eujrE++RDTMMztw6Vt1KjoETFsr8hd0uwYHmIDpvHu/vK877WVn8XVMxDHFfA==", - "dependencies": { - "Argon": "0.33.0", - "DiffEngine": "17.0.1", - "SimpleInfoName": "3.1.2" - } - }, - "xunit.abstractions": { - "type": "Transitive", - "resolved": "2.0.3", - "contentHash": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==" - }, - "xunit.analyzers": { - "type": "Transitive", - "resolved": "1.18.0", - "contentHash": "OtFMHN8yqIcYP9wcVIgJrq01AfTxijjAqVDy/WeQVSyrDC1RzBWeQPztL49DN2syXRah8TYnfvk035s7L95EZQ==" - }, - "xunit.assert": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "/Kq28fCE7MjOV42YLVRAJzRF0WmEqsmflm0cfpMjGtzQ2lR5mYVj1/i0Y8uDAOLczkL3/jArrwehfMD0YogMAA==" - }, - "xunit.core": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "BiAEvqGvyme19wE0wTKdADH+NloYqikiU0mcnmiNyXaF9HyHmE6sr/3DC5vnBkgsWaE6yPyWszKSPSApWdRVeQ==", - "dependencies": { - "xunit.extensibility.core": "[2.9.3]", - "xunit.extensibility.execution": "[2.9.3]" - } - }, - "xunit.extensibility.core": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "kf3si0YTn2a8J8eZNb+zFpwfoyvIrQ7ivNk5ZYA5yuYk1bEtMe4DxJ2CF/qsRgmEnDr7MnW1mxylBaHTZ4qErA==", - "dependencies": { - "xunit.abstractions": "2.0.3" - } - }, - "xunit.extensibility.execution": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "yMb6vMESlSrE3Wfj7V6cjQ3S4TXdXpRqYeNEI3zsX31uTsGMJjEw6oD5F5u1cHnMptjhEECnmZSsPxB6ChZHDQ==", - "dependencies": { - "xunit.extensibility.core": "[2.9.3]" - } - }, - "visus.addressvalidation": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "[10.0.0, )", - "Microsoft.Extensions.Configuration.Abstractions": "[10.0.0, )" - } - }, - "visus.addressvalidation.integration.google": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Memory": "[9.0.11, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[9.0.11, )", - "Microsoft.Extensions.Http": "[9.0.11, )", - "Microsoft.Extensions.Http.Resilience": "[9.10.0, )", - "Microsoft.IdentityModel.Tokens": "[8.15.0, )", - "System.IdentityModel.Tokens.Jwt": "[8.15.0, )", - "Visus.AddressValidation": "[0.0.1, )" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "Zcoy6H9mSoGyvr7UvlGokEZrlZkcPCICPZr8mCsSt9U/N8eeCwCXwKF5bShdA66R0obxBCwP4AxomQHvVkC/uA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.Caching.Memory": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "J77oUeVZXdMoiUiCPkL4v13KrNRuMQnSHHw78cTh/2ZidyiMFm8jhu49OUKvNydMUX8ZcuM5g8uohW18YaglMw==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "d2kDKnCsJvY7mBVhcjPSp9BkJk48DsaHPg5u+Oy4f8XaOqnEedRy/USyvnpHL92wpJ6DrTPy7htppUUzskbCXQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "+ZxxZzcVU+IEzq12GItUzf/V3mEc5nSLiXijwvDc4zyhbjvSZZ043giSZqGnhakrjwRWjkerIHPrRwm9okEIpw==" - }, - "Microsoft.Extensions.Http": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "QEa12ESaPAKR3M40N8dawVd+LPOgxCrGsUmC7Myfhn44AQiWh7X9PiTAagrAnJSaGqsb+yx+KRNSjrm8wx1TVQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Diagnostics": "9.0.11", - "Microsoft.Extensions.Logging": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Http.Resilience": { - "type": "CentralTransitive", - "requested": "[9.10.0, )", - "resolved": "9.10.0", - "contentHash": "4Bt58q+Oqpj4VYm3T7hcmsb1zVhmUTNNggDkjlWBIv3bv6MVRPGqIokK2tRHsD8bM4i3GkJLRWe8lQwbsWS6PQ==", - "dependencies": { - "Microsoft.Extensions.Http.Diagnostics": "9.10.0", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Resilience": "9.10.0" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "UKWFTDwtZQIoypyt1YPVsxTnDK+0sKn26+UeSGeNlkRQddrkt9EC6kP4g94rgO/WOZkz94bKNlF1dVZN3QfPFQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - }, - "Microsoft.IdentityModel.Tokens": { - "type": "CentralTransitive", - "requested": "[8.15.0, )", - "resolved": "8.15.0", - "contentHash": "zUE9ysJXBtXlHHRtcRK3Sp8NzdCI1z/BRDTXJQ2TvBoI0ENRtnufYIep0O5TSCJRJGDwwuLTUx+l/bEYZUxpCA==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.IdentityModel.Logging": "8.15.0" - } - }, - "System.IdentityModel.Tokens.Jwt": { - "type": "CentralTransitive", - "requested": "[8.15.0, )", - "resolved": "8.15.0", - "contentHash": "dpodi7ixz6hxK8YCBYAWzm0IA8JYXoKcz0hbCbNifo519//rjUI0fBD8rfNr+IGqq+2gm4oQoXwHk09LX5SqqQ==", - "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "8.15.0", - "Microsoft.IdentityModel.Tokens": "8.15.0" - } - } - } - } -} \ No newline at end of file diff --git a/tests/Visus.AddressValidation.Integration.PitneyBowes.Tests/Visus.AddressValidation.Integration.PitneyBowes.Tests.csproj b/tests/Visus.AddressValidation.Integration.PitneyBowes.Tests/Visus.AddressValidation.Integration.PitneyBowes.Tests.csproj index 08b03a1..1f9b830 100644 --- a/tests/Visus.AddressValidation.Integration.PitneyBowes.Tests/Visus.AddressValidation.Integration.PitneyBowes.Tests.csproj +++ b/tests/Visus.AddressValidation.Integration.PitneyBowes.Tests/Visus.AddressValidation.Integration.PitneyBowes.Tests.csproj @@ -1,7 +1,7 @@ - net8.0 + net10.0 true diff --git a/tests/Visus.AddressValidation.Integration.PitneyBowes.Tests/packages.lock.json b/tests/Visus.AddressValidation.Integration.PitneyBowes.Tests/packages.lock.json deleted file mode 100644 index b1a7545..0000000 --- a/tests/Visus.AddressValidation.Integration.PitneyBowes.Tests/packages.lock.json +++ /dev/null @@ -1,566 +0,0 @@ -{ - "version": 2, - "dependencies": { - "net8.0": { - "coverlet.collector": { - "type": "Direct", - "requested": "[6.0.4, )", - "resolved": "6.0.4", - "contentHash": "lkhqpF8Pu2Y7IiN7OntbsTtdbpR1syMsm2F3IgX6ootA4ffRqWL5jF7XipHuZQTdVuWG/gVAAcf8mjk8Tz0xPg==" - }, - "coverlet.msbuild": { - "type": "Direct", - "requested": "[6.0.4, )", - "resolved": "6.0.4", - "contentHash": "Qa7Hg+wrOMDKpXVn2dw4Wlun490bIWsFW0fdNJQFJLZnbU27MCP0HJ2mPgS+3EQBQUb0zKlkwiQzP+j38Hc3Iw==" - }, - "JunitXml.TestLogger": { - "type": "Direct", - "requested": "[7.0.2, )", - "resolved": "7.0.2", - "contentHash": "f6swYzT8DOVS6byaz1f7SYT06aoZTFXooLlJFX9Da3JB1/RLK+Z0UW1Q33NqMX+T9JFpal276qAJfPVUp96qbg==" - }, - "Microsoft.NET.Test.Sdk": { - "type": "Direct", - "requested": "[18.0.1, )", - "resolved": "18.0.1", - "contentHash": "WNpu6vI2rA0pXY4r7NKxCN16XRWl5uHu6qjuyVLoDo6oYEggIQefrMjkRuibQHm/NslIUNCcKftvoWAN80MSAg==", - "dependencies": { - "Microsoft.CodeCoverage": "18.0.1", - "Microsoft.TestPlatform.TestHost": "18.0.1" - } - }, - "NSubstitute": { - "type": "Direct", - "requested": "[5.3.0, )", - "resolved": "5.3.0", - "contentHash": "lJ47Cps5Qzr86N99lcwd+OUvQma7+fBgr8+Mn+aOC0WrlqMNkdivaYD9IvnZ5Mqo6Ky3LS7ZI+tUq1/s9ERd0Q==", - "dependencies": { - "Castle.Core": "5.1.1" - } - }, - "PublicApiGenerator": { - "type": "Direct", - "requested": "[11.5.4, )", - "resolved": "11.5.4", - "contentHash": "Va382WG4Vng8kCtDaAP5solqbhayMMlW1E+e/DV/w39yJPybmMgy8fbdUvvQgG93EMILx7JtJbGS1HRhVNTUVQ==", - "dependencies": { - "Mono.Cecil": "0.11.6", - "System.CodeDom": "6.0.0" - } - }, - "RichardSzalay.MockHttp": { - "type": "Direct", - "requested": "[7.0.0, )", - "resolved": "7.0.0", - "contentHash": "QwnauYiaywp65QKFnP+wvgiQ2D8Pv888qB2dyfd7MSVDF06sIvxqASenk+RxsWybyyt+Hu1Y251wQxpHTv3UYg==" - }, - "Verify.Xunit": { - "type": "Direct", - "requested": "[31.8.0, )", - "resolved": "31.8.0", - "contentHash": "f+oaf/znLk/aeX6nAK9z8gjAuAnpZPSr9vixHAMveS6G3FP9dBCDCvu7UsZUKBQLgVT17Ie38LkXvmFgLx7Aqw==", - "dependencies": { - "Argon": "0.33.0", - "DiffEngine": "17.0.1", - "SimpleInfoName": "3.1.2", - "Verify": "31.8.0", - "xunit.abstractions": "2.0.3", - "xunit.extensibility.execution": "2.9.3" - } - }, - "xunit": { - "type": "Direct", - "requested": "[2.9.3, )", - "resolved": "2.9.3", - "contentHash": "TlXQBinK35LpOPKHAqbLY4xlEen9TBafjs0V5KnA4wZsoQLQJiirCR4CbIXvOH8NzkW4YeJKP5P/Bnrodm0h9Q==", - "dependencies": { - "xunit.analyzers": "1.18.0", - "xunit.assert": "2.9.3", - "xunit.core": "[2.9.3]" - } - }, - "xunit.runner.visualstudio": { - "type": "Direct", - "requested": "[3.1.5, )", - "resolved": "3.1.5", - "contentHash": "tKi7dSTwP4m5m9eXPM2Ime4Kn7xNf4x4zT9sdLO/G4hZVnQCRiMTWoSZqI/pYTVeI27oPPqHBKYI/DjJ9GsYgA==" - }, - "Argon": { - "type": "Transitive", - "resolved": "0.33.0", - "contentHash": "4MIj5MosLqRlKAz16Ir5rz1gyocC6npJGGXqkTIIVby0yPYKk56Lm9X5tEQv6MbStLUOv3aDfya6FKAqcRhxTA==" - }, - "Castle.Core": { - "type": "Transitive", - "resolved": "5.1.1", - "contentHash": "rpYtIczkzGpf+EkZgDr9CClTdemhsrwA/W5hMoPjLkRFnXzH44zDLoovXeKtmxb1ykXK9aJVODSpiJml8CTw2g==", - "dependencies": { - "System.Diagnostics.EventLog": "6.0.0" - } - }, - "DiffEngine": { - "type": "Transitive", - "resolved": "17.0.1", - "contentHash": "GZ1w8uedF2CpcJzwPJkBMYRVJRETbmmqKAqhTJlIMRiKeEYk68yTXZIXS+7fSwx8jgK5loGhKPyZYPxqXCn2oA==", - "dependencies": { - "EmptyFiles": "8.17.1", - "System.Management": "8.0.0" - } - }, - "EmptyFiles": { - "type": "Transitive", - "resolved": "8.17.1", - "contentHash": "pVmxBQer9yeFhYg6X27YMB/RDxYT99ms5QD8IT2KTj/WzygRtWZ0l7jlk4I4aAztNT7QjvHQ6tQ1/ox07C552A==" - }, - "Microsoft.CodeCoverage": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "O+utSr97NAJowIQT/OVp3Lh9QgW/wALVTP4RG1m2AfFP4IyJmJz0ZBmFJUsRQiAPgq6IRC0t8AAzsiPIsaUDEA==" - }, - "Microsoft.Extensions.AmbientMetadata.Application": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "ndm/eoOzk61Csn+ojv5z3Kt7YWAdUNR8ruFaf1b69kSbeqDPoV96f1GR1OWTIrCN9bm83V8CSkhvnnG+LrLTvg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "Tgu40iIg2Kr8s+BoOhb8r8kQfcagwm1VnpnMZA9fd/sD8Hlj13cNpyCfLRrYEBP+VmfmaoficQvRNEUqH+F4mw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.ObjectPool": "8.0.21" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "4ceMQRCIMP9AxxZOQ0k+xYXCfgSEmEsnt6s0o/KkpeLqwm3kGKBbsiJlyMk56GnKJtk4SI7nTpIIzb+Qdk+FMQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "iPE1jROL5uK/6iJSRzwpEIJt6BuANN36Io+6bLss67JVjbG6DdVedrMnB9nqsxs+Lx3X9RxvARTgFsUgP0MB0g==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "UquyDzvz0EneIQrrU67GJkIgynS+VD7t+RDtNv6VgKMOFrLBjldn6hzlXppGGecFMvAkMTqn4T8RYvzw7j7fQA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection.AutoActivation": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "qk5+lY0MUl7Y77TjM6HzfQPOY4CqoTg281OddyDC5iU2hf+cIxhx0VbNuJH77vqB6qyCP1OsuQmCzvlpf9yxBQ==", - "dependencies": { - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1" - } - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "WkriTCwxW0QbIgPYXGy329wQKcS4lmstwwysCHcjok2acPd626ysPcwMpw1pSBNzkdkMsqcbcJLlpVc9kP/YiQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "9.0.11", - "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.11", - "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "D9gu4weEmvWGuz8zp5xwsOr0ldmWphMKr7+IW66hG4rnrgpMLtTWoOINBOX5mcRTPL39+AVd3BJdc4HTvl2NrA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "SRJgt408OA/+v2o47Kjx8Wf+rbCJMmTsbsnkuzVzeP9xfcn4dIoMJXLCKiRlDNzJ3pXLYrXmkyOSY81BehoVHw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", - "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.Http.Diagnostics": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "3IJjOPm4CRmv7zzjPV+RCyvS4kWJ9BNr1k/MWgRTQds6LcIhAgwh+ToZ8O4fKMFlme0EGLvTm27ARKqp468pQw==", - "dependencies": { - "Microsoft.Extensions.Http": "8.0.1", - "Microsoft.Extensions.Telemetry": "9.10.0", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.Extensions.Logging": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "PVHYgMmMZFEE3PGpc7oZ9CnoyNonNyT5klrV9pNIzCPxL12FpQ7kNhliXAwowmtaDVBmKnG/1db6d7gqPwDj8g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "QWwTrsgOnJMmn+XUslm8D2H1n3PkP/u/v52FODtyBc/k4W9r3i2vcXXeeX/upnzllJYRRbrzVzT0OclfNJtBJA==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.Configuration.Binder": "8.0.2", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Logging": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2", - "Microsoft.Extensions.Options": "8.0.2", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "8.0.21", - "contentHash": "UBuyxD9CqasYKmwP41Skar2+f2Bk47V3NAPXh3a3Rxsmt2NTB1qynDU8zHkHWEts/07QykmzYAWLHPgHsROe0w==" - }, - "Microsoft.Extensions.Options": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HX4M3BLkW1dtByMKHDVq6r7Jy6e4hf8NDzHpIgz7C8BtYk9JQHhfYX5c1UheQTD5Veg1yBhz/cD9C8vtrGrk9w==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HUzr4c1eMXCQN8Yre2JdCzYmLJAecFGVXfByVhjEY4jBaHIs8EAxdv72WMUa2GcROlkYPbYNzMbcqJPMiznHxw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Configuration.Binder": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==" - }, - "Microsoft.Extensions.Resilience": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "tNptjYbHq73emZok4HBbpV41Afwoclga5LaKux8RV27lOA2lyQxeJFKNTWYQauJmWxxwXmwG7bgitbnIDh4eXA==", - "dependencies": { - "Microsoft.Extensions.Diagnostics": "8.0.1", - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "9.10.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0", - "Polly.Extensions": "8.4.2", - "Polly.RateLimiting": "8.4.2" - } - }, - "Microsoft.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "FGEOTEjMB+1T69PLp5GrG4UOsIjcdNQcoiXpC+KV9NRejl6vSMLhVqQ6g6c+cxLXzx8xc2J90GAMhD1wPHjKHg==", - "dependencies": { - "Microsoft.Extensions.AmbientMetadata.Application": "9.10.0", - "Microsoft.Extensions.DependencyInjection.AutoActivation": "9.10.0", - "Microsoft.Extensions.Logging.Configuration": "8.0.1", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0" - } - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "hJflG5if8NqElmybxXDf38d4EPopOo9H+Qg6l5LKTsavqE4CFdA5DIPb9+jjAeL22FN+rs6KuuEIuBPS4PNXvw==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "9.10.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.3", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Options": "8.0.2" - } - }, - "Microsoft.TestPlatform.ObjectModel": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "qT/mwMcLF9BieRkzOBPL2qCopl8hQu6A1P7JWAoj/FMu5i9vds/7cjbJ/LLtaiwWevWLAeD5v5wjQJ/l6jvhWQ==", - "dependencies": { - "System.Reflection.Metadata": "8.0.0" - } - }, - "Microsoft.TestPlatform.TestHost": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "uDJKAEjFTaa2wHdWlfo6ektyoh+WD4/Eesrwb4FpBFKsLGehhACVnwwTI4qD3FrIlIEPlxdXg3SyrYRIcO+RRQ==", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "18.0.1", - "Newtonsoft.Json": "13.0.3" - } - }, - "Mono.Cecil": { - "type": "Transitive", - "resolved": "0.11.6", - "contentHash": "f33RkDtZO8VlGXCtmQIviOtxgnUdym9xx/b1p9h91CRGOsJFxCFOFK1FDbVt1OCf1aWwYejUFa2MOQyFWTFjbA==" - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.3", - "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" - }, - "Polly.Extensions": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0", - "Polly.Core": "8.4.2" - } - }, - "Polly.RateLimiting": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", - "dependencies": { - "Polly.Core": "8.4.2", - "System.Threading.RateLimiting": "8.0.0" - } - }, - "SimpleInfoName": { - "type": "Transitive", - "resolved": "3.1.2", - "contentHash": "/OoEZQxSW6DeTJ9nfrg8BLCOCWpxBiWHV4NkG3t+Xpe8tvzm7yCwKwxkhpauMl3fg9OjlIjJMKX61H6VavLkrw==" - }, - "System.CodeDom": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "WTlRjL6KWIMr/pAaq3rYqh0TJlzpouaQ/W1eelssHgtlwHAH25jXTkUphTYx9HaIIf7XA6qs/0+YhtLEQRkJ+Q==" - }, - "System.Collections.Immutable": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==" - }, - "System.Diagnostics.DiagnosticSource": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "/QzMFklOm8Ak//YB0I2kR+ByxUndT63ucrRWQm0xZsuLExJWrVDeGKtYZDuBackd9dThbwMdOotIEc4c4KwJiw==" - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw==" - }, - "System.IO.Pipelines": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "jrK22i5LRzxZCfGb+tGmke2VH7oE0DvcDlJ1HAKYU8cPmD8XnpUT0bYn2Gy98GEhGjtfbR/sxKTVb+dE770pfA==", - "dependencies": { - "System.CodeDom": "8.0.0" - } - }, - "System.Reflection.Metadata": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==", - "dependencies": { - "System.Collections.Immutable": "8.0.0" - } - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "Verify": { - "type": "Transitive", - "resolved": "31.8.0", - "contentHash": "xZFQX/xVM8rCG1LkXVSBi7cp+eujrE++RDTMMztw6Vt1KjoETFsr8hd0uwYHmIDpvHu/vK877WVn8XVMxDHFfA==", - "dependencies": { - "Argon": "0.33.0", - "DiffEngine": "17.0.1", - "SimpleInfoName": "3.1.2" - } - }, - "xunit.abstractions": { - "type": "Transitive", - "resolved": "2.0.3", - "contentHash": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==" - }, - "xunit.analyzers": { - "type": "Transitive", - "resolved": "1.18.0", - "contentHash": "OtFMHN8yqIcYP9wcVIgJrq01AfTxijjAqVDy/WeQVSyrDC1RzBWeQPztL49DN2syXRah8TYnfvk035s7L95EZQ==" - }, - "xunit.assert": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "/Kq28fCE7MjOV42YLVRAJzRF0WmEqsmflm0cfpMjGtzQ2lR5mYVj1/i0Y8uDAOLczkL3/jArrwehfMD0YogMAA==" - }, - "xunit.core": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "BiAEvqGvyme19wE0wTKdADH+NloYqikiU0mcnmiNyXaF9HyHmE6sr/3DC5vnBkgsWaE6yPyWszKSPSApWdRVeQ==", - "dependencies": { - "xunit.extensibility.core": "[2.9.3]", - "xunit.extensibility.execution": "[2.9.3]" - } - }, - "xunit.extensibility.core": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "kf3si0YTn2a8J8eZNb+zFpwfoyvIrQ7ivNk5ZYA5yuYk1bEtMe4DxJ2CF/qsRgmEnDr7MnW1mxylBaHTZ4qErA==", - "dependencies": { - "xunit.abstractions": "2.0.3" - } - }, - "xunit.extensibility.execution": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "yMb6vMESlSrE3Wfj7V6cjQ3S4TXdXpRqYeNEI3zsX31uTsGMJjEw6oD5F5u1cHnMptjhEECnmZSsPxB6ChZHDQ==", - "dependencies": { - "xunit.extensibility.core": "[2.9.3]" - } - }, - "visus.addressvalidation": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "[10.0.0, )", - "Microsoft.Extensions.Configuration.Abstractions": "[10.0.0, )" - } - }, - "visus.addressvalidation.integration.pitneybowes": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Memory": "[9.0.11, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[9.0.11, )", - "Microsoft.Extensions.Http": "[9.0.11, )", - "Microsoft.Extensions.Http.Resilience": "[9.10.0, )", - "Visus.AddressValidation": "[0.0.1, )" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "Zcoy6H9mSoGyvr7UvlGokEZrlZkcPCICPZr8mCsSt9U/N8eeCwCXwKF5bShdA66R0obxBCwP4AxomQHvVkC/uA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.Caching.Memory": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "J77oUeVZXdMoiUiCPkL4v13KrNRuMQnSHHw78cTh/2ZidyiMFm8jhu49OUKvNydMUX8ZcuM5g8uohW18YaglMw==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "d2kDKnCsJvY7mBVhcjPSp9BkJk48DsaHPg5u+Oy4f8XaOqnEedRy/USyvnpHL92wpJ6DrTPy7htppUUzskbCXQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "+ZxxZzcVU+IEzq12GItUzf/V3mEc5nSLiXijwvDc4zyhbjvSZZ043giSZqGnhakrjwRWjkerIHPrRwm9okEIpw==" - }, - "Microsoft.Extensions.Http": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "QEa12ESaPAKR3M40N8dawVd+LPOgxCrGsUmC7Myfhn44AQiWh7X9PiTAagrAnJSaGqsb+yx+KRNSjrm8wx1TVQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Diagnostics": "9.0.11", - "Microsoft.Extensions.Logging": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Http.Resilience": { - "type": "CentralTransitive", - "requested": "[9.10.0, )", - "resolved": "9.10.0", - "contentHash": "4Bt58q+Oqpj4VYm3T7hcmsb1zVhmUTNNggDkjlWBIv3bv6MVRPGqIokK2tRHsD8bM4i3GkJLRWe8lQwbsWS6PQ==", - "dependencies": { - "Microsoft.Extensions.Http.Diagnostics": "9.10.0", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Resilience": "9.10.0" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "UKWFTDwtZQIoypyt1YPVsxTnDK+0sKn26+UeSGeNlkRQddrkt9EC6kP4g94rgO/WOZkz94bKNlF1dVZN3QfPFQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - } - } - } -} \ No newline at end of file diff --git a/tests/Visus.AddressValidation.Integration.Ups.Tests/Visus.AddressValidation.Integration.Ups.Tests.csproj b/tests/Visus.AddressValidation.Integration.Ups.Tests/Visus.AddressValidation.Integration.Ups.Tests.csproj index ed8e0a7..7556b9f 100644 --- a/tests/Visus.AddressValidation.Integration.Ups.Tests/Visus.AddressValidation.Integration.Ups.Tests.csproj +++ b/tests/Visus.AddressValidation.Integration.Ups.Tests/Visus.AddressValidation.Integration.Ups.Tests.csproj @@ -1,7 +1,7 @@  - net8.0 + net10.0 true diff --git a/tests/Visus.AddressValidation.Integration.Ups.Tests/packages.lock.json b/tests/Visus.AddressValidation.Integration.Ups.Tests/packages.lock.json deleted file mode 100644 index 0dda704..0000000 --- a/tests/Visus.AddressValidation.Integration.Ups.Tests/packages.lock.json +++ /dev/null @@ -1,566 +0,0 @@ -{ - "version": 2, - "dependencies": { - "net8.0": { - "coverlet.collector": { - "type": "Direct", - "requested": "[6.0.4, )", - "resolved": "6.0.4", - "contentHash": "lkhqpF8Pu2Y7IiN7OntbsTtdbpR1syMsm2F3IgX6ootA4ffRqWL5jF7XipHuZQTdVuWG/gVAAcf8mjk8Tz0xPg==" - }, - "coverlet.msbuild": { - "type": "Direct", - "requested": "[6.0.4, )", - "resolved": "6.0.4", - "contentHash": "Qa7Hg+wrOMDKpXVn2dw4Wlun490bIWsFW0fdNJQFJLZnbU27MCP0HJ2mPgS+3EQBQUb0zKlkwiQzP+j38Hc3Iw==" - }, - "JunitXml.TestLogger": { - "type": "Direct", - "requested": "[7.0.2, )", - "resolved": "7.0.2", - "contentHash": "f6swYzT8DOVS6byaz1f7SYT06aoZTFXooLlJFX9Da3JB1/RLK+Z0UW1Q33NqMX+T9JFpal276qAJfPVUp96qbg==" - }, - "Microsoft.NET.Test.Sdk": { - "type": "Direct", - "requested": "[18.0.1, )", - "resolved": "18.0.1", - "contentHash": "WNpu6vI2rA0pXY4r7NKxCN16XRWl5uHu6qjuyVLoDo6oYEggIQefrMjkRuibQHm/NslIUNCcKftvoWAN80MSAg==", - "dependencies": { - "Microsoft.CodeCoverage": "18.0.1", - "Microsoft.TestPlatform.TestHost": "18.0.1" - } - }, - "NSubstitute": { - "type": "Direct", - "requested": "[5.3.0, )", - "resolved": "5.3.0", - "contentHash": "lJ47Cps5Qzr86N99lcwd+OUvQma7+fBgr8+Mn+aOC0WrlqMNkdivaYD9IvnZ5Mqo6Ky3LS7ZI+tUq1/s9ERd0Q==", - "dependencies": { - "Castle.Core": "5.1.1" - } - }, - "PublicApiGenerator": { - "type": "Direct", - "requested": "[11.5.4, )", - "resolved": "11.5.4", - "contentHash": "Va382WG4Vng8kCtDaAP5solqbhayMMlW1E+e/DV/w39yJPybmMgy8fbdUvvQgG93EMILx7JtJbGS1HRhVNTUVQ==", - "dependencies": { - "Mono.Cecil": "0.11.6", - "System.CodeDom": "6.0.0" - } - }, - "RichardSzalay.MockHttp": { - "type": "Direct", - "requested": "[7.0.0, )", - "resolved": "7.0.0", - "contentHash": "QwnauYiaywp65QKFnP+wvgiQ2D8Pv888qB2dyfd7MSVDF06sIvxqASenk+RxsWybyyt+Hu1Y251wQxpHTv3UYg==" - }, - "Verify.Xunit": { - "type": "Direct", - "requested": "[31.8.0, )", - "resolved": "31.8.0", - "contentHash": "f+oaf/znLk/aeX6nAK9z8gjAuAnpZPSr9vixHAMveS6G3FP9dBCDCvu7UsZUKBQLgVT17Ie38LkXvmFgLx7Aqw==", - "dependencies": { - "Argon": "0.33.0", - "DiffEngine": "17.0.1", - "SimpleInfoName": "3.1.2", - "Verify": "31.8.0", - "xunit.abstractions": "2.0.3", - "xunit.extensibility.execution": "2.9.3" - } - }, - "xunit": { - "type": "Direct", - "requested": "[2.9.3, )", - "resolved": "2.9.3", - "contentHash": "TlXQBinK35LpOPKHAqbLY4xlEen9TBafjs0V5KnA4wZsoQLQJiirCR4CbIXvOH8NzkW4YeJKP5P/Bnrodm0h9Q==", - "dependencies": { - "xunit.analyzers": "1.18.0", - "xunit.assert": "2.9.3", - "xunit.core": "[2.9.3]" - } - }, - "xunit.runner.visualstudio": { - "type": "Direct", - "requested": "[3.1.5, )", - "resolved": "3.1.5", - "contentHash": "tKi7dSTwP4m5m9eXPM2Ime4Kn7xNf4x4zT9sdLO/G4hZVnQCRiMTWoSZqI/pYTVeI27oPPqHBKYI/DjJ9GsYgA==" - }, - "Argon": { - "type": "Transitive", - "resolved": "0.33.0", - "contentHash": "4MIj5MosLqRlKAz16Ir5rz1gyocC6npJGGXqkTIIVby0yPYKk56Lm9X5tEQv6MbStLUOv3aDfya6FKAqcRhxTA==" - }, - "Castle.Core": { - "type": "Transitive", - "resolved": "5.1.1", - "contentHash": "rpYtIczkzGpf+EkZgDr9CClTdemhsrwA/W5hMoPjLkRFnXzH44zDLoovXeKtmxb1ykXK9aJVODSpiJml8CTw2g==", - "dependencies": { - "System.Diagnostics.EventLog": "6.0.0" - } - }, - "DiffEngine": { - "type": "Transitive", - "resolved": "17.0.1", - "contentHash": "GZ1w8uedF2CpcJzwPJkBMYRVJRETbmmqKAqhTJlIMRiKeEYk68yTXZIXS+7fSwx8jgK5loGhKPyZYPxqXCn2oA==", - "dependencies": { - "EmptyFiles": "8.17.1", - "System.Management": "8.0.0" - } - }, - "EmptyFiles": { - "type": "Transitive", - "resolved": "8.17.1", - "contentHash": "pVmxBQer9yeFhYg6X27YMB/RDxYT99ms5QD8IT2KTj/WzygRtWZ0l7jlk4I4aAztNT7QjvHQ6tQ1/ox07C552A==" - }, - "Microsoft.CodeCoverage": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "O+utSr97NAJowIQT/OVp3Lh9QgW/wALVTP4RG1m2AfFP4IyJmJz0ZBmFJUsRQiAPgq6IRC0t8AAzsiPIsaUDEA==" - }, - "Microsoft.Extensions.AmbientMetadata.Application": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "ndm/eoOzk61Csn+ojv5z3Kt7YWAdUNR8ruFaf1b69kSbeqDPoV96f1GR1OWTIrCN9bm83V8CSkhvnnG+LrLTvg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "Tgu40iIg2Kr8s+BoOhb8r8kQfcagwm1VnpnMZA9fd/sD8Hlj13cNpyCfLRrYEBP+VmfmaoficQvRNEUqH+F4mw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.ObjectPool": "8.0.21" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "4ceMQRCIMP9AxxZOQ0k+xYXCfgSEmEsnt6s0o/KkpeLqwm3kGKBbsiJlyMk56GnKJtk4SI7nTpIIzb+Qdk+FMQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "iPE1jROL5uK/6iJSRzwpEIJt6BuANN36Io+6bLss67JVjbG6DdVedrMnB9nqsxs+Lx3X9RxvARTgFsUgP0MB0g==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "UquyDzvz0EneIQrrU67GJkIgynS+VD7t+RDtNv6VgKMOFrLBjldn6hzlXppGGecFMvAkMTqn4T8RYvzw7j7fQA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11" - } - }, - "Microsoft.Extensions.DependencyInjection.AutoActivation": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "qk5+lY0MUl7Y77TjM6HzfQPOY4CqoTg281OddyDC5iU2hf+cIxhx0VbNuJH77vqB6qyCP1OsuQmCzvlpf9yxBQ==", - "dependencies": { - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1" - } - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "WkriTCwxW0QbIgPYXGy329wQKcS4lmstwwysCHcjok2acPd626ysPcwMpw1pSBNzkdkMsqcbcJLlpVc9kP/YiQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "9.0.11", - "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.11", - "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "D9gu4weEmvWGuz8zp5xwsOr0ldmWphMKr7+IW66hG4rnrgpMLtTWoOINBOX5mcRTPL39+AVd3BJdc4HTvl2NrA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - }, - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "SRJgt408OA/+v2o47Kjx8Wf+rbCJMmTsbsnkuzVzeP9xfcn4dIoMJXLCKiRlDNzJ3pXLYrXmkyOSY81BehoVHw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", - "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2" - } - }, - "Microsoft.Extensions.Http.Diagnostics": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "3IJjOPm4CRmv7zzjPV+RCyvS4kWJ9BNr1k/MWgRTQds6LcIhAgwh+ToZ8O4fKMFlme0EGLvTm27ARKqp468pQw==", - "dependencies": { - "Microsoft.Extensions.Http": "8.0.1", - "Microsoft.Extensions.Telemetry": "9.10.0", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.Extensions.Logging": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "PVHYgMmMZFEE3PGpc7oZ9CnoyNonNyT5klrV9pNIzCPxL12FpQ7kNhliXAwowmtaDVBmKnG/1db6d7gqPwDj8g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "QWwTrsgOnJMmn+XUslm8D2H1n3PkP/u/v52FODtyBc/k4W9r3i2vcXXeeX/upnzllJYRRbrzVzT0OclfNJtBJA==", - "dependencies": { - "Microsoft.Extensions.Configuration": "8.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.Configuration.Binder": "8.0.2", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Logging": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2", - "Microsoft.Extensions.Options": "8.0.2", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "8.0.21", - "contentHash": "UBuyxD9CqasYKmwP41Skar2+f2Bk47V3NAPXh3a3Rxsmt2NTB1qynDU8zHkHWEts/07QykmzYAWLHPgHsROe0w==" - }, - "Microsoft.Extensions.Options": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HX4M3BLkW1dtByMKHDVq6r7Jy6e4hf8NDzHpIgz7C8BtYk9JQHhfYX5c1UheQTD5Veg1yBhz/cD9C8vtrGrk9w==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "HUzr4c1eMXCQN8Yre2JdCzYmLJAecFGVXfByVhjEY4jBaHIs8EAxdv72WMUa2GcROlkYPbYNzMbcqJPMiznHxw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.Configuration.Binder": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==" - }, - "Microsoft.Extensions.Resilience": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "tNptjYbHq73emZok4HBbpV41Afwoclga5LaKux8RV27lOA2lyQxeJFKNTWYQauJmWxxwXmwG7bgitbnIDh4eXA==", - "dependencies": { - "Microsoft.Extensions.Diagnostics": "8.0.1", - "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "9.10.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0", - "Polly.Extensions": "8.4.2", - "Polly.RateLimiting": "8.4.2" - } - }, - "Microsoft.Extensions.Telemetry": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "FGEOTEjMB+1T69PLp5GrG4UOsIjcdNQcoiXpC+KV9NRejl6vSMLhVqQ6g6c+cxLXzx8xc2J90GAMhD1wPHjKHg==", - "dependencies": { - "Microsoft.Extensions.AmbientMetadata.Application": "9.10.0", - "Microsoft.Extensions.DependencyInjection.AutoActivation": "9.10.0", - "Microsoft.Extensions.Logging.Configuration": "8.0.1", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Telemetry.Abstractions": "9.10.0" - } - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "9.10.0", - "contentHash": "hJflG5if8NqElmybxXDf38d4EPopOo9H+Qg6l5LKTsavqE4CFdA5DIPb9+jjAeL22FN+rs6KuuEIuBPS4PNXvw==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "9.10.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.3", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Options": "8.0.2" - } - }, - "Microsoft.TestPlatform.ObjectModel": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "qT/mwMcLF9BieRkzOBPL2qCopl8hQu6A1P7JWAoj/FMu5i9vds/7cjbJ/LLtaiwWevWLAeD5v5wjQJ/l6jvhWQ==", - "dependencies": { - "System.Reflection.Metadata": "8.0.0" - } - }, - "Microsoft.TestPlatform.TestHost": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "uDJKAEjFTaa2wHdWlfo6ektyoh+WD4/Eesrwb4FpBFKsLGehhACVnwwTI4qD3FrIlIEPlxdXg3SyrYRIcO+RRQ==", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "18.0.1", - "Newtonsoft.Json": "13.0.3" - } - }, - "Mono.Cecil": { - "type": "Transitive", - "resolved": "0.11.6", - "contentHash": "f33RkDtZO8VlGXCtmQIviOtxgnUdym9xx/b1p9h91CRGOsJFxCFOFK1FDbVt1OCf1aWwYejUFa2MOQyFWTFjbA==" - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.3", - "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "BpE2I6HBYYA5tF0Vn4eoQOGYTYIK1BlF5EXVgkWGn3mqUUjbXAr13J6fZVbp7Q3epRR8yshacBMlsHMhpOiV3g==" - }, - "Polly.Extensions": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0", - "Polly.Core": "8.4.2" - } - }, - "Polly.RateLimiting": { - "type": "Transitive", - "resolved": "8.4.2", - "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", - "dependencies": { - "Polly.Core": "8.4.2", - "System.Threading.RateLimiting": "8.0.0" - } - }, - "SimpleInfoName": { - "type": "Transitive", - "resolved": "3.1.2", - "contentHash": "/OoEZQxSW6DeTJ9nfrg8BLCOCWpxBiWHV4NkG3t+Xpe8tvzm7yCwKwxkhpauMl3fg9OjlIjJMKX61H6VavLkrw==" - }, - "System.CodeDom": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "WTlRjL6KWIMr/pAaq3rYqh0TJlzpouaQ/W1eelssHgtlwHAH25jXTkUphTYx9HaIIf7XA6qs/0+YhtLEQRkJ+Q==" - }, - "System.Collections.Immutable": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==" - }, - "System.Diagnostics.DiagnosticSource": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "/QzMFklOm8Ak//YB0I2kR+ByxUndT63ucrRWQm0xZsuLExJWrVDeGKtYZDuBackd9dThbwMdOotIEc4c4KwJiw==" - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw==" - }, - "System.IO.Pipelines": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "jrK22i5LRzxZCfGb+tGmke2VH7oE0DvcDlJ1HAKYU8cPmD8XnpUT0bYn2Gy98GEhGjtfbR/sxKTVb+dE770pfA==", - "dependencies": { - "System.CodeDom": "8.0.0" - } - }, - "System.Reflection.Metadata": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==", - "dependencies": { - "System.Collections.Immutable": "8.0.0" - } - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "Verify": { - "type": "Transitive", - "resolved": "31.8.0", - "contentHash": "xZFQX/xVM8rCG1LkXVSBi7cp+eujrE++RDTMMztw6Vt1KjoETFsr8hd0uwYHmIDpvHu/vK877WVn8XVMxDHFfA==", - "dependencies": { - "Argon": "0.33.0", - "DiffEngine": "17.0.1", - "SimpleInfoName": "3.1.2" - } - }, - "xunit.abstractions": { - "type": "Transitive", - "resolved": "2.0.3", - "contentHash": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==" - }, - "xunit.analyzers": { - "type": "Transitive", - "resolved": "1.18.0", - "contentHash": "OtFMHN8yqIcYP9wcVIgJrq01AfTxijjAqVDy/WeQVSyrDC1RzBWeQPztL49DN2syXRah8TYnfvk035s7L95EZQ==" - }, - "xunit.assert": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "/Kq28fCE7MjOV42YLVRAJzRF0WmEqsmflm0cfpMjGtzQ2lR5mYVj1/i0Y8uDAOLczkL3/jArrwehfMD0YogMAA==" - }, - "xunit.core": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "BiAEvqGvyme19wE0wTKdADH+NloYqikiU0mcnmiNyXaF9HyHmE6sr/3DC5vnBkgsWaE6yPyWszKSPSApWdRVeQ==", - "dependencies": { - "xunit.extensibility.core": "[2.9.3]", - "xunit.extensibility.execution": "[2.9.3]" - } - }, - "xunit.extensibility.core": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "kf3si0YTn2a8J8eZNb+zFpwfoyvIrQ7ivNk5ZYA5yuYk1bEtMe4DxJ2CF/qsRgmEnDr7MnW1mxylBaHTZ4qErA==", - "dependencies": { - "xunit.abstractions": "2.0.3" - } - }, - "xunit.extensibility.execution": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "yMb6vMESlSrE3Wfj7V6cjQ3S4TXdXpRqYeNEI3zsX31uTsGMJjEw6oD5F5u1cHnMptjhEECnmZSsPxB6ChZHDQ==", - "dependencies": { - "xunit.extensibility.core": "[2.9.3]" - } - }, - "visus.addressvalidation": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "[10.0.0, )", - "Microsoft.Extensions.Configuration.Abstractions": "[10.0.0, )" - } - }, - "visus.addressvalidation.integration.ups": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Memory": "[9.0.11, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[9.0.11, )", - "Microsoft.Extensions.Http": "[9.0.11, )", - "Microsoft.Extensions.Http.Resilience": "[9.10.0, )", - "Visus.AddressValidation": "[0.0.1, )" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "Zcoy6H9mSoGyvr7UvlGokEZrlZkcPCICPZr8mCsSt9U/N8eeCwCXwKF5bShdA66R0obxBCwP4AxomQHvVkC/uA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.Caching.Memory": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "J77oUeVZXdMoiUiCPkL4v13KrNRuMQnSHHw78cTh/2ZidyiMFm8jhu49OUKvNydMUX8ZcuM5g8uohW18YaglMw==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11", - "Microsoft.Extensions.Primitives": "9.0.11" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "d2kDKnCsJvY7mBVhcjPSp9BkJk48DsaHPg5u+Oy4f8XaOqnEedRy/USyvnpHL92wpJ6DrTPy7htppUUzskbCXQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "+ZxxZzcVU+IEzq12GItUzf/V3mEc5nSLiXijwvDc4zyhbjvSZZ043giSZqGnhakrjwRWjkerIHPrRwm9okEIpw==" - }, - "Microsoft.Extensions.Http": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "QEa12ESaPAKR3M40N8dawVd+LPOgxCrGsUmC7Myfhn44AQiWh7X9PiTAagrAnJSaGqsb+yx+KRNSjrm8wx1TVQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.11", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "Microsoft.Extensions.Diagnostics": "9.0.11", - "Microsoft.Extensions.Logging": "9.0.11", - "Microsoft.Extensions.Logging.Abstractions": "9.0.11", - "Microsoft.Extensions.Options": "9.0.11" - } - }, - "Microsoft.Extensions.Http.Resilience": { - "type": "CentralTransitive", - "requested": "[9.10.0, )", - "resolved": "9.10.0", - "contentHash": "4Bt58q+Oqpj4VYm3T7hcmsb1zVhmUTNNggDkjlWBIv3bv6MVRPGqIokK2tRHsD8bM4i3GkJLRWe8lQwbsWS6PQ==", - "dependencies": { - "Microsoft.Extensions.Http.Diagnostics": "9.10.0", - "Microsoft.Extensions.ObjectPool": "8.0.21", - "Microsoft.Extensions.Resilience": "9.10.0" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[9.0.11, )", - "resolved": "9.0.11", - "contentHash": "UKWFTDwtZQIoypyt1YPVsxTnDK+0sKn26+UeSGeNlkRQddrkt9EC6kP4g94rgO/WOZkz94bKNlF1dVZN3QfPFQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.11", - "System.Diagnostics.DiagnosticSource": "9.0.11" - } - } - } - } -} \ No newline at end of file diff --git a/tests/Visus.AddressValidation.SourceGeneration.Tests/Visus.AddressValidation.SourceGeneration.Tests.csproj b/tests/Visus.AddressValidation.SourceGeneration.Tests/Visus.AddressValidation.SourceGeneration.Tests.csproj index d9a87fe..138699f 100644 --- a/tests/Visus.AddressValidation.SourceGeneration.Tests/Visus.AddressValidation.SourceGeneration.Tests.csproj +++ b/tests/Visus.AddressValidation.SourceGeneration.Tests/Visus.AddressValidation.SourceGeneration.Tests.csproj @@ -1,7 +1,7 @@ - net8.0 + net10.0 true diff --git a/tests/Visus.AddressValidation.SourceGeneration.Tests/packages.lock.json b/tests/Visus.AddressValidation.SourceGeneration.Tests/packages.lock.json deleted file mode 100644 index feb5f16..0000000 --- a/tests/Visus.AddressValidation.SourceGeneration.Tests/packages.lock.json +++ /dev/null @@ -1,850 +0,0 @@ -{ - "version": 2, - "dependencies": { - "net8.0": { - "coverlet.collector": { - "type": "Direct", - "requested": "[6.0.4, )", - "resolved": "6.0.4", - "contentHash": "lkhqpF8Pu2Y7IiN7OntbsTtdbpR1syMsm2F3IgX6ootA4ffRqWL5jF7XipHuZQTdVuWG/gVAAcf8mjk8Tz0xPg==" - }, - "coverlet.msbuild": { - "type": "Direct", - "requested": "[6.0.4, )", - "resolved": "6.0.4", - "contentHash": "Qa7Hg+wrOMDKpXVn2dw4Wlun490bIWsFW0fdNJQFJLZnbU27MCP0HJ2mPgS+3EQBQUb0zKlkwiQzP+j38Hc3Iw==" - }, - "JunitXml.TestLogger": { - "type": "Direct", - "requested": "[7.0.2, )", - "resolved": "7.0.2", - "contentHash": "f6swYzT8DOVS6byaz1f7SYT06aoZTFXooLlJFX9Da3JB1/RLK+Z0UW1Q33NqMX+T9JFpal276qAJfPVUp96qbg==" - }, - "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing": { - "type": "Direct", - "requested": "[1.1.2, )", - "resolved": "1.1.2", - "contentHash": "mzi4VHeskAZ7KzORK9xuK/fEAMWS0UfQJ+HbbDVaIiG8khJWIZkMka5a6X5lHW/cOq51sxHv40Ggy95jgEDVgw==", - "dependencies": { - "Microsoft.CodeAnalysis.CSharp.Workspaces": "3.8.0", - "Microsoft.CodeAnalysis.SourceGenerators.Testing": "[1.1.2]" - } - }, - "Microsoft.NET.Test.Sdk": { - "type": "Direct", - "requested": "[18.0.1, )", - "resolved": "18.0.1", - "contentHash": "WNpu6vI2rA0pXY4r7NKxCN16XRWl5uHu6qjuyVLoDo6oYEggIQefrMjkRuibQHm/NslIUNCcKftvoWAN80MSAg==", - "dependencies": { - "Microsoft.CodeCoverage": "18.0.1", - "Microsoft.TestPlatform.TestHost": "18.0.1" - } - }, - "Verify.DiffPlex": { - "type": "Direct", - "requested": "[3.1.2, )", - "resolved": "3.1.2", - "contentHash": "ySaQ+MffcDfGWzBXB9UHppEGBqzl0L+2CxZcT04xQ3gugsN5AAjBPHkt75Ca61PlAeZCyty/p/Q9ZwaQjNOoTg==", - "dependencies": { - "DiffPlex": "1.7.2", - "Verify": "27.0.0" - } - }, - "Verify.SourceGenerators": { - "type": "Direct", - "requested": "[2.5.0, )", - "resolved": "2.5.0", - "contentHash": "XhAg+fJDPXDH7Ajv/J4Hv8ls0zoeK0LqjZIiOT+quwxOqdplcTuqdPx1+4p1qvYzpTdwkLxyGiIA76MzCljyAQ==", - "dependencies": { - "Verify": "26.5.0" - } - }, - "Verify.Xunit": { - "type": "Direct", - "requested": "[31.8.0, )", - "resolved": "31.8.0", - "contentHash": "f+oaf/znLk/aeX6nAK9z8gjAuAnpZPSr9vixHAMveS6G3FP9dBCDCvu7UsZUKBQLgVT17Ie38LkXvmFgLx7Aqw==", - "dependencies": { - "Argon": "0.33.0", - "DiffEngine": "17.0.1", - "SimpleInfoName": "3.1.2", - "Verify": "31.8.0", - "xunit.abstractions": "2.0.3", - "xunit.extensibility.execution": "2.9.3" - } - }, - "xunit": { - "type": "Direct", - "requested": "[2.9.3, )", - "resolved": "2.9.3", - "contentHash": "TlXQBinK35LpOPKHAqbLY4xlEen9TBafjs0V5KnA4wZsoQLQJiirCR4CbIXvOH8NzkW4YeJKP5P/Bnrodm0h9Q==", - "dependencies": { - "xunit.analyzers": "1.18.0", - "xunit.assert": "2.9.3", - "xunit.core": "[2.9.3]" - } - }, - "xunit.runner.visualstudio": { - "type": "Direct", - "requested": "[3.1.5, )", - "resolved": "3.1.5", - "contentHash": "tKi7dSTwP4m5m9eXPM2Ime4Kn7xNf4x4zT9sdLO/G4hZVnQCRiMTWoSZqI/pYTVeI27oPPqHBKYI/DjJ9GsYgA==" - }, - "Argon": { - "type": "Transitive", - "resolved": "0.33.0", - "contentHash": "4MIj5MosLqRlKAz16Ir5rz1gyocC6npJGGXqkTIIVby0yPYKk56Lm9X5tEQv6MbStLUOv3aDfya6FKAqcRhxTA==" - }, - "DiffEngine": { - "type": "Transitive", - "resolved": "17.0.1", - "contentHash": "GZ1w8uedF2CpcJzwPJkBMYRVJRETbmmqKAqhTJlIMRiKeEYk68yTXZIXS+7fSwx8jgK5loGhKPyZYPxqXCn2oA==", - "dependencies": { - "EmptyFiles": "8.17.1", - "System.Management": "8.0.0" - } - }, - "DiffPlex": { - "type": "Transitive", - "resolved": "1.7.2", - "contentHash": "qJEjdxEDBWSFZGB8paBB9HDeJXHGlHlOXeGX3kbTuXWuOsgv2iSAEOOzo5V1/B39Vcxr9IVVrNKewRcX+rsn4g==" - }, - "EmptyFiles": { - "type": "Transitive", - "resolved": "8.17.1", - "contentHash": "pVmxBQer9yeFhYg6X27YMB/RDxYT99ms5QD8IT2KTj/WzygRtWZ0l7jlk4I4aAztNT7QjvHQ6tQ1/ox07C552A==" - }, - "Humanizer.Core": { - "type": "Transitive", - "resolved": "2.14.1", - "contentHash": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==" - }, - "Microsoft.CodeAnalysis.Analyzer.Testing": { - "type": "Transitive", - "resolved": "1.1.2", - "contentHash": "g6cSJMPlmTiEHakCKaTobNISbf4jfjNF38YK8V4azAgcV9CE4BxuGQSWW6eftHs43q7mhKOr1lioKsTVQmUc1g==", - "dependencies": { - "DiffPlex": "1.7.2", - "Microsoft.CodeAnalysis.Workspaces.Common": "1.0.1", - "Microsoft.VisualStudio.Composition": "16.1.8", - "NuGet.Common": "6.3.4", - "NuGet.Packaging": "6.3.4", - "NuGet.Protocol": "6.3.4", - "NuGet.Resolver": "6.3.4" - } - }, - "Microsoft.CodeAnalysis.Analyzers": { - "type": "Transitive", - "resolved": "3.3.4", - "contentHash": "AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g==" - }, - "Microsoft.CodeAnalysis.Common": { - "type": "Transitive", - "resolved": "4.11.0", - "contentHash": "djf8ujmqYImFgB04UGtcsEhHrzVqzHowS+EEl/Yunc5LdrYrZhGBWUTXoCF0NzYXJxtfuD+UVQarWpvrNc94Qg==", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.3.4", - "System.Collections.Immutable": "8.0.0", - "System.Reflection.Metadata": "8.0.0" - } - }, - "Microsoft.CodeAnalysis.CSharp": { - "type": "Transitive", - "resolved": "4.11.0", - "contentHash": "6XYi2EusI8JT4y2l/F3VVVS+ISoIX9nqHsZRaG6W5aFeJ5BEuBosHfT/ABb73FN0RZ1Z3cj2j7cL28SToJPXOw==", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.3.4", - "Microsoft.CodeAnalysis.Common": "[4.11.0]", - "System.Collections.Immutable": "8.0.0", - "System.Reflection.Metadata": "8.0.0" - } - }, - "Microsoft.CodeAnalysis.SourceGenerators.Testing": { - "type": "Transitive", - "resolved": "1.1.2", - "contentHash": "m+E8+ovSIYUVXMijWKdPhvnWpOBB/ms+3hunlPiWY8iJkyrT5GKFtRUPevEUKuL75t5+I3SnEAwvsHL29WJSGQ==", - "dependencies": { - "DiffPlex": "1.7.2", - "Microsoft.CodeAnalysis.Analyzer.Testing": "[1.1.2]", - "Microsoft.CodeAnalysis.Workspaces.Common": "3.8.0" - } - }, - "Microsoft.CodeAnalysis.Workspaces.Common": { - "type": "Transitive", - "resolved": "4.11.0", - "contentHash": "UtwEt42V7/LnvAcschSlmUXRLEj0poX1H7QeFbY5bezcS+tJBCssAq8C7GfisgIA0qZPo2xzOrwKGBbg51CetA==", - "dependencies": { - "Humanizer.Core": "2.14.1", - "Microsoft.CodeAnalysis.Analyzers": "3.3.4", - "Microsoft.CodeAnalysis.Common": "[4.11.0]", - "System.Collections.Immutable": "8.0.0", - "System.Composition": "8.0.0", - "System.IO.Pipelines": "8.0.0", - "System.Reflection.Metadata": "8.0.0", - "System.Threading.Channels": "7.0.0" - } - }, - "Microsoft.CodeCoverage": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "O+utSr97NAJowIQT/OVp3Lh9QgW/wALVTP4RG1m2AfFP4IyJmJz0ZBmFJUsRQiAPgq6IRC0t8AAzsiPIsaUDEA==" - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==" - }, - "Microsoft.NETCore.Platforms": { - "type": "Transitive", - "resolved": "2.0.0", - "contentHash": "VdLJOCXhZaEMY7Hm2GKiULmn7IEPFE4XC5LPSfBVCUIA8YLZVh846gtfBJalsPQF2PlzdD7ecX7DZEulJ402ZQ==" - }, - "Microsoft.NETCore.Targets": { - "type": "Transitive", - "resolved": "1.1.0", - "contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==" - }, - "Microsoft.TestPlatform.ObjectModel": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "qT/mwMcLF9BieRkzOBPL2qCopl8hQu6A1P7JWAoj/FMu5i9vds/7cjbJ/LLtaiwWevWLAeD5v5wjQJ/l6jvhWQ==", - "dependencies": { - "System.Reflection.Metadata": "8.0.0" - } - }, - "Microsoft.TestPlatform.TestHost": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "uDJKAEjFTaa2wHdWlfo6ektyoh+WD4/Eesrwb4FpBFKsLGehhACVnwwTI4qD3FrIlIEPlxdXg3SyrYRIcO+RRQ==", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "18.0.1", - "Newtonsoft.Json": "13.0.3" - } - }, - "Microsoft.VisualStudio.Composition": { - "type": "Transitive", - "resolved": "16.1.8", - "contentHash": "N+thv3dcT7kjn0Xz3U0uBm2CH4uoaMvH8wC6Gy2HWx7HLNdEpqGoMraLyoBdizmypD1owLCJQIa2uKmWe4/o8A==", - "dependencies": { - "Microsoft.VisualStudio.Composition.NetFxAttributes": "16.1.8", - "Microsoft.VisualStudio.Validation": "15.0.82", - "System.Composition": "1.0.31", - "System.Reflection.Emit": "4.3.0", - "System.Reflection.Metadata": "1.3.0", - "System.Reflection.TypeExtensions": "4.3.0", - "System.Threading.Tasks.Dataflow": "4.6.0" - } - }, - "Microsoft.VisualStudio.Composition.NetFxAttributes": { - "type": "Transitive", - "resolved": "16.1.8", - "contentHash": "EbwZWTvdzit68qZSuTI8nd1PZ87pYjhpCwtsis8lrUKJ7XLdbE5rxY6YrY7OFze+YUsguzqZlNjX4Yn5nL9qBw==", - "dependencies": { - "System.ComponentModel.Composition": "4.5.0" - } - }, - "Microsoft.VisualStudio.Validation": { - "type": "Transitive", - "resolved": "15.0.82", - "contentHash": "XwZyVCsHuEtnd6nYScJnA8XkXPzy4Ok0DV5/hqqAe5ccgOhJ6yap7Qh/sU/i6QxEzuYyECPYDQ7IOyEQ3yRQgQ==" - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.3", - "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" - }, - "NuGet.Common": { - "type": "Transitive", - "resolved": "6.3.4", - "contentHash": "wKuTiB3RBjbvzB/BhW8+Cu+TTPsABJr91I2Guu/FuM0SXtYRIM26v1NJdwm5rLw59CqB7bamqpWpJKU8bLAdwQ==", - "dependencies": { - "NuGet.Frameworks": "6.3.4" - } - }, - "NuGet.Configuration": { - "type": "Transitive", - "resolved": "6.3.4", - "contentHash": "b+/g6sdnR2128KLn+6qO1MrB8j0goO4kYCFly2RDi/BsLilK+MzKJRHWGYqfMn/YnLmMrgNNJ2sSr4GX7rMEQw==", - "dependencies": { - "NuGet.Common": "6.3.4", - "System.Security.Cryptography.ProtectedData": "4.4.0" - } - }, - "NuGet.Frameworks": { - "type": "Transitive", - "resolved": "6.3.4", - "contentHash": "befpN1xKohg8rss3XLWo7t4UDfh8OQ6SbDohJSM7SR4uNyzm0haJJYyky+9L9GDs+yJHqiTNJYqOb1GDyVVYVg==" - }, - "NuGet.Packaging": { - "type": "Transitive", - "resolved": "6.3.4", - "contentHash": "0HtJXNCes0443jKeFErjhYxJ08BjyoDrIvw/uWyonoTBQ3B//+H2nztviSUyv0+ydfgKyhwshAjsr0efUT8PRA==", - "dependencies": { - "Newtonsoft.Json": "13.0.1", - "NuGet.Configuration": "6.3.4", - "NuGet.Versioning": "6.3.4", - "System.Security.Cryptography.Cng": "5.0.0", - "System.Security.Cryptography.Pkcs": "5.0.0" - } - }, - "NuGet.Protocol": { - "type": "Transitive", - "resolved": "6.3.4", - "contentHash": "Gmvnz7RoN6UG3POw0F4t9mWM4sIdmHiuutvR9c2pLCJCUiYBN8QvbO/ZvkOuQNNM/aGdYExx/Tm84Zx9iVjOSA==", - "dependencies": { - "NuGet.Packaging": "6.3.4" - } - }, - "NuGet.Resolver": { - "type": "Transitive", - "resolved": "6.3.4", - "contentHash": "cO/QqtGqCIUf/e6EncIQ/ORJDco9UOtxooDL0IZhf18x1l0xFJ/nrcLCyAjZeznE9RAIqaNv1+YFobht4u0Lsw==", - "dependencies": { - "NuGet.Protocol": "6.3.4" - } - }, - "NuGet.Versioning": { - "type": "Transitive", - "resolved": "6.3.4", - "contentHash": "mQW9bwsWJq30lacl33MMVLBlrit5ClNEpGzKryIuLfP1UTL6feQK1yzA/5IQXdtjXvUEoI5bo1Axjen5lOm7Bg==" - }, - "SimpleInfoName": { - "type": "Transitive", - "resolved": "3.1.2", - "contentHash": "/OoEZQxSW6DeTJ9nfrg8BLCOCWpxBiWHV4NkG3t+Xpe8tvzm7yCwKwxkhpauMl3fg9OjlIjJMKX61H6VavLkrw==" - }, - "System.CodeDom": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "WTlRjL6KWIMr/pAaq3rYqh0TJlzpouaQ/W1eelssHgtlwHAH25jXTkUphTYx9HaIIf7XA6qs/0+YhtLEQRkJ+Q==" - }, - "System.Collections": { - "type": "Transitive", - "resolved": "4.0.11", - "contentHash": "YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - } - }, - "System.Collections.Concurrent": { - "type": "Transitive", - "resolved": "4.0.12", - "contentHash": "2gBcbb3drMLgxlI0fBfxMA31ec6AEyYCHygGse4vxceJan8mRIWeKJ24BFzN7+bi/NFTgdIgufzb94LWO5EERQ==", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - } - }, - "System.Collections.Immutable": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==" - }, - "System.ComponentModel.Composition": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "+iB9FoZnfdqMEGq6np28X6YNSUrse16CakmIhV3h6PxEWt7jYxUN3Txs1D8MZhhf4QmyvK0F/EcIN0f4gGN0dA==", - "dependencies": { - "System.Security.Permissions": "4.5.0" - } - }, - "System.Composition": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "E9oO9olNNxA39J8CxQwf7ceIPm+j/B/PhYpyK9M4LhN/OLLRw6u5fNInkhVqaWueMB9iXxYqnwqwgz+W91loIA==", - "dependencies": { - "System.Composition.AttributedModel": "8.0.0", - "System.Composition.Convention": "8.0.0", - "System.Composition.Hosting": "8.0.0", - "System.Composition.Runtime": "8.0.0", - "System.Composition.TypedParts": "8.0.0" - } - }, - "System.Composition.AttributedModel": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "NyElSuvmBMYdn2iPG0n29i7Igu0bq99izOP3MAtEwskY3OP9jqsavvVmPn9lesVaj/KT/o/QkNjA43dOJTsDQw==" - }, - "System.Composition.Convention": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "UuVkc1B3vQU/LzEbWLMZ1aYVssv4rpShzf8wPEyrUqoGNqdYKREmB8bXR73heOMKkwS6ZnPz3PjGODT2MenukQ==", - "dependencies": { - "System.Composition.AttributedModel": "8.0.0" - } - }, - "System.Composition.Hosting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "qwbONqoxlazxcbiohvb3t1JWZgKIKcRdXS5uEeLbo5wtuBupIbAvdC3PYTAeBCZrZeERvrtAbhYHuuS43Zr1bQ==", - "dependencies": { - "System.Composition.Runtime": "8.0.0" - } - }, - "System.Composition.Runtime": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "G+kRyB5/6+3ucRRQz+DF4uSHGqpkK8Q4ilVdbt4zvxpmvLVZNmSkyFAQpJLcbOyVF85aomJx0m+TGMDVlwx7ZQ==" - }, - "System.Composition.TypedParts": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "DsSklhuA+Dsgo3ZZrar8hjBFvq1wa1grrkNCTt+6SoX3vq0Vy+HXJnVXrU/nNH1BjlGH684A7h4hJQHZd/u5mA==", - "dependencies": { - "System.Composition.AttributedModel": "8.0.0", - "System.Composition.Hosting": "8.0.0", - "System.Composition.Runtime": "8.0.0" - } - }, - "System.Diagnostics.Debug": { - "type": "Transitive", - "resolved": "4.0.11", - "contentHash": "w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - } - }, - "System.Diagnostics.Tracing": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "vDN1PoMZCkkdNjvZLql592oYJZgS7URcJzJ7bxeBgGtx5UtR5leNm49VmfHGqIffX4FKacHbI3H6UyNSHQknBg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - } - }, - "System.Dynamic.Runtime": { - "type": "Transitive", - "resolved": "4.0.11", - "contentHash": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - } - }, - "System.Formats.Asn1": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "MTvUIktmemNB+El0Fgw9egyqT9AYSIk6DTJeoDSpc3GIHxHCMo8COqkWT1mptX5tZ1SlQ6HJZ0OsSvMth1c12w==" - }, - "System.Globalization": { - "type": "Transitive", - "resolved": "4.0.11", - "contentHash": "B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - } - }, - "System.IO": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.IO.Pipelines": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==" - }, - "System.Linq": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - } - }, - "System.Linq.Expressions": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Emit.Lightweight": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - } - }, - "System.Management": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "jrK22i5LRzxZCfGb+tGmke2VH7oE0DvcDlJ1HAKYU8cPmD8XnpUT0bYn2Gy98GEhGjtfbR/sxKTVb+dE770pfA==", - "dependencies": { - "System.CodeDom": "8.0.0" - } - }, - "System.ObjectModel": { - "type": "Transitive", - "resolved": "4.0.12", - "contentHash": "tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - } - }, - "System.Reflection": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==", - "dependencies": { - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit.ILGeneration": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit.Lightweight": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - } - }, - "System.Reflection.Extensions": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - } - }, - "System.Reflection.Metadata": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==", - "dependencies": { - "System.Collections.Immutable": "8.0.0" - } - }, - "System.Reflection.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.TypeExtensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Resources.ResourceManager": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Globalization": "4.0.11", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - } - }, - "System.Runtime": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "System.Runtime.Extensions": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - } - }, - "System.Security.AccessControl": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "vW8Eoq0TMyz5vAG/6ce483x/CP83fgm4SJe5P8Tb1tZaobcvPrbMEL7rhH1DRdrYbbb6F0vq3OlzmK0Pkwks5A==", - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0", - "System.Security.Principal.Windows": "4.5.0" - } - }, - "System.Security.Cryptography.Cng": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "jIMXsKn94T9JY7PvPq/tMfqa6GAaHpElRDpmG+SuL+D3+sTw2M8VhnibKnN8Tq+4JqbPJ/f+BwtLeDMEnzAvRg==", - "dependencies": { - "System.Formats.Asn1": "5.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "9TPLGjBCGKmNvG8pjwPeuYy0SMVmGZRwlTZvyPHDbYv/DRkoeumJdfumaaDNQzVGMEmbWtg07zUpSW9q70IlDQ==", - "dependencies": { - "System.Formats.Asn1": "5.0.0", - "System.Security.Cryptography.Cng": "5.0.0" - } - }, - "System.Security.Cryptography.ProtectedData": { - "type": "Transitive", - "resolved": "4.4.0", - "contentHash": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==" - }, - "System.Security.Permissions": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "9gdyuARhUR7H+p5CjyUB/zPk7/Xut3wUSP8NJQB6iZr8L3XUXTMdoLeVAg9N4rqF8oIpE7MpdqHdDHQ7XgJe0g==", - "dependencies": { - "System.Security.AccessControl": "4.5.0" - } - }, - "System.Security.Principal.Windows": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "U77HfRXlZlOeIXd//Yoj6Jnk8AXlbeisf1oq1os+hxOGVnuG+lGSfGqTwTZBoORFF6j/0q7HXIl8cqwQ9aUGqQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "2.0.0" - } - }, - "System.Text.Encoding": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Threading": { - "type": "Transitive", - "resolved": "4.0.11", - "contentHash": "N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==", - "dependencies": { - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - } - }, - "System.Threading.Channels": { - "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "qmeeYNROMsONF6ndEZcIQ+VxR4Q/TX/7uIVLJqtwIWL7dDWeh0l1UIqgo4wYyjG//5lUNhwkLDSFl+pAWO6oiA==" - }, - "System.Threading.Tasks": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Threading.Tasks.Dataflow": { - "type": "Transitive", - "resolved": "4.6.0", - "contentHash": "2hRjGu2r2jxRZ55wmcHO/WbdX+YAOz9x6FE8xqkHZgPaoFMKQZRe9dk8xTZIas8fRjxRmzawnTEWIrhlM+Un7w==", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Dynamic.Runtime": "4.0.11", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - } - }, - "Verify": { - "type": "Transitive", - "resolved": "31.8.0", - "contentHash": "xZFQX/xVM8rCG1LkXVSBi7cp+eujrE++RDTMMztw6Vt1KjoETFsr8hd0uwYHmIDpvHu/vK877WVn8XVMxDHFfA==", - "dependencies": { - "Argon": "0.33.0", - "DiffEngine": "17.0.1", - "SimpleInfoName": "3.1.2" - } - }, - "xunit.abstractions": { - "type": "Transitive", - "resolved": "2.0.3", - "contentHash": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==" - }, - "xunit.analyzers": { - "type": "Transitive", - "resolved": "1.18.0", - "contentHash": "OtFMHN8yqIcYP9wcVIgJrq01AfTxijjAqVDy/WeQVSyrDC1RzBWeQPztL49DN2syXRah8TYnfvk035s7L95EZQ==" - }, - "xunit.assert": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "/Kq28fCE7MjOV42YLVRAJzRF0WmEqsmflm0cfpMjGtzQ2lR5mYVj1/i0Y8uDAOLczkL3/jArrwehfMD0YogMAA==" - }, - "xunit.core": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "BiAEvqGvyme19wE0wTKdADH+NloYqikiU0mcnmiNyXaF9HyHmE6sr/3DC5vnBkgsWaE6yPyWszKSPSApWdRVeQ==", - "dependencies": { - "xunit.extensibility.core": "[2.9.3]", - "xunit.extensibility.execution": "[2.9.3]" - } - }, - "xunit.extensibility.core": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "kf3si0YTn2a8J8eZNb+zFpwfoyvIrQ7ivNk5ZYA5yuYk1bEtMe4DxJ2CF/qsRgmEnDr7MnW1mxylBaHTZ4qErA==", - "dependencies": { - "xunit.abstractions": "2.0.3" - } - }, - "xunit.extensibility.execution": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "yMb6vMESlSrE3Wfj7V6cjQ3S4TXdXpRqYeNEI3zsX31uTsGMJjEw6oD5F5u1cHnMptjhEECnmZSsPxB6ChZHDQ==", - "dependencies": { - "xunit.extensibility.core": "[2.9.3]" - } - }, - "visus.addressvalidation": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "[10.0.0, )", - "Microsoft.Extensions.Configuration.Abstractions": "[10.0.0, )" - } - }, - "visus.addressvalidation.sourcegeneration": { - "type": "Project" - }, - "Microsoft.CodeAnalysis.CSharp.Workspaces": { - "type": "CentralTransitive", - "requested": "[4.11.0, 4.11.0]", - "resolved": "4.11.0", - "contentHash": "/oRJPIMvzOfiunIegSF6FEa4VvBAUSXlbLDKxyzXuOZN9nLHg3fHuX6Mr9JZLNIupbe2xqQZEmfsPxgB01vCmg==", - "dependencies": { - "Humanizer.Core": "2.14.1", - "Microsoft.CodeAnalysis.Analyzers": "3.3.4", - "Microsoft.CodeAnalysis.CSharp": "[4.11.0]", - "Microsoft.CodeAnalysis.Common": "[4.11.0]", - "Microsoft.CodeAnalysis.Workspaces.Common": "[4.11.0]", - "System.Collections.Immutable": "8.0.0", - "System.Composition": "8.0.0", - "System.IO.Pipelines": "8.0.0", - "System.Reflection.Metadata": "8.0.0", - "System.Threading.Channels": "7.0.0" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "Zcoy6H9mSoGyvr7UvlGokEZrlZkcPCICPZr8mCsSt9U/N8eeCwCXwKF5bShdA66R0obxBCwP4AxomQHvVkC/uA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "d2kDKnCsJvY7mBVhcjPSp9BkJk48DsaHPg5u+Oy4f8XaOqnEedRy/USyvnpHL92wpJ6DrTPy7htppUUzskbCXQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - } - } - } -} \ No newline at end of file diff --git a/tests/Visus.AddressValidation.Tests/Visus.AddressValidation.Tests.csproj b/tests/Visus.AddressValidation.Tests/Visus.AddressValidation.Tests.csproj index 13cadaf..4dcb4d1 100644 --- a/tests/Visus.AddressValidation.Tests/Visus.AddressValidation.Tests.csproj +++ b/tests/Visus.AddressValidation.Tests/Visus.AddressValidation.Tests.csproj @@ -1,7 +1,7 @@ - net8.0 + net10.0 true diff --git a/tests/Visus.AddressValidation.Tests/packages.lock.json b/tests/Visus.AddressValidation.Tests/packages.lock.json deleted file mode 100644 index 3270e99..0000000 --- a/tests/Visus.AddressValidation.Tests/packages.lock.json +++ /dev/null @@ -1,260 +0,0 @@ -{ - "version": 2, - "dependencies": { - "net8.0": { - "coverlet.collector": { - "type": "Direct", - "requested": "[6.0.4, )", - "resolved": "6.0.4", - "contentHash": "lkhqpF8Pu2Y7IiN7OntbsTtdbpR1syMsm2F3IgX6ootA4ffRqWL5jF7XipHuZQTdVuWG/gVAAcf8mjk8Tz0xPg==" - }, - "coverlet.msbuild": { - "type": "Direct", - "requested": "[6.0.4, )", - "resolved": "6.0.4", - "contentHash": "Qa7Hg+wrOMDKpXVn2dw4Wlun490bIWsFW0fdNJQFJLZnbU27MCP0HJ2mPgS+3EQBQUb0zKlkwiQzP+j38Hc3Iw==" - }, - "JunitXml.TestLogger": { - "type": "Direct", - "requested": "[7.0.2, )", - "resolved": "7.0.2", - "contentHash": "f6swYzT8DOVS6byaz1f7SYT06aoZTFXooLlJFX9Da3JB1/RLK+Z0UW1Q33NqMX+T9JFpal276qAJfPVUp96qbg==" - }, - "Microsoft.NET.Test.Sdk": { - "type": "Direct", - "requested": "[18.0.1, )", - "resolved": "18.0.1", - "contentHash": "WNpu6vI2rA0pXY4r7NKxCN16XRWl5uHu6qjuyVLoDo6oYEggIQefrMjkRuibQHm/NslIUNCcKftvoWAN80MSAg==", - "dependencies": { - "Microsoft.CodeCoverage": "18.0.1", - "Microsoft.TestPlatform.TestHost": "18.0.1" - } - }, - "NSubstitute": { - "type": "Direct", - "requested": "[5.3.0, )", - "resolved": "5.3.0", - "contentHash": "lJ47Cps5Qzr86N99lcwd+OUvQma7+fBgr8+Mn+aOC0WrlqMNkdivaYD9IvnZ5Mqo6Ky3LS7ZI+tUq1/s9ERd0Q==", - "dependencies": { - "Castle.Core": "5.1.1" - } - }, - "PublicApiGenerator": { - "type": "Direct", - "requested": "[11.5.4, )", - "resolved": "11.5.4", - "contentHash": "Va382WG4Vng8kCtDaAP5solqbhayMMlW1E+e/DV/w39yJPybmMgy8fbdUvvQgG93EMILx7JtJbGS1HRhVNTUVQ==", - "dependencies": { - "Mono.Cecil": "0.11.6", - "System.CodeDom": "6.0.0" - } - }, - "Verify.Xunit": { - "type": "Direct", - "requested": "[31.8.0, )", - "resolved": "31.8.0", - "contentHash": "f+oaf/znLk/aeX6nAK9z8gjAuAnpZPSr9vixHAMveS6G3FP9dBCDCvu7UsZUKBQLgVT17Ie38LkXvmFgLx7Aqw==", - "dependencies": { - "Argon": "0.33.0", - "DiffEngine": "17.0.1", - "SimpleInfoName": "3.1.2", - "Verify": "31.8.0", - "xunit.abstractions": "2.0.3", - "xunit.extensibility.execution": "2.9.3" - } - }, - "xunit": { - "type": "Direct", - "requested": "[2.9.3, )", - "resolved": "2.9.3", - "contentHash": "TlXQBinK35LpOPKHAqbLY4xlEen9TBafjs0V5KnA4wZsoQLQJiirCR4CbIXvOH8NzkW4YeJKP5P/Bnrodm0h9Q==", - "dependencies": { - "xunit.analyzers": "1.18.0", - "xunit.assert": "2.9.3", - "xunit.core": "[2.9.3]" - } - }, - "xunit.runner.visualstudio": { - "type": "Direct", - "requested": "[3.1.5, )", - "resolved": "3.1.5", - "contentHash": "tKi7dSTwP4m5m9eXPM2Ime4Kn7xNf4x4zT9sdLO/G4hZVnQCRiMTWoSZqI/pYTVeI27oPPqHBKYI/DjJ9GsYgA==" - }, - "Argon": { - "type": "Transitive", - "resolved": "0.33.0", - "contentHash": "4MIj5MosLqRlKAz16Ir5rz1gyocC6npJGGXqkTIIVby0yPYKk56Lm9X5tEQv6MbStLUOv3aDfya6FKAqcRhxTA==" - }, - "Castle.Core": { - "type": "Transitive", - "resolved": "5.1.1", - "contentHash": "rpYtIczkzGpf+EkZgDr9CClTdemhsrwA/W5hMoPjLkRFnXzH44zDLoovXeKtmxb1ykXK9aJVODSpiJml8CTw2g==", - "dependencies": { - "System.Diagnostics.EventLog": "6.0.0" - } - }, - "DiffEngine": { - "type": "Transitive", - "resolved": "17.0.1", - "contentHash": "GZ1w8uedF2CpcJzwPJkBMYRVJRETbmmqKAqhTJlIMRiKeEYk68yTXZIXS+7fSwx8jgK5loGhKPyZYPxqXCn2oA==", - "dependencies": { - "EmptyFiles": "8.17.1", - "System.Management": "8.0.0" - } - }, - "EmptyFiles": { - "type": "Transitive", - "resolved": "8.17.1", - "contentHash": "pVmxBQer9yeFhYg6X27YMB/RDxYT99ms5QD8IT2KTj/WzygRtWZ0l7jlk4I4aAztNT7QjvHQ6tQ1/ox07C552A==" - }, - "Microsoft.CodeCoverage": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "O+utSr97NAJowIQT/OVp3Lh9QgW/wALVTP4RG1m2AfFP4IyJmJz0ZBmFJUsRQiAPgq6IRC0t8AAzsiPIsaUDEA==" - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.0", - "contentHash": "inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==" - }, - "Microsoft.TestPlatform.ObjectModel": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "qT/mwMcLF9BieRkzOBPL2qCopl8hQu6A1P7JWAoj/FMu5i9vds/7cjbJ/LLtaiwWevWLAeD5v5wjQJ/l6jvhWQ==", - "dependencies": { - "System.Reflection.Metadata": "8.0.0" - } - }, - "Microsoft.TestPlatform.TestHost": { - "type": "Transitive", - "resolved": "18.0.1", - "contentHash": "uDJKAEjFTaa2wHdWlfo6ektyoh+WD4/Eesrwb4FpBFKsLGehhACVnwwTI4qD3FrIlIEPlxdXg3SyrYRIcO+RRQ==", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "18.0.1", - "Newtonsoft.Json": "13.0.3" - } - }, - "Mono.Cecil": { - "type": "Transitive", - "resolved": "0.11.6", - "contentHash": "f33RkDtZO8VlGXCtmQIviOtxgnUdym9xx/b1p9h91CRGOsJFxCFOFK1FDbVt1OCf1aWwYejUFa2MOQyFWTFjbA==" - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.3", - "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" - }, - "SimpleInfoName": { - "type": "Transitive", - "resolved": "3.1.2", - "contentHash": "/OoEZQxSW6DeTJ9nfrg8BLCOCWpxBiWHV4NkG3t+Xpe8tvzm7yCwKwxkhpauMl3fg9OjlIjJMKX61H6VavLkrw==" - }, - "System.CodeDom": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "WTlRjL6KWIMr/pAaq3rYqh0TJlzpouaQ/W1eelssHgtlwHAH25jXTkUphTYx9HaIIf7XA6qs/0+YhtLEQRkJ+Q==" - }, - "System.Collections.Immutable": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==" - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "jrK22i5LRzxZCfGb+tGmke2VH7oE0DvcDlJ1HAKYU8cPmD8XnpUT0bYn2Gy98GEhGjtfbR/sxKTVb+dE770pfA==", - "dependencies": { - "System.CodeDom": "8.0.0" - } - }, - "System.Reflection.Metadata": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==", - "dependencies": { - "System.Collections.Immutable": "8.0.0" - } - }, - "Verify": { - "type": "Transitive", - "resolved": "31.8.0", - "contentHash": "xZFQX/xVM8rCG1LkXVSBi7cp+eujrE++RDTMMztw6Vt1KjoETFsr8hd0uwYHmIDpvHu/vK877WVn8XVMxDHFfA==", - "dependencies": { - "Argon": "0.33.0", - "DiffEngine": "17.0.1", - "SimpleInfoName": "3.1.2" - } - }, - "xunit.abstractions": { - "type": "Transitive", - "resolved": "2.0.3", - "contentHash": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==" - }, - "xunit.analyzers": { - "type": "Transitive", - "resolved": "1.18.0", - "contentHash": "OtFMHN8yqIcYP9wcVIgJrq01AfTxijjAqVDy/WeQVSyrDC1RzBWeQPztL49DN2syXRah8TYnfvk035s7L95EZQ==" - }, - "xunit.assert": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "/Kq28fCE7MjOV42YLVRAJzRF0WmEqsmflm0cfpMjGtzQ2lR5mYVj1/i0Y8uDAOLczkL3/jArrwehfMD0YogMAA==" - }, - "xunit.core": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "BiAEvqGvyme19wE0wTKdADH+NloYqikiU0mcnmiNyXaF9HyHmE6sr/3DC5vnBkgsWaE6yPyWszKSPSApWdRVeQ==", - "dependencies": { - "xunit.extensibility.core": "[2.9.3]", - "xunit.extensibility.execution": "[2.9.3]" - } - }, - "xunit.extensibility.core": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "kf3si0YTn2a8J8eZNb+zFpwfoyvIrQ7ivNk5ZYA5yuYk1bEtMe4DxJ2CF/qsRgmEnDr7MnW1mxylBaHTZ4qErA==", - "dependencies": { - "xunit.abstractions": "2.0.3" - } - }, - "xunit.extensibility.execution": { - "type": "Transitive", - "resolved": "2.9.3", - "contentHash": "yMb6vMESlSrE3Wfj7V6cjQ3S4TXdXpRqYeNEI3zsX31uTsGMJjEw6oD5F5u1cHnMptjhEECnmZSsPxB6ChZHDQ==", - "dependencies": { - "xunit.extensibility.core": "[2.9.3]" - } - }, - "visus.addressvalidation": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "[10.0.0, )", - "Microsoft.Extensions.Configuration.Abstractions": "[10.0.0, )" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "Zcoy6H9mSoGyvr7UvlGokEZrlZkcPCICPZr8mCsSt9U/N8eeCwCXwKF5bShdA66R0obxBCwP4AxomQHvVkC/uA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.0, )", - "resolved": "10.0.0", - "contentHash": "d2kDKnCsJvY7mBVhcjPSp9BkJk48DsaHPg5u+Oy4f8XaOqnEedRy/USyvnpHL92wpJ6DrTPy7htppUUzskbCXQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.0" - } - } - } - } -} \ No newline at end of file