The Swift Package Index logo.Swift Package Index

Build Information

Successful build of PaginatedRESTClient, reference 0.5.0 (da0471), with Swift 6.3 for macOS (SPM) on 8 Sep 2026 20:08:01 UTC.

Swift 6 data race errors: 0

Build Command

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

Build Log

========================================
RunAll
========================================
Builder version: 5.0.2
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/adamtheturtle/PaginatedRESTClient.git
Reference: 0.5.0
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/adamtheturtle/PaginatedRESTClient
 * tag               0.5.0      -> FETCH_HEAD
HEAD is now at da04711 Merge pull request #225 from adamtheturtle/fix/open-issues-batch-transport
Cloned https://github.com/adamtheturtle/PaginatedRESTClient.git
Revision (git rev-parse @):
da0471144598e5a3a13c56bb8651318b569c8488
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/adamtheturtle/PaginatedRESTClient.git at 0.5.0
Fetching https://github.com/swiftlang/swift-docc-symbolkit
Fetching https://github.com/swiftlang/swift-docc-plugin
[1/2345] Fetching swift-docc-plugin
[236/6165] Fetching swift-docc-plugin, swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-plugin from cache (1.45s)
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (1.45s)
Creating working copy for https://github.com/swiftlang/swift-docc-plugin
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
Working copy of https://github.com/swiftlang/swift-docc-plugin resolved at 1.5.0
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
  "identity": ".resolve-product-dependencies",
  "name": "resolve-dependencies",
  "url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "version": "unspecified",
  "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "traits": [
    "default"
  ],
  "dependencies": [
    {
      "identity": "paginatedrestclient",
      "name": "PaginatedRESTClient",
      "url": "https://github.com/adamtheturtle/PaginatedRESTClient.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/PaginatedRESTClient",
      "traits": [
        "default"
      ],
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/adamtheturtle/PaginatedRESTClient.git
[1/722] Fetching paginatedrestclient
Fetched https://github.com/adamtheturtle/PaginatedRESTClient.git from cache (1.06s)
Creating working copy for https://github.com/adamtheturtle/PaginatedRESTClient.git
Working copy of https://github.com/adamtheturtle/PaginatedRESTClient.git resolved at 0.5.0 (da04711)
warning: '.resolve-product-dependencies': dependency 'paginatedrestclient' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.3
Building package at path:  $PWD
https://github.com/adamtheturtle/PaginatedRESTClient.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-26.5.0.app xcrun swift build --arch arm64
[1/1] Compiling plugin Swift-DocC Preview
[2/2] Compiling plugin Swift-DocC
Building for debugging...
[2/4] Write sources
[3/4] Write swift-version-69A768CDF2A0BEE1.txt
[5/9] Compiling PaginatedRESTClient SameOriginRedirectDelegate.swift
[6/9] Compiling PaginatedRESTClient URLSessionTransport.swift
[7/9] Compiling PaginatedRESTClient PaginatedRESTClient.swift
[8/9] Compiling PaginatedRESTClient RESTTransport.swift
[9/9] Emitting module PaginatedRESTClient
Build complete! (10.69s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-docc-plugin",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.4.3",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/swiftlang/swift-docc-plugin"
    }
  ],
  "manifest_display_name" : "PaginatedRESTClient",
  "name" : "PaginatedRESTClient",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "15.0"
    },
    {
      "name" : "ios",
      "version" : "18.0"
    },
    {
      "name" : "tvos",
      "version" : "18.0"
    },
    {
      "name" : "watchos",
      "version" : "11.0"
    },
    {
      "name" : "visionos",
      "version" : "2.0"
    }
  ],
  "products" : [
    {
      "name" : "PaginatedRESTClient",
      "targets" : [
        "PaginatedRESTClient"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "PaginatedRESTClientTests",
      "module_type" : "SwiftTarget",
      "name" : "PaginatedRESTClientTests",
      "path" : "Tests/PaginatedRESTClientTests",
      "sources" : [
        "InitializerIsolationTests.swift",
        "OpenIssuesBatchTests.swift",
        "PaginatedRESTClientTests.swift",
        "READMEQuickStartTests.swift",
        "RedirectPolicyTests.swift",
        "URLSessionTransportTests.swift"
      ],
      "target_dependencies" : [
        "PaginatedRESTClient"
      ],
      "type" : "test"
    },
    {
      "c99name" : "PaginatedRESTClient",
      "module_type" : "SwiftTarget",
      "name" : "PaginatedRESTClient",
      "path" : "Sources/PaginatedRESTClient",
      "product_memberships" : [
        "PaginatedRESTClient"
      ],
      "sources" : [
        "PaginatedRESTClient.swift",
        "RESTTransport.swift",
        "SameOriginRedirectDelegate.swift",
        "URLSessionTransport.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "6.2"
}
✅  Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path:  $PWD/.docs/adamtheturtle/paginatedrestclient/0.5.0
Repository:               adamtheturtle/PaginatedRESTClient
Swift version used:       6.3
        .package(url: "https://github.com/swiftlang/swift-docc-plugin", from: "1.4.3")
Target:                   PaginatedRESTClient
Extracting symbol information for 'PaginatedRESTClient'...
Finished extracting symbol information for 'PaginatedRESTClient'. (26.94s)
Building documentation for 'PaginatedRESTClient'...
warning: 'authorizedGET(_:)' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient'
  --> CustomTransports.md:41:23-41:40
39 | ## Redirect credential safety
40 |
41 + ``PaginatedRESTClient/authorizedGET(_:)`` and the other authenticated builders validate only
   |                       ╰─suggestion: Replace 'authorizedGET(_:)' with 'authorizedGET(_:headers:)'
42 | the *initial* URL. Once a ``RESTRequest`` is handed to your transport, **redirect handling is
43 | entirely yours.**
warning: 'SameOriginRedirectDelegate' doesn't exist at '/PaginatedRESTClient/CustomTransports'
  --> CustomTransports.md:51:44-51:70
49 | 2. Strip credential headers before following a cross-origin redirect.
50 |
51 + ``URLSessionTransport`` does (1) through ``SameOriginRedirectDelegate``. A literal adapter
52 | that blindly replays the original ``RESTRequest/headers`` on every hop can reintroduce a
53 | credential leak. Treat same-origin redirect policy as part of the ``RESTTransport`` contract,
warning: 'init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:maxRetryDelay:maxAttempts:)' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient'
  --> PaginatedRESTClient.md:32:23-32:157
30 |
31 | Idempotent requests retry up to three times by default. Pass `maxAttempts` to
32 + ``PaginatedRESTClient/init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:maxRetryDelay:maxAttempts:)``
   |                       ╰─suggestion: Replace 'init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:maxRetryDelay:maxAttempts:)' with 'init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:maxRetryDelay:maxAttempts:maxPaginationHTTPAttempts:)'
33 | to change that default for ``PaginatedRESTClient/fetch(_:path:)``, pagination, and
34 | ``PaginatedRESTClient/performWithRetry(_:request:maxAttempts:)``. Retry delays cap at 60
warning: 'fetch(_:path:)' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient'
  --> PaginatedRESTClient.md:33:50-33:64
31 | Idempotent requests retry up to three times by default. Pass `maxAttempts` to
32 | ``PaginatedRESTClient/init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:maxRetryDelay:maxAttempts:)``
33 + to change that default for ``PaginatedRESTClient/fetch(_:path:)``, pagination, and
   |                                                  ├─suggestion: Replace 'fetch(_:path:)' with 'fetch(_:path:headers:)'
   |                                                  ╰─suggestion: Replace 'fetch(_:path:)' with 'fetchAllPages(_:path:sort:)'
34 | ``PaginatedRESTClient/performWithRetry(_:request:maxAttempts:)``. Retry delays cap at 60
35 | seconds by default; configure `maxRetryDelay` when an API's `Retry-After` requires a longer
warning: 'init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:)' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient'
  --> PaginatedRESTClient.md:42:70-42:178
40 | ``PaginatedRESTClient/defaultMaxSequentialPages`` and
41 | ``PaginatedRESTClient/defaultMaxParallelPages`` both default to `1000`. Pass
42 + `maxSequentialPages` and `maxParallelPages` to ``PaginatedRESTClient/init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:)``
   |                                                                      ╰─suggestion: Replace 'init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:)' with 'init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:maxRetryDelay:maxAttempts:maxPaginationHTTPAttempts:)'
