on-zero 0.4.39 → 0.4.41

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,5 @@
1
1
  import { useQuery as zeroUseQuery } from "@rocicorp/zero/react";
2
+ import { addContextToQuery, asQueryInternals } from "@rocicorp/zero/bindings";
2
3
  import { useContext, useMemo, useRef } from "react";
3
4
  import { useZeroDebug } from "./helpers/useZeroDebug.native.js";
4
5
  import { resolveQuery } from "./resolveQuery.native.js";
@@ -7,9 +8,21 @@ function _type_of(obj) {
7
8
 
8
9
  return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
9
10
  }
10
- var EMPTY_RESPONSE = [null, {
11
+ var EMPTY_PLURAL = Object.freeze([]);
12
+ var RESULT_UNKNOWN = Object.freeze({
11
13
  type: "unknown"
12
- }];
14
+ });
15
+ var EMPTY_RESPONSE_PLURAL = Object.freeze([EMPTY_PLURAL, RESULT_UNKNOWN]);
16
+ var EMPTY_RESPONSE_SINGULAR = Object.freeze([void 0, RESULT_UNKNOWN]);
17
+ function emptyResponseFor(queryRequest) {
18
+ try {
19
+ var query = addContextToQuery(queryRequest, {});
20
+ var internals = asQueryInternals(query);
21
+ return internals.format.singular ? EMPTY_RESPONSE_SINGULAR : EMPTY_RESPONSE_PLURAL;
22
+ } catch (e) {
23
+ return EMPTY_RESPONSE_PLURAL;
24
+ }
25
+ }
13
26
  function parseUseQueryArgs(paramsOrOptions, optionsArg) {
14
27
  var hasParams = optionsArg !== void 0 || paramsOrOptions && (typeof paramsOrOptions === "undefined" ? "undefined" : _type_of(paramsOrOptions)) === "object" && !("enabled" in paramsOrOptions) && !("ttl" in paramsOrOptions);
15
28
  return {
@@ -24,7 +37,7 @@ function createUseQuery(param) {
24
37
  } = param;
25
38
  if (typeof window === "undefined") {
26
39
  return function () {
27
- return EMPTY_RESPONSE;
40
+ return EMPTY_RESPONSE_PLURAL;
28
41
  };
29
42
  }
30
43
  function useQuery() {
@@ -32,7 +45,7 @@ function createUseQuery(param) {
32
45
  args[_key] = arguments[_key];
33
46
  }
34
47
  var disableMode = useContext(DisabledContext);
35
- var lastRef = useRef(EMPTY_RESPONSE);
48
+ var lastRef = useRef(EMPTY_RESPONSE_PLURAL);
36
49
  var [fn, paramsOrOptions, optionsArg] = args;
37
50
  var {
38
51
  queryRequest,
@@ -65,11 +78,14 @@ function createUseQuery(param) {
65
78
  return out;
66
79
  }
67
80
  if (disableMode === "last-value") {
81
+ if (lastRef.current === EMPTY_RESPONSE_PLURAL) {
82
+ return emptyResponseFor(queryRequest);
83
+ }
68
84
  return lastRef.current;
69
85
  }
70
- return EMPTY_RESPONSE;
86
+ return emptyResponseFor(queryRequest);
71
87
  }
72
88
  return useQuery;
73
89
  }
74
- export { createUseQuery, parseUseQueryArgs };
90
+ export { createUseQuery, emptyResponseFor, parseUseQueryArgs };
75
91
  //# sourceMappingURL=createUseQuery.native.js.map
@@ -1 +1 @@
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","window","_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;EAOvB,OAAI;IACFG,MAAA,EAAQD,SAAM,GAAAF,eAAA;IAChBI,OAAA,EAAAF,SAAA,GAAAD,UAAA,GAAAD;EAEA;AACE;AACA,SAAAK,cAAgBA,CAAAC,KAAY;EAC5B;IAAAC,eAAW;IAAAC;EAAiB,IAAUF,KAAI;EAE1C,WAAQG,MAAA,gBAAsB;IAC5B,mBAAgB;MAChB,OAAMZ,cAAA;IAEN;EAAqC;EASvC,SAAMX,SAAA;IAKN,SAAMwB,IAAM,GAAAC,SAAa,CAAAC,MAAA,EAAAC,IAAA,GAAc,IAAAC,KAAA,CAAAJ,IAAgB,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAEvDF,IAAI,CAAAE,IAAA,CAAQ,GAAAJ,SAAI,CAAAI,IAAa;IAC3B;IAEE,IAAAC,WAAA,GAAa5B,UAAA,CAAAmB,eAA0B;IAC3C,IAAAU,OAAA,GAAA3B,MAAA,CAAAO,cAAA;IAEA,IAAI,CAACqB,EAAA,EAAAlB,eAAa,EAAAC,UAAA,IAAAY,IAAA;IAChB;MAAAM,YAAQ;MAAUf;IAAA,IAAAf,OAAA;MAClB;QAAAc,MAAO;QAAAC,OAAA,EAAAgB;MAAA,IAAArB,iBAAA,CAAAC,eAAA,EAAAC,UAAA;MACT,IAAAoB,aAAA,GAAA7B,YAAA;QAEIgB,aAAA;QACFU,EAAA;QACFf;MAEA;MACF;QAEAgB,YAAO,EAAAE,aAAA;QACTjB,OAAA,EAAAgB","ignoreList":[]}
1
+ {"version":3,"names":["useQuery","zeroUseQuery","addContextToQuery","asQueryInternals","useContext","useMemo","useRef","useZeroDebug","resolveQuery","_type_of","obj","Symbol","constructor","EMPTY_PLURAL","Object","freeze","RESULT_UNKNOWN","type","EMPTY_RESPONSE_PLURAL","EMPTY_RESPONSE_SINGULAR","emptyResponseFor","queryRequest","query","internals","format","singular","e","parseUseQueryArgs","paramsOrOptions","optionsArg","hasParams","params","options","createUseQuery","param","DisabledContext","customQueries","window","_len","arguments","length","args","Array","_key","disableMode","lastRef","fn","opts","queryRequest2"],"sources":["../../src/createUseQuery.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,IAAYC,YAAA,QAAoB;AACzC,SAASC,iBAAA,EAAmBC,gBAAA,QAAwB;AACpD,SAASC,UAAA,EAAYC,OAAA,EAASC,MAAA,QAA4B;AAE1D,SAASC,YAAA,QAAoB;AAC7B,SAASC,YAAA,QAAuC;AAyChD,SAAMC,SAAAC,GAAe;EACrB,uBAAuB;;EACvB,OAAMA,GAAA,WAAAC,MAAA,KAAwB,WAAe,IAAAD,GAAA,CAAAE,WAAc,KAAAD,MAAe,qBAAAD,GAAA;AAC1E;AAQO,IAAAG,YAAS,GAAAC,MAAA,CAAiBC,MAAA;AAC/B,IAAAC,cAAI,GAAAF,MAAA,CAAAC,MAAA;EACFE,IAAA;AACA;AACA,IAAAC,qBAAiB,GAAOJ,MAAA,CAAAC,MAAW,EACrCF,YAAQ,EAGNG,cAAO,EACT;AACF,IAAAG,uBAAA,GAAAL,MAAA,CAAAC,MAAA,EAGO,QACLC,cAAM,CAON;AAAO,SACLI,gBAAoBA,CAAAC,YAAA;EAAkB,IACtC;IACF,IAAAC,KAAA,GAAApB,iBAAA,CAAAmB,YAAA;IACF,IAAAE,SAAA,GAAApB,gBAAA,CAAAmB,KAAA;IAEO,OAASC,SAAA,CAAAC,MAA0C,CAAAC,QAAA,GAAAN,uBAAA,GAAAD,qBAAA;EACxD,SAAAQ,CAAA;IACA,OAAAR,qBAAA;EACF;AAaE;AACE,SAAAS,iBAAcA,CAAAC,eAAA,EAAAC,UAAA;EAChB,IAAAC,SAAA,GAAAD,UAAA,eAAAD,eAAA,YAAAA,eAAA,iCAAAnB,QAAA,CAAAmB,eAAA,kCAAAA,eAAA,gBAAAA,eAAA;EAEA;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,WAAOG,MAAE;IACX,OAAI,YAAI;MAQR,OAAMnB,qBAAmB;IAKzB;EAEA;EACE,SAAIlB,QAAQA,CAAA,EAAI;IAEd,SAAAsC,IAAA,GAAAC,SAAa,CAAAC,MAAc,EAAAC,IAAA,GAAS,IAAGC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAC3CF,IAAA,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;IAEA;IACE,IAAAC,WAAQ,GAAAxC,UAAU,CAAA+B,eAAA;IAClB,IAAAU,OAAO,GAAAvC,MAAA,CAAAY,qBAAA;IACT,KAAA4B,EAAA,EAAAlB,eAAA,EAAAC,UAAA,IAAAY,IAAA;IAEA,IAAI;MAAApB,YAAA;MAAgBW;IAAA,IAAA3B,OAAc;MAIhC,IAAI;QAAA0B,MAAQ;QAAAC,OAAA,EAAAe;MAAY,IAAApB,iBAAuB,CAAAC,eAAA,EAAAC,UAAA;MAC7C,IAAAmB,aAAO,GAAAxC,YAAiB;QAC1B4B,aAAA;QACAU,EAAA;QACFf;MAEA;MACF;QAEAV,YAAO,EAAA2B,aAAA;QACThB,OAAA,EAAAe","ignoreList":[]}
@@ -1,16 +1,9 @@
1
1
  import { addContextToQuery, asQueryInternals, DEFAULT_TTL_MS, deepClone } from "@rocicorp/zero/bindings";
2
2
  import { useEmitterValue } from "@take-out/helpers";
3
3
  import { useContext, useMemo, useRef, useSyncExternalStore } from "react";
4
- import { parseUseQueryArgs } from "./createUseQuery.mjs";
4
+ import { emptyResponseFor, parseUseQueryArgs } from "./createUseQuery.mjs";
5
5
  import { resolveQuery } from "./resolveQuery.mjs";
6
- const EMPTY_RESPONSE = [null, {
7
- type: "unknown"
8
- }];
9
6
  const DISABLED_SUBSCRIBE = () => () => {};
10
- const DISABLED_SNAPSHOT = [void 0, {
11
- type: "unknown"
12
- }];
13
- const getDisabledSnapshot = () => DISABLED_SNAPSHOT;
14
7
  const emptyArray = [];
15
8
  const resultTypeUnknown = {
16
9
  type: "unknown"
@@ -159,12 +152,11 @@ function createUseQueryDirect({
159
152
  zeroVersion
160
153
  }) {
161
154
  if (typeof window === "undefined") {
162
- return () => EMPTY_RESPONSE;
155
+ return _fn => emptyResponseFor(void 0);
163
156
  }
164
157
  const directViewStore = new DirectViewStore();
165
158
  function useQueryDirect(...args) {
166
159
  const disableMode = useContext(DisabledContext);
167
- const lastRef = useRef(EMPTY_RESPONSE);
168
160
  const [fn, paramsOrOptions, optionsArg] = args;
169
161
  const version = useEmitterValue(zeroVersion);
170
162
  const {
@@ -180,17 +172,23 @@ function createUseQueryDirect({
180
172
  ttl = options.ttl ?? DEFAULT_TTL_MS;
181
173
  }
182
174
  const paramsKey = params === void 0 ? "" : JSON.stringify(params);
175
+ const queryRequest = useMemo(() => resolveQuery({
176
+ customQueries,
177
+ fn,
178
+ params
179
+ }),
180
+ // params is keyed by paramsKey
181
+ // eslint-disable-next-line react-hooks/exhaustive-deps
182
+ [fn, paramsKey]);
183
+ const emptyForQuery = useMemo(() => emptyResponseFor(queryRequest), [queryRequest]);
184
+ const lastRef = useRef(emptyForQuery);
183
185
  const view = useMemo(() => {
184
186
  const zero = getZero();
185
187
  if (!zero) return null;
186
- const queryRequest = resolveQuery({
187
- customQueries,
188
- fn,
189
- params
190
- });
191
188
  return directViewStore.getView(zero, queryRequest, enabled, ttl);
192
- }, [fn, paramsKey, enabled, ttl, version]);
193
- const out = useSyncExternalStore(view ? view.subscribe : DISABLED_SUBSCRIBE, view ? view.getSnapshot : getDisabledSnapshot, view ? view.getSnapshot : getDisabledSnapshot);
189
+ }, [queryRequest, enabled, ttl, version]);
190
+ const getEmpty = () => emptyForQuery;
191
+ const out = useSyncExternalStore(view ? view.subscribe : DISABLED_SUBSCRIBE, view ? view.getSnapshot : getEmpty, view ? view.getSnapshot : getEmpty);
194
192
  if (!disableMode) {
195
193
  lastRef.current = out;
196
194
  return out;
@@ -198,7 +196,7 @@ function createUseQueryDirect({
198
196
  if (disableMode === "last-value") {
199
197
  return lastRef.current;
200
198
  }
201
- return EMPTY_RESPONSE;
199
+ return emptyForQuery;
202
200
  }
203
201
  return useQueryDirect;
204
202
  }
@@ -1 +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","window","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":[]}
1
+ {"version":3,"names":["addContextToQuery","asQueryInternals","DEFAULT_TTL_MS","deepClone","useEmitterValue","useContext","useMemo","useRef","useSyncExternalStore","emptyResponseFor","parseUseQueryArgs","resolveQuery","DISABLED_SUBSCRIBE","emptyArray","resultTypeUnknown","type","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","window","_fn","directViewStore","useQueryDirect","args","disableMode","fn","paramsOrOptions","optionsArg","version","params","options","paramsKey","JSON","stringify","emptyForQuery","lastRef","getEmpty","out"],"sources":["../../src/createUseQueryDirect.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import { addContextToQuery, asQueryInternals, DEFAULT_TTL_MS, deepClone } from "@rocicorp/zero/bindings";
2
2
  import { useEmitterValue } from "@take-out/helpers";
3
3
  import { useContext, useMemo, useRef, useSyncExternalStore } from "react";
4
- import { parseUseQueryArgs } from "./createUseQuery.native.js";
4
+ import { emptyResponseFor, parseUseQueryArgs } from "./createUseQuery.native.js";
5
5
  import { resolveQuery } from "./resolveQuery.native.js";
6
6
  function _class_call_check(instance, Constructor) {
7
7
  if (!(instance instanceof Constructor)) {
@@ -35,18 +35,9 @@ function _define_property(obj, key, value) {
35
35
  }
36
36
  return obj;
37
37
  }
38
- var EMPTY_RESPONSE = [null, {
39
- type: "unknown"
40
- }];
41
38
  var DISABLED_SUBSCRIBE = function () {
42
39
  return function () {};
43
40
  };
44
- var DISABLED_SNAPSHOT = [void 0, {
45
- type: "unknown"
46
- }];
47
- var getDisabledSnapshot = function () {
48
- return DISABLED_SNAPSHOT;
49
- };
50
41
  var emptyArray = [];
51
42
  var resultTypeUnknown = {
52
43
  type: "unknown"
@@ -255,8 +246,8 @@ function createUseQueryDirect(param) {
255
246
  zeroVersion
256
247
  } = param;
257
248
  if (typeof window === "undefined") {
258
- return function () {
259
- return EMPTY_RESPONSE;
249
+ return function (_fn) {
250
+ return emptyResponseFor(void 0);
260
251
  };
261
252
  }
262
253
  var directViewStore = new DirectViewStore();
@@ -265,7 +256,6 @@ function createUseQueryDirect(param) {
265
256
  args[_key] = arguments[_key];
266
257
  }
267
258
  var disableMode = useContext(DisabledContext);
268
- var lastRef = useRef(EMPTY_RESPONSE);
269
259
  var [fn, paramsOrOptions, optionsArg] = args;
270
260
  var version = useEmitterValue(zeroVersion);
271
261
  var {
@@ -282,20 +272,32 @@ function createUseQueryDirect(param) {
282
272
  ttl = (_options_ttl = options.ttl) !== null && _options_ttl !== void 0 ? _options_ttl : DEFAULT_TTL_MS;
283
273
  }
284
274
  var paramsKey = params === void 0 ? "" : JSON.stringify(params);
285
- var view = useMemo(function () {
286
- var zero = getZero();
287
- if (!zero) return null;
288
- var queryRequest = resolveQuery({
275
+ var queryRequest = useMemo(function () {
276
+ return resolveQuery({
289
277
  customQueries,
290
278
  fn,
291
279
  params
292
280
  });
281
+ },
282
+ // params is keyed by paramsKey
283
+ // eslint-disable-next-line react-hooks/exhaustive-deps
284
+ [fn, paramsKey]);
285
+ var emptyForQuery = useMemo(function () {
286
+ return emptyResponseFor(queryRequest);
287
+ }, [queryRequest]);
288
+ var lastRef = useRef(emptyForQuery);
289
+ var view = useMemo(function () {
290
+ var zero = getZero();
291
+ if (!zero) return null;
293
292
  return directViewStore.getView(zero, queryRequest, enabled, ttl);
294
293
  },
295
- // params is keyed by paramsKey; version re-materializes on a new zero
294
+ // version re-materializes on a new zero
296
295
  // eslint-disable-next-line react-hooks/exhaustive-deps
297
- [fn, paramsKey, enabled, ttl, version]);
298
- var out = useSyncExternalStore(view ? view.subscribe : DISABLED_SUBSCRIBE, view ? view.getSnapshot : getDisabledSnapshot, view ? view.getSnapshot : getDisabledSnapshot);
296
+ [queryRequest, enabled, ttl, version]);
297
+ var getEmpty = function () {
298
+ return emptyForQuery;
299
+ };
300
+ var out = useSyncExternalStore(view ? view.subscribe : DISABLED_SUBSCRIBE, view ? view.getSnapshot : getEmpty, view ? view.getSnapshot : getEmpty);
299
301
  if (!disableMode) {
300
302
  lastRef.current = out;
301
303
  return out;
@@ -303,7 +305,7 @@ function createUseQueryDirect(param) {
303
305
  if (disableMode === "last-value") {
304
306
  return lastRef.current;
305
307
  }
306
- return EMPTY_RESPONSE;
308
+ return emptyForQuery;
307
309
  }
308
310
  return useQueryDirect;
309
311
  }
@@ -1 +1 @@
1
- {"version":3,"names":["addContextToQuery","asQueryInternals","DEFAULT_TTL_MS","deepClone","useEmitterValue","useContext","useMemo","useRef","useSyncExternalStore","parseUseQueryArgs","resolveQuery","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","value","EMPTY_RESPONSE","type","DISABLED_SUBSCRIBE","DISABLED_SNAPSHOT","getDisabledSnapshot","emptyArray","resultTypeUnknown","resultTypeComplete","resultTypeError","emptySnapshotSingularUnknown","emptySnapshotSingularComplete","emptySnapshotSingularError","emptySnapshotPluralUnknown","emptySnapshotPluralComplete","emptySnapshotPluralError","getDefaultSnapshot","singular","makeError","retry","error","_error_message","message","_error_error","refetch","details","getSnapshot","data","resultType","Array","isArray","DirectViewWrapper","DirectViewWrapper2","query","zero","ttl","onDematerialized","_this","listeners","Set","onData","cloned","snapshot","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","listener","err","return","destroyView","materializeIfNeeded","subscribe","notify","add","destroyTimer","clearTimeout","delete","size","setTimeout"],"sources":["../../src/createUseQueryDirect.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["addContextToQuery","asQueryInternals","DEFAULT_TTL_MS","deepClone","useEmitterValue","useContext","useMemo","useRef","useSyncExternalStore","emptyResponseFor","parseUseQueryArgs","resolveQuery","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","value","DISABLED_SUBSCRIBE","emptyArray","resultTypeUnknown","type","resultTypeComplete","resultTypeError","emptySnapshotSingularUnknown","emptySnapshotSingularComplete","emptySnapshotSingularError","emptySnapshotPluralUnknown","emptySnapshotPluralComplete","emptySnapshotPluralError","getDefaultSnapshot","singular","makeError","retry","error","_error_message","message","_error_error","refetch","details","getSnapshot","data","resultType","Array","isArray","DirectViewWrapper","DirectViewWrapper2","query","zero","ttl","onDematerialized","_this","listeners","Set","onData","cloned","snapshot","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","listener","err","return","destroyView","materializeIfNeeded","subscribe","notify","add","destroyTimer","clearTimeout","delete","size","setTimeout","view","materialize","addListener"],"sources":["../../src/createUseQueryDirect.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAAAA,iBAAA,EAAAC,gBAAA,EAAAC,cAAA,EAAAC,SAAA;AAAA,SACEC,eAAA;AAAA,SACAC,UAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,oBAAA;AAAA,SACAC,gBAAA,EAAAC,iBAAA;AAAA,SACAC,YAAA;AAAA,SACKC,kBAAAC,QAAA,EAAAC,WAAA;EACP,MAAAD,QAAS,YAAAC,WAAqC;IAC9C,MAAS,IAAAC,SAAY,oCAAiB;EAEtC;AAAA;AACE,SACAC,kBAAAC,MAAA,EAAAC,KAAA;EAAA,KAIK,IAAAC,CAAA,MAAAA,CAAA,GAAAD,KAAA,CAAAE,MAAA,EAAAD,CAAA;IACP,IAAAE,UAAS,GAAAH,KAAA,CAAAC,CAAA,CAAoB;IAe7BE,UAAM,CAAAC,UAAA,GAAqBD,UAAM,CAAMC,UAAA;IAACD,UAAA,CAAAE,YAAA;IAsCxC,IAAM,WAAiCF,UAAC,EAAAA,UAAA,CAAAG,QAAA;IACxCC,MAAM,CAAAC,cAAA,CAAoBT,MAAE,EAAMI,UAAU,CAAAM,GAAA,EAAAN,UAAA;EAC5C;AACA;AACA,SAAMO,cAAAd,WAAA,EAAAe,UAA2D,EAAAC,WAAA;EACjE,IAAMD,UAAA,EAAAb,iBAAA,CAAAF,WAA4D,CAAAiB,SAAA,EAAAF,UAAkB;EACpF,IAAMC,WAAA,EAAAd,iBAA8C,CAAAF,WAAW,EAAAgB,WAAe;EAC9E,OAAMhB,WAAA;AACN;AACA,SAAMkB,iBAAAC,GAAA,EAAAN,GAA4C,EAAAO,KAAA;EAElD,IAAAP,GAAS,IAAAM,GAAA;IACPR,MAAO,CAAAC,cAAW,CAAAO,GAAA,EAAAN,GAAA;MACpBO,KAAA;MAEAZ,UAAS,MAAU;MACjBC,YAAgB;MAChBC,QAAO;IACL;EAAM,OACN;IACAS,GAAA,CAAAN,GAAA,IAASO,KAAA;EAAA;EACF,OACLD,GAAM;AAAgB;AACtB,IAAAE,kBACW,YAAAA,CAAA,EAAY;EAA4B,OACrD,aACF;AACF;AAEA,IAAAC,UAAS;AAOP,IAAAC,iBAAgB;EACdC,IAAA,EAAI;AACJ;AACE,IAAAC,kBAAgB;EAClBD,IAAA;AAAO;AAGT,IAAAE,eAAiB;EACfF,IAAA,EAAI;AACJ;AACE,IAAAG,4BAAgB,GAAY,CAC9B,QACFJ,iBAAA,CAEA;AACA,IAAAK,6BAA4B,IAC5B,QACFH,kBAAA,CAEA;AAA8C,IAM5CI,0BAGU,GACS,CAHA,QACAH,eAAA,CACT;AACS,IAAAI,0BAAA,IACAR,UAAA,EAEjBC,iBAAK,CACL;AAAyB,IAC3BQ,2BAAA,IAdQT,UAAA,EACAG,kBAAA;AACyC,IACzCO,wBAAA,IAaAV,UAAU,EAChBI,eAAM,CACN;AAAgB,SACdO,kBAAKA,CAAAC,QAAA;EAAA,OACLA,QAAA,GAAAP,4BAAA,GAAAG,0BAAA;AAAA;AACA,SACAK,SAAKA,CAAAC,KAAA,EAAAC,KAAA;EAAA,IACLC,cAAA;EAAA,IACFC,OAAA,IAAAD,cAAA,GAAAD,KAAA,aAAAA,KAAA,uBAAAA,KAAA,CAAAE,OAAA,cAAAD,cAAA,cAAAA,cAAA;EACA,IAAAE,YAAW;EACT;IACFhB,IAAA;IACFY,KAAA;IAEQK,OAAQ,EAAAL,KAAM;IACpBC,KAAK;MACLb,IAAK,GAAAgB,YAAA,GAAAH,KAAoB,aAAAA,KAAA,uBAAAA,KAAA,CAAAA,KAAA,cAAAG,YAAA,cAAAA,YAAA;MAC3BD,OAAA;MAEQ,KAAAF,KAAA,SAAsB,IAAAA,KAAA,uBAAAA,KAAA,CAAAK,OAAA;QACxBA,OAAK,EAAAL,KAAM,CAAAK;MACf,IAAK;IACL;EACF;AAAA;AAGE,SAAAC,WAAgBA,CAAAT,QAAK,EAAAU,IAAA,EAAAC,UAAA,EAAAT,KAAA,EAAAC,KAAA;EACrB,IAAAH,QAAK,IAAOU,IAAA;IACZ,IAAIC,UAAU,wBAAAjB,6BAAA;IACd,IAAIiB,UAAA,qBAAAR,KAAA,IACF,QACFF,SAAQ,CAAAC,KAAA,EAAAC,KAAA,EAER,GAAAR,0BAAA;IACF,OAAAF,4BAAA;EAEA;EACE,KAAAO,QAAW,IAAAY,KAAA,CAAAC,OAAA,CAAAH,IAAA,KAAAA,IAAA,CAAAtC,MAAA;IACX,IAAAuC,UAAW,eAAa,SAAAd,2BAAA;IAC1B,IAAAc,UAAA,qBAAAR,KAAA,IAEAf,UAAa,EACXa,SAAK,CAAAC,KAAU,EAAIC,KAAA,CAAM,CACzB,GAAIL,wBAAsB;IACxB,OAAAF,0BAA8B;EAC9B;EAAoB,IACtBe,UAAA,yBACAD,IAAA,EAEAnB,kBAAa,CACX;EACA,IAAAoB,UAAS,YAAU,SAAY,CAC7BD,IAAA,EACET,SAAA,CAAAC,KAAK,EAAAC,KAAA,EACL;EACA,QACAO,IAAA,EAA0BrB,iBACvB;AACP;AACF,IACFyB,iBAAA;EAEA;;EACF,SAAAC,mBAAAC,KAAA,EAAAC,IAAA,EAAAC,GAAA,EAAAlB,QAAA,EAAAmB,gBAAA;IAEA,IAAMC,KAAA;IACaxD,iBAAQ,OAAAmD,kBAAmC;IAE5D/B,gBAEE,cACA,OACA;IAEAA,gBAAc,oBAAkB;IAChCA,gBAAM,OAAiB;IAEvBA,gBAAc;IACZA,gBAAM,KAAW,oBAAmB;IACpCA,gBAAO;IAAAA,gBACM;IAAAA,gBACX,CAAa,MAAM;IAAAA,gBACrB;IACFA,gBAAA;IAEAA,gBAAgB,KAAK,SAAQ,OAAI;IACjCA,gBAAgB,OAAM,WAAQ;IAC9BA,gBAAW;IACT,KAAAgC,KAAO,GAAIA,KAAA;IAAA,IACT,CAAAC,IAAA,GAAAA,IAAA;IAAA,IACA,CAAAC,GAAA,GAAAA,GAAA;IAAA,IACA,CAAAlB,QAAA,GAAAA,QAAA;IAAA,IACA,CAAAmB,gBAAe,GAAAA,gBAAO;IAAA,IACtB,CAACE,SAAA,kBAAmB,IAAAC,GAAA;IAClB,KAAAC,MAAI,aAAWb,IAAI,EAAIC,UAAM,EAAAR,KAAA;MAC3B,IAAAqB,MAAA,GAAKd,IAAM,UAAO,CAAI,YAAAvD,SAAA,CAAAuD,IAAA;MAAAU,KACxB,CAAAK,QAAA,GAAAhB,WAAA,CAAAW,KAAA,CAAApB,QAAA,EAAAwB,MAAA,EAAAb,UAAA,EAAAS,KAAA,CAAAlB,KAAA,EAAAC,KAAA;MAAA,IACFuB,yBAAA;QAAAC,iBAAA;QAAAC,cAAA;MACF;QACA,KAAK,IAAMC,SAAI,GAAMT,KAAI,CAAAC,SAAA,CAAAS,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;UAC3B,IAAOS,QAAA,GAAAH,KAAA,CAAA9C,KAAA;UACLiD,QAAK;QACP;MAEA,SAAOC,GAAA;QACTT,iBAAA;QACFC,cAAA,GAAAQ,GAAA;MAEO,UAAS;QACd;UACA,KAAAV,yBAAA,IAAAG,SAAA,CAAAQ,MAAA;YACAR,SAAA,CAAAQ,MAAA;UACA;QACoE;UAIhE,IAAOV,iBAAW;YACZ,MAACC,cAAa;UACxB;QAEM;MAEN;IACE;IACA,KAAA1B,KAAO,GAAI;MAEXkB,KAAM,CAAAkB,WAAU;MAChBlB,KAAM,CAAEmB,mBAAgB,CAAI;IAE5B;IACA,IAAI,CAAAC,SAAuC,aAAAC,MAAA;MAC3CrB,KAAI,CAAAC,SAAO,CAAAqB,GAAA,CAAAD,MAAY;MACrB,IAAArB,KAAA,CAAUuB,YAAA;QACZC,YAAW,CAAAxB,KAAS,CAAAuB,YAAA;QAClBvB,KAAA,CAAAuB,YAAkB;MAClB;MACFvB,KAAA,CAAAmB,mBAAA;MAEA,OAAM,YAAY;QAKlBnB,KAAM,CAAAC,SAAA,CAAAwB,MAAe,CAAAJ,MAAA;QACnB,IAAMrB,KAAA,CAAAC,SAAe,CAAAyB,IAAA;UAA2B1B,KAAA,CAAAuB,YAAA,GAAAI,UAAA;YAAA3B,KAAA,CAAAuB,YAAA;YAG3C,IAAAvB,KAAS,CAAAC,SAAA,CAAAyB,IAAA;YAChB1B,KAAA,CAAAkB,WAAA;YAEMlB,KAAA,CAAAD,gBAAwB,CAAAC,KAAM;UAC9B;QAEN;MACE;IACA;IACA,KAAAX,WAAO,eAAgB;MAGzB,OAAIW,KAAA,CAAAK,QAAc;IAElB;IACA,KAAAA,QAAY,GAAA1B,kBAAA,CAAAC,QAAA;IAAA,IACV,CAAAuC,mBAAY,EAAY;EAAA;EACE3D,aACnB,CAAAmC,kBAAmB,GAC5B;IAEApC,GAAK,uBAAa;IAChBO,KAAA,WAAQqD,mBAAUA,CAAA;MAClB,QAAO,CAAAS,IAAA;MACT,KAAAA,IAAA,QAAA/B,IAAA,CAAAgC,WAAA,MAAAjC,KAAA;QAEIE,GAAA,OAAAA;MACF;MACF,KAAA8B,IAAA,CAAAE,WAAA,MAAA3B,MAAA;IAEA;EACF,GAEA;IACF5C,GAAA","ignoreList":[]}
@@ -0,0 +1,71 @@
1
+ import { createSchema, number, string, table } from "@rocicorp/zero";
2
+ import { act } from "react";
3
+ import { createRoot } from "react-dom/client";
4
+ import { afterEach, beforeEach, expect, test } from "vitest";
5
+ import { createZeroClient } from "./createZeroClient.mjs";
6
+ import { zql } from "./zql.mjs";
7
+ import { jsx } from "react/jsx-runtime";
8
+ globalThis.IS_REACT_ACT_ENVIRONMENT = true;
9
+ const todoTable = table("todo").columns({
10
+ id: string(),
11
+ title: string(),
12
+ createdAt: number()
13
+ }).primaryKey("id");
14
+ const schema = createSchema({
15
+ tables: [todoTable]
16
+ });
17
+ const allTodos = _args => zql.todo.orderBy("createdAt", "desc");
18
+ const oneTodo = args => zql.todo.where("id", args.id).one();
19
+ const client = createZeroClient({
20
+ schema,
21
+ models: {},
22
+ groupedQueries: {
23
+ todo: {
24
+ allTodos,
25
+ oneTodo
26
+ }
27
+ },
28
+ instanceName: "empty-shape-test"
29
+ });
30
+ let container;
31
+ let root;
32
+ beforeEach(() => {
33
+ container = document.createElement("div");
34
+ root = createRoot(container);
35
+ });
36
+ afterEach(() => {
37
+ act(() => root.unmount());
38
+ });
39
+ function renderWithDisabled(useHook) {
40
+ let captured;
41
+ const Probe = () => {
42
+ captured = useHook();
43
+ return null;
44
+ };
45
+ act(() => {
46
+ root.render(/* @__PURE__ */jsx(client.ProvideZero, {
47
+ authData: {},
48
+ userID: "anon",
49
+ disable: true,
50
+ children: /* @__PURE__ */jsx(Probe, {})
51
+ }));
52
+ });
53
+ if (captured === void 0) throw new Error("Probe did not render");
54
+ return captured;
55
+ }
56
+ test("useQuery returns [] (not null) for plural queries under DisabledContext", () => {
57
+ const [data, info] = renderWithDisabled(() => client.useQuery(allTodos));
58
+ expect(Array.isArray(data)).toBe(true);
59
+ expect(data.length).toBe(0);
60
+ expect(data.filter(() => true)).toEqual([]);
61
+ expect(data.find(() => true)).toBeUndefined();
62
+ expect(info?.type).toBe("unknown");
63
+ });
64
+ test("useQuery returns undefined (not null) for singular queries under DisabledContext", () => {
65
+ const [data, info] = renderWithDisabled(() => client.useQuery(oneTodo, {
66
+ id: "x"
67
+ }));
68
+ expect(data).toBeUndefined();
69
+ expect(info?.type).toBe("unknown");
70
+ });
71
+ //# sourceMappingURL=useQuery.empty.test.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createSchema","number","string","table","act","createRoot","afterEach","beforeEach","expect","test","createZeroClient","zql","jsx","globalThis","IS_REACT_ACT_ENVIRONMENT","todoTable","columns","id","title","createdAt","primaryKey","schema","tables","allTodos","_args","todo","orderBy","oneTodo","args","where","one","client","models","groupedQueries","instanceName","container","root","document","createElement","unmount","renderWithDisabled","useHook","captured","Probe","render","ProvideZero","authData","userID","disable","children","Error","data","info","useQuery","Array","isArray","toBe","length","filter","toEqual","find","toBeUndefined","type"],"sources":["../../src/useQuery.empty.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,85 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createSchema, number, string, table } from "@rocicorp/zero";
3
+ import { act } from "react";
4
+ import { createRoot } from "react-dom/client";
5
+ import { afterEach, beforeEach, expect, test } from "vitest";
6
+ import { createZeroClient } from "./createZeroClient.native.js";
7
+ import { zql } from "./zql.native.js";
8
+ globalThis.IS_REACT_ACT_ENVIRONMENT = true;
9
+ var todoTable = table("todo").columns({
10
+ id: string(),
11
+ title: string(),
12
+ createdAt: number()
13
+ }).primaryKey("id");
14
+ var schema = createSchema({
15
+ tables: [todoTable]
16
+ });
17
+ var allTodos = function (_args) {
18
+ return zql.todo.orderBy("createdAt", "desc");
19
+ };
20
+ var oneTodo = function (args) {
21
+ return zql.todo.where("id", args.id).one();
22
+ };
23
+ var client = createZeroClient({
24
+ schema,
25
+ models: {},
26
+ groupedQueries: {
27
+ todo: {
28
+ allTodos,
29
+ oneTodo
30
+ }
31
+ },
32
+ instanceName: "empty-shape-test"
33
+ });
34
+ var container;
35
+ var root;
36
+ beforeEach(function () {
37
+ container = document.createElement("div");
38
+ root = createRoot(container);
39
+ });
40
+ afterEach(function () {
41
+ act(function () {
42
+ return root.unmount();
43
+ });
44
+ });
45
+ function renderWithDisabled(useHook) {
46
+ var captured;
47
+ var Probe = function () {
48
+ captured = useHook();
49
+ return null;
50
+ };
51
+ act(function () {
52
+ root.render(/* @__PURE__ */_jsx(client.ProvideZero, {
53
+ authData: {},
54
+ userID: "anon",
55
+ disable: true,
56
+ children: /* @__PURE__ */_jsx(Probe, {})
57
+ }));
58
+ });
59
+ if (captured === void 0) throw new Error("Probe did not render");
60
+ return captured;
61
+ }
62
+ test("useQuery returns [] (not null) for plural queries under DisabledContext", function () {
63
+ var [data, info] = renderWithDisabled(function () {
64
+ return client.useQuery(allTodos);
65
+ });
66
+ expect(Array.isArray(data)).toBe(true);
67
+ expect(data.length).toBe(0);
68
+ expect(data.filter(function () {
69
+ return true;
70
+ })).toEqual([]);
71
+ expect(data.find(function () {
72
+ return true;
73
+ })).toBeUndefined();
74
+ expect(info === null || info === void 0 ? void 0 : info.type).toBe("unknown");
75
+ });
76
+ test("useQuery returns undefined (not null) for singular queries under DisabledContext", function () {
77
+ var [data, info] = renderWithDisabled(function () {
78
+ return client.useQuery(oneTodo, {
79
+ id: "x"
80
+ });
81
+ });
82
+ expect(data).toBeUndefined();
83
+ expect(info === null || info === void 0 ? void 0 : info.type).toBe("unknown");
84
+ });
85
+ //# sourceMappingURL=useQuery.empty.test.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["jsx","_jsx","createSchema","number","string","table","act","createRoot","afterEach","beforeEach","expect","test","createZeroClient","zql","globalThis","IS_REACT_ACT_ENVIRONMENT","todoTable","columns","id","title","createdAt","primaryKey","schema","tables","allTodos","_args","todo","orderBy","oneTodo","args","where","one","client","models","groupedQueries","instanceName","container","root","document","createElement","unmount","renderWithDisabled","useHook","captured","Probe","render","ProvideZero","authData","userID","disable","children"],"sources":["../../src/useQuery.empty.test.tsx"],"sourcesContent":[null],"mappings":"AAQA,SAASA,GAAA,IAAAC,IAAA,QAAc,mBAAgB;AACvC,SAASC,YAAW,EAAAC,MAAA,EAAAC,MAAA,EAAAC,KAAA;AACpB,SAASC,GAAA,eAA6B;AACtC,SAASC,UAAA,QAAW,kBAAoB;AAExC,SAASC,SAAA,EAAAC,UAAA,EAAAC,MAAwB,EAAAC,IAAA;AACjC,SAASC,gBAAW;AA0DZ,SAAAC,GAAA;AApDRC,UAAA,CAAWC,wBAAA,GAA2B;AAEtC,IAAAC,SAAM,GAAAX,KAAY,OAAM,EAAMY,OAC3B;EAEHC,EAAA,EAAMd,MAAA;EAINe,KAAM,EAAAf,MAAA,EAAW;EAEbgB,SAAA,EAAAjB,MAAA;AAAA,EACA,CAAAkB,UAAA;AACF,IAAAC,MAAA,GAAApB,YAAA;EACFqB,MAAM,GAKNP,SAAM;AACJ,EACA;AAAS,IACTQ,QAAA,YAAAA,CAAgBC,KAAA;EAAA,OACdZ,GAAQ,CAAAa,IAAA,CAAAC,OAAU,YAAQ;AAAA;AAC5B,IACAC,OAAA,YAAAA,CAAcC,IAAA;EACf,OAAAhB,GAAA,CAAAa,IAAA,CAAAI,KAAA,OAAAD,IAAA,CAAAX,EAAA,EAAAa,GAAA;AAED;AACA,IAAIC,MAAA,GAAApB,gBAAA;EAEJU,MAAA;EACEW,MAAA;EACAC,cAAO;IACRR,IAAA;MAEDF,QAAU;MACJI;IACL;EAED;EACEO,YAAI;AACJ;AACE,IAAAC,SAAA;AACA,IAAAC,IAAA;AAAO5B,UACT;EACA2B,SAAI,GAAME,QAAA,CAAAC,aAAA;EAIRF,IAAA,GAAK9B,UAAA,CAAA6B,SAAA;AAAA;AAGH5B,SACF;EACFF,GAAC;IACD,OAAI+B,IAAA,CAAAG,OAAa;EACjB;AACF;AAIA,SAAKC,mBAAAC,OAAA;EACH,IAAAC,QAAO;EACP,IAAAC,KAAO,YAAAA,CAAA,EAAc;IACrBD,QAAQ,GAAmBD,OAAQ;IAEnC,OAAQ,IAAmB;EAC3B;EACApC,GAAA,aAAa;IACd+B,IAAA,CAAAQ,MAAA,gBAAA5C,IAAA,CAAA+B,MAAA,CAAAc,WAAA;MAEIC,QAAA;MACHC,MAAO,QAAU;MAEjBC,OAAW,EAAE;MACbC,QAAO,EAAM,eAAWjD,IAAS,CAAA2C,KAAA;IAClC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "on-zero",
3
- "version": "0.4.39",
3
+ "version": "0.4.41",
4
4
  "description": "A typed layer over @rocicorp/zero with queries, mutations, and permissions",
5
5
  "sideEffects": false,
6
6
  "source": "src/index.ts",
@@ -83,7 +83,7 @@
83
83
  }
84
84
  },
85
85
  "dependencies": {
86
- "@take-out/helpers": "0.4.39",
86
+ "@take-out/helpers": "0.4.40",
87
87
  "chokidar": "^4.0.3",
88
88
  "citty": "^0.1.6",
89
89
  "valibot": "^1.1.0"
@@ -1,4 +1,5 @@
1
1
  import { useQuery as zeroUseQuery } from '@rocicorp/zero/react'
2
+ import { addContextToQuery, asQueryInternals } from '@rocicorp/zero/bindings'
2
3
  import { useContext, useMemo, useRef, type Context } from 'react'
3
4
 
4
5
  import { useZeroDebug } from './helpers/useZeroDebug'
@@ -11,7 +12,7 @@ import type {
11
12
  Schema as ZeroSchema,
12
13
  } from '@rocicorp/zero'
13
14
 
14
- // false = enabled, 'empty' = disabled (return null), 'last-value' = disabled (return cached)
15
+ // false = enabled, 'empty' = disabled (return empty), 'last-value' = disabled (return cached)
15
16
  export type QueryControlMode = false | 'empty' | 'last-value'
16
17
 
17
18
  export type UseQueryOptions = {
@@ -39,7 +40,32 @@ export type UseQueryHook<Schema extends ZeroSchema> = {
39
40
  ): QueryResult<TReturn>
40
41
  }
41
42
 
42
- const EMPTY_RESPONSE = [null, { type: 'unknown' }] as never
43
+ // shape the "empty" / loading / disabled response to match the typed contract:
44
+ // plural queries get [], singular queries get undefined. returning null for a
45
+ // plural query (the old `EMPTY_RESPONSE` constant) broke callers that do the
46
+ // obvious .filter / .find / .length on the result during the first render.
47
+ const EMPTY_PLURAL = Object.freeze([])
48
+ const RESULT_UNKNOWN = Object.freeze({ type: 'unknown' as const })
49
+ const EMPTY_RESPONSE_PLURAL = Object.freeze([EMPTY_PLURAL, RESULT_UNKNOWN]) as never
50
+ const EMPTY_RESPONSE_SINGULAR = Object.freeze([undefined, RESULT_UNKNOWN]) as never
51
+
52
+ // inspect a resolved query (a Query OR a QueryRequest, i.e. what resolveQuery
53
+ // returns from a defineQueries-registered fn) to find its singular/plural
54
+ // format. QueryRequests carry a `.query.fn({args, ctx})` that materializes
55
+ // the underlying Query — singular vs plural is determined entirely by the
56
+ // user-authored query body (`.one()` vs not), so passing an empty `ctx` is
57
+ // safe here.
58
+ export function emptyResponseFor(queryRequest: unknown): readonly [unknown, { type: string }] {
59
+ try {
60
+ const query = addContextToQuery(queryRequest as any, {} as never)
61
+ const internals = asQueryInternals(query)
62
+ return internals.format.singular ? EMPTY_RESPONSE_SINGULAR : EMPTY_RESPONSE_PLURAL
63
+ } catch {
64
+ // SSG factory / no-resolved-query — default to plural so callers' iteration
65
+ // (.filter / .find / .length / for-of) is always safe.
66
+ return EMPTY_RESPONSE_PLURAL
67
+ }
68
+ }
43
69
 
44
70
  // determine if useQuery-style args are (fn, params, options) or (fn, options)
45
71
  export function parseUseQueryArgs(paramsOrOptions: any, optionsArg: any) {
@@ -68,14 +94,17 @@ export function createUseQuery<Schema extends ZeroSchema>({
68
94
  // an empty response matches how the wrapper behaves under DisabledContext
69
95
  // anyway, so consumers see the same shape across SSG and the disabled
70
96
  // client path. checking here (factory-time) instead of per-call keeps
71
- // hook order stable so rules-of-hooks stays happy.
97
+ // hook order stable so rules-of-hooks stays happy. we default to the plural
98
+ // shape (data = []) because most queries are plural; a singular query under
99
+ // SSG that depends on undefined-vs-[] is exotic enough to handle at the call
100
+ // site.
72
101
  if (typeof window === 'undefined') {
73
- return (() => EMPTY_RESPONSE) as UseQueryHook<Schema>
102
+ return (() => EMPTY_RESPONSE_PLURAL) as UseQueryHook<Schema>
74
103
  }
75
104
 
76
105
  function useQuery(...args: any[]): any {
77
106
  const disableMode = useContext(DisabledContext)
78
- const lastRef = useRef<any>(EMPTY_RESPONSE)
107
+ const lastRef = useRef<any>(EMPTY_RESPONSE_PLURAL)
79
108
  const [fn, paramsOrOptions, optionsArg] = args
80
109
 
81
110
  const { queryRequest, options } = useMemo(() => {
@@ -110,10 +139,16 @@ export function createUseQuery<Schema extends ZeroSchema>({
110
139
  }
111
140
 
112
141
  if (disableMode === 'last-value') {
142
+ // first render under last-value mode: lastRef is still the plural default —
143
+ // reshape to match this query's actual format so a singular query gets
144
+ // undefined instead of [].
145
+ if (lastRef.current === EMPTY_RESPONSE_PLURAL) {
146
+ return emptyResponseFor(queryRequest)
147
+ }
113
148
  return lastRef.current
114
149
  }
115
150
 
116
- return EMPTY_RESPONSE
151
+ return emptyResponseFor(queryRequest)
117
152
  }
118
153
 
119
154
  return useQuery as UseQueryHook<Schema>