on-zero 0.16.19 → 0.16.20
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/createUseQuery.cjs +2 -1
- package/dist/cjs/createUseQuery.native.js +2 -1
- package/dist/cjs/createUseQuery.native.js.map +1 -1
- package/dist/cjs/createUseQueryDirect.cjs +2 -1
- package/dist/cjs/createUseQueryDirect.native.js +2 -1
- package/dist/cjs/createUseQueryDirect.native.js.map +1 -1
- package/dist/cjs/createZeroClient.cjs +75 -9
- package/dist/cjs/createZeroClient.native.js +151 -81
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/createZeroClient.recovery.test.cjs +351 -10
- package/dist/cjs/createZeroClient.recovery.test.native.js +412 -12
- package/dist/cjs/createZeroClient.recovery.test.native.js.map +1 -1
- package/dist/cjs/generate.cjs +16 -11
- package/dist/cjs/generate.native.js +16 -11
- package/dist/cjs/generate.native.js.map +1 -1
- package/dist/cjs/generate.test.cjs +22 -0
- package/dist/cjs/generate.test.native.js +22 -0
- package/dist/cjs/generate.test.native.js.map +1 -1
- package/dist/cjs/helpers/recoverZeroClient.cjs +542 -52
- package/dist/cjs/helpers/recoverZeroClient.native.js +721 -59
- package/dist/cjs/helpers/recoverZeroClient.native.js.map +1 -1
- package/dist/cjs/helpers/recoverZeroClient.test.cjs +318 -0
- package/dist/cjs/helpers/recoverZeroClient.test.native.js +361 -0
- package/dist/cjs/helpers/recoverZeroClient.test.native.js.map +1 -1
- package/dist/cjs/kvStore.cjs +30 -0
- package/dist/cjs/kvStore.native.js +34 -0
- package/dist/cjs/kvStore.native.js.map +1 -0
- package/dist/cjs/queryJson.cjs +58 -0
- package/dist/cjs/queryJson.native.js +86 -0
- package/dist/cjs/queryJson.native.js.map +1 -0
- package/dist/cjs/resolveQuery.cjs +2 -0
- package/dist/cjs/resolveQuery.native.js +2 -0
- package/dist/cjs/resolveQuery.native.js.map +1 -1
- package/dist/cjs/useQuery.empty.test.cjs +11 -1
- package/dist/cjs/useQuery.empty.test.native.js +23 -1
- package/dist/cjs/useQuery.empty.test.native.js.map +1 -1
- package/dist/cjs/useQuery.ssr.test.cjs +22 -1
- package/dist/cjs/useQuery.ssr.test.native.js +30 -1
- package/dist/cjs/useQuery.ssr.test.native.js.map +1 -1
- package/dist/esm/createUseQuery.mjs +2 -1
- package/dist/esm/createUseQuery.mjs.map +1 -1
- package/dist/esm/createUseQuery.native.js +2 -1
- package/dist/esm/createUseQuery.native.js.map +1 -1
- package/dist/esm/createUseQueryDirect.mjs +2 -1
- package/dist/esm/createUseQueryDirect.mjs.map +1 -1
- package/dist/esm/createUseQueryDirect.native.js +2 -1
- package/dist/esm/createUseQueryDirect.native.js.map +1 -1
- package/dist/esm/createZeroClient.mjs +76 -10
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +152 -82
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/createZeroClient.recovery.test.mjs +352 -11
- package/dist/esm/createZeroClient.recovery.test.mjs.map +1 -1
- package/dist/esm/createZeroClient.recovery.test.native.js +413 -13
- package/dist/esm/createZeroClient.recovery.test.native.js.map +1 -1
- package/dist/esm/generate.mjs +16 -11
- package/dist/esm/generate.mjs.map +1 -1
- package/dist/esm/generate.native.js +16 -11
- package/dist/esm/generate.native.js.map +1 -1
- package/dist/esm/generate.test.mjs +22 -0
- package/dist/esm/generate.test.mjs.map +1 -1
- package/dist/esm/generate.test.native.js +22 -0
- package/dist/esm/generate.test.native.js.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.mjs +542 -54
- package/dist/esm/helpers/recoverZeroClient.mjs.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.native.js +721 -61
- package/dist/esm/helpers/recoverZeroClient.native.js.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.test.mjs +319 -1
- package/dist/esm/helpers/recoverZeroClient.test.mjs.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.test.native.js +362 -1
- package/dist/esm/helpers/recoverZeroClient.test.native.js.map +1 -1
- package/dist/esm/kvStore.mjs +5 -0
- package/dist/esm/kvStore.mjs.map +1 -0
- package/dist/esm/kvStore.native.js +6 -0
- package/dist/esm/kvStore.native.js.map +1 -0
- package/dist/esm/queryJson.mjs +32 -0
- package/dist/esm/queryJson.mjs.map +1 -0
- package/dist/esm/queryJson.native.js +57 -0
- package/dist/esm/queryJson.native.js.map +1 -0
- package/dist/esm/resolveQuery.mjs +2 -0
- package/dist/esm/resolveQuery.mjs.map +1 -1
- package/dist/esm/resolveQuery.native.js +2 -0
- package/dist/esm/resolveQuery.native.js.map +1 -1
- package/dist/esm/useQuery.empty.test.mjs +12 -2
- package/dist/esm/useQuery.empty.test.mjs.map +1 -1
- package/dist/esm/useQuery.empty.test.native.js +24 -2
- package/dist/esm/useQuery.empty.test.native.js.map +1 -1
- package/dist/esm/useQuery.ssr.test.mjs +23 -2
- package/dist/esm/useQuery.ssr.test.mjs.map +1 -1
- package/dist/esm/useQuery.ssr.test.native.js +31 -2
- package/dist/esm/useQuery.ssr.test.native.js.map +1 -1
- package/package.json +11 -3
- package/src/createUseQuery.tsx +2 -1
- package/src/createUseQueryDirect.tsx +2 -1
- package/src/createZeroClient.recovery.test.tsx +370 -7
- package/src/createZeroClient.tsx +100 -10
- package/src/generate.test.ts +31 -0
- package/src/generate.ts +22 -10
- package/src/helpers/recoverZeroClient.test.ts +323 -0
- package/src/helpers/recoverZeroClient.ts +896 -78
- package/src/kvStore.native.ts +7 -0
- package/src/kvStore.ts +7 -0
- package/src/queryJson.ts +46 -0
- package/src/resolveQuery.ts +2 -0
- package/src/useQuery.empty.test.tsx +16 -2
- package/src/useQuery.ssr.test.ts +23 -2
- package/types/createUseQuery.d.ts.map +1 -1
- package/types/createUseQueryDirect.d.ts.map +1 -1
- package/types/createZeroClient.d.ts.map +1 -1
- package/types/createZeroClient.recovery.test.d.ts.map +1 -1
- package/types/generate.d.ts.map +1 -1
- package/types/helpers/recoverZeroClient.d.ts +6 -0
- package/types/helpers/recoverZeroClient.d.ts.map +1 -1
- package/types/kvStore.d.ts +2 -0
- package/types/kvStore.d.ts.map +1 -0
- package/types/kvStore.native.d.ts +3 -0
- package/types/kvStore.native.d.ts.map +1 -0
- package/types/queryJson.d.ts +3 -0
- package/types/queryJson.d.ts.map +1 -0
- package/types/resolveQuery.d.ts.map +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createSchema, number, string, table } from "@rocicorp/zero";
|
|
1
|
+
import { createBuilder, createSchema, number, string, table } from "@rocicorp/zero";
|
|
2
2
|
import { useQuery as useRawZeroQuery } from "@rocicorp/zero/react";
|
|
3
3
|
import { act } from "react";
|
|
4
4
|
import { createRoot } from "react-dom/client";
|
|
@@ -18,13 +18,15 @@ const schema = createSchema({
|
|
|
18
18
|
});
|
|
19
19
|
const allTodos = _args => zql.todo.orderBy("createdAt", "desc");
|
|
20
20
|
const oneTodo = args => zql.todo.where("id", args.id).one();
|
|
21
|
+
const optionalTodo = args => createBuilder(schema).todo.where("id", args.id ?? "x").one();
|
|
21
22
|
const client = createZeroClient({
|
|
22
23
|
schema,
|
|
23
24
|
models: {},
|
|
24
25
|
groupedQueries: {
|
|
25
26
|
todo: {
|
|
26
27
|
allTodos,
|
|
27
|
-
oneTodo
|
|
28
|
+
oneTodo,
|
|
29
|
+
optionalTodo
|
|
28
30
|
}
|
|
29
31
|
},
|
|
30
32
|
instanceName: "empty-shape-test"
|
|
@@ -80,4 +82,12 @@ test("raw zero-react useQuery stays inert under a disabled provider", () => {
|
|
|
80
82
|
expect(data).toEqual([]);
|
|
81
83
|
expect(info?.type).toBe("unknown");
|
|
82
84
|
});
|
|
85
|
+
test("useQuery rejects a function even when JSON.stringify would preserve its memo key", () => {
|
|
86
|
+
renderWithDisabled(() => client.useQuery(optionalTodo, {}));
|
|
87
|
+
expect(() => renderWithDisabled(() =>
|
|
88
|
+
// @ts-expect-error a function cannot cross the query JSON boundary.
|
|
89
|
+
client.useQuery(optionalTodo, {
|
|
90
|
+
id: () => "x"
|
|
91
|
+
}))).toThrow("Query 'todo.optionalTodo' argument 'params.id' must be JSON: function");
|
|
92
|
+
});
|
|
83
93
|
//# sourceMappingURL=useQuery.empty.test.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createSchema","number","string","table","useQuery","useRawZeroQuery","act","createRoot","afterEach","beforeEach","expect","test","createZeroClient","IS_SERVER","IS_SERVER_RUNTIME","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","toBe","data","info","Array","isArray","length","filter","toEqual","find","toBeUndefined","type","query","getQuery"],"sources":["../../src/useQuery.empty.test.tsx"],"sourcesContent":[null],"mappings":"AAQA,SAASA,YAAA,EAAcC,MAAA,EAAQC,MAAA,EAAQC,KAAA,QAAa;
|
|
1
|
+
{"version":3,"names":["createBuilder","createSchema","number","string","table","useQuery","useRawZeroQuery","act","createRoot","afterEach","beforeEach","expect","test","createZeroClient","IS_SERVER","IS_SERVER_RUNTIME","zql","jsx","globalThis","IS_REACT_ACT_ENVIRONMENT","todoTable","columns","id","title","createdAt","primaryKey","schema","tables","allTodos","_args","todo","orderBy","oneTodo","args","where","one","optionalTodo","client","models","groupedQueries","instanceName","container","root","document","createElement","unmount","renderWithDisabled","useHook","captured","Probe","render","ProvideZero","authData","userID","disable","children","Error","toBe","data","info","Array","isArray","length","filter","toEqual","find","toBeUndefined","type","query","getQuery","toThrow"],"sources":["../../src/useQuery.empty.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { createSchema, number, string, table } from "@rocicorp/zero";
|
|
2
|
+
import { createBuilder, createSchema, number, string, table } from "@rocicorp/zero";
|
|
3
3
|
import { useQuery as useRawZeroQuery } from "@rocicorp/zero/react";
|
|
4
4
|
import { act } from "react";
|
|
5
5
|
import { createRoot } from "react-dom/client";
|
|
@@ -22,13 +22,18 @@ var allTodos = function allTodos2(_args) {
|
|
|
22
22
|
var oneTodo = function oneTodo2(args) {
|
|
23
23
|
return zql.todo.where("id", args.id).one();
|
|
24
24
|
};
|
|
25
|
+
var optionalTodo = function optionalTodo2(args) {
|
|
26
|
+
var _args_id;
|
|
27
|
+
return createBuilder(schema).todo.where("id", (_args_id = args.id) !== null && _args_id !== void 0 ? _args_id : "x").one();
|
|
28
|
+
};
|
|
25
29
|
var client = createZeroClient({
|
|
26
30
|
schema,
|
|
27
31
|
models: {},
|
|
28
32
|
groupedQueries: {
|
|
29
33
|
todo: {
|
|
30
34
|
allTodos,
|
|
31
|
-
oneTodo
|
|
35
|
+
oneTodo,
|
|
36
|
+
optionalTodo
|
|
32
37
|
}
|
|
33
38
|
},
|
|
34
39
|
instanceName: "empty-shape-test"
|
|
@@ -96,4 +101,21 @@ test("raw zero-react useQuery stays inert under a disabled provider", function (
|
|
|
96
101
|
expect(data).toEqual([]);
|
|
97
102
|
expect(info === null || info === void 0 ? void 0 : info.type).toBe("unknown");
|
|
98
103
|
});
|
|
104
|
+
test("useQuery rejects a function even when JSON.stringify would preserve its memo key", function () {
|
|
105
|
+
renderWithDisabled(function () {
|
|
106
|
+
return client.useQuery(optionalTodo, {});
|
|
107
|
+
});
|
|
108
|
+
expect(function () {
|
|
109
|
+
return renderWithDisabled(function () {
|
|
110
|
+
return (
|
|
111
|
+
// @ts-expect-error a function cannot cross the query JSON boundary.
|
|
112
|
+
client.useQuery(optionalTodo, {
|
|
113
|
+
id: function id() {
|
|
114
|
+
return "x";
|
|
115
|
+
}
|
|
116
|
+
})
|
|
117
|
+
);
|
|
118
|
+
});
|
|
119
|
+
}).toThrow("Query 'todo.optionalTodo' argument 'params.id' must be JSON: function");
|
|
120
|
+
});
|
|
99
121
|
//# sourceMappingURL=useQuery.empty.test.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["jsx","_jsx","createSchema","number","string","table","useQuery","useRawZeroQuery","act","createRoot","afterEach","beforeEach","expect","test","createZeroClient","IS_SERVER","IS_SERVER_RUNTIME","zql","globalThis","IS_REACT_ACT_ENVIRONMENT","todoTable","columns","id","title","createdAt","primaryKey","schema","tables","allTodos","allTodos2","_args","todo","orderBy","oneTodo","oneTodo2","args","where","one","client","models","groupedQueries","instanceName","container","root","document","createElement","unmount","renderWithDisabled","useHook","captured","Probe","Probe2","render","ProvideZero","authData","userID","disable","children","Error","toBe","data","info"],"sources":["../../src/useQuery.empty.test.tsx"],"sourcesContent":[null],"mappings":"AAQA,SAASA,GAAA,IAAAC,IAAA,
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","createBuilder","createSchema","number","string","table","useQuery","useRawZeroQuery","act","createRoot","afterEach","beforeEach","expect","test","createZeroClient","IS_SERVER","IS_SERVER_RUNTIME","zql","globalThis","IS_REACT_ACT_ENVIRONMENT","todoTable","columns","id","title","createdAt","primaryKey","schema","tables","allTodos","allTodos2","_args","todo","orderBy","oneTodo","oneTodo2","args","where","one","optionalTodo","optionalTodo2","_args_id","client","models","groupedQueries","instanceName","container","root","document","createElement","unmount","renderWithDisabled","useHook","captured","Probe","Probe2","render","ProvideZero","authData","userID","disable","children","Error","toBe","data","info","Array","isArray","length","filter","toEqual"],"sources":["../../src/useQuery.empty.test.tsx"],"sourcesContent":[null],"mappings":"AAQA,SAASA,GAAA,IAAAC,IAAA,QAAe,mBAAsB;AAC9C,SAASC,aAAY,EAAAC,YAAA,EAAAC,MAAuB,EAAAC,MAAA,EAAAC,KAAA;AAC5C,SAASC,QAAA,IAAWC,eAAA;AACpB,SAASC,GAAA,eAA6B;AACtC,SAASC,UAAA,QAAW,kBAAoB;AAExC,SAASC,SAAA,EAAAC,UAAA,EAAAC,MAAwB,EAAAC,IAAA;AACjC,SAASC,gBAAW,sCAAyB;AAC7C,SAASC,SAAA,EAAWC,iBAAA;AA8DZ,SAAAC,GAAA;AAxDRC,UAAA,CAAWC,wBAAA,GAA2B;AAEtC,IAAAC,SAAM,GAAAf,KAAY,OAAM,EAAMgB,OAC3B;EAEHC,EAAA,EAAMlB,MAAA;EAINmB,KAAM,EAAAnB,MAAA,EAAW;EAEboB,SAAA,EAAArB,MAAA;AAAA,EACA,CAAAsB,UAAA;AACF,IAAAC,MAAA,GAAAxB,YAAA;EACFyB,MAAM,GAINP,SAAM;AAK0B,EAC9B;AAAA,IACAQ,QAAS,YAAAC,UAAAC,KAAA;EACT,OAAAb,GAAA,CAAAc,IAAA,CAAgBC,OAAA;AAAA;AAC0B,IAC1CC,OAAA,YAAAC,SAAAC,IAAA;EACA,OAAAlB,GAAA,CAAAc,IAAc,CAAAK,KAAA,OAAAD,IAAA,CAAAb,EAAA,EAAAe,GAAA;AAChB,CAAC;AAED,IAAIC,YAAA,YAAAC,cAAAJ,IAAA;EACJ,IAAIK,QAAA;EAEJ,OAAAvC,aAAiB,CAAAyB,MAAA,EAAAK,IAAA,CAAAK,KAAA,QAAAI,QAAA,GAAAL,IAAA,CAAAb,EAAA,cAAAkB,QAAA,cAAAA,QAAA,QAAAH,GAAA;AACf;AACA,IAAAI,MAAO,GAAA3B,gBAAoB;EAC5BY,MAAA;EAEDgB,MAAA,EAAU;EACRC,cAAU,EAAK;IAChBZ,IAAA;MAEDH,QAAS;MACHK,OAAA;MACJK;IACE;EACA;EACFM,YAAA;AACA;AAIE,IAAAC,SAAK;AAAA,IAAAC,IACH;AAEAnC,UACF;EACFkC,SAAC,GAAAE,QAAA,CAAAC,aAAA;EACDF,IAAI,GAAArC,UAAa,CAAAoC,SAAW;AAC5B;AACFnC,SAAA;EAEAF,GAAK;IACH,OAAOsC,IAAA,CAAAG,OAAA;EACP;AACF,CAAC;AAID,SAAKC,mBAAAC,OAAA;EACH,IAAAC,QAAO;EACP,IAAAC,KAAO,YAAcC,MAAKA,CAAA,EAAE;IAC5BF,QAAQ,GAAmBD,OAAQ;IAEnC,OAAQ,IAAmB;EAC3B;EACA3C,GAAA,aAAa;IACdsC,IAAA,CAAAS,MAAA,gBAAAvD,IAAA,CAAAyC,MAAA,CAAAe,WAAA;MAEIC,QAAA;MACHC,MAAO,QAAU;MAEjBC,OAAW,EAAE;MACbC,QAAO,EAAM,eAAW5D,IAAS,CAAAqD,KAAA;IAClC;EAED;EACE,IAAAD,QAAM,KAAQ,KAAO,SAAS,IAAAS,KAAQ;EACtC,OAAOT,QAAM;AACb;AACAvC,IAAA,gDAAiC;EAClCD,MAAA,CAAAI,iBAAA,EAAA8C,IAAA;EAEDlD,MAAK,CAAAG,SAAA,EAAA+C,IAAA;AACH;AACAjD,IAAA;EAAA,IAAO,CAAAkD,IACL,EAAAC,IAAA,IAAAd,kBAAA;IAAA,OAAmBT,MAAA,CAAAnC,QAAA,CAAAsB,QAAA;EAAA;EAAAhB,MAEjB,CAAAqD,KAAA,CAAOC,OAAA,CAAAH,IAAS,GAAAD,IAAA,KAAc,CAAE;EAAelD,MAAA,CAAAmD,IAAA,CAAAI,MAAA,EAAAL,IAAA;EAAAlD,MACjD,CAAAmD,IAAA,CAAAK,MAAA;IACA,WAAQ;EACX,IAAAC,OAAA","ignoreList":[]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { createSchema, number, string, table } from "@rocicorp/zero";
|
|
1
|
+
import { createBuilder, createSchema, number, string, table } from "@rocicorp/zero";
|
|
2
|
+
import { addContextToQuery } from "@rocicorp/zero/bindings";
|
|
2
3
|
import { expect, test } from "vitest";
|
|
3
4
|
import { createZeroClient } from "./createZeroClient.mjs";
|
|
4
5
|
import { zql } from "./zql.mjs";
|
|
@@ -15,13 +16,17 @@ const schema = createSchema({
|
|
|
15
16
|
});
|
|
16
17
|
const allTodos = _args => zql.todo.orderBy("createdAt", "desc");
|
|
17
18
|
const oneTodo = args => zql.todo.where("id", args.id).one();
|
|
19
|
+
const invalidTodo = () => {
|
|
20
|
+
return createBuilder(schema).todo.where("id", () => "x");
|
|
21
|
+
};
|
|
18
22
|
const client = createZeroClient({
|
|
19
23
|
schema,
|
|
20
24
|
models: {},
|
|
21
25
|
groupedQueries: {
|
|
22
26
|
todo: {
|
|
23
27
|
allTodos,
|
|
24
|
-
oneTodo
|
|
28
|
+
oneTodo,
|
|
29
|
+
invalidTodo
|
|
25
30
|
}
|
|
26
31
|
},
|
|
27
32
|
instanceName: "ssr-shape-test"
|
|
@@ -41,4 +46,20 @@ test("useQuery SSR returns undefined for singular .one() queries", () => {
|
|
|
41
46
|
expect(data).toBeUndefined();
|
|
42
47
|
expect(info?.type).toBe("unknown");
|
|
43
48
|
});
|
|
49
|
+
test("query arguments are refused with query and key before a request is created", () => {
|
|
50
|
+
expect(() => {
|
|
51
|
+
client.getQuery(oneTodo, {
|
|
52
|
+
id: () => "x"
|
|
53
|
+
});
|
|
54
|
+
}).toThrow("Query 'todo.oneTodo' argument 'params.id' must be JSON: function");
|
|
55
|
+
expect(client.getQuery(oneTodo, {
|
|
56
|
+
id: "x"
|
|
57
|
+
}).args).toEqual({
|
|
58
|
+
id: "x"
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
test("query filter functions are refused before materialization admits their AST", () => {
|
|
62
|
+
expect(() => addContextToQuery(client.getQuery(invalidTodo), {})).toThrow("Query 'todo.invalidTodo' argument 'ast.where.right.value' must be JSON: function");
|
|
63
|
+
expect(() => addContextToQuery(client.getQuery(allTodos), {})).not.toThrow();
|
|
64
|
+
});
|
|
44
65
|
//# sourceMappingURL=useQuery.ssr.test.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createSchema","number","string","table","expect","test","createZeroClient","zql","window","Error","todoTable","columns","id","title","createdAt","primaryKey","schema","tables","allTodos","_args","todo","orderBy","oneTodo","args","where","one","client","models","groupedQueries","instanceName","data","info","useQuery","Array","isArray","toBe","length","filter","toEqual","find","toBeUndefined","type"],"sources":["../../src/useQuery.ssr.test.ts"],"sourcesContent":[null],"mappings":"AAYA,SAASA,YAAA,EAAcC,MAAA,EAAQC,MAAA,EAAQC,KAAA,QAAa;
|
|
1
|
+
{"version":3,"names":["createBuilder","createSchema","number","string","table","addContextToQuery","expect","test","createZeroClient","zql","window","Error","todoTable","columns","id","title","createdAt","primaryKey","schema","tables","allTodos","_args","todo","orderBy","oneTodo","args","where","one","invalidTodo","client","models","groupedQueries","instanceName","data","info","useQuery","Array","isArray","toBe","length","filter","toEqual","find","toBeUndefined","type","getQuery","toThrow","not"],"sources":["../../src/useQuery.ssr.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { createSchema, number, string, table } from "@rocicorp/zero";
|
|
1
|
+
import { createBuilder, createSchema, number, string, table } from "@rocicorp/zero";
|
|
2
|
+
import { addContextToQuery } from "@rocicorp/zero/bindings";
|
|
2
3
|
import { expect, test } from "vitest";
|
|
3
4
|
import { createZeroClient } from "./createZeroClient.native.js";
|
|
4
5
|
import { zql } from "./zql.native.js";
|
|
@@ -19,13 +20,19 @@ var allTodos = function allTodos2(_args) {
|
|
|
19
20
|
var oneTodo = function oneTodo2(args) {
|
|
20
21
|
return zql.todo.where("id", args.id).one();
|
|
21
22
|
};
|
|
23
|
+
var invalidTodo = function invalidTodo2() {
|
|
24
|
+
return createBuilder(schema).todo.where("id", function () {
|
|
25
|
+
return "x";
|
|
26
|
+
});
|
|
27
|
+
};
|
|
22
28
|
var client = createZeroClient({
|
|
23
29
|
schema,
|
|
24
30
|
models: {},
|
|
25
31
|
groupedQueries: {
|
|
26
32
|
todo: {
|
|
27
33
|
allTodos,
|
|
28
|
-
oneTodo
|
|
34
|
+
oneTodo,
|
|
35
|
+
invalidTodo
|
|
29
36
|
}
|
|
30
37
|
},
|
|
31
38
|
instanceName: "ssr-shape-test"
|
|
@@ -49,4 +56,26 @@ test("useQuery SSR returns undefined for singular .one() queries", function () {
|
|
|
49
56
|
expect(data).toBeUndefined();
|
|
50
57
|
expect(info === null || info === void 0 ? void 0 : info.type).toBe("unknown");
|
|
51
58
|
});
|
|
59
|
+
test("query arguments are refused with query and key before a request is created", function () {
|
|
60
|
+
expect(function () {
|
|
61
|
+
client.getQuery(oneTodo, {
|
|
62
|
+
id: function id() {
|
|
63
|
+
return "x";
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}).toThrow("Query 'todo.oneTodo' argument 'params.id' must be JSON: function");
|
|
67
|
+
expect(client.getQuery(oneTodo, {
|
|
68
|
+
id: "x"
|
|
69
|
+
}).args).toEqual({
|
|
70
|
+
id: "x"
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
test("query filter functions are refused before materialization admits their AST", function () {
|
|
74
|
+
expect(function () {
|
|
75
|
+
return addContextToQuery(client.getQuery(invalidTodo), {});
|
|
76
|
+
}).toThrow("Query 'todo.invalidTodo' argument 'ast.where.right.value' must be JSON: function");
|
|
77
|
+
expect(function () {
|
|
78
|
+
return addContextToQuery(client.getQuery(allTodos), {});
|
|
79
|
+
}).not.toThrow();
|
|
80
|
+
});
|
|
52
81
|
//# sourceMappingURL=useQuery.ssr.test.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createSchema","number","string","table","expect","test","createZeroClient","zql","window","Error","todoTable","columns","id","title","createdAt","primaryKey","schema","tables","allTodos","allTodos2","_args","todo","orderBy","oneTodo","oneTodo2","args","where","one","client","models","groupedQueries","instanceName"],"sources":["../../src/useQuery.ssr.test.ts"],"sourcesContent":[null],"mappings":"AAYA,SAASA,YAAA,EAAcC,MAAA,EAAQC,MAAA,EAAQC,KAAA,QAAa;
|
|
1
|
+
{"version":3,"names":["createBuilder","createSchema","number","string","table","addContextToQuery","expect","test","createZeroClient","zql","window","Error","todoTable","columns","id","title","createdAt","primaryKey","schema","tables","allTodos","allTodos2","_args","todo","orderBy","oneTodo","oneTodo2","args","where","one","invalidTodo","invalidTodo2","client","models","groupedQueries","instanceName","data","info","useQuery","Array","isArray","toBe","length","filter","toEqual","find","toBeUndefined"],"sources":["../../src/useQuery.ssr.test.ts"],"sourcesContent":[null],"mappings":"AAYA,SAASA,aAAA,EAAeC,YAAA,EAAcC,MAAA,EAAQC,MAAA,EAAQC,KAAA,QAAa;AACnE,SAASC,iBAAA,QAAyB;AAClC,SAASC,MAAA,EAAQC,IAAA,QAAY;AAE7B,SAASC,gBAAA,QAAwB;AACjC,SAASC,GAAA,QAAW;AAGpB,IAAI,OAAOC,MAAA,KAAW,aAAa;EACjC,MAAM,IAAIC,KAAA,CAAM,6DAA6D;AAC/E;AAEA,IAAAC,SAAM,GAAAR,KAAY,OAAM,EAAMS,OAC3B;EAEHC,EAAA,EAAMX,MAAA;EAENY,KAAM,EAAAZ,MAAA,EAAW;EAEba,SAAA,EAAAd,MAAA;AAAA,EACA,CAAAe,UAAA;AACF,IAAAC,MAAA,GAAAjB,YAAA;EACFkB,MAAM,GAKNP,SAAM;AAGN;AAEA,IAAAQ,QAAM,GAAS,SAAAC,SAAiBA,CAAAC,KAAA;EAC9B,OAAAb,GAAA,CAAAc,IAAA,CAAAC,OAAA;AAAA;AACS,IACTC,OAAA,YAAgBC,SAAAC,IAAA;EAAA,OACdlB,GAAQ,CAAAc,IAAA,CAAAK,KAAU,OAAAD,IAAS,CAAAb,EAAA,EAAAe,GAAA,CAAY;AAAA;AACzC,IACAC,WAAA,GAAc,SAAAC,aAAA;EACf,OAAA/B,aAAA,CAAAkB,MAAA,EAAAK,IAAA,CAAAK,KAAA;IAED,OAAK;EAGH;AACA;AACA,IAAAI,MAAQ,GAAAxB,gBAAiC;EACzCU,MAAA;EACAe,MAAA,EAAQ;EACRC,cAAa;IACdX,IAAA;MAEIH,QAAA;MACHK,OAAO;MACPK;IACA;EACD;EAEDK,YAAK;AACH;AAEE5B,IAAA,6CAA0C;EAC5C,IAAG,CAAA6B,IAAA,EAAQC,IAAA,IAAAL,MAAA,CAAAM,QAAA,CAAAlB,QAAA;EACXd,MAAA,CAAOiC,KAAA,CAAAC,OAAO,CAAAJ,IAAS,GAAAK,IAAS,KAAE,CAAI;EACvCnC,MAAA,CAAA8B,IAAA,CAAAM,MAAA,EAAAD,IAAA;EAEDnC,MAAK,CAAA8B,IAAA,CAAAO,MAAA;IACH,OAAO,IAAM;EAAqD,EAChE,EAAAC,OAAA;EACFtC,MAAA,CAAA8B,IAAA,CAAAS,IAAA;IACA,OAAO,IAAM;EACd,IAAAC,aAAA","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "on-zero",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.20",
|
|
4
4
|
"description": "A typed layer over @rocicorp/zero with queries, mutations, and permissions",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"files": [
|
|
@@ -77,6 +77,13 @@
|
|
|
77
77
|
"import": "./dist/esm/multi.mjs",
|
|
78
78
|
"require": "./dist/cjs/multi.cjs"
|
|
79
79
|
},
|
|
80
|
+
"./kv-store": {
|
|
81
|
+
"react-native": "./dist/esm/kvStore.native.js",
|
|
82
|
+
"types": "./types/kvStore.d.ts",
|
|
83
|
+
"import": "./dist/esm/kvStore.mjs",
|
|
84
|
+
"require": "./dist/cjs/kvStore.cjs",
|
|
85
|
+
"default": "./dist/esm/kvStore.mjs"
|
|
86
|
+
},
|
|
80
87
|
"./streaming": {
|
|
81
88
|
"react-native": "./dist/esm/streaming.native.js",
|
|
82
89
|
"types": "./types/streaming.d.ts",
|
|
@@ -106,7 +113,7 @@
|
|
|
106
113
|
"chokidar": "^4.0.3",
|
|
107
114
|
"citty": "^0.1.6",
|
|
108
115
|
"dequal": "^2.0.3",
|
|
109
|
-
"orez-lite": "0.16.
|
|
116
|
+
"orez-lite": "0.16.20",
|
|
110
117
|
"typescript": "7.0.2",
|
|
111
118
|
"valibot": "^1.1.0"
|
|
112
119
|
},
|
|
@@ -139,5 +146,6 @@
|
|
|
139
146
|
"react-dom": "^19.0.0",
|
|
140
147
|
"react-native": "*",
|
|
141
148
|
"vitest": "^3.1.1"
|
|
142
|
-
}
|
|
149
|
+
},
|
|
150
|
+
"releaseSourceCommit": "ea248201d35f2c30b74a6401eda49b9bdd3d2287"
|
|
143
151
|
}
|
package/src/createUseQuery.tsx
CHANGED
|
@@ -4,6 +4,7 @@ import { useContext, useMemo, useRef, type Context } from 'react'
|
|
|
4
4
|
|
|
5
5
|
import { IS_SERVER_RUNTIME } from './helpers/platform'
|
|
6
6
|
import { useZeroDebug } from './helpers/useZeroDebug'
|
|
7
|
+
import { serializeQueryParams } from './queryJson'
|
|
7
8
|
import { resolveQuery, type PlainQueryFn } from './resolveQuery'
|
|
8
9
|
|
|
9
10
|
import type {
|
|
@@ -125,7 +126,7 @@ export function createUseQuery<Schema extends ZeroSchema>({
|
|
|
125
126
|
// resolveQuery and re-create the query every render. JSON is faster than
|
|
126
127
|
// generic deep-equal for the small, simple-valued objects zero calls
|
|
127
128
|
// actually take, and matches what createUseQueryDirect does.
|
|
128
|
-
const paramsKey =
|
|
129
|
+
const paramsKey = serializeQueryParams(fn, params)
|
|
129
130
|
const queryRequest = useMemo(
|
|
130
131
|
() => resolveQuery({ customQueries, fn, params }),
|
|
131
132
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
} from './createUseQuery'
|
|
16
16
|
import { useEmitterValue, type Emitter } from './helpers/emitter'
|
|
17
17
|
import { IS_SERVER_RUNTIME } from './helpers/platform'
|
|
18
|
+
import { serializeQueryParams } from './queryJson'
|
|
18
19
|
import { resolveQuery } from './resolveQuery'
|
|
19
20
|
|
|
20
21
|
import type {
|
|
@@ -294,7 +295,7 @@ export function createUseQueryDirect<Schema extends ZeroSchema>({
|
|
|
294
295
|
ttl = options.ttl ?? DEFAULT_TTL_MS
|
|
295
296
|
}
|
|
296
297
|
|
|
297
|
-
const paramsKey =
|
|
298
|
+
const paramsKey = serializeQueryParams(fn, params)
|
|
298
299
|
|
|
299
300
|
// resolve the query once so we know its singular/plural format up front —
|
|
300
301
|
// the no-zero / disabled snapshot needs to match that format so .filter /
|