fix: custom link resolution in medusa app (#7950)

* fix custom link resolution in medusa app

* improve

* fix duplicate
This commit is contained in:
Adrien de Peretti
2024-07-04 16:50:53 +02:00
committed by GitHub
parent 5544303b91
commit f49139b20f
3 changed files with 16 additions and 12 deletions

View File

@@ -435,12 +435,6 @@ async function MedusaApp_({
...(sharedResourcesConfig?.database ?? {}),
}
const customLinks = MedusaModule.getCustomLinks().map((link) => {
return typeof link === "function"
? link(MedusaModule.getAllJoinerConfigs())
: link
})
if (revert) {
revertLinkModuleMigration &&
(await revertLinkModuleMigration(
@@ -448,7 +442,7 @@ async function MedusaApp_({
options: linkModuleOpt,
injectedDependencies,
},
customLinks
linkModules
))
} else {
linkModuleMigration &&
@@ -457,7 +451,7 @@ async function MedusaApp_({
options: linkModuleOpt,
injectedDependencies,
},
customLinks
linkModules
))
}
}

View File

@@ -2,6 +2,8 @@ import { LinkModulesExtraFields, ModuleJoinerConfig } from "@medusajs/types"
import { isObject, pluralize, toPascalCase } from "../common"
import { composeLinkName } from "../link"
export const DefineLinkSymbol = Symbol.for("DefineLink")
type InputSource = {
serviceName: string
field: string
@@ -116,7 +118,7 @@ export function defineLink(
throw new Error(`Invalid linkable passed for the second argument`)
}
const output = { serviceName: "" }
const output = { [DefineLinkSymbol]: true, serviceName: "" }
const register = function (
modules: ModuleJoinerConfig[]

View File

@@ -4,7 +4,11 @@ import {
ModuleJoinerConfig,
PluginDetails,
} from "@medusajs/types"
import { ContainerRegistrationKeys, isObject } from "@medusajs/utils"
import {
ContainerRegistrationKeys,
DefineLinkSymbol,
isObject,
} from "@medusajs/utils"
/**
* import files from the links directory to retrieve the links to be loaded
@@ -42,8 +46,12 @@ export async function resolvePluginsLinks(
return import_.default
})
)
).filter(Boolean)
).filter((value) => {
return isObject(value) && !value[DefineLinkSymbol]
})
})
)
).flat(Infinity)
)
.flat(Infinity)
.filter(Boolean)
}