/**
 * Monorepo 路径修复
 *
 * Cool Admin 的 LocationUtil.getRunPath() 基于 Error stack trace 解析路径。
 * 在 pnpm monorepo 中，从 node_modules 内部调用时会解析到根目录的 dist/，
 * 导致找不到 modules/ 目录，模块配置(module.base 等)无法加载。
 *
 * 修复：覆盖 getRunPath 返回固定的正确路径，同时修补 LocationUtil 类原型
 * 确保 IoC 容器创建的实例也使用正确路径。
 */

// __dirname 在 dev 模式下指向 src/，在 prod 模式下指向 dist/
const correctPath = __dirname;

const locationModule = require('@cool-midway/core/dist/util/location');

// 修补导出的单例 (CoolModuleConfig 中使用)
if (locationModule?.default) {
  locationModule.default.getRunPath = () => correctPath;
  locationModule.default.distPath = correctPath;
}

// 修补类的原型 (IoC 容器创建的新实例也会使用正确路径)
if (locationModule?.LocationUtil) {
  locationModule.LocationUtil.prototype.getRunPath = () => correctPath;
  const originalInit = locationModule.LocationUtil.prototype.init;
  locationModule.LocationUtil.prototype.init = async function () {
    await originalInit.call(this);
    this.distPath = correctPath;
  };
}
