The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of TPInAppReceipt, reference 3.4.1 (e13505), with Swift 6.0 for macOS (SPM) on 30 Nov 2024 20:41:53 UTC.

Swift 6 data race errors: 4

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.1.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures

Build Log

========================================
RunAll
========================================
Builder version: 4.58.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/tikhop/TPInAppReceipt.git
Reference: 3.4.1
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/tikhop/TPInAppReceipt
 * tag               3.4.1      -> FETCH_HEAD
HEAD is now at e135055 Merge pull request #122 from tikhop/develop
Cloned https://github.com/tikhop/TPInAppReceipt.git
Revision (git rev-parse @):
e135055eaeba5a52874b7f9b290f42890cbe981f
SUCCESS checkout https://github.com/tikhop/TPInAppReceipt.git at 3.4.1
Fetching https://github.com/tikhop/ASN1Swift
[12/577] Fetching asn1swift
Fetched https://github.com/tikhop/ASN1Swift from cache (0.85s)
Computing version for https://github.com/tikhop/ASN1Swift
Computed https://github.com/tikhop/ASN1Swift at 1.2.6 (0.45s)
Creating working copy for https://github.com/tikhop/ASN1Swift
Working copy of https://github.com/tikhop/ASN1Swift resolved at 1.2.6
========================================
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",
  "dependencies": [
    {
      "identity": "tpinappreceipt",
      "name": "TPInAppReceipt",
      "url": "https://github.com/tikhop/TPInAppReceipt.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/TPInAppReceipt",
      "dependencies": [
        {
          "identity": "asn1swift",
          "name": "ASN1Swift",
          "url": "https://github.com/tikhop/ASN1Swift",
          "version": "1.2.7",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/ASN1Swift",
          "dependencies": [
          ]
        }
      ]
    }
  ]
}
Fetching https://github.com/tikhop/TPInAppReceipt.git
[1/2449] Fetching tpinappreceipt
Fetched https://github.com/tikhop/TPInAppReceipt.git from cache (2.08s)
Fetching https://github.com/tikhop/ASN1Swift from cache
Fetched https://github.com/tikhop/ASN1Swift from cache (0.46s)
Computing version for https://github.com/tikhop/ASN1Swift
Computed https://github.com/tikhop/ASN1Swift at 1.2.7 (0.02s)
Creating working copy for https://github.com/tikhop/TPInAppReceipt.git
Working copy of https://github.com/tikhop/TPInAppReceipt.git resolved at 3.4.1 (e135055)
Creating working copy for https://github.com/tikhop/ASN1Swift
Working copy of https://github.com/tikhop/ASN1Swift resolved at 1.2.7
warning: '.resolve-product-dependencies': dependency 'tpinappreceipt' is not used by any target
Found 1 product dependencies
  - ASN1Swift
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $PWD
https://github.com/tikhop/TPInAppReceipt.git
{
  "dependencies" : [
    {
      "identity" : "asn1swift",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/tikhop/ASN1Swift"
    }
  ],
  "manifest_display_name" : "TPInAppReceipt",
  "name" : "TPInAppReceipt",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "10.13"
    },
    {
      "name" : "ios",
      "version" : "12.0"
    },
    {
      "name" : "tvos",
      "version" : "12.0"
    },
    {
      "name" : "watchos",
      "version" : "6.2"
    },
    {
      "name" : "visionos",
      "version" : "1.0"
    },
    {
      "name" : "maccatalyst",
      "version" : "13.0"
    }
  ],
  "products" : [
    {
      "name" : "TPInAppReceipt",
      "targets" : [
        "TPInAppReceipt"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TPInAppReceipt-Objc",
      "targets" : [
        "TPInAppReceipt-Objc"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "targets" : [
    {
      "c99name" : "TPInAppReceiptTests",
      "module_type" : "SwiftTarget",
      "name" : "TPInAppReceiptTests",
      "path" : "Tests/TPInAppReceiptTests",
      "sources" : [
        "Device.swift",
        "PerformanceTests.swift",
        "ReceiptData.swift",
        "TPInAppReceiptTests.swift",
        "XCTestManifests.swift"
      ],
      "target_dependencies" : [
        "TPInAppReceipt"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TPInAppReceipt_Objc",
      "module_type" : "SwiftTarget",
      "name" : "TPInAppReceipt-Objc",
      "path" : "Sources/Objc",
      "product_memberships" : [
        "TPInAppReceipt-Objc"
      ],
      "sources" : [
        "InAppReceipt+Objc.swift"
      ],
      "target_dependencies" : [
        "TPInAppReceipt"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TPInAppReceipt",
      "module_type" : "SwiftTarget",
      "name" : "TPInAppReceipt",
      "path" : "Sources",
      "product_dependencies" : [
        "ASN1Swift"
      ],
      "product_memberships" : [
        "TPInAppReceipt",
        "TPInAppReceipt-Objc"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/AppleIncRootCertificate.cer",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/PrivacyInfo.xcprivacy",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/StoreKitTestCertificate.cer",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "Bundle+Extension.swift",
        "Data+Extension.swift",
        "Date+Extension.swift",
        "Extras.swift",
        "IARError.swift",
        "InAppPurchase.swift",
        "InAppReceipt+ASN1Decodable.swift",
        "InAppReceipt.swift",
        "InAppReceiptPayload.swift",
        "Initialization.swift",
        "Validation.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.1.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Building for debugging...
[0/8] Write sources
[0/8] Copying StoreKitTestCertificate.cer
[0/8] Write sources
[3/8] Copying AppleIncRootCertificate.cer
[3/8] Copying PrivacyInfo.xcprivacy
[7/8] Write swift-version--7754E27361AE5C74.txt
[9/23] Compiling ASN1Swift PKCS7.swift
[10/24] Compiling ASN1Swift Foundation+ASN1Coder.swift
[11/24] Compiling ASN1Swift DecodingError+Extensions.swift
[12/24] Compiling ASN1Swift ASN1Types.swift
[13/24] Compiling ASN1Swift ASN1Decoder+Unboxing.swift
[14/24] Compiling ASN1Swift ASN1Decoder+UnkeyedDecodingContainer.swift
[15/24] Emitting module ASN1Swift
[16/24] Compiling ASN1Swift ASN1Decoder+KeyedDecodingContainer.swift
[17/24] Compiling ASN1Swift ASN1Decoder+SingleValueContainer.swift
[18/24] Compiling ASN1Swift ASN1Serialization.swift
[19/24] Compiling ASN1Swift ASN1Templates.swift
[20/24] Compiling ASN1Swift ASN1Coder.swift
[21/24] Compiling ASN1Swift ASN1Decoder+Extras.swift
[22/24] Compiling ASN1Swift ASN1Decoder+Utils.swift
[23/24] Compiling ASN1Swift ASN1Decoder.swift
[24/24] Compiling ASN1Swift resource_bundle_accessor.swift
[25/36] Compiling TPInAppReceipt InAppReceipt.swift
[26/36] Compiling TPInAppReceipt InAppReceipt+ASN1Decodable.swift
[27/36] Compiling TPInAppReceipt Initialization.swift
[28/36] Compiling TPInAppReceipt Validation.swift
[29/36] Compiling TPInAppReceipt InAppReceiptPayload.swift
[30/36] Compiling TPInAppReceipt IARError.swift
/Users/admin/builder/spi-builder-workspace/Sources/IARError.swift:18:10: warning: associated value 'initializationFailed(reason:)' of 'Sendable'-conforming enum 'IARError' has non-sendable type 'IARError.ReceiptInitializationFailureReason'; this is an error in the Swift 6 language mode
16 | public enum IARError: Error
17 | {
18 |     case initializationFailed(reason: ReceiptInitializationFailureReason)
   |          `- warning: associated value 'initializationFailed(reason:)' of 'Sendable'-conforming enum 'IARError' has non-sendable type 'IARError.ReceiptInitializationFailureReason'; this is an error in the Swift 6 language mode
19 |     case validationFailed(reason: ValidationFailureReason)
20 |     case purchaseExpired
   :
24 |     /// - appStoreReceiptNotFound:         In-App Receipt not found
25 |     /// - pkcs7ParsingError:               PKCS7 Container can't be extracted from in-app receipt data
26 |     public enum ReceiptInitializationFailureReason
   |                 `- note: consider making enum 'ReceiptInitializationFailureReason' conform to the 'Sendable' protocol
27 |     {
28 |         case appStoreReceiptNotFound
/Users/admin/builder/spi-builder-workspace/Sources/IARError.swift:19:10: warning: associated value 'validationFailed(reason:)' of 'Sendable'-conforming enum 'IARError' has non-sendable type 'IARError.ValidationFailureReason'; this is an error in the Swift 6 language mode
17 | {
18 |     case initializationFailed(reason: ReceiptInitializationFailureReason)
19 |     case validationFailed(reason: ValidationFailureReason)
   |          `- warning: associated value 'validationFailed(reason:)' of 'Sendable'-conforming enum 'IARError' has non-sendable type 'IARError.ValidationFailureReason'; this is an error in the Swift 6 language mode
20 |     case purchaseExpired
21 | 	case receiptRefreshingInProgress
   :
35 |     /// - hashValidation:          Computed hash doesn't match the hash from the receipt's payload
36 |     /// - signatureValidation:     Error occurs during signature validation. It has several reasons to failure
37 |     public enum ValidationFailureReason
   |                 `- note: consider making enum 'ValidationFailureReason' conform to the 'Sendable' protocol
38 |     {
39 |         case hashValidation
[31/36] Compiling TPInAppReceipt InAppPurchase.swift
[32/37] Compiling TPInAppReceipt resource_bundle_accessor.swift
[33/37] Compiling TPInAppReceipt Date+Extension.swift
/Users/admin/builder/spi-builder-workspace/Sources/Date+Extension.swift:28:17: warning: var 'rfc3339DateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
26 | }
27 |
28 | fileprivate var rfc3339DateFormatter: ISO8601DateFormatter = {
   |                 |- warning: var 'rfc3339DateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                 |- note: convert 'rfc3339DateFormatter' to a 'let' constant to make 'Sendable' shared state immutable
   |                 |- note: annotate 'rfc3339DateFormatter' with '@MainActor' if property should only be accessed from the main actor
   |                 `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
29 | 	let formatter = ISO8601DateFormatter()
30 | 	formatter.formatOptions = .withInternetDateTime
/Users/admin/builder/spi-builder-workspace/Sources/Extras.swift:15:17: warning: var 'refreshSession' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 13 |
 14 | @available(watchOSApplicationExtension 6.2, *)
 15 | fileprivate var refreshSession: RefreshSession?
    |                 |- warning: var 'refreshSession' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                 |- note: convert 'refreshSession' to a 'let' constant to make 'Sendable' shared state immutable
    |                 |- note: annotate 'refreshSession' with '@MainActor' if property should only be accessed from the main actor
    |                 `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 16 |
 17 | @available(tvOS 12.0, *)
/Users/admin/builder/spi-builder-workspace/Sources/Extras.swift:228:4: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
226 |     {
227 |         DispatchQueue.main.async { [weak self] in
228 | 			self?.completion?(error)
    |    |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |    `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
229 |         }
230 |         receiptRefreshRequest.cancel()
[34/37] Compiling TPInAppReceipt Extras.swift
/Users/admin/builder/spi-builder-workspace/Sources/Date+Extension.swift:28:17: warning: var 'rfc3339DateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
26 | }
27 |
28 | fileprivate var rfc3339DateFormatter: ISO8601DateFormatter = {
   |                 |- warning: var 'rfc3339DateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                 |- note: convert 'rfc3339DateFormatter' to a 'let' constant to make 'Sendable' shared state immutable
   |                 |- note: annotate 'rfc3339DateFormatter' with '@MainActor' if property should only be accessed from the main actor
   |                 `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
29 | 	let formatter = ISO8601DateFormatter()
30 | 	formatter.formatOptions = .withInternetDateTime
/Users/admin/builder/spi-builder-workspace/Sources/Extras.swift:15:17: warning: var 'refreshSession' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 13 |
 14 | @available(watchOSApplicationExtension 6.2, *)
 15 | fileprivate var refreshSession: RefreshSession?
    |                 |- warning: var 'refreshSession' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                 |- note: convert 'refreshSession' to a 'let' constant to make 'Sendable' shared state immutable
    |                 |- note: annotate 'refreshSession' with '@MainActor' if property should only be accessed from the main actor
    |                 `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 16 |
 17 | @available(tvOS 12.0, *)
/Users/admin/builder/spi-builder-workspace/Sources/Extras.swift:228:4: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
226 |     {
227 |         DispatchQueue.main.async { [weak self] in
228 | 			self?.completion?(error)
    |    |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |    `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
229 |         }
230 |         receiptRefreshRequest.cancel()
[35/37] Compiling TPInAppReceipt Bundle+Extension.swift
[36/37] Compiling TPInAppReceipt Data+Extension.swift
[37/37] Emitting module TPInAppReceipt
/Users/admin/builder/spi-builder-workspace/Sources/Date+Extension.swift:28:17: warning: var 'rfc3339DateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
26 | }
27 |
28 | fileprivate var rfc3339DateFormatter: ISO8601DateFormatter = {
   |                 |- warning: var 'rfc3339DateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                 |- note: convert 'rfc3339DateFormatter' to a 'let' constant to make 'Sendable' shared state immutable
   |                 |- note: annotate 'rfc3339DateFormatter' with '@MainActor' if property should only be accessed from the main actor
   |                 `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
29 | 	let formatter = ISO8601DateFormatter()
30 | 	formatter.formatOptions = .withInternetDateTime
/Users/admin/builder/spi-builder-workspace/Sources/Extras.swift:15:17: warning: var 'refreshSession' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 13 |
 14 | @available(watchOSApplicationExtension 6.2, *)
 15 | fileprivate var refreshSession: RefreshSession?
    |                 |- warning: var 'refreshSession' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                 |- note: convert 'refreshSession' to a 'let' constant to make 'Sendable' shared state immutable
    |                 |- note: annotate 'refreshSession' with '@MainActor' if property should only be accessed from the main actor
    |                 `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 16 |
 17 | @available(tvOS 12.0, *)
/Users/admin/builder/spi-builder-workspace/Sources/IARError.swift:18:10: warning: associated value 'initializationFailed(reason:)' of 'Sendable'-conforming enum 'IARError' has non-sendable type 'IARError.ReceiptInitializationFailureReason'; this is an error in the Swift 6 language mode
16 | public enum IARError: Error
17 | {
18 |     case initializationFailed(reason: ReceiptInitializationFailureReason)
   |          `- warning: associated value 'initializationFailed(reason:)' of 'Sendable'-conforming enum 'IARError' has non-sendable type 'IARError.ReceiptInitializationFailureReason'; this is an error in the Swift 6 language mode
19 |     case validationFailed(reason: ValidationFailureReason)
20 |     case purchaseExpired
   :
24 |     /// - appStoreReceiptNotFound:         In-App Receipt not found
25 |     /// - pkcs7ParsingError:               PKCS7 Container can't be extracted from in-app receipt data
26 |     public enum ReceiptInitializationFailureReason
   |                 `- note: consider making enum 'ReceiptInitializationFailureReason' conform to the 'Sendable' protocol
27 |     {
28 |         case appStoreReceiptNotFound
/Users/admin/builder/spi-builder-workspace/Sources/IARError.swift:19:10: warning: associated value 'validationFailed(reason:)' of 'Sendable'-conforming enum 'IARError' has non-sendable type 'IARError.ValidationFailureReason'; this is an error in the Swift 6 language mode
17 | {
18 |     case initializationFailed(reason: ReceiptInitializationFailureReason)
19 |     case validationFailed(reason: ValidationFailureReason)
   |          `- warning: associated value 'validationFailed(reason:)' of 'Sendable'-conforming enum 'IARError' has non-sendable type 'IARError.ValidationFailureReason'; this is an error in the Swift 6 language mode
20 |     case purchaseExpired
21 | 	case receiptRefreshingInProgress
   :
35 |     /// - hashValidation:          Computed hash doesn't match the hash from the receipt's payload
36 |     /// - signatureValidation:     Error occurs during signature validation. It has several reasons to failure
37 |     public enum ValidationFailureReason
   |                 `- note: consider making enum 'ValidationFailureReason' conform to the 'Sendable' protocol
38 |     {
39 |         case hashValidation
[38/39] Emitting module TPInAppReceipt_Objc
[39/39] Compiling TPInAppReceipt_Objc InAppReceipt+Objc.swift
Build complete! (21.80s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "asn1swift",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/tikhop/ASN1Swift"
    }
  ],
  "manifest_display_name" : "TPInAppReceipt",
  "name" : "TPInAppReceipt",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "10.13"
    },
    {
      "name" : "ios",
      "version" : "12.0"
    },
    {
      "name" : "tvos",
      "version" : "12.0"
    },
    {
      "name" : "watchos",
      "version" : "6.2"
    },
    {
      "name" : "visionos",
      "version" : "1.0"
    },
    {
      "name" : "maccatalyst",
      "version" : "13.0"
    }
  ],
  "products" : [
    {
      "name" : "TPInAppReceipt",
      "targets" : [
        "TPInAppReceipt"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TPInAppReceipt-Objc",
      "targets" : [
        "TPInAppReceipt-Objc"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "targets" : [
    {
      "c99name" : "TPInAppReceiptTests",
      "module_type" : "SwiftTarget",
      "name" : "TPInAppReceiptTests",
      "path" : "Tests/TPInAppReceiptTests",
      "sources" : [
        "Device.swift",
        "PerformanceTests.swift",
        "ReceiptData.swift",
        "TPInAppReceiptTests.swift",
        "XCTestManifests.swift"
      ],
      "target_dependencies" : [
        "TPInAppReceipt"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TPInAppReceipt_Objc",
      "module_type" : "SwiftTarget",
      "name" : "TPInAppReceipt-Objc",
      "path" : "Sources/Objc",
      "product_memberships" : [
        "TPInAppReceipt-Objc"
      ],
      "sources" : [
        "InAppReceipt+Objc.swift"
      ],
      "target_dependencies" : [
        "TPInAppReceipt"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TPInAppReceipt",
      "module_type" : "SwiftTarget",
      "name" : "TPInAppReceipt",
      "path" : "Sources",
      "product_dependencies" : [
        "ASN1Swift"
      ],
      "product_memberships" : [
        "TPInAppReceipt",
        "TPInAppReceipt-Objc"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/AppleIncRootCertificate.cer",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/PrivacyInfo.xcprivacy",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/StoreKitTestCertificate.cer",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "Bundle+Extension.swift",
        "Data+Extension.swift",
        "Date+Extension.swift",
        "Extras.swift",
        "IARError.swift",
        "InAppPurchase.swift",
        "InAppReceipt+ASN1Decodable.swift",
        "InAppReceipt.swift",
        "InAppReceiptPayload.swift",
        "Initialization.swift",
        "Validation.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Done.