Skip to content

Commit 037fa9a

Browse files
Merge pull request #395 from SixLabors/js/v4
Update to V4 build
2 parents a1aec11 + 0a72572 commit 037fa9a

File tree

114 files changed

+837
-733
lines changed

Some content is hidden

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

114 files changed

+837
-733
lines changed

.editorconfig

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:war
104104
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:warning
105105
dotnet_style_parentheses_in_other_operators = always_for_clarity:suggestion
106106
# Expression-level preferences
107-
dotnet_style_object_initializer = true:warning
108-
dotnet_style_collection_initializer = true:warning
107+
dotnet_style_object_initializer = true:error
108+
dotnet_style_collection_initializer = true:error
109109
dotnet_style_explicit_tuple_names = true:warning
110110
dotnet_style_prefer_inferred_tuple_names = true:warning
111111
dotnet_style_prefer_inferred_anonymous_type_member_names = true:warning
@@ -135,9 +135,9 @@ csharp_style_prefer_null_check_over_type_check = true:warning
135135
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/language-rules#c-style-rules
136136
[*.{cs,csx,cake}]
137137
# 'var' preferences
138-
csharp_style_var_for_built_in_types = false:warning
139-
csharp_style_var_when_type_is_apparent = false:warning
140-
csharp_style_var_elsewhere = false:warning
138+
csharp_style_var_for_built_in_types = false:error
139+
csharp_style_var_when_type_is_apparent = false:error
140+
csharp_style_var_elsewhere = false:error
141141
# Expression-bodied members
142142
csharp_style_expression_bodied_methods = true:warning
143143
csharp_style_expression_bodied_constructors = true:warning
@@ -160,7 +160,10 @@ csharp_style_pattern_local_over_anonymous_function = true:warning
160160
csharp_style_deconstructed_variable_declaration = true:warning
161161
csharp_style_prefer_index_operator = true:warning
162162
csharp_style_prefer_range_operator = true:warning
163-
csharp_style_implicit_object_creation_when_type_is_apparent = true:warning
163+
csharp_style_implicit_object_creation_when_type_is_apparent = true:error
164+
# ReSharper inspection severities
165+
resharper_arrange_object_creation_when_type_evident_highlighting = error
166+
resharper_arrange_object_creation_when_type_not_evident_highlighting = error
164167
# "Null" checking preferences
165168
csharp_style_throw_expression = true:warning
166169
csharp_style_conditional_delegate_call = true:warning
@@ -172,6 +175,11 @@ dotnet_diagnostic.IDE0063.severity = suggestion
172175
csharp_using_directive_placement = outside_namespace:warning
173176
# Modifier preferences
174177
csharp_prefer_static_local_function = true:warning
178+
# Primary constructor preferences
179+
csharp_style_prefer_primary_constructors = false:none
180+
# Collection preferences
181+
dotnet_style_prefer_collection_expression = true:error
182+
resharper_use_collection_expression_highlighting =true:error
175183

176184
##########################################
177185
# Unnecessary Code Rules

