st-bundle
Version:
CLI for watching and bundling SpringType projects.
73 lines (72 loc) • 3.15 kB
JavaScript
;
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;