@lskjs/uapp
Version:
LSK universal react app wrapper
365 lines (364 loc) • 16.2 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.UappModule = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _env = require("@lskjs/env");
var _module = _interopRequireDefault(require("@lskjs/module"));
var _universalRouter = _interopRequireDefault(require("universal-router"));
var _collectUniversalRoutes = require("./collectUniversalRoutes");
var _UappProvider = _interopRequireDefault(require("./UappProvider"));
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /* global window */ // eslint-disable-next-line max-classes-per-file
var UappModule = /*#__PURE__*/function (_Module) {
(0, _inherits2["default"])(UappModule, _Module);
var _super = _createSuper(UappModule);
function UappModule() {
var _this;
(0, _classCallCheck2["default"])(this, UappModule);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(args));
_this.isClient = _env.isClient;
_this.Provider = _UappProvider["default"];
_this.__providers = {};
return _this;
}
(0, _createClass2["default"])(UappModule, [{
key: "getModules",
value: function getModules() {
return {
scrollTo: function scrollTo() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require('./ScrollToModule'));
});
},
progress: function progress() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require('./ProgressModule'));
});
},
page: function page() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require('./Page'));
});
},
api: function api() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require('./ApiModule'));
});
}
};
}
}, {
key: "getRoutes",
value: function getRoutes() {
return {};
}
}, {
key: "getModuleProps",
value: function () {
var _getModuleProps = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(name) {
var props;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return (0, _get2["default"])((0, _getPrototypeOf2["default"])(UappModule.prototype), "getModuleProps", this).call(this, name);
case 2:
props = _context.sent;
if (!(name === 'page')) {
_context.next = 5;
break;
}
return _context.abrupt("return", _objectSpread(_objectSpread({}, props), {}, {
Provider: this.Provider
// rootState: this.getRootState(),
}));
case 5:
return _context.abrupt("return", props);
case 6:
case "end":
return _context.stop();
}
}, _callee, this);
}));
function getModuleProps(_x) {
return _getModuleProps.apply(this, arguments);
}
return getModuleProps;
}()
}, {
key: "init",
value: function () {
var _init = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return (0, _get2["default"])((0, _getPrototypeOf2["default"])(UappModule.prototype), "init", this).call(this);
case 2:
_context2.next = 4;
return this.module('api');
case 4:
this.api = _context2.sent;
if (this.isClient) {
this.on('resolve:start', this.resolveStart.bind(this));
this.on('resolve:finish', this.resolveFinish.bind(this));
}
case 6:
case "end":
return _context2.stop();
}
}, _callee2, this);
}));
function init() {
return _init.apply(this, arguments);
}
return init;
}()
}, {
key: "run",
value: function () {
var _run = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
var context;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return (0, _get2["default"])((0, _getPrototypeOf2["default"])(UappModule.prototype), "run", this).call(this);
case 2:
_context3.next = 4;
return this.getRoutes();
case 4:
this.routes = _context3.sent;
this.log.debug('routes', (0, _collectUniversalRoutes.collectUniversalRoutes)(this.routes));
_context3.next = 8;
return this.provide();
case 8:
context = _context3.sent;
this.log.debug('router.context', Object.keys(context));
this.router = new _universalRouter["default"](this.routes, {
context: context
});
_context3.next = 13;
return this.module('scrollTo');
case 13:
this.scrollTo = _context3.sent;
_context3.next = 16;
return this.module('progress');
case 16:
this.progress = _context3.sent;
case 17:
case "end":
return _context3.stop();
}
}, _callee3, this);
}));
function run() {
return _run.apply(this, arguments);
}
return run;
}()
}, {
key: "provide",
value: function () {
var _provide = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
return _regenerator["default"].wrap(function _callee4$(_context4) {
while (1) switch (_context4.prev = _context4.next) {
case 0:
return _context4.abrupt("return", {
app: this,
req: this.req,
module: this.module.bind(this)
});
case 1:
case "end":
return _context4.stop();
}
}, _callee4, this);
}));
function provide() {
return _provide.apply(this, arguments);
}
return provide;
}()
}, {
key: "__provide",
value: function () {
var _provide2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
return _regenerator["default"].wrap(function _callee5$(_context5) {
while (1) switch (_context5.prev = _context5.next) {
case 0:
if (!Object.keys(this.__providers).length) {
_context5.next = 2;
break;
}
return _context5.abrupt("return", this.__providers);
case 2:
_context5.next = 4;
return this.provide();
case 4:
this.__providers = _context5.sent;
return _context5.abrupt("return", this.__providers);
case 6:
case "end":
return _context5.stop();
}
}, _callee5, this);
}));
function __provide() {
return _provide2.apply(this, arguments);
}
return __provide;
}()
}, {
key: "resolveStart",
value: function () {
var _resolveStart = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
return _regenerator["default"].wrap(function _callee6$(_context6) {
while (1) switch (_context6.prev = _context6.next) {
case 0:
if (this.progress && this.progress.current) {
this.progress.current.start();
}
case 1:
case "end":
return _context6.stop();
}
}, _callee6, this);
}));
function resolveStart() {
return _resolveStart.apply(this, arguments);
}
return resolveStart;
}()
}, {
key: "resolveFinish",
value: function () {
var _resolveFinish = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(_ref) {
var page, meta;
return _regenerator["default"].wrap(function _callee7$(_context7) {
while (1) switch (_context7.prev = _context7.next) {
case 0:
page = _ref.page;
try {
meta = page.getMeta();
if (meta && meta.title && this.isClient) window.document.title = meta.title;
} catch (err) {
this.log.error('cant set title', err);
}
if (this.progress && this.progress.current) {
this.progress.current.finish();
}
this.req.path = this.history.location.path;
this.req.query = this.history.location.query;
case 5:
case "end":
return _context7.stop();
}
}, _callee7, this);
}));
function resolveFinish(_x2) {
return _resolveFinish.apply(this, arguments);
}
return resolveFinish;
}()
}, {
key: "resolve",
value: function () {
var _resolve = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
var reqParams,
req,
page,
providers,
res,
_args8 = arguments;
return _regenerator["default"].wrap(function _callee8$(_context8) {
while (1) switch (_context8.prev = _context8.next) {
case 0:
reqParams = _args8.length > 0 && _args8[0] !== undefined ? _args8[0] : {};
this.emit('resolve:start', reqParams);
req = _objectSpread(_objectSpread({}, this.req), {}, {
path: reqParams.path,
query: reqParams.query
});
_context8.prev = 3;
if (this.isClient) this.log.debug('resolve', req.path, req.query);
_context8.next = 7;
return this.module('page');
case 7:
page = _context8.sent;
_context8.next = 10;
return page.beforeResolve();
case 10:
_context8.next = 12;
return this.__provide();
case 12:
providers = _context8.sent;
_context8.next = 15;
return this.router.resolve(_objectSpread({
pathname: reqParams.path,
path: reqParams.path,
query: reqParams.query,
// req,
page: page,
req: req
}, providers));
case 15:
res = _context8.sent;
_context8.next = 18;
return page.afterResolve();
case 18:
this.emit('resolve:finish', {
req: req,
res: res,
page: page
});
return _context8.abrupt("return", {
res: res,
page: page
});
case 22:
_context8.prev = 22;
_context8.t0 = _context8["catch"](3);
this.log.error('uapp.router.resolve ERR:', _context8.t0);
this.emit('resolve:error', {
req: req,
err: _context8.t0
});
throw _context8.t0;
case 27:
case "end":
return _context8.stop();
}
}, _callee8, this, [[3, 22]]);
}));
function resolve() {
return _resolve.apply(this, arguments);
}
return resolve;
}()
}]);
return UappModule;
}(_module["default"]);
exports.UappModule = UappModule;
var _default = UappModule;
exports["default"] = _default;
//# sourceMappingURL=UappModule.js.map