chore: initial commit

This commit is contained in:
Stevan Freeborn
2026-03-30 21:29:45 -05:00
commit f39c9d2bd5
227 changed files with 7881 additions and 0 deletions
+390
View File
@@ -0,0 +1,390 @@
root = true
# All files
[*]
indent_style = space
indent_size = 2
# Xml files
[*.xml]
indent_size = 2
# Xml project files
[*.{csproj,fsproj,vbproj,proj,slnx}]
indent_size = 2
# Xml config files
[*.{props,targets,config,nuspec}]
indent_size = 2
[*.json]
indent_size = 2
# C# files
[*.cs]
#### Core EditorConfig Options ####
# Indentation and spacing
indent_size = 2
tab_width = 2
# New line preferences
insert_final_newline = false
#### .NET Coding Conventions ####
[*.{cs,vb}]
# Organize usings
dotnet_separate_import_directive_groups = true
dotnet_sort_system_directives_first = true
file_header_template = unset
# this. and Me. preferences
dotnet_style_qualification_for_event = false:silent
dotnet_style_qualification_for_field = false:silent
dotnet_style_qualification_for_method = false:silent
dotnet_style_qualification_for_property = false:silent
# Language keywords vs BCL types preferences
dotnet_style_predefined_type_for_locals_parameters_members = true:silent
dotnet_style_predefined_type_for_member_access = true:silent
# Parentheses preferences
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
# Modifier preferences
dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
# Expression-level preferences
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_namespace_match_folder = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_object_initializer = true:suggestion
dotnet_style_operator_placement_when_wrapping = beginning_of_line
dotnet_style_prefer_auto_properties = true:suggestion
dotnet_style_prefer_collection_expression = when_types_loosely_match:suggestion
dotnet_style_prefer_compound_assignment = true:suggestion
dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion
dotnet_style_prefer_conditional_expression_over_return = false:silent
dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed:suggestion
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
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
dotnet_style_prefer_simplified_interpolation = true:suggestion
# Field preferences
dotnet_style_readonly_field = true:warning
# Parameter preferences
dotnet_code_quality_unused_parameters = all:suggestion
# Suppression preferences
dotnet_remove_unnecessary_suppression_exclusions = none
#### C# Coding Conventions ####
[*.cs]
# 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
# Expression-bodied members
csharp_style_expression_bodied_accessors = true:silent
csharp_style_expression_bodied_constructors = false:silent
csharp_style_expression_bodied_indexers = true:silent
csharp_style_expression_bodied_lambdas = true:suggestion
csharp_style_expression_bodied_local_functions = false:silent
csharp_style_expression_bodied_methods = false:silent
csharp_style_expression_bodied_operators = false:silent
csharp_style_expression_bodied_properties = true:silent
# Pattern matching preferences
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
csharp_style_prefer_extended_property_pattern = true:suggestion
csharp_style_prefer_not_pattern = true:suggestion
csharp_style_prefer_pattern_matching = true:silent
csharp_style_prefer_switch_expression = true:suggestion
# Null-checking preferences
csharp_style_conditional_delegate_call = true:suggestion
# Modifier preferences
csharp_prefer_static_anonymous_function = true:suggestion
csharp_prefer_static_local_function = true:warning
csharp_preferred_modifier_order = public,private,protected,internal,file,const,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async:suggestion
csharp_style_prefer_readonly_struct = true:suggestion
csharp_style_prefer_readonly_struct_member = true:suggestion
# Code-block preferences
csharp_prefer_braces = true:silent
csharp_prefer_simple_using_statement = true:suggestion
csharp_style_namespace_declarations = file_scoped:suggestion
csharp_style_prefer_method_group_conversion = true:silent
csharp_style_prefer_primary_constructors = true:suggestion
csharp_style_prefer_top_level_statements = true:silent
# Expression-level preferences
csharp_prefer_simple_default_expression = true:suggestion
csharp_style_deconstructed_variable_declaration = true:suggestion
csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion
csharp_style_prefer_index_operator = true:suggestion
csharp_style_prefer_local_over_anonymous_function = true:suggestion
csharp_style_prefer_null_check_over_type_check = true:suggestion
csharp_style_prefer_range_operator = true:suggestion
csharp_style_prefer_tuple_swap = true:suggestion
csharp_style_prefer_utf8_string_literals = true:suggestion
csharp_style_throw_expression = true:suggestion
csharp_style_unused_value_assignment_preference = discard_variable:suggestion
csharp_style_unused_value_expression_statement_preference = discard_variable:silent
# 'using' directive preferences
csharp_using_directive_placement = outside_namespace:silent
#### C# Formatting Rules ####
# New line preferences
csharp_new_line_before_catch = true
csharp_new_line_before_else = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_open_brace = all
csharp_new_line_between_query_expression_clauses = true
# Indentation preferences
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
csharp_indent_case_contents_when_block = true
csharp_indent_labels = one_less_than_current
csharp_indent_switch_labels = true
# Space preferences
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_after_semicolon_in_for_statement = true
csharp_space_around_binary_operators = before_and_after
csharp_space_around_declaration_statements = false
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_before_comma = false
csharp_space_before_dot = false
csharp_space_before_open_square_brackets = false
csharp_space_before_semicolon_in_for_statement = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false
# Wrapping preferences
csharp_preserve_single_line_blocks = true
csharp_preserve_single_line_statements = true
#### Naming styles ####
[*.{cs,vb}]
# Naming rules
dotnet_naming_rule.types_and_namespaces_should_be_pascalcase.severity = suggestion
dotnet_naming_rule.types_and_namespaces_should_be_pascalcase.symbols = types_and_namespaces
dotnet_naming_rule.types_and_namespaces_should_be_pascalcase.style = pascalcase
dotnet_naming_rule.interfaces_should_be_ipascalcase.severity = suggestion
dotnet_naming_rule.interfaces_should_be_ipascalcase.symbols = interfaces
dotnet_naming_rule.interfaces_should_be_ipascalcase.style = ipascalcase
dotnet_naming_rule.type_parameters_should_be_tpascalcase.severity = suggestion
dotnet_naming_rule.type_parameters_should_be_tpascalcase.symbols = type_parameters
dotnet_naming_rule.type_parameters_should_be_tpascalcase.style = tpascalcase
dotnet_naming_rule.methods_should_be_pascalcase.severity = suggestion
dotnet_naming_rule.methods_should_be_pascalcase.symbols = methods
dotnet_naming_rule.methods_should_be_pascalcase.style = pascalcase
dotnet_naming_rule.properties_should_be_pascalcase.severity = suggestion
dotnet_naming_rule.properties_should_be_pascalcase.symbols = properties
dotnet_naming_rule.properties_should_be_pascalcase.style = pascalcase
dotnet_naming_rule.events_should_be_pascalcase.severity = suggestion
dotnet_naming_rule.events_should_be_pascalcase.symbols = events
dotnet_naming_rule.events_should_be_pascalcase.style = pascalcase
dotnet_naming_rule.local_variables_should_be_camelcase.severity = suggestion
dotnet_naming_rule.local_variables_should_be_camelcase.symbols = local_variables
dotnet_naming_rule.local_variables_should_be_camelcase.style = camelcase
dotnet_naming_rule.local_constants_should_be_camelcase.severity = suggestion
dotnet_naming_rule.local_constants_should_be_camelcase.symbols = local_constants
dotnet_naming_rule.local_constants_should_be_camelcase.style = camelcase
dotnet_naming_rule.parameters_should_be_camelcase.severity = suggestion
dotnet_naming_rule.parameters_should_be_camelcase.symbols = parameters
dotnet_naming_rule.parameters_should_be_camelcase.style = camelcase
dotnet_naming_rule.public_fields_should_be_pascalcase.severity = suggestion
dotnet_naming_rule.public_fields_should_be_pascalcase.symbols = public_fields
dotnet_naming_rule.public_fields_should_be_pascalcase.style = pascalcase
dotnet_naming_rule.private_fields_should_be__camelcase.severity = suggestion
dotnet_naming_rule.private_fields_should_be__camelcase.symbols = private_fields
dotnet_naming_rule.private_fields_should_be__camelcase.style = _camelcase
dotnet_naming_rule.private_static_fields_should_be_s_camelcase.severity = suggestion
dotnet_naming_rule.private_static_fields_should_be_s_camelcase.symbols = private_static_fields
dotnet_naming_rule.private_static_fields_should_be_s_camelcase.style = s_camelcase
dotnet_naming_rule.public_constant_fields_should_be_pascalcase.severity = suggestion
dotnet_naming_rule.public_constant_fields_should_be_pascalcase.symbols = public_constant_fields
dotnet_naming_rule.public_constant_fields_should_be_pascalcase.style = pascalcase
dotnet_naming_rule.private_constant_fields_should_be_pascalcase.severity = suggestion
dotnet_naming_rule.private_constant_fields_should_be_pascalcase.symbols = private_constant_fields
dotnet_naming_rule.private_constant_fields_should_be_pascalcase.style = pascalcase
dotnet_naming_rule.public_static_readonly_fields_should_be_pascalcase.severity = suggestion
dotnet_naming_rule.public_static_readonly_fields_should_be_pascalcase.symbols = public_static_readonly_fields
dotnet_naming_rule.public_static_readonly_fields_should_be_pascalcase.style = pascalcase
dotnet_naming_rule.private_static_readonly_fields_should_be_pascalcase.severity = suggestion
dotnet_naming_rule.private_static_readonly_fields_should_be_pascalcase.symbols = private_static_readonly_fields
dotnet_naming_rule.private_static_readonly_fields_should_be_pascalcase.style = pascalcase
dotnet_naming_rule.enums_should_be_pascalcase.severity = suggestion
dotnet_naming_rule.enums_should_be_pascalcase.symbols = enums
dotnet_naming_rule.enums_should_be_pascalcase.style = pascalcase
dotnet_naming_rule.local_functions_should_be_pascalcase.severity = suggestion
dotnet_naming_rule.local_functions_should_be_pascalcase.symbols = local_functions
dotnet_naming_rule.local_functions_should_be_pascalcase.style = pascalcase
dotnet_naming_rule.non_field_members_should_be_pascalcase.severity = suggestion
dotnet_naming_rule.non_field_members_should_be_pascalcase.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascalcase.style = pascalcase
# Symbol specifications
dotnet_naming_symbols.interfaces.applicable_kinds = interface
dotnet_naming_symbols.interfaces.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interfaces.required_modifiers =
dotnet_naming_symbols.enums.applicable_kinds = enum
dotnet_naming_symbols.enums.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.enums.required_modifiers =
dotnet_naming_symbols.events.applicable_kinds = event
dotnet_naming_symbols.events.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.events.required_modifiers =
dotnet_naming_symbols.methods.applicable_kinds = method
dotnet_naming_symbols.methods.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.methods.required_modifiers =
dotnet_naming_symbols.properties.applicable_kinds = property
dotnet_naming_symbols.properties.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.properties.required_modifiers =
dotnet_naming_symbols.public_fields.applicable_kinds = field
dotnet_naming_symbols.public_fields.applicable_accessibilities = public, internal
dotnet_naming_symbols.public_fields.required_modifiers =
dotnet_naming_symbols.private_fields.applicable_kinds = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private, protected, protected_internal, private_protected
dotnet_naming_symbols.private_fields.required_modifiers =
dotnet_naming_symbols.private_static_fields.applicable_kinds = field
dotnet_naming_symbols.private_static_fields.applicable_accessibilities = private, protected, protected_internal, private_protected
dotnet_naming_symbols.private_static_fields.required_modifiers = static
dotnet_naming_symbols.types_and_namespaces.applicable_kinds = namespace, class, struct, interface, enum
dotnet_naming_symbols.types_and_namespaces.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types_and_namespaces.required_modifiers =
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.required_modifiers =
dotnet_naming_symbols.type_parameters.applicable_kinds = namespace
dotnet_naming_symbols.type_parameters.applicable_accessibilities = *
dotnet_naming_symbols.type_parameters.required_modifiers =
dotnet_naming_symbols.private_constant_fields.applicable_kinds = field
dotnet_naming_symbols.private_constant_fields.applicable_accessibilities = private, protected, protected_internal, private_protected
dotnet_naming_symbols.private_constant_fields.required_modifiers = const
dotnet_naming_symbols.local_variables.applicable_kinds = local
dotnet_naming_symbols.local_variables.applicable_accessibilities = local
dotnet_naming_symbols.local_variables.required_modifiers =
dotnet_naming_symbols.local_constants.applicable_kinds = local
dotnet_naming_symbols.local_constants.applicable_accessibilities = local
dotnet_naming_symbols.local_constants.required_modifiers = const
dotnet_naming_symbols.parameters.applicable_kinds = parameter
dotnet_naming_symbols.parameters.applicable_accessibilities = *
dotnet_naming_symbols.parameters.required_modifiers =
dotnet_naming_symbols.public_constant_fields.applicable_kinds = field
dotnet_naming_symbols.public_constant_fields.applicable_accessibilities = public, internal
dotnet_naming_symbols.public_constant_fields.required_modifiers = const
dotnet_naming_symbols.public_static_readonly_fields.applicable_kinds = field
dotnet_naming_symbols.public_static_readonly_fields.applicable_accessibilities = public, internal
dotnet_naming_symbols.public_static_readonly_fields.required_modifiers = readonly, static
dotnet_naming_symbols.private_static_readonly_fields.applicable_kinds = field
dotnet_naming_symbols.private_static_readonly_fields.applicable_accessibilities = private, protected, protected_internal, private_protected
dotnet_naming_symbols.private_static_readonly_fields.required_modifiers = readonly, static
dotnet_naming_symbols.local_functions.applicable_kinds = local_function
dotnet_naming_symbols.local_functions.applicable_accessibilities = *
dotnet_naming_symbols.local_functions.required_modifiers =
# Naming styles
dotnet_naming_style.pascalcase.required_prefix =
dotnet_naming_style.pascalcase.required_suffix =
dotnet_naming_style.pascalcase.word_separator =
dotnet_naming_style.pascalcase.capitalization = pascal_case
dotnet_naming_style.ipascalcase.required_prefix = I
dotnet_naming_style.ipascalcase.required_suffix =
dotnet_naming_style.ipascalcase.word_separator =
dotnet_naming_style.ipascalcase.capitalization = pascal_case
dotnet_naming_style.tpascalcase.required_prefix = T
dotnet_naming_style.tpascalcase.required_suffix =
dotnet_naming_style.tpascalcase.word_separator =
dotnet_naming_style.tpascalcase.capitalization = pascal_case
dotnet_naming_style._camelcase.required_prefix = _
dotnet_naming_style._camelcase.required_suffix =
dotnet_naming_style._camelcase.word_separator =
dotnet_naming_style._camelcase.capitalization = camel_case
dotnet_naming_style.camelcase.required_prefix =
dotnet_naming_style.camelcase.required_suffix =
dotnet_naming_style.camelcase.word_separator =
dotnet_naming_style.camelcase.capitalization = camel_case
dotnet_naming_style.s_camelcase.required_prefix = s_
dotnet_naming_style.s_camelcase.required_suffix =
dotnet_naming_style.s_camelcase.word_separator =
dotnet_naming_style.s_camelcase.capitalization = camel_case
+23
View File
@@ -0,0 +1,23 @@
name: CI
on:
pull_request:
branches: [main]
jobs:
ci:
name: Build, Format, and Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 10.0.x
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --no-restore
- name: Check formatting
run: dotnet format --verify-no-changes
- name: Run tests
run: dotnet test --no-build --verbosity normal
+56
View File
@@ -0,0 +1,56 @@
name: Release
on:
push:
branches: [main]
jobs:
release:
name: Version, Build, and Release
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Make scripts executable
run: chmod +x scripts/*.sh
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 10.0.x
- name: Determine version
id: version
run: ./scripts/determine-version.sh main
- name: Update version in csproj
if: steps.version.outputs.VERSION
run: ./scripts/update-version.sh "${{ steps.version.outputs.VERSION }}"
- name: Create commit
if: steps.version.outputs.VERSION
run: |
git config user.name "gitea-actions[bot]"
git config user.email "gitea-actions[bot]@users.noreply.gitea.io"
git add -A
git commit -m "Bump version to ${{ steps.version.outputs.VERSION }}" || echo "No changes to commit"
- name: Create tag
if: steps.version.outputs.VERSION
run: |
git tag "v${{ steps.version.outputs.VERSION }}"
- name: Push changes and tags
if: steps.version.outputs.VERSION
run: |
git push origin main
git push origin v${{ steps.version.outputs.VERSION }}
- name: Restore dependencies
if: steps.version.outputs.VERSION
run: dotnet restore
- name: Build
if: steps.version.outputs.VERSION
run: dotnet build --configuration Release --no-restore
- name: Run tests
if: steps.version.outputs.VERSION
run: dotnet test --configuration Release --no-build --verbosity normal
- name: Pack
if: steps.version.outputs.VERSION
run: dotnet pack --configuration Release --no-build --output ./artifacts
- name: Push to NuGet
if: steps.version.outputs.VERSION
run: dotnet nuget push ./artifacts/*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }}
+12
View File
@@ -0,0 +1,12 @@
<Project>
<PropertyGroup>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<LangVersion>latest</LangVersion>
<AnalysisLevel>latest</AnalysisLevel>
<AnalysisMode>All</AnalysisMode>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>
</Project>
+19
View File
@@ -0,0 +1,19 @@
# Copyright (c) 2026 Stevan Freeborn
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+62
View File
@@ -0,0 +1,62 @@
# StevanFreeborn.Options
[![NuGet](https://img.shields.io/nuget/v/StevanFreeborn.Options.svg)](https://www.nuget.org/packages/StevanFreeborn.Options)
[![NuGet](https://img.shields.io/nuget/dt/StevanFreeborn.Options.svg)](https://www.nuget.org/packages/StevanFreeborn.Options)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
A minimalistic, AOT-compatible Option type library for functional programming in .NET.
## Features
- **Functional Programming**: Chain operations with Map, Bind, and Match
- **AOT Compatible**: Works with Native AOT and trimming
- **Nullable Reference Types**: Full support for nullable reference types
- **No External Dependencies**: Lightweight with zero dependencies
- **Pattern Matching Support**: Deconstruction support for modern C# pattern matching
- **Comprehensive XML Documentation**: Full IntelliSense support
## Installation
Install via NuGet:
```bash
dotnet add package StevanFreeborn.Options
```
## Quick Start
```csharp
using StevanFreeborn.Options;
// Create an option with a value
Option<string> some = Option<string>.Some("Hello");
// Create an empty option
Option<string> none = Option<string>.None();
// Implicit conversion from value
Option<string> implicitSome = "World";
// Use functional operations
string result = some
.Map(s => s.ToUpper())
.Match(
onSome: s => $"Value: {s}",
onNone: () => "No value"
);
// Pattern matching
if (some is (true, var value))
{
Console.WriteLine(value);
}
```
## Requirements
- .NET Standard 2.1
- .NET 10.0+
## License
MIT License - see [LICENSE.md](LICENSE.md) for details.
+8
View File
@@ -0,0 +1,8 @@
<Solution>
<Folder Name="/src/">
<Project Path="src/StevanFreeborn.Options/StevanFreeborn.Options.csproj" />
</Folder>
<Folder Name="/tests/">
<Project Path="tests/StevanFreeborn.Options.Tests/StevanFreeborn.Options.Tests.csproj" />
</Folder>
</Solution>
+9
View File
@@ -0,0 +1,9 @@
{
"sdk": {
"version": "10.0.201",
"rollForward": "latestPatch"
},
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
+67
View File
@@ -0,0 +1,67 @@
#!/bin/bash
branch="${1:-main}"
tag=$(git describe --tags --abbrev=0 2>/dev/null)
base="${tag:-$branch}"
commits=$(git log "$base..HEAD" --format="%s")
major=0
minor=0
patch=0
while IFS= read -r message; do
if [[ -n "$message" ]] && [[ "$message" =~ " BREAKING CHANGE|!:" ]]; then
major=1
elif [[ -n "$message" ]] && [[ "$message" =~ feat(\(.*\))?: ]]; then
minor=1
elif [[ -n "$message" ]] && [[ "$message" =~ fix(\(.*\))?: ]]; then
patch=1
fi
done <<< "$commits"
if [[ "$major" -eq 1 ]]; then
minor=0
patch=0
elif [[ "$minor" -eq 1 ]]; then
patch=0
elif [[ "$patch" -eq 0 ]] && [[ -n "$commits" ]]; then
patch=1
fi
currentVersion="0.0.0"
hasExistingTag=false
if [[ -n "$tag" ]]; then
hasExistingTag=true
currentVersion="${tag#v}"
fi
IFS='.' read -r majorCurrent minorCurrent patchCurrent <<< "$currentVersion"
majorNew=$((majorCurrent + major))
if [[ "$major" -eq 1 ]]; then
minorNew=0
else
minorNew=$((minorCurrent + minor))
fi
if [[ "$major" -eq 1 ]] || [[ "$minor" -eq 1 ]]; then
patchNew=0
else
patchNew=$((patchCurrent + patch))
fi
if [[ "$majorNew" -eq "$majorCurrent" ]] && [[ "$minorNew" -eq "$minorCurrent" ]] && [[ "$patchNew" -eq "$patchCurrent" ]]; then
if [[ "$hasExistingTag" == "false" ]]; then
version="0.0.0"
[[ -n "$GITHUB_OUTPUT" ]] && echo "VERSION=$version" >> "$GITHUB_OUTPUT" || echo "VERSION=$version"
echo "First release: publishing version 0.0.0"
else
exit 0
fi
else
version="$majorNew.$minorNew.$patchNew"
[[ -n "$GITHUB_OUTPUT" ]] && echo "VERSION=$version" >> "$GITHUB_OUTPUT" || echo "VERSION=$version"
fi
+19
View File
@@ -0,0 +1,19 @@
#!/bin/bash
version="${1:-}"
csprojPath="${2:-src/StevanFreeborn.Results/StevanFreeborn.Results.csproj}"
if [[ -z "$version" ]]; then
echo "Error: Version is required"
exit 1
fi
content=$(cat "$csprojPath")
if [[ "$content" =~ \<Version\>.*?\</Version\> ]]; then
content=$(echo "$content" | sed "s|<Version>.*</Version>|<Version>$version</Version>|")
elif [[ "$content" =~ \<PropertyGroup\> ]]; then
content=$(echo "$content" | sed "s|<PropertyGroup>|<PropertyGroup>\\n <Version>$version</Version>|")
fi
echo "$content" > "$csprojPath"
+6
View File
@@ -0,0 +1,6 @@
<Project>
<Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))" />
<ItemGroup>
<InternalsVisibleTo Include="$(AssemblyName).Tests" />
</ItemGroup>
</Project>
+13
View File
@@ -0,0 +1,13 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
<PackageVersion Include="Microsoft.SourceLink.Gitea" Version="10.0.201">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageVersion>
</ItemGroup>
</Project>
+279
View File
@@ -0,0 +1,279 @@
namespace StevanFreeborn.Options;
/// <summary>
/// Provides factory methods for creating <see cref="Option{T}"/>.
/// </summary>
#pragma warning disable CA1716 // Identifiers should not match keywords
public static class Option
#pragma warning restore CA1716 // Identifiers should not match keywords
{
/// <summary>
/// Creates an option with the specified value.
/// </summary>
/// <typeparam name="T">The type of the value.</typeparam>
/// <param name="value">The value.</param>
/// <returns>An <see cref="Option{T}"/> with the specified value.</returns>
public static Option<T> Some<T>(T value)
{
#if NET6_0_OR_GREATER
ArgumentNullException.ThrowIfNull(value);
#else
if (value is null)
{
throw new ArgumentNullException(nameof(value));
}
#endif
return new Option<T>(true, value);
}
/// <summary>
/// Creates an empty option.
/// </summary>
/// <typeparam name="T">The type of the value.</typeparam>
/// <returns>An empty <see cref="Option{T}"/>.</returns>
public static Option<T> None<T>() => new(false, default!);
/// <summary>
/// Creates an option from the specified value, returning None if the value is null.
/// </summary>
/// <typeparam name="T">The type of the value.</typeparam>
/// <param name="value">The value.</param>
/// <returns>An <see cref="Option{T}"/> with the value if not null, otherwise None.</returns>
public static Option<T> From<T>(T? value) => value is null ? None<T>() : Some(value);
/// <summary>
/// Converts a value to an <see cref="Option{T}"/>.
/// </summary>
/// <typeparam name="T">The type of the value.</typeparam>
/// <param name="value">The value.</param>
/// <returns>An <see cref="Option{T}"/>.</returns>
public static Option<T> FromT<T>(T? value) => From(value);
}
/// <summary>
/// Represents an optional value that may or may not be present.
/// </summary>
/// <typeparam name="T">The type of the value.</typeparam>
#pragma warning disable CA1716 // Identifiers should not match keywords
public sealed class Option<T>
#pragma warning restore CA1716 // Identifiers should not match keywords
{
private readonly T _value;
/// <summary>
/// Gets a value indicating whether the option has a value.
/// </summary>
public bool IsSome { get; }
/// <summary>
/// Gets a value indicating whether the option is empty.
/// </summary>
public bool IsNone => !IsSome;
/// <summary>
/// Gets the value of the option.
/// </summary>
/// <exception cref="InvalidOperationException">Thrown when accessing Value on a None option.</exception>
public T Value => IsSome
? _value
: throw new InvalidOperationException("Cannot access Value on a None option.");
internal Option(bool isSome, T value)
{
IsSome = isSome;
_value = value;
}
/// <summary>
/// Implicitly converts a value to an <see cref="Option{T}"/>.
/// </summary>
/// <param name="value">The value to convert.</param>
#pragma warning disable CA2225 // Operator overloads have named alternates
public static implicit operator Option<T>(T? value) => Option.From(value);
#pragma warning restore CA2225 // Operator overloads have named alternates
/// <summary>
/// Deconstructs the option into its components.
/// </summary>
/// <param name="isSome">Indicates whether the option has a value.</param>
/// <param name="value">The value of the option.</param>
public void Deconstruct(out bool isSome, out T value)
{
isSome = IsSome;
value = _value;
}
/// <summary>
/// Maps the value to a new type if the option has a value.
/// </summary>
/// <typeparam name="TNew">The new type.</typeparam>
/// <param name="mapper">The function to map the value.</param>
/// <returns>A new <see cref="Option{TNew}"/> with the mapped value if Some, otherwise None.</returns>
/// <exception cref="ArgumentNullException">Thrown when mapper is null.</exception>
public Option<TNew> Map<TNew>(Func<T, TNew> mapper)
{
#if NET6_0_OR_GREATER
ArgumentNullException.ThrowIfNull(mapper);
#else
if (mapper is null)
{
throw new ArgumentNullException(nameof(mapper));
}
#endif
return IsSome ? Option.From(mapper(_value)) : Option.None<TNew>();
}
/// <summary>
/// Binds to a new option if the current option has a value.
/// </summary>
/// <typeparam name="TNew">The new option type.</typeparam>
/// <param name="binder">The function to bind to on Some.</param>
/// <returns>The result of the binder function if Some, otherwise None.</returns>
/// <exception cref="ArgumentNullException">Thrown when binder is null.</exception>
public Option<TNew> Bind<TNew>(Func<T, Option<TNew>> binder)
{
#if NET6_0_OR_GREATER
ArgumentNullException.ThrowIfNull(binder);
#else
if (binder is null)
{
throw new ArgumentNullException(nameof(binder));
}
#endif
return IsSome ? binder(_value) : Option.None<TNew>();
}
/// <summary>
/// Matches the option and returns a value based on whether it has a value.
/// </summary>
/// <typeparam name="TResult">The type of the result.</typeparam>
/// <param name="onSome">The function to execute on Some.</param>
/// <param name="onNone">The function to execute on None.</param>
/// <returns>The result of the appropriate function.</returns>
/// <exception cref="ArgumentNullException">Thrown when onSome or onNone is null.</exception>
public TResult Match<TResult>(Func<T, TResult> onSome, Func<TResult> onNone)
{
#if NET6_0_OR_GREATER
ArgumentNullException.ThrowIfNull(onSome);
ArgumentNullException.ThrowIfNull(onNone);
#else
if (onSome is null)
{
throw new ArgumentNullException(nameof(onSome));
}
if (onNone is null)
{
throw new ArgumentNullException(nameof(onNone));
}
#endif
return IsSome ? onSome(_value) : onNone();
}
/// <summary>
/// Matches the option and executes the appropriate action.
/// </summary>
/// <param name="onSome">The action to execute on Some.</param>
/// <param name="onNone">The action to execute on None.</param>
/// <exception cref="ArgumentNullException">Thrown when onSome or onNone is null.</exception>
public void Match(Action<T> onSome, Action onNone)
{
#if NET6_0_OR_GREATER
ArgumentNullException.ThrowIfNull(onSome);
ArgumentNullException.ThrowIfNull(onNone);
#else
if (onSome is null)
{
throw new ArgumentNullException(nameof(onSome));
}
if (onNone is null)
{
throw new ArgumentNullException(nameof(onNone));
}
#endif
if (IsSome)
{
onSome(_value);
}
else
{
onNone();
}
}
/// <summary>
/// Filters the option based on the specified predicate.
/// </summary>
/// <param name="predicate">The predicate to filter with.</param>
/// <returns>The current option if Some and the predicate is met, otherwise None.</returns>
/// <exception cref="ArgumentNullException">Thrown when predicate is null.</exception>
public Option<T> Where(Func<T, bool> predicate)
{
#if NET6_0_OR_GREATER
ArgumentNullException.ThrowIfNull(predicate);
#else
if (predicate is null)
{
throw new ArgumentNullException(nameof(predicate));
}
#endif
if (IsNone)
{
return this;
}
return predicate(_value) ? this : Option.None<T>();
}
/// <summary>
/// Gets the value of the option if Some, otherwise the specified default value.
/// </summary>
/// <param name="defaultValue">The default value.</param>
/// <returns>The value if Some, otherwise the default value.</returns>
public T GetValueOrDefault(T defaultValue) => IsSome ? _value : defaultValue;
/// <summary>
/// Gets the value of the option if Some, otherwise the result of the specified factory function.
/// </summary>
/// <param name="factory">The factory function to provide the default value.</param>
/// <returns>The value if Some, otherwise the result of the factory function.</returns>
/// <exception cref="ArgumentNullException">Thrown when factory is null.</exception>
public T GetValueOrDefault(Func<T> factory)
{
#if NET6_0_OR_GREATER
ArgumentNullException.ThrowIfNull(factory);
#else
if (factory is null)
{
throw new ArgumentNullException(nameof(factory));
}
#endif
return IsSome ? _value : factory();
}
/// <summary>
/// Returns the current option if Some, otherwise the result of the specified factory function.
/// </summary>
/// <param name="factory">The factory function to provide the fallback option.</param>
/// <returns>The current option if Some, otherwise the result of the factory function.</returns>
/// <exception cref="ArgumentNullException">Thrown when factory is null.</exception>
public Option<T> OrElse(Func<Option<T>> factory)
{
#if NET6_0_OR_GREATER
ArgumentNullException.ThrowIfNull(factory);
#else
if (factory is null)
{
throw new ArgumentNullException(nameof(factory));
}
#endif
return IsSome ? this : factory();
}
}
@@ -0,0 +1,163 @@
namespace StevanFreeborn.Options
{
/// <summary>
/// Provides async extension methods for <see cref="Option{T}"/>.
/// </summary>
public static class OptionAsyncExtensions
{
/// <summary>
/// Maps the value to a new type asynchronously if the option has a value.
/// </summary>
/// <typeparam name="T">The type of the value.</typeparam>
/// <typeparam name="TNew">The new type.</typeparam>
/// <param name="option">The option.</param>
/// <param name="mapper">The async function to map the value.</param>
/// <returns>A task containing a new <see cref="Option{TNew}"/> with the mapped value if Some, otherwise None.</returns>
/// <exception cref="ArgumentNullException">Thrown when option or mapper is null.</exception>
public static async Task<Option<TNew>> MapAsync<T, TNew>(this Option<T> option, Func<T, Task<TNew>> mapper)
{
#if NET6_0_OR_GREATER
ArgumentNullException.ThrowIfNull(option);
ArgumentNullException.ThrowIfNull(mapper);
#else
if (option is null)
{
throw new ArgumentNullException(nameof(option));
}
if (mapper is null)
{
throw new ArgumentNullException(nameof(mapper));
}
#endif
return option.IsSome ? await mapper(option.Value).ConfigureAwait(false) : Option.None<TNew>();
}
/// <summary>
/// Binds to a new async result if the current option has a value.
/// </summary>
/// <typeparam name="T">The type of the value.</typeparam>
/// <typeparam name="TNew">The new result type.</typeparam>
/// <param name="option">The option.</param>
/// <param name="binder">The async function to bind to on Some.</param>
/// <returns>A task containing the result of the binder function if Some, otherwise None.</returns>
/// <exception cref="ArgumentNullException">Thrown when option or binder is null.</exception>
public static async Task<Option<TNew>> BindAsync<T, TNew>(this Option<T> option, Func<T, Task<Option<TNew>>> binder)
{
#if NET6_0_OR_GREATER
ArgumentNullException.ThrowIfNull(option);
ArgumentNullException.ThrowIfNull(binder);
#else
if (option is null)
{
throw new ArgumentNullException(nameof(option));
}
if (binder is null)
{
throw new ArgumentNullException(nameof(binder));
}
#endif
return option.IsSome ? await binder(option.Value).ConfigureAwait(false) : Option.None<TNew>();
}
/// <summary>
/// Matches the option asynchronously and returns a value based on whether it has a value.
/// </summary>
/// <typeparam name="T">The type of the value.</typeparam>
/// <typeparam name="TResult">The type of the result.</typeparam>
/// <param name="option">The option.</param>
/// <param name="onSome">The async function to execute on Some.</param>
/// <param name="onNone">The async function to execute on None.</param>
/// <returns>A task containing the result of the appropriate function.</returns>
/// <exception cref="ArgumentNullException">Thrown when option, onSome, or onNone is null.</exception>
public static async Task<TResult> MatchAsync<T, TResult>(this Option<T> option, Func<T, Task<TResult>> onSome, Func<Task<TResult>> onNone)
{
#if NET6_0_OR_GREATER
ArgumentNullException.ThrowIfNull(option);
ArgumentNullException.ThrowIfNull(onSome);
ArgumentNullException.ThrowIfNull(onNone);
#else
if (option is null)
{
throw new ArgumentNullException(nameof(option));
}
if (onSome is null)
{
throw new ArgumentNullException(nameof(onSome));
}
if (onNone is null)
{
throw new ArgumentNullException(nameof(onNone));
}
#endif
return option.IsSome ? await onSome(option.Value).ConfigureAwait(false) : await onNone().ConfigureAwait(false);
}
/// <summary>
/// Filters the option asynchronously based on the specified predicate.
/// </summary>
/// <typeparam name="T">The type of the value.</typeparam>
/// <param name="option">The option.</param>
/// <param name="predicate">The async predicate to filter with.</param>
/// <returns>A task containing the current option if Some and the predicate is met, otherwise None.</returns>
/// <exception cref="ArgumentNullException">Thrown when option or predicate is null.</exception>
public static async Task<Option<T>> WhereAsync<T>(this Option<T> option, Func<T, Task<bool>> predicate)
{
#if NET6_0_OR_GREATER
ArgumentNullException.ThrowIfNull(option);
ArgumentNullException.ThrowIfNull(predicate);
#else
if (option is null)
{
throw new ArgumentNullException(nameof(option));
}
if (predicate is null)
{
throw new ArgumentNullException(nameof(predicate));
}
#endif
if (option.IsNone)
{
return option;
}
return await predicate(option.Value).ConfigureAwait(false) ? option : Option.None<T>();
}
/// <summary>
/// Returns the current option if Some, otherwise the result of the specified async factory function.
/// </summary>
/// <typeparam name="T">The type of the value.</typeparam>
/// <param name="option">The option.</param>
/// <param name="factory">The async factory function to provide the fallback option.</param>
/// <returns>A task containing the current option if Some, otherwise the result of the factory function.</returns>
/// <exception cref="ArgumentNullException">Thrown when option or factory is null.</exception>
public static async Task<Option<T>> OrElseAsync<T>(this Option<T> option, Func<Task<Option<T>>> factory)
{
#if NET6_0_OR_GREATER
ArgumentNullException.ThrowIfNull(option);
ArgumentNullException.ThrowIfNull(factory);
#else
if (option is null)
{
throw new ArgumentNullException(nameof(option));
}
if (factory is null)
{
throw new ArgumentNullException(nameof(factory));
}
#endif
return option.IsSome ? option : await factory().ConfigureAwait(false);
}
}
}
@@ -0,0 +1,37 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.1;net10.0</TargetFrameworks>
<IsAotCompatible Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">true</IsAotCompatible>
<VerifyReferenceAotCompatibility>true</VerifyReferenceAotCompatibility>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<PropertyGroup>
<PackageId>StevanFreeborn.Options</PackageId>
<Version>0.0.0</Version>
<Authors>StevanFreeborn</Authors>
<Description>A minimalistic, AOT-compatible Option type library for functional programming in .NET.</Description>
<PackageTags>option;maybe;functional;discriminated-union</PackageTags>
<PackageProjectUrl>https://gitea.freeborn.cloud/Stevan/stevanfreeborn.options</PackageProjectUrl>
<RepositoryUrl>https://gitea.freeborn.cloud/Stevan/stevanfreeborn.options</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
<DebugType>embedded</DebugType>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageLicenseFile>LICENSE.md</PackageLicenseFile>
</PropertyGroup>
<PropertyGroup Condition="'$(GITEA_ACTIONS)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
<ItemGroup>
<None Include="..\..\README.md" Pack="true" PackagePath="\" />
<None Include="..\..\LICENSE.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.SourceLink.Gitea">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>
@@ -0,0 +1,23 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v10.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v10.0": {
"StevanFreeborn.Options/0.0.0": {
"runtime": {
"StevanFreeborn.Options.dll": {}
}
}
}
},
"libraries": {
"StevanFreeborn.Options/0.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}
@@ -0,0 +1,205 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>StevanFreeborn.Options</name>
</assembly>
<members>
<member name="T:StevanFreeborn.Options.Option">
<summary>
Provides factory methods for creating <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
</member>
<member name="M:StevanFreeborn.Options.Option.Some``1(``0)">
<summary>
Creates an option with the specified value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="value">The value.</param>
<returns>An <see cref="T:StevanFreeborn.Options.Option`1"/> with the specified value.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option.None``1">
<summary>
Creates an empty option.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<returns>An empty <see cref="T:StevanFreeborn.Options.Option`1"/>.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option.From``1(``0)">
<summary>
Creates an option from the specified value, returning None if the value is null.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="value">The value.</param>
<returns>An <see cref="T:StevanFreeborn.Options.Option`1"/> with the value if not null, otherwise None.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option.FromT``1(``0)">
<summary>
Converts a value to an <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="value">The value.</param>
<returns>An <see cref="T:StevanFreeborn.Options.Option`1"/>.</returns>
</member>
<member name="T:StevanFreeborn.Options.Option`1">
<summary>
Represents an optional value that may or may not be present.
</summary>
<typeparam name="T">The type of the value.</typeparam>
</member>
<member name="P:StevanFreeborn.Options.Option`1.IsSome">
<summary>
Gets a value indicating whether the option has a value.
</summary>
</member>
<member name="P:StevanFreeborn.Options.Option`1.IsNone">
<summary>
Gets a value indicating whether the option is empty.
</summary>
</member>
<member name="P:StevanFreeborn.Options.Option`1.Value">
<summary>
Gets the value of the option.
</summary>
<exception cref="T:System.InvalidOperationException">Thrown when accessing Value on a None option.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.op_Implicit(`0)~StevanFreeborn.Options.Option{`0}">
<summary>
Implicitly converts a value to an <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
<param name="value">The value to convert.</param>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Deconstruct(System.Boolean@,`0@)">
<summary>
Deconstructs the option into its components.
</summary>
<param name="isSome">Indicates whether the option has a value.</param>
<param name="value">The value of the option.</param>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Map``1(System.Func{`0,``0})">
<summary>
Maps the value to a new type if the option has a value.
</summary>
<typeparam name="TNew">The new type.</typeparam>
<param name="mapper">The function to map the value.</param>
<returns>A new <see cref="T:StevanFreeborn.Options.Option`1"/> with the mapped value if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when mapper is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Bind``1(System.Func{`0,StevanFreeborn.Options.Option{``0}})">
<summary>
Binds to a new option if the current option has a value.
</summary>
<typeparam name="TNew">The new option type.</typeparam>
<param name="binder">The function to bind to on Some.</param>
<returns>The result of the binder function if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when binder is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Match``1(System.Func{`0,``0},System.Func{``0})">
<summary>
Matches the option and returns a value based on whether it has a value.
</summary>
<typeparam name="TResult">The type of the result.</typeparam>
<param name="onSome">The function to execute on Some.</param>
<param name="onNone">The function to execute on None.</param>
<returns>The result of the appropriate function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when onSome or onNone is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Match(System.Action{`0},System.Action)">
<summary>
Matches the option and executes the appropriate action.
</summary>
<param name="onSome">The action to execute on Some.</param>
<param name="onNone">The action to execute on None.</param>
<exception cref="T:System.ArgumentNullException">Thrown when onSome or onNone is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Where(System.Func{`0,System.Boolean})">
<summary>
Filters the option based on the specified predicate.
</summary>
<param name="predicate">The predicate to filter with.</param>
<returns>The current option if Some and the predicate is met, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when predicate is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.GetValueOrDefault(`0)">
<summary>
Gets the value of the option if Some, otherwise the specified default value.
</summary>
<param name="defaultValue">The default value.</param>
<returns>The value if Some, otherwise the default value.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option`1.GetValueOrDefault(System.Func{`0})">
<summary>
Gets the value of the option if Some, otherwise the result of the specified factory function.
</summary>
<param name="factory">The factory function to provide the default value.</param>
<returns>The value if Some, otherwise the result of the factory function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when factory is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.OrElse(System.Func{StevanFreeborn.Options.Option{`0}})">
<summary>
Returns the current option if Some, otherwise the result of the specified factory function.
</summary>
<param name="factory">The factory function to provide the fallback option.</param>
<returns>The current option if Some, otherwise the result of the factory function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when factory is null.</exception>
</member>
<member name="T:StevanFreeborn.Options.OptionAsyncExtensions">
<summary>
Provides async extension methods for <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.MapAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{``1}})">
<summary>
Maps the value to a new type asynchronously if the option has a value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<typeparam name="TNew">The new type.</typeparam>
<param name="option">The option.</param>
<param name="mapper">The async function to map the value.</param>
<returns>A task containing a new <see cref="T:StevanFreeborn.Options.Option`1"/> with the mapped value if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or mapper is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.BindAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{StevanFreeborn.Options.Option{``1}}})">
<summary>
Binds to a new async result if the current option has a value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<typeparam name="TNew">The new result type.</typeparam>
<param name="option">The option.</param>
<param name="binder">The async function to bind to on Some.</param>
<returns>A task containing the result of the binder function if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or binder is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.MatchAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{``1}},System.Func{System.Threading.Tasks.Task{``1}})">
<summary>
Matches the option asynchronously and returns a value based on whether it has a value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<typeparam name="TResult">The type of the result.</typeparam>
<param name="option">The option.</param>
<param name="onSome">The async function to execute on Some.</param>
<param name="onNone">The async function to execute on None.</param>
<returns>A task containing the result of the appropriate function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option, onSome, or onNone is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.WhereAsync``1(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{System.Boolean}})">
<summary>
Filters the option asynchronously based on the specified predicate.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="option">The option.</param>
<param name="predicate">The async predicate to filter with.</param>
<returns>A task containing the current option if Some and the predicate is met, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or predicate is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.OrElseAsync``1(StevanFreeborn.Options.Option{``0},System.Func{System.Threading.Tasks.Task{StevanFreeborn.Options.Option{``0}}})">
<summary>
Returns the current option if Some, otherwise the result of the specified async factory function.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="option">The option.</param>
<param name="factory">The async factory function to provide the fallback option.</param>
<returns>A task containing the current option if Some, otherwise the result of the factory function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or factory is null.</exception>
</member>
</members>
</doc>
@@ -0,0 +1,24 @@
{
"runtimeTarget": {
"name": ".NETStandard,Version=v2.1/",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETStandard,Version=v2.1": {},
".NETStandard,Version=v2.1/": {
"StevanFreeborn.Options/0.0.0": {
"runtime": {
"StevanFreeborn.Options.dll": {}
}
}
}
},
"libraries": {
"StevanFreeborn.Options/0.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}
@@ -0,0 +1,205 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>StevanFreeborn.Options</name>
</assembly>
<members>
<member name="T:StevanFreeborn.Options.Option">
<summary>
Provides factory methods for creating <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
</member>
<member name="M:StevanFreeborn.Options.Option.Some``1(``0)">
<summary>
Creates an option with the specified value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="value">The value.</param>
<returns>An <see cref="T:StevanFreeborn.Options.Option`1"/> with the specified value.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option.None``1">
<summary>
Creates an empty option.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<returns>An empty <see cref="T:StevanFreeborn.Options.Option`1"/>.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option.From``1(``0)">
<summary>
Creates an option from the specified value, returning None if the value is null.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="value">The value.</param>
<returns>An <see cref="T:StevanFreeborn.Options.Option`1"/> with the value if not null, otherwise None.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option.FromT``1(``0)">
<summary>
Converts a value to an <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="value">The value.</param>
<returns>An <see cref="T:StevanFreeborn.Options.Option`1"/>.</returns>
</member>
<member name="T:StevanFreeborn.Options.Option`1">
<summary>
Represents an optional value that may or may not be present.
</summary>
<typeparam name="T">The type of the value.</typeparam>
</member>
<member name="P:StevanFreeborn.Options.Option`1.IsSome">
<summary>
Gets a value indicating whether the option has a value.
</summary>
</member>
<member name="P:StevanFreeborn.Options.Option`1.IsNone">
<summary>
Gets a value indicating whether the option is empty.
</summary>
</member>
<member name="P:StevanFreeborn.Options.Option`1.Value">
<summary>
Gets the value of the option.
</summary>
<exception cref="T:System.InvalidOperationException">Thrown when accessing Value on a None option.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.op_Implicit(`0)~StevanFreeborn.Options.Option{`0}">
<summary>
Implicitly converts a value to an <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
<param name="value">The value to convert.</param>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Deconstruct(System.Boolean@,`0@)">
<summary>
Deconstructs the option into its components.
</summary>
<param name="isSome">Indicates whether the option has a value.</param>
<param name="value">The value of the option.</param>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Map``1(System.Func{`0,``0})">
<summary>
Maps the value to a new type if the option has a value.
</summary>
<typeparam name="TNew">The new type.</typeparam>
<param name="mapper">The function to map the value.</param>
<returns>A new <see cref="T:StevanFreeborn.Options.Option`1"/> with the mapped value if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when mapper is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Bind``1(System.Func{`0,StevanFreeborn.Options.Option{``0}})">
<summary>
Binds to a new option if the current option has a value.
</summary>
<typeparam name="TNew">The new option type.</typeparam>
<param name="binder">The function to bind to on Some.</param>
<returns>The result of the binder function if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when binder is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Match``1(System.Func{`0,``0},System.Func{``0})">
<summary>
Matches the option and returns a value based on whether it has a value.
</summary>
<typeparam name="TResult">The type of the result.</typeparam>
<param name="onSome">The function to execute on Some.</param>
<param name="onNone">The function to execute on None.</param>
<returns>The result of the appropriate function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when onSome or onNone is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Match(System.Action{`0},System.Action)">
<summary>
Matches the option and executes the appropriate action.
</summary>
<param name="onSome">The action to execute on Some.</param>
<param name="onNone">The action to execute on None.</param>
<exception cref="T:System.ArgumentNullException">Thrown when onSome or onNone is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Where(System.Func{`0,System.Boolean})">
<summary>
Filters the option based on the specified predicate.
</summary>
<param name="predicate">The predicate to filter with.</param>
<returns>The current option if Some and the predicate is met, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when predicate is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.GetValueOrDefault(`0)">
<summary>
Gets the value of the option if Some, otherwise the specified default value.
</summary>
<param name="defaultValue">The default value.</param>
<returns>The value if Some, otherwise the default value.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option`1.GetValueOrDefault(System.Func{`0})">
<summary>
Gets the value of the option if Some, otherwise the result of the specified factory function.
</summary>
<param name="factory">The factory function to provide the default value.</param>
<returns>The value if Some, otherwise the result of the factory function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when factory is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.OrElse(System.Func{StevanFreeborn.Options.Option{`0}})">
<summary>
Returns the current option if Some, otherwise the result of the specified factory function.
</summary>
<param name="factory">The factory function to provide the fallback option.</param>
<returns>The current option if Some, otherwise the result of the factory function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when factory is null.</exception>
</member>
<member name="T:StevanFreeborn.Options.OptionAsyncExtensions">
<summary>
Provides async extension methods for <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.MapAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{``1}})">
<summary>
Maps the value to a new type asynchronously if the option has a value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<typeparam name="TNew">The new type.</typeparam>
<param name="option">The option.</param>
<param name="mapper">The async function to map the value.</param>
<returns>A task containing a new <see cref="T:StevanFreeborn.Options.Option`1"/> with the mapped value if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or mapper is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.BindAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{StevanFreeborn.Options.Option{``1}}})">
<summary>
Binds to a new async result if the current option has a value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<typeparam name="TNew">The new result type.</typeparam>
<param name="option">The option.</param>
<param name="binder">The async function to bind to on Some.</param>
<returns>A task containing the result of the binder function if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or binder is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.MatchAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{``1}},System.Func{System.Threading.Tasks.Task{``1}})">
<summary>
Matches the option asynchronously and returns a value based on whether it has a value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<typeparam name="TResult">The type of the result.</typeparam>
<param name="option">The option.</param>
<param name="onSome">The async function to execute on Some.</param>
<param name="onNone">The async function to execute on None.</param>
<returns>A task containing the result of the appropriate function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option, onSome, or onNone is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.WhereAsync``1(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{System.Boolean}})">
<summary>
Filters the option asynchronously based on the specified predicate.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="option">The option.</param>
<param name="predicate">The async predicate to filter with.</param>
<returns>A task containing the current option if Some and the predicate is met, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or predicate is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.OrElseAsync``1(StevanFreeborn.Options.Option{``0},System.Func{System.Threading.Tasks.Task{StevanFreeborn.Options.Option{``0}}})">
<summary>
Returns the current option if Some, otherwise the result of the specified async factory function.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="option">The option.</param>
<param name="factory">The async factory function to provide the fallback option.</param>
<returns>A task containing the current option if Some, otherwise the result of the factory function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or factory is null.</exception>
</member>
</members>
</doc>
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v10.0", FrameworkDisplayName = ".NET 10.0")]
@@ -0,0 +1,28 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyMetadata("IsTrimmable", "True")]
[assembly: System.Reflection.AssemblyMetadata("IsAotCompatible", "True")]
[assembly: System.Reflection.AssemblyCompanyAttribute("StevanFreeborn")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyDescriptionAttribute(("A minimalistic, AOT-compatible Option type library for functional programming in " +
".NET."))]
[assembly: System.Reflection.AssemblyFileVersionAttribute("0.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("0.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("StevanFreeborn.Options")]
[assembly: System.Reflection.AssemblyTitleAttribute("StevanFreeborn.Options")]
[assembly: System.Reflection.AssemblyVersionAttribute("0.0.0.0")]
[assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://gitea.freeborn.cloud/Stevan/stevanfreeborn.options")]
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("StevanFreeborn.Options.Tests")]
// Generated by the MSBuild WriteCodeFragment class.
@@ -0,0 +1 @@
c6fc8ac2ac149f1a7cb4f1fe2d65ab001f9b34ee7a60f175f55b4cca8fa05136
@@ -0,0 +1,23 @@
is_global = true
build_property.EnableAotAnalyzer = true
build_property.EnableSingleFileAnalyzer = true
build_property.EnableTrimAnalyzer = true
build_property.IncludeAllContentForSelfExtract =
build_property.VerifyReferenceTrimCompatibility =
build_property.VerifyReferenceAotCompatibility = true
build_property.TargetFramework = net10.0
build_property.TargetFrameworkIdentifier = .NETCoreApp
build_property.TargetFrameworkVersion = v10.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = StevanFreeborn.Options
build_property.ProjectDir = C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 10.0
build_property.EnableCodeStyleSeverity =
@@ -0,0 +1,8 @@
// <auto-generated/>
global using System;
global using System.Collections.Generic;
global using System.IO;
global using System.Linq;
global using System.Net.Http;
global using System.Threading;
global using System.Threading.Tasks;
@@ -0,0 +1 @@
ebdf8080e5385d95be1bfaaed13f788a1f16d93c26b797822d289e9bba47778d
@@ -0,0 +1,13 @@
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\obj\Debug\net10.0\StevanFreeborn.Options.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\obj\Debug\net10.0\StevanFreeborn.Options.AssemblyInfoInputs.cache
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\obj\Debug\net10.0\StevanFreeborn.Options.AssemblyInfo.cs
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\obj\Debug\net10.0\StevanFreeborn.Options.csproj.CoreCompileInputs.cache
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\obj\Debug\net10.0\StevanFreeborn.Options.xml
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\bin\Debug\net10.0\StevanFreeborn.Options.deps.json
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\bin\Debug\net10.0\StevanFreeborn.Options.dll
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\bin\Debug\net10.0\StevanFreeborn.Options.pdb
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\bin\Debug\net10.0\StevanFreeborn.Options.xml
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\obj\Debug\net10.0\StevanFreeborn.Options.dll
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\obj\Debug\net10.0\refint\StevanFreeborn.Options.dll
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\obj\Debug\net10.0\StevanFreeborn.Options.pdb
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\obj\Debug\net10.0\ref\StevanFreeborn.Options.dll
@@ -0,0 +1,205 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>StevanFreeborn.Options</name>
</assembly>
<members>
<member name="T:StevanFreeborn.Options.Option">
<summary>
Provides factory methods for creating <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
</member>
<member name="M:StevanFreeborn.Options.Option.Some``1(``0)">
<summary>
Creates an option with the specified value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="value">The value.</param>
<returns>An <see cref="T:StevanFreeborn.Options.Option`1"/> with the specified value.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option.None``1">
<summary>
Creates an empty option.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<returns>An empty <see cref="T:StevanFreeborn.Options.Option`1"/>.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option.From``1(``0)">
<summary>
Creates an option from the specified value, returning None if the value is null.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="value">The value.</param>
<returns>An <see cref="T:StevanFreeborn.Options.Option`1"/> with the value if not null, otherwise None.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option.FromT``1(``0)">
<summary>
Converts a value to an <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="value">The value.</param>
<returns>An <see cref="T:StevanFreeborn.Options.Option`1"/>.</returns>
</member>
<member name="T:StevanFreeborn.Options.Option`1">
<summary>
Represents an optional value that may or may not be present.
</summary>
<typeparam name="T">The type of the value.</typeparam>
</member>
<member name="P:StevanFreeborn.Options.Option`1.IsSome">
<summary>
Gets a value indicating whether the option has a value.
</summary>
</member>
<member name="P:StevanFreeborn.Options.Option`1.IsNone">
<summary>
Gets a value indicating whether the option is empty.
</summary>
</member>
<member name="P:StevanFreeborn.Options.Option`1.Value">
<summary>
Gets the value of the option.
</summary>
<exception cref="T:System.InvalidOperationException">Thrown when accessing Value on a None option.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.op_Implicit(`0)~StevanFreeborn.Options.Option{`0}">
<summary>
Implicitly converts a value to an <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
<param name="value">The value to convert.</param>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Deconstruct(System.Boolean@,`0@)">
<summary>
Deconstructs the option into its components.
</summary>
<param name="isSome">Indicates whether the option has a value.</param>
<param name="value">The value of the option.</param>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Map``1(System.Func{`0,``0})">
<summary>
Maps the value to a new type if the option has a value.
</summary>
<typeparam name="TNew">The new type.</typeparam>
<param name="mapper">The function to map the value.</param>
<returns>A new <see cref="T:StevanFreeborn.Options.Option`1"/> with the mapped value if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when mapper is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Bind``1(System.Func{`0,StevanFreeborn.Options.Option{``0}})">
<summary>
Binds to a new option if the current option has a value.
</summary>
<typeparam name="TNew">The new option type.</typeparam>
<param name="binder">The function to bind to on Some.</param>
<returns>The result of the binder function if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when binder is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Match``1(System.Func{`0,``0},System.Func{``0})">
<summary>
Matches the option and returns a value based on whether it has a value.
</summary>
<typeparam name="TResult">The type of the result.</typeparam>
<param name="onSome">The function to execute on Some.</param>
<param name="onNone">The function to execute on None.</param>
<returns>The result of the appropriate function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when onSome or onNone is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Match(System.Action{`0},System.Action)">
<summary>
Matches the option and executes the appropriate action.
</summary>
<param name="onSome">The action to execute on Some.</param>
<param name="onNone">The action to execute on None.</param>
<exception cref="T:System.ArgumentNullException">Thrown when onSome or onNone is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Where(System.Func{`0,System.Boolean})">
<summary>
Filters the option based on the specified predicate.
</summary>
<param name="predicate">The predicate to filter with.</param>
<returns>The current option if Some and the predicate is met, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when predicate is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.GetValueOrDefault(`0)">
<summary>
Gets the value of the option if Some, otherwise the specified default value.
</summary>
<param name="defaultValue">The default value.</param>
<returns>The value if Some, otherwise the default value.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option`1.GetValueOrDefault(System.Func{`0})">
<summary>
Gets the value of the option if Some, otherwise the result of the specified factory function.
</summary>
<param name="factory">The factory function to provide the default value.</param>
<returns>The value if Some, otherwise the result of the factory function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when factory is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.OrElse(System.Func{StevanFreeborn.Options.Option{`0}})">
<summary>
Returns the current option if Some, otherwise the result of the specified factory function.
</summary>
<param name="factory">The factory function to provide the fallback option.</param>
<returns>The current option if Some, otherwise the result of the factory function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when factory is null.</exception>
</member>
<member name="T:StevanFreeborn.Options.OptionAsyncExtensions">
<summary>
Provides async extension methods for <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.MapAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{``1}})">
<summary>
Maps the value to a new type asynchronously if the option has a value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<typeparam name="TNew">The new type.</typeparam>
<param name="option">The option.</param>
<param name="mapper">The async function to map the value.</param>
<returns>A task containing a new <see cref="T:StevanFreeborn.Options.Option`1"/> with the mapped value if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or mapper is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.BindAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{StevanFreeborn.Options.Option{``1}}})">
<summary>
Binds to a new async result if the current option has a value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<typeparam name="TNew">The new result type.</typeparam>
<param name="option">The option.</param>
<param name="binder">The async function to bind to on Some.</param>
<returns>A task containing the result of the binder function if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or binder is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.MatchAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{``1}},System.Func{System.Threading.Tasks.Task{``1}})">
<summary>
Matches the option asynchronously and returns a value based on whether it has a value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<typeparam name="TResult">The type of the result.</typeparam>
<param name="option">The option.</param>
<param name="onSome">The async function to execute on Some.</param>
<param name="onNone">The async function to execute on None.</param>
<returns>A task containing the result of the appropriate function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option, onSome, or onNone is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.WhereAsync``1(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{System.Boolean}})">
<summary>
Filters the option asynchronously based on the specified predicate.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="option">The option.</param>
<param name="predicate">The async predicate to filter with.</param>
<returns>A task containing the current option if Some and the predicate is met, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or predicate is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.OrElseAsync``1(StevanFreeborn.Options.Option{``0},System.Func{System.Threading.Tasks.Task{StevanFreeborn.Options.Option{``0}}})">
<summary>
Returns the current option if Some, otherwise the result of the specified async factory function.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="option">The option.</param>
<param name="factory">The async factory function to provide the fallback option.</param>
<returns>A task containing the current option if Some, otherwise the result of the factory function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or factory is null.</exception>
</member>
</members>
</doc>
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
@@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("StevanFreeborn")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyDescriptionAttribute(("A minimalistic, AOT-compatible Option type library for functional programming in " +
".NET."))]
[assembly: System.Reflection.AssemblyFileVersionAttribute("0.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("0.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("StevanFreeborn.Options")]
[assembly: System.Reflection.AssemblyTitleAttribute("StevanFreeborn.Options")]
[assembly: System.Reflection.AssemblyVersionAttribute("0.0.0.0")]
[assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://gitea.freeborn.cloud/Stevan/stevanfreeborn.options")]
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("StevanFreeborn.Options.Tests")]
// Generated by the MSBuild WriteCodeFragment class.
@@ -0,0 +1 @@
227845e6f5a5a5a2185672ef274e4035ca9355bc7fb2552e1d3fe1a888bd2d50
@@ -0,0 +1,18 @@
is_global = true
build_property.TargetFramework = netstandard2.1
build_property.TargetFrameworkIdentifier = .NETStandard
build_property.TargetFrameworkVersion = v2.1
build_property.TargetPlatformMinVersion = 7.0
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = StevanFreeborn.Options
build_property.ProjectDir = C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.CsWinRTUseWindowsUIXamlProjections = false
build_property.EffectiveAnalysisLevelStyle = 10.0
build_property.EnableCodeStyleSeverity =
@@ -0,0 +1,8 @@
// <auto-generated/>
global using System;
global using System.Collections.Generic;
global using System.IO;
global using System.Linq;
global using System.Net.Http;
global using System.Threading;
global using System.Threading.Tasks;
@@ -0,0 +1 @@
62ac793ace9ab30407364550ba8e3580470e39b4228eda9825ad061a3836bdc9
@@ -0,0 +1,11 @@
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\obj\Debug\netstandard2.1\StevanFreeborn.Options.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\obj\Debug\netstandard2.1\StevanFreeborn.Options.AssemblyInfoInputs.cache
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\obj\Debug\netstandard2.1\StevanFreeborn.Options.AssemblyInfo.cs
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\obj\Debug\netstandard2.1\StevanFreeborn.Options.csproj.CoreCompileInputs.cache
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\obj\Debug\netstandard2.1\StevanFreeborn.Options.xml
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\bin\Debug\netstandard2.1\StevanFreeborn.Options.deps.json
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\bin\Debug\netstandard2.1\StevanFreeborn.Options.dll
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\bin\Debug\netstandard2.1\StevanFreeborn.Options.pdb
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\bin\Debug\netstandard2.1\StevanFreeborn.Options.xml
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\obj\Debug\netstandard2.1\StevanFreeborn.Options.dll
C:\Users\sfree\Repositories\stevanfreeborn.options\src\StevanFreeborn.Options\obj\Debug\netstandard2.1\StevanFreeborn.Options.pdb
@@ -0,0 +1,205 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>StevanFreeborn.Options</name>
</assembly>
<members>
<member name="T:StevanFreeborn.Options.Option">
<summary>
Provides factory methods for creating <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
</member>
<member name="M:StevanFreeborn.Options.Option.Some``1(``0)">
<summary>
Creates an option with the specified value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="value">The value.</param>
<returns>An <see cref="T:StevanFreeborn.Options.Option`1"/> with the specified value.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option.None``1">
<summary>
Creates an empty option.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<returns>An empty <see cref="T:StevanFreeborn.Options.Option`1"/>.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option.From``1(``0)">
<summary>
Creates an option from the specified value, returning None if the value is null.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="value">The value.</param>
<returns>An <see cref="T:StevanFreeborn.Options.Option`1"/> with the value if not null, otherwise None.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option.FromT``1(``0)">
<summary>
Converts a value to an <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="value">The value.</param>
<returns>An <see cref="T:StevanFreeborn.Options.Option`1"/>.</returns>
</member>
<member name="T:StevanFreeborn.Options.Option`1">
<summary>
Represents an optional value that may or may not be present.
</summary>
<typeparam name="T">The type of the value.</typeparam>
</member>
<member name="P:StevanFreeborn.Options.Option`1.IsSome">
<summary>
Gets a value indicating whether the option has a value.
</summary>
</member>
<member name="P:StevanFreeborn.Options.Option`1.IsNone">
<summary>
Gets a value indicating whether the option is empty.
</summary>
</member>
<member name="P:StevanFreeborn.Options.Option`1.Value">
<summary>
Gets the value of the option.
</summary>
<exception cref="T:System.InvalidOperationException">Thrown when accessing Value on a None option.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.op_Implicit(`0)~StevanFreeborn.Options.Option{`0}">
<summary>
Implicitly converts a value to an <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
<param name="value">The value to convert.</param>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Deconstruct(System.Boolean@,`0@)">
<summary>
Deconstructs the option into its components.
</summary>
<param name="isSome">Indicates whether the option has a value.</param>
<param name="value">The value of the option.</param>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Map``1(System.Func{`0,``0})">
<summary>
Maps the value to a new type if the option has a value.
</summary>
<typeparam name="TNew">The new type.</typeparam>
<param name="mapper">The function to map the value.</param>
<returns>A new <see cref="T:StevanFreeborn.Options.Option`1"/> with the mapped value if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when mapper is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Bind``1(System.Func{`0,StevanFreeborn.Options.Option{``0}})">
<summary>
Binds to a new option if the current option has a value.
</summary>
<typeparam name="TNew">The new option type.</typeparam>
<param name="binder">The function to bind to on Some.</param>
<returns>The result of the binder function if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when binder is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Match``1(System.Func{`0,``0},System.Func{``0})">
<summary>
Matches the option and returns a value based on whether it has a value.
</summary>
<typeparam name="TResult">The type of the result.</typeparam>
<param name="onSome">The function to execute on Some.</param>
<param name="onNone">The function to execute on None.</param>
<returns>The result of the appropriate function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when onSome or onNone is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Match(System.Action{`0},System.Action)">
<summary>
Matches the option and executes the appropriate action.
</summary>
<param name="onSome">The action to execute on Some.</param>
<param name="onNone">The action to execute on None.</param>
<exception cref="T:System.ArgumentNullException">Thrown when onSome or onNone is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Where(System.Func{`0,System.Boolean})">
<summary>
Filters the option based on the specified predicate.
</summary>
<param name="predicate">The predicate to filter with.</param>
<returns>The current option if Some and the predicate is met, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when predicate is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.GetValueOrDefault(`0)">
<summary>
Gets the value of the option if Some, otherwise the specified default value.
</summary>
<param name="defaultValue">The default value.</param>
<returns>The value if Some, otherwise the default value.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option`1.GetValueOrDefault(System.Func{`0})">
<summary>
Gets the value of the option if Some, otherwise the result of the specified factory function.
</summary>
<param name="factory">The factory function to provide the default value.</param>
<returns>The value if Some, otherwise the result of the factory function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when factory is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.OrElse(System.Func{StevanFreeborn.Options.Option{`0}})">
<summary>
Returns the current option if Some, otherwise the result of the specified factory function.
</summary>
<param name="factory">The factory function to provide the fallback option.</param>
<returns>The current option if Some, otherwise the result of the factory function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when factory is null.</exception>
</member>
<member name="T:StevanFreeborn.Options.OptionAsyncExtensions">
<summary>
Provides async extension methods for <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.MapAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{``1}})">
<summary>
Maps the value to a new type asynchronously if the option has a value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<typeparam name="TNew">The new type.</typeparam>
<param name="option">The option.</param>
<param name="mapper">The async function to map the value.</param>
<returns>A task containing a new <see cref="T:StevanFreeborn.Options.Option`1"/> with the mapped value if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or mapper is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.BindAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{StevanFreeborn.Options.Option{``1}}})">
<summary>
Binds to a new async result if the current option has a value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<typeparam name="TNew">The new result type.</typeparam>
<param name="option">The option.</param>
<param name="binder">The async function to bind to on Some.</param>
<returns>A task containing the result of the binder function if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or binder is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.MatchAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{``1}},System.Func{System.Threading.Tasks.Task{``1}})">
<summary>
Matches the option asynchronously and returns a value based on whether it has a value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<typeparam name="TResult">The type of the result.</typeparam>
<param name="option">The option.</param>
<param name="onSome">The async function to execute on Some.</param>
<param name="onNone">The async function to execute on None.</param>
<returns>A task containing the result of the appropriate function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option, onSome, or onNone is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.WhereAsync``1(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{System.Boolean}})">
<summary>
Filters the option asynchronously based on the specified predicate.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="option">The option.</param>
<param name="predicate">The async predicate to filter with.</param>
<returns>A task containing the current option if Some and the predicate is met, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or predicate is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.OrElseAsync``1(StevanFreeborn.Options.Option{``0},System.Func{System.Threading.Tasks.Task{StevanFreeborn.Options.Option{``0}}})">
<summary>
Returns the current option if Some, otherwise the result of the specified async factory function.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="option">The option.</param>
<param name="factory">The async factory function to provide the fallback option.</param>
<returns>A task containing the current option if Some, otherwise the result of the factory function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or factory is null.</exception>
</member>
</members>
</doc>
@@ -0,0 +1,511 @@
{
"format": 1,
"restore": {
"C:\\Users\\sfree\\Repositories\\stevanfreeborn.options\\src\\StevanFreeborn.Options\\StevanFreeborn.Options.csproj": {}
},
"projects": {
"C:\\Users\\sfree\\Repositories\\stevanfreeborn.options\\src\\StevanFreeborn.Options\\StevanFreeborn.Options.csproj": {
"version": "0.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\sfree\\Repositories\\stevanfreeborn.options\\src\\StevanFreeborn.Options\\StevanFreeborn.Options.csproj",
"projectName": "StevanFreeborn.Options",
"projectPath": "C:\\Users\\sfree\\Repositories\\stevanfreeborn.options\\src\\StevanFreeborn.Options\\StevanFreeborn.Options.csproj",
"packagesPath": "C:\\Users\\sfree\\.nuget\\packages\\",
"outputPath": "C:\\Users\\sfree\\Repositories\\stevanfreeborn.options\\src\\StevanFreeborn.Options\\obj\\",
"projectStyle": "PackageReference",
"crossTargeting": true,
"centralPackageVersionsManagementEnabled": true,
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\sfree\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net10.0",
"netstandard2.1"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net10.0": {
"targetAlias": "net10.0",
"projectReferences": {}
},
"netstandard2.1": {
"targetAlias": "netstandard2.1",
"projectReferences": {}
}
},
"warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "all"
},
"SdkAnalysisLevel": "10.0.200"
},
"frameworks": {
"net10.0": {
"targetAlias": "net10.0",
"dependencies": {
"Microsoft.NET.ILLink.Tasks": {
"suppressParent": "All",
"target": "Package",
"version": "[10.0.5, )",
"autoReferenced": true
},
"Microsoft.SourceLink.Gitea": {
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
"suppressParent": "All",
"target": "Package",
"version": "[10.0.201, )",
"versionCentrallyManaged": true
}
},
"centralPackageVersions": {
"Microsoft.SourceLink.Gitea": "10.0.201"
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.201/PortableRuntimeIdentifierGraph.json",
"packagesToPrune": {
"Microsoft.CSharp": "(,4.7.32767]",
"Microsoft.VisualBasic": "(,10.4.32767]",
"Microsoft.Win32.Primitives": "(,4.3.32767]",
"Microsoft.Win32.Registry": "(,5.0.32767]",
"runtime.any.System.Collections": "(,4.3.32767]",
"runtime.any.System.Diagnostics.Tools": "(,4.3.32767]",
"runtime.any.System.Diagnostics.Tracing": "(,4.3.32767]",
"runtime.any.System.Globalization": "(,4.3.32767]",
"runtime.any.System.Globalization.Calendars": "(,4.3.32767]",
"runtime.any.System.IO": "(,4.3.32767]",
"runtime.any.System.Reflection": "(,4.3.32767]",
"runtime.any.System.Reflection.Extensions": "(,4.3.32767]",
"runtime.any.System.Reflection.Primitives": "(,4.3.32767]",
"runtime.any.System.Resources.ResourceManager": "(,4.3.32767]",
"runtime.any.System.Runtime": "(,4.3.32767]",
"runtime.any.System.Runtime.Handles": "(,4.3.32767]",
"runtime.any.System.Runtime.InteropServices": "(,4.3.32767]",
"runtime.any.System.Text.Encoding": "(,4.3.32767]",
"runtime.any.System.Text.Encoding.Extensions": "(,4.3.32767]",
"runtime.any.System.Threading.Tasks": "(,4.3.32767]",
"runtime.any.System.Threading.Timer": "(,4.3.32767]",
"runtime.aot.System.Collections": "(,4.3.32767]",
"runtime.aot.System.Diagnostics.Tools": "(,4.3.32767]",
"runtime.aot.System.Diagnostics.Tracing": "(,4.3.32767]",
"runtime.aot.System.Globalization": "(,4.3.32767]",
"runtime.aot.System.Globalization.Calendars": "(,4.3.32767]",
"runtime.aot.System.IO": "(,4.3.32767]",
"runtime.aot.System.Reflection": "(,4.3.32767]",
"runtime.aot.System.Reflection.Extensions": "(,4.3.32767]",
"runtime.aot.System.Reflection.Primitives": "(,4.3.32767]",
"runtime.aot.System.Resources.ResourceManager": "(,4.3.32767]",
"runtime.aot.System.Runtime": "(,4.3.32767]",
"runtime.aot.System.Runtime.Handles": "(,4.3.32767]",
"runtime.aot.System.Runtime.InteropServices": "(,4.3.32767]",
"runtime.aot.System.Text.Encoding": "(,4.3.32767]",
"runtime.aot.System.Text.Encoding.Extensions": "(,4.3.32767]",
"runtime.aot.System.Threading.Tasks": "(,4.3.32767]",
"runtime.aot.System.Threading.Timer": "(,4.3.32767]",
"runtime.debian.8-x64.runtime.native.System": "(,4.3.32767]",
"runtime.debian.8-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.debian.8-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.debian.8-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.debian.9-x64.runtime.native.System": "(,4.3.32767]",
"runtime.debian.9-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.debian.9-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.debian.9-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.fedora.23-x64.runtime.native.System": "(,4.3.32767]",
"runtime.fedora.23-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.fedora.23-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.fedora.23-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.fedora.24-x64.runtime.native.System": "(,4.3.32767]",
"runtime.fedora.24-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.fedora.24-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.fedora.24-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.fedora.27-x64.runtime.native.System": "(,4.3.32767]",
"runtime.fedora.27-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.fedora.27-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.fedora.27-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.fedora.28-x64.runtime.native.System": "(,4.3.32767]",
"runtime.fedora.28-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.fedora.28-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.fedora.28-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.opensuse.13.2-x64.runtime.native.System": "(,4.3.32767]",
"runtime.opensuse.13.2-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.opensuse.13.2-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.opensuse.13.2-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.opensuse.42.1-x64.runtime.native.System": "(,4.3.32767]",
"runtime.opensuse.42.1-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.opensuse.42.1-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.opensuse.42.1-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.opensuse.42.3-x64.runtime.native.System": "(,4.3.32767]",
"runtime.opensuse.42.3-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.opensuse.42.3-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.opensuse.42.3-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.osx.10.10-x64.runtime.native.System": "(,4.3.32767]",
"runtime.osx.10.10-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.osx.10.10-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.osx.10.10-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "(,4.3.32767]",
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.rhel.7-x64.runtime.native.System": "(,4.3.32767]",
"runtime.rhel.7-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.rhel.7-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.rhel.7-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.ubuntu.14.04-x64.runtime.native.System": "(,4.3.32767]",
"runtime.ubuntu.14.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.ubuntu.14.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.ubuntu.14.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.ubuntu.16.04-x64.runtime.native.System": "(,4.3.32767]",
"runtime.ubuntu.16.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.ubuntu.16.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.ubuntu.16.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.ubuntu.16.10-x64.runtime.native.System": "(,4.3.32767]",
"runtime.ubuntu.16.10-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.ubuntu.16.10-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.ubuntu.16.10-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.ubuntu.18.04-x64.runtime.native.System": "(,4.3.32767]",
"runtime.ubuntu.18.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.ubuntu.18.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.ubuntu.18.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.unix.Microsoft.Win32.Primitives": "(,4.3.32767]",
"runtime.unix.System.Console": "(,4.3.32767]",
"runtime.unix.System.Diagnostics.Debug": "(,4.3.32767]",
"runtime.unix.System.IO.FileSystem": "(,4.3.32767]",
"runtime.unix.System.Net.Primitives": "(,4.3.32767]",
"runtime.unix.System.Net.Sockets": "(,4.3.32767]",
"runtime.unix.System.Private.Uri": "(,4.3.32767]",
"runtime.unix.System.Runtime.Extensions": "(,4.3.32767]",
"runtime.win.Microsoft.Win32.Primitives": "(,4.3.32767]",
"runtime.win.System.Console": "(,4.3.32767]",
"runtime.win.System.Diagnostics.Debug": "(,4.3.32767]",
"runtime.win.System.IO.FileSystem": "(,4.3.32767]",
"runtime.win.System.Net.Primitives": "(,4.3.32767]",
"runtime.win.System.Net.Sockets": "(,4.3.32767]",
"runtime.win.System.Runtime.Extensions": "(,4.3.32767]",
"runtime.win10-arm-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
"runtime.win10-arm64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.win10-x64-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
"runtime.win10-x86-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
"runtime.win7-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.win7-x86.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.win7.System.Private.Uri": "(,4.3.32767]",
"runtime.win8-arm.runtime.native.System.IO.Compression": "(,4.3.32767]",
"System.AppContext": "(,4.3.32767]",
"System.Buffers": "(,5.0.32767]",
"System.Collections": "(,4.3.32767]",
"System.Collections.Concurrent": "(,4.3.32767]",
"System.Collections.Immutable": "(,10.0.32767]",
"System.Collections.NonGeneric": "(,4.3.32767]",
"System.Collections.Specialized": "(,4.3.32767]",
"System.ComponentModel": "(,4.3.32767]",
"System.ComponentModel.Annotations": "(,4.3.32767]",
"System.ComponentModel.EventBasedAsync": "(,4.3.32767]",
"System.ComponentModel.Primitives": "(,4.3.32767]",
"System.ComponentModel.TypeConverter": "(,4.3.32767]",
"System.Console": "(,4.3.32767]",
"System.Data.Common": "(,4.3.32767]",
"System.Data.DataSetExtensions": "(,4.4.32767]",
"System.Diagnostics.Contracts": "(,4.3.32767]",
"System.Diagnostics.Debug": "(,4.3.32767]",
"System.Diagnostics.DiagnosticSource": "(,10.0.32767]",
"System.Diagnostics.FileVersionInfo": "(,4.3.32767]",
"System.Diagnostics.Process": "(,4.3.32767]",
"System.Diagnostics.StackTrace": "(,4.3.32767]",
"System.Diagnostics.TextWriterTraceListener": "(,4.3.32767]",
"System.Diagnostics.Tools": "(,4.3.32767]",
"System.Diagnostics.TraceSource": "(,4.3.32767]",
"System.Diagnostics.Tracing": "(,4.3.32767]",
"System.Drawing.Primitives": "(,4.3.32767]",
"System.Dynamic.Runtime": "(,4.3.32767]",
"System.Formats.Asn1": "(,10.0.32767]",
"System.Formats.Tar": "(,10.0.32767]",
"System.Globalization": "(,4.3.32767]",
"System.Globalization.Calendars": "(,4.3.32767]",
"System.Globalization.Extensions": "(,4.3.32767]",
"System.IO": "(,4.3.32767]",
"System.IO.Compression": "(,4.3.32767]",
"System.IO.Compression.ZipFile": "(,4.3.32767]",
"System.IO.FileSystem": "(,4.3.32767]",
"System.IO.FileSystem.AccessControl": "(,4.4.32767]",
"System.IO.FileSystem.DriveInfo": "(,4.3.32767]",
"System.IO.FileSystem.Primitives": "(,4.3.32767]",
"System.IO.FileSystem.Watcher": "(,4.3.32767]",
"System.IO.IsolatedStorage": "(,4.3.32767]",
"System.IO.MemoryMappedFiles": "(,4.3.32767]",
"System.IO.Pipelines": "(,10.0.32767]",
"System.IO.Pipes": "(,4.3.32767]",
"System.IO.Pipes.AccessControl": "(,5.0.32767]",
"System.IO.UnmanagedMemoryStream": "(,4.3.32767]",
"System.Linq": "(,4.3.32767]",
"System.Linq.AsyncEnumerable": "(,10.0.32767]",
"System.Linq.Expressions": "(,4.3.32767]",
"System.Linq.Parallel": "(,4.3.32767]",
"System.Linq.Queryable": "(,4.3.32767]",
"System.Memory": "(,5.0.32767]",
"System.Net.Http": "(,4.3.32767]",
"System.Net.Http.Json": "(,10.0.32767]",
"System.Net.NameResolution": "(,4.3.32767]",
"System.Net.NetworkInformation": "(,4.3.32767]",
"System.Net.Ping": "(,4.3.32767]",
"System.Net.Primitives": "(,4.3.32767]",
"System.Net.Requests": "(,4.3.32767]",
"System.Net.Security": "(,4.3.32767]",
"System.Net.ServerSentEvents": "(,10.0.32767]",
"System.Net.Sockets": "(,4.3.32767]",
"System.Net.WebHeaderCollection": "(,4.3.32767]",
"System.Net.WebSockets": "(,4.3.32767]",
"System.Net.WebSockets.Client": "(,4.3.32767]",
"System.Numerics.Vectors": "(,5.0.32767]",
"System.ObjectModel": "(,4.3.32767]",
"System.Private.DataContractSerialization": "(,4.3.32767]",
"System.Private.Uri": "(,4.3.32767]",
"System.Reflection": "(,4.3.32767]",
"System.Reflection.DispatchProxy": "(,6.0.32767]",
"System.Reflection.Emit": "(,4.7.32767]",
"System.Reflection.Emit.ILGeneration": "(,4.7.32767]",
"System.Reflection.Emit.Lightweight": "(,4.7.32767]",
"System.Reflection.Extensions": "(,4.3.32767]",
"System.Reflection.Metadata": "(,10.0.32767]",
"System.Reflection.Primitives": "(,4.3.32767]",
"System.Reflection.TypeExtensions": "(,4.3.32767]",
"System.Resources.Reader": "(,4.3.32767]",
"System.Resources.ResourceManager": "(,4.3.32767]",
"System.Resources.Writer": "(,4.3.32767]",
"System.Runtime": "(,4.3.32767]",
"System.Runtime.CompilerServices.Unsafe": "(,7.0.32767]",
"System.Runtime.CompilerServices.VisualC": "(,4.3.32767]",
"System.Runtime.Extensions": "(,4.3.32767]",
"System.Runtime.Handles": "(,4.3.32767]",
"System.Runtime.InteropServices": "(,4.3.32767]",
"System.Runtime.InteropServices.RuntimeInformation": "(,4.3.32767]",
"System.Runtime.Loader": "(,4.3.32767]",
"System.Runtime.Numerics": "(,4.3.32767]",
"System.Runtime.Serialization.Formatters": "(,4.3.32767]",
"System.Runtime.Serialization.Json": "(,4.3.32767]",
"System.Runtime.Serialization.Primitives": "(,4.3.32767]",
"System.Runtime.Serialization.Xml": "(,4.3.32767]",
"System.Security.AccessControl": "(,6.0.32767]",
"System.Security.Claims": "(,4.3.32767]",
"System.Security.Cryptography.Algorithms": "(,4.3.32767]",
"System.Security.Cryptography.Cng": "(,5.0.32767]",
"System.Security.Cryptography.Csp": "(,4.3.32767]",
"System.Security.Cryptography.Encoding": "(,4.3.32767]",
"System.Security.Cryptography.OpenSsl": "(,5.0.32767]",
"System.Security.Cryptography.Primitives": "(,4.3.32767]",
"System.Security.Cryptography.X509Certificates": "(,4.3.32767]",
"System.Security.Principal": "(,4.3.32767]",
"System.Security.Principal.Windows": "(,5.0.32767]",
"System.Security.SecureString": "(,4.3.32767]",
"System.Text.Encoding": "(,4.3.32767]",
"System.Text.Encoding.CodePages": "(,10.0.32767]",
"System.Text.Encoding.Extensions": "(,4.3.32767]",
"System.Text.Encodings.Web": "(,10.0.32767]",
"System.Text.Json": "(,10.0.32767]",
"System.Text.RegularExpressions": "(,4.3.32767]",
"System.Threading": "(,4.3.32767]",
"System.Threading.AccessControl": "(,10.0.32767]",
"System.Threading.Channels": "(,10.0.32767]",
"System.Threading.Overlapped": "(,4.3.32767]",
"System.Threading.Tasks": "(,4.3.32767]",
"System.Threading.Tasks.Dataflow": "(,10.0.32767]",
"System.Threading.Tasks.Extensions": "(,5.0.32767]",
"System.Threading.Tasks.Parallel": "(,4.3.32767]",
"System.Threading.Thread": "(,4.3.32767]",
"System.Threading.ThreadPool": "(,4.3.32767]",
"System.Threading.Timer": "(,4.3.32767]",
"System.ValueTuple": "(,4.5.32767]",
"System.Xml.ReaderWriter": "(,4.3.32767]",
"System.Xml.XDocument": "(,4.3.32767]",
"System.Xml.XmlDocument": "(,4.3.32767]",
"System.Xml.XmlSerializer": "(,4.3.32767]",
"System.Xml.XPath": "(,4.3.32767]",
"System.Xml.XPath.XDocument": "(,5.0.32767]"
}
},
"netstandard2.1": {
"targetAlias": "netstandard2.1",
"dependencies": {
"Microsoft.SourceLink.Gitea": {
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
"suppressParent": "All",
"target": "Package",
"version": "[10.0.201, )",
"versionCentrallyManaged": true
}
},
"centralPackageVersions": {
"Microsoft.SourceLink.Gitea": "10.0.201"
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"NETStandard.Library": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.201\\RuntimeIdentifierGraph.json",
"packagesToPrune": {
"Microsoft.Win32.Primitives": "(,4.3.0]",
"System.AppContext": "(,4.3.0]",
"System.Buffers": "(,4.6.1]",
"System.Collections": "(,4.3.0]",
"System.Collections.Concurrent": "(,4.3.0]",
"System.Collections.NonGeneric": "(,4.3.0]",
"System.Collections.Specialized": "(,4.3.0]",
"System.ComponentModel": "(,4.3.0]",
"System.ComponentModel.EventBasedAsync": "(,4.3.0]",
"System.ComponentModel.Primitives": "(,4.3.0]",
"System.ComponentModel.TypeConverter": "(,4.3.0]",
"System.Console": "(,4.3.1]",
"System.Data.Common": "(,4.3.0]",
"System.Diagnostics.Contracts": "(,4.3.0]",
"System.Diagnostics.Debug": "(,4.3.0]",
"System.Diagnostics.FileVersionInfo": "(,4.3.0]",
"System.Diagnostics.Process": "(,4.3.0]",
"System.Diagnostics.StackTrace": "(,4.3.0]",
"System.Diagnostics.TextWriterTraceListener": "(,4.3.0]",
"System.Diagnostics.Tools": "(,4.3.0]",
"System.Diagnostics.TraceSource": "(,4.3.0]",
"System.Diagnostics.Tracing": "(,4.3.0]",
"System.Drawing.Primitives": "(,4.3.0]",
"System.Dynamic.Runtime": "(,4.3.0]",
"System.Globalization": "(,4.3.0]",
"System.Globalization.Calendars": "(,4.3.0]",
"System.Globalization.Extensions": "(,4.3.0]",
"System.IO": "(,4.3.0]",
"System.IO.Compression": "(,4.3.0]",
"System.IO.Compression.ZipFile": "(,4.3.0]",
"System.IO.FileSystem": "(,4.3.0]",
"System.IO.FileSystem.DriveInfo": "(,4.3.1]",
"System.IO.FileSystem.Primitives": "(,4.3.0]",
"System.IO.FileSystem.Watcher": "(,4.3.0]",
"System.IO.IsolatedStorage": "(,4.3.0]",
"System.IO.MemoryMappedFiles": "(,4.3.0]",
"System.IO.Pipes": "(,4.3.0]",
"System.IO.UnmanagedMemoryStream": "(,4.3.0]",
"System.Linq": "(,4.3.0]",
"System.Linq.Expressions": "(,4.3.0]",
"System.Linq.Parallel": "(,4.3.0]",
"System.Linq.Queryable": "(,4.3.0]",
"System.Memory": "(,4.6.3]",
"System.Net.Http": "(,4.3.4]",
"System.Net.NameResolution": "(,4.3.0]",
"System.Net.NetworkInformation": "(,4.3.0]",
"System.Net.Ping": "(,4.3.0]",
"System.Net.Primitives": "(,4.3.1]",
"System.Net.Requests": "(,4.3.0]",
"System.Net.Security": "(,4.3.2]",
"System.Net.Sockets": "(,4.3.0]",
"System.Net.WebHeaderCollection": "(,4.3.0]",
"System.Net.WebSockets": "(,4.3.0]",
"System.Net.WebSockets.Client": "(,4.3.2]",
"System.Numerics.Vectors": "(,4.6.1]",
"System.ObjectModel": "(,4.3.0]",
"System.Reflection": "(,4.3.0]",
"System.Reflection.DispatchProxy": "(,4.5.1]",
"System.Reflection.Emit": "(,4.7.0]",
"System.Reflection.Emit.ILGeneration": "(,4.7.0]",
"System.Reflection.Emit.Lightweight": "(,4.7.0]",
"System.Reflection.Extensions": "(,4.3.0]",
"System.Reflection.Primitives": "(,4.3.0]",
"System.Resources.Reader": "(,4.3.0]",
"System.Resources.ResourceManager": "(,4.3.0]",
"System.Resources.Writer": "(,4.3.0]",
"System.Runtime": "(,4.3.1]",
"System.Runtime.CompilerServices.VisualC": "(,4.3.0]",
"System.Runtime.Extensions": "(,4.3.1]",
"System.Runtime.Handles": "(,4.3.0]",
"System.Runtime.InteropServices": "(,4.3.0]",
"System.Runtime.InteropServices.RuntimeInformation": "(,4.3.0]",
"System.Runtime.Numerics": "(,4.3.0]",
"System.Runtime.Serialization.Formatters": "(,4.3.0]",
"System.Runtime.Serialization.Json": "(,4.3.0]",
"System.Runtime.Serialization.Primitives": "(,4.3.0]",
"System.Runtime.Serialization.Xml": "(,4.3.0]",
"System.Security.Claims": "(,4.3.0]",
"System.Security.Cryptography.Algorithms": "(,4.3.1]",
"System.Security.Cryptography.Csp": "(,4.3.0]",
"System.Security.Cryptography.Encoding": "(,4.3.0]",
"System.Security.Cryptography.Primitives": "(,4.3.0]",
"System.Security.Cryptography.X509Certificates": "(,4.3.2]",
"System.Security.Principal": "(,4.3.0]",
"System.Security.SecureString": "(,4.3.0]",
"System.Text.Encoding": "(,4.3.0]",
"System.Text.Encoding.Extensions": "(,4.3.0]",
"System.Text.RegularExpressions": "(,4.3.0]",
"System.Threading": "(,4.3.0]",
"System.Threading.Overlapped": "(,4.3.0]",
"System.Threading.Tasks": "(,4.3.0]",
"System.Threading.Tasks.Extensions": "(,4.6.3]",
"System.Threading.Tasks.Parallel": "(,4.3.0]",
"System.Threading.Thread": "(,4.3.0]",
"System.Threading.ThreadPool": "(,4.3.0]",
"System.Threading.Timer": "(,4.3.0]",
"System.ValueTuple": "(,4.6.1]",
"System.Xml.ReaderWriter": "(,4.3.1]",
"System.Xml.XDocument": "(,4.3.0]",
"System.Xml.XmlDocument": "(,4.3.0]",
"System.Xml.XmlSerializer": "(,4.3.0]",
"System.Xml.XPath": "(,4.3.0]",
"System.Xml.XPath.XDocument": "(,4.3.0]"
}
}
}
}
}
}
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\sfree\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\sfree\.nuget\packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
</ItemGroup>
<ImportGroup Condition=" '$(TargetFramework)' == '' AND '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.sourcelink.common\10.0.201\buildMultiTargeting\Microsoft.SourceLink.Common.props" Condition="Exists('$(NuGetPackageRoot)microsoft.sourcelink.common\10.0.201\buildMultiTargeting\Microsoft.SourceLink.Common.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.build.tasks.git\10.0.201\buildMultiTargeting\Microsoft.Build.Tasks.Git.props" Condition="Exists('$(NuGetPackageRoot)microsoft.build.tasks.git\10.0.201\buildMultiTargeting\Microsoft.Build.Tasks.Git.props')" />
</ImportGroup>
<ImportGroup Condition=" '$(TargetFramework)' == 'net10.0' AND '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.sourcelink.common\10.0.201\buildTransitive\Microsoft.SourceLink.Common.props" Condition="Exists('$(NuGetPackageRoot)microsoft.sourcelink.common\10.0.201\buildTransitive\Microsoft.SourceLink.Common.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.build.tasks.git\10.0.201\buildTransitive\Microsoft.Build.Tasks.Git.props" Condition="Exists('$(NuGetPackageRoot)microsoft.build.tasks.git\10.0.201\buildTransitive\Microsoft.Build.Tasks.Git.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.net.illink.tasks\10.0.5\build\Microsoft.NET.ILLink.Tasks.props" Condition="Exists('$(NuGetPackageRoot)microsoft.net.illink.tasks\10.0.5\build\Microsoft.NET.ILLink.Tasks.props')" />
</ImportGroup>
<ImportGroup Condition=" '$(TargetFramework)' == 'netstandard2.1' AND '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.sourcelink.common\10.0.201\buildTransitive\Microsoft.SourceLink.Common.props" Condition="Exists('$(NuGetPackageRoot)microsoft.sourcelink.common\10.0.201\buildTransitive\Microsoft.SourceLink.Common.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.build.tasks.git\10.0.201\buildTransitive\Microsoft.Build.Tasks.Git.props" Condition="Exists('$(NuGetPackageRoot)microsoft.build.tasks.git\10.0.201\buildTransitive\Microsoft.Build.Tasks.Git.props')" />
</ImportGroup>
<PropertyGroup Condition=" '$(TargetFramework)' == 'net10.0' AND '$(ExcludeRestorePackageImports)' != 'true' ">
<PkgMicrosoft_SourceLink_Common Condition=" '$(PkgMicrosoft_SourceLink_Common)' == '' ">C:\Users\sfree\.nuget\packages\microsoft.sourcelink.common\10.0.201</PkgMicrosoft_SourceLink_Common>
<PkgMicrosoft_Build_Tasks_Git Condition=" '$(PkgMicrosoft_Build_Tasks_Git)' == '' ">C:\Users\sfree\.nuget\packages\microsoft.build.tasks.git\10.0.201</PkgMicrosoft_Build_Tasks_Git>
<PkgMicrosoft_SourceLink_Gitea Condition=" '$(PkgMicrosoft_SourceLink_Gitea)' == '' ">C:\Users\sfree\.nuget\packages\microsoft.sourcelink.gitea\10.0.201</PkgMicrosoft_SourceLink_Gitea>
<PkgMicrosoft_NET_ILLink_Tasks Condition=" '$(PkgMicrosoft_NET_ILLink_Tasks)' == '' ">C:\Users\sfree\.nuget\packages\microsoft.net.illink.tasks\10.0.5</PkgMicrosoft_NET_ILLink_Tasks>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFramework)' == 'netstandard2.1' AND '$(ExcludeRestorePackageImports)' != 'true' ">
<PkgMicrosoft_SourceLink_Common Condition=" '$(PkgMicrosoft_SourceLink_Common)' == '' ">C:\Users\sfree\.nuget\packages\microsoft.sourcelink.common\10.0.201</PkgMicrosoft_SourceLink_Common>
<PkgMicrosoft_Build_Tasks_Git Condition=" '$(PkgMicrosoft_Build_Tasks_Git)' == '' ">C:\Users\sfree\.nuget\packages\microsoft.build.tasks.git\10.0.201</PkgMicrosoft_Build_Tasks_Git>
<PkgMicrosoft_SourceLink_Gitea Condition=" '$(PkgMicrosoft_SourceLink_Gitea)' == '' ">C:\Users\sfree\.nuget\packages\microsoft.sourcelink.gitea\10.0.201</PkgMicrosoft_SourceLink_Gitea>
</PropertyGroup>
</Project>
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(TargetFramework)' == '' AND '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.sourcelink.common\10.0.201\buildMultiTargeting\Microsoft.SourceLink.Common.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.sourcelink.common\10.0.201\buildMultiTargeting\Microsoft.SourceLink.Common.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.build.tasks.git\10.0.201\buildMultiTargeting\Microsoft.Build.Tasks.Git.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.build.tasks.git\10.0.201\buildMultiTargeting\Microsoft.Build.Tasks.Git.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.sourcelink.gitea\10.0.201\buildMultiTargeting\Microsoft.SourceLink.Gitea.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.sourcelink.gitea\10.0.201\buildMultiTargeting\Microsoft.SourceLink.Gitea.targets')" />
</ImportGroup>
<ImportGroup Condition=" '$(TargetFramework)' == 'net10.0' AND '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.sourcelink.common\10.0.201\buildTransitive\Microsoft.SourceLink.Common.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.sourcelink.common\10.0.201\buildTransitive\Microsoft.SourceLink.Common.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.build.tasks.git\10.0.201\buildTransitive\Microsoft.Build.Tasks.Git.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.build.tasks.git\10.0.201\buildTransitive\Microsoft.Build.Tasks.Git.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.sourcelink.gitea\10.0.201\build\Microsoft.SourceLink.Gitea.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.sourcelink.gitea\10.0.201\build\Microsoft.SourceLink.Gitea.targets')" />
</ImportGroup>
<ImportGroup Condition=" '$(TargetFramework)' == 'netstandard2.1' AND '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.sourcelink.common\10.0.201\buildTransitive\Microsoft.SourceLink.Common.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.sourcelink.common\10.0.201\buildTransitive\Microsoft.SourceLink.Common.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.build.tasks.git\10.0.201\buildTransitive\Microsoft.Build.Tasks.Git.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.build.tasks.git\10.0.201\buildTransitive\Microsoft.Build.Tasks.Git.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.sourcelink.gitea\10.0.201\build\Microsoft.SourceLink.Gitea.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.sourcelink.gitea\10.0.201\build\Microsoft.SourceLink.Gitea.targets')" />
</ImportGroup>
</Project>
@@ -0,0 +1,884 @@
{
"version": 3,
"targets": {
".NETStandard,Version=v2.1": {
"Microsoft.Build.Tasks.Git/10.0.201": {
"type": "package",
"dependencies": {
"System.IO.Hashing": "10.0.5"
},
"build": {
"buildTransitive/Microsoft.Build.Tasks.Git.props": {},
"buildTransitive/Microsoft.Build.Tasks.Git.targets": {}
},
"buildMultiTargeting": {
"buildMultiTargeting/Microsoft.Build.Tasks.Git.props": {},
"buildMultiTargeting/Microsoft.Build.Tasks.Git.targets": {}
}
},
"Microsoft.SourceLink.Common/10.0.201": {
"type": "package",
"build": {
"buildTransitive/Microsoft.SourceLink.Common.props": {},
"buildTransitive/Microsoft.SourceLink.Common.targets": {}
},
"buildMultiTargeting": {
"buildMultiTargeting/Microsoft.SourceLink.Common.props": {},
"buildMultiTargeting/Microsoft.SourceLink.Common.targets": {}
}
},
"Microsoft.SourceLink.Gitea/10.0.201": {
"type": "package",
"dependencies": {
"Microsoft.Build.Tasks.Git": "10.0.201",
"Microsoft.SourceLink.Common": "10.0.201",
"System.IO.Hashing": "10.0.5"
},
"build": {
"build/Microsoft.SourceLink.Gitea.targets": {}
},
"buildMultiTargeting": {
"buildMultiTargeting/Microsoft.SourceLink.Gitea.targets": {}
}
},
"System.IO.Hashing/10.0.5": {
"type": "package",
"compile": {
"lib/netstandard2.0/_._": {
"related": ".xml"
}
},
"runtime": {
"lib/netstandard2.0/System.IO.Hashing.dll": {
"related": ".xml"
}
}
}
},
"net10.0": {
"Microsoft.Build.Tasks.Git/10.0.201": {
"type": "package",
"dependencies": {
"System.IO.Hashing": "10.0.5"
},
"build": {
"buildTransitive/Microsoft.Build.Tasks.Git.props": {},
"buildTransitive/Microsoft.Build.Tasks.Git.targets": {}
},
"buildMultiTargeting": {
"buildMultiTargeting/Microsoft.Build.Tasks.Git.props": {},
"buildMultiTargeting/Microsoft.Build.Tasks.Git.targets": {}
}
},
"Microsoft.NET.ILLink.Tasks/10.0.5": {
"type": "package",
"build": {
"build/Microsoft.NET.ILLink.Tasks.props": {}
}
},
"Microsoft.SourceLink.Common/10.0.201": {
"type": "package",
"build": {
"buildTransitive/Microsoft.SourceLink.Common.props": {},
"buildTransitive/Microsoft.SourceLink.Common.targets": {}
},
"buildMultiTargeting": {
"buildMultiTargeting/Microsoft.SourceLink.Common.props": {},
"buildMultiTargeting/Microsoft.SourceLink.Common.targets": {}
}
},
"Microsoft.SourceLink.Gitea/10.0.201": {
"type": "package",
"dependencies": {
"Microsoft.Build.Tasks.Git": "10.0.201",
"Microsoft.SourceLink.Common": "10.0.201",
"System.IO.Hashing": "10.0.5"
},
"build": {
"build/Microsoft.SourceLink.Gitea.targets": {}
},
"buildMultiTargeting": {
"buildMultiTargeting/Microsoft.SourceLink.Gitea.targets": {}
}
},
"System.IO.Hashing/10.0.5": {
"type": "package",
"compile": {
"lib/net10.0/_._": {
"related": ".xml"
}
},
"runtime": {
"lib/net10.0/System.IO.Hashing.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net8.0/_._": {}
}
}
}
},
"libraries": {
"Microsoft.Build.Tasks.Git/10.0.201": {
"sha512": "DMYBnrFZvLnBKn14VavEuuIr31CY6YY2i2L9P8DorS/Qp6ifRR8ZPLdJCFLFfjikNq8DykbYyLd/RP6lSqHcWw==",
"type": "package",
"path": "microsoft.build.tasks.git/10.0.201",
"hasTools": true,
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.txt",
"build/Microsoft.Build.Tasks.Git.props",
"build/Microsoft.Build.Tasks.Git.targets",
"buildMultiTargeting/Microsoft.Build.Tasks.Git.props",
"buildMultiTargeting/Microsoft.Build.Tasks.Git.targets",
"buildTransitive/Microsoft.Build.Tasks.Git.props",
"buildTransitive/Microsoft.Build.Tasks.Git.targets",
"microsoft.build.tasks.git.10.0.201.nupkg.sha512",
"microsoft.build.tasks.git.nuspec",
"tools/net/Microsoft.Build.Tasks.Git.deps.json",
"tools/net/Microsoft.Build.Tasks.Git.dll",
"tools/net/Microsoft.Build.Tasks.Git.pdb",
"tools/net/System.IO.Hashing.dll",
"tools/net/cs/Microsoft.Build.Tasks.Git.resources.dll",
"tools/net/de/Microsoft.Build.Tasks.Git.resources.dll",
"tools/net/es/Microsoft.Build.Tasks.Git.resources.dll",
"tools/net/fr/Microsoft.Build.Tasks.Git.resources.dll",
"tools/net/it/Microsoft.Build.Tasks.Git.resources.dll",
"tools/net/ja/Microsoft.Build.Tasks.Git.resources.dll",
"tools/net/ko/Microsoft.Build.Tasks.Git.resources.dll",
"tools/net/pl/Microsoft.Build.Tasks.Git.resources.dll",
"tools/net/pt-BR/Microsoft.Build.Tasks.Git.resources.dll",
"tools/net/ru/Microsoft.Build.Tasks.Git.resources.dll",
"tools/net/tr/Microsoft.Build.Tasks.Git.resources.dll",
"tools/net/zh-Hans/Microsoft.Build.Tasks.Git.resources.dll",
"tools/net/zh-Hant/Microsoft.Build.Tasks.Git.resources.dll",
"tools/netframework/Microsoft.Build.Tasks.Git.dll",
"tools/netframework/Microsoft.Build.Tasks.Git.dll.config",
"tools/netframework/Microsoft.Build.Tasks.Git.pdb",
"tools/netframework/System.Buffers.dll",
"tools/netframework/System.IO.Hashing.dll",
"tools/netframework/System.Memory.dll",
"tools/netframework/System.Numerics.Vectors.dll",
"tools/netframework/System.Runtime.CompilerServices.Unsafe.dll",
"tools/netframework/cs/Microsoft.Build.Tasks.Git.resources.dll",
"tools/netframework/de/Microsoft.Build.Tasks.Git.resources.dll",
"tools/netframework/es/Microsoft.Build.Tasks.Git.resources.dll",
"tools/netframework/fr/Microsoft.Build.Tasks.Git.resources.dll",
"tools/netframework/it/Microsoft.Build.Tasks.Git.resources.dll",
"tools/netframework/ja/Microsoft.Build.Tasks.Git.resources.dll",
"tools/netframework/ko/Microsoft.Build.Tasks.Git.resources.dll",
"tools/netframework/pl/Microsoft.Build.Tasks.Git.resources.dll",
"tools/netframework/pt-BR/Microsoft.Build.Tasks.Git.resources.dll",
"tools/netframework/ru/Microsoft.Build.Tasks.Git.resources.dll",
"tools/netframework/tr/Microsoft.Build.Tasks.Git.resources.dll",
"tools/netframework/zh-Hans/Microsoft.Build.Tasks.Git.resources.dll",
"tools/netframework/zh-Hant/Microsoft.Build.Tasks.Git.resources.dll"
]
},
"Microsoft.NET.ILLink.Tasks/10.0.5": {
"sha512": "A+5ZuQ0f449tM+MQrhf6R9ZX7lYpjk/ODEwLYKrnF6111rtARx8fVsm4YznUnQiKnnXfaXNBqgxmil6RW3L3SA==",
"type": "package",
"path": "microsoft.net.illink.tasks/10.0.5",
"hasTools": true,
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"Sdk/Sdk.props",
"THIRD-PARTY-NOTICES.TXT",
"analyzers/dotnet/cs/ILLink.CodeFixProvider.dll",
"analyzers/dotnet/cs/ILLink.RoslynAnalyzer.dll",
"build/Microsoft.NET.ILLink.Analyzers.props",
"build/Microsoft.NET.ILLink.Tasks.props",
"build/Microsoft.NET.ILLink.targets",
"microsoft.net.illink.tasks.10.0.5.nupkg.sha512",
"microsoft.net.illink.tasks.nuspec",
"tools/net/ILLink.Tasks.deps.json",
"tools/net/ILLink.Tasks.dll",
"tools/net/Mono.Cecil.Mdb.dll",
"tools/net/Mono.Cecil.Pdb.dll",
"tools/net/Mono.Cecil.Rocks.dll",
"tools/net/Mono.Cecil.dll",
"tools/net/Sdk/Sdk.props",
"tools/net/build/Microsoft.NET.ILLink.Analyzers.props",
"tools/net/build/Microsoft.NET.ILLink.Tasks.props",
"tools/net/build/Microsoft.NET.ILLink.targets",
"tools/net/illink.deps.json",
"tools/net/illink.dll",
"tools/net/illink.runtimeconfig.json",
"tools/netframework/ILLink.Tasks.dll",
"tools/netframework/ILLink.Tasks.dll.config",
"tools/netframework/Mono.Cecil.Mdb.dll",
"tools/netframework/Mono.Cecil.Pdb.dll",
"tools/netframework/Mono.Cecil.Rocks.dll",
"tools/netframework/Mono.Cecil.dll",
"tools/netframework/Sdk/Sdk.props",
"tools/netframework/System.Buffers.dll",
"tools/netframework/System.Collections.Immutable.dll",
"tools/netframework/System.Memory.dll",
"tools/netframework/System.Numerics.Vectors.dll",
"tools/netframework/System.Reflection.Metadata.dll",
"tools/netframework/System.Runtime.CompilerServices.Unsafe.dll",
"tools/netframework/build/Microsoft.NET.ILLink.Analyzers.props",
"tools/netframework/build/Microsoft.NET.ILLink.Tasks.props",
"tools/netframework/build/Microsoft.NET.ILLink.targets",
"useSharedDesignerContext.txt"
]
},
"Microsoft.SourceLink.Common/10.0.201": {
"sha512": "QbBYhkjgL6rCnBfDbzsAJLlsad13TlBHqYCFDIw56OO2g6ix+9RsmY8uxiQGdWwFKbZXaXyAA6jDCzFYVGCZDw==",
"type": "package",
"path": "microsoft.sourcelink.common/10.0.201",
"hasTools": true,
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.txt",
"build/InitializeSourceControlInformation.targets",
"build/Microsoft.SourceLink.Common.props",
"build/Microsoft.SourceLink.Common.targets",
"buildMultiTargeting/Microsoft.SourceLink.Common.props",
"buildMultiTargeting/Microsoft.SourceLink.Common.targets",
"buildTransitive/Microsoft.SourceLink.Common.props",
"buildTransitive/Microsoft.SourceLink.Common.targets",
"microsoft.sourcelink.common.10.0.201.nupkg.sha512",
"microsoft.sourcelink.common.nuspec",
"tools/net/Microsoft.SourceLink.Common.deps.json",
"tools/net/Microsoft.SourceLink.Common.dll",
"tools/net/Microsoft.SourceLink.Common.pdb",
"tools/net/cs/Microsoft.SourceLink.Common.resources.dll",
"tools/net/de/Microsoft.SourceLink.Common.resources.dll",
"tools/net/es/Microsoft.SourceLink.Common.resources.dll",
"tools/net/fr/Microsoft.SourceLink.Common.resources.dll",
"tools/net/it/Microsoft.SourceLink.Common.resources.dll",
"tools/net/ja/Microsoft.SourceLink.Common.resources.dll",
"tools/net/ko/Microsoft.SourceLink.Common.resources.dll",
"tools/net/pl/Microsoft.SourceLink.Common.resources.dll",
"tools/net/pt-BR/Microsoft.SourceLink.Common.resources.dll",
"tools/net/ru/Microsoft.SourceLink.Common.resources.dll",
"tools/net/tr/Microsoft.SourceLink.Common.resources.dll",
"tools/net/zh-Hans/Microsoft.SourceLink.Common.resources.dll",
"tools/net/zh-Hant/Microsoft.SourceLink.Common.resources.dll",
"tools/netframework/Microsoft.SourceLink.Common.dll",
"tools/netframework/Microsoft.SourceLink.Common.dll.config",
"tools/netframework/Microsoft.SourceLink.Common.pdb",
"tools/netframework/cs/Microsoft.SourceLink.Common.resources.dll",
"tools/netframework/de/Microsoft.SourceLink.Common.resources.dll",
"tools/netframework/es/Microsoft.SourceLink.Common.resources.dll",
"tools/netframework/fr/Microsoft.SourceLink.Common.resources.dll",
"tools/netframework/it/Microsoft.SourceLink.Common.resources.dll",
"tools/netframework/ja/Microsoft.SourceLink.Common.resources.dll",
"tools/netframework/ko/Microsoft.SourceLink.Common.resources.dll",
"tools/netframework/pl/Microsoft.SourceLink.Common.resources.dll",
"tools/netframework/pt-BR/Microsoft.SourceLink.Common.resources.dll",
"tools/netframework/ru/Microsoft.SourceLink.Common.resources.dll",
"tools/netframework/tr/Microsoft.SourceLink.Common.resources.dll",
"tools/netframework/zh-Hans/Microsoft.SourceLink.Common.resources.dll",
"tools/netframework/zh-Hant/Microsoft.SourceLink.Common.resources.dll"
]
},
"Microsoft.SourceLink.Gitea/10.0.201": {
"sha512": "F8hUc8x+9PzpnT3LAyUHHOAGPzGe0W9cTeR4INEeu43bah+xKEJOAgN4fHA/YkrgMp1z/0wAaIaIQWrIdt2E3A==",
"type": "package",
"path": "microsoft.sourcelink.gitea/10.0.201",
"hasTools": true,
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.txt",
"build/Microsoft.SourceLink.Gitea.targets",
"buildMultiTargeting/Microsoft.SourceLink.Gitea.targets",
"microsoft.sourcelink.gitea.10.0.201.nupkg.sha512",
"microsoft.sourcelink.gitea.nuspec",
"tools/net/Microsoft.SourceLink.Gitea.deps.json",
"tools/net/Microsoft.SourceLink.Gitea.dll",
"tools/net/Microsoft.SourceLink.Gitea.pdb",
"tools/net/System.IO.Hashing.dll",
"tools/net/cs/Microsoft.SourceLink.Gitea.resources.dll",
"tools/net/de/Microsoft.SourceLink.Gitea.resources.dll",
"tools/net/es/Microsoft.SourceLink.Gitea.resources.dll",
"tools/net/fr/Microsoft.SourceLink.Gitea.resources.dll",
"tools/net/it/Microsoft.SourceLink.Gitea.resources.dll",
"tools/net/ja/Microsoft.SourceLink.Gitea.resources.dll",
"tools/net/ko/Microsoft.SourceLink.Gitea.resources.dll",
"tools/net/pl/Microsoft.SourceLink.Gitea.resources.dll",
"tools/net/pt-BR/Microsoft.SourceLink.Gitea.resources.dll",
"tools/net/ru/Microsoft.SourceLink.Gitea.resources.dll",
"tools/net/tr/Microsoft.SourceLink.Gitea.resources.dll",
"tools/net/zh-Hans/Microsoft.SourceLink.Gitea.resources.dll",
"tools/net/zh-Hant/Microsoft.SourceLink.Gitea.resources.dll",
"tools/netframework/Microsoft.SourceLink.Gitea.dll",
"tools/netframework/Microsoft.SourceLink.Gitea.dll.config",
"tools/netframework/Microsoft.SourceLink.Gitea.pdb",
"tools/netframework/System.Buffers.dll",
"tools/netframework/System.IO.Hashing.dll",
"tools/netframework/System.Memory.dll",
"tools/netframework/System.Numerics.Vectors.dll",
"tools/netframework/System.Runtime.CompilerServices.Unsafe.dll",
"tools/netframework/cs/Microsoft.SourceLink.Gitea.resources.dll",
"tools/netframework/de/Microsoft.SourceLink.Gitea.resources.dll",
"tools/netframework/es/Microsoft.SourceLink.Gitea.resources.dll",
"tools/netframework/fr/Microsoft.SourceLink.Gitea.resources.dll",
"tools/netframework/it/Microsoft.SourceLink.Gitea.resources.dll",
"tools/netframework/ja/Microsoft.SourceLink.Gitea.resources.dll",
"tools/netframework/ko/Microsoft.SourceLink.Gitea.resources.dll",
"tools/netframework/pl/Microsoft.SourceLink.Gitea.resources.dll",
"tools/netframework/pt-BR/Microsoft.SourceLink.Gitea.resources.dll",
"tools/netframework/ru/Microsoft.SourceLink.Gitea.resources.dll",
"tools/netframework/tr/Microsoft.SourceLink.Gitea.resources.dll",
"tools/netframework/zh-Hans/Microsoft.SourceLink.Gitea.resources.dll",
"tools/netframework/zh-Hant/Microsoft.SourceLink.Gitea.resources.dll"
]
},
"System.IO.Hashing/10.0.5": {
"sha512": "8IBJWcCT9+e4Bmevm4T7+fQEiAh133KGiz4oiVTgJckd3Q76OFdR1falgn9lpz7+C4HJvogCDJeAa2QmvbeVtg==",
"type": "package",
"path": "system.io.hashing/10.0.5",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/System.IO.Hashing.targets",
"buildTransitive/net462/_._",
"buildTransitive/net8.0/_._",
"buildTransitive/netcoreapp2.0/System.IO.Hashing.targets",
"lib/net10.0/System.IO.Hashing.dll",
"lib/net10.0/System.IO.Hashing.xml",
"lib/net462/System.IO.Hashing.dll",
"lib/net462/System.IO.Hashing.xml",
"lib/net8.0/System.IO.Hashing.dll",
"lib/net8.0/System.IO.Hashing.xml",
"lib/net9.0/System.IO.Hashing.dll",
"lib/net9.0/System.IO.Hashing.xml",
"lib/netstandard2.0/System.IO.Hashing.dll",
"lib/netstandard2.0/System.IO.Hashing.xml",
"system.io.hashing.10.0.5.nupkg.sha512",
"system.io.hashing.nuspec",
"useSharedDesignerContext.txt"
]
}
},
"projectFileDependencyGroups": {
".NETStandard,Version=v2.1": [
"Microsoft.SourceLink.Gitea >= 10.0.201"
],
"net10.0": [
"Microsoft.NET.ILLink.Tasks >= 10.0.5",
"Microsoft.SourceLink.Gitea >= 10.0.201"
]
},
"packageFolders": {
"C:\\Users\\sfree\\.nuget\\packages\\": {},
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
},
"project": {
"version": "0.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\sfree\\Repositories\\stevanfreeborn.options\\src\\StevanFreeborn.Options\\StevanFreeborn.Options.csproj",
"projectName": "StevanFreeborn.Options",
"projectPath": "C:\\Users\\sfree\\Repositories\\stevanfreeborn.options\\src\\StevanFreeborn.Options\\StevanFreeborn.Options.csproj",
"packagesPath": "C:\\Users\\sfree\\.nuget\\packages\\",
"outputPath": "C:\\Users\\sfree\\Repositories\\stevanfreeborn.options\\src\\StevanFreeborn.Options\\obj\\",
"projectStyle": "PackageReference",
"crossTargeting": true,
"centralPackageVersionsManagementEnabled": true,
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\sfree\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net10.0",
"netstandard2.1"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net10.0": {
"targetAlias": "net10.0",
"projectReferences": {}
},
"netstandard2.1": {
"targetAlias": "netstandard2.1",
"projectReferences": {}
}
},
"warningProperties": {
"allWarningsAsErrors": true,
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "all"
},
"SdkAnalysisLevel": "10.0.200"
},
"frameworks": {
"net10.0": {
"targetAlias": "net10.0",
"dependencies": {
"Microsoft.NET.ILLink.Tasks": {
"suppressParent": "All",
"target": "Package",
"version": "[10.0.5, )",
"autoReferenced": true
},
"Microsoft.SourceLink.Gitea": {
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
"suppressParent": "All",
"target": "Package",
"version": "[10.0.201, )",
"versionCentrallyManaged": true
}
},
"centralPackageVersions": {
"Microsoft.SourceLink.Gitea": "10.0.201"
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.201/PortableRuntimeIdentifierGraph.json",
"packagesToPrune": {
"Microsoft.CSharp": "(,4.7.32767]",
"Microsoft.VisualBasic": "(,10.4.32767]",
"Microsoft.Win32.Primitives": "(,4.3.32767]",
"Microsoft.Win32.Registry": "(,5.0.32767]",
"runtime.any.System.Collections": "(,4.3.32767]",
"runtime.any.System.Diagnostics.Tools": "(,4.3.32767]",
"runtime.any.System.Diagnostics.Tracing": "(,4.3.32767]",
"runtime.any.System.Globalization": "(,4.3.32767]",
"runtime.any.System.Globalization.Calendars": "(,4.3.32767]",
"runtime.any.System.IO": "(,4.3.32767]",
"runtime.any.System.Reflection": "(,4.3.32767]",
"runtime.any.System.Reflection.Extensions": "(,4.3.32767]",
"runtime.any.System.Reflection.Primitives": "(,4.3.32767]",
"runtime.any.System.Resources.ResourceManager": "(,4.3.32767]",
"runtime.any.System.Runtime": "(,4.3.32767]",
"runtime.any.System.Runtime.Handles": "(,4.3.32767]",
"runtime.any.System.Runtime.InteropServices": "(,4.3.32767]",
"runtime.any.System.Text.Encoding": "(,4.3.32767]",
"runtime.any.System.Text.Encoding.Extensions": "(,4.3.32767]",
"runtime.any.System.Threading.Tasks": "(,4.3.32767]",
"runtime.any.System.Threading.Timer": "(,4.3.32767]",
"runtime.aot.System.Collections": "(,4.3.32767]",
"runtime.aot.System.Diagnostics.Tools": "(,4.3.32767]",
"runtime.aot.System.Diagnostics.Tracing": "(,4.3.32767]",
"runtime.aot.System.Globalization": "(,4.3.32767]",
"runtime.aot.System.Globalization.Calendars": "(,4.3.32767]",
"runtime.aot.System.IO": "(,4.3.32767]",
"runtime.aot.System.Reflection": "(,4.3.32767]",
"runtime.aot.System.Reflection.Extensions": "(,4.3.32767]",
"runtime.aot.System.Reflection.Primitives": "(,4.3.32767]",
"runtime.aot.System.Resources.ResourceManager": "(,4.3.32767]",
"runtime.aot.System.Runtime": "(,4.3.32767]",
"runtime.aot.System.Runtime.Handles": "(,4.3.32767]",
"runtime.aot.System.Runtime.InteropServices": "(,4.3.32767]",
"runtime.aot.System.Text.Encoding": "(,4.3.32767]",
"runtime.aot.System.Text.Encoding.Extensions": "(,4.3.32767]",
"runtime.aot.System.Threading.Tasks": "(,4.3.32767]",
"runtime.aot.System.Threading.Timer": "(,4.3.32767]",
"runtime.debian.8-x64.runtime.native.System": "(,4.3.32767]",
"runtime.debian.8-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.debian.8-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.debian.8-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.debian.9-x64.runtime.native.System": "(,4.3.32767]",
"runtime.debian.9-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.debian.9-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.debian.9-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.fedora.23-x64.runtime.native.System": "(,4.3.32767]",
"runtime.fedora.23-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.fedora.23-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.fedora.23-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.fedora.24-x64.runtime.native.System": "(,4.3.32767]",
"runtime.fedora.24-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.fedora.24-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.fedora.24-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.fedora.27-x64.runtime.native.System": "(,4.3.32767]",
"runtime.fedora.27-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.fedora.27-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.fedora.27-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.fedora.28-x64.runtime.native.System": "(,4.3.32767]",
"runtime.fedora.28-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.fedora.28-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.fedora.28-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.opensuse.13.2-x64.runtime.native.System": "(,4.3.32767]",
"runtime.opensuse.13.2-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.opensuse.13.2-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.opensuse.13.2-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.opensuse.42.1-x64.runtime.native.System": "(,4.3.32767]",
"runtime.opensuse.42.1-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.opensuse.42.1-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.opensuse.42.1-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.opensuse.42.3-x64.runtime.native.System": "(,4.3.32767]",
"runtime.opensuse.42.3-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.opensuse.42.3-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.opensuse.42.3-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.osx.10.10-x64.runtime.native.System": "(,4.3.32767]",
"runtime.osx.10.10-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.osx.10.10-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.osx.10.10-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "(,4.3.32767]",
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.rhel.7-x64.runtime.native.System": "(,4.3.32767]",
"runtime.rhel.7-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.rhel.7-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.rhel.7-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.ubuntu.14.04-x64.runtime.native.System": "(,4.3.32767]",
"runtime.ubuntu.14.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.ubuntu.14.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.ubuntu.14.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.ubuntu.16.04-x64.runtime.native.System": "(,4.3.32767]",
"runtime.ubuntu.16.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.ubuntu.16.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.ubuntu.16.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.ubuntu.16.10-x64.runtime.native.System": "(,4.3.32767]",
"runtime.ubuntu.16.10-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.ubuntu.16.10-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.ubuntu.16.10-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]",
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]",
"runtime.ubuntu.18.04-x64.runtime.native.System": "(,4.3.32767]",
"runtime.ubuntu.18.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.ubuntu.18.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]",
"runtime.ubuntu.18.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]",
"runtime.unix.Microsoft.Win32.Primitives": "(,4.3.32767]",
"runtime.unix.System.Console": "(,4.3.32767]",
"runtime.unix.System.Diagnostics.Debug": "(,4.3.32767]",
"runtime.unix.System.IO.FileSystem": "(,4.3.32767]",
"runtime.unix.System.Net.Primitives": "(,4.3.32767]",
"runtime.unix.System.Net.Sockets": "(,4.3.32767]",
"runtime.unix.System.Private.Uri": "(,4.3.32767]",
"runtime.unix.System.Runtime.Extensions": "(,4.3.32767]",
"runtime.win.Microsoft.Win32.Primitives": "(,4.3.32767]",
"runtime.win.System.Console": "(,4.3.32767]",
"runtime.win.System.Diagnostics.Debug": "(,4.3.32767]",
"runtime.win.System.IO.FileSystem": "(,4.3.32767]",
"runtime.win.System.Net.Primitives": "(,4.3.32767]",
"runtime.win.System.Net.Sockets": "(,4.3.32767]",
"runtime.win.System.Runtime.Extensions": "(,4.3.32767]",
"runtime.win10-arm-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
"runtime.win10-arm64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.win10-x64-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
"runtime.win10-x86-aot.runtime.native.System.IO.Compression": "(,4.0.32767]",
"runtime.win7-x64.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.win7-x86.runtime.native.System.IO.Compression": "(,4.3.32767]",
"runtime.win7.System.Private.Uri": "(,4.3.32767]",
"runtime.win8-arm.runtime.native.System.IO.Compression": "(,4.3.32767]",
"System.AppContext": "(,4.3.32767]",
"System.Buffers": "(,5.0.32767]",
"System.Collections": "(,4.3.32767]",
"System.Collections.Concurrent": "(,4.3.32767]",
"System.Collections.Immutable": "(,10.0.32767]",
"System.Collections.NonGeneric": "(,4.3.32767]",
"System.Collections.Specialized": "(,4.3.32767]",
"System.ComponentModel": "(,4.3.32767]",
"System.ComponentModel.Annotations": "(,4.3.32767]",
"System.ComponentModel.EventBasedAsync": "(,4.3.32767]",
"System.ComponentModel.Primitives": "(,4.3.32767]",
"System.ComponentModel.TypeConverter": "(,4.3.32767]",
"System.Console": "(,4.3.32767]",
"System.Data.Common": "(,4.3.32767]",
"System.Data.DataSetExtensions": "(,4.4.32767]",
"System.Diagnostics.Contracts": "(,4.3.32767]",
"System.Diagnostics.Debug": "(,4.3.32767]",
"System.Diagnostics.DiagnosticSource": "(,10.0.32767]",
"System.Diagnostics.FileVersionInfo": "(,4.3.32767]",
"System.Diagnostics.Process": "(,4.3.32767]",
"System.Diagnostics.StackTrace": "(,4.3.32767]",
"System.Diagnostics.TextWriterTraceListener": "(,4.3.32767]",
"System.Diagnostics.Tools": "(,4.3.32767]",
"System.Diagnostics.TraceSource": "(,4.3.32767]",
"System.Diagnostics.Tracing": "(,4.3.32767]",
"System.Drawing.Primitives": "(,4.3.32767]",
"System.Dynamic.Runtime": "(,4.3.32767]",
"System.Formats.Asn1": "(,10.0.32767]",
"System.Formats.Tar": "(,10.0.32767]",
"System.Globalization": "(,4.3.32767]",
"System.Globalization.Calendars": "(,4.3.32767]",
"System.Globalization.Extensions": "(,4.3.32767]",
"System.IO": "(,4.3.32767]",
"System.IO.Compression": "(,4.3.32767]",
"System.IO.Compression.ZipFile": "(,4.3.32767]",
"System.IO.FileSystem": "(,4.3.32767]",
"System.IO.FileSystem.AccessControl": "(,4.4.32767]",
"System.IO.FileSystem.DriveInfo": "(,4.3.32767]",
"System.IO.FileSystem.Primitives": "(,4.3.32767]",
"System.IO.FileSystem.Watcher": "(,4.3.32767]",
"System.IO.IsolatedStorage": "(,4.3.32767]",
"System.IO.MemoryMappedFiles": "(,4.3.32767]",
"System.IO.Pipelines": "(,10.0.32767]",
"System.IO.Pipes": "(,4.3.32767]",
"System.IO.Pipes.AccessControl": "(,5.0.32767]",
"System.IO.UnmanagedMemoryStream": "(,4.3.32767]",
"System.Linq": "(,4.3.32767]",
"System.Linq.AsyncEnumerable": "(,10.0.32767]",
"System.Linq.Expressions": "(,4.3.32767]",
"System.Linq.Parallel": "(,4.3.32767]",
"System.Linq.Queryable": "(,4.3.32767]",
"System.Memory": "(,5.0.32767]",
"System.Net.Http": "(,4.3.32767]",
"System.Net.Http.Json": "(,10.0.32767]",
"System.Net.NameResolution": "(,4.3.32767]",
"System.Net.NetworkInformation": "(,4.3.32767]",
"System.Net.Ping": "(,4.3.32767]",
"System.Net.Primitives": "(,4.3.32767]",
"System.Net.Requests": "(,4.3.32767]",
"System.Net.Security": "(,4.3.32767]",
"System.Net.ServerSentEvents": "(,10.0.32767]",
"System.Net.Sockets": "(,4.3.32767]",
"System.Net.WebHeaderCollection": "(,4.3.32767]",
"System.Net.WebSockets": "(,4.3.32767]",
"System.Net.WebSockets.Client": "(,4.3.32767]",
"System.Numerics.Vectors": "(,5.0.32767]",
"System.ObjectModel": "(,4.3.32767]",
"System.Private.DataContractSerialization": "(,4.3.32767]",
"System.Private.Uri": "(,4.3.32767]",
"System.Reflection": "(,4.3.32767]",
"System.Reflection.DispatchProxy": "(,6.0.32767]",
"System.Reflection.Emit": "(,4.7.32767]",
"System.Reflection.Emit.ILGeneration": "(,4.7.32767]",
"System.Reflection.Emit.Lightweight": "(,4.7.32767]",
"System.Reflection.Extensions": "(,4.3.32767]",
"System.Reflection.Metadata": "(,10.0.32767]",
"System.Reflection.Primitives": "(,4.3.32767]",
"System.Reflection.TypeExtensions": "(,4.3.32767]",
"System.Resources.Reader": "(,4.3.32767]",
"System.Resources.ResourceManager": "(,4.3.32767]",
"System.Resources.Writer": "(,4.3.32767]",
"System.Runtime": "(,4.3.32767]",
"System.Runtime.CompilerServices.Unsafe": "(,7.0.32767]",
"System.Runtime.CompilerServices.VisualC": "(,4.3.32767]",
"System.Runtime.Extensions": "(,4.3.32767]",
"System.Runtime.Handles": "(,4.3.32767]",
"System.Runtime.InteropServices": "(,4.3.32767]",
"System.Runtime.InteropServices.RuntimeInformation": "(,4.3.32767]",
"System.Runtime.Loader": "(,4.3.32767]",
"System.Runtime.Numerics": "(,4.3.32767]",
"System.Runtime.Serialization.Formatters": "(,4.3.32767]",
"System.Runtime.Serialization.Json": "(,4.3.32767]",
"System.Runtime.Serialization.Primitives": "(,4.3.32767]",
"System.Runtime.Serialization.Xml": "(,4.3.32767]",
"System.Security.AccessControl": "(,6.0.32767]",
"System.Security.Claims": "(,4.3.32767]",
"System.Security.Cryptography.Algorithms": "(,4.3.32767]",
"System.Security.Cryptography.Cng": "(,5.0.32767]",
"System.Security.Cryptography.Csp": "(,4.3.32767]",
"System.Security.Cryptography.Encoding": "(,4.3.32767]",
"System.Security.Cryptography.OpenSsl": "(,5.0.32767]",
"System.Security.Cryptography.Primitives": "(,4.3.32767]",
"System.Security.Cryptography.X509Certificates": "(,4.3.32767]",
"System.Security.Principal": "(,4.3.32767]",
"System.Security.Principal.Windows": "(,5.0.32767]",
"System.Security.SecureString": "(,4.3.32767]",
"System.Text.Encoding": "(,4.3.32767]",
"System.Text.Encoding.CodePages": "(,10.0.32767]",
"System.Text.Encoding.Extensions": "(,4.3.32767]",
"System.Text.Encodings.Web": "(,10.0.32767]",
"System.Text.Json": "(,10.0.32767]",
"System.Text.RegularExpressions": "(,4.3.32767]",
"System.Threading": "(,4.3.32767]",
"System.Threading.AccessControl": "(,10.0.32767]",
"System.Threading.Channels": "(,10.0.32767]",
"System.Threading.Overlapped": "(,4.3.32767]",
"System.Threading.Tasks": "(,4.3.32767]",
"System.Threading.Tasks.Dataflow": "(,10.0.32767]",
"System.Threading.Tasks.Extensions": "(,5.0.32767]",
"System.Threading.Tasks.Parallel": "(,4.3.32767]",
"System.Threading.Thread": "(,4.3.32767]",
"System.Threading.ThreadPool": "(,4.3.32767]",
"System.Threading.Timer": "(,4.3.32767]",
"System.ValueTuple": "(,4.5.32767]",
"System.Xml.ReaderWriter": "(,4.3.32767]",
"System.Xml.XDocument": "(,4.3.32767]",
"System.Xml.XmlDocument": "(,4.3.32767]",
"System.Xml.XmlSerializer": "(,4.3.32767]",
"System.Xml.XPath": "(,4.3.32767]",
"System.Xml.XPath.XDocument": "(,5.0.32767]"
}
},
"netstandard2.1": {
"targetAlias": "netstandard2.1",
"dependencies": {
"Microsoft.SourceLink.Gitea": {
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
"suppressParent": "All",
"target": "Package",
"version": "[10.0.201, )",
"versionCentrallyManaged": true
}
},
"centralPackageVersions": {
"Microsoft.SourceLink.Gitea": "10.0.201"
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"NETStandard.Library": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.201\\RuntimeIdentifierGraph.json",
"packagesToPrune": {
"Microsoft.Win32.Primitives": "(,4.3.0]",
"System.AppContext": "(,4.3.0]",
"System.Buffers": "(,4.6.1]",
"System.Collections": "(,4.3.0]",
"System.Collections.Concurrent": "(,4.3.0]",
"System.Collections.NonGeneric": "(,4.3.0]",
"System.Collections.Specialized": "(,4.3.0]",
"System.ComponentModel": "(,4.3.0]",
"System.ComponentModel.EventBasedAsync": "(,4.3.0]",
"System.ComponentModel.Primitives": "(,4.3.0]",
"System.ComponentModel.TypeConverter": "(,4.3.0]",
"System.Console": "(,4.3.1]",
"System.Data.Common": "(,4.3.0]",
"System.Diagnostics.Contracts": "(,4.3.0]",
"System.Diagnostics.Debug": "(,4.3.0]",
"System.Diagnostics.FileVersionInfo": "(,4.3.0]",
"System.Diagnostics.Process": "(,4.3.0]",
"System.Diagnostics.StackTrace": "(,4.3.0]",
"System.Diagnostics.TextWriterTraceListener": "(,4.3.0]",
"System.Diagnostics.Tools": "(,4.3.0]",
"System.Diagnostics.TraceSource": "(,4.3.0]",
"System.Diagnostics.Tracing": "(,4.3.0]",
"System.Drawing.Primitives": "(,4.3.0]",
"System.Dynamic.Runtime": "(,4.3.0]",
"System.Globalization": "(,4.3.0]",
"System.Globalization.Calendars": "(,4.3.0]",
"System.Globalization.Extensions": "(,4.3.0]",
"System.IO": "(,4.3.0]",
"System.IO.Compression": "(,4.3.0]",
"System.IO.Compression.ZipFile": "(,4.3.0]",
"System.IO.FileSystem": "(,4.3.0]",
"System.IO.FileSystem.DriveInfo": "(,4.3.1]",
"System.IO.FileSystem.Primitives": "(,4.3.0]",
"System.IO.FileSystem.Watcher": "(,4.3.0]",
"System.IO.IsolatedStorage": "(,4.3.0]",
"System.IO.MemoryMappedFiles": "(,4.3.0]",
"System.IO.Pipes": "(,4.3.0]",
"System.IO.UnmanagedMemoryStream": "(,4.3.0]",
"System.Linq": "(,4.3.0]",
"System.Linq.Expressions": "(,4.3.0]",
"System.Linq.Parallel": "(,4.3.0]",
"System.Linq.Queryable": "(,4.3.0]",
"System.Memory": "(,4.6.3]",
"System.Net.Http": "(,4.3.4]",
"System.Net.NameResolution": "(,4.3.0]",
"System.Net.NetworkInformation": "(,4.3.0]",
"System.Net.Ping": "(,4.3.0]",
"System.Net.Primitives": "(,4.3.1]",
"System.Net.Requests": "(,4.3.0]",
"System.Net.Security": "(,4.3.2]",
"System.Net.Sockets": "(,4.3.0]",
"System.Net.WebHeaderCollection": "(,4.3.0]",
"System.Net.WebSockets": "(,4.3.0]",
"System.Net.WebSockets.Client": "(,4.3.2]",
"System.Numerics.Vectors": "(,4.6.1]",
"System.ObjectModel": "(,4.3.0]",
"System.Reflection": "(,4.3.0]",
"System.Reflection.DispatchProxy": "(,4.5.1]",
"System.Reflection.Emit": "(,4.7.0]",
"System.Reflection.Emit.ILGeneration": "(,4.7.0]",
"System.Reflection.Emit.Lightweight": "(,4.7.0]",
"System.Reflection.Extensions": "(,4.3.0]",
"System.Reflection.Primitives": "(,4.3.0]",
"System.Resources.Reader": "(,4.3.0]",
"System.Resources.ResourceManager": "(,4.3.0]",
"System.Resources.Writer": "(,4.3.0]",
"System.Runtime": "(,4.3.1]",
"System.Runtime.CompilerServices.VisualC": "(,4.3.0]",
"System.Runtime.Extensions": "(,4.3.1]",
"System.Runtime.Handles": "(,4.3.0]",
"System.Runtime.InteropServices": "(,4.3.0]",
"System.Runtime.InteropServices.RuntimeInformation": "(,4.3.0]",
"System.Runtime.Numerics": "(,4.3.0]",
"System.Runtime.Serialization.Formatters": "(,4.3.0]",
"System.Runtime.Serialization.Json": "(,4.3.0]",
"System.Runtime.Serialization.Primitives": "(,4.3.0]",
"System.Runtime.Serialization.Xml": "(,4.3.0]",
"System.Security.Claims": "(,4.3.0]",
"System.Security.Cryptography.Algorithms": "(,4.3.1]",
"System.Security.Cryptography.Csp": "(,4.3.0]",
"System.Security.Cryptography.Encoding": "(,4.3.0]",
"System.Security.Cryptography.Primitives": "(,4.3.0]",
"System.Security.Cryptography.X509Certificates": "(,4.3.2]",
"System.Security.Principal": "(,4.3.0]",
"System.Security.SecureString": "(,4.3.0]",
"System.Text.Encoding": "(,4.3.0]",
"System.Text.Encoding.Extensions": "(,4.3.0]",
"System.Text.RegularExpressions": "(,4.3.0]",
"System.Threading": "(,4.3.0]",
"System.Threading.Overlapped": "(,4.3.0]",
"System.Threading.Tasks": "(,4.3.0]",
"System.Threading.Tasks.Extensions": "(,4.6.3]",
"System.Threading.Tasks.Parallel": "(,4.3.0]",
"System.Threading.Thread": "(,4.3.0]",
"System.Threading.ThreadPool": "(,4.3.0]",
"System.Threading.Timer": "(,4.3.0]",
"System.ValueTuple": "(,4.6.1]",
"System.Xml.ReaderWriter": "(,4.3.1]",
"System.Xml.XDocument": "(,4.3.0]",
"System.Xml.XmlDocument": "(,4.3.0]",
"System.Xml.XmlSerializer": "(,4.3.0]",
"System.Xml.XPath": "(,4.3.0]",
"System.Xml.XPath.XDocument": "(,4.3.0]"
}
}
}
}
}
@@ -0,0 +1,14 @@
{
"version": 2,
"dgSpecHash": "sqs8WMAlK3E=",
"success": true,
"projectFilePath": "C:\\Users\\sfree\\Repositories\\stevanfreeborn.options\\src\\StevanFreeborn.Options\\StevanFreeborn.Options.csproj",
"expectedPackageFiles": [
"C:\\Users\\sfree\\.nuget\\packages\\microsoft.build.tasks.git\\10.0.201\\microsoft.build.tasks.git.10.0.201.nupkg.sha512",
"C:\\Users\\sfree\\.nuget\\packages\\microsoft.net.illink.tasks\\10.0.5\\microsoft.net.illink.tasks.10.0.5.nupkg.sha512",
"C:\\Users\\sfree\\.nuget\\packages\\microsoft.sourcelink.common\\10.0.201\\microsoft.sourcelink.common.10.0.201.nupkg.sha512",
"C:\\Users\\sfree\\.nuget\\packages\\microsoft.sourcelink.gitea\\10.0.201\\microsoft.sourcelink.gitea.10.0.201.nupkg.sha512",
"C:\\Users\\sfree\\.nuget\\packages\\system.io.hashing\\10.0.5\\system.io.hashing.10.0.5.nupkg.sha512"
],
"logs": []
}
+6
View File
@@ -0,0 +1,6 @@
[*.cs]
dotnet_diagnostic.CA1515.severity = none
dotnet_diagnostic.CA2007.severity = none
dotnet_diagnostic.CA2201.severity = none
dotnet_diagnostic.CA1707.severity = none
+3
View File
@@ -0,0 +1,3 @@
<Project>
<Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))" />
</Project>
+8
View File
@@ -0,0 +1,8 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="TUnit" Version="1.23.7" />
</ItemGroup>
</Project>
@@ -0,0 +1,54 @@
using System.Globalization;
namespace StevanFreeborn.Options.Tests;
public class OptionAsyncExtensionsTests
{
[Test]
public async Task MapAsync_WhenSome_ItShouldTransformValue()
{
var option = Option.Some(5);
var mapped = await option.MapAsync(x => Task.FromResult(x.ToString(CultureInfo.InvariantCulture)));
await Assert.That(mapped.IsSome).IsTrue();
await Assert.That(mapped.Value).IsEqualTo("5");
}
[Test]
public async Task BindAsync_WhenSome_ItShouldChainToBinderResult()
{
var option = Option.Some(5);
var bound = await option.BindAsync(x => Task.FromResult(Option.Some(x.ToString(CultureInfo.InvariantCulture))));
await Assert.That(bound.IsSome).IsTrue();
await Assert.That(bound.Value).IsEqualTo("5");
}
[Test]
public async Task MatchAsync_WhenSome_ItShouldInvokeOnSome()
{
var option = Option.Some("test");
var result = await option.MatchAsync(v => Task.FromResult(v.Length), () => Task.FromResult(0));
await Assert.That(result).IsEqualTo(4);
}
[Test]
public async Task WhereAsync_WhenPredicateMatches_ItShouldReturnSameOption()
{
var option = Option.Some(10);
var filtered = await option.WhereAsync(x => Task.FromResult(x > 5));
await Assert.That(filtered).IsEqualTo(option);
}
[Test]
public async Task OrElseAsync_WhenNone_ItShouldReturnFallbackOption()
{
var option = Option.None<string>();
var result = await option.OrElseAsync(() => Task.FromResult(Option.Some("fallback")));
await Assert.That(result.IsSome).IsTrue();
await Assert.That(result.Value).IsEqualTo("fallback");
}
}
@@ -0,0 +1,193 @@
using System.Globalization;
namespace StevanFreeborn.Options.Tests;
public class OptionTests
{
[Test]
public async Task Some_WhenCalledWithValue_ItShouldReturnSomeOption()
{
var option = Option.Some("test");
await Assert.That(option.IsSome).IsTrue();
await Assert.That(option.IsNone).IsFalse();
await Assert.That(option.Value).IsEqualTo("test");
}
[Test]
public async Task None_WhenCalled_ItShouldReturnNoneOption()
{
var option = Option.None<string>();
await Assert.That(option.IsNone).IsTrue();
await Assert.That(option.IsSome).IsFalse();
}
[Test]
public async Task Some_WhenCalledWithNull_ItShouldThrowArgumentNullException()
{
Assert.Throws<ArgumentNullException>(() => _ = Option.Some<string>(null!));
}
[Test]
public async Task From_WhenValueNotNull_ItShouldReturnSomeOption()
{
var option = Option.From("test");
await Assert.That(option.IsSome).IsTrue();
await Assert.That(option.Value).IsEqualTo("test");
}
[Test]
public async Task From_WhenValueNull_ItShouldReturnNoneOption()
{
var option = Option.From<string>(null);
await Assert.That(option.IsNone).IsTrue();
}
[Test]
public async Task Value_WhenOptionIsNone_ItShouldThrowInvalidOperationException()
{
var option = Option.None<string>();
Assert.Throws<InvalidOperationException>(() => _ = option.Value);
}
[Test]
public async Task ImplicitConversion_FromValue_ItShouldReturnSomeOption()
{
Option<string> option = "test";
await Assert.That(option.IsSome).IsTrue();
await Assert.That(option.Value).IsEqualTo("test");
}
[Test]
public async Task ImplicitConversion_FromNull_ItShouldReturnNoneOption()
{
Option<string> option = null!;
await Assert.That(option.IsNone).IsTrue();
}
[Test]
public async Task Deconstruct_WhenSome_ItShouldReturnTrueAndValue()
{
var option = Option.Some("test");
var (isSome, value) = option;
await Assert.That(isSome).IsTrue();
await Assert.That(value).IsEqualTo("test");
}
[Test]
public async Task Deconstruct_WhenNone_ItShouldReturnFalseAndDefault()
{
var option = Option.None<string>();
var (isSome, value) = option;
await Assert.That(isSome).IsFalse();
await Assert.That(value).IsNull();
}
[Test]
public async Task Map_WhenSome_ItShouldTransformValue()
{
var option = Option.Some(5);
var mapped = option.Map(x => x.ToString(CultureInfo.InvariantCulture));
await Assert.That(mapped.IsSome).IsTrue();
await Assert.That(mapped.Value).IsEqualTo("5");
}
[Test]
public async Task Map_WhenNone_ItShouldReturnNone()
{
var option = Option.None<int>();
var mapped = option.Map(x => x.ToString(CultureInfo.InvariantCulture));
await Assert.That(mapped.IsNone).IsTrue();
}
[Test]
public async Task Bind_WhenSome_ItShouldChainToBinderResult()
{
var option = Option.Some(5);
var bound = option.Bind(x => Option.Some(x.ToString(CultureInfo.InvariantCulture)));
await Assert.That(bound.IsSome).IsTrue();
await Assert.That(bound.Value).IsEqualTo("5");
}
[Test]
public async Task Match_WhenSome_ItShouldReturnOnSomeValue()
{
var option = Option.Some("test");
var result = option.Match(v => v.Length, () => 0);
await Assert.That(result).IsEqualTo(4);
}
[Test]
public async Task Match_WhenNone_ItShouldReturnOnNoneValue()
{
var option = Option.None<string>();
var result = option.Match(v => v.Length, () => -1);
await Assert.That(result).IsEqualTo(-1);
}
[Test]
public async Task Where_WhenPredicateMatches_ItShouldReturnSameOption()
{
var option = Option.Some(10);
var filtered = option.Where(x => x > 5);
await Assert.That(filtered).IsEqualTo(option);
}
[Test]
public async Task Where_WhenPredicateDoesNotMatch_ItShouldReturnNone()
{
var option = Option.Some(3);
var filtered = option.Where(x => x > 5);
await Assert.That(filtered.IsNone).IsTrue();
}
[Test]
public async Task GetValueOrDefault_WhenSome_ItShouldReturnValue()
{
var option = Option.Some("test");
await Assert.That(option.GetValueOrDefault("default")).IsEqualTo("test");
}
[Test]
public async Task GetValueOrDefault_WhenNone_ItShouldReturnDefault()
{
var option = Option.None<string>();
await Assert.That(option.GetValueOrDefault("default")).IsEqualTo("default");
}
[Test]
public async Task OrElse_WhenSome_ItShouldReturnSameOption()
{
var option = Option.Some("test");
var result = option.OrElse(() => Option.Some("fallback"));
await Assert.That(result).IsEqualTo(option);
}
[Test]
public async Task OrElse_WhenNone_ItShouldReturnFallbackOption()
{
var option = Option.None<string>();
var result = option.OrElse(() => Option.Some("fallback"));
await Assert.That(result.IsSome).IsTrue();
await Assert.That(result.Value).IsEqualTo("fallback");
}
}
@@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<RootNamespace>StevanFreeborn.Options.Tests</RootNamespace>
<TargetFramework>net10.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TUnit" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\StevanFreeborn.Options\StevanFreeborn.Options.csproj" />
</ItemGroup>
</Project>
@@ -0,0 +1,14 @@
2026-03-30T19:37:49.1968784+00:00 Microsoft.Testing.Platform.Builder.TestApplication INFORMATION Version: 2.1.0+26fb0d3e539b7900114443db5edf1e0c4e9d4b82
2026-03-30T19:37:49.2082545+00:00 Microsoft.Testing.Platform.Builder.TestApplication INFORMATION Logging mode: asynchronous
2026-03-30T19:37:49.2087577+00:00 Microsoft.Testing.Platform.Builder.TestApplication INFORMATION Logging level: Information
2026-03-30T19:37:49.2087607+00:00 Microsoft.Testing.Platform.Builder.TestApplication INFORMATION CreateBuilderAsync entry time: 19:37:49.183
2026-03-30T19:37:49.2088184+00:00 Microsoft.Testing.Platform.Builder.TestApplication INFORMATION PID: 49068
2026-03-30T19:37:49.2088369+00:00 Microsoft.Testing.Platform.Builder.TestApplication INFORMATION Runtime information: win-x64 - .NET 10.0.5
2026-03-30T19:37:49.2088489+00:00 Microsoft.Testing.Platform.Builder.TestApplication INFORMATION Runtime location: C:\Program Files\dotnet\shared\Microsoft.NETCore.App\10.0.5\System.Private.CoreLib.dll
2026-03-30T19:37:49.2088539+00:00 Microsoft.Testing.Platform.Builder.TestApplication INFORMATION IsDynamicCodeSupported: True
2026-03-30T19:37:49.2089049+00:00 Microsoft.Testing.Platform.Builder.TestApplication INFORMATION Test module: C:\Users\sfree\Repositories\stevanfreeborn.options\tests\StevanFreeborn.Options.Tests\bin\Debug\net10.0\StevanFreeborn.Options.Tests.dll
2026-03-30T19:37:49.2089786+00:00 Microsoft.Testing.Platform.Builder.TestApplication INFORMATION Command line arguments: '--server --diagnostic --diagnostic-verbosity Information --diagnostic-output-directory C:\Users\sfree\Repositories\stevanfreeborn.options\tests\StevanFreeborn.Options.Tests\bin\Debug\net10.0\Log --client-port 51312'
2026-03-30T19:37:49.2094607+00:00 Microsoft.Testing.Platform.Builder.TestApplication INFORMATION TESTINGPLATFORM_DEFAULT_HANG_TIMEOUT: ''
2026-03-30T19:37:49.3949618+00:00 Microsoft.Testing.Platform.Hosts.TestHostBuilder INFORMATION Setting RegisterEnvironmentVariablesConfigurationSource: 'True'
2026-03-30T19:37:49.4030885+00:00 Microsoft.Testing.Platform.Hosts.TestHostBuilder INFORMATION Setting PlatformExitProcessOnUnhandledException: 'False', config file: False environment variable:
2026-03-30T19:37:49.5515838+00:00 Microsoft.Testing.Platform.Requests.TestHostTestFrameworkInvoker INFORMATION Test framework UID: 'TUnitExtension' Version: '1.23.7.0' DisplayName: 'TUnit' Description: 'TUnit Framework for Microsoft Testing Platform'
@@ -0,0 +1,748 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v10.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v10.0": {
"StevanFreeborn.Options.Tests/1.0.0": {
"dependencies": {
"StevanFreeborn.Options": "0.0.0",
"TUnit": "1.23.7"
},
"runtime": {
"StevanFreeborn.Options.Tests.dll": {}
}
},
"EnumerableAsyncProcessor/3.8.4": {
"runtime": {
"lib/net9.0/EnumerableAsyncProcessor.dll": {
"assemblyVersion": "3.8.4.0",
"fileVersion": "3.8.4.0"
}
}
},
"Microsoft.ApplicationInsights/2.23.0": {
"runtime": {
"lib/netstandard2.0/Microsoft.ApplicationInsights.dll": {
"assemblyVersion": "2.23.0.29",
"fileVersion": "2.23.0.29"
}
}
},
"Microsoft.DiaSymReader/2.2.3": {
"runtime": {
"lib/net10.0/Microsoft.DiaSymReader.dll": {
"assemblyVersion": "2.2.3.0",
"fileVersion": "2.200.326.7603"
}
}
},
"Microsoft.Extensions.DependencyModel/8.0.2": {
"runtime": {
"lib/net8.0/Microsoft.Extensions.DependencyModel.dll": {
"assemblyVersion": "8.0.0.2",
"fileVersion": "8.0.1024.46610"
}
}
},
"Microsoft.Testing.Extensions.CodeCoverage/18.5.2": {
"dependencies": {
"Microsoft.DiaSymReader": "2.2.3",
"Microsoft.Extensions.DependencyModel": "8.0.2",
"Microsoft.Testing.Platform": "2.1.0"
},
"runtime": {
"lib/net8.0/Microsoft.CodeCoverage.Core.dll": {
"assemblyVersion": "18.5.2.0",
"fileVersion": "18.500.226.15207"
},
"lib/net8.0/Microsoft.CodeCoverage.Instrumentation.Core.dll": {
"assemblyVersion": "18.5.2.0",
"fileVersion": "18.500.226.15207"
},
"lib/net8.0/Microsoft.CodeCoverage.Instrumentation.dll": {
"assemblyVersion": "18.5.2.0",
"fileVersion": "18.500.226.15207"
},
"lib/net8.0/Microsoft.CodeCoverage.Interprocess.dll": {
"assemblyVersion": "18.5.2.0",
"fileVersion": "18.500.226.15207"
},
"lib/net8.0/Microsoft.Testing.Extensions.CodeCoverage.dll": {
"assemblyVersion": "18.5.2.0",
"fileVersion": "18.500.226.15207"
},
"lib/net8.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {
"assemblyVersion": "15.0.0.0",
"fileVersion": "18.500.226.15207"
},
"lib/net8.0/Mono.Cecil.Mdb.dll": {
"assemblyVersion": "0.11.5.0",
"fileVersion": "0.11.5.0"
},
"lib/net8.0/Mono.Cecil.Pdb.dll": {
"assemblyVersion": "0.11.5.0",
"fileVersion": "0.11.5.0"
},
"lib/net8.0/Mono.Cecil.Rocks.dll": {
"assemblyVersion": "0.11.5.0",
"fileVersion": "0.11.5.0"
},
"lib/net8.0/Mono.Cecil.dll": {
"assemblyVersion": "0.11.5.0",
"fileVersion": "0.11.5.0"
}
},
"resources": {
"lib/net8.0/cs/Microsoft.Testing.Extensions.CodeCoverage.resources.dll": {
"locale": "cs"
},
"lib/net8.0/de/Microsoft.Testing.Extensions.CodeCoverage.resources.dll": {
"locale": "de"
},
"lib/net8.0/es/Microsoft.Testing.Extensions.CodeCoverage.resources.dll": {
"locale": "es"
},
"lib/net8.0/fr/Microsoft.Testing.Extensions.CodeCoverage.resources.dll": {
"locale": "fr"
},
"lib/net8.0/hu/Microsoft.Testing.Extensions.CodeCoverage.resources.dll": {
"locale": "hu"
},
"lib/net8.0/it/Microsoft.Testing.Extensions.CodeCoverage.resources.dll": {
"locale": "it"
},
"lib/net8.0/ja/Microsoft.Testing.Extensions.CodeCoverage.resources.dll": {
"locale": "ja"
},
"lib/net8.0/ko/Microsoft.Testing.Extensions.CodeCoverage.resources.dll": {
"locale": "ko"
},
"lib/net8.0/nl/Microsoft.Testing.Extensions.CodeCoverage.resources.dll": {
"locale": "nl"
},
"lib/net8.0/pl/Microsoft.Testing.Extensions.CodeCoverage.resources.dll": {
"locale": "pl"
},
"lib/net8.0/pt-BR/Microsoft.Testing.Extensions.CodeCoverage.resources.dll": {
"locale": "pt-BR"
},
"lib/net8.0/pt-PT/Microsoft.Testing.Extensions.CodeCoverage.resources.dll": {
"locale": "pt-PT"
},
"lib/net8.0/ru/Microsoft.Testing.Extensions.CodeCoverage.resources.dll": {
"locale": "ru"
},
"lib/net8.0/sv/Microsoft.Testing.Extensions.CodeCoverage.resources.dll": {
"locale": "sv"
},
"lib/net8.0/tr/Microsoft.Testing.Extensions.CodeCoverage.resources.dll": {
"locale": "tr"
},
"lib/net8.0/zh-Hans/Microsoft.Testing.Extensions.CodeCoverage.resources.dll": {
"locale": "zh-Hans"
},
"lib/net8.0/zh-Hant/Microsoft.Testing.Extensions.CodeCoverage.resources.dll": {
"locale": "zh-Hant"
}
},
"runtimeTargets": {
"runtimes/linux-musl-x64/native/Cov_x64.config": {
"rid": "linux-musl-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/linux-musl-x64/native/libCoverageInstrumentationMethod.so": {
"rid": "linux-musl-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/linux-musl-x64/native/libInstrumentationEngine.so": {
"rid": "linux-musl-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/linux-x64/native/Cov_x64.config": {
"rid": "linux-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/linux-x64/native/libCoverageInstrumentationMethod.so": {
"rid": "linux-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/linux-x64/native/libInstrumentationEngine.so": {
"rid": "linux-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/osx-x64/native/Cov_x64.config": {
"rid": "osx-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/osx-x64/native/libCoverageInstrumentationMethod.dylib": {
"rid": "osx-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/osx-x64/native/libInstrumentationEngine.dylib": {
"rid": "osx-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-arm64/native/CodeCoverageMessages.dll": {
"rid": "win-arm64",
"assetType": "native",
"fileVersion": "18.2.26152.59847"
},
"runtimes/win-arm64/native/Cov_arm64.config": {
"rid": "win-arm64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-arm64/native/Cov_x64.config": {
"rid": "win-arm64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-arm64/native/Cov_x86.config": {
"rid": "win-arm64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-arm64/native/MicrosoftInstrumentationEngine_arm64.dll": {
"rid": "win-arm64",
"assetType": "native",
"fileVersion": "15.1.0.49995"
},
"runtimes/win-arm64/native/MicrosoftInstrumentationEngine_x64.dll": {
"rid": "win-arm64",
"assetType": "native",
"fileVersion": "15.1.0.49995"
},
"runtimes/win-arm64/native/MicrosoftInstrumentationEngine_x86.dll": {
"rid": "win-arm64",
"assetType": "native",
"fileVersion": "15.1.0.49995"
},
"runtimes/win-arm64/native/covrun32.dll": {
"rid": "win-arm64",
"assetType": "native",
"fileVersion": "18.2.26152.59847"
},
"runtimes/win-arm64/native/covrun64.dll": {
"rid": "win-arm64",
"assetType": "native",
"fileVersion": "18.2.26152.59847"
},
"runtimes/win-arm64/native/covrunarm64.dll": {
"rid": "win-arm64",
"assetType": "native",
"fileVersion": "18.2.26152.59847"
},
"runtimes/win-arm64/native/msdia140.dll": {
"rid": "win-arm64",
"assetType": "native",
"fileVersion": "14.50.35719.0"
},
"runtimes/win-x64/native/CodeCoverageMessages.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "18.2.26152.59847"
},
"runtimes/win-x64/native/Cov_arm64.config": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x64/native/Cov_x64.config": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x64/native/Cov_x86.config": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x64/native/MicrosoftInstrumentationEngine_arm64.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "15.1.0.49995"
},
"runtimes/win-x64/native/MicrosoftInstrumentationEngine_x64.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "15.1.0.49995"
},
"runtimes/win-x64/native/MicrosoftInstrumentationEngine_x86.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "15.1.0.49995"
},
"runtimes/win-x64/native/covrun32.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "18.2.26152.59847"
},
"runtimes/win-x64/native/covrun64.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "18.2.26152.59847"
},
"runtimes/win-x64/native/covrunarm64.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "18.2.26152.59847"
},
"runtimes/win-x64/native/msdia140.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "14.50.35719.0"
},
"runtimes/win-x86/native/CodeCoverageMessages.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "18.2.26152.59847"
},
"runtimes/win-x86/native/Cov_arm64.config": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x86/native/Cov_x64.config": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x86/native/Cov_x86.config": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x86/native/MicrosoftInstrumentationEngine_arm64.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "15.1.0.49995"
},
"runtimes/win-x86/native/MicrosoftInstrumentationEngine_x64.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "15.1.0.49995"
},
"runtimes/win-x86/native/MicrosoftInstrumentationEngine_x86.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "15.1.0.49995"
},
"runtimes/win-x86/native/covrun32.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "18.2.26152.59847"
},
"runtimes/win-x86/native/covrun64.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "18.2.26152.59847"
},
"runtimes/win-x86/native/covrunarm64.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "18.2.26152.59847"
},
"runtimes/win-x86/native/msdia140.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "14.50.35719.0"
}
}
},
"Microsoft.Testing.Extensions.Telemetry/2.1.0": {
"dependencies": {
"Microsoft.ApplicationInsights": "2.23.0",
"Microsoft.Testing.Platform": "2.1.0"
},
"runtime": {
"lib/net9.0/Microsoft.Testing.Extensions.Telemetry.dll": {
"assemblyVersion": "2.1.0.0",
"fileVersion": "2.100.26.10311"
}
},
"resources": {
"lib/net9.0/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
"locale": "cs"
},
"lib/net9.0/de/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
"locale": "de"
},
"lib/net9.0/es/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
"locale": "es"
},
"lib/net9.0/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
"locale": "fr"
},
"lib/net9.0/it/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
"locale": "it"
},
"lib/net9.0/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
"locale": "ja"
},
"lib/net9.0/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
"locale": "ko"
},
"lib/net9.0/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
"locale": "pl"
},
"lib/net9.0/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
"locale": "pt-BR"
},
"lib/net9.0/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
"locale": "ru"
},
"lib/net9.0/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
"locale": "tr"
},
"lib/net9.0/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
"locale": "zh-Hans"
},
"lib/net9.0/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
"locale": "zh-Hant"
}
}
},
"Microsoft.Testing.Extensions.TrxReport/2.1.0": {
"dependencies": {
"Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0",
"Microsoft.Testing.Platform": "2.1.0"
},
"runtime": {
"lib/net9.0/Microsoft.Testing.Extensions.TrxReport.dll": {
"assemblyVersion": "2.1.0.0",
"fileVersion": "2.100.26.10311"
}
},
"resources": {
"lib/net9.0/cs/Microsoft.Testing.Extensions.TrxReport.resources.dll": {
"locale": "cs"
},
"lib/net9.0/de/Microsoft.Testing.Extensions.TrxReport.resources.dll": {
"locale": "de"
},
"lib/net9.0/es/Microsoft.Testing.Extensions.TrxReport.resources.dll": {
"locale": "es"
},
"lib/net9.0/fr/Microsoft.Testing.Extensions.TrxReport.resources.dll": {
"locale": "fr"
},
"lib/net9.0/it/Microsoft.Testing.Extensions.TrxReport.resources.dll": {
"locale": "it"
},
"lib/net9.0/ja/Microsoft.Testing.Extensions.TrxReport.resources.dll": {
"locale": "ja"
},
"lib/net9.0/ko/Microsoft.Testing.Extensions.TrxReport.resources.dll": {
"locale": "ko"
},
"lib/net9.0/pl/Microsoft.Testing.Extensions.TrxReport.resources.dll": {
"locale": "pl"
},
"lib/net9.0/pt-BR/Microsoft.Testing.Extensions.TrxReport.resources.dll": {
"locale": "pt-BR"
},
"lib/net9.0/ru/Microsoft.Testing.Extensions.TrxReport.resources.dll": {
"locale": "ru"
},
"lib/net9.0/tr/Microsoft.Testing.Extensions.TrxReport.resources.dll": {
"locale": "tr"
},
"lib/net9.0/zh-Hans/Microsoft.Testing.Extensions.TrxReport.resources.dll": {
"locale": "zh-Hans"
},
"lib/net9.0/zh-Hant/Microsoft.Testing.Extensions.TrxReport.resources.dll": {
"locale": "zh-Hant"
}
}
},
"Microsoft.Testing.Extensions.TrxReport.Abstractions/2.1.0": {
"dependencies": {
"Microsoft.Testing.Platform": "2.1.0"
},
"runtime": {
"lib/net9.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll": {
"assemblyVersion": "2.1.0.0",
"fileVersion": "2.100.26.10311"
}
}
},
"Microsoft.Testing.Platform/2.1.0": {
"runtime": {
"lib/net9.0/Microsoft.Testing.Platform.dll": {
"assemblyVersion": "2.1.0.0",
"fileVersion": "2.100.26.10311"
}
},
"resources": {
"lib/net9.0/cs/Microsoft.Testing.Platform.resources.dll": {
"locale": "cs"
},
"lib/net9.0/de/Microsoft.Testing.Platform.resources.dll": {
"locale": "de"
},
"lib/net9.0/es/Microsoft.Testing.Platform.resources.dll": {
"locale": "es"
},
"lib/net9.0/fr/Microsoft.Testing.Platform.resources.dll": {
"locale": "fr"
},
"lib/net9.0/it/Microsoft.Testing.Platform.resources.dll": {
"locale": "it"
},
"lib/net9.0/ja/Microsoft.Testing.Platform.resources.dll": {
"locale": "ja"
},
"lib/net9.0/ko/Microsoft.Testing.Platform.resources.dll": {
"locale": "ko"
},
"lib/net9.0/pl/Microsoft.Testing.Platform.resources.dll": {
"locale": "pl"
},
"lib/net9.0/pt-BR/Microsoft.Testing.Platform.resources.dll": {
"locale": "pt-BR"
},
"lib/net9.0/ru/Microsoft.Testing.Platform.resources.dll": {
"locale": "ru"
},
"lib/net9.0/tr/Microsoft.Testing.Platform.resources.dll": {
"locale": "tr"
},
"lib/net9.0/zh-Hans/Microsoft.Testing.Platform.resources.dll": {
"locale": "zh-Hans"
},
"lib/net9.0/zh-Hant/Microsoft.Testing.Platform.resources.dll": {
"locale": "zh-Hant"
}
}
},
"Microsoft.Testing.Platform.MSBuild/2.1.0": {
"dependencies": {
"Microsoft.Testing.Platform": "2.1.0"
},
"runtime": {
"lib/net9.0/Microsoft.Testing.Extensions.MSBuild.dll": {
"assemblyVersion": "2.1.0.0",
"fileVersion": "2.100.26.10311"
}
},
"resources": {
"lib/net9.0/cs/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
"locale": "cs"
},
"lib/net9.0/de/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
"locale": "de"
},
"lib/net9.0/es/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
"locale": "es"
},
"lib/net9.0/fr/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
"locale": "fr"
},
"lib/net9.0/it/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
"locale": "it"
},
"lib/net9.0/ja/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
"locale": "ja"
},
"lib/net9.0/ko/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
"locale": "ko"
},
"lib/net9.0/pl/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
"locale": "pl"
},
"lib/net9.0/pt-BR/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
"locale": "pt-BR"
},
"lib/net9.0/ru/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
"locale": "ru"
},
"lib/net9.0/tr/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
"locale": "tr"
},
"lib/net9.0/zh-Hans/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
"locale": "zh-Hans"
},
"lib/net9.0/zh-Hant/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
"locale": "zh-Hant"
}
}
},
"TUnit/1.23.7": {
"dependencies": {
"Microsoft.Testing.Extensions.CodeCoverage": "18.5.2",
"Microsoft.Testing.Extensions.Telemetry": "2.1.0",
"Microsoft.Testing.Extensions.TrxReport": "2.1.0",
"TUnit.Assertions": "1.23.7",
"TUnit.Engine": "1.23.7"
},
"runtime": {
"lib/net10.0/TUnit.dll": {
"assemblyVersion": "1.23.7.0",
"fileVersion": "1.23.7.0"
}
}
},
"TUnit.Assertions/1.23.7": {
"runtime": {
"lib/net10.0/TUnit.Assertions.dll": {
"assemblyVersion": "1.23.7.0",
"fileVersion": "1.23.7.0"
}
}
},
"TUnit.Core/1.23.7": {
"runtime": {
"lib/net10.0/TUnit.Core.dll": {
"assemblyVersion": "1.23.7.0",
"fileVersion": "1.23.7.0"
}
}
},
"TUnit.Engine/1.23.7": {
"dependencies": {
"EnumerableAsyncProcessor": "3.8.4",
"Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.1.0",
"Microsoft.Testing.Platform": "2.1.0",
"Microsoft.Testing.Platform.MSBuild": "2.1.0",
"TUnit.Core": "1.23.7"
},
"runtime": {
"lib/net10.0/TUnit.Engine.dll": {
"assemblyVersion": "1.23.7.0",
"fileVersion": "1.23.7.0"
}
}
},
"StevanFreeborn.Options/0.0.0": {
"runtime": {
"StevanFreeborn.Options.dll": {
"assemblyVersion": "0.0.0.0",
"fileVersion": "0.0.0.0"
}
}
}
}
},
"libraries": {
"StevanFreeborn.Options.Tests/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"EnumerableAsyncProcessor/3.8.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-KlbpupRCz3Kf+P7gsiDvFXJ980i/9lfihMZFmmxIk0Gf6mopEjy74OTJZmdaKDQpE29eQDBnMZB5khyW3eugrg==",
"path": "enumerableasyncprocessor/3.8.4",
"hashPath": "enumerableasyncprocessor.3.8.4.nupkg.sha512"
},
"Microsoft.ApplicationInsights/2.23.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-nWArUZTdU7iqZLycLKWe0TDms48KKGE6pONH2terYNa8REXiqixrMOkf1sk5DHGMaUTqONU2YkS4SAXBhLStgw==",
"path": "microsoft.applicationinsights/2.23.0",
"hashPath": "microsoft.applicationinsights.2.23.0.nupkg.sha512"
},
"Microsoft.DiaSymReader/2.2.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-bhwzJfzyiJM0nXJyNB7Y9OfsEXyxLdDBHG99soIp5JjnPydwkOaBdRCtRtWgQh3noSLi2cSIZ/wpbHNNE9knxQ==",
"path": "microsoft.diasymreader/2.2.3",
"hashPath": "microsoft.diasymreader.2.2.3.nupkg.sha512"
},
"Microsoft.Extensions.DependencyModel/8.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-mUBDZZRgZrSyFOsJ2qJJ9fXfqd/kXJwf3AiDoqLD9m6TjY5OO/vLNOb9fb4juC0487eq4hcGN/M2Rh/CKS7QYw==",
"path": "microsoft.extensions.dependencymodel/8.0.2",
"hashPath": "microsoft.extensions.dependencymodel.8.0.2.nupkg.sha512"
},
"Microsoft.Testing.Extensions.CodeCoverage/18.5.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-UNcGLx9pVtlXF8MPDR8KDp+/OKKNIJjpzwRyZSt609TSGvaD8mtuQMb5GKZvhMucPp0a5Juvn3kxXDceQZWmAg==",
"path": "microsoft.testing.extensions.codecoverage/18.5.2",
"hashPath": "microsoft.testing.extensions.codecoverage.18.5.2.nupkg.sha512"
},
"Microsoft.Testing.Extensions.Telemetry/2.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-5TwgTx2u7k9Al/xbZ18QXq4Hdy2xewkVTI6K3sk+jY2ykqUkIKNuj7rFu3GOV5KnEUkevhw6eZcyZs77STHJIA==",
"path": "microsoft.testing.extensions.telemetry/2.1.0",
"hashPath": "microsoft.testing.extensions.telemetry.2.1.0.nupkg.sha512"
},
"Microsoft.Testing.Extensions.TrxReport/2.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-cXmP225WcMLLOSrW8xekaNhfzdBwXX3cbXbE5qSzmLbK0KZe3z8rAObKj70FWiPPPzm2W22x0ZW93gsmAfK6Mg==",
"path": "microsoft.testing.extensions.trxreport/2.1.0",
"hashPath": "microsoft.testing.extensions.trxreport.2.1.0.nupkg.sha512"
},
"Microsoft.Testing.Extensions.TrxReport.Abstractions/2.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-D8xmIJYQFJ6D49Rx5/vPrkZZxb338Jkew+eSqZLBfBiWKw4QZKy3i1BOXiLfz0lOmaNErwDz/YWRojCdNl+B9Q==",
"path": "microsoft.testing.extensions.trxreport.abstractions/2.1.0",
"hashPath": "microsoft.testing.extensions.trxreport.abstractions.2.1.0.nupkg.sha512"
},
"Microsoft.Testing.Platform/2.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-aHkjNTGIA+Zbdw6RJgSFrbDrCjO0CgqpElqYcvkRSeUhBv2bKarnvU3ep786U7UqrPlArT/B7VmImRibJD0Zrg==",
"path": "microsoft.testing.platform/2.1.0",
"hashPath": "microsoft.testing.platform.2.1.0.nupkg.sha512"
},
"Microsoft.Testing.Platform.MSBuild/2.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-UpfPebXQtHGrWz21+YLHmJSm+5zsuPE9U9pfdCtoB+67g75fDmWlNgpkH2ZmdVhSwkjNIed9Icg8Iu63z2ei5Q==",
"path": "microsoft.testing.platform.msbuild/2.1.0",
"hashPath": "microsoft.testing.platform.msbuild.2.1.0.nupkg.sha512"
},
"TUnit/1.23.7": {
"type": "package",
"serviceable": true,
"sha512": "sha512-PVEu/QwlNe2413Qpfru4B7wixLTKGcjqxISKXqUCGAeEKQ84NHMvNVVnm5JKbpMsam2Sf79S6S2HaAIaXy7NYA==",
"path": "tunit/1.23.7",
"hashPath": "tunit.1.23.7.nupkg.sha512"
},
"TUnit.Assertions/1.23.7": {
"type": "package",
"serviceable": true,
"sha512": "sha512-eWCF4SVUxu4vEfJj8wZuE92ONv5lZdL/E3b3Y/axpM55BG0X4dRpvf0Hm80DNB9uJoBjdq9u/QMom2G1wsENgQ==",
"path": "tunit.assertions/1.23.7",
"hashPath": "tunit.assertions.1.23.7.nupkg.sha512"
},
"TUnit.Core/1.23.7": {
"type": "package",
"serviceable": true,
"sha512": "sha512-035xcZ8Lf9y7FI93uvKTWqlwKxY2FBPZ00k0awur38iStXP9Vw3C+Hfz5hDHHryU+H8r0FiYYkqzGDannZ2G/g==",
"path": "tunit.core/1.23.7",
"hashPath": "tunit.core.1.23.7.nupkg.sha512"
},
"TUnit.Engine/1.23.7": {
"type": "package",
"serviceable": true,
"sha512": "sha512-yek0/Lg0jncyu5mHfLRZyBFNVEbWIofpKcWP5VpscY46IzOeqqgPSURhkg3t52zEbCEPyPOmSZrcDTK2undk7g==",
"path": "tunit.engine/1.23.7",
"hashPath": "tunit.engine.1.23.7.nupkg.sha512"
},
"StevanFreeborn.Options/0.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}
@@ -0,0 +1,12 @@
{
"runtimeOptions": {
"tfm": "net10.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "10.0.0"
},
"configProperties": {
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}
@@ -0,0 +1,205 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>StevanFreeborn.Options</name>
</assembly>
<members>
<member name="T:StevanFreeborn.Options.Option">
<summary>
Provides factory methods for creating <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
</member>
<member name="M:StevanFreeborn.Options.Option.Some``1(``0)">
<summary>
Creates an option with the specified value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="value">The value.</param>
<returns>An <see cref="T:StevanFreeborn.Options.Option`1"/> with the specified value.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option.None``1">
<summary>
Creates an empty option.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<returns>An empty <see cref="T:StevanFreeborn.Options.Option`1"/>.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option.From``1(``0)">
<summary>
Creates an option from the specified value, returning None if the value is null.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="value">The value.</param>
<returns>An <see cref="T:StevanFreeborn.Options.Option`1"/> with the value if not null, otherwise None.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option.FromT``1(``0)">
<summary>
Converts a value to an <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="value">The value.</param>
<returns>An <see cref="T:StevanFreeborn.Options.Option`1"/>.</returns>
</member>
<member name="T:StevanFreeborn.Options.Option`1">
<summary>
Represents an optional value that may or may not be present.
</summary>
<typeparam name="T">The type of the value.</typeparam>
</member>
<member name="P:StevanFreeborn.Options.Option`1.IsSome">
<summary>
Gets a value indicating whether the option has a value.
</summary>
</member>
<member name="P:StevanFreeborn.Options.Option`1.IsNone">
<summary>
Gets a value indicating whether the option is empty.
</summary>
</member>
<member name="P:StevanFreeborn.Options.Option`1.Value">
<summary>
Gets the value of the option.
</summary>
<exception cref="T:System.InvalidOperationException">Thrown when accessing Value on a None option.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.op_Implicit(`0)~StevanFreeborn.Options.Option{`0}">
<summary>
Implicitly converts a value to an <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
<param name="value">The value to convert.</param>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Deconstruct(System.Boolean@,`0@)">
<summary>
Deconstructs the option into its components.
</summary>
<param name="isSome">Indicates whether the option has a value.</param>
<param name="value">The value of the option.</param>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Map``1(System.Func{`0,``0})">
<summary>
Maps the value to a new type if the option has a value.
</summary>
<typeparam name="TNew">The new type.</typeparam>
<param name="mapper">The function to map the value.</param>
<returns>A new <see cref="T:StevanFreeborn.Options.Option`1"/> with the mapped value if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when mapper is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Bind``1(System.Func{`0,StevanFreeborn.Options.Option{``0}})">
<summary>
Binds to a new option if the current option has a value.
</summary>
<typeparam name="TNew">The new option type.</typeparam>
<param name="binder">The function to bind to on Some.</param>
<returns>The result of the binder function if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when binder is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Match``1(System.Func{`0,``0},System.Func{``0})">
<summary>
Matches the option and returns a value based on whether it has a value.
</summary>
<typeparam name="TResult">The type of the result.</typeparam>
<param name="onSome">The function to execute on Some.</param>
<param name="onNone">The function to execute on None.</param>
<returns>The result of the appropriate function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when onSome or onNone is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Match(System.Action{`0},System.Action)">
<summary>
Matches the option and executes the appropriate action.
</summary>
<param name="onSome">The action to execute on Some.</param>
<param name="onNone">The action to execute on None.</param>
<exception cref="T:System.ArgumentNullException">Thrown when onSome or onNone is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.Where(System.Func{`0,System.Boolean})">
<summary>
Filters the option based on the specified predicate.
</summary>
<param name="predicate">The predicate to filter with.</param>
<returns>The current option if Some and the predicate is met, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when predicate is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.GetValueOrDefault(`0)">
<summary>
Gets the value of the option if Some, otherwise the specified default value.
</summary>
<param name="defaultValue">The default value.</param>
<returns>The value if Some, otherwise the default value.</returns>
</member>
<member name="M:StevanFreeborn.Options.Option`1.GetValueOrDefault(System.Func{`0})">
<summary>
Gets the value of the option if Some, otherwise the result of the specified factory function.
</summary>
<param name="factory">The factory function to provide the default value.</param>
<returns>The value if Some, otherwise the result of the factory function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when factory is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.Option`1.OrElse(System.Func{StevanFreeborn.Options.Option{`0}})">
<summary>
Returns the current option if Some, otherwise the result of the specified factory function.
</summary>
<param name="factory">The factory function to provide the fallback option.</param>
<returns>The current option if Some, otherwise the result of the factory function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when factory is null.</exception>
</member>
<member name="T:StevanFreeborn.Options.OptionAsyncExtensions">
<summary>
Provides async extension methods for <see cref="T:StevanFreeborn.Options.Option`1"/>.
</summary>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.MapAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{``1}})">
<summary>
Maps the value to a new type asynchronously if the option has a value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<typeparam name="TNew">The new type.</typeparam>
<param name="option">The option.</param>
<param name="mapper">The async function to map the value.</param>
<returns>A task containing a new <see cref="T:StevanFreeborn.Options.Option`1"/> with the mapped value if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or mapper is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.BindAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{StevanFreeborn.Options.Option{``1}}})">
<summary>
Binds to a new async result if the current option has a value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<typeparam name="TNew">The new result type.</typeparam>
<param name="option">The option.</param>
<param name="binder">The async function to bind to on Some.</param>
<returns>A task containing the result of the binder function if Some, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or binder is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.MatchAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{``1}},System.Func{System.Threading.Tasks.Task{``1}})">
<summary>
Matches the option asynchronously and returns a value based on whether it has a value.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<typeparam name="TResult">The type of the result.</typeparam>
<param name="option">The option.</param>
<param name="onSome">The async function to execute on Some.</param>
<param name="onNone">The async function to execute on None.</param>
<returns>A task containing the result of the appropriate function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option, onSome, or onNone is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.WhereAsync``1(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{System.Boolean}})">
<summary>
Filters the option asynchronously based on the specified predicate.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="option">The option.</param>
<param name="predicate">The async predicate to filter with.</param>
<returns>A task containing the current option if Some and the predicate is met, otherwise None.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or predicate is null.</exception>
</member>
<member name="M:StevanFreeborn.Options.OptionAsyncExtensions.OrElseAsync``1(StevanFreeborn.Options.Option{``0},System.Func{System.Threading.Tasks.Task{StevanFreeborn.Options.Option{``0}}})">
<summary>
Returns the current option if Some, otherwise the result of the specified async factory function.
</summary>
<typeparam name="T">The type of the value.</typeparam>
<param name="option">The option.</param>
<param name="factory">The async factory function to provide the fallback option.</param>
<returns>A task containing the current option if Some, otherwise the result of the factory function.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when option or factory is null.</exception>
</member>
</members>
</doc>

Some files were not shown because too many files have changed in this diff Show More