Skip to content

chore(deps): update all NuGet and npm packages to their latest stable versions - #495

Merged
MPCoreDeveloper merged 5 commits into
masterfrom
chore/deps-latest-packages
Nov 10, 2026
Merged

MPCoreDeveloper merged 5 commits into
masterfrom
chore/deps-latest-packages

Conversation

@MPCoreDeveloper

Copy link
Copy Markdown
Owner

What this does

Brings every package pin in the repository up to its latest stable release, and fixes two defects found while verifying.

1. NuGet — chore(deps): update all direct NuGet packages to their latest versions

  • New in this PR: AngleSharp 1.10.0→1.10.1, AWSSDK.Core 4.0.102.18→4.0.102.19, HtmlSanitizer 11.0.16→11.0.26, xunit.v3 4.0.2→4.0.3, YesSql.Core / YesSql.Provider.Sqlite 6.1.0→6.2.0.
  • Carried over from the already-unpushed working tree: Grpc.* 2.84→2.85, KubernetesClient 19.0.2→21.0.8, HtmlSanitizer 9→11, the Microsoft.* 10.0.13→10.0.14 wave, Microsoft.Identity.Client 4.91.1→4.92.0, Markdig 1.5.0→1.6.0, System.Security.Cryptography.Pkcs 9.0.21→10.0.14, SourceLink 10.0.402→10.0.403, YesSql 6.0→6.1, and the BenchmarkDotNet diagnosers.
  • Closes two advisories that were logged BLOCKED in session 85 of docs/performance/WORKLOG.md: SixLabors.ImageSharp 3.2.0 (OrchardCore 3.0.1 resolved the vulnerable 3.1.11, GHSA-gwg2-r3hj-4w44) and MySqlConnector 2.6.2 (OrchardCore resolved 2.4.0, NU1902/NU1903). dotnet list SharpCoreDB.sln package --vulnerable --include-transitive now reports SharpCoreDb.Orchardcore clean.
  • Dropped linq2db.Provider.SQLite 6.0.0 — no project references it and the id exists on no configured feed (inert today, an NU1101 trap for the next reference).
  • SixLabors.ImageSharp is deliberately not taken to 4.1.3: the pin exists to keep OrchardCore 3.x on a patched 3.x, and a major bump is an API break for a package we only pin for the advisory.

2. JS client — fix(client-js): make the project type check pass again

npm run typecheck was failing on master with eight exactOptionalPropertyTypes errors, so the client's own gate could not run. Fields cleared by disconnect() are now declared field: T | undefined instead of the optional-property form, and the request builders use ...(parameters && { parameters }). exactOptionalPropertyTypes is not relaxed — the stricter checks stay on.

3. JS client — chore(deps): refresh the JS client lockfile within existing semver ranges

npm update only; package.json ranges unchanged. npm audit 14 → 13 advisories, 0 high, and npm audit --omit=dev reports 0 — everything left is devDependencies.

4. Test hygiene — fix(tests): format the generated INSERT literal with InvariantCulture

Uncommitted working-tree fix carried in: the generated VALUES literal no longer depends on the host locale's decimal separator.

Verification

Check Result
dotnet restore + Release build SharpCoreDB.CI.slnf 0 errors (302 warnings, the usual baseline)
SharpCoreDB.Tests (CI filter) 2118 passed, 0 failed
SharpCoreDB.VectorSearch.Tests 255 passed, 0 failed
SharpCoreDB.EntityFrameworkCore.Tests 116 passed, 0 failed
SharpCoreDB.Functional.Linq2DB.Tests 24 passed, 0 failed
CompiledQuery tests 15 passed, 0 failed
--deprecated / --vulnerable on SharpCoreDB.CI.slnf both clean
--vulnerable --include-transitive on SharpCoreDB.sln clean (was 1 moderate in OrchardCore)
dotnet list package --outdated on the CI filter 0 remaining
Release builds of SharpCoreDB.AppHost, SharpCoreDB.Aspire.Hosting, OrchardCore example 0 errors
JS client: npm ci, tsc --noEmit, tsup build, jest 0 errors, 16/16 tests pass

Deliberately not done

  • SixLabors.ImageSharp 4.x, JS eslint 10, jest 30, typescript 7, google-protobuf 4, tsup 9 — each is a migration, not a version bump.
  • No SharpCoreDBVersion / package-version / global.json change; nothing was packed or published.
  • The 42 vulnerabilities (41 high, 1 low) in the push banner are Dependabot's count across the default branch; every NuGet project in this repo scope is clean and the only npm manifest now has 0 production advisories.

Refreshed every central pin against nuget.org; `dotnet list package --outdated`
is now empty for the whole CI solution filter.

