Skip to content

Commit 816ca9f

Browse files
committed
Rename Notify > NotifyAsync to allow async eventing scenarios
The previous API assumed in-process event notifications, which would prevent an implementation of the IMessageBus from using async event pub/sub mechanisms (i.e. EventGrid or message queues, etc.). Using ValueTask allows reduced allocations for the default implementation of MessageBus which does precisely this (invoke handlers in-proc).
1 parent abc8efb commit 816ca9f

Some content is hidden

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

50 files changed

+354
-220
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# normalize by default
22
* text=auto encoding=UTF-8
33
*.sh text eol=lf
4+
*.sbn eol=lf
45

56
# These are windows specific files which we may as well ensure are
67
# always crlf on checkout

.github/actions/dotnet/action.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: ⚙ dotnet
2+
description: Configures dotnet if the repo/org defines the DOTNET custom property
3+
4+
runs:
5+
using: composite
6+
steps:
7+
- name: 🔎 dotnet
8+
id: dotnet
9+
shell: bash
10+
run: |
11+
VERSIONS=$(gh api repos/${{ github.repository }}/properties/values | jq -r '.[] | select(.property_name == "DOTNET") | .value')
12+
# Remove extra whitespace from VERSIONS
13+
VERSIONS=$(echo "$VERSIONS" | tr -s ' ' | tr -d ' ')
14+
# Convert comma-separated to newline-separated
15+
NEWLINE_VERSIONS=$(echo "$VERSIONS" | tr ',' '\n')
16+
# Validate versions
17+
while IFS= read -r version; do
18+
if ! [[ $version =~ ^[0-9]+(\.[0-9]+(\.[0-9]+)?)?(\.x)?$ ]]; then
19+
echo "Error: Invalid version format: $version"
20+
exit 1
21+
fi
22+
done <<< "$NEWLINE_VERSIONS"
23+
# Write multiline output to $GITHUB_OUTPUT
24+
{
25+
echo 'versions<<EOF'
26+
echo "$NEWLINE_VERSIONS"
27+
echo 'EOF'
28+
} >> $GITHUB_OUTPUT
29+
30+
- name: ⚙ dotnet
31+
if: steps.dotnet.outputs.versions != ''
32+
uses: actions/setup-dotnet@v4
33+
with:
34+
dotnet-version: |
35+
${{ steps.dotnet.outputs.versions }}

.github/dependabot.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,6 @@ updates:
3838
ProtoBuf:
3939
patterns:
4040
- "protobuf-*"
41+
Spectre:
42+
patterns:
43+
- "Spectre.Console*"

.github/workflows/build.yml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ env:
2828
GH_TOKEN: ${{ secrets.GH_TOKEN }}
2929
MSBUILDTERMINALLOGGER: auto
3030
Configuration: ${{ github.event.inputs.configuration || 'Release' }}
31+
SLEET_FEED_URL: ${{ vars.SLEET_FEED_URL }}
3132

3233
defaults:
3334
run:
@@ -65,12 +66,7 @@ jobs:
6566
fetch-depth: 0
6667

6768
- name: ⚙ dotnet
68-
uses: actions/setup-dotnet@v4
69-
with:
70-
dotnet-version: |
71-
6.x
72-
8.x
73-
9.x
69+
uses: ./.github/actions/dotnet
7470

7571
- name: 🙏 build
7672
run: dotnet build -m:1 -bl:build.binlog
@@ -104,6 +100,14 @@ jobs:
104100
submodules: recursive
105101
fetch-depth: 0
106102

103+
- name: ⚙ dotnet
104+
uses: actions/setup-dotnet@v4
105+
with:
106+
dotnet-version: |
107+
6.x
108+
8.x
109+
9.x
110+
107111
- name: ✓ ensure format
108112
run: |
109113
dotnet format whitespace --verify-no-changes -v:diag --exclude ~/.nuget

.github/workflows/dotnet-file.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,10 @@ env:
1212

1313
jobs:
1414
run:
15+
permissions:
16+
contents: write
1517
uses: devlooped/oss/.github/workflows/dotnet-file-core.yml@main
16-
secrets: inherit
18+
secrets:
19+
BOT_NAME: ${{ secrets.BOT_NAME }}
20+
BOT_EMAIL: ${{ secrets.BOT_EMAIL }}
21+
GH_TOKEN: ${{ secrets.GH_TOKEN }}

