{"version":3,"file":"mf-config.mjs","names":[],"sources":["../../src/runtime/mf-config.ts"],"sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, join } from \"node:path\";\nimport pkg from \"../../package.json\";\n\nconst require = createRequire(import.meta.url);\ndeclare const __EVERY_PLUGIN_VERSION__: string | undefined;\n\nfunction readPackageVersion(): string {\n  try {\n    return (require(\"../../package.json\") as { version: string }).version;\n  } catch {\n    return \"0.0.0\";\n  }\n}\n\nfunction getInstalledPackageVersion(packageName: string, fallbackRange: string): string {\n  try {\n    let currentDir = dirname(require.resolve(packageName));\n    for (let i = 0; i < 5; i += 1) {\n      const packageJsonPath = join(currentDir, \"package.json\");\n      if (existsSync(packageJsonPath)) {\n        return (JSON.parse(readFileSync(packageJsonPath, \"utf-8\")) as { version: string }).version;\n      }\n      currentDir = dirname(currentDir);\n    }\n\n    throw new Error(`Could not resolve installed version for ${packageName}`);\n  } catch {\n    const match = fallbackRange.match(/\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?/);\n    return match ? match[0] : fallbackRange.replace(/^[\\^~>=<\\s]+/, \"\");\n  }\n}\n\nexport const PLUGIN_VERSION =\n  typeof __EVERY_PLUGIN_VERSION__ === \"string\" ? __EVERY_PLUGIN_VERSION__ : readPackageVersion();\n\nexport interface SharedConfig {\n  singleton: boolean;\n  requiredVersion: string | false;\n  strictVersion: boolean;\n  eager: boolean;\n}\n\nexport const SHARE_CONFIG: SharedConfig = {\n  singleton: true,\n  requiredVersion: false,\n  strictVersion: false,\n  eager: false,\n};\n\nexport const MF_CORE_SHARED_DEPS = {\n  \"every-plugin\": {\n    version: PLUGIN_VERSION,\n    shareScope: \"default\",\n    shareConfig: SHARE_CONFIG,\n  },\n  effect: {\n    version: getInstalledPackageVersion(\"effect\", pkg.peerDependencies.effect),\n    shareScope: \"default\",\n    shareConfig: SHARE_CONFIG,\n  },\n  zod: {\n    version: getInstalledPackageVersion(\"zod\", pkg.peerDependencies.zod),\n    shareScope: \"default\",\n    shareConfig: SHARE_CONFIG,\n  },\n  \"@orpc/contract\": {\n    version: getInstalledPackageVersion(\"@orpc/contract\", pkg.peerDependencies[\"@orpc/contract\"]),\n    shareScope: \"default\",\n    shareConfig: SHARE_CONFIG,\n  },\n  \"@orpc/client\": {\n    version: getInstalledPackageVersion(\"@orpc/client\", pkg.peerDependencies[\"@orpc/client\"]),\n    shareScope: \"default\",\n    shareConfig: SHARE_CONFIG,\n  },\n  \"@orpc/server\": {\n    version: getInstalledPackageVersion(\"@orpc/server\", pkg.peerDependencies[\"@orpc/server\"]),\n    shareScope: \"default\",\n    shareConfig: SHARE_CONFIG,\n  },\n} as const;\n\nexport type CoreSharedDepName = keyof typeof MF_CORE_SHARED_DEPS;\n\nexport interface AppSharedDepConfig {\n  version: string;\n  requiredVersion?: string | false;\n  singleton?: boolean;\n  strictVersion?: boolean;\n  eager?: boolean;\n  shareScope?: string;\n}\n\nexport type AppSharedDeps = Record<string, AppSharedDepConfig>;\n\nexport function buildMergedSharedDeps(\n  appShared?: AppSharedDeps,\n): Record<string, { version: string; shareScope: string; shareConfig: SharedConfig }> {\n  const merged: Record<string, { version: string; shareScope: string; shareConfig: SharedConfig }> =\n    {};\n\n  for (const [name, config] of Object.entries(MF_CORE_SHARED_DEPS)) {\n    merged[name] = {\n      version: config.version,\n      shareScope: config.shareScope,\n      shareConfig: config.shareConfig,\n    };\n  }\n\n  if (appShared) {\n    for (const [name, config] of Object.entries(appShared)) {\n      merged[name] = {\n        version: config.version,\n        shareScope: config.shareScope ?? \"default\",\n        shareConfig: {\n          singleton: config.singleton ?? false,\n          requiredVersion: config.requiredVersion ?? false,\n          strictVersion: config.strictVersion ?? false,\n          eager: config.eager ?? false,\n        },\n      };\n    }\n  }\n\n  return merged;\n}\n"],"mappings":";;;;;;AAKA,MAAM,UAAU,cAAc,OAAO,KAAK,GAAG;AAW7C,SAAS,2BAA2B,aAAqB,eAA+B;CACtF,IAAI;EACF,IAAI,aAAa,QAAQ,QAAQ,QAAQ,WAAW,CAAC;EACrD,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG;GAC7B,MAAM,kBAAkB,KAAK,YAAY,cAAc;GACvD,IAAI,WAAW,eAAe,GAC5B,OAAQ,KAAK,MAAM,aAAa,iBAAiB,OAAO,CAAC,CAAC,CAAyB;GAErF,aAAa,QAAQ,UAAU;EACjC;EAEA,MAAM,IAAI,MAAM,2CAA2C,aAAa;CAC1E,QAAQ;EACN,MAAM,QAAQ,cAAc,MAAM,mCAAmC;EACrE,OAAO,QAAQ,MAAM,KAAK,cAAc,QAAQ,gBAAgB,EAAE;CACpE;AACF;AAEA,MAAa;AAUb,MAAa,eAA6B;CACxC,WAAW;CACX,iBAAiB;CACjB,eAAe;CACf,OAAO;AACT;AAEA,MAAa,sBAAsB;CACjC,gBAAgB;EACd,SAAS;EACT,YAAY;EACZ,aAAa;CACf;CACA,QAAQ;EACN,SAAS,2BAA2B,2BAA+B,MAAM;EACzE,YAAY;EACZ,aAAa;CACf;CACA,KAAK;EACH,SAAS,2BAA2B,wBAA4B,GAAG;EACnE,YAAY;EACZ,aAAa;CACf;CACA,kBAAkB;EAChB,SAAS,2BAA2B,mCAAuC,iBAAiB;EAC5F,YAAY;EACZ,aAAa;CACf;CACA,gBAAgB;EACd,SAAS,2BAA2B,iCAAqC,eAAe;EACxF,YAAY;EACZ,aAAa;CACf;CACA,gBAAgB;EACd,SAAS,2BAA2B,iCAAqC,eAAe;EACxF,YAAY;EACZ,aAAa;CACf;AACF;AAeA,SAAgB,sBACd,WACoF;CACpF,MAAM,SACJ,CAAC;CAEH,KAAK,MAAM,CAAC,MAAM,WAAW,OAAO,QAAQ,mBAAmB,GAC7D,OAAO,QAAQ;EACb,SAAS,OAAO;EAChB,YAAY,OAAO;EACnB,aAAa,OAAO;CACtB;CAGF,IAAI,WACF,KAAK,MAAM,CAAC,MAAM,WAAW,OAAO,QAAQ,SAAS,GACnD,OAAO,QAAQ;EACb,SAAS,OAAO;EAChB,YAAY,OAAO,cAAc;EACjC,aAAa;GACX,WAAW,OAAO,aAAa;GAC/B,iBAAiB,OAAO,mBAAmB;GAC3C,eAAe,OAAO,iBAAiB;GACvC,OAAO,OAAO,SAAS;EACzB;CACF;CAIJ,OAAO;AACT"}