New in this commit: AngleSharp 1.10.0->1.10.1, AWSSDK.Core 4.0.102.18->4.0.102.19,
HtmlSanitizer 11.0.16->11.0.26, xunit.v3 4.0.2->4.0.3 (all four test projects),
YesSql.Core and YesSql.Provider.Sqlite 6.1.0->6.2.0.

Carried over from the unpushed working tree, which had already swept: Grpc.*
2.84.0->2.85.0, HtmlSanitizer 9.2.1039->11.0.16, KubernetesClient 19.0.2->21.0.8,
the Microsoft.* 10.0.13->10.0.14 wave (EF Core, Data.Sqlite, Mvc.Testing,
Extensions.Hosting), Microsoft.Identity.Client(.Extensions.Msal) 4.91.1->4.92.0,
Microsoft.VisualStudio.DiagnosticsHub.BenchmarkDotNetDiagnosers 18.12->18.13,
Markdig 1.5.0->1.6.0, System.Security.Cryptography.Pkcs 9.0.21->10.0.14,
Microsoft.SourceLink.GitHub 10.0.402->10.0.403, YesSql 6.0.0->6.1.0.

Two transitive security pins close the advisories that session 85 of
docs/performance/WORKLOG.md had to log BLOCKED on the "never modify package
versions" rail: SixLabors.ImageSharp 3.2.0 (OrchardCore 3.0.1 resolved the
vulnerable 3.1.11, GHSA-gwg2-r3hj-4w44, fixed in 3.2.0 within the same major
line) and MySqlConnector 2.6.2 (OrchardCore resolved 2.4.0, NU1902/NU1903).
`dotnet list SharpCoreDB.sln package --vulnerable --include-transitive` now
reports SharpCoreDb.Orchardcore clean.

Directory.Build.props follows Microsoft.Data.Sqlite to 10.0.14, so its
PackageVersion Update stays level with the central pin instead of silently
pinning a downgrade.

Dropped linq2db.Provider.SQLite 6.0.0: no project references it and the id does
not exist on nuget.org or either configured MyGet feed (search and flat container
both return nothing), so it was inert and an NU1101 trap for the next reference.
src/SharpCoreDB.Functional.Linq2DB resolves its SQLite provider from linq2db
6.5.1 + Microsoft.Data.Sqlite, which is unchanged.

SixLabors.ImageSharp is deliberately NOT bumped to 4.1.3: the pin exists to keep
OrchardCore 3.0.1 on a patched 3.x, and a major bump is an API break for a
package we only pin for the advisory.

Verified: restore and Release build of SharpCoreDB.CI.slnf (0 errors); the four
CI suites under Category!=Debug&Category!=Manual&Category!=Performance
(2118 + 255 + 116 + 24 tests, 0 failures); --deprecated and --vulnerable clean on
both the CI filter and the full SharpCoreDB.sln; Release builds of
SharpCoreDB.AppHost, SharpCoreDB.Aspire.Hosting and the OrchardCore example.
CompiledQuery_VsRegularQuery_ReturnsSameResults built its VALUES literals with
the current culture, so the SQL text it generated depended on the test machine's
decimal separator. Formatting the value explicitly keeps the statement identical
everywhere and makes the test independent of the host locale.

Verified: 15/15 CompiledQuery tests pass on the updated package set.
`npm run typecheck` (tsc --noEmit) failed on master with eight errors, so the
client's own quality gate could not run at all:

  grpc-client.ts(128,7)  TS2412  assigning undefined to `_client?: DatabaseServiceClient`
  grpc-client.ts(130,5)  TS2412  assigning undefined to `_sessionId?: string`
  grpc-client.ts(141,11) TS2375  `QueryParameters | undefined` into `parameters?`
  http-client.ts(96,5)   TS2412  assigning undefined to `_authToken?: string`
  http-client.ts(97,5)   TS2412  assigning undefined to `_database?: string`
  ws-client.ts(100,7)    TS2412  assigning undefined to `_ws?: WebSocket`
  ws-client.ts(102,5)    TS2412  assigning undefined to `_sessionId?: string`
  ws-client.ts(103,5)    TS2412  assigning undefined to `_database?: string`

Cause, not symptom: under `exactOptionalPropertyTypes: true` the optional form
`field?: T` forbids an explicit `undefined` assignment, and disconnect() releases
the socket/session exactly that way. The cleared fields are now declared
`field: T | undefined` (also exempt from strictPropertyInitialization, and still
falsy for the existing `if (!this._client || !this._sessionId)` guards), and the
two request builders use `...(parameters && { parameters })` instead of an
explicit `parameters: undefined` -- the same spread ws-client already uses for
its message payloads.

The tsconfig is not relaxed: exactOptionalPropertyTypes stays on, so the stricter
checks are preserved rather than muted.

Verified: tsc --noEmit 0 errors, tsup build OK, jest 16/16 pass -- run both
against the committed lockfile and against the refreshed one.
…nges

