{"version":3,"file":"tool.cjs","names":["warn","isBrowserEnvValue"],"sources":["../../src/utils/tool.ts"],"sourcesContent":["import {\n  RemoteWithEntry,\n  ModuleInfo,\n  RemoteEntryType,\n  isBrowserEnvValue,\n  isReactNativeEnv,\n} from '@module-federation/sdk';\nimport { Remote, RemoteInfoOptionalVersion } from '../type';\nimport { warn } from './logger';\n\nexport function addUniqueItem(arr: Array<string>, item: string): Array<string> {\n  if (arr.findIndex((name) => name === item) === -1) {\n    arr.push(item);\n  }\n  return arr;\n}\n\nexport function getFMId(\n  remoteInfo: RemoteInfoOptionalVersion | RemoteWithEntry,\n): string {\n  if ('version' in remoteInfo && remoteInfo.version) {\n    return `${remoteInfo.name}:${remoteInfo.version}`;\n  } else if ('entry' in remoteInfo && remoteInfo.entry) {\n    return `${remoteInfo.name}:${remoteInfo.entry}`;\n  } else {\n    return `${remoteInfo.name}`;\n  }\n}\n\nexport function isRemoteInfoWithEntry(\n  remote: Remote,\n): remote is RemoteWithEntry {\n  return typeof (remote as RemoteWithEntry).entry !== 'undefined';\n}\n\nexport function isPureRemoteEntry(remote: RemoteWithEntry): boolean {\n  return !remote.entry.includes('.json');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport async function safeWrapper<T extends (...args: Array<any>) => any>(\n  callback: T,\n  disableWarn?: boolean,\n): Promise<ReturnType<T> | undefined> {\n  try {\n    const res = await callback();\n    return res;\n  } catch (e) {\n    !disableWarn && warn(e);\n    return;\n  }\n}\n\nexport function isObject(val: any): boolean {\n  return val && typeof val === 'object';\n}\n\nexport const objectToString = Object.prototype.toString;\n\nexport function isPlainObject(val: any): val is object {\n  return objectToString.call(val) === '[object Object]';\n}\n\nexport function isStaticResourcesEqual(url1: string, url2: string): boolean {\n  const REG_EXP = /^(https?:)?\\/\\//i;\n  // Transform url1 and url2 into relative paths\n  const relativeUrl1 = url1.replace(REG_EXP, '').replace(/\\/$/, '');\n  const relativeUrl2 = url2.replace(REG_EXP, '').replace(/\\/$/, '');\n  // Check if the relative paths are identical\n  return relativeUrl1 === relativeUrl2;\n}\n\nexport function arrayOptions<T>(options: T | Array<T>): Array<T> {\n  return Array.isArray(options) ? options : [options];\n}\n\nexport function getRemoteEntryInfoFromSnapshot(snapshot: ModuleInfo): {\n  url: string;\n  type: RemoteEntryType;\n  globalName: string;\n} {\n  const defaultRemoteEntryInfo: {\n    url: string;\n    type: RemoteEntryType;\n    globalName: string;\n  } = {\n    url: '',\n    type: 'global',\n    globalName: '',\n  };\n  if (\n    isBrowserEnvValue ||\n    isReactNativeEnv() ||\n    !('ssrRemoteEntry' in snapshot)\n  ) {\n    return 'remoteEntry' in snapshot\n      ? {\n          url: snapshot.remoteEntry,\n          type: snapshot.remoteEntryType,\n          globalName: snapshot.globalName,\n        }\n      : defaultRemoteEntryInfo;\n  }\n  if ('ssrRemoteEntry' in snapshot) {\n    return {\n      url: snapshot.ssrRemoteEntry || defaultRemoteEntryInfo.url,\n      type: snapshot.ssrRemoteEntryType || defaultRemoteEntryInfo.type,\n      globalName: snapshot.globalName,\n    };\n  }\n  return defaultRemoteEntryInfo;\n}\n\nexport const processModuleAlias = (name: string, subPath: string) => {\n  // @host/ ./button -> @host/button\n  let moduleName;\n  if (name.endsWith('/')) {\n    moduleName = name.slice(0, -1);\n  } else {\n    moduleName = name;\n  }\n\n  if (subPath.startsWith('.')) {\n    subPath = subPath.slice(1);\n  }\n  moduleName = moduleName + subPath;\n  return moduleName;\n};\n"],"mappings":";;;;AAUA,SAAgB,cAAc,KAAoB,MAA6B;AAC7E,KAAI,IAAI,WAAW,SAAS,SAAS,KAAK,KAAK,GAC7C,KAAI,KAAK,KAAK;AAEhB,QAAO;;AAGT,SAAgB,QACd,YACQ;AACR,KAAI,aAAa,cAAc,WAAW,QACxC,QAAO,GAAG,WAAW,KAAK,GAAG,WAAW;UAC/B,WAAW,cAAc,WAAW,MAC7C,QAAO,GAAG,WAAW,KAAK,GAAG,WAAW;KAExC,QAAO,GAAG,WAAW;;AAIzB,SAAgB,sBACd,QAC2B;AAC3B,QAAO,OAAQ,OAA2B,UAAU;;AAGtD,SAAgB,kBAAkB,QAAkC;AAClE,QAAO,CAAC,OAAO,MAAM,SAAS,QAAQ;;AAIxC,eAAsB,YACpB,UACA,aACoC;AACpC,KAAI;AAEF,SADY,MAAM,UAAU;UAErB,GAAG;AACV,GAAC,eAAeA,oBAAK,EAAE;AACvB;;;AAIJ,SAAgB,SAAS,KAAmB;AAC1C,QAAO,OAAO,OAAO,QAAQ;;AAG/B,MAAa,iBAAiB,OAAO,UAAU;AAE/C,SAAgB,cAAc,KAAyB;AACrD,QAAO,eAAe,KAAK,IAAI,KAAK;;AAGtC,SAAgB,uBAAuB,MAAc,MAAuB;CAC1E,MAAM,UAAU;AAKhB,QAHqB,KAAK,QAAQ,SAAS,GAAG,CAAC,QAAQ,OAAO,GAAG,KAC5C,KAAK,QAAQ,SAAS,GAAG,CAAC,QAAQ,OAAO,GAAG;;AAKnE,SAAgB,aAAgB,SAAiC;AAC/D,QAAO,MAAM,QAAQ,QAAQ,GAAG,UAAU,CAAC,QAAQ;;AAGrD,SAAgB,+BAA+B,UAI7C;CACA,MAAM,yBAIF;EACF,KAAK;EACL,MAAM;EACN,YAAY;EACb;AACD,KACEC,0FACkB,IAClB,EAAE,oBAAoB,UAEtB,QAAO,iBAAiB,WACpB;EACE,KAAK,SAAS;EACd,MAAM,SAAS;EACf,YAAY,SAAS;EACtB,GACD;AAEN,KAAI,oBAAoB,SACtB,QAAO;EACL,KAAK,SAAS,kBAAkB,uBAAuB;EACvD,MAAM,SAAS,sBAAsB,uBAAuB;EAC5D,YAAY,SAAS;EACtB;AAEH,QAAO;;AAGT,MAAa,sBAAsB,MAAc,YAAoB;CAEnE,IAAI;AACJ,KAAI,KAAK,SAAS,IAAI,CACpB,cAAa,KAAK,MAAM,GAAG,GAAG;KAE9B,cAAa;AAGf,KAAI,QAAQ,WAAW,IAAI,CACzB,WAAU,QAAQ,MAAM,EAAE;AAE5B,cAAa,aAAa;AAC1B,QAAO"}