Skip to content

Commit fc36675

Browse files
committed
Version 5.1
1 parent 1a1bde3 commit fc36675

File tree

118 files changed

+1413
-1147
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+1413
-1147
lines changed

Package.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ let package = Package(
66
platforms: [
77
.iOS(.v15),
88
.tvOS(.v15),
9-
.macOS(.v12),
10-
.watchOS(.v8),
9+
.macOS(.v13),
10+
.watchOS(.v9),
1111
.visionOS(.v1)
1212
],
1313
products: [

Sources/Pulse/Helpers/CoreData+Extensions.swift

+9-9
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,30 @@
55
import CoreData
66

77
extension NSManagedObjectContext {
8-
func fetch<T: NSManagedObject>(_ entity: T.Type, _ configure: (NSFetchRequest<T>) -> Void = { _ in }) throws -> [T] {
8+
package func fetch<T: NSManagedObject>(_ entity: T.Type, _ configure: (NSFetchRequest<T>) -> Void = { _ in }) throws -> [T] {
99
let request = NSFetchRequest<T>(entityName: String(describing: entity))
1010
configure(request)
1111
return try fetch(request)
1212
}
1313

14-
func fetch<T: NSManagedObject, Value>(_ entity: T.Type, sortedBy keyPath: KeyPath<T, Value>, ascending: Bool = true, _ configure: (NSFetchRequest<T>) -> Void = { _ in }) throws -> [T] {
14+
package func fetch<T: NSManagedObject, Value>(_ entity: T.Type, sortedBy keyPath: KeyPath<T, Value>, ascending: Bool = true, _ configure: (NSFetchRequest<T>) -> Void = { _ in }) throws -> [T] {
1515
try fetch(entity) {
1616
$0.sortDescriptors = [NSSortDescriptor(keyPath: keyPath, ascending: ascending)]
1717
}
1818
}
1919

20-
func first<T: NSManagedObject>(_ entity: T.Type, _ configure: (NSFetchRequest<T>) -> Void = { _ in }) throws -> T? {
20+
package func first<T: NSManagedObject>(_ entity: T.Type, _ configure: (NSFetchRequest<T>) -> Void = { _ in }) throws -> T? {
2121
try fetch(entity) {
2222
$0.fetchLimit = 1
2323
configure($0)
2424
}.first
2525
}
2626

27-
func count<T: NSManagedObject>(for entity: T.Type) throws -> Int {
27+
package func count<T: NSManagedObject>(for entity: T.Type) throws -> Int {
2828
try count(for: NSFetchRequest<T>(entityName: String(describing: entity)))
2929
}
3030

31-
func performAndReturn<T>(_ closure: () throws -> T) throws -> T {
31+
package func performAndReturn<T>(_ closure: () throws -> T) throws -> T {
3232
var result: Result<T, Error>?
3333
performAndWait {
3434
result = Result { try closure() }
@@ -48,7 +48,7 @@ extension NSPersistentContainer {
4848
return container
4949
}
5050

51-
func loadStore() throws {
51+
package func loadStore() throws {
5252
var loadError: Swift.Error?
5353
loadPersistentStores { description, error in
5454
if let error = error {
@@ -130,8 +130,8 @@ extension NSRelationshipDescription {
130130
}
131131
}
132132

133-
enum KeyValueEncoding {
134-
static func encodeKeyValuePairs(_ pairs: [String: String]?, sanitize: Bool = false) -> String {
133+
package enum KeyValueEncoding {
134+
package static func encodeKeyValuePairs(_ pairs: [String: String]?, sanitize: Bool = false) -> String {
135135
var output = ""
136136
let sorted = (pairs ?? [:]).sorted { $0.key < $1.key }
137137
for (name, value) in sorted {
@@ -143,7 +143,7 @@ enum KeyValueEncoding {
143143
return output
144144
}
145145

146-
static func decodeKeyValuePairs(_ string: String) -> [String: String] {
146+
package static func decodeKeyValuePairs(_ string: String) -> [String: String] {
147147
let pairs = string.components(separatedBy: "\n")
148148
var output: [String: String] = [:]
149149
for pair in pairs {

Sources/Pulse/Helpers/Helpers.swift

+18-14
Original file line numberDiff line numberDiff line change
@@ -6,34 +6,34 @@ import Foundation
66
import CoreData
77
import CommonCrypto
88

9-
var Files: FileManager { FileManager.default }
9+
package var Files: FileManager { FileManager.default }
1010

1111
extension FileManager {
1212
@discardableResult
13-
func createDirectoryIfNeeded(at url: URL) -> Bool {
13+
package func createDirectoryIfNeeded(at url: URL) -> Bool {
1414
guard !fileExists(atPath: url.path) else { return false }
1515
try? createDirectory(at: url, withIntermediateDirectories: true, attributes: [:])
1616
return true
1717
}
1818
}
1919

2020
extension URL {
21-
func appending(filename: String) -> URL {
21+
package func appending(filename: String) -> URL {
2222
appendingPathComponent(filename, isDirectory: false)
2323
}
2424

25-
func appending(directory: String) -> URL {
25+
package func appending(directory: String) -> URL {
2626
appendingPathComponent(directory, isDirectory: true)
2727
}
2828

29-
static var temp: URL {
29+
package static var temp: URL {
3030
let url = Files.temporaryDirectory
3131
.appending(directory: "com.github.kean.logger")
3232
Files.createDirectoryIfNeeded(at: url)
3333
return url
3434
}
3535

36-
static var logs: URL {
36+
package static var logs: URL {
3737
#if os(tvOS)
3838
let searchPath = FileManager.SearchPathDirectory.cachesDirectory
3939
#else
@@ -58,15 +58,15 @@ extension Data {
5858
/// print("http://test.com".data(using: .utf8)!.sha1)
5959
/// // prints "c6b6cafcb77f54d43cd1bd5361522a5e0c074b65"
6060
/// ```
61-
var sha1: Data {
61+
package var sha1: Data {
6262
Data(withUnsafeBytes { (bytes: UnsafeRawBufferPointer) -> [UInt8] in
6363
var hash = [UInt8](repeating: 0, count: Int(CC_SHA1_DIGEST_LENGTH))
6464
CC_SHA1(bytes.baseAddress, CC_LONG(count), &hash)
6565
return hash
6666
})
6767
}
6868

69-
var hexString: String {
69+
package var hexString: String {
7070
map { String(format: "%02x", $0) }.joined()
7171
}
7272
}
@@ -114,10 +114,14 @@ extension URL {
114114
}
115115
}
116116

117-
struct LoggerBlogDataStore {
118-
let getDecompressedData: (LoggerBlobHandleEntity) -> Data?
117+
package struct LoggerBlogDataStore {
118+
package let getDecompressedData: (LoggerBlobHandleEntity) -> Data?
119119

120-
init(_ store: LoggerStore) {
120+
package init(_ getDecompressedData: @escaping (LoggerBlobHandleEntity) -> Data?) {
121+
self.getDecompressedData = getDecompressedData
122+
}
123+
124+
package init(_ store: LoggerStore) {
121125
self.getDecompressedData = { [weak store] in
122126
store?.getDecompressedData(for: $0)
123127
}
@@ -128,7 +132,7 @@ struct LoggerBlogDataStore {
128132
}
129133

130134
/// The key for `NSManagedObjectContext` `userInfo`.
131-
static let loggerStoreKey = "com.github.kean.pulse.associated-logger-store"
135+
package static let loggerStoreKey = "com.github.kean.pulse.associated-logger-store"
132136
}
133137

134138
struct TemporaryDirectory {
@@ -145,11 +149,11 @@ struct TemporaryDirectory {
145149
}
146150

147151
extension Data {
148-
func compressed() throws -> Data {
152+
package func compressed() throws -> Data {
149153
try (self as NSData).compressed(using: .lzfse) as Data
150154
}
151155

152-
func decompressed() throws -> Data {
156+
package func decompressed() throws -> Data {
153157
try (self as NSData).decompressed(using: .lzfse) as Data
154158
}
155159
}

Sources/Pulse/Helpers/PulseDocument.swift

+8-8
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44

55
import CoreData
66

7-
final class PulseDocument {
8-
let container: NSPersistentContainer
9-
var context: NSManagedObjectContext { container.viewContext }
7+
package final class PulseDocument {
8+
package let container: NSPersistentContainer
9+
package var context: NSManagedObjectContext { container.viewContext }
1010

11-
init(documentURL: URL) throws {
11+
package init(documentURL: URL) throws {
1212
guard Files.fileExists(atPath: documentURL.deletingLastPathComponent().path) else {
1313
throw LoggerStore.Error.fileDoesntExist
1414
}
@@ -20,7 +20,7 @@ final class PulseDocument {
2020
try container.loadStore()
2121
}
2222

23-
func close() throws {
23+
package func close() throws {
2424
let coordinator = container.persistentStoreCoordinator
2525
for store in coordinator.persistentStores {
2626
try coordinator.remove(store)
@@ -40,7 +40,7 @@ final class PulseDocument {
4040
}()
4141
}
4242

43-
final class PulseBlobEntity: NSManagedObject {
44-
@NSManaged var key: String
45-
@NSManaged var data: Data
43+
package final class PulseBlobEntity: NSManagedObject {
44+
@NSManaged package var key: String
45+
@NSManaged package var data: Data
4646
}

Sources/Pulse/Helpers/Regex.swift

+9-8
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,19 @@
44

55
import Foundation
66

7-
final class Regex: @unchecked Sendable {
7+
package final class Regex: @unchecked Sendable {
88
private let regex: NSRegularExpression
99

10-
struct Options: OptionSet {
11-
let rawValue: Int
10+
package struct Options: OptionSet {
11+
package let rawValue: Int
12+
package init(rawValue: Int) { self.rawValue = rawValue }
1213

13-
static let caseInsensitive = Options(rawValue: 1 << 0)
14-
static let multiline = Options(rawValue: 1 << 1)
15-
static let dotMatchesLineSeparators = Options(rawValue: 1 << 2)
14+
package static let caseInsensitive = Options(rawValue: 1 << 0)
15+
package static let multiline = Options(rawValue: 1 << 1)
16+
package static let dotMatchesLineSeparators = Options(rawValue: 1 << 2)
1617
}
1718

18-
init(_ pattern: String, _ options: Options = []) throws {
19+
package init(_ pattern: String, _ options: Options = []) throws {
1920
var ops = NSRegularExpression.Options()
2021
if options.contains(.caseInsensitive) { ops.insert(.caseInsensitive) }
2122
if options.contains(.multiline) { ops.insert(.anchorsMatchLines) }
@@ -24,7 +25,7 @@ final class Regex: @unchecked Sendable {
2425
self.regex = try NSRegularExpression(pattern: pattern, options: ops)
2526
}
2627

27-
func isMatch(_ s: String) -> Bool {
28+
package func isMatch(_ s: String) -> Bool {
2829
let range = NSRange(s.startIndex..<s.endIndex, in: s)
2930
return regex.firstMatch(in: s, options: [], range: range) != nil
3031
}

Sources/Pulse/LoggerStore/LoggerStore+Configuration.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ extension LoggerStore {
9696
/// is ignored completely.
9797
public var willHandleEvent: @Sendable (Event) -> Event? = { $0 }
9898

99-
var isAutoStartingSession = true
99+
package var isAutoStartingSession = true
100100

101101
/// Initializes the configuration.
102102
///

Sources/Pulse/LoggerStore/LoggerStore+Entities.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -281,9 +281,9 @@ public final class LoggerBlobHandleEntity: NSManagedObject {
281281
/// A decompressed blob size.
282282
@NSManaged public var decompressedSize: Int32
283283

284-
@NSManaged var isUncompressed: Bool
284+
@NSManaged package var isUncompressed: Bool
285285

286-
@NSManaged var rawContentType: String?
286+
@NSManaged package var rawContentType: String?
287287

288288
/// A blob content type.
289289
public var contentType: NetworkLogger.ContentType? {

Sources/Pulse/LoggerStore/LoggerStore+Model.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ extension LoggerStore {
88
/// Returns Core Data model used by the store.
99
///
1010
/// - warning: Model has to be loaded only once.
11-
nonisolated(unsafe) static let model: NSManagedObjectModel = {
11+
nonisolated(unsafe) package static let model: NSManagedObjectModel = {
1212
typealias Entity = NSEntityDescription
1313
typealias Attribute = NSAttributeDescription
1414
typealias Relationship = NSRelationshipDescription

Sources/Pulse/LoggerStore/LoggerStore.swift

+16-16
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ public final class LoggerStore: @unchecked Sendable, Identifiable {
252252
return container
253253
}
254254

255-
func startSession(_ session: Session, info: Info.AppInfo) {
255+
package func startSession(_ session: Session, info: Info.AppInfo) {
256256
backgroundContext.performAndWait {
257257
self.session = session
258258
saveEntity(for: session, info: info)
@@ -342,7 +342,7 @@ extension LoggerStore {
342342
}
343343

344344
/// Handles event emitted by the external store.
345-
func handleExternalEvent(_ event: Event) {
345+
package func handleExternalEvent(_ event: Event) {
346346
perform { _ in self._handle(event) }
347347
}
348348

@@ -710,7 +710,7 @@ extension LoggerStore {
710710

711711
// MARK: - Performing Changes
712712

713-
func perform(_ changes: @escaping (NSManagedObjectContext) -> Void) {
713+
package func perform(_ changes: @escaping (NSManagedObjectContext) -> Void) {
714714
if options.contains(.synchronous) {
715715
backgroundContext.performAndWait {
716716
changes(backgroundContext)
@@ -1252,17 +1252,17 @@ extension LoggerStore {
12521252
// MARK: - LoggerStore (Manifest)
12531253

12541254
extension LoggerStore {
1255-
private struct Manifest: Codable {
1256-
var storeId: UUID
1257-
var version: Version
1258-
var lastSweepDate: Date?
1255+
package struct Manifest: Codable {
1256+
package var storeId: UUID
1257+
package var version: Version
1258+
package var lastSweepDate: Date?
12591259

1260-
init(storeId: UUID, version: Version) {
1260+
package init(storeId: UUID, version: Version) {
12611261
self.storeId = storeId
12621262
self.version = version
12631263
}
12641264

1265-
init?(url: URL) {
1265+
package init?(url: URL) {
12661266
guard let data = try? Data(contentsOf: url),
12671267
let manifest = try? JSONDecoder().decode(Manifest.self, from: data) else {
12681268
return nil
@@ -1273,14 +1273,14 @@ extension LoggerStore {
12731273
}
12741274

12751275
extension Version {
1276-
static let minimumSupportedVersion = Version(3, 1, 0)
1277-
static let currentStoreVersion = Version(3, 6, 0)
1278-
static let currentProtocolVersion = Version(4, 0, 0)
1276+
package static let minimumSupportedVersion = LoggerStore.Version(3, 1, 0)
1277+
package static let currentStoreVersion = LoggerStore.Version(3, 6, 0)
1278+
package static let currentProtocolVersion = LoggerStore.Version(4, 0, 0)
12791279
}
12801280

12811281
// MARK: - Constants
12821282

1283-
let manifestFilename = "manifest.json"
1284-
let databaseFilename = "logs.sqlite"
1285-
let infoFilename = "info.json"
1286-
let blobsDirectoryName = "blobs"
1283+
package let manifestFilename = "manifest.json"
1284+
package let databaseFilename = "logs.sqlite"
1285+
package let infoFilename = "info.json"
1286+
package let blobsDirectoryName = "blobs"

0 commit comments

Comments
 (0)