Tal vez sea un error en la secuencia, acabo de abrir un problema allí.
Supongo que la opción raw hace que Sequelize devuelva resultados de consulta simples sin agruparlos (por eso se llama "sin procesar"). Eso significa que si tiene dos registros secundarios para cada registro principal, terminará con N*2 objetos devueltos por Sequelize.
Si desea obtener objetos sin formato en lugar de instancias del modelo Sequelize, simplemente llame a get({ plain: true}) para cada una de las instancias del modelo:
const cart = await Cart.findOne({ ... }) const plainCart = cart.get({ plain: true})