UNPKG

one

Version:

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

65 lines 2.44 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var useQuery_exports = {}; __export(useQuery_exports, { useQuery: () => useQuery }); module.exports = __toCommonJS(useQuery_exports); var import_react = require("react"); var import_one_server_only = require("../vite/one-server-only.cjs"); var import_getQueryKey = require("./getQueryKey.cjs"); var import_resolveQuery = require("./resolveQuery.cjs"); var import_useQueryZero = require("./useQueryZero.cjs"); const clientInitialData = (0, import_one_server_only.getServerContext)()?.postRenderData; const serverQueryData = {}; globalThis["__vxrnServerData__"] = serverQueryData; const promises = /* @__PURE__ */new WeakMap(); const useQuery = (query, enable = true) => { const snapshot = (0, import_useQueryZero.useQuery)(query, enable); const queryIdRef = (0, import_react.useRef)(void 0); if (query && !queryIdRef.current) queryIdRef.current = (0, import_getQueryKey.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) => { (0, import_resolveQuery.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 || []; };