Build Information
Failed to build XMPPChatSwift, reference main (ff6f24), with Swift 6.2 for macOS (SPM) on 29 Jun 2026 04:22:09 UTC.
Build Command
env DEVELOPER_DIR=/Applications/Xcode-26.3.0.app xcrun swift build --arch arm64Build Log
:
353 | guard self.isBrowserOnline() && !self.pausedDueToOfflineCap else { return }
354 | self.offlineReconnectAttempts += 1
355 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
356 | await self.reconnect()
357 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:355:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
307 |
308 | // MARK: - Reconnection
309 | private func scheduleReconnect(reason: String) {
| `- note: add '@available' attribute to enclosing instance method
310 | // Don't reconnect if connection was replaced
311 | if connectionReplaced {
:
353 | guard self.isBrowserOnline() && !self.pausedDueToOfflineCap else { return }
354 | self.offlineReconnectAttempts += 1
355 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
356 | await self.reconnect()
357 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:400:27: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
382 |
383 | // MARK: - Connection Status
384 | public func ensureConnected(timeout: TimeInterval = 10.0) async throws {
| `- note: add '@available' attribute to enclosing instance method
385 | guard status != .online else { return }
386 |
:
398 | throw XMPPError.connectionTimeout
399 | }
400 | try await Task.sleep(nanoseconds: 500_000_000) // 0.5 seconds
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
401 | }
402 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:400:32: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
382 |
383 | // MARK: - Connection Status
384 | public func ensureConnected(timeout: TimeInterval = 10.0) async throws {
| `- note: add '@available' attribute to enclosing instance method
385 | guard status != .online else { return }
386 |
:
398 | throw XMPPError.connectionTimeout
399 | }
400 | try await Task.sleep(nanoseconds: 500_000_000) // 0.5 seconds
| |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
401 | }
402 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:22: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
408 |
409 | // MARK: - Message Queue
410 | private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
411 | return await withCheckedContinuation { continuation in
| |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
412 | messageQueue.append {
413 | let result = await task()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:417:13: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
408 |
409 | // MARK: - Message Queue
410 | private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
411 | return await withCheckedContinuation { continuation in
412 | messageQueue.append {
:
415 | return result
416 | }
417 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
418 | await processQueue()
419 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:417:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
408 |
409 | // MARK: - Message Queue
410 | private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
411 | return await withCheckedContinuation { continuation in
412 | messageQueue.append {
:
415 | return result
416 | }
417 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
418 | await processQueue()
419 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:47: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:46: note: expanded code originates here
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
408 |
409 | // MARK: - Message Queue
410 | private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
411 | return await withCheckedContinuation { continuation in
+--- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift
|409 |
|410 |
|411 | #isolation
| | `- error: 'isolation()' is only available in macOS 10.15 or newer
+------------------------------------------------------------------------------------------------
412 | messageQueue.append {
413 | let result = await task()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:446:24: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
421 | }
422 |
423 | private func processQueue() async {
| `- note: add '@available' attribute to enclosing instance method
424 | guard !processingQueue else { return }
425 | processingQueue = true
:
444 |
445 | if !messageQueue.isEmpty && status == .online {
446 | try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 second
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
447 | await processQueue()
448 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:446:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
421 | }
422 |
423 | private func processQueue() async {
| `- note: add '@available' attribute to enclosing instance method
424 | guard !processingQueue else { return }
425 | processingQueue = true
:
444 |
445 | if !messageQueue.isEmpty && status == .online {
446 | try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 second
| |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
447 | await processQueue()
448 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:481:13: warning: immutable value 'pongWait' was never used; consider replacing with '_' or removing it [#no-usage]
479 | let idleTime: TimeInterval = 2.0
480 | // Match TypeScript: const pongWait = 2000;
481 | let pongWait: TimeInterval = 2.0
| `- warning: immutable value 'pongWait' was never used; consider replacing with '_' or removing it [#no-usage]
482 |
483 | idlePingTimeout = Timer.scheduledTimer(withTimeInterval: idleTime, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:579:9: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
576 | // This should be called when XMPP stream becomes online
577 | // We need to add a method to XMPPStreamDelegate for this
578 | public func xmppStreamDidBecomeOnline(_ stream: XMPPStream, jid: String) {
| `- note: add '@available' attribute to enclosing instance method
579 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
580 | await handleOnlineEvent(jid: jid)
581 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:579:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
576 | // This should be called when XMPP stream becomes online
577 | // We need to add a method to XMPPStreamDelegate for this
578 | public func xmppStreamDidBecomeOnline(_ stream: XMPPStream, jid: String) {
| `- note: add '@available' attribute to enclosing instance method
579 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
580 | await handleOnlineEvent(jid: jid)
581 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:644:24: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
582 | }
583 |
584 | private func handleOnlineEvent(jid: String) async {
| `- note: add '@available' attribute to enclosing instance method
585 | // Match TypeScript: this.client.on('online', async (jid) => { ... })
586 | do {
:
642 |
643 | // Wait a bit for the server to process the initial presence
644 | try? await Task.sleep(nanoseconds: 100_000_000) // 0.1 seconds
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
645 |
646 | // Match TypeScript: await this.sendAllPresencesAndMarkReady();
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:644:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
582 | }
583 |
584 | private func handleOnlineEvent(jid: String) async {
| `- note: add '@available' attribute to enclosing instance method
585 | // Match TypeScript: this.client.on('online', async (jid) => { ... })
586 | do {
:
642 |
643 | // Wait a bit for the server to process the initial presence
644 | try? await Task.sleep(nanoseconds: 100_000_000) // 0.1 seconds
| |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
645 |
646 | // Match TypeScript: await this.sendAllPresencesAndMarkReady();
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:653:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
582 | }
583 |
584 | private func handleOnlineEvent(jid: String) async {
| `- note: add '@available' attribute to enclosing instance method
585 | // Match TypeScript: this.client.on('online', async (jid) => { ... })
586 | do {
:
651 |
652 | // Match TypeScript: this.processQueue().catch(() => {});
653 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
654 | await processQueue()
655 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:653:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
582 | }
583 |
584 | private func handleOnlineEvent(jid: String) async {
| `- note: add '@available' attribute to enclosing instance method
585 | // Match TypeScript: this.client.on('online', async (jid) => { ... })
586 | do {
:
651 |
652 | // Match TypeScript: this.processQueue().catch(() => {});
653 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
654 | await processQueue()
655 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:662:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
660 | // await drainHeap()
661 |
662 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
663 | // Match TypeScript: console.log('Error', error);
664 | //NSlog("Error %@", error.localizedDescription)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:681:24: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
679 | //NSlog(" Disconnect Error Code: %ld", nsError.code)
680 | //NSlog(" Disconnect Error Description: %@", nsError.localizedDescription)
681 | if let reason = nsError.userInfo["reason"] as? String {
| `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
682 | //NSlog(" Disconnect Reason: %@", reason)
683 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:684:24: warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
682 | //NSlog(" Disconnect Reason: %@", reason)
683 | }
684 | if let code = nsError.userInfo["disconnectCode"] as? UInt16 {
| `- warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
685 | //NSlog(" WebSocket Close Code: %u", code)
686 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:690:24: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
688 | //print(" Disconnect Error Code: \(nsError.code)")
689 | //print(" Disconnect Error Description: \(nsError.localizedDescription)")
690 | if let reason = nsError.userInfo["reason"] as? String {
| `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
691 | //print(" Disconnect Reason: \(reason)")
692 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:693:24: warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
691 | //print(" Disconnect Reason: \(reason)")
692 | }
693 | if let code = nsError.userInfo["disconnectCode"] as? UInt16 {
| `- warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
694 | //print(" WebSocket Close Code: \(code)")
695 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:852:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
850 | handlePong()
851 | }
852 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
853 | // Ignore errors - match TypeScript empty catch
854 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:22: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
931 | /// it. If the probe times out, the caller (`SessionRecoveryManager`)
932 | /// forces a hard reconnect rather than relying on `status == .online`.
933 | public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
934 | guard status == .online,
935 | let stream = xmppStream,
:
954 | lastPingId = pingId
955 |
956 | return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
| |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
957 | pingProbeContinuation = continuation
958 | pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:63: error: 'CheckedContinuation' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
931 | /// it. If the probe times out, the caller (`SessionRecoveryManager`)
932 | /// forces a hard reconnect rather than relying on `status == .online`.
933 | public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
934 | guard status == .online,
935 | let stream = xmppStream,
:
954 | lastPingId = pingId
955 |
956 | return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
| |- error: 'CheckedContinuation' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
957 | pingProbeContinuation = continuation
958 | pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:47: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:46: note: expanded code originates here
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
931 | /// it. If the probe times out, the caller (`SessionRecoveryManager`)
932 | /// forces a hard reconnect rather than relying on `status == .online`.
933 | public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
934 | guard status == .online,
935 | let stream = xmppStream,
:
954 | lastPingId = pingId
955 |
956 | return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
+--- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift
|954 |
|955 |
|956 | #isolation
| | `- error: 'isolation()' is only available in macOS 10.15 or newer
+------------------------------------------------------------------------------------------------
957 | pingProbeContinuation = continuation
958 | pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:959:34: warning: capture of 'self' with non-Sendable type 'XMPPClient?' in a '@Sendable' closure [#SendableClosureCaptures]
17 | }
18 |
19 | public class XMPPClient {
| `- note: class 'XMPPClient' does not conform to the 'Sendable' protocol
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
957 | pingProbeContinuation = continuation
958 | pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
959 | guard let self = self else { return }
| `- warning: capture of 'self' with non-Sendable type 'XMPPClient?' in a '@Sendable' closure [#SendableClosureCaptures]
960 | guard let cont = self.pingProbeContinuation else { return }
961 | self.pingProbeContinuation = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1033:9: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1013 | /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 | /// This ensures messages are available even if no ChatRoomViewModel is active
1015 | private func processIncomingMessage(_ message: Message) {
| `- note: add '@available' attribute to enclosing instance method
1016 | let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 | let selfLocal = self.username.components(separatedBy: "@").first ?? ""
:
1031 |
1032 | // MessageCache is @MainActor, so we need to call it from main actor context
1033 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1034 | // Load existing messages from cache
1035 | var cachedMessages = MessageCache.shared.loadMessages(forRoomJID: roomJID) ?? []
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1033:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1013 | /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 | /// This ensures messages are available even if no ChatRoomViewModel is active
1015 | private func processIncomingMessage(_ message: Message) {
| `- note: add '@available' attribute to enclosing instance method
1016 | let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 | let selfLocal = self.username.components(separatedBy: "@").first ?? ""
:
1031 |
1032 | // MessageCache is @MainActor, so we need to call it from main actor context
1033 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1034 | // Load existing messages from cache
1035 | var cachedMessages = MessageCache.shared.loadMessages(forRoomJID: roomJID) ?? []
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1059:21: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1013 | /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 | /// This ensures messages are available even if no ChatRoomViewModel is active
1015 | private func processIncomingMessage(_ message: Message) {
| `- note: add '@available' attribute to enclosing instance method
1016 | let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 | let selfLocal = self.username.components(separatedBy: "@").first ?? ""
:
1057 | if var storeRoom = RoomStore.shared.rooms[roomJID] {
1058 | storeRoom.messages = messagesToSave
1059 | RoomStore.shared.rooms[roomJID] = storeRoom
| |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1060 | }
1061 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1179:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1177 |
1178 | // Update RoomStore (must be on MainActor)
1179 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1180 | RoomStore.shared.setReactions(
1181 | roomJID: roomJID,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1179:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1177 |
1178 | // Update RoomStore (must be on MainActor)
1179 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1180 | RoomStore.shared.setReactions(
1181 | roomJID: roomJID,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1231:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1229 | print("📨 XMPPClient: Chat invite received for room \(roomJID)")
1230 |
1231 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1232 | // If the user previously left this room, our client
1233 | // still has a hidden flag set (see `RoomStore.hideRoom`).
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1231:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1229 | print("📨 XMPPClient: Chat invite received for room \(roomJID)")
1230 |
1231 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1232 | // If the user previously left this room, our client
1233 | // still has a hidden flag set (see `RoomStore.hideRoom`).
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1292:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1290 | guard let self = self, !roomJID.isEmpty else { return }
1291 | print("🗑️ XMPPClient: Room destroyed/kicked — \(roomJID)")
1292 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1293 | RoomStore.shared.deleteRoom(jid: roomJID)
1294 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1292:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1290 | guard let self = self, !roomJID.isEmpty else { return }
1291 | print("🗑️ XMPPClient: Room destroyed/kicked — \(roomJID)")
1292 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1293 | RoomStore.shared.deleteRoom(jid: roomJID)
1294 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1325:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1323 | // Match TypeScript: deleteRoomMessage completely removes message from array
1324 | // Update RoomStore (must be on MainActor) - completely remove message
1325 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1326 | RoomStore.shared.deleteMessage(roomJID: roomJID, messageId: messageId)
1327 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1325:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1323 | // Match TypeScript: deleteRoomMessage completely removes message from array
1324 | // Update RoomStore (must be on MainActor) - completely remove message
1325 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1326 | RoomStore.shared.deleteMessage(roomJID: roomJID, messageId: messageId)
1327 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1346:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1344 |
1345 | // Update RoomStore (must be on MainActor)
1346 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1347 | var updates = PartialMessageUpdate()
1348 | updates.body = newText
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1346:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1344 |
1345 | // Update RoomStore (must be on MainActor)
1346 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1347 | var updates = PartialMessageUpdate()
1348 | updates.body = newText
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
[106/108] Compiling XMPPChatCore XMPPClient+Operations.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:16:5: error: 'Task' is only available in macOS 10.15 or newer
8 | import Foundation
9 |
10 | public func resendMessage(
| `- note: add '@available' attribute to enclosing global function
11 | message: Message,
12 | client: XMPPClient,
:
14 | completion: @escaping (Result<Message, Error>) -> Void
15 | ) {
16 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
17 | do {
18 | if let mimetype = message.mimetype, mimetype.hasPrefix("media/") {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:16:5: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
8 | import Foundation
9 |
10 | public func resendMessage(
| `- note: add '@available' attribute to enclosing global function
11 | message: Message,
12 | client: XMPPClient,
:
14 | completion: @escaping (Result<Message, Error>) -> Void
15 | ) {
16 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
17 | do {
18 | if let mimetype = message.mimetype, mimetype.hasPrefix("media/") {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:64:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
62 | completion(.success(message))
63 | }
64 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
65 | completion(.failure(error))
66 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient+Operations.swift:99:24: error: 'Task' is only available in macOS 10.15 or newer
9 | import Foundation
10 |
11 | extension XMPPClient {
| `- note: add '@available' attribute to enclosing extension
12 | /// Send global `<presence/>` stanza to XMPP server (announce online).
13 | public func sendGlobalPresence() {
:
87 | }
88 |
89 | internal func waitForRoomPresenceResponses(roomJIDs: [String], timeout: TimeInterval) async -> [String] {
| `- note: add '@available' attribute to enclosing instance method
90 | let normalized = roomJIDs.map { $0.components(separatedBy: "/").first ?? $0 }
91 | let start = Date()
:
97 | return []
98 | }
99 | try? await Task.sleep(nanoseconds: 100_000_000)
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
100 | }
101 | let unresolved = normalized.filter { !hasPresenceResponseForRoom($0) }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient+Operations.swift:99:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
9 | import Foundation
10 |
11 | extension XMPPClient {
| `- note: add '@available' attribute to enclosing extension
12 | /// Send global `<presence/>` stanza to XMPP server (announce online).
13 | public func sendGlobalPresence() {
:
87 | }
88 |
89 | internal func waitForRoomPresenceResponses(roomJIDs: [String], timeout: TimeInterval) async -> [String] {
| `- note: add '@available' attribute to enclosing instance method
90 | let normalized = roomJIDs.map { $0.components(separatedBy: "/").first ?? $0 }
91 | let start = Date()
:
97 | return []
98 | }
99 | try? await Task.sleep(nanoseconds: 100_000_000)
| |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
100 | }
101 | let unresolved = normalized.filter { !hasPresenceResponseForRoom($0) }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:64:40: error: 'CheckedContinuation' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
62 | // either by a matching `<iq type='result' id='probe-...'/>` (handlePong)
63 | // or by the probe timer firing.
64 | private var pingProbeContinuation: CheckedContinuation<Bool, Never>?
| `- error: 'CheckedContinuation' is only available in macOS 10.15 or newer
65 | private var pingProbeTimer: Timer?
66 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:232:13: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
161 | // MARK: - Connection Management
162 | // Match TypeScript: async initializeClient()
163 | private func initializeClient() {
| `- note: add '@available' attribute to enclosing instance method
164 | // Prevent multiple simultaneous connection attempts
165 | guard !isConnecting else {
:
230 |
231 | // Match TypeScript: this.client.start().catch((error) => { console.error('Error starting client:', error); });
232 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
233 | do {
234 | xmppStream?.connect(username: username, password: password, resource: resource)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:232:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
161 | // MARK: - Connection Management
162 | // Match TypeScript: async initializeClient()
163 | private func initializeClient() {
| `- note: add '@available' attribute to enclosing instance method
164 | // Prevent multiple simultaneous connection attempts
165 | guard !isConnecting else {
:
230 |
231 | // Match TypeScript: this.client.start().catch((error) => { console.error('Error starting client:', error); });
232 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
233 | do {
234 | xmppStream?.connect(username: username, password: password, resource: resource)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:235:19: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
233 | do {
234 | xmppStream?.connect(username: username, password: password, resource: resource)
235 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
236 | //NSlog("Error starting client: %@", error.localizedDescription)
237 | //print("Error starting client: \(error.localizedDescription)")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:246:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
244 |
245 | logStep("initializeClient:started")
246 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
247 | //NSlog("Error initializing client: %@", error.localizedDescription)
248 | //print("Error initializing client: \(error.localizedDescription)")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:293:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
291 | //NSlog("Client disconnected")
292 | //print("Client disconnected")
293 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
294 | // Match TypeScript: console.error('Error disconnecting client:', error);
295 | //NSlog("Error disconnecting client: %@", error.localizedDescription)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:355:13: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
307 |
308 | // MARK: - Reconnection
309 | private func scheduleReconnect(reason: String) {
| `- note: add '@available' attribute to enclosing instance method
310 | // Don't reconnect if connection was replaced
311 | if connectionReplaced {
:
353 | guard self.isBrowserOnline() && !self.pausedDueToOfflineCap else { return }
354 | self.offlineReconnectAttempts += 1
355 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
356 | await self.reconnect()
357 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:355:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
307 |
308 | // MARK: - Reconnection
309 | private func scheduleReconnect(reason: String) {
| `- note: add '@available' attribute to enclosing instance method
310 | // Don't reconnect if connection was replaced
311 | if connectionReplaced {
:
353 | guard self.isBrowserOnline() && !self.pausedDueToOfflineCap else { return }
354 | self.offlineReconnectAttempts += 1
355 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
356 | await self.reconnect()
357 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:400:27: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
382 |
383 | // MARK: - Connection Status
384 | public func ensureConnected(timeout: TimeInterval = 10.0) async throws {
| `- note: add '@available' attribute to enclosing instance method
385 | guard status != .online else { return }
386 |
:
398 | throw XMPPError.connectionTimeout
399 | }
400 | try await Task.sleep(nanoseconds: 500_000_000) // 0.5 seconds
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
401 | }
402 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:400:32: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
382 |
383 | // MARK: - Connection Status
384 | public func ensureConnected(timeout: TimeInterval = 10.0) async throws {
| `- note: add '@available' attribute to enclosing instance method
385 | guard status != .online else { return }
386 |
:
398 | throw XMPPError.connectionTimeout
399 | }
400 | try await Task.sleep(nanoseconds: 500_000_000) // 0.5 seconds
| |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
401 | }
402 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:22: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
408 |
409 | // MARK: - Message Queue
410 | private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
411 | return await withCheckedContinuation { continuation in
| |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
412 | messageQueue.append {
413 | let result = await task()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:417:13: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
408 |
409 | // MARK: - Message Queue
410 | private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
411 | return await withCheckedContinuation { continuation in
412 | messageQueue.append {
:
415 | return result
416 | }
417 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
418 | await processQueue()
419 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:417:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
408 |
409 | // MARK: - Message Queue
410 | private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
411 | return await withCheckedContinuation { continuation in
412 | messageQueue.append {
:
415 | return result
416 | }
417 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
418 | await processQueue()
419 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:47: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:46: note: expanded code originates here
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
408 |
409 | // MARK: - Message Queue
410 | private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
411 | return await withCheckedContinuation { continuation in
+--- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift
|409 |
|410 |
|411 | #isolation
| | `- error: 'isolation()' is only available in macOS 10.15 or newer
+------------------------------------------------------------------------------------------------
412 | messageQueue.append {
413 | let result = await task()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:446:24: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
421 | }
422 |
423 | private func processQueue() async {
| `- note: add '@available' attribute to enclosing instance method
424 | guard !processingQueue else { return }
425 | processingQueue = true
:
444 |
445 | if !messageQueue.isEmpty && status == .online {
446 | try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 second
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
447 | await processQueue()
448 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:446:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
421 | }
422 |
423 | private func processQueue() async {
| `- note: add '@available' attribute to enclosing instance method
424 | guard !processingQueue else { return }
425 | processingQueue = true
:
444 |
445 | if !messageQueue.isEmpty && status == .online {
446 | try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 second
| |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
447 | await processQueue()
448 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:481:13: warning: immutable value 'pongWait' was never used; consider replacing with '_' or removing it [#no-usage]
479 | let idleTime: TimeInterval = 2.0
480 | // Match TypeScript: const pongWait = 2000;
481 | let pongWait: TimeInterval = 2.0
| `- warning: immutable value 'pongWait' was never used; consider replacing with '_' or removing it [#no-usage]
482 |
483 | idlePingTimeout = Timer.scheduledTimer(withTimeInterval: idleTime, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:579:9: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
576 | // This should be called when XMPP stream becomes online
577 | // We need to add a method to XMPPStreamDelegate for this
578 | public func xmppStreamDidBecomeOnline(_ stream: XMPPStream, jid: String) {
| `- note: add '@available' attribute to enclosing instance method
579 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
580 | await handleOnlineEvent(jid: jid)
581 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:579:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
576 | // This should be called when XMPP stream becomes online
577 | // We need to add a method to XMPPStreamDelegate for this
578 | public func xmppStreamDidBecomeOnline(_ stream: XMPPStream, jid: String) {
| `- note: add '@available' attribute to enclosing instance method
579 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
580 | await handleOnlineEvent(jid: jid)
581 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:644:24: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
582 | }
583 |
584 | private func handleOnlineEvent(jid: String) async {
| `- note: add '@available' attribute to enclosing instance method
585 | // Match TypeScript: this.client.on('online', async (jid) => { ... })
586 | do {
:
642 |
643 | // Wait a bit for the server to process the initial presence
644 | try? await Task.sleep(nanoseconds: 100_000_000) // 0.1 seconds
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
645 |
646 | // Match TypeScript: await this.sendAllPresencesAndMarkReady();
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:644:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
582 | }
583 |
584 | private func handleOnlineEvent(jid: String) async {
| `- note: add '@available' attribute to enclosing instance method
585 | // Match TypeScript: this.client.on('online', async (jid) => { ... })
586 | do {
:
642 |
643 | // Wait a bit for the server to process the initial presence
644 | try? await Task.sleep(nanoseconds: 100_000_000) // 0.1 seconds
| |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
645 |
646 | // Match TypeScript: await this.sendAllPresencesAndMarkReady();
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:653:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
582 | }
583 |
584 | private func handleOnlineEvent(jid: String) async {
| `- note: add '@available' attribute to enclosing instance method
585 | // Match TypeScript: this.client.on('online', async (jid) => { ... })
586 | do {
:
651 |
652 | // Match TypeScript: this.processQueue().catch(() => {});
653 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
654 | await processQueue()
655 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:653:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
582 | }
583 |
584 | private func handleOnlineEvent(jid: String) async {
| `- note: add '@available' attribute to enclosing instance method
585 | // Match TypeScript: this.client.on('online', async (jid) => { ... })
586 | do {
:
651 |
652 | // Match TypeScript: this.processQueue().catch(() => {});
653 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
654 | await processQueue()
655 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:662:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
660 | // await drainHeap()
661 |
662 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
663 | // Match TypeScript: console.log('Error', error);
664 | //NSlog("Error %@", error.localizedDescription)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:681:24: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
679 | //NSlog(" Disconnect Error Code: %ld", nsError.code)
680 | //NSlog(" Disconnect Error Description: %@", nsError.localizedDescription)
681 | if let reason = nsError.userInfo["reason"] as? String {
| `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
682 | //NSlog(" Disconnect Reason: %@", reason)
683 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:684:24: warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
682 | //NSlog(" Disconnect Reason: %@", reason)
683 | }
684 | if let code = nsError.userInfo["disconnectCode"] as? UInt16 {
| `- warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
685 | //NSlog(" WebSocket Close Code: %u", code)
686 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:690:24: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
688 | //print(" Disconnect Error Code: \(nsError.code)")
689 | //print(" Disconnect Error Description: \(nsError.localizedDescription)")
690 | if let reason = nsError.userInfo["reason"] as? String {
| `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
691 | //print(" Disconnect Reason: \(reason)")
692 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:693:24: warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
691 | //print(" Disconnect Reason: \(reason)")
692 | }
693 | if let code = nsError.userInfo["disconnectCode"] as? UInt16 {
| `- warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
694 | //print(" WebSocket Close Code: \(code)")
695 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:852:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
850 | handlePong()
851 | }
852 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
853 | // Ignore errors - match TypeScript empty catch
854 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:22: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
931 | /// it. If the probe times out, the caller (`SessionRecoveryManager`)
932 | /// forces a hard reconnect rather than relying on `status == .online`.
933 | public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
934 | guard status == .online,
935 | let stream = xmppStream,
:
954 | lastPingId = pingId
955 |
956 | return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
| |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
957 | pingProbeContinuation = continuation
958 | pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:63: error: 'CheckedContinuation' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
931 | /// it. If the probe times out, the caller (`SessionRecoveryManager`)
932 | /// forces a hard reconnect rather than relying on `status == .online`.
933 | public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
934 | guard status == .online,
935 | let stream = xmppStream,
:
954 | lastPingId = pingId
955 |
956 | return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
| |- error: 'CheckedContinuation' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
957 | pingProbeContinuation = continuation
958 | pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:47: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:46: note: expanded code originates here
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
931 | /// it. If the probe times out, the caller (`SessionRecoveryManager`)
932 | /// forces a hard reconnect rather than relying on `status == .online`.
933 | public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
934 | guard status == .online,
935 | let stream = xmppStream,
:
954 | lastPingId = pingId
955 |
956 | return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
+--- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift
|954 |
|955 |
|956 | #isolation
| | `- error: 'isolation()' is only available in macOS 10.15 or newer
+------------------------------------------------------------------------------------------------
957 | pingProbeContinuation = continuation
958 | pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:959:34: warning: capture of 'self' with non-Sendable type 'XMPPClient?' in a '@Sendable' closure [#SendableClosureCaptures]
17 | }
18 |
19 | public class XMPPClient {
| `- note: class 'XMPPClient' does not conform to the 'Sendable' protocol
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
957 | pingProbeContinuation = continuation
958 | pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
959 | guard let self = self else { return }
| `- warning: capture of 'self' with non-Sendable type 'XMPPClient?' in a '@Sendable' closure [#SendableClosureCaptures]
960 | guard let cont = self.pingProbeContinuation else { return }
961 | self.pingProbeContinuation = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1033:9: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1013 | /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 | /// This ensures messages are available even if no ChatRoomViewModel is active
1015 | private func processIncomingMessage(_ message: Message) {
| `- note: add '@available' attribute to enclosing instance method
1016 | let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 | let selfLocal = self.username.components(separatedBy: "@").first ?? ""
:
1031 |
1032 | // MessageCache is @MainActor, so we need to call it from main actor context
1033 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1034 | // Load existing messages from cache
1035 | var cachedMessages = MessageCache.shared.loadMessages(forRoomJID: roomJID) ?? []
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1033:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1013 | /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 | /// This ensures messages are available even if no ChatRoomViewModel is active
1015 | private func processIncomingMessage(_ message: Message) {
| `- note: add '@available' attribute to enclosing instance method
1016 | let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 | let selfLocal = self.username.components(separatedBy: "@").first ?? ""
:
1031 |
1032 | // MessageCache is @MainActor, so we need to call it from main actor context
1033 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1034 | // Load existing messages from cache
1035 | var cachedMessages = MessageCache.shared.loadMessages(forRoomJID: roomJID) ?? []
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1059:21: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1013 | /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 | /// This ensures messages are available even if no ChatRoomViewModel is active
1015 | private func processIncomingMessage(_ message: Message) {
| `- note: add '@available' attribute to enclosing instance method
1016 | let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 | let selfLocal = self.username.components(separatedBy: "@").first ?? ""
:
1057 | if var storeRoom = RoomStore.shared.rooms[roomJID] {
1058 | storeRoom.messages = messagesToSave
1059 | RoomStore.shared.rooms[roomJID] = storeRoom
| |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1060 | }
1061 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1179:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1177 |
1178 | // Update RoomStore (must be on MainActor)
1179 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1180 | RoomStore.shared.setReactions(
1181 | roomJID: roomJID,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1179:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1177 |
1178 | // Update RoomStore (must be on MainActor)
1179 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1180 | RoomStore.shared.setReactions(
1181 | roomJID: roomJID,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1231:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1229 | print("📨 XMPPClient: Chat invite received for room \(roomJID)")
1230 |
1231 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1232 | // If the user previously left this room, our client
1233 | // still has a hidden flag set (see `RoomStore.hideRoom`).
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1231:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1229 | print("📨 XMPPClient: Chat invite received for room \(roomJID)")
1230 |
1231 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1232 | // If the user previously left this room, our client
1233 | // still has a hidden flag set (see `RoomStore.hideRoom`).
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1292:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1290 | guard let self = self, !roomJID.isEmpty else { return }
1291 | print("🗑️ XMPPClient: Room destroyed/kicked — \(roomJID)")
1292 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1293 | RoomStore.shared.deleteRoom(jid: roomJID)
1294 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1292:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1290 | guard let self = self, !roomJID.isEmpty else { return }
1291 | print("🗑️ XMPPClient: Room destroyed/kicked — \(roomJID)")
1292 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1293 | RoomStore.shared.deleteRoom(jid: roomJID)
1294 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1325:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1323 | // Match TypeScript: deleteRoomMessage completely removes message from array
1324 | // Update RoomStore (must be on MainActor) - completely remove message
1325 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1326 | RoomStore.shared.deleteMessage(roomJID: roomJID, messageId: messageId)
1327 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1325:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1323 | // Match TypeScript: deleteRoomMessage completely removes message from array
1324 | // Update RoomStore (must be on MainActor) - completely remove message
1325 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1326 | RoomStore.shared.deleteMessage(roomJID: roomJID, messageId: messageId)
1327 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1346:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1344 |
1345 | // Update RoomStore (must be on MainActor)
1346 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1347 | var updates = PartialMessageUpdate()
1348 | updates.body = newText
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1346:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1344 |
1345 | // Update RoomStore (must be on MainActor)
1346 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1347 | var updates = PartialMessageUpdate()
1348 | updates.body = newText
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
[107/108] Compiling XMPPChatCore XMPPClient.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:16:5: error: 'Task' is only available in macOS 10.15 or newer
8 | import Foundation
9 |
10 | public func resendMessage(
| `- note: add '@available' attribute to enclosing global function
11 | message: Message,
12 | client: XMPPClient,
:
14 | completion: @escaping (Result<Message, Error>) -> Void
15 | ) {
16 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
17 | do {
18 | if let mimetype = message.mimetype, mimetype.hasPrefix("media/") {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:16:5: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
8 | import Foundation
9 |
10 | public func resendMessage(
| `- note: add '@available' attribute to enclosing global function
11 | message: Message,
12 | client: XMPPClient,
:
14 | completion: @escaping (Result<Message, Error>) -> Void
15 | ) {
16 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
17 | do {
18 | if let mimetype = message.mimetype, mimetype.hasPrefix("media/") {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:64:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
62 | completion(.success(message))
63 | }
64 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
65 | completion(.failure(error))
66 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient+Operations.swift:99:24: error: 'Task' is only available in macOS 10.15 or newer
9 | import Foundation
10 |
11 | extension XMPPClient {
| `- note: add '@available' attribute to enclosing extension
12 | /// Send global `<presence/>` stanza to XMPP server (announce online).
13 | public func sendGlobalPresence() {
:
87 | }
88 |
89 | internal func waitForRoomPresenceResponses(roomJIDs: [String], timeout: TimeInterval) async -> [String] {
| `- note: add '@available' attribute to enclosing instance method
90 | let normalized = roomJIDs.map { $0.components(separatedBy: "/").first ?? $0 }
91 | let start = Date()
:
97 | return []
98 | }
99 | try? await Task.sleep(nanoseconds: 100_000_000)
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
100 | }
101 | let unresolved = normalized.filter { !hasPresenceResponseForRoom($0) }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient+Operations.swift:99:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
9 | import Foundation
10 |
11 | extension XMPPClient {
| `- note: add '@available' attribute to enclosing extension
12 | /// Send global `<presence/>` stanza to XMPP server (announce online).
13 | public func sendGlobalPresence() {
:
87 | }
88 |
89 | internal func waitForRoomPresenceResponses(roomJIDs: [String], timeout: TimeInterval) async -> [String] {
| `- note: add '@available' attribute to enclosing instance method
90 | let normalized = roomJIDs.map { $0.components(separatedBy: "/").first ?? $0 }
91 | let start = Date()
:
97 | return []
98 | }
99 | try? await Task.sleep(nanoseconds: 100_000_000)
| |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
100 | }
101 | let unresolved = normalized.filter { !hasPresenceResponseForRoom($0) }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:64:40: error: 'CheckedContinuation' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
62 | // either by a matching `<iq type='result' id='probe-...'/>` (handlePong)
63 | // or by the probe timer firing.
64 | private var pingProbeContinuation: CheckedContinuation<Bool, Never>?
| `- error: 'CheckedContinuation' is only available in macOS 10.15 or newer
65 | private var pingProbeTimer: Timer?
66 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:232:13: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
161 | // MARK: - Connection Management
162 | // Match TypeScript: async initializeClient()
163 | private func initializeClient() {
| `- note: add '@available' attribute to enclosing instance method
164 | // Prevent multiple simultaneous connection attempts
165 | guard !isConnecting else {
:
230 |
231 | // Match TypeScript: this.client.start().catch((error) => { console.error('Error starting client:', error); });
232 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
233 | do {
234 | xmppStream?.connect(username: username, password: password, resource: resource)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:232:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
161 | // MARK: - Connection Management
162 | // Match TypeScript: async initializeClient()
163 | private func initializeClient() {
| `- note: add '@available' attribute to enclosing instance method
164 | // Prevent multiple simultaneous connection attempts
165 | guard !isConnecting else {
:
230 |
231 | // Match TypeScript: this.client.start().catch((error) => { console.error('Error starting client:', error); });
232 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
233 | do {
234 | xmppStream?.connect(username: username, password: password, resource: resource)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:235:19: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
233 | do {
234 | xmppStream?.connect(username: username, password: password, resource: resource)
235 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
236 | //NSlog("Error starting client: %@", error.localizedDescription)
237 | //print("Error starting client: \(error.localizedDescription)")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:246:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
244 |
245 | logStep("initializeClient:started")
246 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
247 | //NSlog("Error initializing client: %@", error.localizedDescription)
248 | //print("Error initializing client: \(error.localizedDescription)")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:293:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
291 | //NSlog("Client disconnected")
292 | //print("Client disconnected")
293 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
294 | // Match TypeScript: console.error('Error disconnecting client:', error);
295 | //NSlog("Error disconnecting client: %@", error.localizedDescription)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:355:13: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
307 |
308 | // MARK: - Reconnection
309 | private func scheduleReconnect(reason: String) {
| `- note: add '@available' attribute to enclosing instance method
310 | // Don't reconnect if connection was replaced
311 | if connectionReplaced {
:
353 | guard self.isBrowserOnline() && !self.pausedDueToOfflineCap else { return }
354 | self.offlineReconnectAttempts += 1
355 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
356 | await self.reconnect()
357 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:355:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
307 |
308 | // MARK: - Reconnection
309 | private func scheduleReconnect(reason: String) {
| `- note: add '@available' attribute to enclosing instance method
310 | // Don't reconnect if connection was replaced
311 | if connectionReplaced {
:
353 | guard self.isBrowserOnline() && !self.pausedDueToOfflineCap else { return }
354 | self.offlineReconnectAttempts += 1
355 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
356 | await self.reconnect()
357 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:400:27: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
382 |
383 | // MARK: - Connection Status
384 | public func ensureConnected(timeout: TimeInterval = 10.0) async throws {
| `- note: add '@available' attribute to enclosing instance method
385 | guard status != .online else { return }
386 |
:
398 | throw XMPPError.connectionTimeout
399 | }
400 | try await Task.sleep(nanoseconds: 500_000_000) // 0.5 seconds
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
401 | }
402 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:400:32: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
382 |
383 | // MARK: - Connection Status
384 | public func ensureConnected(timeout: TimeInterval = 10.0) async throws {
| `- note: add '@available' attribute to enclosing instance method
385 | guard status != .online else { return }
386 |
:
398 | throw XMPPError.connectionTimeout
399 | }
400 | try await Task.sleep(nanoseconds: 500_000_000) // 0.5 seconds
| |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
401 | }
402 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:22: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
408 |
409 | // MARK: - Message Queue
410 | private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
411 | return await withCheckedContinuation { continuation in
| |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
412 | messageQueue.append {
413 | let result = await task()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:417:13: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
408 |
409 | // MARK: - Message Queue
410 | private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
411 | return await withCheckedContinuation { continuation in
412 | messageQueue.append {
:
415 | return result
416 | }
417 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
418 | await processQueue()
419 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:417:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
408 |
409 | // MARK: - Message Queue
410 | private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
411 | return await withCheckedContinuation { continuation in
412 | messageQueue.append {
:
415 | return result
416 | }
417 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
418 | await processQueue()
419 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:47: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:46: note: expanded code originates here
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
408 |
409 | // MARK: - Message Queue
410 | private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
411 | return await withCheckedContinuation { continuation in
+--- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift
|409 |
|410 |
|411 | #isolation
| | `- error: 'isolation()' is only available in macOS 10.15 or newer
+------------------------------------------------------------------------------------------------
412 | messageQueue.append {
413 | let result = await task()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:446:24: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
421 | }
422 |
423 | private func processQueue() async {
| `- note: add '@available' attribute to enclosing instance method
424 | guard !processingQueue else { return }
425 | processingQueue = true
:
444 |
445 | if !messageQueue.isEmpty && status == .online {
446 | try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 second
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
447 | await processQueue()
448 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:446:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
421 | }
422 |
423 | private func processQueue() async {
| `- note: add '@available' attribute to enclosing instance method
424 | guard !processingQueue else { return }
425 | processingQueue = true
:
444 |
445 | if !messageQueue.isEmpty && status == .online {
446 | try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 second
| |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
447 | await processQueue()
448 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:481:13: warning: immutable value 'pongWait' was never used; consider replacing with '_' or removing it [#no-usage]
479 | let idleTime: TimeInterval = 2.0
480 | // Match TypeScript: const pongWait = 2000;
481 | let pongWait: TimeInterval = 2.0
| `- warning: immutable value 'pongWait' was never used; consider replacing with '_' or removing it [#no-usage]
482 |
483 | idlePingTimeout = Timer.scheduledTimer(withTimeInterval: idleTime, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:579:9: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
576 | // This should be called when XMPP stream becomes online
577 | // We need to add a method to XMPPStreamDelegate for this
578 | public func xmppStreamDidBecomeOnline(_ stream: XMPPStream, jid: String) {
| `- note: add '@available' attribute to enclosing instance method
579 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
580 | await handleOnlineEvent(jid: jid)
581 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:579:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
576 | // This should be called when XMPP stream becomes online
577 | // We need to add a method to XMPPStreamDelegate for this
578 | public func xmppStreamDidBecomeOnline(_ stream: XMPPStream, jid: String) {
| `- note: add '@available' attribute to enclosing instance method
579 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
580 | await handleOnlineEvent(jid: jid)
581 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:644:24: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
582 | }
583 |
584 | private func handleOnlineEvent(jid: String) async {
| `- note: add '@available' attribute to enclosing instance method
585 | // Match TypeScript: this.client.on('online', async (jid) => { ... })
586 | do {
:
642 |
643 | // Wait a bit for the server to process the initial presence
644 | try? await Task.sleep(nanoseconds: 100_000_000) // 0.1 seconds
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
645 |
646 | // Match TypeScript: await this.sendAllPresencesAndMarkReady();
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:644:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
582 | }
583 |
584 | private func handleOnlineEvent(jid: String) async {
| `- note: add '@available' attribute to enclosing instance method
585 | // Match TypeScript: this.client.on('online', async (jid) => { ... })
586 | do {
:
642 |
643 | // Wait a bit for the server to process the initial presence
644 | try? await Task.sleep(nanoseconds: 100_000_000) // 0.1 seconds
| |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
645 |
646 | // Match TypeScript: await this.sendAllPresencesAndMarkReady();
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:653:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
582 | }
583 |
584 | private func handleOnlineEvent(jid: String) async {
| `- note: add '@available' attribute to enclosing instance method
585 | // Match TypeScript: this.client.on('online', async (jid) => { ... })
586 | do {
:
651 |
652 | // Match TypeScript: this.processQueue().catch(() => {});
653 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
654 | await processQueue()
655 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:653:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
582 | }
583 |
584 | private func handleOnlineEvent(jid: String) async {
| `- note: add '@available' attribute to enclosing instance method
585 | // Match TypeScript: this.client.on('online', async (jid) => { ... })
586 | do {
:
651 |
652 | // Match TypeScript: this.processQueue().catch(() => {});
653 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
654 | await processQueue()
655 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:662:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
660 | // await drainHeap()
661 |
662 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
663 | // Match TypeScript: console.log('Error', error);
664 | //NSlog("Error %@", error.localizedDescription)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:681:24: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
679 | //NSlog(" Disconnect Error Code: %ld", nsError.code)
680 | //NSlog(" Disconnect Error Description: %@", nsError.localizedDescription)
681 | if let reason = nsError.userInfo["reason"] as? String {
| `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
682 | //NSlog(" Disconnect Reason: %@", reason)
683 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:684:24: warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
682 | //NSlog(" Disconnect Reason: %@", reason)
683 | }
684 | if let code = nsError.userInfo["disconnectCode"] as? UInt16 {
| `- warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
685 | //NSlog(" WebSocket Close Code: %u", code)
686 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:690:24: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
688 | //print(" Disconnect Error Code: \(nsError.code)")
689 | //print(" Disconnect Error Description: \(nsError.localizedDescription)")
690 | if let reason = nsError.userInfo["reason"] as? String {
| `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
691 | //print(" Disconnect Reason: \(reason)")
692 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:693:24: warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
691 | //print(" Disconnect Reason: \(reason)")
692 | }
693 | if let code = nsError.userInfo["disconnectCode"] as? UInt16 {
| `- warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
694 | //print(" WebSocket Close Code: \(code)")
695 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:852:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
850 | handlePong()
851 | }
852 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
853 | // Ignore errors - match TypeScript empty catch
854 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:22: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
931 | /// it. If the probe times out, the caller (`SessionRecoveryManager`)
932 | /// forces a hard reconnect rather than relying on `status == .online`.
933 | public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
934 | guard status == .online,
935 | let stream = xmppStream,
:
954 | lastPingId = pingId
955 |
956 | return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
| |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
957 | pingProbeContinuation = continuation
958 | pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:63: error: 'CheckedContinuation' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
931 | /// it. If the probe times out, the caller (`SessionRecoveryManager`)
932 | /// forces a hard reconnect rather than relying on `status == .online`.
933 | public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
934 | guard status == .online,
935 | let stream = xmppStream,
:
954 | lastPingId = pingId
955 |
956 | return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
| |- error: 'CheckedContinuation' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
957 | pingProbeContinuation = continuation
958 | pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:47: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:46: note: expanded code originates here
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
931 | /// it. If the probe times out, the caller (`SessionRecoveryManager`)
932 | /// forces a hard reconnect rather than relying on `status == .online`.
933 | public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
934 | guard status == .online,
935 | let stream = xmppStream,
:
954 | lastPingId = pingId
955 |
956 | return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
+--- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift
|954 |
|955 |
|956 | #isolation
| | `- error: 'isolation()' is only available in macOS 10.15 or newer
+------------------------------------------------------------------------------------------------
957 | pingProbeContinuation = continuation
958 | pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:959:34: warning: capture of 'self' with non-Sendable type 'XMPPClient?' in a '@Sendable' closure [#SendableClosureCaptures]
17 | }
18 |
19 | public class XMPPClient {
| `- note: class 'XMPPClient' does not conform to the 'Sendable' protocol
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
957 | pingProbeContinuation = continuation
958 | pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
959 | guard let self = self else { return }
| `- warning: capture of 'self' with non-Sendable type 'XMPPClient?' in a '@Sendable' closure [#SendableClosureCaptures]
960 | guard let cont = self.pingProbeContinuation else { return }
961 | self.pingProbeContinuation = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1033:9: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1013 | /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 | /// This ensures messages are available even if no ChatRoomViewModel is active
1015 | private func processIncomingMessage(_ message: Message) {
| `- note: add '@available' attribute to enclosing instance method
1016 | let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 | let selfLocal = self.username.components(separatedBy: "@").first ?? ""
:
1031 |
1032 | // MessageCache is @MainActor, so we need to call it from main actor context
1033 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1034 | // Load existing messages from cache
1035 | var cachedMessages = MessageCache.shared.loadMessages(forRoomJID: roomJID) ?? []
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1033:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1013 | /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 | /// This ensures messages are available even if no ChatRoomViewModel is active
1015 | private func processIncomingMessage(_ message: Message) {
| `- note: add '@available' attribute to enclosing instance method
1016 | let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 | let selfLocal = self.username.components(separatedBy: "@").first ?? ""
:
1031 |
1032 | // MessageCache is @MainActor, so we need to call it from main actor context
1033 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1034 | // Load existing messages from cache
1035 | var cachedMessages = MessageCache.shared.loadMessages(forRoomJID: roomJID) ?? []
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1059:21: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1013 | /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 | /// This ensures messages are available even if no ChatRoomViewModel is active
1015 | private func processIncomingMessage(_ message: Message) {
| `- note: add '@available' attribute to enclosing instance method
1016 | let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 | let selfLocal = self.username.components(separatedBy: "@").first ?? ""
:
1057 | if var storeRoom = RoomStore.shared.rooms[roomJID] {
1058 | storeRoom.messages = messagesToSave
1059 | RoomStore.shared.rooms[roomJID] = storeRoom
| |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1060 | }
1061 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1179:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1177 |
1178 | // Update RoomStore (must be on MainActor)
1179 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1180 | RoomStore.shared.setReactions(
1181 | roomJID: roomJID,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1179:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1177 |
1178 | // Update RoomStore (must be on MainActor)
1179 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1180 | RoomStore.shared.setReactions(
1181 | roomJID: roomJID,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1231:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1229 | print("📨 XMPPClient: Chat invite received for room \(roomJID)")
1230 |
1231 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1232 | // If the user previously left this room, our client
1233 | // still has a hidden flag set (see `RoomStore.hideRoom`).
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1231:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1229 | print("📨 XMPPClient: Chat invite received for room \(roomJID)")
1230 |
1231 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1232 | // If the user previously left this room, our client
1233 | // still has a hidden flag set (see `RoomStore.hideRoom`).
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1292:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1290 | guard let self = self, !roomJID.isEmpty else { return }
1291 | print("🗑️ XMPPClient: Room destroyed/kicked — \(roomJID)")
1292 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1293 | RoomStore.shared.deleteRoom(jid: roomJID)
1294 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1292:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1290 | guard let self = self, !roomJID.isEmpty else { return }
1291 | print("🗑️ XMPPClient: Room destroyed/kicked — \(roomJID)")
1292 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1293 | RoomStore.shared.deleteRoom(jid: roomJID)
1294 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1325:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1323 | // Match TypeScript: deleteRoomMessage completely removes message from array
1324 | // Update RoomStore (must be on MainActor) - completely remove message
1325 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1326 | RoomStore.shared.deleteMessage(roomJID: roomJID, messageId: messageId)
1327 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1325:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1323 | // Match TypeScript: deleteRoomMessage completely removes message from array
1324 | // Update RoomStore (must be on MainActor) - completely remove message
1325 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1326 | RoomStore.shared.deleteMessage(roomJID: roomJID, messageId: messageId)
1327 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1346:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1344 |
1345 | // Update RoomStore (must be on MainActor)
1346 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1347 | var updates = PartialMessageUpdate()
1348 | updates.body = newText
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1346:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1344 |
1345 | // Update RoomStore (must be on MainActor)
1346 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1347 | var updates = PartialMessageUpdate()
1348 | updates.body = newText
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
[108/108] Compiling XMPPChatCore XMPPStanza.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:16:5: error: 'Task' is only available in macOS 10.15 or newer
8 | import Foundation
9 |
10 | public func resendMessage(
| `- note: add '@available' attribute to enclosing global function
11 | message: Message,
12 | client: XMPPClient,
:
14 | completion: @escaping (Result<Message, Error>) -> Void
15 | ) {
16 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
17 | do {
18 | if let mimetype = message.mimetype, mimetype.hasPrefix("media/") {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:16:5: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
8 | import Foundation
9 |
10 | public func resendMessage(
| `- note: add '@available' attribute to enclosing global function
11 | message: Message,
12 | client: XMPPClient,
:
14 | completion: @escaping (Result<Message, Error>) -> Void
15 | ) {
16 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
17 | do {
18 | if let mimetype = message.mimetype, mimetype.hasPrefix("media/") {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:64:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
62 | completion(.success(message))
63 | }
64 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
65 | completion(.failure(error))
66 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient+Operations.swift:99:24: error: 'Task' is only available in macOS 10.15 or newer
9 | import Foundation
10 |
11 | extension XMPPClient {
| `- note: add '@available' attribute to enclosing extension
12 | /// Send global `<presence/>` stanza to XMPP server (announce online).
13 | public func sendGlobalPresence() {
:
87 | }
88 |
89 | internal func waitForRoomPresenceResponses(roomJIDs: [String], timeout: TimeInterval) async -> [String] {
| `- note: add '@available' attribute to enclosing instance method
90 | let normalized = roomJIDs.map { $0.components(separatedBy: "/").first ?? $0 }
91 | let start = Date()
:
97 | return []
98 | }
99 | try? await Task.sleep(nanoseconds: 100_000_000)
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
100 | }
101 | let unresolved = normalized.filter { !hasPresenceResponseForRoom($0) }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient+Operations.swift:99:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
9 | import Foundation
10 |
11 | extension XMPPClient {
| `- note: add '@available' attribute to enclosing extension
12 | /// Send global `<presence/>` stanza to XMPP server (announce online).
13 | public func sendGlobalPresence() {
:
87 | }
88 |
89 | internal func waitForRoomPresenceResponses(roomJIDs: [String], timeout: TimeInterval) async -> [String] {
| `- note: add '@available' attribute to enclosing instance method
90 | let normalized = roomJIDs.map { $0.components(separatedBy: "/").first ?? $0 }
91 | let start = Date()
:
97 | return []
98 | }
99 | try? await Task.sleep(nanoseconds: 100_000_000)
| |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
100 | }
101 | let unresolved = normalized.filter { !hasPresenceResponseForRoom($0) }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:64:40: error: 'CheckedContinuation' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
62 | // either by a matching `<iq type='result' id='probe-...'/>` (handlePong)
63 | // or by the probe timer firing.
64 | private var pingProbeContinuation: CheckedContinuation<Bool, Never>?
| `- error: 'CheckedContinuation' is only available in macOS 10.15 or newer
65 | private var pingProbeTimer: Timer?
66 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:232:13: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
161 | // MARK: - Connection Management
162 | // Match TypeScript: async initializeClient()
163 | private func initializeClient() {
| `- note: add '@available' attribute to enclosing instance method
164 | // Prevent multiple simultaneous connection attempts
165 | guard !isConnecting else {
:
230 |
231 | // Match TypeScript: this.client.start().catch((error) => { console.error('Error starting client:', error); });
232 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
233 | do {
234 | xmppStream?.connect(username: username, password: password, resource: resource)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:232:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
161 | // MARK: - Connection Management
162 | // Match TypeScript: async initializeClient()
163 | private func initializeClient() {
| `- note: add '@available' attribute to enclosing instance method
164 | // Prevent multiple simultaneous connection attempts
165 | guard !isConnecting else {
:
230 |
231 | // Match TypeScript: this.client.start().catch((error) => { console.error('Error starting client:', error); });
232 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
233 | do {
234 | xmppStream?.connect(username: username, password: password, resource: resource)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:235:19: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
233 | do {
234 | xmppStream?.connect(username: username, password: password, resource: resource)
235 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
236 | //NSlog("Error starting client: %@", error.localizedDescription)
237 | //print("Error starting client: \(error.localizedDescription)")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:246:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
244 |
245 | logStep("initializeClient:started")
246 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
247 | //NSlog("Error initializing client: %@", error.localizedDescription)
248 | //print("Error initializing client: \(error.localizedDescription)")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:293:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
291 | //NSlog("Client disconnected")
292 | //print("Client disconnected")
293 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
294 | // Match TypeScript: console.error('Error disconnecting client:', error);
295 | //NSlog("Error disconnecting client: %@", error.localizedDescription)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:355:13: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
307 |
308 | // MARK: - Reconnection
309 | private func scheduleReconnect(reason: String) {
| `- note: add '@available' attribute to enclosing instance method
310 | // Don't reconnect if connection was replaced
311 | if connectionReplaced {
:
353 | guard self.isBrowserOnline() && !self.pausedDueToOfflineCap else { return }
354 | self.offlineReconnectAttempts += 1
355 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
356 | await self.reconnect()
357 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:355:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
307 |
308 | // MARK: - Reconnection
309 | private func scheduleReconnect(reason: String) {
| `- note: add '@available' attribute to enclosing instance method
310 | // Don't reconnect if connection was replaced
311 | if connectionReplaced {
:
353 | guard self.isBrowserOnline() && !self.pausedDueToOfflineCap else { return }
354 | self.offlineReconnectAttempts += 1
355 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
356 | await self.reconnect()
357 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:400:27: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
382 |
383 | // MARK: - Connection Status
384 | public func ensureConnected(timeout: TimeInterval = 10.0) async throws {
| `- note: add '@available' attribute to enclosing instance method
385 | guard status != .online else { return }
386 |
:
398 | throw XMPPError.connectionTimeout
399 | }
400 | try await Task.sleep(nanoseconds: 500_000_000) // 0.5 seconds
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
401 | }
402 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:400:32: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
382 |
383 | // MARK: - Connection Status
384 | public func ensureConnected(timeout: TimeInterval = 10.0) async throws {
| `- note: add '@available' attribute to enclosing instance method
385 | guard status != .online else { return }
386 |
:
398 | throw XMPPError.connectionTimeout
399 | }
400 | try await Task.sleep(nanoseconds: 500_000_000) // 0.5 seconds
| |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
401 | }
402 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:22: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
408 |
409 | // MARK: - Message Queue
410 | private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
411 | return await withCheckedContinuation { continuation in
| |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
412 | messageQueue.append {
413 | let result = await task()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:417:13: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
408 |
409 | // MARK: - Message Queue
410 | private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
411 | return await withCheckedContinuation { continuation in
412 | messageQueue.append {
:
415 | return result
416 | }
417 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
418 | await processQueue()
419 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:417:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
408 |
409 | // MARK: - Message Queue
410 | private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
411 | return await withCheckedContinuation { continuation in
412 | messageQueue.append {
:
415 | return result
416 | }
417 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
418 | await processQueue()
419 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:47: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:46: note: expanded code originates here
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
408 |
409 | // MARK: - Message Queue
410 | private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
411 | return await withCheckedContinuation { continuation in
+--- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift
|409 |
|410 |
|411 | #isolation
| | `- error: 'isolation()' is only available in macOS 10.15 or newer
+------------------------------------------------------------------------------------------------
412 | messageQueue.append {
413 | let result = await task()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:446:24: error: 'Task' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
421 | }
422 |
423 | private func processQueue() async {
| `- note: add '@available' attribute to enclosing instance method
424 | guard !processingQueue else { return }
425 | processingQueue = true
:
444 |
445 | if !messageQueue.isEmpty && status == .online {
446 | try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 second
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
447 | await processQueue()
448 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:446:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
17 | }
18 |
19 | public class XMPPClient {
| `- note: add '@available' attribute to enclosing class
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
421 | }
422 |
423 | private func processQueue() async {
| `- note: add '@available' attribute to enclosing instance method
424 | guard !processingQueue else { return }
425 | processingQueue = true
:
444 |
445 | if !messageQueue.isEmpty && status == .online {
446 | try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 second
| |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
447 | await processQueue()
448 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:481:13: warning: immutable value 'pongWait' was never used; consider replacing with '_' or removing it [#no-usage]
479 | let idleTime: TimeInterval = 2.0
480 | // Match TypeScript: const pongWait = 2000;
481 | let pongWait: TimeInterval = 2.0
| `- warning: immutable value 'pongWait' was never used; consider replacing with '_' or removing it [#no-usage]
482 |
483 | idlePingTimeout = Timer.scheduledTimer(withTimeInterval: idleTime, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:579:9: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
576 | // This should be called when XMPP stream becomes online
577 | // We need to add a method to XMPPStreamDelegate for this
578 | public func xmppStreamDidBecomeOnline(_ stream: XMPPStream, jid: String) {
| `- note: add '@available' attribute to enclosing instance method
579 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
580 | await handleOnlineEvent(jid: jid)
581 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:579:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
576 | // This should be called when XMPP stream becomes online
577 | // We need to add a method to XMPPStreamDelegate for this
578 | public func xmppStreamDidBecomeOnline(_ stream: XMPPStream, jid: String) {
| `- note: add '@available' attribute to enclosing instance method
579 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
580 | await handleOnlineEvent(jid: jid)
581 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:644:24: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
582 | }
583 |
584 | private func handleOnlineEvent(jid: String) async {
| `- note: add '@available' attribute to enclosing instance method
585 | // Match TypeScript: this.client.on('online', async (jid) => { ... })
586 | do {
:
642 |
643 | // Wait a bit for the server to process the initial presence
644 | try? await Task.sleep(nanoseconds: 100_000_000) // 0.1 seconds
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
645 |
646 | // Match TypeScript: await this.sendAllPresencesAndMarkReady();
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:644:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
582 | }
583 |
584 | private func handleOnlineEvent(jid: String) async {
| `- note: add '@available' attribute to enclosing instance method
585 | // Match TypeScript: this.client.on('online', async (jid) => { ... })
586 | do {
:
642 |
643 | // Wait a bit for the server to process the initial presence
644 | try? await Task.sleep(nanoseconds: 100_000_000) // 0.1 seconds
| |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
645 |
646 | // Match TypeScript: await this.sendAllPresencesAndMarkReady();
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:653:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
582 | }
583 |
584 | private func handleOnlineEvent(jid: String) async {
| `- note: add '@available' attribute to enclosing instance method
585 | // Match TypeScript: this.client.on('online', async (jid) => { ... })
586 | do {
:
651 |
652 | // Match TypeScript: this.processQueue().catch(() => {});
653 | Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
654 | await processQueue()
655 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:653:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
582 | }
583 |
584 | private func handleOnlineEvent(jid: String) async {
| `- note: add '@available' attribute to enclosing instance method
585 | // Match TypeScript: this.client.on('online', async (jid) => { ... })
586 | do {
:
651 |
652 | // Match TypeScript: this.processQueue().catch(() => {});
653 | Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
654 | await processQueue()
655 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:662:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
660 | // await drainHeap()
661 |
662 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
663 | // Match TypeScript: console.log('Error', error);
664 | //NSlog("Error %@", error.localizedDescription)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:681:24: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
679 | //NSlog(" Disconnect Error Code: %ld", nsError.code)
680 | //NSlog(" Disconnect Error Description: %@", nsError.localizedDescription)
681 | if let reason = nsError.userInfo["reason"] as? String {
| `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
682 | //NSlog(" Disconnect Reason: %@", reason)
683 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:684:24: warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
682 | //NSlog(" Disconnect Reason: %@", reason)
683 | }
684 | if let code = nsError.userInfo["disconnectCode"] as? UInt16 {
| `- warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
685 | //NSlog(" WebSocket Close Code: %u", code)
686 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:690:24: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
688 | //print(" Disconnect Error Code: \(nsError.code)")
689 | //print(" Disconnect Error Description: \(nsError.localizedDescription)")
690 | if let reason = nsError.userInfo["reason"] as? String {
| `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
691 | //print(" Disconnect Reason: \(reason)")
692 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:693:24: warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
691 | //print(" Disconnect Reason: \(reason)")
692 | }
693 | if let code = nsError.userInfo["disconnectCode"] as? UInt16 {
| `- warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
694 | //print(" WebSocket Close Code: \(code)")
695 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:852:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
850 | handlePong()
851 | }
852 | } catch {
| `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
853 | // Ignore errors - match TypeScript empty catch
854 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:22: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
931 | /// it. If the probe times out, the caller (`SessionRecoveryManager`)
932 | /// forces a hard reconnect rather than relying on `status == .online`.
933 | public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
934 | guard status == .online,
935 | let stream = xmppStream,
:
954 | lastPingId = pingId
955 |
956 | return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
| |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
957 | pingProbeContinuation = continuation
958 | pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:63: error: 'CheckedContinuation' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
931 | /// it. If the probe times out, the caller (`SessionRecoveryManager`)
932 | /// forces a hard reconnect rather than relying on `status == .online`.
933 | public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
934 | guard status == .online,
935 | let stream = xmppStream,
:
954 | lastPingId = pingId
955 |
956 | return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
| |- error: 'CheckedContinuation' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
957 | pingProbeContinuation = continuation
958 | pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:47: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:46: note: expanded code originates here
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
931 | /// it. If the probe times out, the caller (`SessionRecoveryManager`)
932 | /// forces a hard reconnect rather than relying on `status == .online`.
933 | public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
| `- note: add '@available' attribute to enclosing instance method
934 | guard status == .online,
935 | let stream = xmppStream,
:
954 | lastPingId = pingId
955 |
956 | return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
+--- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift
|954 |
|955 |
|956 | #isolation
| | `- error: 'isolation()' is only available in macOS 10.15 or newer
+------------------------------------------------------------------------------------------------
957 | pingProbeContinuation = continuation
958 | pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:959:34: warning: capture of 'self' with non-Sendable type 'XMPPClient?' in a '@Sendable' closure [#SendableClosureCaptures]
17 | }
18 |
19 | public class XMPPClient {
| `- note: class 'XMPPClient' does not conform to the 'Sendable' protocol
20 | // MARK: - Properties
21 | public weak var delegate: XMPPClientDelegate?
:
957 | pingProbeContinuation = continuation
958 | pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
959 | guard let self = self else { return }
| `- warning: capture of 'self' with non-Sendable type 'XMPPClient?' in a '@Sendable' closure [#SendableClosureCaptures]
960 | guard let cont = self.pingProbeContinuation else { return }
961 | self.pingProbeContinuation = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1033:9: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1013 | /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 | /// This ensures messages are available even if no ChatRoomViewModel is active
1015 | private func processIncomingMessage(_ message: Message) {
| `- note: add '@available' attribute to enclosing instance method
1016 | let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 | let selfLocal = self.username.components(separatedBy: "@").first ?? ""
:
1031 |
1032 | // MessageCache is @MainActor, so we need to call it from main actor context
1033 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1034 | // Load existing messages from cache
1035 | var cachedMessages = MessageCache.shared.loadMessages(forRoomJID: roomJID) ?? []
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1033:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1013 | /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 | /// This ensures messages are available even if no ChatRoomViewModel is active
1015 | private func processIncomingMessage(_ message: Message) {
| `- note: add '@available' attribute to enclosing instance method
1016 | let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 | let selfLocal = self.username.components(separatedBy: "@").first ?? ""
:
1031 |
1032 | // MessageCache is @MainActor, so we need to call it from main actor context
1033 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1034 | // Load existing messages from cache
1035 | var cachedMessages = MessageCache.shared.loadMessages(forRoomJID: roomJID) ?? []
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1059:21: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1013 | /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 | /// This ensures messages are available even if no ChatRoomViewModel is active
1015 | private func processIncomingMessage(_ message: Message) {
| `- note: add '@available' attribute to enclosing instance method
1016 | let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 | let selfLocal = self.username.components(separatedBy: "@").first ?? ""
:
1057 | if var storeRoom = RoomStore.shared.rooms[roomJID] {
1058 | storeRoom.messages = messagesToSave
1059 | RoomStore.shared.rooms[roomJID] = storeRoom
| |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1060 | }
1061 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1179:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1177 |
1178 | // Update RoomStore (must be on MainActor)
1179 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1180 | RoomStore.shared.setReactions(
1181 | roomJID: roomJID,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1179:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1177 |
1178 | // Update RoomStore (must be on MainActor)
1179 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1180 | RoomStore.shared.setReactions(
1181 | roomJID: roomJID,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1231:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1229 | print("📨 XMPPClient: Chat invite received for room \(roomJID)")
1230 |
1231 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1232 | // If the user previously left this room, our client
1233 | // still has a hidden flag set (see `RoomStore.hideRoom`).
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1231:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1229 | print("📨 XMPPClient: Chat invite received for room \(roomJID)")
1230 |
1231 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1232 | // If the user previously left this room, our client
1233 | // still has a hidden flag set (see `RoomStore.hideRoom`).
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1292:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1290 | guard let self = self, !roomJID.isEmpty else { return }
1291 | print("🗑️ XMPPClient: Room destroyed/kicked — \(roomJID)")
1292 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1293 | RoomStore.shared.deleteRoom(jid: roomJID)
1294 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1292:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1290 | guard let self = self, !roomJID.isEmpty else { return }
1291 | print("🗑️ XMPPClient: Room destroyed/kicked — \(roomJID)")
1292 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1293 | RoomStore.shared.deleteRoom(jid: roomJID)
1294 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1325:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1323 | // Match TypeScript: deleteRoomMessage completely removes message from array
1324 | // Update RoomStore (must be on MainActor) - completely remove message
1325 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1326 | RoomStore.shared.deleteMessage(roomJID: roomJID, messageId: messageId)
1327 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1325:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1323 | // Match TypeScript: deleteRoomMessage completely removes message from array
1324 | // Update RoomStore (must be on MainActor) - completely remove message
1325 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1326 | RoomStore.shared.deleteMessage(roomJID: roomJID, messageId: messageId)
1327 | }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1346:13: error: 'Task' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1344 |
1345 | // Update RoomStore (must be on MainActor)
1346 | Task { @MainActor in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1347 | var updates = PartialMessageUpdate()
1348 | updates.body = newText
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1346:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
553 |
554 | // MARK: - XMPPStreamDelegate
555 | extension XMPPClient: XMPPStreamDelegate {
| `- note: add '@available' attribute to enclosing extension
556 | public func xmppStreamDidConnect(_ stream: XMPPStream) {
557 | // Match TypeScript: this.client.on('connecting', () => { ... })
:
1087 | }
1088 |
1089 | private func setupStanzaHandlers() {
| `- note: add '@available' attribute to enclosing instance method
1090 | guard let handlers = stanzaHandlers else { return }
1091 |
:
1344 |
1345 | // Update RoomStore (must be on MainActor)
1346 | Task { @MainActor in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
1347 | var updates = PartialMessageUpdate()
1348 | updates.body = newText
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
Fetching https://github.com/daltoniam/Starscream.git
[1/5112] Fetching starscream
Fetched https://github.com/daltoniam/Starscream.git from cache (1.58s)
Computing version for https://github.com/daltoniam/Starscream.git
Computed https://github.com/daltoniam/Starscream.git at 4.0.8 (4.46s)
Creating working copy for https://github.com/daltoniam/Starscream.git
Working copy of https://github.com/daltoniam/Starscream.git resolved at 4.0.8
warning: 'starscream': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
/Users/admin/builder/spi-builder-workspace/.build/checkouts/Starscream/Sources/Info.plist
BUILD FAILURE 6.2 macosSpm