This is a staging environment. For live and up-to-date package information, visit swiftpackageindex.com.

The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of EFStorage with Swift 6.0 (beta) for macOS (SPM).

Swift 6 data race errors: 4

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/EFPrefix/EFStorage.git
Reference: master
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/EFPrefix/EFStorage
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master
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 master
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $workDir
https://github.com/EFPrefix/EFStorage.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/10] Write sources
[5/10] Write swift-version-6F35C1178C84523A.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] 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 non-isolated 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 non-isolated 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 non-isolated 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 non-isolated 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.
[12/20] Compiling EFStorageCore EFContentWrapper.swift
[13/20] Compiling EFStorageCore EFSingleInstanceStorageReference.swift
[14/20] Compiling EFStorageCore EFStorage.swift
[15/20] Compiling EFStorageCore EFUnderlyingStorage.swift
[16/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 non-isolated 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 non-isolated 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 non-isolated 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 non-isolated 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.
[17/20] Compiling EFStorageCore EFSingleInstanceStorageReferenceWrapper.swift
[18/20] Compiling EFStorageCore EFOptionalContentWrapper.swift
[19/20] Emitting module KeychainAccess
[20/20] Compiling KeychainAccess Keychain.swift
[21/36] Compiling EFStorageYYCache YYCache+NSCoding.swift
[22/36] Compiling EFStorageKeychainAccess KeychainAccess+Primitives.swift
[23/36] Compiling EFStorageKeychainAccess KeychainAccess+Codable.swift
[24/36] Compiling EFStorageKeychainAccess KeychainAccess+RawRepresentable.swift
[25/36] Compiling EFStorageKeychainAccess KeychainAccess+NSCoding.swift
[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 EFStorageYYCache YYCache+Codable.swift
[28/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)
[29/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()
[30/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()
[31/36] Compiling EFStorageUserDefaults UserDefaults+RawRepresentable.swift
[32/36] Compiling EFStorageUserDefaults UserDefaults+NSCoding.swift
[33/36] Compiling EFStorageUserDefaults UserDefaults+Primitives.swift
[34/36] Compiling EFStorageUserDefaults UserDefaults+Codable.swift
[35/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 non-isolated 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 non-isolated 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()
[36/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 non-isolated 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 non-isolated 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()
Build complete! (26.72s)
Fetching https://github.com/kishikawakatsumi/KeychainAccess.git
Fetching https://github.com/EFPrefix/YYCache.git
[1/472] Fetching yycache
[115/4863] Fetching yycache, keychainaccess
Fetched https://github.com/kishikawakatsumi/KeychainAccess.git from cache (1.58s)
Fetched https://github.com/EFPrefix/YYCache.git from cache (1.58s)
Computing version for https://github.com/EFPrefix/YYCache.git
Computed https://github.com/EFPrefix/YYCache.git at 1.0.5 (0.67s)
Computing version for https://github.com/kishikawakatsumi/KeychainAccess.git
Computed https://github.com/kishikawakatsumi/KeychainAccess.git at 3.2.0 (2.64s)
Creating working copy for https://github.com/kishikawakatsumi/KeychainAccess.git
Working copy of https://github.com/kishikawakatsumi/KeychainAccess.git resolved at 3.2.0
Creating working copy for https://github.com/EFPrefix/YYCache.git
Working copy of https://github.com/EFPrefix/YYCache.git resolved at 1.0.5
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.
This is a staging environment. For live and up-to-date package information, visit swiftpackageindex.com.