on-demand-entries-client.js 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _async_to_generator = require("@swc/helpers/lib/_async_to_generator.js").default;
  7. var _interop_require_default = require("@swc/helpers/lib/_interop_require_default.js").default;
  8. var _router = _interop_require_default(require("next/router"));
  9. var _websocket = require("./error-overlay/websocket");
  10. var _default = _async_to_generator(function*(page) {
  11. if (page) {
  12. // in AMP the router isn't initialized on the client and
  13. // client-transitions don't occur so ping initial page
  14. setInterval(()=>{
  15. (0, _websocket).sendMessage(JSON.stringify({
  16. event: 'ping',
  17. page
  18. }));
  19. }, 2500);
  20. } else {
  21. _router.default.ready(()=>{
  22. setInterval(()=>{
  23. // when notFound: true is returned we should use the notFoundPage
  24. // as the Router.pathname will point to the 404 page but we want
  25. // to ping the source page that returned notFound: true instead
  26. const notFoundSrcPage = self.__NEXT_DATA__.notFoundSrcPage;
  27. const pathname = (_router.default.pathname === '/404' || _router.default.pathname === '/_error') && notFoundSrcPage ? notFoundSrcPage : _router.default.pathname;
  28. (0, _websocket).sendMessage(JSON.stringify({
  29. event: 'ping',
  30. page: pathname
  31. }));
  32. }, 2500);
  33. });
  34. }
  35. (0, _websocket).addMessageListener((event)=>{
  36. if (event.data.indexOf('{') === -1) return;
  37. try {
  38. const payload = JSON.parse(event.data);
  39. // don't attempt fetching the page if we're already showing
  40. // the dev overlay as this can cause the error to be triggered
  41. // repeatedly
  42. if (payload.event === 'pong' && payload.invalid && !self.__NEXT_DATA__.err) {
  43. // Payload can be invalid even if the page does exist.
  44. // So, we check if it can be created.
  45. fetch(location.href, {
  46. credentials: 'same-origin'
  47. }).then((pageRes)=>{
  48. if (pageRes.status === 200) {
  49. // Page exists now, reload
  50. location.reload();
  51. } else {
  52. // Page doesn't exist
  53. if (self.__NEXT_DATA__.page === _router.default.pathname && _router.default.pathname !== '/_error') {
  54. // We are still on the page,
  55. // reload to show 404 error page
  56. location.reload();
  57. }
  58. }
  59. });
  60. }
  61. } catch (err) {
  62. console.error('on-demand-entries failed to parse response', err);
  63. }
  64. });
  65. });
  66. exports.default = _default;
  67. if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {
  68. Object.defineProperty(exports.default, '__esModule', { value: true });
  69. Object.assign(exports.default, exports);
  70. module.exports = exports.default;
  71. }
  72. //# sourceMappingURL=on-demand-entries-client.js.map