UNPKG

@tdb/web

Version:

Common condiguration for serving a web-site and testing web-based UI components.

148 lines (119 loc) 3.98 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise")); var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator")); var _router = _interopRequireDefault(require("../lib/router")); var _unfetch = _interopRequireDefault(require("unfetch")); /* global location */ var _default = function _default(_ref) { var assetPrefix = _ref.assetPrefix; _router.default.ready(function () { _router.default.events.on('routeChangeComplete', ping); }); function ping() { return _ping.apply(this, arguments); } function _ping() { _ping = (0, _asyncToGenerator2.default)( /*#__PURE__*/ _regenerator.default.mark(function _callee() { var url, res, payload, pageRes; return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.prev = 0; url = "".concat(assetPrefix || '', "/_next/on-demand-entries-ping?page=").concat(_router.default.pathname); _context.next = 4; return (0, _unfetch.default)(url, { credentials: 'same-origin' }); case 4: res = _context.sent; _context.next = 7; return res.json(); case 7: payload = _context.sent; if (!payload.invalid) { _context.next = 13; break; } _context.next = 11; return (0, _unfetch.default)(location.href, { credentials: 'same-origin' }); case 11: pageRes = _context.sent; if (pageRes.status === 200) { location.reload(); } case 13: _context.next = 18; break; case 15: _context.prev = 15; _context.t0 = _context["catch"](0); console.error("Error with on-demand-entries-ping: ".concat(_context.t0.message)); case 18: case "end": return _context.stop(); } } }, _callee, this, [[0, 15]]); })); return _ping.apply(this, arguments); } var pingerTimeout; function runPinger() { return _runPinger.apply(this, arguments); } function _runPinger() { _runPinger = (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: if (document.hidden) { _context2.next = 7; break; } _context2.next = 3; return ping(); case 3: _context2.next = 5; return new _promise.default(function (resolve) { pingerTimeout = setTimeout(resolve, 5000); }); case 5: _context2.next = 0; break; case 7: case "end": return _context2.stop(); } } }, _callee2, this); })); return _runPinger.apply(this, arguments); } document.addEventListener('visibilitychange', function () { if (!document.hidden) { runPinger(); } else { clearTimeout(pingerTimeout); } }, false); setTimeout(function () { runPinger().catch(function (err) { console.error(err); }); }, 10000); }; exports.default = _default;