UNPKG

@rest-hooks/ssr

Version:

Server Side Rendering helpers for Rest Hooks

29 lines 4.29 kB
import { __INTERNAL__ } from '@rest-hooks/react'; const { initialState } = __INTERNAL__; export const awaitInitialData = (id = 'rest-hooks-data') => { return new Promise((resolve, reject) => { let el; if (el = document.getElementById(id)) { resolve(getDataFromEl(el, id)); return; } document.addEventListener('DOMContentLoaded', () => { el = document.getElementById(id); if (el) resolve(getDataFromEl(el, id));else reject(new Error('failed to find DOM with rest hooks state')); }); }); }; export const getInitialData = (id = 'rest-hooks-data') => { const el = document.getElementById(id); if (!el) return initialState; return getDataFromEl(el, id); }; function getDataFromEl(el, key) { if (el.text === undefined) { console.error(`#${key} is completely empty. This could be due to CSP issues.`); } return el != null && el.text ? JSON.parse(el == null ? void 0 : el.text) : undefined; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfX0lOVEVSTkFMX18iLCJpbml0aWFsU3RhdGUiLCJhd2FpdEluaXRpYWxEYXRhIiwiaWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImVsIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImdldERhdGFGcm9tRWwiLCJhZGRFdmVudExpc3RlbmVyIiwiRXJyb3IiLCJnZXRJbml0aWFsRGF0YSIsImtleSIsInRleHQiLCJ1bmRlZmluZWQiLCJjb25zb2xlIiwiZXJyb3IiLCJKU09OIiwicGFyc2UiXSwic291cmNlcyI6WyIuLi9zcmMvZ2V0SW5pdGlhbERhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19JTlRFUk5BTF9fIH0gZnJvbSAnQHJlc3QtaG9va3MvcmVhY3QnO1xuY29uc3QgeyBpbml0aWFsU3RhdGUgfSA9IF9fSU5URVJOQUxfXztcblxuZXhwb3J0IGNvbnN0IGF3YWl0SW5pdGlhbERhdGEgPSAoaWQgPSAncmVzdC1ob29rcy1kYXRhJykgPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgbGV0IGVsOiBIVE1MU2NyaXB0RWxlbWVudCB8IG51bGw7XG4gICAgaWYgKChlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSBhcyBhbnkpKSB7XG4gICAgICByZXNvbHZlKGdldERhdGFGcm9tRWwoZWwsIGlkKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7XG4gICAgICBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSBhcyBhbnk7XG4gICAgICBpZiAoZWwpIHJlc29sdmUoZ2V0RGF0YUZyb21FbChlbCwgaWQpKTtcbiAgICAgIGVsc2UgcmVqZWN0KG5ldyBFcnJvcignZmFpbGVkIHRvIGZpbmQgRE9NIHdpdGggcmVzdCBob29rcyBzdGF0ZScpKTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW5pdGlhbERhdGEgPSAoaWQgPSAncmVzdC1ob29rcy1kYXRhJykgPT4ge1xuICBjb25zdCBlbDogSFRNTFNjcmlwdEVsZW1lbnQgfCBudWxsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpIGFzIGFueTtcbiAgaWYgKCFlbCkgcmV0dXJuIGluaXRpYWxTdGF0ZTtcbiAgcmV0dXJuIGdldERhdGFGcm9tRWwoZWwsIGlkKTtcbn07XG5cbmZ1bmN0aW9uIGdldERhdGFGcm9tRWwoZWw6IEhUTUxTY3JpcHRFbGVtZW50LCBrZXk6IHN0cmluZykge1xuICBpZiAoZWwudGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGAjJHtrZXl9IGlzIGNvbXBsZXRlbHkgZW1wdHkuIFRoaXMgY291bGQgYmUgZHVlIHRvIENTUCBpc3N1ZXMuYCxcbiAgICApO1xuICB9XG4gIHJldHVybiBlbD8udGV4dCA/IEpTT04ucGFyc2UoZWw/LnRleHQpIDogdW5kZWZpbmVkO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxZQUFZLFFBQVEsbUJBQW1CO0FBQ2hELE1BQU07RUFBRUM7QUFBYSxDQUFDLEdBQUdELFlBQVk7QUFFckMsT0FBTyxNQUFNRSxnQkFBZ0IsR0FBR0EsQ0FBQ0MsRUFBRSxHQUFHLGlCQUFpQixLQUFLO0VBQzFELE9BQU8sSUFBSUMsT0FBTyxDQUFNLENBQUNDLE9BQU8sRUFBRUMsTUFBTSxLQUFLO0lBQzNDLElBQUlDLEVBQTRCO0lBQ2hDLElBQUtBLEVBQUUsR0FBR0MsUUFBUSxDQUFDQyxjQUFjLENBQUNOLEVBQUUsQ0FBUSxFQUFHO01BQzdDRSxPQUFPLENBQUNLLGFBQWEsQ0FBQ0gsRUFBRSxFQUFFSixFQUFFLENBQUMsQ0FBQztNQUM5QjtJQUNGO0lBQ0FLLFFBQVEsQ0FBQ0csZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsTUFBTTtNQUNsREosRUFBRSxHQUFHQyxRQUFRLENBQUNDLGNBQWMsQ0FBQ04sRUFBRSxDQUFRO01BQ3ZDLElBQUlJLEVBQUUsRUFBRUYsT0FBTyxDQUFDSyxhQUFhLENBQUNILEVBQUUsRUFBRUosRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUNsQ0csTUFBTSxDQUFDLElBQUlNLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0lBQ3BFLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxPQUFPLE1BQU1DLGNBQWMsR0FBR0EsQ0FBQ1YsRUFBRSxHQUFHLGlCQUFpQixLQUFLO0VBQ3hELE1BQU1JLEVBQTRCLEdBQUdDLFFBQVEsQ0FBQ0MsY0FBYyxDQUFDTixFQUFFLENBQVE7RUFDdkUsSUFBSSxDQUFDSSxFQUFFLEVBQUUsT0FBT04sWUFBWTtFQUM1QixPQUFPUyxhQUFhLENBQUNILEVBQUUsRUFBRUosRUFBRSxDQUFDO0FBQzlCLENBQUM7QUFFRCxTQUFTTyxhQUFhQSxDQUFDSCxFQUFxQixFQUFFTyxHQUFXLEVBQUU7RUFDekQsSUFBSVAsRUFBRSxDQUFDUSxJQUFJLEtBQUtDLFNBQVMsRUFBRTtJQUN6QkMsT0FBTyxDQUFDQyxLQUFLLENBQ1YsSUFBR0osR0FBSSx3REFBdUQsQ0FDaEU7RUFDSDtFQUNBLE9BQU9QLEVBQUUsWUFBRkEsRUFBRSxDQUFFUSxJQUFJLEdBQUdJLElBQUksQ0FBQ0MsS0FBSyxDQUFDYixFQUFFLG9CQUFGQSxFQUFFLENBQUVRLElBQUksQ0FBQyxHQUFHQyxTQUFTO0FBQ3BEIn0=