diff --git a/.editorconfig b/.editorconfig
index e17d14e3..4cab270c 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -107,6 +107,3 @@ dotnet_analyzer_diagnostic.category-Style.severity = none
# VSTHRD200: Use "Async" suffix for async methods
dotnet_diagnostic.VSTHRD200.severity = none
-
-[**/*SponsorLink*/**]
-generated_code = true
\ No newline at end of file
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index c9a0364d..c671ecc3 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -17,10 +17,10 @@ on:
env:
DOTNET_NOLOGO: true
- VersionPrefix: 42.42.${{ github.run_number }}
- VersionLabel: ${{ github.ref }}
PackOnBuild: true
GeneratePackageOnBuild: true
+ VersionPrefix: 42.42.${{ github.run_number }}
+ VersionLabel: ${{ github.ref }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
defaults:
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 1c2833b9..a0860724 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -12,6 +12,7 @@ env:
Configuration: Release
PackOnBuild: true
GeneratePackageOnBuild: true
+ VersionLabel: ${{ github.ref }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
jobs:
@@ -25,7 +26,7 @@ jobs:
fetch-depth: 0
- name: 馃檹 build
- run: dotnet build -m:1 -p:version=${GITHUB_REF#refs/*/v} -bl:build.binlog
+ run: dotnet build -m:1 -bl:build.binlog
- name: 馃И test
uses: ./.github/workflows/test
diff --git a/.netconfig b/.netconfig
index a6bdc36e..64444d8d 100644
--- a/.netconfig
+++ b/.netconfig
@@ -12,9 +12,9 @@
weak
[file ".editorconfig"]
url = https://github.com/devlooped/oss/blob/main/.editorconfig
- etag = ba2655b8b3ce5491b1c0eea5e0af201a085c48e07542bb9ec2c928084944ea86
+ etag = 7298c6450967975a8782b5c74f3071e1910fc59686e48f9c9d5cd7c68213cf59
weak
- sha = f571a42eac3cad554810dad15139ff390db5e1db
+ sha = e81ab754b366d52d92bd69b24bef1d5b1c610634
[file ".gitattributes"]
url = https://github.com/devlooped/oss/blob/main/.gitattributes
etag = 7acb32f5fa6d4ccd9c824605a7c2b8538497f0068c165567807d393dcf4d6bb7
@@ -27,9 +27,9 @@
sha = 49661dbf0720cde93eb5569be7523b5912351560
[file ".github/workflows/build.yml"]
url = https://github.com/devlooped/oss/blob/main/.github/workflows/build.yml
- etag = 6efc7d096b25bb4bbeffe7960a1194f1ceb5d21abeda85d28b55594b648ab44a
+ etag = d9fa5d91dc601f10d19099abb55c86df065cd1c23b1f6fab98ad883cb443bf5c
weak
- sha = 5fb172362c767bef7c36478f1a6bdc264723f8f9
+ sha = 14deaea5cecc64df51781d29891a2f67caf8be16
[file ".gitignore"]
url = https://github.com/devlooped/oss/blob/main/.gitignore
etag = a9c37ae312afac14b78436a7d018af4483d88736b5f780576f2c5a0b3f14998c
@@ -45,9 +45,9 @@
skip
[file "src/Directory.Build.props"]
url = https://github.com/devlooped/oss/blob/main/src/Directory.Build.props
- etag = a4925eb815bbcecc022de8d3245db069573d96ac5ecdf5f0e604f06b5577b01e
+ etag = f177eb767aaa6a347da43ff7ff419c9a0736c562cb171e17ded8007a1945a8b0
weak
- sha = 6e96c592c7b44bfda10404b9f90e4b8fab299249
+ sha = 14deaea5cecc64df51781d29891a2f67caf8be16
[file "src/Directory.Build.targets"]
url = https://github.com/devlooped/oss/blob/main/src/Directory.Build.targets
etag = 7cb1421f00d9f6f4c00f0ca98e485dcadb927cfa6b3f0b5d4fb212525d2ce9c0
@@ -88,9 +88,9 @@
sha = 5fb172362c767bef7c36478f1a6bdc264723f8f9
[file ".github/workflows/publish.yml"]
url = https://github.com/devlooped/oss/blob/main/.github/workflows/publish.yml
- etag = 9ea4083894308a610742488923d2a44778ebba6ca73fb13424647d9a82c918b4
+ etag = 4e9a9885a28ce867fd6139e1ae23735ad0073775145af96ff7d96d047d750973
weak
- sha = 5fb172362c767bef7c36478f1a6bdc264723f8f9
+ sha = 14deaea5cecc64df51781d29891a2f67caf8be16
[file ".github/workflows/dotnet-file.yml"]
url = https://github.com/devlooped/oss/blob/main/.github/workflows/dotnet-file.yml
sha = 7afe350f7e80a230e922db026d4e1198ba15cae1
@@ -166,8 +166,8 @@
weak
[file "src/SponsorLink/Directory.Build.props"]
url = https://github.com/devlooped/oss/blob/main/src/SponsorLink/Directory.Build.props
- sha = a0ae7272f31c766ebb129ea38c11c01df93b6b5d
- etag = 6823e1e914ecedd174276e3d53517cc0b332bb47c56402a9512cfa6aeeeb067e
+ sha = 3b943f5aa59f33141d1c0fffcb215446d594ad53
+ etag = 0c7737411744012078642dbfc174af3f2ac7dc9f7b8ea4423981ae38753a5be4
weak
[file "src/SponsorLink/Directory.Build.targets"]
url = https://github.com/devlooped/oss/blob/main/src/SponsorLink/Directory.Build.targets
@@ -176,8 +176,8 @@
weak
[file "src/SponsorLink/Library/Library.csproj"]
url = https://github.com/devlooped/oss/blob/main/src/SponsorLink/Library/Library.csproj
- sha = a0ae7272f31c766ebb129ea38c11c01df93b6b5d
- etag = 3720f8ae0605aa64df8f6c1d9769969162175b79c93a21024653f210a42348e6
+ sha = 55124bc610b2dcad9efb343bdffc79c959170593
+ etag = b6940fb01376a096bdbfc7dab0a89b37078c1b8581a98a2b2eea213c7e69565c
weak
[file "src/SponsorLink/Library/MyClass.cs"]
url = https://github.com/devlooped/oss/blob/main/src/SponsorLink/Library/MyClass.cs
@@ -191,8 +191,8 @@
weak
[file "src/SponsorLink/SponsorLink.targets"]
url = https://github.com/devlooped/oss/blob/main/src/SponsorLink/SponsorLink.targets
- sha = 7cda4a18313b0b38b26c0152e1007cdbb9b6ba3a
- etag = d725bd9cfa33f35224e91748f64237e4dc66270f7e5ec7c835b78164531ae3db
+ sha = c4830fc3b1aa78ec98d1d2ea4fed86ef0b7b803c
+ etag = d60260e2749e1ff1012b6a9bb7411f1bc717e258b6477f0751b3204a102de91a
weak
[file "src/SponsorLink/SponsorLink/AppDomainDictionary.cs"]
url = https://github.com/devlooped/oss/blob/main/src/SponsorLink/SponsorLink/AppDomainDictionary.cs
@@ -211,23 +211,23 @@
weak
[file "src/SponsorLink/SponsorLink/SponsorLink.cs"]
url = https://github.com/devlooped/oss/blob/main/src/SponsorLink/SponsorLink/SponsorLink.cs
- sha = 4fca946c3201d90d30e2183f699c850dcc1bf8d5
- etag = 96e1b1b28bfb2372bd5ffcc6bdef65ee926822b3489ce65be4e5a400884dce21
+ sha = 55124bc610b2dcad9efb343bdffc79c959170593
+ etag = 28178198489bf9b72f8a400563950194a06f7ce55ff4a016535eb1be35fa70b8
weak
[file "src/SponsorLink/SponsorLink/SponsorLink.csproj"]
url = https://github.com/devlooped/oss/blob/main/src/SponsorLink/SponsorLink/SponsorLink.csproj
- sha = a0ae7272f31c766ebb129ea38c11c01df93b6b5d
- etag = ffaea0b580d8dccd672e749a5efd11fda318c484ca4a34428ff81524ec80ec4b
+ sha = c4830fc3b1aa78ec98d1d2ea4fed86ef0b7b803c
+ etag = 4b33abd9075646a6272cafa55ebae6a0ef972a1953ad6eebae45163e5177d5ff
weak
[file "src/SponsorLink/SponsorLink/SponsorLink.es.resx"]
url = https://github.com/devlooped/oss/blob/main/src/SponsorLink/SponsorLink/SponsorLink.es.resx
- sha = a0ae7272f31c766ebb129ea38c11c01df93b6b5d
- etag = ded7de7a2624b335beb462763e3580413da21e80c8b40b4c773ca46c7af4e859
+ sha = 8d29f013595aab6d965f1b91eb8b0ecaa0246366
+ etag = 7f623861748c4e7f534fa2118eb66ad3056fd5b28cd5d1d19e9348d0236ffe29
weak
[file "src/SponsorLink/SponsorLink/SponsorLink.resx"]
url = https://github.com/devlooped/oss/blob/main/src/SponsorLink/SponsorLink/SponsorLink.resx
- sha = a0ae7272f31c766ebb129ea38c11c01df93b6b5d
- etag = 7d9e89ef2cf762a6119c9c6c2ed2517b71a546838151c005400301fde8def266
+ sha = 8d29f013595aab6d965f1b91eb8b0ecaa0246366
+ etag = 47a7b843e07a8ec858579f435b59548056b14d00d6653dc41ef5807613925f31
weak
[file "src/SponsorLink/SponsorLink/SponsorLinkAnalyzer.cs"]
url = https://github.com/devlooped/oss/blob/main/src/SponsorLink/SponsorLink/SponsorLinkAnalyzer.cs
@@ -256,13 +256,8 @@
weak
[file "src/SponsorLink/SponsorLink/buildTransitive/Devlooped.Sponsors.targets"]
url = https://github.com/devlooped/oss/blob/main/src/SponsorLink/SponsorLink/buildTransitive/Devlooped.Sponsors.targets
- sha = a0ae7272f31c766ebb129ea38c11c01df93b6b5d
- etag = 72ec691a085dc34f946627f7038a82569e44f0b63a9f4a7bd60f0f7b52fd198f
- weak
-[file "src/SponsorLink/SponsorLink/devlooped.pub.jwk"]
- url = https://github.com/devlooped/oss/blob/main/src/SponsorLink/SponsorLink/devlooped.pub.jwk
- sha = a0ae7272f31c766ebb129ea38c11c01df93b6b5d
- etag = cf884781ff88b4d096841e3169282762a898b2050c9b5dac0013bc15bdbee267
+ sha = 55124bc610b2dcad9efb343bdffc79c959170593
+ etag = 46842d44ece3d55285bc30a6b22ac21c1c35d3b0c451aa5285d4ca4564b8698c
weak
[file "src/SponsorLink/SponsorLink/sponsorable.md"]
url = https://github.com/devlooped/oss/blob/main/src/SponsorLink/SponsorLink/sponsorable.md
@@ -319,3 +314,13 @@
sha = 827a1d18bf0245978d81bcd3d52e9e6f1584d1ef
etag = 079b4aedba2aa9851e609b569f25c55db8d5922e3dbb1adc22611ce4d6cfe465
weak
+[file "src/SponsorLink/Library/readme.md"]
+ url = https://github.com/devlooped/oss/blob/main/src/SponsorLink/Library/readme.md
+ sha = 55124bc610b2dcad9efb343bdffc79c959170593
+ etag = 5002ac8c5bbeee60c13937a32c1b6c1a5dbf0065617c8f2550e6eca6fded256d
+ weak
+[file "src/SponsorLink/jwk.ps1"]
+ url = https://github.com/devlooped/oss/blob/main/src/SponsorLink/jwk.ps1
+ sha = c4830fc3b1aa78ec98d1d2ea4fed86ef0b7b803c
+ etag = f399e05ecb56adaf41d2545171f299a319142b17dd09fc38e452ca8c5d13bd0d
+ weak
diff --git a/readme.md b/readme.md
index 6f237e5c..7bcf1094 100644
--- a/readme.md
+++ b/readme.md
@@ -388,7 +388,6 @@ The versioning scheme for packages is:
[](https://github.com/kfrancis)
[](https://github.com/twenzel)
[](https://github.com/Giorgi)
-[](https://github.com/MikeCodesDotNET)
[](https://github.com/unoplatform)
[](https://github.com/dansiegel)
[](https://github.com/rbnswartz)
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index 50fc169d..1648dcd4 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -118,6 +118,8 @@
<_VersionLabel>$(VersionLabel.Replace('refs/heads/', ''))
+ <_VersionLabel>$(_VersionLabel.Replace('refs/tags/v', ''))
+
<_VersionLabel Condition="$(_VersionLabel.Contains('refs/pull/'))">$(VersionLabel.TrimEnd('.0123456789'))
@@ -128,7 +130,9 @@
<_VersionLabel>$(_VersionLabel.Replace('/', '-'))
- $(_VersionLabel)
+ $(_VersionLabel)
+
+ $(_VersionLabel)
diff --git a/src/SponsorLink/Directory.Build.props b/src/SponsorLink/Directory.Build.props
index c0a3e425..8afa0611 100644
--- a/src/SponsorLink/Directory.Build.props
+++ b/src/SponsorLink/Directory.Build.props
@@ -15,7 +15,11 @@
- 42.42.$([System.Math]::Floor($([MSBuild]::Divide($([System.DateTime]::Now.TimeOfDay.TotalSeconds), 10))))
+ $([System.DateTime]::Parse("2024-03-15"))
+ $([System.DateTime]::UtcNow.Subtract($(Epoc)).TotalDays)
+ $([System.Math]::Truncate($(TotalDays)))
+ $([System.Math]::Floor($([MSBuild]::Divide($([System.DateTime]::UtcNow.TimeOfDay.TotalSeconds), 10))))
+ 42.$(Days).$(Seconds)
SponsorableLib
diff --git a/src/SponsorLink/Library/Library.csproj b/src/SponsorLink/Library/Library.csproj
index f351273d..1f7f3188 100644
--- a/src/SponsorLink/Library/Library.csproj
+++ b/src/SponsorLink/Library/Library.csproj
@@ -6,6 +6,7 @@
SponsorableLib
Sample library incorporating SponsorLink checks
true
+ true
@@ -16,16 +17,4 @@
-
-
-
- MSBuild:Compile
- $(IntermediateOutputPath)\$([MSBuild]::ValueOrDefault('%(RelativeDir)', '').Replace('\', '.').Replace('/', '.'))%(Filename).g$(DefaultLanguageSourceExtension)
- $(Language)
- $(RootNamespace)
- $(RootNamespace).$([MSBuild]::ValueOrDefault('%(RelativeDir)', '').Replace('\', '.').Replace('/', '.').TrimEnd('.'))
- %(Filename)
-
-
-
diff --git a/src/SponsorLink/Library/readme.md b/src/SponsorLink/Library/readme.md
new file mode 100644
index 00000000..ba4ce371
--- /dev/null
+++ b/src/SponsorLink/Library/readme.md
@@ -0,0 +1,5 @@
+# Sponsorable Library
+
+Example of a library that is available for sponsorship and leverages
+[SponsorLink](https://github.com/devlooped/SponsorLink) to remind users
+in an IDE (VS/Rider).
diff --git a/src/SponsorLink/SponsorLink.targets b/src/SponsorLink/SponsorLink.targets
index de938459..a6041225 100644
--- a/src/SponsorLink/SponsorLink.targets
+++ b/src/SponsorLink/SponsorLink.targets
@@ -10,9 +10,6 @@
true
-
- $([System.IO.File]::ReadAllText('$(MSBuildThisFileDirectory)SponsorLink/devlooped.pub.jwk'))
-
$(Product)
@@ -22,7 +19,6 @@
-
@@ -123,7 +119,7 @@
-
+
@@ -138,4 +134,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ $([System.IO.File]::ReadAllText('$(MSBuildProjectDirectory)\$(BaseIntermediateOutputPath)devlooped.jwk'))
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SponsorLink/SponsorLink/SponsorLink.cs b/src/SponsorLink/SponsorLink/SponsorLink.cs
index a5e5beb9..f3d8328d 100644
--- a/src/SponsorLink/SponsorLink/SponsorLink.cs
+++ b/src/SponsorLink/SponsorLink/SponsorLink.cs
@@ -82,7 +82,7 @@ public static bool TryRead([NotNullWhen(true)] out ClaimsPrincipal? principal, I
foreach (var value in values)
{
- if (string.IsNullOrWhiteSpace(value.jwk) || string.IsNullOrEmpty(value.jwk))
+ if (string.IsNullOrWhiteSpace(value.jwt) || string.IsNullOrEmpty(value.jwk))
continue;
if (Validate(value.jwt, value.jwk, out var token, out var claims, false) == ManifestStatus.Valid && claims != null)
diff --git a/src/SponsorLink/SponsorLink/SponsorLink.csproj b/src/SponsorLink/SponsorLink/SponsorLink.csproj
index 4b00feb5..6b6c11e9 100644
--- a/src/SponsorLink/SponsorLink/SponsorLink.csproj
+++ b/src/SponsorLink/SponsorLink/SponsorLink.csproj
@@ -8,7 +8,6 @@
- $([System.IO.File]::ReadAllText('$(MSBuildThisFileDirectory)devlooped.pub.jwk'))
$(Product)
@@ -37,10 +36,32 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $([System.IO.File]::ReadAllText('$(MSBuildProjectDirectory)\$(BaseIntermediateOutputPath)devlooped.jwk'))
+
+
+
+
+
+
diff --git a/src/SponsorLink/SponsorLink/SponsorLink.es.resx b/src/SponsorLink/SponsorLink/SponsorLink.es.resx
index d8794ca1..12669931 100644
--- a/src/SponsorLink/SponsorLink/SponsorLink.es.resx
+++ b/src/SponsorLink/SponsorLink/SponsorLink.es.resx
@@ -119,16 +119,16 @@
Patrocinar los proyectos en que dependes asegura que se mantengan activos, y que recibas el apoyo que necesitas. Tambi茅n es muy econ贸mico y est谩 disponible en todo el mundo!
-Por favor considera apoyar el proyecto patrocinando en {links} y ejecutando posteriormente 'gh sponsors sync {spaced}'.
+Por favor considera apoyar el proyecto patrocinando en {links} y ejecutando posteriormente 'sponsor sync {spaced}'.
- No se pudo determinar el estado de su patrocinio. Funcionalidades exclusivas para patrocinadores pueden no estar disponibles.
+ Por favor considere apoyar {0} patrocinando @{1} 馃檹
Estado de patrocinio desconocido
- Funcionalidades exclusivas para patrocinadores pueden no estar disponibles. Ejecuta 'gh sponsors sync {spaced}' y, opcionalmente, habilita la sincronizaci贸n autom谩tica.
+ Funcionalidades exclusivas para patrocinadores pueden no estar disponibles. Ejecuta 'sponsor sync {spaced}' y, opcionalmente, habilita la sincronizaci贸n autom谩tica.
El estado de patrocino ha expirado y la sincronizaci贸n autom谩tica no est谩 habilitada.
@@ -140,13 +140,13 @@ Por favor considera apoyar el proyecto patrocinando en {links} y ejecutando post
Eres un verdadero h茅roe. Tu patrocinio ayuda a mantener el proyecto vivo y pr贸spero 馃檹.
- Gracias por apoyar a {0} con tu patrocinio de {1} 馃挓!
+ Gracias por apoyar a {0} con tu patrocinio 馃挓!
Eres un patrocinador del proyecto, eres lo m谩ximo 馃挓!
- El estado de patrocino ha expirado y est谩s en un per铆odo de gracia. Ejecuta 'gh sponsors sync {spaced}' y, opcionalmente, habilita la sincronizaci贸n autom谩tica.
+ El estado de patrocino ha expirado y est谩s en un per铆odo de gracia. Ejecuta 'sponsor sync {spaced}' y, opcionalmente, habilita la sincronizaci贸n autom谩tica.
El estado de patrocino necesita actualizaci贸n peri贸dica y la sincronizaci贸n autom谩tica no est谩 habilitada.
diff --git a/src/SponsorLink/SponsorLink/SponsorLink.resx b/src/SponsorLink/SponsorLink/SponsorLink.resx
index b8cdd5e0..67000f3d 100644
--- a/src/SponsorLink/SponsorLink/SponsorLink.resx
+++ b/src/SponsorLink/SponsorLink/SponsorLink.resx
@@ -119,17 +119,17 @@
Sponsoring projects you depend on ensures they remain active, and that you get the support you need. It's also super affordable and available worldwide!
-Please consider supporting the project by sponsoring at {links} and running 'gh sponsors sync {spaced}' afterwards.
+Please consider supporting the project by sponsoring at {links} and running 'sponsor sync {spaced}' afterwards.
Unknown sponsor description
- Please consider supporting {0} by sponsoring {1} 馃檹
+ Please consider supporting {0} by sponsoring @{1} 馃檹
Unknown sponsor status
- Sponsor-only features may be disabled. Please run 'gh sponsors sync {spaced}' and optionally enable automatic sync.
+ Sponsor-only features may be disabled. Please run 'sponsor sync {spaced}' and optionally enable automatic sync.
Sponsor status has expired and automatic sync has not been enabled.
@@ -147,7 +147,7 @@ Please consider supporting the project by sponsoring at {links} and running 'gh
You are a sponsor of the project, you rock 馃挓!
- Sponsor status has expired and you are in the grace period. Please run 'gh sponsors sync {spaced}' and optionally enable automatic sync.
+ Sponsor status has expired and you are in the grace period. Please run 'sponsor sync {spaced}' and optionally enable automatic sync.
Sponsor status needs periodic updating and automatic sync has not been enabled.
diff --git a/src/SponsorLink/SponsorLink/buildTransitive/Devlooped.Sponsors.targets b/src/SponsorLink/SponsorLink/buildTransitive/Devlooped.Sponsors.targets
index 471f37f5..de0563ec 100644
--- a/src/SponsorLink/SponsorLink/buildTransitive/Devlooped.Sponsors.targets
+++ b/src/SponsorLink/SponsorLink/buildTransitive/Devlooped.Sponsors.targets
@@ -84,10 +84,13 @@
It's possible that some manifests will need interactive sync, and we'll render the
messages in that case.
Note that since running this requires autosync=true, we can safely assume the user
- has already run `gh sponsors [...] -autosync` at least once to turn it on. Otherwise,
+ has already run `sponsorlink [...] -autosync` at least once to turn it on. Otherwise,
this target won't run at all.
+ Note that since we don't specify -f (force), we only sync if the local manifest is expired,
+ so as not to slow the build unnecessarily. Analyzer checking for the manifest will still
+ check the validity of the manifest using the embedded key.
-->
-
+
diff --git a/src/SponsorLink/SponsorLink/devlooped.pub.jwk b/src/SponsorLink/SponsorLink/devlooped.pub.jwk
deleted file mode 100644
index cdf45c28..00000000
--- a/src/SponsorLink/SponsorLink/devlooped.pub.jwk
+++ /dev/null
@@ -1,5 +0,0 @@
-锘縶
- "e": "AQAB",
- "kty": "RSA",
- "n": "5inhv8QymaDBOihNi1eY-6-hcIB5qSONFZxbxxXAyOtxAdjFCPM-94gIZqM9CDrX3pyg1lTJfml_a_FZSU9dB1ii5mSX_mNHBFXn1_l_gi1ErdbkIF5YbW6oxWFxf3G5mwVXwnPfxHTyQdmWQ3YJR-A3EB4kaFwLqA6Ha5lb2ObGpMTQJNakD4oTAGDhqHMGhu6PupGq5ie4qZcQ7N8ANw8xH7nicTkbqEhQABHWOTmLBWq5f5F6RYGF8P7cl0IWl_w4YcIZkGm2vX2fi26F9F60cU1v13GZEVDTXpJ9kzvYeM9sYk6fWaoyY2jhE51qbv0B0u6hScZiLREtm3n7ClJbIGXhkUppFS2JlNaX3rgQ6t-4LK8gUTyLt3zDs2H8OZyCwlCpfmGmdsUMkm1xX6t2r-95U3zywynxoWZfjBCJf41leM9OMKYwNWZ6LQMyo83HWw1PBIrX4ZLClFwqBcSYsXDyT8_ZLd1cdYmPfmtllIXxZhLClwT5qbCWv73V"
-}
\ No newline at end of file
diff --git a/src/SponsorLink/jwk.ps1 b/src/SponsorLink/jwk.ps1
new file mode 100644
index 00000000..c66f56fb
--- /dev/null
+++ b/src/SponsorLink/jwk.ps1
@@ -0,0 +1 @@
+curl https://raw.githubusercontent.com/devlooped/.github/main/sponsorlink.jwt --silent | jq -R 'split(".") | .[1] | @base64d | fromjson' | jq '.sub_jwk'
\ No newline at end of file
diff --git a/src/ThisAssembly.AssemblyInfo/readme.md b/src/ThisAssembly.AssemblyInfo/readme.md
index 4ccd3e5e..c37070b4 100644
--- a/src/ThisAssembly.AssemblyInfo/readme.md
+++ b/src/ThisAssembly.AssemblyInfo/readme.md
@@ -35,7 +35,6 @@ on the `ThisAssembly.Info` class.
[](https://github.com/kfrancis)
[](https://github.com/twenzel)
[](https://github.com/Giorgi)
-[](https://github.com/MikeCodesDotNET)
[](https://github.com/unoplatform)
[](https://github.com/dansiegel)
[](https://github.com/rbnswartz)
diff --git a/src/ThisAssembly.Constants/readme.md b/src/ThisAssembly.Constants/readme.md
index bdc3580f..121e389e 100644
--- a/src/ThisAssembly.Constants/readme.md
+++ b/src/ThisAssembly.Constants/readme.md
@@ -42,7 +42,6 @@ Which results in:
[](https://github.com/kfrancis)
[](https://github.com/twenzel)
[](https://github.com/Giorgi)
-[](https://github.com/MikeCodesDotNET)
[](https://github.com/unoplatform)
[](https://github.com/dansiegel)
[](https://github.com/rbnswartz)
diff --git a/src/ThisAssembly.Git/readme.md b/src/ThisAssembly.Git/readme.md
index 260ebeb6..b04fa938 100644
--- a/src/ThisAssembly.Git/readme.md
+++ b/src/ThisAssembly.Git/readme.md
@@ -85,7 +85,6 @@ packaging experience possible:
[](https://github.com/kfrancis)
[](https://github.com/twenzel)
[](https://github.com/Giorgi)
-[](https://github.com/MikeCodesDotNET)
[](https://github.com/unoplatform)
[](https://github.com/dansiegel)
[](https://github.com/rbnswartz)
diff --git a/src/ThisAssembly.Metadata/readme.md b/src/ThisAssembly.Metadata/readme.md
index 39990a9e..b5bd068a 100644
--- a/src/ThisAssembly.Metadata/readme.md
+++ b/src/ThisAssembly.Metadata/readme.md
@@ -38,7 +38,6 @@ The metadata attribute can alternatively be declared using MSBuild syntax in the
[](https://github.com/kfrancis)
[](https://github.com/twenzel)
[](https://github.com/Giorgi)
-[](https://github.com/MikeCodesDotNET)
[](https://github.com/unoplatform)
[](https://github.com/dansiegel)
[](https://github.com/rbnswartz)
diff --git a/src/ThisAssembly.Project/readme.md b/src/ThisAssembly.Project/readme.md
index 4c6ccddb..b81f3a77 100644
--- a/src/ThisAssembly.Project/readme.md
+++ b/src/ThisAssembly.Project/readme.md
@@ -33,7 +33,6 @@ them as `ProjectProperty` MSBuild items in the project file, such as:
[](https://github.com/kfrancis)
[](https://github.com/twenzel)
[](https://github.com/Giorgi)
-[](https://github.com/MikeCodesDotNET)
[](https://github.com/unoplatform)
[](https://github.com/dansiegel)
[](https://github.com/rbnswartz)
diff --git a/src/ThisAssembly.Resources/readme.md b/src/ThisAssembly.Resources/readme.md
index ca08ff48..b3c7d317 100644
--- a/src/ThisAssembly.Resources/readme.md
+++ b/src/ThisAssembly.Resources/readme.md
@@ -59,7 +59,6 @@ doc for the generated member.
[](https://github.com/kfrancis)
[](https://github.com/twenzel)
[](https://github.com/Giorgi)
-[](https://github.com/MikeCodesDotNET)
[](https://github.com/unoplatform)
[](https://github.com/dansiegel)
[](https://github.com/rbnswartz)
diff --git a/src/ThisAssembly.Strings/readme.md b/src/ThisAssembly.Strings/readme.md
index 04163a30..3587f8f3 100644
--- a/src/ThisAssembly.Strings/readme.md
+++ b/src/ThisAssembly.Strings/readme.md
@@ -84,7 +84,6 @@ partial class ThisAssembly
[](https://github.com/kfrancis)
[](https://github.com/twenzel)
[](https://github.com/Giorgi)
-[](https://github.com/MikeCodesDotNET)
[](https://github.com/unoplatform)
[](https://github.com/dansiegel)
[](https://github.com/rbnswartz)