The Swift Package Index logo.Swift Package Index

Build Information

Successful build of Cirrus, reference main (9f6138), with Swift 6.2 for macOS (SPM) on 19 Jun 2025 18:52:05 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: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/jayhickey/cirrus
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 9f6138c format fix
Cloned https://github.com/jayhickey/cirrus.git
Revision (git rev-parse @):
9f6138ca74e5cbcae9b20996ea9f003f701416fc
SUCCESS checkout https://github.com/jayhickey/cirrus.git at main
========================================
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] Compiling CloudKitCodable CloudKitCodable+LastModifiedDate.swift
[7/7] Emitting module CloudKitCodable
[8/17] Compiling CKRecordCoder CKRecordKeyedEncodingContainer.swift
[9/18] Compiling CKRecordCoder CKRecordSingleValueEncoder.swift
[10/18] Compiling CKRecordCoder CloudKitSystemFieldsKeyName.swift
[11/18] Compiling CKRecordCoder CloudKitCodable+RecordType.swift
[12/18] Compiling CKRecordCoder CKRecordSingleValueDecoder.swift
[13/18] Compiling CKRecordCoder CKRecordEncodingError.swift
[14/18] Compiling CKRecordCoder CKRecordEncoder.swift
[15/18] Compiling CKRecordCoder CKRecordDecoder.swift
[16/18] Compiling CKRecordCoder CKRecordKeyedDecodingContainer.swift
[17/18] Emitting module CKRecordCoder
[18/18] Compiling CKRecordCoder URLTransformer.swift
[19/28] 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 {
[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+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 {
[22/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(
[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 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
[25/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>
[26/29] Compiling Cirrus RecordModifyingContext.swift
[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] 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
[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! (5.99s)
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.