Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .devcontainer/aarch64/devcontainer-lock.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"features": {
"ghcr.io/devcontainers/features/common-utils:2": {
"version": "2.5.9",
"resolved": "ghcr.io/devcontainers/features/common-utils@sha256:cb0c4d3c276f157eed17935747e364178d75fee17f55c4e129966f64633deb3a",
"integrity": "sha256:cb0c4d3c276f157eed17935747e364178d75fee17f55c4e129966f64633deb3a"
},
"ghcr.io/devcontainers/features/git:1": {
"version": "1.3.8",
"resolved": "ghcr.io/devcontainers/features/git@sha256:fd75977de13a9979000e0e78baf949adb0ca71d2398995fa22e0a36d7e7e7fe2",
"integrity": "sha256:fd75977de13a9979000e0e78baf949adb0ca71d2398995fa22e0a36d7e7e7fe2"
}
}
}
2 changes: 1 addition & 1 deletion .devcontainer/aarch64/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "Swift",
"image": "swift:6.0",
"image": "swift:6.1",
"features": {
"ghcr.io/devcontainers/features/common-utils:2": {
"installZsh": "false",
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
test-linux:
name: "Test Linux"
runs-on: ubuntu-latest
container: swift:6.0-jammy
container: swift:6.1-noble
steps:
- name: Checkout
uses: actions/checkout@v4
Expand Down
22 changes: 11 additions & 11 deletions Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

29 changes: 22 additions & 7 deletions Package.swift
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
// swift-tools-version: 6.0
// swift-tools-version: 6.1
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let swiftSettings: [SwiftSetting] = [
// https://github.com/swiftlang/swift-evolution/blob/main/proposals/0335-existential-any.md
.enableUpcomingFeature("ExistentialAny"),

// https://github.com/swiftlang/swift-evolution/blob/main/proposals/0409-access-level-on-imports.md
.enableUpcomingFeature("InternalImportsByDefault"),

// https://github.com/swiftlang/swift-evolution/blob/main/proposals/0444-member-import-visibility.md
.enableUpcomingFeature("MemberImportVisibility"),
]

let package = Package(
name: "PassKit",
platforms: [
Expand All @@ -15,12 +26,13 @@ let package = Package(
.library(name: "PassHelpers", targets: ["PassHelpers"]),
],
dependencies: [
.package(url: "https://github.com/adam-fowler/swift-zip-archive.git", .upToNextMajor(from: "0.6.3")),
.package(url: "https://github.com/apple/swift-certificates.git", from: "1.14.0")
.package(url: "https://github.com/adam-fowler/swift-zip-archive.git", .upToNextMajor(from: "0.8.1")),
.package(url: "https://github.com/apple/swift-certificates.git", from: "1.19.0")
],
targets: [
.target(
name: "PassCore"
name: "PassCore",
swiftSettings: swiftSettings
),
.target(
name: "PassGen",
Expand All @@ -31,14 +43,16 @@ let package = Package(
],
resources: [
.process("Resources")
]
],
swiftSettings: swiftSettings
),
.target(
name: "PassHelpers",
dependencies: [
.target(name: "PassCore"),
.target(name: "PassGen")
]
],
swiftSettings: swiftSettings
),
.testTarget(
name: "PassKitTests",
Expand All @@ -47,7 +61,8 @@ let package = Package(
.target(name: "PassGen"),
.product(name: "X509", package: "swift-certificates")
],
resources: [.process("Resources")]
resources: [.process("Resources")],
swiftSettings: swiftSettings
),
]
)
4 changes: 2 additions & 2 deletions Sources/PassCore/Extensions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
// Copyright (c) 2025 hiimtmac inc.

#if canImport(FoundationEssentials)
import FoundationEssentials
public import FoundationEssentials
#else
import Foundation
public import Foundation
#endif

extension JSONEncoder {
Expand Down
4 changes: 2 additions & 2 deletions Sources/PassCore/Pass.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
// Copyright (c) 2025 hiimtmac inc.

#if canImport(FoundationEssentials)
import FoundationEssentials
public import FoundationEssentials
#else
import Foundation
public import Foundation
#endif

// https://developer.apple.com/documentation/walletpasses/pass
Expand Down
4 changes: 2 additions & 2 deletions Sources/PassCore/PassFieldContent.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
// Copyright (c) 2025 hiimtmac inc.

#if canImport(FoundationEssentials)
import FoundationEssentials
public import FoundationEssentials
#else
import Foundation
public import Foundation
#endif

// https://developer.apple.com/documentation/walletpasses/passfieldcontent
Expand Down
6 changes: 5 additions & 1 deletion Sources/PassCore/RelevantDate.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
// RelevantDate.swift
// Copyright (c) 2025 hiimtmac inc.

import Foundation
#if canImport(FoundationEssentials)
public import FoundationEssentials
#else
public import Foundation
#endif

extension Pass {
/// https://developer.apple.com/documentation/walletpasses/pass/relevantdates-data.dictionary
Expand Down
6 changes: 5 additions & 1 deletion Sources/PassCore/SemanticTags.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
// SemanticTags.swift
// Copyright (c) 2025 hiimtmac inc.

import Foundation
#if canImport(FoundationEssentials)
public import FoundationEssentials
#else
public import Foundation
#endif

// https://developer.apple.com/documentation/walletpasses/semantictags
/// An object that contains machine-readable metadata the system uses to offer a pass and suggest related actions.
Expand Down
7 changes: 6 additions & 1 deletion Sources/PassCore/UpcomingPassInformationEntry.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
// UpcomingPassInformationEntry.swift
// Copyright (c) 2025 hiimtmac inc.

import Foundation
#if canImport(FoundationEssentials)
public import FoundationEssentials
#else
public import Foundation
#endif


// https://developer.apple.com/documentation/walletpasses/upcomingpassinformationentry
/// An object that represents the ordered list of all upcoming pass information entries.
Expand Down
5 changes: 4 additions & 1 deletion Sources/PassGen/Manifest.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Copyright (c) 2025 hiimtmac inc.

import Crypto

#if canImport(FoundationEssentials)
import FoundationEssentials
#else
Expand All @@ -13,7 +14,9 @@ struct Manifest {

mutating func addHash(name: String, data: Data) {
let hashData = Insecure.SHA1.hash(data: data)
hashes[name] = hashData.map { String(format: "%02hhx", $0) }.joined()
hashes[name] = hashData.map { String($0, radix: 16, uppercase: false) }
.map { $0.count == 1 ? "0" + $0 : $0 }
.joined()
}

func makeData() throws -> Data {
Expand Down
7 changes: 4 additions & 3 deletions Sources/PassGen/PassGenerator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@
import _CryptoExtras
// TODO: `Bundle` is not available in FoundationEssentials
// #if canImport(FoundationEssentials)
// import FoundationEssentials
// public import FoundationEssentials
// #else
import Foundation
public import Foundation
// #endif
import PassCore
public import PassCore
import SwiftASN1
import X509
import ZipArchive

Expand Down
7 changes: 4 additions & 3 deletions Sources/PassGen/PassReader.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@
// Copyright (c) 2025 hiimtmac inc.

#if canImport(FoundationEssentials)
import FoundationEssentials
public import FoundationEssentials
#else
import Foundation
public import Foundation
#endif
import PassCore
public import PassCore
import SystemPackage
import ZipArchive

extension DecodingError {
Expand Down
2 changes: 1 addition & 1 deletion Sources/PassHelpers/ImageSize.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// ImageSize.swift
// Copyright (c) 2025 hiimtmac inc.

import Foundation
public import Foundation

public enum ImageSize: Hashable {
case icon
Expand Down
8 changes: 6 additions & 2 deletions Sources/PassHelpers/Pass+Extensions.swift
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
// Pass+Extensions.swift
// Copyright (c) 2025 hiimtmac inc.

import Foundation
import PassCore
#if canImport(FoundationEssentials)
public import FoundationEssentials
#else
public import Foundation
#endif
public import PassCore

extension Pass {
public static func boardingPass(
Expand Down
6 changes: 5 additions & 1 deletion Sources/PassHelpers/PassContainer.swift
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
// PassContainer.swift
// Copyright (c) 2025 hiimtmac inc.

#if canImport(FoundationEssentials)
import FoundationEssentials
#else
import Foundation
import PassCore
#endif
public import PassCore

// https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/PassKit_PG/index.html#//apple_ref/doc/uid/TP40012195-CH1-SW1

Expand Down
8 changes: 6 additions & 2 deletions Sources/PassHelpers/PassFieldContent+Extensions.swift
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
// PassFieldContent+Extensions.swift
// Copyright (c) 2025 hiimtmac inc.

import Foundation
import PassCore
#if canImport(FoundationEssentials)
public import FoundationEssentials
#else
public import Foundation
#endif
public import PassCore

// MARK: - String

Expand Down
2 changes: 1 addition & 1 deletion Sources/PassHelpers/PassFields+Extensions.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// PassFields+Extensions.swift
// Copyright (c) 2025 hiimtmac inc.

import PassCore
public import PassCore

extension PassFields {
public static func boardingPass(
Expand Down
8 changes: 6 additions & 2 deletions Sources/PassHelpers/SemanticTags+Extensions.swift
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
// SemanticTags+Extensions.swift
// Copyright (c) 2025 hiimtmac inc.

import Foundation
import PassCore
#if canImport(FoundationEssentials)
public import FoundationEssentials
#else
public import Foundation
#endif
public import PassCore

extension SemanticTags {
public static func eventSemantics(
Expand Down
2 changes: 1 addition & 1 deletion Sources/PassHelpers/UTType+Extensions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// Copyright (c) 2025 hiimtmac inc.

#if canImport(UniformTypeIdentifiers)
import UniformTypeIdentifiers
public import UniformTypeIdentifiers

extension UTType {
public static let pkpass = UTType("com.apple.pkpass-data")!
Expand Down
1 change: 1 addition & 0 deletions Tests/PassKitTests/GeneratorTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

import Foundation
import Testing
import PassCore
@testable import PassGen

@Suite
Expand Down
1 change: 1 addition & 0 deletions Tests/PassKitTests/ReaderTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

import Foundation
import Testing
import PassCore
@testable import PassGen

@Suite
Expand Down
Loading