Build Information
Successful build of Cache, reference master (bde695
), with Swift 6.1 for macOS (SPM) on 29 Apr 2025 07:30:59 UTC.
Swift 6 data race errors: 0
Build Command
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
Build Log
========================================
RunAll
========================================
Builder version: 4.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/hyperoslo/Cache.git
Reference: master
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/hyperoslo/Cache
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master
HEAD is now at bde695c Merge pull request #340 from gibachan/fix-unit-test
Cloned https://github.com/hyperoslo/Cache.git
Revision (git rev-parse @):
bde695cef10efe1f5541e4d13763ae833f103db3
SUCCESS checkout https://github.com/hyperoslo/Cache.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": "cache",
"name": "Cache",
"url": "https://github.com/hyperoslo/Cache.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Cache",
"dependencies": [
]
}
]
}
Fetching https://github.com/hyperoslo/Cache.git
[1/6185] Fetching cache
Fetched https://github.com/hyperoslo/Cache.git from cache (6.31s)
Creating working copy for https://github.com/hyperoslo/Cache.git
Working copy of https://github.com/hyperoslo/Cache.git resolved at master (bde695c)
warning: '.resolve-product-dependencies': dependency 'cache' 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/hyperoslo/Cache.git
https://github.com/hyperoslo/Cache.git
{
"dependencies" : [
],
"manifest_display_name" : "Cache",
"name" : "Cache",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
],
"products" : [
{
"name" : "Cache",
"targets" : [
"Cache"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"swift_languages_versions" : [
"5"
],
"targets" : [
{
"c99name" : "CacheTests",
"module_type" : "SwiftTarget",
"name" : "CacheTests",
"path" : "Tests",
"sources" : [
"Mac/Helpers/NSImage+ExtensionsTests.swift",
"Mac/Helpers/TestHelper+OSX.swift",
"Shared/TestCase+Extensions.swift",
"Shared/TestHelper.swift",
"Shared/User.swift",
"iOS/Helpers/TestHelper+iOS.swift",
"iOS/Helpers/UIImage+ExtensionsTests.swift",
"iOS/Tests/Extensions/Date+ExtensionsTests.swift",
"iOS/Tests/Extensions/Hasher+constantAccrossExecutions+Tests.swift",
"iOS/Tests/Library/ExpiryTests.swift",
"iOS/Tests/Library/ImageWrapperTests.swift",
"iOS/Tests/Library/JSONWrapperTests.swift",
"iOS/Tests/Library/MD5Tests.swift",
"iOS/Tests/Library/MemoryCapsuleTests.swift",
"iOS/Tests/Library/ObjectConverterTests.swift",
"iOS/Tests/Library/ObservationTokenTests.swift",
"iOS/Tests/Library/TypeWrapperTests.swift",
"iOS/Tests/Storage/AsyncStorageTests.swift",
"iOS/Tests/Storage/DiskStorageTests.swift",
"iOS/Tests/Storage/HybridStorageTests.swift",
"iOS/Tests/Storage/MemoryStorageTests.swift",
"iOS/Tests/Storage/StorageSupportTests.swift",
"iOS/Tests/Storage/StorageTests.swift",
"iOS/Tests/Storage/SyncStorageTests.swift"
],
"target_dependencies" : [
"Cache"
],
"type" : "test"
},
{
"c99name" : "Cache",
"module_type" : "SwiftTarget",
"name" : "Cache",
"path" : "Source",
"product_memberships" : [
"Cache"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Source/PrivacyInfo.xcprivacy",
"rule" : {
"copy" : {
}
}
}
],
"sources" : [
"Mac/NSImage+Extensions.swift",
"Shared/Configuration/DiskConfig.swift",
"Shared/Configuration/MemoryConfig.swift",
"Shared/Extensions/Date+Extensions.swift",
"Shared/Extensions/FileManager+Extensions.swift",
"Shared/Extensions/Hasher+constantAccrossExecutions.swift",
"Shared/Extensions/JSONDecoder+Extensions.swift",
"Shared/Extensions/URL+Extensions.swift",
"Shared/Library/DataSerializer.swift",
"Shared/Library/Entry.swift",
"Shared/Library/ExpirationMode.swift",
"Shared/Library/Expiry.swift",
"Shared/Library/ImageWrapper.swift",
"Shared/Library/JSONArrayWrapper.swift",
"Shared/Library/JSONDictionaryWrapper.swift",
"Shared/Library/MD5.swift",
"Shared/Library/MemoryCapsule.swift",
"Shared/Library/ObservationToken.swift",
"Shared/Library/Optional+Extension.swift",
"Shared/Library/StorageError.swift",
"Shared/Library/Transformer.swift",
"Shared/Library/TransformerFactory.swift",
"Shared/Library/TypeWrapper.swift",
"Shared/Library/Types.swift",
"Shared/Storage/AsyncStorage.swift",
"Shared/Storage/DiskStorage.swift",
"Shared/Storage/HybridStorage.swift",
"Shared/Storage/KeyObservationRegistry.swift",
"Shared/Storage/MemoryStorage.swift",
"Shared/Storage/Storage+Transform.swift",
"Shared/Storage/Storage.swift",
"Shared/Storage/StorageAware.swift",
"Shared/Storage/StorageObservationRegistry.swift",
"Shared/Storage/SyncStorage.swift",
"iOS/UIImage+Extensions.swift"
],
"type" : "library"
}
],
"tools_version" : "5.5"
}
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/3] Write sources
[1/3] Copying PrivacyInfo.xcprivacy
[2/3] Write swift-version-2F0A5646E1D333AE.txt
[4/37] Emitting module Cache
[5/40] Compiling Cache ImageWrapper.swift
[6/40] Compiling Cache JSONArrayWrapper.swift
[7/40] Compiling Cache JSONDictionaryWrapper.swift
[8/40] Compiling Cache MD5.swift
[9/40] Compiling Cache SyncStorage.swift
[10/40] Compiling Cache UIImage+Extensions.swift
[11/40] Compiling Cache resource_bundle_accessor.swift
[12/40] Compiling Cache Storage.swift
[13/40] Compiling Cache StorageAware.swift
[14/40] Compiling Cache StorageObservationRegistry.swift
[15/40] Compiling Cache MemoryCapsule.swift
[16/40] Compiling Cache ObservationToken.swift
[17/40] Compiling Cache Optional+Extension.swift
[18/40] Compiling Cache StorageError.swift
[19/40] Compiling Cache DataSerializer.swift
[20/40] Compiling Cache Entry.swift
[21/40] Compiling Cache ExpirationMode.swift
[22/40] Compiling Cache Expiry.swift
[23/40] Compiling Cache FileManager+Extensions.swift
[24/40] Compiling Cache Hasher+constantAccrossExecutions.swift
[25/40] Compiling Cache JSONDecoder+Extensions.swift
[26/40] Compiling Cache URL+Extensions.swift
[27/40] Compiling Cache KeyObservationRegistry.swift
[28/40] Compiling Cache MemoryStorage.swift
[29/40] Compiling Cache Storage+Transform.swift
[30/40] Compiling Cache AsyncStorage.swift
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:19:26: warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: generic class 'AsyncStorage' does not conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
17 | public func entry(forKey key: Key, completion: @escaping (Result<Entry<Value>, Error>) -> Void) {
18 | serialQueue.async { [weak self] in
19 | guard let `self` = self else {
| `- warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
20 | completion(.failure(StorageError.deallocated))
21 | return
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:20:9: warning: capture of 'completion' with non-sendable type '(Result<Entry<Value>, any Error>) -> Void' in a '@Sendable' closure
18 | serialQueue.async { [weak self] in
19 | guard let `self` = self else {
20 | completion(.failure(StorageError.deallocated))
| |- warning: capture of 'completion' with non-sendable type '(Result<Entry<Value>, any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
21 | return
22 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:25:59: warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: consider making generic parameter 'Key' conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
23 |
24 | do {
25 | let anEntry = try self.innerStorage.entry(forKey: key)
| `- warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
26 | completion(.success(anEntry))
27 | } catch {
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:35:26: warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: generic class 'AsyncStorage' does not conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
33 | public func removeObject(forKey key: Key, completion: @escaping (Result<(), Error>) -> Void) {
34 | serialQueue.async { [weak self] in
35 | guard let `self` = self else {
| `- warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
36 | completion(.failure(StorageError.deallocated))
37 | return
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:36:9: warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
34 | serialQueue.async { [weak self] in
35 | guard let `self` = self else {
36 | completion(.failure(StorageError.deallocated))
| |- warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
37 | return
38 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:41:52: warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: consider making generic parameter 'Key' conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
39 |
40 | do {
41 | try self.innerStorage.removeObject(forKey: key)
| `- warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
42 | completion(.success(()))
43 | } catch {
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:55:26: warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: generic class 'AsyncStorage' does not conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
53 | completion: @escaping (Result<(), Error>) -> Void) {
54 | serialQueue.async { [weak self] in
55 | guard let `self` = self else {
| `- warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
56 | completion(.failure(StorageError.deallocated))
57 | return
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:56:9: warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
54 | serialQueue.async { [weak self] in
55 | guard let `self` = self else {
56 | completion(.failure(StorageError.deallocated))
| |- warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
57 | return
58 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:61:41: warning: capture of 'object' with non-sendable type 'Value' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
59 |
60 | do {
61 | try self.innerStorage.setObject(object, forKey: key, expiry: expiry)
| `- warning: capture of 'object' with non-sendable type 'Value' in a '@Sendable' closure
62 | completion(.success(()))
63 | } catch {
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:61:57: warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: consider making generic parameter 'Key' conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
59 |
60 | do {
61 | try self.innerStorage.setObject(object, forKey: key, expiry: expiry)
| `- warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
62 | completion(.success(()))
63 | } catch {
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:61:70: warning: capture of 'expiry' with non-sendable type 'Expiry?' in a '@Sendable' closure
59 |
60 | do {
61 | try self.innerStorage.setObject(object, forKey: key, expiry: expiry)
| `- warning: capture of 'expiry' with non-sendable type 'Expiry?' in a '@Sendable' closure
62 | completion(.success(()))
63 | } catch {
/Users/admin/builder/spi-builder-workspace/Source/Shared/Library/Expiry.swift:6:13: note: consider making enum 'Expiry' conform to the 'Sendable' protocol
4 | Helper enum to set the expiration date
5 | */
6 | public enum Expiry {
| `- note: consider making enum 'Expiry' conform to the 'Sendable' protocol
7 | /// Object will be expired in the nearest future
8 | case never
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:71:26: warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: generic class 'AsyncStorage' does not conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
69 | public func removeAll(completion: @escaping (Result<(), Error>) -> Void) {
70 | serialQueue.async { [weak self] in
71 | guard let `self` = self else {
| `- warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
72 | completion(.failure(StorageError.deallocated))
73 | return
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:72:9: warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
70 | serialQueue.async { [weak self] in
71 | guard let `self` = self else {
72 | completion(.failure(StorageError.deallocated))
| |- warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
73 | return
74 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:87:26: warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: generic class 'AsyncStorage' does not conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
85 | public func removeExpiredObjects(completion: @escaping (Result<(), Error>) -> Void) {
86 | serialQueue.async { [weak self] in
87 | guard let `self` = self else {
| `- warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
88 | completion(.failure(StorageError.deallocated))
89 | return
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:88:9: warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
86 | serialQueue.async { [weak self] in
87 | guard let `self` = self else {
88 | completion(.failure(StorageError.deallocated))
| |- warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
89 | return
90 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:147:22: warning: sending '$0' risks causing data races; this is an error in the Swift 6 language mode
145 | try await withCheckedThrowingContinuation { continuation in
146 | entry(forKey: key) {
147 | continuation.resume(with: $0)
| |- warning: sending '$0' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated '$0' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
148 | }
149 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:190:22: warning: sending '$0' risks causing data races; this is an error in the Swift 6 language mode
188 | try await withCheckedThrowingContinuation { continuation in
189 | object(forKey: key) {
190 | continuation.resume(with: $0)
| |- warning: sending '$0' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated '$0' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
191 | }
192 | }
[31/40] Compiling Cache DiskStorage.swift
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:19:26: warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: generic class 'AsyncStorage' does not conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
17 | public func entry(forKey key: Key, completion: @escaping (Result<Entry<Value>, Error>) -> Void) {
18 | serialQueue.async { [weak self] in
19 | guard let `self` = self else {
| `- warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
20 | completion(.failure(StorageError.deallocated))
21 | return
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:20:9: warning: capture of 'completion' with non-sendable type '(Result<Entry<Value>, any Error>) -> Void' in a '@Sendable' closure
18 | serialQueue.async { [weak self] in
19 | guard let `self` = self else {
20 | completion(.failure(StorageError.deallocated))
| |- warning: capture of 'completion' with non-sendable type '(Result<Entry<Value>, any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
21 | return
22 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:25:59: warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: consider making generic parameter 'Key' conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
23 |
24 | do {
25 | let anEntry = try self.innerStorage.entry(forKey: key)
| `- warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
26 | completion(.success(anEntry))
27 | } catch {
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:35:26: warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: generic class 'AsyncStorage' does not conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
33 | public func removeObject(forKey key: Key, completion: @escaping (Result<(), Error>) -> Void) {
34 | serialQueue.async { [weak self] in
35 | guard let `self` = self else {
| `- warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
36 | completion(.failure(StorageError.deallocated))
37 | return
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:36:9: warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
34 | serialQueue.async { [weak self] in
35 | guard let `self` = self else {
36 | completion(.failure(StorageError.deallocated))
| |- warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
37 | return
38 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:41:52: warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: consider making generic parameter 'Key' conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
39 |
40 | do {
41 | try self.innerStorage.removeObject(forKey: key)
| `- warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
42 | completion(.success(()))
43 | } catch {
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:55:26: warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: generic class 'AsyncStorage' does not conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
53 | completion: @escaping (Result<(), Error>) -> Void) {
54 | serialQueue.async { [weak self] in
55 | guard let `self` = self else {
| `- warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
56 | completion(.failure(StorageError.deallocated))
57 | return
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:56:9: warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
54 | serialQueue.async { [weak self] in
55 | guard let `self` = self else {
56 | completion(.failure(StorageError.deallocated))
| |- warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
57 | return
58 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:61:41: warning: capture of 'object' with non-sendable type 'Value' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
59 |
60 | do {
61 | try self.innerStorage.setObject(object, forKey: key, expiry: expiry)
| `- warning: capture of 'object' with non-sendable type 'Value' in a '@Sendable' closure
62 | completion(.success(()))
63 | } catch {
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:61:57: warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: consider making generic parameter 'Key' conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
59 |
60 | do {
61 | try self.innerStorage.setObject(object, forKey: key, expiry: expiry)
| `- warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
62 | completion(.success(()))
63 | } catch {
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:61:70: warning: capture of 'expiry' with non-sendable type 'Expiry?' in a '@Sendable' closure
59 |
60 | do {
61 | try self.innerStorage.setObject(object, forKey: key, expiry: expiry)
| `- warning: capture of 'expiry' with non-sendable type 'Expiry?' in a '@Sendable' closure
62 | completion(.success(()))
63 | } catch {
/Users/admin/builder/spi-builder-workspace/Source/Shared/Library/Expiry.swift:6:13: note: consider making enum 'Expiry' conform to the 'Sendable' protocol
4 | Helper enum to set the expiration date
5 | */
6 | public enum Expiry {
| `- note: consider making enum 'Expiry' conform to the 'Sendable' protocol
7 | /// Object will be expired in the nearest future
8 | case never
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:71:26: warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: generic class 'AsyncStorage' does not conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
69 | public func removeAll(completion: @escaping (Result<(), Error>) -> Void) {
70 | serialQueue.async { [weak self] in
71 | guard let `self` = self else {
| `- warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
72 | completion(.failure(StorageError.deallocated))
73 | return
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:72:9: warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
70 | serialQueue.async { [weak self] in
71 | guard let `self` = self else {
72 | completion(.failure(StorageError.deallocated))
| |- warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
73 | return
74 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:87:26: warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: generic class 'AsyncStorage' does not conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
85 | public func removeExpiredObjects(completion: @escaping (Result<(), Error>) -> Void) {
86 | serialQueue.async { [weak self] in
87 | guard let `self` = self else {
| `- warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
88 | completion(.failure(StorageError.deallocated))
89 | return
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:88:9: warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
86 | serialQueue.async { [weak self] in
87 | guard let `self` = self else {
88 | completion(.failure(StorageError.deallocated))
| |- warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
89 | return
90 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:147:22: warning: sending '$0' risks causing data races; this is an error in the Swift 6 language mode
145 | try await withCheckedThrowingContinuation { continuation in
146 | entry(forKey: key) {
147 | continuation.resume(with: $0)
| |- warning: sending '$0' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated '$0' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
148 | }
149 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:190:22: warning: sending '$0' risks causing data races; this is an error in the Swift 6 language mode
188 | try await withCheckedThrowingContinuation { continuation in
189 | object(forKey: key) {
190 | continuation.resume(with: $0)
| |- warning: sending '$0' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated '$0' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
191 | }
192 | }
[32/40] Compiling Cache HybridStorage.swift
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:19:26: warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: generic class 'AsyncStorage' does not conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
17 | public func entry(forKey key: Key, completion: @escaping (Result<Entry<Value>, Error>) -> Void) {
18 | serialQueue.async { [weak self] in
19 | guard let `self` = self else {
| `- warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
20 | completion(.failure(StorageError.deallocated))
21 | return
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:20:9: warning: capture of 'completion' with non-sendable type '(Result<Entry<Value>, any Error>) -> Void' in a '@Sendable' closure
18 | serialQueue.async { [weak self] in
19 | guard let `self` = self else {
20 | completion(.failure(StorageError.deallocated))
| |- warning: capture of 'completion' with non-sendable type '(Result<Entry<Value>, any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
21 | return
22 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:25:59: warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: consider making generic parameter 'Key' conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
23 |
24 | do {
25 | let anEntry = try self.innerStorage.entry(forKey: key)
| `- warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
26 | completion(.success(anEntry))
27 | } catch {
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:35:26: warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: generic class 'AsyncStorage' does not conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
33 | public func removeObject(forKey key: Key, completion: @escaping (Result<(), Error>) -> Void) {
34 | serialQueue.async { [weak self] in
35 | guard let `self` = self else {
| `- warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
36 | completion(.failure(StorageError.deallocated))
37 | return
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:36:9: warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
34 | serialQueue.async { [weak self] in
35 | guard let `self` = self else {
36 | completion(.failure(StorageError.deallocated))
| |- warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
37 | return
38 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:41:52: warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: consider making generic parameter 'Key' conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
39 |
40 | do {
41 | try self.innerStorage.removeObject(forKey: key)
| `- warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
42 | completion(.success(()))
43 | } catch {
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:55:26: warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: generic class 'AsyncStorage' does not conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
53 | completion: @escaping (Result<(), Error>) -> Void) {
54 | serialQueue.async { [weak self] in
55 | guard let `self` = self else {
| `- warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
56 | completion(.failure(StorageError.deallocated))
57 | return
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:56:9: warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
54 | serialQueue.async { [weak self] in
55 | guard let `self` = self else {
56 | completion(.failure(StorageError.deallocated))
| |- warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
57 | return
58 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:61:41: warning: capture of 'object' with non-sendable type 'Value' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
59 |
60 | do {
61 | try self.innerStorage.setObject(object, forKey: key, expiry: expiry)
| `- warning: capture of 'object' with non-sendable type 'Value' in a '@Sendable' closure
62 | completion(.success(()))
63 | } catch {
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:61:57: warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: consider making generic parameter 'Key' conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
59 |
60 | do {
61 | try self.innerStorage.setObject(object, forKey: key, expiry: expiry)
| `- warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
62 | completion(.success(()))
63 | } catch {
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:61:70: warning: capture of 'expiry' with non-sendable type 'Expiry?' in a '@Sendable' closure
59 |
60 | do {
61 | try self.innerStorage.setObject(object, forKey: key, expiry: expiry)
| `- warning: capture of 'expiry' with non-sendable type 'Expiry?' in a '@Sendable' closure
62 | completion(.success(()))
63 | } catch {
/Users/admin/builder/spi-builder-workspace/Source/Shared/Library/Expiry.swift:6:13: note: consider making enum 'Expiry' conform to the 'Sendable' protocol
4 | Helper enum to set the expiration date
5 | */
6 | public enum Expiry {
| `- note: consider making enum 'Expiry' conform to the 'Sendable' protocol
7 | /// Object will be expired in the nearest future
8 | case never
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:71:26: warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: generic class 'AsyncStorage' does not conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
69 | public func removeAll(completion: @escaping (Result<(), Error>) -> Void) {
70 | serialQueue.async { [weak self] in
71 | guard let `self` = self else {
| `- warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
72 | completion(.failure(StorageError.deallocated))
73 | return
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:72:9: warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
70 | serialQueue.async { [weak self] in
71 | guard let `self` = self else {
72 | completion(.failure(StorageError.deallocated))
| |- warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
73 | return
74 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:87:26: warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
4 | /// Manipulate storage in a "all async" manner.
5 | /// The completion closure will be called when operation completes.
6 | public class AsyncStorage<Key: Hashable, Value> {
| `- note: generic class 'AsyncStorage' does not conform to the 'Sendable' protocol
7 | public let innerStorage: HybridStorage<Key, Value>
8 | public let serialQueue: DispatchQueue
:
85 | public func removeExpiredObjects(completion: @escaping (Result<(), Error>) -> Void) {
86 | serialQueue.async { [weak self] in
87 | guard let `self` = self else {
| `- warning: capture of 'self' with non-sendable type 'AsyncStorage<Key, Value>?' in a '@Sendable' closure
88 | completion(.failure(StorageError.deallocated))
89 | return
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:88:9: warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
86 | serialQueue.async { [weak self] in
87 | guard let `self` = self else {
88 | completion(.failure(StorageError.deallocated))
| |- warning: capture of 'completion' with non-sendable type '(Result<(), any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
89 | return
90 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:147:22: warning: sending '$0' risks causing data races; this is an error in the Swift 6 language mode
145 | try await withCheckedThrowingContinuation { continuation in
146 | entry(forKey: key) {
147 | continuation.resume(with: $0)
| |- warning: sending '$0' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated '$0' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
148 | }
149 | }
/Users/admin/builder/spi-builder-workspace/Source/Shared/Storage/AsyncStorage.swift:190:22: warning: sending '$0' risks causing data races; this is an error in the Swift 6 language mode
188 | try await withCheckedThrowingContinuation { continuation in
189 | object(forKey: key) {
190 | continuation.resume(with: $0)
| |- warning: sending '$0' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated '$0' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
191 | }
192 | }
[33/40] Compiling Cache Transformer.swift
[34/40] Compiling Cache TransformerFactory.swift
[35/40] Compiling Cache TypeWrapper.swift
[36/40] Compiling Cache Types.swift
[37/40] Compiling Cache NSImage+Extensions.swift
[38/40] Compiling Cache DiskConfig.swift
[39/40] Compiling Cache MemoryConfig.swift
[40/40] Compiling Cache Date+Extensions.swift
Build complete! (7.60s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "Cache",
"name" : "Cache",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
],
"products" : [
{
"name" : "Cache",
"targets" : [
"Cache"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"swift_languages_versions" : [
"5"
],
"targets" : [
{
"c99name" : "CacheTests",
"module_type" : "SwiftTarget",
"name" : "CacheTests",
"path" : "Tests",
"sources" : [
"Mac/Helpers/NSImage+ExtensionsTests.swift",
"Mac/Helpers/TestHelper+OSX.swift",
"Shared/TestCase+Extensions.swift",
"Shared/TestHelper.swift",
"Shared/User.swift",
"iOS/Helpers/TestHelper+iOS.swift",
"iOS/Helpers/UIImage+ExtensionsTests.swift",
"iOS/Tests/Extensions/Date+ExtensionsTests.swift",
"iOS/Tests/Extensions/Hasher+constantAccrossExecutions+Tests.swift",
"iOS/Tests/Library/ExpiryTests.swift",
"iOS/Tests/Library/ImageWrapperTests.swift",
"iOS/Tests/Library/JSONWrapperTests.swift",
"iOS/Tests/Library/MD5Tests.swift",
"iOS/Tests/Library/MemoryCapsuleTests.swift",
"iOS/Tests/Library/ObjectConverterTests.swift",
"iOS/Tests/Library/ObservationTokenTests.swift",
"iOS/Tests/Library/TypeWrapperTests.swift",
"iOS/Tests/Storage/AsyncStorageTests.swift",
"iOS/Tests/Storage/DiskStorageTests.swift",
"iOS/Tests/Storage/HybridStorageTests.swift",
"iOS/Tests/Storage/MemoryStorageTests.swift",
"iOS/Tests/Storage/StorageSupportTests.swift",
"iOS/Tests/Storage/StorageTests.swift",
"iOS/Tests/Storage/SyncStorageTests.swift"
],
"target_dependencies" : [
"Cache"
],
"type" : "test"
},
{
"c99name" : "Cache",
"module_type" : "SwiftTarget",
"name" : "Cache",
"path" : "Source",
"product_memberships" : [
"Cache"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Source/PrivacyInfo.xcprivacy",
"rule" : {
"copy" : {
}
}
}
],
"sources" : [
"Mac/NSImage+Extensions.swift",
"Shared/Configuration/DiskConfig.swift",
"Shared/Configuration/MemoryConfig.swift",
"Shared/Extensions/Date+Extensions.swift",
"Shared/Extensions/FileManager+Extensions.swift",
"Shared/Extensions/Hasher+constantAccrossExecutions.swift",
"Shared/Extensions/JSONDecoder+Extensions.swift",
"Shared/Extensions/URL+Extensions.swift",
"Shared/Library/DataSerializer.swift",
"Shared/Library/Entry.swift",
"Shared/Library/ExpirationMode.swift",
"Shared/Library/Expiry.swift",
"Shared/Library/ImageWrapper.swift",
"Shared/Library/JSONArrayWrapper.swift",
"Shared/Library/JSONDictionaryWrapper.swift",
"Shared/Library/MD5.swift",
"Shared/Library/MemoryCapsule.swift",
"Shared/Library/ObservationToken.swift",
"Shared/Library/Optional+Extension.swift",
"Shared/Library/StorageError.swift",
"Shared/Library/Transformer.swift",
"Shared/Library/TransformerFactory.swift",
"Shared/Library/TypeWrapper.swift",
"Shared/Library/Types.swift",
"Shared/Storage/AsyncStorage.swift",
"Shared/Storage/DiskStorage.swift",
"Shared/Storage/HybridStorage.swift",
"Shared/Storage/KeyObservationRegistry.swift",
"Shared/Storage/MemoryStorage.swift",
"Shared/Storage/Storage+Transform.swift",
"Shared/Storage/Storage.swift",
"Shared/Storage/StorageAware.swift",
"Shared/Storage/StorageObservationRegistry.swift",
"Shared/Storage/SyncStorage.swift",
"iOS/UIImage+Extensions.swift"
],
"type" : "library"
}
],
"tools_version" : "5.5"
}
Done.