This commit is contained in:
Daniel Arantes Loverde
2026-02-06 12:25:34 -03:00
parent 5df2499c4a
commit 57696e3036
37 changed files with 189 additions and 40 deletions

View File

@@ -1,10 +1,10 @@
{
"originHash" : "57d4d1724511f49da67a759e590ddf12887d65ffb0702ad7a2ff8f6c830c9b78",
"originHash" : "33e7d52ad13cf774717778548edb365d33ff62d766d0049165bc8970f19a23ef",
"pins" : [
{
"identity" : "lcecryptokitbinary",
"kind" : "remoteSourceControl",
"location" : "https://60c260c85d3a2fe840411b0ff98f521b5eca3c56@git.loverde.com.br/Loverde-Company-LTDA/LCECryptoKitBinary.git",
"kind" : "localSourceControl",
"location" : "/Users/loverde_co/Documents/Loverde_JOBs/Producao/Loverde Co/GIT/XCODE/Repositorios/LCECryptoKit/PrivateLib/LCECryptoKitBinary",
"state" : {
"revision" : "2c5c47cebef40a8adc5557d071a35be405c05e30",
"version" : "1.0.2"

View File

@@ -3,6 +3,23 @@ import PackageDescription
import Foundation
let isLocalDevelopment = FileManager.default.fileExists(atPath: "../LCECryptoKit/PrivateLib/LCECryptoKitBinary")
let enableCryptoBinary = ProcessInfo.processInfo.environment["LCE_ENABLE_CRYPTO_BINARY"] != "0"
let cryptoPackageURL = isLocalDevelopment
? "../LCECryptoKit/PrivateLib/LCECryptoKitBinary"
: "https://60c260c85d3a2fe840411b0ff98f521b5eca3c56@git.loverde.com.br/Loverde-Company-LTDA/LCECryptoKitBinary.git"
let packageDependencies: [Package.Dependency] = enableCryptoBinary
? [
.package(url: cryptoPackageURL, exact: "1.0.2")
]
: []
let targetDependencies: [Target.Dependency] = enableCryptoBinary
? [
.product(name: "LCECryptoKit", package: "lcecryptokitbinary")
]
: []
let package = Package(
name: "LCEssentials",
@@ -17,17 +34,10 @@ let package = Package(
name: "LCEssentials",
targets: ["LCEssentials"]),
],
dependencies: [
.package(
url: isLocalDevelopment ?
"../LCECryptoKit/PrivateLib/LCECryptoKitBinary" :
"https://60c260c85d3a2fe840411b0ff98f521b5eca3c56@git.loverde.com.br/Loverde-Company-LTDA/LCECryptoKitBinary.git",
exact: "1.0.2"
)
],
dependencies: packageDependencies,
targets: [
.target(
name: "LCEssentials",
dependencies: [.product(name: "LCECryptoKit", package: "lcecryptokitbinary")]),
dependencies: targetDependencies),
]
)

View File

@@ -5,8 +5,10 @@
// Created by iOSDevCenters on 11/12/15.
// Copyright © 2016 iOSDevCenters. All rights reserved.
//
#if canImport(UIKit)
import UIKit
#if os(iOS) || os(macOS)
#endif
#if canImport(UIKit)
import ImageIO
//let jeremyGif = UIImage.gifWithName("jeremy")

View File

@@ -21,6 +21,8 @@
import Foundation
#if canImport(LCECryptoKit)
import LCECryptoKit
public final class LCECryptoKitManager {
@@ -57,3 +59,38 @@ public final class LCECryptoKitManager {
LCECryptoKit.decodeSeed(otpKey: otpHash, hashKey: self.hashKey)
}
}
#else
public final class LCECryptoKitManager {
private let hashKey: String
public init() {
self.hashKey = ""
}
public init(privateKey: String){
self.hashKey = privateKey
}
public static func generateKey() -> String {
""
}
public func encodeTP(email: String, password: String) -> String? {
nil
}
public func decodeOTP(_ otpHash: String) -> String? {
nil
}
public func encodeOTPWithKey(email: String, password: String) -> String? {
nil
}
public func decodeOTPWithKey(_ otpHash: String) -> Bool {
false
}
}
#endif

View File

@@ -26,8 +26,10 @@ import Foundation
import Security
#endif
#if canImport(UIKit)
#if canImport(UIKit)
import UIKit
#endif
#endif
/// A generic `Result` enumeration to represent either a success `Value` or a failure `Error`.
public enum Result<Value, Error: Swift.Error> {

View File

@@ -21,8 +21,12 @@
import Foundation
#if canImport(UIKit)
import UIKit
#endif
#if canImport(AVFoundation)
import AVFoundation
#endif
#if os(watchOS)
import WatchKit
#endif
@@ -155,7 +159,7 @@ public struct LCEssentials {
diskPath: "file_cache"
)
#if os(iOS) || os(macOS)
#if canImport(UIKit)
/// Extract the file name from the file path
///
/// - Parameter filePath: Full file path in bundle
@@ -266,7 +270,11 @@ public struct LCEssentials {
/// - LoverdeCo: Check if app is running in debug mode.
@MainActor
public static var isInDebuggingMode: Bool {
#if canImport(UIKit)
return UIApplication.inferredEnvironment == .debug
#else
return false
#endif
}
#if !os(macOS)
@@ -416,7 +424,7 @@ public struct LCEssentials {
// MARK: - Methods
public extension LCEssentials {
#if os(iOS) || os(macOS)
#if canImport(UIKit)
/// - LoverdeCo: Share link with message
///
/// - Parameters:

View File

@@ -20,7 +20,9 @@
// THE SOFTWARE.
import Foundation
#if canImport(UIKit)
import UIKit
#endif
@objc public protocol LCESingletonDelegate: AnyObject {
@objc optional func singleton(object: Any?, withData: Any)

View File

@@ -21,7 +21,9 @@
import Foundation
#if canImport(UIKit)
import UIKit
#endif
// MARK: - Methods (Equatable)
public extension Array where Element: Equatable {
@@ -148,6 +150,7 @@ public extension Array where Element: Equatable {
}
}
#if canImport(UIKit)
extension Array where Element == NSLayoutConstraint {
@MainActor
@@ -169,3 +172,5 @@ extension Array where Element == NSLayoutConstraint {
}
}
}
#endif

View File

@@ -21,8 +21,12 @@
import Foundation
#if canImport(CryptoKit)
import CryptoKit
#endif
#if canImport(CommonCrypto)
import CommonCrypto
#endif
public extension Data {
@@ -71,17 +75,25 @@ public extension Data {
@available(iOS 13.0, *)
func HMACSHA512(key: Data) -> Data {
#if canImport(CryptoKit)
var hmac = HMAC<SHA512>.init(key: SymmetricKey(data: key))
hmac.update(data: self)
return Data(hmac.finalize())
#else
return Data()
#endif
}
func SHA512() -> Data {
#if canImport(CommonCrypto)
var digest = [UInt8](repeating: 0, count: Int(CC_SHA512_DIGEST_LENGTH))
self.withUnsafeBytes {
_ = CC_SHA512($0.baseAddress, CC_LONG(self.count), &digest)
}
return Data(digest)
#else
return Data()
#endif
}
func XOR(with other: Data) -> Data {
@@ -89,11 +101,15 @@ public extension Data {
}
func SHA256() -> Data {
#if canImport(CommonCrypto)
var digest = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH))
self.withUnsafeBytes {
_ = CC_SHA256($0.baseAddress, CC_LONG(self.count), &digest)
}
return Data(digest)
#else
return Data()
#endif
}
func object<T: Codable>() -> T? {
@@ -124,9 +140,13 @@ public extension Data {
///print("md5Hex: \(md5Hex)")
@available(iOS 13.0, *)
static func MD5(string: String) -> Data {
#if canImport(CryptoKit)
let messageData = string.data(using: .utf8)!
let digestData = Insecure.MD5.hash (data: messageData)
let digestHex = String(digestData.map { String(format: "%02hhx", $0) }.joined().prefix(32))
return Data(digestHex.utf8)
#else
return Data()
#endif
}
}

View File

@@ -21,7 +21,9 @@
import Foundation
#if canImport(UIKit)
import UIKit
#endif
public extension Dictionary {

View File

@@ -21,7 +21,9 @@
import Foundation
#if canImport(UIKit)
import UIKit
#endif
public extension FileManager {
@@ -54,7 +56,7 @@ public extension FileManager {
}
}
#if os(iOS) || os(macOS)
#if canImport(UIKit)
func saveImageToDirectory( _ imageWithPath : String, imagem : UIImage ) -> Bool {
let data = imagem.pngData()

View File

@@ -21,8 +21,11 @@
import Foundation
#if canImport(UIKit)
import UIKit
#endif
#if canImport(UIKit)
extension NSLayoutConstraint {
func constraintWithMultiplier(_ multiplier: CGFloat) -> NSLayoutConstraint {
@@ -72,3 +75,4 @@ extension NSLayoutConstraint {
return false
}
}
#endif

View File

@@ -21,8 +21,10 @@
import Foundation
#if os(iOS) || os(macOS)
#if canImport(UIKit)
#if canImport(UIKit)
import UIKit
#endif
public extension NSMutableAttributedString {
@discardableResult func customize(_ text: String,

View File

@@ -20,7 +20,9 @@
// THE SOFTWARE.
#if canImport(UIKit)
import UIKit
#endif
public extension Optional {
/// Get self of default value (if self is nil).

View File

@@ -21,7 +21,9 @@
import Foundation
#if canImport(UIKit)
import UIKit
#endif
#if canImport(CommonCrypto)
import CommonCrypto
#endif
@@ -48,10 +50,14 @@ public extension String {
}
var convertToHTML: NSAttributedString? {
#if canImport(UIKit)
return convertHtmlToAttributedStringWithCSS(font: nil,
csscolor: "",
lineheight: 0,
csstextalign: "")
#else
return convertHtmlToNSAttributedString
#endif
}
/// Check if string is a valid URL.
@@ -646,7 +652,7 @@ public extension String {
return strDate?.date(withCurrFormatt: newFormatt, localeIdentifier: localeIdentifier, timeZone: timeZone)
}
#if os(iOS) || os(macOS)
#if canImport(UIKit)
func height(withConstrainedWidth width: CGFloat, font: UIFont) -> CGFloat {
let constraintRect = CGSize(width: width, height: .greatestFiniteMagnitude)
let boundingBox = self.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font: font], context: nil)
@@ -757,7 +763,7 @@ public extension String {
}
return self
}
#if canImport(UIKit)
/// Converte String para HTML com CSS.
///
/// - Parameters:
@@ -801,6 +807,7 @@ public extension String {
return nil
}
}
#endif
/// Float value from string (if applicable).
///

View File

@@ -19,8 +19,10 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#if canImport(UIKit) && os(iOS) || os(macOS)
#if canImport(UIKit)
#if canImport(UIKit)
import UIKit
#endif
public extension UIApplication {
/// Application running environment.

View File

@@ -21,9 +21,11 @@
import Foundation
#if canImport(UIKit)
import UIKit
#endif
#if os(iOS) || os(macOS)
#if canImport(UIKit)
// MARK: - Properties
public extension UIButton {

View File

@@ -21,8 +21,10 @@
import Foundation
#if os(iOS) || os(macOS)
#if canImport(UIKit)
#if canImport(UIKit)
import UIKit
#endif
public extension UICollectionView {

View File

@@ -21,9 +21,11 @@
import Foundation
#if canImport(UIKit)
import UIKit
#endif
#if os(iOS) || os(macOS)
#if canImport(UIKit)
public extension UIColor {
var redValue: CGFloat{ return CIColor(color: self).red }

View File

@@ -21,9 +21,11 @@
import Foundation
#if canImport(UIKit)
import UIKit
#endif
#if os(iOS) || os(macOS)
#if canImport(UIKit)
public extension UIDevice {
static var topNotch: CGFloat {

View File

@@ -21,9 +21,11 @@
import Foundation
#if canImport(UIKit)
import UIKit
#endif
#if os(iOS) || os(macOS)
#if canImport(UIKit)
public extension UIImage {
//Extension Required by RoundedButton to create UIImage from UIColor
func imageWithColor(color: UIColor) -> UIImage {

View File

@@ -21,9 +21,11 @@
import Foundation
#if canImport(UIKit)
import UIKit
#endif
#if os(iOS) || os(macOS)
#if canImport(UIKit)
@MainActor
public extension UIImageView {

View File

@@ -21,9 +21,11 @@
import Foundation
#if canImport(UIKit)
import UIKit
#endif
#if os(iOS) || os(macOS)
#if canImport(UIKit)
public extension UILabel {
func lineNumbers() -> Int{

View File

@@ -21,8 +21,10 @@
import Foundation
#if os(iOS) || os(macOS)
#if canImport(UIKit)
#if canImport(UIKit)
import UIKit
#endif
import QuartzCore
public extension UINavigationController {

View File

@@ -21,8 +21,10 @@
import Foundation
#if os(iOS) || os(macOS)
#if canImport(UIKit)
#if canImport(UIKit)
import UIKit
#endif
public extension UIResponder {

View File

@@ -21,7 +21,9 @@
#if canImport(UIKit) && !os(watchOS)
#if canImport(UIKit)
import UIKit
#endif
// MARK: - Methods
public extension UIScrollView {

View File

@@ -21,7 +21,9 @@
import Foundation
#if canImport(UIKit)
import UIKit
#endif
#if os(iOS)
// MARK: - Initializers

View File

@@ -21,8 +21,10 @@
import Foundation
#if os(iOS) || os(macOS)
#if canImport(UIKit)
#if canImport(UIKit)
import UIKit
#endif
public class CustomTabBadge: UILabel {

View File

@@ -21,9 +21,11 @@
import Foundation
#if canImport(UIKit)
import UIKit
#endif
#if os(iOS) || os(macOS)
#if canImport(UIKit)
//MARK: - UITableView Animation Cell
public typealias UITableViewCellAnimation = (UITableViewCell, IndexPath, UITableView) -> Void

View File

@@ -21,8 +21,10 @@
import Foundation
#if canImport(UIKit) && os(iOS) || os(macOS)
#if canImport(UIKit)
#if canImport(UIKit)
import UIKit
#endif
public extension UITapGestureRecognizer {

View File

@@ -21,8 +21,10 @@
import Foundation
#if os(iOS) || os(macOS)
#if canImport(UIKit)
#if canImport(UIKit)
import UIKit
#endif
public extension UITextField {

View File

@@ -21,8 +21,10 @@
import Foundation
#if os(iOS) || os(macOS)
#if canImport(UIKit)
#if canImport(UIKit)
import UIKit
#endif
typealias GradientPoints = (startPoint: CGPoint, endPoint: CGPoint)

View File

@@ -22,8 +22,10 @@
import Foundation
#if os(iOS) || os(macOS)
#if canImport(UIKit)
#if canImport(UIKit)
import UIKit
#endif
import QuartzCore
public enum ToastPosition {

View File

@@ -20,8 +20,10 @@
// THE SOFTWARE.
#if os(iOS) || os(macOS)
#if canImport(UIKit)
#if canImport(UIKit)
import UIKit
#endif
import AVFoundation
import Photos

View File

@@ -19,9 +19,11 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#if canImport(UIKit)
import UIKit
#endif
#if os(iOS) || os(macOS)
#if canImport(UIKit)
/// A protocol for delegates of `ImageZoomController` to provide callbacks for zoom and close events.
@objc public protocol ImageZoomControllerDelegate {
/// Called when the image in the controller is zoomed.

View File

@@ -20,6 +20,8 @@
// THE SOFTWARE.
// MARK: - Framework headers
#if canImport(UIKit)
import Foundation
import UIKit
// MARK: - Protocols
@@ -512,3 +514,5 @@ public extension LCSnackBarView {
}
}
}
#endif

View File

@@ -18,7 +18,7 @@
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#if canImport(SwiftUI)
#if canImport(SwiftUI) && os(iOS)
import SwiftUI
/// `LCENavigationState` is an `ObservableObject` that manages the state for `LCENavigationView`.