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 CoreBluetoothEmulator, reference main (579963), with Swift 6.2 for macOS (SPM) on 22 Nov 2025 06:53:40 UTC.

Swift 6 data race errors: 0

Build Command

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

Build Log

========================================
RunAll
========================================
Builder version: 4.68.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/1amageek/CoreBluetoothEmulator.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/1amageek/CoreBluetoothEmulator
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 579963e Implement multi-process support and update documentation
Cloned https://github.com/1amageek/CoreBluetoothEmulator.git
Revision (git rev-parse @):
579963e0ceffdf8a452c7e4fdb033fece3324c92
SUCCESS checkout https://github.com/1amageek/CoreBluetoothEmulator.git at main
========================================
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": "corebluetoothemulator",
      "name": "CoreBluetoothEmulator",
      "url": "https://github.com/1amageek/CoreBluetoothEmulator.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/CoreBluetoothEmulator",
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/1amageek/CoreBluetoothEmulator.git
[1/94] Fetching corebluetoothemulator
Fetched https://github.com/1amageek/CoreBluetoothEmulator.git from cache (0.78s)
Creating working copy for https://github.com/1amageek/CoreBluetoothEmulator.git
Working copy of https://github.com/1amageek/CoreBluetoothEmulator.git resolved at main (579963e)
warning: '.resolve-product-dependencies': dependency 'corebluetoothemulator' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.2
Building package at path:  $PWD
https://github.com/1amageek/CoreBluetoothEmulator.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-26.0.0.app xcrun swift build --arch arm64
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-49B95AFC49DCD68C.txt
[3/18] Compiling CoreBluetoothEmulator InMemoryEmulatorTransport.swift
[4/19] Compiling CoreBluetoothEmulator EmulatedCBCharacteristic.swift
[5/19] Compiling CoreBluetoothEmulator EmulatedCBDescriptor.swift
[6/19] Compiling CoreBluetoothEmulator EmulatedCBL2CAPChannel.swift
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/Internal/EmulatedCBL2CAPChannel.swift:41:16: warning: immutable value 'inputPipe' was never used; consider replacing with '_' or removing it [#no-usage]
 39 |
 40 |         // Create streams from pipes
 41 |         if let inputPipe = inputPipe, let outputPipe = outputPipe {
    |                `- warning: immutable value 'inputPipe' was never used; consider replacing with '_' or removing it [#no-usage]
 42 |             // Use CFStream for proper stream creation
 43 |             var readStream: Unmanaged<CFReadStream>?
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/Internal/EmulatedCBL2CAPChannel.swift:41:43: warning: immutable value 'outputPipe' was never used; consider replacing with '_' or removing it [#no-usage]
 39 |
 40 |         // Create streams from pipes
 41 |         if let inputPipe = inputPipe, let outputPipe = outputPipe {
    |                                           `- warning: immutable value 'outputPipe' was never used; consider replacing with '_' or removing it [#no-usage]
 42 |             // Use CFStream for proper stream creation
 43 |             var readStream: Unmanaged<CFReadStream>?
[7/19] Compiling CoreBluetoothEmulator EmulatedCBPeripheral.swift
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/Internal/EmulatedCBL2CAPChannel.swift:41:16: warning: immutable value 'inputPipe' was never used; consider replacing with '_' or removing it [#no-usage]
 39 |
 40 |         // Create streams from pipes
 41 |         if let inputPipe = inputPipe, let outputPipe = outputPipe {
    |                `- warning: immutable value 'inputPipe' was never used; consider replacing with '_' or removing it [#no-usage]
 42 |             // Use CFStream for proper stream creation
 43 |             var readStream: Unmanaged<CFReadStream>?
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/Internal/EmulatedCBL2CAPChannel.swift:41:43: warning: immutable value 'outputPipe' was never used; consider replacing with '_' or removing it [#no-usage]
 39 |
 40 |         // Create streams from pipes
 41 |         if let inputPipe = inputPipe, let outputPipe = outputPipe {
    |                                           `- warning: immutable value 'outputPipe' was never used; consider replacing with '_' or removing it [#no-usage]
 42 |             // Use CFStream for proper stream creation
 43 |             var readStream: Unmanaged<CFReadStream>?
[8/19] Compiling CoreBluetoothEmulator EmulatedCBService.swift
[9/19] Compiling CoreBluetoothEmulator EmulatorInternalEvent.swift
[10/19] Compiling CoreBluetoothEmulator EmulatorTransport.swift
[11/19] Compiling CoreBluetoothEmulator EmulatedCBCentral.swift
[12/19] Compiling CoreBluetoothEmulator EmulatedCBCentralManager.swift
[13/19] Compiling CoreBluetoothEmulator EmulatorBus.swift
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:39:49: warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
  37 |     private var publishedL2CAPChannels: [UUID: [CBL2CAPPSM: Bool]] = [:]  // peripheral -> PSM -> encryption required
  38 |     private var openL2CAPChannels: [UUID: EmulatedCBL2CAPChannel] = [:]  // channel identifier -> channel
  39 |     private var ancsAuthorizationStatus: [UUID: CBPeripheralManagerAuthorizationStatus] = [:]  // central -> status
     |                                                 `- warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
  40 |
  41 |     private struct ConnectionPair: Hashable {
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:1136:17: warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
1134 |     public func updateANCSAuthorization(
1135 |         for centralIdentifier: UUID,
1136 |         status: CBPeripheralManagerAuthorizationStatus
     |                 `- warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
1137 |     ) async {
1138 |         guard configuration.fireANCSAuthorizationUpdates else { return }
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:1150:70: warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
1148 |     }
1149 |
1150 |     public func getANCSAuthorization(for centralIdentifier: UUID) -> CBPeripheralManagerAuthorizationStatus {
     |                                                                      `- warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
1151 |         return ancsAuthorizationStatus[centralIdentifier] ?? .notDetermined
1152 |     }
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:246:34: warning: no 'async' operations occur within 'await' expression
 244 |
 245 |                 // Create peripheral proxy with advertisement data
 246 |                 let peripheral = await peripheralManager.createPeripheralProxy(for: central, advertisementData: advData)
     |                                  `- warning: no 'async' operations occur within 'await' expression
 247 |
 248 |                 // Generate RSSI
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:413:16: warning: no 'async' operations occur within 'await' expression
 411 |         }
 412 |
 413 |         return await manager.getServices(matching: serviceUUIDs)
     |                `- warning: no 'async' operations occur within 'await' expression
 414 |     }
 415 |
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:432:16: warning: no 'async' operations occur within 'await' expression
 430 |         }
 431 |
 432 |         return await manager.getCharacteristics(matching: characteristicUUIDs, for: service)
     |                `- warning: no 'async' operations occur within 'await' expression
 433 |     }
 434 |
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:450:16: warning: no 'async' operations occur within 'await' expression
 448 |         }
 449 |
 450 |         return await manager.getDescriptors(for: characteristic)
     |                `- warning: no 'async' operations occur within 'await' expression
 451 |     }
 452 |
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:728:17: warning: immutable value 'centralId' was never used; consider replacing with '_' or removing it [#no-usage]
 726 |         // Send notification event in distributed mode
 727 |         if case .distributed = transportMode {
 728 |             for centralId in targetCentrals {
     |                 `- warning: immutable value 'centralId' was never used; consider replacing with '_' or removing it [#no-usage]
 729 |                 let event = EmulatorInternalEvent.notificationSent(
 730 |                     peripheralID: peripheralIdentifier,
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:1044:16: warning: no 'async' operations occur within 'await' expression
1042 |
1043 |         // Create peripheral proxy with stored advertisement data
1044 |         return await peripheralManager.createPeripheralProxy(
     |                `- warning: no 'async' operations occur within 'await' expression
1045 |             for: centralReg.manager!,
1046 |             advertisementData: peripheralReg.advertisementData
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[14/19] Compiling CoreBluetoothEmulator EmulatorConfiguration.swift
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:39:49: warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
  37 |     private var publishedL2CAPChannels: [UUID: [CBL2CAPPSM: Bool]] = [:]  // peripheral -> PSM -> encryption required
  38 |     private var openL2CAPChannels: [UUID: EmulatedCBL2CAPChannel] = [:]  // channel identifier -> channel
  39 |     private var ancsAuthorizationStatus: [UUID: CBPeripheralManagerAuthorizationStatus] = [:]  // central -> status
     |                                                 `- warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
  40 |
  41 |     private struct ConnectionPair: Hashable {
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:1136:17: warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
1134 |     public func updateANCSAuthorization(
1135 |         for centralIdentifier: UUID,
1136 |         status: CBPeripheralManagerAuthorizationStatus
     |                 `- warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
1137 |     ) async {
1138 |         guard configuration.fireANCSAuthorizationUpdates else { return }
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:1150:70: warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
1148 |     }
1149 |
1150 |     public func getANCSAuthorization(for centralIdentifier: UUID) -> CBPeripheralManagerAuthorizationStatus {
     |                                                                      `- warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
1151 |         return ancsAuthorizationStatus[centralIdentifier] ?? .notDetermined
1152 |     }
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:246:34: warning: no 'async' operations occur within 'await' expression
 244 |
 245 |                 // Create peripheral proxy with advertisement data
 246 |                 let peripheral = await peripheralManager.createPeripheralProxy(for: central, advertisementData: advData)
     |                                  `- warning: no 'async' operations occur within 'await' expression
 247 |
 248 |                 // Generate RSSI
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:413:16: warning: no 'async' operations occur within 'await' expression
 411 |         }
 412 |
 413 |         return await manager.getServices(matching: serviceUUIDs)
     |                `- warning: no 'async' operations occur within 'await' expression
 414 |     }
 415 |
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:432:16: warning: no 'async' operations occur within 'await' expression
 430 |         }
 431 |
 432 |         return await manager.getCharacteristics(matching: characteristicUUIDs, for: service)
     |                `- warning: no 'async' operations occur within 'await' expression
 433 |     }
 434 |
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:450:16: warning: no 'async' operations occur within 'await' expression
 448 |         }
 449 |
 450 |         return await manager.getDescriptors(for: characteristic)
     |                `- warning: no 'async' operations occur within 'await' expression
 451 |     }
 452 |
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:728:17: warning: immutable value 'centralId' was never used; consider replacing with '_' or removing it [#no-usage]
 726 |         // Send notification event in distributed mode
 727 |         if case .distributed = transportMode {
 728 |             for centralId in targetCentrals {
     |                 `- warning: immutable value 'centralId' was never used; consider replacing with '_' or removing it [#no-usage]
 729 |                 let event = EmulatorInternalEvent.notificationSent(
 730 |                     peripheralID: peripheralIdentifier,
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:1044:16: warning: no 'async' operations occur within 'await' expression
1042 |
1043 |         // Create peripheral proxy with stored advertisement data
1044 |         return await peripheralManager.createPeripheralProxy(
     |                `- warning: no 'async' operations occur within 'await' expression
1045 |             for: centralReg.manager!,
1046 |             advertisementData: peripheralReg.advertisementData
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[15/19] Compiling CoreBluetoothEmulator CoreBluetoothEmulator.swift
[16/19] Compiling CoreBluetoothEmulator EmulatedDelegates.swift
[17/19] Emitting module CoreBluetoothEmulator
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:39:49: warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
  37 |     private var publishedL2CAPChannels: [UUID: [CBL2CAPPSM: Bool]] = [:]  // peripheral -> PSM -> encryption required
  38 |     private var openL2CAPChannels: [UUID: EmulatedCBL2CAPChannel] = [:]  // channel identifier -> channel
  39 |     private var ancsAuthorizationStatus: [UUID: CBPeripheralManagerAuthorizationStatus] = [:]  // central -> status
     |                                                 `- warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
  40 |
  41 |     private struct ConnectionPair: Hashable {
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:1136:17: warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
1134 |     public func updateANCSAuthorization(
1135 |         for centralIdentifier: UUID,
1136 |         status: CBPeripheralManagerAuthorizationStatus
     |                 `- warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
1137 |     ) async {
1138 |         guard configuration.fireANCSAuthorizationUpdates else { return }
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/EmulatorBus.swift:1150:70: warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
1148 |     }
1149 |
1150 |     public func getANCSAuthorization(for centralIdentifier: UUID) -> CBPeripheralManagerAuthorizationStatus {
     |                                                                      `- warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
1151 |         return ancsAuthorizationStatus[centralIdentifier] ?? .notDetermined
1152 |     }
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/Internal/EmulatedCBPeripheralManager.swift:312:48: warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
310 |     // MARK: - Authorization
311 |
312 |     public class func authorizationStatus() -> CBPeripheralManagerAuthorizationStatus {
    |                                                `- warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
313 |         return .authorized
314 |     }
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[18/19] Compiling CoreBluetoothEmulator EmulatedCBPeripheralManager.swift
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/Internal/EmulatedCBPeripheralManager.swift:312:48: warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
310 |     // MARK: - Authorization
311 |
312 |     public class func authorizationStatus() -> CBPeripheralManagerAuthorizationStatus {
    |                                                `- warning: 'CBPeripheralManagerAuthorizationStatus' was deprecated in macOS 10.15: Use CBManagerAuthorization instead [#DeprecatedDeclaration]
313 |         return .authorized
314 |     }
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/Internal/EmulatedCBPeripheralManager.swift:303:13: warning: initialization of immutable value 'centralProxy' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
301 |     @available(iOS 11.0, macOS 10.13, tvOS 11.0, watchOS 4.0, *)
302 |     internal func notifyL2CAPChannelOpened(_ channel: EmulatedCBL2CAPChannel) async {
303 |         let centralProxy = EmulatedCBCentral(identifier: channel.peer.identifier)
    |             `- warning: initialization of immutable value 'centralProxy' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
304 |
305 |         notifyDelegate { delegate in
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/Internal/EmulatedCBPeripheralManager.swift:318:13: warning: initialization of immutable value 'status' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
316 |     @available(iOS 13.1, *)
317 |     internal func notifyANCSAuthorizationUpdate(for centralIdentifier: UUID) async {
318 |         let status = await EmulatorBus.shared.getANCSAuthorization(for: centralIdentifier)
    |             `- warning: initialization of immutable value 'status' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
319 |         let centralProxy = EmulatedCBCentral(identifier: centralIdentifier)
320 |
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[19/19] Compiling CoreBluetoothEmulator XPCEmulatorTransport.swift
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/Transport/XPCEmulatorTransport.swift:106:27: warning: instance will be immediately deallocated because property 'delegate' is 'weak'
104 |         // Create XPC listener for incoming connections
105 |         let listener = NSXPCListener(machServiceName: serviceName)
106 |         listener.delegate = XPCListenerDelegate(transport: self)
    |                           |- warning: instance will be immediately deallocated because property 'delegate' is 'weak'
    |                           `- note: a strong reference is required to prevent the instance from being deallocated
107 |         listener.resume()
108 |     }
/Applications/Xcode-26.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSXPCConnection.h:137:55: note: 'delegate' declared here
135 |
136 | // The delegate for the connection listener. If no delegate is set, all new connections will be rejected. See the protocol for more information on how to implement it.
137 | @property (nullable, weak) id <NSXPCListenerDelegate> delegate;
    |                                                       `- note: 'delegate' declared here
138 |
139 | // Get an endpoint object which may be sent over an existing connection. This allows the receiver of the endpoint to create a new connection to this NSXPCListener. The NSXPCListenerEndpoint uniquely names this listener object across connections.
/Users/admin/builder/spi-builder-workspace/Sources/CoreBluetoothEmulator/Transport/XPCEmulatorTransport.swift:106:27: warning: weak reference will always be nil because the referenced object is deallocated here
104 |         // Create XPC listener for incoming connections
105 |         let listener = NSXPCListener(machServiceName: serviceName)
106 |         listener.delegate = XPCListenerDelegate(transport: self)
    |                           `- warning: weak reference will always be nil because the referenced object is deallocated here
107 |         listener.resume()
108 |     }
Build complete! (5.61s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "CoreBluetoothEmulator",
  "name" : "CoreBluetoothEmulator",
  "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" : "CoreBluetoothEmulator",
      "targets" : [
        "CoreBluetoothEmulator"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "CoreBluetoothEmulatorTests",
      "module_type" : "SwiftTarget",
      "name" : "CoreBluetoothEmulatorTests",
      "path" : "Tests/CoreBluetoothEmulatorTests",
      "sources" : [
        "CoreBluetoothEmulatorTests.swift",
        "Integration/ANCSAuthorizationTests.swift",
        "Integration/AdvertisementAutoGenerationTests.swift",
        "Integration/BackpressureTests.swift",
        "Integration/BidirectionalEventsTests.swift",
        "Integration/ConnectionEventsTests.swift",
        "Integration/FullWorkflowTests.swift",
        "Integration/L2CAPChannelTests.swift",
        "Integration/MTUManagementTests.swift",
        "Integration/ScanOptionsTests.swift",
        "Integration/StateRestorationTests.swift"
      ],
      "target_dependencies" : [
        "CoreBluetoothEmulator"
      ],
      "type" : "test"
    },
    {
      "c99name" : "CoreBluetoothEmulator",
      "module_type" : "SwiftTarget",
      "name" : "CoreBluetoothEmulator",
      "path" : "Sources/CoreBluetoothEmulator",
      "product_memberships" : [
        "CoreBluetoothEmulator"
      ],
      "sources" : [
        "CoreBluetoothEmulator.swift",
        "EmulatedDelegates.swift",
        "EmulatorBus.swift",
        "EmulatorConfiguration.swift",
        "EmulatorInternalEvent.swift",
        "EmulatorTransport.swift",
        "Internal/EmulatedCBCentral.swift",
        "Internal/EmulatedCBCentralManager.swift",
        "Internal/EmulatedCBCharacteristic.swift",
        "Internal/EmulatedCBDescriptor.swift",
        "Internal/EmulatedCBL2CAPChannel.swift",
        "Internal/EmulatedCBPeripheral.swift",
        "Internal/EmulatedCBPeripheralManager.swift",
        "Internal/EmulatedCBService.swift",
        "Transport/InMemoryEmulatorTransport.swift",
        "Transport/XPCEmulatorTransport.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "6.0"
}
Done.