* feat(core-flows,types,utils,medusa): Update existing line items when adding the same variant to cart
* chore: split steps into 2 for add-to-cart
* chore: split steps into 2 for add-to-cart
* chore: iterate safely
* chore: parallelize upsert
**What**
- remove medusa-core-utils
- dispatch the utils where they belongs
- update usage
**NOTE**
I have been wondering if the graceful class should go into the utils package or medusa package, I ve put it in the medusa package as it seems to be the best place I can see for now and is tight to the server as well. Also, I wanted to avoid the utils package to depends on http and net dependencies, happy to change that if you feel like it
what:
The true source of promotions applied are present in the adjustments, previously we had links as the source of truth, but some issues popped up when you're trying to delete a line item as it was holding onto stale promotion data.
For this to truly work properly in the current form, we would have to pass data from the deleted line item step to the refresh promotion step and mutate the links twice to get the correct promotions for a cart. Additionally, the final list of codes to apply, comes from computeAction, because some previously applied codes could no longer be valid. The combination of passing codes from adjustments to computeActions and the codes returned from the computedActions are how we can accurately calculate the right promotions to apply.
With this change, the promotions step always look at the latest line item adjustments of the cart, pass them to compute actions, pick the correct codes to apply from the compute actions and then mutate the links based on the final result. This way, we perform the correct calculations for a cart and have promotion links that are correct.
* chore: Clean up authentication middlewares
* chore: Rename AuthUser to AuthIdentity
* feat: Define link between user, customer, and auth identity
* feat: Use links for auth, update auth context content
* fix: Adjust user create command with new auth setup
* fix: Make auth login more dynamic, review fixes
* fix: Change test assertions for created by
* chore: pick the default store region
* chore: fix test
* chore: remove from defaults workflow and move to seeds
* chore: undo payment provider change
* chore: rearrange conditionals
* feat: initial impl. of Unfulfilled section and create flow
* feat: create fulfillment
* feat: order <> fulfillment link, fulfillment section
* feat: accept order_id when creating fulfillment
* feat: finish create and cancel
* fix: integration test
* refactor: real Order<>Fulfillment link instead readonly, add link step to the workflow
* fix: revert `order_id` definitions
* chore: add changeset
* fix: build
* fix: address comments
* fix: fetch inventory and location levels for fulfilled variant
* fix: loading inventory details
* add isList to order fulfillment link
* fix: duplicate declaration
* fix: type
* refactor: link orders step, fix client
* fix: move translations to the new file
* fix: pass order id in test
---------
Co-authored-by: olivermrbl <oliver@mrbltech.com>
**what**
- Create return workflow partial implementation
- Update some order domain types
- create order fulfillment link
**NOTE**
this PR is partially done but can still be merged as is, it will require some discussions around the flow and some unknowns or uncertainty in regards to some data and some behaviour
**What**
Add pub key + sales channel middlewares to the store carts API
- Assign sales channel associated with pub key, if sales channel is not passed in request
- Throw if pub key has multiple associated sales channels
- Throw if sales channel ID in payload is not associated with publishable API key in header