From 7549aad738a0d8644de5a6df896b04fe86cbc31e Mon Sep 17 00:00:00 2001 From: Michael Bromley Date: Thu, 28 Sep 2023 08:45:16 +0200 Subject: [PATCH 1/2] fix(core): Fix discount calculation error edge-case Relates to #2385. This error only occurs if the discount amount is _greater_ than the tax-exclusive price of the variant. --- packages/core/e2e/order-promotion.e2e-spec.ts | 203 ++++++++++++------ .../product-percentage-discount-action.ts | 1 - .../entity/order-line/order-line.entity.ts | 3 +- 3 files changed, 145 insertions(+), 62 deletions(-) diff --git a/packages/core/e2e/order-promotion.e2e-spec.ts b/packages/core/e2e/order-promotion.e2e-spec.ts index 2eb0f495a7..3a69039769 100644 --- a/packages/core/e2e/order-promotion.e2e-spec.ts +++ b/packages/core/e2e/order-promotion.e2e-spec.ts @@ -837,6 +837,7 @@ describe('Promotions applied to Orders', () => { describe('discountOnItemWithFacets', () => { const couponCode = '50%_off_sale_items'; let promotion: Codegen.PromotionFragment; + function getItemSale1Line< T extends Array< | CodegenShop.UpdatedOrderFragment['lines'][number] @@ -1756,78 +1757,160 @@ describe('Promotions applied to Orders', () => { }); // https://github.com/vendure-ecommerce/vendure/issues/2385 - it('prevents negative line price', async () => { - await shopClient.asAnonymousUser(); - const item1000 = getVariantBySlug('item-1000')!; + describe('prevents negative line price', () => { + const TAX_INCLUDED_CHANNEL_TOKEN_2 = 'tax_included_channel_2'; const couponCode1 = '100%_off'; const couponCode2 = '100%_off'; - await createPromotion({ - enabled: true, - name: '100% discount ', - couponCode: couponCode1, - conditions: [], - actions: [ - { - code: productsPercentageDiscount.code, - arguments: [ - { name: 'discount', value: '100' }, - { - name: 'productVariantIds', - value: `["${item1000.id}"]`, - }, - ], + let taxIncludedChannel: Codegen.ChannelFragment; + + beforeAll(async () => { + // Create a channel where the prices include tax, so we can ensure + // that PromotionActions are working as expected when taxes are included + const { createChannel } = await adminClient.query< + Codegen.CreateChannelMutation, + Codegen.CreateChannelMutationVariables + >(CREATE_CHANNEL, { + input: { + code: 'tax-included-channel-2', + currencyCode: CurrencyCode.GBP, + pricesIncludeTax: true, + defaultTaxZoneId: 'T_1', + defaultShippingZoneId: 'T_1', + defaultLanguageCode: LanguageCode.en, + token: TAX_INCLUDED_CHANNEL_TOKEN_2, }, - ], - }); - await createPromotion({ - enabled: true, - name: '20% discount ', - couponCode: couponCode2, - conditions: [], - actions: [ - { - code: productsPercentageDiscount.code, - arguments: [ - { name: 'discount', value: '20' }, - { - name: 'productVariantIds', - value: `["${item1000.id}"]`, - }, - ], + }); + taxIncludedChannel = createChannel as Codegen.ChannelFragment; + await adminClient.query< + Codegen.AssignProductsToChannelMutation, + Codegen.AssignProductsToChannelMutationVariables + >(ASSIGN_PRODUCT_TO_CHANNEL, { + input: { + channelId: taxIncludedChannel.id, + priceFactor: 1, + productIds: products.map(p => p.id), }, - ], + }); + const item1000 = getVariantBySlug('item-1000')!; + const promo100 = await createPromotion({ + enabled: true, + name: '100% discount ', + couponCode: couponCode1, + conditions: [], + actions: [ + { + code: productsPercentageDiscount.code, + arguments: [ + { name: 'discount', value: '100' }, + { + name: 'productVariantIds', + value: `["${item1000.id}"]`, + }, + ], + }, + ], + }); + const promo20 = await createPromotion({ + enabled: true, + name: '20% discount ', + couponCode: couponCode2, + conditions: [], + actions: [ + { + code: productsPercentageDiscount.code, + arguments: [ + { name: 'discount', value: '20' }, + { + name: 'productVariantIds', + value: `["${item1000.id}"]`, + }, + ], + }, + ], + }); + await adminClient.query< + Codegen.AssignPromotionToChannelMutation, + Codegen.AssignPromotionToChannelMutationVariables + >(ASSIGN_PROMOTIONS_TO_CHANNEL, { + input: { + promotionIds: [promo100.id, promo20.id], + channelId: taxIncludedChannel.id, + }, + }); }); - await shopClient.query< - CodegenShop.ApplyCouponCodeMutation, - CodegenShop.ApplyCouponCodeMutationVariables - >(APPLY_COUPON_CODE, { couponCode: couponCode1 }); + it('prices exclude tax', async () => { + await shopClient.asAnonymousUser(); + const item1000 = getVariantBySlug('item-1000')!; - await shopClient.query< - CodegenShop.AddItemToOrderMutation, - CodegenShop.AddItemToOrderMutationVariables - >(ADD_ITEM_TO_ORDER, { - productVariantId: item1000.id, - quantity: 1, + await shopClient.query< + CodegenShop.ApplyCouponCodeMutation, + CodegenShop.ApplyCouponCodeMutationVariables + >(APPLY_COUPON_CODE, { couponCode: couponCode1 }); + + await shopClient.query< + CodegenShop.AddItemToOrderMutation, + CodegenShop.AddItemToOrderMutationVariables + >(ADD_ITEM_TO_ORDER, { + productVariantId: item1000.id, + quantity: 1, + }); + + const { activeOrder: check1 } = await shopClient.query( + GET_ACTIVE_ORDER, + ); + + expect(check1!.lines[0].discountedUnitPriceWithTax).toBe(0); + expect(check1!.totalWithTax).toBe(0); + + await shopClient.query< + CodegenShop.ApplyCouponCodeMutation, + CodegenShop.ApplyCouponCodeMutationVariables + >(APPLY_COUPON_CODE, { couponCode: couponCode2 }); + + const { activeOrder: check2 } = await shopClient.query( + GET_ACTIVE_ORDER, + ); + expect(check2!.lines[0].discountedUnitPriceWithTax).toBe(0); + expect(check2!.totalWithTax).toBe(0); }); - const { activeOrder: check1 } = await shopClient.query( - GET_ACTIVE_ORDER, - ); + it('prices include tax', async () => { + shopClient.setChannelToken(TAX_INCLUDED_CHANNEL_TOKEN_2); + await shopClient.asAnonymousUser(); + const item1000 = getVariantBySlug('item-1000')!; - expect(check1!.lines[0].discountedUnitPriceWithTax).toBe(0); - expect(check1!.totalWithTax).toBe(0); + await shopClient.query< + CodegenShop.ApplyCouponCodeMutation, + CodegenShop.ApplyCouponCodeMutationVariables + >(APPLY_COUPON_CODE, { couponCode: couponCode1 }); - await shopClient.query< - CodegenShop.ApplyCouponCodeMutation, - CodegenShop.ApplyCouponCodeMutationVariables - >(APPLY_COUPON_CODE, { couponCode: couponCode2 }); + await shopClient.query< + CodegenShop.AddItemToOrderMutation, + CodegenShop.AddItemToOrderMutationVariables + >(ADD_ITEM_TO_ORDER, { + productVariantId: item1000.id, + quantity: 1, + }); - const { activeOrder: check2 } = await shopClient.query( - GET_ACTIVE_ORDER, - ); - expect(check2!.lines[0].discountedUnitPriceWithTax).toBe(0); - expect(check2!.totalWithTax).toBe(0); + const { activeOrder: check1 } = await shopClient.query( + GET_ACTIVE_ORDER, + ); + + expect(check1!.lines[0].discountedUnitPriceWithTax).toBe(0); + expect(check1!.totalWithTax).toBe(0); + + await shopClient.query< + CodegenShop.ApplyCouponCodeMutation, + CodegenShop.ApplyCouponCodeMutationVariables + >(APPLY_COUPON_CODE, { couponCode: couponCode2 }); + + const { activeOrder: check2 } = await shopClient.query( + GET_ACTIVE_ORDER, + ); + expect(check2!.lines[0].discountedUnitPriceWithTax).toBe(0); + expect(check2!.totalWithTax).toBe(0); + }); }); async function getProducts() { diff --git a/packages/core/src/config/promotion/actions/product-percentage-discount-action.ts b/packages/core/src/config/promotion/actions/product-percentage-discount-action.ts index 10a6b92e64..2f1bb55ee0 100644 --- a/packages/core/src/config/promotion/actions/product-percentage-discount-action.ts +++ b/packages/core/src/config/promotion/actions/product-percentage-discount-action.ts @@ -23,7 +23,6 @@ export const productsPercentageDiscount = new PromotionItemAction({ label: [{ languageCode: LanguageCode.en, value: 'Product variants' }], }, }, - execute(ctx, orderLine, args) { if (lineContainsIds(args.productVariantIds, orderLine)) { const unitPrice = ctx.channel.pricesIncludeTax ? orderLine.unitPriceWithTax : orderLine.unitPrice; diff --git a/packages/core/src/entity/order-line/order-line.entity.ts b/packages/core/src/entity/order-line/order-line.entity.ts index 198d75df8e..990d01e03b 100644 --- a/packages/core/src/entity/order-line/order-line.entity.ts +++ b/packages/core/src/entity/order-line/order-line.entity.ts @@ -332,7 +332,8 @@ export class OrderLine extends VendureEntity implements HasCustomFields { addAdjustment(adjustment: Adjustment) { // We should not allow adding adjustments which would // result in a negative unit price - const maxDiscount = this.proratedLinePrice * -1; + const maxDiscount = + (this.listPriceIncludesTax ? this.proratedLinePriceWithTax : this.proratedLinePrice) * -1; const limitedAdjustment: Adjustment = { ...adjustment, amount: Math.max(maxDiscount, adjustment.amount), From 9b51f4ea871a97757303adf73dbdc6417f42ca30 Mon Sep 17 00:00:00 2001 From: Michael Bromley Date: Fri, 29 Sep 2023 11:45:06 +0200 Subject: [PATCH 2/2] chore: Publish v2.0.9 --- CHANGELOG.md | 7 +++++++ lerna.json | 2 +- packages/admin-ui-plugin/package.json | 6 +++--- packages/admin-ui/package-lock.json | 2 +- packages/admin-ui/package.json | 4 ++-- .../src/lib/core/src/common/version.ts | 2 +- packages/asset-server-plugin/package.json | 6 +++--- packages/common/package.json | 2 +- packages/core/package.json | 4 ++-- packages/create/package.json | 6 +++--- packages/dev-server/package.json | 18 +++++++++--------- packages/elasticsearch-plugin/package.json | 6 +++--- packages/email-plugin/package.json | 6 +++--- packages/harden-plugin/package.json | 6 +++--- packages/job-queue-plugin/package.json | 6 +++--- packages/payments-plugin/package.json | 8 ++++---- packages/testing/package.json | 6 +++--- packages/ui-devkit/package.json | 8 ++++---- 18 files changed, 56 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f3b2f03f89..a73d6d3d8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## 2.0.9 (2023-09-29) + + +#### Fixes + +* **core** Fix discount calculation error edge-case ([7549aad](https://github.com/vendure-ecommerce/vendure/commit/7549aad)), closes [#2385](https://github.com/vendure-ecommerce/vendure/issues/2385) + ## 2.0.8 (2023-09-27) diff --git a/lerna.json b/lerna.json index 83101fa10b..0aa1cb4616 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "packages": ["packages/*"], - "version": "2.0.8", + "version": "2.0.9", "npmClient": "yarn", "useWorkspaces": true, "command": { diff --git a/packages/admin-ui-plugin/package.json b/packages/admin-ui-plugin/package.json index 4963efe790..89559346da 100644 --- a/packages/admin-ui-plugin/package.json +++ b/packages/admin-ui-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@vendure/admin-ui-plugin", - "version": "2.0.8", + "version": "2.0.9", "main": "lib/index.js", "types": "lib/index.d.ts", "files": [ @@ -21,8 +21,8 @@ "devDependencies": { "@types/express": "^4.17.8", "@types/fs-extra": "^9.0.1", - "@vendure/common": "^2.0.8", - "@vendure/core": "^2.0.8", + "@vendure/common": "^2.0.9", + "@vendure/core": "^2.0.9", "express": "^4.17.1", "rimraf": "^3.0.2", "typescript": "4.9.5" diff --git a/packages/admin-ui/package-lock.json b/packages/admin-ui/package-lock.json index d38f378157..e305ceeb74 100644 --- a/packages/admin-ui/package-lock.json +++ b/packages/admin-ui/package-lock.json @@ -1,6 +1,6 @@ { "name": "@vendure/admin-ui", - "version": "2.0.8", + "version": "2.0.9", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/packages/admin-ui/package.json b/packages/admin-ui/package.json index ad344dbbbb..32318f4fc0 100644 --- a/packages/admin-ui/package.json +++ b/packages/admin-ui/package.json @@ -1,6 +1,6 @@ { "name": "@vendure/admin-ui", - "version": "2.0.8", + "version": "2.0.9", "license": "MIT", "scripts": { "ng": "ng", @@ -49,7 +49,7 @@ "@ng-select/ng-select": "^11.0.0", "@ngx-translate/core": "^14.0.0", "@ngx-translate/http-loader": "^7.0.0", - "@vendure/common": "^2.0.8", + "@vendure/common": "^2.0.9", "@webcomponents/custom-elements": "^1.5.1", "apollo-angular": "^5.0.0", "apollo-upload-client": "^17.0.0", diff --git a/packages/admin-ui/src/lib/core/src/common/version.ts b/packages/admin-ui/src/lib/core/src/common/version.ts index 9dbdf9a21b..189154f8d9 100644 --- a/packages/admin-ui/src/lib/core/src/common/version.ts +++ b/packages/admin-ui/src/lib/core/src/common/version.ts @@ -1,2 +1,2 @@ // Auto-generated by the set-version.js script. -export const ADMIN_UI_VERSION = '2.0.8'; +export const ADMIN_UI_VERSION = '2.0.9'; diff --git a/packages/asset-server-plugin/package.json b/packages/asset-server-plugin/package.json index 4fa395b7a4..c79766060e 100644 --- a/packages/asset-server-plugin/package.json +++ b/packages/asset-server-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@vendure/asset-server-plugin", - "version": "2.0.8", + "version": "2.0.9", "main": "lib/index.js", "types": "lib/index.d.ts", "files": [ @@ -27,8 +27,8 @@ "@types/fs-extra": "^9.0.8", "@types/node-fetch": "^2.5.8", "@types/sharp": "^0.30.4", - "@vendure/common": "^2.0.8", - "@vendure/core": "^2.0.8", + "@vendure/common": "^2.0.9", + "@vendure/core": "^2.0.9", "express": "^4.17.1", "node-fetch": "^2.6.7", "rimraf": "^3.0.2", diff --git a/packages/common/package.json b/packages/common/package.json index 1aaed6ccc6..4e68843b06 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -1,6 +1,6 @@ { "name": "@vendure/common", - "version": "2.0.8", + "version": "2.0.9", "main": "index.js", "license": "MIT", "scripts": { diff --git a/packages/core/package.json b/packages/core/package.json index d6019699ed..974e5ad82e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@vendure/core", - "version": "2.0.8", + "version": "2.0.9", "description": "A modern, headless ecommerce framework", "repository": { "type": "git", @@ -52,7 +52,7 @@ "@nestjs/testing": "9.3.9", "@nestjs/typeorm": "9.0.1", "@types/fs-extra": "^9.0.1", - "@vendure/common": "^2.0.8", + "@vendure/common": "^2.0.9", "apollo-server-express": "3.6.3", "bcrypt": "^5.1.0", "body-parser": "^1.19.0", diff --git a/packages/create/package.json b/packages/create/package.json index 009003e163..9e1655f1c1 100644 --- a/packages/create/package.json +++ b/packages/create/package.json @@ -1,6 +1,6 @@ { "name": "@vendure/create", - "version": "2.0.8", + "version": "2.0.9", "license": "MIT", "bin": { "create": "./index.js" @@ -28,14 +28,14 @@ "@types/fs-extra": "^9.0.1", "@types/handlebars": "^4.1.0", "@types/semver": "^6.2.2", - "@vendure/core": "^2.0.8", + "@vendure/core": "^2.0.9", "rimraf": "^3.0.2", "ts-node": "^10.9.1", "typescript": "4.9.5" }, "dependencies": { "@clack/prompts": "^0.6.3", - "@vendure/common": "^2.0.8", + "@vendure/common": "^2.0.9", "commander": "^10.0.0", "cross-spawn": "^7.0.3", "detect-port": "^1.5.1", diff --git a/packages/dev-server/package.json b/packages/dev-server/package.json index 726e743240..34caa1a3a4 100644 --- a/packages/dev-server/package.json +++ b/packages/dev-server/package.json @@ -1,6 +1,6 @@ { "name": "dev-server", - "version": "2.0.8", + "version": "2.0.9", "main": "index.js", "license": "MIT", "private": true, @@ -14,18 +14,18 @@ "load-test:100k": "node -r ts-node/register load-testing/run-load-test.ts 100000" }, "dependencies": { - "@vendure/admin-ui-plugin": "^2.0.8", - "@vendure/asset-server-plugin": "^2.0.8", - "@vendure/common": "^2.0.8", - "@vendure/core": "^2.0.8", - "@vendure/elasticsearch-plugin": "^2.0.8", - "@vendure/email-plugin": "^2.0.8", + "@vendure/admin-ui-plugin": "^2.0.9", + "@vendure/asset-server-plugin": "^2.0.9", + "@vendure/common": "^2.0.9", + "@vendure/core": "^2.0.9", + "@vendure/elasticsearch-plugin": "^2.0.9", + "@vendure/email-plugin": "^2.0.9", "typescript": "4.9.5" }, "devDependencies": { "@types/csv-stringify": "^3.1.0", - "@vendure/testing": "^2.0.8", - "@vendure/ui-devkit": "^2.0.8", + "@vendure/testing": "^2.0.9", + "@vendure/ui-devkit": "^2.0.9", "commander": "^7.1.0", "concurrently": "^5.0.0", "csv-stringify": "^5.3.3", diff --git a/packages/elasticsearch-plugin/package.json b/packages/elasticsearch-plugin/package.json index cdb3d0076d..742bd85eb8 100644 --- a/packages/elasticsearch-plugin/package.json +++ b/packages/elasticsearch-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@vendure/elasticsearch-plugin", - "version": "2.0.8", + "version": "2.0.9", "license": "MIT", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -26,8 +26,8 @@ "fast-deep-equal": "^3.1.3" }, "devDependencies": { - "@vendure/common": "^2.0.8", - "@vendure/core": "^2.0.8", + "@vendure/common": "^2.0.9", + "@vendure/core": "^2.0.9", "rimraf": "^3.0.2", "typescript": "4.9.5" } diff --git a/packages/email-plugin/package.json b/packages/email-plugin/package.json index 68fe6f3937..99eb2faeb9 100644 --- a/packages/email-plugin/package.json +++ b/packages/email-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@vendure/email-plugin", - "version": "2.0.8", + "version": "2.0.9", "license": "MIT", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -35,8 +35,8 @@ "@types/fs-extra": "^9.0.1", "@types/handlebars": "^4.1.0", "@types/mjml": "^4.0.4", - "@vendure/common": "^2.0.8", - "@vendure/core": "^2.0.8", + "@vendure/common": "^2.0.9", + "@vendure/core": "^2.0.9", "rimraf": "^3.0.2", "typescript": "4.9.5" } diff --git a/packages/harden-plugin/package.json b/packages/harden-plugin/package.json index 46c89ccba4..abe47d907a 100644 --- a/packages/harden-plugin/package.json +++ b/packages/harden-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@vendure/harden-plugin", - "version": "2.0.8", + "version": "2.0.9", "license": "MIT", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -21,7 +21,7 @@ "graphql-query-complexity": "^0.12.0" }, "devDependencies": { - "@vendure/common": "^2.0.8", - "@vendure/core": "^2.0.8" + "@vendure/common": "^2.0.9", + "@vendure/core": "^2.0.9" } } diff --git a/packages/job-queue-plugin/package.json b/packages/job-queue-plugin/package.json index 6746aa27e4..481d280fcc 100644 --- a/packages/job-queue-plugin/package.json +++ b/packages/job-queue-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@vendure/job-queue-plugin", - "version": "2.0.8", + "version": "2.0.9", "license": "MIT", "main": "package/index.js", "types": "package/index.d.ts", @@ -23,8 +23,8 @@ }, "devDependencies": { "@google-cloud/pubsub": "^2.8.0", - "@vendure/common": "^2.0.8", - "@vendure/core": "^2.0.8", + "@vendure/common": "^2.0.9", + "@vendure/core": "^2.0.9", "bullmq": "^3.15.5", "ioredis": "^5.3.0", "rimraf": "^3.0.2", diff --git a/packages/payments-plugin/package.json b/packages/payments-plugin/package.json index 60abb7568e..b6e0c0d6d0 100644 --- a/packages/payments-plugin/package.json +++ b/packages/payments-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@vendure/payments-plugin", - "version": "2.0.8", + "version": "2.0.9", "license": "MIT", "main": "package/index.js", "types": "package/index.d.ts", @@ -46,9 +46,9 @@ "@mollie/api-client": "^3.6.0", "@types/braintree": "^2.22.15", "@types/localtunnel": "2.0.1", - "@vendure/common": "^2.0.8", - "@vendure/core": "^2.0.8", - "@vendure/testing": "^2.0.8", + "@vendure/common": "^2.0.9", + "@vendure/core": "^2.0.9", + "@vendure/testing": "^2.0.9", "braintree": "^3.0.0", "localtunnel": "2.0.1", "nock": "^13.1.4", diff --git a/packages/testing/package.json b/packages/testing/package.json index 4210882fe3..00fbb7b4bc 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -1,6 +1,6 @@ { "name": "@vendure/testing", - "version": "2.0.8", + "version": "2.0.9", "description": "End-to-end testing tools for Vendure projects", "keywords": [ "vendure", @@ -38,7 +38,7 @@ "dependencies": { "@graphql-typed-document-node/core": "^3.2.0", "@types/node-fetch": "^2.5.4", - "@vendure/common": "^2.0.8", + "@vendure/common": "^2.0.9", "faker": "^4.1.0", "form-data": "^3.0.0", "graphql": "16.6.0", @@ -49,7 +49,7 @@ "devDependencies": { "@types/mysql": "^2.15.15", "@types/pg": "^7.14.5", - "@vendure/core": "^2.0.8", + "@vendure/core": "^2.0.9", "mysql": "^2.18.1", "pg": "^8.4.0", "rimraf": "^3.0.0", diff --git a/packages/ui-devkit/package.json b/packages/ui-devkit/package.json index 1f278da4ce..354b3efcf2 100644 --- a/packages/ui-devkit/package.json +++ b/packages/ui-devkit/package.json @@ -1,6 +1,6 @@ { "name": "@vendure/ui-devkit", - "version": "2.0.8", + "version": "2.0.9", "description": "A library for authoring Vendure Admin UI extensions", "keywords": [ "vendure", @@ -40,8 +40,8 @@ "@angular/cli": "^16.0.3", "@angular/compiler": "^16.0.3", "@angular/compiler-cli": "^16.0.3", - "@vendure/admin-ui": "^2.0.8", - "@vendure/common": "^2.0.8", + "@vendure/admin-ui": "^2.0.9", + "@vendure/common": "^2.0.9", "chalk": "^4.1.0", "chokidar": "^3.5.1", "fs-extra": "^10.0.0", @@ -51,7 +51,7 @@ "devDependencies": { "@rollup/plugin-node-resolve": "^15.0.1", "@types/fs-extra": "^11.0.1", - "@vendure/core": "^2.0.8", + "@vendure/core": "^2.0.9", "rimraf": "^3.0.2", "rollup": "^3.18.0", "rollup-plugin-terser": "^7.0.2",