From 58c968d9699f64002c4aa86f81d0acbe9f57e97a Mon Sep 17 00:00:00 2001 From: Nikita Vasilev Date: Thu, 13 Nov 2025 12:43:17 +0400 Subject: [PATCH 1/7] Update `.swiftformat` --- .swiftformat | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.swiftformat b/.swiftformat index b743fe2..05a65eb 100644 --- a/.swiftformat +++ b/.swiftformat @@ -1,6 +1,6 @@ # Stream rules ---swiftversion 5.7 +--swiftversion 6.2 # Use 'swiftformat --options' to list all of the possible options @@ -36,8 +36,8 @@ --enable redundantSelf --enable redundantVoidReturnType --enable semicolons ---enable sortedImports ---enable sortedSwitchCases +--enable sortImports +--enable sortSwitchCases --enable spaceAroundBraces --enable spaceAroundBrackets --enable spaceAroundComments @@ -61,4 +61,4 @@ --wraparguments before-first --wrapcollections before-first ---maxwidth 140 \ No newline at end of file +--maxwidth 140 From 752549c71b6cba5d2d94ab63730bf1dbf6b30b17 Mon Sep 17 00:00:00 2001 From: Nikita Vasilev Date: Thu, 13 Nov 2025 12:43:35 +0400 Subject: [PATCH 2/7] Update `.swiftlint.yml` --- .swiftlint.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.swiftlint.yml b/.swiftlint.yml index c9247e2..ac1438d 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -1,10 +1,9 @@ excluded: - Tests - Package.swift - - Package@swift-5.7.swift - - Package@swift-5.8.swift - - Package@swift-5.9.swift - Package@swift-5.10.swift + - Package@swift-6.0.swift + - Package@swift-6.1.swift - .build # Rules From 1053a6f4bf1d8023a584acbed630427824fc41ff Mon Sep 17 00:00:00 2001 From: Nikita Vasilev Date: Thu, 13 Nov 2025 12:44:10 +0400 Subject: [PATCH 3/7] Add support for Swift 6.2 --- Package.swift | 3 +-- Package@swift-5.10.swift | 1 - Package@swift-5.8.swift | 25 ------------------- ...swift-5.9.swift => Package@swift-6.0.swift | 3 +-- ...swift-5.7.swift => Package@swift-6.1.swift | 4 +-- 5 files changed, 4 insertions(+), 32 deletions(-) delete mode 100644 Package@swift-5.8.swift rename Package@swift-5.9.swift => Package@swift-6.0.swift (94%) rename Package@swift-5.7.swift => Package@swift-6.1.swift (93%) diff --git a/Package.swift b/Package.swift index ea031d0..2af9a84 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 6.0 +// swift-tools-version: 6.2 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription @@ -16,7 +16,6 @@ let package = Package( .library(name: "ValidatorCore", targets: ["ValidatorCore"]), .library(name: "ValidatorUI", targets: ["ValidatorUI"]), ], - dependencies: [], targets: [ .target(name: "ValidatorCore", dependencies: []), .target(name: "ValidatorUI", dependencies: ["ValidatorCore"]), diff --git a/Package@swift-5.10.swift b/Package@swift-5.10.swift index 65b9198..80ef647 100644 --- a/Package@swift-5.10.swift +++ b/Package@swift-5.10.swift @@ -16,7 +16,6 @@ let package = Package( .library(name: "ValidatorCore", targets: ["ValidatorCore"]), .library(name: "ValidatorUI", targets: ["ValidatorUI"]), ], - dependencies: [], targets: [ .target(name: "ValidatorCore", dependencies: []), .target(name: "ValidatorUI", dependencies: ["ValidatorCore"]), diff --git a/Package@swift-5.8.swift b/Package@swift-5.8.swift deleted file mode 100644 index 16520f7..0000000 --- a/Package@swift-5.8.swift +++ /dev/null @@ -1,25 +0,0 @@ -// swift-tools-version: 5.8 -// The swift-tools-version declares the minimum version of Swift required to build this package. - -import PackageDescription - -let package = Package( - name: "Validator", - platforms: [ - .iOS(.v16), - .macOS(.v13), - .watchOS(.v9), - .tvOS(.v16), - ], - products: [ - .library(name: "ValidatorCore", targets: ["ValidatorCore"]), - .library(name: "ValidatorUI", targets: ["ValidatorUI"]), - ], - dependencies: [], - targets: [ - .target(name: "ValidatorCore", dependencies: []), - .target(name: "ValidatorUI", dependencies: ["ValidatorCore"]), - .testTarget(name: "ValidatorCoreTests", dependencies: ["ValidatorCore"]), - .testTarget(name: "ValidatorUITests", dependencies: ["ValidatorCore", "ValidatorUI"]), - ] -) diff --git a/Package@swift-5.9.swift b/Package@swift-6.0.swift similarity index 94% rename from Package@swift-5.9.swift rename to Package@swift-6.0.swift index 715d497..5f74da2 100644 --- a/Package@swift-5.9.swift +++ b/Package@swift-6.0.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 5.9 +// swift-tools-version: 6.0 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription @@ -16,7 +16,6 @@ let package = Package( .library(name: "ValidatorCore", targets: ["ValidatorCore"]), .library(name: "ValidatorUI", targets: ["ValidatorUI"]), ], - dependencies: [], targets: [ .target(name: "ValidatorCore", dependencies: []), .target(name: "ValidatorUI", dependencies: ["ValidatorCore"]), diff --git a/Package@swift-5.7.swift b/Package@swift-6.1.swift similarity index 93% rename from Package@swift-5.7.swift rename to Package@swift-6.1.swift index 7e4fb4f..8c22a47 100644 --- a/Package@swift-5.7.swift +++ b/Package@swift-6.1.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 5.7 +// swift-tools-version: 6.1 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription @@ -10,12 +10,12 @@ let package = Package( .macOS(.v13), .watchOS(.v9), .tvOS(.v16), + .visionOS(.v1), ], products: [ .library(name: "ValidatorCore", targets: ["ValidatorCore"]), .library(name: "ValidatorUI", targets: ["ValidatorUI"]), ], - dependencies: [], targets: [ .target(name: "ValidatorCore", dependencies: []), .target(name: "ValidatorUI", dependencies: ["ValidatorCore"]), From b52ade2526039464bc0804ae378e72a567c3b834 Mon Sep 17 00:00:00 2001 From: Nikita Vasilev Date: Thu, 13 Nov 2025 12:47:42 +0400 Subject: [PATCH 4/7] Update `README.md` --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1372f17..9abe793 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Validator: xxxxx](https://raw.githubusercontent.com/space-code/validator/dev/Resources/validator.png) +![Validator: is a framework written in Swift that provides functions that can be used to validate the contents of an input value.](https://raw.githubusercontent.com/space-code/validator/dev/Resources/validator.png)

