Build Information
Failed to build Valet, reference 5.1.0 (246baf), with Swift 6.1 for Android on 20 Feb 2026 20:41:34 UTC.
Build Command
bash -c docker run --pull=always --rm -v "checkouts-4609320-2":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/finestructure/spi-images:android-6.1-latest swift build --swift-sdk aarch64-unknown-linux-android24 2>&1Build Log
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:62:38: error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
61 | case .whenPasscodeSetThisDeviceOnly:
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:64:38: error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
| `- error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:66:38: error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
67 | }
68 |
[19/20] Compiling Valet CloudAccessibility.swift
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:54:37: error: cannot find type 'CFString' in scope
52 |
53 | public var secAccessibilityAttribute: String {
54 | let accessibilityAttribute: CFString
| `- error: cannot find type 'CFString' in scope
55 |
56 | switch self {
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:58:38: error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
56 | switch self {
57 | case .afterFirstUnlock:
58 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlock
| `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
59 | case .afterFirstUnlockThisDeviceOnly:
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:60:38: error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
58 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlock
59 | case .afterFirstUnlockThisDeviceOnly:
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
61 | case .whenPasscodeSetThisDeviceOnly:
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:62:38: error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
61 | case .whenPasscodeSetThisDeviceOnly:
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:64:38: error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
| `- error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:66:38: error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
67 | }
68 |
[20/20] Compiling Valet Identifier.swift
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:54:37: error: cannot find type 'CFString' in scope
52 |
53 | public var secAccessibilityAttribute: String {
54 | let accessibilityAttribute: CFString
| `- error: cannot find type 'CFString' in scope
55 |
56 | switch self {
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:58:38: error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
56 | switch self {
57 | case .afterFirstUnlock:
58 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlock
| `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
59 | case .afterFirstUnlockThisDeviceOnly:
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:60:38: error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
58 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlock
59 | case .afterFirstUnlockThisDeviceOnly:
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
61 | case .whenPasscodeSetThisDeviceOnly:
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:62:38: error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
61 | case .whenPasscodeSetThisDeviceOnly:
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:64:38: error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
| `- error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:66:38: error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
67 | }
68 |
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-2":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/finestructure/spi-images:android-6.1-latest swift build --swift-sdk aarch64-unknown-linux-android24 2>&1
android-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:08fa5f1bd27c53c71ebe7c2842e29d52715d90da2c5b8f52513c9039c232613d
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:android-6.1-latest
[0/1] Planning build
Building for debugging...
[0/1] Write swift-version-24593BA9C3E375BF.txt
[2/17] Compiling Valet SecItem.swift
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:59:72: error: cannot find type 'OSStatus' in scope
57 | }
58 |
59 | static func performCopy(matching query: [String : AnyHashable]) -> OSStatus {
| `- error: cannot find type 'OSStatus' in scope
60 | guard !query.isEmpty else {
61 | // Must provide a query with at least one item
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:38:22: error: cannot find 'errSecNotAvailable' in scope
36 | }
37 |
38 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
39 | var result: AnyObject? = nil
40 | execute(in: secItemLock) {
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:41:22: error: cannot find 'SecItemCopyMatching' in scope
39 | var result: AnyObject? = nil
40 | execute(in: secItemLock) {
41 | status = SecItemCopyMatching(query as CFDictionary, &result)
| `- error: cannot find 'SecItemCopyMatching' in scope
42 | }
43 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:41:51: error: cannot find type 'CFDictionary' in scope
39 | var result: AnyObject? = nil
40 | execute(in: secItemLock) {
41 | status = SecItemCopyMatching(query as CFDictionary, &result)
| `- error: cannot find type 'CFDictionary' in scope
42 | }
43 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:44:22: error: cannot find 'errSecSuccess' in scope
42 | }
43 |
44 | if status == errSecSuccess {
| `- error: cannot find 'errSecSuccess' in scope
45 | if let result = result as? DesiredType {
46 | return result
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:37:18: error: cannot find type 'OSStatus' in scope
35 | case emptyValue
36 |
37 | init(status: OSStatus) {
| `- error: cannot find type 'OSStatus' in scope
38 | switch status {
39 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:55:19: error: no exact matches in call to initializer
53 |
54 | } else {
55 | throw KeychainError(status: status)
| `- error: no exact matches in call to initializer
56 | }
57 | }
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
1 | protocol __BridgedNSError {
2 | public init?(_bridgedNSError: NSError)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
3 |
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
1 | protocol __BridgedNSError {
2 | public init?(rawValue: Self.RawValue)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
3 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:55:19: error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
53 |
54 | } else {
55 | throw KeychainError(status: status)
| |- error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
| |- note: coalesce using '??' to provide a default when the optional value contains 'nil'
| `- note: force-unwrap using '!' to abort execution if the optional value contains 'nil'
56 | }
57 | }
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:65:22: error: cannot find 'errSecNotAvailable' in scope
63 | }
64 |
65 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
66 | execute(in: secItemLock) {
67 | status = SecItemCopyMatching(query as CFDictionary, nil)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:67:22: error: cannot find 'SecItemCopyMatching' in scope
65 | var status = errSecNotAvailable
66 | execute(in: secItemLock) {
67 | status = SecItemCopyMatching(query as CFDictionary, nil)
| `- error: cannot find 'SecItemCopyMatching' in scope
68 | }
69 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:67:51: error: cannot find type 'CFDictionary' in scope
65 | var status = errSecNotAvailable
66 | execute(in: secItemLock) {
67 | status = SecItemCopyMatching(query as CFDictionary, nil)
| `- error: cannot find type 'CFDictionary' in scope
68 | }
69 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:67:65: error: 'nil' requires a contextual type
65 | var status = errSecNotAvailable
66 | execute(in: secItemLock) {
67 | status = SecItemCopyMatching(query as CFDictionary, nil)
| `- error: 'nil' requires a contextual type
68 | }
69 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:78:22: error: cannot find 'errSecNotAvailable' in scope
76 | }
77 |
78 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
79 | var result: AnyObject? = nil
80 | execute(in: secItemLock) {
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:81:22: error: cannot find 'SecItemAdd' in scope
79 | var result: AnyObject? = nil
80 | execute(in: secItemLock) {
81 | status = SecItemAdd(attributes as CFDictionary, &result)
| `- error: cannot find 'SecItemAdd' in scope
82 | }
83 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:81:47: error: cannot find type 'CFDictionary' in scope
79 | var result: AnyObject? = nil
80 | execute(in: secItemLock) {
81 | status = SecItemAdd(attributes as CFDictionary, &result)
| `- error: cannot find type 'CFDictionary' in scope
82 | }
83 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:85:14: error: cannot find 'errSecSuccess' in scope
83 |
84 | switch status {
85 | case errSecSuccess:
| `- error: cannot find 'errSecSuccess' in scope
86 | // We're done!
87 | break
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:89:19: error: no exact matches in call to initializer
87 | break
88 | default:
89 | throw KeychainError(status: status)
| `- error: no exact matches in call to initializer
90 | }
91 | }
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
1 | protocol __BridgedNSError {
2 | public init?(_bridgedNSError: NSError)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
3 |
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
1 | protocol __BridgedNSError {
2 | public init?(rawValue: Self.RawValue)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
3 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:89:19: error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
87 | break
88 | default:
89 | throw KeychainError(status: status)
| |- error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
| |- note: coalesce using '??' to provide a default when the optional value contains 'nil'
| `- note: force-unwrap using '!' to abort execution if the optional value contains 'nil'
90 | }
91 | }
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:102:22: error: cannot find 'errSecNotAvailable' in scope
100 | }
101 |
102 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
103 | execute(in: secItemLock) {
104 | status = SecItemUpdate(query as CFDictionary, attributes as CFDictionary)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:104:22: error: cannot find 'SecItemUpdate' in scope
102 | var status = errSecNotAvailable
103 | execute(in: secItemLock) {
104 | status = SecItemUpdate(query as CFDictionary, attributes as CFDictionary)
| `- error: cannot find 'SecItemUpdate' in scope
105 | }
106 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:104:45: error: cannot find type 'CFDictionary' in scope
102 | var status = errSecNotAvailable
103 | execute(in: secItemLock) {
104 | status = SecItemUpdate(query as CFDictionary, attributes as CFDictionary)
| `- error: cannot find type 'CFDictionary' in scope
105 | }
106 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:104:73: error: cannot find type 'CFDictionary' in scope
102 | var status = errSecNotAvailable
103 | execute(in: secItemLock) {
104 | status = SecItemUpdate(query as CFDictionary, attributes as CFDictionary)
| `- error: cannot find type 'CFDictionary' in scope
105 | }
106 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:108:14: error: cannot find 'errSecSuccess' in scope
106 |
107 | switch status {
108 | case errSecSuccess:
| `- error: cannot find 'errSecSuccess' in scope
109 | // We're done!
110 | break
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:112:19: error: no exact matches in call to initializer
110 | break
111 | default:
112 | throw KeychainError(status: status)
| `- error: no exact matches in call to initializer
113 | }
114 | }
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
1 | protocol __BridgedNSError {
2 | public init?(_bridgedNSError: NSError)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
3 |
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
1 | protocol __BridgedNSError {
2 | public init?(rawValue: Self.RawValue)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
3 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:112:19: error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
110 | break
111 | default:
112 | throw KeychainError(status: status)
| |- error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
| |- note: coalesce using '??' to provide a default when the optional value contains 'nil'
| `- note: force-unwrap using '!' to abort execution if the optional value contains 'nil'
113 | }
114 | }
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:126:22: error: cannot find 'errSecNotAvailable' in scope
124 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
125 | #endif
126 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
127 | execute(in: secItemLock) {
128 | status = SecItemDelete(secItemQuery as CFDictionary)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:128:22: error: cannot find 'SecItemDelete' in scope
126 | var status = errSecNotAvailable
127 | execute(in: secItemLock) {
128 | status = SecItemDelete(secItemQuery as CFDictionary)
| `- error: cannot find 'SecItemDelete' in scope
129 | }
130 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:128:52: error: cannot find type 'CFDictionary' in scope
126 | var status = errSecNotAvailable
127 | execute(in: secItemLock) {
128 | status = SecItemDelete(secItemQuery as CFDictionary)
| `- error: cannot find type 'CFDictionary' in scope
129 | }
130 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:131:22: error: cannot find 'errSecSuccess' in scope
129 | }
130 |
131 | if status == errSecSuccess {
| `- error: cannot find 'errSecSuccess' in scope
132 | // We're done!
133 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:135:20: error: no exact matches in call to initializer
133 |
134 | } else {
135 | switch KeychainError(status: status) {
| `- error: no exact matches in call to initializer
136 | case .couldNotAccessKeychain:
137 | throw KeychainError.couldNotAccessKeychain
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
1 | protocol __BridgedNSError {
2 | public init?(_bridgedNSError: NSError)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
3 |
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
1 | protocol __BridgedNSError {
2 | public init?(rawValue: Self.RawValue)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
3 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:60:13: error: cannot find 'kSecClass' in scope
58 | func generateBaseQuery() -> [String : AnyHashable] {
59 | var baseQuery: [String : AnyHashable] = [
60 | kSecClass as String : kSecClassGenericPassword as String,
| `- error: cannot find 'kSecClass' in scope
61 | kSecAttrService as String : secService,
62 | ]
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:60:35: error: cannot find 'kSecClassGenericPassword' in scope
58 | func generateBaseQuery() -> [String : AnyHashable] {
59 | var baseQuery: [String : AnyHashable] = [
60 | kSecClass as String : kSecClassGenericPassword as String,
| `- error: cannot find 'kSecClassGenericPassword' in scope
61 | kSecAttrService as String : secService,
62 | ]
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:61:13: error: cannot find 'kSecAttrService' in scope
59 | var baseQuery: [String : AnyHashable] = [
60 | kSecClass as String : kSecClassGenericPassword as String,
61 | kSecAttrService as String : secService,
| `- error: cannot find 'kSecAttrService' in scope
62 | ]
63 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:65:23: error: cannot find 'kSecUseDataProtectionKeychain' in scope
63 |
64 | if #available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) {
65 | baseQuery[kSecUseDataProtectionKeychain as String] = true
| `- error: cannot find 'kSecUseDataProtectionKeychain' in scope
66 | }
67 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:74:23: error: cannot find 'kSecAttrAccessGroup' in scope
72 |
73 | case let .sharedGroup(groupIdentifier, _, desiredConfiguration):
74 | baseQuery[kSecAttrAccessGroup as String] = groupIdentifier.description
| `- error: cannot find 'kSecAttrAccessGroup' in scope
75 | configuration = desiredConfiguration
76 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:81:23: error: cannot find 'kSecAttrAccessGroup' in scope
79 |
80 | case let .sharedGroupOverride(identifier, desiredConfiguration):
81 | baseQuery[kSecAttrAccessGroup as String] = identifier.description
| `- error: cannot find 'kSecAttrAccessGroup' in scope
82 | configuration = desiredConfiguration
83 | }
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:87:23: error: cannot find 'kSecAttrAccessible' in scope
85 | switch configuration {
86 | case .valet:
87 | baseQuery[kSecAttrAccessible as String] = configuration.accessibility.secAccessibilityAttribute
| `- error: cannot find 'kSecAttrAccessible' in scope
88 |
89 | case .iCloud:
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:90:23: error: cannot find 'kSecAttrSynchronizable' in scope
88 |
89 | case .iCloud:
90 | baseQuery[kSecAttrSynchronizable as String] = true
| `- error: cannot find 'kSecAttrSynchronizable' in scope
91 | baseQuery[kSecAttrAccessible as String] = configuration.accessibility.secAccessibilityAttribute
92 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:91:23: error: cannot find 'kSecAttrAccessible' in scope
89 | case .iCloud:
90 | baseQuery[kSecAttrSynchronizable as String] = true
91 | baseQuery[kSecAttrAccessible as String] = configuration.accessibility.secAccessibilityAttribute
| `- error: cannot find 'kSecAttrAccessible' in scope
92 |
93 | case let .secureEnclave(desiredAccessControl),
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:96:23: error: cannot find 'kSecAttrAccessControl' in scope
94 | let .singlePromptSecureEnclave(desiredAccessControl):
95 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
96 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: cannot find 'kSecAttrAccessControl' in scope
97 | }
98 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:96:58: error: cannot find 'SecAccessControlCreateWithFlags' in scope
94 | let .singlePromptSecureEnclave(desiredAccessControl):
95 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
96 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: cannot find 'SecAccessControlCreateWithFlags' in scope
97 | }
98 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:96:95: error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
94 | let .singlePromptSecureEnclave(desiredAccessControl):
95 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
96 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
97 | }
98 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveAccessControl.swift:55:27: error: cannot find type 'SecAccessControlCreateFlags' in scope
53 | // MARK: Internal Properties
54 |
55 | var secAccessControl: SecAccessControlCreateFlags {
| `- error: cannot find type 'SecAccessControlCreateFlags' in scope
56 | switch self {
57 | case .userPresence:
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:96:90: error: 'nil' requires a contextual type
94 | let .singlePromptSecureEnclave(desiredAccessControl):
95 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
96 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: 'nil' requires a contextual type
97 | }
98 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:96:183: error: 'nil' requires a contextual type
94 | let .singlePromptSecureEnclave(desiredAccessControl):
95 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
96 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: 'nil' requires a contextual type
97 | }
98 |
[3/17] Compiling Valet Service.swift
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:59:72: error: cannot find type 'OSStatus' in scope
57 | }
58 |
59 | static func performCopy(matching query: [String : AnyHashable]) -> OSStatus {
| `- error: cannot find type 'OSStatus' in scope
60 | guard !query.isEmpty else {
61 | // Must provide a query with at least one item
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:38:22: error: cannot find 'errSecNotAvailable' in scope
36 | }
37 |
38 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
39 | var result: AnyObject? = nil
40 | execute(in: secItemLock) {
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:41:22: error: cannot find 'SecItemCopyMatching' in scope
39 | var result: AnyObject? = nil
40 | execute(in: secItemLock) {
41 | status = SecItemCopyMatching(query as CFDictionary, &result)
| `- error: cannot find 'SecItemCopyMatching' in scope
42 | }
43 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:41:51: error: cannot find type 'CFDictionary' in scope
39 | var result: AnyObject? = nil
40 | execute(in: secItemLock) {
41 | status = SecItemCopyMatching(query as CFDictionary, &result)
| `- error: cannot find type 'CFDictionary' in scope
42 | }
43 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:44:22: error: cannot find 'errSecSuccess' in scope
42 | }
43 |
44 | if status == errSecSuccess {
| `- error: cannot find 'errSecSuccess' in scope
45 | if let result = result as? DesiredType {
46 | return result
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:37:18: error: cannot find type 'OSStatus' in scope
35 | case emptyValue
36 |
37 | init(status: OSStatus) {
| `- error: cannot find type 'OSStatus' in scope
38 | switch status {
39 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:55:19: error: no exact matches in call to initializer
53 |
54 | } else {
55 | throw KeychainError(status: status)
| `- error: no exact matches in call to initializer
56 | }
57 | }
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
1 | protocol __BridgedNSError {
2 | public init?(_bridgedNSError: NSError)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
3 |
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
1 | protocol __BridgedNSError {
2 | public init?(rawValue: Self.RawValue)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
3 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:55:19: error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
53 |
54 | } else {
55 | throw KeychainError(status: status)
| |- error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
| |- note: coalesce using '??' to provide a default when the optional value contains 'nil'
| `- note: force-unwrap using '!' to abort execution if the optional value contains 'nil'
56 | }
57 | }
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:65:22: error: cannot find 'errSecNotAvailable' in scope
63 | }
64 |
65 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
66 | execute(in: secItemLock) {
67 | status = SecItemCopyMatching(query as CFDictionary, nil)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:67:22: error: cannot find 'SecItemCopyMatching' in scope
65 | var status = errSecNotAvailable
66 | execute(in: secItemLock) {
67 | status = SecItemCopyMatching(query as CFDictionary, nil)
| `- error: cannot find 'SecItemCopyMatching' in scope
68 | }
69 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:67:51: error: cannot find type 'CFDictionary' in scope
65 | var status = errSecNotAvailable
66 | execute(in: secItemLock) {
67 | status = SecItemCopyMatching(query as CFDictionary, nil)
| `- error: cannot find type 'CFDictionary' in scope
68 | }
69 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:67:65: error: 'nil' requires a contextual type
65 | var status = errSecNotAvailable
66 | execute(in: secItemLock) {
67 | status = SecItemCopyMatching(query as CFDictionary, nil)
| `- error: 'nil' requires a contextual type
68 | }
69 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:78:22: error: cannot find 'errSecNotAvailable' in scope
76 | }
77 |
78 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
79 | var result: AnyObject? = nil
80 | execute(in: secItemLock) {
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:81:22: error: cannot find 'SecItemAdd' in scope
79 | var result: AnyObject? = nil
80 | execute(in: secItemLock) {
81 | status = SecItemAdd(attributes as CFDictionary, &result)
| `- error: cannot find 'SecItemAdd' in scope
82 | }
83 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:81:47: error: cannot find type 'CFDictionary' in scope
79 | var result: AnyObject? = nil
80 | execute(in: secItemLock) {
81 | status = SecItemAdd(attributes as CFDictionary, &result)
| `- error: cannot find type 'CFDictionary' in scope
82 | }
83 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:85:14: error: cannot find 'errSecSuccess' in scope
83 |
84 | switch status {
85 | case errSecSuccess:
| `- error: cannot find 'errSecSuccess' in scope
86 | // We're done!
87 | break
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:89:19: error: no exact matches in call to initializer
87 | break
88 | default:
89 | throw KeychainError(status: status)
| `- error: no exact matches in call to initializer
90 | }
91 | }
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
1 | protocol __BridgedNSError {
2 | public init?(_bridgedNSError: NSError)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
3 |
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
1 | protocol __BridgedNSError {
2 | public init?(rawValue: Self.RawValue)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
3 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:89:19: error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
87 | break
88 | default:
89 | throw KeychainError(status: status)
| |- error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
| |- note: coalesce using '??' to provide a default when the optional value contains 'nil'
| `- note: force-unwrap using '!' to abort execution if the optional value contains 'nil'
90 | }
91 | }
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:102:22: error: cannot find 'errSecNotAvailable' in scope
100 | }
101 |
102 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
103 | execute(in: secItemLock) {
104 | status = SecItemUpdate(query as CFDictionary, attributes as CFDictionary)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:104:22: error: cannot find 'SecItemUpdate' in scope
102 | var status = errSecNotAvailable
103 | execute(in: secItemLock) {
104 | status = SecItemUpdate(query as CFDictionary, attributes as CFDictionary)
| `- error: cannot find 'SecItemUpdate' in scope
105 | }
106 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:104:45: error: cannot find type 'CFDictionary' in scope
102 | var status = errSecNotAvailable
103 | execute(in: secItemLock) {
104 | status = SecItemUpdate(query as CFDictionary, attributes as CFDictionary)
| `- error: cannot find type 'CFDictionary' in scope
105 | }
106 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:104:73: error: cannot find type 'CFDictionary' in scope
102 | var status = errSecNotAvailable
103 | execute(in: secItemLock) {
104 | status = SecItemUpdate(query as CFDictionary, attributes as CFDictionary)
| `- error: cannot find type 'CFDictionary' in scope
105 | }
106 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:108:14: error: cannot find 'errSecSuccess' in scope
106 |
107 | switch status {
108 | case errSecSuccess:
| `- error: cannot find 'errSecSuccess' in scope
109 | // We're done!
110 | break
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:112:19: error: no exact matches in call to initializer
110 | break
111 | default:
112 | throw KeychainError(status: status)
| `- error: no exact matches in call to initializer
113 | }
114 | }
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
1 | protocol __BridgedNSError {
2 | public init?(_bridgedNSError: NSError)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
3 |
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
1 | protocol __BridgedNSError {
2 | public init?(rawValue: Self.RawValue)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
3 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:112:19: error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
110 | break
111 | default:
112 | throw KeychainError(status: status)
| |- error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
| |- note: coalesce using '??' to provide a default when the optional value contains 'nil'
| `- note: force-unwrap using '!' to abort execution if the optional value contains 'nil'
113 | }
114 | }
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:126:22: error: cannot find 'errSecNotAvailable' in scope
124 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
125 | #endif
126 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
127 | execute(in: secItemLock) {
128 | status = SecItemDelete(secItemQuery as CFDictionary)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:128:22: error: cannot find 'SecItemDelete' in scope
126 | var status = errSecNotAvailable
127 | execute(in: secItemLock) {
128 | status = SecItemDelete(secItemQuery as CFDictionary)
| `- error: cannot find 'SecItemDelete' in scope
129 | }
130 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:128:52: error: cannot find type 'CFDictionary' in scope
126 | var status = errSecNotAvailable
127 | execute(in: secItemLock) {
128 | status = SecItemDelete(secItemQuery as CFDictionary)
| `- error: cannot find type 'CFDictionary' in scope
129 | }
130 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:131:22: error: cannot find 'errSecSuccess' in scope
129 | }
130 |
131 | if status == errSecSuccess {
| `- error: cannot find 'errSecSuccess' in scope
132 | // We're done!
133 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:135:20: error: no exact matches in call to initializer
133 |
134 | } else {
135 | switch KeychainError(status: status) {
| `- error: no exact matches in call to initializer
136 | case .couldNotAccessKeychain:
137 | throw KeychainError.couldNotAccessKeychain
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
1 | protocol __BridgedNSError {
2 | public init?(_bridgedNSError: NSError)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
3 |
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
1 | protocol __BridgedNSError {
2 | public init?(rawValue: Self.RawValue)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
3 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:60:13: error: cannot find 'kSecClass' in scope
58 | func generateBaseQuery() -> [String : AnyHashable] {
59 | var baseQuery: [String : AnyHashable] = [
60 | kSecClass as String : kSecClassGenericPassword as String,
| `- error: cannot find 'kSecClass' in scope
61 | kSecAttrService as String : secService,
62 | ]
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:60:35: error: cannot find 'kSecClassGenericPassword' in scope
58 | func generateBaseQuery() -> [String : AnyHashable] {
59 | var baseQuery: [String : AnyHashable] = [
60 | kSecClass as String : kSecClassGenericPassword as String,
| `- error: cannot find 'kSecClassGenericPassword' in scope
61 | kSecAttrService as String : secService,
62 | ]
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:61:13: error: cannot find 'kSecAttrService' in scope
59 | var baseQuery: [String : AnyHashable] = [
60 | kSecClass as String : kSecClassGenericPassword as String,
61 | kSecAttrService as String : secService,
| `- error: cannot find 'kSecAttrService' in scope
62 | ]
63 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:65:23: error: cannot find 'kSecUseDataProtectionKeychain' in scope
63 |
64 | if #available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) {
65 | baseQuery[kSecUseDataProtectionKeychain as String] = true
| `- error: cannot find 'kSecUseDataProtectionKeychain' in scope
66 | }
67 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:74:23: error: cannot find 'kSecAttrAccessGroup' in scope
72 |
73 | case let .sharedGroup(groupIdentifier, _, desiredConfiguration):
74 | baseQuery[kSecAttrAccessGroup as String] = groupIdentifier.description
| `- error: cannot find 'kSecAttrAccessGroup' in scope
75 | configuration = desiredConfiguration
76 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:81:23: error: cannot find 'kSecAttrAccessGroup' in scope
79 |
80 | case let .sharedGroupOverride(identifier, desiredConfiguration):
81 | baseQuery[kSecAttrAccessGroup as String] = identifier.description
| `- error: cannot find 'kSecAttrAccessGroup' in scope
82 | configuration = desiredConfiguration
83 | }
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:87:23: error: cannot find 'kSecAttrAccessible' in scope
85 | switch configuration {
86 | case .valet:
87 | baseQuery[kSecAttrAccessible as String] = configuration.accessibility.secAccessibilityAttribute
| `- error: cannot find 'kSecAttrAccessible' in scope
88 |
89 | case .iCloud:
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:90:23: error: cannot find 'kSecAttrSynchronizable' in scope
88 |
89 | case .iCloud:
90 | baseQuery[kSecAttrSynchronizable as String] = true
| `- error: cannot find 'kSecAttrSynchronizable' in scope
91 | baseQuery[kSecAttrAccessible as String] = configuration.accessibility.secAccessibilityAttribute
92 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:91:23: error: cannot find 'kSecAttrAccessible' in scope
89 | case .iCloud:
90 | baseQuery[kSecAttrSynchronizable as String] = true
91 | baseQuery[kSecAttrAccessible as String] = configuration.accessibility.secAccessibilityAttribute
| `- error: cannot find 'kSecAttrAccessible' in scope
92 |
93 | case let .secureEnclave(desiredAccessControl),
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:96:23: error: cannot find 'kSecAttrAccessControl' in scope
94 | let .singlePromptSecureEnclave(desiredAccessControl):
95 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
96 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: cannot find 'kSecAttrAccessControl' in scope
97 | }
98 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:96:58: error: cannot find 'SecAccessControlCreateWithFlags' in scope
94 | let .singlePromptSecureEnclave(desiredAccessControl):
95 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
96 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: cannot find 'SecAccessControlCreateWithFlags' in scope
97 | }
98 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:96:95: error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
94 | let .singlePromptSecureEnclave(desiredAccessControl):
95 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
96 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
97 | }
98 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveAccessControl.swift:55:27: error: cannot find type 'SecAccessControlCreateFlags' in scope
53 | // MARK: Internal Properties
54 |
55 | var secAccessControl: SecAccessControlCreateFlags {
| `- error: cannot find type 'SecAccessControlCreateFlags' in scope
56 | switch self {
57 | case .userPresence:
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:96:90: error: 'nil' requires a contextual type
94 | let .singlePromptSecureEnclave(desiredAccessControl):
95 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
96 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: 'nil' requires a contextual type
97 | }
98 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:96:183: error: 'nil' requires a contextual type
94 | let .singlePromptSecureEnclave(desiredAccessControl):
95 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
96 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: 'nil' requires a contextual type
97 | }
98 |
[4/17] Compiling Valet SecureEnclave.swift
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveAccessControl.swift:55:27: error: cannot find type 'SecAccessControlCreateFlags' in scope
53 | // MARK: Internal Properties
54 |
55 | var secAccessControl: SecAccessControlCreateFlags {
| `- error: cannot find type 'SecAccessControlCreateFlags' in scope
56 | switch self {
57 | case .userPresence:
[5/17] Compiling Valet SecureEnclaveAccessControl.swift
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveAccessControl.swift:55:27: error: cannot find type 'SecAccessControlCreateFlags' in scope
53 | // MARK: Internal Properties
54 |
55 | var secAccessControl: SecAccessControlCreateFlags {
| `- error: cannot find type 'SecAccessControlCreateFlags' in scope
56 | switch self {
57 | case .userPresence:
[6/17] Compiling Valet WeakStorage.swift
/host/spi-builder-workspace/Sources/Valet/Internal/WeakStorage.swift:35:40: error: cannot find 'NSMapTable' in scope
33 |
34 | private let lock = NSLock()
35 | private let identifierToValetMap = NSMapTable<NSString, T>.strongToWeakObjects()
| `- error: cannot find 'NSMapTable' in scope
36 | }
37 |
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:37:18: error: cannot find type 'OSStatus' in scope
35 | case emptyValue
36 |
37 | init(status: OSStatus) {
| `- error: cannot find type 'OSStatus' in scope
38 | switch status {
39 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:39:14: error: cannot find 'errSecItemNotFound' in scope
37 | init(status: OSStatus) {
38 | switch status {
39 | case errSecItemNotFound:
| `- error: cannot find 'errSecItemNotFound' in scope
40 | self = .itemNotFound
41 | case errSecUserCanceled,
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:41:14: error: cannot find 'errSecUserCanceled' in scope
39 | case errSecItemNotFound:
40 | self = .itemNotFound
41 | case errSecUserCanceled,
| `- error: cannot find 'errSecUserCanceled' in scope
42 | errSecAuthFailed:
43 | self = .userCancelled
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:42:14: error: cannot find 'errSecAuthFailed' in scope
40 | self = .itemNotFound
41 | case errSecUserCanceled,
42 | errSecAuthFailed:
| `- error: cannot find 'errSecAuthFailed' in scope
43 | self = .userCancelled
44 | case errSecMissingEntitlement:
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:44:14: error: cannot find 'errSecMissingEntitlement' in scope
42 | errSecAuthFailed:
43 | self = .userCancelled
44 | case errSecMissingEntitlement:
| `- error: cannot find 'errSecMissingEntitlement' in scope
45 | self = .missingEntitlement
46 | default:
[7/17] Compiling Valet KeychainError.swift
/host/spi-builder-workspace/Sources/Valet/Internal/WeakStorage.swift:35:40: error: cannot find 'NSMapTable' in scope
33 |
34 | private let lock = NSLock()
35 | private let identifierToValetMap = NSMapTable<NSString, T>.strongToWeakObjects()
| `- error: cannot find 'NSMapTable' in scope
36 | }
37 |
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:37:18: error: cannot find type 'OSStatus' in scope
35 | case emptyValue
36 |
37 | init(status: OSStatus) {
| `- error: cannot find type 'OSStatus' in scope
38 | switch status {
39 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:39:14: error: cannot find 'errSecItemNotFound' in scope
37 | init(status: OSStatus) {
38 | switch status {
39 | case errSecItemNotFound:
| `- error: cannot find 'errSecItemNotFound' in scope
40 | self = .itemNotFound
41 | case errSecUserCanceled,
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:41:14: error: cannot find 'errSecUserCanceled' in scope
39 | case errSecItemNotFound:
40 | self = .itemNotFound
41 | case errSecUserCanceled,
| `- error: cannot find 'errSecUserCanceled' in scope
42 | errSecAuthFailed:
43 | self = .userCancelled
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:42:14: error: cannot find 'errSecAuthFailed' in scope
40 | self = .itemNotFound
41 | case errSecUserCanceled,
42 | errSecAuthFailed:
| `- error: cannot find 'errSecAuthFailed' in scope
43 | self = .userCancelled
44 | case errSecMissingEntitlement:
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:44:14: error: cannot find 'errSecMissingEntitlement' in scope
42 | errSecAuthFailed:
43 | self = .userCancelled
44 | case errSecMissingEntitlement:
| `- error: cannot find 'errSecMissingEntitlement' in scope
45 | self = .missingEntitlement
46 | default:
[8/17] Compiling Valet SecureEnclaveValet.swift
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:21:2: error: Objective-C interoperability is disabled
19 |
20 | /// Reads and writes keychain elements that are stored on the Secure Enclave using Accessibility attribute `.whenPasscodeSetThisDeviceOnly`. Accessing these keychain elements will require the user to confirm their presence via Touch ID, Face ID, or passcode entry. If no passcode is set on the device, accessing the keychain via a `SecureEnclaveValet` will fail. Data is removed from the Secure Enclave when the user removes a passcode from the device.
21 | @objc(VALSecureEnclaveValet)
| `- error: Objective-C interoperability is disabled
22 | public final class SecureEnclaveValet: NSObject, Sendable {
23 |
/host/spi-builder-workspace/Sources/Valet/Internal/WeakStorage.swift:35:40: error: cannot find 'NSMapTable' in scope
33 |
34 | private let lock = NSLock()
35 | private let identifierToValetMap = NSMapTable<NSString, T>.strongToWeakObjects()
| `- error: cannot find 'NSMapTable' in scope
36 | }
37 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:107:6: error: Objective-C interoperability is disabled
105 |
106 | public let identifier: Identifier
107 | @objc
| `- error: Objective-C interoperability is disabled
108 | public let accessControl: SecureEnclaveAccessControl
109 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:114:6: error: Objective-C interoperability is disabled
112 | /// - Returns: `true` if the keychain is accessible for reading and writing, `false` otherwise.
113 | /// - Note: Determined by writing a value to the keychain and then reading it back out. Will never prompt the user for Face ID, Touch ID, or password.
114 | @objc
| `- error: Objective-C interoperability is disabled
115 | public func canAccessKeychain() -> Bool {
116 | SecureEnclave.canAccessKeychain(with: service)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:138:6: error: Objective-C interoperability is disabled
136 | /// - Important: Inserted data should be no larger than 4kb.
137 | @available(swift, obsoleted: 1.0)
138 | @objc(setObject:forKey:error:)
| `- error: Objective-C interoperability is disabled
139 | public func objc_setObject(_ object: Data, forKey key: String) throws {
140 | try setObject(object, forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:183:6: error: Objective-C interoperability is disabled
181 | /// - Throws: An error of type `KeychainError`.
182 | @available(swift, obsoleted: 1.0)
183 | @objc(objectForKey:error:)
| `- error: Objective-C interoperability is disabled
184 | public func objc_object(forKey key: String) throws -> Data {
185 | try object(forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:222:6: error: Objective-C interoperability is disabled
220 | /// - Important: Inserted data should be no larger than 4kb.
221 | @available(swift, obsoleted: 1.0)
222 | @objc(setString:forKey:error:)
| `- error: Objective-C interoperability is disabled
223 | public func objc_setString(_ string: String, forKey key: String) throws {
224 | try setString(string, forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:261:6: error: Objective-C interoperability is disabled
259 | /// - Throws: An error of type `KeychainError`.
260 | @available(swift, obsoleted: 1.0)
261 | @objc(stringForKey:error:)
| `- error: Objective-C interoperability is disabled
262 | public func objc_string(forKey key: String) throws -> String {
263 | try string(forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:282:6: error: Objective-C interoperability is disabled
280 | /// - Throws: An error of type `KeychainError`.
281 | @available(swift, obsoleted: 1.0)
282 | @objc(removeObjectForKey:error:)
| `- error: Objective-C interoperability is disabled
283 | public func objc_removeObject(forKey key: String) throws {
284 | try removeObject(forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:300:6: error: Objective-C interoperability is disabled
298 | /// - Throws: An error of type `KeychainError`.
299 | @available(swift, obsoleted: 1.0)
300 | @objc(removeAllObjectsAndReturnError:)
| `- error: Objective-C interoperability is disabled
301 | public func objc_removeAllObjects() throws {
302 | try removeAllObjects()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:311:6: error: Objective-C interoperability is disabled
309 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
310 | /// - Note: The keychain is not modified if an error is thrown.
311 | @objc
| `- error: Objective-C interoperability is disabled
312 | public func migrateObjects(matching query: [String : AnyHashable], removeOnCompletion: Bool) throws {
313 | try execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:324:6: error: Objective-C interoperability is disabled
322 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
323 | /// - Note: The keychain is not modified if an error is thrown.
324 | @objc
| `- error: Objective-C interoperability is disabled
325 | public func migrateObjects(from valet: Valet, removeOnCompletion: Bool) throws {
326 | try migrateObjects(matching: valet.baseKeychainQuery, removeOnCompletion: removeOnCompletion)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:373:6: error: Objective-C interoperability is disabled
371 | /// - accessControl: The desired access control for the SecureEnclaveValet.
372 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements with the desired flavor.
373 | @objc(valetWithIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
374 | public class func 🚫swift_valet(with identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
375 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:387:6: error: Objective-C interoperability is disabled
385 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements that can be shared across applications written by the same development team.
386 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
387 | @objc(sharedGroupValetWithAppIDPrefix:sharedGroupIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
388 | public class func 🚫swift_sharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
389 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:401:6: error: Objective-C interoperability is disabled
399 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements that can be shared across applications written by the same development team.
400 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
401 | @objc(sharedGroupValetWithGroupPrefix:sharedGroupIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
402 | public class func 🚫swift_sharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
403 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
[9/17] Compiling Valet SharedGroupIdentifier.swift
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:21:2: error: Objective-C interoperability is disabled
19 |
20 | /// Reads and writes keychain elements that are stored on the Secure Enclave using Accessibility attribute `.whenPasscodeSetThisDeviceOnly`. Accessing these keychain elements will require the user to confirm their presence via Touch ID, Face ID, or passcode entry. If no passcode is set on the device, accessing the keychain via a `SecureEnclaveValet` will fail. Data is removed from the Secure Enclave when the user removes a passcode from the device.
21 | @objc(VALSecureEnclaveValet)
| `- error: Objective-C interoperability is disabled
22 | public final class SecureEnclaveValet: NSObject, Sendable {
23 |
/host/spi-builder-workspace/Sources/Valet/Internal/WeakStorage.swift:35:40: error: cannot find 'NSMapTable' in scope
33 |
34 | private let lock = NSLock()
35 | private let identifierToValetMap = NSMapTable<NSString, T>.strongToWeakObjects()
| `- error: cannot find 'NSMapTable' in scope
36 | }
37 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:107:6: error: Objective-C interoperability is disabled
105 |
106 | public let identifier: Identifier
107 | @objc
| `- error: Objective-C interoperability is disabled
108 | public let accessControl: SecureEnclaveAccessControl
109 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:114:6: error: Objective-C interoperability is disabled
112 | /// - Returns: `true` if the keychain is accessible for reading and writing, `false` otherwise.
113 | /// - Note: Determined by writing a value to the keychain and then reading it back out. Will never prompt the user for Face ID, Touch ID, or password.
114 | @objc
| `- error: Objective-C interoperability is disabled
115 | public func canAccessKeychain() -> Bool {
116 | SecureEnclave.canAccessKeychain(with: service)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:138:6: error: Objective-C interoperability is disabled
136 | /// - Important: Inserted data should be no larger than 4kb.
137 | @available(swift, obsoleted: 1.0)
138 | @objc(setObject:forKey:error:)
| `- error: Objective-C interoperability is disabled
139 | public func objc_setObject(_ object: Data, forKey key: String) throws {
140 | try setObject(object, forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:183:6: error: Objective-C interoperability is disabled
181 | /// - Throws: An error of type `KeychainError`.
182 | @available(swift, obsoleted: 1.0)
183 | @objc(objectForKey:error:)
| `- error: Objective-C interoperability is disabled
184 | public func objc_object(forKey key: String) throws -> Data {
185 | try object(forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:222:6: error: Objective-C interoperability is disabled
220 | /// - Important: Inserted data should be no larger than 4kb.
221 | @available(swift, obsoleted: 1.0)
222 | @objc(setString:forKey:error:)
| `- error: Objective-C interoperability is disabled
223 | public func objc_setString(_ string: String, forKey key: String) throws {
224 | try setString(string, forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:261:6: error: Objective-C interoperability is disabled
259 | /// - Throws: An error of type `KeychainError`.
260 | @available(swift, obsoleted: 1.0)
261 | @objc(stringForKey:error:)
| `- error: Objective-C interoperability is disabled
262 | public func objc_string(forKey key: String) throws -> String {
263 | try string(forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:282:6: error: Objective-C interoperability is disabled
280 | /// - Throws: An error of type `KeychainError`.
281 | @available(swift, obsoleted: 1.0)
282 | @objc(removeObjectForKey:error:)
| `- error: Objective-C interoperability is disabled
283 | public func objc_removeObject(forKey key: String) throws {
284 | try removeObject(forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:300:6: error: Objective-C interoperability is disabled
298 | /// - Throws: An error of type `KeychainError`.
299 | @available(swift, obsoleted: 1.0)
300 | @objc(removeAllObjectsAndReturnError:)
| `- error: Objective-C interoperability is disabled
301 | public func objc_removeAllObjects() throws {
302 | try removeAllObjects()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:311:6: error: Objective-C interoperability is disabled
309 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
310 | /// - Note: The keychain is not modified if an error is thrown.
311 | @objc
| `- error: Objective-C interoperability is disabled
312 | public func migrateObjects(matching query: [String : AnyHashable], removeOnCompletion: Bool) throws {
313 | try execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:324:6: error: Objective-C interoperability is disabled
322 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
323 | /// - Note: The keychain is not modified if an error is thrown.
324 | @objc
| `- error: Objective-C interoperability is disabled
325 | public func migrateObjects(from valet: Valet, removeOnCompletion: Bool) throws {
326 | try migrateObjects(matching: valet.baseKeychainQuery, removeOnCompletion: removeOnCompletion)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:373:6: error: Objective-C interoperability is disabled
371 | /// - accessControl: The desired access control for the SecureEnclaveValet.
372 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements with the desired flavor.
373 | @objc(valetWithIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
374 | public class func 🚫swift_valet(with identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
375 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:387:6: error: Objective-C interoperability is disabled
385 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements that can be shared across applications written by the same development team.
386 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
387 | @objc(sharedGroupValetWithAppIDPrefix:sharedGroupIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
388 | public class func 🚫swift_sharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
389 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:401:6: error: Objective-C interoperability is disabled
399 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements that can be shared across applications written by the same development team.
400 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
401 | @objc(sharedGroupValetWithGroupPrefix:sharedGroupIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
402 | public class func 🚫swift_sharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
403 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
error: emit-module command failed with exit code 1 (use -v to see invocation)
[10/19] Emitting module Valet
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:130:85: error: cannot find type 'OSStatus' in scope
128 | // MARK: Contains
129 |
130 | static func performCopy(forKey key: String, options: [String : AnyHashable]) -> OSStatus {
| `- error: cannot find type 'OSStatus' in scope
131 | guard !key.isEmpty else {
132 | return errSecParam
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:59:72: error: cannot find type 'OSStatus' in scope
57 | }
58 |
59 | static func performCopy(matching query: [String : AnyHashable]) -> OSStatus {
| `- error: cannot find type 'OSStatus' in scope
60 | guard !query.isEmpty else {
61 | // Must provide a query with at least one item
/host/spi-builder-workspace/Sources/Valet/Internal/WeakStorage.swift:35:40: error: cannot find 'NSMapTable' in scope
33 |
34 | private let lock = NSLock()
35 | private let identifierToValetMap = NSMapTable<NSString, T>.strongToWeakObjects()
| `- error: cannot find 'NSMapTable' in scope
36 | }
37 |
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:37:18: error: cannot find type 'OSStatus' in scope
35 | case emptyValue
36 |
37 | init(status: OSStatus) {
| `- error: cannot find type 'OSStatus' in scope
38 | switch status {
39 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:52:2: error: Objective-C interoperability is disabled
50 | // MARK: - Objective-C Compatibility
51 |
52 | @objc(VALMigratableKeyValuePairInput)
| `- error: Objective-C interoperability is disabled
53 | public final class ObjectiveCCompatibilityMigratableKeyValuePairInput: NSObject {
54 |
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:65:6: error: Objective-C interoperability is disabled
63 |
64 | /// The key in the key:value pair.
65 | @objc
| `- error: Objective-C interoperability is disabled
66 | public let key: Any
67 | /// The value in the key:value pair.
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:68:6: error: Objective-C interoperability is disabled
66 | public let key: Any
67 | /// The value in the key:value pair.
68 | @objc
| `- error: Objective-C interoperability is disabled
69 | public let value: Data
70 | }
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:72:2: error: Objective-C interoperability is disabled
70 | }
71 |
72 | @objc(VALMigratableKeyValuePairOutput)
| `- error: Objective-C interoperability is disabled
73 | public class ObjectiveCCompatibilityMigratableKeyValuePairOutput: NSObject {
74 |
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:81:6: error: Objective-C interoperability is disabled
79 | /// - key: The key in the key:value pair.
80 | /// - value: The value in the key:value pair.
81 | @objc
| `- error: Objective-C interoperability is disabled
82 | public init(key: String, value: Data) {
83 | self.key = key
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:92:6: error: Objective-C interoperability is disabled
90 | /// - key: The key in the key:value pair.
91 | /// - stringValue: The desired value in the key:value pair, represented as a String.
92 | @objc
| `- error: Objective-C interoperability is disabled
93 | public init(key: String, stringValue: String) {
94 | self.key = key
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:103:6: error: Objective-C interoperability is disabled
101 | /// A sentinal `ObjectiveCCompatibilityMigratableKeyValuePairOutput` that conveys that the migration should be prevented.
102 | @available(swift, obsoleted: 1.0)
103 | @objc
| `- error: Objective-C interoperability is disabled
104 | public static func preventMigration() -> ObjectiveCCompatibilityMigratableKeyValuePairOutput {
105 | ObjectiveCCompatibilityPreventMigrationOutput()
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:111:6: error: Objective-C interoperability is disabled
109 |
110 | /// The key in the key:value pair.
111 | @objc
| `- error: Objective-C interoperability is disabled
112 | public let key: String
113 | /// The value in the key:value pair.
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:114:6: error: Objective-C interoperability is disabled
112 | public let key: String
113 | /// The value in the key:value pair.
114 | @objc
| `- error: Objective-C interoperability is disabled
115 | public let value: Data
116 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveAccessControl.swift:55:27: error: cannot find type 'SecAccessControlCreateFlags' in scope
53 | // MARK: Internal Properties
54 |
55 | var secAccessControl: SecAccessControlCreateFlags {
| `- error: cannot find type 'SecAccessControlCreateFlags' in scope
56 | switch self {
57 | case .userPresence:
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:21:2: error: Objective-C interoperability is disabled
19 |
20 | /// Reads and writes keychain elements that are stored on the Secure Enclave using Accessibility attribute `.whenPasscodeSetThisDeviceOnly`. Accessing these keychain elements will require the user to confirm their presence via Touch ID, Face ID, or passcode entry. If no passcode is set on the device, accessing the keychain via a `SecureEnclaveValet` will fail. Data is removed from the Secure Enclave when the user removes a passcode from the device.
21 | @objc(VALSecureEnclaveValet)
| `- error: Objective-C interoperability is disabled
22 | public final class SecureEnclaveValet: NSObject, Sendable {
23 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:107:6: error: Objective-C interoperability is disabled
105 |
106 | public let identifier: Identifier
107 | @objc
| `- error: Objective-C interoperability is disabled
108 | public let accessControl: SecureEnclaveAccessControl
109 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:114:6: error: Objective-C interoperability is disabled
112 | /// - Returns: `true` if the keychain is accessible for reading and writing, `false` otherwise.
113 | /// - Note: Determined by writing a value to the keychain and then reading it back out. Will never prompt the user for Face ID, Touch ID, or password.
114 | @objc
| `- error: Objective-C interoperability is disabled
115 | public func canAccessKeychain() -> Bool {
116 | SecureEnclave.canAccessKeychain(with: service)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:138:6: error: Objective-C interoperability is disabled
136 | /// - Important: Inserted data should be no larger than 4kb.
137 | @available(swift, obsoleted: 1.0)
138 | @objc(setObject:forKey:error:)
| `- error: Objective-C interoperability is disabled
139 | public func objc_setObject(_ object: Data, forKey key: String) throws {
140 | try setObject(object, forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:183:6: error: Objective-C interoperability is disabled
181 | /// - Throws: An error of type `KeychainError`.
182 | @available(swift, obsoleted: 1.0)
183 | @objc(objectForKey:error:)
| `- error: Objective-C interoperability is disabled
184 | public func objc_object(forKey key: String) throws -> Data {
185 | try object(forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:222:6: error: Objective-C interoperability is disabled
220 | /// - Important: Inserted data should be no larger than 4kb.
221 | @available(swift, obsoleted: 1.0)
222 | @objc(setString:forKey:error:)
| `- error: Objective-C interoperability is disabled
223 | public func objc_setString(_ string: String, forKey key: String) throws {
224 | try setString(string, forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:261:6: error: Objective-C interoperability is disabled
259 | /// - Throws: An error of type `KeychainError`.
260 | @available(swift, obsoleted: 1.0)
261 | @objc(stringForKey:error:)
| `- error: Objective-C interoperability is disabled
262 | public func objc_string(forKey key: String) throws -> String {
263 | try string(forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:282:6: error: Objective-C interoperability is disabled
280 | /// - Throws: An error of type `KeychainError`.
281 | @available(swift, obsoleted: 1.0)
282 | @objc(removeObjectForKey:error:)
| `- error: Objective-C interoperability is disabled
283 | public func objc_removeObject(forKey key: String) throws {
284 | try removeObject(forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:300:6: error: Objective-C interoperability is disabled
298 | /// - Throws: An error of type `KeychainError`.
299 | @available(swift, obsoleted: 1.0)
300 | @objc(removeAllObjectsAndReturnError:)
| `- error: Objective-C interoperability is disabled
301 | public func objc_removeAllObjects() throws {
302 | try removeAllObjects()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:311:6: error: Objective-C interoperability is disabled
309 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
310 | /// - Note: The keychain is not modified if an error is thrown.
311 | @objc
| `- error: Objective-C interoperability is disabled
312 | public func migrateObjects(matching query: [String : AnyHashable], removeOnCompletion: Bool) throws {
313 | try execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:324:6: error: Objective-C interoperability is disabled
322 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
323 | /// - Note: The keychain is not modified if an error is thrown.
324 | @objc
| `- error: Objective-C interoperability is disabled
325 | public func migrateObjects(from valet: Valet, removeOnCompletion: Bool) throws {
326 | try migrateObjects(matching: valet.baseKeychainQuery, removeOnCompletion: removeOnCompletion)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:373:6: error: Objective-C interoperability is disabled
371 | /// - accessControl: The desired access control for the SecureEnclaveValet.
372 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements with the desired flavor.
373 | @objc(valetWithIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
374 | public class func 🚫swift_valet(with identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
375 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:387:6: error: Objective-C interoperability is disabled
385 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements that can be shared across applications written by the same development team.
386 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
387 | @objc(sharedGroupValetWithAppIDPrefix:sharedGroupIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
388 | public class func 🚫swift_sharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
389 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:401:6: error: Objective-C interoperability is disabled
399 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements that can be shared across applications written by the same development team.
400 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
401 | @objc(sharedGroupValetWithGroupPrefix:sharedGroupIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
402 | public class func 🚫swift_sharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
403 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:21:2: error: Objective-C interoperability is disabled
19 |
20 | /// Reads and writes keychain elements.
21 | @objc(VALValet)
| `- error: Objective-C interoperability is disabled
22 | public final class Valet: NSObject, Sendable {
23 |
/host/spi-builder-workspace/Sources/Valet/Valet.swift:228:6: error: Objective-C interoperability is disabled
226 | // MARK: Public Properties
227 |
228 | @objc
| `- error: Objective-C interoperability is disabled
229 | public let accessibility: Accessibility
230 | public let identifier: Identifier
/host/spi-builder-workspace/Sources/Valet/Valet.swift:236:6: error: Objective-C interoperability is disabled
234 | /// - Returns: `true` if the keychain is accessible for reading and writing, `false` otherwise.
235 | /// - Note: Determined by writing a value to the keychain and then reading it back out.
236 | @objc
| `- error: Objective-C interoperability is disabled
237 | public func canAccessKeychain() -> Bool {
238 | execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:262:6: error: Objective-C interoperability is disabled
260 | /// - Important: Inserted data should be no larger than 4kb.
261 | @available(swift, obsoleted: 1.0)
262 | @objc(setObject:forKey:error:)
| `- error: Objective-C interoperability is disabled
263 | public func objc_setObject(_ object: Data, forKey key: String) throws {
264 | try setObject(object, forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:282:6: error: Objective-C interoperability is disabled
280 | /// - Throws: An error of type `KeychainError`.
281 | @available(swift, obsoleted: 1.0)
282 | @objc(objectForKey:error:)
| `- error: Objective-C interoperability is disabled
283 | public func objc_object(forKey key: String) throws -> Data {
284 | try object(forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:325:6: error: Objective-C interoperability is disabled
323 | /// - Important: Inserted data should be no larger than 4kb.
324 | @available(swift, obsoleted: 1.0)
325 | @objc(setString:forKey:error:)
| `- error: Objective-C interoperability is disabled
326 | public func objc_setString(_ string: String, forKey key: String) throws {
327 | try setString(string, forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:344:6: error: Objective-C interoperability is disabled
342 | /// - Returns: The string currently stored in the keychain for the provided key.
343 | /// - Throws: An error of type `KeychainError`.
344 | @objc(stringForKey:error:)
| `- error: Objective-C interoperability is disabled
345 | public func objc_string(forKey key: String) throws -> String {
346 | try string(forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:362:6: error: Objective-C interoperability is disabled
360 | /// - Throws: An error of type `KeychainError`.
361 | @available(swift, obsoleted: 1.0)
362 | @objc(allKeysWithError:)
| `- error: Objective-C interoperability is disabled
363 | public func objc_allKeys() throws -> Set<String> {
364 | try allKeys()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:384:6: error: Objective-C interoperability is disabled
382 | /// - Note: No error is thrown if the `key` is not found in the keychain.
383 | @available(swift, obsoleted: 1.0)
384 | @objc(removeObjectForKey:error:)
| `- error: Objective-C interoperability is disabled
385 | public func objc_removeObject(forKey key: String) throws {
386 | try removeObject(forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:402:6: error: Objective-C interoperability is disabled
400 | /// - Throws: An error of type `KeychainError`.
401 | @available(swift, obsoleted: 1.0)
402 | @objc(removeAllObjectsAndReturnError:)
| `- error: Objective-C interoperability is disabled
403 | public func objc_removeAllObjects() throws {
404 | try removeAllObjects()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:425:6: error: Objective-C interoperability is disabled
423 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
424 | /// - Note: The keychain is not modified if an error is thrown.
425 | @objc
| `- error: Objective-C interoperability is disabled
426 | public func migrateObjects(matching query: [String : AnyHashable], removeOnCompletion: Bool) throws {
427 | try execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:450:6: error: Objective-C interoperability is disabled
448 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
449 | /// - Note: The keychain is not modified if an error is thrown.
450 | @objc
| `- error: Objective-C interoperability is disabled
451 | public func migrateObjects(from valet: Valet, removeOnCompletion: Bool) throws {
452 | try migrateObjects(matching: valet.baseKeychainQuery, removeOnCompletion: removeOnCompletion)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:460:6: error: Objective-C interoperability is disabled
458 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
459 | /// - Note: The keychain is not modified if an error is thrown.
460 | @objc
| `- error: Objective-C interoperability is disabled
461 | public func migrateObjectsFromAlwaysAccessibleValet(removeOnCompletion: Bool) throws {
462 | var keychainQuery = baseKeychainQuery
/host/spi-builder-workspace/Sources/Valet/Valet.swift:493:6: error: Objective-C interoperability is disabled
491 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
492 | /// - Note: The keychain is not modified if an error is thrown.
493 | @objc
| `- error: Objective-C interoperability is disabled
494 | public func migrateObjectsFromAlwaysAccessibleThisDeviceOnlyValet(removeOnCompletion: Bool) throws {
495 | var keychainQuery = baseKeychainQuery
/host/spi-builder-workspace/Sources/Valet/Valet.swift:562:6: error: Objective-C interoperability is disabled
560 | /// - Returns: A Valet that reads/writes keychain elements with the desired accessibility.
561 | @available(swift, obsoleted: 1.0)
562 | @objc(valetWithIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
563 | public class func 🚫swift_vanillaValet(with identifier: String, accessibility: Accessibility) -> Valet? {
564 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:575:6: error: Objective-C interoperability is disabled
573 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements with the desired accessibility.
574 | @available(swift, obsoleted: 1.0)
575 | @objc(iCloudValetWithIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
576 | public class func 🚫swift_iCloudValet(with identifier: String, accessibility: CloudAccessibility) -> Valet? {
577 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:590:6: error: Objective-C interoperability is disabled
588 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
589 | @available(swift, obsoleted: 1.0)
590 | @objc(sharedGroupValetWithAppIDPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
591 | public class func 🚫swift_vanillaSharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessibility: Accessibility) -> Valet? {
592 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:605:6: error: Objective-C interoperability is disabled
603 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
604 | @available(swift, obsoleted: 1.0)
605 | @objc(sharedGroupValetWithGroupPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
606 | public class func 🚫swift_vanillaSharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessibility: Accessibility) -> Valet? {
607 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:619:6: error: Objective-C interoperability is disabled
617 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements that can be shared across applications written by the same development team.
618 | @available(swift, obsoleted: 1.0)
619 | @objc(iCloudValetWithAppIDPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
620 | public class func 🚫swift_iCloudSharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessibility: CloudAccessibility) -> Valet? {
621 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:633:6: error: Objective-C interoperability is disabled
631 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements that can be shared across applications written by the same development team.
632 | @available(swift, obsoleted: 1.0)
633 | @objc(iCloudValetWithGroupPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
634 | public class func 🚫swift_iCloudSharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessibility: CloudAccessibility) -> Valet? {
635 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:649:6: error: Objective-C interoperability is disabled
647 | /// - SeeAlso: https://github.com/square/Valet/issues/140
648 | @available(swift, obsoleted: 1.0)
649 | @objc(valetWithExplicitlySetIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
650 | public class func 🚫swift_valet(withExplicitlySet identifier: String, accessibility: Accessibility) -> Valet? {
651 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:665:6: error: Objective-C interoperability is disabled
663 | /// - SeeAlso: https://github.com/square/Valet/issues/140
664 | @available(swift, obsoleted: 1.0)
665 | @objc(iCloudValetWithExplicitlySetIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
666 | public class func 🚫swift_iCloudValet(withExplicitlySet identifier: String, accessibility: CloudAccessibility) -> Valet? {
667 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:683:6: error: Objective-C interoperability is disabled
681 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
682 | @available(swift, obsoleted: 1.0)
683 | @objc(valetWithAppIDPrefix:explicitlySetSharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
684 | public class func 🚫swift_sharedGroupValet(appIDPrefix: String, withExplicitlySet identifier: String, accessibility: Accessibility) -> Valet? {
685 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:701:6: error: Objective-C interoperability is disabled
699 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
700 | @available(swift, obsoleted: 1.0)
701 | @objc(iCloudValetWithAppIDPrefix:explicitlySetSharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
702 | public class func 🚫swift_iCloudSharedGroupValet(appIDPrefix: String, withExplicitlySet identifier: String, accessibility: CloudAccessibility) -> Valet? {
703 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:715:6: error: Objective-C interoperability is disabled
713 | /// - Note: Will never prompt the user for Face ID, Touch ID, or password.
714 | @available(swift, obsoleted: 1.0)
715 | @objc(containsObjectForKey:)
| `- error: Objective-C interoperability is disabled
716 | public func 🚫swift_containsObject(forKey key: String) -> Bool {
717 | guard let containsObject = try? containsObject(forKey: key) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:729:6: error: Objective-C interoperability is disabled
727 | /// - error: An error of type `KeychainError` or `MigrationError`.
728 | @available(swift, obsoleted: 1.0)
729 | @objc(migrateObjectsMatching:compactMap:error:)
| `- error: Objective-C interoperability is disabled
730 | public func 🚫swift_migrateObjects(matching query: [String : AnyHashable], compactMap: (ObjectiveCCompatibilityMigratableKeyValuePairInput) -> ObjectiveCCompatibilityMigratableKeyValuePairOutput?) throws {
731 | try objc_compatibility_migrateObjects(matching: query, compactMap: compactMap)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:740:6: error: Objective-C interoperability is disabled
738 | /// - error: An error of type `KeychainError` or `MigrationError`.
739 | @available(swift, obsoleted: 1.0)
740 | @objc(migrateObjectsFrom:compactMap:error:)
| `- error: Objective-C interoperability is disabled
741 | public func 🚫swift_migrateObjects(from valet: Valet, compactMap: (ObjectiveCCompatibilityMigratableKeyValuePairInput) -> ObjectiveCCompatibilityMigratableKeyValuePairOutput?) throws {
742 | try objc_compatibility_migrateObjects(matching: valet.baseKeychainQuery, compactMap: compactMap)
[11/19] Compiling Valet MigratableKeyValuePair.swift
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:52:2: error: Objective-C interoperability is disabled
50 | // MARK: - Objective-C Compatibility
51 |
52 | @objc(VALMigratableKeyValuePairInput)
| `- error: Objective-C interoperability is disabled
53 | public final class ObjectiveCCompatibilityMigratableKeyValuePairInput: NSObject {
54 |
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:65:6: error: Objective-C interoperability is disabled
63 |
64 | /// The key in the key:value pair.
65 | @objc
| `- error: Objective-C interoperability is disabled
66 | public let key: Any
67 | /// The value in the key:value pair.
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:68:6: error: Objective-C interoperability is disabled
66 | public let key: Any
67 | /// The value in the key:value pair.
68 | @objc
| `- error: Objective-C interoperability is disabled
69 | public let value: Data
70 | }
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:72:2: error: Objective-C interoperability is disabled
70 | }
71 |
72 | @objc(VALMigratableKeyValuePairOutput)
| `- error: Objective-C interoperability is disabled
73 | public class ObjectiveCCompatibilityMigratableKeyValuePairOutput: NSObject {
74 |
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:81:6: error: Objective-C interoperability is disabled
79 | /// - key: The key in the key:value pair.
80 | /// - value: The value in the key:value pair.
81 | @objc
| `- error: Objective-C interoperability is disabled
82 | public init(key: String, value: Data) {
83 | self.key = key
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:92:6: error: Objective-C interoperability is disabled
90 | /// - key: The key in the key:value pair.
91 | /// - stringValue: The desired value in the key:value pair, represented as a String.
92 | @objc
| `- error: Objective-C interoperability is disabled
93 | public init(key: String, stringValue: String) {
94 | self.key = key
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:103:6: error: Objective-C interoperability is disabled
101 | /// A sentinal `ObjectiveCCompatibilityMigratableKeyValuePairOutput` that conveys that the migration should be prevented.
102 | @available(swift, obsoleted: 1.0)
103 | @objc
| `- error: Objective-C interoperability is disabled
104 | public static func preventMigration() -> ObjectiveCCompatibilityMigratableKeyValuePairOutput {
105 | ObjectiveCCompatibilityPreventMigrationOutput()
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:111:6: error: Objective-C interoperability is disabled
109 |
110 | /// The key in the key:value pair.
111 | @objc
| `- error: Objective-C interoperability is disabled
112 | public let key: String
113 | /// The value in the key:value pair.
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:114:6: error: Objective-C interoperability is disabled
112 | public let key: String
113 | /// The value in the key:value pair.
114 | @objc
| `- error: Objective-C interoperability is disabled
115 | public let value: Data
116 |
[12/19] Compiling Valet MigrationError.swift
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:52:2: error: Objective-C interoperability is disabled
50 | // MARK: - Objective-C Compatibility
51 |
52 | @objc(VALMigratableKeyValuePairInput)
| `- error: Objective-C interoperability is disabled
53 | public final class ObjectiveCCompatibilityMigratableKeyValuePairInput: NSObject {
54 |
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:65:6: error: Objective-C interoperability is disabled
63 |
64 | /// The key in the key:value pair.
65 | @objc
| `- error: Objective-C interoperability is disabled
66 | public let key: Any
67 | /// The value in the key:value pair.
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:68:6: error: Objective-C interoperability is disabled
66 | public let key: Any
67 | /// The value in the key:value pair.
68 | @objc
| `- error: Objective-C interoperability is disabled
69 | public let value: Data
70 | }
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:72:2: error: Objective-C interoperability is disabled
70 | }
71 |
72 | @objc(VALMigratableKeyValuePairOutput)
| `- error: Objective-C interoperability is disabled
73 | public class ObjectiveCCompatibilityMigratableKeyValuePairOutput: NSObject {
74 |
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:81:6: error: Objective-C interoperability is disabled
79 | /// - key: The key in the key:value pair.
80 | /// - value: The value in the key:value pair.
81 | @objc
| `- error: Objective-C interoperability is disabled
82 | public init(key: String, value: Data) {
83 | self.key = key
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:92:6: error: Objective-C interoperability is disabled
90 | /// - key: The key in the key:value pair.
91 | /// - stringValue: The desired value in the key:value pair, represented as a String.
92 | @objc
| `- error: Objective-C interoperability is disabled
93 | public init(key: String, stringValue: String) {
94 | self.key = key
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:103:6: error: Objective-C interoperability is disabled
101 | /// A sentinal `ObjectiveCCompatibilityMigratableKeyValuePairOutput` that conveys that the migration should be prevented.
102 | @available(swift, obsoleted: 1.0)
103 | @objc
| `- error: Objective-C interoperability is disabled
104 | public static func preventMigration() -> ObjectiveCCompatibilityMigratableKeyValuePairOutput {
105 | ObjectiveCCompatibilityPreventMigrationOutput()
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:111:6: error: Objective-C interoperability is disabled
109 |
110 | /// The key in the key:value pair.
111 | @objc
| `- error: Objective-C interoperability is disabled
112 | public let key: String
113 | /// The value in the key:value pair.
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:114:6: error: Objective-C interoperability is disabled
112 | public let key: String
113 | /// The value in the key:value pair.
114 | @objc
| `- error: Objective-C interoperability is disabled
115 | public let value: Data
116 |
[13/19] Compiling Valet Configuration.swift
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:130:85: error: cannot find type 'OSStatus' in scope
128 | // MARK: Contains
129 |
130 | static func performCopy(forKey key: String, options: [String : AnyHashable]) -> OSStatus {
| `- error: cannot find type 'OSStatus' in scope
131 | guard !key.isEmpty else {
132 | return errSecParam
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:45:26: error: cannot find 'kSecAttrAccount' in scope
43 | } else {
44 | var secItemQuery = attributes
45 | secItemQuery[kSecAttrAccount as String] = canaryKey
| `- error: cannot find 'kSecAttrAccount' in scope
46 | secItemQuery[kSecValueData as String] = Data(canaryValue.utf8)
47 | try? SecItem.add(attributes: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:46:26: error: cannot find 'kSecValueData' in scope
44 | var secItemQuery = attributes
45 | secItemQuery[kSecAttrAccount as String] = canaryKey
46 | secItemQuery[kSecValueData as String] = Data(canaryValue.utf8)
| `- error: cannot find 'kSecValueData' in scope
47 | try? SecItem.add(attributes: secItemQuery)
48 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:70:22: error: cannot find 'kSecAttrAccount' in scope
68 |
69 | var secItemQuery = options
70 | secItemQuery[kSecAttrAccount as String] = key
| `- error: cannot find 'kSecAttrAccount' in scope
71 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitOne
72 | secItemQuery[kSecReturnData as String] = true
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:71:22: error: cannot find 'kSecMatchLimit' in scope
69 | var secItemQuery = options
70 | secItemQuery[kSecAttrAccount as String] = key
71 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitOne
| `- error: cannot find 'kSecMatchLimit' in scope
72 | secItemQuery[kSecReturnData as String] = true
73 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:71:50: error: cannot find 'kSecMatchLimitOne' in scope
69 | var secItemQuery = options
70 | secItemQuery[kSecAttrAccount as String] = key
71 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitOne
| `- error: cannot find 'kSecMatchLimitOne' in scope
72 | secItemQuery[kSecReturnData as String] = true
73 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:72:22: error: cannot find 'kSecReturnData' in scope
70 | secItemQuery[kSecAttrAccount as String] = key
71 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitOne
72 | secItemQuery[kSecReturnData as String] = true
| `- error: cannot find 'kSecReturnData' in scope
73 |
74 | return try SecItem.copy(matching: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:94:22: error: cannot find 'kSecAttrAccount' in scope
92 |
93 | var secItemQuery = options
94 | secItemQuery[kSecAttrAccount as String] = key
| `- error: cannot find 'kSecAttrAccount' in scope
95 |
96 | #if os(macOS)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:102:58: error: cannot find 'errSecSuccess' in scope
100 | try SecItem.add(attributes: secItemQuery)
101 | #else
102 | if performCopy(forKey: key, options: options) == errSecSuccess {
| `- error: cannot find 'errSecSuccess' in scope
103 | try SecItem.update(attributes: [kSecValueData as String: object], forItemsMatching: secItemQuery)
104 | } else {
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:103:45: error: cannot find 'kSecValueData' in scope
101 | #else
102 | if performCopy(forKey: key, options: options) == errSecSuccess {
103 | try SecItem.update(attributes: [kSecValueData as String: object], forItemsMatching: secItemQuery)
| `- error: cannot find 'kSecValueData' in scope
104 | } else {
105 | secItemQuery[kSecValueData as String] = object
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:105:26: error: cannot find 'kSecValueData' in scope
103 | try SecItem.update(attributes: [kSecValueData as String: object], forItemsMatching: secItemQuery)
104 | } else {
105 | secItemQuery[kSecValueData as String] = object
| `- error: cannot find 'kSecValueData' in scope
106 | try SecItem.add(attributes: secItemQuery)
107 | }
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:119:22: error: cannot find 'kSecAttrAccount' in scope
117 |
118 | var secItemQuery = options
119 | secItemQuery[kSecAttrAccount as String] = key
| `- error: cannot find 'kSecAttrAccount' in scope
120 |
121 | try SecItem.deleteItems(matching: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:136:22: error: cannot find 'kSecAttrAccount' in scope
134 |
135 | var secItemQuery = options
136 | secItemQuery[kSecAttrAccount as String] = key
| `- error: cannot find 'kSecAttrAccount' in scope
137 |
138 | return SecItem.performCopy(matching: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:145:22: error: cannot find 'kSecMatchLimit' in scope
143 | static func allKeys(options: [String: AnyHashable]) throws(KeychainError) -> Set<String> {
144 | var secItemQuery = options
145 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
| `- error: cannot find 'kSecMatchLimit' in scope
146 | secItemQuery[kSecReturnAttributes as String] = true
147 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:145:50: error: cannot find 'kSecMatchLimitAll' in scope
143 | static func allKeys(options: [String: AnyHashable]) throws(KeychainError) -> Set<String> {
144 | var secItemQuery = options
145 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
| `- error: cannot find 'kSecMatchLimitAll' in scope
146 | secItemQuery[kSecReturnAttributes as String] = true
147 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:146:22: error: cannot find 'kSecReturnAttributes' in scope
144 | var secItemQuery = options
145 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
146 | secItemQuery[kSecReturnAttributes as String] = true
| `- error: cannot find 'kSecReturnAttributes' in scope
147 |
148 | do {
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:150:100: error: cannot find 'kSecAttrAccount' in scope
148 | do {
149 | let collection: Any = try SecItem.copy(matching: secItemQuery)
150 | if let singleMatch = collection as? [String: AnyHashable], let singleKey = singleMatch[kSecAttrAccount as String] as? String, singleKey != canaryKey {
| `- error: cannot find 'kSecAttrAccount' in scope
151 | return Set([singleKey])
152 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:155:42: error: cannot find 'kSecAttrAccount' in scope
153 | } else if let multipleMatches = collection as? [[String: AnyHashable]] {
154 | return Set(multipleMatches.compactMap({ attributes in
155 | let key = attributes[kSecAttrAccount as String] as? String
| `- error: cannot find 'kSecAttrAccount' in scope
156 | return key != canaryKey ? key : nil
157 | }))
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:180:21: error: cannot find 'kSecMatchLimit' in scope
178 | }
179 |
180 | guard query[kSecMatchLimit as String] as? String as CFString? != kSecMatchLimitOne else {
| `- error: cannot find 'kSecMatchLimit' in scope
181 | // Migration requires kSecMatchLimit to be set to kSecMatchLimitAll.
182 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:180:74: error: cannot find 'kSecMatchLimitOne' in scope
178 | }
179 |
180 | guard query[kSecMatchLimit as String] as? String as CFString? != kSecMatchLimitOne else {
| `- error: cannot find 'kSecMatchLimitOne' in scope
181 | // Migration requires kSecMatchLimit to be set to kSecMatchLimitAll.
182 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:180:61: error: cannot find type 'CFString' in scope
178 | }
179 |
180 | guard query[kSecMatchLimit as String] as? String as CFString? != kSecMatchLimitOne else {
| `- error: cannot find type 'CFString' in scope
181 | // Migration requires kSecMatchLimit to be set to kSecMatchLimitAll.
182 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:185:21: error: cannot find 'kSecReturnData' in scope
183 | }
184 |
185 | guard query[kSecReturnData as String] as? Bool != true else {
| `- error: cannot find 'kSecReturnData' in scope
186 | // kSecReturnData is not supported in a migration query.
187 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:190:21: error: cannot find 'kSecReturnAttributes' in scope
188 | }
189 |
190 | guard query[kSecReturnAttributes as String] as? Bool != false else {
| `- error: cannot find 'kSecReturnAttributes' in scope
191 | // Migration requires kSecReturnAttributes to be set to kCFBooleanTrue.
192 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:195:21: error: cannot find 'kSecReturnRef' in scope
193 | }
194 |
195 | guard query[kSecReturnRef as String] as? Bool != true else {
| `- error: cannot find 'kSecReturnRef' in scope
196 | // kSecReturnRef is not supported in a migration query.
197 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:200:21: error: cannot find 'kSecReturnPersistentRef' in scope
198 | }
199 |
200 | guard query[kSecReturnPersistentRef as String] as? Bool != false else {
| `- error: cannot find 'kSecReturnPersistentRef' in scope
201 | // Migration requires kSecReturnPersistentRef to be set to kCFBooleanTrue.
202 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:205:21: error: cannot find 'kSecClass' in scope
203 | }
204 |
205 | guard query[kSecClass as String] as? String as CFString? == kSecClassGenericPassword else {
| `- error: cannot find 'kSecClass' in scope
206 | // Migration requires kSecClass to be set to kSecClassGenericPassword to avoid data loss.
207 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:205:69: error: cannot find 'kSecClassGenericPassword' in scope
203 | }
204 |
205 | guard query[kSecClass as String] as? String as CFString? == kSecClassGenericPassword else {
| `- error: cannot find 'kSecClassGenericPassword' in scope
206 | // Migration requires kSecClass to be set to kSecClassGenericPassword to avoid data loss.
207 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:205:56: error: cannot find type 'CFString' in scope
203 | }
204 |
205 | guard query[kSecClass as String] as? String as CFString? == kSecClassGenericPassword else {
| `- error: cannot find type 'CFString' in scope
206 | // Migration requires kSecClass to be set to kSecClassGenericPassword to avoid data loss.
207 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:210:21: error: cannot find 'kSecAttrAccessControl' in scope
208 | }
209 |
210 | guard query[kSecAttrAccessControl as String] == nil else {
| `- error: cannot find 'kSecAttrAccessControl' in scope
211 | // kSecAttrAccessControl is not supported in a migration query. Keychain items can not be migrated en masse from the Secure Enclave.
212 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:216:22: error: cannot find 'kSecMatchLimit' in scope
214 |
215 | var secItemQuery = query
216 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
| `- error: cannot find 'kSecMatchLimit' in scope
217 | secItemQuery[kSecReturnAttributes as String] = true
218 | secItemQuery[kSecReturnData as String] = false
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:216:50: error: cannot find 'kSecMatchLimitAll' in scope
214 |
215 | var secItemQuery = query
216 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
| `- error: cannot find 'kSecMatchLimitAll' in scope
217 | secItemQuery[kSecReturnAttributes as String] = true
218 | secItemQuery[kSecReturnData as String] = false
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:217:22: error: cannot find 'kSecReturnAttributes' in scope
215 | var secItemQuery = query
216 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
217 | secItemQuery[kSecReturnAttributes as String] = true
| `- error: cannot find 'kSecReturnAttributes' in scope
218 | secItemQuery[kSecReturnData as String] = false
219 | secItemQuery[kSecReturnRef as String] = false
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:218:22: error: cannot find 'kSecReturnData' in scope
216 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
217 | secItemQuery[kSecReturnAttributes as String] = true
218 | secItemQuery[kSecReturnData as String] = false
| `- error: cannot find 'kSecReturnData' in scope
219 | secItemQuery[kSecReturnRef as String] = false
220 | secItemQuery[kSecReturnPersistentRef as String] = true
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:219:22: error: cannot find 'kSecReturnRef' in scope
217 | secItemQuery[kSecReturnAttributes as String] = true
218 | secItemQuery[kSecReturnData as String] = false
219 | secItemQuery[kSecReturnRef as String] = false
| `- error: cannot find 'kSecReturnRef' in scope
220 | secItemQuery[kSecReturnPersistentRef as String] = true
221 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:220:22: error: cannot find 'kSecReturnPersistentRef' in scope
218 | secItemQuery[kSecReturnData as String] = false
219 | secItemQuery[kSecReturnRef as String] = false
220 | secItemQuery[kSecReturnPersistentRef as String] = true
| `- error: cannot find 'kSecReturnPersistentRef' in scope
221 |
222 | let collection: Any = try SecItem.copy(matching: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:237:62: error: cannot find 'kSecValuePersistentRef' in scope
235 | var retrievedItemsToMigrateWithData = [[String : AnyHashable]]()
236 | for retrievedItem in retrievedItemsToMigrate {
237 | guard let retrievedPersistentRef = retrievedItem[kSecValuePersistentRef as String] else {
| `- error: cannot find 'kSecValuePersistentRef' in scope
238 | throw KeychainError.couldNotAccessKeychain
239 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:243:17: error: cannot find 'kSecValuePersistentRef' in scope
241 |
242 | let retrieveDataQuery: [String : AnyHashable] = [
243 | kSecValuePersistentRef as String : retrievedPersistentRef,
| `- error: cannot find 'kSecValuePersistentRef' in scope
244 | kSecReturnData as String : true
245 | ]
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:244:17: error: cannot find 'kSecReturnData' in scope
242 | let retrieveDataQuery: [String : AnyHashable] = [
243 | kSecValuePersistentRef as String : retrievedPersistentRef,
244 | kSecReturnData as String : true
| `- error: cannot find 'kSecReturnData' in scope
245 | ]
246 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:254:48: error: cannot find 'kSecValueData' in scope
252 |
253 | var retrievedItemToMigrateWithData = retrievedItem
254 | retrievedItemToMigrateWithData[kSecValueData as String] = data
| `- error: cannot find 'kSecValueData' in scope
255 | retrievedItemsToMigrateWithData.append(retrievedItemToMigrateWithData)
256 | } catch KeychainError.itemNotFound {
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:268:43: error: cannot find 'kSecAttrAccount' in scope
266 | var keyValuePairsToMigrate = [String: Data]()
267 | for keychainEntry in retrievedItemsToMigrateWithData {
268 | guard let key = keychainEntry[kSecAttrAccount as String] else {
| `- error: cannot find 'kSecAttrAccount' in scope
269 | throw MigrationError.keyToMigrateInvalid
270 | }
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:277:44: error: cannot find 'kSecValueData' in scope
275 | }
276 |
277 | guard let data = keychainEntry[kSecValueData as String] as? Data else {
| `- error: cannot find 'kSecValueData' in scope
278 | // This state should be impossible, per Apple's documentation for `kSecValueData`.
279 | throw MigrationError.dataToMigrateInvalid
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:299:100: error: cannot find 'errSecItemNotFound' in scope
297 | }
298 |
299 | if Keychain.performCopy(forKey: migratablePair.key, options: destinationAttributes) == errSecItemNotFound {
| `- error: cannot find 'errSecItemNotFound' in scope
300 | keyValuePairsToMigrate[migratablePair.key] = migratablePair.value
301 | } else {
[14/19] Compiling Valet Keychain.swift
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:130:85: error: cannot find type 'OSStatus' in scope
128 | // MARK: Contains
129 |
130 | static func performCopy(forKey key: String, options: [String : AnyHashable]) -> OSStatus {
| `- error: cannot find type 'OSStatus' in scope
131 | guard !key.isEmpty else {
132 | return errSecParam
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:45:26: error: cannot find 'kSecAttrAccount' in scope
43 | } else {
44 | var secItemQuery = attributes
45 | secItemQuery[kSecAttrAccount as String] = canaryKey
| `- error: cannot find 'kSecAttrAccount' in scope
46 | secItemQuery[kSecValueData as String] = Data(canaryValue.utf8)
47 | try? SecItem.add(attributes: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:46:26: error: cannot find 'kSecValueData' in scope
44 | var secItemQuery = attributes
45 | secItemQuery[kSecAttrAccount as String] = canaryKey
46 | secItemQuery[kSecValueData as String] = Data(canaryValue.utf8)
| `- error: cannot find 'kSecValueData' in scope
47 | try? SecItem.add(attributes: secItemQuery)
48 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:70:22: error: cannot find 'kSecAttrAccount' in scope
68 |
69 | var secItemQuery = options
70 | secItemQuery[kSecAttrAccount as String] = key
| `- error: cannot find 'kSecAttrAccount' in scope
71 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitOne
72 | secItemQuery[kSecReturnData as String] = true
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:71:22: error: cannot find 'kSecMatchLimit' in scope
69 | var secItemQuery = options
70 | secItemQuery[kSecAttrAccount as String] = key
71 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitOne
| `- error: cannot find 'kSecMatchLimit' in scope
72 | secItemQuery[kSecReturnData as String] = true
73 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:71:50: error: cannot find 'kSecMatchLimitOne' in scope
69 | var secItemQuery = options
70 | secItemQuery[kSecAttrAccount as String] = key
71 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitOne
| `- error: cannot find 'kSecMatchLimitOne' in scope
72 | secItemQuery[kSecReturnData as String] = true
73 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:72:22: error: cannot find 'kSecReturnData' in scope
70 | secItemQuery[kSecAttrAccount as String] = key
71 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitOne
72 | secItemQuery[kSecReturnData as String] = true
| `- error: cannot find 'kSecReturnData' in scope
73 |
74 | return try SecItem.copy(matching: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:94:22: error: cannot find 'kSecAttrAccount' in scope
92 |
93 | var secItemQuery = options
94 | secItemQuery[kSecAttrAccount as String] = key
| `- error: cannot find 'kSecAttrAccount' in scope
95 |
96 | #if os(macOS)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:102:58: error: cannot find 'errSecSuccess' in scope
100 | try SecItem.add(attributes: secItemQuery)
101 | #else
102 | if performCopy(forKey: key, options: options) == errSecSuccess {
| `- error: cannot find 'errSecSuccess' in scope
103 | try SecItem.update(attributes: [kSecValueData as String: object], forItemsMatching: secItemQuery)
104 | } else {
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:103:45: error: cannot find 'kSecValueData' in scope
101 | #else
102 | if performCopy(forKey: key, options: options) == errSecSuccess {
103 | try SecItem.update(attributes: [kSecValueData as String: object], forItemsMatching: secItemQuery)
| `- error: cannot find 'kSecValueData' in scope
104 | } else {
105 | secItemQuery[kSecValueData as String] = object
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:105:26: error: cannot find 'kSecValueData' in scope
103 | try SecItem.update(attributes: [kSecValueData as String: object], forItemsMatching: secItemQuery)
104 | } else {
105 | secItemQuery[kSecValueData as String] = object
| `- error: cannot find 'kSecValueData' in scope
106 | try SecItem.add(attributes: secItemQuery)
107 | }
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:119:22: error: cannot find 'kSecAttrAccount' in scope
117 |
118 | var secItemQuery = options
119 | secItemQuery[kSecAttrAccount as String] = key
| `- error: cannot find 'kSecAttrAccount' in scope
120 |
121 | try SecItem.deleteItems(matching: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:136:22: error: cannot find 'kSecAttrAccount' in scope
134 |
135 | var secItemQuery = options
136 | secItemQuery[kSecAttrAccount as String] = key
| `- error: cannot find 'kSecAttrAccount' in scope
137 |
138 | return SecItem.performCopy(matching: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:145:22: error: cannot find 'kSecMatchLimit' in scope
143 | static func allKeys(options: [String: AnyHashable]) throws(KeychainError) -> Set<String> {
144 | var secItemQuery = options
145 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
| `- error: cannot find 'kSecMatchLimit' in scope
146 | secItemQuery[kSecReturnAttributes as String] = true
147 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:145:50: error: cannot find 'kSecMatchLimitAll' in scope
143 | static func allKeys(options: [String: AnyHashable]) throws(KeychainError) -> Set<String> {
144 | var secItemQuery = options
145 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
| `- error: cannot find 'kSecMatchLimitAll' in scope
146 | secItemQuery[kSecReturnAttributes as String] = true
147 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:146:22: error: cannot find 'kSecReturnAttributes' in scope
144 | var secItemQuery = options
145 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
146 | secItemQuery[kSecReturnAttributes as String] = true
| `- error: cannot find 'kSecReturnAttributes' in scope
147 |
148 | do {
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:150:100: error: cannot find 'kSecAttrAccount' in scope
148 | do {
149 | let collection: Any = try SecItem.copy(matching: secItemQuery)
150 | if let singleMatch = collection as? [String: AnyHashable], let singleKey = singleMatch[kSecAttrAccount as String] as? String, singleKey != canaryKey {
| `- error: cannot find 'kSecAttrAccount' in scope
151 | return Set([singleKey])
152 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:155:42: error: cannot find 'kSecAttrAccount' in scope
153 | } else if let multipleMatches = collection as? [[String: AnyHashable]] {
154 | return Set(multipleMatches.compactMap({ attributes in
155 | let key = attributes[kSecAttrAccount as String] as? String
| `- error: cannot find 'kSecAttrAccount' in scope
156 | return key != canaryKey ? key : nil
157 | }))
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:180:21: error: cannot find 'kSecMatchLimit' in scope
178 | }
179 |
180 | guard query[kSecMatchLimit as String] as? String as CFString? != kSecMatchLimitOne else {
| `- error: cannot find 'kSecMatchLimit' in scope
181 | // Migration requires kSecMatchLimit to be set to kSecMatchLimitAll.
182 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:180:74: error: cannot find 'kSecMatchLimitOne' in scope
178 | }
179 |
180 | guard query[kSecMatchLimit as String] as? String as CFString? != kSecMatchLimitOne else {
| `- error: cannot find 'kSecMatchLimitOne' in scope
181 | // Migration requires kSecMatchLimit to be set to kSecMatchLimitAll.
182 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:180:61: error: cannot find type 'CFString' in scope
178 | }
179 |
180 | guard query[kSecMatchLimit as String] as? String as CFString? != kSecMatchLimitOne else {
| `- error: cannot find type 'CFString' in scope
181 | // Migration requires kSecMatchLimit to be set to kSecMatchLimitAll.
182 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:185:21: error: cannot find 'kSecReturnData' in scope
183 | }
184 |
185 | guard query[kSecReturnData as String] as? Bool != true else {
| `- error: cannot find 'kSecReturnData' in scope
186 | // kSecReturnData is not supported in a migration query.
187 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:190:21: error: cannot find 'kSecReturnAttributes' in scope
188 | }
189 |
190 | guard query[kSecReturnAttributes as String] as? Bool != false else {
| `- error: cannot find 'kSecReturnAttributes' in scope
191 | // Migration requires kSecReturnAttributes to be set to kCFBooleanTrue.
192 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:195:21: error: cannot find 'kSecReturnRef' in scope
193 | }
194 |
195 | guard query[kSecReturnRef as String] as? Bool != true else {
| `- error: cannot find 'kSecReturnRef' in scope
196 | // kSecReturnRef is not supported in a migration query.
197 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:200:21: error: cannot find 'kSecReturnPersistentRef' in scope
198 | }
199 |
200 | guard query[kSecReturnPersistentRef as String] as? Bool != false else {
| `- error: cannot find 'kSecReturnPersistentRef' in scope
201 | // Migration requires kSecReturnPersistentRef to be set to kCFBooleanTrue.
202 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:205:21: error: cannot find 'kSecClass' in scope
203 | }
204 |
205 | guard query[kSecClass as String] as? String as CFString? == kSecClassGenericPassword else {
| `- error: cannot find 'kSecClass' in scope
206 | // Migration requires kSecClass to be set to kSecClassGenericPassword to avoid data loss.
207 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:205:69: error: cannot find 'kSecClassGenericPassword' in scope
203 | }
204 |
205 | guard query[kSecClass as String] as? String as CFString? == kSecClassGenericPassword else {
| `- error: cannot find 'kSecClassGenericPassword' in scope
206 | // Migration requires kSecClass to be set to kSecClassGenericPassword to avoid data loss.
207 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:205:56: error: cannot find type 'CFString' in scope
203 | }
204 |
205 | guard query[kSecClass as String] as? String as CFString? == kSecClassGenericPassword else {
| `- error: cannot find type 'CFString' in scope
206 | // Migration requires kSecClass to be set to kSecClassGenericPassword to avoid data loss.
207 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:210:21: error: cannot find 'kSecAttrAccessControl' in scope
208 | }
209 |
210 | guard query[kSecAttrAccessControl as String] == nil else {
| `- error: cannot find 'kSecAttrAccessControl' in scope
211 | // kSecAttrAccessControl is not supported in a migration query. Keychain items can not be migrated en masse from the Secure Enclave.
212 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:216:22: error: cannot find 'kSecMatchLimit' in scope
214 |
215 | var secItemQuery = query
216 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
| `- error: cannot find 'kSecMatchLimit' in scope
217 | secItemQuery[kSecReturnAttributes as String] = true
218 | secItemQuery[kSecReturnData as String] = false
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:216:50: error: cannot find 'kSecMatchLimitAll' in scope
214 |
215 | var secItemQuery = query
216 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
| `- error: cannot find 'kSecMatchLimitAll' in scope
217 | secItemQuery[kSecReturnAttributes as String] = true
218 | secItemQuery[kSecReturnData as String] = false
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:217:22: error: cannot find 'kSecReturnAttributes' in scope
215 | var secItemQuery = query
216 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
217 | secItemQuery[kSecReturnAttributes as String] = true
| `- error: cannot find 'kSecReturnAttributes' in scope
218 | secItemQuery[kSecReturnData as String] = false
219 | secItemQuery[kSecReturnRef as String] = false
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:218:22: error: cannot find 'kSecReturnData' in scope
216 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
217 | secItemQuery[kSecReturnAttributes as String] = true
218 | secItemQuery[kSecReturnData as String] = false
| `- error: cannot find 'kSecReturnData' in scope
219 | secItemQuery[kSecReturnRef as String] = false
220 | secItemQuery[kSecReturnPersistentRef as String] = true
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:219:22: error: cannot find 'kSecReturnRef' in scope
217 | secItemQuery[kSecReturnAttributes as String] = true
218 | secItemQuery[kSecReturnData as String] = false
219 | secItemQuery[kSecReturnRef as String] = false
| `- error: cannot find 'kSecReturnRef' in scope
220 | secItemQuery[kSecReturnPersistentRef as String] = true
221 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:220:22: error: cannot find 'kSecReturnPersistentRef' in scope
218 | secItemQuery[kSecReturnData as String] = false
219 | secItemQuery[kSecReturnRef as String] = false
220 | secItemQuery[kSecReturnPersistentRef as String] = true
| `- error: cannot find 'kSecReturnPersistentRef' in scope
221 |
222 | let collection: Any = try SecItem.copy(matching: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:237:62: error: cannot find 'kSecValuePersistentRef' in scope
235 | var retrievedItemsToMigrateWithData = [[String : AnyHashable]]()
236 | for retrievedItem in retrievedItemsToMigrate {
237 | guard let retrievedPersistentRef = retrievedItem[kSecValuePersistentRef as String] else {
| `- error: cannot find 'kSecValuePersistentRef' in scope
238 | throw KeychainError.couldNotAccessKeychain
239 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:243:17: error: cannot find 'kSecValuePersistentRef' in scope
241 |
242 | let retrieveDataQuery: [String : AnyHashable] = [
243 | kSecValuePersistentRef as String : retrievedPersistentRef,
| `- error: cannot find 'kSecValuePersistentRef' in scope
244 | kSecReturnData as String : true
245 | ]
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:244:17: error: cannot find 'kSecReturnData' in scope
242 | let retrieveDataQuery: [String : AnyHashable] = [
243 | kSecValuePersistentRef as String : retrievedPersistentRef,
244 | kSecReturnData as String : true
| `- error: cannot find 'kSecReturnData' in scope
245 | ]
246 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:254:48: error: cannot find 'kSecValueData' in scope
252 |
253 | var retrievedItemToMigrateWithData = retrievedItem
254 | retrievedItemToMigrateWithData[kSecValueData as String] = data
| `- error: cannot find 'kSecValueData' in scope
255 | retrievedItemsToMigrateWithData.append(retrievedItemToMigrateWithData)
256 | } catch KeychainError.itemNotFound {
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:268:43: error: cannot find 'kSecAttrAccount' in scope
266 | var keyValuePairsToMigrate = [String: Data]()
267 | for keychainEntry in retrievedItemsToMigrateWithData {
268 | guard let key = keychainEntry[kSecAttrAccount as String] else {
| `- error: cannot find 'kSecAttrAccount' in scope
269 | throw MigrationError.keyToMigrateInvalid
270 | }
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:277:44: error: cannot find 'kSecValueData' in scope
275 | }
276 |
277 | guard let data = keychainEntry[kSecValueData as String] as? Data else {
| `- error: cannot find 'kSecValueData' in scope
278 | // This state should be impossible, per Apple's documentation for `kSecValueData`.
279 | throw MigrationError.dataToMigrateInvalid
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:299:100: error: cannot find 'errSecItemNotFound' in scope
297 | }
298 |
299 | if Keychain.performCopy(forKey: migratablePair.key, options: destinationAttributes) == errSecItemNotFound {
| `- error: cannot find 'errSecItemNotFound' in scope
300 | keyValuePairsToMigrate[migratablePair.key] = migratablePair.value
301 | } else {
[15/19] Compiling Valet Accessibility.swift
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:54:37: error: cannot find type 'CFString' in scope
52 |
53 | public var secAccessibilityAttribute: String {
54 | let accessibilityAttribute: CFString
| `- error: cannot find type 'CFString' in scope
55 |
56 | switch self {
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:58:38: error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
56 | switch self {
57 | case .afterFirstUnlock:
58 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlock
| `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
59 | case .afterFirstUnlockThisDeviceOnly:
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:60:38: error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
58 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlock
59 | case .afterFirstUnlockThisDeviceOnly:
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
61 | case .whenPasscodeSetThisDeviceOnly:
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:62:38: error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
61 | case .whenPasscodeSetThisDeviceOnly:
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:64:38: error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
| `- error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:66:38: error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
67 | }
68 |
[16/19] Compiling Valet CloudAccessibility.swift
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:54:37: error: cannot find type 'CFString' in scope
52 |
53 | public var secAccessibilityAttribute: String {
54 | let accessibilityAttribute: CFString
| `- error: cannot find type 'CFString' in scope
55 |
56 | switch self {
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:58:38: error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
56 | switch self {
57 | case .afterFirstUnlock:
58 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlock
| `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
59 | case .afterFirstUnlockThisDeviceOnly:
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:60:38: error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
58 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlock
59 | case .afterFirstUnlockThisDeviceOnly:
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
61 | case .whenPasscodeSetThisDeviceOnly:
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:62:38: error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
61 | case .whenPasscodeSetThisDeviceOnly:
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:64:38: error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
| `- error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:66:38: error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
67 | }
68 |
[17/19] Compiling Valet Identifier.swift
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:54:37: error: cannot find type 'CFString' in scope
52 |
53 | public var secAccessibilityAttribute: String {
54 | let accessibilityAttribute: CFString
| `- error: cannot find type 'CFString' in scope
55 |
56 | switch self {
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:58:38: error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
56 | switch self {
57 | case .afterFirstUnlock:
58 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlock
| `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
59 | case .afterFirstUnlockThisDeviceOnly:
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:60:38: error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
58 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlock
59 | case .afterFirstUnlockThisDeviceOnly:
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
61 | case .whenPasscodeSetThisDeviceOnly:
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:62:38: error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
61 | case .whenPasscodeSetThisDeviceOnly:
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:64:38: error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
| `- error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:66:38: error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
67 | }
68 |
[18/19] Compiling Valet SinglePromptSecureEnclaveValet.swift
/host/spi-builder-workspace/Sources/Valet/Valet.swift:21:2: error: Objective-C interoperability is disabled
19 |
20 | /// Reads and writes keychain elements.
21 | @objc(VALValet)
| `- error: Objective-C interoperability is disabled
22 | public final class Valet: NSObject, Sendable {
23 |
/host/spi-builder-workspace/Sources/Valet/Internal/WeakStorage.swift:35:40: error: cannot find 'NSMapTable' in scope
33 |
34 | private let lock = NSLock()
35 | private let identifierToValetMap = NSMapTable<NSString, T>.strongToWeakObjects()
| `- error: cannot find 'NSMapTable' in scope
36 | }
37 |
/host/spi-builder-workspace/Sources/Valet/Valet.swift:228:6: error: Objective-C interoperability is disabled
226 | // MARK: Public Properties
227 |
228 | @objc
| `- error: Objective-C interoperability is disabled
229 | public let accessibility: Accessibility
230 | public let identifier: Identifier
/host/spi-builder-workspace/Sources/Valet/Valet.swift:236:6: error: Objective-C interoperability is disabled
234 | /// - Returns: `true` if the keychain is accessible for reading and writing, `false` otherwise.
235 | /// - Note: Determined by writing a value to the keychain and then reading it back out.
236 | @objc
| `- error: Objective-C interoperability is disabled
237 | public func canAccessKeychain() -> Bool {
238 | execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:262:6: error: Objective-C interoperability is disabled
260 | /// - Important: Inserted data should be no larger than 4kb.
261 | @available(swift, obsoleted: 1.0)
262 | @objc(setObject:forKey:error:)
| `- error: Objective-C interoperability is disabled
263 | public func objc_setObject(_ object: Data, forKey key: String) throws {
264 | try setObject(object, forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:282:6: error: Objective-C interoperability is disabled
280 | /// - Throws: An error of type `KeychainError`.
281 | @available(swift, obsoleted: 1.0)
282 | @objc(objectForKey:error:)
| `- error: Objective-C interoperability is disabled
283 | public func objc_object(forKey key: String) throws -> Data {
284 | try object(forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:325:6: error: Objective-C interoperability is disabled
323 | /// - Important: Inserted data should be no larger than 4kb.
324 | @available(swift, obsoleted: 1.0)
325 | @objc(setString:forKey:error:)
| `- error: Objective-C interoperability is disabled
326 | public func objc_setString(_ string: String, forKey key: String) throws {
327 | try setString(string, forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:344:6: error: Objective-C interoperability is disabled
342 | /// - Returns: The string currently stored in the keychain for the provided key.
343 | /// - Throws: An error of type `KeychainError`.
344 | @objc(stringForKey:error:)
| `- error: Objective-C interoperability is disabled
345 | public func objc_string(forKey key: String) throws -> String {
346 | try string(forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:362:6: error: Objective-C interoperability is disabled
360 | /// - Throws: An error of type `KeychainError`.
361 | @available(swift, obsoleted: 1.0)
362 | @objc(allKeysWithError:)
| `- error: Objective-C interoperability is disabled
363 | public func objc_allKeys() throws -> Set<String> {
364 | try allKeys()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:384:6: error: Objective-C interoperability is disabled
382 | /// - Note: No error is thrown if the `key` is not found in the keychain.
383 | @available(swift, obsoleted: 1.0)
384 | @objc(removeObjectForKey:error:)
| `- error: Objective-C interoperability is disabled
385 | public func objc_removeObject(forKey key: String) throws {
386 | try removeObject(forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:402:6: error: Objective-C interoperability is disabled
400 | /// - Throws: An error of type `KeychainError`.
401 | @available(swift, obsoleted: 1.0)
402 | @objc(removeAllObjectsAndReturnError:)
| `- error: Objective-C interoperability is disabled
403 | public func objc_removeAllObjects() throws {
404 | try removeAllObjects()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:425:6: error: Objective-C interoperability is disabled
423 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
424 | /// - Note: The keychain is not modified if an error is thrown.
425 | @objc
| `- error: Objective-C interoperability is disabled
426 | public func migrateObjects(matching query: [String : AnyHashable], removeOnCompletion: Bool) throws {
427 | try execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:450:6: error: Objective-C interoperability is disabled
448 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
449 | /// - Note: The keychain is not modified if an error is thrown.
450 | @objc
| `- error: Objective-C interoperability is disabled
451 | public func migrateObjects(from valet: Valet, removeOnCompletion: Bool) throws {
452 | try migrateObjects(matching: valet.baseKeychainQuery, removeOnCompletion: removeOnCompletion)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:460:6: error: Objective-C interoperability is disabled
458 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
459 | /// - Note: The keychain is not modified if an error is thrown.
460 | @objc
| `- error: Objective-C interoperability is disabled
461 | public func migrateObjectsFromAlwaysAccessibleValet(removeOnCompletion: Bool) throws {
462 | var keychainQuery = baseKeychainQuery
/host/spi-builder-workspace/Sources/Valet/Valet.swift:493:6: error: Objective-C interoperability is disabled
491 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
492 | /// - Note: The keychain is not modified if an error is thrown.
493 | @objc
| `- error: Objective-C interoperability is disabled
494 | public func migrateObjectsFromAlwaysAccessibleThisDeviceOnlyValet(removeOnCompletion: Bool) throws {
495 | var keychainQuery = baseKeychainQuery
/host/spi-builder-workspace/Sources/Valet/Valet.swift:562:6: error: Objective-C interoperability is disabled
560 | /// - Returns: A Valet that reads/writes keychain elements with the desired accessibility.
561 | @available(swift, obsoleted: 1.0)
562 | @objc(valetWithIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
563 | public class func 🚫swift_vanillaValet(with identifier: String, accessibility: Accessibility) -> Valet? {
564 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:575:6: error: Objective-C interoperability is disabled
573 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements with the desired accessibility.
574 | @available(swift, obsoleted: 1.0)
575 | @objc(iCloudValetWithIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
576 | public class func 🚫swift_iCloudValet(with identifier: String, accessibility: CloudAccessibility) -> Valet? {
577 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:590:6: error: Objective-C interoperability is disabled
588 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
589 | @available(swift, obsoleted: 1.0)
590 | @objc(sharedGroupValetWithAppIDPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
591 | public class func 🚫swift_vanillaSharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessibility: Accessibility) -> Valet? {
592 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:605:6: error: Objective-C interoperability is disabled
603 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
604 | @available(swift, obsoleted: 1.0)
605 | @objc(sharedGroupValetWithGroupPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
606 | public class func 🚫swift_vanillaSharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessibility: Accessibility) -> Valet? {
607 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:619:6: error: Objective-C interoperability is disabled
617 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements that can be shared across applications written by the same development team.
618 | @available(swift, obsoleted: 1.0)
619 | @objc(iCloudValetWithAppIDPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
620 | public class func 🚫swift_iCloudSharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessibility: CloudAccessibility) -> Valet? {
621 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:633:6: error: Objective-C interoperability is disabled
631 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements that can be shared across applications written by the same development team.
632 | @available(swift, obsoleted: 1.0)
633 | @objc(iCloudValetWithGroupPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
634 | public class func 🚫swift_iCloudSharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessibility: CloudAccessibility) -> Valet? {
635 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:649:6: error: Objective-C interoperability is disabled
647 | /// - SeeAlso: https://github.com/square/Valet/issues/140
648 | @available(swift, obsoleted: 1.0)
649 | @objc(valetWithExplicitlySetIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
650 | public class func 🚫swift_valet(withExplicitlySet identifier: String, accessibility: Accessibility) -> Valet? {
651 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:665:6: error: Objective-C interoperability is disabled
663 | /// - SeeAlso: https://github.com/square/Valet/issues/140
664 | @available(swift, obsoleted: 1.0)
665 | @objc(iCloudValetWithExplicitlySetIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
666 | public class func 🚫swift_iCloudValet(withExplicitlySet identifier: String, accessibility: CloudAccessibility) -> Valet? {
667 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:683:6: error: Objective-C interoperability is disabled
681 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
682 | @available(swift, obsoleted: 1.0)
683 | @objc(valetWithAppIDPrefix:explicitlySetSharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
684 | public class func 🚫swift_sharedGroupValet(appIDPrefix: String, withExplicitlySet identifier: String, accessibility: Accessibility) -> Valet? {
685 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:701:6: error: Objective-C interoperability is disabled
699 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
700 | @available(swift, obsoleted: 1.0)
701 | @objc(iCloudValetWithAppIDPrefix:explicitlySetSharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
702 | public class func 🚫swift_iCloudSharedGroupValet(appIDPrefix: String, withExplicitlySet identifier: String, accessibility: CloudAccessibility) -> Valet? {
703 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:715:6: error: Objective-C interoperability is disabled
713 | /// - Note: Will never prompt the user for Face ID, Touch ID, or password.
714 | @available(swift, obsoleted: 1.0)
715 | @objc(containsObjectForKey:)
| `- error: Objective-C interoperability is disabled
716 | public func 🚫swift_containsObject(forKey key: String) -> Bool {
717 | guard let containsObject = try? containsObject(forKey: key) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:729:6: error: Objective-C interoperability is disabled
727 | /// - error: An error of type `KeychainError` or `MigrationError`.
728 | @available(swift, obsoleted: 1.0)
729 | @objc(migrateObjectsMatching:compactMap:error:)
| `- error: Objective-C interoperability is disabled
730 | public func 🚫swift_migrateObjects(matching query: [String : AnyHashable], compactMap: (ObjectiveCCompatibilityMigratableKeyValuePairInput) -> ObjectiveCCompatibilityMigratableKeyValuePairOutput?) throws {
731 | try objc_compatibility_migrateObjects(matching: query, compactMap: compactMap)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:740:6: error: Objective-C interoperability is disabled
738 | /// - error: An error of type `KeychainError` or `MigrationError`.
739 | @available(swift, obsoleted: 1.0)
740 | @objc(migrateObjectsFrom:compactMap:error:)
| `- error: Objective-C interoperability is disabled
741 | public func 🚫swift_migrateObjects(from valet: Valet, compactMap: (ObjectiveCCompatibilityMigratableKeyValuePairInput) -> ObjectiveCCompatibilityMigratableKeyValuePairOutput?) throws {
742 | try objc_compatibility_migrateObjects(matching: valet.baseKeychainQuery, compactMap: compactMap)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:130:85: error: cannot find type 'OSStatus' in scope
128 | // MARK: Contains
129 |
130 | static func performCopy(forKey key: String, options: [String : AnyHashable]) -> OSStatus {
| `- error: cannot find type 'OSStatus' in scope
131 | guard !key.isEmpty else {
132 | return errSecParam
/host/spi-builder-workspace/Sources/Valet/Valet.swift:297:14: error: cannot find 'errSecSuccess' in scope
295 | let status = Keychain.performCopy(forKey: key, options: baseKeychainQuery)
296 | switch status {
297 | case errSecSuccess:
| `- error: cannot find 'errSecSuccess' in scope
298 | return true
299 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/Valet.swift:299:14: error: cannot find 'errSecItemNotFound' in scope
297 | case errSecSuccess:
298 | return true
299 | case errSecItemNotFound:
| `- error: cannot find 'errSecItemNotFound' in scope
300 | return false
301 | default:
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:37:18: error: cannot find type 'OSStatus' in scope
35 | case emptyValue
36 |
37 | init(status: OSStatus) {
| `- error: cannot find type 'OSStatus' in scope
38 | switch status {
39 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/Valet.swift:302:19: error: no exact matches in call to initializer
300 | return false
301 | default:
302 | throw KeychainError(status: status)
| `- error: no exact matches in call to initializer
303 | }
304 | }
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
1 | protocol __BridgedNSError {
2 | public init?(_bridgedNSError: NSError)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
3 |
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
1 | protocol __BridgedNSError {
2 | public init?(rawValue: Self.RawValue)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
3 |
/host/spi-builder-workspace/Sources/Valet/Valet.swift:302:19: error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
300 | return false
301 | default:
302 | throw KeychainError(status: status)
| |- error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
| |- note: coalesce using '??' to provide a default when the optional value contains 'nil'
| `- note: force-unwrap using '!' to abort execution if the optional value contains 'nil'
303 | }
304 | }
/host/spi-builder-workspace/Sources/Valet/Valet.swift:471:23: error: cannot find 'kSecAttrAccessible' in scope
469 | #endif
470 |
471 | keychainQuery[kSecAttrAccessible as String] = "dk" // kSecAttrAccessibleAlways, but with the value hardcoded to avoid a build warning.
| `- error: cannot find 'kSecAttrAccessible' in scope
472 | let accessibilityDescription = "AccessibleAlways"
473 | let serviceAttribute: String
/host/spi-builder-workspace/Sources/Valet/Valet.swift:484:23: error: cannot find 'kSecAttrService' in scope
482 | serviceAttribute = identifier.description
483 | }
484 | keychainQuery[kSecAttrService as String] = serviceAttribute
| `- error: cannot find 'kSecAttrService' in scope
485 | try migrateObjects(matching: keychainQuery, removeOnCompletion: removeOnCompletion)
486 | }
/host/spi-builder-workspace/Sources/Valet/Valet.swift:504:23: error: cannot find 'kSecAttrAccessible' in scope
502 | #endif
503 |
504 | keychainQuery[kSecAttrAccessible as String] = "dku" // kSecAttrAccessibleAlwaysThisDeviceOnly, but with the value hardcoded to avoid a build warning.
| `- error: cannot find 'kSecAttrAccessible' in scope
505 | let accessibilityDescription = "AccessibleAlwaysThisDeviceOnly"
506 | let serviceAttribute: String
/host/spi-builder-workspace/Sources/Valet/Valet.swift:517:23: error: cannot find 'kSecAttrService' in scope
515 | serviceAttribute = Service.standard(with: configuration, identifier: identifier, accessibilityDescription: accessibilityDescription)
516 | }
517 | keychainQuery[kSecAttrService as String] = serviceAttribute
| `- error: cannot find 'kSecAttrService' in scope
518 | try migrateObjects(matching: keychainQuery, removeOnCompletion: removeOnCompletion)
519 | }
[19/19] Compiling Valet Valet.swift
/host/spi-builder-workspace/Sources/Valet/Valet.swift:21:2: error: Objective-C interoperability is disabled
19 |
20 | /// Reads and writes keychain elements.
21 | @objc(VALValet)
| `- error: Objective-C interoperability is disabled
22 | public final class Valet: NSObject, Sendable {
23 |
/host/spi-builder-workspace/Sources/Valet/Internal/WeakStorage.swift:35:40: error: cannot find 'NSMapTable' in scope
33 |
34 | private let lock = NSLock()
35 | private let identifierToValetMap = NSMapTable<NSString, T>.strongToWeakObjects()
| `- error: cannot find 'NSMapTable' in scope
36 | }
37 |
/host/spi-builder-workspace/Sources/Valet/Valet.swift:228:6: error: Objective-C interoperability is disabled
226 | // MARK: Public Properties
227 |
228 | @objc
| `- error: Objective-C interoperability is disabled
229 | public let accessibility: Accessibility
230 | public let identifier: Identifier
/host/spi-builder-workspace/Sources/Valet/Valet.swift:236:6: error: Objective-C interoperability is disabled
234 | /// - Returns: `true` if the keychain is accessible for reading and writing, `false` otherwise.
235 | /// - Note: Determined by writing a value to the keychain and then reading it back out.
236 | @objc
| `- error: Objective-C interoperability is disabled
237 | public func canAccessKeychain() -> Bool {
238 | execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:262:6: error: Objective-C interoperability is disabled
260 | /// - Important: Inserted data should be no larger than 4kb.
261 | @available(swift, obsoleted: 1.0)
262 | @objc(setObject:forKey:error:)
| `- error: Objective-C interoperability is disabled
263 | public func objc_setObject(_ object: Data, forKey key: String) throws {
264 | try setObject(object, forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:282:6: error: Objective-C interoperability is disabled
280 | /// - Throws: An error of type `KeychainError`.
281 | @available(swift, obsoleted: 1.0)
282 | @objc(objectForKey:error:)
| `- error: Objective-C interoperability is disabled
283 | public func objc_object(forKey key: String) throws -> Data {
284 | try object(forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:325:6: error: Objective-C interoperability is disabled
323 | /// - Important: Inserted data should be no larger than 4kb.
324 | @available(swift, obsoleted: 1.0)
325 | @objc(setString:forKey:error:)
| `- error: Objective-C interoperability is disabled
326 | public func objc_setString(_ string: String, forKey key: String) throws {
327 | try setString(string, forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:344:6: error: Objective-C interoperability is disabled
342 | /// - Returns: The string currently stored in the keychain for the provided key.
343 | /// - Throws: An error of type `KeychainError`.
344 | @objc(stringForKey:error:)
| `- error: Objective-C interoperability is disabled
345 | public func objc_string(forKey key: String) throws -> String {
346 | try string(forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:362:6: error: Objective-C interoperability is disabled
360 | /// - Throws: An error of type `KeychainError`.
361 | @available(swift, obsoleted: 1.0)
362 | @objc(allKeysWithError:)
| `- error: Objective-C interoperability is disabled
363 | public func objc_allKeys() throws -> Set<String> {
364 | try allKeys()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:384:6: error: Objective-C interoperability is disabled
382 | /// - Note: No error is thrown if the `key` is not found in the keychain.
383 | @available(swift, obsoleted: 1.0)
384 | @objc(removeObjectForKey:error:)
| `- error: Objective-C interoperability is disabled
385 | public func objc_removeObject(forKey key: String) throws {
386 | try removeObject(forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:402:6: error: Objective-C interoperability is disabled
400 | /// - Throws: An error of type `KeychainError`.
401 | @available(swift, obsoleted: 1.0)
402 | @objc(removeAllObjectsAndReturnError:)
| `- error: Objective-C interoperability is disabled
403 | public func objc_removeAllObjects() throws {
404 | try removeAllObjects()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:425:6: error: Objective-C interoperability is disabled
423 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
424 | /// - Note: The keychain is not modified if an error is thrown.
425 | @objc
| `- error: Objective-C interoperability is disabled
426 | public func migrateObjects(matching query: [String : AnyHashable], removeOnCompletion: Bool) throws {
427 | try execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:450:6: error: Objective-C interoperability is disabled
448 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
449 | /// - Note: The keychain is not modified if an error is thrown.
450 | @objc
| `- error: Objective-C interoperability is disabled
451 | public func migrateObjects(from valet: Valet, removeOnCompletion: Bool) throws {
452 | try migrateObjects(matching: valet.baseKeychainQuery, removeOnCompletion: removeOnCompletion)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:460:6: error: Objective-C interoperability is disabled
458 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
459 | /// - Note: The keychain is not modified if an error is thrown.
460 | @objc
| `- error: Objective-C interoperability is disabled
461 | public func migrateObjectsFromAlwaysAccessibleValet(removeOnCompletion: Bool) throws {
462 | var keychainQuery = baseKeychainQuery
/host/spi-builder-workspace/Sources/Valet/Valet.swift:493:6: error: Objective-C interoperability is disabled
491 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
492 | /// - Note: The keychain is not modified if an error is thrown.
493 | @objc
| `- error: Objective-C interoperability is disabled
494 | public func migrateObjectsFromAlwaysAccessibleThisDeviceOnlyValet(removeOnCompletion: Bool) throws {
495 | var keychainQuery = baseKeychainQuery
/host/spi-builder-workspace/Sources/Valet/Valet.swift:562:6: error: Objective-C interoperability is disabled
560 | /// - Returns: A Valet that reads/writes keychain elements with the desired accessibility.
561 | @available(swift, obsoleted: 1.0)
562 | @objc(valetWithIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
563 | public class func 🚫swift_vanillaValet(with identifier: String, accessibility: Accessibility) -> Valet? {
564 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:575:6: error: Objective-C interoperability is disabled
573 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements with the desired accessibility.
574 | @available(swift, obsoleted: 1.0)
575 | @objc(iCloudValetWithIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
576 | public class func 🚫swift_iCloudValet(with identifier: String, accessibility: CloudAccessibility) -> Valet? {
577 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:590:6: error: Objective-C interoperability is disabled
588 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
589 | @available(swift, obsoleted: 1.0)
590 | @objc(sharedGroupValetWithAppIDPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
591 | public class func 🚫swift_vanillaSharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessibility: Accessibility) -> Valet? {
592 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:605:6: error: Objective-C interoperability is disabled
603 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
604 | @available(swift, obsoleted: 1.0)
605 | @objc(sharedGroupValetWithGroupPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
606 | public class func 🚫swift_vanillaSharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessibility: Accessibility) -> Valet? {
607 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:619:6: error: Objective-C interoperability is disabled
617 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements that can be shared across applications written by the same development team.
618 | @available(swift, obsoleted: 1.0)
619 | @objc(iCloudValetWithAppIDPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
620 | public class func 🚫swift_iCloudSharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessibility: CloudAccessibility) -> Valet? {
621 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:633:6: error: Objective-C interoperability is disabled
631 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements that can be shared across applications written by the same development team.
632 | @available(swift, obsoleted: 1.0)
633 | @objc(iCloudValetWithGroupPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
634 | public class func 🚫swift_iCloudSharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessibility: CloudAccessibility) -> Valet? {
635 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:649:6: error: Objective-C interoperability is disabled
647 | /// - SeeAlso: https://github.com/square/Valet/issues/140
648 | @available(swift, obsoleted: 1.0)
649 | @objc(valetWithExplicitlySetIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
650 | public class func 🚫swift_valet(withExplicitlySet identifier: String, accessibility: Accessibility) -> Valet? {
651 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:665:6: error: Objective-C interoperability is disabled
663 | /// - SeeAlso: https://github.com/square/Valet/issues/140
664 | @available(swift, obsoleted: 1.0)
665 | @objc(iCloudValetWithExplicitlySetIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
666 | public class func 🚫swift_iCloudValet(withExplicitlySet identifier: String, accessibility: CloudAccessibility) -> Valet? {
667 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:683:6: error: Objective-C interoperability is disabled
681 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
682 | @available(swift, obsoleted: 1.0)
683 | @objc(valetWithAppIDPrefix:explicitlySetSharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
684 | public class func 🚫swift_sharedGroupValet(appIDPrefix: String, withExplicitlySet identifier: String, accessibility: Accessibility) -> Valet? {
685 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:701:6: error: Objective-C interoperability is disabled
699 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
700 | @available(swift, obsoleted: 1.0)
701 | @objc(iCloudValetWithAppIDPrefix:explicitlySetSharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
702 | public class func 🚫swift_iCloudSharedGroupValet(appIDPrefix: String, withExplicitlySet identifier: String, accessibility: CloudAccessibility) -> Valet? {
703 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:715:6: error: Objective-C interoperability is disabled
713 | /// - Note: Will never prompt the user for Face ID, Touch ID, or password.
714 | @available(swift, obsoleted: 1.0)
715 | @objc(containsObjectForKey:)
| `- error: Objective-C interoperability is disabled
716 | public func 🚫swift_containsObject(forKey key: String) -> Bool {
717 | guard let containsObject = try? containsObject(forKey: key) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:729:6: error: Objective-C interoperability is disabled
727 | /// - error: An error of type `KeychainError` or `MigrationError`.
728 | @available(swift, obsoleted: 1.0)
729 | @objc(migrateObjectsMatching:compactMap:error:)
| `- error: Objective-C interoperability is disabled
730 | public func 🚫swift_migrateObjects(matching query: [String : AnyHashable], compactMap: (ObjectiveCCompatibilityMigratableKeyValuePairInput) -> ObjectiveCCompatibilityMigratableKeyValuePairOutput?) throws {
731 | try objc_compatibility_migrateObjects(matching: query, compactMap: compactMap)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:740:6: error: Objective-C interoperability is disabled
738 | /// - error: An error of type `KeychainError` or `MigrationError`.
739 | @available(swift, obsoleted: 1.0)
740 | @objc(migrateObjectsFrom:compactMap:error:)
| `- error: Objective-C interoperability is disabled
741 | public func 🚫swift_migrateObjects(from valet: Valet, compactMap: (ObjectiveCCompatibilityMigratableKeyValuePairInput) -> ObjectiveCCompatibilityMigratableKeyValuePairOutput?) throws {
742 | try objc_compatibility_migrateObjects(matching: valet.baseKeychainQuery, compactMap: compactMap)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:130:85: error: cannot find type 'OSStatus' in scope
128 | // MARK: Contains
129 |
130 | static func performCopy(forKey key: String, options: [String : AnyHashable]) -> OSStatus {
| `- error: cannot find type 'OSStatus' in scope
131 | guard !key.isEmpty else {
132 | return errSecParam
/host/spi-builder-workspace/Sources/Valet/Valet.swift:297:14: error: cannot find 'errSecSuccess' in scope
295 | let status = Keychain.performCopy(forKey: key, options: baseKeychainQuery)
296 | switch status {
297 | case errSecSuccess:
| `- error: cannot find 'errSecSuccess' in scope
298 | return true
299 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/Valet.swift:299:14: error: cannot find 'errSecItemNotFound' in scope
297 | case errSecSuccess:
298 | return true
299 | case errSecItemNotFound:
| `- error: cannot find 'errSecItemNotFound' in scope
300 | return false
301 | default:
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:37:18: error: cannot find type 'OSStatus' in scope
35 | case emptyValue
36 |
37 | init(status: OSStatus) {
| `- error: cannot find type 'OSStatus' in scope
38 | switch status {
39 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/Valet.swift:302:19: error: no exact matches in call to initializer
300 | return false
301 | default:
302 | throw KeychainError(status: status)
| `- error: no exact matches in call to initializer
303 | }
304 | }
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
1 | protocol __BridgedNSError {
2 | public init?(_bridgedNSError: NSError)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
3 |
Foundation.__BridgedNSError.init:2:8: note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
1 | protocol __BridgedNSError {
2 | public init?(rawValue: Self.RawValue)}
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
3 |
/host/spi-builder-workspace/Sources/Valet/Valet.swift:302:19: error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
300 | return false
301 | default:
302 | throw KeychainError(status: status)
| |- error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
| |- note: coalesce using '??' to provide a default when the optional value contains 'nil'
| `- note: force-unwrap using '!' to abort execution if the optional value contains 'nil'
303 | }
304 | }
/host/spi-builder-workspace/Sources/Valet/Valet.swift:471:23: error: cannot find 'kSecAttrAccessible' in scope
469 | #endif
470 |
471 | keychainQuery[kSecAttrAccessible as String] = "dk" // kSecAttrAccessibleAlways, but with the value hardcoded to avoid a build warning.
| `- error: cannot find 'kSecAttrAccessible' in scope
472 | let accessibilityDescription = "AccessibleAlways"
473 | let serviceAttribute: String
/host/spi-builder-workspace/Sources/Valet/Valet.swift:484:23: error: cannot find 'kSecAttrService' in scope
482 | serviceAttribute = identifier.description
483 | }
484 | keychainQuery[kSecAttrService as String] = serviceAttribute
| `- error: cannot find 'kSecAttrService' in scope
485 | try migrateObjects(matching: keychainQuery, removeOnCompletion: removeOnCompletion)
486 | }
/host/spi-builder-workspace/Sources/Valet/Valet.swift:504:23: error: cannot find 'kSecAttrAccessible' in scope
502 | #endif
503 |
504 | keychainQuery[kSecAttrAccessible as String] = "dku" // kSecAttrAccessibleAlwaysThisDeviceOnly, but with the value hardcoded to avoid a build warning.
| `- error: cannot find 'kSecAttrAccessible' in scope
505 | let accessibilityDescription = "AccessibleAlwaysThisDeviceOnly"
506 | let serviceAttribute: String
/host/spi-builder-workspace/Sources/Valet/Valet.swift:517:23: error: cannot find 'kSecAttrService' in scope
515 | serviceAttribute = Service.standard(with: configuration, identifier: identifier, accessibilityDescription: accessibilityDescription)
516 | }
517 | keychainQuery[kSecAttrService as String] = serviceAttribute
| `- error: cannot find 'kSecAttrService' in scope
518 | try migrateObjects(matching: keychainQuery, removeOnCompletion: removeOnCompletion)
519 | }
BUILD FAILURE 6.1 android