.gitattributes

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,18 +85,12 @@
8585
###############################################################################
8686
*.basis binary
8787
*.dll binary
88-
*.eot binary
8988
*.exe binary
90-
*.otf binary
9189
*.pdf binary
9290
*.ppt binary
9391
*.pptx binary
9492
*.pvr binary
9593
*.snk binary
96-
*.ttc binary
97-
*.ttf binary
98-
*.woff binary
99-
*.woff2 binary
10094
*.xls binary
10195
*.xlsx binary
10296
###############################################################################
@@ -118,17 +112,38 @@
118112
*.bmp filter=lfs diff=lfs merge=lfs -text
119113
*.gif filter=lfs diff=lfs merge=lfs -text
120114
*.png filter=lfs diff=lfs merge=lfs -text
115+
*.qoi filter=lfs diff=lfs merge=lfs -text
121116
*.tif filter=lfs diff=lfs merge=lfs -text
122117
*.tiff filter=lfs diff=lfs merge=lfs -text
123118
*.tga filter=lfs diff=lfs merge=lfs -text
124119
*.webp filter=lfs diff=lfs merge=lfs -text
125120
*.dds filter=lfs diff=lfs merge=lfs -text
126121
*.ktx filter=lfs diff=lfs merge=lfs -text
127122
*.ktx2 filter=lfs diff=lfs merge=lfs -text
123+
*.astc filter=lfs diff=lfs merge=lfs -text
128124
*.pam filter=lfs diff=lfs merge=lfs -text
129125
*.pbm filter=lfs diff=lfs merge=lfs -text
130126
*.pgm filter=lfs diff=lfs merge=lfs -text
131127
*.ppm filter=lfs diff=lfs merge=lfs -text
132128
*.pnm filter=lfs diff=lfs merge=lfs -text
133129
*.wbmp filter=lfs diff=lfs merge=lfs -text
134130
*.exr filter=lfs diff=lfs merge=lfs -text
131+
*.ico filter=lfs diff=lfs merge=lfs -text
132+
*.cur filter=lfs diff=lfs merge=lfs -text
133+
*.ani filter=lfs diff=lfs merge=lfs -text
134+
*.heic filter=lfs diff=lfs merge=lfs -text
135+
*.hif filter=lfs diff=lfs merge=lfs -text
136+
*.avif filter=lfs diff=lfs merge=lfs -text
137+
###############################################################################
138+
# Handle ICC files by git lfs
139+
###############################################################################
140+
*.icc filter=lfs diff=lfs merge=lfs -text
141+
###############################################################################
142+
# Handle font files by git lfs
143+
###############################################################################
144+
*.eot filter=lfs diff=lfs merge=lfs -text
145+
*.otf filter=lfs diff=lfs merge=lfs -text
146+
*.ttc filter=lfs diff=lfs merge=lfs -text
147+
*.ttf filter=lfs diff=lfs merge=lfs -text
148+
*.woff filter=lfs diff=lfs merge=lfs -text
149+
*.woff2 filter=lfs diff=lfs merge=lfs -text

.github/workflows/build-and-test.yml

