Skip to content

Commit 11c14e2

Browse files
committed
SSR
1 parent fd974e5 commit 11c14e2

File tree

6 files changed

+85
-4
lines changed

6 files changed

+85
-4
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@
149149
"apollo-link-context": "^1.0.3",
150150
"apollo-link-error": "^1.0.3",
151151
"apollo-link-http": "^1.3.2",
152+
"apollo-link-schema": "^1.1.0",
152153
"axios": "^0.17.1",
153154
"babel-polyfill": "^6.26.0",
154155
"body-parser": "^1.18.2",

src/server/SSR/index.js

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1000,6 +1000,8 @@ module.exports = require("pretty-error");
10001000
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__middleware_errors__ = __webpack_require__(72);
10011001
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__config__ = __webpack_require__(23);
10021002
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__config___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5__config__);
1003+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__asyncWrap__ = __webpack_require__(74);
1004+
10031005

10041006

10051007

@@ -1021,13 +1023,13 @@ var expressServer = function expressServer() {
10211023

10221024
app.use(__WEBPACK_IMPORTED_MODULE_0_express___default.a.static(__WEBPACK_IMPORTED_MODULE_1_path___default.a.join(__dirname, __WEBPACK_IMPORTED_MODULE_5__config___default.a.get('server.assetsPath'))));
10231025

1024-
app.get('/*', __WEBPACK_IMPORTED_MODULE_3__middleware_ssr__["a" /* default */]);
1026+
app.get('/*', Object(__WEBPACK_IMPORTED_MODULE_6__asyncWrap__["a" /* default */])(__WEBPACK_IMPORTED_MODULE_3__middleware_ssr__["a" /* default */]));
10251027

10261028
app.use(__WEBPACK_IMPORTED_MODULE_4__middleware_errors__["a" /* error404 */]);
10271029
app.use(__WEBPACK_IMPORTED_MODULE_4__middleware_errors__["b" /* error500 */]);
10281030

10291031
app.listen(__WEBPACK_IMPORTED_MODULE_5__config___default.a.get('server.port'), __WEBPACK_IMPORTED_MODULE_5__config___default.a.get('server.host'), function () {
1030-
return console.log('\n =====================================================\n -> Server (' + __WEBPACK_IMPORTED_MODULE_2_chalk___default.a.bgBlue('SPA') + ') \uD83C\uDFC3 (running) on ' + __WEBPACK_IMPORTED_MODULE_2_chalk___default.a.green(__WEBPACK_IMPORTED_MODULE_5__config___default.a.get('server.host')) + ':' + __WEBPACK_IMPORTED_MODULE_2_chalk___default.a.green(__WEBPACK_IMPORTED_MODULE_5__config___default.a.get('server.port')) + '\n =====================================================\n ');
1032+
return console.log('\n =====================================================\n -> Server (' + __WEBPACK_IMPORTED_MODULE_2_chalk___default.a.bgBlue('SSR') + ') \uD83C\uDFC3 (running) on ' + __WEBPACK_IMPORTED_MODULE_2_chalk___default.a.green(__WEBPACK_IMPORTED_MODULE_5__config___default.a.get('server.host')) + ':' + __WEBPACK_IMPORTED_MODULE_2_chalk___default.a.green(__WEBPACK_IMPORTED_MODULE_5__config___default.a.get('server.port')) + '\n =====================================================\n ');
10311033
});
10321034

10331035

@@ -3427,5 +3429,24 @@ var error500 = function error500(err, req, res, next) {
34273429

34283430
module.exports = require("convict");
34293431

3432+
/***/ }),
3433+
/* 74 */
3434+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
3435+
3436+
"use strict";
3437+
3438+
3439+
/* harmony default export */ __webpack_exports__["a"] = (function (fn) {
3440+
if (fn.length <= 3) {
3441+
return function (req, res, next) {
3442+
return fn(req, res, next).catch(next);
3443+
};
3444+
} else {
3445+
return function (err, req, res, next) {
3446+
return fn(err, req, res, next).catch(next);
3447+
};
3448+
}
3449+
});
3450+
34303451
/***/ })
34313452
/******/ ]);
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// @flow
2+
3+
/**
4+
* Returns a route handler for Express that calls the passed in function
5+
* @param {Function} fn The asynchronous the route needs to call
6+
* @return {Promise}
7+
*/
8+
export default function(fn) {
9+
if (fn.length <= 3) {
10+
return function(req, res, next) {
11+
return fn(req, res, next).catch(next);
12+
};
13+
} else {
14+
return function(err, req, res, next) {
15+
return fn(err, req, res, next).catch(next);
16+
};
17+
}
18+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// @flow
2+
3+
import { ApolloClient } from 'apollo-client';
4+
import { SchemaLink } from 'apollo-link-schema';
5+
import { InMemoryCache } from 'apollo-cache-inmemory';
6+
7+
export const createApolloClient = () =>
8+
new ApolloClient({
9+
ssrMode: true,
10+
11+
cache: new InMemoryCache(),
12+
});

src/server/SSR/src/lib/expressServer.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import chalk from 'chalk';
77
import ssr from '../middleware/ssr';
88
import { error404, error500 } from '../middleware/errors';
99
import config from '../../../config';
10+
import asyncWrap from './asyncWrap';
1011
// #endregion
1112

1213
// $FlowIgnore
@@ -22,7 +23,7 @@ const expressServer = (app = null, isDev = false) => {
2223
express.static(path.join(__dirname, config.get('server.assetsPath'))),
2324
);
2425

25-
app.get('/*', ssr);
26+
app.get('/*', asyncWrap(ssr));
2627

2728
app.use(error404);
2829
app.use(error500);
@@ -31,7 +32,7 @@ const expressServer = (app = null, isDev = false) => {
3132
app.listen(config.get('server.port'), config.get('server.host'), () =>
3233
console.log(`
3334
=====================================================
34-
-> Server (${chalk.bgBlue('SPA')}) 🏃 (running) on ${chalk.green(
35+
-> Server (${chalk.bgBlue('SSR')}) 🏃 (running) on ${chalk.green(
3536
config.get('server.host'),
3637
)}:${chalk.green(config.get('server.port'))}
3738
=====================================================

yarn.lock

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,10 @@
151151
"@types/express-serve-static-core" "*"
152152
"@types/serve-static" "*"
153153

154+
"@types/graphql@0.12.6":
155+
version "0.12.6"
156+
resolved "https://registry.yarnpkg.com/@types/graphql/-/graphql-0.12.6.tgz#3d619198585fcabe5f4e1adfb5cf5f3388c66c13"
157+
154158
"@types/helmet@^0.0.36":
155159
version "0.0.36"
156160
resolved "https://registry.yarnpkg.com/@types/helmet/-/helmet-0.0.36.tgz#1eb9a85f89ba638013171a3b24b6725b1809e60d"
@@ -559,6 +563,12 @@ apollo-link-http@^1.3.2:
559563
dependencies:
560564
apollo-link "^1.0.7"
561565

566+
apollo-link-schema@^1.1.0:
567+
version "1.1.0"
568+
resolved "https://registry.yarnpkg.com/apollo-link-schema/-/apollo-link-schema-1.1.0.tgz#033fda26ffdbfc809d04892de554867f50e2af8e"
569+
dependencies:
570+
apollo-link "^1.2.2"
571+
562572
apollo-link@^1.0.0, apollo-link@^1.0.6, apollo-link@^1.0.7:
563573
version "1.0.7"
564574
resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.0.7.tgz#42cd38a7378332fc3e41a214ff6a6e5e703a556f"
@@ -567,6 +577,14 @@ apollo-link@^1.0.0, apollo-link@^1.0.6, apollo-link@^1.0.7:
567577
apollo-utilities "^1.0.0"
568578
zen-observable "^0.6.0"
569579

580+
apollo-link@^1.2.2:
581+
version "1.2.2"
582+
resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.2.tgz#54c84199b18ac1af8d63553a68ca389c05217a03"
583+
dependencies:
584+
"@types/graphql" "0.12.6"
585+
apollo-utilities "^1.0.0"
586+
zen-observable-ts "^0.8.9"
587+
570588
apollo-utilities@^1.0.0, apollo-utilities@^1.0.6:
571589
version "1.0.6"
572590
resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.0.6.tgz#7bfd7a702b5225c9a4591fe28c5899d9b5f08889"
@@ -10497,10 +10515,20 @@ yargs@~3.10.0:
1049710515
decamelize "^1.0.0"
1049810516
window-size "0.1.0"
1049910517

10518+
zen-observable-ts@^0.8.9:
10519+
version "0.8.9"
10520+
resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.9.tgz#d3c97af08c0afdca37ebcadf7cc3ee96bda9bab1"
10521+
dependencies:
10522+
zen-observable "^0.8.0"
10523+
1050010524
zen-observable@^0.6.0:
1050110525
version "0.6.1"
1050210526
resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.6.1.tgz#01dbed3bc8d02cbe9ee1112c83e04c807f647244"
1050310527

1050410528
zen-observable@^0.7.0:
1050510529
version "0.7.1"
1050610530
resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.7.1.tgz#f84075c0ee085594d3566e1d6454207f126411b3"
10531+
10532+
zen-observable@^0.8.0:
10533+
version "0.8.8"
10534+
resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.8.tgz#1ea93995bf098754a58215a1e0a7309e5749ec42"

0 commit comments

Comments
 (0)