55 lines
1.3 KiB
JavaScript
55 lines
1.3 KiB
JavaScript
const get = require('lodash.get');
|
|
const Document = require('hapi-render-react-joyent-document');
|
|
const url = require('url');
|
|
|
|
const { theme } = require('joyent-ui-toolkit');
|
|
const { default: createClient } = require('./state/apollo-client');
|
|
const { default: createStore } = require('./state/redux-store');
|
|
|
|
const assets = require('../../build/asset-manifest.json');
|
|
|
|
const { NODE_ENV = 'development' } = process.env;
|
|
|
|
const getState = request => {
|
|
const { req } = request.raw;
|
|
const { headers } = req;
|
|
const { host } = headers;
|
|
|
|
const protocol = NODE_ENV === 'development' ? 'http:' : 'https:';
|
|
const _font = get(theme, 'font.href', () => '');
|
|
const _mono = get(theme, 'monoFont.href', () => '');
|
|
const _addr = url.parse(`${protocol}//${host}`);
|
|
|
|
const _theme = Object.assign({}, theme, {
|
|
font: Object.assign({}, theme.font, {
|
|
href: () =>
|
|
_font(
|
|
Object.assign(_addr, {
|
|
namespace: 'templates'
|
|
})
|
|
)
|
|
}),
|
|
monoFont: Object.assign({}, theme.monoFont, {
|
|
href: () =>
|
|
_mono(
|
|
Object.assign(_addr, {
|
|
namespace: 'templates'
|
|
})
|
|
)
|
|
})
|
|
});
|
|
|
|
return {
|
|
theme: _theme,
|
|
createClient,
|
|
createStore
|
|
};
|
|
};
|
|
|
|
module.exports = Document({
|
|
namespace: 'templates/',
|
|
assets,
|
|
Html: require('./html'),
|
|
getState
|
|
});
|