UNPKG

vue-styleguidist

Version:
86 lines (83 loc) 4.12 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"] = getConfig; var fs = _interopRequireWildcard(require("fs")); var path = _interopRequireWildcard(require("path")); var _findup = _interopRequireDefault(require("findup")); var _isString = _interopRequireDefault(require("lodash/isString")); var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject")); var _error = _interopRequireDefault(require("react-styleguidist/lib/scripts/utils/error")); var _sanitizeConfig = _interopRequireDefault(require("react-styleguidist/lib/scripts/utils/sanitizeConfig")); var _config = _interopRequireDefault(require("./schemas/config")); 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; } var CONFIG_FILENAME = 'styleguide.config.js'; /** * Read, parse and validate config file or passed config. * * @param {object|string} [config] All config options or config file name or nothing. * @param {function} [update] Change config object before running validation on it. * @returns {object} */ function getConfig(configParam, update) { var configFilepath; var config; if ((0, _isString["default"])(configParam)) { // Load config from a given file configFilepath = path.resolve(process.cwd(), configParam); if (!fs.existsSync(configFilepath)) { throw new _error["default"]('Styleguidist config not found: ' + configFilepath + '.'); } config = {}; } else if (!(0, _isPlainObject["default"])(configParam)) { // Try to read config options from a file configFilepath = findConfigFile(); config = {}; } else { config = configParam; } if (typeof configFilepath === 'string') { config = require(configFilepath); } var configDir = typeof configFilepath === 'string' ? path.dirname(configFilepath) : process.cwd(); if (typeof config === 'function') { return config().then(function (conf) { return postTreatConfig(configDir, conf, update); }); } return postTreatConfig(configDir, config, update); } function postTreatConfig(configDir, config, update) { if (update) { config = update(config); } if (config.serverPort && (0, _isString["default"])(config.serverPort)) { config.serverPort = parseInt(config.serverPort); } try { return (0, _sanitizeConfig["default"])(config, _config["default"], configDir); } catch (exception) { var err = exception; // eslint-disable-next-line no-console console.log(exception instanceof _error["default"], err.constructor.name); throw err.message; } } /** * Try to find config file up the file tree. * * @return {string|boolean} Config absolute file path. */ function findConfigFile() { var configDir; try { configDir = _findup["default"].sync(process.cwd(), CONFIG_FILENAME); } catch (exception) { return false; } return path.join(configDir, CONFIG_FILENAME); }