react-cosmos
Version:
CLI for running React Cosmos inside webpack-powered apps
116 lines (91 loc) • 4.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.RENDERER_FILENAME = void 0;
exports.getDevPlaygroundHtml = getDevPlaygroundHtml;
exports.getExportPlaygroundHtml = getExportPlaygroundHtml;
var _fs = _interopRequireDefault(require("fs"));
var _pkgUp = _interopRequireDefault(require("pkg-up"));
var _url = _interopRequireDefault(require("url"));
var _static = require("./static");
var _utils = require("./utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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) { _defineProperty(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; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var RENDERER_FILENAME = '_renderer.html';
exports.RENDERER_FILENAME = RENDERER_FILENAME;
function getDevPlaygroundHtml(platformType, cosmosConfig, pluginConfigs) {
var ui = cosmosConfig.ui;
return getPlaygroundHtml({
playgroundConfig: _objectSpread(_objectSpread({}, ui), {}, {
core: getDevCoreConfig(platformType, cosmosConfig)
}),
pluginConfigs: pluginConfigs
});
}
function getExportPlaygroundHtml(cosmosConfig, pluginConfigs) {
var ui = cosmosConfig.ui;
return getPlaygroundHtml({
playgroundConfig: _objectSpread(_objectSpread({}, ui), {}, {
core: getExportCoreConfig(cosmosConfig)
}),
pluginConfigs: pluginConfigs
});
}
function getDevCoreConfig(platformType, cosmosConfig) {
switch (platformType) {
case 'native':
return _objectSpread(_objectSpread({}, getSharedCoreConfig(cosmosConfig)), {}, {
devServerOn: true,
webRendererUrl: null
});
case 'web':
return _objectSpread(_objectSpread({}, getSharedCoreConfig(cosmosConfig)), {}, {
devServerOn: true,
webRendererUrl: getWebRendererUrl(cosmosConfig)
});
default:
throw new Error("Invalid platform type: ".concat(platformType));
}
}
function getExportCoreConfig(cosmosConfig) {
return _objectSpread(_objectSpread({}, getSharedCoreConfig(cosmosConfig)), {}, {
devServerOn: false,
webRendererUrl: getWebRendererUrl(cosmosConfig)
});
}
function getSharedCoreConfig(cosmosConfig) {
var rootDir = cosmosConfig.rootDir,
fixturesDir = cosmosConfig.fixturesDir,
fixtureFileSuffix = cosmosConfig.fixtureFileSuffix;
return {
projectId: getProjectId(rootDir),
fixturesDir: fixturesDir,
fixtureFileSuffix: fixtureFileSuffix
};
}
function getProjectId(rootDir) {
var pkgPath = _pkgUp.default.sync({
cwd: rootDir
});
if (!pkgPath) {
return rootDir.split('/').pop();
}
var pkg = require(pkgPath);
return pkg.name || '';
}
function getWebRendererUrl(_ref) {
var publicUrl = _ref.publicUrl,
experimentalRendererUrl = _ref.experimentalRendererUrl;
return experimentalRendererUrl || _url.default.resolve(publicUrl, RENDERER_FILENAME);
}
function getPlaygroundHtml(playgroundArgs) {
return (0, _utils.replaceKeys)(getPlaygroundHtmlTemplate(), {
__PLAYGROUND_ARGS: JSON.stringify(playgroundArgs)
});
}
function getPlaygroundHtmlTemplate() {
return _fs.default.readFileSync((0, _static.getStaticPath)('index.html'), 'utf8');
}