@based/react 2.5.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,40 +1,64 @@
1
- # Based React
1
+ # @based/react
2
2
 
3
- ## 🔗 Links
4
- - [GitHub](https://github.com/atelier-saulx/based#readme)
3
+ React hooks for the based data platform
4
+
5
+ > [Example react project here](https://github.com/atelier-saulx/based-react-sample)
6
+
7
+ > Read more about [based](https://github.com/atelier-saulx/based/blob/main/packages/client/README.md)
5
8
 
6
9
  ---
7
10
 
8
- ## .subscribe(query, cb, err?)
11
+ ```js
12
+ import based from "@based/client"
13
+ import { Provider, useData, useClient } from "@based/react"
14
+ import React from "react"
15
+ import ReactDom from "react-dom"
9
16
 
10
- ```
11
- const unsubscribe = await b.subscribe({
12
- $id: 'sp1',
13
- title: true
14
- }, (data) => {
17
+ const client = based({ env: "prod", project: "someproject", org: "a-org" })
15
18
 
16
- }, (err) => {
19
+ const Things = () => {
20
+ const client = useClient()
17
21
 
18
- })
19
- ```
22
+ // automatically observes data when components get rendered
23
+ const { data, loading, error } = useData({
24
+ things: {
25
+ id: true,
26
+ name: true,
27
+ $list: true,
28
+ },
29
+ })
20
30
 
21
- ## .get(query)
31
+ if (loading) {
32
+ return <div>loading...</div>
33
+ }
22
34
 
23
- ```
24
- const result = await b.get({
25
- $id: 'sp1',
26
- title: true
27
- })
28
- ```
35
+ return (
36
+ <div>
37
+ {data.things.map((thing) => (
38
+ <div
39
+ key={thing.id}
40
+ onClick={(e) => {
41
+ client.set({ $id: thing.id, name: "Some random name!" })
42
+ }}
43
+ >
44
+ {thing.name}
45
+ </div>
46
+ ))}
47
+ </div>
48
+ )
49
+ }
29
50
 
30
- ## .set(payload)
51
+ const App = () => {
52
+ return (
53
+ <Provider client={client}>
54
+ <Things />
55
+ </Provider>
56
+ )
57
+ }
31
58
 
59
+ ReactDom.render(<App />, document.body)
32
60
  ```
33
- const { id } = await b.set({
34
- $id: 'sp1',
35
- title: 'Yes, the best'
36
- })
37
- ```
61
+
38
62
 
39
63
  ---
40
64
 
package/dist/clients.js CHANGED
@@ -35,7 +35,8 @@ exports.BasedContext = (0, react_1.createContext)({
35
35
  });
36
36
  const defaultCreateClient = (selector) => {
37
37
  if (typeof selector === 'object') {
38
- if (process.env.CLUSTER &&
38
+ if (typeof process !== 'undefined' &&
39
+ process.env.CLUSTER &&
39
40
  process.env.CLUSTER.startsWith('local') &&
40
41
  !selector.cluster) {
41
42
  selector.cluster = process.env.CLUSTER;
@@ -1 +1 @@
1
- {"version":3,"file":"clients.js","sourceRoot":"","sources":["../src/clients.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clients.js","sourceRoot":"","sources":["../src/clients.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ export declare function InfiniteList({ query, delay, itemSize, height, limit, treshold, target, ...props }: {
3
+ [x: string]: any;
4
+ query: any;
5
+ delay?: number;
6
+ itemSize?: number;
7
+ height?: number;
8
+ limit?: number;
9
+ treshold?: number;
10
+ target?: string;
11
+ }): JSX.Element;
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.InfiniteList = void 0;
27
+ const client_1 = require("@based/client");
28
+ const react_1 = __importStar(require("react"));
29
+ const react_window_1 = require("react-window");
30
+ const __1 = require("../..");
31
+ const addScrollSub = (client, subId, payload, offset, current, setChecksum) => {
32
+ const [, subscriberId] = (0, client_1.addSubscriber)(client.client, payload, ({ items }, checksum) => {
33
+ for (let i = 0; i < items.length; i++) {
34
+ current.items[i + offset] = items[i];
35
+ }
36
+ setChecksum(`${offset}-${checksum}`);
37
+ }, (err) => err && console.error(err), console.error, subId);
38
+ return subscriberId;
39
+ };
40
+ function InfiniteList({ query, delay = 100, itemSize = 50, height = 400, limit = Math.ceil(height / itemSize), treshold = 0, target = 'root', ...props }) {
41
+ const blockHeight = itemSize * limit;
42
+ const client = (0, __1.useClient)();
43
+ const [offset, setOffset] = (0, react_1.useState)(0);
44
+ const [blocks, setBlocks] = (0, react_1.useState)(() => {
45
+ let blocks = Math.ceil(height / blockHeight);
46
+ if (treshold) {
47
+ blocks += Math.ceil((height / itemSize + treshold - blocks * limit) / limit);
48
+ }
49
+ return blocks;
50
+ });
51
+ const [, setChecksum] = (0, react_1.useState)();
52
+ const { current } = (0, react_1.useRef)({
53
+ offset,
54
+ blocks,
55
+ scroll: 0,
56
+ items: [],
57
+ timer: null,
58
+ subs: {},
59
+ });
60
+ const { data: { itemCount }, } = (0, __1.useData)({
61
+ itemCount: {
62
+ $aggregate: {
63
+ $function: 'count',
64
+ ...query().$list.$find,
65
+ },
66
+ },
67
+ });
68
+ (0, react_1.useEffect)(() => {
69
+ if (client) {
70
+ return () => {
71
+ const { subs } = current;
72
+ current.subs = {};
73
+ setTimeout(() => {
74
+ for (const subId in subs) {
75
+ const subscriberId = current.subs[subId];
76
+ (0, client_1.removeSubscriber)(client.client, Number(subId), subscriberId);
77
+ }
78
+ });
79
+ };
80
+ }
81
+ }, [client, current]);
82
+ (0, react_1.useEffect)(() => {
83
+ if (client) {
84
+ const subs = {};
85
+ let i = blocks;
86
+ while (i--) {
87
+ const start = offset + limit * i;
88
+ const payload = {
89
+ $id: target,
90
+ items: query(start, limit),
91
+ };
92
+ const subId = (0, client_1.generateSubscriptionId)(payload);
93
+ subs[subId] =
94
+ current.subs[subId] ||
95
+ addScrollSub(client, subId, payload, start, current, setChecksum);
96
+ }
97
+ for (const subId in current.subs) {
98
+ if (!(subId in subs)) {
99
+ const subscriberId = current.subs[subId];
100
+ (0, client_1.removeSubscriber)(client.client, Number(subId), subscriberId);
101
+ }
102
+ }
103
+ current.subs = subs;
104
+ }
105
+ }, [target, client, offset, blocks, query, current]); // dont include limit
106
+ (0, react_1.useEffect)(update, [
107
+ blockHeight,
108
+ delay,
109
+ height,
110
+ itemSize,
111
+ current,
112
+ limit,
113
+ treshold,
114
+ ]);
115
+ if (!itemCount || !current.items.length) {
116
+ return null;
117
+ }
118
+ return (react_1.default.createElement(react_window_1.FixedSizeList, { ...props, height: height, itemSize: itemSize, itemData: current.items, itemCount: itemCount, onScroll: ({ scrollOffset }) => {
119
+ current.scroll = scrollOffset;
120
+ update();
121
+ } }));
122
+ function update() {
123
+ const start = Math.max(0, current.scroll / itemSize - treshold);
124
+ const end = (current.scroll + height) / itemSize;
125
+ const newOffset = start - (start % limit);
126
+ let newBlocks = Math.ceil(height / blockHeight + (current.scroll % blockHeight) / blockHeight);
127
+ if (treshold) {
128
+ const newLength = newOffset + limit * newBlocks;
129
+ newBlocks += Math.max(0, Math.ceil((end + treshold - newLength) / limit));
130
+ }
131
+ if (newOffset !== current.offset || newBlocks !== current.blocks) {
132
+ current.offset = newOffset;
133
+ current.blocks = newBlocks;
134
+ const set = () => {
135
+ setOffset(current.offset);
136
+ setBlocks(current.blocks);
137
+ };
138
+ if (current.timer) {
139
+ clearTimeout(current.timer);
140
+ }
141
+ else {
142
+ set();
143
+ }
144
+ current.timer = setTimeout(() => {
145
+ current.timer = null;
146
+ set();
147
+ }, delay);
148
+ }
149
+ else if (current.timer) {
150
+ clearTimeout(current.timer);
151
+ current.timer = setTimeout(() => {
152
+ current.timer = null;
153
+ setOffset(current.offset);
154
+ setBlocks(current.blocks);
155
+ }, delay);
156
+ }
157
+ }
158
+ }
159
+ exports.InfiniteList = InfiniteList;
160
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/InfiniteList/index.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,9 +3,13 @@ import { Loading, Data } from './types';
3
3
  export * from './meta';
4
4
  export * from './clients';
5
5
  export * from './gql';
6
+ export { InfiniteList } from './components/InfiniteList';
6
7
  export declare function useAuth(clientSelector?: string | (BasedOpts & {
7
8
  key?: string;
8
- })): string | false;
9
+ })): {
10
+ id: string | false;
11
+ token: string;
12
+ } | false;
9
13
  export declare function useSchema(name?: string | null | false, clientSelector?: string | (BasedOpts & {
10
14
  key?: string;
11
15
  })): {
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var te=Object.create;var S=Object.defineProperty;var ne=Object.getOwnPropertyDescriptor;var oe=Object.getOwnPropertyNames,z=Object.getOwnPropertySymbols,se=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty,ie=Object.prototype.propertyIsEnumerable;var K=(e,r,t)=>r in e?S(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,W=(e,r)=>{for(var t in r||(r={}))V.call(r,t)&&K(e,t,r[t]);if(z)for(var t of z(r))ie.call(r,t)&&K(e,t,r[t]);return e};var ae=(e,r)=>{for(var t in r)S(e,t,{get:r[t],enumerable:!0})},J=(e,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of oe(r))!V.call(e,n)&&n!==t&&S(e,n,{get:()=>r[n],enumerable:!(s=ne(r,n))||s.enumerable});return e};var X=(e,r,t)=>(t=e!=null?te(se(e)):{},J(r||!e||!e.__esModule?S(t,"default",{value:e,enumerable:!0}):t,e)),ue=e=>J(S({},"__esModule",{value:!0}),e);var ke={};ae(ke,{BasedContext:()=>w,Provider:()=>le,defaultCreateClient:()=>Y,updateMeta:()=>m,useAnalytics:()=>he,useAuth:()=>pe,useBasedContext:()=>Z,useClient:()=>C,useClients:()=>de,useData:()=>re,useError:()=>ge,useLoading:()=>fe,useQuery:()=>me,useSchema:()=>ye,useTrack:()=>be});module.exports=ue(ke);var d=require("react"),O=require("@based/client");function I(e,r){return r.error&&(e.error=r.error),r.data&&(e.checksum=r.checksum||0,e.data=r.data,e.loading=!1,e.error&&delete e.error),r.merge&&(e.checksum=r.checksum||0,e.data?Object.assign(e.data,r.merge):e.data=r.merge,e.loading=!1,e.error&&delete e.error),r.loading&&(e.loading=r.loading),W({},e)}var L=e=>{if(!!e)return e.key?e.key:`${e.env}_${e.project}_${e.org}_${e.cluster||""}_${e.name||""}`};var k=X(require("react")),$=X(require("@based/client"));var _=new Set,w=(0,k.createContext)({clients:{},removeClient:(...e)=>{}}),Y=e=>{if(typeof e=="object")return process.env.CLUSTER&&process.env.CLUSTER.startsWith("local")&&!e.cluster&&(e.cluster=process.env.CLUSTER),(0,$.default)(e);console.error("Cannot create client from "+e)},le=({client:e,children:r,clients:t,createClient:s})=>(!t&&e?t={default:e}:t&&e&&(t.default=e),k.default.createElement(w.Provider,{value:{clients:t,createClient:s||Y,removeClient:o=>{if(o instanceof $.Based){for(let b in t)if(t[b]===o){o=b;break}if(typeof o!="string"){console.error("Cannot find client to remove from ctx",o);return}}else typeof o!="string"&&(o=L(o));t[o]&&(t[o].disconnect(),delete t[o],_.forEach(b=>b()))}}},r)),Z=()=>(0,k.useContext)(w);function ce(e){return e+1}var de=()=>{let e=Z(),[,r]=(0,k.useReducer)(ce,0);return(0,k.useEffect)(()=>{let t,s=()=>{t=setTimeout(r,0)};return _.add(s),()=>{_.delete(s),clearTimeout(t)}},[]),Object.values(e.clients)},C=(e="default")=>{let r=(0,k.useContext)(w);if(typeof e=="object"&&!(e.env&&e.project&&e.org))return;let t;typeof e=="string"?t=e:t=e.key||L(e);let s=r.clients[t];return!s&&r.createClient&&(s=r.createClient(e),s&&(r.clients[t]=s,_.forEach(n=>n()))),s};var D=require("react"),v={},H=new Set,U=new Set,N=new Set,R=!1,F="",T=0,Q=T+F;function m(e,r,t){t?(F=t,e in v?v[e]=t:(v[e]=t,T++)):e in v&&(T--,delete v[e]);let s=T+F;s!==Q&&(Q=s,H.forEach(o=>o(Q))),r?U.add(e):U.delete(e);let n=!!U.size;n!==R&&(R=n,N.forEach(o=>o(R)))}function fe(){let[,e]=(0,D.useState)(R);return N.add(e),(0,D.useEffect)(()=>()=>{N.delete(e)},[]),{loading:R}}function ge(){let[,e]=(0,D.useState)(Q);return H.add(e),(0,D.useEffect)(()=>()=>{H.delete(e)},[]),{error:T?F:null,errors:Object.values(v)}}var i=require("react"),h=require("@based/client");var M=require("@saulx/hash"),ee=(0,h.generateSubscriptionId)({$subscribe_schema:"default"});function me(e,r={},t){let[s,n]=(0,i.useReducer)(I,{loading:!0,data:{},checksum:0}),o=(0,i.useRef)({checksum:0,fns:{}}),b=t||"default",a=C(b);if(e){let[f,B]=(0,i.useState)(0);if((0,i.useEffect)(()=>{let[,l]=(0,h.addSubscriber)(a.client,{$subscribe_schema:"default"},(g,c)=>{a.client.configuration||(a.client.configuration={dbs:[],schema:{},functions:{}}),a.client.configuration.schema.default=g,B(c)},g=>{g&&console.error(g)},g=>{console.error(g)},ee);return()=>{(0,h.removeSubscriber)(a.client,ee,l)}},[]),f){let l;typeof e=="string"?l=a.gql(e):l=e,l=(0,h.handleGraphqlVariables)(l,l,r);let g={},c={};for(let p in l.ops){if(l.ops[p].fnObserve){let{name:E,payload:u}=l.ops[p].fnObserve;g[p]={name:E,payload:u,key:p};continue}c[p]=l.ops[p].get}let G=(0,i.useMemo)(()=>(0,M.hashObjectIgnoreKeyOrder)(g),[g]),A=(0,i.useMemo)(()=>(0,h.generateSubscriptionId)(c),[c]),q=typeof b=="string"?b:L(b);if(a){let p=q+A;(0,i.useEffect)(()=>{let E=[];for(let u in g)E.push((0,h.addSubscriber)(a.client,g[u].payload,(y,P)=>{m(p,!1,!1),o.current.fns[u]!==P&&(o.current.fns[u]=P,n({merge:{[u]:y},checksum:(0,M.hashObjectIgnoreKeyOrder)(o.current)}))},y=>{y&&(console.error(y),n({error:y,loading:!1}))},y=>{console.error(y),m(p,!1,y),n({error:y})},void 0,g[u].name));return()=>{for(let[u,y]of E)(0,h.removeSubscriber)(a.client,u,y)}},[G]),(0,i.useEffect)(()=>{if(!f)return;m(p,!0,!1);let[,E]=(0,h.addSubscriber)(a.client,c,(u,y)=>{m(p,!1,!1),o.current.checksum!==y&&(o.current.checksum=y,n({merge:u,checksum:(0,M.hashObjectIgnoreKeyOrder)(o.current)}))},u=>{u&&(console.error(u),m(p,!1,u),n({error:u,loading:!1}))},u=>{console.error(u),m(p,!1,u),n({error:u})},A);return()=>{m(p,!1,!1),(0,h.removeSubscriber)(a.client,A,E)}},[A,q,f])}else(0,i.useEffect)(x,[null,null])}else(0,i.useMemo)(x,[null]),(0,i.useMemo)(x,[null]),(0,i.useEffect)(x,[null]),(0,i.useEffect)(x,[null,null,null])}else(0,i.useState)(null),(0,i.useEffect)(x,[null]),(0,i.useMemo)(x,[null]),(0,i.useMemo)(x,[null]),(0,i.useEffect)(x,[null]),(0,i.useEffect)(x,[null,null,null]);return s}function x(){}function pe(e){let r=C(e),[t,s]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{let n=()=>s(r.getToken());return r.on("auth",n),()=>{r.removeListener("auth",n)}},[]),t}function ye(e="default",r){let t=re(e?{$subscribe_schema:e}:null,r);return{loading:t.loading,error:t.error,schema:t.data}}function be(e,r,t){if(e){let n=C(t||"default"),o=(0,d.useMemo)(()=>(0,O.generateSubscriptionId)(r,e),[e,r]);(0,d.useEffect)(()=>(n.track(e,r),()=>{n.untrack(e,r)}),[o])}else C(t),(0,d.useMemo)(()=>{},[]),(0,d.useEffect)(j,[null,null])}function re(e,r,t){let[s,n]=(0,d.useReducer)(I,{loading:!0,data:{},checksum:0});if(e){let o=(0,d.useMemo)(()=>(0,O.generateSubscriptionId)(typeof e=="string"?[e,r]:e),[r,e]),b=typeof e=="string",a=t||(b?"default":r),f=C(a),B=typeof a=="string"?a:L(a);if(f){let l=B+o;(0,d.useEffect)(()=>{m(l,!0,!1),n({error:null,loading:!0,data:{}});let[,g]=(0,O.addSubscriber)(f.client,b?r:e,(c,G)=>{m(l,!1,!1),n({data:c,checksum:G})},c=>{c&&(console.error(c),m(l,!1,c),n({error:c,loading:!1}))},c=>{console.error(c),m(l,!1,c),n({error:c})},o,typeof e=="string"?e:void 0);return()=>{m(l,!1,!1),(0,O.removeSubscriber)(f.client,o,g)}},[o,B])}else(0,d.useEffect)(j,[null,null])}else(0,d.useMemo)(j,[r,e]),C(t),(0,d.useEffect)(j,[null,null]);return s}function he(e,r){let[t,s]=(0,d.useReducer)(I,{loading:!0,data:{},checksum:0}),n,o,a=C(r||"default");return a&&e?(0,d.useEffect)(()=>(s({error:null,loading:!0,data:{}}),(0,O.addSubscriber)(a.client,e,(f,B)=>{s({data:f,checksum:B})},(f,B,l,g,c)=>{n=B,o=l,(f||c)&&(console.error(f),s({error:f,loading:!1}))},f=>{console.error(f),s({error:f})},void 0,"analytics"),()=>{(0,O.removeSubscriber)(a.client,n,o)}),[]):(0,d.useEffect)(j,[]),t}function j(){}0&&(module.exports={BasedContext,Provider,defaultCreateClient,updateMeta,useAnalytics,useAuth,useBasedContext,useClient,useClients,useData,useError,useLoading,useQuery,useSchema,useTrack});
1
+ var me=Object.create;var F=Object.defineProperty,ge=Object.defineProperties,pe=Object.getOwnPropertyDescriptor,be=Object.getOwnPropertyDescriptors,ke=Object.getOwnPropertyNames,P=Object.getOwnPropertySymbols,ye=Object.getPrototypeOf,Z=Object.prototype.hasOwnProperty,se=Object.prototype.propertyIsEnumerable;var ne=(e,t,r)=>t in e?F(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Q=(e,t)=>{for(var r in t||(t={}))Z.call(t,r)&&ne(e,r,t[r]);if(P)for(var r of P(t))se.call(t,r)&&ne(e,r,t[r]);return e},oe=(e,t)=>ge(e,be(t));var ie=(e,t)=>{var r={};for(var n in e)Z.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&P)for(var n of P(e))t.indexOf(n)<0&&se.call(e,n)&&(r[n]=e[n]);return r};var he=(e,t)=>{for(var r in t)F(e,r,{get:t[r],enumerable:!0})},ae=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of ke(t))!Z.call(e,s)&&s!==r&&F(e,s,{get:()=>t[s],enumerable:!(n=pe(t,s))||n.enumerable});return e};var z=(e,t,r)=>(r=e!=null?me(ye(e)):{},ae(t||!e||!e.__esModule?F(r,"default",{value:e,enumerable:!0}):r,e)),Ce=e=>ae(F({},"__esModule",{value:!0}),e);var $e={};he($e,{BasedContext:()=>W,InfiniteList:()=>de,Provider:()=>xe,defaultCreateClient:()=>ce,updateMeta:()=>C,useAnalytics:()=>Re,useAuth:()=>ve,useBasedContext:()=>ue,useClient:()=>B,useClients:()=>Be,useData:()=>Y,useError:()=>Ee,useLoading:()=>Le,useQuery:()=>Ie,useSchema:()=>De,useTrack:()=>Te});module.exports=Ce($e);var g=require("react"),v=require("@based/client");function N(e,t){return t.error&&(e.error=t.error),t.data&&(e.checksum=t.checksum||0,e.data=t.data,e.loading=!1,e.error&&delete e.error),t.merge&&(e.checksum=t.checksum||0,e.data?Object.assign(e.data,t.merge):e.data=t.merge,e.loading=!1,e.error&&delete e.error),t.loading&&(e.loading=t.loading),Q({},e)}var $=e=>{if(!!e)return e.key?e.key:`${e.env}_${e.project}_${e.org}_${e.cluster||""}_${e.name||""}`};var E=z(require("react")),V=z(require("@based/client"));var K=new Set,W=(0,E.createContext)({clients:{},removeClient:(...e)=>{}}),ce=e=>{if(typeof e=="object")return typeof process!="undefined"&&process.env.CLUSTER&&process.env.CLUSTER.startsWith("local")&&!e.cluster&&(e.cluster=process.env.CLUSTER),(0,V.default)(e);console.error("Cannot create client from "+e)},xe=({client:e,children:t,clients:r,createClient:n})=>(!r&&e?r={default:e}:r&&e&&(r.default=e),E.default.createElement(W.Provider,{value:{clients:r,createClient:n||ce,removeClient:o=>{if(o instanceof V.Based){for(let m in r)if(r[m]===o){o=m;break}if(typeof o!="string"){console.error("Cannot find client to remove from ctx",o);return}}else typeof o!="string"&&(o=$(o));r[o]&&(r[o].disconnect(),delete r[o],K.forEach(m=>m()))}}},t)),ue=()=>(0,E.useContext)(W);function Oe(e){return e+1}var Be=()=>{let e=ue(),[,t]=(0,E.useReducer)(Oe,0);return(0,E.useEffect)(()=>{let r,n=()=>{r=setTimeout(t,0)};return K.add(n),()=>{K.delete(n),clearTimeout(r)}},[]),Object.values(e.clients)},B=(e="default")=>{let t=(0,E.useContext)(W);if(typeof e=="object"&&!(e.env&&e.project&&e.org))return;let r;typeof e=="string"?r=e:r=e.key||$(e);let n=t.clients[r];return!n&&t.createClient&&(n=t.createClient(e),n&&(t.clients[r]=n,K.forEach(s=>s()))),n};var A=require("react"),j={},te=new Set,ee=new Set,re=new Set,G=!1,J="",H=0,q=H+J;function C(e,t,r){r?(J=r,e in j?j[e]=r:(j[e]=r,H++)):e in j&&(H--,delete j[e]);let n=H+J;n!==q&&(q=n,te.forEach(o=>o(q))),t?ee.add(e):ee.delete(e);let s=!!ee.size;s!==G&&(G=s,re.forEach(o=>o(G)))}function Le(){let[,e]=(0,A.useState)(G);return re.add(e),(0,A.useEffect)(()=>()=>{re.delete(e)},[]),{loading:G}}function Ee(){let[,e]=(0,A.useState)(q);return te.add(e),(0,A.useEffect)(()=>()=>{te.delete(e)},[]),{error:H?J:null,errors:Object.values(j)}}var l=require("react"),x=require("@based/client");var X=require("@saulx/hash"),le=(0,x.generateSubscriptionId)({$subscribe_schema:"default"});function Ie(e,t={},r){let[n,s]=(0,l.useReducer)(N,{loading:!0,data:{},checksum:0}),o=(0,l.useRef)({checksum:0,fns:{}}),m=r||"default",a=B(m);if(e){let[p,y]=(0,l.useState)(0);if((0,l.useEffect)(()=>{let[,c]=(0,x.addSubscriber)(a.client,{$subscribe_schema:"default"},(u,f)=>{a.client.configuration||(a.client.configuration={dbs:[],schema:{},functions:{}}),a.client.configuration.schema.default=u,y(f)},u=>{u&&console.error(u)},u=>{console.error(u)},le);return()=>{(0,x.removeSubscriber)(a.client,le,c)}},[]),p){let c;typeof e=="string"?c=a.gql(e):c=e,c=(0,x.handleGraphqlVariables)(c,c,t);let u={},f={};for(let h in c.ops){if(c.ops[h].fnObserve){let{name:i,payload:d}=c.ops[h].fnObserve;u[h]={name:i,payload:d,key:h};continue}f[h]=c.ops[h].get}let w=(0,l.useMemo)(()=>(0,X.hashObjectIgnoreKeyOrder)(u),[u]),D=(0,l.useMemo)(()=>(0,x.generateSubscriptionId)(f),[f]),_=typeof m=="string"?m:$(m);if(a){let h=_+D;(0,l.useEffect)(()=>{let i=[];for(let d in u)i.push((0,x.addSubscriber)(a.client,u[d].payload,(b,k)=>{C(h,!1,!1),o.current.fns[d]!==k&&(o.current.fns[d]=k,s({merge:{[d]:b},checksum:(0,X.hashObjectIgnoreKeyOrder)(o.current)}))},b=>{b&&(console.error(b),s({error:b,loading:!1}))},b=>{console.error(b),C(h,!1,b),s({error:b})},void 0,u[d].name));return()=>{for(let[d,b]of i)(0,x.removeSubscriber)(a.client,d,b)}},[w]),(0,l.useEffect)(()=>{if(!p)return;C(h,!0,!1);let[,i]=(0,x.addSubscriber)(a.client,f,(d,b)=>{C(h,!1,!1),o.current.checksum!==b&&(o.current.checksum=b,s({merge:d,checksum:(0,X.hashObjectIgnoreKeyOrder)(o.current)}))},d=>{d&&(console.error(d),C(h,!1,d),s({error:d,loading:!1}))},d=>{console.error(d),C(h,!1,d),s({error:d})},D);return()=>{C(h,!1,!1),(0,x.removeSubscriber)(a.client,D,i)}},[D,_,p])}else(0,l.useEffect)(I,[null,null])}else(0,l.useMemo)(I,[null]),(0,l.useMemo)(I,[null]),(0,l.useEffect)(I,[null]),(0,l.useEffect)(I,[null,null,null])}else(0,l.useState)(null),(0,l.useEffect)(I,[null]),(0,l.useMemo)(I,[null]),(0,l.useMemo)(I,[null]),(0,l.useEffect)(I,[null]),(0,l.useEffect)(I,[null,null,null]);return n}function I(){}var M=require("@based/client"),L=z(require("react")),fe=require("react-window");var Se=(e,t,r,n,s,o)=>{let[,m]=(0,M.addSubscriber)(e.client,r,({items:a},p)=>{for(let y=0;y<a.length;y++)s.items[y+n]=a[y];o(`${n}-${p}`)},a=>a&&console.error(a),console.error,t);return m};function de(p){var y=p,{query:e,delay:t=100,itemSize:r=50,height:n=400,limit:s=Math.ceil(n/r),treshold:o=0,target:m="root"}=y,a=ie(y,["query","delay","itemSize","height","limit","treshold","target"]);let c=r*s,u=B(),[f,w]=(0,L.useState)(0),[D,_]=(0,L.useState)(()=>{let k=Math.ceil(n/c);return o&&(k+=Math.ceil((n/r+o-k*s)/s)),k}),[,h]=(0,L.useState)(),{current:i}=(0,L.useRef)({offset:f,blocks:D,scroll:0,items:[],timer:null,subs:{}}),{data:{itemCount:d}}=Y({itemCount:{$aggregate:Q({$function:"count"},e().$list.$find)}});if((0,L.useEffect)(()=>{if(u)return()=>{let{subs:k}=i;i.subs={},setTimeout(()=>{for(let R in k){let O=i.subs[R];(0,M.removeSubscriber)(u.client,Number(R),O)}})}},[u,i]),(0,L.useEffect)(()=>{if(u){let k={},R=D;for(;R--;){let O=f+s*R,S={$id:m,items:e(O,s)},T=(0,M.generateSubscriptionId)(S);k[T]=i.subs[T]||Se(u,T,S,O,i,h)}for(let O in i.subs)if(!(O in k)){let S=i.subs[O];(0,M.removeSubscriber)(u.client,Number(O),S)}i.subs=k}},[m,u,f,D,e,i]),(0,L.useEffect)(b,[c,t,n,r,i,s,o]),!d||!i.items.length)return null;return L.default.createElement(fe.FixedSizeList,oe(Q({},a),{height:n,itemSize:r,itemData:i.items,itemCount:d,onScroll:({scrollOffset:k})=>{i.scroll=k,b()}}));function b(){let k=Math.max(0,i.scroll/r-o),R=(i.scroll+n)/r,O=k-k%s,S=Math.ceil(n/c+i.scroll%c/c);if(o){let T=O+s*S;S+=Math.max(0,Math.ceil((R+o-T)/s))}if(O!==i.offset||S!==i.blocks){i.offset=O,i.blocks=S;let T=()=>{w(i.offset),_(i.blocks)};i.timer?clearTimeout(i.timer):T(),i.timer=setTimeout(()=>{i.timer=null,T()},t)}else i.timer&&(clearTimeout(i.timer),i.timer=setTimeout(()=>{i.timer=null,w(i.offset),_(i.blocks)},t))}}function ve(e){let t=B(e),[r,n]=(0,g.useState)(!1),[s,o]=(0,g.useState)("");return(0,g.useEffect)(()=>{let m=()=>{o(t.client.user),n(t.getToken())};return t.on("auth",m),()=>{t.removeListener("auth",m)}},[]),r?{token:r,id:s}:!1}function De(e="default",t){let r=Y(e?{$subscribe_schema:e}:null,t);return{loading:r.loading,error:r.error,schema:r.data}}function Te(e,t,r){if(e){let s=B(r||"default"),o=(0,g.useMemo)(()=>(0,v.generateSubscriptionId)(t,e),[e,t]);(0,g.useEffect)(()=>(s.track(e,t),()=>{s.untrack(e,t)}),[o])}else B(r),(0,g.useMemo)(()=>{},[]),(0,g.useEffect)(U,[null,null])}function Y(e,t,r){let[n,s]=(0,g.useReducer)(N,{loading:!0,data:{},checksum:0});if(e){let o=(0,g.useMemo)(()=>(0,v.generateSubscriptionId)(typeof e=="string"?[e,t]:e),[t,e]),m=typeof e=="string",a=r||(m?"default":t),p=B(a),y=typeof a=="string"?a:$(a);if(p){let c=y+o;(0,g.useEffect)(()=>{C(c,!0,!1),s({error:null,loading:!0,data:{}});let[,u]=(0,v.addSubscriber)(p.client,m?t:e,(f,w)=>{C(c,!1,!1),s({data:f,checksum:w})},f=>{f&&(console.error(f),C(c,!1,f),s({error:f,loading:!1}))},f=>{console.error(f),C(c,!1,f),s({error:f})},o,typeof e=="string"?e:void 0);return()=>{C(c,!1,!1),(0,v.removeSubscriber)(p.client,o,u)}},[o,y])}else(0,g.useEffect)(U,[null,null])}else(0,g.useMemo)(U,[t,e]),B(r),(0,g.useEffect)(U,[null,null]);return n}function Re(e,t){let[r,n]=(0,g.useReducer)(N,{loading:!0,data:{},checksum:0}),s,o,a=B(t||"default");return a&&e?(0,g.useEffect)(()=>(n({error:null,loading:!0,data:{}}),(0,v.addSubscriber)(a.client,e,(p,y)=>{n({data:p,checksum:y})},(p,y,c,u,f)=>{s=y,o=c,(p||f)&&(console.error(p),n({error:p,loading:!1}))},p=>{console.error(p),n({error:p})},void 0,"analytics"),()=>{(0,v.removeSubscriber)(a.client,s,o)}),[]):(0,g.useEffect)(U,[]),r}function U(){}0&&(module.exports={BasedContext,InfiniteList,Provider,defaultCreateClient,updateMeta,useAnalytics,useAuth,useBasedContext,useClient,useClients,useData,useError,useLoading,useQuery,useSchema,useTrack});
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iCAAgE;AAEhE,0CASsB;AAEtB,uCAAyC;AAIzC,2CAAuC;AAEvC,uCAAqC;AAErC,iCAAmC;AAEnC,yCAAsB;AACtB,4CAAyB;AACzB,wCAAqB;AAErB,SAAgB,OAAO,CACrB,cAAwD;IAExD,MAAM,MAAM,GAAG,IAAA,mBAAS,EAAC,cAAc,CAAC,CAAA;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAiB,KAAK,CAAC,CAAA;IACzD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC3C,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACpB,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAClC,CAAC,CAAA;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IACN,OAAO,KAAK,CAAA;AACd,CAAC;AAbD,0BAaC;AAED,SAAgB,SAAS,CACvB,OAA8B,SAAS,EACvC,cAAwD;IAMxD,MAAM,CAAC,GAAG,OAAO,CACf,IAAI;QACF,CAAC,CAAC;YACE,iBAAiB,EAAE,IAAI;SACxB;QACH,CAAC,CAAC,IAAI,EACR,cAAc,CACf,CAAA;IAED,OAAO;QACL,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,MAAM,EAAE,CAAC,CAAC,IAAI;KACf,CAAA;AACH,CAAC;AAtBD,8BAsBC;AAED,SAAgB,QAAQ,CACtB,IAAY,EACZ,MAAqD,EACrD,cAAwD;IAExD,IAAI,IAAI,EAAE;QACR,MAAM,QAAQ,GAAG,cAAc,IAAI,SAAS,CAAA;QAC5C,MAAM,MAAM,GAAG,IAAA,mBAAS,EAAC,QAAQ,CAAC,CAAA;QAClC,MAAM,EAAE,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;YACtB,OAAO,IAAA,+BAAsB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC7C,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QAClB,IAAA,iBAAS,EAAC,GAAG,EAAE;YACb,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YAC1B,OAAO,GAAG,EAAE;gBACV,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YAC9B,CAAC,CAAA;QACH,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;KACT;SAAM;QACL,IAAA,mBAAS,EAAC,cAAc,CAAC,CAAA;QACzB,IAAA,eAAO,EAAC,GAAG,EAAE,GAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACrB,IAAA,iBAAS,EAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;KAChC;AACH,CAAC;AAtBD,4BAsBC;AAuCD,SAAgB,OAAO,CACrB,CAAkB,EAClB,OAAa,EACb,cAAwD;IAMxD,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAA,kBAAU,EAAC,uBAAa,EAAE;QACnD,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,CAAC;KACZ,CAAC,CAAA;IAEF,IAAI,CAAC,EAAE;QACL,MAAM,KAAK,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;YACzB,OAAO,IAAA,+BAAsB,EAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACzE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;QAEhB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAA;QAErC,MAAM,QAAQ,GAAG,cAAc,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAEnE,MAAM,MAAM,GAAG,IAAA,mBAAS,EAAC,QAAQ,CAAC,CAAA;QAElC,MAAM,SAAS,GACb,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,qBAAS,EAAC,QAAQ,CAAC,CAAA;QAE/D,IAAI,MAAM,EAAE;YACV,MAAM,MAAM,GAAG,SAAS,GAAG,KAAK,CAAA;YAEhC,IAAA,iBAAS,EAAC,GAAG,EAAE;gBACb,IAAA,iBAAU,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;gBAC/B,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;gBAClD,MAAM,CAAC,EAAE,YAAY,CAAC,GAAG,IAAA,sBAAa,EACpC,MAAM,CAAC,MAAM,EACb,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACrB,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE;oBACd,IAAA,iBAAU,EAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;oBAChC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;gBACjC,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;oBACN,IAAI,GAAG,EAAE;wBACP,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;wBAClB,IAAA,iBAAU,EAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;wBAC9B,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;qBACzC;gBACH,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;oBACN,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAClB,IAAA,iBAAU,EAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;oBAC9B,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;gBAC1B,CAAC,EACD,KAAK,EACL,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CACtC,CAAA;gBACD,OAAO,GAAG,EAAE;oBACV,IAAA,iBAAU,EAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;oBAChC,IAAA,yBAAgB,EAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;gBACtD,CAAC,CAAA;YACH,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAA;SACvB;aAAM;YACL,IAAA,iBAAS,EAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;SAChC;KACF;SAAM;QACL,IAAA,eAAO,EAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;QAC7B,IAAA,mBAAS,EAAC,cAAc,CAAC,CAAA;QACzB,IAAA,iBAAS,EAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;KAChC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAxED,0BAwEC;AAED,SAAgB,YAAY,CAC1B,MAAkE,EAClE,cAAwD;IAExD,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAA,kBAAU,EAAC,uBAAa,EAAE;QACnD,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,CAAC;KACZ,CAAC,CAAA;IAEF,IAAI,KAAK,EAAE,YAAY,CAAA;IAEvB,MAAM,QAAQ,GAAG,cAAc,IAAI,SAAS,CAAA;IAC5C,MAAM,MAAM,GAAG,IAAA,mBAAS,EAAC,QAAQ,CAAC,CAAA;IAElC,IAAI,MAAM,IAAI,MAAM,EAAE;QACpB,IAAA,iBAAS,EAAC,GAAG,EAAE;YACb,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;YAClD,IAAA,sBAAa,EACX,MAAM,CAAC,MAAM,EACb,MAAM;YACN,UAAU;YACV,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE;gBACd,sCAAsC;gBACtC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;YACjC,CAAC;YACD,aAAa;YACb,CAAC,GAAG,EAAE,cAAc,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;gBAC7D,KAAK,GAAG,cAAc,CAAA;gBACtB,YAAY,GAAG,iBAAiB,CAAA;gBAChC,IAAI,GAAG,IAAI,WAAW,EAAE;oBACtB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAClB,iCAAiC;oBACjC,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;iBACzC;YACH,CAAC;YACD,WAAW;YACX,CAAC,GAAG,EAAE,EAAE;gBACN,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAClB,iCAAiC;gBACjC,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;YAC1B,CAAC,EACD,SAAS,EACT,WAAW,CACZ,CAAA;YACD,OAAO,GAAG,EAAE;gBACV,IAAA,yBAAgB,EAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;YACtD,CAAC,CAAA;QACH,CAAC,EAAE,EAAE,CAAC,CAAA;KACP;SAAM;QACL,IAAA,iBAAS,EAAC,MAAM,EAAE,EAAE,CAAC,CAAA;KACtB;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAtDD,oCAsDC;AAED,SAAS,MAAM,KAAI,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@based/react",
3
- "version": "2.5.2",
3
+ "version": "3.0.0",
4
4
  "license": "MIT",
5
5
  "source": "src/index.tsx",
6
6
  "main": "dist/index.js",
@@ -12,17 +12,19 @@
12
12
  },
13
13
  "sideEffects": false,
14
14
  "peerDependencies": {
15
- "react": "17||18||16",
16
- "@based/client": "^2.3.3"
15
+ "@based/client": "^3.0.0",
16
+ "react": "17||18||16"
17
17
  },
18
18
  "dependencies": {
19
- "@saulx/hash": "^1.1.0"
19
+ "@saulx/hash": "^1.1.0",
20
+ "react-window": "^1.8.7"
20
21
  },
21
22
  "devDependencies": {
23
+ "@based/client": "^3.0.0",
22
24
  "@types/react": "^17.0.14",
23
25
  "esbuild": "^0.14.29",
26
+ "rimraf": "^3.0.2",
24
27
  "ts-node": "^10.1.0",
25
- "typescript": "^4.3.5",
26
- "rimraf": "^3.0.2"
28
+ "typescript": "^4.3.5"
27
29
  }
28
30
  }
package/src/clients.ts CHANGED
@@ -34,6 +34,7 @@ export const BasedContext = createContext<BasedContextType>({
34
34
  export const defaultCreateClient: CreateClient = (selector) => {
35
35
  if (typeof selector === 'object') {
36
36
  if (
37
+ typeof process !== 'undefined' &&
37
38
  process.env.CLUSTER &&
38
39
  process.env.CLUSTER.startsWith('local') &&
39
40
  !selector.cluster
@@ -0,0 +1,182 @@
1
+ import {
2
+ addSubscriber,
3
+ removeSubscriber,
4
+ generateSubscriptionId,
5
+ } from '@based/client'
6
+ import React, { useRef, useState, useEffect } from 'react'
7
+ import { FixedSizeList as List } from 'react-window'
8
+ import { useData, useClient } from '../..'
9
+
10
+ const addScrollSub = (client, subId, payload, offset, current, setChecksum) => {
11
+ const [, subscriberId] = addSubscriber(
12
+ client.client,
13
+ payload,
14
+ ({ items }, checksum) => {
15
+ for (let i = 0; i < items.length; i++) {
16
+ current.items[i + offset] = items[i]
17
+ }
18
+ setChecksum(`${offset}-${checksum}`)
19
+ },
20
+ (err) => err && console.error(err),
21
+ console.error,
22
+ subId
23
+ )
24
+ return subscriberId
25
+ }
26
+
27
+ export function InfiniteList({
28
+ query,
29
+ delay = 100,
30
+ itemSize = 50,
31
+ height = 400,
32
+ limit = Math.ceil(height / itemSize),
33
+ treshold = 0,
34
+ target = 'root',
35
+ ...props
36
+ }) {
37
+ const blockHeight = itemSize * limit
38
+ const client = useClient()
39
+ const [offset, setOffset] = useState(0)
40
+ const [blocks, setBlocks] = useState(() => {
41
+ let blocks = Math.ceil(height / blockHeight)
42
+ if (treshold) {
43
+ blocks += Math.ceil(
44
+ (height / itemSize + treshold - blocks * limit) / limit
45
+ )
46
+ }
47
+ return blocks
48
+ })
49
+
50
+ const [, setChecksum] = useState()
51
+ const { current } = useRef({
52
+ offset,
53
+ blocks,
54
+ scroll: 0,
55
+ items: [],
56
+ timer: null,
57
+ subs: {},
58
+ })
59
+ const {
60
+ data: { itemCount },
61
+ } = useData({
62
+ itemCount: {
63
+ $aggregate: {
64
+ $function: 'count',
65
+ ...query().$list.$find,
66
+ },
67
+ },
68
+ })
69
+
70
+ useEffect(() => {
71
+ if (client) {
72
+ return () => {
73
+ const { subs } = current
74
+ current.subs = {}
75
+ setTimeout(() => {
76
+ for (const subId in subs) {
77
+ const subscriberId = current.subs[subId]
78
+ removeSubscriber(client.client, Number(subId), subscriberId)
79
+ }
80
+ })
81
+ }
82
+ }
83
+ }, [client, current])
84
+
85
+ useEffect(() => {
86
+ if (client) {
87
+ const subs = {}
88
+ let i = blocks
89
+
90
+ while (i--) {
91
+ const start = offset + limit * i
92
+ const payload = {
93
+ $id: target,
94
+ items: query(start, limit),
95
+ }
96
+ const subId = generateSubscriptionId(payload)
97
+ subs[subId] =
98
+ current.subs[subId] ||
99
+ addScrollSub(client, subId, payload, start, current, setChecksum)
100
+ }
101
+
102
+ for (const subId in current.subs) {
103
+ if (!(subId in subs)) {
104
+ const subscriberId = current.subs[subId]
105
+ removeSubscriber(client.client, Number(subId), subscriberId)
106
+ }
107
+ }
108
+
109
+ current.subs = subs
110
+ }
111
+ }, [target, client, offset, blocks, query, current]) // dont include limit
112
+
113
+ useEffect(update, [
114
+ blockHeight,
115
+ delay,
116
+ height,
117
+ itemSize,
118
+ current,
119
+ limit,
120
+ treshold,
121
+ ])
122
+
123
+ if (!itemCount || !current.items.length) {
124
+ return null
125
+ }
126
+
127
+ return (
128
+ <List
129
+ {...props}
130
+ height={height}
131
+ itemSize={itemSize}
132
+ itemData={current.items}
133
+ itemCount={itemCount}
134
+ onScroll={({ scrollOffset }) => {
135
+ current.scroll = scrollOffset
136
+ update()
137
+ }}
138
+ />
139
+ )
140
+
141
+ function update() {
142
+ const start = Math.max(0, current.scroll / itemSize - treshold)
143
+ const end = (current.scroll + height) / itemSize
144
+ const newOffset = start - (start % limit)
145
+ let newBlocks = Math.ceil(
146
+ height / blockHeight + (current.scroll % blockHeight) / blockHeight
147
+ )
148
+
149
+ if (treshold) {
150
+ const newLength = newOffset + limit * newBlocks
151
+ newBlocks += Math.max(0, Math.ceil((end + treshold - newLength) / limit))
152
+ }
153
+
154
+ if (newOffset !== current.offset || newBlocks !== current.blocks) {
155
+ current.offset = newOffset
156
+ current.blocks = newBlocks
157
+
158
+ const set = () => {
159
+ setOffset(current.offset)
160
+ setBlocks(current.blocks)
161
+ }
162
+
163
+ if (current.timer) {
164
+ clearTimeout(current.timer)
165
+ } else {
166
+ set()
167
+ }
168
+
169
+ current.timer = setTimeout(() => {
170
+ current.timer = null
171
+ set()
172
+ }, delay)
173
+ } else if (current.timer) {
174
+ clearTimeout(current.timer)
175
+ current.timer = setTimeout(() => {
176
+ current.timer = null
177
+ setOffset(current.offset)
178
+ setBlocks(current.blocks)
179
+ }, delay)
180
+ }
181
+ }
182
+ }
package/src/index.ts CHANGED
@@ -25,19 +25,25 @@ export * from './meta'
25
25
  export * from './clients'
26
26
  export * from './gql'
27
27
 
28
+ export { InfiniteList } from './components/InfiniteList'
29
+
28
30
  export function useAuth(
29
31
  clientSelector?: string | (BasedOpts & { key?: string })
30
- ): string | false {
32
+ ): { id: string | false; token: string } | false {
31
33
  const client = useClient(clientSelector)
32
34
  const [token, setToken] = useState<false | string>(false)
35
+ const [id, setId] = useState<false | string>('')
33
36
  useEffect(() => {
34
- const t = () => setToken(client.getToken())
37
+ const t = () => {
38
+ setId(client.client.user)
39
+ setToken(client.getToken())
40
+ }
35
41
  client.on('auth', t)
36
42
  return () => {
37
43
  client.removeListener('auth', t)
38
44
  }
39
45
  }, [])
40
- return token
46
+ return token ? { token, id } : false
41
47
  }
42
48
 
43
49
  export function useSchema(