Build Information
Successful build of EFStorage, reference 0.4.1 (05b45b
), with Swift 6.0 for macOS (SPM) on 3 Nov 2024 01:54:47 UTC.
Swift 6 data race errors: 4
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.1.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Build Log
========================================
RunAll
========================================
Builder version: 4.56.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/EFPrefix/EFStorage.git
Reference: 0.4.1
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/EFPrefix/EFStorage
* tag 0.4.1 -> FETCH_HEAD
HEAD is now at 05b45b2 0.4.1
Cloned https://github.com/EFPrefix/EFStorage.git
Revision (git rev-parse @):
05b45b2f7acef73ca8021fdb9e1ab13e7af7f690
SUCCESS checkout https://github.com/EFPrefix/EFStorage.git at 0.4.1
Fetching https://github.com/EFPrefix/YYCache.git
Fetching https://github.com/kishikawakatsumi/KeychainAccess.git
[5/472] Fetching yycache
[115/4861] Fetching yycache, keychainaccess
Fetched https://github.com/EFPrefix/YYCache.git from cache (1.41s)
[4038/4389] Fetching keychainaccess
Fetched https://github.com/kishikawakatsumi/KeychainAccess.git from cache (1.49s)
Computing version for https://github.com/EFPrefix/YYCache.git
Computed https://github.com/EFPrefix/YYCache.git at 1.0.5 (0.69s)
Computing version for https://github.com/kishikawakatsumi/KeychainAccess.git
Computed https://github.com/kishikawakatsumi/KeychainAccess.git at 3.2.0 (2.71s)
Creating working copy for https://github.com/EFPrefix/YYCache.git
Working copy of https://github.com/EFPrefix/YYCache.git resolved at 1.0.5
Creating working copy for https://github.com/kishikawakatsumi/KeychainAccess.git
Working copy of https://github.com/kishikawakatsumi/KeychainAccess.git resolved at 3.2.0
========================================
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": "efstorage",
"name": "EFStorage",
"url": "https://github.com/EFPrefix/EFStorage.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/EFStorage",
"dependencies": [
{
"identity": "keychainaccess",
"name": "KeychainAccess",
"url": "https://github.com/kishikawakatsumi/KeychainAccess.git",
"version": "3.2.1",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/KeychainAccess",
"dependencies": [
]
},
{
"identity": "yycache",
"name": "YYCache",
"url": "https://github.com/EFPrefix/YYCache.git",
"version": "1.0.5",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/YYCache",
"dependencies": [
]
}
]
}
]
}
Fetching https://github.com/EFPrefix/EFStorage.git
[1/957] Fetching efstorage
Fetched https://github.com/EFPrefix/EFStorage.git from cache (0.93s)
Fetching https://github.com/EFPrefix/YYCache.git from cache
Fetching https://github.com/kishikawakatsumi/KeychainAccess.git from cache
Fetched https://github.com/EFPrefix/YYCache.git from cache (0.58s)
Fetched https://github.com/kishikawakatsumi/KeychainAccess.git from cache (0.58s)
Computing version for https://github.com/EFPrefix/YYCache.git
Computed https://github.com/EFPrefix/YYCache.git at 1.0.5 (0.03s)
Computing version for https://github.com/kishikawakatsumi/KeychainAccess.git
Computed https://github.com/kishikawakatsumi/KeychainAccess.git at 3.2.1 (0.66s)
Creating working copy for https://github.com/kishikawakatsumi/KeychainAccess.git
Working copy of https://github.com/kishikawakatsumi/KeychainAccess.git resolved at 3.2.1
Creating working copy for https://github.com/EFPrefix/YYCache.git
Working copy of https://github.com/EFPrefix/YYCache.git resolved at 1.0.5
Creating working copy for https://github.com/EFPrefix/EFStorage.git
Working copy of https://github.com/EFPrefix/EFStorage.git resolved at 0.4.1 (05b45b2)
warning: '.resolve-product-dependencies': dependency 'efstorage' is not used by any target
Found 2 product dependencies
- KeychainAccess
- YYCache
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.0
Building package at path: $PWD
https://github.com/EFPrefix/EFStorage.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.1.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Building for debugging...
[0/10] Write sources
[5/10] Write swift-version--7754E27361AE5C74.txt
[6/20] Compiling YYCache YYCache.m
[7/20] Compiling YYCache YYDiskCache.m
[8/20] Compiling YYCache YYMemoryCache.m
[9/20] Compiling YYCache YYKVStorage.m
[11/20] Compiling EFStorageCore EFContentWrapper.swift
[12/20] Compiling EFStorageCore EFStorage.swift
[13/20] Compiling EFStorageCore EFUnderlyingStorage.swift
[14/20] Compiling EFStorageCore EFStorageInternal.swift
/Users/admin/builder/spi-builder-workspace/Sources/EFStorageCore/EFStorageInternal.swift:21:24: warning: static property '_efStorages' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
19 | internal typealias Record = [String: NSMapTable<NSString, AnyObject>]
20 |
21 | private static var _efStorages = Record()
| |- warning: static property '_efStorages' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_efStorages' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate '_efStorages' 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
22 | private static let lock = NSLock()
23 |
/Users/admin/builder/spi-builder-workspace/Sources/EFStorageCore/EFStorageInternal.swift:44:23: warning: static property 'threshold' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
42 | /// Minimum number of entries for different types of singleton refrences
43 | /// in cache before cleanup happens. Default is (arbitrarily chosen as) 10.
44 | public static var threshold: UInt = 10
| |- warning: static property 'threshold' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'threshold' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'threshold' 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
45 |
46 | /// Remove all map tables that no longer holds any refrence.
[15/20] Compiling EFStorageCore EFSingleInstanceStorageReference.swift
[16/20] Compiling EFStorageCore EFSingleInstanceStorageReferenceWrapper.swift
[17/20] Compiling EFStorageCore EFOptionalContentWrapper.swift
[18/20] Emitting module EFStorageCore
/Users/admin/builder/spi-builder-workspace/Sources/EFStorageCore/EFStorageInternal.swift:21:24: warning: static property '_efStorages' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
19 | internal typealias Record = [String: NSMapTable<NSString, AnyObject>]
20 |
21 | private static var _efStorages = Record()
| |- warning: static property '_efStorages' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_efStorages' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate '_efStorages' 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
22 | private static let lock = NSLock()
23 |
/Users/admin/builder/spi-builder-workspace/Sources/EFStorageCore/EFStorageInternal.swift:44:23: warning: static property 'threshold' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
42 | /// Minimum number of entries for different types of singleton refrences
43 | /// in cache before cleanup happens. Default is (arbitrarily chosen as) 10.
44 | public static var threshold: UInt = 10
| |- warning: static property 'threshold' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'threshold' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'threshold' 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
45 |
46 | /// Remove all map tables that no longer holds any refrence.
[19/30] Emitting module KeychainAccess
[20/30] Compiling KeychainAccess Keychain.swift
[21/36] Compiling EFStorageKeychainAccess KeychainAccess+RawRepresentable.swift
[22/36] Compiling EFStorageYYCache YYCache+NSCoding.swift
[23/36] Compiling EFStorageYYCache YYCache+Codable.swift
[24/36] Emitting module EFStorageUserDefaults
/Users/admin/builder/spi-builder-workspace/Sources/EFStorageUserDefaults/EFStorage+UserDefaults.swift:13:1: warning: extension declares a conformance of imported type 'UserDefaults' to imported protocol 'EFUnderlyingStorage'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
11 | #endif
12 |
13 | extension UserDefaults: EFUnderlyingStorage {
| |- warning: extension declares a conformance of imported type 'UserDefaults' to imported protocol 'EFUnderlyingStorage'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
14 | public static var shared: UserDefaults = UserDefaults.standard
15 | public dynamic class func makeDefault() -> Self {
/Users/admin/builder/spi-builder-workspace/Sources/EFStorageUserDefaults/EFStorage+UserDefaults.swift:14:23: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
12 |
13 | extension UserDefaults: EFUnderlyingStorage {
14 | public static var shared: UserDefaults = UserDefaults.standard
| |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'shared' 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
15 | public dynamic class func makeDefault() -> Self {
16 | return (shared as? Self) ?? Self()
[25/36] Compiling EFStorageYYCache EFStorage+YYCache.swift
/Users/admin/builder/spi-builder-workspace/Sources/EFStorageYYCache/EFStorage+YYCache.swift:15:1: warning: extension declares a conformance of imported type 'YYCache' to imported protocols 'EFFailableUnderlyingStorage', 'EFUnderlyingStorage'; this will not behave correctly if the owners of 'YYCache' introduce this conformance in the future
13 | #endif
14 |
15 | extension YYCache: EFFailableUnderlyingStorage {
| |- warning: extension declares a conformance of imported type 'YYCache' to imported protocols 'EFFailableUnderlyingStorage', 'EFUnderlyingStorage'; this will not behave correctly if the owners of 'YYCache' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
16 | private static let name = Bundle.main.bundleIdentifier ?? "EFStorage"
17 | private static let shared: YYCache? = YYCache(name: name)
/Users/admin/builder/spi-builder-workspace/Sources/EFStorageYYCache/EFStorage+YYCache.swift:17:24: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'YYCache?' may have shared mutable state; this is an error in the Swift 6 language mode
15 | extension YYCache: EFFailableUnderlyingStorage {
16 | private static let name = Bundle.main.bundleIdentifier ?? "EFStorage"
17 | private static let shared: YYCache? = YYCache(name: name)
| `- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'YYCache?' may have shared mutable state; this is an error in the Swift 6 language mode
18 | public dynamic class func makeDefault() -> Self? {
19 | return (shared as? Self) ?? Self(name: name)
YYCache.YYCache:1:12: note: class 'YYCache' does not conform to the 'Sendable' protocol
1 | open class YYCache : NSObject {
| `- note: class 'YYCache' does not conform to the 'Sendable' protocol
2 | open var name: String { get }
3 | open var memoryCache: YYMemoryCache { get }
/Users/admin/builder/spi-builder-workspace/Sources/EFStorageYYCache/EFStorage+YYCache.swift:10:12: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'YYCache'
8 | #if canImport(YYCache)
9 | import Foundation
10 | @_exported import YYCache
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'YYCache'
11 | #if canImport(EFStorageCore)
12 | @_exported import EFStorageCore
:
15 | extension YYCache: EFFailableUnderlyingStorage {
16 | private static let name = Bundle.main.bundleIdentifier ?? "EFStorage"
17 | private static let shared: YYCache? = YYCache(name: name)
| |- note: annotate 'shared' 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
18 | public dynamic class func makeDefault() -> Self? {
19 | return (shared as? Self) ?? Self(name: name)
[26/36] Emitting module EFStorageYYCache
/Users/admin/builder/spi-builder-workspace/Sources/EFStorageYYCache/EFStorage+YYCache.swift:15:1: warning: extension declares a conformance of imported type 'YYCache' to imported protocols 'EFFailableUnderlyingStorage', 'EFUnderlyingStorage'; this will not behave correctly if the owners of 'YYCache' introduce this conformance in the future
13 | #endif
14 |
15 | extension YYCache: EFFailableUnderlyingStorage {
| |- warning: extension declares a conformance of imported type 'YYCache' to imported protocols 'EFFailableUnderlyingStorage', 'EFUnderlyingStorage'; this will not behave correctly if the owners of 'YYCache' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
16 | private static let name = Bundle.main.bundleIdentifier ?? "EFStorage"
17 | private static let shared: YYCache? = YYCache(name: name)
/Users/admin/builder/spi-builder-workspace/Sources/EFStorageYYCache/EFStorage+YYCache.swift:17:24: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'YYCache?' may have shared mutable state; this is an error in the Swift 6 language mode
15 | extension YYCache: EFFailableUnderlyingStorage {
16 | private static let name = Bundle.main.bundleIdentifier ?? "EFStorage"
17 | private static let shared: YYCache? = YYCache(name: name)
| `- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'YYCache?' may have shared mutable state; this is an error in the Swift 6 language mode
18 | public dynamic class func makeDefault() -> Self? {
19 | return (shared as? Self) ?? Self(name: name)
YYCache.YYCache:1:12: note: class 'YYCache' does not conform to the 'Sendable' protocol
1 | open class YYCache : NSObject {
| `- note: class 'YYCache' does not conform to the 'Sendable' protocol
2 | open var name: String { get }
3 | open var memoryCache: YYMemoryCache { get }
/Users/admin/builder/spi-builder-workspace/Sources/EFStorageYYCache/EFStorage+YYCache.swift:10:12: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'YYCache'
8 | #if canImport(YYCache)
9 | import Foundation
10 | @_exported import YYCache
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'YYCache'
11 | #if canImport(EFStorageCore)
12 | @_exported import EFStorageCore
:
15 | extension YYCache: EFFailableUnderlyingStorage {
16 | private static let name = Bundle.main.bundleIdentifier ?? "EFStorage"
17 | private static let shared: YYCache? = YYCache(name: name)
| |- note: annotate 'shared' 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
18 | public dynamic class func makeDefault() -> Self? {
19 | return (shared as? Self) ?? Self(name: name)
[27/36] Compiling EFStorageUserDefaults EFStorage+UserDefaults.swift
/Users/admin/builder/spi-builder-workspace/Sources/EFStorageUserDefaults/EFStorage+UserDefaults.swift:13:1: warning: extension declares a conformance of imported type 'UserDefaults' to imported protocol 'EFUnderlyingStorage'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
11 | #endif
12 |
13 | extension UserDefaults: EFUnderlyingStorage {
| |- warning: extension declares a conformance of imported type 'UserDefaults' to imported protocol 'EFUnderlyingStorage'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
14 | public static var shared: UserDefaults = UserDefaults.standard
15 | public dynamic class func makeDefault() -> Self {
/Users/admin/builder/spi-builder-workspace/Sources/EFStorageUserDefaults/EFStorage+UserDefaults.swift:14:23: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
12 |
13 | extension UserDefaults: EFUnderlyingStorage {
14 | public static var shared: UserDefaults = UserDefaults.standard
| |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'shared' 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
15 | public dynamic class func makeDefault() -> Self {
16 | return (shared as? Self) ?? Self()
[28/36] Compiling EFStorageKeychainAccess KeychainAccess+NSCoding.swift
[29/36] Compiling EFStorageKeychainAccess KeychainAccess+Codable.swift
[30/36] Compiling EFStorageKeychainAccess KeychainAccess+Primitives.swift
[31/36] Compiling EFStorageKeychainAccess EFStorage+KeychainAccess.swift
/Users/admin/builder/spi-builder-workspace/Sources/EFStorageKeychainAccess/EFStorage+KeychainAccess.swift:14:1: warning: extension declares a conformance of imported type 'Keychain' to imported protocols 'EFUnderlyingStorage', 'Equatable'; this will not behave correctly if the owners of 'KeychainAccess' introduce this conformance in the future
12 | #endif
13 |
14 | extension Keychain: EFUnderlyingStorage {
| |- warning: extension declares a conformance of imported type 'Keychain' to imported protocols 'EFUnderlyingStorage', 'Equatable'; this will not behave correctly if the owners of 'KeychainAccess' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
15 | public dynamic class func makeDefault() -> Self {
16 | return Self()
[32/36] Emitting module EFStorageKeychainAccess
/Users/admin/builder/spi-builder-workspace/Sources/EFStorageKeychainAccess/EFStorage+KeychainAccess.swift:14:1: warning: extension declares a conformance of imported type 'Keychain' to imported protocols 'EFUnderlyingStorage', 'Equatable'; this will not behave correctly if the owners of 'KeychainAccess' introduce this conformance in the future
12 | #endif
13 |
14 | extension Keychain: EFUnderlyingStorage {
| |- warning: extension declares a conformance of imported type 'Keychain' to imported protocols 'EFUnderlyingStorage', 'Equatable'; this will not behave correctly if the owners of 'KeychainAccess' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
15 | public dynamic class func makeDefault() -> Self {
16 | return Self()
[33/36] Compiling EFStorageUserDefaults UserDefaults+RawRepresentable.swift
[34/36] Compiling EFStorageUserDefaults UserDefaults+NSCoding.swift
[35/36] Compiling EFStorageUserDefaults UserDefaults+Codable.swift
[36/36] Compiling EFStorageUserDefaults UserDefaults+Primitives.swift
Build complete! (13.41s)
Build complete.
{
"dependencies" : [
{
"identity" : "keychainaccess",
"requirement" : {
"range" : [
{
"lower_bound" : "3.2.0",
"upper_bound" : "4.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/kishikawakatsumi/KeychainAccess.git"
},
{
"identity" : "yycache",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.5",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/EFPrefix/YYCache.git"
}
],
"manifest_display_name" : "EFStorage",
"name" : "EFStorage",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
],
"products" : [
{
"name" : "EFStorage",
"targets" : [
"EFStorageCore",
"EFStorageKeychainAccess",
"EFStorageUserDefaults",
"EFStorageYYCache"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "EFStorageCore",
"targets" : [
"EFStorageCore"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "EFStorageKeychainAccess",
"targets" : [
"EFStorageKeychainAccess"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "EFStorageUserDefaults",
"targets" : [
"EFStorageUserDefaults"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "EFStorageYYCache",
"targets" : [
"EFStorageYYCache"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "EFStorageYYCache",
"module_type" : "SwiftTarget",
"name" : "EFStorageYYCache",
"path" : "Sources/EFStorageYYCache",
"product_dependencies" : [
"YYCache"
],
"product_memberships" : [
"EFStorage",
"EFStorageYYCache"
],
"sources" : [
"EFStorage+YYCache.swift",
"YYCache+Codable.swift",
"YYCache+NSCoding.swift"
],
"target_dependencies" : [
"EFStorageCore"
],
"type" : "library"
},
{
"c99name" : "EFStorageUserDefaults",
"module_type" : "SwiftTarget",
"name" : "EFStorageUserDefaults",
"path" : "Sources/EFStorageUserDefaults",
"product_memberships" : [
"EFStorage",
"EFStorageUserDefaults"
],
"sources" : [
"EFStorage+UserDefaults.swift",
"UserDefaults+Codable.swift",
"UserDefaults+NSCoding.swift",
"UserDefaults+Primitives.swift",
"UserDefaults+RawRepresentable.swift"
],
"target_dependencies" : [
"EFStorageCore"
],
"type" : "library"
},
{
"c99name" : "EFStorageTests",
"module_type" : "SwiftTarget",
"name" : "EFStorageTests",
"path" : "Tests/EFStorageTests",
"sources" : [
"EFStorageTests.swift",
"XCTestManifests.swift"
],
"target_dependencies" : [
"EFStorageCore",
"EFStorageKeychainAccess",
"EFStorageUserDefaults"
],
"type" : "test"
},
{
"c99name" : "EFStorageKeychainAccess",
"module_type" : "SwiftTarget",
"name" : "EFStorageKeychainAccess",
"path" : "Sources/EFStorageKeychainAccess",
"product_dependencies" : [
"KeychainAccess"
],
"product_memberships" : [
"EFStorage",
"EFStorageKeychainAccess"
],
"sources" : [
"EFStorage+KeychainAccess.swift",
"KeychainAccess+Codable.swift",
"KeychainAccess+NSCoding.swift",
"KeychainAccess+Primitives.swift",
"KeychainAccess+RawRepresentable.swift"
],
"target_dependencies" : [
"EFStorageCore"
],
"type" : "library"
},
{
"c99name" : "EFStorageCore",
"module_type" : "SwiftTarget",
"name" : "EFStorageCore",
"path" : "Sources/EFStorageCore",
"product_memberships" : [
"EFStorage",
"EFStorageCore",
"EFStorageKeychainAccess",
"EFStorageUserDefaults",
"EFStorageYYCache"
],
"sources" : [
"EFContentWrapper.swift",
"EFOptionalContentWrapper.swift",
"EFSingleInstanceStorageReference.swift",
"EFSingleInstanceStorageReferenceWrapper.swift",
"EFStorage.swift",
"EFStorageInternal.swift",
"EFUnderlyingStorage.swift"
],
"type" : "library"
}
],
"tools_version" : "5.1"
}
Done.