43 | to tune them per client. Hitting either cap throws through
44 | ``RESTTransportErrorMapping/invalidRequest(_:)`` rather than truncating the list. The
warning: 'Hashable' doesn't exist at '/PaginatedRESTClient/RESTItemIdentity'
  --> ../PaginatedRESTClient.swift:35:9-35:17
33 | /// rather than walking `next_page` one blocking round-trip at a time.
34 |
35 + /// A ``Hashable`` & ``Sendable`` item identity for pagination de-duplication (#122).
36 | ///
37 | /// Swift 6 marks `AnyHashable`'s `Sendable` conformance unavailable, so the public
warning: 'Sendable' doesn't exist at '/PaginatedRESTClient/RESTItemIdentity'
  --> ../PaginatedRESTClient.swift:35:24-35:32
33 | /// rather than walking `next_page` one blocking round-trip at a time.
34 |
35 + /// A ``Hashable`` & ``Sendable`` item identity for pagination de-duplication (#122).
36 | ///
37 | /// Swift 6 marks `AnyHashable`'s `Sendable` conformance unavailable, so the public
warning: 'maxSequentialPages' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient/maxPaginationHTTPAttempts'
   --> ../PaginatedRESTClient.swift:339:23-339:41
337 |
338 |     /// Upper bound on HTTP attempts across one paginated list (retries included) (#123).
339 +     /// Defaults to ``maxSequentialPages`` × ``maxAttempts``. Parallel fetches also count
340 |     /// toward ``maxSequentialPages``, so that valve (not ``maxParallelPages`` alone) is
341 |     /// the page budget the retry multiplier must cover.
warning: 'maxAttempts' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient/maxPaginationHTTPAttempts'
   --> ../PaginatedRESTClient.swift:339:49-339:60
