copy basic files into repo + common build workflow

This commit is contained in:
David Vreony 2021-11-14 20:37:38 +00:00
Родитель fc8b827b9d
Коммит aafa6cacb7
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 5202E5394EAE31BF
10 изменённых файлов: 1301 добавлений и 0 удалений

464
.editorconfig Normal file
Просмотреть файл

@ -0,0 +1,464 @@
# editorconfig.org
# top-most EditorConfig file
root = true
# Default settings:
# A newline ending every file
# Use 4 spaces as indentation
[*]
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
# C# files
[*.cs]
# New line preferences
csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true
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_switch_labels = true
csharp_indent_labels = one_less_than_current
# Modifier preferences
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion
# avoid this. unless absolutely necessary
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_event = false:suggestion
# Types: use keywords instead of BCL types, and permit var only when the type is clear
csharp_style_var_for_built_in_types = true:suggestion
csharp_style_var_when_type_is_apparent = true:none
csharp_style_var_elsewhere = true:suggestion
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
dotnet_style_predefined_type_for_member_access = true:suggestion
# name all constant fields using PascalCase
dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields
dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style
dotnet_naming_symbols.constant_fields.applicable_kinds = field
dotnet_naming_symbols.constant_fields.required_modifiers = const
dotnet_naming_style.pascal_case_style.capitalization = pascal_case
# static fields should have _ prefix
dotnet_naming_rule.static_fields_should_have_prefix.severity = suggestion
dotnet_naming_rule.static_fields_should_have_prefix.symbols = static_fields
dotnet_naming_rule.static_fields_should_have_prefix.style = static_prefix_style
dotnet_naming_symbols.static_fields.applicable_kinds = field
dotnet_naming_symbols.static_fields.required_modifiers = static
dotnet_naming_symbols.static_fields.applicable_accessibilities = private, internal, private_protected
dotnet_naming_style.static_prefix_style.required_prefix = _
dotnet_naming_style.static_prefix_style.capitalization = camel_case
# internal and private fields should be _camelCase
dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion
dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields
dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style
dotnet_naming_symbols.private_internal_fields.applicable_kinds = field
dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal
dotnet_naming_style.camel_case_underscore_style.required_prefix = _
dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case
# Code style defaults
csharp_using_directive_placement = outside_namespace:suggestion
dotnet_sort_system_directives_first = true
csharp_prefer_braces = true:suggestion
csharp_preserve_single_line_blocks = true:none
csharp_preserve_single_line_statements = false:none
csharp_prefer_static_local_function = true:suggestion
csharp_prefer_simple_using_statement = false:none
csharp_style_prefer_switch_expression = true:suggestion
# Code quality
dotnet_style_readonly_field = true:suggestion
dotnet_code_quality_unused_parameters = non_public:suggestion
# Expression-level preferences
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_auto_properties = true:suggestion
dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion
dotnet_style_prefer_conditional_expression_over_return = true:suggestion
csharp_prefer_simple_default_expression = true:suggestion
# Expression-bodied members
csharp_style_expression_bodied_methods = true:suggestion
csharp_style_expression_bodied_constructors = true:suggestion
csharp_style_expression_bodied_operators = true:suggestion
csharp_style_expression_bodied_properties = true:suggestion
csharp_style_expression_bodied_indexers = true:suggestion
csharp_style_expression_bodied_accessors = true:suggestion
csharp_style_expression_bodied_lambdas = true:suggestion
csharp_style_expression_bodied_local_functions = true:suggestion
# Pattern matching
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion
# Null checking preferences
csharp_style_throw_expression = true:suggestion
csharp_style_conditional_delegate_call = true:suggestion
# Other features
csharp_style_prefer_index_operator = false:none
csharp_style_prefer_range_operator = false:none
csharp_style_pattern_local_over_anonymous_function = false:none
# 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 = do_not_ignore
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
# analyzers
dotnet_diagnostic.AvoidAsyncVoid.severity = suggestion
dotnet_diagnostic.CA1000.severity = none
dotnet_diagnostic.CA1001.severity = error
dotnet_diagnostic.CA1009.severity = error
dotnet_diagnostic.CA1016.severity = error
dotnet_diagnostic.CA1030.severity = none
dotnet_diagnostic.CA1031.severity = none
dotnet_diagnostic.CA1033.severity = none
dotnet_diagnostic.CA1036.severity = none
dotnet_diagnostic.CA1049.severity = error
dotnet_diagnostic.CA1056.severity = suggestion
dotnet_diagnostic.CA1060.severity = error
dotnet_diagnostic.CA1061.severity = error
dotnet_diagnostic.CA1063.severity = error
dotnet_diagnostic.CA1065.severity = error
dotnet_diagnostic.CA1301.severity = error
dotnet_diagnostic.CA1303.severity = none
dotnet_diagnostic.CA1308.severity = none
dotnet_diagnostic.CA1400.severity = error
dotnet_diagnostic.CA1401.severity = error
dotnet_diagnostic.CA1403.severity = error
dotnet_diagnostic.CA1404.severity = error
dotnet_diagnostic.CA1405.severity = error
dotnet_diagnostic.CA1410.severity = error
dotnet_diagnostic.CA1415.severity = error
dotnet_diagnostic.CA1507.severity = error
dotnet_diagnostic.CA1710.severity = suggestion
dotnet_diagnostic.CA1724.severity = none
dotnet_diagnostic.CA1810.severity = none
dotnet_diagnostic.CA1821.severity = error
dotnet_diagnostic.CA1900.severity = error
dotnet_diagnostic.CA1901.severity = error
dotnet_diagnostic.CA2000.severity = none
dotnet_diagnostic.CA2002.severity = error
dotnet_diagnostic.CA2007.severity = none
dotnet_diagnostic.CA2100.severity = error
dotnet_diagnostic.CA2101.severity = error
dotnet_diagnostic.CA2108.severity = error
dotnet_diagnostic.CA2111.severity = error
dotnet_diagnostic.CA2112.severity = error
dotnet_diagnostic.CA2114.severity = error
dotnet_diagnostic.CA2116.severity = error
dotnet_diagnostic.CA2117.severity = error
dotnet_diagnostic.CA2122.severity = error
dotnet_diagnostic.CA2123.severity = error
dotnet_diagnostic.CA2124.severity = error
dotnet_diagnostic.CA2126.severity = error
dotnet_diagnostic.CA2131.severity = error
dotnet_diagnostic.CA2132.severity = error
dotnet_diagnostic.CA2133.severity = error
dotnet_diagnostic.CA2134.severity = error
dotnet_diagnostic.CA2137.severity = error
dotnet_diagnostic.CA2138.severity = error
dotnet_diagnostic.CA2140.severity = error
dotnet_diagnostic.CA2141.severity = error
dotnet_diagnostic.CA2146.severity = error
dotnet_diagnostic.CA2147.severity = error
dotnet_diagnostic.CA2149.severity = error
dotnet_diagnostic.CA2200.severity = error
dotnet_diagnostic.CA2202.severity = error
dotnet_diagnostic.CA2207.severity = error
dotnet_diagnostic.CA2212.severity = error
dotnet_diagnostic.CA2213.severity = error
dotnet_diagnostic.CA2214.severity = error
dotnet_diagnostic.CA2216.severity = error
dotnet_diagnostic.CA2220.severity = error
dotnet_diagnostic.CA2229.severity = error
dotnet_diagnostic.CA2231.severity = error
dotnet_diagnostic.CA2232.severity = error
dotnet_diagnostic.CA2235.severity = error
dotnet_diagnostic.CA2236.severity = error
dotnet_diagnostic.CA2237.severity = error
dotnet_diagnostic.CA2238.severity = error
dotnet_diagnostic.CA2240.severity = error
dotnet_diagnostic.CA2241.severity = error
dotnet_diagnostic.CA2242.severity = error
dotnet_diagnostic.RCS1001.severity = error
dotnet_diagnostic.RCS1018.severity = error
dotnet_diagnostic.RCS1037.severity = error
dotnet_diagnostic.RCS1055.severity = error
dotnet_diagnostic.RCS1062.severity = error
dotnet_diagnostic.RCS1066.severity = error
dotnet_diagnostic.RCS1069.severity = error
dotnet_diagnostic.RCS1071.severity = error
dotnet_diagnostic.RCS1074.severity = error
dotnet_diagnostic.RCS1090.severity = error
dotnet_diagnostic.RCS1138.severity = error
dotnet_diagnostic.RCS1139.severity = error
dotnet_diagnostic.RCS1158.severity = none
dotnet_diagnostic.RCS1163.severity = suggestion
dotnet_diagnostic.RCS1168.severity = suggestion
dotnet_diagnostic.RCS1188.severity = error
dotnet_diagnostic.RCS1201.severity = error
dotnet_diagnostic.RCS1207.severity = error
dotnet_diagnostic.RCS1211.severity = error
dotnet_diagnostic.RCS1507.severity = error
dotnet_diagnostic.SA1000.severity = error
dotnet_diagnostic.SA1001.severity = error
dotnet_diagnostic.SA1002.severity = error
dotnet_diagnostic.SA1003.severity = error
dotnet_diagnostic.SA1004.severity = error
dotnet_diagnostic.SA1005.severity = error
dotnet_diagnostic.SA1006.severity = error
dotnet_diagnostic.SA1007.severity = error
dotnet_diagnostic.SA1008.severity = error
dotnet_diagnostic.SA1009.severity = error
dotnet_diagnostic.SA1010.severity = error
dotnet_diagnostic.SA1011.severity = error
dotnet_diagnostic.SA1012.severity = error
dotnet_diagnostic.SA1013.severity = error
dotnet_diagnostic.SA1014.severity = error
dotnet_diagnostic.SA1015.severity = error
dotnet_diagnostic.SA1016.severity = error
dotnet_diagnostic.SA1017.severity = error
dotnet_diagnostic.SA1018.severity = error
dotnet_diagnostic.SA1019.severity = error
dotnet_diagnostic.SA1020.severity = error
dotnet_diagnostic.SA1021.severity = error
dotnet_diagnostic.SA1022.severity = error
dotnet_diagnostic.SA1023.severity = error
dotnet_diagnostic.SA1024.severity = error
dotnet_diagnostic.SA1025.severity = error
dotnet_diagnostic.SA1026.severity = error
dotnet_diagnostic.SA1027.severity = error
dotnet_diagnostic.SA1028.severity = error
dotnet_diagnostic.SA1100.severity = error
dotnet_diagnostic.SA1101.severity = none
dotnet_diagnostic.SA1102.severity = error
dotnet_diagnostic.SA1103.severity = error
dotnet_diagnostic.SA1104.severity = error
dotnet_diagnostic.SA1105.severity = error
dotnet_diagnostic.SA1106.severity = error
dotnet_diagnostic.SA1107.severity = error
dotnet_diagnostic.SA1108.severity = error
dotnet_diagnostic.SA1110.severity = error
dotnet_diagnostic.SA1111.severity = error
dotnet_diagnostic.SA1112.severity = error
dotnet_diagnostic.SA1113.severity = error
dotnet_diagnostic.SA1114.severity = error
dotnet_diagnostic.SA1115.severity = error
dotnet_diagnostic.SA1116.severity = error
dotnet_diagnostic.SA1117.severity = error
dotnet_diagnostic.SA1118.severity = error
dotnet_diagnostic.SA1119.severity = error
dotnet_diagnostic.SA1120.severity = error
dotnet_diagnostic.SA1121.severity = error
dotnet_diagnostic.SA1122.severity = error
dotnet_diagnostic.SA1123.severity = error
dotnet_diagnostic.SA1124.severity = error
dotnet_diagnostic.SA1125.severity = error
dotnet_diagnostic.SA1127.severity = error
dotnet_diagnostic.SA1128.severity = error
dotnet_diagnostic.SA1129.severity = error
dotnet_diagnostic.SA1130.severity = error
dotnet_diagnostic.SA1131.severity = error
dotnet_diagnostic.SA1132.severity = error
dotnet_diagnostic.SA1133.severity = error
dotnet_diagnostic.SA1134.severity = error
dotnet_diagnostic.SA1135.severity = error
dotnet_diagnostic.SA1136.severity = error
dotnet_diagnostic.SA1137.severity = error
dotnet_diagnostic.SA1139.severity = error
dotnet_diagnostic.SA1200.severity = none
dotnet_diagnostic.SA1201.severity = error
dotnet_diagnostic.SA1202.severity = error
dotnet_diagnostic.SA1203.severity = error
dotnet_diagnostic.SA1204.severity = error
dotnet_diagnostic.SA1205.severity = error
dotnet_diagnostic.SA1206.severity = error
dotnet_diagnostic.SA1207.severity = error
dotnet_diagnostic.SA1208.severity = error
dotnet_diagnostic.SA1209.severity = error
dotnet_diagnostic.SA1210.severity = error
dotnet_diagnostic.SA1211.severity = error
dotnet_diagnostic.SA1212.severity = error
dotnet_diagnostic.SA1213.severity = error
dotnet_diagnostic.SA1214.severity = error
dotnet_diagnostic.SA1216.severity = error
dotnet_diagnostic.SA1217.severity = error
dotnet_diagnostic.SA1300.severity = error
dotnet_diagnostic.SA1302.severity = error
dotnet_diagnostic.SA1303.severity = error
dotnet_diagnostic.SA1304.severity = error
dotnet_diagnostic.SA1306.severity = none
dotnet_diagnostic.SA1307.severity = error
dotnet_diagnostic.SA1308.severity = error
dotnet_diagnostic.SA1309.severity = none
dotnet_diagnostic.SA1310.severity = error
dotnet_diagnostic.SA1311.severity = none
dotnet_diagnostic.SA1312.severity = error
dotnet_diagnostic.SA1313.severity = error
dotnet_diagnostic.SA1314.severity = error
dotnet_diagnostic.SA1316.severity = none
dotnet_diagnostic.SA1400.severity = error
dotnet_diagnostic.SA1401.severity = error
dotnet_diagnostic.SA1402.severity = error
dotnet_diagnostic.SA1403.severity = error
dotnet_diagnostic.SA1404.severity = error
dotnet_diagnostic.SA1405.severity = error
dotnet_diagnostic.SA1406.severity = error
dotnet_diagnostic.SA1407.severity = error
dotnet_diagnostic.SA1408.severity = error
dotnet_diagnostic.SA1410.severity = error
dotnet_diagnostic.SA1411.severity = error
dotnet_diagnostic.SA1413.severity = none
dotnet_diagnostic.SA1500.severity = error
dotnet_diagnostic.SA1501.severity = error
dotnet_diagnostic.SA1502.severity = error
dotnet_diagnostic.SA1503.severity = error
dotnet_diagnostic.SA1504.severity = error
dotnet_diagnostic.SA1505.severity = error
dotnet_diagnostic.SA1506.severity = error
dotnet_diagnostic.SA1507.severity = error
dotnet_diagnostic.SA1508.severity = error
dotnet_diagnostic.SA1509.severity = error
dotnet_diagnostic.SA1510.severity = error
dotnet_diagnostic.SA1511.severity = error
dotnet_diagnostic.SA1512.severity = error
dotnet_diagnostic.SA1513.severity = error
dotnet_diagnostic.SA1514.severity = error
dotnet_diagnostic.SA1515.severity = error
dotnet_diagnostic.SA1516.severity = error
dotnet_diagnostic.SA1517.severity = error
dotnet_diagnostic.SA1518.severity = error
dotnet_diagnostic.SA1519.severity = error
dotnet_diagnostic.SA1520.severity = error
dotnet_diagnostic.SA1600.severity = error
dotnet_diagnostic.SA1601.severity = error
dotnet_diagnostic.SA1602.severity = error
dotnet_diagnostic.SA1604.severity = error
dotnet_diagnostic.SA1605.severity = error
dotnet_diagnostic.SA1606.severity = error
dotnet_diagnostic.SA1607.severity = error
dotnet_diagnostic.SA1608.severity = error
dotnet_diagnostic.SA1610.severity = error
dotnet_diagnostic.SA1611.severity = error
dotnet_diagnostic.SA1612.severity = error
dotnet_diagnostic.SA1613.severity = error
dotnet_diagnostic.SA1614.severity = error
dotnet_diagnostic.SA1615.severity = error
dotnet_diagnostic.SA1616.severity = error
dotnet_diagnostic.SA1617.severity = error
dotnet_diagnostic.SA1618.severity = error
dotnet_diagnostic.SA1619.severity = error
dotnet_diagnostic.SA1620.severity = error
dotnet_diagnostic.SA1621.severity = error
dotnet_diagnostic.SA1622.severity = error
dotnet_diagnostic.SA1623.severity = error
dotnet_diagnostic.SA1624.severity = error
dotnet_diagnostic.SA1625.severity = error
dotnet_diagnostic.SA1626.severity = error
dotnet_diagnostic.SA1627.severity = error
dotnet_diagnostic.SA1629.severity = error
dotnet_diagnostic.SA1633.severity = error
dotnet_diagnostic.SA1634.severity = error
dotnet_diagnostic.SA1635.severity = error
dotnet_diagnostic.SA1636.severity = error
dotnet_diagnostic.SA1637.severity = none
dotnet_diagnostic.SA1638.severity = none
dotnet_diagnostic.SA1640.severity = error
dotnet_diagnostic.SA1641.severity = error
dotnet_diagnostic.SA1642.severity = error
dotnet_diagnostic.SA1643.severity = error
dotnet_diagnostic.SA1649.severity = error
dotnet_diagnostic.SA1651.severity = error
dotnet_diagnostic.SX1101.severity = error
dotnet_diagnostic.SX1309.severity = error
dotnet_diagnostic.SX1623.severity = none
dotnet_diagnostic.IDE0046.severity = suggestion
dotnet_diagnostic.IDE0060.severity = none
# C++ Files
[*.{cpp,h,in}]
curly_bracket_next_line = true
indent_brace_style = Allman
# Xml project files
[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,nativeproj,locproj}]
indent_size = 2
[*.{csproj,vbproj,proj,nativeproj,locproj}]
charset = utf-8
# Xml build files
[*.builds]
indent_size = 2
# Xml files
[*.{xml,stylecop,resx,ruleset}]
indent_size = 2
# Xml config files
[*.{props,targets,config,nuspec}]
indent_size = 2
# YAML config files
[*.{yml,yaml}]
indent_size = 2
# Shell scripts
[*.sh]
end_of_line = lf
[*.{cmd,bat}]
end_of_line = crlf

