UNPKG

@r/platform

Version:

A set of tools to enable easy universal rendering and page navigation on a React + Redux stack

317 lines (238 loc) 11.4 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("@r/middleware"), require("redux"), require("./reducer.js"), require("./actions.js"), require("koa"), require("koa-router"), require("koa-bodyparser"), require("koa-static"), require("lodash/object"), require("./router.js"), require("./navigationMiddleware.js")); else if(typeof define === 'function' && define.amd) define(["@r/middleware", "redux", "./reducer.js", "./actions.js", "koa", "koa-router", "koa-bodyparser", "koa-static", "lodash/object", "./router.js", "./navigationMiddleware.js"], factory); else if(typeof exports === 'object') exports["Server.js"] = factory(require("@r/middleware"), require("redux"), require("./reducer.js"), require("./actions.js"), require("koa"), require("koa-router"), require("koa-bodyparser"), require("koa-static"), require("lodash/object"), require("./router.js"), require("./navigationMiddleware.js")); else root["Server.js"] = factory(root["@r/middleware"], root["redux"], root["./reducer.js"], root["./actions.js"], root["koa"], root["koa-router"], root["koa-bodyparser"], root["koa-static"], root["lodash/object"], root["./router.js"], root["./navigationMiddleware.js"]); })(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_17__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); 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"); } }; }(); 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; }; var _middleware = __webpack_require__(1); var _koa = __webpack_require__(8); var _koa2 = _interopRequireDefault(_koa); var _koaRouter = __webpack_require__(9); var _koaRouter2 = _interopRequireDefault(_koaRouter); var _koaBodyparser = __webpack_require__(10); var _koaBodyparser2 = _interopRequireDefault(_koaBodyparser); var _koaStatic = __webpack_require__(11); var _koaStatic2 = _interopRequireDefault(_koaStatic); var _redux = __webpack_require__(4); var _object = __webpack_require__(12); var _navigationMiddleware = __webpack_require__(17); var _navigationMiddleware2 = _interopRequireDefault(_navigationMiddleware); var _reducer = __webpack_require__(6); var _reducer2 = _interopRequireDefault(_reducer); var _actions = __webpack_require__(7); var _actions2 = _interopRequireDefault(_actions); var _router = __webpack_require__(13); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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); } } 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"); }); }; } exports.default = function (config) { var _config$port = config.port; var port = _config$port === undefined ? 8888 : _config$port; var _config$preRouteServe = config.preRouteServerMiddleware; var preRouteServerMiddleware = _config$preRouteServe === undefined ? [] : _config$preRouteServe; var _config$postRouteServ = config.postRouteServerMiddleware; var postRouteServerMiddleware = _config$postRouteServ === undefined ? [] : _config$postRouteServ; var _config$reduxMiddlewa = config.reduxMiddleware; var reduxMiddleware = _config$reduxMiddlewa === undefined ? [] : _config$reduxMiddlewa; var _config$reducers = config.reducers; var reducers = _config$reducers === undefined ? {} : _config$reducers; var _config$routes = config.routes; var routes = _config$routes === undefined ? [] : _config$routes; var _config$template = config.template; var template = _config$template === undefined ? function () {} : _config$template; var server = new _koa2.default(); var bodyparser = (0, _koaBodyparser2.default)(); var router = new _koaRouter2.default(); var handleRoute = function () { var ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee(ctx, next) { var nav, well, thunk, r, store, state; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: nav = _navigationMiddleware2.default.create(routes); well = _middleware.PromiseWell.create(); thunk = _middleware.Thunker.create(); r = (0, _redux.combineReducers)(_extends({}, reducers, { platform: _reducer2.default })); store = (0, _redux.createStore)(r, {}, _redux.applyMiddleware.apply(undefined, _toConsumableArray(reduxMiddleware).concat([nav, thunk, well.middleware]))); store.dispatch(_actions2.default.navigateToUrl(ctx.request.method.toLowerCase(), ctx.path, { queryParams: ctx.request.query, bodyParams: ctx.request.body })); _context.next = 8; return well.onComplete(); case 8: state = store.getState(); ctx.body = template(state); case 10: case 'end': return _context.stop(); } } }, _callee, undefined); })); return function handleRoute(_x, _x2) { return ref.apply(this, arguments); }; }(); var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = routes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var route = _step.value; var _route = _slicedToArray(route, 2); var path = _route[0]; var handler = _route[1]; var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = (0, _object.values)(_router.METHODS)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var method = _step2.value; if (handler.prototype[method]) { router[method](path, handleRoute); } } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } preRouteServerMiddleware.forEach(function (m) { return server.use(m); }); server.use(bodyparser); server.use(router.routes()); server.use(router.allowedMethods()); postRouteServerMiddleware.forEach(function (m) { return server.use(m); }); return function () { server.listen(port, function () { console.log('App launching on port ' + port); }); }; }; /***/ }, /* 1 */ /***/ function(module, exports) { module.exports = require("@r/middleware"); /***/ }, /* 2 */, /* 3 */, /* 4 */ /***/ function(module, exports) { module.exports = require("redux"); /***/ }, /* 5 */, /* 6 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_6__; /***/ }, /* 7 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_7__; /***/ }, /* 8 */ /***/ function(module, exports) { module.exports = require("koa"); /***/ }, /* 9 */ /***/ function(module, exports) { module.exports = require("koa-router"); /***/ }, /* 10 */ /***/ function(module, exports) { module.exports = require("koa-bodyparser"); /***/ }, /* 11 */ /***/ function(module, exports) { module.exports = require("koa-static"); /***/ }, /* 12 */ /***/ function(module, exports) { module.exports = require("lodash/object"); /***/ }, /* 13 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_13__; /***/ }, /* 14 */, /* 15 */, /* 16 */, /* 17 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_17__; /***/ } /******/ ]) }); ;