UNPKG

@omnia/tooling-vue

Version:

Used to bundle and serve manifests web component that build on Vue framework.

69 lines (67 loc) 4.29 kB
"use strict"; 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;