337 |
338 |     /// Upper bound on HTTP attempts across one paginated list (retries included) (#123).
339 +     /// Defaults to ``maxSequentialPages`` × ``maxAttempts``. Parallel fetches also count
340 |     /// toward ``maxSequentialPages``, so that valve (not ``maxParallelPages`` alone) is
341 |     /// the page budget the retry multiplier must cover.
warning: 'maxSequentialPages' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient/maxPaginationHTTPAttempts'
   --> ../PaginatedRESTClient.swift:340:18-340:36
338 |     /// Upper bound on HTTP attempts across one paginated list (retries included) (#123).
339 |     /// Defaults to ``maxSequentialPages`` × ``maxAttempts``. Parallel fetches also count
340 +     /// toward ``maxSequentialPages``, so that valve (not ``maxParallelPages`` alone) is
341 |     /// the page budget the retry multiplier must cover.
342 |     public nonisolated let maxPaginationHTTPAttempts: Int
warning: 'maxParallelPages' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient/maxPaginationHTTPAttempts'
   --> ../PaginatedRESTClient.swift:340:61-340:77
338 |     /// Upper bound on HTTP attempts across one paginated list (retries included) (#123).
339 |     /// Defaults to ``maxSequentialPages`` × ``maxAttempts``. Parallel fetches also count
340 +     /// toward ``maxSequentialPages``, so that valve (not ``maxParallelPages`` alone) is
341 |     /// the page budget the retry multiplier must cover.
342 |     public nonisolated let maxPaginationHTTPAttempts: Int
warning: 'fetch(_:path:)' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient/validatedAuthenticatedURL(_:)'
    --> ../PaginatedRESTClient.swift:1309:56-1309:70
