on-zero 0.6.3 → 0.6.5
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/createZeroClient.cjs +111 -12
- package/dist/cjs/createZeroClient.connection.test.cjs +163 -0
- package/dist/cjs/createZeroClient.connection.test.native.js +242 -0
- package/dist/cjs/createZeroClient.connection.test.native.js.map +1 -0
- package/dist/cjs/createZeroClient.native.js +145 -12
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/createZeroClient.recovery.test.cjs +52 -0
- package/dist/cjs/createZeroClient.recovery.test.native.js +52 -0
- package/dist/cjs/createZeroClient.recovery.test.native.js.map +1 -1
- package/dist/cjs/helpers/recoverZeroClient.cjs +140 -14
- package/dist/cjs/helpers/recoverZeroClient.native.js +155 -22
- package/dist/cjs/helpers/recoverZeroClient.native.js.map +1 -1
- package/dist/cjs/helpers/recoverZeroClient.test.cjs +181 -0
- package/dist/cjs/helpers/recoverZeroClient.test.native.js +209 -0
- package/dist/cjs/helpers/recoverZeroClient.test.native.js.map +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.native.js +1 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/multi.cjs +13 -0
- package/dist/cjs/multi.native.js +35 -0
- package/dist/cjs/multi.native.js.map +1 -1
- package/dist/cjs/multiInstance.test.cjs +12 -0
- package/dist/cjs/multiInstance.test.native.js +21 -0
- package/dist/cjs/multiInstance.test.native.js.map +1 -1
- package/dist/cjs/multiPartition.test.cjs +42 -0
- package/dist/cjs/multiPartition.test.native.js +51 -0
- package/dist/cjs/multiPartition.test.native.js.map +1 -0
- package/dist/esm/createZeroClient.connection.test.mjs +164 -0
- package/dist/esm/createZeroClient.connection.test.mjs.map +1 -0
- package/dist/esm/createZeroClient.connection.test.native.js +240 -0
- package/dist/esm/createZeroClient.connection.test.native.js.map +1 -0
- package/dist/esm/createZeroClient.mjs +112 -13
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +146 -13
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/createZeroClient.recovery.test.mjs +52 -0
- package/dist/esm/createZeroClient.recovery.test.mjs.map +1 -1
- package/dist/esm/createZeroClient.recovery.test.native.js +52 -0
- package/dist/esm/createZeroClient.recovery.test.native.js.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.mjs +140 -15
- package/dist/esm/helpers/recoverZeroClient.mjs.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.native.js +155 -23
- package/dist/esm/helpers/recoverZeroClient.native.js.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.test.mjs +182 -1
- package/dist/esm/helpers/recoverZeroClient.test.mjs.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.test.native.js +210 -1
- package/dist/esm/helpers/recoverZeroClient.test.native.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -2
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/multi.mjs +13 -1
- package/dist/esm/multi.mjs.map +1 -1
- package/dist/esm/multi.native.js +35 -1
- package/dist/esm/multi.native.js.map +1 -1
- package/dist/esm/multiInstance.test.mjs +12 -0
- package/dist/esm/multiInstance.test.mjs.map +1 -1
- package/dist/esm/multiInstance.test.native.js +21 -0
- package/dist/esm/multiInstance.test.native.js.map +1 -1
- package/dist/esm/multiPartition.test.mjs +43 -0
- package/dist/esm/multiPartition.test.mjs.map +1 -0
- package/dist/esm/multiPartition.test.native.js +49 -0
- package/dist/esm/multiPartition.test.native.js.map +1 -0
- package/lint/ssr-guards.js +164 -0
- package/package.json +2 -2
- package/readme.md +126 -0
- package/src/createZeroClient.connection.test.tsx +162 -0
- package/src/createZeroClient.recovery.test.tsx +68 -0
- package/src/createZeroClient.tsx +188 -13
- package/src/helpers/recoverZeroClient.test.ts +204 -1
- package/src/helpers/recoverZeroClient.ts +263 -42
- package/src/index.ts +3 -0
- package/src/multi.ts +33 -0
- package/src/multiInstance.test.tsx +13 -0
- package/src/multiPartition.test.ts +38 -0
- package/types/createZeroClient.connection.test.d.ts +5 -0
- package/types/createZeroClient.connection.test.d.ts.map +1 -0
- package/types/createZeroClient.d.ts +17 -0
- package/types/createZeroClient.d.ts.map +1 -1
- package/types/createZeroServer.d.ts +4 -4
- package/types/helpers/recoverZeroClient.d.ts +15 -1
- package/types/helpers/recoverZeroClient.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/multi.d.ts +1 -0
- package/types/multi.d.ts.map +1 -1
- package/types/multiPartition.test.d.ts +2 -0
- package/types/multiPartition.test.d.ts.map +1 -0
|
@@ -1 +1 @@
|
|
|
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":"AAAA;;AACA,IAAAA,WAAA,GAAAC,OAA8B;AAC9B,IAAAC,cAAA,GAA2CD,OAAA;AAE3C,IAAAE,aAAA,GAAAF,OAAA,SAAmC;AACnC,IAAAG,yBAAA,GAAiCH,OAAA;AACjC,IAAAI,uBAAA,GAA+BJ,OAAA;AAC/B,IAAAK,qBAAA,GAAAL,OAAgE;AAChE,IAAAM,uBAA8B,GAAAN,OAAA;AAC9B,IAAAO,oBAAoB,GAAAP,OAAA;AACpB,IAAAQ,UAAA,GAAAR,OAA2C;AAC3C,IAAAS,iBAAoB,GAAAT,OAAA;AAMpB,IAAAU,UAAM,GAAAV,OAAY;AAClB,
|
|
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","_type_of","obj","Symbol","constructor","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":[]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
var import_vitest = require("vitest");
|
|
2
|
+
var import_multi = require("./multi.cjs");
|
|
3
|
+
(0, import_vitest.describe)("assertZeroInstancePartition", () => {
|
|
4
|
+
const control = {
|
|
5
|
+
user: 1,
|
|
6
|
+
workspace: 1
|
|
7
|
+
};
|
|
8
|
+
const project = {
|
|
9
|
+
message: 1,
|
|
10
|
+
thread: 1
|
|
11
|
+
};
|
|
12
|
+
(0, import_vitest.test)("passes when every namespace belongs to exactly one partition", () => {
|
|
13
|
+
(0, import_vitest.expect)(() => (0, import_multi.assertZeroInstancePartition)("query namespace", {
|
|
14
|
+
user: {},
|
|
15
|
+
workspace: {},
|
|
16
|
+
message: {},
|
|
17
|
+
thread: {}
|
|
18
|
+
}, {
|
|
19
|
+
control,
|
|
20
|
+
project
|
|
21
|
+
})).not.toThrow();
|
|
22
|
+
});
|
|
23
|
+
(0, import_vitest.test)("throws on a namespace missing from every partition (the planGrant drift)", () => {
|
|
24
|
+
(0, import_vitest.expect)(() => (0, import_multi.assertZeroInstancePartition)("query namespace", {
|
|
25
|
+
user: {},
|
|
26
|
+
planGrant: {}
|
|
27
|
+
}, {
|
|
28
|
+
control,
|
|
29
|
+
project
|
|
30
|
+
})).toThrow(/planGrant.*missing from the instance partition/);
|
|
31
|
+
});
|
|
32
|
+
(0, import_vitest.test)("throws on a namespace claimed by more than one partition", () => {
|
|
33
|
+
(0, import_vitest.expect)(() => (0, import_multi.assertZeroInstancePartition)("query namespace", {
|
|
34
|
+
user: {}
|
|
35
|
+
}, {
|
|
36
|
+
control,
|
|
37
|
+
project: {
|
|
38
|
+
user: 1
|
|
39
|
+
}
|
|
40
|
+
})).toThrow(/user.*more than one instance partition/);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var import_vitest = require("vitest");
|
|
4
|
+
var import_multi = require("./multi.native.js");
|
|
5
|
+
(0, import_vitest.describe)("assertZeroInstancePartition", function () {
|
|
6
|
+
var control = {
|
|
7
|
+
user: 1,
|
|
8
|
+
workspace: 1
|
|
9
|
+
};
|
|
10
|
+
var project = {
|
|
11
|
+
message: 1,
|
|
12
|
+
thread: 1
|
|
13
|
+
};
|
|
14
|
+
(0, import_vitest.test)("passes when every namespace belongs to exactly one partition", function () {
|
|
15
|
+
(0, import_vitest.expect)(function () {
|
|
16
|
+
return (0, import_multi.assertZeroInstancePartition)("query namespace", {
|
|
17
|
+
user: {},
|
|
18
|
+
workspace: {},
|
|
19
|
+
message: {},
|
|
20
|
+
thread: {}
|
|
21
|
+
}, {
|
|
22
|
+
control,
|
|
23
|
+
project
|
|
24
|
+
});
|
|
25
|
+
}).not.toThrow();
|
|
26
|
+
});
|
|
27
|
+
(0, import_vitest.test)("throws on a namespace missing from every partition (the planGrant drift)", function () {
|
|
28
|
+
(0, import_vitest.expect)(function () {
|
|
29
|
+
return (0, import_multi.assertZeroInstancePartition)("query namespace", {
|
|
30
|
+
user: {},
|
|
31
|
+
planGrant: {}
|
|
32
|
+
}, {
|
|
33
|
+
control,
|
|
34
|
+
project
|
|
35
|
+
});
|
|
36
|
+
}).toThrow(/planGrant.*missing from the instance partition/);
|
|
37
|
+
});
|
|
38
|
+
(0, import_vitest.test)("throws on a namespace claimed by more than one partition", function () {
|
|
39
|
+
(0, import_vitest.expect)(function () {
|
|
40
|
+
return (0, import_multi.assertZeroInstancePartition)("query namespace", {
|
|
41
|
+
user: {}
|
|
42
|
+
}, {
|
|
43
|
+
control,
|
|
44
|
+
project: {
|
|
45
|
+
user: 1
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}).toThrow(/user.*more than one instance partition/);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=multiPartition.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["import_vitest","require","import_multi","describe","control","user","workspace","project","message","thread","test","expect","assertZeroInstancePartition","not","toThrow","planGrant"],"sources":["../../src/multiPartition.test.ts"],"sourcesContent":[null],"mappings":"AAAA;;AAEA,IAAAA,aAAA,GAA4CC,OAAA;AAAA,IAE5CC,YAAA,GAAAD,OAAA,oBAAS;AACP,IAAAD,aAAM,CAAUG,QAAQ,+BAAgB;EACxC,IAAAC,OAAM;IAENC,IAAA;IACEC,SAAA;EAAA;EACE,IAAAC,OACE;IAAAC,OACE;IAAiDC,MACjD;EAAiB;EACrB,EACF,EAAET,aAAY,CAAAU,IAAA;IACf,IAAAV,aAAA,CAAAW,MAAA;MAED,WAAAT,YAAK,CAAAU,2BAAA;QACHP,IAAA;QAAOC,SACL;QACEE,OAAA;QACAC,MAAE,EAAM,CAAC;MAAiB,GAC1B;QACFL,OAAA;QACAG;MACH;IAED,GAAAM,GAAA,CAAAC,OAAA;EACE;EAAA,IAAOd,aACL,CAAAU,IAAA;IAAA,IACEV,aAAA,CAAAW,MAAA;MAAA,OACE,IAAOT,YAAE,CAAAU,2BAAA;QACXP,IAAE;QACJU,SAAA;MACA;QACHX,OAAA;QACFG","ignoreList":[]}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { createSchema, string, table } from "@rocicorp/zero";
|
|
2
|
+
import { act } from "react";
|
|
3
|
+
import { createRoot } from "react-dom/client";
|
|
4
|
+
import { afterEach, beforeEach, expect, test, vi } from "vitest";
|
|
5
|
+
import { createZeroClient } from "./createZeroClient.mjs";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
const fakeZero = vi.hoisted(() => {
|
|
8
|
+
class FakeConnectionState {
|
|
9
|
+
current;
|
|
10
|
+
listeners = /* @__PURE__ */new Set();
|
|
11
|
+
constructor(initial) {
|
|
12
|
+
this.current = initial;
|
|
13
|
+
}
|
|
14
|
+
subscribe = cb => {
|
|
15
|
+
this.listeners.add(cb);
|
|
16
|
+
return () => {
|
|
17
|
+
this.listeners.delete(cb);
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
set(next) {
|
|
21
|
+
this.current = next;
|
|
22
|
+
for (const cb of this.listeners) cb();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
class FakeZero {
|
|
26
|
+
context = {};
|
|
27
|
+
connection = {
|
|
28
|
+
state: new FakeConnectionState({
|
|
29
|
+
name: "connecting"
|
|
30
|
+
}),
|
|
31
|
+
connect: vi.fn(async () => {})
|
|
32
|
+
};
|
|
33
|
+
delete = vi.fn(async () => ({
|
|
34
|
+
errors: []
|
|
35
|
+
}));
|
|
36
|
+
close = vi.fn();
|
|
37
|
+
run = vi.fn(async () => []);
|
|
38
|
+
preload = vi.fn(() => ({
|
|
39
|
+
cleanup: () => {},
|
|
40
|
+
complete: Promise.resolve()
|
|
41
|
+
}));
|
|
42
|
+
constructor() {
|
|
43
|
+
instances.push(this);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const instances = [];
|
|
47
|
+
return {
|
|
48
|
+
FakeZero,
|
|
49
|
+
FakeConnectionState,
|
|
50
|
+
instances
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
vi.mock("@rocicorp/zero", async importOriginal => {
|
|
54
|
+
const actual = await importOriginal();
|
|
55
|
+
return {
|
|
56
|
+
...actual,
|
|
57
|
+
Zero: fakeZero.FakeZero
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
globalThis.IS_REACT_ACT_ENVIRONMENT = true;
|
|
61
|
+
const noteTable = table("note").columns({
|
|
62
|
+
id: string(),
|
|
63
|
+
body: string()
|
|
64
|
+
}).primaryKey("id");
|
|
65
|
+
const schema = createSchema({
|
|
66
|
+
tables: [noteTable]
|
|
67
|
+
});
|
|
68
|
+
const client = createZeroClient({
|
|
69
|
+
schema,
|
|
70
|
+
models: {},
|
|
71
|
+
groupedQueries: {},
|
|
72
|
+
instanceName: "connection-test"
|
|
73
|
+
});
|
|
74
|
+
let container;
|
|
75
|
+
let root;
|
|
76
|
+
beforeEach(() => {
|
|
77
|
+
fakeZero.instances.length = 0;
|
|
78
|
+
container = document.createElement("div");
|
|
79
|
+
root = null;
|
|
80
|
+
delete document.body.dataset.zeroState;
|
|
81
|
+
delete document.body.dataset.zeroConnected;
|
|
82
|
+
delete document.body.dataset.zeroReason;
|
|
83
|
+
});
|
|
84
|
+
afterEach(() => {
|
|
85
|
+
if (root) act(() => root?.unmount());
|
|
86
|
+
});
|
|
87
|
+
async function mount(extraProps = {}, userID = "conn") {
|
|
88
|
+
root = createRoot(container);
|
|
89
|
+
await act(async () => {
|
|
90
|
+
root?.render(/* @__PURE__ */jsx(client.ProvideZero, {
|
|
91
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
92
|
+
userID,
|
|
93
|
+
...extraProps,
|
|
94
|
+
children: /* @__PURE__ */jsx("span", {
|
|
95
|
+
children: "ok"
|
|
96
|
+
})
|
|
97
|
+
}));
|
|
98
|
+
await Promise.resolve();
|
|
99
|
+
});
|
|
100
|
+
return fakeZero.instances.at(-1);
|
|
101
|
+
}
|
|
102
|
+
test("refreshAuth reconnects in place on needs-auth, once per transition", async () => {
|
|
103
|
+
const refreshAuth = vi.fn(async () => "fresh-token");
|
|
104
|
+
const instance = await mount({
|
|
105
|
+
refreshAuth
|
|
106
|
+
}, "conn-auth");
|
|
107
|
+
await act(async () => {
|
|
108
|
+
instance.connection.state.set({
|
|
109
|
+
name: "needs-auth",
|
|
110
|
+
reason: "token expired"
|
|
111
|
+
});
|
|
112
|
+
await Promise.resolve();
|
|
113
|
+
});
|
|
114
|
+
expect(refreshAuth).toHaveBeenCalledTimes(1);
|
|
115
|
+
await act(async () => {
|
|
116
|
+
await Promise.resolve();
|
|
117
|
+
});
|
|
118
|
+
expect(instance.connection.connect).toHaveBeenCalledWith({
|
|
119
|
+
auth: "fresh-token"
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
test("stale-poke error reconnects instead of surfacing a fatal error", async () => {
|
|
123
|
+
const events = [];
|
|
124
|
+
const off = client.zeroEvents.listen(event => {
|
|
125
|
+
if (event) events.push(event);
|
|
126
|
+
});
|
|
127
|
+
const instance = await mount({}, "conn-stale");
|
|
128
|
+
await act(async () => {
|
|
129
|
+
instance.connection.state.set({
|
|
130
|
+
name: "error",
|
|
131
|
+
reason: "Server returned unexpected base cookie during sync"
|
|
132
|
+
});
|
|
133
|
+
await Promise.resolve();
|
|
134
|
+
});
|
|
135
|
+
expect(instance.connection.connect).toHaveBeenCalledTimes(1);
|
|
136
|
+
expect(instance.connection.connect).toHaveBeenCalledWith();
|
|
137
|
+
expect(events.some(event => event.type === "error")).toBe(false);
|
|
138
|
+
off();
|
|
139
|
+
});
|
|
140
|
+
test("connectionDataset mirrors connection state onto the body dataset", async () => {
|
|
141
|
+
const instance = await mount({
|
|
142
|
+
connectionDataset: true
|
|
143
|
+
}, "conn-dataset");
|
|
144
|
+
await act(async () => {
|
|
145
|
+
instance.connection.state.set({
|
|
146
|
+
name: "connected"
|
|
147
|
+
});
|
|
148
|
+
await Promise.resolve();
|
|
149
|
+
});
|
|
150
|
+
expect(document.body.dataset.zeroState).toBe("connected");
|
|
151
|
+
expect(document.body.dataset.zeroConnected).toBe("true");
|
|
152
|
+
expect(document.body.dataset.zeroCacheUrl).toBe("http://127.0.0.1:7788/zero");
|
|
153
|
+
await act(async () => {
|
|
154
|
+
instance.connection.state.set({
|
|
155
|
+
name: "error",
|
|
156
|
+
reason: "boom"
|
|
157
|
+
});
|
|
158
|
+
await Promise.resolve();
|
|
159
|
+
});
|
|
160
|
+
expect(document.body.dataset.zeroState).toBe("error");
|
|
161
|
+
expect(document.body.dataset.zeroConnected).toBeUndefined();
|
|
162
|
+
expect(document.body.dataset.zeroReason).toBe("boom");
|
|
163
|
+
});
|
|
164
|
+
//# sourceMappingURL=createZeroClient.connection.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createSchema","string","table","act","createRoot","afterEach","beforeEach","expect","test","vi","createZeroClient","jsx","fakeZero","hoisted","FakeConnectionState","current","listeners","Set","constructor","initial","subscribe","cb","add","delete","set","next","FakeZero","context","connection","state","name","connect","fn","errors","close","run","preload","cleanup","complete","Promise","resolve","instances","push","mock","importOriginal","actual","Zero","globalThis","IS_REACT_ACT_ENVIRONMENT","noteTable","columns","id","body","primaryKey","schema","tables","client","models","groupedQueries","instanceName","container","root","length","document","createElement","dataset","zeroState","zeroConnected","zeroReason","unmount","mount","extraProps","userID","render","ProvideZero","cacheURL","children","at","refreshAuth","instance","reason","toHaveBeenCalledTimes","toHaveBeenCalledWith","auth","events","off","zeroEvents","listen","event","some","type","toBe","connectionDataset","zeroCacheUrl","toBeUndefined"],"sources":["../../src/createZeroClient.connection.test.tsx"],"sourcesContent":[null],"mappings":"AAEA,SAASA,YAAA,EAAcC,MAAA,EAAQC,KAAA,QAAa;AAC5C,SAASC,GAAA,QAAW;AACpB,SAASC,UAAA,QAA6B;AACtC,SAASC,SAAA,EAAWC,UAAA,EAAYC,MAAA,EAAQC,IAAA,EAAMC,EAAA,QAAU;AAgDxD,SAASC,gBAAA,QAAwB;AA2CzB,SAAAC,GAAA;AAvFR,MAAMC,QAAA,GAAWH,EAAA,CAAGI,OAAA,CAAQ,MAAM;EAChC,MAAMC,mBAAA,CAAoB;IACxBC,OAAA;IACAC,SAAA,GAAY,mBAAIC,GAAA,CAAgB;IAChCC,YAAYC,OAAA,EAA4C;MACtD,KAAKJ,OAAA,GAAUI,OAAA;IACjB;IACAC,SAAA,GAAaC,EAAA,IAAmB;MAC9B,KAAKL,SAAA,CAAUM,GAAA,CAAID,EAAE;MACrB,OAAO,MAAM;QACX,KAAKL,SAAA,CAAUO,MAAA,CAAOF,EAAE;MAC1B;IACF;IACAG,IAAIC,IAAA,EAAyC;MAC3C,KAAKV,OAAA,GAAUU,IAAA;MACf,WAAWJ,EAAA,IAAM,KAAKL,SAAA,EAAWK,EAAA,CAAG;IACtC;EACF;EAEA,MAAMK,QAAA,CAAS;IACJC,OAAA,GAAU,CAAC;IACXC,UAAA,GAAa;MACpBC,KAAA,EAAO,IAAIf,mBAAA,CAAoB;QAAEgB,IAAA,EAAM;MAAa,CAAC;MACrDC,OAAA,EAAStB,EAAA,CAAGuB,EAAA,CAAG,YAAY,CAAC,CAAC;IAC/B;IACST,MAAA,GAASd,EAAA,CAAGuB,EAAA,CAAG,aAAa;MAAEC,MAAA,EAAQ;IAAG,EAAE;IAC3CC,KAAA,GAAQzB,EAAA,CAAGuB,EAAA,CAAG;IACdG,GAAA,GAAM1B,EAAA,CAAGuB,EAAA,CAAG,YAAY,EAAE;IAC1BI,OAAA,GAAU3B,EAAA,CAAGuB,EAAA,CAAG,OAAO;MAAEK,OAAA,EAASA,CAAA,KAAM,CAAC;MAAGC,QAAA,EAAUC,OAAA,CAAQC,OAAA,CAAQ;IAAE,EAAE;IAEnFtB,YAAA,EAAc;MACZuB,SAAA,CAAUC,IAAA,CAAK,IAAI;IACrB;EACF;EAEA,MAAMD,SAAA,GAAwB,EAAC;EAC/B,OAAO;IAAEf,QAAA;IAAUZ,mBAAA;IAAqB2B;EAAU;AACpD,CAAC;AAEDhC,EAAA,CAAGkC,IAAA,CAAK,kBAAkB,MAAOC,cAAA,IAAmB;EAClD,MAAMC,MAAA,GAAS,MAAMD,cAAA,CAAgD;EACrE,OAAO;IAAE,GAAGC,MAAA;IAAQC,IAAA,EAAMlC,QAAA,CAASc;EAAS;AAC9C,CAAC;AAQDqB,UAAA,CAAWC,wBAAA,GAA2B;AAEtC,MAAMC,SAAA,GAAY/C,KAAA,CAAM,MAAM,EAAEgD,OAAA,CAAQ;EAAEC,EAAA,EAAIlD,MAAA,CAAO;EAAGmD,IAAA,EAAMnD,MAAA,CAAO;AAAE,CAAC,EAAEoD,UAAA,CAAW,IAAI;AACzF,MAAMC,MAAA,GAAStD,YAAA,CAAa;EAAEuD,MAAA,EAAQ,CAACN,SAAS;AAAE,CAAC;AAEnD,MAAMO,MAAA,GAAS9C,gBAAA,CAAiB;EAC9B4C,MAAA;EACAG,MAAA,EAAQ,CAAC;EACTC,cAAA,EAAgB,CAAC;EACjBC,YAAA,EAAc;AAChB,CAAC;AAED,IAAIC,SAAA;AACJ,IAAIC,IAAA;AAEJvD,UAAA,CAAW,MAAM;EACfM,QAAA,CAAS6B,SAAA,CAAUqB,MAAA,GAAS;EAC5BF,SAAA,GAAYG,QAAA,CAASC,aAAA,CAAc,KAAK;EACxCH,IAAA,GAAO;EACP,OAAOE,QAAA,CAASX,IAAA,CAAKa,OAAA,CAAQC,SAAA;EAC7B,OAAOH,QAAA,CAASX,IAAA,CAAKa,OAAA,CAAQE,aAAA;EAC7B,OAAOJ,QAAA,CAASX,IAAA,CAAKa,OAAA,CAAQG,UAAA;AAC/B,CAAC;AAED/D,SAAA,CAAU,MAAM;EACd,IAAIwD,IAAA,EAAM1D,GAAA,CAAI,MAAM0D,IAAA,EAAMQ,OAAA,CAAQ,CAAC;AACrC,CAAC;AAED,eAAeC,MAAMC,UAAA,GAAsC,CAAC,GAAGC,MAAA,GAAS,QAAQ;EAC9EX,IAAA,GAAOzD,UAAA,CAAWwD,SAAS;EAC3B,MAAMzD,GAAA,CAAI,YAAY;IACpB0D,IAAA,EAAMY,MAAA,CACJ,eAAA9D,GAAA,CAAC6C,MAAA,CAAOkB,WAAA,EAAP;MACCC,QAAA,EAAS;MACTH,MAAA;MACC,GAAGD,UAAA;MAEJK,QAAA,iBAAAjE,GAAA,CAAC;QAAKiE,QAAA;MAAA,CAAE;IAAA,CACV,CACF;IACA,MAAMrC,OAAA,CAAQC,OAAA,CAAQ;EACxB,CAAC;EACD,OAAO5B,QAAA,CAAS6B,SAAA,CAAUoC,EAAA,CAAG,EAAE;AACjC;AAEArE,IAAA,CAAK,sEAAsE,YAAY;EACrF,MAAMsE,WAAA,GAAcrE,EAAA,CAAGuB,EAAA,CAAG,YAAY,aAAa;EACnD,MAAM+C,QAAA,GAAW,MAAMT,KAAA,CAAM;IAAEQ;EAAY,GAAG,WAAW;EAEzD,MAAM3E,GAAA,CAAI,YAAY;IACpB4E,QAAA,CAASnD,UAAA,CAAWC,KAAA,CAAML,GAAA,CAAI;MAAEM,IAAA,EAAM;MAAckD,MAAA,EAAQ;IAAgB,CAAC;IAC7E,MAAMzC,OAAA,CAAQC,OAAA,CAAQ;EACxB,CAAC;EAEDjC,MAAA,CAAOuE,WAAW,EAAEG,qBAAA,CAAsB,CAAC;EAC3C,MAAM9E,GAAA,CAAI,YAAY;IACpB,MAAMoC,OAAA,CAAQC,OAAA,CAAQ;EACxB,CAAC;EACDjC,MAAA,CAAOwE,QAAA,CAASnD,UAAA,CAAWG,OAAO,EAAEmD,oBAAA,CAAqB;IAAEC,IAAA,EAAM;EAAc,CAAC;AAClF,CAAC;AAED3E,IAAA,CAAK,kEAAkE,YAAY;EACjF,MAAM4E,MAAA,GAAkC,EAAC;EACzC,MAAMC,GAAA,GAAM7B,MAAA,CAAO8B,UAAA,CAAWC,MAAA,CAAQC,KAAA,IAAU;IAC9C,IAAIA,KAAA,EAAOJ,MAAA,CAAO1C,IAAA,CAAK8C,KAAK;EAC9B,CAAC;EACD,MAAMT,QAAA,GAAW,MAAMT,KAAA,CAAM,CAAC,GAAG,YAAY;EAE7C,MAAMnE,GAAA,CAAI,YAAY;IACpB4E,QAAA,CAASnD,UAAA,CAAWC,KAAA,CAAML,GAAA,CAAI;MAC5BM,IAAA,EAAM;MACNkD,MAAA,EAAQ;IACV,CAAC;IACD,MAAMzC,OAAA,CAAQC,OAAA,CAAQ;EACxB,CAAC;EAGDjC,MAAA,CAAOwE,QAAA,CAASnD,UAAA,CAAWG,OAAO,EAAEkD,qBAAA,CAAsB,CAAC;EAC3D1E,MAAA,CAAOwE,QAAA,CAASnD,UAAA,CAAWG,OAAO,EAAEmD,oBAAA,CAAqB;EAEzD3E,MAAA,CAAO6E,MAAA,CAAOK,IAAA,CAAMD,KAAA,IAAUA,KAAA,CAAME,IAAA,KAAS,OAAO,CAAC,EAAEC,IAAA,CAAK,KAAK;EACjEN,GAAA,CAAI;AACN,CAAC;AAED7E,IAAA,CAAK,oEAAoE,YAAY;EACnF,MAAMuE,QAAA,GAAW,MAAMT,KAAA,CAAM;IAAEsB,iBAAA,EAAmB;EAAK,GAAG,cAAc;EAExE,MAAMzF,GAAA,CAAI,YAAY;IACpB4E,QAAA,CAASnD,UAAA,CAAWC,KAAA,CAAML,GAAA,CAAI;MAAEM,IAAA,EAAM;IAAY,CAAC;IACnD,MAAMS,OAAA,CAAQC,OAAA,CAAQ;EACxB,CAAC;EACDjC,MAAA,CAAOwD,QAAA,CAASX,IAAA,CAAKa,OAAA,CAAQC,SAAS,EAAEyB,IAAA,CAAK,WAAW;EACxDpF,MAAA,CAAOwD,QAAA,CAASX,IAAA,CAAKa,OAAA,CAAQE,aAAa,EAAEwB,IAAA,CAAK,MAAM;EACvDpF,MAAA,CAAOwD,QAAA,CAASX,IAAA,CAAKa,OAAA,CAAQ4B,YAAY,EAAEF,IAAA,CAAK,4BAA4B;EAE5E,MAAMxF,GAAA,CAAI,YAAY;IACpB4E,QAAA,CAASnD,UAAA,CAAWC,KAAA,CAAML,GAAA,CAAI;MAAEM,IAAA,EAAM;MAASkD,MAAA,EAAQ;IAAO,CAAC;IAC/D,MAAMzC,OAAA,CAAQC,OAAA,CAAQ;EACxB,CAAC;EACDjC,MAAA,CAAOwD,QAAA,CAASX,IAAA,CAAKa,OAAA,CAAQC,SAAS,EAAEyB,IAAA,CAAK,OAAO;EACpDpF,MAAA,CAAOwD,QAAA,CAASX,IAAA,CAAKa,OAAA,CAAQE,aAAa,EAAE2B,aAAA,CAAc;EAC1DvF,MAAA,CAAOwD,QAAA,CAASX,IAAA,CAAKa,OAAA,CAAQG,UAAU,EAAEuB,IAAA,CAAK,MAAM;AACtD,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createSchema, string, table } from "@rocicorp/zero";
|
|
3
|
+
import { act } from "react";
|
|
4
|
+
import { createRoot } from "react-dom/client";
|
|
5
|
+
import { afterEach, beforeEach, expect, test, vi } from "vitest";
|
|
6
|
+
import { createZeroClient } from "./createZeroClient.native.js";
|
|
7
|
+
function _class_call_check(instance, Constructor) {
|
|
8
|
+
if (!(instance instanceof Constructor)) {
|
|
9
|
+
throw new TypeError("Cannot call a class as a function");
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function _defineProperties(target, props) {
|
|
13
|
+
for (var i = 0; i < props.length; i++) {
|
|
14
|
+
var descriptor = props[i];
|
|
15
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
16
|
+
descriptor.configurable = true;
|
|
17
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
18
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
22
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
23
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
24
|
+
return Constructor;
|
|
25
|
+
}
|
|
26
|
+
function _define_property(obj, key, value) {
|
|
27
|
+
if (key in obj) {
|
|
28
|
+
Object.defineProperty(obj, key, {
|
|
29
|
+
value,
|
|
30
|
+
enumerable: true,
|
|
31
|
+
configurable: true,
|
|
32
|
+
writable: true
|
|
33
|
+
});
|
|
34
|
+
} else {
|
|
35
|
+
obj[key] = value;
|
|
36
|
+
}
|
|
37
|
+
return obj;
|
|
38
|
+
}
|
|
39
|
+
var fakeZero = vi.hoisted(function () {
|
|
40
|
+
var FakeConnectionState = /* @__PURE__ */function () {
|
|
41
|
+
"use strict";
|
|
42
|
+
|
|
43
|
+
function FakeConnectionState2(initial) {
|
|
44
|
+
var _this = this;
|
|
45
|
+
_class_call_check(this, FakeConnectionState2);
|
|
46
|
+
_define_property(this, "current", void 0);
|
|
47
|
+
_define_property(this, "listeners", /* @__PURE__ */new Set());
|
|
48
|
+
_define_property(this, "subscribe", function (cb) {
|
|
49
|
+
_this.listeners.add(cb);
|
|
50
|
+
return function () {
|
|
51
|
+
_this.listeners.delete(cb);
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
this.current = initial;
|
|
55
|
+
}
|
|
56
|
+
_create_class(FakeConnectionState2, [{
|
|
57
|
+
key: "set",
|
|
58
|
+
value: function set(next) {
|
|
59
|
+
this.current = next;
|
|
60
|
+
var _iteratorNormalCompletion = true,
|
|
61
|
+
_didIteratorError = false,
|
|
62
|
+
_iteratorError = void 0;
|
|
63
|
+
try {
|
|
64
|
+
for (var _iterator = this.listeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
65
|
+
var cb = _step.value;
|
|
66
|
+
cb();
|
|
67
|
+
}
|
|
68
|
+
} catch (err) {
|
|
69
|
+
_didIteratorError = true;
|
|
70
|
+
_iteratorError = err;
|
|
71
|
+
} finally {
|
|
72
|
+
try {
|
|
73
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
74
|
+
_iterator.return();
|
|
75
|
+
}
|
|
76
|
+
} finally {
|
|
77
|
+
if (_didIteratorError) {
|
|
78
|
+
throw _iteratorError;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}]);
|
|
84
|
+
return FakeConnectionState2;
|
|
85
|
+
}();
|
|
86
|
+
var FakeZero = function FakeZero2() {
|
|
87
|
+
"use strict";
|
|
88
|
+
|
|
89
|
+
_class_call_check(this, FakeZero2);
|
|
90
|
+
_define_property(this, "context", {});
|
|
91
|
+
_define_property(this, "connection", {
|
|
92
|
+
state: new FakeConnectionState({
|
|
93
|
+
name: "connecting"
|
|
94
|
+
}),
|
|
95
|
+
connect: vi.fn(async function () {})
|
|
96
|
+
});
|
|
97
|
+
_define_property(this, "delete", vi.fn(async function () {
|
|
98
|
+
return {
|
|
99
|
+
errors: []
|
|
100
|
+
};
|
|
101
|
+
}));
|
|
102
|
+
_define_property(this, "close", vi.fn());
|
|
103
|
+
_define_property(this, "run", vi.fn(async function () {
|
|
104
|
+
return [];
|
|
105
|
+
}));
|
|
106
|
+
_define_property(this, "preload", vi.fn(function () {
|
|
107
|
+
return {
|
|
108
|
+
cleanup: function () {},
|
|
109
|
+
complete: Promise.resolve()
|
|
110
|
+
};
|
|
111
|
+
}));
|
|
112
|
+
instances.push(this);
|
|
113
|
+
};
|
|
114
|
+
var instances = [];
|
|
115
|
+
return {
|
|
116
|
+
FakeZero,
|
|
117
|
+
FakeConnectionState,
|
|
118
|
+
instances
|
|
119
|
+
};
|
|
120
|
+
});
|
|
121
|
+
vi.mock("@rocicorp/zero", async function (importOriginal) {
|
|
122
|
+
var actual = await importOriginal();
|
|
123
|
+
return {
|
|
124
|
+
...actual,
|
|
125
|
+
Zero: fakeZero.FakeZero
|
|
126
|
+
};
|
|
127
|
+
});
|
|
128
|
+
globalThis.IS_REACT_ACT_ENVIRONMENT = true;
|
|
129
|
+
var noteTable = table("note").columns({
|
|
130
|
+
id: string(),
|
|
131
|
+
body: string()
|
|
132
|
+
}).primaryKey("id");
|
|
133
|
+
var schema = createSchema({
|
|
134
|
+
tables: [noteTable]
|
|
135
|
+
});
|
|
136
|
+
var client = createZeroClient({
|
|
137
|
+
schema,
|
|
138
|
+
models: {},
|
|
139
|
+
groupedQueries: {},
|
|
140
|
+
instanceName: "connection-test"
|
|
141
|
+
});
|
|
142
|
+
var container;
|
|
143
|
+
var root;
|
|
144
|
+
beforeEach(function () {
|
|
145
|
+
fakeZero.instances.length = 0;
|
|
146
|
+
container = document.createElement("div");
|
|
147
|
+
root = null;
|
|
148
|
+
delete document.body.dataset.zeroState;
|
|
149
|
+
delete document.body.dataset.zeroConnected;
|
|
150
|
+
delete document.body.dataset.zeroReason;
|
|
151
|
+
});
|
|
152
|
+
afterEach(function () {
|
|
153
|
+
if (root) act(function () {
|
|
154
|
+
return root === null || root === void 0 ? void 0 : root.unmount();
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
async function mount() {
|
|
158
|
+
var extraProps = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {},
|
|
159
|
+
userID = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "conn";
|
|
160
|
+
root = createRoot(container);
|
|
161
|
+
await act(async function () {
|
|
162
|
+
root === null || root === void 0 ? void 0 : root.render(/* @__PURE__ */_jsx(client.ProvideZero, {
|
|
163
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
164
|
+
userID,
|
|
165
|
+
...extraProps,
|
|
166
|
+
children: /* @__PURE__ */_jsx("span", {
|
|
167
|
+
children: "ok"
|
|
168
|
+
})
|
|
169
|
+
}));
|
|
170
|
+
await Promise.resolve();
|
|
171
|
+
});
|
|
172
|
+
return fakeZero.instances.at(-1);
|
|
173
|
+
}
|
|
174
|
+
test("refreshAuth reconnects in place on needs-auth, once per transition", async function () {
|
|
175
|
+
var refreshAuth = vi.fn(async function () {
|
|
176
|
+
return "fresh-token";
|
|
177
|
+
});
|
|
178
|
+
var instance = await mount({
|
|
179
|
+
refreshAuth
|
|
180
|
+
}, "conn-auth");
|
|
181
|
+
await act(async function () {
|
|
182
|
+
instance.connection.state.set({
|
|
183
|
+
name: "needs-auth",
|
|
184
|
+
reason: "token expired"
|
|
185
|
+
});
|
|
186
|
+
await Promise.resolve();
|
|
187
|
+
});
|
|
188
|
+
expect(refreshAuth).toHaveBeenCalledTimes(1);
|
|
189
|
+
await act(async function () {
|
|
190
|
+
await Promise.resolve();
|
|
191
|
+
});
|
|
192
|
+
expect(instance.connection.connect).toHaveBeenCalledWith({
|
|
193
|
+
auth: "fresh-token"
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
test("stale-poke error reconnects instead of surfacing a fatal error", async function () {
|
|
197
|
+
var events = [];
|
|
198
|
+
var off = client.zeroEvents.listen(function (event) {
|
|
199
|
+
if (event) events.push(event);
|
|
200
|
+
});
|
|
201
|
+
var instance = await mount({}, "conn-stale");
|
|
202
|
+
await act(async function () {
|
|
203
|
+
instance.connection.state.set({
|
|
204
|
+
name: "error",
|
|
205
|
+
reason: "Server returned unexpected base cookie during sync"
|
|
206
|
+
});
|
|
207
|
+
await Promise.resolve();
|
|
208
|
+
});
|
|
209
|
+
expect(instance.connection.connect).toHaveBeenCalledTimes(1);
|
|
210
|
+
expect(instance.connection.connect).toHaveBeenCalledWith();
|
|
211
|
+
expect(events.some(function (event) {
|
|
212
|
+
return event.type === "error";
|
|
213
|
+
})).toBe(false);
|
|
214
|
+
off();
|
|
215
|
+
});
|
|
216
|
+
test("connectionDataset mirrors connection state onto the body dataset", async function () {
|
|
217
|
+
var instance = await mount({
|
|
218
|
+
connectionDataset: true
|
|
219
|
+
}, "conn-dataset");
|
|
220
|
+
await act(async function () {
|
|
221
|
+
instance.connection.state.set({
|
|
222
|
+
name: "connected"
|
|
223
|
+
});
|
|
224
|
+
await Promise.resolve();
|
|
225
|
+
});
|
|
226
|
+
expect(document.body.dataset.zeroState).toBe("connected");
|
|
227
|
+
expect(document.body.dataset.zeroConnected).toBe("true");
|
|
228
|
+
expect(document.body.dataset.zeroCacheUrl).toBe("http://127.0.0.1:7788/zero");
|
|
229
|
+
await act(async function () {
|
|
230
|
+
instance.connection.state.set({
|
|
231
|
+
name: "error",
|
|
232
|
+
reason: "boom"
|
|
233
|
+
});
|
|
234
|
+
await Promise.resolve();
|
|
235
|
+
});
|
|
236
|
+
expect(document.body.dataset.zeroState).toBe("error");
|
|
237
|
+
expect(document.body.dataset.zeroConnected).toBeUndefined();
|
|
238
|
+
expect(document.body.dataset.zeroReason).toBe("boom");
|
|
239
|
+
});
|
|
240
|
+
//# sourceMappingURL=createZeroClient.connection.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","createSchema","string","table","act","createRoot","afterEach","beforeEach","expect","test","vi","createZeroClient","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","value","fakeZero","hoisted","FakeConnectionState","FakeConnectionState2","initial","_this","Set","cb","listeners","add","delete","current","set","next","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","done","err","return","FakeZero","FakeZero2","state","name","connect","fn","errors","cleanup","complete","Promise","resolve","instances","push","mock","importOriginal","actual","Zero","globalThis","IS_REACT_ACT_ENVIRONMENT","noteTable","columns","id","body","primaryKey","schema","tables"],"sources":["../../src/createZeroClient.connection.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|