@macrof/loader
Version:
React MicroFrontend Loader, Typescript, Webpack 5, ModuleFederation
32 lines (31 loc) • 1.14 kB
JavaScript
import { Error } from '../components/error';
export const getUid = (name) => `MFClient-${name}-${Math.random().toString(36).slice(2, -1)}`;
export const load = (dynamicImport, name) => dynamicImport(name)
.then((app) => {
window.__MF_IMPORTED__ = true;
return app;
})
.catch(() => {
console.error(`Failed to load MF ${name}.`);
return { default: () => Error };
});
export const unmount = (currentTarget, name) => {
var _a, _b, _c;
const key = `__${name}__`;
window[key] = (_a = window[key]) !== null && _a !== void 0 ? _a : {};
const insertedStyle = window[key];
(_b = insertedStyle.targets) === null || _b === void 0 ? void 0 : _b.splice((_c = insertedStyle.targets) === null || _c === void 0 ? void 0 : _c.findIndex((target) => target === currentTarget), 1);
};
export const Bootstrap = (render, element) => {
if (!window.__MF_IMPORTED__) {
render(element);
}
};
export function LoadMF(MF) {
const Window = window;
if (!Window.__PROVIDERS_LOADED__) {
MF.providers.forEach((func) => func());
Window.__PROVIDERS_LOADED__ = true;
}
return MF.apps;
}