on-zero 0.4.35 → 0.4.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/combineZeroClients.native.js.map +1 -1
- package/dist/cjs/createUseQuery.cjs +1 -96
- package/dist/cjs/createUseQuery.native.js +1 -132
- package/dist/cjs/createUseQuery.native.js.map +1 -1
- package/dist/cjs/createUseQueryDirect.cjs +228 -0
- package/dist/cjs/createUseQueryDirect.native.js +334 -0
- package/dist/cjs/createUseQueryDirect.native.js.map +1 -0
- package/dist/cjs/createZeroClient.cjs +18 -7
- package/dist/cjs/createZeroClient.native.js +18 -7
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/helpers/recoverZeroClient.test.native.js.map +1 -1
- package/dist/cjs/index.cjs +2 -2
- package/dist/cjs/index.native.js +2 -2
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/multi.cjs +38 -0
- package/dist/cjs/multi.native.js +41 -0
- package/dist/cjs/multi.native.js.map +1 -0
- package/dist/cjs/multiInstance.test.cjs +75 -0
- package/dist/cjs/multiInstance.test.native.js +111 -0
- package/dist/cjs/multiInstance.test.native.js.map +1 -1
- package/dist/cjs/multiInstanceNested.test.cjs +92 -12
- package/dist/cjs/multiInstanceNested.test.native.js +108 -12
- package/dist/cjs/multiInstanceNested.test.native.js.map +1 -1
- package/dist/cjs/run.cjs +6 -1
- package/dist/cjs/run.native.js +6 -1
- package/dist/cjs/run.native.js.map +1 -1
- package/dist/cjs/testSetup.cjs +26 -0
- package/dist/cjs/testSetup.native.js +32 -0
- package/dist/cjs/testSetup.native.js.map +1 -0
- package/dist/cjs/zeroRunner.cjs +4 -0
- package/dist/cjs/zeroRunner.native.js +4 -0
- package/dist/cjs/zeroRunner.native.js.map +1 -1
- package/dist/esm/combineZeroClients.mjs.map +1 -1
- package/dist/esm/combineZeroClients.native.js.map +1 -1
- package/dist/esm/createUseQuery.mjs +2 -97
- package/dist/esm/createUseQuery.mjs.map +1 -1
- package/dist/esm/createUseQuery.native.js +2 -133
- package/dist/esm/createUseQuery.native.js.map +1 -1
- package/dist/esm/createUseQueryDirect.mjs +203 -0
- package/dist/esm/createUseQueryDirect.mjs.map +1 -0
- package/dist/esm/createUseQueryDirect.native.js +306 -0
- package/dist/esm/createUseQueryDirect.native.js.map +1 -0
- package/dist/esm/createZeroClient.mjs +18 -8
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +18 -8
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.test.mjs.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.test.native.js.map +1 -1
- package/dist/esm/index.js +2 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +2 -3
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -3
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/multi.mjs +12 -0
- package/dist/esm/multi.mjs.map +1 -0
- package/dist/esm/multi.native.js +12 -0
- package/dist/esm/multi.native.js.map +1 -0
- package/dist/esm/multiInstance.test.mjs +75 -0
- package/dist/esm/multiInstance.test.mjs.map +1 -1
- package/dist/esm/multiInstance.test.native.js +111 -0
- package/dist/esm/multiInstance.test.native.js.map +1 -1
- package/dist/esm/multiInstanceNested.test.mjs +85 -5
- package/dist/esm/multiInstanceNested.test.mjs.map +1 -1
- package/dist/esm/multiInstanceNested.test.native.js +101 -5
- package/dist/esm/multiInstanceNested.test.native.js.map +1 -1
- package/dist/esm/run.mjs +7 -2
- package/dist/esm/run.mjs.map +1 -1
- package/dist/esm/run.native.js +7 -2
- package/dist/esm/run.native.js.map +1 -1
- package/dist/esm/testSetup.mjs +27 -0
- package/dist/esm/testSetup.mjs.map +1 -0
- package/dist/esm/testSetup.native.js +30 -0
- package/dist/esm/testSetup.native.js.map +1 -0
- package/dist/esm/zeroRunner.mjs +4 -1
- package/dist/esm/zeroRunner.mjs.map +1 -1
- package/dist/esm/zeroRunner.native.js +4 -1
- package/dist/esm/zeroRunner.native.js.map +1 -1
- package/package.json +8 -2
- package/readme.md +10 -8
- package/src/combineZeroClients.tsx +4 -6
- package/src/createUseQuery.tsx +2 -189
- package/src/createUseQueryDirect.tsx +307 -0
- package/src/createZeroClient.tsx +65 -32
- package/src/helpers/recoverZeroClient.test.ts +8 -2
- package/src/index.ts +6 -2
- package/src/multi.ts +24 -0
- package/src/multiInstance.test.tsx +69 -0
- package/src/multiInstanceNested.test.tsx +79 -4
- package/src/run.ts +10 -2
- package/src/testSetup.ts +26 -0
- package/src/zeroRunner.ts +4 -0
- package/types/combineZeroClients.d.ts.map +1 -1
- package/types/createUseQuery.d.ts +4 -15
- package/types/createUseQuery.d.ts.map +1 -1
- package/types/createUseQueryDirect.d.ts +29 -0
- package/types/createUseQueryDirect.d.ts.map +1 -0
- package/types/createZeroClient.d.ts +51 -5
- package/types/createZeroClient.d.ts.map +1 -1
- package/types/index.d.ts +1 -2
- package/types/index.d.ts.map +1 -1
- package/types/multi.d.ts +6 -0
- package/types/multi.d.ts.map +1 -0
- package/types/multiInstanceNested.test.d.ts.map +1 -1
- package/types/run.d.ts.map +1 -1
- package/types/testSetup.d.ts +1 -0
- package/types/testSetup.d.ts.map +1 -0
- package/types/zeroRunner.d.ts +3 -0
- package/types/zeroRunner.d.ts.map +1 -1
- package/vitest.config.ts +1 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: true
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
14
|
+
get: () => from[key],
|
|
15
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
21
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
22
|
+
value: true
|
|
23
|
+
}), mod);
|
|
24
|
+
var multi_exports = {};
|
|
25
|
+
__export(multi_exports, {
|
|
26
|
+
createZeroClientWithDirectQueries: () => createZeroClientWithDirectQueries
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(multi_exports);
|
|
29
|
+
var import_createZeroClient = require("./createZeroClient.cjs");
|
|
30
|
+
var import_createUseQueryDirect = require("./createUseQueryDirect.cjs");
|
|
31
|
+
__reExport(multi_exports, require("./combineZeroClients.cjs"), module.exports);
|
|
32
|
+
function createZeroClientWithDirectQueries(options) {
|
|
33
|
+
const createDirectUseQuery = import_createUseQueryDirect.createUseQueryDirect;
|
|
34
|
+
return (0, import_createZeroClient.createZeroClientInternal)({
|
|
35
|
+
...options,
|
|
36
|
+
createDirectUseQuery
|
|
37
|
+
});
|
|
38
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
+
get: () => from[key],
|
|
17
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
23
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
24
|
+
value: true
|
|
25
|
+
}), mod);
|
|
26
|
+
var multi_exports = {};
|
|
27
|
+
__export(multi_exports, {
|
|
28
|
+
createZeroClientWithDirectQueries: () => createZeroClientWithDirectQueries
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(multi_exports);
|
|
31
|
+
var import_createZeroClient = require("./createZeroClient.native.js");
|
|
32
|
+
var import_createUseQueryDirect = require("./createUseQueryDirect.native.js");
|
|
33
|
+
__reExport(multi_exports, require("./combineZeroClients.native.js"), module.exports);
|
|
34
|
+
function createZeroClientWithDirectQueries(options) {
|
|
35
|
+
var createDirectUseQuery = import_createUseQueryDirect.createUseQueryDirect;
|
|
36
|
+
return (0, import_createZeroClient.createZeroClientInternal)({
|
|
37
|
+
...options,
|
|
38
|
+
createDirectUseQuery
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=multi.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","multi_exports","__export","createZeroClientWithDirectQueries","module","exports","import_createZeroClient","require","import_createUseQueryDirect","__reExport","options","createDirectUseQuery","createUseQueryDirect","createZeroClientInternal"],"sources":["../../src/multi.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,aAAA;AAAAC,QAAA,CAAAD,aAAA;EAAAE,iCAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAAA,CAIOK,aAAA;AACP,IAAAK,uBAAA,GAAAC,OAAqC;AAKrC,IAAAC,2BAAc,GAAAD,OAAA,mCAVd;AAYOE,UAAS,CAAAR,aAAA,EAAAM,OAAA,iCAK+C,GAAAH,MAAA,CAAAC,OAAA;AAC7D,SAAMF,iCAAmDA,CAAAO,OAAA;EACzD,IAAAC,oBAAO,GAAAH,2BAAA,CAAAI,oBAAyC;EAAA,OAC3C,IAAAN,uBAAA,CAAAO,wBAAA;IACH,GAAAH,OAAA;IACDC;EACH","ignoreList":[]}
|
|
@@ -3,10 +3,12 @@ var import_helpers = require("@take-out/helpers");
|
|
|
3
3
|
var import_vitest = require("vitest");
|
|
4
4
|
var import_combineZeroClients = require("./combineZeroClients.cjs");
|
|
5
5
|
var import_createZeroClient = require("./createZeroClient.cjs");
|
|
6
|
+
var import_mutatorContext = require("./helpers/mutatorContext.cjs");
|
|
6
7
|
var import_instanceRegistry = require("./instanceRegistry.cjs");
|
|
7
8
|
var import_queryRegistry = require("./queryRegistry.cjs");
|
|
8
9
|
var import_run = require("./run.cjs");
|
|
9
10
|
var import_zeroRunner = require("./zeroRunner.cjs");
|
|
11
|
+
var import_zql = require("./zql.cjs");
|
|
10
12
|
const userTable = (0, import_zero.table)("user").columns({
|
|
11
13
|
id: (0, import_zero.string)(),
|
|
12
14
|
name: (0, import_zero.string)()
|
|
@@ -87,6 +89,79 @@ function fakeClient(name, namespaces, zeroStub) {
|
|
|
87
89
|
const request = controlRunner.mock.calls[0][0];
|
|
88
90
|
(0, import_vitest.expect)(request.query.queryName).toBe("runUser.byId");
|
|
89
91
|
});
|
|
92
|
+
(0, import_vitest.test)("run() rejects named queries inside server mutation context", async () => {
|
|
93
|
+
const {
|
|
94
|
+
byId
|
|
95
|
+
} = makeClient("run-ctx-owner", "runCtxThing");
|
|
96
|
+
const ownerRunner = import_vitest.vi.fn(async (..._args) => ({
|
|
97
|
+
from: "owner"
|
|
98
|
+
}));
|
|
99
|
+
(0, import_instanceRegistry.getInstanceForNamespace)("runCtxThing").runner = ownerRunner;
|
|
100
|
+
const txRun = import_vitest.vi.fn(async (..._args) => ({
|
|
101
|
+
from: "tx"
|
|
102
|
+
}));
|
|
103
|
+
await (0, import_vitest.expect)((0, import_mutatorContext.runWithContext)({
|
|
104
|
+
authData: null,
|
|
105
|
+
environment: "server",
|
|
106
|
+
can: async () => {},
|
|
107
|
+
tx: {
|
|
108
|
+
run: txRun
|
|
109
|
+
}
|
|
110
|
+
}, () => (0, import_run.run)(byId, {
|
|
111
|
+
id: "1"
|
|
112
|
+
}))).rejects.toThrow(/run\(namedQuery\) cannot be used inside a Zero mutation/);
|
|
113
|
+
(0, import_vitest.expect)(ownerRunner).not.toHaveBeenCalled();
|
|
114
|
+
(0, import_vitest.expect)(txRun).not.toHaveBeenCalled();
|
|
115
|
+
});
|
|
116
|
+
(0, import_vitest.test)("run() keeps named queries on their owning client runner when browser context leaks", async () => {
|
|
117
|
+
const {
|
|
118
|
+
byId
|
|
119
|
+
} = makeClient("run-client-leak-owner", "runClientLeakThing");
|
|
120
|
+
const ownerRunner = import_vitest.vi.fn(async (..._args) => ({
|
|
121
|
+
from: "owner"
|
|
122
|
+
}));
|
|
123
|
+
(0, import_instanceRegistry.getInstanceForNamespace)("runClientLeakThing").runner = ownerRunner;
|
|
124
|
+
const txRun = import_vitest.vi.fn(async (..._args) => ({
|
|
125
|
+
from: "tx"
|
|
126
|
+
}));
|
|
127
|
+
await (0, import_vitest.expect)((0, import_mutatorContext.runWithContext)({
|
|
128
|
+
authData: null,
|
|
129
|
+
environment: "client",
|
|
130
|
+
can: async () => {},
|
|
131
|
+
tx: {
|
|
132
|
+
run: txRun
|
|
133
|
+
}
|
|
134
|
+
}, () => (0, import_run.run)(byId, {
|
|
135
|
+
id: "1"
|
|
136
|
+
}))).resolves.toEqual({
|
|
137
|
+
from: "owner"
|
|
138
|
+
});
|
|
139
|
+
(0, import_vitest.expect)(ownerRunner).toHaveBeenCalledTimes(1);
|
|
140
|
+
(0, import_vitest.expect)(txRun).not.toHaveBeenCalled();
|
|
141
|
+
});
|
|
142
|
+
(0, import_vitest.test)("run() keeps inline zql on the active transaction runner", async () => {
|
|
143
|
+
makeClient("run-inline-context", "runInlineThing");
|
|
144
|
+
const ambientRunner = import_vitest.vi.fn(async (..._args) => ({
|
|
145
|
+
from: "ambient"
|
|
146
|
+
}));
|
|
147
|
+
(0, import_zeroRunner.setRunner)(ambientRunner);
|
|
148
|
+
const txRun = import_vitest.vi.fn(async (..._args) => ({
|
|
149
|
+
from: "tx"
|
|
150
|
+
}));
|
|
151
|
+
const query = import_zql.zql.user.where("id", "1");
|
|
152
|
+
await (0, import_vitest.expect)((0, import_mutatorContext.runWithContext)({
|
|
153
|
+
authData: null,
|
|
154
|
+
environment: "client",
|
|
155
|
+
can: async () => {},
|
|
156
|
+
tx: {
|
|
157
|
+
run: txRun
|
|
158
|
+
}
|
|
159
|
+
}, () => (0, import_run.run)(query))).resolves.toEqual({
|
|
160
|
+
from: "tx"
|
|
161
|
+
});
|
|
162
|
+
(0, import_vitest.expect)(txRun).toHaveBeenCalledWith(query, void 0);
|
|
163
|
+
(0, import_vitest.expect)(ambientRunner).not.toHaveBeenCalled();
|
|
164
|
+
});
|
|
90
165
|
(0, import_vitest.test)("a claimed namespace with an unmounted instance uses the ambient runner (server path)", async () => {
|
|
91
166
|
const {
|
|
92
167
|
byId
|
|
@@ -5,10 +5,12 @@ var import_helpers = require("@take-out/helpers");
|
|
|
5
5
|
var import_vitest = require("vitest");
|
|
6
6
|
var import_combineZeroClients = require("./combineZeroClients.native.js");
|
|
7
7
|
var import_createZeroClient = require("./createZeroClient.native.js");
|
|
8
|
+
var import_mutatorContext = require("./helpers/mutatorContext.native.js");
|
|
8
9
|
var import_instanceRegistry = require("./instanceRegistry.native.js");
|
|
9
10
|
var import_queryRegistry = require("./queryRegistry.native.js");
|
|
10
11
|
var import_run = require("./run.native.js");
|
|
11
12
|
var import_zeroRunner = require("./zeroRunner.native.js");
|
|
13
|
+
var import_zql = require("./zql.native.js");
|
|
12
14
|
var userTable = (0, import_zero.table)("user").columns({
|
|
13
15
|
id: (0, import_zero.string)(),
|
|
14
16
|
name: (0, import_zero.string)()
|
|
@@ -123,6 +125,115 @@ function fakeClient(name, namespaces, zeroStub) {
|
|
|
123
125
|
var request = controlRunner.mock.calls[0][0];
|
|
124
126
|
(0, import_vitest.expect)(request.query.queryName).toBe("runUser.byId");
|
|
125
127
|
});
|
|
128
|
+
(0, import_vitest.test)("run() rejects named queries inside server mutation context", async function () {
|
|
129
|
+
var {
|
|
130
|
+
byId
|
|
131
|
+
} = makeClient("run-ctx-owner", "runCtxThing");
|
|
132
|
+
var ownerRunner = import_vitest.vi.fn(async function () {
|
|
133
|
+
for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
134
|
+
_args[_key] = arguments[_key];
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
from: "owner"
|
|
138
|
+
};
|
|
139
|
+
});
|
|
140
|
+
(0, import_instanceRegistry.getInstanceForNamespace)("runCtxThing").runner = ownerRunner;
|
|
141
|
+
var txRun = import_vitest.vi.fn(async function () {
|
|
142
|
+
for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
143
|
+
_args[_key] = arguments[_key];
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
from: "tx"
|
|
147
|
+
};
|
|
148
|
+
});
|
|
149
|
+
await (0, import_vitest.expect)((0, import_mutatorContext.runWithContext)({
|
|
150
|
+
authData: null,
|
|
151
|
+
environment: "server",
|
|
152
|
+
can: async function () {},
|
|
153
|
+
tx: {
|
|
154
|
+
run: txRun
|
|
155
|
+
}
|
|
156
|
+
}, function () {
|
|
157
|
+
return (0, import_run.run)(byId, {
|
|
158
|
+
id: "1"
|
|
159
|
+
});
|
|
160
|
+
})).rejects.toThrow(/run\(namedQuery\) cannot be used inside a Zero mutation/);
|
|
161
|
+
(0, import_vitest.expect)(ownerRunner).not.toHaveBeenCalled();
|
|
162
|
+
(0, import_vitest.expect)(txRun).not.toHaveBeenCalled();
|
|
163
|
+
});
|
|
164
|
+
(0, import_vitest.test)("run() keeps named queries on their owning client runner when browser context leaks", async function () {
|
|
165
|
+
var {
|
|
166
|
+
byId
|
|
167
|
+
} = makeClient("run-client-leak-owner", "runClientLeakThing");
|
|
168
|
+
var ownerRunner = import_vitest.vi.fn(async function () {
|
|
169
|
+
for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
170
|
+
_args[_key] = arguments[_key];
|
|
171
|
+
}
|
|
172
|
+
return {
|
|
173
|
+
from: "owner"
|
|
174
|
+
};
|
|
175
|
+
});
|
|
176
|
+
(0, import_instanceRegistry.getInstanceForNamespace)("runClientLeakThing").runner = ownerRunner;
|
|
177
|
+
var txRun = import_vitest.vi.fn(async function () {
|
|
178
|
+
for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
179
|
+
_args[_key] = arguments[_key];
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
from: "tx"
|
|
183
|
+
};
|
|
184
|
+
});
|
|
185
|
+
await (0, import_vitest.expect)((0, import_mutatorContext.runWithContext)({
|
|
186
|
+
authData: null,
|
|
187
|
+
environment: "client",
|
|
188
|
+
can: async function () {},
|
|
189
|
+
tx: {
|
|
190
|
+
run: txRun
|
|
191
|
+
}
|
|
192
|
+
}, function () {
|
|
193
|
+
return (0, import_run.run)(byId, {
|
|
194
|
+
id: "1"
|
|
195
|
+
});
|
|
196
|
+
})).resolves.toEqual({
|
|
197
|
+
from: "owner"
|
|
198
|
+
});
|
|
199
|
+
(0, import_vitest.expect)(ownerRunner).toHaveBeenCalledTimes(1);
|
|
200
|
+
(0, import_vitest.expect)(txRun).not.toHaveBeenCalled();
|
|
201
|
+
});
|
|
202
|
+
(0, import_vitest.test)("run() keeps inline zql on the active transaction runner", async function () {
|
|
203
|
+
makeClient("run-inline-context", "runInlineThing");
|
|
204
|
+
var ambientRunner = import_vitest.vi.fn(async function () {
|
|
205
|
+
for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
206
|
+
_args[_key] = arguments[_key];
|
|
207
|
+
}
|
|
208
|
+
return {
|
|
209
|
+
from: "ambient"
|
|
210
|
+
};
|
|
211
|
+
});
|
|
212
|
+
(0, import_zeroRunner.setRunner)(ambientRunner);
|
|
213
|
+
var txRun = import_vitest.vi.fn(async function () {
|
|
214
|
+
for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
215
|
+
_args[_key] = arguments[_key];
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
from: "tx"
|
|
219
|
+
};
|
|
220
|
+
});
|
|
221
|
+
var query = import_zql.zql.user.where("id", "1");
|
|
222
|
+
await (0, import_vitest.expect)((0, import_mutatorContext.runWithContext)({
|
|
223
|
+
authData: null,
|
|
224
|
+
environment: "client",
|
|
225
|
+
can: async function () {},
|
|
226
|
+
tx: {
|
|
227
|
+
run: txRun
|
|
228
|
+
}
|
|
229
|
+
}, function () {
|
|
230
|
+
return (0, import_run.run)(query);
|
|
231
|
+
})).resolves.toEqual({
|
|
232
|
+
from: "tx"
|
|
233
|
+
});
|
|
234
|
+
(0, import_vitest.expect)(txRun).toHaveBeenCalledWith(query, void 0);
|
|
235
|
+
(0, import_vitest.expect)(ambientRunner).not.toHaveBeenCalled();
|
|
236
|
+
});
|
|
126
237
|
(0, import_vitest.test)("a claimed namespace with an unmounted instance uses the ambient runner (server path)", async function () {
|
|
127
238
|
var {
|
|
128
239
|
byId
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["import_zero","require","import_helpers","import_vitest","import_combineZeroClients","import_createZeroClient","import_instanceRegistry","import_queryRegistry","import_run","import_zeroRunner","userTable","table","columns","id","string","name","primaryKey","taskTable","title","schema","createSchema","tables","makeQueryFn","args","makeClient","instanceName","namespace","byId","client","createZeroClient","models","groupedQueries","fakeClient","namespaces","zeroStub","registerClientInstance","customQueries","useQuery","vi","fn","useQueryDirect","usePermission","usePermissionDirect","zero","preload","getQuery","zeroEvents","createEmitter","ControlQueries","param","children","describe","test","control","project","controlRunner","_len","arguments","length","_args","Array","_key","from","projectRunner","getInstanceForNamespace","runner","ambientRunner","setRunner","expect","run","resolves","toEqual","not","toHaveBeenCalled","request","mock","calls","query","queryName","toBe","
|
|
1
|
+
{"version":3,"names":["import_zero","require","import_helpers","import_vitest","import_combineZeroClients","import_createZeroClient","import_mutatorContext","import_instanceRegistry","import_queryRegistry","import_run","import_zeroRunner","import_zql","userTable","table","columns","id","string","name","primaryKey","taskTable","title","schema","createSchema","tables","makeQueryFn","args","makeClient","instanceName","namespace","byId","client","createZeroClient","models","groupedQueries","fakeClient","namespaces","zeroStub","registerClientInstance","customQueries","useQuery","vi","fn","useQueryDirect","usePermission","usePermissionDirect","zero","preload","getQuery","zeroEvents","createEmitter","ControlQueries","param","children","describe","test","control","project","controlRunner","_len","arguments","length","_args","Array","_key","from","projectRunner","getInstanceForNamespace","runner","ambientRunner","setRunner","expect","run","resolves","toEqual","not","toHaveBeenCalled","request","mock","calls","query","queryName","toBe","ownerRunner","txRun","runWithContext","authData","environment","can","tx","rejects","toThrow","toHaveBeenCalledTimes","zql","user","where","toHaveBeenCalledWith","ambient","_getInstanceForNamespace","mdlThing","mutate","insert"],"sources":["../../src/multiInstance.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
var import_zero = require("@rocicorp/zero");
|
|
2
|
-
var import_react = require("react");
|
|
2
|
+
var import_react = require("@rocicorp/zero/react");
|
|
3
|
+
var import_react2 = require("react");
|
|
3
4
|
var import_client = require("react-dom/client");
|
|
4
5
|
var import_vitest = require("vitest");
|
|
5
|
-
var import_combineZeroClients = require("./combineZeroClients.cjs");
|
|
6
6
|
var import_createZeroClient = require("./createZeroClient.cjs");
|
|
7
|
+
var import_multi = require("./multi.cjs");
|
|
7
8
|
var import_zql = require("./zql.cjs");
|
|
8
9
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
9
10
|
globalThis.IS_REACT_ACT_ENVIRONMENT = true;
|
|
@@ -28,7 +29,7 @@ const controlModels = {
|
|
|
28
29
|
}
|
|
29
30
|
};
|
|
30
31
|
const ctlUserById = args => import_zql.zql.user.where("id", args.id).one();
|
|
31
|
-
const control = (0,
|
|
32
|
+
const control = (0, import_multi.createZeroClientWithDirectQueries)({
|
|
32
33
|
schema,
|
|
33
34
|
models: controlModels,
|
|
34
35
|
groupedQueries: {
|
|
@@ -58,7 +59,7 @@ const project = (0, import_createZeroClient.createZeroClient)({
|
|
|
58
59
|
},
|
|
59
60
|
instanceName: "nested-project"
|
|
60
61
|
});
|
|
61
|
-
const combined = (0,
|
|
62
|
+
const combined = (0, import_multi.combineZeroClients)(control, project);
|
|
62
63
|
let root;
|
|
63
64
|
let container;
|
|
64
65
|
(0, import_vitest.beforeEach)(() => {
|
|
@@ -68,14 +69,17 @@ let container;
|
|
|
68
69
|
root = (0, import_client.createRoot)(container);
|
|
69
70
|
});
|
|
70
71
|
(0, import_vitest.afterEach)(async () => {
|
|
71
|
-
await (0,
|
|
72
|
+
await (0, import_react2.act)(async () => root.unmount());
|
|
73
|
+
await (0, import_react2.act)(async () => {
|
|
74
|
+
await new Promise(resolve => setTimeout(resolve, 20));
|
|
75
|
+
});
|
|
72
76
|
container.remove();
|
|
73
77
|
});
|
|
74
|
-
const render = ui => (0,
|
|
78
|
+
const render = ui => (0, import_react2.act)(async () => root.render(ui));
|
|
75
79
|
async function waitFor(condition, what) {
|
|
76
80
|
for (let i = 0; i < 200; i++) {
|
|
77
81
|
if (condition()) return;
|
|
78
|
-
await (0,
|
|
82
|
+
await (0, import_react2.act)(async () => {
|
|
79
83
|
await new Promise(resolve => setTimeout(resolve, 5));
|
|
80
84
|
});
|
|
81
85
|
}
|
|
@@ -85,27 +89,63 @@ const probe = {
|
|
|
85
89
|
data: void 0,
|
|
86
90
|
renders: 0
|
|
87
91
|
};
|
|
92
|
+
const materializeProbe = {
|
|
93
|
+
materializeTtls: [],
|
|
94
|
+
updateTtls: [],
|
|
95
|
+
destroys: 0
|
|
96
|
+
};
|
|
88
97
|
function resetProbe() {
|
|
89
98
|
probe.data = void 0;
|
|
90
99
|
probe.renders = 0;
|
|
100
|
+
materializeProbe.materializeTtls = [];
|
|
101
|
+
materializeProbe.updateTtls = [];
|
|
102
|
+
materializeProbe.destroys = 0;
|
|
91
103
|
}
|
|
92
104
|
function ControlUserProbe({
|
|
93
|
-
id
|
|
105
|
+
id,
|
|
106
|
+
ttl
|
|
94
107
|
}) {
|
|
95
|
-
const [data] = combined.useQuery(ctlUserById, {
|
|
108
|
+
const [data] = ttl === void 0 ? combined.useQuery(ctlUserById, {
|
|
109
|
+
id
|
|
110
|
+
}) : combined.useQuery(ctlUserById, {
|
|
96
111
|
id
|
|
112
|
+
}, {
|
|
113
|
+
ttl
|
|
97
114
|
});
|
|
98
115
|
probe.data = data ?? void 0;
|
|
99
116
|
probe.renders++;
|
|
100
117
|
return null;
|
|
101
118
|
}
|
|
119
|
+
function MaterializeProbe() {
|
|
120
|
+
const zero = (0, import_react.useZero)();
|
|
121
|
+
if (!zero.__onZeroMaterializeProbe) {
|
|
122
|
+
zero.__onZeroMaterializeProbe = true;
|
|
123
|
+
const materialize = zero.materialize.bind(zero);
|
|
124
|
+
zero.materialize = (...args) => {
|
|
125
|
+
materializeProbe.materializeTtls.push(args[1]?.ttl);
|
|
126
|
+
const view = materialize(...args);
|
|
127
|
+
const updateTTL = view.updateTTL.bind(view);
|
|
128
|
+
view.updateTTL = ttl => {
|
|
129
|
+
materializeProbe.updateTtls.push(ttl);
|
|
130
|
+
return updateTTL(ttl);
|
|
131
|
+
};
|
|
132
|
+
const destroy = view.destroy.bind(view);
|
|
133
|
+
view.destroy = () => {
|
|
134
|
+
materializeProbe.destroys++;
|
|
135
|
+
return destroy();
|
|
136
|
+
};
|
|
137
|
+
return view;
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
102
142
|
const seedControl = async row => {
|
|
103
|
-
await (0,
|
|
143
|
+
await (0, import_react2.act)(async () => {
|
|
104
144
|
await control.zero.mutate.user.seed(row).client;
|
|
105
145
|
});
|
|
106
146
|
};
|
|
107
147
|
const seedProject = async row => {
|
|
108
|
-
await (0,
|
|
148
|
+
await (0, import_react2.act)(async () => {
|
|
109
149
|
await project.zero.mutate.prjSeed.seedUser(row).client;
|
|
110
150
|
});
|
|
111
151
|
};
|
|
@@ -176,7 +216,7 @@ const seedProject = async row => {
|
|
|
176
216
|
await waitFor(() => probe.data?.name === "v3", "v3 visible after inner remount");
|
|
177
217
|
});
|
|
178
218
|
(0, import_vitest.test)("StrictMode: direct views survive the effect double-invoke", async () => {
|
|
179
|
-
await render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(
|
|
219
|
+
await render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react2.StrictMode, {
|
|
180
220
|
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(control.ProvideZero, {
|
|
181
221
|
server: null,
|
|
182
222
|
userID: "t4-ctl",
|
|
@@ -201,6 +241,46 @@ const seedProject = async row => {
|
|
|
201
241
|
});
|
|
202
242
|
await waitFor(() => probe.data?.name === "strict-v2", "second update still live");
|
|
203
243
|
});
|
|
244
|
+
(0, import_vitest.test)("direct-path subscribers share one materialized view", async () => {
|
|
245
|
+
const App = ({
|
|
246
|
+
showSubscribers
|
|
247
|
+
}) => /* @__PURE__ */(0, import_jsx_runtime.jsxs)(control.ProvideZero, {
|
|
248
|
+
server: null,
|
|
249
|
+
userID: "t5-ctl",
|
|
250
|
+
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(MaterializeProbe, {}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(project.ProvideZero, {
|
|
251
|
+
server: null,
|
|
252
|
+
userID: "t5-prj",
|
|
253
|
+
children: showSubscribers ? /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
|
|
254
|
+
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(ControlUserProbe, {
|
|
255
|
+
id: "u5",
|
|
256
|
+
ttl: 1e3
|
|
257
|
+
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(ControlUserProbe, {
|
|
258
|
+
id: "u5",
|
|
259
|
+
ttl: 2e3
|
|
260
|
+
})]
|
|
261
|
+
}) : null
|
|
262
|
+
})]
|
|
263
|
+
});
|
|
264
|
+
await render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(App, {
|
|
265
|
+
showSubscribers: true
|
|
266
|
+
}));
|
|
267
|
+
await waitFor(() => probe.renders >= 2, "both probes mount");
|
|
268
|
+
(0, import_vitest.expect)(materializeProbe.materializeTtls).toEqual([1e3]);
|
|
269
|
+
(0, import_vitest.expect)(materializeProbe.updateTtls).toEqual([2e3]);
|
|
270
|
+
await seedControl({
|
|
271
|
+
id: "u5",
|
|
272
|
+
name: "shared-v1"
|
|
273
|
+
});
|
|
274
|
+
await waitFor(() => probe.data?.name === "shared-v1", "shared view update visible");
|
|
275
|
+
(0, import_vitest.expect)(materializeProbe.materializeTtls).toEqual([1e3]);
|
|
276
|
+
await render(/* @__PURE__ */(0, import_jsx_runtime.jsx)(App, {
|
|
277
|
+
showSubscribers: false
|
|
278
|
+
}));
|
|
279
|
+
await (0, import_react2.act)(async () => {
|
|
280
|
+
await new Promise(resolve => setTimeout(resolve, 20));
|
|
281
|
+
});
|
|
282
|
+
(0, import_vitest.expect)(materializeProbe.destroys).toBe(1);
|
|
283
|
+
});
|
|
204
284
|
(0, import_vitest.test)("direct-path views re-materialize when the owning instance rotates", async () => {
|
|
205
285
|
const App = ({
|
|
206
286
|
userID
|