From f101c60b3aa41de822e5c0b16ac04ab39c27035b Mon Sep 17 00:00:00 2001 From: Tobias Haeberle Date: Thu, 19 Dec 2024 17:31:08 +0100 Subject: [PATCH 1/3] use only `FoundationEssentials` --- Examples/BackgroundTasks/Sources/main.swift | 4 ++++ .../AWSLambdaRuntime/Vendored/ByteBuffer-foundation.swift | 4 ++++ Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift | 4 ++++ Sources/MockServer/main.swift | 5 +++++ Tests/AWSLambdaRuntimeCoreTests/InvocationTests.swift | 4 ++++ Tests/AWSLambdaRuntimeCoreTests/LambdaMockClient.swift | 4 ++++ Tests/AWSLambdaRuntimeCoreTests/LambdaRequestIDTests.swift | 6 ++++++ Tests/AWSLambdaRuntimeCoreTests/LambdaRunLoopTests.swift | 4 ++++ Tests/AWSLambdaRuntimeCoreTests/MockLambdaServer.swift | 6 +++++- Tests/AWSLambdaRuntimeCoreTests/Utils.swift | 4 ++++ readme.md | 4 ++++ 11 files changed, 48 insertions(+), 1 deletion(-) diff --git a/Examples/BackgroundTasks/Sources/main.swift b/Examples/BackgroundTasks/Sources/main.swift index 929e676a..db54304f 100644 --- a/Examples/BackgroundTasks/Sources/main.swift +++ b/Examples/BackgroundTasks/Sources/main.swift @@ -13,7 +13,11 @@ //===----------------------------------------------------------------------===// import AWSLambdaRuntime +#if canImport(FoundationEssentials) +import FoundationEssentials +#else import Foundation +#endif struct BackgroundProcessingHandler: LambdaWithBackgroundProcessingHandler { struct Input: Decodable { diff --git a/Sources/AWSLambdaRuntime/Vendored/ByteBuffer-foundation.swift b/Sources/AWSLambdaRuntime/Vendored/ByteBuffer-foundation.swift index e0b6cf5e..f249582b 100644 --- a/Sources/AWSLambdaRuntime/Vendored/ByteBuffer-foundation.swift +++ b/Sources/AWSLambdaRuntime/Vendored/ByteBuffer-foundation.swift @@ -26,7 +26,11 @@ // //===----------------------------------------------------------------------===// +#if canImport(FoundationEssentials) +import FoundationEssentials +#else import Foundation +#endif import NIOCore // This is NIO's `NIOFoundationCompat` module which at the moment only adds `ByteBuffer` utility methods diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift b/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift index f10f07b1..5c0cb524 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift @@ -12,7 +12,11 @@ // //===----------------------------------------------------------------------===// +#if canImport(FoundationEssentials) +import FoundationEssentials +#else import Foundation +#endif import Logging import NIOConcurrencyHelpers import NIOCore diff --git a/Sources/MockServer/main.swift b/Sources/MockServer/main.swift index 9bed33bd..d03907e4 100644 --- a/Sources/MockServer/main.swift +++ b/Sources/MockServer/main.swift @@ -12,10 +12,15 @@ // //===----------------------------------------------------------------------===// +#if canImport(FoundationEssentials) +import FoundationEssentials +#else import Foundation +#endif import NIOCore import NIOHTTP1 import NIOPosix +import Dispatch struct MockServer { private let group: EventLoopGroup diff --git a/Tests/AWSLambdaRuntimeCoreTests/InvocationTests.swift b/Tests/AWSLambdaRuntimeCoreTests/InvocationTests.swift index 86bfaae9..4242c466 100644 --- a/Tests/AWSLambdaRuntimeCoreTests/InvocationTests.swift +++ b/Tests/AWSLambdaRuntimeCoreTests/InvocationTests.swift @@ -12,7 +12,11 @@ // //===----------------------------------------------------------------------===// +#if canImport(FoundationEssentials) +import FoundationEssentials +#else import Foundation +#endif import NIOHTTP1 import Testing diff --git a/Tests/AWSLambdaRuntimeCoreTests/LambdaMockClient.swift b/Tests/AWSLambdaRuntimeCoreTests/LambdaMockClient.swift index 15a30223..46c844b3 100644 --- a/Tests/AWSLambdaRuntimeCoreTests/LambdaMockClient.swift +++ b/Tests/AWSLambdaRuntimeCoreTests/LambdaMockClient.swift @@ -13,7 +13,11 @@ //===----------------------------------------------------------------------===// import AWSLambdaRuntimeCore +#if canImport(FoundationEssentials) +import FoundationEssentials +#else import Foundation +#endif import Logging import NIOCore diff --git a/Tests/AWSLambdaRuntimeCoreTests/LambdaRequestIDTests.swift b/Tests/AWSLambdaRuntimeCoreTests/LambdaRequestIDTests.swift index 9e406fdf..91ed3163 100644 --- a/Tests/AWSLambdaRuntimeCoreTests/LambdaRequestIDTests.swift +++ b/Tests/AWSLambdaRuntimeCoreTests/LambdaRequestIDTests.swift @@ -12,7 +12,11 @@ // //===----------------------------------------------------------------------===// +#if canImport(FoundationEssentials) +import FoundationEssentials +#else import Foundation +#endif import NIOCore import Testing @@ -100,6 +104,7 @@ struct LambdaRequestIDTest { #expect(buffer.readableBytes == readableBeforeRead) } + #if os(macOS) @Test func testInitFromNSStringSuccess() { let nsString = NSMutableString(capacity: 16) @@ -121,6 +126,7 @@ struct LambdaRequestIDTest { #expect(requestID?.uuidString == LambdaRequestID(uuidString: nsString as String)?.uuidString) #expect(requestID?.uppercased == nsString as String) } + #endif @Test func testUnparse() { diff --git a/Tests/AWSLambdaRuntimeCoreTests/LambdaRunLoopTests.swift b/Tests/AWSLambdaRuntimeCoreTests/LambdaRunLoopTests.swift index 741bbf50..6023e13e 100644 --- a/Tests/AWSLambdaRuntimeCoreTests/LambdaRunLoopTests.swift +++ b/Tests/AWSLambdaRuntimeCoreTests/LambdaRunLoopTests.swift @@ -12,7 +12,11 @@ // //===----------------------------------------------------------------------===// +#if canImport(FoundationEssentials) +import FoundationEssentials +#else import Foundation +#endif import Logging import NIOCore import Testing diff --git a/Tests/AWSLambdaRuntimeCoreTests/MockLambdaServer.swift b/Tests/AWSLambdaRuntimeCoreTests/MockLambdaServer.swift index cc3c4ac2..e4032f71 100644 --- a/Tests/AWSLambdaRuntimeCoreTests/MockLambdaServer.swift +++ b/Tests/AWSLambdaRuntimeCoreTests/MockLambdaServer.swift @@ -12,7 +12,11 @@ // //===----------------------------------------------------------------------===// -import Foundation // for JSON +#if canImport(FoundationEssentials) +import FoundationEssentials +#else +import Foundation +#endif import Logging import NIOCore import NIOHTTP1 diff --git a/Tests/AWSLambdaRuntimeCoreTests/Utils.swift b/Tests/AWSLambdaRuntimeCoreTests/Utils.swift index cd7730b7..49a3cfbb 100644 --- a/Tests/AWSLambdaRuntimeCoreTests/Utils.swift +++ b/Tests/AWSLambdaRuntimeCoreTests/Utils.swift @@ -12,7 +12,11 @@ // //===----------------------------------------------------------------------===// +#if canImport(FoundationEssentials) +import FoundationEssentials +#else import Foundation +#endif extension Date { var millisSinceEpoch: Int64 { diff --git a/readme.md b/readme.md index 7c42587e..0717c3e3 100644 --- a/readme.md +++ b/readme.md @@ -253,7 +253,11 @@ Background tasks allow code to execute asynchronously after the main response ha Here is an example of a minimal function that waits 10 seconds after it returned a response but before the handler returns. ```swift import AWSLambdaRuntime +#if canImport(FoundationEssentials) +import FoundationEssentials +#else import Foundation +#endif struct BackgroundProcessingHandler: LambdaWithBackgroundProcessingHandler { struct Input: Decodable { From fc4889085048da4b8dbf299af6fb57cab355a6a4 Mon Sep 17 00:00:00 2001 From: Tobias Haeberle Date: Thu, 19 Dec 2024 17:56:57 +0100 Subject: [PATCH 2/3] fix one more import --- Sources/AWSLambdaRuntime/Context+Foundation.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Sources/AWSLambdaRuntime/Context+Foundation.swift b/Sources/AWSLambdaRuntime/Context+Foundation.swift index a83237a7..105b7765 100644 --- a/Sources/AWSLambdaRuntime/Context+Foundation.swift +++ b/Sources/AWSLambdaRuntime/Context+Foundation.swift @@ -14,7 +14,11 @@ import AWSLambdaRuntimeCore +#if canImport(FoundationEssentials) +import FoundationEssentials +#else import struct Foundation.Date +#endif extension LambdaContext { var deadlineDate: Date { From c6256b1fc10946193526111c67d262a22de7c69b Mon Sep 17 00:00:00 2001 From: Tobias Haeberle Date: Fri, 20 Dec 2024 14:18:52 +0100 Subject: [PATCH 3/3] formatting fix --- Examples/BackgroundTasks/Sources/main.swift | 1 + .../Vendored/ByteBuffer-foundation.swift | 3 ++- Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift | 7 ++++--- Sources/MockServer/main.swift | 9 +++++---- Tests/AWSLambdaRuntimeCoreTests/InvocationTests.swift | 9 +++++---- .../AWSLambdaRuntimeCoreTests/LambdaMockClient.swift | 5 +++-- .../LambdaRequestIDTests.swift | 9 +++++---- .../LambdaRunLoopTests.swift | 11 ++++++----- .../AWSLambdaRuntimeCoreTests/MockLambdaServer.swift | 11 ++++++----- 9 files changed, 37 insertions(+), 28 deletions(-) diff --git a/Examples/BackgroundTasks/Sources/main.swift b/Examples/BackgroundTasks/Sources/main.swift index db54304f..1985fc34 100644 --- a/Examples/BackgroundTasks/Sources/main.swift +++ b/Examples/BackgroundTasks/Sources/main.swift @@ -13,6 +13,7 @@ //===----------------------------------------------------------------------===// import AWSLambdaRuntime + #if canImport(FoundationEssentials) import FoundationEssentials #else diff --git a/Sources/AWSLambdaRuntime/Vendored/ByteBuffer-foundation.swift b/Sources/AWSLambdaRuntime/Vendored/ByteBuffer-foundation.swift index f249582b..8dbd7326 100644 --- a/Sources/AWSLambdaRuntime/Vendored/ByteBuffer-foundation.swift +++ b/Sources/AWSLambdaRuntime/Vendored/ByteBuffer-foundation.swift @@ -26,12 +26,13 @@ // //===----------------------------------------------------------------------===// +import NIOCore + #if canImport(FoundationEssentials) import FoundationEssentials #else import Foundation #endif -import NIOCore // This is NIO's `NIOFoundationCompat` module which at the moment only adds `ByteBuffer` utility methods // for Foundation's `Data` type. diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift b/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift index 5c0cb524..317ee7ea 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift @@ -12,14 +12,15 @@ // //===----------------------------------------------------------------------===// +import Logging +import NIOConcurrencyHelpers +import NIOCore + #if canImport(FoundationEssentials) import FoundationEssentials #else import Foundation #endif -import Logging -import NIOConcurrencyHelpers -import NIOCore // We need `@unchecked` Sendable here, as `NIOLockedValueBox` does not understand `sending` today. // We don't want to use `NIOLockedValueBox` here anyway. We would love to use Mutex here, but this diff --git a/Sources/MockServer/main.swift b/Sources/MockServer/main.swift index d03907e4..1b8466f9 100644 --- a/Sources/MockServer/main.swift +++ b/Sources/MockServer/main.swift @@ -12,15 +12,16 @@ // //===----------------------------------------------------------------------===// +import Dispatch +import NIOCore +import NIOHTTP1 +import NIOPosix + #if canImport(FoundationEssentials) import FoundationEssentials #else import Foundation #endif -import NIOCore -import NIOHTTP1 -import NIOPosix -import Dispatch struct MockServer { private let group: EventLoopGroup diff --git a/Tests/AWSLambdaRuntimeCoreTests/InvocationTests.swift b/Tests/AWSLambdaRuntimeCoreTests/InvocationTests.swift index 4242c466..fca58391 100644 --- a/Tests/AWSLambdaRuntimeCoreTests/InvocationTests.swift +++ b/Tests/AWSLambdaRuntimeCoreTests/InvocationTests.swift @@ -12,15 +12,16 @@ // //===----------------------------------------------------------------------===// +import NIOHTTP1 +import Testing + +@testable import AWSLambdaRuntimeCore + #if canImport(FoundationEssentials) import FoundationEssentials #else import Foundation #endif -import NIOHTTP1 -import Testing - -@testable import AWSLambdaRuntimeCore @Suite struct InvocationTest { diff --git a/Tests/AWSLambdaRuntimeCoreTests/LambdaMockClient.swift b/Tests/AWSLambdaRuntimeCoreTests/LambdaMockClient.swift index 46c844b3..613276ed 100644 --- a/Tests/AWSLambdaRuntimeCoreTests/LambdaMockClient.swift +++ b/Tests/AWSLambdaRuntimeCoreTests/LambdaMockClient.swift @@ -13,13 +13,14 @@ //===----------------------------------------------------------------------===// import AWSLambdaRuntimeCore +import Logging +import NIOCore + #if canImport(FoundationEssentials) import FoundationEssentials #else import Foundation #endif -import Logging -import NIOCore struct LambdaMockWriter: LambdaRuntimeClientResponseStreamWriter { var underlying: LambdaMockClient diff --git a/Tests/AWSLambdaRuntimeCoreTests/LambdaRequestIDTests.swift b/Tests/AWSLambdaRuntimeCoreTests/LambdaRequestIDTests.swift index 91ed3163..45886c64 100644 --- a/Tests/AWSLambdaRuntimeCoreTests/LambdaRequestIDTests.swift +++ b/Tests/AWSLambdaRuntimeCoreTests/LambdaRequestIDTests.swift @@ -12,15 +12,16 @@ // //===----------------------------------------------------------------------===// +import NIOCore +import Testing + +@testable import AWSLambdaRuntimeCore + #if canImport(FoundationEssentials) import FoundationEssentials #else import Foundation #endif -import NIOCore -import Testing - -@testable import AWSLambdaRuntimeCore @Suite("LambdaRequestID tests") struct LambdaRequestIDTest { diff --git a/Tests/AWSLambdaRuntimeCoreTests/LambdaRunLoopTests.swift b/Tests/AWSLambdaRuntimeCoreTests/LambdaRunLoopTests.swift index 6023e13e..f57f051b 100644 --- a/Tests/AWSLambdaRuntimeCoreTests/LambdaRunLoopTests.swift +++ b/Tests/AWSLambdaRuntimeCoreTests/LambdaRunLoopTests.swift @@ -12,17 +12,18 @@ // //===----------------------------------------------------------------------===// -#if canImport(FoundationEssentials) -import FoundationEssentials -#else -import Foundation -#endif import Logging import NIOCore import Testing @testable import AWSLambdaRuntimeCore +#if canImport(FoundationEssentials) +import FoundationEssentials +#else +import Foundation +#endif + @Suite struct LambdaRunLoopTests { struct MockEchoHandler: StreamingLambdaHandler { diff --git a/Tests/AWSLambdaRuntimeCoreTests/MockLambdaServer.swift b/Tests/AWSLambdaRuntimeCoreTests/MockLambdaServer.swift index e4032f71..dc325742 100644 --- a/Tests/AWSLambdaRuntimeCoreTests/MockLambdaServer.swift +++ b/Tests/AWSLambdaRuntimeCoreTests/MockLambdaServer.swift @@ -12,11 +12,6 @@ // //===----------------------------------------------------------------------===// -#if canImport(FoundationEssentials) -import FoundationEssentials -#else -import Foundation -#endif import Logging import NIOCore import NIOHTTP1 @@ -24,6 +19,12 @@ import NIOPosix @testable import AWSLambdaRuntimeCore +#if canImport(FoundationEssentials) +import FoundationEssentials +#else +import Foundation +#endif + func withMockServer( behaviour: some LambdaServerBehavior, port: Int = 0,