TeaWeb/webpack/DevelBlocks.ts

27 lines
954 B
TypeScript

import {RawSourceMap} from "source-map";
import * as webpack from "webpack";
import * as loaderUtils from "loader-utils";
import LoaderContext = webpack.loader.LoaderContext;
export default function loader(this: LoaderContext, source: string | Buffer, sourceMap?: RawSourceMap): string | Buffer | void | undefined {
this.cacheable();
const options = loaderUtils.getOptions(this);
if(!options.enabled) {
this.callback(null, source);
return;
}
const start_regex = "devel-block\\((?<name>\\S+)\\)";
const end_regex = "devel-block-end";
const pattern = new RegExp("[\\t ]*\\/\\* ?" + start_regex + " ?\\*\\/[\\s\\S]*?\\/\\* ?" + end_regex + " ?\\*\\/[\\t ]*\\n?", "g");
source = (source as string).replace(pattern, (value, type) => {
if(type === "log-networking-commands")
return value;
return "/* snipped block \"" + type + "\" */";
});
this.callback(null, source);
}