UNPKG

build-boiler

Version:

Build Boilerplate using Webpack, Eslint, Assemble, Nunjucks, and BrowserSync

108 lines (78 loc) 2.77 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (app, config) { var isomorphic = config.isomorphic; var environment = config.environment; var utils = config.utils; var isDev = environment.isDev; var enableIsomorphic = environment.enableIsomorphic; var logError = utils.logError; var bootstrap = isomorphic.bootstrap; var addFluxData = !isDev && enableIsomorphic; var fluxBootstrap = undefined; if (addFluxData) { var _app$snippets$getView = app.snippets.getView((0, _renameKey2.default)(bootstrap)); fluxBootstrap = _app$snippets$getView.fn; } return _through2.default.obj(function (file, enc, cb) { var path = file.path; var data = file.data; if (addFluxData) { var isoData = data.isomorphic_data; var key = undefined; if (_lodash2.default.isPlainObject(isoData)) { key = isoData.data; } else if (_lodash2.default.isString(isoData)) { key = isoData; } if (_lodash2.default.isUndefined(key)) { logError({ err: new Error('You must specify a `data` key in `isomorphic_data`'), plugin: '[assemble: iso-merge]' }); } var registerData = data[key] || app.cache.data[key]; if (!registerData) { logError({ err: new Error('No data was found to register'), plugin: '[assemble: iso-merge]' }); } try { var props = fluxBootstrap(registerData); var reactor = props.fluxStore; Object.assign(file.data, { props: props, globalStore: _lodash2.default.isFunction(reactor && reactor.serialize) && reactor.serialize() }); } catch (err) { logError({ err: err, plugin: '[assemble: iso-merge]' }); } } (0, _buildLogger2.default)('Building ' + (0, _buildLogger.blue)((0, _renameKey2.default)(path))); this.push(file); cb(); }); }; var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _through = require('through2'); var _through2 = _interopRequireDefault(_through); var _renameKey = require('../../utils/rename-key'); var _renameKey2 = _interopRequireDefault(_renameKey); var _buildLogger = require('../../utils/build-logger'); var _buildLogger2 = _interopRequireDefault(_buildLogger); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } module.exports = exports['default']; /** * Assemble Plugin to merge isomorphic data into Assemble template context * @param {Object} app the Assemble instance * @param {Boolean} addFluxData whether to add flux data to `file.data` * * @return {Function} through2 signature */