Build Information
Successful build of MockDuck with Swift 6.0 for macOS (SPM).
Swift 6 data race errors: 14
Build Command
env DEVELOPER_DIR=/Applications/Xcode-15.3.0.app xcrun --toolchain org.swift.600202405261a swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Build Log
========================================
RunAll
========================================
Builder version: 4.40.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/buzzfeed/MockDuck.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/buzzfeed/MockDuck
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 4729d15 Merge pull request #32 from buzzfeed/feature/update-installation-readme
Cloned https://github.com/buzzfeed/MockDuck.git
Revision (git rev-parse @):
4729d150c199f6920219c1ea969d54dcd0efe943
SUCCESS checkout https://github.com/buzzfeed/MockDuck.git at main
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.0
Building package at path: $workDir
https://github.com/buzzfeed/MockDuck.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-15.3.0.app xcrun --toolchain org.swift.600202405261a swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-6F35C1178C84523A.txt
[3/13] Compiling MockDuck MockSession.swift
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockSession.swift:13:13: warning: class 'MockSession' must restate inherited '@unchecked Sendable' conformance
11 | /// MockSession is a basic subclass of URLSession, created so that we can hook into the creation of
12 | /// NSURLSession tasks and provide our own tasks that can load cached requests from disk.
13 | final class MockSession: URLSession {
| `- warning: class 'MockSession' must restate inherited '@unchecked Sendable' conformance
14 | private let queue = DispatchQueue(label: "com.buzzfeed.MockDuck.MockSessionQueue", attributes: [])
15 |
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockSession.swift:23:17: warning: capture of 'completionHandler' with non-sendable type '(Data?, URLResponse?, (any Error)?) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
21 | let task = MockDataTask(request: request) { (sequence, error) in
22 | self.queue.async {
23 | completionHandler(sequence?.responseData, sequence?.response, error)
| |- warning: capture of 'completionHandler' with non-sendable type '(Data?, URLResponse?, (any Error)?) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
24 | }
25 | }
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockSession.swift:23:35: warning: capture of 'sequence' with non-sendable type 'MockRequestResponse?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
21 | let task = MockDataTask(request: request) { (sequence, error) in
22 | self.queue.async {
23 | completionHandler(sequence?.responseData, sequence?.response, error)
| `- warning: capture of 'sequence' with non-sendable type 'MockRequestResponse?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
24 | }
25 | }
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockRequestResponse.swift:12:13: note: class 'MockRequestResponse' does not conform to the 'Sendable' protocol
10 |
11 | /// A basic container for holding a request, a response, and any associated data.
12 | final class MockRequestResponse: Codable {
| `- note: class 'MockRequestResponse' does not conform to the 'Sendable' protocol
13 |
14 | enum MockFileTarget {
[4/14] Compiling MockDuck MockResponse.swift
[5/14] Compiling MockDuck RequestResponseCommonProtocol.swift
[6/14] Compiling MockDuck MockURLProtocol.swift
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockURLProtocol.swift:13:7: warning: non-final class 'MockURLProtocol' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
11 | /// This is the URLProtocol subclass that intercepts all network requests and uses `MockSession` to
12 | /// stub out the responses. One of these is instantiated per request.
13 | class MockURLProtocol: URLProtocol, URLSessionDelegate, URLSessionDataDelegate {
| `- warning: non-final class 'MockURLProtocol' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
14 | private struct Constants {
15 | static let ProtocolHandled = "com.buzzfeed.MockDuck.URLProtocolHandled"
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockURLProtocol.swift:13:7: warning: 'Sendable' class 'MockURLProtocol' cannot inherit from another class other than 'NSObject'; this is an error in the Swift 6 language mode
11 | /// This is the URLProtocol subclass that intercepts all network requests and uses `MockSession` to
12 | /// stub out the responses. One of these is instantiated per request.
13 | class MockURLProtocol: URLProtocol, URLSessionDelegate, URLSessionDataDelegate {
| `- warning: 'Sendable' class 'MockURLProtocol' cannot inherit from another class other than 'NSObject'; this is an error in the Swift 6 language mode
14 | private struct Constants {
15 | static let ProtocolHandled = "com.buzzfeed.MockDuck.URLProtocolHandled"
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockURLProtocol.swift:18:9: warning: stored property 'sessionTask' of 'Sendable'-conforming class 'MockURLProtocol' is mutable; this is an error in the Swift 6 language mode
16 | }
17 |
18 | var sessionTask: URLSessionTask?
| `- warning: stored property 'sessionTask' of 'Sendable'-conforming class 'MockURLProtocol' is mutable; this is an error in the Swift 6 language mode
19 |
20 | override init(request: URLRequest, cachedResponse: CachedURLResponse?, client: URLProtocolClient?) {
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:52:23: warning: static property 'enabled' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
50 | /// `loadingURL`, `recordingURL`, or by registering a request mock. This is here, however, to allow
51 | /// developers to quickly disable MockDuck by setting this to `false`.
52 | public static var enabled = true {
| |- warning: static property 'enabled' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enabled' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'enabled' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
53 | willSet {
54 | checkConfigureMockDuck()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:149:38: warning: static property 'mockSession' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
147 |
148 | // This is the URLSession subclass that we use to handle all mocked network requests.
149 | internal private(set) static var mockSession = MockSession()
| |- warning: static property 'mockSession' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'mockSession' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'mockSession' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
150 |
151 | /// This is the object responsible for loading cached requests from disks as well as recording
[7/14] Compiling MockDuck CryptoUtils.swift
[8/14] Compiling MockDuck MockRequestResponse.swift
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:43:28: warning: static property 'delegate' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
41 |
42 | /// A delegate that allows a class to hook into and modify how MockDuck behaves.
43 | public static weak var delegate: MockDuckDelegate? {
| |- warning: static property 'delegate' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'delegate' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'delegate' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
44 | willSet {
45 | checkConfigureMockDuck()
[9/14] Compiling MockDuck MockDuck.swift
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:13:35: warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
11 |
12 | /// A delegate protocol that can be used to modify how MockDuck functions.
13 | public protocol MockDuckDelegate: class {
| `- warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
14 |
15 | /// A hook that allows one to normalize a request before it is turned into a hash that uniquely
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:43:28: warning: static property 'delegate' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
41 |
42 | /// A delegate that allows a class to hook into and modify how MockDuck behaves.
43 | public static weak var delegate: MockDuckDelegate? {
| |- warning: static property 'delegate' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'delegate' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'delegate' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
44 | willSet {
45 | checkConfigureMockDuck()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:52:23: warning: static property 'enabled' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
50 | /// `loadingURL`, `recordingURL`, or by registering a request mock. This is here, however, to allow
51 | /// developers to quickly disable MockDuck by setting this to `false`.
52 | public static var enabled = true {
| |- warning: static property 'enabled' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enabled' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'enabled' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
53 | willSet {
54 | checkConfigureMockDuck()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:62:23: warning: static property 'shouldFallbackToNetwork' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
60 | /// Set this to `false` to force an error that resembles what `URLSession` provides when the
61 | /// network is unreachable.
62 | public static var shouldFallbackToNetwork = true {
| |- warning: static property 'shouldFallbackToNetwork' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'shouldFallbackToNetwork' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'shouldFallbackToNetwork' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
63 | willSet {
64 | checkConfigureMockDuck()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:71:23: warning: static property 'fallbackSessionConfiguration' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
69 | /// configured with this object. You can hook in here to modify how these fallback requests
70 | /// are made.
71 | public static var fallbackSessionConfiguration = URLSessionConfiguration.default {
| |- warning: static property 'fallbackSessionConfiguration' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'fallbackSessionConfiguration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'fallbackSessionConfiguration' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
72 | willSet {
73 | checkConfigureMockDuck()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:146:38: warning: static property 'fallbackSession' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
144 | /// This is the session MockDuck will fallback to using if the mocked request is not found and
145 | /// if `MockDuck.shouldFallbackToNetwork` is `true`.
146 | internal private(set) static var fallbackSession = URLSession.shared
| |- warning: static property 'fallbackSession' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'fallbackSession' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'fallbackSession' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
147 |
148 | // This is the URLSession subclass that we use to handle all mocked network requests.
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:82:23: warning: static property 'loadingURL' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
80 | /// The location where MockDuck will attempt to look for network requests that have been saved
81 | /// to disk.
82 | public static var loadingURL: URL? {
| |- warning: static property 'loadingURL' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'loadingURL' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'loadingURL' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
83 | willSet {
84 | checkConfigureMockDuck()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:153:38: warning: static property 'mockBundle' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
151 | /// This is the object responsible for loading cached requests from disks as well as recording
152 | /// new requests to disk.
153 | internal private(set) static var mockBundle = MockBundle()
| |- warning: static property 'mockBundle' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'mockBundle' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'mockBundle' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
154 |
155 | // MARK: - Private Configuration
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:142:25: warning: static property 'log' is not concurrency-safe because non-'Sendable' type 'OSLog' may have shared mutable state; this is an error in the Swift 6 language mode
140 |
141 | /// MockDuck uses this to log all of its messages.
142 | internal static let log = OSLog(subsystem: "com.buzzfeed.MockDuck", category: "default")
| `- warning: static property 'log' is not concurrency-safe because non-'Sendable' type 'OSLog' may have shared mutable state; this is an error in the Swift 6 language mode
143 |
144 | /// This is the session MockDuck will fallback to using if the mocked request is not found and
os.OSLog:1:12: note: class 'OSLog' does not conform to the 'Sendable' protocol
1 | open class OSLog : NSObject {
| `- note: class 'OSLog' does not conform to the 'Sendable' protocol
2 | @available(*, unavailable, message: "Unavailable in Swift")
3 | public init!()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:10:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'os'
8 |
9 | import Foundation
10 | import os
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'os'
11 |
12 | /// A delegate protocol that can be used to modify how MockDuck functions.
:
140 |
141 | /// MockDuck uses this to log all of its messages.
142 | internal static let log = OSLog(subsystem: "com.buzzfeed.MockDuck", category: "default")
| |- note: annotate 'log' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
143 |
144 | /// This is the session MockDuck will fallback to using if the mocked request is not found and
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:100:23: warning: static property 'recordingURL' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
98 | /// useful way to record a session of network activity to disk which is then used in the future
99 | /// by pointing to this same data using `loadingURL`.
100 | public static var recordingURL: URL? {
| |- warning: static property 'recordingURL' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'recordingURL' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'recordingURL' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
101 | willSet {
102 | checkConfigureMockDuck()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:149:38: warning: static property 'mockSession' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
147 |
148 | // This is the URLSession subclass that we use to handle all mocked network requests.
149 | internal private(set) static var mockSession = MockSession()
| |- warning: static property 'mockSession' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'mockSession' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'mockSession' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
150 |
151 | /// This is the object responsible for loading cached requests from disks as well as recording
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:157:24: warning: static property 'isConfigured' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
155 | // MARK: - Private Configuration
156 |
157 | private static var isConfigured = false
| |- warning: static property 'isConfigured' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'isConfigured' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'isConfigured' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
158 |
159 | private static func checkConfigureMockDuck() {
[10/14] Compiling MockDuck MockRequest.swift
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:43:28: warning: static property 'delegate' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
41 |
42 | /// A delegate that allows a class to hook into and modify how MockDuck behaves.
43 | public static weak var delegate: MockDuckDelegate? {
| |- warning: static property 'delegate' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'delegate' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'delegate' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
44 | willSet {
45 | checkConfigureMockDuck()
[11/14] Compiling MockDuck MockBundle.swift
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:142:25: warning: static property 'log' is not concurrency-safe because non-'Sendable' type 'OSLog' may have shared mutable state; this is an error in the Swift 6 language mode
140 |
141 | /// MockDuck uses this to log all of its messages.
142 | internal static let log = OSLog(subsystem: "com.buzzfeed.MockDuck", category: "default")
| `- warning: static property 'log' is not concurrency-safe because non-'Sendable' type 'OSLog' may have shared mutable state; this is an error in the Swift 6 language mode
143 |
144 | /// This is the session MockDuck will fallback to using if the mocked request is not found and
os.OSLog:1:12: note: class 'OSLog' does not conform to the 'Sendable' protocol
1 | open class OSLog : NSObject {
| `- note: class 'OSLog' does not conform to the 'Sendable' protocol
2 | @available(*, unavailable, message: "Unavailable in Swift")
3 | public init!()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:10:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'os'
8 |
9 | import Foundation
10 | import os
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'os'
11 |
12 | /// A delegate protocol that can be used to modify how MockDuck functions.
:
140 |
141 | /// MockDuck uses this to log all of its messages.
142 | internal static let log = OSLog(subsystem: "com.buzzfeed.MockDuck", category: "default")
| |- note: annotate 'log' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
143 |
144 | /// This is the session MockDuck will fallback to using if the mocked request is not found and
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDataTask.swift:14:13: warning: class 'MockDataTask' must restate inherited '@unchecked Sendable' conformance
12 | /// possible. When it is unable to load a response from disk, it can optionally use a fallback
13 | /// URLSession to handle the request normally.
14 | final class MockDataTask: URLSessionDataTask {
| `- warning: class 'MockDataTask' must restate inherited '@unchecked Sendable' conformance
15 |
16 | typealias TaskCompletion = (MockRequestResponse?, Error?) -> Void
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:153:38: warning: static property 'mockBundle' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
151 | /// This is the object responsible for loading cached requests from disks as well as recording
152 | /// new requests to disk.
153 | internal private(set) static var mockBundle = MockBundle()
| |- warning: static property 'mockBundle' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'mockBundle' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'mockBundle' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
154 |
155 | // MARK: - Private Configuration
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:62:23: warning: static property 'shouldFallbackToNetwork' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
60 | /// Set this to `false` to force an error that resembles what `URLSession` provides when the
61 | /// network is unreachable.
62 | public static var shouldFallbackToNetwork = true {
| |- warning: static property 'shouldFallbackToNetwork' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'shouldFallbackToNetwork' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'shouldFallbackToNetwork' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
63 | willSet {
64 | checkConfigureMockDuck()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:146:38: warning: static property 'fallbackSession' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
144 | /// This is the session MockDuck will fallback to using if the mocked request is not found and
145 | /// if `MockDuck.shouldFallbackToNetwork` is `true`.
146 | internal private(set) static var fallbackSession = URLSession.shared
| |- warning: static property 'fallbackSession' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'fallbackSession' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'fallbackSession' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
147 |
148 | // This is the URLSession subclass that we use to handle all mocked network requests.
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDataTask.swift:47:21: warning: capture of 'mockRequestResponse' with non-sendable type 'MockRequestResponse' in a `@Sendable` closure; this is an error in the Swift 6 language mode
45 | self.completion(nil, error)
46 | } else if let response = response {
47 | mockRequestResponse.responseWrapper = MockResponse(response: response, responseData: responseData)
| `- warning: capture of 'mockRequestResponse' with non-sendable type 'MockRequestResponse' in a `@Sendable` closure; this is an error in the Swift 6 language mode
48 | MockDuck.mockBundle.record(requestResponse: mockRequestResponse)
49 | self.completion(mockRequestResponse, nil)
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockRequestResponse.swift:12:13: note: class 'MockRequestResponse' does not conform to the 'Sendable' protocol
10 |
11 | /// A basic container for holding a request, a response, and any associated data.
12 | final class MockRequestResponse: Codable {
| `- note: class 'MockRequestResponse' does not conform to the 'Sendable' protocol
13 |
14 | enum MockFileTarget {
[12/14] Compiling MockDuck MockDataTask.swift
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:142:25: warning: static property 'log' is not concurrency-safe because non-'Sendable' type 'OSLog' may have shared mutable state; this is an error in the Swift 6 language mode
140 |
141 | /// MockDuck uses this to log all of its messages.
142 | internal static let log = OSLog(subsystem: "com.buzzfeed.MockDuck", category: "default")
| `- warning: static property 'log' is not concurrency-safe because non-'Sendable' type 'OSLog' may have shared mutable state; this is an error in the Swift 6 language mode
143 |
144 | /// This is the session MockDuck will fallback to using if the mocked request is not found and
os.OSLog:1:12: note: class 'OSLog' does not conform to the 'Sendable' protocol
1 | open class OSLog : NSObject {
| `- note: class 'OSLog' does not conform to the 'Sendable' protocol
2 | @available(*, unavailable, message: "Unavailable in Swift")
3 | public init!()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:10:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'os'
8 |
9 | import Foundation
10 | import os
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'os'
11 |
12 | /// A delegate protocol that can be used to modify how MockDuck functions.
:
140 |
141 | /// MockDuck uses this to log all of its messages.
142 | internal static let log = OSLog(subsystem: "com.buzzfeed.MockDuck", category: "default")
| |- note: annotate 'log' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
143 |
144 | /// This is the session MockDuck will fallback to using if the mocked request is not found and
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDataTask.swift:14:13: warning: class 'MockDataTask' must restate inherited '@unchecked Sendable' conformance
12 | /// possible. When it is unable to load a response from disk, it can optionally use a fallback
13 | /// URLSession to handle the request normally.
14 | final class MockDataTask: URLSessionDataTask {
| `- warning: class 'MockDataTask' must restate inherited '@unchecked Sendable' conformance
15 |
16 | typealias TaskCompletion = (MockRequestResponse?, Error?) -> Void
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:153:38: warning: static property 'mockBundle' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
151 | /// This is the object responsible for loading cached requests from disks as well as recording
152 | /// new requests to disk.
153 | internal private(set) static var mockBundle = MockBundle()
| |- warning: static property 'mockBundle' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'mockBundle' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'mockBundle' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
154 |
155 | // MARK: - Private Configuration
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:62:23: warning: static property 'shouldFallbackToNetwork' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
60 | /// Set this to `false` to force an error that resembles what `URLSession` provides when the
61 | /// network is unreachable.
62 | public static var shouldFallbackToNetwork = true {
| |- warning: static property 'shouldFallbackToNetwork' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'shouldFallbackToNetwork' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'shouldFallbackToNetwork' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
63 | willSet {
64 | checkConfigureMockDuck()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:146:38: warning: static property 'fallbackSession' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
144 | /// This is the session MockDuck will fallback to using if the mocked request is not found and
145 | /// if `MockDuck.shouldFallbackToNetwork` is `true`.
146 | internal private(set) static var fallbackSession = URLSession.shared
| |- warning: static property 'fallbackSession' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'fallbackSession' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'fallbackSession' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
147 |
148 | // This is the URLSession subclass that we use to handle all mocked network requests.
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDataTask.swift:47:21: warning: capture of 'mockRequestResponse' with non-sendable type 'MockRequestResponse' in a `@Sendable` closure; this is an error in the Swift 6 language mode
45 | self.completion(nil, error)
46 | } else if let response = response {
47 | mockRequestResponse.responseWrapper = MockResponse(response: response, responseData: responseData)
| `- warning: capture of 'mockRequestResponse' with non-sendable type 'MockRequestResponse' in a `@Sendable` closure; this is an error in the Swift 6 language mode
48 | MockDuck.mockBundle.record(requestResponse: mockRequestResponse)
49 | self.completion(mockRequestResponse, nil)
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockRequestResponse.swift:12:13: note: class 'MockRequestResponse' does not conform to the 'Sendable' protocol
10 |
11 | /// A basic container for holding a request, a response, and any associated data.
12 | final class MockRequestResponse: Codable {
| `- note: class 'MockRequestResponse' does not conform to the 'Sendable' protocol
13 |
14 | enum MockFileTarget {
[13/14] Emitting module MockDuck
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDataTask.swift:14:13: warning: class 'MockDataTask' must restate inherited '@unchecked Sendable' conformance
12 | /// possible. When it is unable to load a response from disk, it can optionally use a fallback
13 | /// URLSession to handle the request normally.
14 | final class MockDataTask: URLSessionDataTask {
| `- warning: class 'MockDataTask' must restate inherited '@unchecked Sendable' conformance
15 |
16 | typealias TaskCompletion = (MockRequestResponse?, Error?) -> Void
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:13:35: warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
11 |
12 | /// A delegate protocol that can be used to modify how MockDuck functions.
13 | public protocol MockDuckDelegate: class {
| `- warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
14 |
15 | /// A hook that allows one to normalize a request before it is turned into a hash that uniquely
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:43:28: warning: static property 'delegate' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
41 |
42 | /// A delegate that allows a class to hook into and modify how MockDuck behaves.
43 | public static weak var delegate: MockDuckDelegate? {
| |- warning: static property 'delegate' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'delegate' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'delegate' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
44 | willSet {
45 | checkConfigureMockDuck()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:52:23: warning: static property 'enabled' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
50 | /// `loadingURL`, `recordingURL`, or by registering a request mock. This is here, however, to allow
51 | /// developers to quickly disable MockDuck by setting this to `false`.
52 | public static var enabled = true {
| |- warning: static property 'enabled' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enabled' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'enabled' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
53 | willSet {
54 | checkConfigureMockDuck()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:62:23: warning: static property 'shouldFallbackToNetwork' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
60 | /// Set this to `false` to force an error that resembles what `URLSession` provides when the
61 | /// network is unreachable.
62 | public static var shouldFallbackToNetwork = true {
| |- warning: static property 'shouldFallbackToNetwork' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'shouldFallbackToNetwork' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'shouldFallbackToNetwork' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
63 | willSet {
64 | checkConfigureMockDuck()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:71:23: warning: static property 'fallbackSessionConfiguration' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
69 | /// configured with this object. You can hook in here to modify how these fallback requests
70 | /// are made.
71 | public static var fallbackSessionConfiguration = URLSessionConfiguration.default {
| |- warning: static property 'fallbackSessionConfiguration' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'fallbackSessionConfiguration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'fallbackSessionConfiguration' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
72 | willSet {
73 | checkConfigureMockDuck()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:146:38: warning: static property 'fallbackSession' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
144 | /// This is the session MockDuck will fallback to using if the mocked request is not found and
145 | /// if `MockDuck.shouldFallbackToNetwork` is `true`.
146 | internal private(set) static var fallbackSession = URLSession.shared
| |- warning: static property 'fallbackSession' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'fallbackSession' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'fallbackSession' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
147 |
148 | // This is the URLSession subclass that we use to handle all mocked network requests.
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:82:23: warning: static property 'loadingURL' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
80 | /// The location where MockDuck will attempt to look for network requests that have been saved
81 | /// to disk.
82 | public static var loadingURL: URL? {
| |- warning: static property 'loadingURL' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'loadingURL' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'loadingURL' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
83 | willSet {
84 | checkConfigureMockDuck()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:153:38: warning: static property 'mockBundle' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
151 | /// This is the object responsible for loading cached requests from disks as well as recording
152 | /// new requests to disk.
153 | internal private(set) static var mockBundle = MockBundle()
| |- warning: static property 'mockBundle' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'mockBundle' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'mockBundle' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
154 |
155 | // MARK: - Private Configuration
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:142:25: warning: static property 'log' is not concurrency-safe because non-'Sendable' type 'OSLog' may have shared mutable state; this is an error in the Swift 6 language mode
140 |
141 | /// MockDuck uses this to log all of its messages.
142 | internal static let log = OSLog(subsystem: "com.buzzfeed.MockDuck", category: "default")
| `- warning: static property 'log' is not concurrency-safe because non-'Sendable' type 'OSLog' may have shared mutable state; this is an error in the Swift 6 language mode
143 |
144 | /// This is the session MockDuck will fallback to using if the mocked request is not found and
os.OSLog:1:12: note: class 'OSLog' does not conform to the 'Sendable' protocol
1 | open class OSLog : NSObject {
| `- note: class 'OSLog' does not conform to the 'Sendable' protocol
2 | @available(*, unavailable, message: "Unavailable in Swift")
3 | public init!()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:10:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'os'
8 |
9 | import Foundation
10 | import os
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'os'
11 |
12 | /// A delegate protocol that can be used to modify how MockDuck functions.
:
140 |
141 | /// MockDuck uses this to log all of its messages.
142 | internal static let log = OSLog(subsystem: "com.buzzfeed.MockDuck", category: "default")
| |- note: annotate 'log' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
143 |
144 | /// This is the session MockDuck will fallback to using if the mocked request is not found and
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:100:23: warning: static property 'recordingURL' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
98 | /// useful way to record a session of network activity to disk which is then used in the future
99 | /// by pointing to this same data using `loadingURL`.
100 | public static var recordingURL: URL? {
| |- warning: static property 'recordingURL' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'recordingURL' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'recordingURL' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
101 | willSet {
102 | checkConfigureMockDuck()
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:149:38: warning: static property 'mockSession' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
147 |
148 | // This is the URLSession subclass that we use to handle all mocked network requests.
149 | internal private(set) static var mockSession = MockSession()
| |- warning: static property 'mockSession' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'mockSession' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'mockSession' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
150 |
151 | /// This is the object responsible for loading cached requests from disks as well as recording
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockDuck.swift:157:24: warning: static property 'isConfigured' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
155 | // MARK: - Private Configuration
156 |
157 | private static var isConfigured = false
| |- warning: static property 'isConfigured' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'isConfigured' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'isConfigured' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
158 |
159 | private static func checkConfigureMockDuck() {
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockSession.swift:13:13: warning: class 'MockSession' must restate inherited '@unchecked Sendable' conformance
11 | /// MockSession is a basic subclass of URLSession, created so that we can hook into the creation of
12 | /// NSURLSession tasks and provide our own tasks that can load cached requests from disk.
13 | final class MockSession: URLSession {
| `- warning: class 'MockSession' must restate inherited '@unchecked Sendable' conformance
14 | private let queue = DispatchQueue(label: "com.buzzfeed.MockDuck.MockSessionQueue", attributes: [])
15 |
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockURLProtocol.swift:13:7: warning: non-final class 'MockURLProtocol' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
11 | /// This is the URLProtocol subclass that intercepts all network requests and uses `MockSession` to
12 | /// stub out the responses. One of these is instantiated per request.
13 | class MockURLProtocol: URLProtocol, URLSessionDelegate, URLSessionDataDelegate {
| `- warning: non-final class 'MockURLProtocol' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
14 | private struct Constants {
15 | static let ProtocolHandled = "com.buzzfeed.MockDuck.URLProtocolHandled"
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockURLProtocol.swift:13:7: warning: 'Sendable' class 'MockURLProtocol' cannot inherit from another class other than 'NSObject'; this is an error in the Swift 6 language mode
11 | /// This is the URLProtocol subclass that intercepts all network requests and uses `MockSession` to
12 | /// stub out the responses. One of these is instantiated per request.
13 | class MockURLProtocol: URLProtocol, URLSessionDelegate, URLSessionDataDelegate {
| `- warning: 'Sendable' class 'MockURLProtocol' cannot inherit from another class other than 'NSObject'; this is an error in the Swift 6 language mode
14 | private struct Constants {
15 | static let ProtocolHandled = "com.buzzfeed.MockDuck.URLProtocolHandled"
/Users/admin/builder/spi-builder-workspace/MockDuck/Sources/MockURLProtocol.swift:18:9: warning: stored property 'sessionTask' of 'Sendable'-conforming class 'MockURLProtocol' is mutable; this is an error in the Swift 6 language mode
16 | }
17 |
18 | var sessionTask: URLSessionTask?
| `- warning: stored property 'sessionTask' of 'Sendable'-conforming class 'MockURLProtocol' is mutable; this is an error in the Swift 6 language mode
19 |
20 | override init(request: URLRequest, cachedResponse: CachedURLResponse?, client: URLProtocolClient?) {
[14/14] Compiling MockDuck EncodingUtils.swift
Build complete! (22.49s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "MockDuck",
"name" : "MockDuck",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.12"
},
{
"name" : "ios",
"version" : "10.0"
},
{
"name" : "tvos",
"version" : "10.0"
}
],
"products" : [
{
"name" : "MockDuck",
"targets" : [
"MockDuck"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "MockDuckTests",
"module_type" : "SwiftTarget",
"name" : "MockDuckTests",
"path" : "MockDuckTests/Sources",
"sources" : [
"CryptoTests.swift",
"MockBundleTests.swift",
"MockDuckTests.swift",
"MockURLProtocolTests.swift",
"RequestHandlerTests.swift",
"RequestHashTests.swift"
],
"target_dependencies" : [
"MockDuck"
],
"type" : "test"
},
{
"c99name" : "MockDuck",
"module_type" : "SwiftTarget",
"name" : "MockDuck",
"path" : "MockDuck/Sources",
"product_memberships" : [
"MockDuck"
],
"sources" : [
"MockBundle.swift",
"MockDataTask.swift",
"MockDuck.swift",
"MockRequest.swift",
"MockRequestResponse.swift",
"MockResponse.swift",
"MockSession.swift",
"MockURLProtocol.swift",
"RequestResponseCommonProtocol.swift",
"Utilities/CryptoUtils.swift",
"Utilities/EncodingUtils.swift"
],
"type" : "library"
}
],
"tools_version" : "5.0"
}
Done.