{"version":3,"file":"node.cjs","names":[],"sources":["../src/node.ts"],"sourcesContent":["import { CreateScriptHookNode, FetchHook } from './types';\n\n// Declare the ENV_TARGET constant that will be defined by DefinePlugin\ndeclare const ENV_TARGET: 'web' | 'node';\n\nconst sdkImportCache = new Map<string, Promise<any>>();\n\nfunction importNodeModule<T>(name: string): Promise<T> {\n  if (!name) {\n    throw new Error('import specifier is required');\n  }\n\n  // Check cache to prevent infinite recursion\n  if (sdkImportCache.has(name)) {\n    return sdkImportCache.get(name)!;\n  }\n\n  const importModule = new Function('name', `return import(name)`);\n  const promise = importModule(name)\n    .then((res: any) => res as T)\n    .catch((error: any) => {\n      console.error(`Error importing module ${name}:`, error);\n      // Remove from cache on error so it can be retried\n      sdkImportCache.delete(name);\n      throw error;\n    });\n\n  // Cache the promise to prevent recursive calls\n  sdkImportCache.set(name, promise);\n  return promise;\n}\n\nconst lazyLoaderHookFetch = async (\n  input: RequestInfo | URL,\n  init?: RequestInit,\n  loaderHook?: any,\n): Promise<Response> => {\n  const hook = (url: RequestInfo | URL, init: RequestInit) => {\n    return loaderHook.lifecycle.fetch.emit(url, init);\n  };\n\n  const res = await hook(input, init || {});\n  if (!res || !(res instanceof Response)) {\n    return fetch(input, init || {});\n  }\n\n  return res;\n};\n\nexport const createScriptNode =\n  typeof ENV_TARGET === 'undefined' || ENV_TARGET !== 'web'\n    ? (\n        url: string,\n        cb: (error?: Error, scriptContext?: any) => void,\n        attrs?: Record<string, any>,\n        loaderHook?: {\n          createScriptHook?: CreateScriptHookNode;\n          fetch?: FetchHook;\n        },\n      ) => {\n        if (loaderHook?.createScriptHook) {\n          const hookResult = loaderHook.createScriptHook(url);\n          if (\n            hookResult &&\n            typeof hookResult === 'object' &&\n            'url' in hookResult\n          ) {\n            url = hookResult.url;\n          }\n        }\n\n        let urlObj: URL;\n        try {\n          urlObj = new URL(url);\n        } catch (e) {\n          console.error('Error constructing URL:', e);\n          cb(new Error(`Invalid URL: ${e}`));\n          return;\n        }\n\n        const getFetch = async (): Promise<typeof fetch> => {\n          if (loaderHook?.fetch) {\n            return (input: RequestInfo | URL, init?: RequestInit) =>\n              lazyLoaderHookFetch(input, init, loaderHook);\n          }\n\n          return fetch;\n        };\n\n        const handleScriptFetch = async (f: typeof fetch, urlObj: URL) => {\n          try {\n            const res = await f(urlObj.href);\n            const data = await res.text();\n            const [path, vm] = await Promise.all([\n              importNodeModule<typeof import('path')>('path'),\n              importNodeModule<typeof import('vm')>('vm'),\n            ]);\n\n            const scriptContext = { exports: {}, module: { exports: {} } };\n            const urlDirname = urlObj.pathname\n              .split('/')\n              .slice(0, -1)\n              .join('/');\n            const filename = path.basename(urlObj.pathname);\n\n            const script = new vm.Script(\n              `(function(exports, module, require, __dirname, __filename) {${data}\\n})`,\n              {\n                filename,\n                importModuleDynamically:\n                  //@ts-ignore\n                  vm.constants?.USE_MAIN_CONTEXT_DEFAULT_LOADER ??\n                  importNodeModule,\n              },\n            );\n\n            let requireFn: NodeRequire;\n            if (process.env.IS_ESM_BUILD === 'true') {\n              const nodeModule =\n                await importNodeModule<typeof import('node:module')>(\n                  'node:module',\n                );\n              requireFn = nodeModule.createRequire(\n                urlObj.protocol === 'file:' || urlObj.protocol === 'node:'\n                  ? urlObj.href\n                  : path.join(process.cwd(), '__mf_require_base__.js'),\n              );\n            } else {\n              requireFn = eval('require') as NodeRequire;\n            }\n\n            script.runInThisContext()(\n              scriptContext.exports,\n              scriptContext.module,\n              requireFn,\n              urlDirname,\n              filename,\n            );\n            const exportedInterface: Record<string, any> =\n              scriptContext.module.exports || scriptContext.exports;\n\n            if (attrs && exportedInterface && attrs['globalName']) {\n              const container =\n                exportedInterface[attrs['globalName']] || exportedInterface;\n              cb(\n                undefined,\n                container as keyof typeof scriptContext.module.exports,\n              );\n              return;\n            }\n\n            cb(\n              undefined,\n              exportedInterface as keyof typeof scriptContext.module.exports,\n            );\n          } catch (e) {\n            cb(\n              e instanceof Error\n                ? e\n                : new Error(`Script execution error: ${e}`),\n            );\n          }\n        };\n\n        getFetch()\n          .then(async (f) => {\n            if (attrs?.['type'] === 'esm' || attrs?.['type'] === 'module') {\n              return loadModule(urlObj.href, {\n                fetch: f,\n                vm: await importNodeModule<typeof import('vm')>('vm'),\n              })\n                .then(async (module) => {\n                  await module.evaluate();\n                  cb(undefined, module.namespace);\n                })\n                .catch((e) => {\n                  cb(\n                    e instanceof Error\n                      ? e\n                      : new Error(`Script execution error: ${e}`),\n                  );\n                });\n            }\n            handleScriptFetch(f, urlObj);\n          })\n          .catch((err) => {\n            cb(err);\n          });\n      }\n    : (\n        url: string,\n        cb: (error?: Error, scriptContext?: any) => void,\n        attrs?: Record<string, any>,\n        loaderHook?: {\n          createScriptHook?: CreateScriptHookNode;\n          fetch?: FetchHook;\n        },\n      ) => {\n        cb(\n          new Error('createScriptNode is disabled in non-Node.js environment'),\n        );\n      };\n\nexport const loadScriptNode =\n  typeof ENV_TARGET === 'undefined' || ENV_TARGET !== 'web'\n    ? (\n        url: string,\n        info: {\n          attrs?: Record<string, any>;\n          loaderHook?: {\n            createScriptHook?: CreateScriptHookNode;\n          };\n        },\n      ) => {\n        return new Promise<void>((resolve, reject) => {\n          createScriptNode(\n            url,\n            (error, scriptContext) => {\n              if (error) {\n                reject(error);\n              } else {\n                const remoteEntryKey =\n                  info?.attrs?.['globalName'] ||\n                  `__FEDERATION_${info?.attrs?.['name']}:custom__`;\n                const entryExports = ((globalThis as any)[remoteEntryKey] =\n                  scriptContext);\n                resolve(entryExports);\n              }\n            },\n            info.attrs,\n            info.loaderHook,\n          );\n        });\n      }\n    : (\n        url: string,\n        info: {\n          attrs?: Record<string, any>;\n          loaderHook?: {\n            createScriptHook?: CreateScriptHookNode;\n          };\n        },\n      ) => {\n        throw new Error(\n          'loadScriptNode is disabled in non-Node.js environment',\n        );\n      };\n\nconst esmModuleCache = new Map<string, any>();\n\ntype LoadModuleOptions = {\n  vm: typeof import('vm') & {\n    SourceTextModule: any;\n    SyntheticModule: any;\n  };\n  fetch: typeof fetch;\n};\n\nconst isFetchableRemoteModuleUrl = (url: string): boolean =>\n  url.startsWith('http:') || url.startsWith('https:');\n\nconst isBareModuleSpecifier = (specifier: string): boolean =>\n  !specifier.startsWith('./') &&\n  !specifier.startsWith('../') &&\n  !specifier.startsWith('/') &&\n  !specifier.includes(':');\n\nfunction encodeRemoteModulePath(url: string): string {\n  const remoteUrl = new URL(url);\n  const encodedProtocol = encodeURIComponent(remoteUrl.protocol.slice(0, -1));\n  const encodedHost = encodeURIComponent(remoteUrl.host);\n  const encodedPathname = remoteUrl.pathname\n    .split('/')\n    .map((segment) => encodeURIComponent(segment))\n    .join('/');\n  const encodedSearchHash = encodeURIComponent(\n    `${remoteUrl.search}${remoteUrl.hash}`,\n  );\n  const encodedSuffix = encodedSearchHash ? `/${encodedSearchHash}` : '';\n\n  return `/${encodedProtocol}/${encodedHost}${encodedPathname}${encodedSuffix}`;\n}\n\nfunction createImportMetaUrl(url: string, baseFileUrl: string): string {\n  const baseUrl = baseFileUrl.endsWith('/') ? baseFileUrl : `${baseFileUrl}/`;\n  return new URL(\n    `__module_federation_remote__${encodeRemoteModulePath(url)}`,\n    baseUrl,\n  ).href;\n}\n\nasync function isNodeBuiltinSpecifier(specifier: string): Promise<boolean> {\n  if (specifier.startsWith('node:')) {\n    return true;\n  }\n\n  if (!isBareModuleSpecifier(specifier)) {\n    return false;\n  }\n\n  const nodeModule =\n    await importNodeModule<typeof import('node:module')>('node:module');\n\n  return nodeModule.builtinModules.includes(specifier);\n}\n\nfunction getSyntheticModuleExports(moduleExports: any): Record<string, any> {\n  const namespaceObject =\n    moduleExports &&\n    (typeof moduleExports === 'object' || typeof moduleExports === 'function')\n      ? moduleExports\n      : { default: moduleExports };\n  const effectiveExports = { ...namespaceObject };\n\n  if (!Object.prototype.hasOwnProperty.call(effectiveExports, 'default')) {\n    effectiveExports.default = namespaceObject;\n  }\n\n  return effectiveExports;\n}\n\nasync function createSyntheticModuleFromExports(\n  identifier: string,\n  moduleExports: any,\n  vm: LoadModuleOptions['vm'],\n) {\n  if (typeof vm.SyntheticModule !== 'function') {\n    throw new Error(\n      'vm.SyntheticModule is required to load Node.js built-in modules in ESM remote entries.',\n    );\n  }\n\n  const effectiveExports = getSyntheticModuleExports(moduleExports);\n  const exportNames = Object.keys(effectiveExports);\n  const syntheticModule = new vm.SyntheticModule(\n    exportNames,\n    function setSyntheticModuleExports(this: {\n      setExport: (name: string, value: any) => void;\n    }) {\n      for (const name of exportNames) {\n        this.setExport(name, effectiveExports[name]);\n      }\n    },\n    { identifier },\n  );\n\n  esmModuleCache.set(identifier, syntheticModule);\n  await syntheticModule.link(async () => {\n    throw new Error(\n      `Node.js built-in module \"${identifier}\" should not request child modules.`,\n    );\n  });\n  await syntheticModule.evaluate();\n\n  return syntheticModule;\n}\n\nasync function loadNodeBuiltinModule(\n  specifier: string,\n  vm: LoadModuleOptions['vm'],\n) {\n  const cacheKey = `node-builtin:${specifier}`;\n  if (esmModuleCache.has(cacheKey)) {\n    return esmModuleCache.get(cacheKey)!;\n  }\n\n  const moduleExports = await importNodeModule(specifier);\n  return createSyntheticModuleFromExports(cacheKey, moduleExports, vm);\n}\n\nasync function loadResolvedModule(\n  specifier: string,\n  parentUrl: string,\n  options: LoadModuleOptions,\n) {\n  if (await isNodeBuiltinSpecifier(specifier)) {\n    return loadNodeBuiltinModule(specifier, options.vm);\n  }\n\n  if (isBareModuleSpecifier(specifier)) {\n    throw new Error(\n      `Unsupported ESM module specifier \"${specifier}\". Only relative or absolute http(s) remote modules and Node.js built-in modules are supported.`,\n    );\n  }\n\n  const resolvedUrl = new URL(specifier, parentUrl).href;\n  if (!isFetchableRemoteModuleUrl(resolvedUrl)) {\n    throw new Error(\n      `Unsupported ESM module specifier \"${specifier}\" resolved to \"${resolvedUrl}\". Only http(s) remote modules and Node.js built-in modules are supported.`,\n    );\n  }\n\n  return loadModule(resolvedUrl, options);\n}\n\nasync function evaluateDynamicModule(module: any) {\n  if (module.status === 'linked') {\n    await module.evaluate();\n  }\n\n  if (module.status === 'errored') {\n    throw module.error;\n  }\n\n  return module;\n}\n\nasync function loadModule(url: string, options: LoadModuleOptions) {\n  // Check cache to prevent infinite recursion in ESM loading\n  if (esmModuleCache.has(url)) {\n    return esmModuleCache.get(url)!;\n  }\n\n  const { fetch, vm } = options;\n  if (!isFetchableRemoteModuleUrl(url)) {\n    throw new Error(\n      `Unsupported ESM module URL \"${url}\". Only http(s) remote modules and Node.js built-in modules are supported.`,\n    );\n  }\n\n  const response = await fetch(url);\n  const code = await response.text();\n  const nodeUrl = await importNodeModule<typeof import('node:url')>('node:url');\n  const cwdFileUrl = nodeUrl.pathToFileURL(process.cwd()).href;\n\n  const sourceTextModule: any = new vm.SourceTextModule(code, {\n    identifier: url,\n    initializeImportMeta: (meta: { url: string }) => {\n      meta.url = createImportMetaUrl(url, cwdFileUrl);\n    },\n    importModuleDynamically: async (specifier: string) => {\n      return evaluateDynamicModule(\n        await loadResolvedModule(specifier, url, options),\n      );\n    },\n  });\n\n  // Cache the module before linking to prevent cycles\n  esmModuleCache.set(url, sourceTextModule);\n\n  await sourceTextModule.link(async (specifier: string) => {\n    return loadResolvedModule(specifier, url, options);\n  });\n\n  return sourceTextModule;\n}\n"],"mappings":"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"}