UNPKG

@lskjs/uapp

Version:
365 lines (364 loc) 16.2 kB
"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