@omnia/tooling-vue
Version:
Used to bundle and serve manifests web component that build on Vue framework.
69 lines (67 loc) • 4.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.registerStaticFileMiddleware = void 0;
const tslib_1 = require("tslib");
const tooling_1 = require("@omnia/tooling");
const $ = tslib_1.__importStar(require("../../variables"));
const fx_models_1 = require("@omnia/fx-models");
const shared_1 = require("./shared");
function registerStaticFileMiddleware(server) {
server.middlewares.use(function (req, res, next) {
if (req.url.indexOf('/omnia/fonts/') === 0 || req.url.indexOf('/omnia/images/') === 0) {
res.setHeader('Cache-Control', 'public, max-age=31536000');
req.url = req.url.replace("/omnia/", "/omnia/dist/");
next();
}
else if (req.url.indexOf('/omnia/bundles') === 0) {
// format: /omnia/bundles/{manifestId}/{bundleType}?{queryString}
let fullpath = req.originalUrl.toLowerCase();
// format: /omnia/bundles/{manifestId}/{bundleType}
let path = fullpath.split('?')[0];
// format: {queryString}
//let queryString = fullpath.split('?')[1] || "";
let pathSections = path.split('/');
if (pathSections.length === 5) {
let resourceExt = pathSections[4];
let manifestId = pathSections[3];
if (manifestId === shared_1.LocalizationId) {
res.setHeader('content-type', 'application/x-javascript');
let localizeObject = $.composers.getLocalizations();
res.end(`
var OmniaContext = omniaWebpackJsonp["bb000000-0000-bbbb-0000-0000000000bb"]["a1602121-3070-4304-b4d8-0859e50c482b"]("5326a8ef-4e3c-49d6-b415-1ddf7fdcc830").OmniaContext;
var container = omniaWebpackJsonp["bb000000-0000-bbbb-0000-0000000000bb"]["` + fx_models_1.OmniaResourceManifests.FxCore.toString() + `"]("97786ea9-4861-48bd-8a57-eae9bbdb4892").ServiceContainer;
var omniaCtx = container.createInstance(OmniaContext);
var localizationStore = omniaWebpackJsonp["bb000000-0000-bbbb-0000-0000000000bb"]["` + fx_models_1.OmniaResourceManifests.Fx.toString() + `"]("5e618f4d-d014-414e-a681-89e34cbeda0f").LocalizationStore;
var currentCulture = omniaCtx.language.toLowerCase();
var loc = JSON.parse('${JSON.stringify(localizeObject).replace(/'/g, "\\'").replace(/\\"/g, "\\\\\"")}');
localizationStore.instance.mutations.merge.commit(loc['en-us'] || {}); // add default english
localizationStore.instance.mutations.merge.commit(loc[currentCulture] || {});
`);
}
else {
res.setHeader('Cache-Control', 'public, max-age=31536000');
// Have issue server side rendering write out load vendor, fx core with version from hosting that not from current serving
// so hard code no-cache for them
if (manifestId === fx_models_1.OmniaResourceManifests.Vendor.toString()
|| manifestId === fx_models_1.OmniaResourceManifests.FxShared.toString()
|| manifestId === fx_models_1.OmniaResourceManifests.FxCore.toString()
|| manifestId === fx_models_1.OmniaResourceManifests.FxCoreBoot.toString()) {
res.setHeader('Cache-Control', 'no-cache');
}
let manifest = $.tooling.composer.getManifestById(manifestId);
let fileName = manifest.resourceName ? `${manifest.resourceName}_${manifestId}.${resourceExt}` : `${manifestId}.${resourceExt}`;
req.url = `/omnia/dist/bundles/${fileName}`;
next();
}
}
else {
tooling_1.utils.log(`Not match url format /omnia/bundles/{manifestId}/{bundleType}?{queryString} -> ${fullpath}`, tooling_1.utils.LogTypes.Error);
next();
}
}
else {
next();
}
});
}
exports.registerStaticFileMiddleware = registerStaticFileMiddleware;