**What**
Update the `MedusaService` class, factory and types to remove the concept of main modules. The idea being that all method will be explicitly named and suffixes to represent the object you are trying to manipulate.
This pr also includes various fixes in different modules
Co-authored-by: Stevche Radevski <4820812+sradevski@users.noreply.github.com>
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
what:
Multiple active sessions are used for split payments. We don't currently support split payments. Until we have that implemented, this change is to ensure that whenever we create a new payment session, we delete an existing session if present.
RESOLVES CORE-2284
* chore: ability to group events on redis event bus
* chore: fix tests
* Update packages/modules/event-bus-redis/src/services/event-bus-redis.ts
Co-authored-by: Adrien de Peretti <adrien.deperetti@gmail.com>
* chore: change shape of input and body data
* chore: fix builds
* chore: address comments
* chore: fix unit test
---------
Co-authored-by: Adrien de Peretti <adrien.deperetti@gmail.com>
what:
- santizes inputs to prevent reserved_quantity from being updated directly
- inventory items create api can create location levels
- add validation to update quantity of reservation items
- general cleanup
RESOLVES CORE-2254
* chore: Move publishable api key tests to HTTP
* chore: Move store tests to HTTP folder
* fix: Add tests for store products, fix several bugs around publishable keys
what:
When creating a variant, we can now create inventory as a part of the product and variants create endpoint.
This applies only to variants where `manage_inventory=true`. 2 cases present itself:
1. When inventory_items are present
- Link an inventory item with required_quantity to the variant
- the inventory item already needs to be present
2. When inventory_items are not present
- A default inventory item will be created
- links the created item to the variant with a default required_quantity
RESOLVES CORE-2220
what:
- adds variant inventory link management endpoints:
```
Link inventory item to variant
POST /products/:id/variants/:vid/inventory-items
Update variant's inventory item link
POST /products/:id/variants/:vid/inventory-items/:iid
Unlink variant's inventory item
DELETE /products/:id/variants/:vid/inventory-items/:iid
```
- a batch endpoint that does the above 3 across variants
```
POST /products/:id/variants/inventory-items
```
what:
- when inventory_quantity is requested through the API, we calculate the inventory based on sales channels + stock locations and return the total available inventory.
A variant can have multiple inventory items. As an example:
Table: (variant)
- 4 (required_quantity via link) x legs (inventory item)
- 2 x table top
Only if all individual inventory items of a variant are available, do we mark the variant as available as a single unit.
RESOLVES CORE-2187
* 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
* feat: Add email pass authentication provider package
* feat: Revamp auth module and remove concept of scope
* feat: Revamp the auth module to be more standardized in how providers are loaded
* feat: Switch from scope to actor type for authentication
* feat: Add support for per-actor auth methods
* feat: Add emailpass auth provider by default
* fix: Add back app_metadata in auth module
* 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
* feat: Add a simple configurable notifications subscriber that is configurable
* Proposal on awaiting all subscribers to run
* fix: Clean up wait subscribers util and notifications test
---------
Co-authored-by: adrien2p <adrien.deperetti@gmail.com>
* chore: Remove unused validations and utilities
* chore: Remove all resources that are not being loaded
* chore: Remove unused dependencies, typeorm related code and fix tests
* chore: Use createAdminUser in all module tests
**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