[Swift5][client] try to fix JsonEncondable (#11541)

This commit is contained in:
Bruno Coelho 2022-02-09 08:50:16 +00:00 committed by GitHub
parent bf5e701c3d
commit 441c069177
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
32 changed files with 576 additions and 240 deletions

View File

@ -11,15 +11,41 @@ import AnyCodable
import PromiseKit{{/usePromiseKit}}{{#useVapor}}
import Vapor{{/useVapor}}{{^useVapor}}
extension Bool: JSONEncodable {}
extension Float: JSONEncodable {}
extension Int: JSONEncodable {}
extension Int32: JSONEncodable {}
extension Int64: JSONEncodable {}
extension Double: JSONEncodable {}
extension String: JSONEncodable {}
extension URL: JSONEncodable {}
extension UUID: JSONEncodable {}
extension Bool: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Float: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int32: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int64: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Double: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension String: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue }
@ -69,8 +95,7 @@ extension Date: JSONEncodable {
extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
guard let data = try? CodableHelper.jsonEncoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()

View File

@ -11,10 +11,6 @@ protocol JSONEncodable {
func encodeToJSON() -> Any
}
extension JSONEncodable {
func encodeToJSON() -> Any { self }
}
/// An enum where the last case value can be used as a default catch-all.
protocol CaseIterableDefaultsLast: Decodable & CaseIterable & RawRepresentable
where RawValue: Decodable, AllCases: BidirectionalCollection {}

View File

@ -9,15 +9,41 @@ import Foundation
import AnyCodable
#endif
extension Bool: JSONEncodable {}
extension Float: JSONEncodable {}
extension Int: JSONEncodable {}
extension Int32: JSONEncodable {}
extension Int64: JSONEncodable {}
extension Double: JSONEncodable {}
extension String: JSONEncodable {}
extension URL: JSONEncodable {}
extension UUID: JSONEncodable {}
extension Bool: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Float: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int32: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int64: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Double: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension String: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue }
@ -67,8 +93,7 @@ extension Date: JSONEncodable {
extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
guard let data = try? CodableHelper.jsonEncoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()

View File

@ -11,10 +11,6 @@ protocol JSONEncodable {
func encodeToJSON() -> Any
}
extension JSONEncodable {
func encodeToJSON() -> Any { self }
}
/// An enum where the last case value can be used as a default catch-all.
protocol CaseIterableDefaultsLast: Decodable & CaseIterable & RawRepresentable
where RawValue: Decodable, AllCases: BidirectionalCollection {}

View File

@ -9,15 +9,41 @@ import Foundation
import AnyCodable
#endif
extension Bool: JSONEncodable {}
extension Float: JSONEncodable {}
extension Int: JSONEncodable {}
extension Int32: JSONEncodable {}
extension Int64: JSONEncodable {}
extension Double: JSONEncodable {}
extension String: JSONEncodable {}
extension URL: JSONEncodable {}
extension UUID: JSONEncodable {}
extension Bool: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Float: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int32: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int64: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Double: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension String: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue }
@ -67,8 +93,7 @@ extension Date: JSONEncodable {
extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
guard let data = try? CodableHelper.jsonEncoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()

View File

@ -10,10 +10,6 @@ protocol JSONEncodable {
func encodeToJSON() -> Any
}
extension JSONEncodable {
func encodeToJSON() -> Any { self }
}
/// An enum where the last case value can be used as a default catch-all.
protocol CaseIterableDefaultsLast: Decodable & CaseIterable & RawRepresentable
where RawValue: Decodable, AllCases: BidirectionalCollection {}

View File

@ -9,15 +9,41 @@ import Foundation
import AnyCodable
#endif
extension Bool: JSONEncodable {}
extension Float: JSONEncodable {}
extension Int: JSONEncodable {}
extension Int32: JSONEncodable {}
extension Int64: JSONEncodable {}
extension Double: JSONEncodable {}
extension String: JSONEncodable {}
extension URL: JSONEncodable {}
extension UUID: JSONEncodable {}
extension Bool: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Float: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int32: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int64: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Double: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension String: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue }
@ -67,8 +93,7 @@ extension Date: JSONEncodable {
extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
guard let data = try? CodableHelper.jsonEncoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()

View File

@ -10,10 +10,6 @@ protocol JSONEncodable {
func encodeToJSON() -> Any
}
extension JSONEncodable {
func encodeToJSON() -> Any { self }
}
/// An enum where the last case value can be used as a default catch-all.
protocol CaseIterableDefaultsLast: Decodable & CaseIterable & RawRepresentable
where RawValue: Decodable, AllCases: BidirectionalCollection {}

View File

@ -9,15 +9,41 @@ import Foundation
import AnyCodable
#endif
extension Bool: JSONEncodable {}
extension Float: JSONEncodable {}
extension Int: JSONEncodable {}
extension Int32: JSONEncodable {}
extension Int64: JSONEncodable {}
extension Double: JSONEncodable {}
extension String: JSONEncodable {}
extension URL: JSONEncodable {}
extension UUID: JSONEncodable {}
extension Bool: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Float: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int32: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int64: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Double: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension String: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue }
@ -67,8 +93,7 @@ extension Date: JSONEncodable {
extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
guard let data = try? CodableHelper.jsonEncoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()

View File

@ -10,10 +10,6 @@ protocol JSONEncodable {
func encodeToJSON() -> Any
}
extension JSONEncodable {
func encodeToJSON() -> Any { self }
}
/// An enum where the last case value can be used as a default catch-all.
protocol CaseIterableDefaultsLast: Decodable & CaseIterable & RawRepresentable
where RawValue: Decodable, AllCases: BidirectionalCollection {}

View File

@ -9,15 +9,41 @@ import Foundation
import AnyCodable
#endif
extension Bool: JSONEncodable {}
extension Float: JSONEncodable {}
extension Int: JSONEncodable {}
extension Int32: JSONEncodable {}
extension Int64: JSONEncodable {}
extension Double: JSONEncodable {}
extension String: JSONEncodable {}
extension URL: JSONEncodable {}
extension UUID: JSONEncodable {}
extension Bool: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Float: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int32: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int64: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Double: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension String: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue }
@ -67,8 +93,7 @@ extension Date: JSONEncodable {
extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
guard let data = try? CodableHelper.jsonEncoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()

View File

@ -10,10 +10,6 @@ protocol JSONEncodable {
func encodeToJSON() -> Any
}
extension JSONEncodable {
func encodeToJSON() -> Any { self }
}
/// An enum where the last case value can be used as a default catch-all.
protocol CaseIterableDefaultsLast: Decodable & CaseIterable & RawRepresentable
where RawValue: Decodable, AllCases: BidirectionalCollection {}

View File

@ -9,15 +9,41 @@ import Foundation
import AnyCodable
#endif
extension Bool: JSONEncodable {}
extension Float: JSONEncodable {}
extension Int: JSONEncodable {}
extension Int32: JSONEncodable {}
extension Int64: JSONEncodable {}
extension Double: JSONEncodable {}
extension String: JSONEncodable {}
extension URL: JSONEncodable {}
extension UUID: JSONEncodable {}
extension Bool: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Float: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int32: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int64: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Double: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension String: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue }
@ -67,8 +93,7 @@ extension Date: JSONEncodable {
extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
guard let data = try? CodableHelper.jsonEncoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()

View File

@ -10,10 +10,6 @@ protocol JSONEncodable {
func encodeToJSON() -> Any
}
extension JSONEncodable {
func encodeToJSON() -> Any { self }
}
/// An enum where the last case value can be used as a default catch-all.
protocol CaseIterableDefaultsLast: Decodable & CaseIterable & RawRepresentable
where RawValue: Decodable, AllCases: BidirectionalCollection {}

View File

@ -9,15 +9,41 @@ import Foundation
import AnyCodable
#endif
extension Bool: JSONEncodable {}
extension Float: JSONEncodable {}
extension Int: JSONEncodable {}
extension Int32: JSONEncodable {}
extension Int64: JSONEncodable {}
extension Double: JSONEncodable {}
extension String: JSONEncodable {}
extension URL: JSONEncodable {}
extension UUID: JSONEncodable {}
extension Bool: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Float: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int32: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int64: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Double: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension String: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue }
@ -67,8 +93,7 @@ extension Date: JSONEncodable {
extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
guard let data = try? CodableHelper.jsonEncoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()

View File

@ -10,10 +10,6 @@ protocol JSONEncodable {
func encodeToJSON() -> Any
}
extension JSONEncodable {
func encodeToJSON() -> Any { self }
}
/// An enum where the last case value can be used as a default catch-all.
protocol CaseIterableDefaultsLast: Decodable & CaseIterable & RawRepresentable
where RawValue: Decodable, AllCases: BidirectionalCollection {}

View File

@ -9,15 +9,41 @@ import Foundation
import AnyCodable
#endif
extension Bool: JSONEncodable {}
extension Float: JSONEncodable {}
extension Int: JSONEncodable {}
extension Int32: JSONEncodable {}
extension Int64: JSONEncodable {}
extension Double: JSONEncodable {}
extension String: JSONEncodable {}
extension URL: JSONEncodable {}
extension UUID: JSONEncodable {}
extension Bool: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Float: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int32: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int64: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Double: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension String: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue }
@ -67,8 +93,7 @@ extension Date: JSONEncodable {
extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
guard let data = try? CodableHelper.jsonEncoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()

View File

@ -10,10 +10,6 @@ protocol JSONEncodable {
func encodeToJSON() -> Any
}
extension JSONEncodable {
func encodeToJSON() -> Any { self }
}
/// An enum where the last case value can be used as a default catch-all.
protocol CaseIterableDefaultsLast: Decodable & CaseIterable & RawRepresentable
where RawValue: Decodable, AllCases: BidirectionalCollection {}

View File

@ -9,15 +9,41 @@ import Foundation
import AnyCodable
#endif
extension Bool: JSONEncodable {}
extension Float: JSONEncodable {}
extension Int: JSONEncodable {}
extension Int32: JSONEncodable {}
extension Int64: JSONEncodable {}
extension Double: JSONEncodable {}
extension String: JSONEncodable {}
extension URL: JSONEncodable {}
extension UUID: JSONEncodable {}
extension Bool: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Float: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int32: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int64: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Double: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension String: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue }
@ -67,8 +93,7 @@ extension Date: JSONEncodable {
extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
guard let data = try? CodableHelper.jsonEncoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()

View File

@ -10,10 +10,6 @@ protocol JSONEncodable {
func encodeToJSON() -> Any
}
extension JSONEncodable {
func encodeToJSON() -> Any { self }
}
/// An enum where the last case value can be used as a default catch-all.
protocol CaseIterableDefaultsLast: Decodable & CaseIterable & RawRepresentable
where RawValue: Decodable, AllCases: BidirectionalCollection {}

View File

@ -10,15 +10,41 @@ import AnyCodable
#endif
import PromiseKit
extension Bool: JSONEncodable {}
extension Float: JSONEncodable {}
extension Int: JSONEncodable {}
extension Int32: JSONEncodable {}
extension Int64: JSONEncodable {}
extension Double: JSONEncodable {}
extension String: JSONEncodable {}
extension URL: JSONEncodable {}
extension UUID: JSONEncodable {}
extension Bool: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Float: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int32: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int64: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Double: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension String: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue }
@ -68,8 +94,7 @@ extension Date: JSONEncodable {
extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
guard let data = try? CodableHelper.jsonEncoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()

View File

@ -10,10 +10,6 @@ protocol JSONEncodable {
func encodeToJSON() -> Any
}
extension JSONEncodable {
func encodeToJSON() -> Any { self }
}
/// An enum where the last case value can be used as a default catch-all.
protocol CaseIterableDefaultsLast: Decodable & CaseIterable & RawRepresentable
where RawValue: Decodable, AllCases: BidirectionalCollection {}

View File

@ -9,15 +9,41 @@ import Foundation
import AnyCodable
#endif
extension Bool: JSONEncodable {}
extension Float: JSONEncodable {}
extension Int: JSONEncodable {}
extension Int32: JSONEncodable {}
extension Int64: JSONEncodable {}
extension Double: JSONEncodable {}
extension String: JSONEncodable {}
extension URL: JSONEncodable {}
extension UUID: JSONEncodable {}
extension Bool: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Float: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int32: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int64: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Double: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension String: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue }
@ -67,8 +93,7 @@ extension Date: JSONEncodable {
extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
guard let data = try? CodableHelper.jsonEncoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()

View File

@ -10,10 +10,6 @@ protocol JSONEncodable {
func encodeToJSON() -> Any
}
extension JSONEncodable {
func encodeToJSON() -> Any { self }
}
/// An enum where the last case value can be used as a default catch-all.
protocol CaseIterableDefaultsLast: Decodable & CaseIterable & RawRepresentable
where RawValue: Decodable, AllCases: BidirectionalCollection {}

View File

@ -9,15 +9,41 @@ import Foundation
import AnyCodable
#endif
extension Bool: JSONEncodable {}
extension Float: JSONEncodable {}
extension Int: JSONEncodable {}
extension Int32: JSONEncodable {}
extension Int64: JSONEncodable {}
extension Double: JSONEncodable {}
extension String: JSONEncodable {}
extension URL: JSONEncodable {}
extension UUID: JSONEncodable {}
extension Bool: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Float: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int32: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int64: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Double: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension String: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue }
@ -67,8 +93,7 @@ extension Date: JSONEncodable {
extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
guard let data = try? CodableHelper.jsonEncoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()

View File

@ -10,10 +10,6 @@ protocol JSONEncodable {
func encodeToJSON() -> Any
}
extension JSONEncodable {
func encodeToJSON() -> Any { self }
}
/// An enum where the last case value can be used as a default catch-all.
protocol CaseIterableDefaultsLast: Decodable & CaseIterable & RawRepresentable
where RawValue: Decodable, AllCases: BidirectionalCollection {}

View File

@ -9,15 +9,41 @@ import Foundation
import AnyCodable
#endif
extension Bool: JSONEncodable {}
extension Float: JSONEncodable {}
extension Int: JSONEncodable {}
extension Int32: JSONEncodable {}
extension Int64: JSONEncodable {}
extension Double: JSONEncodable {}
extension String: JSONEncodable {}
extension URL: JSONEncodable {}
extension UUID: JSONEncodable {}
extension Bool: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Float: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int32: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int64: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Double: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension String: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue }
@ -67,8 +93,7 @@ extension Date: JSONEncodable {
extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
guard let data = try? CodableHelper.jsonEncoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()

View File

@ -10,10 +10,6 @@ protocol JSONEncodable {
func encodeToJSON() -> Any
}
extension JSONEncodable {
func encodeToJSON() -> Any { self }
}
/// An enum where the last case value can be used as a default catch-all.
protocol CaseIterableDefaultsLast: Decodable & CaseIterable & RawRepresentable
where RawValue: Decodable, AllCases: BidirectionalCollection {}

View File

@ -9,15 +9,41 @@ import Foundation
import AnyCodable
#endif
extension Bool: JSONEncodable {}
extension Float: JSONEncodable {}
extension Int: JSONEncodable {}
extension Int32: JSONEncodable {}
extension Int64: JSONEncodable {}
extension Double: JSONEncodable {}
extension String: JSONEncodable {}
extension URL: JSONEncodable {}
extension UUID: JSONEncodable {}
extension Bool: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Float: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int32: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int64: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Double: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension String: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue }
@ -67,8 +93,7 @@ extension Date: JSONEncodable {
extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
guard let data = try? CodableHelper.jsonEncoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()

View File

@ -10,10 +10,6 @@ protocol JSONEncodable {
func encodeToJSON() -> Any
}
extension JSONEncodable {
func encodeToJSON() -> Any { self }
}
/// An enum where the last case value can be used as a default catch-all.
protocol CaseIterableDefaultsLast: Decodable & CaseIterable & RawRepresentable
where RawValue: Decodable, AllCases: BidirectionalCollection {}

View File

@ -9,15 +9,41 @@ import Foundation
import AnyCodable
#endif
extension Bool: JSONEncodable {}
extension Float: JSONEncodable {}
extension Int: JSONEncodable {}
extension Int32: JSONEncodable {}
extension Int64: JSONEncodable {}
extension Double: JSONEncodable {}
extension String: JSONEncodable {}
extension URL: JSONEncodable {}
extension UUID: JSONEncodable {}
extension Bool: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Float: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int32: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Int64: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension Double: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension String: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any { self }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue }
@ -67,8 +93,7 @@ extension Date: JSONEncodable {
extension JSONEncodable where Self: Encodable {
func encodeToJSON() -> Any {
let encoder = CodableHelper.jsonEncoder
guard let data = try? encoder.encode(self) else {
guard let data = try? CodableHelper.jsonEncoder.encode(self) else {
fatalError("Could not encode to json: \(self)")
}
return data.encodeToJSON()

View File

@ -10,10 +10,6 @@ protocol JSONEncodable {
func encodeToJSON() -> Any
}
extension JSONEncodable {
func encodeToJSON() -> Any { self }
}
/// An enum where the last case value can be used as a default catch-all.
protocol CaseIterableDefaultsLast: Decodable & CaseIterable & RawRepresentable
where RawValue: Decodable, AllCases: BidirectionalCollection {}