**What**
Move to transformQuery which adds a default ordering and also allows to order the product list from the store API
**How**
Among other things, fix the product repo to allow ordering by either a key from the product or a key from a relation
FIXES CORE-911
FIXES CORE-901
**what**
The goal of that PR is to first refactor the payment provider and payment plugin to support the new API that removes the data mutation from within the plugin to be done by the core instead. In any case, this pr does not include the steps of the deeper refactoring. The last part will come in later pr.
**How**
- The payment plugin is now capable to handle both the deprecated and new API and the plugin works the same as it use to works.
- The mutation made by the plugin have been moved into the core as well as the subscriber
- The tests have been updated to reflect the changed
- Remove all new methods introduced by the payment collections
- Mutualise types
- Update provider and payment collection services
- cleanup around all those refactoring including cleanup of the payment collection
- refactor stripe payment plugin
FIXES CORE-887
**What**
- add error handling when loading project config
**How**
- Add error parameter to get-medusa-config result if an error was thrown (previously we returned an empty config)
- Discussion:
A different, but equally valid approach could be just throwing the error rather than creating an error parameter. This causes a more ugly output without warnings and changes the api a bit but it would force error handling. wdyt?
**Why**
- cli would fail with database error `databaseMissingDriverError` if config was invalid, ex. missing a comma
### example (missing `,` in config)
**old output**
```
Successfully compiled 2 files with Babel (143ms).
[medusa-config] ⚠️ redis_url not found. A fake redis instance will be used.
[medusa-config] ⚠️ database_type not found. fallback to default sqlite.
info: Using flag MEDUSA_FF_ORDER_EDITING from environment with value true
info: Using flag MEDUSA_FF_SALES_CHANNELS from environment with value true
info: Using flag MEDUSA_FF_TAX_INCLUSIVE_PRICING from environment with value true
info: Using fake Redis
✔ Models initialized – 13ms
✔ Plugin models initialized – 0ms
✔ Repositories initialized – 17ms
⠋ Initializing databaseMissingDriverError: Wrong driver: "undefined" given. Supported drivers are: "aurora-data-api", "aurora-data-api-pg", "better-sqlite3", "capacitor", "cockroachdb", "cordova", "expo", "mariadb", "mongodb", "mssql", "mysql", "nativescript", "oracle", "postgres", "react-native", "sap", "sqlite", "sqljs".
```
**new output**
```
Successfully compiled 2 files with Babel (185ms).
error: Error in loading config: Unexpected identifier
error: /Users/phko/projects/community/my-medusa-store/medusa-config.js:129
plugins,
^^^^^^^
SyntaxError: Unexpected identifier
at compileFunction (<anonymous>)
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1033:15)
at Module._compile (node:internal/modules/cjs/loader:1069:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at getConfigFile (/Users/phko/projects/community/my-medusa-store/node_modules/medusa-core-utils/dist/get-config-file.js:26:20)
```
**What**
Move the usage of the formatException to the errorHandler level in order to not have to try catch here and there to apply it. Also make our error handling uniformed and avoid forgetting to apply it.
FIXES CORE-721
**What**
Improve transform query middleware management of the allowed fields and relations in order to improve security upon access data
FIXES CORE-651
**What**
- Implements the admin/store retrieval end point
- Service implementation of the retrieve method
- Service implementation of the computeLineItems method which aggregates the right line item based on the changes that are made
- client
- medusa-js api
- medusa-react queries hooks
**Tests**
- Unit tests of the retrieval end points
- Unit tests of the service retrieve method and computeLineItems
- Integration tests for admin/store
- client
- medusa-js tests
- medusa-react hooks tests
FIXES CORE-492
* add feature flag for tax inclusive pricing
* update db model for TIP
* add migration
* set featureflag column decorators
* remove unused prop
* update tests to reflect feature_flags as any array
* fix types
* reference key from featureFlag file
* use feature flag key in models
* fix copy paste mistake
* unify spelling
* Create gorgeous-experts-guess.md
* feat(medusa): create/update endpoints of currency/region/price-lists/shipping-options should allow to pass includes_tax
* test(integration): continue to add some integration test
* test(integration): continue to add some integration test
* test(unit): Fix region service tests
* fix(medusa): API unit tests flags management
* feat(medusa): Minor cleanup
* style(medusa): Fix typo
* fix(medusa): rebase
* feat(medusa): Replace old tag with the new one
* feat(medusa): revert flag
* feat(medusa): Cleanup
* feat(medusa): feedback
* feat(medusa): Rename currency retrieve method
* test(medudsa): fix unit tests
* chore(medusa): fix oas
* feat(medusa): ShippingMethod should include tax setting from parent option (#2021)
* feat(medusa): Shipping method should includes tax from parent options
* feat(medusa): Condition the includes tax flag to the availability of the feature and add some other tests
* test(integration): Move cart/order ff test in separate files
* fix: snapshots folder
* fix(integration): snapshots
* Create calm-baboons-sit.md
* test(integration): file naming
Co-authored-by: Carlos R. L. Rodrigues <rodrigolr@gmail.com>
* Feat/tax inclusive pricing extend price selection strategy (#2087)
* initial changes to price selection strategy including unit tests
* typing for tax calculation
* update types and remove region and currency from prices results
* fix casing
* include tax calculation in priceselectionstrategy
* integration tests for tax inclusive pricing price calculations
* fix build
* include tax inclusive considerations when calculating tax fields for variants
* include only "includes_tax" fields from currency and region joins
* test to see errors in pipelines
* conditionally join featureflagged fields
* add "includes_tax" to price list factory
* add tests for tax inclusive price list prices and currency prices
* fix unit tests
* refactor pricing array checks to expect arraycontaining
* undo error handler
* Feat/tax inclusive pricing flag on generated lineitems (#2108)
* include tax inclusive pricing flag on generated lineitems
* initial addition of tax inclusivity for lineitem service
* add generate test to ensure that includes_tax is set when returned from price selection strategy
* add integration test for generating lineitem including tax
* add test for negative tax inclusion
* add tests for mixed pricing
* add negative test for setting tax exclusivity
* restructure the setting of includes_tax on lineitems
* fix: update cwd to be correct in cart test
* feat(medusa): Line item totals calculations (#2123)
* feat(medusa): Update totals and tax calculation way to calculate the totals
* feat(medusa): remove region feetching from decorate total
* feat(medusa): cleanup
* test(medusa): fix tax calculation tests
* comment
* test(integration): cleanup
* test(integration): cleanup
* fix(medusa): return service missing await
* feat(medusa): cleanup
* feat(medusa): cleanup
* test(integration): fix data
* feat(medusa): improve tax calculation readability
* test(medusa): improve tax calculation structure case
Co-authored-by: Sebastian Rindom <skrindom@gmail.com>
* Feat(medusa): tax inclusive pricing in shipping method tax (#2125)
* initial implementation and test
* include tax inclusive calculations for getting shipping options
* remove inaccurate comment
* remove console log
* refactor how prices and taxes are set for shipping methods
* fix integration tests
* remove verbose flag
* fix integration tests
* remove console log
* format util
* use util in price service and tax strategy
* fix faulty integration test
* undo tax calculation strategy changes in favor or Carlos' pr
* undo changes to tax calculation strategy tests
* round tax amount
* feat(medusa): cleanup calculate tax amount utils and its usage (#2136)
* feat(medusa): Refund line totals calculation (#2139)
Rely on the update of the following pr https://github.com/medusajs/medusa/pull/2136
**WIP Missing integration tests**
**What**
Update the totals calculation on the refund line to include the notion of tax inclusive
**Test**
- Update and add new tests around the refund
Fixes CORE-482
* feat(medusa): Tax inclusive discounts calculations (#2137)
**What**
- Calculate line adjustments correctly taking into account the tax inclusivity
- fix totals getLineItemTotals by adjusting the sub total with the original tax amount instead of the tax amount when the unit price includes the taxes
**Tests**
- The tests create a cart with a percentage discount of 15%, the cart includes 2 items mixing the tax inclusive and validate the items on the result cart as well as the totals on each item. I ve based my calculation validation based on what we have done + some articles around discount apply on price without taxes to validate the output.,
FIXES CORE-477
* Chore: shipping methods tax inclusive total (#2130)
* chore: calculate tax inclusive shipping methods
* chore: additional tests and check undefined tax_rate (#2157)
* chore: additional tests and check undefined tax_rate
* fix: naming + correct price type check
* fix: remove price_includes_tax from type
* fix: remove price_includes_tax from type
Co-authored-by: Philip Korsholm <philip.korsholm@hotmail.com>
Co-authored-by: adrien2p <adrien.deperetti@gmail.com>
Co-authored-by: Carlos R. L. Rodrigues <rodrigolr@gmail.com>
Co-authored-by: Philip Korsholm <88927411+pKorsholm@users.noreply.github.com>
Co-authored-by: Sebastian Rindom <skrindom@gmail.com>
Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>
**What**
Support sales channel list in medusa, medusa-js and medusa-react
**How**
By implementing a new endpoint and the associated service method as well as the repository methods.
Medusa-js new list method in the resource
Medusa-react new hook in the queries
**Tests**
Endpoint test
Service test
Integration test
Hook tests
Fixes CORE-280
**What**
- Add `transformQuery` to get endpoints for product, order and cart
- ensure that the default relations (when getting a singular entity) includes sales channels when enabled
- Add `EmptyQueryParams` class in common types to prevent query parameters while using `transformQuery`
- update product-, order- and cartFactory to include sales channels if provided
- remove `packages/medusa/src/controllers/products/admin-list-products.ts`
**Testing**
- expands sales channel for single order
- expands sales channels for orders with expand parameter
- returns single product with sales channel
- expands sales channels for products with expand parameter
- returns cart with sales channel for single cart
Fixes CORE-293
Co-authored-by: Sebastian Rindom <7554214+srindom@users.noreply.github.com>
Co-authored-by: Adrien de Peretti <25098370+adrien2p@users.noreply.github.com>
**What**
- Add `feature_flags` string array to store response
**Why**
- to provide conditional ui in admin corresponding to enabled features
Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
**What**
- added `SalesChannel` entity
- added `SalesChannel` repository
- added `SalesChannel` relations to the order, cart and store entities
- added a migrations file
**How**
- introduced entities and relations under a new feature flag "sales-channels"
Fixes CORE-271
Co-authored-by: Philip Korsholm <88927411+pKorsholm@users.noreply.github.com>
* feat: add feature flag loading in projects
* fix: make feature flag consume itself
* fix: rename container registration to featureFlagRouter
* fix: refactor
* behavioral feature flags
* add environment to server
* limit "useTemplateDb" to non feature flagged migrations
* filter migrations and entities according to those which are enabled in the environment
* run only migrations that are enabled when running 'medusa migrations run'
* add logging to the featureflag loader
* initial implementation of featureFlagEntity
* column descriptors
* initial startServerWithEnv (to be refactored)
* update commands
* final touches
* update loaders to fix unit tests
* enable all batch job tests
* update seed method
* add api test capabilities
* revert batch job test
* revert formatting changes
* pr feedback
* pr feedback
* remove unused imports
* rename feature flag decorators
* pr feedback
Co-authored-by: Sebastian Rindom <skrindom@gmail.com>
* feat(medusa): Support transformQuery middleware
* feat(medusa): Add support for transformBody
* test(medusa): Fix unit tests
* feat(medusa): Cleanup import
* feat(medusa): Update pipe required fields
* feat(medusa): Cleanup
* feat(medusa): Types cleanup
* feat(medusa): Types cleanup
* feat(medusa): Improve global typings and add one more example
* fix(medusa): Wrong wording in the error for prepareListQuery utility
* refactor(medusa): Move some column to a base entity to make it easier to add new models without forgetting some columns
* styles(medusa): Cleanup models
* fix(medusa): typings due to model typings update
* feat(medusa): Cleanup models
* fix(medusa): A model must not return the generateId as part of the entity
* fix(medusa): Plugin integration snapshot
* fix(medusa): Typings from discount-rule-migration scripts
* refactor(medusa): Introduct BaseEntity/SoftDeletableEntity that the entity extends
* styles(medusa): Fix models linting
* test(medusa): Fix integration plugin tests
* feat(medusa): Create generateEntityId standalong function utility and update config to properly supprt ts spec files
* feat(medusa): Update entities to use the new utils to generate and apply the id
* test(medusa): Fix test suits
* feat(medusa): Improve generateEntityId utility
* feat(medusa): Add /admin/products/:id/variants end point
* test(medusa): Fix get-variants test casees
* feat(medusa): Include the config to the ProdutService#retrieveVariants as a method parameter
* feat(medusa): Improve get-variants endpoint
* feat(medusa): Improve get-variants endpoint
* test(medusa): Fix unit tests
* test(medusa): Fix unit tests
* feat(medusa): Improve typings
* feat(medusa): Update according to feedback
* feat(medusa): Update according to feedback
* test(medusa): Fix list-variants tests
* feat(medusa): Getting the variants from the product end point should use the productVariantService
* fix(medusa): list-variants expand possibly undefined
* Fix(medusa): List-variants endpoint
* fix(medusa): Tests suite for list-variant
* test(integration-tests): Fix yarn lock
* test(integration-tests): Fix yarn lock
* fix babel transform-runtime regenerator required for migrations
* add customer group model
* add migration for customer group
* add customer group model export
* add customer group repository
* add customer group service
* add CustomerGroupRepository to "withTransaction" in CustomerGroupService
* remove unnecessary argument to runtime plugin
* service export ordering
* add create customer group endpoint
* add customergroup to route index in admin
* add customer group service
* add customer groups test
* cleanup
* add customers batch initial
* batch creation of customer groups
* integration testing batch creation
* integration tests
* chaining existing customers creation in repo
* remove commented test
* update unit tests to reflect change in idempotent behavior
* ensure that exceptions are expected
* update idempotency behavior
* update formatting
* update format
* Update packages/medusa/src/repositories/customer-group.ts
Co-authored-by: Sebastian Rindom <skrindom@gmail.com>
* pr feedback
* add In import
* add seperate model dto
* add integration test
* error handling in repository
* remove unused import
* jsdoc
* Update packages/medusa/src/api/routes/admin/customer-groups/add-customers-batch.ts
Co-authored-by: Sebastian Rindom <skrindom@gmail.com>
* Update packages/medusa/src/api/routes/admin/customer-groups/add-customers-batch.ts
Co-authored-by: Sebastian Rindom <skrindom@gmail.com>
* pr review comments
* rename variable
* fix: adds atomic phase clean up callback
* fix: call error handler in new transaction block too
* restore
* error handling
* fix: error handler in no isolation case
* add integration test for missing group on update
* final adjustments to test
* fix pr feedback
* cleanup core for pr
* remove console.log
* remove customergroupservice test from customers
* Apply suggestions from code review
Co-authored-by: Sebastian Rindom <skrindom@gmail.com>
* add end bracket to customer tests
* remove comments
* change model decorator
* fix integration test merge
* onDelete cascade instead of cascade:true
* remove verbose flag
* fix: dedupe type
* add save to customer groups
* customer model delete cascade
* add await to asyncronous save operations
Co-authored-by: Sebastian Rindom <skrindom@gmail.com>
* Modifies schema to allow SQLite as a DB driver. SQLite is preinstalled in most OSes allowing for minimal prerequisites in the installation process.
* Removes Redis dependency and replaces "real" redis instance with ioredis-mock this is not feature complete and errors are expected.
* Updates medusa new command to only ask for Postgres credentials if the starter template has database_type === "postgres" in medusa-config.js
* Small improvements to bin resolution
* Improvements to endpoint stability