Add support to Interface based model #195
Open
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.
Issue#194
This PR intoduces interfaces to model definitions allowing to work with plain objects instead of class instances.
This approach makes it easier handling changes in the model and make it compatible with libs such as immer.
The idea behind this implementation is to keep classes under the hood to handle model properties, however, only plain objects are exposed by unmarshalling JSON/YAML or by using the SKD builders. To achieve that, lodash lib was used to convert class instances to plain shallow copies of the original class instances and so preserving properties and methods.
No changes in the API were be introduced by this PR.
Old and deprecated dependencies of the project were updated.
Immer dependency is only being consumed by in the unit tests.