Lines changed: 71 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,42 +4,90 @@ on:
44
push:
55
branches:
66
- main
7+
- release/*
78
tags:
89
- "v*"
910
pull_request:
1011
branches:
1112
- main
13+
- release/*
14+
types: [ opened, synchronize, reopened ]
1215

1316
jobs:
17+
# Prime a single LFS cache and expose the exact key for the matrix
18+
WarmLFS:
19+
runs-on: ubuntu-latest
20+
outputs:
21+
lfs_key: ${{ steps.expose-key.outputs.lfs_key }}
22+
steps:
23+
- name: Git Config
24+
shell: bash
25+
run: |
26+
git config --global core.autocrlf false
27+
git config --global core.longpaths true
28+
29+
- name: Git Checkout
30+
uses: actions/checkout@v6
31+
with:
32+
fetch-depth: 0
33+
submodules: recursive
34+
35+
# Deterministic list of LFS object IDs, then compute a portable key:
36+
# - `git lfs ls-files -l` lists all tracked LFS objects with their SHA-256
37+
# - `awk '{print $1}'` extracts just the SHA field
38+
# - `sort` sorts in byte order (hex hashes sort the same everywhere)
39+
# This ensures the file content is identical regardless of OS or locale
40+
- name: Git Create LFS id list
41+
shell: bash
42+
run: git lfs ls-files -l | awk '{print $1}' | sort > .lfs-assets-id
43+
44+
- name: Git Expose LFS cache key
45+
id: expose-key
46+
shell: bash
47+
env:
48+
LFS_KEY: lfs-${{ hashFiles('.lfs-assets-id') }}-v1
49+
run: echo "lfs_key=$LFS_KEY" >> "$GITHUB_OUTPUT"
50+
51+
- name: Git Setup LFS Cache
52+
uses: actions/cache@v5
53+
with:
54+
path: .git/lfs
55+
key: ${{ steps.expose-key.outputs.lfs_key }}
56+
57+
- name: Git Pull LFS
58+
shell: bash
59+
run: git lfs pull
60+
1461
Build:
62+
needs: WarmLFS
1563
strategy:
1664
matrix:
1765
options:
1866
- os: ubuntu-latest
19-
framework: net7.0
67+
framework: net10.0
2068
sdk-preview: true
2169
runtime: -x64
2270
codecov: false
2371
- os: macos-latest
24-
framework: net7.0
72+
framework: net10.0
2573
sdk-preview: true
2674
runtime: -x64
2775
codecov: false
2876
- os: windows-latest
29-
framework: net7.0
77+
framework: net10.0
3078
sdk-preview: true
3179
runtime: -x64
3280
codecov: true
3381
- os: ubuntu-latest
34-
framework: net6.0
82+
framework: net8.0
3583
runtime: -x64
3684
codecov: false
3785
- os: macos-latest
38-
framework: net6.0
86+
framework: net8.0
3987
runtime: -x64
4088
codecov: false
4189
- os: windows-latest
42-
framework: net6.0
90+
framework: net8.0
4391
runtime: -x64
4492
codecov: false
4593

@@ -58,25 +106,22 @@ jobs:
58106
fetch-depth: 0
59107
submodules: recursive
60108

61-
# See https://github.com/actions/checkout/issues/165#issuecomment-657673315
62-
- name: Git Create LFS FileList
63-
run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id
64-
109+
# Use the warmed key from WarmLFS. Do not recompute or recreate .lfs-assets-id here.
65110
- name: Git Setup LFS Cache
66-
uses: actions/cache@v4
67-
id: lfs-cache
111+
uses: actions/cache@v5
68112
with:
69113
path: .git/lfs
70-
key: ${{ runner.os }}-lfs-${{ hashFiles('.lfs-assets-id') }}-v1
114+
key: ${{ needs.WarmLFS.outputs.lfs_key }}
71115

72116
- name: Git Pull LFS
117+
shell: bash
73118
run: git lfs pull
74119

75120
- name: NuGet Install
76121
uses: NuGet/setup-nuget@v2
77122

78123
- name: NuGet Setup Cache
79-
uses: actions/cache@v4
124+
uses: actions/cache@v5
80125
id: nuget-cache
81126
with:
82127
path: ~/.nuget
@@ -112,11 +157,18 @@ jobs:
112157
s3rver -d . &
113158
114159
- name: DotNet Setup
115-
uses: actions/setup-dotnet@v4
160+
if: ${{ matrix.options.sdk-preview != true }}
161+
uses: actions/setup-dotnet@v5
162+
with:
163+
dotnet-version: |
164+
8.0.x
165+
166+
- name: DotNet Setup Preview
167+
if: ${{ matrix.options.sdk-preview == true }}
168+
uses: actions/setup-dotnet@v5
116169
with:
117170
dotnet-version: |
118-
7.0.x
119-
6.0.x
171+
10.0.x
120172
121173
- name: DotNet Build
122174
if: ${{ matrix.options.sdk-preview != true }}
@@ -153,6 +205,7 @@ jobs:
153205
if: matrix.options.codecov == true && startsWith(github.repository, 'SixLabors')
154206
with:
155207
flags: unittests
208+
token: ${{ secrets.CODECOV_TOKEN }}
156209

157210
Publish:
158211
needs: [Build]
@@ -178,7 +231,7 @@ jobs:
178231
uses: NuGet/setup-nuget@v2
179232

180233
- name: NuGet Setup Cache
181-
uses: actions/cache@v4
234+
uses: actions/cache@v5
182235
id: nuget-cache
183236
with:
184237
path: ~/.nuget

samples/ImageSharp.Web.Sample/ImageSharp.Web.Sample.csproj

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
<Project Sdk="Microsoft.NET.Sdk.Web">
22

33
<PropertyGroup>
4-
<TargetFramework>net6.0</TargetFramework>
4+
<TargetFramework>net8.0</TargetFramework>
55
<Nullable>enable</Nullable>
66
<ImplicitUsings>enable</ImplicitUsings>
7-
<LangVersion>10</LangVersion>
87
</PropertyGroup>
98

109
<ItemGroup>

samples/ImageSharp.Web.Sample/Pages/Index.cshtml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@
237237
<code>sixlabors.imagesharp.web.png?width=300&bgcolor=128,28,32</code>
238238
</p>
239239
<p>
240-
<img src="sixlabors.imagesharp.web.png" imagesharp-width="300" imagesharp-bgcolor="Color.FromRgb(128, 28, 32)" />
240+
<img src="sixlabors.imagesharp.web.png" imagesharp-width="300" imagesharp-bgcolor="Color.FromPixel<Rgba32>(new(128, 28, 32))" />
241241
</p>
242242
</div>
243243
<div>
@@ -253,7 +253,7 @@
253253
<code>sixlabors.imagesharp.web.png?width=300&bgcolor=128,28,32,128</code>
254254
</p>
255255
<p>
256-
<img src="sixlabors.imagesharp.web.png" imagesharp-width="300" imagesharp-bgcolor="Color.FromRgba(128, 28, 32, 128)" />
256+
<img src="sixlabors.imagesharp.web.png" imagesharp-width="300" imagesharp-bgcolor="Color.FromPixel<Rgba32>(new(128, 28, 32, 128))" />
257257
</p>
258258
</div>
259259
</section>

samples/ImageSharp.Web.Sample/Pages/_ViewImports.cshtml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
@using SixLabors.ImageSharp
2+
@using SixLabors.ImageSharp.PixelFormats
23
@using SixLabors.ImageSharp.Processing
34
@using SixLabors.ImageSharp.Web
45
@using ImageSharp.Web.Sample

samples/ImageSharp.Web.Sample/Program.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
// Copyright (c) Six Labors.
22
// Licensed under the Six Labors Split License.
33

4+
using SixLabors.ImageSharp.Web;
45
using SixLabors.ImageSharp.Web.Caching;
56
using SixLabors.ImageSharp.Web.Commands;
6-
using SixLabors.ImageSharp.Web.DependencyInjection;
77
using SixLabors.ImageSharp.Web.Processors;
88
using SixLabors.ImageSharp.Web.Providers;
99

@@ -27,7 +27,7 @@ public static void Main(string[] args)
2727
services.AddRazorPages();
2828

2929
// TODO: Enable HMAC
30-
services.AddImageSharp(options => options.HMACSecretKey = new byte[] { 1, 2, 3, 4, 5 })
30+
services.AddImageSharp(options => options.HMACSecretKey = [1, 2, 3, 4, 5])
3131
.SetRequestParser<QueryCollectionRequestParser>()
3232
.Configure<PhysicalFileSystemCacheOptions>(options =>
3333
{

src/ImageSharp.Web.Providers.AWS/AmazonS3BucketClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
using Amazon.S3;
55

6-
namespace SixLabors.ImageSharp.Web;
6+
namespace SixLabors.ImageSharp.Web.AWS;
77

88
/// <summary>
99
/// Represents a scoped Amazon S3 client instance that is explicitly associated with a single S3 bucket.

src/ImageSharp.Web.Providers.AWS/AmazonS3ClientFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
using Amazon.Runtime;
66
using Amazon.S3;
77

8-
namespace SixLabors.ImageSharp.Web;
8+
namespace SixLabors.ImageSharp.Web.AWS;
99

1010
internal static class AmazonS3ClientFactory
1111
{

0 commit comments

Comments
 (0)