refactor: use opaque type instead of single value value-object #6766
+17
−18
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR introduces a way for single value value-object to avoid creating a new data-structure while retaining the exact same safety guarantees and similar usages.
It leverages opaque type and extension method to maintain the same API.
It allows to skip the codecs
map/contramapAlso, I reduced the scope of others contextual json codecs as we probably don't want this
JsonCodec[DateTime]to be imported somewhere else in the project.