diff --git a/apps/jingrow/frontend/src/shared/extensions/index.ts b/apps/jingrow/frontend/src/shared/extensions/index.ts index c13ff5f..8837da8 100644 --- a/apps/jingrow/frontend/src/shared/extensions/index.ts +++ b/apps/jingrow/frontend/src/shared/extensions/index.ts @@ -41,7 +41,30 @@ function loadScript(url: string): Promise { }) } +const extensionGlob = import.meta.glob('@apps/*/frontend/src/shared/extensions/*.ts') +const localExtensionGlob = import.meta.glob('/src/shared/extensions/*.ts') + +let extensionsLoaded = false + +async function loadExtensionModules(): Promise { + if (extensionsLoaded) return + extensionsLoaded = true + + const allExtensions = { ...extensionGlob, ...localExtensionGlob } + for (const [path, loader] of Object.entries(allExtensions)) { + try { + await loader() + } catch (err) { + console.error(`[Extensions] Failed to load extension from ${path}:`, err) + } + } +} + export async function loadAppExtensions(): Promise { + // Load TS extension modules from all apps + await loadExtensionModules() + + // Load legacy JS extensions via script tags const urls: string[] = win.jingrow?.boot?.vue_app_extensions || [] if (!urls.length) return