UNPKG

st-bundle

Version:

CLI for watching and bundling SpringType projects.

73 lines (72 loc) 3.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const convertSourceMap = require("convert-source-map"); const bundleStrings_1 = require("../bundle/bundleStrings"); const createDevBundles_1 = require("../bundle/createDevBundles"); const utils_1 = require("../utils/utils"); function generateHMRContent(props) { const { ctx } = props; const config = ctx.config; let packageUpdate = []; if (props.packages) { packageUpdate = props.packages.map(pkg => { const name = pkg.getPublicName(); if (pkg.isCached) { return { name, content: pkg.cache.contents }; } else { const inflated = createDevBundles_1.inflatePackage(ctx, pkg); return { name, content: inflated.content.toString() }; } }); } const response = []; props.modules.forEach(module => { let requireSourceMaps = false; const pkg = module.pkg; const packageName = module.pkg.getPublicName(); if (pkg.isDefaultPackage && config.sourceMap.project) { requireSourceMaps = true; } if (!pkg.isDefaultPackage && config.sourceMap.vendor) { requireSourceMaps = true; } let concat; if (module.isCached) { concat = utils_1.createConcat(requireSourceMaps, '', '\n'); concat.add(null, bundleStrings_1.devStrings.openPackage(packageName, {})); concat.add(null, module.cache.contents, requireSourceMaps ? module.cache.sourceMap : undefined); concat.add(null, bundleStrings_1.devStrings.closePackage()); } else { const data = module.generate(); concat = utils_1.createConcat(requireSourceMaps, '', '\n'); concat.add(null, bundleStrings_1.devStrings.openPackage(packageName, {})); concat.add(null, bundleStrings_1.devStrings.openFile(module.props.fuseBoxPath)); concat.add(null, data.contents, requireSourceMaps ? data.sourceMap : undefined); concat.add(null, bundleStrings_1.devStrings.closeFile()); concat.add(null, bundleStrings_1.devStrings.closePackage()); } let stringContent = concat.content.toString(); const rawSourceMap = concat.sourceMap; if (module.isExecutable()) { if (rawSourceMap && requireSourceMaps) { let json = JSON.parse(rawSourceMap); // since new Function wrapoer adds extra 2 lines we need to shift sourcemaps json = utils_1.offsetLines(json, 2); const sm = convertSourceMap.fromObject(json).toComment(); stringContent += '\n' + sm; } } response.push({ content: stringContent, isStylesheet: module.isStylesheet() && !module.isCSSModule && !module.isCSSText, fuseBoxPath: `${pkg.getPublicName()}/${module.props.fuseBoxPath}`, }); }); return { packages: packageUpdate, modules: response, }; } exports.generateHMRContent = generateHMRContent;