validator

@@ -232,8 +232,8 @@ public struct NonEmptyValidationRule: IValidationRule { ## Requirements - iOS 16.0+ / macOS 13+ / tvOS 16.0+ / watchOS 9.0+ -- Xcode 14.0 -- Swift 5.7 +- Xcode 15.3 +- Swift 5.10 ## Installation ### Swift Package Manager @@ -244,7 +244,7 @@ Once you have your Swift package set up, adding `validator` as a dependency is a ```swift dependencies: [ - .package(url: "https://github.com/space-code/validator.git", .upToNextMajor(from: "1.1.0")) + .package(url: "https://github.com/space-code/validator.git", .upToNextMajor(from: "1.2.0")) ] ``` From d58db33b45bd5306f8402bc9637f1e2a6a1e0463 Mon Sep 17 00:00:00 2001 From: Nikita Vasilev Date: Thu, 13 Nov 2025 12:55:41 +0400 Subject: [PATCH 5/7] Update `ci.yml` --- .github/workflows/ci.yml | 139 +++++++++++++++++---------------------- 1 file changed, 61 insertions(+), 78 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 720ea5d..602285e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,26 +34,23 @@ jobs: fail-fast: false matrix: include: - - xcode: "Xcode_16.0" + - xcode: "Xcode_26.0.1" + runsOn: macOS-26 + name: "macOS 26, Xcode 26.0, Swift 6.2.0" + - xcode: "Xcode_16.1" runsOn: macOS-14 - name: "macOS 14, Xcode 16.0, Swift 6.0" + name: "macOS 14, Xcode 16.1, Swift 6.0.2" - xcode: "Xcode_15.4" runsOn: macOS-14 name: "macOS 14, Xcode 15.4, Swift 5.10" - - xcode: "Xcode_15.0" - runsOn: macos-13 - name: "macOS 13, Xcode 15.0, Swift 5.9.0" - - xcode: "Xcode_14.3.1" - runsOn: macos-13 - name: "macOS 13, Xcode 14.3.1, Swift 5.8.0" steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v5 - name: ${{ matrix.name }} run: xcodebuild test -scheme "Validator-Package" -destination "platform=macOS" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - name: Upload test coverage reports to Codecov uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main with: - scheme_name: Typhoon + scheme_name: Validator-Package filename: ${{ matrix.name }} token: ${{ secrets.CODECOV_TOKEN }} @@ -67,28 +64,20 @@ jobs: fail-fast: false matrix: include: + - destination: "OS=26.0.1,name=iPhone 17 Pro" + xcode: "Xcode_26.0.1" + runsOn: macOS-26 + name: "OS=26.0, Xcode 26.0, Swift 6.2.0" - destination: "OS=18.1,name=iPhone 16 Pro" name: "iOS 18.1" xcode: "Xcode_16.1" runsOn: macOS-14 - - destination: "OS=18.0,name=iPhone 16 Pro" - name: "iOS 18.0" - xcode: "Xcode_16.0" - runsOn: macOS-14 - - destination: "OS=17.5,name=iPhone 15 Pro" - name: "iOS 17.5" - xcode: "Xcode_15.4" - runsOn: macOS-14 - - destination: "OS=17.0.1,name=iPhone 14 Pro" - name: "iOS 17.0.1" - xcode: "Xcode_15.0" - runsOn: macos-13 - - destination: "OS=16.4,name=iPhone 14 Pro" - name: "iOS 16.4" - xcode: "Xcode_14.3.1" - runsOn: macos-13 + - destination: "OS=17.4,name=iPhone 15 Pro" + name: "iOS 17.4" + xcode: "Xcode_15.3" + runsOn: macos-14 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v5 - name: ${{ matrix.name }} run: xcodebuild test -scheme "Validator-Package" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - uses: actions/upload-artifact@v4 @@ -106,28 +95,20 @@ jobs: fail-fast: false matrix: include: + - destination: "OS=26.0,name=Apple TV" + xcode: "Xcode_26.0.1" + runsOn: macOS-26 + name: "tvOS 26.0" - destination: "OS=18.1,name=Apple TV" name: "tvOS 18.1" xcode: "Xcode_16.1" runsOn: macOS-14 - - destination: "OS=18.0,name=Apple TV" - name: "tvOS 18.0" - xcode: "Xcode_16.0" - runsOn: macOS-14 - - destination: "OS=17.5,name=Apple TV" - name: "tvOS 17.5" - xcode: "Xcode_15.4" - runsOn: macOS-14 - - destination: "OS=17.0,name=Apple TV" - name: "tvOS 17.0" - xcode: "Xcode_15.0" - runsOn: macos-13 - - destination: "OS=16.4,name=Apple TV" - name: "tvOS 16.4" - xcode: "Xcode_14.3.1" - runsOn: macos-13 + - destination: "OS=17.4,name=Apple TV" + name: "tvOS 17.4" + xcode: "Xcode_15.3" + runsOn: macos-14 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v5 - name: ${{ matrix.name }} run: xcodebuild test -scheme "Validator-Package" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - name: Upload test coverage reports to Codecov @@ -147,34 +128,30 @@ jobs: fail-fast: false matrix: include: + - destination: "OS=26.0,name=Apple Watch Ultra 3 (49mm)" + xcode: "Xcode_26.0.1" + runsOn: macOS-26 + name: "watchOS 26.0" - destination: "OS=11.1,name=Apple Watch Series 10 (46mm)" name: "watchOS 11.1" xcode: "Xcode_16.1" runsOn: macOS-14 - - destination: "OS=11.0,name=Apple Watch Series 10 (46mm)" - name: "watchOS 11.0" - xcode: "Xcode_16.0" - runsOn: macOS-14 - destination: "OS=10.5,name=Apple Watch Series 9 (45mm)" name: "watchOS 10.5" - xcode: "Xcode_15.4" + xcode: "Xcode_15.3" runsOn: macOS-14 - - destination: "OS=10.0,name=Apple Watch Series 9 (45mm)" - name: "watchOS 10.0" - xcode: "Xcode_15.0" - runsOn: macos-13 - - destination: "OS=9.4,name=Apple Watch Series 8 (45mm)" - name: "watchOS 9.4" - xcode: "Xcode_14.3.1" - runsOn: macos-13 + - destination: "OS=10.4,name=Apple Watch Series 9 (45mm)" + name: "watchOS 10.4" + xcode: "Xcode_15.3" + runsOn: macos-14 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v5 - name: ${{ matrix.name }} run: xcodebuild test -scheme "Validator-Package" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - name: Upload test coverage reports to Codecov uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main with: - scheme_name: Typhoon + scheme_name: Validator-Package filename: ${{ matrix.name }} token: ${{ secrets.CODECOV_TOKEN }} @@ -188,48 +165,54 @@ jobs: fail-fast: false matrix: include: + - destination: "macOS 26, SPM 6.2.0 Test" + xcode: "Xcode_26.0.1" + runsOn: macOS-26 + - destination: "macOS 15, SPM 6.0.2 Test" + xcode: "Xcode_16.0" + runsOn: macOS-15 - name: "macOS 14, SPM 6.0.2 Test" xcode: "Xcode_16.1" runsOn: macOS-14 - - name: "macOS 14, SPM 6.0.0 Test" - xcode: "Xcode_16.0" - runsOn: macOS-14 - - name: "macOS 14, SPM 5.9.0 Test" - xcode: "Xcode_15.0" + - name: "macOS 14, SPM 5.10.0 Test" + xcode: "Xcode_15.3" runsOn: macos-14 - - name: "macOS 13, SPM 5.8.1 Test" - xcode: "Xcode_14.3.1" - runsOn: macos-13 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v5 - name: ${{ matrix.name }} run: swift build -c release merge-test-reports: needs: [iOS, macOS, watchOS, tvOS] - runs-on: macos-13 + runs-on: macos-15 steps: - name: Download artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v6 with: path: test_output - run: xcrun xcresulttool merge test_output/**/*.xcresult --output-path test_output/final/final.xcresult - name: Upload Merged Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: MergedResult path: test_output/final discover-typos: name: Discover Typos - runs-on: macOS-13 + runs-on: macos-15 env: - DEVELOPER_DIR: /Applications/Xcode_14.1.app/Contents/Developer + DEVELOPER_DIR: /Applications/Xcode_16.4.app/Contents/Developer steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v5 + + - name: Set up Python environment + run: | + python3 -m venv .venv + source .venv/bin/activate + pip install --upgrade pip + pip install codespell + - name: Discover typos run: | - export PATH="$PATH:/Library/Frameworks/Python.framework/Versions/3.11/bin" - python3 -m pip install --upgrade pip - python3 -m pip install codespell - codespell --ignore-words-list="hart,inout,msdos,sur" --skip="./.build/*,./.git/*" + source .venv/bin/activate + codespell --ignore-words-list="hart,inout,msdos,sur" --skip="./.build/*,./.git/*" \ No newline at end of file From 19f66dfb9467913eb872740dff2817644d500acc Mon Sep 17 00:00:00 2001 From: Nikita Vasilev Date: Thu, 13 Nov 2025 12:57:16 +0400 Subject: [PATCH 6/7] Remove `#if swift(>=5.10)` checks --- Sources/ValidatorUI/Classes/IUIValidatable.swift | 16 ++++------------ .../Classes/SUI/Extensions/View+Validation.swift | 9 ++------- 2 files changed, 6 insertions(+), 19 deletions(-) diff --git a/Sources/ValidatorUI/Classes/IUIValidatable.swift b/Sources/ValidatorUI/Classes/IUIValidatable.swift index 7728687..838d212 100644 --- a/Sources/ValidatorUI/Classes/IUIValidatable.swift +++ b/Sources/ValidatorUI/Classes/IUIValidatable.swift @@ -37,19 +37,11 @@ public protocol IUIValidatable: AnyObject { func validateOnInputChange(isEnabled: Bool) } -#if swift(>=5.10) - private nonisolated(unsafe) var kValidationRules: UInt8 = 0 - private nonisolated(unsafe) var kValidationHandler: UInt8 = 0 +private nonisolated(unsafe) var kValidationRules: UInt8 = 0 +private nonisolated(unsafe) var kValidationHandler: UInt8 = 0 - // swiftlint:disable:next prefixed_toplevel_constant - private nonisolated(unsafe) let validator = Validator() -#else - private var kValidationRules: UInt8 = 0 - private var kValidationHandler: UInt8 = 0 - - // swiftlint:disable:next prefixed_toplevel_constant - private let validator = Validator() -#endif +// swiftlint:disable:next prefixed_toplevel_constant +private nonisolated(unsafe) let validator = Validator() public extension IUIValidatable { @discardableResult diff --git a/Sources/ValidatorUI/Classes/SUI/Extensions/View+Validation.swift b/Sources/ValidatorUI/Classes/SUI/Extensions/View+Validation.swift index 0682177..fa57fc2 100644 --- a/Sources/ValidatorUI/Classes/SUI/Extensions/View+Validation.swift +++ b/Sources/ValidatorUI/Classes/SUI/Extensions/View+Validation.swift @@ -6,13 +6,8 @@ import SwiftUI import ValidatorCore -#if swift(>=5.10) - // swiftlint:disable:next prefixed_toplevel_constant - private nonisolated(unsafe) let validator = Validator() -#else - // swiftlint:disable:next prefixed_toplevel_constant - private let validator = Validator() -#endif +// swiftlint:disable:next prefixed_toplevel_constant +private nonisolated(unsafe) let validator = Validator() public extension View { /// Validate a binding item using a set of validation rules and perform an action based on From 76c1faaa963435c178e3852d386b76e28fc687e3 Mon Sep 17 00:00:00 2001 From: Nikita Vasilev Date: Fri, 14 Nov 2025 09:21:28 +0400 Subject: [PATCH 7/7] Update `CHANGELOG.md` --- CHANGELOG.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 310434e..03b5df2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,14 +2,22 @@ All notable changes to this project will be documented in this file. #### 1.x Releases +- `1.2.x` Releases - [1.2.0](#120) - `1.1.x` Releases - [1.1.0](#110) - `1.0.x` Releases - [1.0.0](#100) | [1.0.1](#101) +## [1.1.0](https://github.com/space-code/validator/releases/tag/1.2.0) +Released on 2025-11-13. + +#### Updated +- Update the Swift version to 6.2. + - Added in Pull Request [#18](https://github.com/space-code/validator/pull/18). + ## [1.1.0](https://github.com/space-code/validator/releases/tag/1.1.0) Released on 2024-12-24. #### Added -- Increase the Swift version to 6.0. +- Add support for the Swift version to 6.0. - Added in Pull Request [#13](https://github.com/space-code/validator/pull/13). #### Updated