Generated-output differences

quicktype output changed between the PR base and tested PR merge revisions.
← Back to the pull request
34test cases
37files differ
37modified
0new
0deleted
444changed lines
+444 −0insertions / deletions
Base 02215b0c05425cf334293eb94cc2f27d9ca3b1bd · PR merge 1440362fab07d0b95d8cdf294acb431ddab603d7 · Head 655d6567510158ab163e3c9d652a70a2d9ef20d9 · raw patch
Test case

test/inputs/json/misc/0a358.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -182,11 +182,23 @@ extension Result {
182182
183183 // MARK: - Helper functions for creating encoders and decoders
184184
185+private func isValidDate(_ value: String) -> Bool {
186+ let formatter = DateFormatter()
187+ formatter.locale = Locale(identifier: "en_US_POSIX")
188+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
189+ formatter.dateFormat = "u-MM-dd"
190+ formatter.isLenient = false
191+ return formatter.date(from: String(value.prefix(10))) != nil
192+}
193+
185194 func newJSONDecoder() -> JSONDecoder {
186195 let decoder = JSONDecoder()
187196 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
188197 let container = try decoder.singleValueContainer()
189198 let dateStr = try container.decode(String.self).uppercased()
199+ guard isValidDate(dateStr) else {
200+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
201+ }
190202
191203 let formatter = DateFormatter()
192204 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/0a91a.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -1238,11 +1238,23 @@ extension Array where Element == TopLevel.Element {
12381238
12391239 // MARK: - Helper functions for creating encoders and decoders
12401240
1241+private func isValidDate(_ value: String) -> Bool {
1242+ let formatter = DateFormatter()
1243+ formatter.locale = Locale(identifier: "en_US_POSIX")
1244+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
1245+ formatter.dateFormat = "u-MM-dd"
1246+ formatter.isLenient = false
1247+ return formatter.date(from: String(value.prefix(10))) != nil
1248+}
1249+
12411250 func newJSONDecoder() -> JSONDecoder {
12421251 let decoder = JSONDecoder()
12431252 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
12441253 let container = try decoder.singleValueContainer()
12451254 let dateStr = try container.decode(String.self).uppercased()
1255+ guard isValidDate(dateStr) else {
1256+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
1257+ }
12461258
12471259 let formatter = DateFormatter()
12481260 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/16bc5.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -807,11 +807,23 @@ extension Wind {
807807
808808 // MARK: - Helper functions for creating encoders and decoders
809809
810+private func isValidDate(_ value: String) -> Bool {
811+ let formatter = DateFormatter()
812+ formatter.locale = Locale(identifier: "en_US_POSIX")
813+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
814+ formatter.dateFormat = "u-MM-dd"
815+ formatter.isLenient = false
816+ return formatter.date(from: String(value.prefix(10))) != nil
817+}
818+
810819 func newJSONDecoder() -> JSONDecoder {
811820 let decoder = JSONDecoder()
812821 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
813822 let container = try decoder.singleValueContainer()
814823 let dateStr = try container.decode(String.self).uppercased()
824+ guard isValidDate(dateStr) else {
825+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
826+ }
815827
816828 let formatter = DateFormatter()
817829 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/262f0.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -813,11 +813,23 @@ extension Wind {
813813
814814 // MARK: - Helper functions for creating encoders and decoders
815815
816+private func isValidDate(_ value: String) -> Bool {
817+ let formatter = DateFormatter()
818+ formatter.locale = Locale(identifier: "en_US_POSIX")
819+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
820+ formatter.dateFormat = "u-MM-dd"
821+ formatter.isLenient = false
822+ return formatter.date(from: String(value.prefix(10))) != nil
823+}
824+
816825 func newJSONDecoder() -> JSONDecoder {
817826 let decoder = JSONDecoder()
818827 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
819828 let container = try decoder.singleValueContainer()
820829 let dateStr = try container.decode(String.self).uppercased()
830+ guard isValidDate(dateStr) else {
831+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
832+ }
821833
822834 let formatter = DateFormatter()
823835 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/32d5c.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -106,11 +106,23 @@ extension Array where Element == TopLevel.Element {
106106
107107 // MARK: - Helper functions for creating encoders and decoders
108108
109+private func isValidDate(_ value: String) -> Bool {
110+ let formatter = DateFormatter()
111+ formatter.locale = Locale(identifier: "en_US_POSIX")
112+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
113+ formatter.dateFormat = "u-MM-dd"
114+ formatter.isLenient = false
115+ return formatter.date(from: String(value.prefix(10))) != nil
116+}
117+
109118 func newJSONDecoder() -> JSONDecoder {
110119 let decoder = JSONDecoder()
111120 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
112121 let container = try decoder.singleValueContainer()
113122 let dateStr = try container.decode(String.self).uppercased()
123+ guard isValidDate(dateStr) else {
124+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
125+ }
114126
115127 let formatter = DateFormatter()
116128 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/337ed.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -374,11 +374,23 @@ enum ResultType: String, Codable {
374374
375375 // MARK: - Helper functions for creating encoders and decoders
376376
377+private func isValidDate(_ value: String) -> Bool {
378+ let formatter = DateFormatter()
379+ formatter.locale = Locale(identifier: "en_US_POSIX")
380+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
381+ formatter.dateFormat = "u-MM-dd"
382+ formatter.isLenient = false
383+ return formatter.date(from: String(value.prefix(10))) != nil
384+}
385+
377386 func newJSONDecoder() -> JSONDecoder {
378387 let decoder = JSONDecoder()
379388 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
380389 let container = try decoder.singleValueContainer()
381390 let dateStr = try container.decode(String.self).uppercased()
391+ guard isValidDate(dateStr) else {
392+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
393+ }
382394
383395 let formatter = DateFormatter()
384396 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/3f1ce.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -811,11 +811,23 @@ extension Wind {
811811
812812 // MARK: - Helper functions for creating encoders and decoders
813813
814+private func isValidDate(_ value: String) -> Bool {
815+ let formatter = DateFormatter()
816+ formatter.locale = Locale(identifier: "en_US_POSIX")
817+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
818+ formatter.dateFormat = "u-MM-dd"
819+ formatter.isLenient = false
820+ return formatter.date(from: String(value.prefix(10))) != nil
821+}
822+
814823 func newJSONDecoder() -> JSONDecoder {
815824 let decoder = JSONDecoder()
816825 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
817826 let container = try decoder.singleValueContainer()
818827 let dateStr = try container.decode(String.self).uppercased()
828+ guard isValidDate(dateStr) else {
829+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
830+ }
819831
820832 let formatter = DateFormatter()
821833 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/4c547.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -807,11 +807,23 @@ extension Wind {
807807
808808 // MARK: - Helper functions for creating encoders and decoders
809809
810+private func isValidDate(_ value: String) -> Bool {
811+ let formatter = DateFormatter()
812+ formatter.locale = Locale(identifier: "en_US_POSIX")
813+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
814+ formatter.dateFormat = "u-MM-dd"
815+ formatter.isLenient = false
816+ return formatter.date(from: String(value.prefix(10))) != nil
817+}
818+
810819 func newJSONDecoder() -> JSONDecoder {
811820 let decoder = JSONDecoder()
812821 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
813822 let container = try decoder.singleValueContainer()
814823 let dateStr = try container.decode(String.self).uppercased()
824+ guard isValidDate(dateStr) else {
825+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
826+ }
815827
816828 let formatter = DateFormatter()
817829 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/54d32.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -187,11 +187,23 @@ enum Status: String, Codable {
187187
188188 // MARK: - Helper functions for creating encoders and decoders
189189
190+private func isValidDate(_ value: String) -> Bool {
191+ let formatter = DateFormatter()
192+ formatter.locale = Locale(identifier: "en_US_POSIX")
193+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
194+ formatter.dateFormat = "u-MM-dd"
195+ formatter.isLenient = false
196+ return formatter.date(from: String(value.prefix(10))) != nil
197+}
198+
190199 func newJSONDecoder() -> JSONDecoder {
191200 let decoder = JSONDecoder()
192201 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
193202 let container = try decoder.singleValueContainer()
194203 let dateStr = try container.decode(String.self).uppercased()
204+ guard isValidDate(dateStr) else {
205+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
206+ }
195207
196208 let formatter = DateFormatter()
197209 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/5eae5.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -90,11 +90,23 @@ extension Array where Element == TopLevel.Element {
9090
9191 // MARK: - Helper functions for creating encoders and decoders
9292
93+private func isValidDate(_ value: String) -> Bool {
94+ let formatter = DateFormatter()
95+ formatter.locale = Locale(identifier: "en_US_POSIX")
96+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
97+ formatter.dateFormat = "u-MM-dd"
98+ formatter.isLenient = false
99+ return formatter.date(from: String(value.prefix(10))) != nil
100+}
101+
93102 func newJSONDecoder() -> JSONDecoder {
94103 let decoder = JSONDecoder()
95104 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
96105 let container = try decoder.singleValueContainer()
97106 let dateStr = try container.decode(String.self).uppercased()
107+ guard isValidDate(dateStr) else {
108+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
109+ }
98110
99111 let formatter = DateFormatter()
100112 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/6dec6.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -813,11 +813,23 @@ extension Wind {
813813
814814 // MARK: - Helper functions for creating encoders and decoders
815815
816+private func isValidDate(_ value: String) -> Bool {
817+ let formatter = DateFormatter()
818+ formatter.locale = Locale(identifier: "en_US_POSIX")
819+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
820+ formatter.dateFormat = "u-MM-dd"
821+ formatter.isLenient = false
822+ return formatter.date(from: String(value.prefix(10))) != nil
823+}
824+
816825 func newJSONDecoder() -> JSONDecoder {
817826 let decoder = JSONDecoder()
818827 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
819828 let container = try decoder.singleValueContainer()
820829 let dateStr = try container.decode(String.self).uppercased()
830+ guard isValidDate(dateStr) else {
831+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
832+ }
821833
822834 let formatter = DateFormatter()
823835 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/734ad.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -395,11 +395,23 @@ enum Status: String, Codable {
395395
396396 // MARK: - Helper functions for creating encoders and decoders
397397
398+private func isValidDate(_ value: String) -> Bool {
399+ let formatter = DateFormatter()
400+ formatter.locale = Locale(identifier: "en_US_POSIX")
401+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
402+ formatter.dateFormat = "u-MM-dd"
403+ formatter.isLenient = false
404+ return formatter.date(from: String(value.prefix(10))) != nil
405+}
406+
398407 func newJSONDecoder() -> JSONDecoder {
399408 let decoder = JSONDecoder()
400409 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
401410 let container = try decoder.singleValueContainer()
402411 let dateStr = try container.decode(String.self).uppercased()
412+ guard isValidDate(dateStr) else {
413+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
414+ }
403415
404416 let formatter = DateFormatter()
405417 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/77392.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -132,11 +132,23 @@ extension Array where Element == TopLevel.Element {
132132
133133 // MARK: - Helper functions for creating encoders and decoders
134134
135+private func isValidDate(_ value: String) -> Bool {
136+ let formatter = DateFormatter()
137+ formatter.locale = Locale(identifier: "en_US_POSIX")
138+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
139+ formatter.dateFormat = "u-MM-dd"
140+ formatter.isLenient = false
141+ return formatter.date(from: String(value.prefix(10))) != nil
142+}
143+
135144 func newJSONDecoder() -> JSONDecoder {
136145 let decoder = JSONDecoder()
137146 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
138147 let container = try decoder.singleValueContainer()
139148 let dateStr = try container.decode(String.self).uppercased()
149+ guard isValidDate(dateStr) else {
150+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
151+ }
140152
141153 let formatter = DateFormatter()
142154 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/7f568.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -206,11 +206,23 @@ extension Array where Element == TopLevel.Element {
206206
207207 // MARK: - Helper functions for creating encoders and decoders
208208
209+private func isValidDate(_ value: String) -> Bool {
210+ let formatter = DateFormatter()
211+ formatter.locale = Locale(identifier: "en_US_POSIX")
212+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
213+ formatter.dateFormat = "u-MM-dd"
214+ formatter.isLenient = false
215+ return formatter.date(from: String(value.prefix(10))) != nil
216+}
217+
209218 func newJSONDecoder() -> JSONDecoder {
210219 let decoder = JSONDecoder()
211220 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
212221 let container = try decoder.singleValueContainer()
213222 let dateStr = try container.decode(String.self).uppercased()
223+ guard isValidDate(dateStr) else {
224+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
225+ }
214226
215227 let formatter = DateFormatter()
216228 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/80aff.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -186,11 +186,23 @@ extension Result {
186186
187187 // MARK: - Helper functions for creating encoders and decoders
188188
189+private func isValidDate(_ value: String) -> Bool {
190+ let formatter = DateFormatter()
191+ formatter.locale = Locale(identifier: "en_US_POSIX")
192+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
193+ formatter.dateFormat = "u-MM-dd"
194+ formatter.isLenient = false
195+ return formatter.date(from: String(value.prefix(10))) != nil
196+}
197+
189198 func newJSONDecoder() -> JSONDecoder {
190199 let decoder = JSONDecoder()
191200 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
192201 let container = try decoder.singleValueContainer()
193202 let dateStr = try container.decode(String.self).uppercased()
203+ guard isValidDate(dateStr) else {
204+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
205+ }
194206
195207 let formatter = DateFormatter()
196208 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/88130.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -807,11 +807,23 @@ extension Wind {
807807
808808 // MARK: - Helper functions for creating encoders and decoders
809809
810+private func isValidDate(_ value: String) -> Bool {
811+ let formatter = DateFormatter()
812+ formatter.locale = Locale(identifier: "en_US_POSIX")
813+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
814+ formatter.dateFormat = "u-MM-dd"
815+ formatter.isLenient = false
816+ return formatter.date(from: String(value.prefix(10))) != nil
817+}
818+
810819 func newJSONDecoder() -> JSONDecoder {
811820 let decoder = JSONDecoder()
812821 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
813822 let container = try decoder.singleValueContainer()
814823 let dateStr = try container.decode(String.self).uppercased()
824+ guard isValidDate(dateStr) else {
825+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
826+ }
815827
816828 let formatter = DateFormatter()
817829 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/9929c.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -807,11 +807,23 @@ extension Wind {
807807
808808 // MARK: - Helper functions for creating encoders and decoders
809809
810+private func isValidDate(_ value: String) -> Bool {
811+ let formatter = DateFormatter()
812+ formatter.locale = Locale(identifier: "en_US_POSIX")
813+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
814+ formatter.dateFormat = "u-MM-dd"
815+ formatter.isLenient = false
816+ return formatter.date(from: String(value.prefix(10))) != nil
817+}
818+
810819 func newJSONDecoder() -> JSONDecoder {
811820 let decoder = JSONDecoder()
812821 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
813822 let container = try decoder.singleValueContainer()
814823 let dateStr = try container.decode(String.self).uppercased()
824+ guard isValidDate(dateStr) else {
825+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
826+ }
815827
816828 let formatter = DateFormatter()
817829 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/9ac3b.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -212,11 +212,23 @@ enum Title: String, Codable {
212212
213213 // MARK: - Helper functions for creating encoders and decoders
214214
215+private func isValidDate(_ value: String) -> Bool {
216+ let formatter = DateFormatter()
217+ formatter.locale = Locale(identifier: "en_US_POSIX")
218+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
219+ formatter.dateFormat = "u-MM-dd"
220+ formatter.isLenient = false
221+ return formatter.date(from: String(value.prefix(10))) != nil
222+}
223+
215224 func newJSONDecoder() -> JSONDecoder {
216225 let decoder = JSONDecoder()
217226 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
218227 let container = try decoder.singleValueContainer()
219228 let dateStr = try container.decode(String.self).uppercased()
229+ guard isValidDate(dateStr) else {
230+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
231+ }
220232
221233 let formatter = DateFormatter()
222234 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/a0496.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -193,11 +193,23 @@ extension Errors {
193193
194194 // MARK: - Helper functions for creating encoders and decoders
195195
196+private func isValidDate(_ value: String) -> Bool {
197+ let formatter = DateFormatter()
198+ formatter.locale = Locale(identifier: "en_US_POSIX")
199+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
200+ formatter.dateFormat = "u-MM-dd"
201+ formatter.isLenient = false
202+ return formatter.date(from: String(value.prefix(10))) != nil
203+}
204+
196205 func newJSONDecoder() -> JSONDecoder {
197206 let decoder = JSONDecoder()
198207 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
199208 let container = try decoder.singleValueContainer()
200209 let dateStr = try container.decode(String.self).uppercased()
210+ guard isValidDate(dateStr) else {
211+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
212+ }
201213
202214 let formatter = DateFormatter()
203215 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/a1eca.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -807,11 +807,23 @@ extension Wind {
807807
808808 // MARK: - Helper functions for creating encoders and decoders
809809
810+private func isValidDate(_ value: String) -> Bool {
811+ let formatter = DateFormatter()
812+ formatter.locale = Locale(identifier: "en_US_POSIX")
813+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
814+ formatter.dateFormat = "u-MM-dd"
815+ formatter.isLenient = false
816+ return formatter.date(from: String(value.prefix(10))) != nil
817+}
818+
810819 func newJSONDecoder() -> JSONDecoder {
811820 let decoder = JSONDecoder()
812821 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
813822 let container = try decoder.singleValueContainer()
814823 let dateStr = try container.decode(String.self).uppercased()
824+ guard isValidDate(dateStr) else {
825+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
826+ }
815827
816828 let formatter = DateFormatter()
817829 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/b4865.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -183,11 +183,23 @@ extension Array where Element == TopLevel.Element {
183183
184184 // MARK: - Helper functions for creating encoders and decoders
185185
186+private func isValidDate(_ value: String) -> Bool {
187+ let formatter = DateFormatter()
188+ formatter.locale = Locale(identifier: "en_US_POSIX")
189+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
190+ formatter.dateFormat = "u-MM-dd"
191+ formatter.isLenient = false
192+ return formatter.date(from: String(value.prefix(10))) != nil
193+}
194+
186195 func newJSONDecoder() -> JSONDecoder {
187196 let decoder = JSONDecoder()
188197 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
189198 let container = try decoder.singleValueContainer()
190199 let dateStr = try container.decode(String.self).uppercased()
200+ guard isValidDate(dateStr) else {
201+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
202+ }
191203
192204 let formatter = DateFormatter()
193205 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/cf0d8.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -807,11 +807,23 @@ extension Wind {
807807
808808 // MARK: - Helper functions for creating encoders and decoders
809809
810+private func isValidDate(_ value: String) -> Bool {
811+ let formatter = DateFormatter()
812+ formatter.locale = Locale(identifier: "en_US_POSIX")
813+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
814+ formatter.dateFormat = "u-MM-dd"
815+ formatter.isLenient = false
816+ return formatter.date(from: String(value.prefix(10))) != nil
817+}
818+
810819 func newJSONDecoder() -> JSONDecoder {
811820 let decoder = JSONDecoder()
812821 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
813822 let container = try decoder.singleValueContainer()
814823 let dateStr = try container.decode(String.self).uppercased()
824+ guard isValidDate(dateStr) else {
825+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
826+ }
815827
816828 let formatter = DateFormatter()
817829 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/d23d5.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -182,11 +182,23 @@ extension Result {
182182
183183 // MARK: - Helper functions for creating encoders and decoders
184184
185+private func isValidDate(_ value: String) -> Bool {
186+ let formatter = DateFormatter()
187+ formatter.locale = Locale(identifier: "en_US_POSIX")
188+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
189+ formatter.dateFormat = "u-MM-dd"
190+ formatter.isLenient = false
191+ return formatter.date(from: String(value.prefix(10))) != nil
192+}
193+
185194 func newJSONDecoder() -> JSONDecoder {
186195 let decoder = JSONDecoder()
187196 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
188197 let container = try decoder.singleValueContainer()
189198 let dateStr = try container.decode(String.self).uppercased()
199+ guard isValidDate(dateStr) else {
200+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
201+ }
190202
191203 let formatter = DateFormatter()
192204 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/dbfb3.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -812,11 +812,23 @@ extension Wind {
812812
813813 // MARK: - Helper functions for creating encoders and decoders
814814
815+private func isValidDate(_ value: String) -> Bool {
816+ let formatter = DateFormatter()
817+ formatter.locale = Locale(identifier: "en_US_POSIX")
818+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
819+ formatter.dateFormat = "u-MM-dd"
820+ formatter.isLenient = false
821+ return formatter.date(from: String(value.prefix(10))) != nil
822+}
823+
815824 func newJSONDecoder() -> JSONDecoder {
816825 let decoder = JSONDecoder()
817826 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
818827 let container = try decoder.singleValueContainer()
819828 let dateStr = try container.decode(String.self).uppercased()
829+ guard isValidDate(dateStr) else {
830+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
831+ }
820832
821833 let formatter = DateFormatter()
822834 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/df957.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -807,11 +807,23 @@ extension Wind {
807807
808808 // MARK: - Helper functions for creating encoders and decoders
809809
810+private func isValidDate(_ value: String) -> Bool {
811+ let formatter = DateFormatter()
812+ formatter.locale = Locale(identifier: "en_US_POSIX")
813+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
814+ formatter.dateFormat = "u-MM-dd"
815+ formatter.isLenient = false
816+ return formatter.date(from: String(value.prefix(10))) != nil
817+}
818+
810819 func newJSONDecoder() -> JSONDecoder {
811820 let decoder = JSONDecoder()
812821 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
813822 let container = try decoder.singleValueContainer()
814823 let dateStr = try container.decode(String.self).uppercased()
824+ guard isValidDate(dateStr) else {
825+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
826+ }
815827
816828 let formatter = DateFormatter()
817829 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/misc/e2915.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -811,11 +811,23 @@ extension Wind {
811811
812812 // MARK: - Helper functions for creating encoders and decoders
813813
814+private func isValidDate(_ value: String) -> Bool {
815+ let formatter = DateFormatter()
816+ formatter.locale = Locale(identifier: "en_US_POSIX")
817+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
818+ formatter.dateFormat = "u-MM-dd"
819+ formatter.isLenient = false
820+ return formatter.date(from: String(value.prefix(10))) != nil
821+}
822+
814823 func newJSONDecoder() -> JSONDecoder {
815824 let decoder = JSONDecoder()
816825 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
817826 let container = try decoder.singleValueContainer()
818827 let dateStr = try container.decode(String.self).uppercased()
828+ guard isValidDate(dateStr) else {
829+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
830+ }
819831
820832 let formatter = DateFormatter()
821833 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/priority/bug2590.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -103,11 +103,23 @@ extension Invoice {
103103
104104 // MARK: - Helper functions for creating encoders and decoders
105105
106+private func isValidDate(_ value: String) -> Bool {
107+ let formatter = DateFormatter()
108+ formatter.locale = Locale(identifier: "en_US_POSIX")
109+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
110+ formatter.dateFormat = "u-MM-dd"
111+ formatter.isLenient = false
112+ return formatter.date(from: String(value.prefix(10))) != nil
113+}
114+
106115 func newJSONDecoder() -> JSONDecoder {
107116 let decoder = JSONDecoder()
108117 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
109118 let container = try decoder.singleValueContainer()
110119 let dateStr = try container.decode(String.self).uppercased()
120+ guard isValidDate(dateStr) else {
121+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
122+ }
111123
112124 let formatter = DateFormatter()
113125 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/priority/bug2663.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -59,11 +59,23 @@ extension TopLevel {
5959
6060 // MARK: - Helper functions for creating encoders and decoders
6161
62+private func isValidDate(_ value: String) -> Bool {
63+ let formatter = DateFormatter()
64+ formatter.locale = Locale(identifier: "en_US_POSIX")
65+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
66+ formatter.dateFormat = "u-MM-dd"
67+ formatter.isLenient = false
68+ return formatter.date(from: String(value.prefix(10))) != nil
69+}
70+
6271 func newJSONDecoder() -> JSONDecoder {
6372 let decoder = JSONDecoder()
6473 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
6574 let container = try decoder.singleValueContainer()
6675 let dateStr = try container.decode(String.self).uppercased()
76+ guard isValidDate(dateStr) else {
77+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
78+ }
6779
6880 let formatter = DateFormatter()
6981 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/priority/keywords.json

4 generated files · +48 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -17480,11 +17480,23 @@ extension Yield {
1748017480
1748117481 // MARK: - Helper functions for creating encoders and decoders
1748217482
17483+private func isValidDate(_ value: String) -> Bool {
17484+ let formatter = DateFormatter()
17485+ formatter.locale = Locale(identifier: "en_US_POSIX")
17486+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
17487+ formatter.dateFormat = "u-MM-dd"
17488+ formatter.isLenient = false
17489+ return formatter.date(from: String(value.prefix(10))) != nil
17490+}
17491+
1748317492 func newJSONDecoder() -> JSONDecoder {
1748417493 let decoder = JSONDecoder()
1748517494 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
1748617495 let container = try decoder.singleValueContainer()
1748717496 let dateStr = try container.decode(String.self).uppercased()
17497+ guard isValidDate(dateStr) else {
17498+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
17499+ }
1748817500
1748917501 let formatter = DateFormatter()
1749017502 formatter.calendar = Calendar(identifier: .iso8601)
Mswiftobjective-c-support-true__struct-or-class-class--f14372afa3e4 / quicktype.swift+12 −0
@@ -19663,11 +19663,23 @@ extension Yield {
1966319663
1966419664 // MARK: - Helper functions for creating encoders and decoders
1966519665
19666+private func isValidDate(_ value: String) -> Bool {
19667+ let formatter = DateFormatter()
19668+ formatter.locale = Locale(identifier: "en_US_POSIX")
19669+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
19670+ formatter.dateFormat = "u-MM-dd"
19671+ formatter.isLenient = false
19672+ return formatter.date(from: String(value.prefix(10))) != nil
19673+}
19674+
1966619675 func newJSONDecoder() -> JSONDecoder {
1966719676 let decoder = JSONDecoder()
1966819677 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
1966919678 let container = try decoder.singleValueContainer()
1967019679 let dateStr = try container.decode(String.self).uppercased()
19680+ guard isValidDate(dateStr) else {
19681+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
19682+ }
1967119683
1967219684 let formatter = DateFormatter()
1967319685 formatter.calendar = Calendar(identifier: .iso8601)
Mswiftprotocol-equatable--bd9068f466c1 / quicktype.swift+12 −0
@@ -19664,11 +19664,23 @@ extension Yield {
1966419664
1966519665 // MARK: - Helper functions for creating encoders and decoders
1966619666
19667+private func isValidDate(_ value: String) -> Bool {
19668+ let formatter = DateFormatter()
19669+ formatter.locale = Locale(identifier: "en_US_POSIX")
19670+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
19671+ formatter.dateFormat = "u-MM-dd"
19672+ formatter.isLenient = false
19673+ return formatter.date(from: String(value.prefix(10))) != nil
19674+}
19675+
1966719676 func newJSONDecoder() -> JSONDecoder {
1966819677 let decoder = JSONDecoder()
1966919678 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
1967019679 let container = try decoder.singleValueContainer()
1967119680 let dateStr = try container.decode(String.self).uppercased()
19681+ guard isValidDate(dateStr) else {
19682+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
19683+ }
1967219684
1967319685 let formatter = DateFormatter()
1967419686 formatter.calendar = Calendar(identifier: .iso8601)
Mswiftsendable-true--1c3982c78639 / quicktype.swift+12 −0
@@ -17480,11 +17480,23 @@ extension Yield {
1748017480
1748117481 // MARK: - Helper functions for creating encoders and decoders
1748217482
17483+private func isValidDate(_ value: String) -> Bool {
17484+ let formatter = DateFormatter()
17485+ formatter.locale = Locale(identifier: "en_US_POSIX")
17486+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
17487+ formatter.dateFormat = "u-MM-dd"
17488+ formatter.isLenient = false
17489+ return formatter.date(from: String(value.prefix(10))) != nil
17490+}
17491+
1748317492 func newJSONDecoder() -> JSONDecoder {
1748417493 let decoder = JSONDecoder()
1748517494 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
1748617495 let container = try decoder.singleValueContainer()
1748717496 let dateStr = try container.decode(String.self).uppercased()
17497+ guard isValidDate(dateStr) else {
17498+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
17499+ }
1748817500
1748917501 let formatter = DateFormatter()
1749017502 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/samples/github-events.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -1659,11 +1659,23 @@ extension Array where Element == TopLevel.Element {
16591659
16601660 // MARK: - Helper functions for creating encoders and decoders
16611661
1662+private func isValidDate(_ value: String) -> Bool {
1663+ let formatter = DateFormatter()
1664+ formatter.locale = Locale(identifier: "en_US_POSIX")
1665+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
1666+ formatter.dateFormat = "u-MM-dd"
1667+ formatter.isLenient = false
1668+ return formatter.date(from: String(value.prefix(10))) != nil
1669+}
1670+
16621671 func newJSONDecoder() -> JSONDecoder {
16631672 let decoder = JSONDecoder()
16641673 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
16651674 let container = try decoder.singleValueContainer()
16661675 let dateStr = try container.decode(String.self).uppercased()
1676+ guard isValidDate(dateStr) else {
1677+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
1678+ }
16671679
16681680 let formatter = DateFormatter()
16691681 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/json/samples/null-safe.json

1 generated file · +12 −0
Mswiftdefault / quicktype.swift+12 −0
@@ -159,11 +159,23 @@ extension Address {
159159
160160 // MARK: - Helper functions for creating encoders and decoders
161161
162+private func isValidDate(_ value: String) -> Bool {
163+ let formatter = DateFormatter()
164+ formatter.locale = Locale(identifier: "en_US_POSIX")
165+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
166+ formatter.dateFormat = "u-MM-dd"
167+ formatter.isLenient = false
168+ return formatter.date(from: String(value.prefix(10))) != nil
169+}
170+
162171 func newJSONDecoder() -> JSONDecoder {
163172 let decoder = JSONDecoder()
164173 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
165174 let container = try decoder.singleValueContainer()
166175 let dateStr = try container.decode(String.self).uppercased()
176+ guard isValidDate(dateStr) else {
177+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
178+ }
167179
168180 let formatter = DateFormatter()
169181 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/schema/date-time-or-string.schema

1 generated file · +12 −0
Mschema-swiftdefault / quicktype.swift+12 −0
@@ -87,11 +87,23 @@ enum BarEnum: String, Codable {
8787
8888 // MARK: - Helper functions for creating encoders and decoders
8989
90+private func isValidDate(_ value: String) -> Bool {
91+ let formatter = DateFormatter()
92+ formatter.locale = Locale(identifier: "en_US_POSIX")
93+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
94+ formatter.dateFormat = "u-MM-dd"
95+ formatter.isLenient = false
96+ return formatter.date(from: String(value.prefix(10))) != nil
97+}
98+
9099 func newJSONDecoder() -> JSONDecoder {
91100 let decoder = JSONDecoder()
92101 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
93102 let container = try decoder.singleValueContainer()
94103 let dateStr = try container.decode(String.self).uppercased()
104+ guard isValidDate(dateStr) else {
105+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
106+ }
95107
96108 let formatter = DateFormatter()
97109 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/schema/date-time.schema

1 generated file · +12 −0
Mschema-swiftdefault / quicktype.swift+12 −0
@@ -248,11 +248,23 @@ extension OffsetTime {
248248
249249 // MARK: - Helper functions for creating encoders and decoders
250250
251+private func isValidDate(_ value: String) -> Bool {
252+ let formatter = DateFormatter()
253+ formatter.locale = Locale(identifier: "en_US_POSIX")
254+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
255+ formatter.dateFormat = "u-MM-dd"
256+ formatter.isLenient = false
257+ return formatter.date(from: String(value.prefix(10))) != nil
258+}
259+
251260 func newJSONDecoder() -> JSONDecoder {
252261 let decoder = JSONDecoder()
253262 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
254263 let container = try decoder.singleValueContainer()
255264 let dateStr = try container.decode(String.self).uppercased()
265+ guard isValidDate(dateStr) else {
266+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
267+ }
256268
257269 let formatter = DateFormatter()
258270 formatter.calendar = Calendar(identifier: .iso8601)
Test case

test/inputs/schema/optional-date-time.schema

1 generated file · +12 −0
Mschema-swiftdefault / quicktype.swift+12 −0
@@ -71,11 +71,23 @@ extension TopLevel {
7171
7272 // MARK: - Helper functions for creating encoders and decoders
7373
74+private func isValidDate(_ value: String) -> Bool {
75+ let formatter = DateFormatter()
76+ formatter.locale = Locale(identifier: "en_US_POSIX")
77+ formatter.timeZone = TimeZone(secondsFromGMT: 0)
78+ formatter.dateFormat = "u-MM-dd"
79+ formatter.isLenient = false
80+ return formatter.date(from: String(value.prefix(10))) != nil
81+}
82+
7483 func newJSONDecoder() -> JSONDecoder {
7584 let decoder = JSONDecoder()
7685 decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
7786 let container = try decoder.singleValueContainer()
7887 let dateStr = try container.decode(String.self).uppercased()
88+ guard isValidDate(dateStr) else {
89+ throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
90+ }
7991
8092 let formatter = DateFormatter()
8193 formatter.calendar = Calendar(identifier: .iso8601)
No generated files match these filters.