react-static
Version:
A progressive static site generator for React
75 lines (55 loc) • 7.5 kB
JavaScript
;
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==