first commit
This commit is contained in:
82
build/node_modules/prepack/lib/instrumentor.js
generated
vendored
Normal file
82
build/node_modules/prepack/lib/instrumentor.js
generated
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
"use strict";
|
||||
|
||||
var _babelTypes = require("babel-types");
|
||||
|
||||
var t = _interopRequireWildcard(_babelTypes);
|
||||
|
||||
var _babelGenerator = require("babel-generator");
|
||||
|
||||
var _babelGenerator2 = _interopRequireDefault(_babelGenerator);
|
||||
|
||||
var _traverseFast = require("../lib/utils/traverse-fast.js");
|
||||
|
||||
var _traverseFast2 = _interopRequireDefault(_traverseFast);
|
||||
|
||||
var _babylon = require("babylon");
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
||||
|
||||
/**
|
||||
* Copyright (c) 2017-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
var fs = require("fs");
|
||||
|
||||
|
||||
function createLogStatement(loc) {
|
||||
return t.expressionStatement(t.callExpression(t.memberExpression(t.identifier("console"), t.identifier("log")), [t.stringLiteral("[instrumentation] #" + loc.start.line)]));
|
||||
}
|
||||
|
||||
function instrument(inputFilename, outputFilename) {
|
||||
var code = fs.readFileSync(inputFilename, "utf8");
|
||||
var ast = (0, _babylon.parse)(code, { inputFilename: inputFilename, sourceType: "script" });
|
||||
(0, _traverseFast2.default)(ast, function (node) {
|
||||
if (node.type === "BlockStatement") {
|
||||
if (node.loc) node.body.unshift(createLogStatement(node.loc));
|
||||
}
|
||||
return false;
|
||||
});
|
||||
code = (0, _babelGenerator2.default)(ast, {}, "").code;
|
||||
if (!outputFilename) outputFilename = inputFilename + "-instrumented.js";
|
||||
fs.writeFileSync(outputFilename, code);
|
||||
console.log("Instrumented source code written to " + outputFilename + ".");
|
||||
}
|
||||
|
||||
var args = Array.from(process.argv);
|
||||
args.splice(0, 2);
|
||||
var inputFilename = void 0;
|
||||
var outputFilename = void 0;
|
||||
while (args.length) {
|
||||
var arg = args[0];
|
||||
args.shift();
|
||||
if (arg === "--out") {
|
||||
arg = args[0];
|
||||
args.shift();
|
||||
outputFilename = arg;
|
||||
} else if (arg === "--help") {
|
||||
console.log("Usage: instrumentor.js [ --out output.js ] [ -- | input.js ]");
|
||||
} else if (!arg.startsWith("--")) {
|
||||
inputFilename = arg;
|
||||
} else {
|
||||
console.error("Unknown option: " + arg);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
if (!inputFilename) {
|
||||
console.error("Missing input file.");
|
||||
process.exit(1);
|
||||
} else if (!outputFilename) {
|
||||
console.error("Missing output file.");
|
||||
process.exit(1);
|
||||
} else {
|
||||
instrument(inputFilename, outputFilename);
|
||||
}
|
||||
//# sourceMappingURL=instrumentor.js.map
|
||||
Reference in New Issue
Block a user