From 79acc38a57f92673ca1fc4cd4d933e874558e441 Mon Sep 17 00:00:00 2001 From: Adrien de Peretti Date: Fri, 12 Aug 2022 11:17:39 +0200 Subject: [PATCH] feat(medusa): Simplify the transaction base service (#2007) **What** Simplify the transaction base service. **How** In fact, it does not need to be template and reduce the extensibility as the type is internally enforce. Now, the type is deduced by this which can be any derived class. --- .../routes/admin/uploads/get-download-url.ts | 2 +- .../__tests__/transaction-base-service.spec.ts | 2 +- .../medusa/src/interfaces/batch-job-strategy.ts | 14 +++++--------- packages/medusa/src/interfaces/file-service.ts | 9 ++++----- .../src/interfaces/notification-service.ts | 11 ++++------- .../medusa/src/interfaces/payment-service.ts | 10 ++++------ .../medusa/src/interfaces/search-service.ts | 10 ++++------ .../src/interfaces/transaction-base-service.ts | 17 +++++++---------- packages/medusa/src/loaders/search-index.ts | 2 +- packages/medusa/src/services/auth.ts | 2 +- packages/medusa/src/services/batch-job.ts | 2 +- packages/medusa/src/services/cart.ts | 2 +- packages/medusa/src/services/claim-item.ts | 2 +- packages/medusa/src/services/claim.ts | 5 +---- .../src/services/custom-shipping-option.ts | 2 +- packages/medusa/src/services/customer.ts | 2 +- .../medusa/src/services/discount-condition.ts | 2 +- packages/medusa/src/services/discount.ts | 2 +- packages/medusa/src/services/draft-order.ts | 2 +- packages/medusa/src/services/file.ts | 2 +- packages/medusa/src/services/fulfillment.ts | 2 +- packages/medusa/src/services/gift-card.ts | 2 +- packages/medusa/src/services/idempotency-key.ts | 2 +- packages/medusa/src/services/inventory.ts | 2 +- packages/medusa/src/services/note.ts | 2 +- packages/medusa/src/services/notification.ts | 6 +++--- packages/medusa/src/services/oauth.ts | 2 +- packages/medusa/src/services/order.ts | 2 +- .../medusa/src/services/payment-provider.ts | 2 +- packages/medusa/src/services/price-list.ts | 2 +- packages/medusa/src/services/pricing.ts | 2 +- .../medusa/src/services/product-collection.ts | 4 ++-- packages/medusa/src/services/product.ts | 5 +---- packages/medusa/src/services/return-reason.ts | 2 +- packages/medusa/src/services/sales-channel.ts | 2 +- packages/medusa/src/services/search.ts | 2 +- packages/medusa/src/services/shipping-option.ts | 2 +- .../medusa/src/services/shipping-profile.ts | 2 +- packages/medusa/src/services/store.ts | 2 +- .../medusa/src/services/strategy-resolver.ts | 17 +++++------------ packages/medusa/src/services/tax-provider.ts | 2 +- packages/medusa/src/services/totals.ts | 2 +- packages/medusa/src/services/user.ts | 6 ++---- .../src/strategies/batch-jobs/order/export.ts | 8 ++++---- .../src/strategies/batch-jobs/product/export.ts | 9 +++------ .../medusa/src/subscribers/search-indexing.ts | 4 ++-- 46 files changed, 82 insertions(+), 115 deletions(-) diff --git a/packages/medusa/src/api/routes/admin/uploads/get-download-url.ts b/packages/medusa/src/api/routes/admin/uploads/get-download-url.ts index dc354361c3..db264e85b1 100644 --- a/packages/medusa/src/api/routes/admin/uploads/get-download-url.ts +++ b/packages/medusa/src/api/routes/admin/uploads/get-download-url.ts @@ -31,7 +31,7 @@ import { IsString } from "class-validator" * description: The Download URL of the file */ export default async (req, res) => { - const fileService: AbstractFileService = req.scope.resolve("fileService") + const fileService: AbstractFileService = req.scope.resolve("fileService") const url = await fileService.getPresignedDownloadUrl({ fileKey: (req.validatedBody as AdminPostUploadsDownloadUrlReq).file_key, diff --git a/packages/medusa/src/interfaces/__tests__/transaction-base-service.spec.ts b/packages/medusa/src/interfaces/__tests__/transaction-base-service.spec.ts index 65c5b62608..44815a73fa 100644 --- a/packages/medusa/src/interfaces/__tests__/transaction-base-service.spec.ts +++ b/packages/medusa/src/interfaces/__tests__/transaction-base-service.spec.ts @@ -4,7 +4,7 @@ import { TransactionBaseService } from "../transaction-base-service" describe("TransactionBaseService", () => { it("should cloned the child class withTransaction", () => { - class Child extends TransactionBaseService { + class Child extends TransactionBaseService { protected manager_!: EntityManager protected transactionManager_!: EntityManager diff --git a/packages/medusa/src/interfaces/batch-job-strategy.ts b/packages/medusa/src/interfaces/batch-job-strategy.ts index a7f733e9dd..02609dd00a 100644 --- a/packages/medusa/src/interfaces/batch-job-strategy.ts +++ b/packages/medusa/src/interfaces/batch-job-strategy.ts @@ -4,8 +4,7 @@ import { ProductExportBatchJob } from "../strategies/batch-jobs/product" import { BatchJobService } from "../services" import { BatchJob } from "../models" -export interface IBatchJobStrategy> - extends TransactionBaseService { +export interface IBatchJobStrategy extends TransactionBaseService { /** * Method for preparing a batch job for processing */ @@ -30,12 +29,9 @@ export interface IBatchJobStrategy> buildTemplate(): Promise } -export abstract class AbstractBatchJobStrategy< - T extends TransactionBaseService, - TContainer = unknown - > - extends TransactionBaseService - implements IBatchJobStrategy +export abstract class AbstractBatchJobStrategy + extends TransactionBaseService + implements IBatchJobStrategy { static identifier: string static batchType: string @@ -113,6 +109,6 @@ export abstract class AbstractBatchJobStrategy< export function isBatchJobStrategy( object: unknown -): object is IBatchJobStrategy { +): object is IBatchJobStrategy { return object instanceof AbstractBatchJobStrategy } diff --git a/packages/medusa/src/interfaces/file-service.ts b/packages/medusa/src/interfaces/file-service.ts index e64a765fcb..11ac50668f 100644 --- a/packages/medusa/src/interfaces/file-service.ts +++ b/packages/medusa/src/interfaces/file-service.ts @@ -30,8 +30,7 @@ export type UploadStreamDescriptorType = { [x: string]: unknown } -export interface IFileService> - extends TransactionBaseService { +export interface IFileService extends TransactionBaseService { /** * upload file to fileservice * @param file Multer file from express multipart/form-data @@ -69,9 +68,9 @@ export interface IFileService> * */ getPresignedDownloadUrl(fileData: GetUploadedFileType): Promise } -export abstract class AbstractFileService> - extends TransactionBaseService - implements IFileService +export abstract class AbstractFileService + extends TransactionBaseService + implements IFileService { abstract upload( fileData: Express.Multer.File diff --git a/packages/medusa/src/interfaces/notification-service.ts b/packages/medusa/src/interfaces/notification-service.ts index a90a054b73..6b9d9ba8ff 100644 --- a/packages/medusa/src/interfaces/notification-service.ts +++ b/packages/medusa/src/interfaces/notification-service.ts @@ -7,8 +7,7 @@ type ReturnedData = { data: Record } -export interface INotificationService> - extends TransactionBaseService { +export interface INotificationService extends TransactionBaseService { sendNotification( event: string, data: unknown, @@ -22,11 +21,9 @@ export interface INotificationService> ): Promise } -export abstract class AbstractNotificationService< - T extends TransactionBaseService - > - extends TransactionBaseService - implements INotificationService +export abstract class AbstractNotificationService + extends TransactionBaseService + implements INotificationService { static identifier: string diff --git a/packages/medusa/src/interfaces/payment-service.ts b/packages/medusa/src/interfaces/payment-service.ts index 03a068f675..216052d230 100644 --- a/packages/medusa/src/interfaces/payment-service.ts +++ b/packages/medusa/src/interfaces/payment-service.ts @@ -12,8 +12,8 @@ export type Data = Record export type PaymentData = Data export type PaymentSessionData = Data -export interface PaymentService> - extends TransactionBaseService { +export interface PaymentService + extends TransactionBaseService { getIdentifier(): string getPaymentData(paymentSession: PaymentSession): Promise @@ -50,10 +50,8 @@ export interface PaymentService> getStatus(data: Data): Promise } -export abstract class AbstractPaymentService< - T extends TransactionBaseService - > - extends TransactionBaseService +export abstract class AbstractPaymentService + extends TransactionBaseService implements PaymentService { protected constructor(container: unknown, config?: Record) { diff --git a/packages/medusa/src/interfaces/search-service.ts b/packages/medusa/src/interfaces/search-service.ts index ac7563cc59..a481e45e4b 100644 --- a/packages/medusa/src/interfaces/search-service.ts +++ b/packages/medusa/src/interfaces/search-service.ts @@ -1,7 +1,7 @@ import { TransactionBaseService } from "./transaction-base-service" import { SearchService } from "medusa-interfaces" -export interface ISearchService> { +export interface ISearchService { options: Record /** @@ -72,11 +72,9 @@ export interface ISearchService> { updateSettings(indexName: string, settings: unknown): unknown } -export abstract class AbstractSearchService< - T extends TransactionBaseService - > - extends TransactionBaseService - implements ISearchService +export abstract class AbstractSearchService + extends TransactionBaseService + implements ISearchService { abstract readonly isDefault protected readonly options_: Record diff --git a/packages/medusa/src/interfaces/transaction-base-service.ts b/packages/medusa/src/interfaces/transaction-base-service.ts index 96d472bb23..ae9da955a9 100644 --- a/packages/medusa/src/interfaces/transaction-base-service.ts +++ b/packages/medusa/src/interfaces/transaction-base-service.ts @@ -1,34 +1,31 @@ import { EntityManager } from "typeorm" import { IsolationLevel } from "typeorm/driver/types/IsolationLevel" -export abstract class TransactionBaseService< - TChild extends TransactionBaseService, - TContainer = unknown -> { +export abstract class TransactionBaseService { protected abstract manager_: EntityManager protected abstract transactionManager_: EntityManager | undefined protected constructor( - protected readonly container: TContainer, - protected readonly configModule?: Record + protected readonly __container__: any, + protected readonly __configModule__?: Record ) {} - withTransaction(transactionManager?: EntityManager): this | TChild { + withTransaction(transactionManager?: EntityManager): this { if (!transactionManager) { return this } const cloned = new (this.constructor)( { - ...this.container, + ...this.__container__, manager: transactionManager, }, - this.configModule + this.__configModule__ ) cloned.transactionManager_ = transactionManager - return cloned as TChild + return cloned } protected shouldRetryTransaction_( diff --git a/packages/medusa/src/loaders/search-index.ts b/packages/medusa/src/loaders/search-index.ts index a3bd002cf4..1265ab00f7 100644 --- a/packages/medusa/src/loaders/search-index.ts +++ b/packages/medusa/src/loaders/search-index.ts @@ -22,7 +22,7 @@ export default async ({ container: MedusaContainer }): Promise => { const searchService = - container.resolve>("searchService") + container.resolve("searchService") const logger = container.resolve("logger") if (searchService.isDefault) { logger.warn( diff --git a/packages/medusa/src/services/auth.ts b/packages/medusa/src/services/auth.ts index 492ef5d18a..6393ba76b5 100644 --- a/packages/medusa/src/services/auth.ts +++ b/packages/medusa/src/services/auth.ts @@ -16,7 +16,7 @@ type InjectedDependencies = { * Can authenticate a user based on email password combination * @extends BaseService */ -class AuthService extends TransactionBaseService { +class AuthService extends TransactionBaseService { protected manager_: EntityManager protected transactionManager_: EntityManager | undefined protected readonly userService_: UserService diff --git a/packages/medusa/src/services/batch-job.ts b/packages/medusa/src/services/batch-job.ts index 57163b531f..5713686956 100644 --- a/packages/medusa/src/services/batch-job.ts +++ b/packages/medusa/src/services/batch-job.ts @@ -23,7 +23,7 @@ type InjectedDependencies = { strategyResolverService: StrategyResolverService } -class BatchJobService extends TransactionBaseService { +class BatchJobService extends TransactionBaseService { static readonly Events = { CREATED: "batch.created", UPDATED: "batch.updated", diff --git a/packages/medusa/src/services/cart.ts b/packages/medusa/src/services/cart.ts index ed5e142631..22297dd084 100644 --- a/packages/medusa/src/services/cart.ts +++ b/packages/medusa/src/services/cart.ts @@ -83,7 +83,7 @@ type TotalsConfig = { /* Provides layer to manipulate carts. * @implements BaseService */ -class CartService extends TransactionBaseService { +class CartService extends TransactionBaseService { static readonly Events = { CUSTOMER_UPDATED: "cart.customer_updated", CREATED: "cart.created", diff --git a/packages/medusa/src/services/claim-item.ts b/packages/medusa/src/services/claim-item.ts index 2129368c91..5a8681a6b8 100644 --- a/packages/medusa/src/services/claim-item.ts +++ b/packages/medusa/src/services/claim-item.ts @@ -11,7 +11,7 @@ import { buildQuery, setMetadata } from "../utils" import EventBusService from "./event-bus" import LineItemService from "./line-item" -class ClaimItemService extends BaseService { +class ClaimItemService extends BaseService { static Events = { CREATED: "claim_item.created", UPDATED: "claim_item.updated", diff --git a/packages/medusa/src/services/claim.ts b/packages/medusa/src/services/claim.ts index 1253d8acb9..b911896f98 100644 --- a/packages/medusa/src/services/claim.ts +++ b/packages/medusa/src/services/claim.ts @@ -49,10 +49,7 @@ type InjectedDependencies = { totalsService: TotalsService } -export default class ClaimService extends TransactionBaseService< - ClaimService, - InjectedDependencies -> { +export default class ClaimService extends TransactionBaseService { static readonly Events = { CREATED: "claim.created", UPDATED: "claim.updated", diff --git a/packages/medusa/src/services/custom-shipping-option.ts b/packages/medusa/src/services/custom-shipping-option.ts index 370d5d56f9..29f7b7860a 100644 --- a/packages/medusa/src/services/custom-shipping-option.ts +++ b/packages/medusa/src/services/custom-shipping-option.ts @@ -11,7 +11,7 @@ type InjectedDependencies = { manager: EntityManager customShippingOptionRepository: typeof CustomShippingOptionRepository } -class CustomShippingOptionService extends TransactionBaseService { +class CustomShippingOptionService extends TransactionBaseService { protected manager_: EntityManager protected transactionManager_: EntityManager | undefined protected customShippingOptionRepository_: typeof CustomShippingOptionRepository diff --git a/packages/medusa/src/services/customer.ts b/packages/medusa/src/services/customer.ts index 8487bfc9a0..fc5c1b6b7d 100644 --- a/packages/medusa/src/services/customer.ts +++ b/packages/medusa/src/services/customer.ts @@ -22,7 +22,7 @@ type InjectedDependencies = { /** * Provides layer to manipulate customers. */ -class CustomerService extends TransactionBaseService { +class CustomerService extends TransactionBaseService { protected readonly customerRepository_: typeof CustomerRepository protected readonly addressRepository_: typeof AddressRepository protected readonly eventBusService_: EventBusService diff --git a/packages/medusa/src/services/discount-condition.ts b/packages/medusa/src/services/discount-condition.ts index 560cdc0fad..fffbe8a4fe 100644 --- a/packages/medusa/src/services/discount-condition.ts +++ b/packages/medusa/src/services/discount-condition.ts @@ -27,7 +27,7 @@ type InjectedDependencies = { * Provides layer to manipulate discount conditions. * @implements {BaseService} */ -class DiscountConditionService extends TransactionBaseService { +class DiscountConditionService extends TransactionBaseService { protected readonly discountConditionRepository_: typeof DiscountConditionRepository protected readonly eventBus_: EventBusService diff --git a/packages/medusa/src/services/discount.ts b/packages/medusa/src/services/discount.ts index 5ea3d45427..7a16487c10 100644 --- a/packages/medusa/src/services/discount.ts +++ b/packages/medusa/src/services/discount.ts @@ -44,7 +44,7 @@ import { buildQuery, setMetadata } from "../utils" * Provides layer to manipulate discounts. * @implements {BaseService} */ -class DiscountService extends TransactionBaseService { +class DiscountService extends TransactionBaseService { protected manager_: EntityManager protected transactionManager_: EntityManager | undefined diff --git a/packages/medusa/src/services/draft-order.ts b/packages/medusa/src/services/draft-order.ts index e519aab001..5f237fa074 100644 --- a/packages/medusa/src/services/draft-order.ts +++ b/packages/medusa/src/services/draft-order.ts @@ -30,7 +30,7 @@ type InjectedDependencies = { * Handles draft orders * @implements {BaseService} */ -class DraftOrderService extends TransactionBaseService { +class DraftOrderService extends TransactionBaseService { static readonly Events = { CREATED: "draft_order.created", UPDATED: "draft_order.updated", diff --git a/packages/medusa/src/services/file.ts b/packages/medusa/src/services/file.ts index c8618d4cae..28f7309e23 100644 --- a/packages/medusa/src/services/file.ts +++ b/packages/medusa/src/services/file.ts @@ -8,7 +8,7 @@ import { UploadStreamDescriptorType, } from "../interfaces" -class DefaultFileService extends AbstractFileService { +class DefaultFileService extends AbstractFileService { upload(fileData: Express.Multer.File): Promise { throw new MedusaError( MedusaError.Types.UNEXPECTED_STATE, diff --git a/packages/medusa/src/services/fulfillment.ts b/packages/medusa/src/services/fulfillment.ts index 89a97b770d..ea882f94da 100644 --- a/packages/medusa/src/services/fulfillment.ts +++ b/packages/medusa/src/services/fulfillment.ts @@ -32,7 +32,7 @@ type InjectedDependencies = { /** * Handles Fulfillments */ -class FulfillmentService extends TransactionBaseService { +class FulfillmentService extends TransactionBaseService { protected manager_: EntityManager protected transactionManager_: EntityManager | undefined diff --git a/packages/medusa/src/services/gift-card.ts b/packages/medusa/src/services/gift-card.ts index 3da6c288e1..d2c626bf59 100644 --- a/packages/medusa/src/services/gift-card.ts +++ b/packages/medusa/src/services/gift-card.ts @@ -30,7 +30,7 @@ type InjectedDependencies = { /** * Provides layer to manipulate gift cards. */ -class GiftCardService extends TransactionBaseService { +class GiftCardService extends TransactionBaseService { protected readonly giftCardRepository_: typeof GiftCardRepository protected readonly giftCardTransactionRepo_: typeof GiftCardTransactionRepository protected readonly regionService_: RegionService diff --git a/packages/medusa/src/services/idempotency-key.ts b/packages/medusa/src/services/idempotency-key.ts index 85026a1055..12e4b8c37a 100644 --- a/packages/medusa/src/services/idempotency-key.ts +++ b/packages/medusa/src/services/idempotency-key.ts @@ -13,7 +13,7 @@ type InjectedDependencies = { idempotencyKeyRepository: typeof IdempotencyKeyRepository } -class IdempotencyKeyService extends TransactionBaseService { +class IdempotencyKeyService extends TransactionBaseService { protected manager_: EntityManager protected transactionManager_: EntityManager | undefined diff --git a/packages/medusa/src/services/inventory.ts b/packages/medusa/src/services/inventory.ts index e3d2c13d09..655de69c0a 100644 --- a/packages/medusa/src/services/inventory.ts +++ b/packages/medusa/src/services/inventory.ts @@ -9,7 +9,7 @@ type InventoryServiceProps = { manager: EntityManager productVariantService: ProductVariantService } -class InventoryService extends TransactionBaseService { +class InventoryService extends TransactionBaseService { protected readonly productVariantService_: ProductVariantService protected manager_: EntityManager diff --git a/packages/medusa/src/services/note.ts b/packages/medusa/src/services/note.ts index d2cc5519ec..fffc0f19c6 100644 --- a/packages/medusa/src/services/note.ts +++ b/packages/medusa/src/services/note.ts @@ -14,7 +14,7 @@ type InjectedDependencies = { eventBusService: EventBusService } -class NoteService extends TransactionBaseService { +class NoteService extends TransactionBaseService { static readonly Events = { CREATED: "note.created", UPDATED: "note.updated", diff --git a/packages/medusa/src/services/notification.ts b/packages/medusa/src/services/notification.ts index d67de09324..5c5fbcac97 100644 --- a/packages/medusa/src/services/notification.ts +++ b/packages/medusa/src/services/notification.ts @@ -19,14 +19,14 @@ type InjectedDependencies = { } type NotificationProviderKey = `noti_${string}` -class NotificationService extends TransactionBaseService { +class NotificationService extends TransactionBaseService { protected manager_: EntityManager protected transactionManager_: EntityManager | undefined protected subscribers_ = {} protected attachmentGenerator_: unknown = null protected readonly container_: InjectedDependencies & { - [key in `${NotificationProviderKey}`]: AbstractNotificationService + [key in `${NotificationProviderKey}`]: AbstractNotificationService } protected readonly logger_: Logger protected readonly notificationRepository_: typeof NotificationRepository @@ -151,7 +151,7 @@ class NotificationService extends TransactionBaseService { * @param id - the id of the provider * @return the notification provider */ - protected retrieveProvider_(id: string): AbstractNotificationService { + protected retrieveProvider_(id: string): AbstractNotificationService { try { return this.container_[`noti_${id}`] } catch (err) { diff --git a/packages/medusa/src/services/oauth.ts b/packages/medusa/src/services/oauth.ts index 8a819c7305..5ca811aaab 100644 --- a/packages/medusa/src/services/oauth.ts +++ b/packages/medusa/src/services/oauth.ts @@ -15,7 +15,7 @@ type InjectedDependencies = MedusaContainer & { oauthRepository: typeof OauthRepository } -class Oauth extends TransactionBaseService { +class Oauth extends TransactionBaseService { protected manager_: EntityManager protected transactionManager_: EntityManager | undefined static Events = { diff --git a/packages/medusa/src/services/order.ts b/packages/medusa/src/services/order.ts index 93115a1b9a..51f8be56e2 100644 --- a/packages/medusa/src/services/order.ts +++ b/packages/medusa/src/services/order.ts @@ -64,7 +64,7 @@ type InjectedDependencies = { eventBusService: EventBusService } -class OrderService extends TransactionBaseService { +class OrderService extends TransactionBaseService { static readonly Events = { GIFT_CARD_CREATED: "order.gift_card_created", PAYMENT_CAPTURED: "order.payment_captured", diff --git a/packages/medusa/src/services/payment-provider.ts b/packages/medusa/src/services/payment-provider.ts index b3f5de7cb3..075e1f748b 100644 --- a/packages/medusa/src/services/payment-provider.ts +++ b/packages/medusa/src/services/payment-provider.ts @@ -33,7 +33,7 @@ type InjectedDependencies = { /** * Helps retrieve payment providers */ -export default class PaymentProviderService extends TransactionBaseService { +export default class PaymentProviderService extends TransactionBaseService { protected manager_: EntityManager protected transactionManager_: EntityManager | undefined protected readonly container_: InjectedDependencies diff --git a/packages/medusa/src/services/price-list.ts b/packages/medusa/src/services/price-list.ts index f005c0c1fb..c15b45b30e 100644 --- a/packages/medusa/src/services/price-list.ts +++ b/packages/medusa/src/services/price-list.ts @@ -40,7 +40,7 @@ type PriceListConstructorProps = { * Provides layer to manipulate product tags. * @extends BaseService */ -class PriceListService extends TransactionBaseService { +class PriceListService extends TransactionBaseService { protected manager_: EntityManager protected transactionManager_: EntityManager | undefined diff --git a/packages/medusa/src/services/pricing.ts b/packages/medusa/src/services/pricing.ts index 5cc9a50746..5840bb55d3 100644 --- a/packages/medusa/src/services/pricing.ts +++ b/packages/medusa/src/services/pricing.ts @@ -29,7 +29,7 @@ type InjectedDependencies = { * Allows retrieval of prices. * @extends BaseService */ -class PricingService extends TransactionBaseService { +class PricingService extends TransactionBaseService { protected manager_: EntityManager protected transactionManager_: EntityManager | undefined protected readonly regionService: RegionService diff --git a/packages/medusa/src/services/product-collection.ts b/packages/medusa/src/services/product-collection.ts index c95e17ef10..51a0422e61 100644 --- a/packages/medusa/src/services/product-collection.ts +++ b/packages/medusa/src/services/product-collection.ts @@ -7,7 +7,7 @@ import { ProductCollectionRepository } from "../repositories/product-collection" import { ExtendedFindConfig, FindConfig, QuerySelector } from "../types/common" import { CreateProductCollection, - UpdateProductCollection + UpdateProductCollection, } from "../types/product-collection" import { buildQuery, setMetadata } from "../utils" import { formatException } from "../utils/exception-formatter" @@ -23,7 +23,7 @@ type InjectedDependencies = { /** * Provides layer to manipulate product collections. */ -class ProductCollectionService extends TransactionBaseService { +class ProductCollectionService extends TransactionBaseService { protected manager_: EntityManager protected transactionManager_: EntityManager | undefined diff --git a/packages/medusa/src/services/product.ts b/packages/medusa/src/services/product.ts index 7346a4579d..a5bf4163fc 100644 --- a/packages/medusa/src/services/product.ts +++ b/packages/medusa/src/services/product.ts @@ -47,10 +47,7 @@ type InjectedDependencies = { featureFlagRouter: FlagRouter } -class ProductService extends TransactionBaseService< - ProductService, - InjectedDependencies -> { +class ProductService extends TransactionBaseService { protected manager_: EntityManager protected transactionManager_: EntityManager | undefined diff --git a/packages/medusa/src/services/return-reason.ts b/packages/medusa/src/services/return-reason.ts index d59e460598..1e099899dc 100644 --- a/packages/medusa/src/services/return-reason.ts +++ b/packages/medusa/src/services/return-reason.ts @@ -12,7 +12,7 @@ type InjectedDependencies = { returnReasonRepository: typeof ReturnReasonRepository } -class ReturnReasonService extends TransactionBaseService { +class ReturnReasonService extends TransactionBaseService { protected readonly retReasonRepo_: typeof ReturnReasonRepository protected manager_: EntityManager diff --git a/packages/medusa/src/services/sales-channel.ts b/packages/medusa/src/services/sales-channel.ts index 90d32d104a..57489ec971 100644 --- a/packages/medusa/src/services/sales-channel.ts +++ b/packages/medusa/src/services/sales-channel.ts @@ -20,7 +20,7 @@ type InjectedDependencies = { storeService: StoreService } -class SalesChannelService extends TransactionBaseService { +class SalesChannelService extends TransactionBaseService { static Events = { UPDATED: "sales_channel.updated", CREATED: "sales_channel.created", diff --git a/packages/medusa/src/services/search.ts b/packages/medusa/src/services/search.ts index c6297e82c3..d718d72128 100644 --- a/packages/medusa/src/services/search.ts +++ b/packages/medusa/src/services/search.ts @@ -7,7 +7,7 @@ type InjectedDependencies = { manager: EntityManager } -export default class DefaultSearchService extends AbstractSearchService { +export default class DefaultSearchService extends AbstractSearchService { isDefault = true protected manager_: EntityManager diff --git a/packages/medusa/src/services/shipping-option.ts b/packages/medusa/src/services/shipping-option.ts index 0eef3b2ce5..a11a68ae94 100644 --- a/packages/medusa/src/services/shipping-option.ts +++ b/packages/medusa/src/services/shipping-option.ts @@ -26,7 +26,7 @@ import RegionService from "./region" /** * Provides layer to manipulate profiles. */ -class ShippingOptionService extends TransactionBaseService { +class ShippingOptionService extends TransactionBaseService { protected readonly providerService_: FulfillmentProviderService protected readonly regionService_: RegionService protected readonly requirementRepository_: typeof ShippingOptionRequirementRepository diff --git a/packages/medusa/src/services/shipping-profile.ts b/packages/medusa/src/services/shipping-profile.ts index 4ee1b8e3ba..2eb599207f 100644 --- a/packages/medusa/src/services/shipping-profile.ts +++ b/packages/medusa/src/services/shipping-profile.ts @@ -32,7 +32,7 @@ type InjectedDependencies = { * @constructor * @implements {BaseService} */ -class ShippingProfileService extends TransactionBaseService { +class ShippingProfileService extends TransactionBaseService { protected readonly productService_: ProductService protected readonly shippingOptionService_: ShippingOptionService protected readonly customShippingOptionService_: CustomShippingOptionService diff --git a/packages/medusa/src/services/store.ts b/packages/medusa/src/services/store.ts index e2b9ece03e..348efb43ed 100644 --- a/packages/medusa/src/services/store.ts +++ b/packages/medusa/src/services/store.ts @@ -21,7 +21,7 @@ type InjectedDependencies = { * Provides layer to manipulate store settings. * @extends BaseService */ -class StoreService extends TransactionBaseService { +class StoreService extends TransactionBaseService { protected manager_: EntityManager protected transactionManager_: EntityManager diff --git a/packages/medusa/src/services/strategy-resolver.ts b/packages/medusa/src/services/strategy-resolver.ts index 8983a3246e..070181a412 100644 --- a/packages/medusa/src/services/strategy-resolver.ts +++ b/packages/medusa/src/services/strategy-resolver.ts @@ -7,26 +7,19 @@ type InjectedDependencies = { [key: string]: unknown } -export default class StrategyResolver extends TransactionBaseService< - StrategyResolver, - InjectedDependencies -> { +export default class StrategyResolver extends TransactionBaseService { protected manager_: EntityManager protected transactionManager_: EntityManager | undefined - constructor(container: InjectedDependencies) { + constructor(protected readonly container: InjectedDependencies) { super(container) this.manager_ = container.manager } - resolveBatchJobByType>( - type: string - ): AbstractBatchJobStrategy { - let resolved: AbstractBatchJobStrategy + resolveBatchJobByType(type: string): AbstractBatchJobStrategy { + let resolved: AbstractBatchJobStrategy try { - resolved = this.container[ - `batchType_${type}` - ] as AbstractBatchJobStrategy + resolved = this.container[`batchType_${type}`] as AbstractBatchJobStrategy } catch (e) { throw new MedusaError( MedusaError.Types.NOT_FOUND, diff --git a/packages/medusa/src/services/tax-provider.ts b/packages/medusa/src/services/tax-provider.ts index 6020c4113e..13d7bd503b 100644 --- a/packages/medusa/src/services/tax-provider.ts +++ b/packages/medusa/src/services/tax-provider.ts @@ -38,7 +38,7 @@ type RegionDetails = { /** * Finds tax providers and assists in tax related operations. */ -class TaxProviderService extends TransactionBaseService { +class TaxProviderService extends TransactionBaseService { protected manager_: EntityManager protected transactionManager_: EntityManager diff --git a/packages/medusa/src/services/totals.ts b/packages/medusa/src/services/totals.ts index 8addac9e7a..5ff720d5e4 100644 --- a/packages/medusa/src/services/totals.ts +++ b/packages/medusa/src/services/totals.ts @@ -90,7 +90,7 @@ type CalculationContextOptions = { * A service that calculates total and subtotals for orders, carts etc.. * @implements {BaseService} */ -class TotalsService extends TransactionBaseService { +class TotalsService extends TransactionBaseService { protected manager_: EntityManager protected transactionManager_: EntityManager diff --git a/packages/medusa/src/services/user.ts b/packages/medusa/src/services/user.ts index 7c7a5f333d..da101ebb98 100644 --- a/packages/medusa/src/services/user.ts +++ b/packages/medusa/src/services/user.ts @@ -24,7 +24,7 @@ type UserServiceProps = { * Provides layer to manipulate users. * @extends BaseService */ -class UserService extends TransactionBaseService { +class UserService extends TransactionBaseService { static Events = { PASSWORD_RESET: "user.password_reset", CREATED: "user.created", @@ -51,9 +51,7 @@ class UserService extends TransactionBaseService { * @return {string} the validated email */ validateEmail_(email: string): string { - const schema = Validator.string() - .email() - .required() + const schema = Validator.string().email().required() const { value, error } = schema.validate(email) if (error) { throw new MedusaError( diff --git a/packages/medusa/src/strategies/batch-jobs/order/export.ts b/packages/medusa/src/strategies/batch-jobs/order/export.ts index 6653d23d61..3b41286fea 100644 --- a/packages/medusa/src/strategies/batch-jobs/order/export.ts +++ b/packages/medusa/src/strategies/batch-jobs/order/export.ts @@ -18,14 +18,14 @@ import SalesChannelFeatureFlag from "../../../loaders/feature-flags/sales-channe import { FindConfig } from "../../../types/common" type InjectedDependencies = { - fileService: IFileService + fileService: IFileService orderService: OrderService batchJobService: BatchJobService manager: EntityManager featureFlagRouter: FlagRouter } -class OrderExportStrategy extends AbstractBatchJobStrategy { +class OrderExportStrategy extends AbstractBatchJobStrategy { public static identifier = "order-export-strategy" public static batchType = "order-export" @@ -37,7 +37,7 @@ class OrderExportStrategy extends AbstractBatchJobStrategy protected manager_: EntityManager protected transactionManager_: EntityManager | undefined - protected readonly fileService_: IFileService + protected readonly fileService_: IFileService protected readonly batchJobService_: BatchJobService protected readonly orderService_: OrderService protected readonly featureFlagRouter_: FlagRouter @@ -258,7 +258,7 @@ class OrderExportStrategy extends AbstractBatchJobStrategy await this.fileService_ .withTransaction(transactionManager) - .delete({ key: fileKey }) + .delete({ fileKey: fileKey }) return } diff --git a/packages/medusa/src/strategies/batch-jobs/product/export.ts b/packages/medusa/src/strategies/batch-jobs/product/export.ts index 2e52e70c46..ef88c3ac13 100644 --- a/packages/medusa/src/strategies/batch-jobs/product/export.ts +++ b/packages/medusa/src/strategies/batch-jobs/product/export.ts @@ -20,14 +20,11 @@ type InjectedDependencies = { manager: EntityManager batchJobService: BatchJobService productService: ProductService - fileService: IFileService + fileService: IFileService featureFlagRouter: FlagRouter } -export default class ProductExportStrategy extends AbstractBatchJobStrategy< - ProductExportStrategy, - InjectedDependencies -> { +export default class ProductExportStrategy extends AbstractBatchJobStrategy { public static identifier = "product-export-strategy" public static batchType = "product-export" @@ -36,7 +33,7 @@ export default class ProductExportStrategy extends AbstractBatchJobStrategy< protected readonly batchJobService_: BatchJobService protected readonly productService_: ProductService - protected readonly fileService_: IFileService + protected readonly fileService_: IFileService protected readonly featureFlagRouter_: FlagRouter protected readonly defaultRelations_ = [ diff --git a/packages/medusa/src/subscribers/search-indexing.ts b/packages/medusa/src/subscribers/search-indexing.ts index 2f7f2f31f7..e9c060a20d 100644 --- a/packages/medusa/src/subscribers/search-indexing.ts +++ b/packages/medusa/src/subscribers/search-indexing.ts @@ -7,13 +7,13 @@ import { ISearchService } from "../interfaces" type InjectedDependencies = { eventBusService: EventBusService - searchService: ISearchService + searchService: ISearchService productService: ProductService } class SearchIndexingSubscriber { private readonly eventBusService_: EventBusService - private readonly searchService_: ISearchService + private readonly searchService_: ISearchService private readonly productService_: ProductService constructor({