diff --git a/.github/workflows/deploy-all-lambdas.yml b/.github/workflows/deploy-all-lambdas.yml
index 4b556175..46dbad05 100644
--- a/.github/workflows/deploy-all-lambdas.yml
+++ b/.github/workflows/deploy-all-lambdas.yml
@@ -8,7 +8,7 @@ on:
jobs:
deploy-lambdas:
runs-on: ubuntu-latest
- container: swift:5.8-amazonlinux2
+ container: swift:5.9-amazonlinux2
env:
AWS_DEFAULT_REGION: eu-west-1
AWS_ACCESS_KEY_ID: ${{ secrets.DEPLOYER_ACCESS_KEY_ID }}
diff --git a/Dockerfile b/Dockerfile
index f0bf1c85..954715a2 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,7 +1,7 @@
# ================================
# Build image
# ================================
-FROM swift:5.8-jammy as build
+FROM swift:5.9-jammy as build
# Install updates
RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \
diff --git a/Lambdas/GHOAuth/Models/GHOAuthPayload.swift b/Lambdas/GHOAuth/Models/GHOAuthPayload.swift
index 2cb70828..de08f637 100644
--- a/Lambdas/GHOAuth/Models/GHOAuthPayload.swift
+++ b/Lambdas/GHOAuth/Models/GHOAuthPayload.swift
@@ -3,11 +3,12 @@ import JWTKit
/// This Payload will get sent along with the OAuth redirect to the GitHub OAuth page,
/// specifically inside the `state` query parameter.
-/// This is used to verify the user's identity when they come back from GitHub
-/// and that the request is not forged.
public struct GHOAuthPayload: JWTPayload {
+ /// Used to verify the user's identity when they come back from GitHub.
public let discordID: UserSnowflake
+ /// The interaction token to respond back to user on Discord with and notify of the result.
public let interactionToken: String
+ /// Expiration time of the token.
public let expiration: ExpirationClaim
public init(discordID: UserSnowflake, interactionToken: String) {
@@ -19,4 +20,4 @@ public struct GHOAuthPayload: JWTPayload {
public func verify(using signer: JWTSigner) throws {
try self.expiration.verifyNotExpired()
}
-}
\ No newline at end of file
+}
diff --git a/Package.swift b/Package.swift
index 027e612b..632b5611 100644
--- a/Package.swift
+++ b/Package.swift
@@ -1,4 +1,4 @@
-// swift-tools-version:5.8
+// swift-tools-version:5.9
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
@@ -29,16 +29,22 @@ let upcomingFeaturesSwiftSettings: [SwiftSetting] = [
]
let targetsSwiftSettings: [SwiftSetting] = upcomingFeaturesSwiftSettings + [
- /// https://github.com/apple/swift/issues/67214
- .unsafeFlags(["-Xllvm", "-vectorize-slp=false"], .when(platforms: [.linux], configuration: .release)),
+ /// https://github.com/apple/swift/issues/67214
+ .unsafeFlags(["-Xllvm", "-vectorize-slp=false"], .when(platforms: [.linux], configuration: .release)),
- /// `minimal` / `targeted` / `complete`
- .unsafeFlags(["-strict-concurrency=complete"]),
- ]
+ /// https://github.com/apple/swift/pull/68671
+ .unsafeFlags(
+ ["-Xlinker", "-u", "-Xlinker", "_swift_backtrace_isThunkFunction"],
+ .when(platforms: [.linux], configuration: .release)
+ ),
+
+ /// `minimal` / `targeted` / `complete`
+ .enableExperimentalFeature("StrictConcurrency=complete"),
+]
let testsSwiftSettings: [SwiftSetting] = upcomingFeaturesSwiftSettings + [
/// `minimal` / `targeted` / `complete`
- .unsafeFlags(["-strict-concurrency=targeted"])
+ .enableExperimentalFeature("StrictConcurrency=targeted"),
]
extension PackageDescription.Target {
@@ -74,7 +80,6 @@ let package = Package(
.package(url: "https://github.com/apple/swift-nio.git", from: "2.57.0"),
.package(url: "https://github.com/swift-server/async-http-client.git", from: "1.9.0"),
.package(url: "https://github.com/apple/swift-crypto.git", from: "2.0.0"),
- .package(url: "https://github.com/swift-server/swift-backtrace.git", from: "1.3.1"),
.package(url: "https://github.com/apple/swift-collections.git", from: "1.0.0"),
.package(url: "https://github.com/vapor/jwt-kit.git", from: "4.13.0"),
.package(url: "https://github.com/apple/swift-atomics.git", from: "1.1.0"),
@@ -116,7 +121,6 @@ let package = Package(
.executableTarget(
name: "Penny",
dependencies: [
- .product(name: "Backtrace", package: "swift-backtrace"),
.product(name: "DiscordBM", package: "DiscordBM"),
.product(name: "DiscordLogger", package: "DiscordLogger"),
.product(name: "AsyncHTTPClient", package: "async-http-client"),
@@ -254,11 +258,24 @@ let package = Package(
name: "Fake",
dependencies: [
.product(name: "SotoDynamoDB", package: "soto"),
+ .product(name: "SotoS3", package: "soto"),
.product(name: "SotoCore", package: "soto-core"),
.product(name: "DiscordBM", package: "DiscordBM"),
+ .product(name: "LeafKit", package: "leaf-kit"),
+ .product(name: "Markdown", package: "swift-markdown"),
+ .product(name: "SwiftSemver", package: "swift-semver"),
+ .product(name: "DiscordLogger", package: "DiscordLogger"),
+ .product(name: "JWTKit", package: "jwt-kit"),
+ .product(name: "AWSLambdaRuntime", package: "swift-aws-lambda-runtime"),
+ .product(name: "AWSLambdaEvents", package: "swift-aws-lambda-events"),
.product(name: "OpenAPIRuntime", package: "swift-openapi-runtime"),
- .target(name: "GHHooksLambda"),
+ .target(name: "GitHubAPI"),
+ .target(name: "LambdasShared"),
+ .target(name: "Shared"),
+ .target(name: "Rendering"),
+ .target(name: "Models"),
.target(name: "Penny"),
+ .target(name: "GHHooksLambda"),
],
path: "./Tests/Fake",
swiftSettings: testsSwiftSettings
@@ -267,7 +284,20 @@ let package = Package(
name: "PennyTests",
dependencies: [
.product(name: "SotoDynamoDB", package: "soto"),
+ .product(name: "SotoS3", package: "soto"),
.product(name: "SotoCore", package: "soto-core"),
+ .product(name: "LeafKit", package: "leaf-kit"),
+ .product(name: "Markdown", package: "swift-markdown"),
+ .product(name: "SwiftSemver", package: "swift-semver"),
+ .product(name: "DiscordLogger", package: "DiscordLogger"),
+ .product(name: "JWTKit", package: "jwt-kit"),
+ .product(name: "AWSLambdaRuntime", package: "swift-aws-lambda-runtime"),
+ .product(name: "AWSLambdaEvents", package: "swift-aws-lambda-events"),
+ .target(name: "GitHubAPI"),
+ .target(name: "LambdasShared"),
+ .target(name: "Shared"),
+ .target(name: "Rendering"),
+ .target(name: "Models"),
.target(name: "Penny"),
.target(name: "GHHooksLambda"),
.target(name: "Fake"),
diff --git a/README.md b/README.md
index e0b06bb9..9281c73e 100644
--- a/README.md
+++ b/README.md
@@ -16,14 +16,14 @@ Penny is a Swift bot that works for the [Vapor](https://vapor.codes) community.
-
+