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 KMPObservableViewModel, reference master (f226da), with Swift 6.1 for macOS (SPM) on 24 Apr 2025 21:39:39 UTC.

Swift 6 data race errors: 3

Build Command

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

Build Log

========================================
RunAll
========================================
Builder version: 4.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/rickclephas/KMP-ObservableViewModel.git
Reference: master
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/rickclephas/KMP-ObservableViewModel
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master
HEAD is now at f226dad Update compatibility info
Cloned https://github.com/rickclephas/KMP-ObservableViewModel.git
Revision (git rev-parse @):
f226dadd287c34456042a710cc2eda0f34c3af37
SUCCESS checkout https://github.com/rickclephas/KMP-ObservableViewModel.git at master
========================================
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": "kmp-observableviewmodel",
      "name": "KMPObservableViewModel",
      "url": "https://github.com/rickclephas/KMP-ObservableViewModel.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/KMP-ObservableViewModel",
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/rickclephas/KMP-ObservableViewModel.git
[1/3529] Fetching kmp-observableviewmodel
Fetched https://github.com/rickclephas/KMP-ObservableViewModel.git from cache (0.83s)
Creating working copy for https://github.com/rickclephas/KMP-ObservableViewModel.git
Working copy of https://github.com/rickclephas/KMP-ObservableViewModel.git resolved at master (f226dad)
warning: '.resolve-product-dependencies': dependency 'kmp-observableviewmodel' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/rickclephas/KMP-ObservableViewModel.git
https://github.com/rickclephas/KMP-ObservableViewModel.git
{
  "dependencies" : [
  ],
  "manifest_display_name" : "KMPObservableViewModel",
  "name" : "KMPObservableViewModel",
  "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" : "KMPObservableViewModelCore",
      "targets" : [
        "KMPObservableViewModelCore"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KMPObservableViewModelSwiftUI",
      "targets" : [
        "KMPObservableViewModelSwiftUI"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "targets" : [
    {
      "c99name" : "KMPObservableViewModelSwiftUI",
      "module_type" : "SwiftTarget",
      "name" : "KMPObservableViewModelSwiftUI",
      "path" : "KMPObservableViewModelSwiftUI",
      "product_memberships" : [
        "KMPObservableViewModelSwiftUI"
      ],
      "sources" : [
        "EnvironmentViewModel.swift",
        "ObservableViewModelProjection.swift",
        "ObservedViewModel.swift",
        "StateViewModel.swift"
      ],
      "target_dependencies" : [
        "KMPObservableViewModelCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KMPObservableViewModelCoreObjC",
      "module_type" : "ClangTarget",
      "name" : "KMPObservableViewModelCoreObjC",
      "path" : "KMPObservableViewModelCoreObjC",
      "product_memberships" : [
        "KMPObservableViewModelCore",
        "KMPObservableViewModelSwiftUI"
      ],
      "sources" : [
        "KMPObservableViewModelCoreObjC.m"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KMPObservableViewModelCore",
      "module_type" : "SwiftTarget",
      "name" : "KMPObservableViewModelCore",
      "path" : "KMPObservableViewModelCore",
      "product_memberships" : [
        "KMPObservableViewModelCore",
        "KMPObservableViewModelSwiftUI"
      ],
      "sources" : [
        "ChildViewModels.swift",
        "ObservableViewModel.swift",
        "ObservableViewModelPublisher.swift",
        "ObservableViewModelPublishers.swift",
        "ViewModel.swift"
      ],
      "target_dependencies" : [
        "KMPObservableViewModelCoreObjC"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.3"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.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/4] Write sources
[2/4] Compiling KMPObservableViewModelCoreObjC KMPObservableViewModelCoreObjC.m
[3/4] Write swift-version-2F0A5646E1D333AE.txt
[5/10] Compiling KMPObservableViewModelCore ViewModel.swift
[6/10] Compiling KMPObservableViewModelCore ObservableViewModelPublisher.swift
[7/10] Compiling KMPObservableViewModelCore ObservableViewModel.swift
[8/10] Compiling KMPObservableViewModelCore ChildViewModels.swift
[9/10] Emitting module KMPObservableViewModelCore
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelCore/ObservableViewModelPublishers.swift:10:13: warning: var 'observableViewModelPublishersKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 8 | import Foundation
 9 |
10 | private var observableViewModelPublishersKey: Void?
   |             |- warning: var 'observableViewModelPublishersKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: convert 'observableViewModelPublishersKey' to a 'let' constant to make 'Sendable' shared state immutable
   |             |- note: add '@MainActor' to make var 'observableViewModelPublishersKey' part of global actor 'MainActor'
   |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 |
12 | private class WeakObservableViewModelPublishers {
[10/10] Compiling KMPObservableViewModelCore ObservableViewModelPublishers.swift
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelCore/ObservableViewModelPublishers.swift:10:13: warning: var 'observableViewModelPublishersKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 8 | import Foundation
 9 |
10 | private var observableViewModelPublishersKey: Void?
   |             |- warning: var 'observableViewModelPublishersKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |             |- note: convert 'observableViewModelPublishersKey' to a 'let' constant to make 'Sendable' shared state immutable
   |             |- note: add '@MainActor' to make var 'observableViewModelPublishersKey' part of global actor 'MainActor'
   |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 |
12 | private class WeakObservableViewModelPublishers {
[11/15] Compiling KMPObservableViewModelSwiftUI ObservedViewModel.swift
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelSwiftUI/ObservedViewModel.swift:16:6: warning: call to main actor-isolated initializer 'init(wrappedValue:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
14 | public struct ObservedViewModel<VM: ViewModel>: DynamicProperty {
15 |
16 |     @ObservedObject private var observableObject: ObservableViewModel<VM>
   |      `- warning: call to main actor-isolated initializer 'init(wrappedValue:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
17 |
18 |     /// A projection of the observed `ViewModel` that creates bindings to its properties using dynamic member lookup.
SwiftUICore.ObservedObject.init:2:35: note: calls to initializer 'init(wrappedValue:)' from outside of its actor context are implicitly asynchronous
1 | generic struct ObservedObject {
2 | @MainActor @preconcurrency public init(wrappedValue: ObjectType)}
  |                                   `- note: calls to initializer 'init(wrappedValue:)' from outside of its actor context are implicitly asynchronous
3 |
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelSwiftUI/ObservedViewModel.swift:23:15: warning: main actor-isolated property 'observableObject' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
14 | public struct ObservedViewModel<VM: ViewModel>: DynamicProperty {
15 |
16 |     @ObservedObject private var observableObject: ObservableViewModel<VM>
   |                                 `- note: property declared here
17 |
18 |     /// A projection of the observed `ViewModel` that creates bindings to its properties using dynamic member lookup.
   :
21 |     /// The underlying `ViewModel` referenced by the `ObservedViewModel`.
22 |     public var wrappedValue: VM {
23 |         get { observableObject.viewModel }
   |               `- warning: main actor-isolated property 'observableObject' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
24 |         set {
25 |             let observableObject = observableViewModel(for: newValue)
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelSwiftUI/ObservedViewModel.swift:26:18: warning: main actor-isolated property 'observableObject' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
14 | public struct ObservedViewModel<VM: ViewModel>: DynamicProperty {
15 |
16 |     @ObservedObject private var observableObject: ObservableViewModel<VM>
   |                                 `- note: mutation of this property is only permitted within the actor
17 |
18 |     /// A projection of the observed `ViewModel` that creates bindings to its properties using dynamic member lookup.
   :
24 |         set {
25 |             let observableObject = observableViewModel(for: newValue)
26 |             self.observableObject = observableObject
   |                  `- warning: main actor-isolated property 'observableObject' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
27 |             self.projectedValue = ObservableViewModel.Projection(observableObject)
28 |         }
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelSwiftUI/ObservedViewModel.swift:35:14: warning: main actor-isolated property 'observableObject' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
14 | public struct ObservedViewModel<VM: ViewModel>: DynamicProperty {
15 |
16 |     @ObservedObject private var observableObject: ObservableViewModel<VM>
   |                                 `- note: mutation of this property is only permitted within the actor
17 |
18 |     /// A projection of the observed `ViewModel` that creates bindings to its properties using dynamic member lookup.
   :
33 |     public init(wrappedValue: VM) {
34 |         let observableObject = observableViewModel(for: wrappedValue)
35 |         self.observableObject = observableObject
   |              `- warning: main actor-isolated property 'observableObject' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
36 |         self.projectedValue = ObservableViewModel.Projection(observableObject)
37 |     }
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelSwiftUI/ObservedViewModel.swift:16:6: warning: sending '$input_value' risks causing data races; this is an error in the Swift 6 language mode
14 | public struct ObservedViewModel<VM: ViewModel>: DynamicProperty {
15 |
16 |     @ObservedObject private var observableObject: ObservableViewModel<VM>
   |      |- warning: sending '$input_value' risks causing data races; this is an error in the Swift 6 language mode
   |      `- note: sending task-isolated '$input_value' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
17 |
18 |     /// A projection of the observed `ViewModel` that creates bindings to its properties using dynamic member lookup.
[12/15] Compiling KMPObservableViewModelSwiftUI StateViewModel.swift
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelSwiftUI/StateViewModel.swift:20:35: warning: main actor-isolated property 'observableObject' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
15 | public struct StateViewModel<VM: ViewModel>: DynamicProperty {
16 |
17 |     @StateObject private var observableObject: ObservableViewModel<VM>
   |                              `- note: property declared here
18 |
19 |     /// The underlying `ViewModel` referenced by the `StateViewModel`.
20 |     public var wrappedValue: VM { observableObject.viewModel }
   |                                   `- warning: main actor-isolated property 'observableObject' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
21 |
22 |     /// A projection of the observed `ViewModel` that creates bindings to its properties using dynamic member lookup.
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelSwiftUI/StateViewModel.swift:24:40: warning: main actor-isolated property 'observableObject' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
15 | public struct StateViewModel<VM: ViewModel>: DynamicProperty {
16 |
17 |     @StateObject private var observableObject: ObservableViewModel<VM>
   |                              `- note: property declared here
18 |
19 |     /// The underlying `ViewModel` referenced by the `StateViewModel`.
   :
22 |     /// A projection of the observed `ViewModel` that creates bindings to its properties using dynamic member lookup.
23 |     public var projectedValue: ObservableViewModel<VM>.Projection {
24 |         ObservableViewModel.Projection(observableObject)
   |                                        `- warning: main actor-isolated property 'observableObject' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
25 |     }
26 |
[13/15] Compiling KMPObservableViewModelSwiftUI ObservableViewModelProjection.swift
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelSwiftUI/ObservableViewModelProjection.swift:25:17: warning: capture of 'self' with non-sendable type 'ObservableViewModel<VM>.Projection' in a '@Sendable' closure
13 |     /// A projection of a `ViewModel` that creates bindings to its properties using dynamic member lookup.
14 |     @dynamicMemberLookup
15 |     struct Projection {
   |            `- note: consider making struct 'Projection' conform to the 'Sendable' protocol
16 |
17 |         internal let observableObject: ObservableViewModel<VM>
   :
23 |         public subscript<T>(dynamicMember keyPath: WritableKeyPath<VM, T>) -> Binding<T> {
24 |             Binding {
25 |                 observableObject.viewModel[keyPath: keyPath]
   |                 `- warning: capture of 'self' with non-sendable type 'ObservableViewModel<VM>.Projection' in a '@Sendable' closure
26 |             } set: { value in
27 |                 var viewModel = observableObject.viewModel
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelSwiftUI/ObservableViewModelProjection.swift:25:53: warning: capture of 'keyPath' with non-sendable type 'WritableKeyPath<VM, T>' in a '@Sendable' closure
23 |         public subscript<T>(dynamicMember keyPath: WritableKeyPath<VM, T>) -> Binding<T> {
24 |             Binding {
25 |                 observableObject.viewModel[keyPath: keyPath]
   |                                                     `- warning: capture of 'keyPath' with non-sendable type 'WritableKeyPath<VM, T>' in a '@Sendable' closure
26 |             } set: { value in
27 |                 var viewModel = observableObject.viewModel
Swift.WritableKeyPath:1:14: note: generic class 'WritableKeyPath' does not conform to the 'Sendable' protocol
1 | public class WritableKeyPath<Root, Value> : KeyPath<Root, Value> {
  |              `- note: generic class 'WritableKeyPath' does not conform to the 'Sendable' protocol
2 |     @objc deinit
3 | }
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelSwiftUI/ObservableViewModelProjection.swift:27:33: warning: capture of 'self' with non-sendable type 'ObservableViewModel<VM>.Projection' in a '@Sendable' closure
13 |     /// A projection of a `ViewModel` that creates bindings to its properties using dynamic member lookup.
14 |     @dynamicMemberLookup
15 |     struct Projection {
   |            `- note: consider making struct 'Projection' conform to the 'Sendable' protocol
16 |
17 |         internal let observableObject: ObservableViewModel<VM>
   :
25 |                 observableObject.viewModel[keyPath: keyPath]
26 |             } set: { value in
27 |                 var viewModel = observableObject.viewModel
   |                                 `- warning: capture of 'self' with non-sendable type 'ObservableViewModel<VM>.Projection' in a '@Sendable' closure
28 |                 viewModel[keyPath: keyPath] = value
29 |             }
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelSwiftUI/ObservableViewModelProjection.swift:28:36: warning: capture of 'keyPath' with non-sendable type 'WritableKeyPath<VM, T>' in a '@Sendable' closure
26 |             } set: { value in
27 |                 var viewModel = observableObject.viewModel
28 |                 viewModel[keyPath: keyPath] = value
   |                                    `- warning: capture of 'keyPath' with non-sendable type 'WritableKeyPath<VM, T>' in a '@Sendable' closure
29 |             }
30 |         }
Swift.WritableKeyPath:1:14: note: generic class 'WritableKeyPath' does not conform to the 'Sendable' protocol
1 | public class WritableKeyPath<Root, Value> : KeyPath<Root, Value> {
  |              `- note: generic class 'WritableKeyPath' does not conform to the 'Sendable' protocol
2 |     @objc deinit
3 | }
[14/15] Emitting module KMPObservableViewModelSwiftUI
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelSwiftUI/ObservedViewModel.swift:16:6: warning: call to main actor-isolated initializer 'init(wrappedValue:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
14 | public struct ObservedViewModel<VM: ViewModel>: DynamicProperty {
15 |
16 |     @ObservedObject private var observableObject: ObservableViewModel<VM>
   |      `- warning: call to main actor-isolated initializer 'init(wrappedValue:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
17 |
18 |     /// A projection of the observed `ViewModel` that creates bindings to its properties using dynamic member lookup.
SwiftUICore.ObservedObject.init:2:35: note: calls to initializer 'init(wrappedValue:)' from outside of its actor context are implicitly asynchronous
1 | generic struct ObservedObject {
2 | @MainActor @preconcurrency public init(wrappedValue: ObjectType)}
  |                                   `- note: calls to initializer 'init(wrappedValue:)' from outside of its actor context are implicitly asynchronous
3 |
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelSwiftUI/ObservedViewModel.swift:16:6: warning: sending '$input_value' risks causing data races; this is an error in the Swift 6 language mode
14 | public struct ObservedViewModel<VM: ViewModel>: DynamicProperty {
15 |
16 |     @ObservedObject private var observableObject: ObservableViewModel<VM>
   |      |- warning: sending '$input_value' risks causing data races; this is an error in the Swift 6 language mode
   |      `- note: sending task-isolated '$input_value' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
17 |
18 |     /// A projection of the observed `ViewModel` that creates bindings to its properties using dynamic member lookup.
[15/15] Compiling KMPObservableViewModelSwiftUI EnvironmentViewModel.swift
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelSwiftUI/EnvironmentViewModel.swift:19:35: warning: main actor-isolated property 'observableObject' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
14 | public struct EnvironmentViewModel<VM: ViewModel>: DynamicProperty {
15 |
16 |     @EnvironmentObject private var observableObject: ObservableViewModel<VM>
   |                                    `- note: property declared here
17 |
18 |     /// The underlying `ViewModel` referenced by the `EnvironmentViewModel`.
19 |     public var wrappedValue: VM { observableObject.viewModel }
   |                                   `- warning: main actor-isolated property 'observableObject' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
20 |
21 |     /// A projection of the observed `ViewModel` that creates bindings to its properties using dynamic member lookup.
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelSwiftUI/EnvironmentViewModel.swift:23:40: warning: main actor-isolated property 'observableObject' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
14 | public struct EnvironmentViewModel<VM: ViewModel>: DynamicProperty {
15 |
16 |     @EnvironmentObject private var observableObject: ObservableViewModel<VM>
   |                                    `- note: property declared here
17 |
18 |     /// The underlying `ViewModel` referenced by the `EnvironmentViewModel`.
   :
21 |     /// A projection of the observed `ViewModel` that creates bindings to its properties using dynamic member lookup.
22 |     public var projectedValue: ObservableViewModel<VM>.Projection {
23 |         ObservableViewModel.Projection(observableObject)
   |                                        `- warning: main actor-isolated property 'observableObject' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
24 |     }
25 |
/Users/admin/builder/spi-builder-workspace/KMPObservableViewModelSwiftUI/EnvironmentViewModel.swift:27:21: error: return from initializer without initializing all stored properties
25 |
26 |     /// Creates an `EnvironmentViewModel`.
27 |     public init() { }
   |                     |- error: return from initializer without initializing all stored properties
   |                     `- note: main actor-isolated default value of 'self.observableObject' cannot be used in a nonisolated initalizer
28 | }
29 |
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64
[0/1] Planning build
Building for debugging...
[0/1] Write swift-version-2F0A5646E1D333AE.txt
[2/7] Compiling KMPObservableViewModelCore ViewModel.swift
[3/7] Compiling KMPObservableViewModelCore ObservableViewModelPublishers.swift
[4/7] Compiling KMPObservableViewModelCore ObservableViewModel.swift
[5/7] Compiling KMPObservableViewModelCore ObservableViewModelPublisher.swift
[6/7] Emitting module KMPObservableViewModelCore
[7/7] Compiling KMPObservableViewModelCore ChildViewModels.swift
[8/12] Compiling KMPObservableViewModelSwiftUI ObservableViewModelProjection.swift
[9/12] Compiling KMPObservableViewModelSwiftUI ObservedViewModel.swift
[10/12] Compiling KMPObservableViewModelSwiftUI EnvironmentViewModel.swift
[11/12] Emitting module KMPObservableViewModelSwiftUI
[12/12] Compiling KMPObservableViewModelSwiftUI StateViewModel.swift
Build complete! (1.07s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "KMPObservableViewModel",
  "name" : "KMPObservableViewModel",
  "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" : "KMPObservableViewModelCore",
      "targets" : [
        "KMPObservableViewModelCore"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KMPObservableViewModelSwiftUI",
      "targets" : [
        "KMPObservableViewModelSwiftUI"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "targets" : [
    {
      "c99name" : "KMPObservableViewModelSwiftUI",
      "module_type" : "SwiftTarget",
      "name" : "KMPObservableViewModelSwiftUI",
      "path" : "KMPObservableViewModelSwiftUI",
      "product_memberships" : [
        "KMPObservableViewModelSwiftUI"
      ],
      "sources" : [
        "EnvironmentViewModel.swift",
        "ObservableViewModelProjection.swift",
        "ObservedViewModel.swift",
        "StateViewModel.swift"
      ],
      "target_dependencies" : [
        "KMPObservableViewModelCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KMPObservableViewModelCoreObjC",
      "module_type" : "ClangTarget",
      "name" : "KMPObservableViewModelCoreObjC",
      "path" : "KMPObservableViewModelCoreObjC",
      "product_memberships" : [
        "KMPObservableViewModelCore",
        "KMPObservableViewModelSwiftUI"
      ],
      "sources" : [
        "KMPObservableViewModelCoreObjC.m"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KMPObservableViewModelCore",
      "module_type" : "SwiftTarget",
      "name" : "KMPObservableViewModelCore",
      "path" : "KMPObservableViewModelCore",
      "product_memberships" : [
        "KMPObservableViewModelCore",
        "KMPObservableViewModelSwiftUI"
      ],
      "sources" : [
        "ChildViewModels.swift",
        "ObservableViewModel.swift",
        "ObservableViewModelPublisher.swift",
        "ObservableViewModelPublishers.swift",
        "ViewModel.swift"
      ],
      "target_dependencies" : [
        "KMPObservableViewModelCoreObjC"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.3"
}
Done.