.github/workflows/publish.yml

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ env:
1515
VersionLabel: ${{ github.ref }}
1616
GH_TOKEN: ${{ secrets.GH_TOKEN }}
1717
MSBUILDTERMINALLOGGER: auto
18-
18+
SLEET_FEED_URL: https://api.nuget.org/v3/index.json
19+
1920
jobs:
2021
publish:
2122
runs-on: ${{ vars.PUBLISH_AGENT || 'ubuntu-latest' }}
@@ -27,12 +28,7 @@ jobs:
2728
fetch-depth: 0
2829

2930
- name: ⚙ dotnet
30-
uses: actions/setup-dotnet@v4
31-
with:
32-
dotnet-version: |
33-
6.x
34-
8.x
35-
9.x
31+
uses: ./.github/actions/dotnet
3632

3733
- name: 🙏 build
3834
run: dotnet build -m:1 -bl:build.binlog

.netconfig

Lines changed: 43 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,20 @@
2525
[file ".github/workflows/changelog.yml"]
2626
url = https://github.com/devlooped/oss/blob/main/.github/workflows/changelog.yml
2727
sha = 5fb172362c767bef7c36478f1a6bdc264723f8f9
28+
2829
etag = ad1efa56d6024ee1add2bcda81a7e4e38d0e9069473c6ff70374d5ce06af1f5a
2930
weak
3031
[file ".github/dependabot.yml"]
3132
url = https://github.com/devlooped/oss/blob/main/.github/dependabot.yml
32-
sha = 49661dbf0720cde93eb5569be7523b5912351560
33-
etag = c147ea2f3431ca0338c315c4a45b56ee233c4d30f8d6ab698d0e1980a257fd6a
33+
sha = 917ff5486e25bec90038e7ab6d146fd82c61f846
34+
35+
etag = 50bf50df5a6eeb1705baea50f4c6e06d167a89cb5a590887ff939bd4120bd442
3436
weak
3537
[file ".github/workflows/dotnet-file.yml"]
3638
url = https://github.com/devlooped/oss/blob/main/.github/workflows/dotnet-file.yml
37-
sha = 59aaf432369b5ea597831d4feec5a6ac4024c2e3
38-
etag = 1374e3f8c9b7af69c443605c03f7262300dcb7d783738d9eb9fe84268ed2d10c
39+
sha = 8fa147d4799d73819040736c399d0b1db2c2d86c
40+
41+
etag = 1ca805a23656e99c03f9d478dba8ccef6e571f5de2ac0e9bb7e3c5216c99a694
3942
weak
4043
[file "license.txt"]
4144
url = https://github.com/devlooped/oss/blob/main/license.txt
@@ -49,17 +52,22 @@
4952
weak
5053
[file "src/Directory.Build.props"]
5154
url = https://github.com/devlooped/oss/blob/main/src/Directory.Build.props
52-
sha = b76de49afb376aa48eb172963ed70663b59b31d3
53-
etag = c8b56f3860cc7ccb8773b7bd6189f5c7a6e3a2c27e9104c1ee201fbdc5af9873
55+
sha = 2fff747a9673b499c99f2da183cdd5263fdc9333
56+
57+
etag = 0fccddf04f282fe98122ab2610dc2972c205a521254559bf013655c6271b0017
5458
weak
5559
[file "src/Directory.Build.targets"]
5660
url = https://github.com/devlooped/oss/blob/main/src/Directory.Build.targets
5761
sha = a8b208093599263b7f2d1fe3854634c588ea5199
62+
5863
etag = 19087699f05396205e6b050d999a43b175bd242f6e8fac86f6df936310178b03
5964
weak
6065
[file "src/nuget.config"]
6166
url = https://github.com/devlooped/oss/blob/main/src/nuget.config
62-
skip
67+
sha = 032439dbf180fca0539a5bd3a019f18ab3484b76
68+
69+
etag = da7c0104131bd474b52fc9bc9f9bda6470e24ae38d4fb9f5c4f719bc01370ab5
70+
weak
6371
[file ".github/workflows/pages.yml"]
6472
url = https://github.com/clarius/pages/blob/main/.github/workflows/pages.yml
6573
sha = afcb0421af6507eba5ceba913b8fc37261efc085
@@ -68,44 +76,54 @@
6876
[file "Gemfile"]
6977
url = https://github.com/clarius/pages/blob/main/Gemfile
7078
sha = 90fa16ed0e7300a78a38ee1d23c34a7e875aab27
79+
7180
etag = 3dd7febc8ae6760f19abfe787711f469c288cd803a6f1c545edec34264d48e71
7281
weak
7382
[file ".gitattributes"]
7483
url = https://github.com/devlooped/oss/blob/main/.gitattributes
75-
sha = 5f92a68e302bae675b394ef343114139c075993e
76-
etag = 338ba6d92c8d1774363396739c2be4257bfc58026f4b0fe92cb0ae4460e1eff7
84+
sha = 4a9aa321c4982b83c185cf8dffed181ff84667d5
85+
86+
etag = 09cad18280ed04b67f7f87591e5481510df04d44c3403231b8af885664d8fd58
7787
weak
7888
[file ".github/workflows/build.yml"]
7989
url = https://github.com/devlooped/oss/blob/main/.github/workflows/build.yml
8090
weak
81-
sha = 06e898ccba692566ebf845fa7c8833ac6c318c0a
82-
etag = 0a4b3f0a875cd8c9434742b4046558aecf610d3fa3d490cfd2099266e95e9195
91+
sha = 08c70776943839f73dbea2e65355108747468508
92+
93+
etag = fb2e91cdc9fb7a4d3e8f698e525816c5d8febb35b005c278eecca8056e78f809
8394
[file ".github/workflows/changelog.config"]
8495
url = https://github.com/devlooped/oss/blob/main/.github/workflows/changelog.config
8596
sha = 08d83cb510732f861416760d37702f9f55bd7f9e
97+
8698
etag = 556a28914eeeae78ca924b1105726cdaa211af365671831887aec81f5f4301b4
8799
weak
88100
[file ".github/workflows/combine-prs.yml"]
89101
url = https://github.com/devlooped/oss/blob/main/.github/workflows/combine-prs.yml
90-
skip
102+
sha = c1610886eba42cb250e3894aed40c0a258cd383d
103+
etag = 598ee294649a44d4c5d5934416c01183597d08aa7db7938453fd2bbf52a4e64d
104+
weak
91105
[file ".github/workflows/includes.yml"]
92106
url = https://github.com/devlooped/oss/blob/main/.github/workflows/includes.yml
93107
sha = 85829f2510f335f4a411867f3dbaaa116c3ab3de
108+
94109
etag = 086f6b6316cc6ea7089c0dcc6980be519e6ed6e6201e65042ef41b82634ec0ee
95110
weak
96111
[file ".github/workflows/publish.yml"]
97112
url = https://github.com/devlooped/oss/blob/main/.github/workflows/publish.yml
98113
weak
99-
sha = 06e898ccba692566ebf845fa7c8833ac6c318c0a
100-
etag = 2f64f75ad01f735fd05290370fb8a826111ac8dd7e74ce04226bb627a54a62ba
114+
sha = 08c70776943839f73dbea2e65355108747468508
115+
116+
etag = 722a2c7cb3a42bc24ca7fb48d2e9a336641ed0599418239e24efbafccf64bd50
101117
[file ".gitignore"]
102118
url = https://github.com/devlooped/oss/blob/main/.gitignore
103119
sha = e0be248fff1d39133345283b8227372b36574b75
120+
104121
etag = c449ec6f76803e1891357ca2b8b4fcb5b2e5deeff8311622fd92ca9fbf1e6575
105122
weak
106123
[file "Directory.Build.rsp"]
107124
url = https://github.com/devlooped/oss/blob/main/Directory.Build.rsp
108125
sha = 0f7f7f7e8a29de9b535676f75fe7c67e629a5e8c
126+
109127
etag = 0ccae83fc51f400bfd7058170bfec7aba11455e24a46a0d7e6a358da6486e255
110128
weak
111129
[file "_config.yml"]
@@ -121,13 +139,21 @@
121139
[file ".github/release.yml"]
122140
url = https://github.com/devlooped/oss/blob/main/.github/release.yml
123141
sha = 0c23e24704625cf75b2cb1fdc566cef7e20af313
142+
124143
etag = 310df162242c95ed19ed12e3c96a65f77e558b46dced676ad5255eb12caafe75
125144
weak
145+
[file ".github/actions/dotnet/action.yml"]
146+
url = https://github.com/devlooped/oss/blob/main/.github/actions/dotnet/action.yml
147+
sha = f2b690ce307acb76c5b8d7faec1a5b971a93653e
148+
149+
etag = 27ea11baa2397b3ec9e643a935832da97719c4e44215cfd135c49cad4c29373f
150+
weak
151+
[file ".github/workflows/dotnet-file-core.yml"]
152+
url = https://github.com/devlooped/oss/blob/main/.github/workflows/dotnet-file-core.yml
153+
skip
126154
[file ".github/workflows/triage.yml"]
127155
url = https://github.com/devlooped/oss/blob/main/.github/workflows/triage.yml
128156
sha = 33000c0c4ab4eb4e0e142fa54515b811a189d55c
157+
129158
etag = 013a47739e348f06891f37c45164478cca149854e6cd5c5158e6f073f852b61a
130159
weak
131-
[file ".github/workflows/dotnet-file-core.yml"]
132-
url = https://github.com/devlooped/oss/blob/main/.github/workflows/dotnet-file-core.yml
133-
skip

