diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 6c10014235..e18e1ce737 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -31,3 +31,14 @@ updates:
patterns:
- "react"
- "react-dom"
+ # All @docusaurus/* packages must have the same version (otherwise the website build fails)
+ docusaurus:
+ patterns:
+ - "@docusaurus/*"
+- package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: weekly
+ target-branch: main
+ commit-message:
+ prefix: "Dependency (dependabot/github-actions):"
diff --git a/.github/mergify.yml b/.github/mergify.yml
index 00b70a10ec..3d9ac925f0 100644
--- a/.github/mergify.yml
+++ b/.github/mergify.yml
@@ -1,29 +1,19 @@
-pull_request_rules:
- - name: automatic merge for pull request based on label and ci success
+pull_request_rules:
+ - name: automatic merge for LGTM label and bot pull requests based on ci success
conditions:
- - label~=LGTM$
- - check-success=continuous-integration/appveyor/pr
- actions:
- merge:
- method: squash
- - name: automatic merge for Dependabot pull requests based on ci success
- conditions:
- - author=dependabot[bot]
- - check-success=continuous-integration/appveyor/pr
- actions:
- merge:
- method: squash
- - name: automatic merge for Transifex pull requests based on ci success
- conditions:
- - author=transifex-integration[bot]
- - check-success=continuous-integration/appveyor/pr
- actions:
- merge:
- method: squash
- - name: automatic merge for ImgBot pull requests based on ci success
- conditions:
- - author=imgbot[bot]
+ - base=main
+ - or:
+ - label~=LGTM$
+ - author=dependabot[bot]
+ - author=transifex-integration[bot]
+ - author=imgbot[bot]
+ # Major updates can break at runtime even if the build succeeds - they are merged manually after testing
+ - dependabot-update-type!=version-update:semver-major
- check-success=continuous-integration/appveyor/pr
+ # Website changes (e.g. Dependabot npm updates) also need a successful website build
+ - or:
+ - -files~=^(Website/|\.github/workflows/deploy_website\.yml$)
+ - check-success=Build Website
actions:
merge:
method: squash
diff --git a/.github/stale.yml b/.github/stale.yml
deleted file mode 100644
index 492b4d29ea..0000000000
--- a/.github/stale.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-# Number of days of inactivity before an issue becomes stale
-daysUntilStale: 30
-# Number of days of inactivity before a stale issue is closed
-daysUntilClose: 7
-# Issues with these labels will never be considered stale
-exemptLabels:
- - ":bug: bug"
- - ":rocket: feature-request"
- - ":book: documentation"
- - ":hammer_and_wrench: code-cleanup"
-# Label to use when marking an issue as stale
-staleLabel: ":watch: stale"
-# Comment to post when marking an issue as stale. Set to `false` to disable
-markComment: >
- This issue has been automatically marked as stale because it has not had
- recent activity. It will be closed if no further activity occurs. Thank you
- for your contributions.
-# Comment to post when closing a stale issue. Set to `false` to disable
-closeComment: false
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 12335a41d9..7a00dd98f0 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -2,44 +2,54 @@ name: "CodeQL"
on:
workflow_dispatch:
- #push:
- # branches: [ "main", "stable-*" ]
- #pull_request:
- # branches: [ "main", "stable-*" ]
schedule:
- cron: '38 21 * * 6'
jobs:
analyze:
- name: Analyze
- runs-on: ${{ 'windows-latest' }}
- timeout-minutes: ${{ 360 }}
+ name: Analyze (${{ matrix.language }})
+ runs-on: ${{ matrix.runs-on }}
+ timeout-minutes: 120
permissions:
- # required for all workflows
+ contents: read
security-events: write
strategy:
fail-fast: false
matrix:
- language: [ 'csharp', 'javascript-typescript' ]
+ include:
+ # C# is built (WPF, Windows only) for the most precise results.
+ - language: csharp
+ build-mode: autobuild
+ runs-on: windows-latest
+ - language: javascript-typescript
+ build-mode: none
+ runs-on: ubuntu-latest
+ # GitHub Actions workflows (e.g. pull_request_target, permissions).
+ - language: actions
+ build-mode: none
+ runs-on: ubuntu-latest
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@v7
with:
submodules: 'true'
- # Initializes the CodeQL tools for scanning.
+ # The C# autobuild needs the SDK from Source/global.json (the runner image may only have an older one)
+ - name: Setup .NET
+ if: matrix.language == 'csharp'
+ uses: actions/setup-dotnet@v6
+ with:
+ global-json-file: Source/global.json
+
- name: Initialize CodeQL
- uses: github/codeql-action/init@v3
+ uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
-
- # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
- - name: Autobuild
- uses: github/codeql-action/autobuild@v3
+ build-mode: ${{ matrix.build-mode }}
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v3
+ uses: github/codeql-action/analyze@v4
with:
- category: "/language:${{matrix.language}}"
+ category: "/language:${{ matrix.language }}"
diff --git a/.github/workflows/deploy_website.yml b/.github/workflows/deploy_website.yml
index 997ba8d86e..d6d806bd85 100644
--- a/.github/workflows/deploy_website.yml
+++ b/.github/workflows/deploy_website.yml
@@ -12,37 +12,34 @@ on:
- '.github/workflows/deploy_website.yml'
- 'Website/**'
pull_request:
+ paths:
+ - '.github/workflows/deploy_website.yml'
+ - 'Website/**'
+
+# Runs that deploy (main, release, manual) run one after the other incl. the build, so the last triggered run also
+# deploys last (e.g. a release build isn't overwritten by an older main build). Outdated PR runs are cancelled.
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.ref || 'deploy' }}
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
- build-and-deploy-website:
- name: "Build and Deploy Website"
+ build-website:
+ name: "Build Website"
runs-on: ubuntu-latest
permissions:
- contents: write
- concurrency:
- group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.ref || 'deploy' }}
+ contents: read
defaults:
run:
working-directory: Website
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v7
- name: Setup Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v7
with:
node-version: 22
-
- - name: Get yarn cache
- id: yarn-cache
- run: echo "YARN_CACHE_DIR=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
-
- - name: Cache dependencies
- uses: actions/cache@v4
- with:
- path: ${{ steps.yarn-cache.outputs.YARN_CACHE_DIR }}
- key: ${{ runner.os }}-Website-${{ hashFiles('**/yarn.lock') }}
- restore-keys: |
- ${{ runner.os }}-Website-
+ cache: yarn
+ cache-dependency-path: Website/yarn.lock
- name: Install dependencies
run: yarn install --frozen-lockfile
@@ -53,9 +50,33 @@ jobs:
# Used by scripts/fetch-release-data.mjs to raise the GitHub API rate limit.
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - name: Upload website
+ uses: actions/upload-artifact@v7
+ if: github.event_name == 'release' || (github.event_name != 'pull_request' && github.ref == 'refs/heads/main')
+ with:
+ name: website
+ path: Website/build
+ # Keep .well-known/ and .nojekyll (hidden files are skipped by default).
+ include-hidden-files: true
+ retention-days: 1
+
+ # Separate job, so only the deployment gets write access (not the build with its npm dependencies).
+ deploy-website:
+ name: "Deploy Website"
+ needs: build-website
+ if: github.event_name == 'release' || (github.event_name != 'pull_request' && github.ref == 'refs/heads/main')
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ steps:
+ - name: Download website
+ uses: actions/download-artifact@v8
+ with:
+ name: website
+ path: build
+
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
- if: github.event_name == 'release' || (github.event_name != 'pull_request' && github.ref == 'refs/heads/main')
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
- publish_dir: ./Website/build
+ publish_dir: ./build
diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml
index 7ff9c4fdf6..f3f5699aed 100644
--- a/.github/workflows/label.yml
+++ b/.github/workflows/label.yml
@@ -14,7 +14,7 @@ jobs:
pull-requests: write
steps:
- name: Assign label
- uses: actions/github-script@v7
+ uses: actions/github-script@v9
with:
script: |
await github.rest.issues.addLabels({
diff --git a/.github/workflows/milestone.yml b/.github/workflows/milestone.yml
index cf6abe3078..8ac2f987aa 100644
--- a/.github/workflows/milestone.yml
+++ b/.github/workflows/milestone.yml
@@ -14,7 +14,7 @@ jobs:
pull-requests: write
steps:
- name: Assign milestone
- uses: actions/github-script@v7
+ uses: actions/github-script@v9
with:
script: |
const milestones = await github.rest.issues.listMilestones({
diff --git a/AGENTS.md b/AGENTS.md
index e6d91584ad..8cd0de9c93 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -183,9 +183,17 @@ The website is deployed to GitHub Pages at: https://borntoberoot.net/NETworkMana
**Primary Build System**: AppVeyor (configuration in `appveyor.yml`)
- Builds on the Visual Studio 2022 image
-- Installs the .NET SDK version from `Source/global.json`
+- Installs the .NET SDK version from `Source/global.json` (skipped if the image already has it)
- Restores NuGet packages
-- Builds the Release configuration for x64 and ARM64 (setup, portable and archive per architecture)
+- Builds the Release configuration: x64 for branches and PRs, x64 and ARM64 for tags (setup, portable and archive per
+ architecture, only for tags). PRs only build the application (`NETworkManager.csproj`) unless they change
+ `Source/NETworkManager.Setup/`, branches and tags the setup (`NETworkManager.Setup.wixproj`)
+- Runs the unit tests (`Source/NETworkManager.Tests`, `dotnet test --project`)
+- Branches with an open PR are only built as PR (`skip_branch_with_pr`)
+- Ends successfully without building if only docs / website / repository files changed (`Website/`, `.github/`,
+ `.claude/`, `Images/`, `Chocolatey/`, `WinGet/`, `Tests/Environments/`, `*.md`, `LICENSE`), so Mergify still gets a
+ green status. Tags are always built. Branch builds (e.g. `main`) only see the last commit, so they are only skipped
+ for squash merges of a PR (subject ends with `(#1234)`); direct pushes are always built
- Version format: `yyyy.M.d.0` (date-based)
- Artifacts are signed via [SignPath.io](https://signpath.io/)
- Released to GitHub Releases
@@ -193,13 +201,16 @@ The website is deployed to GitHub Pages at: https://borntoberoot.net/NETworkMana
**GitHub Actions Workflows**:
- **CodeQL Analysis** (`.github/workflows/codeql.yml`):
- Automated security scanning
- - Analyzes C# and JavaScript/TypeScript code
+ - Analyzes C# (autobuild on Windows), JavaScript/TypeScript and GitHub Actions workflows (Linux)
- Runs weekly and on-demand via workflow_dispatch
- **Website Deployment** (`.github/workflows/deploy_website.yml`):
- Builds and deploys Docusaurus website to GitHub Pages
- - Triggers on changes to `Website/` directory
+ - Triggers on changes to `Website/` directory (push to `main` and PRs) and on published releases
- Uses Node.js 22 with yarn for build
+ - Uses Docusaurus Faster (`@docusaurus/faster`, Rspack / SWC) for faster builds; all `@docusaurus/*` packages must have
+ the same version (Dependabot updates them as a group)
+ - Build and deploy are separate jobs, only the deploy job (`main` / release) has write access
- **Label / Milestone** (`.github/workflows/label.yml`, `.github/workflows/milestone.yml`):
- Label PRs from Dependabot, Transifex and ImgBot as dependencies
@@ -207,21 +218,18 @@ The website is deployed to GitHub Pages at: https://borntoberoot.net/NETworkMana
**Automation & Bots**:
- **Dependabot** (`.github/dependabot.yml`):
- - Weekly updates for NuGet packages, .NET SDK, and npm packages
+ - Weekly updates for NuGet packages, .NET SDK, npm packages and GitHub Actions
- Automatic PR creation for dependency updates
- **Mergify** (`.github/mergify.yml`):
- Auto-merges PRs with `LGTM` label after AppVeyor CI passes
- - Auto-merges Dependabot, Transifex, and ImgBot PRs after CI success
+ - Auto-merges Dependabot (except major updates, they are merged manually after testing), Transifex, and ImgBot PRs
+ after CI success
+ - PRs that change `Website/` (or the website workflow) also need a successful `Build Website` check
- **Transifex Integration** (`.github/transifex.yml`):
- Automated translation synchronization
- Syncs RESX files between GitHub and Transifex
-
-- **Stale Bot** (`.github/stale.yml`):
- - Marks issues inactive for 30 days as stale
- - Closes stale issues after 7 days
- - Excludes bugs, feature requests, documentation and code-cleanup issues
## Contributing Areas
@@ -307,6 +315,7 @@ The website is deployed to GitHub Pages at: https://borntoberoot.net/NETworkMana
## Testing Strategy
- **Manual Testing**: Primary testing approach (test environments in `Tests/Environments/`)
+- **Unit Tests**: xUnit tests in `Source/NETworkManager.Tests`, run by AppVeyor CI
- **Build Verification**: AppVeyor CI ensures builds succeed
- **Windows only**: The application only builds and runs on Windows (WPF, Windows SDK, CsWinRT). Changes made
on other platforms can't be compiled and must be verified on Windows
@@ -357,7 +366,6 @@ The website is deployed to GitHub Pages at: https://borntoberoot.net/NETworkMana
- **`.github/dependabot.yml`**: Dependabot configuration
- **`.github/mergify.yml`**: Mergify auto-merge configuration
- **`.github/transifex.yml`**: Transifex translation sync configuration
-- **`.github/stale.yml`**: Stale issue bot configuration
- **`.gitmodules`**: Git submodule configuration (Dragablz)
- **`Website/docusaurus.config.js`**: Documentation site configuration
- **`Website/docs/changelog/next-release.md`**: Changelog of the upcoming release
diff --git a/Source/NETworkManager.Models/NETworkManager.Models.csproj b/Source/NETworkManager.Models/NETworkManager.Models.csproj
index 5b46554a98..9c585838a0 100644
--- a/Source/NETworkManager.Models/NETworkManager.Models.csproj
+++ b/Source/NETworkManager.Models/NETworkManager.Models.csproj
@@ -46,6 +46,11 @@
+
+
+
diff --git a/Website/docs/changelog/next-release.md b/Website/docs/changelog/next-release.md
index 0497ffb714..60f2403fc7 100644
--- a/Website/docs/changelog/next-release.md
+++ b/Website/docs/changelog/next-release.md
@@ -374,7 +374,7 @@ Release date: **xx.xx.2026**
## Dependencies, Refactoring & Documentation
- Code cleanup & refactoring
-- Dependabot updates the NuGet packages again (no updates since February 2025). The Windows SDK version is now set via `TargetPlatformVersion` instead of in the target framework (`net10.0-windows10.0.22621.0` → `net10.0-windows`), which Dependabot can't handle ([dependabot-core#13278](https://github.com/dependabot/dependabot-core/issues/13278)). The build output moved from `bin\...\net10.0-windows10.0.22621.0\` to `bin\...\net10.0-windows\`.
+- Dependabot updates the NuGet packages again (no updates since February 2025). The Windows SDK version is now set via `TargetPlatformVersion` instead of in the target framework (`net10.0-windows10.0.22621.0` → `net10.0-windows`), which Dependabot can't handle ([dependabot-core#13278](https://github.com/dependabot/dependabot-core/issues/13278)). The build output moved from `bin\...\net10.0-windows10.0.22621.0\` to `bin\...\net10.0-windows\`. [1ce8310](https://github.com/BornToBeRoot/NETworkManager/commit/1ce8310a876f0d5bf87d0b2e098bcb22d15dd5a9)
- Context menus of lists (results, profiles, settings) get the view model in XAML instead of when they are opened. Their items, and menu items that are created outside of a menu (e.g. the extra items of the profile context menu), no longer cause XAML binding errors every time a list is filled, which hid real binding errors.
- Converted the **IP Scanner** and **Port Scanner** engines from `Parallel.ForEach` with blocking calls to genuinely asynchronous `Parallel.ForEachAsync`, removing the risk of exhausting the application's ThreadPool at high concurrency settings. [#3564](https://github.com/BornToBeRoot/NETworkManager/pull/3564)
- The TCP port probe (**IP Scanner**, **Port Scanner**) and the NetBIOS request (**IP Scanner**) report a refused connection, a timeout or no answer as result instead of throwing an exception for each of them (thousands per scan). Faster, and the application no longer lags while scanning with a debugger attached. [#3653](https://github.com/BornToBeRoot/NETworkManager/pull/3653)
@@ -384,5 +384,6 @@ Release date: **xx.xx.2026**
- Input histories (e.g. hosts, domains, ports) are updated in place instead of being cleared and refilled, which avoids clearing the text of the input field and unnecessary updates. [#3644](https://github.com/BornToBeRoot/NETworkManager/pull/3644)
- Added a unit test project (xUnit) with tests for the run command parser and the history lists. [#3644](https://github.com/BornToBeRoot/NETworkManager/pull/3644)
- Reworked the GitHub issue templates as forms (bug report, feature request, question) that ask for the relevant information (e.g. affected feature, version, installation, Windows version, log), with links to the documentation, discussions, translations and security advisories. Simplified the pull request template and removed the Copilot summary section. [#3660](https://github.com/BornToBeRoot/NETworkManager/pull/3660)
+- Faster CI: AppVeyor no longer builds a branch a second time when a PR is open, skips changes that only affect the documentation / website, builds ARM64 only for releases and now runs the unit tests. The website is only built for PRs that change it and builds about 3x faster (Docusaurus Faster). Dependabot also updates the GitHub Actions, and CodeQL also scans the workflows. Website changes are only merged automatically if the website builds. Dependabot major updates are no longer merged automatically. Removed the stale bot. [#3675](https://github.com/BornToBeRoot/NETworkManager/pull/3675)
- Language files updated via [#transifex](https://github.com/BornToBeRoot/NETworkManager/pulls?q=author%3Aapp%2Ftransifex-integration)
- Dependencies updated via [#dependabot](https://github.com/BornToBeRoot/NETworkManager/pulls?q=author%3Aapp%2Fdependabot)
diff --git a/Website/docusaurus.config.js b/Website/docusaurus.config.js
index d350703564..c947830690 100644
--- a/Website/docusaurus.config.js
+++ b/Website/docusaurus.config.js
@@ -8,6 +8,14 @@ import { themes as prismThemes } from "prism-react-renderer";
/** @type {import('@docusaurus/types').Config} */
const config = {
+ future: {
+ // Required by the SSG worker threads of Docusaurus Faster.
+ v4: {
+ removeLegacyPostBuildHeadAttribute: true,
+ },
+ // Rspack, SWC and Lightning CSS instead of Webpack, Babel and Terser - builds about 3x faster.
+ faster: true,
+ },
title: "NETworkManager",
tagline:
"A powerful open-source tool for managing networks and troubleshooting network problems!",
diff --git a/Website/package.json b/Website/package.json
index f361ca429e..77df48080d 100644
--- a/Website/package.json
+++ b/Website/package.json
@@ -18,6 +18,7 @@
},
"dependencies": {
"@docusaurus/core": "3.10.2",
+ "@docusaurus/faster": "3.10.2",
"@docusaurus/plugin-client-redirects": "^3.10.2",
"@docusaurus/preset-classic": "3.10.2",
"@mdx-js/react": "^3.1.1",
diff --git a/Website/yarn.lock b/Website/yarn.lock
index adcc88a266..0132974b50 100644
--- a/Website/yarn.lock
+++ b/Website/yarn.lock
@@ -1730,6 +1730,22 @@
postcss-sort-media-queries "^5.2.0"
tslib "^2.6.0"
+"@docusaurus/faster@3.10.2":
+ version "3.10.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/faster/-/faster-3.10.2.tgz#6cacd14085445d5826990f7525c5df1cf371e04a"
+ integrity sha512-p/5E5/RyHv+QWusJMPN5i3OMJTqTgkhuwzVbB1AReDWTUHXQCmf5mlTFzGiDrWeQWIDOKsuOPn1jJh0s9LUOHA==
+ dependencies:
+ "@docusaurus/types" "3.10.2"
+ "@rspack/core" "^1.7.10"
+ "@swc/core" "^1.15.40"
+ "@swc/html" "^1.15.40"
+ browserslist "^4.24.2"
+ lightningcss "^1.27.0"
+ semver "^7.5.4"
+ swc-loader "^0.2.6"
+ tslib "^2.6.0"
+ webpack "^5.95.0"
+
"@docusaurus/logger@3.10.2":
version "3.10.2"
resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.10.2.tgz#280bed53d0eb9cdc56e896a155036207910e89c9"
@@ -2108,6 +2124,28 @@
utility-types "^3.10.0"
webpack "^5.88.1"
+"@emnapi/core@^1.5.0":
+ version "1.11.3"
+ resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.11.3.tgz#5e95348a42cd1e06f0b9aa380cd74091daa4d520"
+ integrity sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==
+ dependencies:
+ "@emnapi/wasi-threads" "1.2.3"
+ tslib "^2.4.0"
+
+"@emnapi/runtime@^1.5.0":
+ version "1.11.3"
+ resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.11.3.tgz#84257ae3b0531eb2aec1ffa23d70700da007ba95"
+ integrity sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==
+ dependencies:
+ tslib "^2.4.0"
+
+"@emnapi/wasi-threads@1.2.3":
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz#c9bf72fd4be5b928aee894820e8d814ed73916e9"
+ integrity sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==
+ dependencies:
+ tslib "^2.4.0"
+
"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0":
version "9.3.0"
resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb"
@@ -2294,6 +2332,58 @@
dependencies:
"@types/mdx" "^2.0.0"
+"@module-federation/error-codes@0.22.0":
+ version "0.22.0"
+ resolved "https://registry.yarnpkg.com/@module-federation/error-codes/-/error-codes-0.22.0.tgz#31ccc990dc240d73912ba7bd001f7e35ac751992"
+ integrity sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==
+
+"@module-federation/runtime-core@0.22.0":
+ version "0.22.0"
+ resolved "https://registry.yarnpkg.com/@module-federation/runtime-core/-/runtime-core-0.22.0.tgz#7321ec792bb7d1d22bee6162ec43564b769d2a3c"
+ integrity sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==
+ dependencies:
+ "@module-federation/error-codes" "0.22.0"
+ "@module-federation/sdk" "0.22.0"
+
+"@module-federation/runtime-tools@0.22.0":
+ version "0.22.0"
+ resolved "https://registry.yarnpkg.com/@module-federation/runtime-tools/-/runtime-tools-0.22.0.tgz#36f2a7cb267af208a9d1a237fe9a71b4bf31431e"
+ integrity sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==
+ dependencies:
+ "@module-federation/runtime" "0.22.0"
+ "@module-federation/webpack-bundler-runtime" "0.22.0"
+
+"@module-federation/runtime@0.22.0":
+ version "0.22.0"
+ resolved "https://registry.yarnpkg.com/@module-federation/runtime/-/runtime-0.22.0.tgz#f789c9ef40d846d110711c8221ecc0ad938d43d8"
+ integrity sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==
+ dependencies:
+ "@module-federation/error-codes" "0.22.0"
+ "@module-federation/runtime-core" "0.22.0"
+ "@module-federation/sdk" "0.22.0"
+
+"@module-federation/sdk@0.22.0":
+ version "0.22.0"
+ resolved "https://registry.yarnpkg.com/@module-federation/sdk/-/sdk-0.22.0.tgz#6ad4c1de85a900c3c80ff26cb87cce253e3a2770"
+ integrity sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==
+
+"@module-federation/webpack-bundler-runtime@0.22.0":
+ version "0.22.0"
+ resolved "https://registry.yarnpkg.com/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.22.0.tgz#dcbe8f972d722fe278e6a7c21988d4bee53d401d"
+ integrity sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==
+ dependencies:
+ "@module-federation/runtime" "0.22.0"
+ "@module-federation/sdk" "0.22.0"
+
+"@napi-rs/wasm-runtime@1.0.7":
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz#dcfea99a75f06209a235f3d941e3460a51e9b14c"
+ integrity sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==
+ dependencies:
+ "@emnapi/core" "^1.5.0"
+ "@emnapi/runtime" "^1.5.0"
+ "@tybys/wasm-util" "^0.10.1"
+
"@noble/hashes@1.4.0":
version "1.4.0"
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426"
@@ -2476,6 +2566,88 @@
resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.29.tgz#5a40109a1ab5f84d6fd8fc928b19f367cbe7e7b1"
integrity sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==
+"@rspack/binding-darwin-arm64@1.7.12":
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.12.tgz#e6e10e7ff15c2254d6cbe9125a747ada880a34f3"
+ integrity sha512-rbFprJaJiqrmfy8SHth8EsoRS0wg4bXcucwj9NiMzpGFq14Opw8c04iQ6H9BECYzgmN0PKZ9rh41LdVvhdZe4A==
+
+"@rspack/binding-darwin-x64@1.7.12":
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.12.tgz#fe90b64228eb49612e4932049325f52a4ddcfd28"
+ integrity sha512-jnOp+/UXOJa9xqUb8KXH03sysoO2e4Ij6tw6MqDdmdj8n/A8PQENRPUbW9AwXpPtVDJPus9r4fi7b3+6e4B8Hg==
+
+"@rspack/binding-linux-arm64-gnu@1.7.12":
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.12.tgz#61d63a0fcb9b4eb25b9d68e1f897c8e2619a8a5a"
+ integrity sha512-C8owWG+yvo7X0oVLIXetkoJhIFBP1LYNcAQqtgLmJnQLQDklGuP83dKC+zISGQWpjawHfZ1ER96vLgoTrxKZdw==
+
+"@rspack/binding-linux-arm64-musl@1.7.12":
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.12.tgz#fd5157890b1250937bb98332dcbb35ff2d7aafd3"
+ integrity sha512-i51WWI64aRpsfSki6rN0aepPqXkVfS+vZM7+4bWDcmnhUmdMvhIPcYg0QRk3DtyJnu33jqNLM0WHY78k00NyfA==
+
+"@rspack/binding-linux-x64-gnu@1.7.12":
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.12.tgz#a8c963c47a043069b154c704d87bf6a658772ac7"
+ integrity sha512-MSos0FuPEefqo9V92ULd5hggKG29EkSNg1zDcypy0OkpsKh5pfjVxTLYFXgTcVyFoUQQbdG8zFBzYbwmJ8V4ew==
+
+"@rspack/binding-linux-x64-musl@1.7.12":
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.12.tgz#1e95af2b152a0833272c26c3473cfa60832ef8b0"
+ integrity sha512-JcAMVKXOnjfpC3coWjCFPWD3Yl8RBw6a+IXQQ8mfRlHaHMIiOv8IfZqx15XRxMUn49CtP7Z0Na8iiAg2aKrcfw==
+
+"@rspack/binding-wasm32-wasi@1.7.12":
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.12.tgz#37a10f322e82cbd51114e8a3182f46c6af101a20"
+ integrity sha512-n+ZqP6ZMc0nhOgvadg5VhEs9ojtbES80AcWeFnmGkbzIszvGSO63GKNiRkXtjJ9KFuRzytbbmsCqkUVH+Tywxg==
+ dependencies:
+ "@napi-rs/wasm-runtime" "1.0.7"
+
+"@rspack/binding-win32-arm64-msvc@1.7.12":
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.12.tgz#77f648ee1cb717c50fdd02126a528b4960654116"
+ integrity sha512-8+h5fYDXYdmugbdfZ+D1y8IQ3rv2EhSfyGP7vBe+bjNyaMa4jWrpucmZbtxojUL1AzaeuHbvMdj9UO/gelk/+g==
+
+"@rspack/binding-win32-ia32-msvc@1.7.12":
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.12.tgz#9f7cbb26a9c8d9a1cc15d2059de21172b1623c41"
+ integrity sha512-cDMGwTRSa2p9fNBVe1wTRkF2AEXZ9ARWW36QeC5CkLaI0Ezz8lvhF2+CSOPnhaQ1O1qtn0L0SF+lFnrY+I7xGQ==
+
+"@rspack/binding-win32-x64-msvc@1.7.12":
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.12.tgz#b4c6dceaa63def4aa205d25246c1a5b05d7f36b0"
+ integrity sha512-wIqFvlgFqrgUyj/6S/FJcvShnkZOmIeXTfqvheLY67MGq8qd8jb1YimQVKAIrmWB3yuJKUFACI3Ag1UBtEedEA==
+
+"@rspack/binding@1.7.12":
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/@rspack/binding/-/binding-1.7.12.tgz#8c0b19795f980b0e513855245e689719352c08a4"
+ integrity sha512-f4HHuLbvuld8Ba4iB/4ibse5XrKxFrgmM3S4P2AOKnPlekAFlBjmltCuaTL/W2ggYvILaVY+YcFXrEH1rrKeQA==
+ optionalDependencies:
+ "@rspack/binding-darwin-arm64" "1.7.12"
+ "@rspack/binding-darwin-x64" "1.7.12"
+ "@rspack/binding-linux-arm64-gnu" "1.7.12"
+ "@rspack/binding-linux-arm64-musl" "1.7.12"
+ "@rspack/binding-linux-x64-gnu" "1.7.12"
+ "@rspack/binding-linux-x64-musl" "1.7.12"
+ "@rspack/binding-wasm32-wasi" "1.7.12"
+ "@rspack/binding-win32-arm64-msvc" "1.7.12"
+ "@rspack/binding-win32-ia32-msvc" "1.7.12"
+ "@rspack/binding-win32-x64-msvc" "1.7.12"
+
+"@rspack/core@^1.7.10":
+ version "1.7.12"
+ resolved "https://registry.yarnpkg.com/@rspack/core/-/core-1.7.12.tgz#e2a36bd16a10e10aee5905827064ac4b8a63b321"
+ integrity sha512-6CwFIHlhRmXfZoMj3v9MZ1SMTPBn+cHVXeMIeaGp5sufqinKsISbsqHu6ZMJu2wDSmZLdmQJX6zLxkhcAUlhkQ==
+ dependencies:
+ "@module-federation/runtime-tools" "0.22.0"
+ "@rspack/binding" "1.7.12"
+ "@rspack/lite-tapable" "1.1.0"
+
+"@rspack/lite-tapable@1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz#3cfdafeed01078e116bd4f191b684c8b484de425"
+ integrity sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==
+
"@sideway/address@^4.1.5":
version "4.1.5"
resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5"
@@ -2623,6 +2795,179 @@
"@svgr/plugin-jsx" "8.1.0"
"@svgr/plugin-svgo" "8.1.0"
+"@swc/core-darwin-arm64@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.16.20.tgz#bd0dc81a4a8504f1644d44f62d403def010a83d3"
+ integrity sha512-i7NFSDnuE6tdBvBgmoVKKmburgcwZt/FZK2IusJaVGrjFrMUC1hrgE3RI+Kt9RhYM7vHvQj0W9j53zSxKEMbWQ==
+
+"@swc/core-darwin-x64@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.16.20.tgz#731515fbfd3ba26cd0cb3afc1e6835f32b3cd565"
+ integrity sha512-ho/LkT1Q3beSBeZGNZnm1mVbh5bKZHC0UGHtK3MswqOylbHtZoMXJBL40N8JpDj5SBxwECmdNEyXnU9HJ4F6RA==
+
+"@swc/core-linux-arm-gnueabihf@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.16.20.tgz#12f258edf59a0914c7fa37da017215a7237b42e5"
+ integrity sha512-xm3/s3zp9WyNgB1Sl78tpH76MHgobI3TSenTY15bkSHyrdQa9W2MUSESHRPd7CHGFLfpWl/0jwwNp5+hwG0e9A==
+
+"@swc/core-linux-arm64-gnu@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.16.20.tgz#862188270d5d30689bfaf94becf24800ca957501"
+ integrity sha512-e6Um0U+VcTQyurOXhbratRQlrPITSRwugG00fhICbi2MGTi1vRiE4TMqGCjWpR1zPmZKXDGMw+yNFvh7AAgT2Q==
+
+"@swc/core-linux-arm64-musl@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.16.20.tgz#da4592ca8f6a6f899e86f3683d39d17df5913917"
+ integrity sha512-ekCO2obfK9NFwXGHfAQjjuU5mLDDC7qMaUJH/V/4iyzD0BqNhilr6McZrXLytOQ/xKtTNxLQ71wYrD3M2LW8Kg==
+
+"@swc/core-linux-ppc64-gnu@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.16.20.tgz#5b5f523a97d94a4cfec31f2cbf088914e8f10d5e"
+ integrity sha512-6/x2K3l4GNUWyaSmkywnth6ipZISzhVzOLsI66bj12/hSQYaKAyg9MKTwnuFf2B/iYA6GrjDghk36RYghRameQ==
+
+"@swc/core-linux-s390x-gnu@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.16.20.tgz#b9ca2c9a98092eb6fe648c13fe113a9d6baeda8d"
+ integrity sha512-1GTd8sqS/NpcF+Y3YDSE0bT31V61+hD7ZZWEsVyiyxk/HQt2zpk4zlJJHOASBLc+/CyUuBZ949n6QMszbIXkmQ==
+
+"@swc/core-linux-x64-gnu@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.16.20.tgz#c6f96b06b186f8d2ae38df8f9ee4dca04c65ca6d"
+ integrity sha512-XtMeYAgQa5UZhAX84TXn0sXPmhf1xHwcv0cl5hHiBXxTVbplY7WiTwIQU9uOtVm3VUqL/quyCm78/umUNZ7FmA==
+
+"@swc/core-linux-x64-musl@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.16.20.tgz#d0e0ecbefe2497b65b4d1e014afafa9c6b2dec14"
+ integrity sha512-qeF3UILa+MA4zJ29CdQ8KE7YbGFPMQBxWo3Lh0Ed0ETFEJ8pCKISWo7wQG4/SmfM9HX4KT1Odoj6ixyBn6Ji2Q==
+
+"@swc/core-win32-arm64-msvc@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.16.20.tgz#fff744c0ce7d7ceaf91294e9e5e2878de34c62d7"
+ integrity sha512-ciMtHXAmE+jnrWWO14rErr6tfK34QZm8jZRSdRLPodqJlzrYDw7TqN60HC8Yim5Ua9a1r/poyfkpNft6GRXvxA==
+
+"@swc/core-win32-ia32-msvc@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.16.20.tgz#71ac1c198d81365da96b29ebfcb114a0a014be66"
+ integrity sha512-MTbkgGooWebmjmATx1+QRECVZ+q4ICKNXCutwOrFVD5b5hdxla/yV4e6cRFrfNMowejaNpmMQg31ENWt0Yfzpg==
+
+"@swc/core-win32-x64-msvc@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.16.20.tgz#e539f998839be3b6fe7af4295c28cd0eba640c63"
+ integrity sha512-Lf5oMaSdJBImtGhDecasxcIa7Z5LeJ4aGmBOY7TScroO+A/MxxB9PslIpgV0rtG/FcxtipN7hveBg9ZTeboaaw==
+
+"@swc/core@^1.15.40":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.16.20.tgz#015a12e0f465a651606902596441a05aecdf9b53"
+ integrity sha512-zcdfS7k28OJIMuLhqRRyGja9PxrC2GXhFXkbQ1X15y6uZEMsTrqyej55V1DiJtlXaDOmwSLn5222YPT9ZoFxPA==
+ dependencies:
+ "@swc/counter" "^0.1.3"
+ "@swc/types" "^0.1.28"
+ optionalDependencies:
+ "@swc/core-darwin-arm64" "1.16.20"
+ "@swc/core-darwin-x64" "1.16.20"
+ "@swc/core-linux-arm-gnueabihf" "1.16.20"
+ "@swc/core-linux-arm64-gnu" "1.16.20"
+ "@swc/core-linux-arm64-musl" "1.16.20"
+ "@swc/core-linux-ppc64-gnu" "1.16.20"
+ "@swc/core-linux-s390x-gnu" "1.16.20"
+ "@swc/core-linux-x64-gnu" "1.16.20"
+ "@swc/core-linux-x64-musl" "1.16.20"
+ "@swc/core-win32-arm64-msvc" "1.16.20"
+ "@swc/core-win32-ia32-msvc" "1.16.20"
+ "@swc/core-win32-x64-msvc" "1.16.20"
+
+"@swc/counter@^0.1.3":
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9"
+ integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==
+
+"@swc/html-darwin-arm64@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/html-darwin-arm64/-/html-darwin-arm64-1.16.20.tgz#69614fefac662af4f09831f7ccadd7f234be7754"
+ integrity sha512-oK3/ZrzrPTyR76WarAj4bd5MJGwEnQY1iwR2iDK8UfO2BGdhXTbACdX1xQA6Tvp3KdSgdpSqjnJg0RmuVZsqyg==
+
+"@swc/html-darwin-x64@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/html-darwin-x64/-/html-darwin-x64-1.16.20.tgz#cbfdadbc143fff1b4fa198f6a99bab70432822e1"
+ integrity sha512-X0UyEyl9BiL+beVE3UNRubTbEzEuniizjZGqq4vBnE5/HR17L3n/A6X7F5nKmpwwHoLWeQf5lDkuMRg4m5YHqg==
+
+"@swc/html-linux-arm-gnueabihf@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.16.20.tgz#760e888467a994a41c4e91be0b58aca42a7cad42"
+ integrity sha512-eVL7/nElpBLJmOIte/VsWbDOp0dtt4ITxSasa3uVedp4b8osXlo9TSwShMaG/Met6nEUNAzKedrFE3IBUOrPig==
+
+"@swc/html-linux-arm64-gnu@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.16.20.tgz#3f1341f25e049362207218a0fade52a2d59995af"
+ integrity sha512-VfGLshYQo46Qna40HG7RTdpn1EkZCmfLDj+FQ4wbWYjqrqlCNmKbUpSDnfrxIY596/EcMKIUR7iC+IFckIa1XQ==
+
+"@swc/html-linux-arm64-musl@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.16.20.tgz#203d1645ea13e84c5ff0b71348d95de433cb0fc6"
+ integrity sha512-FCNlKhcQTOkuvXrL1ksjsFQZHfYyWBSU+p4UNLvILG5xA/5nF8SJOhhCeNxkx8fdU5373Ysoovouwr7Df26pbw==
+
+"@swc/html-linux-ppc64-gnu@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/html-linux-ppc64-gnu/-/html-linux-ppc64-gnu-1.16.20.tgz#a7c44a257074adcaa5602fd5c377343143bdf77f"
+ integrity sha512-pMlmJhBC78VTbO5H9fYI9ZiL7NqQXSOQ3vpw5UtmrIFHdRbdOYSjrjNbJRiS2DekiXJI0rXt8K3Xi9AcH0n3sw==
+
+"@swc/html-linux-s390x-gnu@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/html-linux-s390x-gnu/-/html-linux-s390x-gnu-1.16.20.tgz#ffc93d2b670b8e77b701a62e6b347a1d10df0fe3"
+ integrity sha512-b18nBk4plmCvjYdythqbEfgrmmo2L9Slvw3wF381QTiLvf99rsZ3xaW9qe9SJW0xPz03qgyQrDJYhmxCq0kUYA==
+
+"@swc/html-linux-x64-gnu@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.16.20.tgz#b2a3e624c561e0771b5b06a69b2e8da2be320bfe"
+ integrity sha512-VlfJAohGbk/aRwFojgQ/yoNlCTY1FJTYGLjYlJiPaKDmGsMRwNHybfkruXNKZJGQ27WEJu+VQMlRaokcoekbsQ==
+
+"@swc/html-linux-x64-musl@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.16.20.tgz#5f38b3f12daab93e054ba590913e3f9bce43bc9d"
+ integrity sha512-eJvIqb0vFit//rBPkzERfEkopD00Zc/5FZ/PXJYUDTG/PqDfLibfn19hYfkhCmObM0iTK/9SXmB6PGYMWzAX2Q==
+
+"@swc/html-win32-arm64-msvc@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.16.20.tgz#914cc682fafc91d3c4c63d1426c65e6d757f844d"
+ integrity sha512-zSiIIUJbGvOFcLbBq7R30X1/53knnfGEKT/LEibaDTDmESXoSlKibeC/z7b5uz4faxU7j7qDvf0SAyZ/HHbVxQ==
+
+"@swc/html-win32-ia32-msvc@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.16.20.tgz#a3539a181bda92b46347948be9d5b445c4b445be"
+ integrity sha512-1/NH4EKzetpZ4fmDcrDabCrzBNA5FIFECL7uaymTlM8Mr796mhZlvcG87ujJsc83NWVrlI8xoGijwyPdQ6Nd8Q==
+
+"@swc/html-win32-x64-msvc@1.16.20":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.16.20.tgz#5115fe041febdf539321abfe60538eb8979c5a20"
+ integrity sha512-PrS6HeZcZI982YxuHDqfGDsEBp3/SmHhniFp7CFX0GNw6c2/g77azdmc0Y00tLqP7zEy1jtXnW1fl/6HhtrEjA==
+
+"@swc/html@^1.15.40":
+ version "1.16.20"
+ resolved "https://registry.yarnpkg.com/@swc/html/-/html-1.16.20.tgz#f0b590cb54822605f89a5d9fa4a82031d4a524bd"
+ integrity sha512-mETtaIAFwf3ev+fNjjLmGygW3k3V3PADGZFee0Bs8attywmgoTa60J2KSHNNm7Z4mmQ+D4Q+s2eSBSnNzN2sQw==
+ dependencies:
+ "@swc/counter" "^0.1.3"
+ optionalDependencies:
+ "@swc/html-darwin-arm64" "1.16.20"
+ "@swc/html-darwin-x64" "1.16.20"
+ "@swc/html-linux-arm-gnueabihf" "1.16.20"
+ "@swc/html-linux-arm64-gnu" "1.16.20"
+ "@swc/html-linux-arm64-musl" "1.16.20"
+ "@swc/html-linux-ppc64-gnu" "1.16.20"
+ "@swc/html-linux-s390x-gnu" "1.16.20"
+ "@swc/html-linux-x64-gnu" "1.16.20"
+ "@swc/html-linux-x64-musl" "1.16.20"
+ "@swc/html-win32-arm64-msvc" "1.16.20"
+ "@swc/html-win32-ia32-msvc" "1.16.20"
+ "@swc/html-win32-x64-msvc" "1.16.20"
+
+"@swc/types@^0.1.28":
+ version "0.1.28"
+ resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.28.tgz#e3cd892383fba3b8904c40518bbe1265a50753f2"
+ integrity sha512-V6Mnml8v09QALx6K0elJ7o9K/MkVDtW3t6L+7Ou/JcWtb3xwId2AH4FeOceySd2JaO87IMw4+6vSZxLm34LPbw==
+ dependencies:
+ "@swc/counter" "^0.1.3"
+
"@szmarczak/http-timer@^5.0.1":
version "5.0.1"
resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a"
@@ -2630,6 +2975,13 @@
dependencies:
defer-to-connect "^2.0.1"
+"@tybys/wasm-util@^0.10.1":
+ version "0.10.4"
+ resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.4.tgz#3e85ecb266f9d1722250e89bc69528615720b154"
+ integrity sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==
+ dependencies:
+ tslib "^2.4.0"
+
"@types/body-parser@*":
version "1.19.6"
resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.6.tgz#1859bebb8fd7dac9918a45d54c1971ab8b5af474"
@@ -3355,6 +3707,11 @@ baseline-browser-mapping@^2.11.12:
resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.20.tgz#26078c7a4b08299656ea7ddceaebec955dc44303"
integrity sha512-H0ulySigv6icDJ1F7SjtdCD6PrhTpdYCmP0CactWy1+ekh0AFd0o1Wn5T8b+hnTmdBx19u9yhL6wvCylXMY7zw==
+baseline-browser-mapping@^2.11.33:
+ version "2.11.34"
+ resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.34.tgz#d97a3dc0edb2f139758f7f2b1ae89552f391b35f"
+ integrity sha512-Aqr8mA1kIvyJ3UY5YAY7ib8LSo1DmDMbMnVqGPtsKW1LxaFQFwn9Eb3yvq2fUKJsRvaXjnAV7R5osqETapzNiA==
+
batch@0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
@@ -3455,6 +3812,17 @@ browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4
node-releases "^2.0.53"
update-browserslist-db "^1.3.0"
+browserslist@^4.24.2:
+ version "4.29.5"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.29.5.tgz#e835ff9a00f683305b33f02828c908b397410d4a"
+ integrity sha512-khTmKu5NGYTotqcYo8Bew2k4RAE9PuXRSFRXG2lQBrCEQHyeQ/vX6gKMxfokwywBsLiXZMnHsmWMG1pnO8J7uQ==
+ dependencies:
+ baseline-browser-mapping "^2.11.33"
+ caniuse-lite "^1.0.30001819"
+ electron-to-chromium "^1.5.464"
+ node-releases "^2.0.60"
+ update-browserslist-db "^1.3.4"
+
buffer-from@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
@@ -3569,6 +3937,11 @@ caniuse-lite@^1.0.30001809:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz#4970b477dea3278374de9bc43aa8f5d39fc3cda2"
integrity sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==
+caniuse-lite@^1.0.30001819:
+ version "1.0.30001820"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001820.tgz#bbed68c45bb4c4316084594ba044ba56e68bfae7"
+ integrity sha512-gfWD6MxqVCqAOwmODfZf7DchWvlrA+SRdNX7ceLfg3xRqe5ssjjpF7EgslC/0tiLiNTajdaNN/q8c/5u/7Gz8w==
+
ccount@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5"
@@ -4204,6 +4577,11 @@ destroy@1.2.0, destroy@~1.2.0:
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
+detect-libc@^2.0.3:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad"
+ integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==
+
detect-node@^2.0.4:
version "2.1.0"
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
@@ -4343,6 +4721,11 @@ electron-to-chromium@^1.5.402:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.420.tgz#fc66d26a722d6f227e2092acdf38dd55b198cb44"
integrity sha512-2yD6XreGusOfNV+dUcvipJEXc3n/n7fgr7996aszTG+YY5E4mqM4tOq/3uhP129cazL9YHbVWSpc79ePotWtPA==
+electron-to-chromium@^1.5.464:
+ version "1.5.467"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.467.tgz#7a3db88a95f09304a47ca0d838a1504fa048664a"
+ integrity sha512-Nw9X371rtZmYcBSnEijnCDONILjs93biCZO34juC7MBOmK8E+GFnyD4T/WvyrlJkppul7oxg6TwvtKst9SODTw==
+
emoji-regex@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
@@ -5720,6 +6103,80 @@ leven@^3.1.0:
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
+lightningcss-android-arm64@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz#9a6841f88ae50fc83502903892b41af41bc2b907"
+ integrity sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==
+
+lightningcss-darwin-arm64@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz#c0f2c31c0bfd19fa4dd3f18e957a1f1a152097d6"
+ integrity sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==
+
+lightningcss-darwin-x64@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz#cb0705965acb538c6683949ce6925fb3cdf7c361"
+ integrity sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==
+
+lightningcss-freebsd-x64@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz#763538828b26bab2680dadafcc84ee78b0eb502b"
+ integrity sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==
+
+lightningcss-linux-arm-gnueabihf@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz#6862e3176a331aedbdec1ed352b4d7d0dd0784de"
+ integrity sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==
+
+lightningcss-linux-arm64-gnu@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz#c6a3a2ed15141daf6bdc2628930f8e39bdf473aa"
+ integrity sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==
+
+lightningcss-linux-arm64-musl@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz#7fa1334971fc82845f9827df6ef8a0b20914bac6"
+ integrity sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==
+
+lightningcss-linux-x64-gnu@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz#8b927862ea8c2bbc6831a46509244b50d9936e55"
+ integrity sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==
+
+lightningcss-linux-x64-musl@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz#0c525bb077dfd94404c059cfe42dad797e96aeaf"
+ integrity sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==
+
+lightningcss-win32-arm64-msvc@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz#850ee1103dac989cfab50e3ac22d1a69e394e63d"
+ integrity sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==
+
+lightningcss-win32-x64-msvc@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz#e343ae152eed3609dc6e11949d1a3bf39a1c946f"
+ integrity sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==
+
+lightningcss@^1.27.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.33.0.tgz#c08867d71a79385c6e190214fd72fef3e5f95f0b"
+ integrity sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==
+ dependencies:
+ detect-libc "^2.0.3"
+ optionalDependencies:
+ lightningcss-android-arm64 "1.33.0"
+ lightningcss-darwin-arm64 "1.33.0"
+ lightningcss-darwin-x64 "1.33.0"
+ lightningcss-freebsd-x64 "1.33.0"
+ lightningcss-linux-arm-gnueabihf "1.33.0"
+ lightningcss-linux-arm64-gnu "1.33.0"
+ lightningcss-linux-arm64-musl "1.33.0"
+ lightningcss-linux-x64-gnu "1.33.0"
+ lightningcss-linux-x64-musl "1.33.0"
+ lightningcss-win32-arm64-msvc "1.33.0"
+ lightningcss-win32-x64-msvc "1.33.0"
+
lilconfig@^3.1.1:
version "3.1.3"
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4"
@@ -6653,6 +7110,11 @@ node-releases@^2.0.53:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.54.tgz#09af17d5647aa9f221ec5cf2becb95b68a981afe"
integrity sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==
+node-releases@^2.0.60:
+ version "2.0.61"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.61.tgz#83531ed93275c9d487fbd0bdeea0ad24c62dd5d5"
+ integrity sha512-5NUN6QCxNFrS9oEA9RPS+d0AP+ooGBzzovY2JhIpDRHacPvOhHjXjUsUMX9qp4nLHZ+5jVgXB2jj/P4arGOE/g==
+
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
@@ -8679,6 +9141,13 @@ svgo@^3.0.2, svgo@^3.2.0:
picocolors "^1.0.0"
sax "^1.5.0"
+swc-loader@^0.2.6:
+ version "0.2.7"
+ resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.2.7.tgz#2d1611ab314c5d8342d74aa5e5901b3fbf490de2"
+ integrity sha512-nwYWw3Fh9ame3Rtm7StS9SBLpHRRnYcK7bnpF3UKZmesAK0gw2/ADvlURFAINmPvKtDLzp+GBiP9yLoEjg6S9w==
+ dependencies:
+ "@swc/counter" "^0.1.3"
+
tapable@^2.0.0, tapable@^2.2.1:
version "2.2.2"
resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.2.tgz#ab4984340d30cb9989a490032f086dbb8b56d872"
@@ -8783,7 +9252,7 @@ tslib@^1.9.3:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tslib@^2.0.0, tslib@^2.0.3, tslib@^2.6.0, tslib@^2.8.1:
+tslib@^2.0.0, tslib@^2.0.3, tslib@^2.4.0, tslib@^2.6.0, tslib@^2.8.1:
version "2.8.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
@@ -8936,6 +9405,14 @@ update-browserslist-db@^1.3.0:
escalade "^3.2.0"
picocolors "^1.1.1"
+update-browserslist-db@^1.3.4:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.3.4.tgz#e8bd4596f6900805f9f12c5a5200c83c59c38faf"
+ integrity sha512-t8wonIOdQyOjtPd2VktlBu6QjTVTks6v8bSi7kd0r2Vll8TK1JYDZtRRdbmCHOAMphkZgrzK+L+vXK4pyZ8t4A==
+ dependencies:
+ escalade "^3.2.0"
+ picocolors "^1.1.1"
+
update-notifier@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-6.0.2.tgz#a6990253dfe6d5a02bd04fbb6a61543f55026b60"
diff --git a/appveyor.yml b/appveyor.yml
index db31714914..f76bb5cb0b 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -1,14 +1,58 @@
image: Visual Studio 2022
+# Also exported as CONFIGURATION / PLATFORM environment variables, which MSBuild reads as properties.
configuration: Release
platform: x64
+environment:
+ DOTNET_NOLOGO: true
+ DOTNET_CLI_TELEMETRY_OPTOUT: true
+ DOTNET_GENERATE_ASPNET_CERTIFICATE: false
+# Shallow clone - the history isn't needed (the version is date based). Must stay > 1, the docs-only check below
+# compares HEAD with HEAD~1.
+clone_depth: 50
+# Branches with an open PR are built as PR (merge commit) only - Mergify waits for that status.
+skip_branch_with_pr: true
install:
+ - ps: |
+ # Skip the build if only docs / website / repository files changed. Exit-AppveyorBuild ends the build
+ # successfully, so a green status is still reported (Mergify waits for it). Tag (release) builds are never
+ # skipped. PR builds check out the merge commit (HEAD~1 = target branch), so this is the full PR diff.
+ # Branch builds only see the last commit of a push, so they are only skipped for squash merges of a PR
+ # (subject ends with "(#1234)") - the PR build already checked the full diff. Direct pushes are always built.
+ # If git diff fails, the build runs normally.
+ $IsPullRequest = [bool]$env:APPVEYOR_PULL_REQUEST_NUMBER
+ $IsSquashMerge = (git log -1 --format=%s HEAD) -match '\(#\d+\)$'
+
+ if ($env:APPVEYOR_REPO_TAG -ne "true" -and ($IsPullRequest -or $IsSquashMerge)) {
+ # --no-renames: a moved file is listed with its old and new path (a file moved out of Source/ is build relevant)
+ $ChangedFiles = git diff --name-only --no-renames HEAD~1 HEAD 2>$null
+
+ if ($LASTEXITCODE -eq 0 -and $ChangedFiles) {
+ $BuildRelevantFiles = $ChangedFiles | Where-Object { $_ -notmatch '^(Website/|\.github/|\.claude/|Images/|Chocolatey/|WinGet/|Tests/Environments/|LICENSE$)|\.md$' }
+
+ if (-not $BuildRelevantFiles) {
+ Write-Host "Only docs / website / repository files changed - skipping build."
+ Exit-AppveyorBuild
+ return
+ }
+
+ Write-Host "Build relevant changes:"
+ $BuildRelevantFiles | ForEach-Object { Write-Host " $_" }
+ }
+ }
- git submodule update --init
- ps: |
- Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -UseBasicParsing -OutFile "$env:temp\dotnet-install.ps1"
-
# Read the required SDK version from global.json instead of hardcoding it, so Dependabot's
# weekly SDK bumps there don't silently drift out of sync with what CI installs.
$DotnetVersion = (Get-Content "$($env:APPVEYOR_BUILD_FOLDER)\Source\global.json" -Raw | ConvertFrom-Json).sdk.version
+
+ # Skip the download if the build image already has this SDK.
+ if (dotnet --list-sdks | Where-Object { $_ -like "$DotnetVersion *" }) {
+ Write-Host ".NET SDK $DotnetVersion (from Source\global.json) is already installed"
+ return
+ }
+
+ Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -UseBasicParsing -OutFile "$env:temp\dotnet-install.ps1"
+
Write-Host "Installing .NET SDK $DotnetVersion (from Source\global.json)"
& $env:temp\dotnet-install.ps1 -Architecture x64 -Version $DotnetVersion -InstallDir "$env:ProgramFiles\dotnet"
before_build:
@@ -47,16 +91,34 @@ before_build:
build_script:
- ps: |
# Build the wixproj directly, not the .sln - `dotnet build` rejects -p:RuntimeIdentifier
- # at the solution level (NETSDK1134).
+ # at the solution level (NETSDK1134). PRs only build the application, unless they change the setup (e.g. WiX
+ # updates via Dependabot) - the setup is always built on branches and tags.
+ $Project = "$($env:APPVEYOR_BUILD_FOLDER)\Source\NETworkManager.Setup\NETworkManager.Setup.wixproj"
+
+ if ($env:APPVEYOR_PULL_REQUEST_NUMBER) {
+ # PR builds check out the merge commit (HEAD~1 = target branch), so this is the full PR diff
+ $ChangedFiles = git diff --name-only --no-renames HEAD~1 HEAD 2>$null
+
+ if ($LASTEXITCODE -eq 0 -and -not ($ChangedFiles | Where-Object { $_ -like "Source/NETworkManager.Setup/*" })) {
+ $Project = "$($env:APPVEYOR_BUILD_FOLDER)\Source\NETworkManager\NETworkManager.csproj"
+ }
+ }
+
+ Write-Host "Building $Project"
+
$Architectures = @(
- @{ RuntimeIdentifier = "win-x64"; Platform = "x64" },
- @{ RuntimeIdentifier = "win-arm64"; Platform = "ARM64" }
+ @{ RuntimeIdentifier = "win-x64"; Platform = "x64" }
)
+ # Only tags (release) are built for ARM64 - branches and PRs are built for x64 to keep them fast.
+ if ($env:APPVEYOR_REPO_TAG -eq "true") {
+ $Architectures += @{ RuntimeIdentifier = "win-arm64"; Platform = "ARM64" }
+ }
+
foreach ($Architecture in $Architectures) {
Write-Host "Building $($Architecture.RuntimeIdentifier)..."
- dotnet build "$($env:APPVEYOR_BUILD_FOLDER)\Source\NETworkManager.Setup\NETworkManager.Setup.wixproj" `
+ dotnet build "$Project" `
--configuration Release --no-restore `
-p:Platform=$($Architecture.Platform) -p:RuntimeIdentifier=$($Architecture.RuntimeIdentifier) -p:PlatformTarget=$($Architecture.Platform)
@@ -113,6 +175,18 @@ after_build:
# Create artifacts archive for signing
Compress-Archive -Path "$ArtifactsPath\*" -DestinationPath "$($ArtifactsPath).zip"
+test_script:
+ - ps: |
+ # Run from Source - dotnet test only picks up Source\global.json (Microsoft.Testing.Platform, which needs --project
+ # instead of a positional path) from the working directory. Otherwise it falls back to VSTest (MSB1001: Unknown switch).
+ Set-Location "$($env:APPVEYOR_BUILD_FOLDER)\Source"
+
+ dotnet test --project "NETworkManager.Tests\NETworkManager.Tests.csproj" --configuration Release --no-restore
+
+ if ($LASTEXITCODE -ne 0) {
+ throw "dotnet test failed with exit code $LASTEXITCODE"
+ }
+
artifacts:
- path: 'Artifacts.zip'
deploy: