surrealdb.react
Version:
A ReactJS wrapper for surrealdb.js
13 lines (12 loc) • 3.56 kB
JavaScript
(function(u,a){typeof exports=="object"&&typeof module!="undefined"?a(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],a):(u=typeof globalThis!="undefined"?globalThis:u||self,a(u.ReactFeatureFlag={},u.require$$0))})(this,function(u,a){"use strict";function x(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var C=x(a),j={exports:{}},c={};/*
object-assign
(c) Sindre Sorhus
@license MIT
*/var S=Object.getOwnPropertySymbols,D=Object.prototype.hasOwnProperty,N=Object.prototype.propertyIsEnumerable;function I(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function T(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},s=0;s<10;s++)t["_"+String.fromCharCode(s)]=s;var r=Object.getOwnPropertyNames(t).map(function(o){return t[o]});if(r.join("")!=="0123456789")return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach(function(o){n[o]=o}),Object.keys(Object.assign({},n)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}T();/** @license React v17.0.2
* react-jsx-runtime.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var k=C.default,_=60103;if(c.Fragment=60107,typeof Symbol=="function"&&Symbol.for){var h=Symbol.for;_=h("react.element"),c.Fragment=h("react.fragment")}var F=k.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,L=Object.prototype.hasOwnProperty,M={key:!0,ref:!0,__self:!0,__source:!0};function E(e,t,s){var r,n={},o=null,f=null;s!==void 0&&(o=""+s),t.key!==void 0&&(o=""+t.key),t.ref!==void 0&&(f=t.ref);for(r in t)L.call(t,r)&&!M.hasOwnProperty(r)&&(n[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps,t)n[r]===void 0&&(n[r]=t[r]);return{$$typeof:_,type:e,key:o,ref:f,props:n,_owner:F.current}}c.jsx=E,c.jsxs=E,j.exports=c;const G=j.exports.jsx,b=a.createContext({database:void 0,isReady:!1,hasError:!1,errorMessage:""});let w=!1;const Q=({children:e,database:t,options:s})=>{if(!t)throw new Error("DatabaseProvider requires an initialized instance of SurrealDB.");const{user:r,pass:n,database:o,namespace:f}=s,[i,d]=a.useState(!1),[g,p]=a.useState(!1),[v,O]=a.useState(""),m=a.useCallback(async()=>{await t.signin({user:r,pass:n}),await t.use(f,o),d(!0)},[]);return a.useEffect(()=>{w||(w=!0,m().catch(y=>{p(!0),O(y.message)}))},[]),G(b.Provider,{value:{database:t,isReady:i,hasError:g,errorMessage:v},children:e})},U=()=>{const{database:e,isReady:t,hasError:s,errorMessage:r}=a.useContext(b);return{database:e,isReady:t,hasError:s,errorMessage:r}},B=(e,t={},s={immediate:!0})=>{const{database:r,isReady:n}=a.useContext(b),[o,f]=a.useState(null),[i,d]=a.useState(!0),[g,p]=a.useState(null),[v,O]=a.useState(null),[m,y]=a.useState("PENDING"),P=a.useCallback(async(R={})=>{if(n){y("INFLIGHT");const l=await(r==null?void 0:r.query(e,Object.keys(R).length?R:t));if(l.length){if(O(l[0].time),l[0].status==="OK")return f(l[0].result),y("OK"),d(!1),p(!1),l[0].result;l[0].status==="ERR"&&l[0].detail&&(y("ERR"),d(!1),p(l[0].detail))}}else d(!1),p("Database is not ready.")},[e,n]);return a.useEffect(()=>{n&&m==="PENDING"&&s.immediate!==!1&&P()},[n]),{data:o,loading:i,error:g,refetch:P,status:m,time:v}};u.DatabaseProvider=Q,u.SurrealContext=b,u.useQuery=B,u.useSurreal=U,Object.defineProperties(u,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});