UNPKG

react-static

Version:

A progressive static site generator for React

75 lines (55 loc) 7.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var _2 = require(".."); var _useRoutePath = require("./useRoutePath"); var _utils = require("../utils"); var useRouteData = function useRouteData() { var routePath = (0, _useRoutePath.useRoutePath)(); // eslint-disable-next-line var _useState = (0, _react.useState)(0), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), _ = _useState2[0], setCount = _useState2[1]; (0, _react.useEffect)(function () { return (0, _2.onReloadClientData)(function () { setCount(function (old) { return old + 1; }); }); }); var routeError = _2.routeErrorByPath[routePath]; var routeInfo = routeError ? _2.routeInfoByPath[_utils.PATH_404] : _2.routeInfoByPath[routePath]; // If there was an error reported for this path, throw an error // unless there is data for the 404 page if (routeError && (!routeInfo || !routeInfo.data)) { throw new Error("React-Static: useRouteData() could not find any data for this route: ".concat(routePath, ". If this is a dynamic route, please remove any calls to useRouteData() from this route's components")); } var targetRouteInfoPath = routeInfo ? routeInfo.path : routePath; // If we need to load data, suspend while it's requested if (shouldLoadData(routeInfo)) { throw Promise.all([new Promise(function (resolve) { return setTimeout(resolve, process.env.REACT_STATIC_MIN_LOAD_TIME); }), (0, _2.prefetch)(targetRouteInfoPath, { priority: true })]); } // Otherwise, return all of the data return (0, _utils.getFullRouteData)(routeInfo); }; var _default = useRouteData; exports["default"] = _default; function shouldLoadData(routeInfo) { if (!routeInfo || !routeInfo.data) { return true; } return shouldLoadSharedData(routeInfo); } function shouldLoadSharedData(routeInfo) { return hasPropHashes(routeInfo) && !routeInfo.sharedData; } function hasPropHashes(routeInfo) { return routeInfo.sharedHashesByProp && Object.keys(routeInfo.sharedHashesByProp).length > 0; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9icm93c2VyL2hvb2tzL3VzZVJvdXRlRGF0YS5qcyJdLCJuYW1lcyI6WyJ1c2VSb3V0ZURhdGEiLCJyb3V0ZVBhdGgiLCJfIiwic2V0Q291bnQiLCJvbGQiLCJyb3V0ZUVycm9yIiwicm91dGVFcnJvckJ5UGF0aCIsInJvdXRlSW5mbyIsInJvdXRlSW5mb0J5UGF0aCIsIlBBVEhfNDA0IiwiZGF0YSIsIkVycm9yIiwidGFyZ2V0Um91dGVJbmZvUGF0aCIsInBhdGgiLCJzaG91bGRMb2FkRGF0YSIsIlByb21pc2UiLCJhbGwiLCJyZXNvbHZlIiwic2V0VGltZW91dCIsInByb2Nlc3MiLCJlbnYiLCJSRUFDVF9TVEFUSUNfTUlOX0xPQURfVElNRSIsInByaW9yaXR5Iiwic2hvdWxkTG9hZFNoYXJlZERhdGEiLCJoYXNQcm9wSGFzaGVzIiwic2hhcmVkRGF0YSIsInNoYXJlZEhhc2hlc0J5UHJvcCIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBTUE7O0FBQ0E7O0FBRUEsSUFBTUEsWUFBWSxHQUFHLFNBQWZBLFlBQWUsR0FBTTtBQUN6QixNQUFNQyxTQUFTLEdBQUcsaUNBQWxCLENBRHlCLENBRXpCOztBQUZ5QixrQkFHSCxxQkFBUyxDQUFULENBSEc7QUFBQTtBQUFBLE1BR2xCQyxDQUhrQjtBQUFBLE1BR2ZDLFFBSGU7O0FBS3pCLHdCQUFVO0FBQUEsV0FDUiwyQkFBbUIsWUFBTTtBQUN2QkEsTUFBQUEsUUFBUSxDQUFDLFVBQUFDLEdBQUc7QUFBQSxlQUFJQSxHQUFHLEdBQUcsQ0FBVjtBQUFBLE9BQUosQ0FBUjtBQUNELEtBRkQsQ0FEUTtBQUFBLEdBQVY7QUFNQSxNQUFNQyxVQUFVLEdBQUdDLG9CQUFpQkwsU0FBakIsQ0FBbkI7QUFDQSxNQUFNTSxTQUFTLEdBQUdGLFVBQVUsR0FDeEJHLG1CQUFnQkMsZUFBaEIsQ0FEd0IsR0FFeEJELG1CQUFnQlAsU0FBaEIsQ0FGSixDQVp5QixDQWdCekI7QUFDQTs7QUFDQSxNQUFJSSxVQUFVLEtBQUssQ0FBQ0UsU0FBRCxJQUFjLENBQUNBLFNBQVMsQ0FBQ0csSUFBOUIsQ0FBZCxFQUFtRDtBQUNqRCxVQUFNLElBQUlDLEtBQUosZ0ZBQ29FVixTQURwRSwwR0FBTjtBQUdEOztBQUVELE1BQU1XLG1CQUFtQixHQUFHTCxTQUFTLEdBQUdBLFNBQVMsQ0FBQ00sSUFBYixHQUFvQlosU0FBekQsQ0F4QnlCLENBMEJ6Qjs7QUFDQSxNQUFJYSxjQUFjLENBQUNQLFNBQUQsQ0FBbEIsRUFBK0I7QUFDN0IsVUFBTVEsT0FBTyxDQUFDQyxHQUFSLENBQVksQ0FDaEIsSUFBSUQsT0FBSixDQUFZLFVBQUFFLE9BQU87QUFBQSxhQUNqQkMsVUFBVSxDQUFDRCxPQUFELEVBQVVFLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQywwQkFBdEIsQ0FETztBQUFBLEtBQW5CLENBRGdCLEVBSWhCLGlCQUFTVCxtQkFBVCxFQUE4QjtBQUFFVSxNQUFBQSxRQUFRLEVBQUU7QUFBWixLQUE5QixDQUpnQixDQUFaLENBQU47QUFNRCxHQWxDd0IsQ0FvQ3pCOzs7QUFDQSxTQUFPLDZCQUFpQmYsU0FBakIsQ0FBUDtBQUNELENBdENEOztlQXdDZVAsWTs7O0FBRWYsU0FBU2MsY0FBVCxDQUF3QlAsU0FBeEIsRUFBbUM7QUFDakMsTUFBSSxDQUFDQSxTQUFELElBQWMsQ0FBQ0EsU0FBUyxDQUFDRyxJQUE3QixFQUFtQztBQUNqQyxXQUFPLElBQVA7QUFDRDs7QUFFRCxTQUFPYSxvQkFBb0IsQ0FBQ2hCLFNBQUQsQ0FBM0I7QUFDRDs7QUFFRCxTQUFTZ0Isb0JBQVQsQ0FBOEJoQixTQUE5QixFQUF5QztBQUN2QyxTQUFPaUIsYUFBYSxDQUFDakIsU0FBRCxDQUFiLElBQTRCLENBQUNBLFNBQVMsQ0FBQ2tCLFVBQTlDO0FBQ0Q7O0FBRUQsU0FBU0QsYUFBVCxDQUF1QmpCLFNBQXZCLEVBQWtDO0FBQ2hDLFNBQ0VBLFNBQVMsQ0FBQ21CLGtCQUFWLElBQ0FDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZckIsU0FBUyxDQUFDbUIsa0JBQXRCLEVBQTBDRyxNQUExQyxHQUFtRCxDQUZyRDtBQUlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgcHJlZmV0Y2gsXG4gIHJvdXRlSW5mb0J5UGF0aCxcbiAgcm91dGVFcnJvckJ5UGF0aCxcbiAgb25SZWxvYWRDbGllbnREYXRhLFxufSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVJvdXRlUGF0aCB9IGZyb20gJy4vdXNlUm91dGVQYXRoJ1xuaW1wb3J0IHsgZ2V0RnVsbFJvdXRlRGF0YSwgUEFUSF80MDQgfSBmcm9tICcuLi91dGlscydcblxuY29uc3QgdXNlUm91dGVEYXRhID0gKCkgPT4ge1xuICBjb25zdCByb3V0ZVBhdGggPSB1c2VSb3V0ZVBhdGgoKVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgY29uc3QgW18sIHNldENvdW50XSA9IHVzZVN0YXRlKDApXG5cbiAgdXNlRWZmZWN0KCgpID0+XG4gICAgb25SZWxvYWRDbGllbnREYXRhKCgpID0+IHtcbiAgICAgIHNldENvdW50KG9sZCA9PiBvbGQgKyAxKVxuICAgIH0pXG4gIClcblxuICBjb25zdCByb3V0ZUVycm9yID0gcm91dGVFcnJvckJ5UGF0aFtyb3V0ZVBhdGhdXG4gIGNvbnN0IHJvdXRlSW5mbyA9IHJvdXRlRXJyb3JcbiAgICA/IHJvdXRlSW5mb0J5UGF0aFtQQVRIXzQwNF1cbiAgICA6IHJvdXRlSW5mb0J5UGF0aFtyb3V0ZVBhdGhdXG5cbiAgLy8gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHJlcG9ydGVkIGZvciB0aGlzIHBhdGgsIHRocm93IGFuIGVycm9yXG4gIC8vIHVubGVzcyB0aGVyZSBpcyBkYXRhIGZvciB0aGUgNDA0IHBhZ2VcbiAgaWYgKHJvdXRlRXJyb3IgJiYgKCFyb3V0ZUluZm8gfHwgIXJvdXRlSW5mby5kYXRhKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBSZWFjdC1TdGF0aWM6IHVzZVJvdXRlRGF0YSgpIGNvdWxkIG5vdCBmaW5kIGFueSBkYXRhIGZvciB0aGlzIHJvdXRlOiAke3JvdXRlUGF0aH0uIElmIHRoaXMgaXMgYSBkeW5hbWljIHJvdXRlLCBwbGVhc2UgcmVtb3ZlIGFueSBjYWxscyB0byB1c2VSb3V0ZURhdGEoKSBmcm9tIHRoaXMgcm91dGUncyBjb21wb25lbnRzYFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IHRhcmdldFJvdXRlSW5mb1BhdGggPSByb3V0ZUluZm8gPyByb3V0ZUluZm8ucGF0aCA6IHJvdXRlUGF0aFxuXG4gIC8vIElmIHdlIG5lZWQgdG8gbG9hZCBkYXRhLCBzdXNwZW5kIHdoaWxlIGl0J3MgcmVxdWVzdGVkXG4gIGlmIChzaG91bGRMb2FkRGF0YShyb3V0ZUluZm8pKSB7XG4gICAgdGhyb3cgUHJvbWlzZS5hbGwoW1xuICAgICAgbmV3IFByb21pc2UocmVzb2x2ZSA9PlxuICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIHByb2Nlc3MuZW52LlJFQUNUX1NUQVRJQ19NSU5fTE9BRF9USU1FKVxuICAgICAgKSxcbiAgICAgIHByZWZldGNoKHRhcmdldFJvdXRlSW5mb1BhdGgsIHsgcHJpb3JpdHk6IHRydWUgfSksXG4gICAgXSlcbiAgfVxuXG4gIC8vIE90aGVyd2lzZSwgcmV0dXJuIGFsbCBvZiB0aGUgZGF0YVxuICByZXR1cm4gZ2V0RnVsbFJvdXRlRGF0YShyb3V0ZUluZm8pXG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVJvdXRlRGF0YVxuXG5mdW5jdGlvbiBzaG91bGRMb2FkRGF0YShyb3V0ZUluZm8pIHtcbiAgaWYgKCFyb3V0ZUluZm8gfHwgIXJvdXRlSW5mby5kYXRhKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiBzaG91bGRMb2FkU2hhcmVkRGF0YShyb3V0ZUluZm8pXG59XG5cbmZ1bmN0aW9uIHNob3VsZExvYWRTaGFyZWREYXRhKHJvdXRlSW5mbykge1xuICByZXR1cm4gaGFzUHJvcEhhc2hlcyhyb3V0ZUluZm8pICYmICFyb3V0ZUluZm8uc2hhcmVkRGF0YVxufVxuXG5mdW5jdGlvbiBoYXNQcm9wSGFzaGVzKHJvdXRlSW5mbykge1xuICByZXR1cm4gKFxuICAgIHJvdXRlSW5mby5zaGFyZWRIYXNoZXNCeVByb3AgJiZcbiAgICBPYmplY3Qua2V5cyhyb3V0ZUluZm8uc2hhcmVkSGFzaGVzQnlQcm9wKS5sZW5ndGggPiAwXG4gIClcbn1cbiJdfQ==