**What**
- Fixes wrong payload class for `POST /admin/shipping-profiles`
- Fixes wrong payload class for `POST /admin/shipping-profiles/:id`
- Fixes an issue where updating a shipping profile with products and/or shipping options would fail.
- Fixes an issue where passing `profile_id` to `ShippingOptionService.update()` would not update the shipping profile of the option.
**Testing**
- Adds new `simpleshippingProfileFactory`
- Adds new integration test suite for shipping profiles operations.
Resolves CORE-1065
**What**
- Fixes an issue where query keys weren't invalidated on successful mutations.
**How**
- Update `buildOptions` function to be called per `QueryKey` instead of passing them all as a single query key, resulting in no matches found.
- Fixes imports that aren't compatible with ESM modules.
**What**
- Adds new entity AnalyticsConfig
- Adds new service AnalyticsConfigService
- Adds new repository AnalyticsConfigRepository
- Adds new endpoints to get, create, update, and delete analytics configs
**Why**
As we begin gathering usage insights to help us improve Medusa, we want to give each individual users the ability to control what data they share with us, or not share any data with us at all. The AnalyticsConfig holds information that is used to check if the user wishes for their data to be anonymized or if they have opted out of sharing usage data.
The entire feature can be disabled on a store level by setting the feature flag `MEDUSA_FF_ANALYTICS=false` in their environment variables, the feature is enabled by default.
**Testing**
Adds integration test for each of the new endpoints
Resolves CORE-656, CORE-655, CORE-654
Also resolves CORE-574
**What**
- Adds the use of price selection strategy to the endpoint `GET /admin/variants`
- Updates medusa-js to reflect this change (expanding the parameters).
**Testing**
- Adds a new integration test validating that returned variants are now of type PricedVariant, with the expected fields: original_price, calculated_price, etc.
**Why**
- Our current RMA flows (in our admin dashboard) relied heavily on simply using `order.tax_rate` to calculate variant prices in the different RMA menus. As taxes in Medusa, have become feature complete this approach had become very naive and has several potential issues. Moving the responsibility for calculating the correct prices guarantees that we always show the correct prices to admins.
**What**
- Fixes `GET /products` in both admin and store API so they no longer accept the param `type?: string`, but instead accept `type_id?: string[]`
**Why**
- Filtering by type would never return any products as `ptyp_:id` !== `ProductType`.
**Testing**
- Added an integration test for each endpoint.
Closes CORE-695
**What**
- Moves `sourceUpdatedNodes` and `sourceAllNodes` to a separate file, to prevent warning of unsupported exports. See #1455.
- Adds warnings if `GET /store/products`, `GET /store/regions`, and `GET /store/collections` return empty arrays. This should help new users more easily figure out why their storefronts does not work as expected.
- Adds schema to plugin, so that node types for products, regions and collections are always created. This will prevent errors such as `allMedusaRegions query failed` from happening in the storefront, as the query will be valid as the type exists, even if it returns nothing. This should make the gatsby plugin/starter easier to use. This error is an reoccurring issue in our discord, when new users try to run the Gatsby starter without seeding the storefront beforehand.
Resolves#1455
Co-authored-by: Sebastian Rindom <7554214+srindom@users.noreply.github.com>
* fix: added functionality to handle duplicate sku, ean, upc, and barcodes on product variants
* handle unique variant values
* save
* clear ignored keys in redis
* fixed plugin to handle duplicates and use last build time to make queries more effective
* v1.1.1-canary.0
* removed console log
* v1.1.1-canary.1
* reduce amounts of calls to shopify api
* v1.1.1-canary.2
* added README and support for SmartCollections
* v1.1.1-canary.4
* v1.1.1-canary.5
* v1.1.1-canary.5
* fix dropped products in smart collections
* cleanup
Co-authored-by: Sebastian Rindom <skrindom@gmail.com>
* adds bulk add/remove products to/from collection. Adds endpoint updateProducts on collections that uses these bulk operations
* fix integration tests and test description
* undo change to swap
* made requested changes
* added removeProducts endpoint
* made requested changes
* fix: set collection_id null
* updated collection_id to type string | undefined
* adds bulk add/remove products to/from collection. Adds endpoint updateProducts on collections that uses these bulk operations
* fix integration tests and test description
* undo change to swap
* made requested changes
* added removeProducts endpoint
* made requested changes
* fix: set collection_id null
* updated collection_id to type string | undefined
* added default relations to retrieve collection endpoint
* push snapshot
* added created at and updated at to collection list endpoint
* updated integration tests
* added q param to list collections
* updated snapshots
* added statuses to product + unit test for updating status
* add update to product model
* added integration tests
* added integration test to validate that updating status to null results in invalid_data error
* removed comment
* update GET /store/products integration test
* fixed unit test with IdMap
* init plugin
* changed dbehaviour on invalid status input on admin list products
* mprices
* updated migration to add status = published on all existing products + added integration test on GET /admin/products when status null is provided
* merged product status
* init ShopifyService
* made requested changes to migration and GET /store/products
* fixed test
* made requested changes to migration
* push progress on source plugin
* add webhook product/create handler
* fixed normalization of variant weight
* removed weight func
* work on events
* finished product hooks (error on new variant needs to be fixed)
* fixed order status
* create fulfillments
* update fulfillment on cancel
* refactored services, handle returns though medusa, helper methods
* order updates
* removed dist
* update gitignore
* emit cahnges to product
* added redis ignore check to prevent update loops
* fixed product-variant.deleted event
* fix more events
* fix test
* fix: order taxes
* added refund with no items
* fixes to hooks
* fixed handling refunds and returns issued from Shopify
* added unit tests to ShopifyProductService and ShopifyCollectionService
* linting fix
* prepared loader PR
* fix: jsDocs
* fix: pager
* fix: build output and babelrc
* chore: linting
* fix: address type
* fix: migration clean up
* fix: update snapshots with ext_ids
Co-authored-by: Sebastian Rindom <skrindom@gmail.com>
* added statuses to product + unit test for updating status
* add update to product model
* added integration tests
* added integration test to validate that updating status to null results in invalid_data error
* removed comment
* update GET /store/products integration test
* fixed unit test with IdMap
* changed dbehaviour on invalid status input on admin list products
* updated migration to add status = published on all existing products + added integration test on GET /admin/products when status null is provided
* made requested changes to migration and GET /store/products
* fixed test
* made requested changes to migration
* changed validator so that reqiurement shipping_option_id is now optional + added integration test that confirms that when an update contains a requirement without an ID it is created
* fix: formatting
* fix: un-bump babel-preset-medusa-package
* chore: update yarn.lock
* fix: implemented suggested changes, need to validate behaviour on clean branch so NOT ready for merging just yet
* fix: implemented suggested changes, need to validate behaviour on clean branch so NOT ready for merging just yet
* afix: made it impossible to set a min. subtotal requirement that is greater than max. subtotal
* fix: added explanation to error
* fix: Error when removing requirement on update
Co-authored-by: olivermrbl <oliver@mrbltech.com>
What
Changes selectors of API references to improve DocSearch results
Implements custom navigation for DocSearch in both API ref and docs. (Uses goTo method for in page navigation, Gatsby navigate for navigation within Gatsby site, changes URL's to API reference to make use of methods implemented to provide better metadata etc.)
Implements a new way to make all HTML available in API reference without need the crawler to have Javascript enabled which should allow Algolia to crawl our site faster.
Why
To provide users with a good search experience within our docs and API reference
Testing
Tested using a local setup of the Algolia crawler