UNPKG

@macrof/loader

Version:

React MicroFrontend Loader, Typescript, Webpack 5, ModuleFederation

57 lines (56 loc) 2.16 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; const APP_MF_LINK = '__MF_CLIENT_LINK__'; const makeRequest = (url) => __awaiter(void 0, void 0, void 0, function* () { try { const res = yield fetch(url, { method: 'GET', mode: 'cors', cache: 'no-cache', }); return res.text().then((data) => data .replace(/\s/g, '') .replace(/'/g, '"')); } catch (err) { return Promise.reject(err); } }); const init = (data) => { try { window[APP_MF_LINK] = JSON.parse(data); return Promise.resolve(); } catch (err) { return Promise.reject(err); } }; const error = (err) => { var _a, _b, _c; const element = document.createElement("div"); element.style.textAlign = "center"; element.style.fontSize = "20px"; element.style.margin = "0 auto"; element.style.width = "500px"; element.innerHTML = ` ${(_b = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.status) !== null && _b !== void 0 ? _b : ''} <hr> Something went wrong. <br> Please try again later. `; (_c = document.getElementById("root")) === null || _c === void 0 ? void 0 : _c.appendChild(element); console.error('[loadProdUrls]: failed to load MF Urls(production)'); }; export const loadProdUrls = (url, boot) => { makeRequest(url) .then((data) => init(data) .then(() => boot())).catch((err) => error(err)); };