From d803861e1597fae2b5d4857a5ee0aadef1265caa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Stormacq?= Date: Mon, 30 Sep 2024 14:38:44 +0200 Subject: [PATCH 1/7] apply swift-format --- Plugins/AWSLambdaPackager/PluginUtils.swift | 4 +- .../ControlPlaneRequest.swift | 56 ++++++++++--------- Sources/AWSLambdaRuntimeCore/Lambda.swift | 51 ++++++++--------- .../AWSLambdaRuntimeCore/LambdaContext.swift | 34 +++++------ .../AWSLambdaRuntimeCore/LambdaRuntime.swift | 8 ++- .../LambdaRuntimeClient.swift | 5 +- .../LambdaRuntimeClientProtocol.swift | 15 +++-- .../LambdaRuntimeError.swift | 11 ++-- 8 files changed, 97 insertions(+), 87 deletions(-) diff --git a/Plugins/AWSLambdaPackager/PluginUtils.swift b/Plugins/AWSLambdaPackager/PluginUtils.swift index 6f60f7c4..5fdfc2e8 100644 --- a/Plugins/AWSLambdaPackager/PluginUtils.swift +++ b/Plugins/AWSLambdaPackager/PluginUtils.swift @@ -13,9 +13,9 @@ //===----------------------------------------------------------------------===// import Dispatch +import Foundation import PackagePlugin import Synchronization -import Foundation @available(macOS 15.0, *) struct Utils { @@ -47,7 +47,7 @@ struct Utils { let outputSync = DispatchGroup() let outputQueue = DispatchQueue(label: "AWSLambdaPackager.output") let unsafeTransfer = UnsafeTransfer(value: stdout) - let outputHandler = { @Sendable (data: Data?) in + let outputHandler = { @Sendable(data:Data?) in dispatchPrecondition(condition: .onQueue(outputQueue)) outputSync.enter() diff --git a/Sources/AWSLambdaRuntimeCore/ControlPlaneRequest.swift b/Sources/AWSLambdaRuntimeCore/ControlPlaneRequest.swift index 29016b0e..562f9560 100644 --- a/Sources/AWSLambdaRuntimeCore/ControlPlaneRequest.swift +++ b/Sources/AWSLambdaRuntimeCore/ControlPlaneRequest.swift @@ -28,37 +28,39 @@ enum ControlPlaneResponse: Hashable { case error(ErrorResponse) } -package struct InvocationMetadata: Hashable { - package let requestID: String - package let deadlineInMillisSinceEpoch: Int64 - package let invokedFunctionARN: String - package let traceID: String - package let clientContext: String? - package let cognitoIdentity: String? +package +struct InvocationMetadata: Hashable { + package let requestID: String + package let deadlineInMillisSinceEpoch: Int64 + package let invokedFunctionARN: String + package let traceID: String + package let clientContext: String? + package let cognitoIdentity: String? - package init(headers: HTTPHeaders) throws(LambdaRuntimeError) { - guard let requestID = headers.first(name: AmazonHeaders.requestID), !requestID.isEmpty else { - throw LambdaRuntimeError(code: .nextInvocationMissingHeaderRequestID) - } - - guard let deadline = headers.first(name: AmazonHeaders.deadline), - let unixTimeInMilliseconds = Int64(deadline) - else { - throw LambdaRuntimeError(code: .nextInvocationMissingHeaderDeadline) - } + package init(headers: HTTPHeaders) throws +(LambdaRuntimeError) { + guard let requestID = headers.first(name: AmazonHeaders.requestID), !requestID.isEmpty else { + throw LambdaRuntimeError(code: .nextInvocationMissingHeaderRequestID) + } - guard let invokedFunctionARN = headers.first(name: AmazonHeaders.invokedFunctionARN) else { - throw LambdaRuntimeError(code: .nextInvocationMissingHeaderInvokeFuctionARN) - } + guard let deadline = headers.first(name: AmazonHeaders.deadline), + let unixTimeInMilliseconds = Int64(deadline) + else { + throw LambdaRuntimeError(code: .nextInvocationMissingHeaderDeadline) + } - self.requestID = requestID - self.deadlineInMillisSinceEpoch = unixTimeInMilliseconds - self.invokedFunctionARN = invokedFunctionARN - self.traceID = - headers.first(name: AmazonHeaders.traceID) ?? "Root=\(AmazonHeaders.generateXRayTraceID());Sampled=0" - self.clientContext = headers["Lambda-Runtime-Client-Context"].first - self.cognitoIdentity = headers["Lambda-Runtime-Cognito-Identity"].first + guard let invokedFunctionARN = headers.first(name: AmazonHeaders.invokedFunctionARN) else { + throw LambdaRuntimeError(code: .nextInvocationMissingHeaderInvokeFuctionARN) } + + self.requestID = requestID + self.deadlineInMillisSinceEpoch = unixTimeInMilliseconds + self.invokedFunctionARN = invokedFunctionARN + self.traceID = + headers.first(name: AmazonHeaders.traceID) ?? "Root=\(AmazonHeaders.generateXRayTraceID());Sampled=0" + self.clientContext = headers["Lambda-Runtime-Client-Context"].first + self.cognitoIdentity = headers["Lambda-Runtime-Cognito-Identity"].first +} } struct ErrorResponse: Hashable, Codable { diff --git a/Sources/AWSLambdaRuntimeCore/Lambda.swift b/Sources/AWSLambdaRuntimeCore/Lambda.swift index 87026693..51230c88 100644 --- a/Sources/AWSLambdaRuntimeCore/Lambda.swift +++ b/Sources/AWSLambdaRuntimeCore/Lambda.swift @@ -30,37 +30,38 @@ import ucrt #endif public enum Lambda { - package static func runLoop( - runtimeClient: RuntimeClient, - handler: Handler, - logger: Logger - ) async throws where Handler: StreamingLambdaHandler { - var handler = handler +package +static func runLoop( + runtimeClient: RuntimeClient, + handler: Handler, + logger: Logger +) async throws where Handler: StreamingLambdaHandler { + var handler = handler - while !Task.isCancelled { - let (invocation, writer) = try await runtimeClient.nextInvocation() + while !Task.isCancelled { + let (invocation, writer) = try await runtimeClient.nextInvocation() - do { - try await handler.handle( - invocation.event, - responseWriter: writer, - context: LambdaContext( - requestID: invocation.metadata.requestID, - traceID: invocation.metadata.traceID, - invokedFunctionARN: invocation.metadata.invokedFunctionARN, - deadline: DispatchWallTime(millisSinceEpoch: invocation.metadata.deadlineInMillisSinceEpoch), - logger: logger - ) + do { + try await handler.handle( + invocation.event, + responseWriter: writer, + context: LambdaContext( + requestID: invocation.metadata.requestID, + traceID: invocation.metadata.traceID, + invokedFunctionARN: invocation.metadata.invokedFunctionARN, + deadline: DispatchWallTime(millisSinceEpoch: invocation.metadata.deadlineInMillisSinceEpoch), + logger: logger ) - } catch { - try await writer.reportError(error) - continue - } + ) + } catch { + try await writer.reportError(error) + continue } } +} - /// The default EventLoop the Lambda is scheduled on. - public static var defaultEventLoop: any EventLoop = NIOSingletons.posixEventLoopGroup.next() +/// The default EventLoop the Lambda is scheduled on. +public static var defaultEventLoop: any EventLoop = NIOSingletons.posixEventLoopGroup.next() } // MARK: - Public API diff --git a/Sources/AWSLambdaRuntimeCore/LambdaContext.swift b/Sources/AWSLambdaRuntimeCore/LambdaContext.swift index 291a732d..424eb37a 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaContext.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaContext.swift @@ -120,20 +120,20 @@ public struct LambdaContext: CustomDebugStringConvertible, Sendable { "\(Self.self)(requestID: \(self.requestID), traceID: \(self.traceID), invokedFunctionARN: \(self.invokedFunctionARN), cognitoIdentity: \(self.cognitoIdentity ?? "nil"), clientContext: \(self.clientContext ?? "nil"), deadline: \(self.deadline))" } - /// This interface is not part of the public API and must not be used by adopters. This API is not part of semver versioning. - package static func __forTestsOnly( - requestID: String, - traceID: String, - invokedFunctionARN: String, - timeout: DispatchTimeInterval, - logger: Logger - ) -> LambdaContext { - LambdaContext( - requestID: requestID, - traceID: traceID, - invokedFunctionARN: invokedFunctionARN, - deadline: .now() + timeout, - logger: logger - ) - } -} +/// This interface is not part of the public API and must not be used by adopters. This API is not part of semver versioning. +package +static func __forTestsOnly( + requestID: String, + traceID: String, + invokedFunctionARN: String, + timeout: DispatchTimeInterval, + logger: Logger +) -> LambdaContext { + LambdaContext( + requestID: requestID, + traceID: traceID, + invokedFunctionARN: invokedFunctionARN, + deadline: .now() + timeout, + logger: logger + ) +}} diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift b/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift index f36c7ee3..fb17a35c 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift @@ -14,20 +14,22 @@ import Foundation import Logging -import NIOCore 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 // sadly crashes the compiler today. public final class LambdaRuntime: @unchecked Sendable where Handler: StreamingLambdaHandler { // TODO: We want to change this to Mutex as soon as this doesn't crash the Swift compiler on Linux anymore - let handlerMutex: NIOLockedValueBox> + let handlerMutex: NIOLockedValueBox let logger: Logger let eventLoop: EventLoop public init( - handler: sending Handler, + handler: sending +Handler +, eventLoop: EventLoop = Lambda.defaultEventLoop, logger: Logger = Logger(label: "LambdaRuntime") ) { diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClient.swift b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClient.swift index bbd16efa..45c997d1 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClient.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClient.swift @@ -462,7 +462,7 @@ private final class LambdaChannelHandler ] } - func nextInvocation(isolation: isolated (any Actor)? = #isolation) async throws -> Invocation { + func nextInvocation(isolation: isolated (any Actor)? = #isolation) async throws -> Invocation { switch self.state { case .connected(let context, .idle): return try await withCheckedThrowingContinuation { @@ -484,7 +484,8 @@ private final class LambdaChannelHandler } func reportError( - isolation: isolated (any Actor)? = #isolation, + isolation: isolated (any Actor)? = +#isolation, _ error: any Error, requestID: String ) async throws { diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClientProtocol.swift b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClientProtocol.swift index 801bdf82..069c5a24 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClientProtocol.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClientProtocol.swift @@ -14,24 +14,27 @@ import NIOCore -package protocol LambdaRuntimeClientResponseStreamWriter: LambdaResponseStreamWriter { +package +protocol LambdaRuntimeClientResponseStreamWriter: LambdaResponseStreamWriter { func write(_ buffer: ByteBuffer) async throws func finish() async throws func writeAndFinish(_ buffer: ByteBuffer) async throws func reportError(_ error: any Error) async throws } -package protocol LambdaRuntimeClientProtocol { +package +protocol LambdaRuntimeClientProtocol { associatedtype Writer: LambdaRuntimeClientResponseStreamWriter func nextInvocation() async throws -> (Invocation, Writer) } -package struct Invocation { - package var metadata: InvocationMetadata - package var event: ByteBuffer +package +struct Invocation { + package var metadata: InvocationMetadata + package var event: ByteBuffer - package init(metadata: InvocationMetadata, event: ByteBuffer) { + package init(metadata: InvocationMetadata, event: ByteBuffer) { self.metadata = metadata self.event = event } diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeError.swift b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeError.swift index a6b4ac66..a8a5b108 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeError.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeError.swift @@ -12,8 +12,9 @@ // //===----------------------------------------------------------------------===// -package struct LambdaRuntimeError: Error { - package enum Code { +package +struct LambdaRuntimeError: Error { + package enum Code { case closingRuntimeClient case connectionToControlPlaneLost @@ -34,12 +35,12 @@ package struct LambdaRuntimeError: Error { case invalidPort } - package init(code: Code, underlying: (any Error)? = nil) { + package init(code: Code, underlying: (any Error)? = nil) { self.code = code self.underlying = underlying } - package var code: Code - package var underlying: (any Error)? + package var code: Code + package var underlying: (any Error)? } From ba5531262b14b026bf2fe296a8c9046b791ae904 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Stormacq?= Date: Mon, 30 Sep 2024 16:31:35 +0200 Subject: [PATCH 2/7] use swift-format script from swift-nio project --- Plugins/AWSLambdaPackager/PluginUtils.swift | 2 +- .../ControlPlaneRequest.swift | 56 +++++++++--------- Sources/AWSLambdaRuntimeCore/Lambda.swift | 53 +++++++++-------- .../AWSLambdaRuntimeCore/LambdaContext.swift | 36 +++++------ .../LambdaRuntimeClient.swift | 4 +- .../LambdaRuntimeClientProtocol.swift | 15 +++-- .../LambdaRuntimeError.swift | 11 ++-- scripts/check-swift-format.sh | 59 +++++++++++++++++++ 8 files changed, 151 insertions(+), 85 deletions(-) create mode 100755 scripts/check-swift-format.sh diff --git a/Plugins/AWSLambdaPackager/PluginUtils.swift b/Plugins/AWSLambdaPackager/PluginUtils.swift index 5fdfc2e8..0cc3b5fe 100644 --- a/Plugins/AWSLambdaPackager/PluginUtils.swift +++ b/Plugins/AWSLambdaPackager/PluginUtils.swift @@ -47,7 +47,7 @@ struct Utils { let outputSync = DispatchGroup() let outputQueue = DispatchQueue(label: "AWSLambdaPackager.output") let unsafeTransfer = UnsafeTransfer(value: stdout) - let outputHandler = { @Sendable(data:Data?) in + let outputHandler = { @Sendable (data: Data?) in dispatchPrecondition(condition: .onQueue(outputQueue)) outputSync.enter() diff --git a/Sources/AWSLambdaRuntimeCore/ControlPlaneRequest.swift b/Sources/AWSLambdaRuntimeCore/ControlPlaneRequest.swift index 562f9560..da4937a9 100644 --- a/Sources/AWSLambdaRuntimeCore/ControlPlaneRequest.swift +++ b/Sources/AWSLambdaRuntimeCore/ControlPlaneRequest.swift @@ -29,38 +29,38 @@ enum ControlPlaneResponse: Hashable { } package -struct InvocationMetadata: Hashable { - package let requestID: String - package let deadlineInMillisSinceEpoch: Int64 - package let invokedFunctionARN: String - package let traceID: String - package let clientContext: String? - package let cognitoIdentity: String? + struct InvocationMetadata: Hashable +{ + package let requestID: String + package let deadlineInMillisSinceEpoch: Int64 + package let invokedFunctionARN: String + package let traceID: String + package let clientContext: String? + package let cognitoIdentity: String? - package init(headers: HTTPHeaders) throws -(LambdaRuntimeError) { - guard let requestID = headers.first(name: AmazonHeaders.requestID), !requestID.isEmpty else { - throw LambdaRuntimeError(code: .nextInvocationMissingHeaderRequestID) - } + package init(headers: HTTPHeaders) throws(LambdaRuntimeError) { + guard let requestID = headers.first(name: AmazonHeaders.requestID), !requestID.isEmpty else { + throw LambdaRuntimeError(code: .nextInvocationMissingHeaderRequestID) + } - guard let deadline = headers.first(name: AmazonHeaders.deadline), - let unixTimeInMilliseconds = Int64(deadline) - else { - throw LambdaRuntimeError(code: .nextInvocationMissingHeaderDeadline) - } + guard let deadline = headers.first(name: AmazonHeaders.deadline), + let unixTimeInMilliseconds = Int64(deadline) + else { + throw LambdaRuntimeError(code: .nextInvocationMissingHeaderDeadline) + } - guard let invokedFunctionARN = headers.first(name: AmazonHeaders.invokedFunctionARN) else { - throw LambdaRuntimeError(code: .nextInvocationMissingHeaderInvokeFuctionARN) - } + guard let invokedFunctionARN = headers.first(name: AmazonHeaders.invokedFunctionARN) else { + throw LambdaRuntimeError(code: .nextInvocationMissingHeaderInvokeFuctionARN) + } - self.requestID = requestID - self.deadlineInMillisSinceEpoch = unixTimeInMilliseconds - self.invokedFunctionARN = invokedFunctionARN - self.traceID = - headers.first(name: AmazonHeaders.traceID) ?? "Root=\(AmazonHeaders.generateXRayTraceID());Sampled=0" - self.clientContext = headers["Lambda-Runtime-Client-Context"].first - self.cognitoIdentity = headers["Lambda-Runtime-Cognito-Identity"].first -} + self.requestID = requestID + self.deadlineInMillisSinceEpoch = unixTimeInMilliseconds + self.invokedFunctionARN = invokedFunctionARN + self.traceID = + headers.first(name: AmazonHeaders.traceID) ?? "Root=\(AmazonHeaders.generateXRayTraceID());Sampled=0" + self.clientContext = headers["Lambda-Runtime-Client-Context"].first + self.cognitoIdentity = headers["Lambda-Runtime-Cognito-Identity"].first + } } struct ErrorResponse: Hashable, Codable { diff --git a/Sources/AWSLambdaRuntimeCore/Lambda.swift b/Sources/AWSLambdaRuntimeCore/Lambda.swift index 51230c88..b299c9ae 100644 --- a/Sources/AWSLambdaRuntimeCore/Lambda.swift +++ b/Sources/AWSLambdaRuntimeCore/Lambda.swift @@ -30,38 +30,39 @@ import ucrt #endif public enum Lambda { -package -static func runLoop( - runtimeClient: RuntimeClient, - handler: Handler, - logger: Logger -) async throws where Handler: StreamingLambdaHandler { - var handler = handler + package + static func runLoop( + runtimeClient: RuntimeClient, + handler: Handler, + logger: Logger + ) async throws where Handler: StreamingLambdaHandler + { + var handler = handler - while !Task.isCancelled { - let (invocation, writer) = try await runtimeClient.nextInvocation() + while !Task.isCancelled { + let (invocation, writer) = try await runtimeClient.nextInvocation() - do { - try await handler.handle( - invocation.event, - responseWriter: writer, - context: LambdaContext( - requestID: invocation.metadata.requestID, - traceID: invocation.metadata.traceID, - invokedFunctionARN: invocation.metadata.invokedFunctionARN, - deadline: DispatchWallTime(millisSinceEpoch: invocation.metadata.deadlineInMillisSinceEpoch), - logger: logger + do { + try await handler.handle( + invocation.event, + responseWriter: writer, + context: LambdaContext( + requestID: invocation.metadata.requestID, + traceID: invocation.metadata.traceID, + invokedFunctionARN: invocation.metadata.invokedFunctionARN, + deadline: DispatchWallTime(millisSinceEpoch: invocation.metadata.deadlineInMillisSinceEpoch), + logger: logger + ) ) - ) - } catch { - try await writer.reportError(error) - continue + } catch { + try await writer.reportError(error) + continue + } } } -} -/// The default EventLoop the Lambda is scheduled on. -public static var defaultEventLoop: any EventLoop = NIOSingletons.posixEventLoopGroup.next() + /// The default EventLoop the Lambda is scheduled on. + public static var defaultEventLoop: any EventLoop = NIOSingletons.posixEventLoopGroup.next() } // MARK: - Public API diff --git a/Sources/AWSLambdaRuntimeCore/LambdaContext.swift b/Sources/AWSLambdaRuntimeCore/LambdaContext.swift index 424eb37a..f632d49b 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaContext.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaContext.swift @@ -120,20 +120,22 @@ public struct LambdaContext: CustomDebugStringConvertible, Sendable { "\(Self.self)(requestID: \(self.requestID), traceID: \(self.traceID), invokedFunctionARN: \(self.invokedFunctionARN), cognitoIdentity: \(self.cognitoIdentity ?? "nil"), clientContext: \(self.clientContext ?? "nil"), deadline: \(self.deadline))" } -/// This interface is not part of the public API and must not be used by adopters. This API is not part of semver versioning. -package -static func __forTestsOnly( - requestID: String, - traceID: String, - invokedFunctionARN: String, - timeout: DispatchTimeInterval, - logger: Logger -) -> LambdaContext { - LambdaContext( - requestID: requestID, - traceID: traceID, - invokedFunctionARN: invokedFunctionARN, - deadline: .now() + timeout, - logger: logger - ) -}} + /// This interface is not part of the public API and must not be used by adopters. This API is not part of semver versioning. + package + static func __forTestsOnly( + requestID: String, + traceID: String, + invokedFunctionARN: String, + timeout: DispatchTimeInterval, + logger: Logger + ) -> LambdaContext + { + LambdaContext( + requestID: requestID, + traceID: traceID, + invokedFunctionARN: invokedFunctionARN, + deadline: .now() + timeout, + logger: logger + ) + } +} diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClient.swift b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClient.swift index 45c997d1..4bfd6d7d 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClient.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClient.swift @@ -462,7 +462,7 @@ private final class LambdaChannelHandler ] } - func nextInvocation(isolation: isolated (any Actor)? = #isolation) async throws -> Invocation { + func nextInvocation(isolation: isolated (any Actor)? = #isolation) async throws -> Invocation { switch self.state { case .connected(let context, .idle): return try await withCheckedThrowingContinuation { @@ -485,7 +485,7 @@ private final class LambdaChannelHandler func reportError( isolation: isolated (any Actor)? = -#isolation, + #isolation, _ error: any Error, requestID: String ) async throws { diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClientProtocol.swift b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClientProtocol.swift index 069c5a24..61c94d48 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClientProtocol.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClientProtocol.swift @@ -15,7 +15,8 @@ import NIOCore package -protocol LambdaRuntimeClientResponseStreamWriter: LambdaResponseStreamWriter { + protocol LambdaRuntimeClientResponseStreamWriter: LambdaResponseStreamWriter +{ func write(_ buffer: ByteBuffer) async throws func finish() async throws func writeAndFinish(_ buffer: ByteBuffer) async throws @@ -23,18 +24,20 @@ protocol LambdaRuntimeClientResponseStreamWriter: LambdaResponseStreamWriter { } package -protocol LambdaRuntimeClientProtocol { + protocol LambdaRuntimeClientProtocol +{ associatedtype Writer: LambdaRuntimeClientResponseStreamWriter func nextInvocation() async throws -> (Invocation, Writer) } package -struct Invocation { - package var metadata: InvocationMetadata - package var event: ByteBuffer + struct Invocation +{ + package var metadata: InvocationMetadata + package var event: ByteBuffer - package init(metadata: InvocationMetadata, event: ByteBuffer) { + package init(metadata: InvocationMetadata, event: ByteBuffer) { self.metadata = metadata self.event = event } diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeError.swift b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeError.swift index a8a5b108..1c619df6 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeError.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeError.swift @@ -13,8 +13,9 @@ //===----------------------------------------------------------------------===// package -struct LambdaRuntimeError: Error { - package enum Code { + struct LambdaRuntimeError: Error +{ + package enum Code { case closingRuntimeClient case connectionToControlPlaneLost @@ -35,12 +36,12 @@ struct LambdaRuntimeError: Error { case invalidPort } - package init(code: Code, underlying: (any Error)? = nil) { + package init(code: Code, underlying: (any Error)? = nil) { self.code = code self.underlying = underlying } - package var code: Code - package var underlying: (any Error)? + package var code: Code + package var underlying: (any Error)? } diff --git a/scripts/check-swift-format.sh b/scripts/check-swift-format.sh new file mode 100755 index 00000000..d9862ea3 --- /dev/null +++ b/scripts/check-swift-format.sh @@ -0,0 +1,59 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +## +## This source file is part of the SwiftAWSLambdaRuntime open source project +## +## Copyright (c) 2020 Apple Inc. and the SwiftAWSLambdaRuntime project authors +## Licensed under Apache License v2.0 +## +## See LICENSE.txt for license information +## See CONTRIBUTORS.txt for the list of SwiftAWSLambdaRuntime project authors +## +## SPDX-License-Identifier: Apache-2.0 +## +##===----------------------------------------------------------------------===## +##===----------------------------------------------------------------------===## +## +## This source file is part of the SwiftNIO open source project +## +## Copyright (c) 2024 Apple Inc. and the SwiftNIO project authors +## Licensed under Apache License v2.0 +## +## See LICENSE.txt for license information +## See CONTRIBUTORS.txt for the list of SwiftNIO project authors +## +## SPDX-License-Identifier: Apache-2.0 +## +##===----------------------------------------------------------------------===## +set -euo pipefail + +log() { printf -- "** %s\n" "$*" >&2; } +error() { printf -- "** ERROR: %s\n" "$*" >&2; } +fatal() { error "$@"; exit 1; } + + +if [[ -f .swiftformatignore ]]; then + log "Found swiftformatignore file..." + + log "Running swift format format..." + tr '\n' '\0' < .swiftformatignore| xargs -0 -I% printf '":(exclude)%" '| xargs git ls-files -z '*.swift' | xargs -0 swift format format --parallel --in-place + + log "Running swift format lint..." + + tr '\n' '\0' < .swiftformatignore | xargs -0 -I% printf '":(exclude)%" '| xargs git ls-files -z '*.swift' | xargs -0 swift format lint --strict --parallel +else + log "Running swift format format..." + git ls-files -z '*.swift' | xargs -0 swift format format --parallel --in-place + + log "Running swift format lint..." + + git ls-files -z '*.swift' | xargs -0 swift format lint --strict --parallel +fi + + + +log "Checking for modified files..." + +GIT_PAGER='' git diff --exit-code '*.swift' + +log "✅ Found no formatting issues." From 93d81fdc4c1b5f3dae038ebdffff4b640850b36d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Stormacq?= Date: Mon, 30 Sep 2024 16:43:31 +0200 Subject: [PATCH 3/7] set sending on one line --- Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift b/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift index fb17a35c..908e2ab2 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift @@ -27,9 +27,7 @@ public final class LambdaRuntime: @unchecked Sendable where Handler: St let eventLoop: EventLoop public init( - handler: sending -Handler -, + handler: sending Handler, eventLoop: EventLoop = Lambda.defaultEventLoop, logger: Logger = Logger(label: "LambdaRuntime") ) { From b07503f7a77a712126d99751956bc8e80d0d1436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Stormacq?= Date: Mon, 30 Sep 2024 16:55:18 +0200 Subject: [PATCH 4/7] try to fix the CI swift formatting --- Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift b/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift index 908e2ab2..fb17a35c 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift @@ -27,7 +27,9 @@ public final class LambdaRuntime: @unchecked Sendable where Handler: St let eventLoop: EventLoop public init( - handler: sending Handler, + handler: sending +Handler +, eventLoop: EventLoop = Lambda.defaultEventLoop, logger: Logger = Logger(label: "LambdaRuntime") ) { From f6fe283d82863a346d73efc4f59043c9ecdf0e63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Stormacq?= Date: Mon, 30 Sep 2024 17:55:13 +0200 Subject: [PATCH 5/7] keep only one script --- scripts/check-swift-format.sh | 59 ----------------------------------- 1 file changed, 59 deletions(-) delete mode 100755 scripts/check-swift-format.sh diff --git a/scripts/check-swift-format.sh b/scripts/check-swift-format.sh deleted file mode 100755 index d9862ea3..00000000 --- a/scripts/check-swift-format.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash -##===----------------------------------------------------------------------===## -## -## This source file is part of the SwiftAWSLambdaRuntime open source project -## -## Copyright (c) 2020 Apple Inc. and the SwiftAWSLambdaRuntime project authors -## Licensed under Apache License v2.0 -## -## See LICENSE.txt for license information -## See CONTRIBUTORS.txt for the list of SwiftAWSLambdaRuntime project authors -## -## SPDX-License-Identifier: Apache-2.0 -## -##===----------------------------------------------------------------------===## -##===----------------------------------------------------------------------===## -## -## This source file is part of the SwiftNIO open source project -## -## Copyright (c) 2024 Apple Inc. and the SwiftNIO project authors -## Licensed under Apache License v2.0 -## -## See LICENSE.txt for license information -## See CONTRIBUTORS.txt for the list of SwiftNIO project authors -## -## SPDX-License-Identifier: Apache-2.0 -## -##===----------------------------------------------------------------------===## -set -euo pipefail - -log() { printf -- "** %s\n" "$*" >&2; } -error() { printf -- "** ERROR: %s\n" "$*" >&2; } -fatal() { error "$@"; exit 1; } - - -if [[ -f .swiftformatignore ]]; then - log "Found swiftformatignore file..." - - log "Running swift format format..." - tr '\n' '\0' < .swiftformatignore| xargs -0 -I% printf '":(exclude)%" '| xargs git ls-files -z '*.swift' | xargs -0 swift format format --parallel --in-place - - log "Running swift format lint..." - - tr '\n' '\0' < .swiftformatignore | xargs -0 -I% printf '":(exclude)%" '| xargs git ls-files -z '*.swift' | xargs -0 swift format lint --strict --parallel -else - log "Running swift format format..." - git ls-files -z '*.swift' | xargs -0 swift format format --parallel --in-place - - log "Running swift format lint..." - - git ls-files -z '*.swift' | xargs -0 swift format lint --strict --parallel -fi - - - -log "Checking for modified files..." - -GIT_PAGER='' git diff --exit-code '*.swift' - -log "✅ Found no formatting issues." From 0ecad75289c2cbdf126e0e47f3f38a8ff27035aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Stormacq?= Date: Mon, 30 Sep 2024 18:43:45 +0200 Subject: [PATCH 6/7] swift-format --- Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift b/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift index fb17a35c..908e2ab2 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift @@ -27,9 +27,7 @@ public final class LambdaRuntime: @unchecked Sendable where Handler: St let eventLoop: EventLoop public init( - handler: sending -Handler -, + handler: sending Handler, eventLoop: EventLoop = Lambda.defaultEventLoop, logger: Logger = Logger(label: "LambdaRuntime") ) { From 7e00b7d10d9bffa1f79f2e964e2c2619f01be26b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Stormacq?= Date: Mon, 30 Sep 2024 21:20:44 +0200 Subject: [PATCH 7/7] fix package formatting --- .../ControlPlaneRequest.swift | 4 +--- Sources/AWSLambdaRuntimeCore/Lambda.swift | 12 +++++------- Sources/AWSLambdaRuntimeCore/LambdaContext.swift | 16 +++++++--------- .../LambdaRuntimeClient.swift | 3 +-- .../LambdaRuntimeClientProtocol.swift | 12 +++--------- .../LambdaRuntimeError.swift | 4 +--- 6 files changed, 18 insertions(+), 33 deletions(-) diff --git a/Sources/AWSLambdaRuntimeCore/ControlPlaneRequest.swift b/Sources/AWSLambdaRuntimeCore/ControlPlaneRequest.swift index da4937a9..29016b0e 100644 --- a/Sources/AWSLambdaRuntimeCore/ControlPlaneRequest.swift +++ b/Sources/AWSLambdaRuntimeCore/ControlPlaneRequest.swift @@ -28,9 +28,7 @@ enum ControlPlaneResponse: Hashable { case error(ErrorResponse) } -package - struct InvocationMetadata: Hashable -{ +package struct InvocationMetadata: Hashable { package let requestID: String package let deadlineInMillisSinceEpoch: Int64 package let invokedFunctionARN: String diff --git a/Sources/AWSLambdaRuntimeCore/Lambda.swift b/Sources/AWSLambdaRuntimeCore/Lambda.swift index b299c9ae..87026693 100644 --- a/Sources/AWSLambdaRuntimeCore/Lambda.swift +++ b/Sources/AWSLambdaRuntimeCore/Lambda.swift @@ -30,13 +30,11 @@ import ucrt #endif public enum Lambda { - package - static func runLoop( - runtimeClient: RuntimeClient, - handler: Handler, - logger: Logger - ) async throws where Handler: StreamingLambdaHandler - { + package static func runLoop( + runtimeClient: RuntimeClient, + handler: Handler, + logger: Logger + ) async throws where Handler: StreamingLambdaHandler { var handler = handler while !Task.isCancelled { diff --git a/Sources/AWSLambdaRuntimeCore/LambdaContext.swift b/Sources/AWSLambdaRuntimeCore/LambdaContext.swift index f632d49b..291a732d 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaContext.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaContext.swift @@ -121,15 +121,13 @@ public struct LambdaContext: CustomDebugStringConvertible, Sendable { } /// This interface is not part of the public API and must not be used by adopters. This API is not part of semver versioning. - package - static func __forTestsOnly( - requestID: String, - traceID: String, - invokedFunctionARN: String, - timeout: DispatchTimeInterval, - logger: Logger - ) -> LambdaContext - { + package static func __forTestsOnly( + requestID: String, + traceID: String, + invokedFunctionARN: String, + timeout: DispatchTimeInterval, + logger: Logger + ) -> LambdaContext { LambdaContext( requestID: requestID, traceID: traceID, diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClient.swift b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClient.swift index 4bfd6d7d..bbd16efa 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClient.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClient.swift @@ -484,8 +484,7 @@ private final class LambdaChannelHandler } func reportError( - isolation: isolated (any Actor)? = - #isolation, + isolation: isolated (any Actor)? = #isolation, _ error: any Error, requestID: String ) async throws { diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClientProtocol.swift b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClientProtocol.swift index 61c94d48..801bdf82 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClientProtocol.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeClientProtocol.swift @@ -14,26 +14,20 @@ import NIOCore -package - protocol LambdaRuntimeClientResponseStreamWriter: LambdaResponseStreamWriter -{ +package protocol LambdaRuntimeClientResponseStreamWriter: LambdaResponseStreamWriter { func write(_ buffer: ByteBuffer) async throws func finish() async throws func writeAndFinish(_ buffer: ByteBuffer) async throws func reportError(_ error: any Error) async throws } -package - protocol LambdaRuntimeClientProtocol -{ +package protocol LambdaRuntimeClientProtocol { associatedtype Writer: LambdaRuntimeClientResponseStreamWriter func nextInvocation() async throws -> (Invocation, Writer) } -package - struct Invocation -{ +package struct Invocation { package var metadata: InvocationMetadata package var event: ByteBuffer diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeError.swift b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeError.swift index 1c619df6..a6b4ac66 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRuntimeError.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRuntimeError.swift @@ -12,9 +12,7 @@ // //===----------------------------------------------------------------------===// -package - struct LambdaRuntimeError: Error -{ +package struct LambdaRuntimeError: Error { package enum Code { case closingRuntimeClient