Potential mistake prevents model data modification in pre-save hooks
Please consider this piece of model.js source:
https://github.com/hexojs/warehouse/blob/067dd5395d6eff3053606fdd8794c5c90d96b022/lib/model.js#L161-L164
It can be seen, that pre save hook is received data variable and receives (potentially modified) data in then() (at the line 161), but ignores this information and inserts previously defined result variable instead at the line 163.
It effectively results into lack of ability to perform any data modifications in pre save hooks.
Same approach is used for updating and replacement of the model data.
Since logic of this piece of code remains untouched from the very beginning - I'm not sure if it is intentional (but rather confusing) decision or a bug that hides for a long time.
I have searched the source code of Hexo, there are several pre-save or pre-remove hooks, but none of them modify the data. I'd rather believe that such behavior is intentional
To make it less confusing, maybe we could Object.freeze the data before exec Hooks