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

@@ -0,0 +1,43 @@
import { FlagSettings, Logger } from "@medusajs/types"
import { discoverFeatureFlagsFromDir } from "./discover-feature-flags"
import { FlagRouter } from "./flag-router"
import { registerFeatureFlag } from "./register-flag"
export interface DiscoverAndRegisterOptions {
flagDir: string
projectConfigFlags?: Record<string, any>
router: FlagRouter
logger?: Logger
track?: (key: string) => void
maxDepth?: number
}
/**
* Utility function to discover and register feature flags from a directory
*/
export async function discoverAndRegisterFeatureFlags(
options: DiscoverAndRegisterOptions
): Promise<void> {
const {
flagDir,
projectConfigFlags = {},
router,
logger,
track,
maxDepth,
} = options
const discovered = await discoverFeatureFlagsFromDir(flagDir, maxDepth)
for (const def of discovered) {
const registerOptions: Parameters<typeof registerFeatureFlag>[0] = {
flag: def as FlagSettings,
projectConfigFlags,
router,
logger,
track,
}
registerFeatureFlag(registerOptions)
}
}

View File

@@ -1,3 +1,4 @@
export * from "./discover-feature-flags"
export * from "./discover-and-register-feature-flags"
export * from "./flag-router"
export * from "./register-flag"