45
.gitattributes поставляемый Normal file
Просмотреть файл

@ -0,0 +1,45 @@
# Catch all for anything we forgot. Add rules if you get CRLF to LF warnings.
* text=auto
# Text files that should be normalized to LF in odb.
*.cs text eol=lf diff=csharp
*.xaml text
*.config text
*.c text
*.h text
*.cpp text
*.hpp text
*.sln text
*.csproj text
*.vcxproj text
*.md text
*.tt text
*.sh text
*.ps1 text
*.cmd text
*.bat text
*.markdown text
*.msbuild text
# Binary files that should not be normalized or diffed
*.png binary
*.jpg binary
*.gif binary
*.ico binary
*.rc binary
*.pfx binary
*.snk binary
*.dll binary
*.exe binary
*.lib binary
*.exp binary
*.pdb binary
*.sdf binary
*.7z binary
# Generated file should just use CRLF, it's fiiine
SolutionInfo.cs text eol=crlf diff=csharp

8
.github/CODEOWNERS поставляемый Normal file
Просмотреть файл

@ -0,0 +1,8 @@
# A CODEOWNERS file uses a pattern that follows the same rules used in gitignore files.
# The pattern is followed by one or more GitHub usernames or team names using the
# standard @username or @org/team-name format. You can also refer to a user by an
# email address that has been added to their GitHub account, for example user@example.com
.github/* @reactiveui/maintainers
* @reactiveui/maintainers

36
.github/ISSUE_TEMPLATE/bug_report.md поставляемый Normal file
Просмотреть файл

@ -0,0 +1,36 @@
---
name: Bug report
about: Create a report to help us improve
title: "[BUG] Summary of item"
labels: bug
assignees: ''
---
Please note although we can't commit to any timeline, priority will be given to those who are [Contributors](https://github.com/reactiveui/reactiveui#contribute ) to the project.
If this is a question please ask on [StackOverflow](https://stackoverflow.com/questions/tagged/reactiveui).
**Describe the bug**
A clear and concise description of what the bug is.
**Steps To Reproduce**
Provide the steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Environment(please complete the following information):**
- OS: [e.g. iOS]
- Version [e.g. 22]
- Device: [e.g. iPhone6]
**Additional context**
Add any other context about the problem here.

27
.github/ISSUE_TEMPLATE/feature_request.md поставляемый Normal file
Просмотреть файл

@ -0,0 +1,27 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: Feature
assignees: ''
---
Please note although we can't commit to any timeline, priority will be given to those who are [Contributors](https://github.com/reactiveui/splat#contribute ) to the project.
If this is a question please ask on [StackOverflow](https://stackoverflow.com/questions/tagged/splat).
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is.
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Describe suggestions on how to achieve the feature**
A clear description to how to achieve the feature.
**Additional context**
Add any other context or screenshots about the feature request here.

13
.github/dependabot.yml поставляемый Normal file
Просмотреть файл

@ -0,0 +1,13 @@
version: 2
updates:
- package-ecosystem: nuget
directory: "/src"
schedule:
interval: daily
time: "00:00"
open-pull-requests-limit: 10
- package-ecosystem: "github-actions"
directory: "/"
schedule:
# Check for updates to GitHub Actions every weekday
interval: "daily"

184
.github/workflows/workflow-common-setup-and-build.yml поставляемый Normal file
Просмотреть файл

@ -0,0 +1,184 @@
name: Common .NET setup and build workflow
on:
workflow_call:
inputs:
configuration:
required: true
type: string
productNamespacePrefix:
required: true
type: string
useVisualStudioPreview:
required: true
type: boolean
useMauiCheckDotNetTool:
required: true
type: boolean
runTests:
required: true
type: boolean
# nugetMode
# 0: off
# 1: pack and upload (CI build)
# 2: sign and publish (Release action)
nugetMode:
required: true
type: number
jobs:
build:
runs-on: windows-2022
outputs:
nbgv: ${{ steps.nbgv.outputs.SemVer2 }}
steps:
- name: Update Visual Studio preview
if: inputs.useVisualStudioPreview == true
shell: bash
run: |
dotnet tool update -g dotnet-vs
vs update preview
vs modify preview +mobile +desktop +uwp +web
echo "##vso[task.prependpath]$(vs where preview --prop=InstallationPath)\MSBuild\Current\Bin"
- name: Install Windows SDK 10.0.16299
shell: pwsh
run: |
Invoke-WebRequest -Uri https://go.microsoft.com/fwlink/p/?linkid=864422 -OutFile winsdk.exe
$startInfo = New-Object System.Diagnostics.ProcessStartInfo
$startInfo.FileName = "winsdk.exe"
$startInfo.Arguments = "/norestart /quiet"
$process = New-Object System.Diagnostics.Process
$process.StartInfo = $startInfo
$process.Start()
$process.WaitForExit()
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Install .NET Core
uses: actions/setup-dotnet@v1.8.2
with:
dotnet-version: 3.1.x
- name: Install .NET 5
uses: actions/setup-dotnet@v1.8.2
with:
dotnet-version: 5.0.x
- name: Install .NET 6
uses: actions/setup-dotnet@v1.8.2
with:
dotnet-version: 6.0.x
include-prerelease: true
- name: Install DotNet workloads
shell: bash
run: |
dotnet workload install android
dotnet workload install ios
dotnet workload install tvos
dotnet workload install macos
dotnet workload install maui
- name: Run Maui Installation Check
if: inputs.useMauiCheckDotNetTool == true
shell: bash
run: |
dotnet tool install -g Redth.Net.Maui.Check
maui-check --non-interactive --fix
- name: Add MSBuild to PATH
uses: glennawatson/setup-msbuild@v1.0.3
with:
prerelease: true
- name: NBGV
id: nbgv
uses: dotnet/nbgv@master
with:
setAllVars: true
- name: NuGet Restore
run: dotnet restore
working-directory: src
- name: Build
run: msbuild /t:build,pack /nowarn:MSB4011 /maxcpucount /p:NoPackageAnalysis=true /verbosity:minimal /p:Configuration=${{ inputs.configuration }}
working-directory: src
- name: Run Unit Tests and Generate Coverage
if: inputs.runTests == true
uses: glennawatson/coverlet-msbuild@v1
with:
project-files: '**/*Tests*.csproj'
no-build: true
exclude-filter: '[${{inputs.productNamespacePrefix}}.*.Tests.*]*,[${{inputs.productNamespacePrefix}}.Tests]*,[${{inputs.productNamespacePrefix}}.TestRunner.*]*'
include-filter: '[${{inputs.productNamespacePrefix}}*]*'
output-format: cobertura
output: '../../artifacts/'
configuration: ${{ inputs.configuration }}
- name: Upload Code Coverage
if: inputs.runTests == true
shell: bash
run: |
echo $PWD
bash <(curl -s https://codecov.io/bash) -X gcov -X coveragepy -t ${{ env.CODECOV_TOKEN }} -s '$PWD/artifacts' -f '*.xml'
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
- name: Create NuGet Artifacts
if: inputs.nugetMode == 1
uses: actions/upload-artifact@master
with:
name: nuget
path: '**/*.nupkg'
- name: Save SignClient Configuration
run: 'echo "$SIGN_CLIENT_CONFIG" > SignPackages.json'
shell: bash
env:
SIGN_CLIENT_CONFIG: ${{secrets.SIGN_CLIENT_CONFIG}}
- name: Sign NuGet Packages
if: inputs.nugetMode == 2
uses: glennawatson/signclient@v1
with:
input-files: '**/*.nupkg'
sign-client-secret: ${{ secrets.SIGN_CLIENT_SECRET }}
sign-client-user: ${{ secrets.SIGN_CLIENT_USER_ID }}
project-name: reactiveui
description: reactiveui
config-file: SignPackages.json
- name: Changelog
if: inputs.nugetMode == 2
uses: glennawatson/ChangeLog@v1
id: changelog
- name: Create Release
if: inputs.nugetMode == 2
uses: actions/create-release@v1.1.4
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
with:
tag_name: ${{ steps.nbgv.outputs.SemVer2 }}
release_name: ${{ steps.nbgv.outputs.SemVer2 }}
body: |
${{ steps.changelog.outputs.commitLog }}
- name: NuGet Push
if: inputs.nugetMode == 2
env:
NUGET_AUTH_TOKEN: ${{ secrets.NUGET_API_KEY }}
SOURCE_URL: https://api.nuget.org/v3/index.json
run: |
dotnet nuget push -s ${{ env.SOURCE_URL }} -k ${{ env.NUGET_AUTH_TOKEN }} **/*.nupkg

373
.gitignore поставляемый Normal file
Просмотреть файл

@ -0,0 +1,373 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
tools/**
!tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# ReactiveUI
artifacts/
src/ReactiveUI.Events*/Events_*.cs
# macOS
.DS_Store
# Jetbrains
.idea/
# API Approval
src/*.Tests/API/*.received.txt
# Fody Weavers (for tests)
src/Tools/
# Xamarin.Android Resource.Designer.cs files
**/*.Android/**/[Rr]esource.[Dd]esigner.cs
**/*.Droid/**/[Rr]esource.[Dd]esigner.cs
**/Android/**/[Rr]esource.[Dd]esigner.cs
**/Droid/**/[Rr]esource.[Dd]esigner.cs
**/*.Android.*/**/[Rr]esource.[Dd]esigner.cs
**/*.Droid.*/**/[Rr]esource.[Dd]esigner.cs

3
CODE_OF_CONDUCT.md Normal file
Просмотреть файл

@ -0,0 +1,3 @@
# Contributor Code of Conduct
If youre being harassed, noticed someone else being harassed, or have any other concerns, please <a href="mailto:hello@reactiveui.net">contact us immediately</a>. Your reports will be taken seriously and will not be dismissed or argued with. All members, committers and volunteers in this community are required to act according to the [Code of Conduct](https://reactiveui.net/code-of-conduct/).

148
CONTRIBUTING.md Normal file
Просмотреть файл

@ -0,0 +1,148 @@
# Contributing to Splat
We'd love for you to contribute to our source code and to make splat even better than it is
today! Here are the guidelines we'd like you to follow:
- [Code of Conduct](https://reactiveui.net/code-of-conduct)
- [Question or Problem?](#question)
- [Issues and Bugs](#issue)
- [Feature Requests](#feature)
- [Submission Guidelines](#submit)
- [Coding Rules](#rules)
- [Commit Message Guidelines](https://reactiveui.net/contribute/software-style-guide/commit-message-convention)
## <a name="question"></a> Got a Question or Problem?
If you have questions about how to use splat, please direct these to [StackOverflow](https://stackoverflow.com/questions/tagged/splat). The project maintainers hang out in this [Slack](https://github.com/splat/splat#slack) channel.
## <a name="issue"></a> Found an Issue?
If you find a bug in the source code or a mistake in the documentation, you can help us by
submitting an issue to our [GitHub Repository](https://github.com/splat/splat). Even better you can submit a Pull Request
with a fix.
**Please see the [Submission Guidelines](#submit) below.**
## <a name="feature"></a> Want a Feature?
You can request a new feature by submitting an issue to our [GitHub Repository](https://github.com/splat/splat). If you
would like to implement a new feature then consider what kind of change it is:
* **Major Changes** that you wish to contribute to the project should be discussed first in [Slack](https://github.com/splat/splat#slack) so that we can better coordinate our efforts,
prevent duplication of work, and help you to craft the change so that it is successfully accepted
into the project.
* **Small Changes** can be crafted and submitted to the [GitHub Repository](https://github.com/splat/splat) as a Pull
Request.
## <a name="submit"></a> Submission Guidelines
### Submitting an Issue
If your issue appears to be a bug, and hasn't been reported, open a new issue. Help us to maximize
the effort we can spend fixing issues and adding new features, by not reporting duplicate issues.
Providing the following information will increase the chances of your issue being dealt with
quickly:
* **Overview of the Issue** - if an error is being thrown a stack trace helps
* **Motivation for or Use Case** - explain why this is a bug for you
* **splat Version(s)** - is it a regression?
* **Operating System** - is this a problem with all browsers or only specific ones?
* **Reproduce the Error** - provide a example or an unambiguous set of steps.
* **Related Issues** - has a similar issue been reported before?
* **Suggest a Fix** - if you can't fix the bug yourself, perhaps you can point to what might be
causing the problem (line of code or commit)
**If you get help, help others. Good karma rulez!**
### Submitting a Pull Request
Before you submit your pull request consider the following guidelines:
* Search [GitHub](https://github.com/splat/splat/pulls) for an open or closed Pull Request
that relates to your submission. You don't want to duplicate effort.
* Make your changes in a new git branch:
```shell
git checkout -b my-fix-branch main
```
* Create your patch, **including appropriate test cases**.
* Follow our [Coding Rules](#rules).
* Run the test suite, as described below.
* Commit your changes using a descriptive commit message that follows our
[commit message conventions](#commit).
```shell
git commit -a
```
Note: the optional commit `-a` command line option will automatically "add" and "rm" edited files.
* Build your changes locally to ensure all the tests pass:
```shell
build.cmd
```
* Push your branch to GitHub:
```shell
git push origin my-fix-branch
```
In GitHub, send a pull request to `splat:main`.
If we suggest changes, then:
* Make the required updates.
* Re-run the test suite to ensure tests are still passing.
* Commit your changes to your branch (e.g. `my-fix-branch`).
* Push the changes to your GitHub repository (this will update your Pull Request).
If the PR gets too outdated we may ask you to rebase and force push to update the PR:
```shell
git rebase main -i
git push origin my-fix-branch -f
```
_WARNING: Squashing or reverting commits and force-pushing thereafter may remove GitHub comments
on code that were previously made by you or others in your commits. Avoid any form of rebasing
unless necessary._
That's it! Thank you for your contribution!
#### After your pull request is merged
After your pull request is merged, you can safely delete your branch and pull the changes
from the main (upstream) repository:
* Delete the remote branch on GitHub either through the GitHub web UI or your local shell as follows:
```shell
git push origin --delete my-fix-branch
```
* Check out the main branch:
```shell
git checkout main -f
```
* Delete the local branch:
```shell
git branch -D my-fix-branch
```
* Update your main with the latest upstream version:
```shell
git pull --ff upstream main
```
## <a name="rules"></a> Coding Rules
To ensure consistency throughout the source code, keep these rules in mind as you are working:
* All features or bug fixes **must be tested** by one or more unit tests.
* All public API methods **must be documented** with XML documentation.