on-zero 0.14.3 → 0.14.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/dist/cjs/createUseQueryDirect.cjs +6 -6
- package/dist/cjs/createUseQueryDirect.native.js +6 -9
- package/dist/cjs/createUseQueryDirect.native.js.map +1 -1
- package/dist/cjs/createZeroClient.cjs +28 -30
- package/dist/cjs/createZeroClient.native.js +49 -35
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/provideZero.eagerInstance.test.cjs +196 -0
- package/dist/cjs/provideZero.eagerInstance.test.native.js +229 -0
- package/dist/cjs/provideZero.eagerInstance.test.native.js.map +1 -0
- package/dist/cjs/provideZero.ssr.test.cjs +60 -0
- package/dist/cjs/provideZero.ssr.test.native.js +69 -0
- package/dist/cjs/provideZero.ssr.test.native.js.map +1 -0
- package/dist/esm/createUseQueryDirect.mjs +6 -6
- package/dist/esm/createUseQueryDirect.mjs.map +1 -1
- package/dist/esm/createUseQueryDirect.native.js +6 -9
- package/dist/esm/createUseQueryDirect.native.js.map +1 -1
- package/dist/esm/createZeroClient.mjs +28 -30
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +49 -35
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/provideZero.eagerInstance.test.mjs +197 -0
- package/dist/esm/provideZero.eagerInstance.test.mjs.map +1 -0
- package/dist/esm/provideZero.eagerInstance.test.native.js +227 -0
- package/dist/esm/provideZero.eagerInstance.test.native.js.map +1 -0
- package/dist/esm/provideZero.ssr.test.mjs +61 -0
- package/dist/esm/provideZero.ssr.test.mjs.map +1 -0
- package/dist/esm/provideZero.ssr.test.native.js +67 -0
- package/dist/esm/provideZero.ssr.test.native.js.map +1 -0
- package/package.json +2 -2
- package/src/createUseQueryDirect.tsx +22 -17
- package/src/createZeroClient.tsx +86 -75
- package/src/multiInstanceNested.test.tsx +2 -2
- package/src/provideZero.eagerInstance.test.tsx +235 -0
- package/src/provideZero.ssr.test.tsx +69 -0
- package/types/createUseQueryDirect.d.ts.map +1 -1
- package/types/createZeroClient.d.ts.map +1 -1
- package/types/provideZero.eagerInstance.test.d.ts +5 -0
- package/types/provideZero.eagerInstance.test.d.ts.map +1 -0
- package/types/provideZero.ssr.test.d.ts +2 -0
- package/types/provideZero.ssr.test.d.ts.map +1 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
var import_zero = require("@rocicorp/zero");
|
|
2
|
+
var import_react = require("@rocicorp/zero/react");
|
|
3
|
+
var import_react2 = require("react");
|
|
4
|
+
var import_client = require("react-dom/client");
|
|
5
|
+
var import_server = require("react-dom/server");
|
|
6
|
+
var import_vitest = require("vitest");
|
|
7
|
+
var import_createZeroClient = require("./createZeroClient.cjs");
|
|
8
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
9
|
+
const fakeZero = import_vitest.vi.hoisted(() => {
|
|
10
|
+
const instances = [];
|
|
11
|
+
class FakeZero {
|
|
12
|
+
clientID;
|
|
13
|
+
context = {};
|
|
14
|
+
query = {};
|
|
15
|
+
connection = {
|
|
16
|
+
state: {
|
|
17
|
+
current: {
|
|
18
|
+
name: "connecting"
|
|
19
|
+
},
|
|
20
|
+
subscribe: () => () => {}
|
|
21
|
+
},
|
|
22
|
+
connect: import_vitest.vi.fn(async () => {})
|
|
23
|
+
};
|
|
24
|
+
close = import_vitest.vi.fn();
|
|
25
|
+
delete = import_vitest.vi.fn(async () => ({
|
|
26
|
+
errors: []
|
|
27
|
+
}));
|
|
28
|
+
run = import_vitest.vi.fn(async () => []);
|
|
29
|
+
constructor(options) {
|
|
30
|
+
instances.push(this);
|
|
31
|
+
this.clientID = `fake-${instances.length}-${options.userID ?? "anon"}`;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
FakeZero,
|
|
36
|
+
instances
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
import_vitest.vi.mock("@rocicorp/zero", async importOriginal => {
|
|
40
|
+
const actual = await importOriginal();
|
|
41
|
+
return {
|
|
42
|
+
...actual,
|
|
43
|
+
Zero: fakeZero.FakeZero
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
globalThis.IS_REACT_ACT_ENVIRONMENT = true;
|
|
47
|
+
const todoTable = (0, import_zero.table)("todo").columns({
|
|
48
|
+
id: (0, import_zero.string)(),
|
|
49
|
+
title: (0, import_zero.string)()
|
|
50
|
+
}).primaryKey("id");
|
|
51
|
+
const schema = (0, import_zero.createSchema)({
|
|
52
|
+
tables: [todoTable]
|
|
53
|
+
});
|
|
54
|
+
let clientCount = 0;
|
|
55
|
+
const makeClient = () => (0, import_createZeroClient.createZeroClient)({
|
|
56
|
+
schema,
|
|
57
|
+
models: {},
|
|
58
|
+
groupedQueries: {},
|
|
59
|
+
instanceName: `eager-instance-${++clientCount}`
|
|
60
|
+
});
|
|
61
|
+
let container;
|
|
62
|
+
let root;
|
|
63
|
+
(0, import_vitest.beforeEach)(() => {
|
|
64
|
+
fakeZero.instances.length = 0;
|
|
65
|
+
container = document.createElement("div");
|
|
66
|
+
root = null;
|
|
67
|
+
});
|
|
68
|
+
(0, import_vitest.afterEach)(() => {
|
|
69
|
+
if (root) (0, import_react2.act)(() => root?.unmount());
|
|
70
|
+
});
|
|
71
|
+
(0, import_vitest.test)("a consumer reading zero in its first render gets a live instance, with no effects flushed", () => {
|
|
72
|
+
const client = makeClient();
|
|
73
|
+
const install = import_vitest.vi.fn();
|
|
74
|
+
const seen = {};
|
|
75
|
+
const Probe = () => {
|
|
76
|
+
seen.transportInstalled = install.mock.calls.length > 0;
|
|
77
|
+
seen.contextClientID = (0, import_react.useZero)().clientID;
|
|
78
|
+
try {
|
|
79
|
+
seen.facadeClientID = client.zero.clientID;
|
|
80
|
+
} catch (error) {
|
|
81
|
+
seen.error = error.message;
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
};
|
|
85
|
+
(0, import_server.renderToString)(/* @__PURE__ */(0, import_jsx_runtime.jsx)(client.ProvideZero, {
|
|
86
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
87
|
+
userID: "first-render",
|
|
88
|
+
transport: {
|
|
89
|
+
install
|
|
90
|
+
},
|
|
91
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(Probe, {})
|
|
92
|
+
}));
|
|
93
|
+
(0, import_vitest.expect)(seen.error).toBeUndefined();
|
|
94
|
+
(0, import_vitest.expect)(fakeZero.instances.length).toBe(1);
|
|
95
|
+
(0, import_vitest.expect)(seen.facadeClientID).toBe(fakeZero.instances[0].clientID);
|
|
96
|
+
(0, import_vitest.expect)(seen.contextClientID).toBe(fakeZero.instances[0].clientID);
|
|
97
|
+
(0, import_vitest.expect)(seen.transportInstalled).toBe(true);
|
|
98
|
+
});
|
|
99
|
+
(0, import_vitest.test)("the first committed render already carries the real instance", () => {
|
|
100
|
+
const client = makeClient();
|
|
101
|
+
const clientIDs = [];
|
|
102
|
+
const Probe = () => {
|
|
103
|
+
clientIDs.push((0, import_react.useZero)().clientID);
|
|
104
|
+
return null;
|
|
105
|
+
};
|
|
106
|
+
root = (0, import_client.createRoot)(container);
|
|
107
|
+
(0, import_react2.act)(() => {
|
|
108
|
+
root?.render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(client.ProvideZero, {
|
|
109
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
110
|
+
userID: "committed",
|
|
111
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(Probe, {})
|
|
112
|
+
}));
|
|
113
|
+
});
|
|
114
|
+
(0, import_vitest.expect)(clientIDs.length).toBeGreaterThan(0);
|
|
115
|
+
(0, import_vitest.expect)(clientIDs).not.toContain("disabled");
|
|
116
|
+
(0, import_vitest.expect)(clientIDs[0]).toBe(fakeZero.instances[0].clientID);
|
|
117
|
+
});
|
|
118
|
+
(0, import_vitest.test)("StrictMode double-invoked render constructs exactly one instance", () => {
|
|
119
|
+
const client = makeClient();
|
|
120
|
+
root = (0, import_client.createRoot)(container);
|
|
121
|
+
(0, import_react2.act)(() => {
|
|
122
|
+
root?.render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react2.StrictMode, {
|
|
123
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(client.ProvideZero, {
|
|
124
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
125
|
+
userID: "strict",
|
|
126
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)("span", {
|
|
127
|
+
children: "ok"
|
|
128
|
+
})
|
|
129
|
+
})
|
|
130
|
+
}));
|
|
131
|
+
});
|
|
132
|
+
(0, import_vitest.expect)(fakeZero.instances.length).toBe(1);
|
|
133
|
+
(0, import_vitest.expect)(fakeZero.instances[0].close).not.toHaveBeenCalled();
|
|
134
|
+
});
|
|
135
|
+
(0, import_vitest.test)("an identity change rotates the instance and closes the outgoing one", () => {
|
|
136
|
+
const client = makeClient();
|
|
137
|
+
root = (0, import_client.createRoot)(container);
|
|
138
|
+
const render = userID => (0, import_react2.act)(() => {
|
|
139
|
+
root?.render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(client.ProvideZero, {
|
|
140
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
141
|
+
userID,
|
|
142
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)("span", {
|
|
143
|
+
children: "ok"
|
|
144
|
+
})
|
|
145
|
+
}));
|
|
146
|
+
});
|
|
147
|
+
render("one");
|
|
148
|
+
(0, import_vitest.expect)(fakeZero.instances.length).toBe(1);
|
|
149
|
+
render("two");
|
|
150
|
+
(0, import_vitest.expect)(fakeZero.instances.length).toBe(2);
|
|
151
|
+
(0, import_vitest.expect)(fakeZero.instances[0].close).toHaveBeenCalled();
|
|
152
|
+
(0, import_vitest.expect)(fakeZero.instances[1].close).not.toHaveBeenCalled();
|
|
153
|
+
});
|
|
154
|
+
(0, import_vitest.test)("a rotation that never commits is undone, not duplicated", () => {
|
|
155
|
+
const client = makeClient();
|
|
156
|
+
root = (0, import_client.createRoot)(container);
|
|
157
|
+
const mount = userID => (0, import_react2.act)(() => {
|
|
158
|
+
root?.render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(client.ProvideZero, {
|
|
159
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
160
|
+
userID,
|
|
161
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)("span", {
|
|
162
|
+
children: "ok"
|
|
163
|
+
})
|
|
164
|
+
}));
|
|
165
|
+
});
|
|
166
|
+
mount("committed");
|
|
167
|
+
const first = fakeZero.instances[0];
|
|
168
|
+
(0, import_server.renderToString)(/* @__PURE__ */(0, import_jsx_runtime.jsx)(client.ProvideZero, {
|
|
169
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
170
|
+
userID: "abandoned",
|
|
171
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)("span", {
|
|
172
|
+
children: "ok"
|
|
173
|
+
})
|
|
174
|
+
}));
|
|
175
|
+
(0, import_vitest.expect)(fakeZero.instances.length).toBe(2);
|
|
176
|
+
(0, import_vitest.expect)(first.close).not.toHaveBeenCalled();
|
|
177
|
+
mount("committed");
|
|
178
|
+
(0, import_vitest.expect)(fakeZero.instances.length).toBe(2);
|
|
179
|
+
(0, import_vitest.expect)(first.close).not.toHaveBeenCalled();
|
|
180
|
+
(0, import_vitest.expect)(fakeZero.instances[1].close).toHaveBeenCalled();
|
|
181
|
+
});
|
|
182
|
+
(0, import_vitest.test)("disable=true constructs nothing", () => {
|
|
183
|
+
const client = makeClient();
|
|
184
|
+
root = (0, import_client.createRoot)(container);
|
|
185
|
+
(0, import_react2.act)(() => {
|
|
186
|
+
root?.render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(client.ProvideZero, {
|
|
187
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
188
|
+
userID: "off",
|
|
189
|
+
disable: true,
|
|
190
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)("span", {
|
|
191
|
+
children: "ok"
|
|
192
|
+
})
|
|
193
|
+
}));
|
|
194
|
+
});
|
|
195
|
+
(0, import_vitest.expect)(fakeZero.instances.length).toBe(0);
|
|
196
|
+
});
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
4
|
+
var import_zero = require("@rocicorp/zero");
|
|
5
|
+
var import_react = require("@rocicorp/zero/react");
|
|
6
|
+
var import_react2 = require("react");
|
|
7
|
+
var import_client = require("react-dom/client");
|
|
8
|
+
var import_server = require("react-dom/server");
|
|
9
|
+
var import_vitest = require("vitest");
|
|
10
|
+
var import_createZeroClient = require("./createZeroClient.native.js");
|
|
11
|
+
function _class_call_check(instance, Constructor) {
|
|
12
|
+
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
|
|
13
|
+
}
|
|
14
|
+
function _define_property(obj, key, value) {
|
|
15
|
+
if (key in obj) {
|
|
16
|
+
Object.defineProperty(obj, key, {
|
|
17
|
+
value,
|
|
18
|
+
enumerable: true,
|
|
19
|
+
configurable: true,
|
|
20
|
+
writable: true
|
|
21
|
+
});
|
|
22
|
+
} else obj[key] = value;
|
|
23
|
+
return obj;
|
|
24
|
+
}
|
|
25
|
+
var fakeZero = import_vitest.vi.hoisted(function () {
|
|
26
|
+
var instances = [];
|
|
27
|
+
var FakeZero = function FakeZero2(options) {
|
|
28
|
+
"use strict";
|
|
29
|
+
|
|
30
|
+
_class_call_check(this, FakeZero2);
|
|
31
|
+
var _options_userID;
|
|
32
|
+
_define_property(this, "clientID", void 0);
|
|
33
|
+
_define_property(this, "context", {});
|
|
34
|
+
_define_property(this, "query", {});
|
|
35
|
+
_define_property(this, "connection", {
|
|
36
|
+
state: {
|
|
37
|
+
current: {
|
|
38
|
+
name: "connecting"
|
|
39
|
+
},
|
|
40
|
+
subscribe: function subscribe() {
|
|
41
|
+
return function () {};
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
connect: import_vitest.vi.fn(async function () {})
|
|
45
|
+
});
|
|
46
|
+
_define_property(this, "close", import_vitest.vi.fn());
|
|
47
|
+
_define_property(this, "delete", import_vitest.vi.fn(async function () {
|
|
48
|
+
return {
|
|
49
|
+
errors: []
|
|
50
|
+
};
|
|
51
|
+
}));
|
|
52
|
+
_define_property(this, "run", import_vitest.vi.fn(async function () {
|
|
53
|
+
return [];
|
|
54
|
+
}));
|
|
55
|
+
instances.push(this);
|
|
56
|
+
this.clientID = `fake-${instances.length}-${(_options_userID = options.userID) !== null && _options_userID !== void 0 ? _options_userID : "anon"}`;
|
|
57
|
+
};
|
|
58
|
+
return {
|
|
59
|
+
FakeZero,
|
|
60
|
+
instances
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
import_vitest.vi.mock("@rocicorp/zero", async function (importOriginal) {
|
|
64
|
+
var actual = await importOriginal();
|
|
65
|
+
return {
|
|
66
|
+
...actual,
|
|
67
|
+
Zero: fakeZero.FakeZero
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
globalThis.IS_REACT_ACT_ENVIRONMENT = true;
|
|
71
|
+
var todoTable = (0, import_zero.table)("todo").columns({
|
|
72
|
+
id: (0, import_zero.string)(),
|
|
73
|
+
title: (0, import_zero.string)()
|
|
74
|
+
}).primaryKey("id");
|
|
75
|
+
var schema = (0, import_zero.createSchema)({
|
|
76
|
+
tables: [todoTable]
|
|
77
|
+
});
|
|
78
|
+
var clientCount = 0;
|
|
79
|
+
var makeClient = function makeClient2() {
|
|
80
|
+
return (0, import_createZeroClient.createZeroClient)({
|
|
81
|
+
schema,
|
|
82
|
+
models: {},
|
|
83
|
+
groupedQueries: {},
|
|
84
|
+
instanceName: `eager-instance-${++clientCount}`
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
var container;
|
|
88
|
+
var root;
|
|
89
|
+
(0, import_vitest.beforeEach)(function () {
|
|
90
|
+
fakeZero.instances.length = 0;
|
|
91
|
+
container = document.createElement("div");
|
|
92
|
+
root = null;
|
|
93
|
+
});
|
|
94
|
+
(0, import_vitest.afterEach)(function () {
|
|
95
|
+
if (root) (0, import_react2.act)(function () {
|
|
96
|
+
return root === null || root === void 0 ? void 0 : root.unmount();
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
(0, import_vitest.test)("a consumer reading zero in its first render gets a live instance, with no effects flushed", function () {
|
|
100
|
+
var client = makeClient();
|
|
101
|
+
var install = import_vitest.vi.fn();
|
|
102
|
+
var seen = {};
|
|
103
|
+
var Probe = function Probe2() {
|
|
104
|
+
seen.transportInstalled = install.mock.calls.length > 0;
|
|
105
|
+
seen.contextClientID = (0, import_react.useZero)().clientID;
|
|
106
|
+
try {
|
|
107
|
+
seen.facadeClientID = client.zero.clientID;
|
|
108
|
+
} catch (error) {
|
|
109
|
+
seen.error = error.message;
|
|
110
|
+
}
|
|
111
|
+
return null;
|
|
112
|
+
};
|
|
113
|
+
(0, import_server.renderToString)(/* @__PURE__ */(0, import_jsx_runtime.jsx)(client.ProvideZero, {
|
|
114
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
115
|
+
userID: "first-render",
|
|
116
|
+
transport: {
|
|
117
|
+
install
|
|
118
|
+
},
|
|
119
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(Probe, {})
|
|
120
|
+
}));
|
|
121
|
+
(0, import_vitest.expect)(seen.error).toBeUndefined();
|
|
122
|
+
(0, import_vitest.expect)(fakeZero.instances.length).toBe(1);
|
|
123
|
+
(0, import_vitest.expect)(seen.facadeClientID).toBe(fakeZero.instances[0].clientID);
|
|
124
|
+
(0, import_vitest.expect)(seen.contextClientID).toBe(fakeZero.instances[0].clientID);
|
|
125
|
+
(0, import_vitest.expect)(seen.transportInstalled).toBe(true);
|
|
126
|
+
});
|
|
127
|
+
(0, import_vitest.test)("the first committed render already carries the real instance", function () {
|
|
128
|
+
var client = makeClient();
|
|
129
|
+
var clientIDs = [];
|
|
130
|
+
var Probe = function Probe2() {
|
|
131
|
+
clientIDs.push((0, import_react.useZero)().clientID);
|
|
132
|
+
return null;
|
|
133
|
+
};
|
|
134
|
+
root = (0, import_client.createRoot)(container);
|
|
135
|
+
(0, import_react2.act)(function () {
|
|
136
|
+
root === null || root === void 0 ? void 0 : root.render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(client.ProvideZero, {
|
|
137
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
138
|
+
userID: "committed",
|
|
139
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(Probe, {})
|
|
140
|
+
}));
|
|
141
|
+
});
|
|
142
|
+
(0, import_vitest.expect)(clientIDs.length).toBeGreaterThan(0);
|
|
143
|
+
(0, import_vitest.expect)(clientIDs).not.toContain("disabled");
|
|
144
|
+
(0, import_vitest.expect)(clientIDs[0]).toBe(fakeZero.instances[0].clientID);
|
|
145
|
+
});
|
|
146
|
+
(0, import_vitest.test)("StrictMode double-invoked render constructs exactly one instance", function () {
|
|
147
|
+
var client = makeClient();
|
|
148
|
+
root = (0, import_client.createRoot)(container);
|
|
149
|
+
(0, import_react2.act)(function () {
|
|
150
|
+
root === null || root === void 0 ? void 0 : root.render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react2.StrictMode, {
|
|
151
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(client.ProvideZero, {
|
|
152
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
153
|
+
userID: "strict",
|
|
154
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)("span", {
|
|
155
|
+
children: "ok"
|
|
156
|
+
})
|
|
157
|
+
})
|
|
158
|
+
}));
|
|
159
|
+
});
|
|
160
|
+
(0, import_vitest.expect)(fakeZero.instances.length).toBe(1);
|
|
161
|
+
(0, import_vitest.expect)(fakeZero.instances[0].close).not.toHaveBeenCalled();
|
|
162
|
+
});
|
|
163
|
+
(0, import_vitest.test)("an identity change rotates the instance and closes the outgoing one", function () {
|
|
164
|
+
var client = makeClient();
|
|
165
|
+
root = (0, import_client.createRoot)(container);
|
|
166
|
+
var render = function render2(userID) {
|
|
167
|
+
return (0, import_react2.act)(function () {
|
|
168
|
+
root === null || root === void 0 ? void 0 : root.render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(client.ProvideZero, {
|
|
169
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
170
|
+
userID,
|
|
171
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)("span", {
|
|
172
|
+
children: "ok"
|
|
173
|
+
})
|
|
174
|
+
}));
|
|
175
|
+
});
|
|
176
|
+
};
|
|
177
|
+
render("one");
|
|
178
|
+
(0, import_vitest.expect)(fakeZero.instances.length).toBe(1);
|
|
179
|
+
render("two");
|
|
180
|
+
(0, import_vitest.expect)(fakeZero.instances.length).toBe(2);
|
|
181
|
+
(0, import_vitest.expect)(fakeZero.instances[0].close).toHaveBeenCalled();
|
|
182
|
+
(0, import_vitest.expect)(fakeZero.instances[1].close).not.toHaveBeenCalled();
|
|
183
|
+
});
|
|
184
|
+
(0, import_vitest.test)("a rotation that never commits is undone, not duplicated", function () {
|
|
185
|
+
var client = makeClient();
|
|
186
|
+
root = (0, import_client.createRoot)(container);
|
|
187
|
+
var mount = function mount2(userID) {
|
|
188
|
+
return (0, import_react2.act)(function () {
|
|
189
|
+
root === null || root === void 0 ? void 0 : root.render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(client.ProvideZero, {
|
|
190
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
191
|
+
userID,
|
|
192
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)("span", {
|
|
193
|
+
children: "ok"
|
|
194
|
+
})
|
|
195
|
+
}));
|
|
196
|
+
});
|
|
197
|
+
};
|
|
198
|
+
mount("committed");
|
|
199
|
+
var first = fakeZero.instances[0];
|
|
200
|
+
(0, import_server.renderToString)(/* @__PURE__ */(0, import_jsx_runtime.jsx)(client.ProvideZero, {
|
|
201
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
202
|
+
userID: "abandoned",
|
|
203
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)("span", {
|
|
204
|
+
children: "ok"
|
|
205
|
+
})
|
|
206
|
+
}));
|
|
207
|
+
(0, import_vitest.expect)(fakeZero.instances.length).toBe(2);
|
|
208
|
+
(0, import_vitest.expect)(first.close).not.toHaveBeenCalled();
|
|
209
|
+
mount("committed");
|
|
210
|
+
(0, import_vitest.expect)(fakeZero.instances.length).toBe(2);
|
|
211
|
+
(0, import_vitest.expect)(first.close).not.toHaveBeenCalled();
|
|
212
|
+
(0, import_vitest.expect)(fakeZero.instances[1].close).toHaveBeenCalled();
|
|
213
|
+
});
|
|
214
|
+
(0, import_vitest.test)("disable=true constructs nothing", function () {
|
|
215
|
+
var client = makeClient();
|
|
216
|
+
root = (0, import_client.createRoot)(container);
|
|
217
|
+
(0, import_react2.act)(function () {
|
|
218
|
+
root === null || root === void 0 ? void 0 : root.render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(client.ProvideZero, {
|
|
219
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
220
|
+
userID: "off",
|
|
221
|
+
disable: true,
|
|
222
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)("span", {
|
|
223
|
+
children: "ok"
|
|
224
|
+
})
|
|
225
|
+
}));
|
|
226
|
+
});
|
|
227
|
+
(0, import_vitest.expect)(fakeZero.instances.length).toBe(0);
|
|
228
|
+
});
|
|
229
|
+
//# sourceMappingURL=provideZero.eagerInstance.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["import_jsx_runtime","require","import_zero","import_react","import_react2","import_client","import_server","import_vitest","import_createZeroClient","_class_call_check","instance","Constructor","TypeError","_define_property","obj","key","value","Object","defineProperty","enumerable","configurable","writable","fakeZero","vi","hoisted","instances","FakeZero","FakeZero2","options","_options_userID","state","current","name","subscribe","connect","fn","errors","push","clientID","length","userID","mock","importOriginal","actual","Zero","globalThis","IS_REACT_ACT_ENVIRONMENT","todoTable","table","columns","id","string","title","primaryKey","schema","createSchema","tables","clientCount","makeClient","makeClient2","createZeroClient","models","groupedQueries","instanceName","container","root","beforeEach","document","createElement","afterEach","act","unmount","test","client","install","seen","Probe","Probe2","transportInstalled","calls","contextClientID","useZero","facadeClientID","zero","error","message","renderToString","jsx","ProvideZero","cacheURL","transport","children","expect","toBeUndefined","toBe","clientIDs","createRoot","render","toBeGreaterThan","not","toContain","StrictMode"],"sources":["../../src/provideZero.eagerInstance.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
var import_zero = require("@rocicorp/zero");
|
|
2
|
+
var import_react = require("@rocicorp/zero/react");
|
|
3
|
+
var import_server = require("react-dom/server");
|
|
4
|
+
var import_vitest = require("vitest");
|
|
5
|
+
var import_createZeroClient = require("./createZeroClient.cjs");
|
|
6
|
+
var import_platform = require("./helpers/platform.cjs");
|
|
7
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
8
|
+
const fakeZero = import_vitest.vi.hoisted(() => {
|
|
9
|
+
const instances = [];
|
|
10
|
+
class FakeZero {
|
|
11
|
+
constructor() {
|
|
12
|
+
instances.push(this);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
FakeZero,
|
|
17
|
+
instances
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
import_vitest.vi.mock("@rocicorp/zero", async importOriginal => {
|
|
21
|
+
const actual = await importOriginal();
|
|
22
|
+
return {
|
|
23
|
+
...actual,
|
|
24
|
+
Zero: fakeZero.FakeZero
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
if (typeof window !== "undefined") {
|
|
28
|
+
throw new Error("provideZero.ssr.test.tsx must run with @vitest-environment node");
|
|
29
|
+
}
|
|
30
|
+
const todoTable = (0, import_zero.table)("todo").columns({
|
|
31
|
+
id: (0, import_zero.string)(),
|
|
32
|
+
title: (0, import_zero.string)()
|
|
33
|
+
}).primaryKey("id");
|
|
34
|
+
const schema = (0, import_zero.createSchema)({
|
|
35
|
+
tables: [todoTable]
|
|
36
|
+
});
|
|
37
|
+
const client = (0, import_createZeroClient.createZeroClient)({
|
|
38
|
+
schema,
|
|
39
|
+
models: {},
|
|
40
|
+
groupedQueries: {},
|
|
41
|
+
instanceName: "ssr-eager-test"
|
|
42
|
+
});
|
|
43
|
+
(0, import_vitest.test)("the server runtime is what this file exercises", () => {
|
|
44
|
+
(0, import_vitest.expect)(import_platform.IS_SERVER_RUNTIME).toBe(true);
|
|
45
|
+
});
|
|
46
|
+
(0, import_vitest.test)("rendering ProvideZero on the server constructs no client", () => {
|
|
47
|
+
let contextClientID;
|
|
48
|
+
const Probe = () => {
|
|
49
|
+
contextClientID = (0, import_react.useZero)().clientID;
|
|
50
|
+
return null;
|
|
51
|
+
};
|
|
52
|
+
(0, import_server.renderToString)(/* @__PURE__ */(0, import_jsx_runtime.jsx)(client.ProvideZero, {
|
|
53
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
54
|
+
userID: "ssr",
|
|
55
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(Probe, {})
|
|
56
|
+
}));
|
|
57
|
+
(0, import_vitest.expect)(fakeZero.instances.length).toBe(0);
|
|
58
|
+
(0, import_vitest.expect)(contextClientID).toBe("disabled");
|
|
59
|
+
(0, import_vitest.expect)(() => client.zero.clientID).toThrow(/Zero instance not initialized/);
|
|
60
|
+
});
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
4
|
+
var import_zero = require("@rocicorp/zero");
|
|
5
|
+
var import_react = require("@rocicorp/zero/react");
|
|
6
|
+
var import_server = require("react-dom/server");
|
|
7
|
+
var import_vitest = require("vitest");
|
|
8
|
+
var import_createZeroClient = require("./createZeroClient.native.js");
|
|
9
|
+
var import_platform = require("./helpers/platform.native.js");
|
|
10
|
+
function _class_call_check(instance, Constructor) {
|
|
11
|
+
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
|
|
12
|
+
}
|
|
13
|
+
var fakeZero = import_vitest.vi.hoisted(function () {
|
|
14
|
+
var instances = [];
|
|
15
|
+
var FakeZero = function FakeZero2() {
|
|
16
|
+
"use strict";
|
|
17
|
+
|
|
18
|
+
_class_call_check(this, FakeZero2);
|
|
19
|
+
instances.push(this);
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
FakeZero,
|
|
23
|
+
instances
|
|
24
|
+
};
|
|
25
|
+
});
|
|
26
|
+
import_vitest.vi.mock("@rocicorp/zero", async function (importOriginal) {
|
|
27
|
+
var actual = await importOriginal();
|
|
28
|
+
return {
|
|
29
|
+
...actual,
|
|
30
|
+
Zero: fakeZero.FakeZero
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
if (typeof window !== "undefined") {
|
|
34
|
+
throw new Error("provideZero.ssr.test.tsx must run with @vitest-environment node");
|
|
35
|
+
}
|
|
36
|
+
var todoTable = (0, import_zero.table)("todo").columns({
|
|
37
|
+
id: (0, import_zero.string)(),
|
|
38
|
+
title: (0, import_zero.string)()
|
|
39
|
+
}).primaryKey("id");
|
|
40
|
+
var schema = (0, import_zero.createSchema)({
|
|
41
|
+
tables: [todoTable]
|
|
42
|
+
});
|
|
43
|
+
var client = (0, import_createZeroClient.createZeroClient)({
|
|
44
|
+
schema,
|
|
45
|
+
models: {},
|
|
46
|
+
groupedQueries: {},
|
|
47
|
+
instanceName: "ssr-eager-test"
|
|
48
|
+
});
|
|
49
|
+
(0, import_vitest.test)("the server runtime is what this file exercises", function () {
|
|
50
|
+
(0, import_vitest.expect)(import_platform.IS_SERVER_RUNTIME).toBe(true);
|
|
51
|
+
});
|
|
52
|
+
(0, import_vitest.test)("rendering ProvideZero on the server constructs no client", function () {
|
|
53
|
+
var contextClientID;
|
|
54
|
+
var Probe = function Probe2() {
|
|
55
|
+
contextClientID = (0, import_react.useZero)().clientID;
|
|
56
|
+
return null;
|
|
57
|
+
};
|
|
58
|
+
(0, import_server.renderToString)(/* @__PURE__ */(0, import_jsx_runtime.jsx)(client.ProvideZero, {
|
|
59
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
60
|
+
userID: "ssr",
|
|
61
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(Probe, {})
|
|
62
|
+
}));
|
|
63
|
+
(0, import_vitest.expect)(fakeZero.instances.length).toBe(0);
|
|
64
|
+
(0, import_vitest.expect)(contextClientID).toBe("disabled");
|
|
65
|
+
(0, import_vitest.expect)(function () {
|
|
66
|
+
return client.zero.clientID;
|
|
67
|
+
}).toThrow(/Zero instance not initialized/);
|
|
68
|
+
});
|
|
69
|
+
//# sourceMappingURL=provideZero.ssr.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["import_jsx_runtime","require","import_zero","import_react","import_server","import_vitest","import_createZeroClient","import_platform","_class_call_check","instance","Constructor","TypeError","fakeZero","vi","hoisted","instances","FakeZero","FakeZero2","push","mock","importOriginal","actual","Zero","window","Error","todoTable","table","columns","id","string","title","primaryKey","schema","createSchema","tables","client","createZeroClient","models","groupedQueries","instanceName","test"],"sources":["../../src/provideZero.ssr.test.tsx"],"sourcesContent":[null],"mappings":"AAOA;;AACA,IAAAA,kBAAwB,GAAAC,OAAA;AACxB,IAAAC,WAAA,GAAAD,OAA+B;AAC/B,IAAAE,YAAA,GAAAF,OAAiC;AAiBjC,IAAAG,aAAA,GAAAH,OAAA,mBAAiC;AACjC,IAAAI,aAAA,GAAAJ,OAAkC;AA+B5B,IAAAK,uBAAA,GAAAL,OAAA;AA/CN,IAAAM,eAAiB,GAAAN,OAAA,+BAAiB;AAChC,SAAMO,iBAAwBA,CAAAC,QAAA,EAAAC,WAAA;EAC9B,MAAMD,QAAA,YAASC,WAAA,aAAAC,SAAA;AAAA;AAEX,IAAAC,QAAA,GAAAP,aAAmB,CAAAQ,EAAA,CAAAC,OAAA;EAAA,IACrBC,SAAA;EACF,IAAAC,QAAA,YAAAC,UAAA;IACA,YAAS;;IACVT,iBAAA,OAAAS,SAAA;IAEDF,SAAA,CAAAG,IAAG,KAAK;EACN;EACA,OAAO;IACRF,QAAA;IAKGD;EACF;AACF;AAEAV,aAAM,CAAAQ,EAAA,CAAAM,IAAA,CAAY,kCACfC,cAAc;EAEjB,IAAMC,MAAA,SAASD,cAAA;EAEf,OAAM;IACJ,GAAAC,MAAA;IACAC,IAAA,EAAQV,QAAC,CAAAI;EACT;AAAiB,EACjB;AACF,IAAC,OAAAO,MAAA;EAAA,MAED,IAAAC,KAAA,kEAA6D;AAC3D;AACF,IAACC,SAAA,OAAAvB,WAAA,CAAAwB,KAAA,UAAAC,OAAA;EAAAC,EAED,MAAA1B,WAAA,CAAA2B,MAAK;EACHC,KAAI,MAAA5B,WAAA,CAAA2B,MAAA;AACJ,GAAAE,UAAM,KAAQ;AACZ,IAAAC,MAAA,OAAA9B,WAAmB,CAAA+B,YAAA;EACnBC,MAAA,GACFT,SAAA;AAEA;AAGE,IACFU,MAAA,OAAA7B,uBAAA,CAAA8B,gBAAA;EAEAJ,MAAA;EACAK,MAAA;EACAC,cAAA;EAAwEC,YACtE;AAAA,EACF;AACF,CAAC,GAAAlC,aAAA,CAAAmC,IAAA","ignoreList":[]}
|
|
@@ -169,7 +169,7 @@ function createUseQueryDirect({
|
|
|
169
169
|
function useQueryDirect(...args) {
|
|
170
170
|
const disableMode = useContext(DisabledContext);
|
|
171
171
|
const [fn, paramsOrOptions, optionsArg] = args;
|
|
172
|
-
|
|
172
|
+
useEmitterValue(zeroVersion);
|
|
173
173
|
const {
|
|
174
174
|
params,
|
|
175
175
|
options
|
|
@@ -193,12 +193,12 @@ function createUseQueryDirect({
|
|
|
193
193
|
[fn, paramsKey]);
|
|
194
194
|
const emptyForQuery = useMemo(() => emptyResponseFor(queryRequest), [queryRequest]);
|
|
195
195
|
const lastRef = useRef(emptyForQuery);
|
|
196
|
+
const zeroInstance = getZero();
|
|
196
197
|
const view = useMemo(() => {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}, [queryRequest, enabled, ttl, version]);
|
|
198
|
+
if (!zeroInstance) return null;
|
|
199
|
+
const effectiveEnabled = typeof zeroInstance.materialize === "function" ? enabled : false;
|
|
200
|
+
return directViewStore.getView(zeroInstance, queryRequest, effectiveEnabled, ttl);
|
|
201
|
+
}, [queryRequest, enabled, ttl, zeroInstance]);
|
|
202
202
|
const getEmpty = () => emptyForQuery;
|
|
203
203
|
const out = useSyncExternalStore(view ? view.subscribe : DISABLED_SUBSCRIBE, view ? view.getSnapshot : getEmpty, view ? view.getSnapshot : getEmpty);
|
|
204
204
|
if (!disableMode) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["addContextToQuery","asQueryInternals","DEFAULT_TTL_MS","deepClone","useContext","useMemo","useRef","useSyncExternalStore","emptyResponseFor","parseUseQueryArgs","useEmitterValue","IS_SERVER_RUNTIME","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","fn","paramsOrOptions","optionsArg","params","directViewStore","useQueryDirect","args","disableMode","
|
|
1
|
+
{"version":3,"names":["addContextToQuery","asQueryInternals","DEFAULT_TTL_MS","deepClone","useContext","useMemo","useRef","useSyncExternalStore","emptyResponseFor","parseUseQueryArgs","useEmitterValue","IS_SERVER_RUNTIME","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","fn","paramsOrOptions","optionsArg","params","directViewStore","useQueryDirect","args","disableMode","options","paramsKey","JSON","stringify","emptyForQuery","lastRef","zeroInstance","effectiveEnabled","getEmpty","out"],"sources":["../../src/createUseQueryDirect.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|