The Swift Package Index logo.Swift Package Index

Build Information

Failed to build klaviyo-swift-sdk, reference 5.3.1 (3d8ff7), with Swift 6.0 for macOS (SPM) on 30 Apr 2026 19:45:57 UTC.

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 4.70.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/klaviyo/klaviyo-swift-sdk.git
Reference: 5.3.1
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/klaviyo/klaviyo-swift-sdk
 * tag               5.3.1      -> FETCH_HEAD
HEAD is now at 3d8ff73 fix(ci): revert --include-podspecs for KlaviyoSwiftExtension lint (#561) (#569)
Cloned https://github.com/klaviyo/klaviyo-swift-sdk.git
Revision (git rev-parse @):
3d8ff73dc7887113971430e90074d9ee9c299af7
SUCCESS checkout https://github.com/klaviyo/klaviyo-swift-sdk.git at 5.3.1
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $PWD
https://github.com/klaviyo/klaviyo-swift-sdk.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift build --arch arm64
Building for debugging...
[0/14] Write sources
[2/14] Copying InAppFormsTemplate.html
[4/14] Write sources
[4/14] Copying jstest.html
[6/14] Write sources
[7/14] Copying PrivacyInfo.xcprivacy
[8/14] Copying toggleHandler.js
[8/14] Write sources
[8/14] Copying klaviyo.html
[9/14] Copying consoleHandler.js
[10/14] Copying closeHandler.js
[13/14] Write swift-version-5BDAB9E9C0126B9D.txt
error: emit-module command failed with exit code 1 (use -v to see invocation)
[15/25] Emitting module KlaviyoSwiftExtension
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:94:79: error: 'UNNotificationAction' is only available in macOS 10.14 or newer
 35 | /// }
 36 | /// ```
 37 | enum KlaviyoActionButtonParser {
    |      `- note: add @available attribute to enclosing enum
 38 |     // MARK: - Public Methods
 39 |
    :
 92 |     /// - Parameter definitions: Array of parsed button definitions
 93 |     /// - Returns: Array of UNNotificationAction instances
 94 |     static func createActions(from definitions: [ActionButtonDefinition]) -> [UNNotificationAction] {
    |                 |                                                             `- error: 'UNNotificationAction' is only available in macOS 10.14 or newer
    |                 `- note: add @available attribute to enclosing static method
 95 |         var actions: [UNNotificationAction] = []
 96 |
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:130:82: error: 'UNNotificationAction' is only available in macOS 10.14 or newer
 35 | /// }
 36 | /// ```
 37 | enum KlaviyoActionButtonParser {
    |      `- note: add @available attribute to enclosing enum
 38 |     // MARK: - Public Methods
 39 |
    :
128 |     /// - Parameter definition: The button definition to convert
129 |     /// - Returns: A configured UNNotificationAction
130 |     private static func createAction(from definition: ActionButtonDefinition) -> UNNotificationAction {
    |                         |                                                        `- error: 'UNNotificationAction' is only available in macOS 10.14 or newer
    |                         `- note: add @available attribute to enclosing static method
131 |         UNNotificationAction(
132 |             identifier: definition.id,
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:48:65: error: 'UNNotificationAction' is only available in macOS 10.14 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
 46 |     ///   - categoryIdentifier: Unique identifier for this notification's category
 47 |     ///   - actions: Array of notification actions to include in the category
 48 |     func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
    |          |                                                      `- error: 'UNNotificationAction' is only available in macOS 10.14 or newer
    |          `- note: add @available attribute to enclosing instance method
 49 |         // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
 50 |         queue.sync {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:91:52: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
 89 |     ///
 90 |     /// - Returns: A tuple containing the set of existing categories and a boolean indicating if the fetch timed out
 91 |     private func fetchExistingCategories() -> (Set<UNNotificationCategory>, Bool) {
    |                  |                                 `- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
    |                  `- note: add @available attribute to enclosing instance method
 92 |         let semaphore = DispatchSemaphore(value: 0)
 93 |         var existingCategories: Set<UNNotificationCategory> = []
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:121:23: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
118 |     ///   - new: New category to add or update
119 |     /// - Returns: Merged set of categories with the new category added/updated
120 |     private func mergeCategories(
    |                  `- note: add @available attribute to enclosing instance method
121 |         existing: Set<UNNotificationCategory>,
    |                       `- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
122 |         new: UNNotificationCategory
123 |     ) -> Set<UNNotificationCategory> {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:122:14: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
118 |     ///   - new: New category to add or update
119 |     /// - Returns: Merged set of categories with the new category added/updated
120 |     private func mergeCategories(
    |                  `- note: add @available attribute to enclosing instance method
121 |         existing: Set<UNNotificationCategory>,
122 |         new: UNNotificationCategory
    |              `- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
123 |     ) -> Set<UNNotificationCategory> {
124 |         var merged = existing
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:123:14: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
118 |     ///   - new: New category to add or update
119 |     /// - Returns: Merged set of categories with the new category added/updated
120 |     private func mergeCategories(
    |                  `- note: add @available attribute to enclosing instance method
121 |         existing: Set<UNNotificationCategory>,
122 |         new: UNNotificationCategory
123 |     ) -> Set<UNNotificationCategory> {
    |              `- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
124 |         var merged = existing
125 |         merged = merged.filter { $0.identifier != new.identifier }
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:41:18: error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
 38 |     ///   - bestAttemptContent: this is also received in `didReceive(_:withContentHandler:)` and is the best attempt at mutating the APNS payload before attaching it to the push notification
 39 |     ///   - contentHandler: this is also received in `didReceive(_:withContentHandler:)` and is the closure that needs to be called before the time iOS provides for us to mutate the content. This closure will be called with the `bestAttemptContent` once the media is downloaded and attached.
 40 |     public static func handleNotificationServiceDidReceivedRequest(
    |                        `- note: add @available attribute to enclosing static method
 41 |         request: UNNotificationRequest,
    |                  `- error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
 42 |         bestAttemptContent: UNMutableNotificationContent,
 43 |         contentHandler: @escaping (UNNotificationContent) -> Void,
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:42:29: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
 38 |     ///   - bestAttemptContent: this is also received in `didReceive(_:withContentHandler:)` and is the best attempt at mutating the APNS payload before attaching it to the push notification
 39 |     ///   - contentHandler: this is also received in `didReceive(_:withContentHandler:)` and is the closure that needs to be called before the time iOS provides for us to mutate the content. This closure will be called with the `bestAttemptContent` once the media is downloaded and attached.
 40 |     public static func handleNotificationServiceDidReceivedRequest(
    |                        `- note: add @available attribute to enclosing static method
 41 |         request: UNNotificationRequest,
 42 |         bestAttemptContent: UNMutableNotificationContent,
    |                             `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
 43 |         contentHandler: @escaping (UNNotificationContent) -> Void,
 44 |         fallbackMediaType: String = "jpg"
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:43:36: error: 'UNNotificationContent' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
 38 |     ///   - bestAttemptContent: this is also received in `didReceive(_:withContentHandler:)` and is the best attempt at mutating the APNS payload before attaching it to the push notification
 39 |     ///   - contentHandler: this is also received in `didReceive(_:withContentHandler:)` and is the closure that needs to be called before the time iOS provides for us to mutate the content. This closure will be called with the `bestAttemptContent` once the media is downloaded and attached.
 40 |     public static func handleNotificationServiceDidReceivedRequest(
    |                        `- note: add @available attribute to enclosing static method
 41 |         request: UNNotificationRequest,
 42 |         bestAttemptContent: UNMutableNotificationContent,
 43 |         contentHandler: @escaping (UNNotificationContent) -> Void,
    |                                    `- error: 'UNNotificationContent' is only available in macOS 10.14 or newer
 44 |         fallbackMediaType: String = "jpg"
 45 |     ) {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:57:57: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
 55 |     /// - Parameters:
 56 |     ///   - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
 57 |     private static func handleBadge(bestAttemptContent: UNMutableNotificationContent) {
    |                         |                               `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
    |                         `- note: add @available attribute to enclosing static method
 58 |         guard let badgeConfigValue = bestAttemptContent.userInfo["badge_config"] as? String else { return }
 59 |         // retrieve the app group user defaults used to store the count
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:88:29: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
 85 |     ///   - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
 86 |     ///   - contentHandler: the closure that needs to be called before the time iOS provides for us to mutate the content
 87 |     private static func handleRichMedia(
    |                         `- note: add @available attribute to enclosing static method
 88 |         bestAttemptContent: UNMutableNotificationContent,
    |                             `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
 89 |         contentHandler: @escaping (UNNotificationContent) -> Void,
 90 |         fallbackMediaType: String = "jpg"
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:89:36: error: 'UNNotificationContent' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
 85 |     ///   - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
 86 |     ///   - contentHandler: the closure that needs to be called before the time iOS provides for us to mutate the content
 87 |     private static func handleRichMedia(
    |                         `- note: add @available attribute to enclosing static method
 88 |         bestAttemptContent: UNMutableNotificationContent,
 89 |         contentHandler: @escaping (UNNotificationContent) -> Void,
    |                                    `- error: 'UNNotificationContent' is only available in macOS 10.14 or newer
 90 |         fallbackMediaType: String = "jpg"
 91 |     ) {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:129:18: error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
126 |     }
127 |
128 |     public static func handleNotificationServiceExtensionTimeWillExpireRequest(
    |                        `- note: add @available attribute to enclosing static method
129 |         request: UNNotificationRequest,
    |                  `- error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
130 |         bestAttemptContent: UNMutableNotificationContent,
131 |         contentHandler: @escaping (UNNotificationContent) -> Void
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:130:29: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
126 |     }
127 |
128 |     public static func handleNotificationServiceExtensionTimeWillExpireRequest(
    |                        `- note: add @available attribute to enclosing static method
129 |         request: UNNotificationRequest,
130 |         bestAttemptContent: UNMutableNotificationContent,
    |                             `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
131 |         contentHandler: @escaping (UNNotificationContent) -> Void
132 |     ) {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:131:36: error: 'UNNotificationContent' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
126 |     }
127 |
128 |     public static func handleNotificationServiceExtensionTimeWillExpireRequest(
    |                        `- note: add @available attribute to enclosing static method
129 |         request: UNNotificationRequest,
130 |         bestAttemptContent: UNMutableNotificationContent,
131 |         contentHandler: @escaping (UNNotificationContent) -> Void
    |                                    `- error: 'UNNotificationContent' is only available in macOS 10.14 or newer
132 |     ) {
133 |         // Still try to register action buttons before timeout
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:179:32: error: 'UNNotificationAttachment' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
174 |     ///   - completion: closure that will be called once the file has been moved and an attachment has been created.
175 |     ///                 Note that in the case of failure during file transfer or creating an attachment this closure will be called with `nil` indicating a failure.
176 |     private static func createAttachment(
    |                         `- note: add @available attribute to enclosing static method
177 |         localFileURL: URL,
178 |         localFilePathWithTypeString: String,
179 |         completion: @escaping (UNNotificationAttachment?) -> Void
    |                                `- error: 'UNNotificationAttachment' is only available in macOS 10.14 or newer
180 |     ) {
181 |         let localFileURLWithType: URL
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:213:18: error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
210 |     ///   - request: the notification request
211 |     ///   - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
212 |     private static func handleActionButtons(
    |                         `- note: add @available attribute to enclosing static method
213 |         request: UNNotificationRequest,
    |                  `- error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
214 |         bestAttemptContent: UNMutableNotificationContent
215 |     ) {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:214:29: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
210 |     ///   - request: the notification request
211 |     ///   - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
212 |     private static func handleActionButtons(
    |                         `- note: add @available attribute to enclosing static method
213 |         request: UNNotificationRequest,
214 |         bestAttemptContent: UNMutableNotificationContent
    |                             `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
215 |     ) {
216 |         // Respect developer-set categories for non-Klaviyo notifications
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:11:11: error: 'Logger' is only available in macOS 11.0 or newer
 9 |
10 | @available(iOS 14.0, *)
11 | extension Logger {
   | |         `- error: 'Logger' is only available in macOS 11.0 or newer
   | `- note: add @available attribute to enclosing extension
12 |     private static var subsystem = "com.klaviyo.klaviyo-swift-sdk.klaviyoSwiftExtension"
13 |
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:24:32: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
   | `- note: add @available attribute to enclosing extension
23 |     /// Logger for Push Action Buttons
24 |     static let actionButtons = Logger(category: "Action Buttons")
   |                |               `- error: 'Logger' is only available in macOS 11.0 or newer
   |                `- note: add @available attribute to enclosing static property
25 |     /// Logger for Rich Media
26 |     static let richMedia = Logger(category: "Rich Media")
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:26:28: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
   | `- note: add @available attribute to enclosing extension
23 |     /// Logger for Push Action Buttons
24 |     static let actionButtons = Logger(category: "Action Buttons")
25 |     /// Logger for Rich Media
26 |     static let richMedia = Logger(category: "Rich Media")
   |                |           `- error: 'Logger' is only available in macOS 11.0 or newer
   |                `- note: add @available attribute to enclosing static property
27 |     /// Logger for notification category management
28 |     static let notifications = Logger(category: "Notifications")
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:28:32: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
   | `- note: add @available attribute to enclosing extension
23 |     /// Logger for Push Action Buttons
24 |     static let actionButtons = Logger(category: "Action Buttons")
   :
26 |     static let richMedia = Logger(category: "Rich Media")
27 |     /// Logger for notification category management
28 |     static let notifications = Logger(category: "Notifications")
   |                |               `- error: 'Logger' is only available in macOS 11.0 or newer
   |                `- note: add @available attribute to enclosing static property
29 | }
30 |
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:22:11: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
   | |         `- error: 'Logger' is only available in macOS 11.0 or newer
   | `- note: add @available attribute to enclosing extension
23 |     /// Logger for Push Action Buttons
24 |     static let actionButtons = Logger(category: "Action Buttons")
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/UNNotificationContent+Klaviyo.swift:23:11: error: 'UNNotificationContent' is only available in macOS 10.14 or newer
21 | }
22 |
23 | extension UNNotificationContent {
   | |         `- error: 'UNNotificationContent' is only available in macOS 10.14 or newer
   | `- note: add @available attribute to enclosing extension
24 |     /// Determines if this notification content originated from Klaviyo.
25 |     var isKlaviyoNotification: Bool {
[16/25] Compiling AnyCodable AnyEncodable.swift
[17/25] Compiling KlaviyoSwiftExtension KlaviyoActionButtonParser.swift
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:94:79: error: 'UNNotificationAction' is only available in macOS 10.14 or newer
 35 | /// }
 36 | /// ```
 37 | enum KlaviyoActionButtonParser {
    |      `- note: add @available attribute to enclosing enum
 38 |     // MARK: - Public Methods
 39 |
    :
 92 |     /// - Parameter definitions: Array of parsed button definitions
 93 |     /// - Returns: Array of UNNotificationAction instances
 94 |     static func createActions(from definitions: [ActionButtonDefinition]) -> [UNNotificationAction] {
    |                 |                                                             `- error: 'UNNotificationAction' is only available in macOS 10.14 or newer
    |                 `- note: add @available attribute to enclosing static method
 95 |         var actions: [UNNotificationAction] = []
 96 |
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:130:82: error: 'UNNotificationAction' is only available in macOS 10.14 or newer
 35 | /// }
 36 | /// ```
 37 | enum KlaviyoActionButtonParser {
    |      `- note: add @available attribute to enclosing enum
 38 |     // MARK: - Public Methods
 39 |
    :
128 |     /// - Parameter definition: The button definition to convert
129 |     /// - Returns: A configured UNNotificationAction
130 |     private static func createAction(from definition: ActionButtonDefinition) -> UNNotificationAction {
    |                         |                                                        `- error: 'UNNotificationAction' is only available in macOS 10.14 or newer
    |                         `- note: add @available attribute to enclosing static method
131 |         UNNotificationAction(
132 |             identifier: definition.id,
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:24:32: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
   | `- note: add @available attribute to enclosing extension
23 |     /// Logger for Push Action Buttons
24 |     static let actionButtons = Logger(category: "Action Buttons")
   |                |               `- error: 'Logger' is only available in macOS 11.0 or newer
   |                `- note: add @available attribute to enclosing static property
25 |     /// Logger for Rich Media
26 |     static let richMedia = Logger(category: "Rich Media")
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:50:17: error: 'Logger' is only available in macOS 11.0 or newer
 35 | /// }
 36 | /// ```
 37 | enum KlaviyoActionButtonParser {
    |      `- note: add @available attribute to enclosing enum
 38 |     // MARK: - Public Methods
 39 |
    :
 42 |     /// - Parameter userInfo: The notification's userInfo dictionary
 43 |     /// - Returns: Array of parsed button definitions, or nil if none found
 44 |     static func parseActionButtons(from userInfo: [AnyHashable: Any]) -> [ActionButtonDefinition]? {
    |                 `- note: add @available attribute to enclosing static method
 45 |         // Extract body dictionary
 46 |         guard let body = userInfo["body"] as? [String: Any],
    :
 48 |               !actionButtonsArray.isEmpty else {
 49 |             if #available(iOS 14.0, *) {
 50 |                 Logger.actionButtons.info("No action buttons found in notification payload")
    |                 |- error: 'Logger' is only available in macOS 11.0 or newer
    |                 `- note: add 'if #available' version check
 51 |             }
 52 |             return nil
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:50:43: error: 'OSLogMessage' is only available in macOS 11.0 or newer
 35 | /// }
 36 | /// ```
 37 | enum KlaviyoActionButtonParser {
    |      `- note: add @available attribute to enclosing enum
 38 |     // MARK: - Public Methods
 39 |
    :
 42 |     /// - Parameter userInfo: The notification's userInfo dictionary
 43 |     /// - Returns: Array of parsed button definitions, or nil if none found
 44 |     static func parseActionButtons(from userInfo: [AnyHashable: Any]) -> [ActionButtonDefinition]? {
    |                 `- note: add @available attribute to enclosing static method
 45 |         // Extract body dictionary
 46 |         guard let body = userInfo["body"] as? [String: Any],
    :
 48 |               !actionButtonsArray.isEmpty else {
 49 |             if #available(iOS 14.0, *) {
 50 |                 Logger.actionButtons.info("No action buttons found in notification payload")
    |                                           |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                                           `- note: add 'if #available' version check
 51 |             }
 52 |             return nil
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:64:21: error: 'Logger' is only available in macOS 11.0 or newer
 35 | /// }
 36 | /// ```
 37 | enum KlaviyoActionButtonParser {
    |      `- note: add @available attribute to enclosing enum
 38 |     // MARK: - Public Methods
 39 |
    :
 42 |     /// - Parameter userInfo: The notification's userInfo dictionary
 43 |     /// - Returns: Array of parsed button definitions, or nil if none found
 44 |     static func parseActionButtons(from userInfo: [AnyHashable: Any]) -> [ActionButtonDefinition]? {
    |                 `- note: add @available attribute to enclosing static method
 45 |         // Extract body dictionary
 46 |         guard let body = userInfo["body"] as? [String: Any],
    :
 62 |                   let action = ActionType(rawValue: actionString) else {
 63 |                 if #available(iOS 14.0, *) {
 64 |                     Logger.actionButtons.warning("Button data is missing or malformed. Missing an id, label, and/or action. Skipping button: \(buttonData.description)")
    |                     |- error: 'Logger' is only available in macOS 11.0 or newer
    |                     `- note: add 'if #available' version check
 65 |                 }
 66 |                 continue // Skip invalid button definitions
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:64:50: error: 'OSLogMessage' is only available in macOS 11.0 or newer
 35 | /// }
 36 | /// ```
 37 | enum KlaviyoActionButtonParser {
    |      `- note: add @available attribute to enclosing enum
 38 |     // MARK: - Public Methods
 39 |
    :
 42 |     /// - Parameter userInfo: The notification's userInfo dictionary
 43 |     /// - Returns: Array of parsed button definitions, or nil if none found
 44 |     static func parseActionButtons(from userInfo: [AnyHashable: Any]) -> [ActionButtonDefinition]? {
    |                 `- note: add @available attribute to enclosing static method
 45 |         // Extract body dictionary
 46 |         guard let body = userInfo["body"] as? [String: Any],
    :
 62 |                   let action = ActionType(rawValue: actionString) else {
 63 |                 if #available(iOS 14.0, *) {
 64 |                     Logger.actionButtons.warning("Button data is missing or malformed. Missing an id, label, and/or action. Skipping button: \(buttonData.description)")
    |                                                  |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                                                  `- note: add 'if #available' version check
 65 |                 }
 66 |                 continue // Skip invalid button definitions
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:64:143: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
 35 | /// }
 36 | /// ```
 37 | enum KlaviyoActionButtonParser {
    |      `- note: add @available attribute to enclosing enum
 38 |     // MARK: - Public Methods
 39 |
    :
 42 |     /// - Parameter userInfo: The notification's userInfo dictionary
 43 |     /// - Returns: Array of parsed button definitions, or nil if none found
 44 |     static func parseActionButtons(from userInfo: [AnyHashable: Any]) -> [ActionButtonDefinition]? {
    |                 `- note: add @available attribute to enclosing static method
 45 |         // Extract body dictionary
 46 |         guard let body = userInfo["body"] as? [String: Any],
    :
 62 |                   let action = ActionType(rawValue: actionString) else {
 63 |                 if #available(iOS 14.0, *) {
 64 |                     Logger.actionButtons.warning("Button data is missing or malformed. Missing an id, label, and/or action. Skipping button: \(buttonData.description)")
    |                                                                                                                                               |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                                                                                               `- note: add 'if #available' version check
 65 |                 }
 66 |                 continue // Skip invalid button definitions
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:74:21: error: 'Logger' is only available in macOS 11.0 or newer
 35 | /// }
 36 | /// ```
 37 | enum KlaviyoActionButtonParser {
    |      `- note: add @available attribute to enclosing enum
 38 |     // MARK: - Public Methods
 39 |
    :
 42 |     /// - Parameter userInfo: The notification's userInfo dictionary
 43 |     /// - Returns: Array of parsed button definitions, or nil if none found
 44 |     static func parseActionButtons(from userInfo: [AnyHashable: Any]) -> [ActionButtonDefinition]? {
    |                 `- note: add @available attribute to enclosing static method
 45 |         // Extract body dictionary
 46 |         guard let body = userInfo["body"] as? [String: Any],
    :
 72 |             guard isValidActionURLCombination(action: action, url: url) else {
 73 |                 if #available(iOS 14.0, *) {
 74 |                     Logger.actionButtons.warning("Button url is incompatible with its action. Skipping button: \(buttonData.description)")
    |                     |- error: 'Logger' is only available in macOS 11.0 or newer
    |                     `- note: add 'if #available' version check
 75 |                 }
 76 |                 continue
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:74:50: error: 'OSLogMessage' is only available in macOS 11.0 or newer
 35 | /// }
 36 | /// ```
 37 | enum KlaviyoActionButtonParser {
    |      `- note: add @available attribute to enclosing enum
 38 |     // MARK: - Public Methods
 39 |
    :
 42 |     /// - Parameter userInfo: The notification's userInfo dictionary
 43 |     /// - Returns: Array of parsed button definitions, or nil if none found
 44 |     static func parseActionButtons(from userInfo: [AnyHashable: Any]) -> [ActionButtonDefinition]? {
    |                 `- note: add @available attribute to enclosing static method
 45 |         // Extract body dictionary
 46 |         guard let body = userInfo["body"] as? [String: Any],
    :
 72 |             guard isValidActionURLCombination(action: action, url: url) else {
 73 |                 if #available(iOS 14.0, *) {
 74 |                     Logger.actionButtons.warning("Button url is incompatible with its action. Skipping button: \(buttonData.description)")
    |                                                  |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                                                  `- note: add 'if #available' version check
 75 |                 }
 76 |                 continue
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:74:113: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
 35 | /// }
 36 | /// ```
 37 | enum KlaviyoActionButtonParser {
    |      `- note: add @available attribute to enclosing enum
 38 |     // MARK: - Public Methods
 39 |
    :
 42 |     /// - Parameter userInfo: The notification's userInfo dictionary
 43 |     /// - Returns: Array of parsed button definitions, or nil if none found
 44 |     static func parseActionButtons(from userInfo: [AnyHashable: Any]) -> [ActionButtonDefinition]? {
    |                 `- note: add @available attribute to enclosing static method
 45 |         // Extract body dictionary
 46 |         guard let body = userInfo["body"] as? [String: Any],
    :
 72 |             guard isValidActionURLCombination(action: action, url: url) else {
 73 |                 if #available(iOS 14.0, *) {
 74 |                     Logger.actionButtons.warning("Button url is incompatible with its action. Skipping button: \(buttonData.description)")
    |                                                                                                                 |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                                                                 `- note: add 'if #available' version check
 75 |                 }
 76 |                 continue
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:95:23: error: 'UNNotificationAction' is only available in macOS 10.14 or newer
 35 | /// }
 36 | /// ```
 37 | enum KlaviyoActionButtonParser {
    |      `- note: add @available attribute to enclosing enum
 38 |     // MARK: - Public Methods
 39 |
    :
 92 |     /// - Parameter definitions: Array of parsed button definitions
 93 |     /// - Returns: Array of UNNotificationAction instances
 94 |     static func createActions(from definitions: [ActionButtonDefinition]) -> [UNNotificationAction] {
    |                 `- note: add @available attribute to enclosing static method
 95 |         var actions: [UNNotificationAction] = []
    |                       |- error: 'UNNotificationAction' is only available in macOS 10.14 or newer
    |                       `- note: add 'if #available' version check
 96 |
 97 |         for definition in definitions {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoActionButtonParser.swift:131:9: error: 'UNNotificationAction' is only available in macOS 10.14 or newer
 35 | /// }
 36 | /// ```
 37 | enum KlaviyoActionButtonParser {
    |      `- note: add @available attribute to enclosing enum
 38 |     // MARK: - Public Methods
 39 |
    :
128 |     /// - Parameter definition: The button definition to convert
129 |     /// - Returns: A configured UNNotificationAction
130 |     private static func createAction(from definition: ActionButtonDefinition) -> UNNotificationAction {
    |                         `- note: add @available attribute to enclosing static method
131 |         UNNotificationAction(
    |         |- error: 'UNNotificationAction' is only available in macOS 10.14 or newer
    |         `- note: add 'if #available' version check
132 |             identifier: definition.id,
133 |             title: definition.label,
[18/25] Compiling KlaviyoSwiftExtension UNNotificationContent+Klaviyo.swift
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/UNNotificationContent+Klaviyo.swift:23:11: error: 'UNNotificationContent' is only available in macOS 10.14 or newer
21 | }
22 |
23 | extension UNNotificationContent {
   | |         `- error: 'UNNotificationContent' is only available in macOS 10.14 or newer
   | `- note: add @available attribute to enclosing extension
24 |     /// Determines if this notification content originated from Klaviyo.
25 |     var isKlaviyoNotification: Bool {
[19/25] Compiling KlaviyoSwiftExtension KlaviyoExtension.swift
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:41:18: error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
 38 |     ///   - bestAttemptContent: this is also received in `didReceive(_:withContentHandler:)` and is the best attempt at mutating the APNS payload before attaching it to the push notification
 39 |     ///   - contentHandler: this is also received in `didReceive(_:withContentHandler:)` and is the closure that needs to be called before the time iOS provides for us to mutate the content. This closure will be called with the `bestAttemptContent` once the media is downloaded and attached.
 40 |     public static func handleNotificationServiceDidReceivedRequest(
    |                        `- note: add @available attribute to enclosing static method
 41 |         request: UNNotificationRequest,
    |                  `- error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
 42 |         bestAttemptContent: UNMutableNotificationContent,
 43 |         contentHandler: @escaping (UNNotificationContent) -> Void,
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:42:29: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
 38 |     ///   - bestAttemptContent: this is also received in `didReceive(_:withContentHandler:)` and is the best attempt at mutating the APNS payload before attaching it to the push notification
 39 |     ///   - contentHandler: this is also received in `didReceive(_:withContentHandler:)` and is the closure that needs to be called before the time iOS provides for us to mutate the content. This closure will be called with the `bestAttemptContent` once the media is downloaded and attached.
 40 |     public static func handleNotificationServiceDidReceivedRequest(
    |                        `- note: add @available attribute to enclosing static method
 41 |         request: UNNotificationRequest,
 42 |         bestAttemptContent: UNMutableNotificationContent,
    |                             `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
 43 |         contentHandler: @escaping (UNNotificationContent) -> Void,
 44 |         fallbackMediaType: String = "jpg"
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:43:36: error: 'UNNotificationContent' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
 38 |     ///   - bestAttemptContent: this is also received in `didReceive(_:withContentHandler:)` and is the best attempt at mutating the APNS payload before attaching it to the push notification
 39 |     ///   - contentHandler: this is also received in `didReceive(_:withContentHandler:)` and is the closure that needs to be called before the time iOS provides for us to mutate the content. This closure will be called with the `bestAttemptContent` once the media is downloaded and attached.
 40 |     public static func handleNotificationServiceDidReceivedRequest(
    |                        `- note: add @available attribute to enclosing static method
 41 |         request: UNNotificationRequest,
 42 |         bestAttemptContent: UNMutableNotificationContent,
 43 |         contentHandler: @escaping (UNNotificationContent) -> Void,
    |                                    `- error: 'UNNotificationContent' is only available in macOS 10.14 or newer
 44 |         fallbackMediaType: String = "jpg"
 45 |     ) {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:57:57: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
 55 |     /// - Parameters:
 56 |     ///   - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
 57 |     private static func handleBadge(bestAttemptContent: UNMutableNotificationContent) {
    |                         |                               `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
    |                         `- note: add @available attribute to enclosing static method
 58 |         guard let badgeConfigValue = bestAttemptContent.userInfo["badge_config"] as? String else { return }
 59 |         // retrieve the app group user defaults used to store the count
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:88:29: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
 85 |     ///   - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
 86 |     ///   - contentHandler: the closure that needs to be called before the time iOS provides for us to mutate the content
 87 |     private static func handleRichMedia(
    |                         `- note: add @available attribute to enclosing static method
 88 |         bestAttemptContent: UNMutableNotificationContent,
    |                             `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
 89 |         contentHandler: @escaping (UNNotificationContent) -> Void,
 90 |         fallbackMediaType: String = "jpg"
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:89:36: error: 'UNNotificationContent' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
 85 |     ///   - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
 86 |     ///   - contentHandler: the closure that needs to be called before the time iOS provides for us to mutate the content
 87 |     private static func handleRichMedia(
    |                         `- note: add @available attribute to enclosing static method
 88 |         bestAttemptContent: UNMutableNotificationContent,
 89 |         contentHandler: @escaping (UNNotificationContent) -> Void,
    |                                    `- error: 'UNNotificationContent' is only available in macOS 10.14 or newer
 90 |         fallbackMediaType: String = "jpg"
 91 |     ) {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:129:18: error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
126 |     }
127 |
128 |     public static func handleNotificationServiceExtensionTimeWillExpireRequest(
    |                        `- note: add @available attribute to enclosing static method
129 |         request: UNNotificationRequest,
    |                  `- error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
130 |         bestAttemptContent: UNMutableNotificationContent,
131 |         contentHandler: @escaping (UNNotificationContent) -> Void
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:130:29: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
126 |     }
127 |
128 |     public static func handleNotificationServiceExtensionTimeWillExpireRequest(
    |                        `- note: add @available attribute to enclosing static method
129 |         request: UNNotificationRequest,
130 |         bestAttemptContent: UNMutableNotificationContent,
    |                             `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
131 |         contentHandler: @escaping (UNNotificationContent) -> Void
132 |     ) {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:131:36: error: 'UNNotificationContent' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
126 |     }
127 |
128 |     public static func handleNotificationServiceExtensionTimeWillExpireRequest(
    |                        `- note: add @available attribute to enclosing static method
129 |         request: UNNotificationRequest,
130 |         bestAttemptContent: UNMutableNotificationContent,
131 |         contentHandler: @escaping (UNNotificationContent) -> Void
    |                                    `- error: 'UNNotificationContent' is only available in macOS 10.14 or newer
132 |     ) {
133 |         // Still try to register action buttons before timeout
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:179:32: error: 'UNNotificationAttachment' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
174 |     ///   - completion: closure that will be called once the file has been moved and an attachment has been created.
175 |     ///                 Note that in the case of failure during file transfer or creating an attachment this closure will be called with `nil` indicating a failure.
176 |     private static func createAttachment(
    |                         `- note: add @available attribute to enclosing static method
177 |         localFileURL: URL,
178 |         localFilePathWithTypeString: String,
179 |         completion: @escaping (UNNotificationAttachment?) -> Void
    |                                `- error: 'UNNotificationAttachment' is only available in macOS 10.14 or newer
180 |     ) {
181 |         let localFileURLWithType: URL
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:213:18: error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
210 |     ///   - request: the notification request
211 |     ///   - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
212 |     private static func handleActionButtons(
    |                         `- note: add @available attribute to enclosing static method
213 |         request: UNNotificationRequest,
    |                  `- error: 'UNNotificationRequest' is only available in macOS 10.14 or newer
214 |         bestAttemptContent: UNMutableNotificationContent
215 |     ) {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:214:29: error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
210 |     ///   - request: the notification request
211 |     ///   - bestAttemptContent: the best attempt at mutating the APNS payload before attaching it to the push notification
212 |     private static func handleActionButtons(
    |                         `- note: add @available attribute to enclosing static method
213 |         request: UNNotificationRequest,
214 |         bestAttemptContent: UNMutableNotificationContent
    |                             `- error: 'UNMutableNotificationContent' is only available in macOS 10.14 or newer
215 |     ) {
216 |         // Respect developer-set categories for non-Klaviyo notifications
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:26:28: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
   | `- note: add @available attribute to enclosing extension
23 |     /// Logger for Push Action Buttons
24 |     static let actionButtons = Logger(category: "Action Buttons")
25 |     /// Logger for Rich Media
26 |     static let richMedia = Logger(category: "Rich Media")
   |                |           `- error: 'Logger' is only available in macOS 11.0 or newer
   |                `- note: add @available attribute to enclosing static property
27 |     /// Logger for notification category management
28 |     static let notifications = Logger(category: "Notifications")
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:155:21: error: 'Logger' is only available in macOS 11.0 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
141 |     ///   - completion: closure that would be called when the media has finished downloading and the URL to the data on disk is available.
142 |     ///                 note that in the case of failure the closure will still be called but with `nil`.
143 |     private static func downloadMedia(
    |                         `- note: add @available attribute to enclosing static method
144 |         for urlString: String,
145 |         completion: @escaping (URL?) -> Void
    :
153 |             if let error = error {
154 |                 if #available(iOS 14.0, *) {
155 |                     Logger.richMedia.error("Error when downloading push media: \(error.localizedDescription)")
    |                     |- error: 'Logger' is only available in macOS 11.0 or newer
    |                     `- note: add 'if #available' version check
156 |                 }
157 |                 completion(nil)
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:155:44: error: 'OSLogMessage' is only available in macOS 11.0 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
141 |     ///   - completion: closure that would be called when the media has finished downloading and the URL to the data on disk is available.
142 |     ///                 note that in the case of failure the closure will still be called but with `nil`.
143 |     private static func downloadMedia(
    |                         `- note: add @available attribute to enclosing static method
144 |         for urlString: String,
145 |         completion: @escaping (URL?) -> Void
    :
153 |             if let error = error {
154 |                 if #available(iOS 14.0, *) {
155 |                     Logger.richMedia.error("Error when downloading push media: \(error.localizedDescription)")
    |                                            |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                                            `- note: add 'if #available' version check
156 |                 }
157 |                 completion(nil)
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:155:81: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
141 |     ///   - completion: closure that would be called when the media has finished downloading and the URL to the data on disk is available.
142 |     ///                 note that in the case of failure the closure will still be called but with `nil`.
143 |     private static func downloadMedia(
    |                         `- note: add @available attribute to enclosing static method
144 |         for urlString: String,
145 |         completion: @escaping (URL?) -> Void
    :
153 |             if let error = error {
154 |                 if #available(iOS 14.0, *) {
155 |                     Logger.richMedia.error("Error when downloading push media: \(error.localizedDescription)")
    |                                                                                 |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                                 `- note: add 'if #available' version check
156 |                 }
157 |                 completion(nil)
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:183:36: error: 'init(filePath:directoryHint:relativeTo:)' is only available in macOS 13.0 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
174 |     ///   - completion: closure that will be called once the file has been moved and an attachment has been created.
175 |     ///                 Note that in the case of failure during file transfer or creating an attachment this closure will be called with `nil` indicating a failure.
176 |     private static func createAttachment(
    |                         `- note: add @available attribute to enclosing static method
177 |         localFileURL: URL,
178 |         localFilePathWithTypeString: String,
    :
181 |         let localFileURLWithType: URL
182 |         if #available(iOS 16.0, *) {
183 |             localFileURLWithType = URL(filePath: localFilePathWithTypeString)
    |                                    |- error: 'init(filePath:directoryHint:relativeTo:)' is only available in macOS 13.0 or newer
    |                                    `- note: add 'if #available' version check
184 |         } else {
185 |             localFileURLWithType = URL(fileURLWithPath: localFilePathWithTypeString)
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoExtension.swift:195:37: error: 'UNNotificationAttachment' is only available in macOS 10.14 or newer
 26 | }
 27 |
 28 | public enum KlaviyoExtensionSDK {
    |             `- note: add @available attribute to enclosing enum
 29 |     /// Call this method when you receive a rich push notification in the notification service extension.
 30 |     /// This method should be called from within `didReceive(_:withContentHandler:)` method of `UNNotificationServiceExtension`.
    :
174 |     ///   - completion: closure that will be called once the file has been moved and an attachment has been created.
175 |     ///                 Note that in the case of failure during file transfer or creating an attachment this closure will be called with `nil` indicating a failure.
176 |     private static func createAttachment(
    |                         `- note: add @available attribute to enclosing static method
177 |         localFileURL: URL,
178 |         localFilePathWithTypeString: String,
    :
193 |         }
194 |
195 |         guard let attachment = try? UNNotificationAttachment(
    |                                     |- error: 'UNNotificationAttachment' is only available in macOS 10.14 or newer
    |                                     `- note: add 'if #available' version check
196 |             identifier: "",
197 |             url: localFileURLWithType,
[20/25] Compiling KlaviyoSwiftExtension ActionType.swift
[21/25] Compiling KlaviyoSwiftExtension Logger+Ext.swift
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:11:11: error: 'Logger' is only available in macOS 11.0 or newer
 9 |
10 | @available(iOS 14.0, *)
11 | extension Logger {
   | |         `- error: 'Logger' is only available in macOS 11.0 or newer
   | `- note: add @available attribute to enclosing extension
12 |     private static var subsystem = "com.klaviyo.klaviyo-swift-sdk.klaviyoSwiftExtension"
13 |
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:24:32: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
   | `- note: add @available attribute to enclosing extension
23 |     /// Logger for Push Action Buttons
24 |     static let actionButtons = Logger(category: "Action Buttons")
   |                |               `- error: 'Logger' is only available in macOS 11.0 or newer
   |                `- note: add @available attribute to enclosing static property
25 |     /// Logger for Rich Media
26 |     static let richMedia = Logger(category: "Rich Media")
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:26:28: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
   | `- note: add @available attribute to enclosing extension
23 |     /// Logger for Push Action Buttons
24 |     static let actionButtons = Logger(category: "Action Buttons")
25 |     /// Logger for Rich Media
26 |     static let richMedia = Logger(category: "Rich Media")
   |                |           `- error: 'Logger' is only available in macOS 11.0 or newer
   |                `- note: add @available attribute to enclosing static property
27 |     /// Logger for notification category management
28 |     static let notifications = Logger(category: "Notifications")
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:28:32: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
   | `- note: add @available attribute to enclosing extension
23 |     /// Logger for Push Action Buttons
24 |     static let actionButtons = Logger(category: "Action Buttons")
   :
26 |     static let richMedia = Logger(category: "Rich Media")
27 |     /// Logger for notification category management
28 |     static let notifications = Logger(category: "Notifications")
   |                |               `- error: 'Logger' is only available in macOS 11.0 or newer
   |                `- note: add @available attribute to enclosing static property
29 | }
30 |
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:22:11: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
   | |         `- error: 'Logger' is only available in macOS 11.0 or newer
   | `- note: add @available attribute to enclosing extension
23 |     /// Logger for Push Action Buttons
24 |     static let actionButtons = Logger(category: "Action Buttons")
[22/25] Compiling KlaviyoSwiftExtension KlaviyoCategoryManager.swift
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:48:65: error: 'UNNotificationAction' is only available in macOS 10.14 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
 46 |     ///   - categoryIdentifier: Unique identifier for this notification's category
 47 |     ///   - actions: Array of notification actions to include in the category
 48 |     func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
    |          |                                                      `- error: 'UNNotificationAction' is only available in macOS 10.14 or newer
    |          `- note: add @available attribute to enclosing instance method
 49 |         // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
 50 |         queue.sync {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:91:52: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
 89 |     ///
 90 |     /// - Returns: A tuple containing the set of existing categories and a boolean indicating if the fetch timed out
 91 |     private func fetchExistingCategories() -> (Set<UNNotificationCategory>, Bool) {
    |                  |                                 `- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
    |                  `- note: add @available attribute to enclosing instance method
 92 |         let semaphore = DispatchSemaphore(value: 0)
 93 |         var existingCategories: Set<UNNotificationCategory> = []
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:121:23: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
118 |     ///   - new: New category to add or update
119 |     /// - Returns: Merged set of categories with the new category added/updated
120 |     private func mergeCategories(
    |                  `- note: add @available attribute to enclosing instance method
121 |         existing: Set<UNNotificationCategory>,
    |                       `- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
122 |         new: UNNotificationCategory
123 |     ) -> Set<UNNotificationCategory> {
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:122:14: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
118 |     ///   - new: New category to add or update
119 |     /// - Returns: Merged set of categories with the new category added/updated
120 |     private func mergeCategories(
    |                  `- note: add @available attribute to enclosing instance method
121 |         existing: Set<UNNotificationCategory>,
122 |         new: UNNotificationCategory
    |              `- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
123 |     ) -> Set<UNNotificationCategory> {
124 |         var merged = existing
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:123:14: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
118 |     ///   - new: New category to add or update
119 |     /// - Returns: Merged set of categories with the new category added/updated
120 |     private func mergeCategories(
    |                  `- note: add @available attribute to enclosing instance method
121 |         existing: Set<UNNotificationCategory>,
122 |         new: UNNotificationCategory
123 |     ) -> Set<UNNotificationCategory> {
    |              `- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
124 |         var merged = existing
125 |         merged = merged.filter { $0.identifier != new.identifier }
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/Logger+Ext.swift:28:32: error: 'Logger' is only available in macOS 11.0 or newer
20 |
21 | @available(iOS 14.0, *)
22 | extension Logger {
   | `- note: add @available attribute to enclosing extension
23 |     /// Logger for Push Action Buttons
24 |     static let actionButtons = Logger(category: "Action Buttons")
   :
26 |     static let richMedia = Logger(category: "Rich Media")
27 |     /// Logger for notification category management
28 |     static let notifications = Logger(category: "Notifications")
   |                |               `- error: 'Logger' is only available in macOS 11.0 or newer
   |                `- note: add @available attribute to enclosing static property
29 | }
30 |
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:65:39: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
 46 |     ///   - categoryIdentifier: Unique identifier for this notification's category
 47 |     ///   - actions: Array of notification actions to include in the category
 48 |     func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
    |          `- note: add @available attribute to enclosing instance method
 49 |         // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
 50 |         queue.sync {
    :
 63 |             // The category will still be registered, but we won't preserve existing ones
 64 |             // This is acceptable since NSE has tight time constraints
 65 |             let mergedCategories: Set<UNNotificationCategory>
    |                                       |- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
    |                                       `- note: add 'if #available' version check
 66 |             if fetchTimedOut {
 67 |                 // If we timed out, just register the new category
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:52:28: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
 46 |     ///   - categoryIdentifier: Unique identifier for this notification's category
 47 |     ///   - actions: Array of notification actions to include in the category
 48 |     func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
    |          `- note: add @available attribute to enclosing instance method
 49 |         // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
 50 |         queue.sync {
 51 |             // Create the category
 52 |             let category = UNNotificationCategory(
    |                            |- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
    |                            `- note: add 'if #available' version check
 53 |                 identifier: categoryIdentifier,
 54 |                 actions: actions,
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:65:39: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
 46 |     ///   - categoryIdentifier: Unique identifier for this notification's category
 47 |     ///   - actions: Array of notification actions to include in the category
 48 |     func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
    |          `- note: add @available attribute to enclosing instance method
 49 |         // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
 50 |         queue.sync {
    :
 63 |             // The category will still be registered, but we won't preserve existing ones
 64 |             // This is acceptable since NSE has tight time constraints
 65 |             let mergedCategories: Set<UNNotificationCategory>
    |                                       |- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
    |                                       `- note: add 'if #available' version check
 66 |             if fetchTimedOut {
 67 |                 // If we timed out, just register the new category
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:70:21: error: 'Logger' is only available in macOS 11.0 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
 46 |     ///   - categoryIdentifier: Unique identifier for this notification's category
 47 |     ///   - actions: Array of notification actions to include in the category
 48 |     func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
    |          `- note: add @available attribute to enclosing instance method
 49 |         // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
 50 |         queue.sync {
    :
 68 |                 // This is a trade-off: we might lose some existing categories, but we avoid blocking
 69 |                 if #available(iOS 14.0, *) {
 70 |                     Logger.notifications.warning("Could not retrieve existing categories. Prioritizing and setting the incoming category. Existing categories may be lost.")
    |                     |- error: 'Logger' is only available in macOS 11.0 or newer
    |                     `- note: add 'if #available' version check
 71 |                 }
 72 |                 mergedCategories = [category]
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:70:50: error: 'OSLogMessage' is only available in macOS 11.0 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
 46 |     ///   - categoryIdentifier: Unique identifier for this notification's category
 47 |     ///   - actions: Array of notification actions to include in the category
 48 |     func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
    |          `- note: add @available attribute to enclosing instance method
 49 |         // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
 50 |         queue.sync {
    :
 68 |                 // This is a trade-off: we might lose some existing categories, but we avoid blocking
 69 |                 if #available(iOS 14.0, *) {
 70 |                     Logger.notifications.warning("Could not retrieve existing categories. Prioritizing and setting the incoming category. Existing categories may be lost.")
    |                                                  |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                                                  `- note: add 'if #available' version check
 71 |                 }
 72 |                 mergedCategories = [category]
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:80:17: error: 'Logger' is only available in macOS 11.0 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
 46 |     ///   - categoryIdentifier: Unique identifier for this notification's category
 47 |     ///   - actions: Array of notification actions to include in the category
 48 |     func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
    |          `- note: add @available attribute to enclosing instance method
 49 |         // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
 50 |         queue.sync {
    :
 78 |             // Register the merged set
 79 |             if #available(iOS 14.0, *) {
 80 |                 Logger.notifications.warning("Registered new notification category '\(categoryIdentifier)'. Total categories: \(mergedCategories.count)")
    |                 |- error: 'Logger' is only available in macOS 11.0 or newer
    |                 `- note: add 'if #available' version check
 81 |             }
 82 |             UNUserNotificationCenter.current().setNotificationCategories(mergedCategories)
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:80:46: error: 'OSLogMessage' is only available in macOS 11.0 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
 46 |     ///   - categoryIdentifier: Unique identifier for this notification's category
 47 |     ///   - actions: Array of notification actions to include in the category
 48 |     func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
    |          `- note: add @available attribute to enclosing instance method
 49 |         // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
 50 |         queue.sync {
    :
 78 |             // Register the merged set
 79 |             if #available(iOS 14.0, *) {
 80 |                 Logger.notifications.warning("Registered new notification category '\(categoryIdentifier)'. Total categories: \(mergedCategories.count)")
    |                                              |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                                              `- note: add 'if #available' version check
 81 |             }
 82 |             UNUserNotificationCenter.current().setNotificationCategories(mergedCategories)
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:80:86: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
 46 |     ///   - categoryIdentifier: Unique identifier for this notification's category
 47 |     ///   - actions: Array of notification actions to include in the category
 48 |     func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
    |          `- note: add @available attribute to enclosing instance method
 49 |         // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
 50 |         queue.sync {
    :
 78 |             // Register the merged set
 79 |             if #available(iOS 14.0, *) {
 80 |                 Logger.notifications.warning("Registered new notification category '\(categoryIdentifier)'. Total categories: \(mergedCategories.count)")
    |                                                                                      |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                                      `- note: add 'if #available' version check
 81 |             }
 82 |             UNUserNotificationCenter.current().setNotificationCategories(mergedCategories)
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:80:128: error: 'appendInterpolation(_:format:align:privacy:)' is only available in macOS 11.0 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
 46 |     ///   - categoryIdentifier: Unique identifier for this notification's category
 47 |     ///   - actions: Array of notification actions to include in the category
 48 |     func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
    |          `- note: add @available attribute to enclosing instance method
 49 |         // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
 50 |         queue.sync {
    :
 78 |             // Register the merged set
 79 |             if #available(iOS 14.0, *) {
 80 |                 Logger.notifications.warning("Registered new notification category '\(categoryIdentifier)'. Total categories: \(mergedCategories.count)")
    |                                                                                                                                |- error: 'appendInterpolation(_:format:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                                                                                `- note: add 'if #available' version check
 81 |             }
 82 |             UNUserNotificationCenter.current().setNotificationCategories(mergedCategories)
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:82:13: error: 'UNUserNotificationCenter' is only available in macOS 10.14 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
 46 |     ///   - categoryIdentifier: Unique identifier for this notification's category
 47 |     ///   - actions: Array of notification actions to include in the category
 48 |     func registerCategory(categoryIdentifier: String, actions: [UNNotificationAction]) {
    |          `- note: add @available attribute to enclosing instance method
 49 |         // Use serial queue to ensure thread-safe registration when multiple notifications arrive simultaneously
 50 |         queue.sync {
    :
 80 |                 Logger.notifications.warning("Registered new notification category '\(categoryIdentifier)'. Total categories: \(mergedCategories.count)")
 81 |             }
 82 |             UNUserNotificationCenter.current().setNotificationCategories(mergedCategories)
    |             |- error: 'UNUserNotificationCenter' is only available in macOS 10.14 or newer
    |             `- note: add 'if #available' version check
 83 |         }
 84 |     }
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:93:37: error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
 89 |     ///
 90 |     /// - Returns: A tuple containing the set of existing categories and a boolean indicating if the fetch timed out
 91 |     private func fetchExistingCategories() -> (Set<UNNotificationCategory>, Bool) {
    |                  `- note: add @available attribute to enclosing instance method
 92 |         let semaphore = DispatchSemaphore(value: 0)
 93 |         var existingCategories: Set<UNNotificationCategory> = []
    |                                     |- error: 'UNNotificationCategory' is only available in macOS 10.14 or newer
    |                                     `- note: add 'if #available' version check
 94 |         var fetchTimedOut = false
 95 |
/Users/admin/builder/spi-builder-workspace/Sources/KlaviyoSwiftExtension/KlaviyoCategoryManager.swift:96:9: error: 'UNUserNotificationCenter' is only available in macOS 10.14 or newer
 19 | /// - Registering unique categories per notification with dynamic actions
 20 | /// - Preserving existing categories (including developer-set ones) when adding new categories
 21 | class KlaviyoCategoryManager {
    |       `- note: add @available attribute to enclosing class
 22 |     static let shared = KlaviyoCategoryManager()
 23 |
    :
 89 |     ///
 90 |     /// - Returns: A tuple containing the set of existing categories and a boolean indicating if the fetch timed out
 91 |     private func fetchExistingCategories() -> (Set<UNNotificationCategory>, Bool) {
    |                  `- note: add @available attribute to enclosing instance method
 92 |         let semaphore = DispatchSemaphore(value: 0)
 93 |         var existingCategories: Set<UNNotificationCategory> = []
 94 |         var fetchTimedOut = false
 95 |
 96 |         UNUserNotificationCenter.current().getNotificationCategories { categories in
    |         |- error: 'UNUserNotificationCenter' is only available in macOS 10.14 or newer
    |         `- note: add 'if #available' version check
 97 |             existingCategories = categories
 98 |             semaphore.signal()
[23/25] Emitting module AnyCodable
[24/25] Compiling AnyCodable AnyDecodable.swift
Fetching https://github.com/Flight-School/AnyCodable
Fetching https://github.com/pointfreeco/swift-case-paths
Fetching https://github.com/pointfreeco/swift-snapshot-testing
Fetching https://github.com/pointfreeco/combine-schedulers
Fetching https://github.com/pointfreeco/swift-custom-dump
[1/2606] Fetching combine-schedulers
[80/8070] Fetching combine-schedulers, swift-custom-dump
[190/12686] Fetching combine-schedulers, swift-custom-dump, swift-case-paths
[481/13468] Fetching combine-schedulers, swift-custom-dump, swift-case-paths, anycodable
Fetched https://github.com/pointfreeco/swift-case-paths from cache (0.95s)
Fetched https://github.com/pointfreeco/swift-custom-dump from cache (0.95s)
[1/16069] Fetching swift-snapshot-testing
Fetched https://github.com/pointfreeco/swift-snapshot-testing from cache (4.98s)
Fetched https://github.com/Flight-School/AnyCodable from cache (4.98s)
Fetched https://github.com/pointfreeco/combine-schedulers from cache (4.98s)
Computing version for https://github.com/pointfreeco/combine-schedulers
Computed https://github.com/pointfreeco/combine-schedulers at 0.11.0 (3.21s)
Fetching https://github.com/pointfreeco/swift-concurrency-extras
Fetching https://github.com/pointfreeco/xctest-dynamic-overlay
[1/956] Fetching swift-concurrency-extras
[126/6679] Fetching swift-concurrency-extras, xctest-dynamic-overlay
Fetched https://github.com/pointfreeco/xctest-dynamic-overlay from cache (1.38s)
Fetched https://github.com/pointfreeco/swift-concurrency-extras from cache (1.38s)
Computing version for https://github.com/pointfreeco/xctest-dynamic-overlay
Computed https://github.com/pointfreeco/xctest-dynamic-overlay at 0.9.0 (0.58s)
Computing version for https://github.com/pointfreeco/swift-concurrency-extras
Computed https://github.com/pointfreeco/swift-concurrency-extras at 0.1.2 (0.58s)
Computing version for https://github.com/pointfreeco/swift-case-paths
Computed https://github.com/pointfreeco/swift-case-paths at 0.14.1 (0.60s)
Computing version for https://github.com/Flight-School/AnyCodable
Computed https://github.com/Flight-School/AnyCodable at 0.6.7 (0.59s)
Computing version for https://github.com/pointfreeco/swift-custom-dump
Computed https://github.com/pointfreeco/swift-custom-dump at 0.11.2 (0.58s)
Computing version for https://github.com/pointfreeco/swift-snapshot-testing
Computed https://github.com/pointfreeco/swift-snapshot-testing at 1.17.7 (0.57s)
Fetching https://github.com/swiftlang/swift-syntax
[1/75037] Fetching swift-syntax
Fetched https://github.com/swiftlang/swift-syntax from cache (4.45s)
Computing version for https://github.com/swiftlang/swift-syntax
Computed https://github.com/swiftlang/swift-syntax at 600.0.1 (0.67s)
Creating working copy for https://github.com/pointfreeco/swift-custom-dump
Working copy of https://github.com/pointfreeco/swift-custom-dump resolved at 0.11.2
Creating working copy for https://github.com/pointfreeco/swift-case-paths
Working copy of https://github.com/pointfreeco/swift-case-paths resolved at 0.14.1
Creating working copy for https://github.com/swiftlang/swift-syntax
Working copy of https://github.com/swiftlang/swift-syntax resolved at 600.0.1
Creating working copy for https://github.com/pointfreeco/swift-snapshot-testing
Working copy of https://github.com/pointfreeco/swift-snapshot-testing resolved at 1.17.7
Creating working copy for https://github.com/Flight-School/AnyCodable
Working copy of https://github.com/Flight-School/AnyCodable resolved at 0.6.7
Creating working copy for https://github.com/pointfreeco/xctest-dynamic-overlay
Working copy of https://github.com/pointfreeco/xctest-dynamic-overlay resolved at 0.9.0
Creating working copy for https://github.com/pointfreeco/combine-schedulers
Working copy of https://github.com/pointfreeco/combine-schedulers resolved at 0.11.0
Creating working copy for https://github.com/pointfreeco/swift-concurrency-extras
Working copy of https://github.com/pointfreeco/swift-concurrency-extras resolved at 0.1.2
BUILD FAILURE 6.0 macosSpm