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 Cirrus, reference 0.1.4 (822060), with Swift 6.2 (beta) for macOS (SPM) on 19 Jun 2025 18:46:46 UTC.

Swift 6 data race errors: 0

Build Command

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

Build Log

========================================
RunAll
========================================
Builder version: 4.64.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/jayhickey/cirrus.git
Reference: 0.1.4
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/jayhickey/cirrus
 * tag               0.1.4      -> FETCH_HEAD
HEAD is now at 8220608 Allow limit exceeded errors to be retried (#6)
Cloned https://github.com/jayhickey/cirrus.git
Revision (git rev-parse @):
8220608a5f6a82501bb43cfdab507e90aa62b6fc
SUCCESS checkout https://github.com/jayhickey/cirrus.git at 0.1.4
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.2
Building package at path:  $PWD
https://github.com/jayhickey/cirrus.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-26.0.0-Beta.app xcrun swift build --arch arm64
Building for debugging...
[0/4] Write sources
[3/4] Write swift-version-1EA4D86E10B52AF.txt
[5/7] Compiling CloudKitCodable CloudKitCodable.swift
[6/7] Emitting module CloudKitCodable
[7/7] Compiling CloudKitCodable CloudKitCodable+LastModifiedDate.swift
[8/17] Compiling CKRecordCoder CloudKitCodable+RecordType.swift
[9/17] Compiling CKRecordCoder CloudKitSystemFieldsKeyName.swift
[10/18] Emitting module CKRecordCoder
[11/18] Compiling CKRecordCoder CKRecordEncoder.swift
[12/18] Compiling CKRecordCoder CKRecordKeyedDecodingContainer.swift
[13/18] Compiling CKRecordCoder CKRecordKeyedEncodingContainer.swift
[14/18] Compiling CKRecordCoder CKRecordDecoder.swift
[15/18] Compiling CKRecordCoder CKRecordSingleValueDecoder.swift
[16/18] Compiling CKRecordCoder CKRecordSingleValueEncoder.swift
[17/18] Compiling CKRecordCoder CKRecordEncodingError.swift
[18/18] Compiling CKRecordCoder URLTransformer.swift
[19/28] Emitting module Cirrus
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/DeleteRecordContext.swift:1:22: warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
 1 | @_implementationOnly import CKRecordCoder
   |                      `- warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
 2 | import CloudKit
 3 | import CloudKitCodable
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/Error+CloudKit.swift:1:22: warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
  1 | @_implementationOnly import CKRecordCoder
    |                      `- warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
  2 | import CloudKit
  3 | import CloudKitCodable
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:1:22: warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
  1 | @_implementationOnly import CKRecordCoder
    |                      `- warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
  2 | import CloudKit
  3 | import CloudKitCodable
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/UploadRecordContext.swift:1:22: warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
 1 | @_implementationOnly import CKRecordCoder
   |                      `- warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
 2 | import CloudKit
 3 | import CloudKitCodable
[20/29] Compiling Cirrus SyncEngine.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:129:26: warning: capture of non-sendable type 'Model.Type' in an isolated closure
127 |
128 |     workQueue.async {
129 |       self.uploadContext.buffer(models)
    |                          `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
130 |       self.modifyRecords(with: self.uploadContext)
131 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:125:15: warning: capture of non-sendable type 'Model.Type' in an isolated closure
123 |
124 |   /// Upload an array of models to CloudKit.
125 |   public func upload(_ models: [Model]) {
    |               `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
126 |     logHandler(#function, .debug)
127 |
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:145:26: warning: capture of non-sendable type 'Model.Type' in an isolated closure
143 |     workQueue.async {
144 |       // Remove any pending upload items that match the items we want to delete
145 |       self.uploadContext.removeFromBuffer(models)
    |                          `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
146 |
147 |       self.deleteContext.buffer(models)
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:140:15: warning: capture of non-sendable type 'Model.Type' in an isolated closure
138 |
139 |   /// Delete an array of models from CloudKit.
140 |   public func delete(_ models: [Model]) {
    |               `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
141 |     logHandler(#function, .debug)
142 |
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:165:7: warning: capture of non-sendable type 'Model.Type' in an isolated closure
163 |
164 |     workQueue.async {
165 |       self.performUpdate(with: self.uploadContext)
    |       `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
166 |       self.performUpdate(with: self.deleteContext)
167 |       self.fetchRemoteChanges()
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:161:15: warning: capture of non-sendable type 'Model.Type' in an isolated closure
159 |   /// 2. Deletes any models that were passed to `delete(_:)` and were unable to be deleted from CloudKit.
160 |   /// 3. Fetches any new model changes from CloudKit.
161 |   public func forceSync() {
    |               `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
162 |     logHandler(#function, .debug)
163 |
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:197:11: warning: capture of non-sendable type 'Model.Type' in an isolated closure
195 |
196 |     self.workQueue.async { [weak self] in
197 |       self?.fetchRemoteChanges()
    |           `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
198 |     }
199 |
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:196:34: warning: capture of non-sendable type 'Model.Type' in an isolated closure
194 |     logHandler("Received remote CloudKit notification for user data", .debug)
195 |
196 |     self.workQueue.async { [weak self] in
    |                                  `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
197 |       self?.fetchRemoteChanges()
198 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:207:24: warning: capture of non-sendable type 'Model.Type' in an isolated closure
205 |   private func setupCloudEnvironment() {
206 |     workQueue.async { [weak self] in
207 |       guard let self = self else { return }
    |                        `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
208 |
209 |       // Initialize CloudKit with private custom zone, but bail early if we fail
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:206:29: warning: capture of non-sendable type 'Model.Type' in an isolated closure
204 |
205 |   private func setupCloudEnvironment() {
206 |     workQueue.async { [weak self] in
    |                             `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
207 |       guard let self = self else { return }
208 |
[21/29] Compiling Cirrus SyncEngine+Zone.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+Zone.swift:85:13: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 83 |
 84 |           self.workQueue.async {
 85 |             self.createdCustomZone = false
    |             `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 86 |             self.createCustomZoneIfNeeded()
 87 |           }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+Zone.swift:71:17: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 69 |
 70 |     operation.fetchRecordZonesCompletionBlock = { [weak self] ids, error in
 71 |       guard let self = self else { return }
    |                 `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 72 |
 73 |       if let error = error {
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+Zone.swift:92:11: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 90 |         self.logHandler("Custom zone reported as existing, but it doesn't exist. Creating.", .error)
 91 |         self.workQueue.async {
 92 |           self.createdCustomZone = false
    |           `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 93 |           self.createCustomZoneIfNeeded()
 94 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+Zone.swift:71:17: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 69 |
 70 |     operation.fetchRecordZonesCompletionBlock = { [weak self] ids, error in
 71 |       guard let self = self else { return }
    |                 `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 72 |
 73 |       if let error = error {
[22/29] Compiling Cirrus RecordModifyingContext.swift
[23/29] Compiling Cirrus SyncEngine+RemoteChangeTracking.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:1:22: warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
  1 | @_implementationOnly import CKRecordCoder
    |                      `- warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
  2 | import CloudKit
  3 | import CloudKitCodable
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:42:9: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 40 |       // rest of the data.
 41 |       self.workQueue.async {
 42 |         self.logHandler("Commiting new change token and emitting changes", .debug)
    |         `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 43 |
 44 |         self.privateChangeToken = changeToken
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:34:17: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 32 |     // Called if the record zone fetch was not fully completed
 33 |     operation.recordZoneChangeTokensUpdatedBlock = { [weak self] _, changeToken, _ in
 34 |       guard let self = self else { return }
    |                 `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 35 |
 36 |       guard let changeToken = changeToken else { return }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:64:13: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 62 |
 63 |           self.workQueue.async {
 64 |             self.privateChangeToken = nil
    |             `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 65 |             self.fetchRemoteChanges()
 66 |           }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:53:17: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 51 |     // Called after the record zone fetch completes
 52 |     operation.recordZoneFetchCompletionBlock = { [weak self] _, token, _, _, error in
 53 |       guard let self = self else { return }
    |                 `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 54 |
 55 |       if let error = error as? CKError {
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:76:11: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 74 |
 75 |         self.workQueue.async {
 76 |           self.privateChangeToken = token
    |           `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 77 |         }
 78 |       }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:53:17: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 51 |     // Called after the record zone fetch completes
 52 |     operation.recordZoneFetchCompletionBlock = { [weak self] _, token, _, _, error in
 53 |       guard let self = self else { return }
    |                 `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 54 |
 55 |       if let error = error as? CKError {
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:89:42: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 87 |     operation.recordWithIDWasDeletedBlock = { [weak self] recordID, recordType in
 88 |       self?.workQueue.async {
 89 |         guard let engineRecordType = self?.recordType,
    |                                          `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 90 |           engineRecordType == recordType
 91 |         else { return }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:87:53: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 85 |     }
 86 |
 87 |     operation.recordWithIDWasDeletedBlock = { [weak self] recordID, recordType in
    |                                                     `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 88 |       self?.workQueue.async {
 89 |         guard let engineRecordType = self?.recordType,
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:110:11: warning: capture of non-sendable type 'Model.Type' in an isolated closure
108 |
109 |         self.workQueue.async {
110 |           self.emitServerChanges(with: changedRecords, deletedRecordIDs: deletedRecordIDs)
    |           `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
111 |           changedRecords = []
112 |           deletedRecordIDs = []
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:97:17: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 95 |
 96 |     operation.fetchRecordZoneChangesCompletionBlock = { [weak self] error in
 97 |       guard let self = self else { return }
    |                 `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 98 |
 99 |       if let error = error {
[24/29] Compiling Cirrus SyncEngine+AccountStatus.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+AccountStatus.swift:33:13: warning: capture of non-sendable type 'Model.Type' in an isolated closure
31 |     container.accountStatus { [weak self] status, error in
32 |       if let error = error {
33 |         self?.logHandler(
   |             `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
34 |           "Error retriving iCloud account status: \(error.localizedDescription)", .error)
35 |       }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+AccountStatus.swift:31:37: warning: capture of non-sendable type 'Model.Type' in an isolated closure
29 |   private func updateAccountStatus() {
30 |     logHandler(#function, .debug)
31 |     container.accountStatus { [weak self] status, error in
   |                                     `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
32 |       if let error = error {
33 |         self?.logHandler(
[25/29] Compiling Cirrus SyncEngine+Subscription.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+Subscription.swift:91:13: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 89 |
 90 |           self.workQueue.async {
 91 |             self.createdPrivateSubscription = false
    |             `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 92 |             self.createPrivateSubscriptionsIfNeeded()
 93 |           }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+Subscription.swift:76:17: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 74 |
 75 |     operation.fetchSubscriptionCompletionBlock = { [weak self] ids, error in
 76 |       guard let self = self else { return }
    |                 `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 77 |
 78 |       if let error = error {
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+Subscription.swift:101:11: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 99 |
100 |         self.workQueue.async {
101 |           self.createdPrivateSubscription = false
    |           `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
102 |           self.createPrivateSubscriptionsIfNeeded()
103 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+Subscription.swift:76:17: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 74 |
 75 |     operation.fetchSubscriptionCompletionBlock = { [weak self] ids, error in
 76 |       guard let self = self else { return }
    |                 `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 77 |
 78 |       if let error = error {
[26/29] Compiling Cirrus DeleteRecordContext.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/DeleteRecordContext.swift:1:22: warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
 1 | @_implementationOnly import CKRecordCoder
   |                      `- warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
 2 | import CloudKit
 3 | import CloudKitCodable
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/DeleteRecordContext.swift:46:38: warning: 'unarchiveTopLevelObjectWithData' was deprecated in macOS 10.14: Use unarchivedObject(ofClass:from:) instead [#DeprecatedDeclaration]
44 |       guard let data = defaults.data(forKey: deleteBufferKey) else { return [] }
45 |       do {
46 |         return try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? [CKRecord.ID] ?? []
   |                                      `- warning: 'unarchiveTopLevelObjectWithData' was deprecated in macOS 10.14: Use unarchivedObject(ofClass:from:) instead [#DeprecatedDeclaration]
47 |       } catch {
48 |         logHandler("Failed to decode CKRecord.IDs from defaults key deleteBufferKey", .error)
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[27/29] Compiling Cirrus SyncEngine+RecordModification.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RecordModification.swift:51:11: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 49 |
 50 |         self.workQueue.async {
 51 |           self.handleError(
    |           `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 52 |             error,
 53 |             toSave: recordsToSave,
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RecordModification.swift:45:17: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 43 |
 44 |     operation.modifyRecordsCompletionBlock = { [weak self] serverRecords, deletedRecordIDs, error in
 45 |       guard let self = self else { return }
    |                 `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 46 |
 47 |       if let error = error {
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RecordModification.swift:64:37: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 62 |
 63 |         self.workQueue.async {
 64 |           self.modelsChangedSubject.send(
    |                                     `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 65 |             context.modelChangeForUpdatedRecords(
 66 |               recordsSaved: serverRecords ?? [],
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RecordModification.swift:45:17: warning: capture of non-sendable type 'Model.Type' in an isolated closure
 43 |
 44 |     operation.modifyRecordsCompletionBlock = { [weak self] serverRecords, deletedRecordIDs, error in
 45 |       guard let self = self else { return }
    |                 `- warning: capture of non-sendable type 'Model.Type' in an isolated closure
 46 |
 47 |       if let error = error {
[28/29] Compiling Cirrus Error+CloudKit.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/Error+CloudKit.swift:1:22: warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
  1 | @_implementationOnly import CKRecordCoder
    |                      `- warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
  2 | import CloudKit
  3 | import CloudKitCodable
[29/29] Compiling Cirrus UploadRecordContext.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/UploadRecordContext.swift:1:22: warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
 1 | @_implementationOnly import CKRecordCoder
   |                      `- warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
 2 | import CloudKit
 3 | import CloudKitCodable
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/UploadRecordContext.swift:49:38: warning: 'unarchiveTopLevelObjectWithData' was deprecated in macOS 10.14: Use unarchivedObject(ofClass:from:) instead [#DeprecatedDeclaration]
47 |       guard let data = defaults.data(forKey: uploadBufferKey) else { return [:] }
48 |       do {
49 |         return try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data)
   |                                      `- warning: 'unarchiveTopLevelObjectWithData' was deprecated in macOS 10.14: Use unarchivedObject(ofClass:from:) instead [#DeprecatedDeclaration]
50 |           as? [CKRecord.ID: CKRecord] ?? [:]
51 |       } catch {
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
Build complete! (6.79s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "Cirrus",
  "name" : "Cirrus",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "10.15"
    },
    {
      "name" : "tvos",
      "version" : "13.0"
    },
    {
      "name" : "watchos",
      "version" : "6.0"
    }
  ],
  "products" : [
    {
      "name" : "Cirrus",
      "targets" : [
        "Cirrus"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "CloudKitCodable",
      "targets" : [
        "CloudKitCodable"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "CloudKitCodable",
      "module_type" : "SwiftTarget",
      "name" : "CloudKitCodable",
      "path" : "Sources/CloudKitCodable",
      "product_memberships" : [
        "Cirrus",
        "CloudKitCodable"
      ],
      "sources" : [
        "CloudKitCodable+LastModifiedDate.swift",
        "CloudKitCodable.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Cirrus",
      "module_type" : "SwiftTarget",
      "name" : "Cirrus",
      "path" : "Sources/Cirrus",
      "product_memberships" : [
        "Cirrus"
      ],
      "sources" : [
        "DeleteRecordContext.swift",
        "Error+CloudKit.swift",
        "RecordModifyingContext.swift",
        "SyncEngine+AccountStatus.swift",
        "SyncEngine+RecordModification.swift",
        "SyncEngine+RemoteChangeTracking.swift",
        "SyncEngine+Subscription.swift",
        "SyncEngine+Zone.swift",
        "SyncEngine.swift",
        "UploadRecordContext.swift"
      ],
      "target_dependencies" : [
        "CKRecordCoder",
        "CloudKitCodable"
      ],
      "type" : "library"
    },
    {
      "c99name" : "CKRecordCoderTests",
      "module_type" : "SwiftTarget",
      "name" : "CKRecordCoderTests",
      "path" : "Tests/CKRecordCoderTests",
      "sources" : [
        "CKRecordDecoderTests.swift",
        "CKRecordEncoderDecoderRoundTripTests.swift",
        "CKRecordEncoderTests.swift",
        "Mocks/Bookmark.swift",
        "Mocks/Numbers.swift",
        "Mocks/ParentChild.swift",
        "Mocks/Person.swift",
        "Mocks/URLModel.swift",
        "Mocks/UUIDModel.swift"
      ],
      "target_dependencies" : [
        "CKRecordCoder"
      ],
      "type" : "test"
    },
    {
      "c99name" : "CKRecordCoder",
      "module_type" : "SwiftTarget",
      "name" : "CKRecordCoder",
      "path" : "Sources/CKRecordCoder",
      "product_memberships" : [
        "Cirrus"
      ],
      "sources" : [
        "CKRecordDecoder.swift",
        "CKRecordEncoder.swift",
        "CKRecordEncodingError.swift",
        "CKRecordKeyedDecodingContainer.swift",
        "CKRecordKeyedEncodingContainer.swift",
        "CKRecordSingleValueDecoder.swift",
        "CKRecordSingleValueEncoder.swift",
        "CloudKitCodable+RecordType.swift",
        "CloudKitSystemFieldsKeyName.swift",
        "URLTransformer.swift"
      ],
      "target_dependencies" : [
        "CloudKitCodable"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.1"
}
Done.