Repository navigation
Fix data-URL strings decoding as binary values - #295
EhsanAzish80 wants to merge 2 commits into
Conversation
|
This fixes the accidental data-URL coercion, but it also makes the public
case let .data(mimeType, value):
try container.encode(value.dataURLEncoded(mimeType: mimeType))while this PR now decodes every JSON string as let original = Value.data(mimeType: "application/octet-stream", Data([0, 1, 2]))
let decoded = try JSONDecoder().decode(Value.self, from: JSONEncoder().encode(original))changes type from If generic JSON strings must never be auto-promoted to binary (which makes sense), could AI-assisted review; checked the current PR head and Value Codable paths before posting. |
|
I kept JSON strings as strings and documented that Value.data is not lossless through generic JSON decoding. The new test shows how to recover the bytes with Data.parseDataURL. All 554 Swift tests passed locally. AI helped write the test; I ran it. Could a maintainer review this choice and approve CI? |
Fixes #277. JSON strings that look like data URLs now stay strings, so tool text is preserved when it passes through Value. This is an independently tested alternative to #278.
Tests: 554 Swift tests passed locally. AI was used to write the tests. I ran them locally.