Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incorrect coercion for alternatives of closed maps with optional keys #1112

Closed
opqdonut opened this issue Oct 11, 2024 · 3 comments
Closed
Labels
question Further information is requested

Comments

@opqdonut
Copy link
Member

Originally reported as metosin/reitit#632. Moving it here because it's a malli bug.

Similar to metosin/reitit#407, except that the maps are closed and contain optional keys. For example,

(malli.core/decode
  [:or
   [:map
    {:closed true}
    [:x {:optional true} int?]]
   [:map
    {:closed true}
    [:y {:optional true} keyword?]]]
  {:y :foo}
  malli.transform/strip-extra-keys-transformer)

should return {:y :foo} but actually returns {}.

@opqdonut
Copy link
Member Author

Previously, #201

@ikitommi
Copy link
Member

ikitommi commented Jan 1, 2025

Is it incorrect or just unfortunate? strip-extra-keys-transformer strips keys not defined in schema and returns the first valid branch. Would the correct behavior be "select a branch with least amount of changes to the original data"?

@ikitommi ikitommi added the question Further information is requested label Jan 1, 2025
@opqdonut
Copy link
Member Author

opqdonut commented Jan 7, 2025

You're right, maybe the behaviour is correct. A :multi might be the right call here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
Status: Done
Development

No branches or pull requests

2 participants