init
This commit is contained in:
34
jdenticon-js/build/gulp/ast-transform-stream.js
Normal file
34
jdenticon-js/build/gulp/ast-transform-stream.js
Normal file
@@ -0,0 +1,34 @@
|
||||
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);
|
||||
Reference in New Issue
Block a user