{"version":3,"file":"index.cjs","names":["ModuleFederation","getGlobalFederationInstance","RUNTIME_009","runtimeDescMap","CurrentGlobal"],"sources":["../src/index.ts"],"sourcesContent":["import {\n  ModuleFederation,\n  type UserOptions,\n  CurrentGlobal,\n  getGlobalFederationConstructor,\n  setGlobalFederationInstance,\n  assert,\n  setGlobalFederationConstructor,\n} from '@module-federation/runtime-core';\nimport { runtimeDescMap, RUNTIME_009 } from '@module-federation/error-codes';\nimport { getGlobalFederationInstance } from './utils';\n\nexport {\n  loadScript,\n  loadScriptNode,\n  Module,\n  getRemoteEntry,\n  getRemoteInfo,\n  registerGlobalPlugins,\n  type ModuleFederationRuntimePlugin,\n  type Federation,\n} from '@module-federation/runtime-core';\n\nexport { ModuleFederation };\n\nexport function createInstance(options: UserOptions) {\n  // Retrieve debug constructor\n  const ModuleFederationConstructor =\n    getGlobalFederationConstructor() || ModuleFederation;\n  const instance = new ModuleFederationConstructor({\n    id: `${options.name}@${options.version || Date.now()}`,\n    ...options,\n  });\n  setGlobalFederationInstance(instance);\n  return instance;\n}\n\nlet FederationInstance: ModuleFederation | null = null;\nexport function init(options: UserOptions): ModuleFederation {\n  // Retrieve the same instance with the same name\n  const instance = getGlobalFederationInstance(options.name, options.version);\n  const normalizedOptions = { ...options, id: options.id || '' };\n  if (!instance) {\n    FederationInstance = createInstance(normalizedOptions);\n    return FederationInstance;\n  } else {\n    // Merge options\n    instance.initOptions(normalizedOptions);\n    if (!FederationInstance) {\n      FederationInstance = instance;\n    }\n    return instance;\n  }\n}\n\nexport function loadRemote<T>(\n  ...args: Parameters<ModuleFederation['loadRemote']>\n): Promise<T | null> {\n  assert(FederationInstance, RUNTIME_009, runtimeDescMap);\n  const loadRemote: typeof FederationInstance.loadRemote<T> =\n    FederationInstance.loadRemote;\n  // eslint-disable-next-line prefer-spread\n  return loadRemote.apply(FederationInstance, args);\n}\n\nexport function loadShare<T>(\n  ...args: Parameters<ModuleFederation['loadShare']>\n): Promise<false | (() => T | undefined)> {\n  assert(FederationInstance, RUNTIME_009, runtimeDescMap);\n  // eslint-disable-next-line prefer-spread\n  const loadShare: typeof FederationInstance.loadShare<T> =\n    FederationInstance.loadShare;\n  return loadShare.apply(FederationInstance, args);\n}\n\nexport function loadShareSync<T>(\n  ...args: Parameters<ModuleFederation['loadShareSync']>\n): () => T | never {\n  assert(FederationInstance, RUNTIME_009, runtimeDescMap);\n  const loadShareSync: typeof FederationInstance.loadShareSync<T> =\n    FederationInstance.loadShareSync;\n  // eslint-disable-next-line prefer-spread\n  return loadShareSync.apply(FederationInstance, args);\n}\n\nexport function preloadRemote(\n  ...args: Parameters<ModuleFederation['preloadRemote']>\n): ReturnType<ModuleFederation['preloadRemote']> {\n  assert(FederationInstance, RUNTIME_009, runtimeDescMap);\n  // eslint-disable-next-line prefer-spread\n  return FederationInstance.preloadRemote.apply(FederationInstance, args);\n}\n\nexport function registerRemotes(\n  ...args: Parameters<ModuleFederation['registerRemotes']>\n): ReturnType<ModuleFederation['registerRemotes']> {\n  assert(FederationInstance, RUNTIME_009, runtimeDescMap);\n  // eslint-disable-next-line prefer-spread\n  return FederationInstance.registerRemotes.apply(FederationInstance, args);\n}\n\nexport function registerPlugins(\n  ...args: Parameters<ModuleFederation['registerPlugins']>\n): ReturnType<ModuleFederation['registerRemotes']> {\n  assert(FederationInstance, RUNTIME_009, runtimeDescMap);\n  // eslint-disable-next-line prefer-spread\n  return FederationInstance.registerPlugins.apply(FederationInstance, args);\n}\n\nexport function getInstance(): ModuleFederation | null;\nexport function getInstance(\n  finder: (instance: ModuleFederation) => boolean,\n): ModuleFederation | null;\nexport function getInstance(finder?: (instance: ModuleFederation) => boolean) {\n  if (!finder) {\n    return FederationInstance;\n  }\n\n  return CurrentGlobal.__FEDERATION__.__INSTANCES__.find(finder) || null;\n}\n\nexport function registerShared(\n  ...args: Parameters<ModuleFederation['registerShared']>\n): ReturnType<ModuleFederation['registerShared']> {\n  assert(FederationInstance, RUNTIME_009, runtimeDescMap);\n  // eslint-disable-next-line prefer-spread\n  return FederationInstance.registerShared.apply(FederationInstance, args);\n}\n\n// Inject for debug\nsetGlobalFederationConstructor(ModuleFederation);\n"],"mappings":";;;;;;;AAyBA,SAAgB,eAAe,SAAsB;CAInD,MAAM,WAAW,2EADiB,KAAIA,kDACW;EAC/C,IAAI,GAAG,QAAQ,KAAK,GAAG,QAAQ,WAAW,KAAK,KAAK;EACpD,GAAG;EACJ,CAAC;AACF,kEAA4B,SAAS;AACrC,QAAO;;AAGT,IAAI,qBAA8C;AAClD,SAAgB,KAAK,SAAwC;CAE3D,MAAM,WAAWC,0CAA4B,QAAQ,MAAM,QAAQ,QAAQ;CAC3E,MAAM,oBAAoB;EAAE,GAAG;EAAS,IAAI,QAAQ,MAAM;EAAI;AAC9D,KAAI,CAAC,UAAU;AACb,uBAAqB,eAAe,kBAAkB;AACtD,SAAO;QACF;AAEL,WAAS,YAAY,kBAAkB;AACvC,MAAI,CAAC,mBACH,sBAAqB;AAEvB,SAAO;;;AAIX,SAAgB,WACd,GAAG,MACgB;AACnB,6CAAO,oBAAoBC,4CAAaC,8CAAe;AAIvD,QAFE,mBAAmB,WAEH,MAAM,oBAAoB,KAAK;;AAGnD,SAAgB,UACd,GAAG,MACqC;AACxC,6CAAO,oBAAoBD,4CAAaC,8CAAe;AAIvD,QADE,mBAAmB,UACJ,MAAM,oBAAoB,KAAK;;AAGlD,SAAgB,cACd,GAAG,MACc;AACjB,6CAAO,oBAAoBD,4CAAaC,8CAAe;AAIvD,QAFE,mBAAmB,cAEA,MAAM,oBAAoB,KAAK;;AAGtD,SAAgB,cACd,GAAG,MAC4C;AAC/C,6CAAO,oBAAoBD,4CAAaC,8CAAe;AAEvD,QAAO,mBAAmB,cAAc,MAAM,oBAAoB,KAAK;;AAGzE,SAAgB,gBACd,GAAG,MAC8C;AACjD,6CAAO,oBAAoBD,4CAAaC,8CAAe;AAEvD,QAAO,mBAAmB,gBAAgB,MAAM,oBAAoB,KAAK;;AAG3E,SAAgB,gBACd,GAAG,MAC8C;AACjD,6CAAO,oBAAoBD,4CAAaC,8CAAe;AAEvD,QAAO,mBAAmB,gBAAgB,MAAM,oBAAoB,KAAK;;AAO3E,SAAgB,YAAY,QAAkD;AAC5E,KAAI,CAAC,OACH,QAAO;AAGT,QAAOC,8CAAc,eAAe,cAAc,KAAK,OAAO,IAAI;;AAGpE,SAAgB,eACd,GAAG,MAC6C;AAChD,6CAAO,oBAAoBF,4CAAaC,8CAAe;AAEvD,QAAO,mBAAmB,eAAe,MAAM,oBAAoB,KAAK;;oEAI3CH,iDAAiB"}