UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

41 lines (40 loc) 1.45 kB
import { useRef } from "react"; import { getServerContext } from "../vite/one-server-only.mjs"; import { getQueryKey } from "./getQueryKey.mjs"; import { resolveZeroQuery } from "./resolveQuery.mjs"; import { useQuery as useQueryZero } from "./useQueryZero.mjs"; const clientInitialData = getServerContext()?.postRenderData; const serverQueryData = {}; globalThis["__vxrnServerData__"] = serverQueryData; const promises = /* @__PURE__ */new WeakMap(); const useQuery = (query, enable = true) => { const snapshot = useQueryZero(query, enable); const queryIdRef = useRef(void 0); if (query && !queryIdRef.current) queryIdRef.current = getQueryKey(query); const queryId = queryIdRef.current || ""; if (typeof window === "undefined") { if (!query) return []; const promise = promises.get(query); const value = serverQueryData[queryId]; if (value) return value; if (!promise) { const promise2 = new Promise((res, rej) => { resolveZeroQuery(query).then(val => { serverQueryData[queryId] = val; res(); }).catch(err => { promises.set(query, null); rej(err); }); }); promises.set(query, promise2); throw promise2; } if (promise) throw promise; return []; } if (clientInitialData && !snapshot) return clientInitialData[queryId] || []; return snapshot || []; }; export { useQuery }; //# sourceMappingURL=useQuery.mjs.map