At first I thought this project was actually going to be relatively simple to implement, but it actually ended up being quite challenging and fun to do. The difficulty here was actually in the discovery of inference methods much more than the code implementation of them.
This was my first time learing and applying set theory, although it wasn't actually until after I had started work on the inference logic that I realized that. Speaking of: I've also tried to document the theory/proof behind what my code does on a page in that repo. Hopefully it's as interesting to read as it was to write.
I've been invited to help maintain this project, along with a handful of some other great developers: https://github.com/orgs/color-js/people. Most of my work here is on writing and updating typings for TypeScript support.