@module-federation/manifest
Version:
Provide manifest/stats for webpack/rspack MF project .
161 lines (150 loc) • 5.63 kB
JavaScript
;
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 });