Merq.sln

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
33
# Visual Studio Version 17
44
VisualStudioVersion = 17.2.32616.157
55
MinimumVisualStudioVersion = 10.0.40219.1
6-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{235AA06D-5767-49D1-88F3-F25383FE1CAA}"
7-
ProjectSection(SolutionItems) = preProject
8-
.editorconfig = .editorconfig
9-
.netconfig = .netconfig
10-
.github\workflows\build.yml = .github\workflows\build.yml
11-
src\Directory.Packages.props = src\Directory.Packages.props
12-
src\Directory.props = src\Directory.props
13-
src\Directory.targets = src\Directory.targets
14-
.github\workflows\publish.yml = .github\workflows\publish.yml
15-
readme.md = readme.md
16-
EndProjectSection
17-
EndProject
186
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Merq", "src\Merq\Merq.csproj", "{C6B16D17-4F6A-4457-8497-92068E53DE39}"
197
EndProject
208
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Merq.Core", "src\Merq.Core\Merq.Core.csproj", "{33BDD9D1-3E01-49C1-AB46-50941DFFD5D4}"

readme.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ such as `ICommandHandler<T>` and `IObservable<TEvent>`.
331331
> lifetime.
332332

333333
To drastically simplify registration of handlers and producers, we
334-
recommend the [Devlooped.Extensions.DependencyInjection.Attributed](https://www.nuget.org/packages/Devlooped.Extensions.DependencyInjection.Attributed/).
334+
recommend the [Devlooped.Extensions.DependencyInjection](https://www.nuget.org/packages/Devlooped.Extensions.DependencyInjection/).
335335
package, which provides a simple attribute-based mechanism for automatically
336336
emitting at compile-time the required service registrations for all types
337337
marked with the provided `[Service]` attribute, which also allows setting the
@@ -415,12 +415,12 @@ builder.Services.AddServices();
415415

416416
# Dogfooding
417417

418-
[![CI Version](https://img.shields.io/endpoint?url=https://shields.kzu.dev/vpre/Devlooped.Merq/main&label=nuget.ci&color=brightgreen)](https://pkg.kzu.dev/index.json)
418+
[![CI Version](https://img.shields.io/endpoint?url=https://shields.kzu.app/vpre/Merq/main&label=nuget.ci&color=brightgreen)](https://pkg.kzu.app/index.json)
419419
[![Build](https://github.com/devlooped/Merq/workflows/build/badge.svg?branch=main)](https://github.com/devlooped/Merq/actions)
420420
421421
We also produce CI packages from branches and pull requests so you can dogfood builds as quickly as they are produced.
422422

423-
The CI feed is `https://pkg.kzu.dev/index.json`.
423+
The CI feed is `https://pkg.kzu.app/index.json`.
424424
425425
The versioning scheme for packages is:
426426

src/Directory.Build.props

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,18 @@
153153
<Import Project="Directory.props" Condition="Exists('Directory.props')"/>
154154
<Import Project="Directory.props.user" Condition="Exists('Directory.props.user')" />
155155

156+
<!-- If the imported props changed ManagePackageVersionsCentrally, we need to replicate
157+
the Version defaults from Microsoft.NET.DefaultAssemblyInfo.targets since it's too
158+
early here and Directory.Packages.props will be imported right after this time,
159+
meaning dependencies that expect to use the currently building Version would not
160+
get the expected value.
161+
-->
162+
<PropertyGroup Condition="'$(ManagePackageVersionsCentrally)' == 'true' and '$(Version)' == ''">
163+
<VersionPrefix Condition=" '$(VersionPrefix)' == '' ">1.0.0</VersionPrefix>
164+
<Version Condition=" '$(VersionSuffix)' != '' ">$(VersionPrefix)-$(VersionSuffix)</Version>
165+
<Version Condition=" '$(Version)' == '' ">$(VersionPrefix)</Version>
166+
</PropertyGroup>
167+
156168
<!-- Implemented by SDK in .targets, guaranteeing it's overwritten. Added here since we add a DependsOnTargets to it.
157169
Covers backwards compatiblity with non-SDK projects. -->
158170
<Target Name="InitializeSourceControlInformation" />

0 commit comments

Comments
 (0)