on-zero 0.4.36 → 0.4.37
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/dist/cjs/combineZeroClients.native.js.map +1 -1
- package/dist/cjs/createUseQuery.cjs +1 -96
- package/dist/cjs/createUseQuery.native.js +1 -132
- package/dist/cjs/createUseQuery.native.js.map +1 -1
- package/dist/cjs/createUseQueryDirect.cjs +228 -0
- package/dist/cjs/createUseQueryDirect.native.js +334 -0
- package/dist/cjs/createUseQueryDirect.native.js.map +1 -0
- package/dist/cjs/createZeroClient.cjs +18 -7
- package/dist/cjs/createZeroClient.native.js +18 -7
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/helpers/recoverZeroClient.test.native.js.map +1 -1
- package/dist/cjs/index.cjs +2 -2
- package/dist/cjs/index.native.js +2 -2
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/multi.cjs +38 -0
- package/dist/cjs/multi.native.js +41 -0
- package/dist/cjs/multi.native.js.map +1 -0
- package/dist/cjs/multiInstanceNested.test.cjs +92 -12
- package/dist/cjs/multiInstanceNested.test.native.js +108 -12
- package/dist/cjs/multiInstanceNested.test.native.js.map +1 -1
- package/dist/cjs/testSetup.cjs +26 -0
- package/dist/cjs/testSetup.native.js +32 -0
- package/dist/cjs/testSetup.native.js.map +1 -0
- package/dist/esm/combineZeroClients.mjs.map +1 -1
- package/dist/esm/combineZeroClients.native.js.map +1 -1
- package/dist/esm/createUseQuery.mjs +2 -97
- package/dist/esm/createUseQuery.mjs.map +1 -1
- package/dist/esm/createUseQuery.native.js +2 -133
- package/dist/esm/createUseQuery.native.js.map +1 -1
- package/dist/esm/createUseQueryDirect.mjs +203 -0
- package/dist/esm/createUseQueryDirect.mjs.map +1 -0
- package/dist/esm/createUseQueryDirect.native.js +306 -0
- package/dist/esm/createUseQueryDirect.native.js.map +1 -0
- package/dist/esm/createZeroClient.mjs +18 -8
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +18 -8
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.test.mjs.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.test.native.js.map +1 -1
- package/dist/esm/index.js +2 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +2 -3
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -3
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/multi.mjs +12 -0
- package/dist/esm/multi.mjs.map +1 -0
- package/dist/esm/multi.native.js +12 -0
- package/dist/esm/multi.native.js.map +1 -0
- package/dist/esm/multiInstanceNested.test.mjs +85 -5
- package/dist/esm/multiInstanceNested.test.mjs.map +1 -1
- package/dist/esm/multiInstanceNested.test.native.js +101 -5
- package/dist/esm/multiInstanceNested.test.native.js.map +1 -1
- package/dist/esm/testSetup.mjs +27 -0
- package/dist/esm/testSetup.mjs.map +1 -0
- package/dist/esm/testSetup.native.js +30 -0
- package/dist/esm/testSetup.native.js.map +1 -0
- package/package.json +8 -2
- package/readme.md +10 -8
- package/src/combineZeroClients.tsx +4 -6
- package/src/createUseQuery.tsx +2 -189
- package/src/createUseQueryDirect.tsx +307 -0
- package/src/createZeroClient.tsx +65 -32
- package/src/helpers/recoverZeroClient.test.ts +8 -2
- package/src/index.ts +6 -2
- package/src/multi.ts +24 -0
- package/src/multiInstanceNested.test.tsx +79 -4
- package/src/testSetup.ts +26 -0
- package/types/combineZeroClients.d.ts.map +1 -1
- package/types/createUseQuery.d.ts +4 -15
- package/types/createUseQuery.d.ts.map +1 -1
- package/types/createUseQueryDirect.d.ts +29 -0
- package/types/createUseQueryDirect.d.ts.map +1 -0
- package/types/createZeroClient.d.ts +51 -5
- package/types/createZeroClient.d.ts.map +1 -1
- package/types/index.d.ts +1 -2
- package/types/index.d.ts.map +1 -1
- package/types/multi.d.ts +6 -0
- package/types/multi.d.ts.map +1 -0
- package/types/multiInstanceNested.test.d.ts.map +1 -1
- package/types/testSetup.d.ts +1 -0
- package/types/testSetup.d.ts.map +1 -0
- package/vitest.config.ts +1 -0
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { useQuery as zeroUseQuery } from "@rocicorp/zero/react";
|
|
2
|
-
import {
|
|
3
|
-
import { useContext, useEffect, useMemo, useRef, useSyncExternalStore } from "react";
|
|
2
|
+
import { useContext, useMemo, useRef } from "react";
|
|
4
3
|
import { useZeroDebug } from "./helpers/useZeroDebug.mjs";
|
|
5
4
|
import { resolveQuery } from "./resolveQuery.mjs";
|
|
6
5
|
const EMPTY_RESPONSE = [null, {
|
|
@@ -54,99 +53,5 @@ function createUseQuery({
|
|
|
54
53
|
}
|
|
55
54
|
return useQuery;
|
|
56
55
|
}
|
|
57
|
-
|
|
58
|
-
const DISABLED_SNAPSHOT = [void 0, {
|
|
59
|
-
type: "unknown"
|
|
60
|
-
}];
|
|
61
|
-
const getDisabledSnapshot = () => DISABLED_SNAPSHOT;
|
|
62
|
-
function createDirectView(getZero, queryRequest, ttl) {
|
|
63
|
-
let snapshot = DISABLED_SNAPSHOT;
|
|
64
|
-
const listeners = /* @__PURE__ */new Set();
|
|
65
|
-
let view = null;
|
|
66
|
-
const materialize = () => {
|
|
67
|
-
const zero = getZero();
|
|
68
|
-
if (!zero) return;
|
|
69
|
-
const next = zero.materialize(queryRequest, ttl === void 0 ? void 0 : {
|
|
70
|
-
ttl
|
|
71
|
-
});
|
|
72
|
-
view = next;
|
|
73
|
-
next.addListener((data, resultType) => {
|
|
74
|
-
snapshot = [data === void 0 ? void 0 : structuredClone(data), {
|
|
75
|
-
type: resultType
|
|
76
|
-
}];
|
|
77
|
-
for (const listener of listeners) {
|
|
78
|
-
listener();
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
|
-
materialize();
|
|
83
|
-
return {
|
|
84
|
-
subscribe: notify => {
|
|
85
|
-
listeners.add(notify);
|
|
86
|
-
if (view === null) {
|
|
87
|
-
materialize();
|
|
88
|
-
}
|
|
89
|
-
return () => listeners.delete(notify);
|
|
90
|
-
},
|
|
91
|
-
getSnapshot: () => snapshot,
|
|
92
|
-
destroy: () => {
|
|
93
|
-
const current = view;
|
|
94
|
-
view = null;
|
|
95
|
-
if (!current) return;
|
|
96
|
-
try {
|
|
97
|
-
current.destroy();
|
|
98
|
-
} catch {}
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
function createUseQueryDirect({
|
|
103
|
-
DisabledContext,
|
|
104
|
-
customQueries,
|
|
105
|
-
getZero,
|
|
106
|
-
zeroVersion
|
|
107
|
-
}) {
|
|
108
|
-
function useQueryDirect(...args) {
|
|
109
|
-
const disableMode = useContext(DisabledContext);
|
|
110
|
-
const lastRef = useRef(EMPTY_RESPONSE);
|
|
111
|
-
const [fn, paramsOrOptions, optionsArg] = args;
|
|
112
|
-
const version = useEmitterValue(zeroVersion);
|
|
113
|
-
const {
|
|
114
|
-
params,
|
|
115
|
-
options
|
|
116
|
-
} = parseUseQueryArgs(paramsOrOptions, optionsArg);
|
|
117
|
-
let enabled = true;
|
|
118
|
-
let ttl;
|
|
119
|
-
if (typeof options === "boolean") {
|
|
120
|
-
enabled = options;
|
|
121
|
-
} else if (options) {
|
|
122
|
-
enabled = options.enabled !== false;
|
|
123
|
-
ttl = options.ttl;
|
|
124
|
-
}
|
|
125
|
-
const paramsKey = params === void 0 ? "" : JSON.stringify(params);
|
|
126
|
-
const view = useMemo(() => {
|
|
127
|
-
if (!enabled || !getZero()) return null;
|
|
128
|
-
const queryRequest = resolveQuery({
|
|
129
|
-
customQueries,
|
|
130
|
-
fn,
|
|
131
|
-
params
|
|
132
|
-
});
|
|
133
|
-
return createDirectView(getZero, queryRequest, ttl);
|
|
134
|
-
}, [fn, paramsKey, enabled, ttl, version]);
|
|
135
|
-
useEffect(() => {
|
|
136
|
-
if (!view) return;
|
|
137
|
-
return () => view.destroy();
|
|
138
|
-
}, [view]);
|
|
139
|
-
const out = useSyncExternalStore(view ? view.subscribe : DISABLED_SUBSCRIBE, view ? view.getSnapshot : getDisabledSnapshot, view ? view.getSnapshot : getDisabledSnapshot);
|
|
140
|
-
if (!disableMode) {
|
|
141
|
-
lastRef.current = out;
|
|
142
|
-
return out;
|
|
143
|
-
}
|
|
144
|
-
if (disableMode === "last-value") {
|
|
145
|
-
return lastRef.current;
|
|
146
|
-
}
|
|
147
|
-
return EMPTY_RESPONSE;
|
|
148
|
-
}
|
|
149
|
-
return useQueryDirect;
|
|
150
|
-
}
|
|
151
|
-
export { createUseQuery, createUseQueryDirect };
|
|
56
|
+
export { createUseQuery, parseUseQueryArgs };
|
|
152
57
|
//# sourceMappingURL=createUseQuery.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useQuery","zeroUseQuery","
|
|
1
|
+
{"version":3,"names":["useQuery","zeroUseQuery","useContext","useMemo","useRef","useZeroDebug","resolveQuery","EMPTY_RESPONSE","type","parseUseQueryArgs","paramsOrOptions","optionsArg","hasParams","params","options","createUseQuery","DisabledContext","customQueries","args","disableMode","lastRef","fn","queryRequest","opts","queryRequest2","out","process","env","NODE_ENV","DEBUG_ZERO_QUERIES","current"],"sources":["../../src/createUseQuery.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,IAAYC,YAAA,QAAoB;AACzC,SAASC,UAAA,EAAYC,OAAA,EAASC,MAAA,QAA4B;AAE1D,SAASC,YAAA,QAAoB;AAC7B,SAASC,YAAA,QAAuC;AAqChD,MAAMC,cAAA,GAAiB,CAAC,MAAM;EAAEC,IAAA,EAAM;AAAU,CAAC;AAG1C,SAASC,kBAAkBC,eAAA,EAAsBC,UAAA,EAAiB;EACvE,MAAMC,SAAA,GACJD,UAAA,KAAe,UACdD,eAAA,IACC,OAAOA,eAAA,KAAoB,YAC3B,EAAE,aAAaA,eAAA,KACf,EAAE,SAASA,eAAA;EAEf,OAAO;IACLG,MAAA,EAAQD,SAAA,GAAYF,eAAA,GAAkB;IACtCI,OAAA,EAASF,SAAA,GAAYD,UAAA,GAAaD;EACpC;AACF;AAEO,SAASK,eAA0C;EACxDC,eAAA;EACAC;AACF,GAGyB;EACvB,SAASjB,SAAA,GAAYkB,IAAA,EAAkB;IACrC,MAAMC,WAAA,GAAcjB,UAAA,CAAWc,eAAe;IAC9C,MAAMI,OAAA,GAAUhB,MAAA,CAAYG,cAAc;IAC1C,MAAM,CAACc,EAAA,EAAIX,eAAA,EAAiBC,UAAU,IAAIO,IAAA;IAE1C,MAAM;MAAEI,YAAA;MAAcR;IAAQ,IAAIX,OAAA,CAAQ,MAAM;MAC9C,MAAM;QAAEU,MAAA;QAAQC,OAAA,EAASS;MAAK,IAAId,iBAAA,CAAkBC,eAAA,EAAiBC,UAAU;MAC/E,MAAMa,aAAA,GAAelB,YAAA,CAAa;QAAEW,aAAA;QAAeI,EAAA;QAAIR;MAAO,CAAC;MAE/D,OAAO;QAAES,YAAA,EAAAE,aAAA;QAAcV,OAAA,EAASS;MAAK;IACvC,GAAG,CAACF,EAAA,EAAIX,eAAA,EAAiBC,UAAU,CAAC;IAEpC,MAAMc,GAAA,GAAMxB,YAAA,CAAaqB,YAAA,EAAcR,OAAO;IAE9C,IAAIY,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,eAAe;MAC1C,IAAIF,OAAA,CAAQC,GAAA,CAAIE,kBAAA,KAAuB,KAErCxB,YAAA,CAAaiB,YAAA,EAAcR,OAAA,EAASW,GAAG;IAC3C;IAEA,IAAI,CAACN,WAAA,EAAa;MAChBC,OAAA,CAAQU,OAAA,GAAUL,GAAA;MAClB,OAAOA,GAAA;IACT;IAEA,IAAIN,WAAA,KAAgB,cAAc;MAChC,OAAOC,OAAA,CAAQU,OAAA;IACjB;IAEA,OAAOvB,cAAA;EACT;EAEA,OAAOP,QAAA;AACT","ignoreList":[]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { useQuery as zeroUseQuery } from "@rocicorp/zero/react";
|
|
2
|
-
import {
|
|
3
|
-
import { useContext, useEffect, useMemo, useRef, useSyncExternalStore } from "react";
|
|
2
|
+
import { useContext, useMemo, useRef } from "react";
|
|
4
3
|
import { useZeroDebug } from "./helpers/useZeroDebug.native.js";
|
|
5
4
|
import { resolveQuery } from "./resolveQuery.native.js";
|
|
6
5
|
function _type_of(obj) {
|
|
@@ -63,135 +62,5 @@ function createUseQuery(param) {
|
|
|
63
62
|
}
|
|
64
63
|
return useQuery;
|
|
65
64
|
}
|
|
66
|
-
|
|
67
|
-
return function () {};
|
|
68
|
-
};
|
|
69
|
-
var DISABLED_SNAPSHOT = [void 0, {
|
|
70
|
-
type: "unknown"
|
|
71
|
-
}];
|
|
72
|
-
var getDisabledSnapshot = function () {
|
|
73
|
-
return DISABLED_SNAPSHOT;
|
|
74
|
-
};
|
|
75
|
-
function createDirectView(getZero, queryRequest, ttl) {
|
|
76
|
-
var snapshot = DISABLED_SNAPSHOT;
|
|
77
|
-
var listeners = /* @__PURE__ */new Set();
|
|
78
|
-
var view = null;
|
|
79
|
-
var materialize = function () {
|
|
80
|
-
var zero = getZero();
|
|
81
|
-
if (!zero) return;
|
|
82
|
-
var next = zero.materialize(queryRequest, ttl === void 0 ? void 0 : {
|
|
83
|
-
ttl
|
|
84
|
-
});
|
|
85
|
-
view = next;
|
|
86
|
-
next.addListener(function (data, resultType) {
|
|
87
|
-
snapshot = [data === void 0 ? void 0 : structuredClone(data), {
|
|
88
|
-
type: resultType
|
|
89
|
-
}];
|
|
90
|
-
var _iteratorNormalCompletion = true,
|
|
91
|
-
_didIteratorError = false,
|
|
92
|
-
_iteratorError = void 0;
|
|
93
|
-
try {
|
|
94
|
-
for (var _iterator = listeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
95
|
-
var listener = _step.value;
|
|
96
|
-
listener();
|
|
97
|
-
}
|
|
98
|
-
} catch (err) {
|
|
99
|
-
_didIteratorError = true;
|
|
100
|
-
_iteratorError = err;
|
|
101
|
-
} finally {
|
|
102
|
-
try {
|
|
103
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
104
|
-
_iterator.return();
|
|
105
|
-
}
|
|
106
|
-
} finally {
|
|
107
|
-
if (_didIteratorError) {
|
|
108
|
-
throw _iteratorError;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
};
|
|
114
|
-
materialize();
|
|
115
|
-
return {
|
|
116
|
-
subscribe: function (notify) {
|
|
117
|
-
listeners.add(notify);
|
|
118
|
-
if (view === null) {
|
|
119
|
-
materialize();
|
|
120
|
-
}
|
|
121
|
-
return function () {
|
|
122
|
-
return listeners.delete(notify);
|
|
123
|
-
};
|
|
124
|
-
},
|
|
125
|
-
getSnapshot: function () {
|
|
126
|
-
return snapshot;
|
|
127
|
-
},
|
|
128
|
-
destroy: function () {
|
|
129
|
-
var current = view;
|
|
130
|
-
view = null;
|
|
131
|
-
if (!current) return;
|
|
132
|
-
try {
|
|
133
|
-
current.destroy();
|
|
134
|
-
} catch (e) {}
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
function createUseQueryDirect(param) {
|
|
139
|
-
var {
|
|
140
|
-
DisabledContext,
|
|
141
|
-
customQueries,
|
|
142
|
-
getZero,
|
|
143
|
-
zeroVersion
|
|
144
|
-
} = param;
|
|
145
|
-
function useQueryDirect() {
|
|
146
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
147
|
-
args[_key] = arguments[_key];
|
|
148
|
-
}
|
|
149
|
-
var disableMode = useContext(DisabledContext);
|
|
150
|
-
var lastRef = useRef(EMPTY_RESPONSE);
|
|
151
|
-
var [fn, paramsOrOptions, optionsArg] = args;
|
|
152
|
-
var version = useEmitterValue(zeroVersion);
|
|
153
|
-
var {
|
|
154
|
-
params,
|
|
155
|
-
options
|
|
156
|
-
} = parseUseQueryArgs(paramsOrOptions, optionsArg);
|
|
157
|
-
var enabled = true;
|
|
158
|
-
var ttl;
|
|
159
|
-
if (typeof options === "boolean") {
|
|
160
|
-
enabled = options;
|
|
161
|
-
} else if (options) {
|
|
162
|
-
enabled = options.enabled !== false;
|
|
163
|
-
ttl = options.ttl;
|
|
164
|
-
}
|
|
165
|
-
var paramsKey = params === void 0 ? "" : JSON.stringify(params);
|
|
166
|
-
var view = useMemo(function () {
|
|
167
|
-
if (!enabled || !getZero()) return null;
|
|
168
|
-
var queryRequest = resolveQuery({
|
|
169
|
-
customQueries,
|
|
170
|
-
fn,
|
|
171
|
-
params
|
|
172
|
-
});
|
|
173
|
-
return createDirectView(getZero, queryRequest, ttl);
|
|
174
|
-
},
|
|
175
|
-
// params is keyed by paramsKey; version re-materializes on a new zero
|
|
176
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
177
|
-
[fn, paramsKey, enabled, ttl, version]);
|
|
178
|
-
useEffect(function () {
|
|
179
|
-
if (!view) return;
|
|
180
|
-
return function () {
|
|
181
|
-
return view.destroy();
|
|
182
|
-
};
|
|
183
|
-
}, [view]);
|
|
184
|
-
var out = useSyncExternalStore(view ? view.subscribe : DISABLED_SUBSCRIBE, view ? view.getSnapshot : getDisabledSnapshot, view ? view.getSnapshot : getDisabledSnapshot);
|
|
185
|
-
if (!disableMode) {
|
|
186
|
-
lastRef.current = out;
|
|
187
|
-
return out;
|
|
188
|
-
}
|
|
189
|
-
if (disableMode === "last-value") {
|
|
190
|
-
return lastRef.current;
|
|
191
|
-
}
|
|
192
|
-
return EMPTY_RESPONSE;
|
|
193
|
-
}
|
|
194
|
-
return useQueryDirect;
|
|
195
|
-
}
|
|
196
|
-
export { createUseQuery, createUseQueryDirect };
|
|
65
|
+
export { createUseQuery, parseUseQueryArgs };
|
|
197
66
|
//# sourceMappingURL=createUseQuery.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useQuery","zeroUseQuery","
|
|
1
|
+
{"version":3,"names":["useQuery","zeroUseQuery","useContext","useMemo","useRef","useZeroDebug","resolveQuery","_type_of","obj","Symbol","constructor","EMPTY_RESPONSE","type","parseUseQueryArgs","paramsOrOptions","optionsArg","hasParams","params","options","createUseQuery","param","DisabledContext","customQueries","_len","arguments","length","args","Array","_key","disableMode","lastRef","fn","queryRequest","opts","queryRequest2"],"sources":["../../src/createUseQuery.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,IAAYC,YAAA,QAAoB;AACzC,SAASC,UAAA,EAAYC,OAAA,EAASC,MAAA,QAA4B;AAE1D,SAASC,YAAA,QAAoB;AAC7B,SAASC,YAAA,QAAuC;AAqChD,SAAMC,SAAAC,GAAA,EAAiB;EAGhB,uBAAS;;EACd,OAAMA,GAAA,WACJC,MAAA,gBACC,IAAAD,GAAA,CAAAE,WACC,KAAAD,MAAO,qBAAoBD,GAAA;AAI/B;AAAO,IACLG,cAAQ,IAA8B,IACtC,EACF;EACFC,IAAA;AAEO,EAAmD;AACxD,SACAC,kBAAAC,eAAA,EAAAC,UAAA;EACF,IAGyBC,SAAA,GAAAD,UAAA,eAAAD,eAAA,YAAAA,eAAA,iCAAAP,QAAA,CAAAO,eAAA,kCAAAA,eAAA,gBAAAA,eAAA;EACvB;IACEG,MAAM,EAAAD,SAAA,GAAcF,eAAW;IAC/BI,OAAM,EAAAF,SAAU,GAAAD,UAAY,GAAAD;EAC5B;AAEA;AACE,SAAAK,cAAgBA,CAAAC,KAAA,EAAS;EACzB;IAAAC,eAAM;IAAAC;EAAe,IAAeF,KAAA;EAEpC,SAAApB,QAASA,CAAA;IACX,KAAI,IAAIuB,IAAA,GAAAC,SAAiB,CAAAC,MAAA,EAAAC,IAAW,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAEpCF,IAAM,CAAAE,IAAA,CAAM,GAAAJ,SAAA,CAAaI,IAAA;IAEzB;IACE,IAAAC,WAAY,GAAI3B,UAAA,CAAAmB,eAAuB;IAErC,IAAAS,OAAA,GAAA1B,MAAa,CAAAO,cAAc;IAC/B,KAAAoB,EAAA,EAAAjB,eAAA,EAAAC,UAAA,IAAAW,IAAA;IAEA,IAAI;MAACM,YAAa;MAAAd;IAAA,IAAAf,OAAA;MAChB;QAAAc,MAAQ;QAAAC,OAAU,EAAAe;MAAA,IAAApB,iBAAA,CAAAC,eAAA,EAAAC,UAAA;MAClB,IAAAmB,aAAO,GAAA5B,YAAA;QACTgB,aAAA;QAEIS,EAAA;QACFd;MACF;MAEA,OAAO;QACTe,YAAA,EAAAE,aAAA;QAEAhB,OAAO,EAAAe;MACT","ignoreList":[]}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { addContextToQuery, asQueryInternals, DEFAULT_TTL_MS, deepClone } from "@rocicorp/zero/bindings";
|
|
2
|
+
import { useEmitterValue } from "@take-out/helpers";
|
|
3
|
+
import { useContext, useMemo, useRef, useSyncExternalStore } from "react";
|
|
4
|
+
import { parseUseQueryArgs } from "./createUseQuery.mjs";
|
|
5
|
+
import { resolveQuery } from "./resolveQuery.mjs";
|
|
6
|
+
const EMPTY_RESPONSE = [null, {
|
|
7
|
+
type: "unknown"
|
|
8
|
+
}];
|
|
9
|
+
const DISABLED_SUBSCRIBE = () => () => {};
|
|
10
|
+
const DISABLED_SNAPSHOT = [void 0, {
|
|
11
|
+
type: "unknown"
|
|
12
|
+
}];
|
|
13
|
+
const getDisabledSnapshot = () => DISABLED_SNAPSHOT;
|
|
14
|
+
const emptyArray = [];
|
|
15
|
+
const resultTypeUnknown = {
|
|
16
|
+
type: "unknown"
|
|
17
|
+
};
|
|
18
|
+
const resultTypeComplete = {
|
|
19
|
+
type: "complete"
|
|
20
|
+
};
|
|
21
|
+
const resultTypeError = {
|
|
22
|
+
type: "error"
|
|
23
|
+
};
|
|
24
|
+
const emptySnapshotSingularUnknown = [void 0, resultTypeUnknown];
|
|
25
|
+
const emptySnapshotSingularComplete = [void 0, resultTypeComplete];
|
|
26
|
+
const emptySnapshotSingularError = [void 0, resultTypeError];
|
|
27
|
+
const emptySnapshotPluralUnknown = [emptyArray, resultTypeUnknown];
|
|
28
|
+
const emptySnapshotPluralComplete = [emptyArray, resultTypeComplete];
|
|
29
|
+
const emptySnapshotPluralError = [emptyArray, resultTypeError];
|
|
30
|
+
function getDefaultSnapshot(singular) {
|
|
31
|
+
return singular ? emptySnapshotSingularUnknown : emptySnapshotPluralUnknown;
|
|
32
|
+
}
|
|
33
|
+
function makeError(retry, error) {
|
|
34
|
+
const message = error?.message ?? "An unknown error occurred";
|
|
35
|
+
return {
|
|
36
|
+
type: "error",
|
|
37
|
+
retry,
|
|
38
|
+
refetch: retry,
|
|
39
|
+
error: {
|
|
40
|
+
type: error?.error ?? "app",
|
|
41
|
+
message,
|
|
42
|
+
...(error?.details ? {
|
|
43
|
+
details: error.details
|
|
44
|
+
} : {})
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function getSnapshot(singular, data, resultType, retry, error) {
|
|
49
|
+
if (singular && data === void 0) {
|
|
50
|
+
if (resultType === "complete") return emptySnapshotSingularComplete;
|
|
51
|
+
if (resultType === "error") return error ? [void 0, makeError(retry, error)] : emptySnapshotSingularError;
|
|
52
|
+
return emptySnapshotSingularUnknown;
|
|
53
|
+
}
|
|
54
|
+
if (!singular && Array.isArray(data) && data.length === 0) {
|
|
55
|
+
if (resultType === "complete") return emptySnapshotPluralComplete;
|
|
56
|
+
if (resultType === "error") return error ? [emptyArray, makeError(retry, error)] : emptySnapshotPluralError;
|
|
57
|
+
return emptySnapshotPluralUnknown;
|
|
58
|
+
}
|
|
59
|
+
if (resultType === "complete") return [data, resultTypeComplete];
|
|
60
|
+
if (resultType === "error") return [data, makeError(retry, error)];
|
|
61
|
+
return [data, resultTypeUnknown];
|
|
62
|
+
}
|
|
63
|
+
class DirectViewWrapper {
|
|
64
|
+
constructor(query, zero, ttl, singular, onDematerialized) {
|
|
65
|
+
this.query = query;
|
|
66
|
+
this.zero = zero;
|
|
67
|
+
this.ttl = ttl;
|
|
68
|
+
this.singular = singular;
|
|
69
|
+
this.onDematerialized = onDematerialized;
|
|
70
|
+
this.snapshot = getDefaultSnapshot(singular);
|
|
71
|
+
this.materializeIfNeeded();
|
|
72
|
+
}
|
|
73
|
+
view;
|
|
74
|
+
snapshot;
|
|
75
|
+
listeners = /* @__PURE__ */new Set();
|
|
76
|
+
destroyTimer;
|
|
77
|
+
onData = (data, resultType, error) => {
|
|
78
|
+
const cloned = data === void 0 ? void 0 : deepClone(data);
|
|
79
|
+
this.snapshot = getSnapshot(this.singular, cloned, resultType, this.retry, error);
|
|
80
|
+
for (const listener of this.listeners) {
|
|
81
|
+
listener();
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
retry = () => {
|
|
85
|
+
this.destroyView();
|
|
86
|
+
this.materializeIfNeeded();
|
|
87
|
+
};
|
|
88
|
+
materializeIfNeeded() {
|
|
89
|
+
if (this.view) return;
|
|
90
|
+
this.view = this.zero.materialize(this.query, {
|
|
91
|
+
ttl: this.ttl
|
|
92
|
+
});
|
|
93
|
+
this.view.addListener(this.onData);
|
|
94
|
+
}
|
|
95
|
+
destroyView() {
|
|
96
|
+
const current = this.view;
|
|
97
|
+
this.view = void 0;
|
|
98
|
+
if (!current) return;
|
|
99
|
+
try {
|
|
100
|
+
current.destroy();
|
|
101
|
+
} catch {}
|
|
102
|
+
}
|
|
103
|
+
updateTTL(ttl) {
|
|
104
|
+
this.ttl = ttl;
|
|
105
|
+
this.view?.updateTTL(ttl);
|
|
106
|
+
}
|
|
107
|
+
subscribe = notify => {
|
|
108
|
+
this.listeners.add(notify);
|
|
109
|
+
if (this.destroyTimer !== void 0) {
|
|
110
|
+
clearTimeout(this.destroyTimer);
|
|
111
|
+
this.destroyTimer = void 0;
|
|
112
|
+
}
|
|
113
|
+
this.materializeIfNeeded();
|
|
114
|
+
return () => {
|
|
115
|
+
this.listeners.delete(notify);
|
|
116
|
+
if (this.listeners.size === 0) {
|
|
117
|
+
this.destroyTimer = setTimeout(() => {
|
|
118
|
+
this.destroyTimer = void 0;
|
|
119
|
+
if (this.listeners.size > 0) return;
|
|
120
|
+
this.destroyView();
|
|
121
|
+
this.onDematerialized(this);
|
|
122
|
+
}, 10);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
getSnapshot = () => this.snapshot;
|
|
127
|
+
}
|
|
128
|
+
class DirectViewStore {
|
|
129
|
+
views = /* @__PURE__ */new Map();
|
|
130
|
+
getView(zero, queryRequest, enabled, ttl) {
|
|
131
|
+
const query = addContextToQuery(queryRequest, zero.context);
|
|
132
|
+
const queryInternals = asQueryInternals(query);
|
|
133
|
+
if (!enabled) {
|
|
134
|
+
const snapshot = getDefaultSnapshot(queryInternals.format.singular);
|
|
135
|
+
return {
|
|
136
|
+
subscribe: DISABLED_SUBSCRIBE,
|
|
137
|
+
getSnapshot: () => snapshot
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
const hash = `${zero.clientID}:${queryInternals.hash()}`;
|
|
141
|
+
let view = this.views.get(hash);
|
|
142
|
+
if (!view) {
|
|
143
|
+
view = new DirectViewWrapper(query, zero, ttl, queryInternals.format.singular, dematerialized => {
|
|
144
|
+
if (this.views.get(hash) === dematerialized) {
|
|
145
|
+
this.views.delete(hash);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
this.views.set(hash, view);
|
|
149
|
+
} else {
|
|
150
|
+
view.updateTTL(ttl);
|
|
151
|
+
}
|
|
152
|
+
return view;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function createUseQueryDirect({
|
|
156
|
+
DisabledContext,
|
|
157
|
+
customQueries,
|
|
158
|
+
getZero,
|
|
159
|
+
zeroVersion
|
|
160
|
+
}) {
|
|
161
|
+
const directViewStore = new DirectViewStore();
|
|
162
|
+
function useQueryDirect(...args) {
|
|
163
|
+
const disableMode = useContext(DisabledContext);
|
|
164
|
+
const lastRef = useRef(EMPTY_RESPONSE);
|
|
165
|
+
const [fn, paramsOrOptions, optionsArg] = args;
|
|
166
|
+
const version = useEmitterValue(zeroVersion);
|
|
167
|
+
const {
|
|
168
|
+
params,
|
|
169
|
+
options
|
|
170
|
+
} = parseUseQueryArgs(paramsOrOptions, optionsArg);
|
|
171
|
+
let enabled = true;
|
|
172
|
+
let ttl = DEFAULT_TTL_MS;
|
|
173
|
+
if (typeof options === "boolean") {
|
|
174
|
+
enabled = options;
|
|
175
|
+
} else if (options) {
|
|
176
|
+
enabled = options.enabled !== false;
|
|
177
|
+
ttl = options.ttl ?? DEFAULT_TTL_MS;
|
|
178
|
+
}
|
|
179
|
+
const paramsKey = params === void 0 ? "" : JSON.stringify(params);
|
|
180
|
+
const view = useMemo(() => {
|
|
181
|
+
const zero = getZero();
|
|
182
|
+
if (!zero) return null;
|
|
183
|
+
const queryRequest = resolveQuery({
|
|
184
|
+
customQueries,
|
|
185
|
+
fn,
|
|
186
|
+
params
|
|
187
|
+
});
|
|
188
|
+
return directViewStore.getView(zero, queryRequest, enabled, ttl);
|
|
189
|
+
}, [fn, paramsKey, enabled, ttl, version]);
|
|
190
|
+
const out = useSyncExternalStore(view ? view.subscribe : DISABLED_SUBSCRIBE, view ? view.getSnapshot : getDisabledSnapshot, view ? view.getSnapshot : getDisabledSnapshot);
|
|
191
|
+
if (!disableMode) {
|
|
192
|
+
lastRef.current = out;
|
|
193
|
+
return out;
|
|
194
|
+
}
|
|
195
|
+
if (disableMode === "last-value") {
|
|
196
|
+
return lastRef.current;
|
|
197
|
+
}
|
|
198
|
+
return EMPTY_RESPONSE;
|
|
199
|
+
}
|
|
200
|
+
return useQueryDirect;
|
|
201
|
+
}
|
|
202
|
+
export { createUseQueryDirect };
|
|
203
|
+
//# sourceMappingURL=createUseQueryDirect.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["addContextToQuery","asQueryInternals","DEFAULT_TTL_MS","deepClone","useEmitterValue","useContext","useMemo","useRef","useSyncExternalStore","parseUseQueryArgs","resolveQuery","EMPTY_RESPONSE","type","DISABLED_SUBSCRIBE","DISABLED_SNAPSHOT","getDisabledSnapshot","emptyArray","resultTypeUnknown","resultTypeComplete","resultTypeError","emptySnapshotSingularUnknown","emptySnapshotSingularComplete","emptySnapshotSingularError","emptySnapshotPluralUnknown","emptySnapshotPluralComplete","emptySnapshotPluralError","getDefaultSnapshot","singular","makeError","retry","error","message","refetch","details","getSnapshot","data","resultType","Array","isArray","length","DirectViewWrapper","constructor","query","zero","ttl","onDematerialized","snapshot","materializeIfNeeded","view","listeners","Set","destroyTimer","onData","cloned","listener","destroyView","materialize","addListener","current","destroy","updateTTL","subscribe","notify","add","clearTimeout","delete","size","setTimeout","DirectViewStore","views","Map","getView","queryRequest","enabled","context","queryInternals","format","hash","clientID","get","dematerialized","set","createUseQueryDirect","DisabledContext","customQueries","getZero","zeroVersion","directViewStore","useQueryDirect","args","disableMode","lastRef","fn","paramsOrOptions","optionsArg","version","params","options","paramsKey","JSON","stringify","out"],"sources":["../../src/createUseQueryDirect.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|