UNPKG

vue-styleguidist

Version:
247 lines (246 loc) 12.5 kB
"use strict"; 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); };