vue-styleguidist
Version:
Vue components style guide generator
247 lines (246 loc) • 12.5 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = getSections;
exports.getRequiredComponents = getRequiredComponents;
exports.processSection = processSection;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var fs = _interopRequireWildcard(require("fs"));
var path = _interopRequireWildcard(require("path"));
var _lodash = require("lodash");
var _vueDocgenApi = require("vue-docgen-api");
var _requireIt = _interopRequireDefault(require("react-styleguidist/lib/loaders/utils/requireIt"));
var _getComponentFiles = _interopRequireDefault(require("react-styleguidist/lib/loaders/utils/getComponentFiles"));
var _slugger = _interopRequireDefault(require("react-styleguidist/lib/loaders/utils/slugger"));
var _getComponents = _interopRequireDefault(require("./getComponents"));
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
var examplesLoader = path.resolve(__dirname, '../examples-loader.js');
/**
* Return object for one level of sections.
*
* @param {Array} sections
* @param {object} config
* @param {number} parentDepth
* @returns {Array}
*/
function getSections(_x, _x2) {
return _getSections.apply(this, arguments);
}
/**
* Returns all the `@required` file path in the analyzed components
* this way we can ignore them when analyzing the components in the menu
* and only add them as a subsection for a parent component
* @param componentFiles all the component file paths to be analyzed
*/
function _getSections() {
_getSections = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(sections, opts) {
var config, componentFiles;
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
config = opts.config, componentFiles = opts.componentFiles;
if (opts.requiredComponents) {
_context2.next = 6;
break;
}
_context2.next = 4;
return getRequiredComponents(componentFiles, config.jsxInComponents);
case 4:
opts.requiredComponents = _context2.sent;
opts.requiredComponentsList = (0, _lodash.flatten)(Object.values(opts.requiredComponents));
case 6:
return _context2.abrupt("return", Promise.all(sections.map( /*#__PURE__*/function () {
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(section) {
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return processSection(section, opts);
case 2:
return _context.abrupt("return", _context.sent);
case 3:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return function (_x7) {
return _ref.apply(this, arguments);
};
}())));
case 7:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return _getSections.apply(this, arguments);
}
function getRequiredComponents(_x3, _x4) {
return _getRequiredComponents.apply(this, arguments);
}
/**
* Return an object for a given section with all components and subsections.
* @param {object} section
* @param {object} config
* @param {number} parentDepth
* @returns {object}
*/
function _getRequiredComponents() {
_getRequiredComponents = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(componentFiles, jsx) {
var pathsArrays;
return _regenerator["default"].wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 2;
return Promise.all(componentFiles.map( /*#__PURE__*/function () {
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(componentPath) {
var compDirName, docs;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
compDirName = path.dirname(componentPath);
_context3.prev = 1;
_context3.next = 4;
return (0, _vueDocgenApi.parseMulti)(componentPath, {
scriptPreHandlers: [],
scriptHandlers: [_vueDocgenApi.ScriptHandlers.componentHandler],
jsx: jsx
});
case 4:
docs = _context3.sent;
return _context3.abrupt("return", docs.reduce(function (acc, doc) {
if (doc.tags && doc.tags.requires) {
acc = acc.concat(doc.tags.requires.map(function (t) {
return path.resolve(compDirName, t.description);
}));
}
return acc;
}, [componentPath]));
case 8:
_context3.prev = 8;
_context3.t0 = _context3["catch"](1);
case 10:
return _context3.abrupt("return", []);
case 11:
case "end":
return _context3.stop();
}
}
}, _callee3, null, [[1, 8]]);
}));
return function (_x8) {
return _ref2.apply(this, arguments);
};
}()));
case 2:
pathsArrays = _context4.sent;
return _context4.abrupt("return", pathsArrays.reduce(function (acc, pa) {
var parentComponent = pa && pa[0] || 'undefined';
acc[parentComponent] = pa && pa.slice(1) || [];
return acc;
}, {}));
case 4:
case "end":
return _context4.stop();
}
}
}, _callee4);
}));
return _getRequiredComponents.apply(this, arguments);
}
function processSection(_x5, _x6) {
return _processSection.apply(this, arguments);
}
function _processSection() {
_processSection = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(section, opts) {
var config, parentDepth, contentRelativePath, content, contentAbsolutePath, sectionDepth;
return _regenerator["default"].wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
config = opts.config, parentDepth = opts.parentDepth;
contentRelativePath = section.content; // Try to load section content file
if (!contentRelativePath) {
_context5.next = 7;
break;
}
contentAbsolutePath = path.resolve(config.configDir, contentRelativePath);
if (fs.existsSync(contentAbsolutePath)) {
_context5.next = 6;
break;
}
throw new Error("Styleguidist: Section content file not found: ".concat(contentAbsolutePath));
case 6:
content = (0, _requireIt["default"])("!!".concat(examplesLoader, "?customLangs=vue|js|jsx!").concat(contentAbsolutePath));
case 7:
if (parentDepth === undefined) {
sectionDepth = section.sectionDepth !== undefined ? section.sectionDepth : 0;
} else {
sectionDepth = parentDepth === 0 ? 0 : parentDepth - 1;
}
_context5.t0 = section.name || '';
_context5.t1 = section.exampleMode || config.exampleMode;
_context5.t2 = section.usageMode || config.usageMode;
_context5.t3 = sectionDepth;
_context5.t4 = section.description;
_context5.t5 = _slugger["default"].slug(section.name || '');
_context5.next = 16;
return getSections(section.sections || [], _objectSpread(_objectSpread({}, opts), {}, {
parentDepth: sectionDepth
}));
case 16:
_context5.t6 = _context5.sent;
_context5.t7 = section.href;
_context5.t8 = getSectionComponents(section, opts);
_context5.t9 = content;
_context5.t10 = section.external;
return _context5.abrupt("return", {
name: _context5.t0,
exampleMode: _context5.t1,
usageMode: _context5.t2,
sectionDepth: _context5.t3,
description: _context5.t4,
slug: _context5.t5,
sections: _context5.t6,
href: _context5.t7,
components: _context5.t8,
content: _context5.t9,
external: _context5.t10
});
case 22:
case "end":
return _context5.stop();
}
}
}, _callee5);
}));
return _processSection.apply(this, arguments);
}
var getSectionComponents = function getSectionComponents(section, opts) {
var config = opts.config,
requiredComponentsList = opts.requiredComponentsList,
requiredComponents = opts.requiredComponents;
var ignore = config.ignore ? (0, _lodash.castArray)(config.ignore) : [];
if (section.ignore) {
ignore = ignore.concat((0, _lodash.castArray)(section.ignore));
}
if (requiredComponentsList) {
ignore = ignore.concat(requiredComponentsList);
}
return (0, _getComponents["default"])((0, _getComponentFiles["default"])(section.components, config.configDir, ignore), config, requiredComponents);
};