@knapsack/app
Version:
Build Design Systems on top of knapsack, by Basalt
126 lines (100 loc) • 3.15 kB
JavaScript
"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;
}