canonical
Version:
Canonical code style linter and formatter for JavaScript, SCSS and CSS.
52 lines (36 loc) • 4.42 kB
JavaScript
;
var _Object$assign = require('babel-runtime/core-js/object/assign')['default'];
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
Object.defineProperty(exports, '__esModule', {
value: true
});
exports['default'] = parse;
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var defaultParseOptions = {
ecmaVersion: 6, // for espree, esprima. not needed for babylon
sourceType: 'module'
};
function parse(path) {
var _ref = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
var _ref$settings = _ref.settings;
var settings = _ref$settings === undefined ? {} : _ref$settings;
var _ref$ecmaFeatures = _ref.ecmaFeatures;
var ecmaFeatures = _ref$ecmaFeatures === undefined ? {} : _ref$ecmaFeatures;
var parser = settings['import/parser'] || 'babylon';
var _require = require(parser);
var parse = _require.parse;
var options = _Object$assign({}, defaultParseOptions, settings['import/parse-options']);
// detect and handle "jsx" ecmaFeature
if (ecmaFeatures && parser === 'babylon') {
var jsx = ecmaFeatures.jsx;
if (jsx && (!options.plugins || options.plugins.indexOf('jsx') < 0)) {
if (!options.plugins) options.plugins = ['jsx'];else options.plugins = options.plugins.concat('jsx');
}
}
var ast = parse(_fs2['default'].readFileSync(path, { encoding: 'utf8' }), options);
// bablyon returns top-level "File" node.
return ast.type === 'File' ? ast.program : ast;
}
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3BhcnNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztxQkFPd0IsS0FBSzs7a0JBUGQsSUFBSTs7OztBQUVuQixJQUFNLG1CQUFtQixHQUFHO0FBQzFCLGFBQVcsRUFBRSxDQUFDO0FBQ2QsWUFBVSxFQUFFLFFBQVE7Q0FDckIsQ0FBQTs7QUFFYyxTQUFTLEtBQUssQ0FBQyxJQUFJLEVBQTZDO21FQUFKLEVBQUU7OzJCQUF2QyxRQUFRO01BQVIsUUFBUSxpQ0FBRyxFQUFFOytCQUFFLFlBQVk7TUFBWixZQUFZLHFDQUFHLEVBQUU7O0FBQ3BFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxTQUFTLENBQUE7O2lCQUVuQyxPQUFPLENBQUMsTUFBTSxDQUFDOztBQUEzQixNQUFFLEtBQUssWUFBTCxLQUFLLENBQW9CO0FBQzNCLE1BQUEsT0FBTyxHQUFHLGVBQWUsRUFBRSxFQUNGLG1CQUFtQixFQUNuQixRQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFBOzs7QUFHaEUsTUFBSSxZQUFZLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtRQUNoQyxHQUFHLEdBQUssWUFBWSxDQUFwQixHQUFHOztBQUNYLFFBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUEsQUFBQyxFQUFFO0FBQ25FLFVBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQSxLQUMxQyxPQUFPLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0tBQ3JEO0dBQ0Y7O0FBRUQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFFLGdCQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBQyxRQUFRLEVBQUUsTUFBTSxFQUFDLENBQUMsRUFDekMsT0FBTyxDQUNSLENBQUE7OztBQUdsQixTQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFBO0NBQy9DIiwiZmlsZSI6InBhcnNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuXG5jb25zdCBkZWZhdWx0UGFyc2VPcHRpb25zID0ge1xuICBlY21hVmVyc2lvbjogNiwgIC8vIGZvciBlc3ByZWUsIGVzcHJpbWEuIG5vdCBuZWVkZWQgZm9yIGJhYnlsb25cbiAgc291cmNlVHlwZTogJ21vZHVsZScsXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhcnNlKHBhdGgsIHsgc2V0dGluZ3MgPSB7fSwgZWNtYUZlYXR1cmVzID0ge30gfSA9IHt9KSB7XG4gIGNvbnN0IHBhcnNlciA9IHNldHRpbmdzWydpbXBvcnQvcGFyc2VyJ10gfHwgJ2JhYnlsb24nXG5cbiAgY29uc3QgeyBwYXJzZSB9ID0gcmVxdWlyZShwYXJzZXIpXG4gICAgICAsIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKCB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgZGVmYXVsdFBhcnNlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgc2V0dGluZ3NbJ2ltcG9ydC9wYXJzZS1vcHRpb25zJ10pXG5cbiAgLy8gZGV0ZWN0IGFuZCBoYW5kbGUgXCJqc3hcIiBlY21hRmVhdHVyZVxuICBpZiAoZWNtYUZlYXR1cmVzICYmIHBhcnNlciA9PT0gJ2JhYnlsb24nKSB7XG4gICAgY29uc3QgeyBqc3ggfSA9IGVjbWFGZWF0dXJlc1xuICAgIGlmIChqc3ggJiYgKCFvcHRpb25zLnBsdWdpbnMgfHwgb3B0aW9ucy5wbHVnaW5zLmluZGV4T2YoJ2pzeCcpIDwgMCkpIHtcbiAgICAgIGlmICghb3B0aW9ucy5wbHVnaW5zKSBvcHRpb25zLnBsdWdpbnMgPSBbJ2pzeCddXG4gICAgICBlbHNlIG9wdGlvbnMucGx1Z2lucyA9IG9wdGlvbnMucGx1Z2lucy5jb25jYXQoJ2pzeCcpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgYXN0ID0gcGFyc2UoIGZzLnJlYWRGaWxlU3luYyhwYXRoLCB7ZW5jb2Rpbmc6ICd1dGY4J30pXG4gICAgICAgICAgICAgICAgICAgLCBvcHRpb25zXG4gICAgICAgICAgICAgICAgICAgKVxuXG4gIC8vIGJhYmx5b24gcmV0dXJucyB0b3AtbGV2ZWwgXCJGaWxlXCIgbm9kZS5cbiAgcmV0dXJuIGFzdC50eXBlID09PSAnRmlsZScgPyBhc3QucHJvZ3JhbSA6IGFzdFxufVxuIl19