@based/react 4.4.0 → 4.5.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.
@@ -1,4 +1,12 @@
1
1
  import { BasedError } from '@based/client';
2
+ export declare const useQueries: <T = any>(name?: string, payloads?: any[], opts?: {
3
+ persistent: boolean;
4
+ }) => {
5
+ loading: boolean;
6
+ data?: T;
7
+ error?: BasedError;
8
+ checksum?: string;
9
+ }[];
2
10
  export declare const useQuery: <T = any>(name?: string, payload?: any, opts?: {
3
11
  persistent: boolean;
4
12
  }) => {
package/dist/useQuery.js CHANGED
@@ -1,9 +1,57 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useQuery = void 0;
3
+ exports.useQuery = exports.useQueries = void 0;
4
4
  const react_1 = require("react");
5
5
  const Ctx_1 = require("./Ctx");
6
6
  const useLoading_1 = require("./useLoading");
7
+ const useQueries = (name, payloads, opts) => {
8
+ // TODO add error handling
9
+ const client = (0, react_1.useContext)(Ctx_1.Ctx);
10
+ let key = '';
11
+ let sum = '';
12
+ if (client && name) {
13
+ const queries = Array(payloads.length);
14
+ const result = payloads.map((payload, i) => {
15
+ const q = client.query(name, payload, opts);
16
+ const { id, cache } = q;
17
+ queries[i] = q;
18
+ key += id;
19
+ if (cache) {
20
+ sum += cache.checksum;
21
+ return { loading: false, data: cache.value, checksum: cache.checksum };
22
+ }
23
+ return { loading: true };
24
+ });
25
+ const [, update] = (0, react_1.useState)(sum);
26
+ (0, react_1.useEffect)(() => {
27
+ let raf;
28
+ const listener = () => {
29
+ if (!raf) {
30
+ raf = requestAnimationFrame(() => {
31
+ raf = null;
32
+ update(queries.reduce((sum, { cache }) => {
33
+ return cache ? sum + cache.checksum : sum;
34
+ }, ''));
35
+ });
36
+ }
37
+ };
38
+ const unsubs = queries.map((q) => {
39
+ return q.subscribe(listener);
40
+ });
41
+ return () => {
42
+ unsubs.forEach((unsubscribe) => unsubscribe());
43
+ if (raf) {
44
+ cancelAnimationFrame(raf);
45
+ }
46
+ };
47
+ }, [key]);
48
+ return result;
49
+ }
50
+ (0, react_1.useState)(sum);
51
+ (0, react_1.useEffect)(() => { }, [key]);
52
+ return Array(payloads.length).fill({ loading: true });
53
+ };
54
+ exports.useQueries = useQueries;
7
55
  const useQuery = (name, payload, opts) => {
8
56
  const client = (0, react_1.useContext)(Ctx_1.Ctx);
9
57
  if (client && name) {
@@ -1 +1 @@
1
- {"version":3,"file":"useQuery.js","sourceRoot":"","sources":["../src/useQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useQuery.js","sourceRoot":"","sources":["../src/useQuery.ts"],"names":[],"mappings":"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"}
package/dist/useWindow.js CHANGED
@@ -18,6 +18,7 @@ const useWindow = (name, getPayload, opts, dependencies) => {
18
18
  // complete reset
19
19
  const resetHash = (0, hash_1.hash)(dependencies);
20
20
  if (currResetHash.current !== resetHash) {
21
+ currResetHash.current = resetHash;
21
22
  currModifyHash.current = null;
22
23
  cache.current = null;
23
24
  }
@@ -86,19 +87,20 @@ const useWindow = (name, getPayload, opts, dependencies) => {
86
87
  return cache.current;
87
88
  }
88
89
  let l = queries.current.length;
90
+ cache.current.items = [];
89
91
  cache.current.loading = false;
90
92
  cache.current.checksum = checksum;
91
93
  while (l--) {
92
- const q = queries.current[l];
93
- const m = size * l + size;
94
94
  let i = size * l;
95
+ const q = queries.current[l];
96
+ const m = i + size;
95
97
  if (q) {
96
98
  if (q.cache) {
97
99
  let data = q.cache.value;
100
+ for (const i of path) {
101
+ data = data?.[i];
102
+ }
98
103
  if (data) {
99
- for (const i of path) {
100
- data = data[i];
101
- }
102
104
  for (let j = 0; i < m; i++) {
103
105
  const item = data[j++];
104
106
  if (!item)
@@ -111,12 +113,12 @@ const useWindow = (name, getPayload, opts, dependencies) => {
111
113
  cache.current.loading = true;
112
114
  }
113
115
  }
114
- // fill up empty items with null
115
- for (; i < m; i++) {
116
- if (!(i in cache.current.items)) {
117
- cache.current.items[i] = null;
118
- }
119
- }
116
+ // // fill up empty items with null
117
+ // for (; i < m; i++) {
118
+ // if (!(i in cache.current.items)) {
119
+ // cache.current.items[i] = null
120
+ // }
121
+ // }
120
122
  }
121
123
  }
122
124
  return cache.current;
@@ -1 +1 @@
1
- {"version":3,"file":"useWindow.js","sourceRoot":"","sources":["../src/useWindow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useWindow.js","sourceRoot":"","sources":["../src/useWindow.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@based/react",
3
- "version": "4.4.0",
3
+ "version": "4.5.0",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
package/src/useQuery.ts CHANGED
@@ -3,6 +3,77 @@ import { BasedClient, BasedError } from '@based/client'
3
3
  import { Ctx } from './Ctx'
4
4
  import { hooksLoading, useLoadingListeners } from './useLoading'
5
5
 
6
+ export const useQueries = <T = any>(
7
+ name?: string,
8
+ payloads?: any[],
9
+ opts?: {
10
+ persistent: boolean
11
+ }
12
+ ): {
13
+ loading: boolean
14
+ data?: T
15
+ error?: BasedError
16
+ checksum?: string
17
+ }[] => {
18
+ // TODO add error handling
19
+ const client: BasedClient = useContext(Ctx)
20
+ let key = ''
21
+ let sum = ''
22
+
23
+ if (client && name) {
24
+ const queries = Array(payloads.length)
25
+ const result = payloads.map((payload, i) => {
26
+ const q = client.query(name, payload, opts)
27
+ const { id, cache } = q
28
+ queries[i] = q
29
+ key += id
30
+
31
+ if (cache) {
32
+ sum += cache.checksum
33
+ return { loading: false, data: cache.value, checksum: cache.checksum }
34
+ }
35
+
36
+ return { loading: true }
37
+ })
38
+
39
+ const [, update] = useState(sum)
40
+
41
+ useEffect(() => {
42
+ let raf
43
+ const listener = () => {
44
+ if (!raf) {
45
+ raf = requestAnimationFrame(() => {
46
+ raf = null
47
+ update(
48
+ queries.reduce((sum, { cache }) => {
49
+ return cache ? sum + cache.checksum : sum
50
+ }, '')
51
+ )
52
+ })
53
+ }
54
+ }
55
+
56
+ const unsubs = queries.map((q) => {
57
+ return q.subscribe(listener)
58
+ })
59
+
60
+ return () => {
61
+ unsubs.forEach((unsubscribe) => unsubscribe())
62
+ if (raf) {
63
+ cancelAnimationFrame(raf)
64
+ }
65
+ }
66
+ }, [key])
67
+
68
+ return result
69
+ }
70
+
71
+ useState(sum)
72
+ useEffect(() => {}, [key])
73
+
74
+ return Array(payloads.length).fill({ loading: true })
75
+ }
76
+
6
77
  export const useQuery = <T = any>(
7
78
  name?: string,
8
79
  payload?: any,
package/src/useWindow.ts CHANGED
@@ -34,6 +34,7 @@ export const useWindow = (
34
34
  // complete reset
35
35
  const resetHash = hash(dependencies)
36
36
  if (currResetHash.current !== resetHash) {
37
+ currResetHash.current = resetHash
37
38
  currModifyHash.current = null
38
39
  cache.current = null
39
40
  }
@@ -110,21 +111,22 @@ export const useWindow = (
110
111
  }
111
112
 
112
113
  let l = queries.current.length
114
+ cache.current.items = []
113
115
  cache.current.loading = false
114
116
  cache.current.checksum = checksum
115
117
 
116
118
  while (l--) {
117
- const q = queries.current[l]
118
- const m = size * l + size
119
119
  let i = size * l
120
+ const q = queries.current[l]
121
+ const m = i + size
120
122
 
121
123
  if (q) {
122
124
  if (q.cache) {
123
125
  let data = q.cache.value
126
+ for (const i of path) {
127
+ data = data?.[i]
128
+ }
124
129
  if (data) {
125
- for (const i of path) {
126
- data = data[i]
127
- }
128
130
  for (let j = 0; i < m; i++) {
129
131
  const item = data[j++]
130
132
  if (!item) break
@@ -136,12 +138,12 @@ export const useWindow = (
136
138
  }
137
139
  }
138
140
 
139
- // fill up empty items with null
140
- for (; i < m; i++) {
141
- if (!(i in cache.current.items)) {
142
- cache.current.items[i] = null
143
- }
144
- }
141
+ // // fill up empty items with null
142
+ // for (; i < m; i++) {
143
+ // if (!(i in cache.current.items)) {
144
+ // cache.current.items[i] = null
145
+ // }
146
+ // }
145
147
  }
146
148
  }
147
149