UNPKG

@module-federation/enhanced

Version:

This package provides enhanced features for module federation.

65 lines (63 loc) 2.7 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const require_runtime = require('../../_virtual/_rolldown/runtime.js'); let _module_federation_sdk_normalize_webpack_path = require("@module-federation/sdk/normalize-webpack-path"); //#region src/lib/sharing/resolveMatchedConfigs.ts const ModuleNotFoundError = require((0, _module_federation_sdk_normalize_webpack_path.normalizeWebpackPath)("webpack/lib/ModuleNotFoundError")); const LazySet = require((0, _module_federation_sdk_normalize_webpack_path.normalizeWebpackPath)("webpack/lib/util/LazySet")); const RELATIVE_REQUEST_REGEX = /^\.\.?(\/|$)/; const ABSOLUTE_PATH_REGEX = /^(\/|[A-Za-z]:\\|\\\\)/; const RESOLVE_OPTIONS = { dependencyType: "esm" }; function createCompositeKey(request, config) { const layer = config.issuerLayer; if (layer) return `(${layer})${request}`; return request; } async function resolveMatchedConfigs(compilation, configs) { const resolved = /* @__PURE__ */ new Map(); const unresolved = /* @__PURE__ */ new Map(); const prefixed = /* @__PURE__ */ new Map(); const resolveContext = { fileDependencies: new LazySet(), contextDependencies: new LazySet(), missingDependencies: new LazySet() }; const resolver = compilation.resolverFactory.get("normal", RESOLVE_OPTIONS); const context = compilation.compiler.context; await Promise.all(configs.map(([request, config]) => { const resolveRequest = config.request || request; if (RELATIVE_REQUEST_REGEX.test(resolveRequest)) return new Promise((resolve) => { resolver.resolve({}, context, resolveRequest, resolveContext, (err, result) => { if (err || result === false) { err = err || /* @__PURE__ */ new Error(`Can't resolve ${resolveRequest}`); compilation.errors.push(new ModuleNotFoundError(null, err, { name: `shared module ${resolveRequest}` })); return resolve(); } resolved.set(result, config); resolve(); }); }); else if (ABSOLUTE_PATH_REGEX.test(resolveRequest)) { resolved.set(resolveRequest, config); return; } else if (resolveRequest.endsWith("/")) { const key = createCompositeKey(resolveRequest, config); prefixed.set(key, config); return; } else { const key = createCompositeKey(resolveRequest, config); unresolved.set(key, config); return; } })); compilation.contextDependencies.addAll(resolveContext.contextDependencies); compilation.fileDependencies.addAll(resolveContext.fileDependencies); compilation.missingDependencies.addAll(resolveContext.missingDependencies); return { resolved, unresolved, prefixed }; } //#endregion exports.resolveMatchedConfigs = resolveMatchedConfigs; //# sourceMappingURL=resolveMatchedConfigs.js.map