diff --git a/integration-tests/api/__tests__/admin/__snapshots__/auth.js.snap b/integration-tests/api/__tests__/admin/__snapshots__/auth.js.snap index 3a3a924b4b..bd72f27516 100644 --- a/integration-tests/api/__tests__/admin/__snapshots__/auth.js.snap +++ b/integration-tests/api/__tests__/admin/__snapshots__/auth.js.snap @@ -1,5 +1,19 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`/admin/auth creates admin session correctly 1`] = ` +Object { + "api_token": "test_token", + "created_at": Any, + "deleted_at": null, + "email": "admin@medusa.js", + "first_name": null, + "id": "admin_user", + "last_name": null, + "metadata": null, + "updated_at": Any, +} +`; + exports[`/admin/discounts creates admin session correctly 1`] = ` Object { "api_token": "test_token", @@ -13,4 +27,3 @@ Object { "updated_at": Any, } `; - diff --git a/integration-tests/api/__tests__/store/__snapshots__/auth.js.snap b/integration-tests/api/__tests__/store/__snapshots__/auth.js.snap index aaae35ba9c..5bfeffc442 100644 --- a/integration-tests/api/__tests__/store/__snapshots__/auth.js.snap +++ b/integration-tests/api/__tests__/store/__snapshots__/auth.js.snap @@ -1,5 +1,22 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`/admin/auth creates store session correctly 1`] = ` +Object { + "billing_address_id": null, + "created_at": Any, + "deleted_at": null, + "email": "test@testesen.dk", + "first_name": "test", + "has_account": true, + "id": Any, + "last_name": "testesen", + "metadata": null, + "orders": Array [], + "phone": "12345678", + "updated_at": Any, +} +`; + exports[`/admin/discounts creates store session correctly 1`] = ` Object { "billing_address_id": null, diff --git a/integration-tests/api/__tests__/store/cart.js b/integration-tests/api/__tests__/store/cart.js index 034601e839..47c43fe904 100644 --- a/integration-tests/api/__tests__/store/cart.js +++ b/integration-tests/api/__tests__/store/cart.js @@ -135,8 +135,8 @@ describe("/store/carts", () => { const api = useApi() try { - await api.post("/store/carts/test-cart", { - discounts: [{ code: "CREATED" }], + const { data } = await api.post("/store/carts/test-cart", { + discounts: [{ code: "LIMIT_REACHED" }], }) } catch (error) { expect(error.response.status).toEqual(400) @@ -648,4 +648,41 @@ describe("/store/carts", () => { expect(response.status).toEqual(200) }) }) + + describe("shipping address + region updates", () => { + beforeEach(async () => { + try { + await cartSeeder(dbConnection) + } catch (err) { + console.log(err) + throw err + } + }) + + afterEach(async () => { + await doAfterEach() + }) + + it("updates region only - single to multipe countries", async () => { + const api = useApi() + + const { data, status } = await api + .post(`/store/carts/test-cart`, { + region_id: `test-region-multiple`, + }) + .catch((err) => { + console.log(err) + throw err + }) + + expect(status).toEqual(200) + expect(data.cart.region_id).toEqual("test-region-multiple") + expect(data.cart.shipping_address).toMatchSnapshot({ + id: expect.any(String), + country_code: null, + }) + }) + + // it("updates cart.customer_id on cart retrieval if cart.customer_id differ from session customer", async () => {}) + }) }) diff --git a/integration-tests/api/helpers/cart-seeder.js b/integration-tests/api/helpers/cart-seeder.js index f7e499368a..f2e8b08803 100644 --- a/integration-tests/api/helpers/cart-seeder.js +++ b/integration-tests/api/helpers/cart-seeder.js @@ -108,6 +108,28 @@ module.exports = async (connection, data = {}) => { tenPercent.rule = tenPercentRule await manager.save(tenPercent) + const exceed = await manager.create(Discount, { + id: "test-discount-reached", + code: "LIMIT_REACHED", + usage_limit: 1, + usage_count: 1, + is_dynamic: false, + is_disabled: false, + }) + + const drExceed = await manager.create(DiscountRule, { + id: "test-discount-rule-reached", + description: "Created", + type: "fixed", + value: 10000, + allocation: "total", + }) + + exceed.rule = drExceed + exceed.regions = [r] + + await manager.save(exceed) + const d = await manager.create(Discount, { id: "test-discount", code: "CREATED", diff --git a/integration-tests/api/package.json b/integration-tests/api/package.json index 7abd7c9b69..43d74c3d43 100644 --- a/integration-tests/api/package.json +++ b/integration-tests/api/package.json @@ -8,15 +8,15 @@ "build": "babel src -d dist --extensions \".ts,.js\"" }, "dependencies": { - "@medusajs/medusa": "1.1.40-dev-1631630701835", - "medusa-interfaces": "1.1.21-dev-1631630701835", + "@medusajs/medusa": "1.1.41-dev-1633423310981", + "medusa-interfaces": "1.1.23-dev-1633423310981", "typeorm": "^0.2.31" }, "devDependencies": { "@babel/cli": "^7.12.10", "@babel/core": "^7.12.10", "@babel/node": "^7.12.10", - "babel-preset-medusa-package": "1.1.13-dev-1631630701835", + "babel-preset-medusa-package": "1.1.15-dev-1633423310981", "jest": "^26.6.3" } } diff --git a/integration-tests/api/yarn.lock b/integration-tests/api/yarn.lock index 2ba33d481a..c0f6dd571e 100644 --- a/integration-tests/api/yarn.lock +++ b/integration-tests/api/yarn.lock @@ -1223,10 +1223,10 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@medusajs/medusa-cli@1.1.16-dev-1631630701835": - version "1.1.16-dev-1631630701835" - resolved "http://localhost:4873/@medusajs%2fmedusa-cli/-/medusa-cli-1.1.16-dev-1631630701835.tgz#7fcb95cb9a45e0367cc5becfff7f5d1533b46b5f" - integrity sha512-UomtR8B1lBFDb3h1y060fOcWcZi812Jwt8Kgjxqtpn+aRj6Bu7+I3WJGHBVSx4VnUBINSYbtiQMpEwqVGTCKnw== +"@medusajs/medusa-cli@1.1.18-dev-1633423310981": + version "1.1.18-dev-1633423310981" + resolved "http://localhost:4873/@medusajs%2fmedusa-cli/-/medusa-cli-1.1.18-dev-1633423310981.tgz#70355ecb8382e62f44af1b0755bfe7a999e4c16c" + integrity sha512-LGMPQrjP4ghpbzpdRInLeTGATBr3nEvuKP98/0zODoZtgHodbxgUjWFYiiy2zoBGp21GcQ3KZx60kKS9z1zSzw== dependencies: "@babel/polyfill" "^7.8.7" "@babel/runtime" "^7.9.6" @@ -1244,8 +1244,8 @@ is-valid-path "^0.1.1" joi-objectid "^3.0.1" meant "^1.0.1" - medusa-core-utils "1.1.20-dev-1631630701835" - medusa-telemetry "0.0.3-dev-1631630701835" + medusa-core-utils "1.1.22-dev-1633423310981" + medusa-telemetry "0.0.5-dev-1633423310981" netrc-parser "^3.1.6" open "^8.0.6" ora "^5.4.1" @@ -1259,13 +1259,13 @@ winston "^3.3.3" yargs "^15.3.1" -"@medusajs/medusa@1.1.40-dev-1631630701835": - version "1.1.40-dev-1631630701835" - resolved "http://localhost:4873/@medusajs%2fmedusa/-/medusa-1.1.40-dev-1631630701835.tgz#fa67ceda5887fd31196b3bcfd3115a9e02d68448" - integrity sha512-svPsKonuBrwRgtYod7U7ho9bN84K7N/QorMJG9+wklEO4jp6zXG+U5DQcfVAKQ00cHHe50OcnfX1ZS0kVNovYw== +"@medusajs/medusa@1.1.41-dev-1633423310981": + version "1.1.41-dev-1633423310981" + resolved "http://localhost:4873/@medusajs%2fmedusa/-/medusa-1.1.41-dev-1633423310981.tgz#aafdac188f1e543da6faca01f71d68dd197fcba1" + integrity sha512-jQQd8qHm8ldrtMmEf8TMPSyK2nSvawxTRlwZEUG9WcsLkdDkuS6CpShmwf2+1X6SYn/bOSdAFszvvjDnHxbKOQ== dependencies: "@hapi/joi" "^16.1.8" - "@medusajs/medusa-cli" "1.1.16-dev-1631630701835" + "@medusajs/medusa-cli" "1.1.18-dev-1633423310981" "@types/lodash" "^4.14.168" awilix "^4.2.3" body-parser "^1.19.0" @@ -1283,11 +1283,12 @@ glob "^7.1.6" ioredis "^4.17.3" ioredis-mock "^5.6.0" + iso8601-duration "^1.3.0" joi "^17.3.0" joi-objectid "^3.0.1" jsonwebtoken "^8.5.1" - medusa-core-utils "1.1.20-dev-1631630701835" - medusa-test-utils "1.1.23-dev-1631630701835" + medusa-core-utils "1.1.22-dev-1633423310981" + medusa-test-utils "1.1.25-dev-1633423310981" morgan "^1.9.1" multer "^1.4.2" passport "^0.4.0" @@ -1932,10 +1933,10 @@ babel-preset-jest@^26.6.2: babel-plugin-jest-hoist "^26.6.2" babel-preset-current-node-syntax "^1.0.0" -babel-preset-medusa-package@1.1.13-dev-1631630701835: - version "1.1.13-dev-1631630701835" - resolved "http://localhost:4873/babel-preset-medusa-package/-/babel-preset-medusa-package-1.1.13-dev-1631630701835.tgz#5b66b3738e4904e31b2db30a6ea8e68eb0f8f641" - integrity sha512-V7sXlktlvEON7FLhxe+Y3NVe8l8DQyB5oJTryG4Bhw8y1AaUFOiQ5Vat3XuoL3qRcUSVMGL4VHw0m0O78t0PuA== +babel-preset-medusa-package@1.1.15-dev-1633423310981: + version "1.1.15-dev-1633423310981" + resolved "http://localhost:4873/babel-preset-medusa-package/-/babel-preset-medusa-package-1.1.15-dev-1633423310981.tgz#3937735456a517e9004233b3dbd968b79afed495" + integrity sha512-oyijx+KjzgA7Ehszy2bEG2JbXT76qvzihsWYZOLAgz7B/7XAosknmQgPuvoeGWQ/+2xhKgp1w/+UoncD3fygfA== dependencies: "@babel/plugin-proposal-class-properties" "^7.12.1" "@babel/plugin-proposal-decorators" "^7.12.1" @@ -4274,6 +4275,11 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +iso8601-duration@^1.3.0: + version "1.3.0" + resolved "http://localhost:4873/iso8601-duration/-/iso8601-duration-1.3.0.tgz#29d7b69e0574e4acdee50c5e5e09adab4137ba5a" + integrity sha512-K4CiUBzo3YeWk76FuET/dQPH03WE04R94feo5TSKQCXpoXQt9E4yx2CnY737QZnSAI3PI4WlKo/zfqizGx52QQ== + isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" @@ -5104,25 +5110,25 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -medusa-core-utils@1.1.20-dev-1631630701835: - version "1.1.20-dev-1631630701835" - resolved "http://localhost:4873/medusa-core-utils/-/medusa-core-utils-1.1.20-dev-1631630701835.tgz#1fa7ccd2551b7891127d4f07f708029c585f4ea8" - integrity sha512-KKBo6W1QI47Ig3KMV4UXQnQN5JilMfjR6Cx7hDNj4frJoNiWa/YKDYqUr6SmY2+iJtKetnLkrKaPsDyyhZrxcw== +medusa-core-utils@1.1.22-dev-1633423310981: + version "1.1.22-dev-1633423310981" + resolved "http://localhost:4873/medusa-core-utils/-/medusa-core-utils-1.1.22-dev-1633423310981.tgz#51f252f7b7ad042a48e67b4a5a3236acfd18f404" + integrity sha512-6OVvWwqDwbd13myR66paOKHmB77PChwWCz6WCXUABnQTX4Oo1N4Nf2tTvw4gKvv3/f9G0GBRMaAfo32Z1Gk6EA== dependencies: joi "^17.3.0" joi-objectid "^3.0.1" -medusa-interfaces@1.1.21-dev-1631630701835: - version "1.1.21-dev-1631630701835" - resolved "http://localhost:4873/medusa-interfaces/-/medusa-interfaces-1.1.21-dev-1631630701835.tgz#af29b2ef0c987bded1b2d295ac6cf39880af551e" - integrity sha512-rTASRjOdcS3J9fP95p9vJzCpatMpUhTum5ddfAA0s42pZx2gsPlf1f+rUSNz5QfeC5RdIEzRfOmAGfvMpAbYGw== +medusa-interfaces@1.1.23-dev-1633423310981: + version "1.1.23-dev-1633423310981" + resolved "http://localhost:4873/medusa-interfaces/-/medusa-interfaces-1.1.23-dev-1633423310981.tgz#2819e308c716ee53d1840b6a5d5430fbf8dca3c9" + integrity sha512-Gp3fcV8SsL9ZkLe9L+ZVy6sGsv5n6Wj67wwOX0GanSqU1uLBsz3wedMfii5dGNqwDexWgYzgxOYK7QGBGYXLQg== dependencies: - medusa-core-utils "1.1.20-dev-1631630701835" + medusa-core-utils "1.1.22-dev-1633423310981" -medusa-telemetry@0.0.3-dev-1631630701835: - version "0.0.3-dev-1631630701835" - resolved "http://localhost:4873/medusa-telemetry/-/medusa-telemetry-0.0.3-dev-1631630701835.tgz#d56c01d261fa30ccedc6d9976971b9744b9d8c0f" - integrity sha512-FS1L1DOIOSdRZgeIQWaM5nhFG5NtbnC/Pntfac51vQxLkzFuHy7ZEtg11CXKE+x6NWlqT1rqqgxq0EabFzEZzw== +medusa-telemetry@0.0.5-dev-1633423310981: + version "0.0.5-dev-1633423310981" + resolved "http://localhost:4873/medusa-telemetry/-/medusa-telemetry-0.0.5-dev-1633423310981.tgz#7956c08480850d6b61052c3e8b62729c24ceb338" + integrity sha512-JqruAUz4vDBE+e9jKOklLL1p9Od2fbWOR/fJjDG9drjppv4bHJlfBMUO8BjagZQi6J8Q03MmhWpFnQP7Mkop2A== dependencies: axios "^0.21.1" axios-retry "^3.1.9" @@ -5134,13 +5140,13 @@ medusa-telemetry@0.0.3-dev-1631630701835: remove-trailing-slash "^0.1.1" uuid "^8.3.2" -medusa-test-utils@1.1.23-dev-1631630701835: - version "1.1.23-dev-1631630701835" - resolved "http://localhost:4873/medusa-test-utils/-/medusa-test-utils-1.1.23-dev-1631630701835.tgz#8995d636caf2dea9ebb184f1e15b0c364c4d1b93" - integrity sha512-A8xRL+sZS22qXZSHpVfdV8f/egZxXs4iExRO2xUkTP6I/OgMhFBSg6nEd/DXVdVfpsHZCDEv8PA3ewaeAkoYhQ== +medusa-test-utils@1.1.25-dev-1633423310981: + version "1.1.25-dev-1633423310981" + resolved "http://localhost:4873/medusa-test-utils/-/medusa-test-utils-1.1.25-dev-1633423310981.tgz#8e50633de3f237d6c5ae1c7354b6fa30953504fc" + integrity sha512-cbapvTtzz5Q91JKYBiOGsJ9Uwr01DIvhf/kze3dEMAlbLLrB11kKhrFiouvjyLCG64JrGiqdCyzRWcAa9TutPg== dependencies: "@babel/plugin-transform-classes" "^7.9.5" - medusa-core-utils "1.1.20-dev-1631630701835" + medusa-core-utils "1.1.22-dev-1633423310981" randomatic "^3.1.1" merge-descriptors@1.0.1: diff --git a/packages/medusa/src/services/cart.js b/packages/medusa/src/services/cart.js index e0755d0b2c..08dbe9b2f0 100644 --- a/packages/medusa/src/services/cart.js +++ b/packages/medusa/src/services/cart.js @@ -160,7 +160,7 @@ class CartService extends BaseService { "total", ] - const totalsToSelect = select.filter(v => totalFields.includes(v)) + const totalsToSelect = select.filter((v) => totalFields.includes(v)) if (totalsToSelect.length > 0) { const relationSet = new Set(relations) relationSet.add("items") @@ -173,7 +173,7 @@ class CartService extends BaseService { relationSet.add("region") relations = [...relationSet] - select = select.filter(v => !totalFields.includes(v)) + select = select.filter((v) => !totalFields.includes(v)) } return { @@ -236,9 +236,8 @@ class CartService extends BaseService { const cartRepo = this.manager_.getCustomRepository(this.cartRepository_) const validatedId = this.validateId_(cartId) - const { select, relations, totalsToSelect } = this.transformQueryForTotals_( - options - ) + const { select, relations, totalsToSelect } = + this.transformQueryForTotals_(options) const query = { where: { id: validatedId }, @@ -273,7 +272,7 @@ class CartService extends BaseService { * @return {Promise} the result of the create operation */ async create(data) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cartRepo = manager.getCustomRepository(this.cartRepository_) const addressRepo = manager.getCustomRepository(this.addressRepository_) const { region_id } = data @@ -342,7 +341,7 @@ class CartService extends BaseService { * @retur {Promise} the result of the update operation */ async removeLineItem(cartId, lineItemId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: [ "items", @@ -352,7 +351,7 @@ class CartService extends BaseService { ], }) - const lineItem = cart.items.find(li => li.id === lineItemId) + const lineItem = cart.items.find((li) => li.id === lineItemId) if (!lineItem) { return cart } @@ -421,7 +420,7 @@ class CartService extends BaseService { * @return {Promise} the result of the update operation */ async addLineItem(cartId, lineItem) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: [ "shipping_methods", @@ -434,7 +433,7 @@ class CartService extends BaseService { let currentItem if (lineItem.should_merge) { - currentItem = cart.items.find(line => { + currentItem = cart.items.find((line) => { if (line.should_merge && line.variant_id === lineItem.variant_id) { return _.isEqual(line.metadata, lineItem.metadata) } @@ -500,13 +499,13 @@ class CartService extends BaseService { * @return {Promise} the result of the update operation */ async updateLineItem(cartId, lineItemId, lineItemUpdate) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["items", "payment_sessions"], }) // Ensure that the line item exists in the cart - const lineItemExists = cart.items.find(i => i.id === lineItemId) + const lineItemExists = cart.items.find((i) => i.id === lineItemId) if (!lineItemExists) { throw new MedusaError( MedusaError.Types.INVALID_DATA, @@ -553,7 +552,7 @@ class CartService extends BaseService { // if any free shipping discounts, we ensure to update shipping method amount if (shouldAdd) { await Promise.all( - cart.shipping_methods.map(async sm => { + cart.shipping_methods.map(async (sm) => { const smRepo = this.manager_.getCustomRepository( this.shippingMethodRepository_ ) @@ -568,7 +567,7 @@ class CartService extends BaseService { ) } else { await Promise.all( - cart.shipping_methods.map(async sm => { + cart.shipping_methods.map(async (sm) => { const smRepo = this.manager_.getCustomRepository( this.shippingMethodRepository_ ) @@ -584,7 +583,7 @@ class CartService extends BaseService { } async update(cartId, update) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cartRepo = manager.getCustomRepository(this.cartRepository_) const cart = await this.retrieve(cartId, { select: [ @@ -730,9 +729,7 @@ class CartService extends BaseService { * @return {Promise} the resultign customer object */ async createOrFetchUserFromEmail_(email) { - const schema = Validator.string() - .email() - .required() + const schema = Validator.string().email().required() const { value, error } = schema.validate(email.toLowerCase()) if (error) { throw new MedusaError( @@ -803,9 +800,10 @@ class CartService extends BaseService { }) } - addressOrId.country_code = addressOrId.country_code.toLowerCase() + addressOrId.country_code = addressOrId.country_code?.toLowerCase() if ( + addressOrId.country_code && !cart.region.countries.find( ({ iso_2 }) => addressOrId.country_code === iso_2 ) @@ -938,7 +936,7 @@ class CartService extends BaseService { const toParse = [...cart.discounts, discount] let sawNotShipping = false - const newDiscounts = toParse.map(d => { + const newDiscounts = toParse.map((d) => { const drule = d.rule switch (drule.type) { case "free_shipping": @@ -968,7 +966,7 @@ class CartService extends BaseService { * @return {Promise} the resulting cart */ async removeDiscount(cartId, discountCode) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["discounts", "payment_sessions", "shipping_methods"], }) @@ -977,7 +975,7 @@ class CartService extends BaseService { await this.adjustFreeShipping_(cart, false) } - cart.discounts = cart.discounts.filter(d => d.code !== discountCode) + cart.discounts = cart.discounts.filter((d) => d.code !== discountCode) const cartRepo = manager.getCustomRepository(this.cartRepository_) @@ -1008,7 +1006,7 @@ class CartService extends BaseService { * Updates the currently selected payment session. */ async updatePaymentSession(cartId, update) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["payment_sessions"], }) @@ -1042,7 +1040,7 @@ class CartService extends BaseService { * @return {Promise} the resulting cart */ async authorizePayment(cartId, context = {}) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cartRepository = manager.getCustomRepository(this.cartRepository_) const cart = await this.retrieve(cartId, { @@ -1089,7 +1087,7 @@ class CartService extends BaseService { * @returns {Promise} result of update operation */ async setPaymentSession(cartId, providerId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const psRepo = manager.getCustomRepository(this.paymentSessionRepository_) const cart = await this.retrieve(cartId, { @@ -1118,13 +1116,13 @@ class CartService extends BaseService { } await Promise.all( - cart.payment_sessions.map(ps => { + cart.payment_sessions.map((ps) => { return psRepo.save({ ...ps, is_selected: null }) }) ) const sess = cart.payment_sessions.find( - ps => ps.provider_id === providerId + (ps) => ps.provider_id === providerId ) sess.is_selected = true @@ -1150,7 +1148,7 @@ class CartService extends BaseService { * @returns {Promise} the result of the update operation. */ async setPaymentSessions(cartOrCartId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const psRepo = manager.getCustomRepository(this.paymentSessionRepository_) let cartId = @@ -1233,7 +1231,7 @@ class CartService extends BaseService { * @returns {Promise} the resulting cart. */ async deletePaymentSession(cartId, providerId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["payment_sessions"], }) @@ -1274,7 +1272,7 @@ class CartService extends BaseService { * @returns {Promise} the resulting cart. */ async refreshPaymentSession(cartId, providerId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["payment_sessions"], }) @@ -1313,7 +1311,7 @@ class CartService extends BaseService { * @return {Promise} the result of the update operation */ async addShippingMethod(cartId, optionId, data) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { select: ["subtotal"], relations: [ @@ -1397,7 +1395,7 @@ class CartService extends BaseService { if (cart.items.length) { cart.items = await Promise.all( cart.items - .map(async item => { + .map(async (item) => { const availablePrice = await this.productVariantService_ .getRegionPrice(item.variant_id, regionId) .catch(() => undefined) @@ -1476,20 +1474,20 @@ class CartService extends BaseService { } if (cart.discounts && cart.discounts.length) { - const newDiscounts = cart.discounts.map(d => { + const newDiscounts = cart.discounts.map((d) => { if (d.regions.find(({ id }) => id === regionId)) { return d } }) - cart.discounts = newDiscounts.filter(d => !!d) + cart.discounts = newDiscounts.filter((d) => !!d) } cart.gift_cards = [] if (cart.payment_sessions && cart.payment_sessions.length) { await Promise.all( - cart.payment_sessions.map(ps => + cart.payment_sessions.map((ps) => this.paymentProviderService_ .withTransaction(this.manager_) .deleteSession(ps) @@ -1507,7 +1505,7 @@ class CartService extends BaseService { * not found. */ async delete(cartId) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cart = await this.retrieve(cartId, { relations: ["items", "discounts", "payment_sessions"], }) @@ -1541,7 +1539,7 @@ class CartService extends BaseService { * @return {Promise} resolves to the updated result. */ async setMetadata(cartId, key, value) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cartRepo = manager.getCustomRepository(this.cartRepository_) const validatedId = this.validateId_(cartId) @@ -1575,7 +1573,7 @@ class CartService extends BaseService { * @return {Promise} resolves to the updated result. */ async deleteMetadata(cartId, key) { - return this.atomicPhase_(async manager => { + return this.atomicPhase_(async (manager) => { const cartRepo = manager.getCustomRepository(this.cartRepository_) const validatedId = this.validateId_(cartId)