canonical
Version:
Canonical code style linter and formatter for JavaScript, SCSS, CSS and JSON.
71 lines (48 loc) • 5.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _assign = require("babel-runtime/core-js/object/assign");
var _assign2 = _interopRequireDefault(_assign);
exports.default = function (p, context) {
if (context == null) throw new Error("need context to parse properly");
var parserOptions = context.parserOptions;
var parserPath = context.parserPath;
if (!parserPath) throw new Error("parserPath is required!");
// hack: espree blows up with frozen options
parserOptions = (0, _assign2.default)({}, parserOptions);
parserOptions.ecmaFeatures = (0, _assign2.default)({}, parserOptions.ecmaFeatures);
// require the parser relative to the main module (i.e., ESLint)
var parser = requireParser(parserPath);
return parser.parse(_fs2.default.readFileSync(p, { encoding: 'utf8' }), parserOptions);
};
var _fs = require("fs");
var _fs2 = _interopRequireDefault(_fs);
var _module = require("module");
var _module2 = _interopRequireDefault(_module);
var _path = require("path");
var path = _interopRequireWildcard(_path);
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; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// borrowed from babel-eslint
function createModule(filename) {
var mod = new _module2.default(filename);
mod.filename = filename;
mod.paths = _module2.default._nodeModulePaths(path.dirname(filename));
return mod;
}
function requireParser(p) {
try {
// attempt to get espree relative to eslint
var eslintPath = require.resolve('eslint');
var eslintModule = createModule(eslintPath);
return require(_module2.default._resolveFilename(p, eslintModule));
} catch (err) {/* ignore */}
try {
// try relative to entry point
return require.main.require(p);
} catch (err) {} /* ignore */
// finally, try from here
return require(p);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUvcGFyc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztrQkFFZSxVQUFVLENBQVYsRUFBYSxPQUFiLEVBQXNCOztBQUVuQyxNQUFJLFdBQVcsSUFBWCxFQUFpQixNQUFNLElBQUksS0FBSixDQUFVLGdDQUFWLENBQU4sQ0FBckI7O01BRU0sZ0JBQThCLFFBQTlCLGNBSjZCO01BSWQsYUFBZSxRQUFmLFdBSmM7OztBQU1uQyxNQUFJLENBQUMsVUFBRCxFQUFhLE1BQU0sSUFBSSxLQUFKLENBQVUseUJBQVYsQ0FBTixDQUFqQjs7O0FBTm1DLGVBU25DLEdBQWdCLHNCQUFjLEVBQWQsRUFBa0IsYUFBbEIsQ0FBaEIsQ0FUbUM7QUFVbkMsZ0JBQWMsWUFBZCxHQUE2QixzQkFBYyxFQUFkLEVBQWtCLGNBQWMsWUFBZCxDQUEvQzs7O0FBVm1DLE1BYTdCLFNBQVMsY0FBYyxVQUFkLENBQVQsQ0FiNkI7O0FBZW5DLFNBQU8sT0FBTyxLQUFQLENBQ0wsYUFBRyxZQUFILENBQWdCLENBQWhCLEVBQW1CLEVBQUMsVUFBVSxNQUFWLEVBQXBCLENBREssRUFFTCxhQUZLLENBQVAsQ0FmbUM7Q0FBdEI7Ozs7Ozs7Ozs7OztJQXFCSDs7Ozs7OztBQUdaLFNBQVMsWUFBVCxDQUFzQixRQUF0QixFQUFnQztBQUM5QixNQUFJLE1BQU0scUJBQVcsUUFBWCxDQUFOLENBRDBCO0FBRTlCLE1BQUksUUFBSixHQUFlLFFBQWYsQ0FGOEI7QUFHOUIsTUFBSSxLQUFKLEdBQVksaUJBQU8sZ0JBQVAsQ0FBd0IsS0FBSyxPQUFMLENBQWEsUUFBYixDQUF4QixDQUFaLENBSDhCO0FBSTlCLFNBQU8sR0FBUCxDQUo4QjtDQUFoQzs7QUFPQSxTQUFTLGFBQVQsQ0FBdUIsQ0FBdkIsRUFBMEI7QUFDeEIsTUFBSTs7QUFFRixRQUFNLGFBQWEsUUFBUSxPQUFSLENBQWdCLFFBQWhCLENBQWIsQ0FGSjtBQUdGLFFBQU0sZUFBZSxhQUFhLFVBQWIsQ0FBZixDQUhKO0FBSUYsV0FBTyxRQUFRLGlCQUFPLGdCQUFQLENBQXdCLENBQXhCLEVBQTJCLFlBQTNCLENBQVIsQ0FBUCxDQUpFO0dBQUosQ0FLRSxPQUFNLEdBQU4sRUFBVyxjQUFYOztBQUVGLE1BQUk7O0FBRUYsV0FBTyxRQUFRLElBQVIsQ0FBYSxPQUFiLENBQXFCLENBQXJCLENBQVAsQ0FGRTtHQUFKLENBR0UsT0FBTSxHQUFOLEVBQVc7OztBQUFYLFNBR0ssUUFBUSxDQUFSLENBQVAsQ0Fkd0I7Q0FBMUIiLCJmaWxlIjoiY29yZS9wYXJzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcydcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHAsIGNvbnRleHQpIHtcblxuICBpZiAoY29udGV4dCA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJuZWVkIGNvbnRleHQgdG8gcGFyc2UgcHJvcGVybHlcIilcblxuICBsZXQgeyBwYXJzZXJPcHRpb25zLCBwYXJzZXJQYXRoIH0gPSBjb250ZXh0XG5cbiAgaWYgKCFwYXJzZXJQYXRoKSB0aHJvdyBuZXcgRXJyb3IoXCJwYXJzZXJQYXRoIGlzIHJlcXVpcmVkIVwiKVxuXG4gIC8vIGhhY2s6IGVzcHJlZSBibG93cyB1cCB3aXRoIGZyb3plbiBvcHRpb25zXG4gIHBhcnNlck9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBwYXJzZXJPcHRpb25zKVxuICBwYXJzZXJPcHRpb25zLmVjbWFGZWF0dXJlcyA9IE9iamVjdC5hc3NpZ24oe30sIHBhcnNlck9wdGlvbnMuZWNtYUZlYXR1cmVzKVxuXG4gIC8vIHJlcXVpcmUgdGhlIHBhcnNlciByZWxhdGl2ZSB0byB0aGUgbWFpbiBtb2R1bGUgKGkuZS4sIEVTTGludClcbiAgY29uc3QgcGFyc2VyID0gcmVxdWlyZVBhcnNlcihwYXJzZXJQYXRoKVxuXG4gIHJldHVybiBwYXJzZXIucGFyc2UoXG4gICAgZnMucmVhZEZpbGVTeW5jKHAsIHtlbmNvZGluZzogJ3V0ZjgnfSksXG4gICAgcGFyc2VyT3B0aW9ucylcbn1cblxuaW1wb3J0IE1vZHVsZSBmcm9tICdtb2R1bGUnXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnXG5cbi8vIGJvcnJvd2VkIGZyb20gYmFiZWwtZXNsaW50XG5mdW5jdGlvbiBjcmVhdGVNb2R1bGUoZmlsZW5hbWUpIHtcbiAgdmFyIG1vZCA9IG5ldyBNb2R1bGUoZmlsZW5hbWUpXG4gIG1vZC5maWxlbmFtZSA9IGZpbGVuYW1lXG4gIG1vZC5wYXRocyA9IE1vZHVsZS5fbm9kZU1vZHVsZVBhdGhzKHBhdGguZGlybmFtZShmaWxlbmFtZSkpXG4gIHJldHVybiBtb2Rcbn1cblxuZnVuY3Rpb24gcmVxdWlyZVBhcnNlcihwKSB7XG4gIHRyeSB7XG4gICAgLy8gYXR0ZW1wdCB0byBnZXQgZXNwcmVlIHJlbGF0aXZlIHRvIGVzbGludFxuICAgIGNvbnN0IGVzbGludFBhdGggPSByZXF1aXJlLnJlc29sdmUoJ2VzbGludCcpXG4gICAgY29uc3QgZXNsaW50TW9kdWxlID0gY3JlYXRlTW9kdWxlKGVzbGludFBhdGgpXG4gICAgcmV0dXJuIHJlcXVpcmUoTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWUocCwgZXNsaW50TW9kdWxlKSlcbiAgfSBjYXRjaChlcnIpIHsgLyogaWdub3JlICovIH1cblxuICB0cnkge1xuICAgIC8vIHRyeSByZWxhdGl2ZSB0byBlbnRyeSBwb2ludFxuICAgIHJldHVybiByZXF1aXJlLm1haW4ucmVxdWlyZShwKVxuICB9IGNhdGNoKGVycikgeyAvKiBpZ25vcmUgKi8gfVxuXG4gIC8vIGZpbmFsbHksIHRyeSBmcm9tIGhlcmVcbiAgcmV0dXJuIHJlcXVpcmUocClcbn1cbiJdfQ==