chore(framework,medusa): load custom flags before medusa config (#13312)

* chore(framework,medusa): load custom flags before medusa config

* test

* test runner

* changeset

* check manager featureFlags

* discover and register flags

* rm comments

* update changeset

* changeset

* use local cli

* execute from local medusa command

---------

Co-authored-by: Adrien de Peretti <adrien.deperetti@gmail.com>
This commit is contained in:
Carlos R. L. Rodrigues
2025-09-01 11:04:43 -03:00
committed by GitHub
parent 2a94dbd243
commit b4c0f131b7
10 changed files with 118 additions and 36 deletions

View File

@@ -1,16 +1,15 @@
import { trackFeatureFlag } from "@medusajs/telemetry"
import {
ContainerRegistrationKeys,
discoverFeatureFlagsFromDir,
discoverAndRegisterFeatureFlags,
FeatureFlag,
FlagRouter,
registerFeatureFlag,
} from "@medusajs/utils"
import { asFunction } from "awilix"
import { normalize } from "path"
import { configManager } from "../config"
import { container } from "../container"
import { FlagSettings } from "./types"
import { logger as defaultLogger } from "../logger"
container.register(
ContainerRegistrationKeys.FEATURE_FLAG_ROUTER,
@@ -24,7 +23,11 @@ container.register(
export async function featureFlagsLoader(
sourcePath?: string
): Promise<FlagRouter> {
const { featureFlags: projectConfigFlags = {}, logger } = configManager.config
const confManager = !!configManager.baseDir
? configManager.config
: { featureFlags: {}, logger: defaultLogger }
const { featureFlags: projectConfigFlags = {}, logger } = confManager
if (!sourcePath) {
return FeatureFlag
@@ -32,16 +35,13 @@ export async function featureFlagsLoader(
const flagDir = normalize(sourcePath)
const discovered = await discoverFeatureFlagsFromDir(flagDir)
for (const def of discovered) {
registerFeatureFlag({
flag: def as FlagSettings,
projectConfigFlags,
router: FeatureFlag,
logger,
track: (key) => trackFeatureFlag(key),
})
}
await discoverAndRegisterFeatureFlags({
flagDir,
projectConfigFlags,
router: FeatureFlag,
logger,
track: (key) => trackFeatureFlag(key),
})
return FeatureFlag
}