UNPKG

14.5 kBJavaScriptView Raw
1(function webpackUniversalModuleDefinition(root, factory) {
2 if(typeof exports === 'object' && typeof module === 'object')
3 module.exports = factory(require("@r/middleware"), require("redux"), require("./navigationMiddleware.js"), require("./reducer.js"), require("koa"), require("koa-router"), require("koa-bodyparser"), require("lodash/object"), require("lodash/lang"), require("./actions.js"), require("./pageUtils.js"), require("./router.js"));
4 else if(typeof define === 'function' && define.amd)
5 define(["@r/middleware", "redux", "./navigationMiddleware.js", "./reducer.js", "koa", "koa-router", "koa-bodyparser", "lodash/object", "lodash/lang", "./actions.js", "./pageUtils.js", "./router.js"], factory);
6 else if(typeof exports === 'object')
7 exports["Server.js"] = factory(require("@r/middleware"), require("redux"), require("./navigationMiddleware.js"), require("./reducer.js"), require("koa"), require("koa-router"), require("koa-bodyparser"), require("lodash/object"), require("lodash/lang"), require("./actions.js"), require("./pageUtils.js"), require("./router.js"));
8 else
9 root["Server.js"] = factory(root["@r/middleware"], root["redux"], root["./navigationMiddleware.js"], root["./reducer.js"], root["koa"], root["koa-router"], root["koa-bodyparser"], root["lodash/object"], root["lodash/lang"], root["./actions.js"], root["./pageUtils.js"], root["./router.js"]);
10})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_6__, __WEBPACK_EXTERNAL_MODULE_7__, __WEBPACK_EXTERNAL_MODULE_8__, __WEBPACK_EXTERNAL_MODULE_9__, __WEBPACK_EXTERNAL_MODULE_10__, __WEBPACK_EXTERNAL_MODULE_11__, __WEBPACK_EXTERNAL_MODULE_12__, __WEBPACK_EXTERNAL_MODULE_13__, __WEBPACK_EXTERNAL_MODULE_14__, __WEBPACK_EXTERNAL_MODULE_15__) {
11return /******/ (function(modules) { // webpackBootstrap
12/******/ // The module cache
13/******/ var installedModules = {};
14
15/******/ // The require function
16/******/ function __webpack_require__(moduleId) {
17
18/******/ // Check if module is in cache
19/******/ if(installedModules[moduleId])
20/******/ return installedModules[moduleId].exports;
21
22/******/ // Create a new module (and put it into the cache)
23/******/ var module = installedModules[moduleId] = {
24/******/ exports: {},
25/******/ id: moduleId,
26/******/ loaded: false
27/******/ };
28
29/******/ // Execute the module function
30/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31
32/******/ // Flag the module as loaded
33/******/ module.loaded = true;
34
35/******/ // Return the exports of the module
36/******/ return module.exports;
37/******/ }
38
39
40/******/ // expose the modules object (__webpack_modules__)
41/******/ __webpack_require__.m = modules;
42
43/******/ // expose the module cache
44/******/ __webpack_require__.c = installedModules;
45
46/******/ // __webpack_public_path__
47/******/ __webpack_require__.p = "";
48
49/******/ // Load entry module and return exports
50/******/ return __webpack_require__(0);
51/******/ })
52/************************************************************************/
53/******/ ([
54/* 0 */
55/***/ function(module, exports, __webpack_require__) {
56
57 'use strict';
58
59 Object.defineProperty(exports, "__esModule", {
60 value: true
61 });
62
63 var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
64
65 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
66
67 var _middleware = __webpack_require__(1);
68
69 var _koa = __webpack_require__(8);
70
71 var _koa2 = _interopRequireDefault(_koa);
72
73 var _koaRouter = __webpack_require__(9);
74
75 var _koaRouter2 = _interopRequireDefault(_koaRouter);
76
77 var _koaBodyparser = __webpack_require__(10);
78
79 var _koaBodyparser2 = _interopRequireDefault(_koaBodyparser);
80
81 var _redux = __webpack_require__(4);
82
83 var _object = __webpack_require__(11);
84
85 var _lang = __webpack_require__(12);
86
87 var _navigationMiddleware = __webpack_require__(6);
88
89 var _navigationMiddleware2 = _interopRequireDefault(_navigationMiddleware);
90
91 var _reducer = __webpack_require__(7);
92
93 var _reducer2 = _interopRequireDefault(_reducer);
94
95 var _actions = __webpack_require__(13);
96
97 var _actions2 = _interopRequireDefault(_actions);
98
99 var _pageUtils = __webpack_require__(14);
100
101 var _router = __webpack_require__(15);
102
103 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
104
105 function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
106
107 function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { return step("next", value); }, function (err) { return step("throw", err); }); } } return step("next"); }); }; }
108
109 exports.default = function (config) {
110 var _config$port = config.port;
111 var port = _config$port === undefined ? 8888 : _config$port;
112 var _config$preRouteServe = config.preRouteServerMiddleware;
113 var preRouteServerMiddleware = _config$preRouteServe === undefined ? [] : _config$preRouteServe;
114 var _config$reduxMiddlewa = config.reduxMiddleware;
115 var reduxMiddleware = _config$reduxMiddlewa === undefined ? [] : _config$reduxMiddlewa;
116 var _config$reducers = config.reducers;
117 var reducers = _config$reducers === undefined ? {} : _config$reducers;
118 var _config$routes = config.routes;
119 var routes = _config$routes === undefined ? [] : _config$routes;
120 var _config$getServerRout = config.getServerRouter;
121 var getServerRouter = _config$getServerRout === undefined ? function () {} : _config$getServerRout;
122 var _config$template = config.template;
123 var template = _config$template === undefined ? function () {} : _config$template;
124 var _config$dispatchBefor = config.dispatchBeforeNavigation;
125 var dispatchBeforeNavigation = _config$dispatchBefor === undefined ? _asyncToGenerator(regeneratorRuntime.mark(function _callee3() {
126 return regeneratorRuntime.wrap(function _callee3$(_context3) {
127 while (1) {
128 switch (_context3.prev = _context3.next) {
129 case 0:
130 case 'end':
131 return _context3.stop();
132 }
133 }
134 }, _callee3, undefined);
135 })) : _config$dispatchBefor;
136 var _config$onHandlerComp = config.onHandlerComplete;
137 var onHandlerComplete = _config$onHandlerComp === undefined ? function () {} : _config$onHandlerComp;
138
139
140 var server = new _koa2.default();
141 var bodyparser = (0, _koaBodyparser2.default)();
142 var router = new _koaRouter2.default();
143
144 var handleRoute = function () {
145 var ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee2(ctx, next) {
146 var nav, well, thunk, r, store, state, currentUrl, currentQuery, newUrl;
147 return regeneratorRuntime.wrap(function _callee2$(_context2) {
148 while (1) {
149 switch (_context2.prev = _context2.next) {
150 case 0:
151 nav = _navigationMiddleware2.default.create(routes, true, onHandlerComplete);
152 well = _middleware.PromiseWell.create();
153 thunk = _middleware.Thunker.create();
154 r = (0, _redux.combineReducers)(_extends({}, reducers, { platform: _reducer2.default }));
155 store = (0, _redux.createStore)(r, {}, _redux.applyMiddleware.apply(undefined, _toConsumableArray(reduxMiddleware).concat([nav, thunk, well.middleware])));
156 _context2.next = 7;
157 return store.dispatch(function () {
158 var ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee(dispatch, getState, utils) {
159 return regeneratorRuntime.wrap(function _callee$(_context) {
160 while (1) {
161 switch (_context.prev = _context.next) {
162 case 0:
163 _context.next = 2;
164 return dispatchBeforeNavigation(ctx, dispatch, getState, utils);
165
166 case 2:
167 case 'end':
168 return _context.stop();
169 }
170 }
171 }, _callee, undefined);
172 }));
173
174 return function (_x3, _x4, _x5) {
175 return ref.apply(this, arguments);
176 };
177 }());
178
179 case 7:
180
181 store.dispatch(_actions2.default.navigateToUrl(ctx.request.method.toLowerCase(), ctx.path, {
182 queryParams: ctx.request.query,
183 bodyParams: ctx.request.body,
184 referrer: ctx.headers.referer
185 }));
186
187 _context2.next = 10;
188 return well.onComplete();
189
190 case 10:
191 state = store.getState();
192
193 // check for redirects
194
195 currentUrl = state.platform.currentPage.url;
196 currentQuery = state.platform.currentPage.queryParams;
197
198
199 if (!(0, _lang.isEqual)(currentUrl, ctx.path) || !(0, _lang.isEqual)(currentQuery, ctx.request.query)) {
200 if (currentUrl) {
201 newUrl = currentUrl;
202
203 if (!(0, _lang.isEmpty)(currentQuery)) {
204 newUrl += (0, _pageUtils.createQuery)(currentQuery);
205 }
206 ctx.redirect(newUrl);
207 } else {
208 ctx.redirect('/');
209 }
210 } else {
211 // HEAD request must not have a response body but otherwise
212 // are equivalent to GETs.
213 // HEAD requests are converted into GETS by navigation middleware
214 // if there isn't an explicit HEAD method on our handler.
215 if (ctx.request.method.toLowerCase() !== _router.METHODS.HEAD) {
216 ctx.body = template(state, store);
217 }
218
219 ctx.status = state.platform.currentPage.status;
220 }
221
222 case 14:
223 case 'end':
224 return _context2.stop();
225 }
226 }
227 }, _callee2, undefined);
228 }));
229
230 return function handleRoute(_x, _x2) {
231 return ref.apply(this, arguments);
232 };
233 }();
234
235 // set up server routes before setting up shared routes
236 getServerRouter(router);
237
238 var _iteratorNormalCompletion = true;
239 var _didIteratorError = false;
240 var _iteratorError = undefined;
241
242 try {
243 for (var _iterator = routes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
244 var route = _step.value;
245
246 var _route = _slicedToArray(route, 2);
247
248 var path = _route[0];
249 var handler = _route[1];
250 var _iteratorNormalCompletion2 = true;
251 var _didIteratorError2 = false;
252 var _iteratorError2 = undefined;
253
254 try {
255 for (var _iterator2 = (0, _object.values)(_router.METHODS)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
256 var method = _step2.value;
257
258 if (handler.prototype[method]) {
259 router[method](path, handleRoute);
260 }
261 }
262 } catch (err) {
263 _didIteratorError2 = true;
264 _iteratorError2 = err;
265 } finally {
266 try {
267 if (!_iteratorNormalCompletion2 && _iterator2.return) {
268 _iterator2.return();
269 }
270 } finally {
271 if (_didIteratorError2) {
272 throw _iteratorError2;
273 }
274 }
275 }
276 }
277
278 // hook up all the middleware to the koa instance
279 } catch (err) {
280 _didIteratorError = true;
281 _iteratorError = err;
282 } finally {
283 try {
284 if (!_iteratorNormalCompletion && _iterator.return) {
285 _iterator.return();
286 }
287 } finally {
288 if (_didIteratorError) {
289 throw _iteratorError;
290 }
291 }
292 }
293
294 preRouteServerMiddleware.forEach(function (m) {
295 return server.use(m);
296 });
297 server.use(bodyparser);
298 server.use(router.routes());
299 server.use(router.allowedMethods());
300
301 return function () {
302 server.listen(port, function () {
303 console.log('App launching on port ' + port);
304 });
305 };
306 };
307
308/***/ },
309/* 1 */
310/***/ function(module, exports) {
311
312 module.exports = require("@r/middleware");
313
314/***/ },
315/* 2 */,
316/* 3 */,
317/* 4 */
318/***/ function(module, exports) {
319
320 module.exports = require("redux");
321
322/***/ },
323/* 5 */,
324/* 6 */
325/***/ function(module, exports) {
326
327 module.exports = __WEBPACK_EXTERNAL_MODULE_6__;
328
329/***/ },
330/* 7 */
331/***/ function(module, exports) {
332
333 module.exports = __WEBPACK_EXTERNAL_MODULE_7__;
334
335/***/ },
336/* 8 */
337/***/ function(module, exports) {
338
339 module.exports = require("koa");
340
341/***/ },
342/* 9 */
343/***/ function(module, exports) {
344
345 module.exports = require("koa-router");
346
347/***/ },
348/* 10 */
349/***/ function(module, exports) {
350
351 module.exports = require("koa-bodyparser");
352
353/***/ },
354/* 11 */
355/***/ function(module, exports) {
356
357 module.exports = require("lodash/object");
358
359/***/ },
360/* 12 */
361/***/ function(module, exports) {
362
363 module.exports = require("lodash/lang");
364
365/***/ },
366/* 13 */
367/***/ function(module, exports) {
368
369 module.exports = __WEBPACK_EXTERNAL_MODULE_13__;
370
371/***/ },
372/* 14 */
373/***/ function(module, exports) {
374
375 module.exports = __WEBPACK_EXTERNAL_MODULE_14__;
376
377/***/ },
378/* 15 */
379/***/ function(module, exports) {
380
381 module.exports = __WEBPACK_EXTERNAL_MODULE_15__;
382
383/***/ }
384/******/ ])
385});
386;
\No newline at end of file