build-boiler
Version:
Build Boilerplate using Webpack, Eslint, Assemble, Nunjucks, and BrowserSync
108 lines (78 loc) • 2.77 kB
JavaScript
'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
*/