@rest-hooks/ssr
Version:
Server Side Rendering helpers for Rest Hooks
47 lines • 7.25 kB
JavaScript
import _jsx from "@babel/runtime/helpers/jsx";
import React from "react";
import { ExternalCacheProvider, PromiseifyMiddleware, Controller, NetworkManager, __INTERNAL__ } from '@rest-hooks/redux';
import { useSyncExternalStore } from 'react';
import { createStore, applyMiddleware } from 'redux';
const {
createReducer,
initialState,
applyManager
} = __INTERNAL__;
export default function createPersistedStore(managers) {
var _managers;
const controller = new Controller();
managers = (_managers = managers) != null ? _managers : [new NetworkManager()];
const nm = managers.find(m => m instanceof NetworkManager);
if (nm === undefined) throw new Error('managers must include a NetworkManager');
const reducer = createReducer(controller);
const enhancer = applyMiddleware(...applyManager(managers, controller), PromiseifyMiddleware);
const store = createStore(reducer, initialState, enhancer);
managers.forEach(manager => manager.init == null ? void 0 : manager.init(store.getState()));
const selector = state => state;
const getState = () => selector(store.getState());
let firstRender = true;
function useReadyCacheState() {
const inFlightFetches = nm.allSettled();
if (inFlightFetches) {
firstRender = false;
throw inFlightFetches;
}
if (firstRender) {
firstRender = false;
throw new Promise(resolve => setTimeout(resolve, 10));
}
return useSyncExternalStore(store.subscribe, getState, getState);
}
function ServerCacheProvider({
children
}) {
return /*#__PURE__*/_jsx(ExternalCacheProvider, {
store: store,
selector: selector,
controller: controller
}, void 0, children);
}
return [ServerCacheProvider, useReadyCacheState, controller, store];
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHRlcm5hbENhY2hlUHJvdmlkZXIiLCJQcm9taXNlaWZ5TWlkZGxld2FyZSIsIkNvbnRyb2xsZXIiLCJOZXR3b3JrTWFuYWdlciIsIl9fSU5URVJOQUxfXyIsInVzZVN5bmNFeHRlcm5hbFN0b3JlIiwiY3JlYXRlU3RvcmUiLCJhcHBseU1pZGRsZXdhcmUiLCJjcmVhdGVSZWR1Y2VyIiwiaW5pdGlhbFN0YXRlIiwiYXBwbHlNYW5hZ2VyIiwiY3JlYXRlUGVyc2lzdGVkU3RvcmUiLCJtYW5hZ2VycyIsIl9tYW5hZ2VycyIsImNvbnRyb2xsZXIiLCJubSIsImZpbmQiLCJtIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJyZWR1Y2VyIiwiZW5oYW5jZXIiLCJzdG9yZSIsImZvckVhY2giLCJtYW5hZ2VyIiwiaW5pdCIsImdldFN0YXRlIiwic2VsZWN0b3IiLCJzdGF0ZSIsImZpcnN0UmVuZGVyIiwidXNlUmVhZHlDYWNoZVN0YXRlIiwiaW5GbGlnaHRGZXRjaGVzIiwiYWxsU2V0dGxlZCIsIlByb21pc2UiLCJyZXNvbHZlIiwic2V0VGltZW91dCIsInN1YnNjcmliZSIsIlNlcnZlckNhY2hlUHJvdmlkZXIiLCJjaGlsZHJlbiIsIl9qc3giXSwic291cmNlcyI6WyIuLi9zcmMvY3JlYXRlUGVyc2lzdGVkU3RvcmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEV4dGVybmFsQ2FjaGVQcm92aWRlcixcbiAgUHJvbWlzZWlmeU1pZGRsZXdhcmUsXG4gIENvbnRyb2xsZXIsXG4gIE1hbmFnZXIsXG4gIE5ldHdvcmtNYW5hZ2VyLFxuICBTdGF0ZSxcbiAgX19JTlRFUk5BTF9fLFxufSBmcm9tICdAcmVzdC1ob29rcy9yZWR1eCc7XG5pbXBvcnQgeyB1c2VTeW5jRXh0ZXJuYWxTdG9yZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZVN0b3JlLCBhcHBseU1pZGRsZXdhcmUgfSBmcm9tICdyZWR1eCc7XG5cbmNvbnN0IHsgY3JlYXRlUmVkdWNlciwgaW5pdGlhbFN0YXRlLCBhcHBseU1hbmFnZXIgfSA9IF9fSU5URVJOQUxfXztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlUGVyc2lzdGVkU3RvcmUobWFuYWdlcnM/OiBNYW5hZ2VyW10pIHtcbiAgY29uc3QgY29udHJvbGxlciA9IG5ldyBDb250cm9sbGVyKCk7XG4gIG1hbmFnZXJzID0gbWFuYWdlcnMgPz8gW25ldyBOZXR3b3JrTWFuYWdlcigpXTtcbiAgY29uc3Qgbm06IE5ldHdvcmtNYW5hZ2VyID0gbWFuYWdlcnMuZmluZChcbiAgICBtID0+IG0gaW5zdGFuY2VvZiBOZXR3b3JrTWFuYWdlcixcbiAgKSBhcyBhbnk7XG4gIGlmIChubSA9PT0gdW5kZWZpbmVkKVxuICAgIHRocm93IG5ldyBFcnJvcignbWFuYWdlcnMgbXVzdCBpbmNsdWRlIGEgTmV0d29ya01hbmFnZXInKTtcbiAgY29uc3QgcmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoY29udHJvbGxlcik7XG4gIGNvbnN0IGVuaGFuY2VyID0gYXBwbHlNaWRkbGV3YXJlKFxuICAgIC4uLmFwcGx5TWFuYWdlcihtYW5hZ2VycywgY29udHJvbGxlciksXG4gICAgUHJvbWlzZWlmeU1pZGRsZXdhcmUgYXMgYW55LFxuICApO1xuICBjb25zdCBzdG9yZSA9IGNyZWF0ZVN0b3JlKHJlZHVjZXIsIGluaXRpYWxTdGF0ZSBhcyBhbnksIGVuaGFuY2VyKTtcbiAgbWFuYWdlcnMuZm9yRWFjaChtYW5hZ2VyID0+IG1hbmFnZXIuaW5pdD8uKHN0b3JlLmdldFN0YXRlKCkpKTtcblxuICBjb25zdCBzZWxlY3RvciA9IChzdGF0ZTogYW55KSA9PiBzdGF0ZTtcblxuICBjb25zdCBnZXRTdGF0ZSA9ICgpID0+IHNlbGVjdG9yKHN0b3JlLmdldFN0YXRlKCkpO1xuICBsZXQgZmlyc3RSZW5kZXIgPSB0cnVlO1xuICBmdW5jdGlvbiB1c2VSZWFkeUNhY2hlU3RhdGUoKTogU3RhdGU8dW5rbm93bj4ge1xuICAgIGNvbnN0IGluRmxpZ2h0RmV0Y2hlcyA9IG5tLmFsbFNldHRsZWQoKTtcbiAgICBpZiAoaW5GbGlnaHRGZXRjaGVzKSB7XG4gICAgICBmaXJzdFJlbmRlciA9IGZhbHNlO1xuICAgICAgdGhyb3cgaW5GbGlnaHRGZXRjaGVzO1xuICAgIH1cbiAgICBpZiAoZmlyc3RSZW5kZXIpIHtcbiAgICAgIGZpcnN0UmVuZGVyID0gZmFsc2U7XG4gICAgICB0aHJvdyBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTApKTtcbiAgICB9XG4gICAgcmV0dXJuIHVzZVN5bmNFeHRlcm5hbFN0b3JlKHN0b3JlLnN1YnNjcmliZSwgZ2V0U3RhdGUsIGdldFN0YXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIFNlcnZlckNhY2hlUHJvdmlkZXIoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RXh0ZXJuYWxDYWNoZVByb3ZpZGVyXG4gICAgICAgIHN0b3JlPXtzdG9yZX1cbiAgICAgICAgc2VsZWN0b3I9e3NlbGVjdG9yfVxuICAgICAgICBjb250cm9sbGVyPXtjb250cm9sbGVyfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0V4dGVybmFsQ2FjaGVQcm92aWRlcj5cbiAgICApO1xuICB9XG4gIHJldHVybiBbU2VydmVyQ2FjaGVQcm92aWRlciwgdXNlUmVhZHlDYWNoZVN0YXRlLCBjb250cm9sbGVyLCBzdG9yZV0gYXMgY29uc3Q7XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FDRUEscUJBQXFCLEVBQ3JCQyxvQkFBb0IsRUFDcEJDLFVBQVUsRUFFVkMsY0FBYyxFQUVkQyxZQUFZLFFBQ1AsbUJBQW1CO0FBQzFCLFNBQVNDLG9CQUFvQixRQUFRLE9BQU87QUFDNUMsU0FBU0MsV0FBVyxFQUFFQyxlQUFlLFFBQVEsT0FBTztBQUVwRCxNQUFNO0VBQUVDLGFBQWE7RUFBRUMsWUFBWTtFQUFFQztBQUFhLENBQUMsR0FBR04sWUFBWTtBQUVsRSxlQUFlLFNBQVNPLG9CQUFvQkEsQ0FBQ0MsUUFBb0IsRUFBRTtFQUFBLElBQUFDLFNBQUE7RUFDakUsTUFBTUMsVUFBVSxHQUFHLElBQUlaLFVBQVUsRUFBRTtFQUNuQ1UsUUFBUSxJQUFBQyxTQUFBLEdBQUdELFFBQVEsWUFBQUMsU0FBQSxHQUFJLENBQUMsSUFBSVYsY0FBYyxFQUFFLENBQUM7RUFDN0MsTUFBTVksRUFBa0IsR0FBR0gsUUFBUSxDQUFDSSxJQUFJLENBQ3RDQyxDQUFDLElBQUlBLENBQUMsWUFBWWQsY0FBYyxDQUMxQjtFQUNSLElBQUlZLEVBQUUsS0FBS0csU0FBUyxFQUNsQixNQUFNLElBQUlDLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQztFQUMzRCxNQUFNQyxPQUFPLEdBQUdaLGFBQWEsQ0FBQ00sVUFBVSxDQUFDO0VBQ3pDLE1BQU1PLFFBQVEsR0FBR2QsZUFBZSxDQUM5QixHQUFHRyxZQUFZLENBQUNFLFFBQVEsRUFBRUUsVUFBVSxDQUFDLEVBQ3JDYixvQkFBb0IsQ0FDckI7RUFDRCxNQUFNcUIsS0FBSyxHQUFHaEIsV0FBVyxDQUFDYyxPQUFPLEVBQUVYLFlBQVksRUFBU1ksUUFBUSxDQUFDO0VBQ2pFVCxRQUFRLENBQUNXLE9BQU8sQ0FBQ0MsT0FBTyxJQUFJQSxPQUFPLENBQUNDLElBQUksb0JBQVpELE9BQU8sQ0FBQ0MsSUFBSSxDQUFHSCxLQUFLLENBQUNJLFFBQVEsRUFBRSxDQUFDLENBQUM7RUFFN0QsTUFBTUMsUUFBUSxHQUFJQyxLQUFVLElBQUtBLEtBQUs7RUFFdEMsTUFBTUYsUUFBUSxHQUFHQSxDQUFBLEtBQU1DLFFBQVEsQ0FBQ0wsS0FBSyxDQUFDSSxRQUFRLEVBQUUsQ0FBQztFQUNqRCxJQUFJRyxXQUFXLEdBQUcsSUFBSTtFQUN0QixTQUFTQyxrQkFBa0JBLENBQUEsRUFBbUI7SUFDNUMsTUFBTUMsZUFBZSxHQUFHaEIsRUFBRSxDQUFDaUIsVUFBVSxFQUFFO0lBQ3ZDLElBQUlELGVBQWUsRUFBRTtNQUNuQkYsV0FBVyxHQUFHLEtBQUs7TUFDbkIsTUFBTUUsZUFBZTtJQUN2QjtJQUNBLElBQUlGLFdBQVcsRUFBRTtNQUNmQSxXQUFXLEdBQUcsS0FBSztNQUNuQixNQUFNLElBQUlJLE9BQU8sQ0FBQ0MsT0FBTyxJQUFJQyxVQUFVLENBQUNELE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RDtJQUNBLE9BQU83QixvQkFBb0IsQ0FBQ2lCLEtBQUssQ0FBQ2MsU0FBUyxFQUFFVixRQUFRLEVBQUVBLFFBQVEsQ0FBQztFQUNsRTtFQUVBLFNBQVNXLG1CQUFtQkEsQ0FBQztJQUFFQztFQUF3QyxDQUFDLEVBQUU7SUFDeEUsb0JBQ0VDLElBQUEsQ0FBQ3ZDLHFCQUFxQjtNQUNwQnNCLEtBQUssRUFBRUEsS0FBTTtNQUNiSyxRQUFRLEVBQUVBLFFBQVM7TUFDbkJiLFVBQVUsRUFBRUE7SUFBVyxXQUV0QndCLFFBQVEsQ0FDYTtFQUU1QjtFQUNBLE9BQU8sQ0FBQ0QsbUJBQW1CLEVBQUVQLGtCQUFrQixFQUFFaEIsVUFBVSxFQUFFUSxLQUFLLENBQUM7QUFDckUifQ==