From ae963ef54c5ac8ca0af2f75f557e0d70be7af9c3 Mon Sep 17 00:00:00 2001 From: mjgu Date: Mon, 15 Dec 2025 17:28:39 +0900 Subject: [PATCH 1/3] refactor: improve logging pagination and screen fetcher implementation --- Package.swift | 4 +-- .../Implement/ScreenFetcher.swift | 8 +++--- Source/AppleLogger/Data/LoggerSetting.swift | 3 +++ Source/AppleLogger/Implement/LogService.swift | 27 +++++++++++-------- 4 files changed, 26 insertions(+), 16 deletions(-) diff --git a/Package.swift b/Package.swift index e7c5cc37..6a26694b 100644 --- a/Package.swift +++ b/Package.swift @@ -179,11 +179,11 @@ package path: "Source/AppleCrypto"), .target( name: "SabyAppleStorage", - dependencies: ["SabyConcurrency", "SabySize", "SabyJSON"], + dependencies: ["SabyConcurrency", "SabySize", "SabyJSON", "SabySafe"], path: "Source/AppleStorage"), .target( name: "SabyApplePreference", - dependencies: ["SabyConcurrency", "SabyJSON"], + dependencies: ["SabyConcurrency", "SabyJSON", "SabySafe"], path: "Source/ApplePreference"), .target( name: "SabyAppleTracker", diff --git a/Source/AppleFetcher/Implement/ScreenFetcher.swift b/Source/AppleFetcher/Implement/ScreenFetcher.swift index a3100c32..23d6499f 100644 --- a/Source/AppleFetcher/Implement/ScreenFetcher.swift +++ b/Source/AppleFetcher/Implement/ScreenFetcher.swift @@ -16,20 +16,22 @@ public final class ScreenFetcher: Fetcher { public typealias Value = Promise public init() {} - + public func fetch() -> Promise { - return Promise.all( + return Promise.tryAll( Promise.resolved(fetchSize()), Promise.resolved(fetchScale()), fetchOrientation() ) .then { size, scale, orientation in - Screen( + let screen = Screen( width: size.width, height: size.height, scale: scale, orientation: orientation.isLandscape ? "landscape": "portrait" ) + + return screen } } } diff --git a/Source/AppleLogger/Data/LoggerSetting.swift b/Source/AppleLogger/Data/LoggerSetting.swift index f843db11..882c0960 100644 --- a/Source/AppleLogger/Data/LoggerSetting.swift +++ b/Source/AppleLogger/Data/LoggerSetting.swift @@ -14,6 +14,9 @@ public struct LoggerSetting { /// A variable indicating logger paginate log or not. Because of `os_log`'s 1024 length limit. public var isPaginateLogEnabled: Bool = false + /// A variable indicating logger use legacy log system or not. + public var isLegacyLogEnabled: Bool = false + /// A variable used for displaying `subsystem` value in console public let subsystem: String diff --git a/Source/AppleLogger/Implement/LogService.swift b/Source/AppleLogger/Implement/LogService.swift index cbcd6e58..1807e357 100644 --- a/Source/AppleLogger/Implement/LogService.swift +++ b/Source/AppleLogger/Implement/LogService.swift @@ -18,20 +18,25 @@ extension LogService { _ message: String, _ printBlock: (String) -> Void ) { - if setting.isPaginateLogEnabled, message.count > LoggerConstant.paginateSize { - let logs = LoggerConstant.paginatedLog(message) - let id = arc4random() % 1000000000 - - logs.enumerated().forEach { (index, log) in - printBlock( - "\(log)" - + "\nlog={page=\(index + 1)/\(logs.count), id=\(id)}" - ) - } + guard setting.isPaginateLogEnabled, message.count > LoggerConstant.paginateSize + else { + printBlock(message) return } - printBlock(message) + let logs = LoggerConstant.paginatedLog(message) + let id = arc4random() % 1000000000 + + logs + .enumerated() + .map { (index, log) in + let header = setting.isLegacyLogEnabled + ? "[\(setting.subsystem)][\(setting.category)]\n" + : "" + let footer = "\nlog={page=\(index + 1)/\(logs.count), id=\(id)}" + return header + log + footer + } + .forEach(printBlock) } } From b0097956ad4969524ff6851f5a2a59636e184ac4 Mon Sep 17 00:00:00 2001 From: mjgu Date: Mon, 15 Dec 2025 17:35:41 +0900 Subject: [PATCH 2/3] refactor: optimize header computation in log pagination --- Source/AppleLogger/Implement/LogService.swift | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Source/AppleLogger/Implement/LogService.swift b/Source/AppleLogger/Implement/LogService.swift index 1807e357..61c03e2b 100644 --- a/Source/AppleLogger/Implement/LogService.swift +++ b/Source/AppleLogger/Implement/LogService.swift @@ -18,9 +18,13 @@ extension LogService { _ message: String, _ printBlock: (String) -> Void ) { + let header = setting.isLegacyLogEnabled + ? "[\(setting.subsystem)][\(setting.category)]\n" + : "" + guard setting.isPaginateLogEnabled, message.count > LoggerConstant.paginateSize else { - printBlock(message) + printBlock(header + message) return } @@ -30,9 +34,6 @@ extension LogService { logs .enumerated() .map { (index, log) in - let header = setting.isLegacyLogEnabled - ? "[\(setting.subsystem)][\(setting.category)]\n" - : "" let footer = "\nlog={page=\(index + 1)/\(logs.count), id=\(id)}" return header + log + footer } From d8064b2381717f6de775769dfe1c949f38d5af58 Mon Sep 17 00:00:00 2001 From: mjgu Date: Mon, 15 Dec 2025 17:40:59 +0900 Subject: [PATCH 3/3] refactor: remove unused SabySafe dependency --- Package.swift | 6 +++--- Source/ApplePreference/Implement/FileValuePreference.swift | 1 - Source/AppleStorage/Implement/CoreDataArrayStorage.swift | 1 - Source/AppleStorage/Implement/FileValueStorage.swift | 1 - Source/Network/Implement/Client/JSONClient.swift | 1 - 5 files changed, 3 insertions(+), 7 deletions(-) diff --git a/Package.swift b/Package.swift index 6a26694b..6a4708ed 100644 --- a/Package.swift +++ b/Package.swift @@ -81,7 +81,7 @@ var package = Package( path: "Source/TestFake"), .target( name: "SabyNetwork", - dependencies: ["SabyConcurrency", "SabyJSON", "SabySafe", "SabyTime"], + dependencies: ["SabyConcurrency", "SabyJSON", "SabyTime"], path: "Source/Network"), .target( name: "SabyNumeric", @@ -179,11 +179,11 @@ package path: "Source/AppleCrypto"), .target( name: "SabyAppleStorage", - dependencies: ["SabyConcurrency", "SabySize", "SabyJSON", "SabySafe"], + dependencies: ["SabyConcurrency", "SabySize", "SabyJSON"], path: "Source/AppleStorage"), .target( name: "SabyApplePreference", - dependencies: ["SabyConcurrency", "SabyJSON", "SabySafe"], + dependencies: ["SabyConcurrency", "SabyJSON"], path: "Source/ApplePreference"), .target( name: "SabyAppleTracker", diff --git a/Source/ApplePreference/Implement/FileValuePreference.swift b/Source/ApplePreference/Implement/FileValuePreference.swift index b9ed942c..02f6f5e8 100644 --- a/Source/ApplePreference/Implement/FileValuePreference.swift +++ b/Source/ApplePreference/Implement/FileValuePreference.swift @@ -6,7 +6,6 @@ // import Foundation -import SabySafe import SabyConcurrency import SabyJSON diff --git a/Source/AppleStorage/Implement/CoreDataArrayStorage.swift b/Source/AppleStorage/Implement/CoreDataArrayStorage.swift index b3c6758b..2973bc28 100644 --- a/Source/AppleStorage/Implement/CoreDataArrayStorage.swift +++ b/Source/AppleStorage/Implement/CoreDataArrayStorage.swift @@ -8,7 +8,6 @@ import CoreData import SabyConcurrency -import SabySafe import SabySize import SabyJSON diff --git a/Source/AppleStorage/Implement/FileValueStorage.swift b/Source/AppleStorage/Implement/FileValueStorage.swift index 8b5eea89..67face3e 100644 --- a/Source/AppleStorage/Implement/FileValueStorage.swift +++ b/Source/AppleStorage/Implement/FileValueStorage.swift @@ -6,7 +6,6 @@ // import Foundation -import SabySafe import SabyConcurrency import SabyJSON diff --git a/Source/Network/Implement/Client/JSONClient.swift b/Source/Network/Implement/Client/JSONClient.swift index 673c463a..2874cfbb 100644 --- a/Source/Network/Implement/Client/JSONClient.swift +++ b/Source/Network/Implement/Client/JSONClient.swift @@ -8,7 +8,6 @@ import Foundation import SabyConcurrency -import SabySafe import SabyJSON import SabyTime