vue-styleguidist
Version:
Vue components style guide generator
77 lines (75 loc) • 2.95 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = getParser;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _vueDocgenApi = require("vue-docgen-api");
var _mergeWebpackConfig = _interopRequireDefault(require("../../scripts/utils/mergeWebpackConfig"));
function getParser(config) {
var validExtends = config.validExtends,
propsParser = config.propsParser;
// resolve webpack config as functions or objects
var webpackConfig = (0, _mergeWebpackConfig["default"])({}, config.webpackConfig, process.env.NODE_ENV || 'production');
var alias;
var modules;
if (webpackConfig.resolve) {
alias = webpackConfig.resolve.alias;
modules = webpackConfig.resolve.modules;
}
var pugOptions;
if (webpackConfig.module && webpackConfig.module.rules) {
var rules = webpackConfig.module.rules;
var pugLoader = rules.find(function (r) {
return r.loader === 'pug-loader' || r.use === 'pug-loader';
}) || rules.reduce(function (acc, r) {
if (Array.isArray(r.use)) {
return acc.concat(r.use);
}
return acc;
}, []).find(function (r) {
return (0, _typeof2["default"])(r) === 'object' && r.loader === 'pug-loader';
});
if (pugLoader) {
pugOptions = pugLoader.options;
} else {
var pugLoaderUse = rules.find(function (r) {
return (0, _typeof2["default"])(r.use) === 'object' && r.use.loader === 'pug-loader';
});
if (pugLoaderUse && pugLoaderUse.use && (0, _typeof2["default"])(pugLoaderUse.use) === 'object' && !Array.isArray(pugLoaderUse.use)) {
pugOptions = pugLoaderUse.use.options;
}
}
}
var defaultParser = /*#__PURE__*/function () {
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(file) {
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return (0, _vueDocgenApi.parse)(file, {
alias: alias,
modules: modules,
jsx: config.jsxInComponents,
validExtends: validExtends,
pugOptions: pugOptions
});
case 2:
return _context.abrupt("return", _context.sent);
case 3:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return function defaultParser(_x) {
return _ref.apply(this, arguments);
};
}();
return propsParser || defaultParser;
}