st-bundle
Version:
CLI for watching and bundling SpringType projects.
61 lines (60 loc) • 2.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const helpers_1 = require("../../sourcemaps/helpers");
const fastTransform_1 = require("../../transform/fastTransform/fastTransform");
function pluginJS() {
return (ctx) => {
const ict = ctx.ict;
ict.on('bundle_resolve_module', (props) => {
const module = props.module;
if (!module.isJavascriptModule())
return;
const config = ctx.config;
const analysis = module.fastAnalysis;
let continueWithFastTransform = analysis &&
!!analysis.report &&
(analysis.report.es6Syntax || analysis.replaceable) &&
!analysis.report.containsJSX;
let withSourceMaps = false;
if (module.pkg.isDefaultPackage && config.sourceMap.project) {
withSourceMaps = true;
}
if (!module.pkg.isDefaultPackage && config.sourceMap.vendor) {
withSourceMaps = true;
}
if (continueWithFastTransform) {
const transformation = fastTransform_1.fastTransform({
absPath: module.props.absPath,
webWorkers: analysis && analysis.workers,
sourceMaps: withSourceMaps,
input: module.contents,
ast: module.fastAnalysis.ast,
sourceInterceptor: value => {
if (analysis.replaceable) {
const replacement = analysis.replaceable && analysis.replaceable.find(item => item.fromStatement === value);
if (replacement) {
return replacement.toStatement;
}
}
return value;
},
});
module.contents = transformation.code;
if (withSourceMaps) {
module.sourceMap = helpers_1.fixModuleSourceMap(module, transformation.sourceMap);
}
analysis.report.statementsReplaced = true;
analysis.report.transpiled = true;
ctx.log.info('transform', module.getShortPath());
}
else {
if (analysis && analysis.report) {
analysis.report.statementsReplaced = false;
analysis.report.transpiled = false;
}
}
return props;
});
};
}
exports.pluginJS = pluginJS;