From ab2d81f7865a7d660459f27d81ea6aa79cbebda6 Mon Sep 17 00:00:00 2001 From: Adrien de Peretti Date: Sun, 3 Apr 2022 21:01:43 +0200 Subject: [PATCH] fix(medusa): Lint and missing transaction usage (#1297) --- .../admin/draft-orders/create-draft-order.ts | 6 ++--- .../admin/draft-orders/create-line-item.ts | 2 +- .../admin/draft-orders/update-line-item.ts | 2 +- .../api/routes/admin/notifications/index.ts | 1 - .../admin/notifications/list-notifications.ts | 2 +- .../notifications/resend-notification.ts | 2 +- .../admin/orders/add-shipping-method.ts | 2 +- .../api/routes/admin/orders/create-order.ts | 2 +- .../api/routes/admin/orders/create-swap.ts | 21 ++++++++++------ .../api/routes/admin/orders/list-orders.ts | 2 +- .../api/routes/admin/orders/update-order.ts | 2 +- .../routes/admin/products/update-variant.ts | 1 - .../src/api/routes/admin/regions/index.ts | 2 +- .../routes/admin/tax-rates/list-tax-rates.ts | 15 +++-------- .../src/api/routes/admin/uploads/index.ts | 2 +- .../api/routes/store/auth/create-session.ts | 2 +- .../src/api/routes/store/products/index.ts | 4 +-- .../src/api/routes/store/products/search.ts | 2 +- .../store/shipping-options/list-options.ts | 2 +- .../src/api/routes/store/swaps/create-swap.ts | 21 ++++++++++------ .../controllers/customers/list-customers.ts | 5 ++-- packages/medusa/src/services/cart.ts | 4 +-- packages/medusa/src/services/discount.ts | 2 +- packages/medusa/src/services/invite.ts | 2 +- packages/medusa/src/services/order.js | 25 ++++++++----------- .../medusa/src/services/product-variant.ts | 1 - packages/medusa/src/services/return.js | 10 +++----- packages/medusa/src/services/totals.ts | 3 +-- .../medusa/src/strategies/price-selection.ts | 1 - packages/medusa/src/types/product-variant.ts | 1 - 30 files changed, 68 insertions(+), 81 deletions(-) diff --git a/packages/medusa/src/api/routes/admin/draft-orders/create-draft-order.ts b/packages/medusa/src/api/routes/admin/draft-orders/create-draft-order.ts index a5bab9b3c4..cfb349676e 100644 --- a/packages/medusa/src/api/routes/admin/draft-orders/create-draft-order.ts +++ b/packages/medusa/src/api/routes/admin/draft-orders/create-draft-order.ts @@ -189,7 +189,7 @@ export class AdminPostDraftOrdersReq { @IsObject() @IsOptional() - metadata?: Record = {} + metadata?: Record = {} } class ShippingMethod { @@ -198,7 +198,7 @@ class ShippingMethod { @IsObject() @IsOptional() - data?: Record = {} + data?: Record = {} @IsNumber() @IsOptional() @@ -228,5 +228,5 @@ class Item { @IsObject() @IsOptional() - metadata?: Record = {} + metadata?: Record = {} } diff --git a/packages/medusa/src/api/routes/admin/draft-orders/create-line-item.ts b/packages/medusa/src/api/routes/admin/draft-orders/create-line-item.ts index 06ffeff0e7..bbbaa27711 100644 --- a/packages/medusa/src/api/routes/admin/draft-orders/create-line-item.ts +++ b/packages/medusa/src/api/routes/admin/draft-orders/create-line-item.ts @@ -134,5 +134,5 @@ export class AdminPostDraftOrdersDraftOrderLineItemsReq { @IsObject() @IsOptional() - metadata?: Record = {} + metadata?: Record = {} } diff --git a/packages/medusa/src/api/routes/admin/draft-orders/update-line-item.ts b/packages/medusa/src/api/routes/admin/draft-orders/update-line-item.ts index ff4a66f895..9fa0e5f948 100644 --- a/packages/medusa/src/api/routes/admin/draft-orders/update-line-item.ts +++ b/packages/medusa/src/api/routes/admin/draft-orders/update-line-item.ts @@ -128,5 +128,5 @@ export class AdminPostDraftOrdersDraftOrderLineItemsItemReq { @IsObject() @IsOptional() - metadata?: Record = {} + metadata?: Record = {} } diff --git a/packages/medusa/src/api/routes/admin/notifications/index.ts b/packages/medusa/src/api/routes/admin/notifications/index.ts index 2bb00f252f..82c337732d 100644 --- a/packages/medusa/src/api/routes/admin/notifications/index.ts +++ b/packages/medusa/src/api/routes/admin/notifications/index.ts @@ -1,6 +1,5 @@ import { Router } from "express" import { Notification } from "./../../../../" -import { PaginatedResponse } from "./../../../../types/common" import middlewares from "../../../middlewares" const route = Router() diff --git a/packages/medusa/src/api/routes/admin/notifications/list-notifications.ts b/packages/medusa/src/api/routes/admin/notifications/list-notifications.ts index 4752a88970..7c27c5f154 100644 --- a/packages/medusa/src/api/routes/admin/notifications/list-notifications.ts +++ b/packages/medusa/src/api/routes/admin/notifications/list-notifications.ts @@ -54,7 +54,7 @@ export default async (req, res) => { include_resends, } = await validator(AdminGetNotificationsParams, req.query) - const selector: any = {} + const selector: Record = {} let includeFields: string[] = [] if (fields) { diff --git a/packages/medusa/src/api/routes/admin/notifications/resend-notification.ts b/packages/medusa/src/api/routes/admin/notifications/resend-notification.ts index 5396ac0d74..c2ca77e80a 100644 --- a/packages/medusa/src/api/routes/admin/notifications/resend-notification.ts +++ b/packages/medusa/src/api/routes/admin/notifications/resend-notification.ts @@ -47,7 +47,7 @@ export default async (req, res) => { "notificationService" ) - const config: any = {} + const config: Record = {} if (validatedBody.to) { config.to = validatedBody.to diff --git a/packages/medusa/src/api/routes/admin/orders/add-shipping-method.ts b/packages/medusa/src/api/routes/admin/orders/add-shipping-method.ts index 47de55b040..f555c66092 100644 --- a/packages/medusa/src/api/routes/admin/orders/add-shipping-method.ts +++ b/packages/medusa/src/api/routes/admin/orders/add-shipping-method.ts @@ -70,5 +70,5 @@ export class AdminPostOrdersOrderShippingMethodsReq { @IsObject() @IsOptional() - data?: Record = {} + data?: Record = {} } diff --git a/packages/medusa/src/api/routes/admin/orders/create-order.ts b/packages/medusa/src/api/routes/admin/orders/create-order.ts index 8bda22cfa8..bbb65c562d 100644 --- a/packages/medusa/src/api/routes/admin/orders/create-order.ts +++ b/packages/medusa/src/api/routes/admin/orders/create-order.ts @@ -1,4 +1,4 @@ -import { Type, Transform } from "class-transformer" +import { Type } from "class-transformer" import { IsEmail, IsOptional, diff --git a/packages/medusa/src/api/routes/admin/orders/create-swap.ts b/packages/medusa/src/api/routes/admin/orders/create-swap.ts index 7b21f5b58c..07061ba874 100644 --- a/packages/medusa/src/api/routes/admin/orders/create-swap.ts +++ b/packages/medusa/src/api/routes/admin/orders/create-swap.ts @@ -20,6 +20,7 @@ import { SwapService, } from "../../../../services" import { validator } from "../../../../utils/validator" +import { EntityManager } from "typeorm" /** * @oas [post] /order/{id}/swaps @@ -201,10 +202,12 @@ export default async (req, res) => { case "swap_created": { const { key, error } = await idempotencyKeyService.workStage( idempotencyKey.idempotency_key, - async (manager) => { - const swaps = await swapService.list({ - idempotency_key: idempotencyKey.idempotency_key, - }) + async (transactionManager: EntityManager) => { + const swaps = await swapService + .withTransaction(transactionManager) + .list({ + idempotency_key: idempotencyKey.idempotency_key, + }) if (!swaps.length) { throw new MedusaError( @@ -213,10 +216,12 @@ export default async (req, res) => { ) } - const order = await orderService.retrieve(id, { - select: defaultAdminOrdersFields, - relations: defaultAdminOrdersRelations, - }) + const order = await orderService + .withTransaction(transactionManager) + .retrieve(id, { + select: defaultAdminOrdersFields, + relations: defaultAdminOrdersRelations, + }) return { response_code: 200, diff --git a/packages/medusa/src/api/routes/admin/orders/list-orders.ts b/packages/medusa/src/api/routes/admin/orders/list-orders.ts index 307e2dcbef..5b1507a5e5 100644 --- a/packages/medusa/src/api/routes/admin/orders/list-orders.ts +++ b/packages/medusa/src/api/routes/admin/orders/list-orders.ts @@ -1,7 +1,7 @@ import { defaultAdminOrdersRelations, defaultAdminOrdersFields } from "." import { validator } from "../../../../utils/validator" import { IsNumber, IsOptional, IsString } from "class-validator" -import { identity, omit, pick, pickBy } from "lodash" +import { omit, pick, pickBy } from "lodash" import { OrderService } from "../../../../services" import { AdminListOrdersSelector } from "../../../../types/orders" import { Type } from "class-transformer" diff --git a/packages/medusa/src/api/routes/admin/orders/update-order.ts b/packages/medusa/src/api/routes/admin/orders/update-order.ts index 4c504fd02e..f77b6d3d17 100644 --- a/packages/medusa/src/api/routes/admin/orders/update-order.ts +++ b/packages/medusa/src/api/routes/admin/orders/update-order.ts @@ -1,4 +1,4 @@ -import { Transform, Type } from "class-transformer" +import { Type } from "class-transformer" import { IsArray, IsBoolean, diff --git a/packages/medusa/src/api/routes/admin/products/update-variant.ts b/packages/medusa/src/api/routes/admin/products/update-variant.ts index 0d7b814d92..64489cfbc1 100644 --- a/packages/medusa/src/api/routes/admin/products/update-variant.ts +++ b/packages/medusa/src/api/routes/admin/products/update-variant.ts @@ -8,7 +8,6 @@ import { IsString, ValidateNested, } from "class-validator" -import { MedusaError } from "medusa-core-utils" import { defaultAdminProductFields, defaultAdminProductRelations } from "." import { ProductService, ProductVariantService } from "../../../../services" import { PriceSelectionParams } from "../../../../types/price-selection" diff --git a/packages/medusa/src/api/routes/admin/regions/index.ts b/packages/medusa/src/api/routes/admin/regions/index.ts index 1b5780dfc2..aecf79cfed 100644 --- a/packages/medusa/src/api/routes/admin/regions/index.ts +++ b/packages/medusa/src/api/routes/admin/regions/index.ts @@ -107,7 +107,7 @@ export type AdminRegionsDeleteRes = DeleteResponse export class FulfillmentOption { provider_id: string - options: any[] + options: unknown[] } export class AdminGetRegionsRegionFulfillmentOptionsRes { diff --git a/packages/medusa/src/api/routes/admin/tax-rates/list-tax-rates.ts b/packages/medusa/src/api/routes/admin/tax-rates/list-tax-rates.ts index 5c1e6069d2..dcc4bd5ba3 100644 --- a/packages/medusa/src/api/routes/admin/tax-rates/list-tax-rates.ts +++ b/packages/medusa/src/api/routes/admin/tax-rates/list-tax-rates.ts @@ -1,19 +1,10 @@ import { getListConfig, pickByConfig } from "./utils/get-query-config" -import { - IsArray, - ValidateNested, - IsNumber, - IsOptional, - IsString, -} from "class-validator" +import { IsArray, IsNumber, IsOptional, IsString } from "class-validator" import { Type } from "class-transformer" -import { omit, pickBy, pick, identity } from "lodash" +import { omit, pickBy, identity } from "lodash" import { TaxRate } from "../../../.." -import { - NumericalComparisonOperator, - FindConfig, -} from "../../../../types/common" +import { NumericalComparisonOperator } from "../../../../types/common" import { TaxRateService } from "../../../../services" import { IsType } from "../../../../utils/validators/is-type" import { validator } from "../../../../utils/validator" diff --git a/packages/medusa/src/api/routes/admin/uploads/index.ts b/packages/medusa/src/api/routes/admin/uploads/index.ts index 6dddd85ec1..ceeceb50fa 100644 --- a/packages/medusa/src/api/routes/admin/uploads/index.ts +++ b/packages/medusa/src/api/routes/admin/uploads/index.ts @@ -23,7 +23,7 @@ export default (app) => { } export type AdminUploadRes = { - uploads: any[] + uploads: unknown[] } export type AdminDeleteUploadRes = DeleteResponse diff --git a/packages/medusa/src/api/routes/store/auth/create-session.ts b/packages/medusa/src/api/routes/store/auth/create-session.ts index f0592f9968..b6563ef68e 100644 --- a/packages/medusa/src/api/routes/store/auth/create-session.ts +++ b/packages/medusa/src/api/routes/store/auth/create-session.ts @@ -43,7 +43,7 @@ export default async (req, res) => { // Add JWT to cookie req.session.jwt = jwt.sign( { customer_id: result.customer?.id }, - (config as any).jwtSecret, + config.jwtSecret as string, { expiresIn: "30d", } diff --git a/packages/medusa/src/api/routes/store/products/index.ts b/packages/medusa/src/api/routes/store/products/index.ts index 2082586c9c..72a349cfc0 100644 --- a/packages/medusa/src/api/routes/store/products/index.ts +++ b/packages/medusa/src/api/routes/store/products/index.ts @@ -36,8 +36,8 @@ export type StoreProductsRes = { } export type StorePostSearchRes = { - hits: any[] - [k: string]: any + hits: unknown[] + [k: string]: unknown } export type StoreProductsListRes = PaginatedResponse & { diff --git a/packages/medusa/src/api/routes/store/products/search.ts b/packages/medusa/src/api/routes/store/products/search.ts index 4062e8859d..b7a0a137d7 100644 --- a/packages/medusa/src/api/routes/store/products/search.ts +++ b/packages/medusa/src/api/routes/store/products/search.ts @@ -42,5 +42,5 @@ export class StorePostSearchReq { limit?: number @IsOptional() - filter?: any + filter?: unknown } diff --git a/packages/medusa/src/api/routes/store/shipping-options/list-options.ts b/packages/medusa/src/api/routes/store/shipping-options/list-options.ts index e5bc853804..d18cbc8d1a 100644 --- a/packages/medusa/src/api/routes/store/shipping-options/list-options.ts +++ b/packages/medusa/src/api/routes/store/shipping-options/list-options.ts @@ -38,7 +38,7 @@ export default async (req, res) => { ) // should be selector - const query: any = {} + const query: Record = {} if ("is_return" in req.query) { query.is_return = validated.is_return === "true" diff --git a/packages/medusa/src/api/routes/store/swaps/create-swap.ts b/packages/medusa/src/api/routes/store/swaps/create-swap.ts index 856f3e0b27..255081aaab 100644 --- a/packages/medusa/src/api/routes/store/swaps/create-swap.ts +++ b/packages/medusa/src/api/routes/store/swaps/create-swap.ts @@ -15,6 +15,7 @@ import OrderService from "../../../../services/order" import ReturnService from "../../../../services/return" import SwapService from "../../../../services/swap" import { validator } from "../../../../utils/validator" +import { EntityManager } from "typeorm" /** * @oas [post] /swaps @@ -182,10 +183,12 @@ export default async (req, res) => { case "swap_created": { const { key, error } = await idempotencyKeyService.workStage( idempotencyKey.idempotency_key, - async (manager) => { - const swaps = await swapService.list({ - idempotency_key: idempotencyKey.idempotency_key, - }) + async (transactionManager: EntityManager) => { + const swaps = await swapService + .withTransaction(transactionManager) + .list({ + idempotency_key: idempotencyKey.idempotency_key, + }) if (!swaps.length) { throw new MedusaError( @@ -194,10 +197,12 @@ export default async (req, res) => { ) } - const swap = await swapService.retrieve(swaps[0].id, { - select: defaultStoreSwapFields, - relations: defaultStoreSwapRelations, - }) + const swap = await swapService + .withTransaction(transactionManager) + .retrieve(swaps[0].id, { + select: defaultStoreSwapFields, + relations: defaultStoreSwapRelations, + }) return { response_code: 200, diff --git a/packages/medusa/src/controllers/customers/list-customers.ts b/packages/medusa/src/controllers/customers/list-customers.ts index 973abde558..9253434308 100644 --- a/packages/medusa/src/controllers/customers/list-customers.ts +++ b/packages/medusa/src/controllers/customers/list-customers.ts @@ -1,5 +1,5 @@ import { omit, pickBy } from "lodash" -import { AdminGetCustomersParams } from "../../api/routes/admin/customers/list-customers" +import { AdminGetCustomersParams } from "../../api/routes/admin/customers" import { AdminCustomersListRes } from "../../api" import { CustomerService } from "../../services" import { FindConfig } from "../../types/common" @@ -9,8 +9,7 @@ import { Customer } from "../../models/customer" const listAndCount = async ( scope, query, - body, - context = {} + body ): Promise => { const validatedQueryParams = await validator(AdminGetCustomersParams, query) diff --git a/packages/medusa/src/services/cart.ts b/packages/medusa/src/services/cart.ts index 5a2f1b2b05..1a7373e60d 100644 --- a/packages/medusa/src/services/cart.ts +++ b/packages/medusa/src/services/cart.ts @@ -1190,7 +1190,7 @@ class CartService extends BaseService { */ async authorizePayment( cartId: string, - context: Record = {} + context: Record = {} ): Promise { return this.atomicPhase_(async (manager: EntityManager) => { const cartRepository = manager.getCustomRepository(this.cartRepository_) @@ -1500,7 +1500,7 @@ class CartService extends BaseService { async addShippingMethod( cartId: string, optionId: string, - data: Record = {} + data: Record = {} ): Promise { return this.atomicPhase_(async (manager: EntityManager) => { const cart = await this.retrieve(cartId, { diff --git a/packages/medusa/src/services/discount.ts b/packages/medusa/src/services/discount.ts index c706cab1b7..b6547bb802 100644 --- a/packages/medusa/src/services/discount.ts +++ b/packages/medusa/src/services/discount.ts @@ -654,7 +654,7 @@ class DiscountService extends BaseService { resolvedConditionType.type ) }, - async (err: any) => { + async (err: { code: string }) => { if (err.code === PostgresError.DUPLICATE_ERROR) { // A unique key constraint failed meaning the combination of // discount rule id, type, and operator already exists in the db. diff --git a/packages/medusa/src/services/invite.ts b/packages/medusa/src/services/invite.ts index 74fb8fd36f..6fbbdcc3ea 100644 --- a/packages/medusa/src/services/invite.ts +++ b/packages/medusa/src/services/invite.ts @@ -257,7 +257,7 @@ class InviteService extends BaseService { ) } - async resend(id): Promise { + async resend(id): Promise { const inviteRepo = this.manager_.getCustomRepository(InviteRepository) const invite = await inviteRepo.findOne({ id }) diff --git a/packages/medusa/src/services/order.js b/packages/medusa/src/services/order.js index 758bd53bd8..157f33b366 100644 --- a/packages/medusa/src/services/order.js +++ b/packages/medusa/src/services/order.js @@ -188,9 +188,8 @@ class OrderService extends BaseService { const orderRepo = this.manager_.getCustomRepository(this.orderRepository_) const query = this.buildQuery_(selector, config) - const { select, relations, totalsToSelect } = this.transformQueryForTotals_( - config - ) + const { select, relations, totalsToSelect } = + this.transformQueryForTotals_(config) if (select && select.length) { query.select = select @@ -249,9 +248,8 @@ class OrderService extends BaseService { } } - const { select, relations, totalsToSelect } = this.transformQueryForTotals_( - config - ) + const { select, relations, totalsToSelect } = + this.transformQueryForTotals_(config) if (select && select.length) { query.select = select @@ -341,9 +339,8 @@ class OrderService extends BaseService { const orderRepo = this.manager_.getCustomRepository(this.orderRepository_) const validatedId = this.validateId_(orderId) - const { select, relations, totalsToSelect } = this.transformQueryForTotals_( - config - ) + const { select, relations, totalsToSelect } = + this.transformQueryForTotals_(config) const query = { where: { id: validatedId }, @@ -379,9 +376,8 @@ class OrderService extends BaseService { async retrieveByCartId(cartId, config = {}) { const orderRepo = this.manager_.getCustomRepository(this.orderRepository_) - const { select, relations, totalsToSelect } = this.transformQueryForTotals_( - config - ) + const { select, relations, totalsToSelect } = + this.transformQueryForTotals_(config) const query = { where: { cart_id: cartId }, @@ -417,9 +413,8 @@ class OrderService extends BaseService { async retrieveByExternalId(externalId, config = {}) { const orderRepo = this.manager_.getCustomRepository(this.orderRepository_) - const { select, relations, totalsToSelect } = this.transformQueryForTotals_( - config - ) + const { select, relations, totalsToSelect } = + this.transformQueryForTotals_(config) const query = { where: { external_id: externalId }, diff --git a/packages/medusa/src/services/product-variant.ts b/packages/medusa/src/services/product-variant.ts index afd3d46366..62fe890150 100644 --- a/packages/medusa/src/services/product-variant.ts +++ b/packages/medusa/src/services/product-variant.ts @@ -1,4 +1,3 @@ -import { JsonWebTokenError } from "jsonwebtoken" import { MedusaError } from "medusa-core-utils" import { BaseService } from "medusa-interfaces" import { Brackets, EntityManager, ILike, SelectQueryBuilder } from "typeorm" diff --git a/packages/medusa/src/services/return.js b/packages/medusa/src/services/return.js index 28a1748d08..9457188977 100644 --- a/packages/medusa/src/services/return.js +++ b/packages/medusa/src/services/return.js @@ -422,9 +422,8 @@ class ReturnService extends BaseService { } ) - const calculationContext = this.totalsService_.getCalculationContext( - order - ) + const calculationContext = + this.totalsService_.getCalculationContext(order) const taxLines = await this.taxProviderService_ .withTransaction(manager) @@ -496,9 +495,8 @@ class ReturnService extends BaseService { return returnOrder } - const fulfillmentData = await this.fulfillmentProviderService_.createReturn( - returnData - ) + const fulfillmentData = + await this.fulfillmentProviderService_.createReturn(returnData) returnOrder.shipping_data = fulfillmentData diff --git a/packages/medusa/src/services/totals.ts b/packages/medusa/src/services/totals.ts index 511e75e7f0..380162997e 100644 --- a/packages/medusa/src/services/totals.ts +++ b/packages/medusa/src/services/totals.ts @@ -1,8 +1,7 @@ import _ from "lodash" import { MedusaError } from "medusa-core-utils" import { BaseService } from "medusa-interfaces" -import { ITaxCalculationStrategy } from "../interfaces/tax-calculation-strategy" -import { TaxCalculationContext } from "../interfaces/tax-service" +import { ITaxCalculationStrategy, TaxCalculationContext } from "../interfaces" import { Cart } from "../models/cart" import { Discount } from "../models/discount" import { DiscountRuleType } from "../models/discount-rule" diff --git a/packages/medusa/src/strategies/price-selection.ts b/packages/medusa/src/strategies/price-selection.ts index 216ff7bc79..d128169f79 100644 --- a/packages/medusa/src/strategies/price-selection.ts +++ b/packages/medusa/src/strategies/price-selection.ts @@ -7,7 +7,6 @@ import { } from "../interfaces/price-selection-strategy" import { MoneyAmountRepository } from "../repositories/money-amount" import { EntityManager } from "typeorm" -import { MedusaError } from "medusa-core-utils" class PriceSelectionStrategy extends AbstractPriceSelectionStrategy { private moneyAmountRepository_: typeof MoneyAmountRepository diff --git a/packages/medusa/src/types/product-variant.ts b/packages/medusa/src/types/product-variant.ts index 4cf480caf2..73d2ff85cd 100644 --- a/packages/medusa/src/types/product-variant.ts +++ b/packages/medusa/src/types/product-variant.ts @@ -1,7 +1,6 @@ import { IsBoolean, IsInt, - IsNumber, IsOptional, IsString, Validate,