Files
go-jdenticon/jdenticon-js/build/gulp/ast-transform-stream.js
Kevin McIntyre f84b511895 init
2025-06-18 01:00:00 -04:00

35 lines
1.0 KiB
JavaScript

const { Transform } = require("stream");
const { parse } = require("acorn");
const { Replacement } = require("./replacement");
function astTransformStream(transformer) {
return new Transform({
objectMode: true,
transform(inputFile, _, fileDone) {
const input = inputFile.contents.toString();
const comments = [];
const ast = parse(input, {
ecmaVersion: 10,
sourceType: "module",
onComment: comments,
});
const replacement = new Replacement();
transformer(replacement, ast, comments, input);
const output = replacement.replace(input, inputFile.sourceMap);
inputFile.contents = Buffer.from(output.output);
if (inputFile.sourceMap) {
inputFile.sourceMap = output.sourceMap;
}
fileDone(null, inputFile);
}
});
}
module.exports = transformer => () => astTransformStream(transformer);