1307 |
1308 |     /// Validates that `url` stays on the configured HTTP(S) origin without URL userinfo,
1309 +     /// matching the credential-safety rules used by ``fetch(_:path:)``.
1310 |     nonisolated func validatedAuthenticatedURL(_ url: URL) throws -> URL {
1311 |         guard SameOriginRedirectDelegate.hasSameOrigin(baseURL, url),
Finished building documentation for 'PaginatedRESTClient' (0.56s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/adamtheturtle/paginatedrestclient/0.5.0
Building for debugging...
[0/8] Write sources
[3/8] Write snippet-extract-tool-entitlement.plist
[4/8] Write swift-version-69A768CDF2A0BEE1.txt
[6/54] Compiling SymbolKit Relationship.swift
[7/54] Compiling SymbolKit RelationshipKind.swift
[8/54] Compiling SymbolKit SourceOrigin.swift
[9/54] Compiling SymbolKit GenericConstraints.swift
[10/54] Compiling SymbolKit Swift.swift
[11/58] Compiling SymbolKit DeclarationFragments.swift
[12/58] Compiling SymbolKit Fragment.swift
[13/58] Compiling SymbolKit FragmentKind.swift
[14/58] Compiling SymbolKit FunctionParameter.swift
[15/58] Compiling SymbolKit FunctionSignature.swift
[16/58] Compiling SymbolKit Mixin+Equals.swift
[17/58] Compiling SymbolKit Mixin+Hash.swift
[18/58] Compiling SymbolKit Mixin.swift
[19/58] Compiling SymbolKit LineList.swift
[20/58] Compiling SymbolKit Position.swift
[21/58] Compiling Snippets Snippet.swift
[22/58] Compiling Snippets SnippetParser.swift
[23/58] Compiling Snippets SnippetLanguage.swift
[24/58] Emitting module Snippets
[25/58] Compiling SymbolKit Identifier.swift
[26/58] Compiling SymbolKit KindIdentifier.swift
[27/58] Compiling SymbolKit Location.swift
[28/58] Compiling SymbolKit Mutability.swift
[29/58] Compiling SymbolKit SemanticVersion.swift
[30/58] Compiling SymbolKit AccessControl.swift
[31/58] Compiling SymbolKit Availability.swift
[32/58] Compiling SymbolKit AvailabilityItem.swift
[33/58] Compiling SymbolKit Domain.swift
[34/58] Compiling SymbolKit Names.swift
[35/58] Compiling SymbolKit SPI.swift
[36/58] Compiling SymbolKit Snippet.swift
[37/58] Compiling SymbolKit Extension.swift
[38/58] Compiling SymbolKit GenericConstraint.swift
[39/58] Compiling SymbolKit GenericParameter.swift
[40/58] Compiling SymbolKit Generics.swift
[41/58] Compiling SymbolKit Namespace.swift
[42/58] Compiling SymbolKit Symbol.swift
[43/58] Compiling SymbolKit SymbolKind.swift
[44/58] Compiling SymbolKit SymbolGraph.swift
[45/58] Compiling SymbolKit GraphCollector.swift
[46/58] Compiling SymbolKit SourceRange.swift
[47/58] Compiling SymbolKit Metadata.swift
[48/58] Compiling SymbolKit Module.swift
[49/58] Compiling SymbolKit OperatingSystem.swift
[50/58] Compiling SymbolKit Platform.swift
[51/58] Emitting module SymbolKit
[52/58] Compiling SymbolKit UnifiedSymbol+Encodable.swift
[53/58] Compiling SymbolKit UnifiedSymbol.swift
[54/58] Compiling SymbolKit UnifiedSymbolGraph+Encodable.swift
[55/58] Compiling SymbolKit UnifiedSymbolGraph.swift
[56/62] Compiling snippet_extract URL+Status.swift
[57/62] Compiling snippet_extract SymbolGraph+Snippet.swift
[58/62] Emitting module snippet_extract
[59/62] Compiling snippet_extract SnippetBuildCommand.swift
[59/62] Write Objects.LinkFileList
[60/62] Linking snippet-extract-tool
[61/62] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (3.51s)
Building for debugging...
[0/1] Write swift-version-69A768CDF2A0BEE1.txt
Build of target: 'PaginatedRESTClient' complete! (0.23s)
     376
4	/Users/admin/builder/spi-builder-workspace/.docs/adamtheturtle/paginatedrestclient/0.5.0
✅  Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/adamtheturtle/paginatedrestclient/0.5.0
File count: 376
Doc size:   4.0MB
Preparing doc bundle ...
Using presigned URL upload - AWS credentials not required
Uploading -adamtheturtle-paginatedrestclient-0.5.0-0f750620.zip to presigned URL
Starting upload of 802044 bytes...
Upload completed successfully
Done.