`npm update` in src/SharpCoreDBServerScriptClients/javascript/sharpcoredb-client.
package.json ranges are unchanged, so no release is implied; the direct bumps are
axios 1.20.0->1.21.1, @grpc/grpc-js 1.14.6->1.14.7, ws 8.22.0->8.22.2 and
@typescript-eslint/{eslint-plugin,parser} 8.72.0->8.72.2. No major-version moves.

Security effect: `npm audit` drops from 14 advisories (1 high, 6 moderate, 7 low)
to 13 (0 high, 6 moderate, 7 low), and `npm audit --omit=dev` reports 0 -- every
remaining advisory is in devDependencies (the jest 29 / eslint 8 lineage), for
which npm's own suggested "fix" is a downgrade to jest 25.1.0.

Deliberately NOT taken, because each needs a migration rather than a bump:
eslint 8->10 (flat config), jest 29->30, @types/jest 30, @types/node 20->26,
google-protobuf 3->4, tsup 8->9, typescript 5.9->7.

npm also re-normalised the platform-specific optional entries while regenerating:
one orphan @napi-rs/lzma-linux-x64-gnu entry went, @rollup/rollup-android-x64
was added for rollup 4.68.2. @rollup/rollup-linux-x64-gnu and
@rollup/rollup-win32-x64-msvc are both still present, so cross-platform
`npm ci` is unaffected.

Verified: npm ci clean, tsc --noEmit 0 errors, tsup build OK, jest 16/16 pass.
@MPCoreDeveloper

Copy link
Copy Markdown
Owner Author

Note on the "42 vulnerabilities" push banner

The banner counts open Dependabot alerts on the default branch, not this PR's diff. Breakdown of the 42:

Count Ecosystem What Status after this PR
40 nuget Microsoft.NETCore.App.Runtime.{linux-x64,linux-arm64,osx-x64,osx-arm64,win-x64,win-arm64} — GHSA-p3jp-9v83-76w9 / GHSA-4mpw-cpwj-hxxj, vulnerable < 11.0.0-rc.3.26522.148 Needs an owner decision, not a package bump. These are the runtime packs implied by the SDK in global.json (11.0.100-rc.1.26425.128, runtime 11.0.0-rc.1). The fix is to move global.json to the rc.3 SDK (11.0.100-rc.3.26522.148 — already the SDK installed on the dev box, which is why local dotnet --version reports rc.3). Changing global.json is a standing rail, so this PR does not touch it.
1 npm follow-redirects GHSA-mrwp-f3q8-3g9p (high, vulnerable ≤1.16.1) Closed by this PR — the lockfile now resolves 1.16.3.
1 npm deepmerge GHSA-gcqx-w48m-w2h4 (low, 4.3.1) No published fix upstream; devDependency of the jest lineage. Dependabot will keep it open until deepmerge ships 4.3.2+.

So: dotnet list package --vulnerable --include-transitive is clean repo-wide, npm audit --omit=dev is 0, and the only genuinely actionable open item is the global.json SDK bump — which is the owner's call.

@codecov

codecov Bot commented Nov 9, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

BlockCompressor_Zstd_Compress_AllocatesOnlyTheReturnedFrame failed once on CI's
rc.1 coverage runner with

  Compressing a 258,000-byte block allocated 4,376 bytes; at most 4.096 was
  expected (the returned frame).

and then passed on a re-run of the same commit with no product change in between
(job 129419150085: failure, then success), while master's own coverage run of the
same suite passes today. So the product did not regress: a probe inside the test
assembly measures the steady state at 176 B per call for a 151 B frame, i.e. 23x
under the 4.096 B ceiling.

The test measured exactly one call after the warm-up, so a one-off allocation
landing inside that window - JIT tier-up, host instrumentation, a rebuild of the
thread-static encoder - reads as a per-block cost. It now takes the cheapest of
three measured calls, which is what the lever claims: a *reused* encoder over a
*pooled* destination costs only the returned frame.

Nothing is relaxed. The 4.096 B ceiling is unchanged, as is the frame-shape
assertion, and the shape the lever replaced (129.496 B on every call for this
payload, per the 2026-10-09 probe) still fails it by 30x. A proportional
"allocation must not grow with the block" bound was tried first and rejected: a
hand-built ZstandardStream shape allocates only ~750 B here, so that bound would
not have caught the regression this test exists for.

Verified: CompressionLevelTests 48/48; the four CI suites 2.118 + 255 + 116 + 24
with 0 failures; tools/measure-coverage.ps1 exit 0, 46.20% measured against the
18% floor.
@sonarqubecloud

Copy link
Copy Markdown

@MPCoreDeveloper
MPCoreDeveloper merged commit 2560b22 into master Nov 10, 2026
15 of 16 checks passed
@MPCoreDeveloper
MPCoreDeveloper deleted the chore/deps-latest-packages branch November 12, 2026 21:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant