The Swift Package Index logo.Swift Package Index

Has it really been five years since Swift Package Index launched? Read our anniversary blog post!

Build Information

Successful build of HandySwift, reference main (e9defa), with Swift 6.0 for macOS (SPM) on 3 Jun 2025 15:33:24 UTC.

Swift 6 data race errors: 0

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 4.63.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/FlineDev/HandySwift.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/FlineDev/HandySwift
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at e9defa2 Make URLSession of RESTClient customizable (e.g. for custom timeout)
Cloned https://github.com/FlineDev/HandySwift.git
Revision (git rev-parse @):
e9defa22f6c0f3ae529b6256375d679061f830ee
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/FlineDev/HandySwift.git at main
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $PWD
https://github.com/FlineDev/HandySwift.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift build --arch arm64
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-5BDAB9E9C0126B9D.txt
[3/33] Emitting module HandySwift
[4/36] Compiling HandySwift JSONDecoderExt.swift
[5/36] Compiling HandySwift JSONEncoderExt.swift
[6/36] Compiling HandySwift NSRangeExt.swift
[7/36] Compiling HandySwift Withable.swift
[8/36] Compiling HandySwift Debouncer.swift
[9/36] Compiling HandySwift FrequencyTable.swift
[10/36] Compiling HandySwift GregorianDay.swift
[11/36] Compiling HandySwift GregorianTime.swift
[12/36] Compiling HandySwift HandyRegex.swift
[13/36] Compiling HandySwift OperatingSystem.swift
[14/36] Compiling HandySwift RESTClient.swift
[15/36] Compiling HandySwift SortedArray.swift
[16/36] Compiling HandySwift ArrayExt.swift
[17/36] Compiling HandySwift CaseIterableExt.swift
[18/36] Compiling HandySwift CollectionExt.swift
[19/36] Compiling HandySwift ComparableExt.swift
[20/36] Compiling HandySwift DoubleExt.swift
[21/36] Compiling HandySwift DurationExt.swift
[22/36] Compiling HandySwift FloatExt.swift
[23/36] Compiling HandySwift IntExt.swift
[24/36] Compiling HandySwift RandomAccessCollectionExt.swift
[25/36] Compiling HandySwift SequenceExt.swift
[26/36] Compiling HandySwift StringExt.swift
[27/36] Compiling HandySwift DataExt.swift
[28/36] Compiling HandySwift DateExt.swift
[29/36] Compiling HandySwift DictionaryExt.swift
[30/36] Compiling HandySwift DispatchTimeIntervalExt.swift
[31/36] Compiling HandySwift StringProtocolExt.swift
[32/36] Compiling HandySwift SymmetricKeyExt.swift
[33/36] Compiling HandySwift TimeIntervalExt.swift
[34/36] Compiling HandySwift Globals.swift
[35/36] Compiling HandySwift AutoConforming.swift
[36/36] Compiling HandySwift DivisibleArithmetic.swift
Build complete! (6.25s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "HandySwift",
  "name" : "HandySwift",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "12.0"
    },
    {
      "name" : "macos",
      "version" : "10.14"
    },
    {
      "name" : "tvos",
      "version" : "13.0"
    },
    {
      "name" : "visionos",
      "version" : "1.0"
    },
    {
      "name" : "watchos",
      "version" : "6.0"
    }
  ],
  "products" : [
    {
      "name" : "HandySwift",
      "targets" : [
        "HandySwift"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "HandySwiftTests",
      "module_type" : "SwiftTarget",
      "name" : "HandySwiftTests",
      "path" : "Tests/HandySwiftTests",
      "sources" : [
        "Extensions/ArrayExtTests.swift",
        "Extensions/CollectionExtTests.swift",
        "Extensions/ComparableExtTests.swift",
        "Extensions/DictionaryExtTests.swift",
        "Extensions/DispatchTimeIntervalExtTests.swift",
        "Extensions/DoubleExtTests.swift",
        "Extensions/FloatExtTests.swift",
        "Extensions/IntExtTests.swift",
        "Extensions/NSObjectExtTests.swift",
        "Extensions/NSRangeExtTests.swift",
        "Extensions/StringExtTests.swift",
        "Extensions/TimeIntervalExtTests.swift",
        "Protocols/WithableTests.swift",
        "Structs/FrequencyTableTests.swift",
        "Structs/GregorianDayTests.swift",
        "Structs/HandyRegexTests.swift",
        "Structs/SortedArrayTests.swift"
      ],
      "target_dependencies" : [
        "HandySwift"
      ],
      "type" : "test"
    },
    {
      "c99name" : "HandySwift",
      "module_type" : "SwiftTarget",
      "name" : "HandySwift",
      "path" : "Sources/HandySwift",
      "product_memberships" : [
        "HandySwift"
      ],
      "sources" : [
        "Extensions/ArrayExt.swift",
        "Extensions/CaseIterableExt.swift",
        "Extensions/CollectionExt.swift",
        "Extensions/ComparableExt.swift",
        "Extensions/DataExt.swift",
        "Extensions/DateExt.swift",
        "Extensions/DictionaryExt.swift",
        "Extensions/DispatchTimeIntervalExt.swift",
        "Extensions/DoubleExt.swift",
        "Extensions/DurationExt.swift",
        "Extensions/FloatExt.swift",
        "Extensions/IntExt.swift",
        "Extensions/JSONDecoderExt.swift",
        "Extensions/JSONEncoderExt.swift",
        "Extensions/NSRangeExt.swift",
        "Extensions/RandomAccessCollectionExt.swift",
        "Extensions/SequenceExt.swift",
        "Extensions/StringExt.swift",
        "Extensions/StringProtocolExt.swift",
        "Extensions/SymmetricKeyExt.swift",
        "Extensions/TimeIntervalExt.swift",
        "Globals.swift",
        "Protocols/AutoConforming.swift",
        "Protocols/DivisibleArithmetic.swift",
        "Protocols/Withable.swift",
        "Types/Debouncer.swift",
        "Types/FrequencyTable.swift",
        "Types/GregorianDay.swift",
        "Types/GregorianTime.swift",
        "Types/HandyRegex.swift",
        "Types/OperatingSystem.swift",
        "Types/RESTClient.swift",
        "Types/SortedArray.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "6.0"
}
✅  Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path:  $PWD/.docs/flinedev/handyswift/main
Repository:               FlineDev/HandySwift
Swift version used:       6.0
Target:                   HandySwift
Extracting symbol information for 'HandySwift'...
Finished extracting symbol information for 'HandySwift'. (2.19s)
Building documentation for 'HandySwift'...
warning: Return value documented for initializer returning void
  --> ../Extensions/DictionaryExt.swift:22:8-22:147
20 |    /// - Requires: The number of elements in `keys` must be equal to the number of elements in `values`.
21 |    ///
22 +    /// - Returns: A new dictionary initialized with the provided keys and values arrays, or `nil` if the number of elements in the arrays differs.
   |        ╰─suggestion: Remove return value documentation
23 |    @inlinable
24 |    public init?(keys: [Key], values: [Value]) {
warning: External name 'randomWithLength' used to document parameter
  --> ../Extensions/StringExt.swift:58:12-58:28
56 |    ///
57 |    /// - Parameters:
58 +    ///   - randomWithLength: The length of the random string to create.
   |            ╰─suggestion: Replace 'randomWithLength' with 'length'
59 |    ///   - allowedCharactersType: The type of allowed characters, see enum ``AllowedCharacters``.
60 |    public init(randomWithLength length: Int, allowedCharactersType: AllowedCharacters) {
warning: Return value documented for initializer returning void
  --> ../Extensions/SymmetricKeyExt.swift:34:8-34:119
32 |    ///
33 |    /// - Parameter base64Encoded: The Base64-encoded string representing the symmetric key.
34 +    /// - Returns: A symmetric key initialized from the Base64-encoded string, or `nil` if the input string is invalid.
   |        ╰─suggestion: Remove return value documentation
35 |    public init?(base64Encoded: String) {
36 |       guard let data = Data(base64Encoded: base64Encoded) else { return nil }
warning: 'JSONDecoder.snakeCase' doesn't exist at '/HandySwift/Extensions'
   --> Essentials/Extensions.md:141:12-141:33
139 | ```
140 |
141 + Just use ``JSONDecoder.snakeCase`` to decode and ``JSONEncoder.snakeCase`` to encode instead of configuring a new instance each time!
    |            ╰─suggestion: Replace 'JSONDecoder.snakeCase' with 'JSON-Snake-Case-Conversion'
142 |
143 | #### Symmetric Data Cryptography
warning: 'JSONEncoder.snakeCase' doesn't exist at '/HandySwift/Extensions'
   --> Essentials/Extensions.md:141:52-141:73
139 | ```
140 |
141 + Just use ``JSONDecoder.snakeCase`` to decode and ``JSONEncoder.snakeCase`` to encode instead of configuring a new instance each time!
142 |
143 | #### Symmetric Data Cryptography
warning: '83bbm' isn't a disambiguation for 'delay(for:id:operation:)' at '/HandySwift/Debouncer'
   --> Essentials/New Types.md:108:169-108:175
106 | ```
107 |
108 + Note that the ``Debouncer`` was stored in a property so ``Debouncer/cancelAll()`` could be called on disappear for cleanup. But the ``Debouncer/delay(for:id:operation:)-83bbm`` is where the magic happens – and you don't have to deal with the details!
    |                                                                                                                                                                         ├─suggestion: Replace '-83bbm' with '-72xv9' for'func delay(for duration: Duration, id: String = "default", operation: @escaping () -> Void)'
    |                                                                                                                                                                         ╰─suggestion: Replace '-83bbm' with '-6kzv2' for'func delay(for interval: TimeInterval, id: String = "default", operation: @escaping () -> Void)'
109 |
110 | > Note: If you need multiple debouncing operations in one view, you don't need multiple debouncers. Just pass an `id` to the delay function.
warning: '8iw4f' isn't a disambiguation for 'delay(by:qosClass:_:)' at '/HandySwift'
   --> Essentials/New Types.md:132:26-132:32
130 | ### Other
131 |
132 + - ``delay(by:qosClass:_:)-8iw4f``
    |                          ├─suggestion: Replace '-8iw4f' with '-7mmlv' for'func delay(by duration: Duration, qosClass: DispatchQoS.QoSClass? = nil, _ closure: @escaping () -> Void)'
    |                          ╰─suggestion: Replace '-8iw4f' with '-3vtd4' for'func delay(by timeInterval: TimeInterval, qosClass: DispatchQoS.QoSClass? = nil, _ closure: @escaping () -> Void)'
133 | - ``delay(by:qosClass:_:)-yedf``
134 | - ``HandyRegex``
warning: 'yedf' isn't a disambiguation for 'delay(by:qosClass:_:)' at '/HandySwift'
   --> Essentials/New Types.md:133:26-133:31
131 |
132 | - ``delay(by:qosClass:_:)-8iw4f``
133 + - ``delay(by:qosClass:_:)-yedf``
    |                          ├─suggestion: Replace '-yedf' with '-7mmlv' for'func delay(by duration: Duration, qosClass: DispatchQoS.QoSClass? = nil, _ closure: @escaping () -> Void)'
    |                          ╰─suggestion: Replace '-yedf' with '-3vtd4' for'func delay(by timeInterval: TimeInterval, qosClass: DispatchQoS.QoSClass? = nil, _ closure: @escaping () -> Void)'
134 | - ``HandyRegex``
warning: Parameter 'regex' not found in instance method declaration
   --> ../Types/HandyRegex.swift:163:12-163:66
161 |    ///
162 |    /// - parameters:
163 +    ///     - regex: A regular expression to match against `self`.
    |            ╰─suggestion: Remove 'regex' parameter documentation
164 |    ///     - template: A template string used to replace matches.
165 |    ///     - count: The maximum count of matches to replace, beginning with the first match.
warning: Parameter 'input' is missing documentation
   --> ../Types/HandyRegex.swift:166:8-166:8
164 |    ///     - template: A template string used to replace matches.
    |            ╰─suggestion: Document 'input' parameter
165 |    ///     - count: The maximum count of matches to replace, beginning with the first match.
166 +    ///
167 |    /// - returns: A string with all matches of `regex` replaced by `template`.
168 |    @available(*, deprecated, message: "The HandyRegex will be removed in a future version. Migrate to Swift.Regex<Output> if possible.")
warning: Parameter 'array' not found in initializer declaration
  --> ../Types/SortedArray.swift:50:12-50:64
48 |    ///
49 |    /// - Parameters:
50 +    ///     - array: The array to be initially sorted and saved.
   |            ╰─suggestion: Remove 'array' parameter documentation
51 |    public init<S: Sequence>(_ sequence: S) where S.Iterator.Element == Element {
52 |       self.init(sequence: sequence, preSorted: false)
warning: Parameter 'sequence' is missing documentation
  --> ../Types/SortedArray.swift:50:64-50:64
48 |    ///
49 |    /// - Parameters:
50 +    ///     - array: The array to be initially sorted and saved.
   |                                                                ╰─suggestion: Document 'sequence' parameter
51 |    public init<S: Sequence>(_ sequence: S) where S.Iterator.Element == Element {
52 |       self.init(sequence: sequence, preSorted: false)Finished building documentation for 'HandySwift' (0.46s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/flinedev/handyswift/main
Fetching https://github.com/swiftlang/swift-docc-plugin
[1/2049] Fetching swift-docc-plugin
Fetched https://github.com/swiftlang/swift-docc-plugin from cache (1.10s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.4.3 (2.47s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3395] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (1.26s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (0.60s)
Creating working copy for https://github.com/swiftlang/swift-docc-plugin
Working copy of https://github.com/swiftlang/swift-docc-plugin resolved at 1.4.3
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
Building for debugging...
[0/8] Write sources
[2/8] Write snippet-extract-tool-entitlement.plist
[3/8] Write sources
[4/8] Write swift-version-5BDAB9E9C0126B9D.txt
[6/53] Compiling Snippets Snippet.swift
[7/53] Compiling Snippets SnippetParser.swift
[8/53] Emitting module Snippets
[9/53] Compiling SymbolKit Names.swift
[10/53] Compiling SymbolKit SPI.swift
[11/53] Compiling SymbolKit Snippet.swift
[12/53] Compiling SymbolKit Extension.swift
[13/57] Compiling SymbolKit Relationship.swift
[14/57] Compiling SymbolKit RelationshipKind.swift
[15/57] Compiling SymbolKit SourceOrigin.swift
[16/57] Compiling SymbolKit GenericConstraints.swift
[17/57] Compiling SymbolKit Swift.swift
[18/57] Compiling SymbolKit GenericConstraint.swift
[19/57] Compiling SymbolKit GenericParameter.swift
[20/57] Compiling SymbolKit Generics.swift
[21/57] Compiling SymbolKit Namespace.swift
[22/57] Compiling SymbolKit Mixin+Equals.swift
[23/57] Compiling SymbolKit Mixin+Hash.swift
[24/57] Compiling SymbolKit Mixin.swift
[25/57] Compiling SymbolKit LineList.swift
[26/57] Compiling SymbolKit Position.swift
[27/57] Compiling SymbolKit Identifier.swift
[28/57] Compiling SymbolKit KindIdentifier.swift
[29/57] Compiling SymbolKit Location.swift
[30/57] Compiling SymbolKit Mutability.swift
[31/57] Compiling SymbolKit SemanticVersion.swift
[32/57] Compiling SymbolKit AccessControl.swift
[33/57] Compiling SymbolKit Availability.swift
[34/57] Compiling SymbolKit AvailabilityItem.swift
[35/57] Compiling SymbolKit Domain.swift
[36/57] Emitting module SymbolKit
[37/57] Compiling SymbolKit DeclarationFragments.swift
[38/57] Compiling SymbolKit Fragment.swift
[39/57] Compiling SymbolKit FragmentKind.swift
[40/57] Compiling SymbolKit FunctionParameter.swift
[41/57] Compiling SymbolKit FunctionSignature.swift
[42/57] Compiling SymbolKit SourceRange.swift
[43/57] Compiling SymbolKit Metadata.swift
[44/57] Compiling SymbolKit Module.swift
[45/57] Compiling SymbolKit OperatingSystem.swift
[46/57] Compiling SymbolKit Platform.swift
[47/57] Compiling SymbolKit Symbol.swift
[48/57] Compiling SymbolKit SymbolKind.swift
[49/57] Compiling SymbolKit SymbolGraph.swift
[50/57] Compiling SymbolKit GraphCollector.swift
[51/57] Compiling SymbolKit UnifiedSymbol+Encodable.swift
[52/57] Compiling SymbolKit UnifiedSymbol.swift
[53/57] Compiling SymbolKit UnifiedSymbolGraph+Encodable.swift
[54/57] Compiling SymbolKit UnifiedSymbolGraph.swift
[55/61] Compiling snippet_extract SymbolGraph+Snippet.swift
[56/61] Compiling snippet_extract URL+Status.swift
[57/61] Emitting module snippet_extract
[58/61] Compiling snippet_extract SnippetBuildCommand.swift
[58/61] Write Objects.LinkFileList
[59/61] Linking snippet-extract-tool
[60/61] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (3.87s)
Building for debugging...
[0/1] Write swift-version-5BDAB9E9C0126B9D.txt
Build of target: 'HandySwift' complete! (0.15s)
    1211
10	/Users/admin/builder/spi-builder-workspace/.docs/flinedev/handyswift/main
✅  Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/flinedev/handyswift/main
File count: 1211
Doc size:   10.0MB
Preparing doc bundle ...
Uploading prod-flinedev-handyswift-main-394f3f95.zip to s3://spi-docs-inbox/prod-flinedev-handyswift-main-394f3f95.zip
Copying... [11%]
Copying... [20%]
Copying... [31%]
Copying... [40%]
Copying... [52%]
Copying... [61%]
Copying... [72%]
Copying... [81%]
Copying... [92%]
Copying... [100%]
Done.