diff --git a/packages/core/types/src/common/common.ts b/packages/core/types/src/common/common.ts index fc38fdb2cd13b..57515e8b6ce25 100644 --- a/packages/core/types/src/common/common.ts +++ b/packages/core/types/src/common/common.ts @@ -312,3 +312,9 @@ export type QueryConfig = { defaultLimit?: number isList?: boolean } + +export type TransformObjectMethodToAsync = { + [K in keyof T]: T[K] extends (...args: infer A) => infer R + ? (...args: A) => Promise> + : T[K] extends object ? TransformObjectMethodToAsync : T[K]; +} diff --git a/packages/framework/framework/src/container.ts b/packages/framework/framework/src/container.ts index 22428798bcab3..6180ae8ae0f6e 100644 --- a/packages/framework/framework/src/container.ts +++ b/packages/framework/framework/src/container.ts @@ -1,5 +1,6 @@ import { createMedusaContainer } from "@medusajs/utils" import { AwilixContainer, ResolveOptions } from "awilix" +import { TransformObjectMethodToAsync } from "@medusajs/types"; /** * The following interface acts as a bucket that other modules or the @@ -11,7 +12,7 @@ export interface ModuleImplementations {} * The Medusa Container extends [Awilix](https://github.com/jeffijoe/awilix) to * provide dependency injection functionalities. */ -export type MedusaContainer = +export type MedusaContainer> = Omit & { resolve( key: K,