UNPKG

@module-federation/manifest

Version:

Provide manifest/stats for webpack/rspack MF project .

161 lines (150 loc) • 5.63 kB
"use strict"; const __rslib_import_meta_url__ = /*#__PURE__*/ (function () { return typeof document === 'undefined' ? new (require('url'.replace('', '')).URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src) || new URL('main.js', document.baseURI).href; })(); ; // The require scope var __webpack_require__ = {}; /************************************************************************/ // webpack/runtime/compat_get_default_export (() => { // getDefaultExport function for compatibility with non-ESM modules __webpack_require__.n = (module) => { var getter = module && module.__esModule ? () => (module['default']) : () => (module); __webpack_require__.d(getter, { a: getter }); return getter; }; })(); // webpack/runtime/define_property_getters (() => { __webpack_require__.d = (exports, definition) => { for(var key in definition) { if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); } } }; })(); // webpack/runtime/has_own_property (() => { __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) })(); // webpack/runtime/make_namespace_object (() => { // define __esModule on exports __webpack_require__.r = (exports) => { if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); } Object.defineProperty(exports, '__esModule', { value: true }); }; })(); /************************************************************************/ var __webpack_exports__ = {}; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { ManifestManager: () => (/* binding */ ManifestManager) }); ;// CONCATENATED MODULE: external "node:util" const external_node_util_namespaceObject = require("node:util"); ;// CONCATENATED MODULE: external "@module-federation/sdk" const sdk_namespaceObject = require("@module-federation/sdk"); ;// CONCATENATED MODULE: external "./utils.js" const external_utils_js_namespaceObject = require("./utils.js"); ;// CONCATENATED MODULE: external "./logger.js" const external_logger_js_namespaceObject = require("./logger.js"); var external_logger_js_default = /*#__PURE__*/__webpack_require__.n(external_logger_js_namespaceObject); ;// CONCATENATED MODULE: ./src/ManifestManager.ts class ManifestManager { init(options) { this._options = options; } get fileName() { return (0,sdk_namespaceObject.getManifestFileName)(this._options.manifest).manifestFileName; } updateManifest(options) { const manifest = this.generateManifest(options); return manifest; } generateManifest(options) { const { publicPath, stats, compiler } = options; // Initialize manifest with required properties from stats const { id, name, metaData } = stats; if (metaData.buildInfo) { 'target' in metaData.buildInfo && delete metaData.buildInfo.target; 'plugins' in metaData.buildInfo && delete metaData.buildInfo.plugins; } const manifest = { id, name, metaData, shared: [], remotes: [], exposes: [] }; manifest.exposes = stats.exposes.reduce((sum, cur)=>{ const expose = { id: cur.id, name: cur.name, assets: cur.assets, path: cur.path }; sum.push(expose); return sum; }, []); manifest.shared = stats.shared.reduce((sum, cur)=>{ const shared = { id: cur.id, name: cur.name, version: cur.version, singleton: cur.singleton, requiredVersion: cur.requiredVersion, hash: cur.hash, assets: cur.assets, fallback: cur.fallback, fallbackName: cur.fallbackName, fallbackType: cur.fallbackType }; sum.push(shared); return sum; }, []); manifest.remotes = stats.remotes.reduce((sum, cur)=>{ // @ts-ignore version/entry will be added as follow const remote = { federationContainerName: cur.federationContainerName, moduleName: cur.moduleName, alias: cur.alias }; if ('entry' in cur) { // @ts-ignore remote.entry = cur.entry; } else if ('version' in cur) { // @ts-ignore remote.entry = cur.version; } sum.push(remote); return sum; }, []); if ((0,external_utils_js_namespaceObject.isDev)() && (process.env['MF_SSR_PRJ'] ? compiler.options.target !== 'async-node' : true)) { external_logger_js_default().info(`Manifest Link: ${(0,external_node_util_namespaceObject.styleText)('cyan', `${publicPath === 'auto' ? '{auto}/' : publicPath}${this.fileName}`)} `); } return manifest; } constructor(){ this._options = {}; } } exports.ManifestManager = __webpack_exports__.ManifestManager; for(var __webpack_i__ in __webpack_exports__) { if(["ManifestManager"].indexOf(__webpack_i__) === -1) { exports[__webpack_i__] = __webpack_exports__[__webpack_i__]; } } Object.defineProperty(exports, '__esModule', { value: true });