UNPKG

@knapsack/app

Version:

Build Design Systems on top of knapsack, by Basalt

126 lines (100 loc) 3.15 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports.bootstrap = bootstrap; exports.bootstrapFromConfigFile = bootstrapFromConfigFile; exports.getBrain = getBrain; var _path = require("path"); var _serverUtils = require("../server/server-utils"); var _config = require("./config"); var log = _interopRequireWildcard(require("../cli/log")); var _patterns = require("../server/patterns"); var _settings = require("../server/settings"); var _navs = require("../server/navs"); var _customPages = require("../server/custom-pages"); var _designTokens = require("../server/design-tokens"); var _assetSets = require("../server/asset-sets"); var _serverPlugin = require("../cloud/server-plugin"); var _appPlugin = require("./app-plugin"); let isReady = false; let brain = { patterns: null, settings: null, pageBuilderPages: null, customPages: null, tokens: null, assetSets: null, navs: null, config: null }; /** * Take config and then start up the whole system! */ function bootstrap(config, /** * path that config file paths are relative from */ configPathBase = process.cwd()) { var _config$plugins; const assetSets = new _assetSets.AssetSets({ dataDir: config.data, publicDir: config.public }); const patterns = new _patterns.Patterns({ assetSets, dataDir: config.data, templateRenderers: config.templateRenderers }); const settings = new _settings.Settings({ dataDir: config.data, publicDir: config.public }); // const pageBuilderPages = new PageBuilder({ dataDir: config.data }); const customPages = new _customPages.CustomPages({ dataDir: config.data }); const navs = new _navs.Navs({ dataDir: config.data }); const tokens = new _designTokens.DesignTokens(config.designTokens); config.plugins = [...((_config$plugins = config.plugins) !== null && _config$plugins !== void 0 ? _config$plugins : []), (0, _serverPlugin.configure)(config.cloud), (0, _appPlugin.configure)()]; brain = { patterns, settings, // pageBuilderPages, customPages, tokens, navs, assetSets, config }; log.verbose('Brain built'); isReady = true; return brain; } /** * Take config file path and then start up the whole system! */ function bootstrapFromConfigFile( /** * path to `knapsack.config.js` */ configPath) { const absoluteConfigPath = (0, _path.isAbsolute)(configPath) ? configPath : (0, _path.resolve)(configPath); (0, _serverUtils.fileExistsOrExit)(absoluteConfigPath); const userConfig = require(absoluteConfigPath); // eslint-disable-line const configPathBase = (0, _path.dirname)(absoluteConfigPath); const config = (0, _config.processConfig)(userConfig, configPathBase); return bootstrap(config, configPathBase); } /** * Get the Brain created from a previous bootstrap */ function getBrain() { if (!isReady) { log.error('Not ready yet! You cannot "getBrain()" before "bootstrap()" or "bootstrapFromConfigFile()" has been run'); process.exit(1); } return brain; }