on-zero 0.4.31 → 0.4.33
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/cli.native.js.map +1 -1
- package/dist/cjs/combineZeroClients.native.js.map +1 -1
- package/dist/cjs/createPermissions.native.js.map +1 -1
- package/dist/cjs/createSchemaFromDrizzle.native.js.map +1 -1
- package/dist/cjs/createUseQuery.native.js.map +1 -1
- package/dist/cjs/createZeroClient.authData.test.cjs +67 -0
- package/dist/cjs/createZeroClient.authData.test.native.js +72 -0
- package/dist/cjs/createZeroClient.authData.test.native.js.map +1 -0
- package/dist/cjs/createZeroClient.cjs +41 -26
- package/dist/cjs/createZeroClient.native.js +47 -26
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/createZeroServer.native.js.map +1 -1
- package/dist/cjs/generate-helpers.native.js.map +1 -1
- package/dist/cjs/generate-lite.native.js.map +1 -1
- package/dist/cjs/generate-lite.test.native.js.map +1 -1
- package/dist/cjs/generate.cjs +41 -0
- package/dist/cjs/generate.native.js +63 -0
- package/dist/cjs/generate.native.js.map +1 -1
- package/dist/cjs/generate.test.native.js.map +1 -1
- package/dist/cjs/helpers/batchQuery.native.js.map +1 -1
- package/dist/cjs/helpers/clearZeroClientData.native.js.map +1 -1
- package/dist/cjs/helpers/createMutators.native.js.map +1 -1
- package/dist/cjs/helpers/didRunPermissionCheck.native.js.map +1 -1
- package/dist/cjs/helpers/ensureLoggedIn.native.js.map +1 -1
- package/dist/cjs/helpers/getAuth.native.js.map +1 -1
- package/dist/cjs/helpers/mutatorContext.native.js.map +1 -1
- package/dist/cjs/helpers/prettyFormatZeroQuery.native.js.map +1 -1
- package/dist/cjs/helpers/queryContext.native.js.map +1 -1
- package/dist/cjs/helpers/recoverZeroClient.cjs +101 -0
- package/dist/cjs/helpers/recoverZeroClient.native.js +130 -0
- package/dist/cjs/helpers/recoverZeroClient.native.js.map +1 -0
- package/dist/cjs/helpers/recoverZeroClient.test.cjs +201 -0
- package/dist/cjs/helpers/recoverZeroClient.test.native.js +256 -0
- package/dist/cjs/helpers/recoverZeroClient.test.native.js.map +1 -0
- package/dist/cjs/helpers/showZeroClientError.native.js.map +1 -1
- package/dist/cjs/helpers/useMutation.native.js.map +1 -1
- package/dist/cjs/helpers/useMutation.test.native.js.map +1 -1
- package/dist/cjs/helpers/useZeroDebug.native.js.map +1 -1
- package/dist/cjs/httpPull/auth.test.native.js.map +1 -1
- package/dist/cjs/httpPull/churn.test.native.js.map +1 -1
- package/dist/cjs/httpPull/fixtureSchema.native.js.map +1 -1
- package/dist/cjs/httpPull/fixtureServer.native.js.map +1 -1
- package/dist/cjs/httpPull/integration.test.native.js.map +1 -1
- package/dist/cjs/httpPull/rebase.test.native.js.map +1 -1
- package/dist/cjs/httpPull/relations.test.native.js.map +1 -1
- package/dist/cjs/httpPull/testHarness.native.js.map +1 -1
- package/dist/cjs/httpPull/transport.test.native.js.map +1 -1
- package/dist/cjs/httpPullTransport.native.js.map +1 -1
- package/dist/cjs/index.cjs +4 -1
- package/dist/cjs/index.native.js +3 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/instanceRegistry.native.js.map +1 -1
- package/dist/cjs/modelRegistry.native.js.map +1 -1
- package/dist/cjs/multiInstance.test.cjs +4 -3
- package/dist/cjs/multiInstance.test.native.js +6 -6
- package/dist/cjs/multiInstance.test.native.js.map +1 -1
- package/dist/cjs/multiInstanceNested.test.native.js.map +1 -1
- package/dist/cjs/mutations.native.js.map +1 -1
- package/dist/cjs/queryRegistry.native.js.map +1 -1
- package/dist/cjs/resolveQuery.native.js.map +1 -1
- package/dist/cjs/run.native.js.map +1 -1
- package/dist/cjs/serverWhere.native.js.map +1 -1
- package/dist/cjs/serverWhere.test.native.js.map +1 -1
- package/dist/cjs/state.native.js.map +1 -1
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/cjs/usePermission.test.native.js.map +1 -1
- package/dist/cjs/vite-plugin.native.js.map +1 -1
- package/dist/cjs/where.native.js.map +1 -1
- package/dist/cjs/zeroRunner.native.js.map +1 -1
- package/dist/cjs/zql.native.js.map +1 -1
- package/dist/esm/createZeroClient.authData.test.mjs +68 -0
- package/dist/esm/createZeroClient.authData.test.mjs.map +1 -0
- package/dist/esm/createZeroClient.authData.test.native.js +70 -0
- package/dist/esm/createZeroClient.authData.test.native.js.map +1 -0
- package/dist/esm/createZeroClient.mjs +42 -27
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +48 -27
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/createZeroServer.mjs.map +1 -1
- package/dist/esm/generate.mjs +41 -0
- package/dist/esm/generate.mjs.map +1 -1
- package/dist/esm/generate.native.js +63 -0
- package/dist/esm/generate.native.js.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.mjs +74 -0
- package/dist/esm/helpers/recoverZeroClient.mjs.map +1 -0
- package/dist/esm/helpers/recoverZeroClient.native.js +100 -0
- package/dist/esm/helpers/recoverZeroClient.native.js.map +1 -0
- package/dist/esm/helpers/recoverZeroClient.test.mjs +202 -0
- package/dist/esm/helpers/recoverZeroClient.test.mjs.map +1 -0
- package/dist/esm/helpers/recoverZeroClient.test.native.js +254 -0
- package/dist/esm/helpers/recoverZeroClient.test.native.js.map +1 -0
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +2 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/multiInstance.test.mjs +4 -3
- package/dist/esm/multiInstance.test.mjs.map +1 -1
- package/dist/esm/multiInstance.test.native.js +6 -6
- package/dist/esm/multiInstance.test.native.js.map +1 -1
- package/package.json +2 -2
- package/src/createZeroClient.authData.test.tsx +73 -0
- package/src/createZeroClient.tsx +60 -47
- package/src/createZeroServer.ts +2 -2
- package/src/generate.ts +62 -0
- package/src/helpers/recoverZeroClient.test.ts +172 -0
- package/src/helpers/recoverZeroClient.ts +173 -0
- package/src/index.ts +5 -0
- package/src/multiInstance.test.tsx +5 -3
- package/src/multiInstanceNested.test.tsx +1 -1
- package/src/types.ts +6 -1
- package/types/createZeroClient.authData.test.d.ts +5 -0
- package/types/createZeroClient.authData.test.d.ts.map +1 -0
- package/types/createZeroClient.d.ts +2 -1
- package/types/createZeroClient.d.ts.map +1 -1
- package/types/createZeroServer.d.ts +4 -4
- package/types/generate.d.ts.map +1 -1
- package/types/helpers/recoverZeroClient.d.ts +17 -0
- package/types/helpers/recoverZeroClient.d.ts.map +1 -0
- package/types/helpers/recoverZeroClient.test.d.ts +2 -0
- package/types/helpers/recoverZeroClient.test.d.ts.map +1 -0
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/types.d.ts +6 -0
- package/types/types.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createSchema","string","table","createEmitter","describe","expect","test","vi","combineZeroClients","createZeroClient","getInstanceForNamespace","registerClientInstance","registerQuery","run","setRunner","userTable","columns","id","name","primaryKey","taskTable","title","schema","tables","makeQueryFn","args","makeClient","instanceName","namespace","byId","client","models","groupedQueries","fakeClient","namespaces","zeroStub","customQueries","useQuery","fn","useQueryDirect","usePermission","usePermissionDirect","zero","preload","getQuery","zeroEvents","ControlQueries","children","control","project","controlRunner","_args","from","projectRunner","runner","ambientRunner","resolves","toEqual","not","toHaveBeenCalled","request","mock","calls","query","queryName","toBe","ambient","toHaveBeenCalledTimes","toThrow","mdlThing","mutate","insert","a","b","options","seenByB","listen","event","push","emit","type","message","value","clientID","insertSpy","updateSpy","fzUser","userID","fzTask","update","combined","toHaveBeenCalledWith","unknownNs","userQuery","taskQuery","anonymous","aQuery","bQuery","inner","seen","map"],"sources":["../../src/multiInstance.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createSchema","string","table","createEmitter","describe","expect","test","vi","combineZeroClients","createZeroClient","getInstanceForNamespace","registerClientInstance","registerQuery","run","setRunner","userTable","columns","id","name","primaryKey","taskTable","title","schema","tables","makeQueryFn","args","makeClient","instanceName","namespace","byId","client","models","groupedQueries","fakeClient","namespaces","zeroStub","customQueries","useQuery","fn","useQueryDirect","usePermission","usePermissionDirect","zero","preload","getQuery","zeroEvents","ControlQueries","children","control","project","controlRunner","_args","from","projectRunner","runner","ambientRunner","resolves","toEqual","not","toHaveBeenCalled","request","mock","calls","query","queryName","toBe","ambient","toHaveBeenCalledTimes","toThrow","mdlThing","mutate","insert","a","b","options","seenByB","listen","event","push","emit","type","message","value","clientID","insertSpy","updateSpy","fzUser","userID","fzTask","update","combined","toHaveBeenCalledWith","unknownNs","userQuery","taskQuery","anonymous","aQuery","bQuery","inner","seen","messageOf","map"],"sources":["../../src/multiInstance.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -355,7 +355,6 @@ describe("combineZeroClients facade", function () {
|
|
|
355
355
|
}).toThrow(/not one of the passed clients/);
|
|
356
356
|
});
|
|
357
357
|
test("combined zeroEvents relays every instance", function () {
|
|
358
|
-
var _a_zeroEvents_value, _b_zeroEvents_value;
|
|
359
358
|
var {
|
|
360
359
|
client: a
|
|
361
360
|
} = makeClient("relay-a", "relayA");
|
|
@@ -375,11 +374,12 @@ describe("combineZeroClients facade", function () {
|
|
|
375
374
|
type: "error",
|
|
376
375
|
message: "from-b"
|
|
377
376
|
});
|
|
378
|
-
|
|
379
|
-
return event === null || event === void 0 ? void 0 : event.message;
|
|
380
|
-
}
|
|
381
|
-
expect((
|
|
382
|
-
expect((
|
|
377
|
+
var messageOf = function (event) {
|
|
378
|
+
return (event === null || event === void 0 ? void 0 : event.type) === "error" ? event.message : void 0;
|
|
379
|
+
};
|
|
380
|
+
expect(seen.map(messageOf)).toEqual(["from-a", "from-b"]);
|
|
381
|
+
expect(messageOf(a.zeroEvents.value)).toBe("from-a");
|
|
382
|
+
expect(messageOf(b.zeroEvents.value)).toBe("from-b");
|
|
383
383
|
});
|
|
384
384
|
});
|
|
385
385
|
//# sourceMappingURL=multiInstance.test.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createSchema","string","table","createEmitter","describe","expect","test","vi","combineZeroClients","createZeroClient","getInstanceForNamespace","registerClientInstance","registerQuery","run","setRunner","userTable","columns","id","name","primaryKey","taskTable","title","schema","tables","makeQueryFn","args","makeClient","instanceName","namespace","byId","client","models","groupedQueries","fakeClient","namespaces","zeroStub","customQueries","useQuery","fn","useQueryDirect","usePermission","usePermissionDirect","zero","preload","getQuery","zeroEvents","ControlQueries","param","children","control","project","controlRunner","_len","arguments","length","_args","Array","_key","from","projectRunner","runner","ambientRunner","resolves","toEqual","not","toHaveBeenCalled","request","mock","calls","query","queryName","toBe","ambient","toHaveBeenCalledTimes","toThrow","_getInstanceForNamespace","mdlThing","mutate","insert","_a_zeroEvents_options","_b_zeroEvents_options","a","b","options","seenByB","listen","event","push","emit","type","message","value","_client_zeroEvents_options"],"sources":["../../src/multiInstance.test.tsx"],"sourcesContent":[null],"mappings":"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
|
|
1
|
+
{"version":3,"names":["createSchema","string","table","createEmitter","describe","expect","test","vi","combineZeroClients","createZeroClient","getInstanceForNamespace","registerClientInstance","registerQuery","run","setRunner","userTable","columns","id","name","primaryKey","taskTable","title","schema","tables","makeQueryFn","args","makeClient","instanceName","namespace","byId","client","models","groupedQueries","fakeClient","namespaces","zeroStub","customQueries","useQuery","fn","useQueryDirect","usePermission","usePermissionDirect","zero","preload","getQuery","zeroEvents","ControlQueries","param","children","control","project","controlRunner","_len","arguments","length","_args","Array","_key","from","projectRunner","runner","ambientRunner","resolves","toEqual","not","toHaveBeenCalled","request","mock","calls","query","queryName","toBe","ambient","toHaveBeenCalledTimes","toThrow","_getInstanceForNamespace","mdlThing","mutate","insert","_a_zeroEvents_options","_b_zeroEvents_options","a","b","options","seenByB","listen","event","push","emit","type","message","value","_client_zeroEvents_options"],"sources":["../../src/multiInstance.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "on-zero",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.33",
|
|
4
4
|
"description": "A typed layer over @rocicorp/zero with queries, mutations, and permissions",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"source": "src/index.ts",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
}
|
|
78
78
|
},
|
|
79
79
|
"dependencies": {
|
|
80
|
-
"@take-out/helpers": "0.4.
|
|
80
|
+
"@take-out/helpers": "0.4.33",
|
|
81
81
|
"chokidar": "^4.0.3",
|
|
82
82
|
"citty": "^0.1.6",
|
|
83
83
|
"valibot": "^1.1.0"
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// @vitest-environment jsdom
|
|
2
|
+
//
|
|
3
|
+
// authData stabilization: ProvideZero keeps the last non-null authData across a
|
|
4
|
+
// transient blip (session refresh / tab wake) so mutations never see null
|
|
5
|
+
// mid-transition — but a REAL logout (auth token gone) must clear it, or client
|
|
6
|
+
// mutators keep running as the old user until the instance rotates.
|
|
7
|
+
|
|
8
|
+
import { createSchema, string, table } from '@rocicorp/zero'
|
|
9
|
+
import { act } from 'react'
|
|
10
|
+
import { createRoot, type Root } from 'react-dom/client'
|
|
11
|
+
import { afterEach, beforeEach, expect, test } from 'vitest'
|
|
12
|
+
|
|
13
|
+
import { createZeroClient } from './createZeroClient'
|
|
14
|
+
import { getAuthData } from './state'
|
|
15
|
+
|
|
16
|
+
declare global {
|
|
17
|
+
// eslint-disable-next-line no-var
|
|
18
|
+
var IS_REACT_ACT_ENVIRONMENT: boolean | undefined
|
|
19
|
+
}
|
|
20
|
+
globalThis.IS_REACT_ACT_ENVIRONMENT = true
|
|
21
|
+
|
|
22
|
+
const userTable = table('user').columns({ id: string(), name: string() }).primaryKey('id')
|
|
23
|
+
const schema = createSchema({ tables: [userTable] })
|
|
24
|
+
|
|
25
|
+
const client = createZeroClient({
|
|
26
|
+
schema,
|
|
27
|
+
models: {},
|
|
28
|
+
groupedQueries: {},
|
|
29
|
+
instanceName: 'authdata-test',
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
let container: HTMLDivElement
|
|
33
|
+
let root: Root
|
|
34
|
+
|
|
35
|
+
beforeEach(() => {
|
|
36
|
+
container = document.createElement('div')
|
|
37
|
+
root = createRoot(container)
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
afterEach(() => {
|
|
41
|
+
act(() => root.unmount())
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
function renderWith(props: {
|
|
45
|
+
auth?: string
|
|
46
|
+
authData: { id: string } | null
|
|
47
|
+
userID: string
|
|
48
|
+
}) {
|
|
49
|
+
act(() => {
|
|
50
|
+
root.render(
|
|
51
|
+
<client.ProvideZero
|
|
52
|
+
auth={props.auth}
|
|
53
|
+
authData={props.authData}
|
|
54
|
+
userID={props.userID}
|
|
55
|
+
>
|
|
56
|
+
<span>ok</span>
|
|
57
|
+
</client.ProvideZero>,
|
|
58
|
+
)
|
|
59
|
+
})
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
test('authData clears on logout (token gone) but survives a transient blip', () => {
|
|
63
|
+
renderWith({ auth: 'tok', authData: { id: 'u1' }, userID: 'u1' })
|
|
64
|
+
expect(getAuthData()).toEqual({ id: 'u1' })
|
|
65
|
+
|
|
66
|
+
// transient authData blip with the token still present → keep the last value
|
|
67
|
+
renderWith({ auth: 'tok', authData: null, userID: 'u1' })
|
|
68
|
+
expect(getAuthData()).toEqual({ id: 'u1' })
|
|
69
|
+
|
|
70
|
+
// real logout: no token + no authData → cleared (mutators must not run as u1)
|
|
71
|
+
renderWith({ authData: null, userID: 'anon' })
|
|
72
|
+
expect(getAuthData()).toBeNull()
|
|
73
|
+
})
|
package/src/createZeroClient.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineQueries, defineQuery, Zero as ZeroClient } from '@rocicorp/zero'
|
|
2
2
|
import { useConnectionState, useZero, ZeroProvider } from '@rocicorp/zero/react'
|
|
3
|
-
import { createEmitter
|
|
3
|
+
import { createEmitter } from '@take-out/helpers'
|
|
4
4
|
import {
|
|
5
5
|
createContext,
|
|
6
6
|
memo,
|
|
@@ -22,6 +22,11 @@ import {
|
|
|
22
22
|
} from './createUseQuery'
|
|
23
23
|
import { registerClientInstance } from './instanceRegistry'
|
|
24
24
|
import { createMutators } from './helpers/createMutators'
|
|
25
|
+
import {
|
|
26
|
+
composeRecoveryLogSink,
|
|
27
|
+
makeZeroRecovery,
|
|
28
|
+
type ZeroRecoveryDeps,
|
|
29
|
+
} from './helpers/recoverZeroClient'
|
|
25
30
|
import { getAuth } from './helpers/getAuth'
|
|
26
31
|
import { getAllMutationsPermissions, getMutationsPermissions } from './modelRegistry'
|
|
27
32
|
import { registerQuery } from './queryRegistry'
|
|
@@ -226,8 +231,8 @@ export function createZeroClient<
|
|
|
226
231
|
const zeroEvents = createEmitter<ZeroEvent | null>(`zero${emitterScope}`, null)
|
|
227
232
|
|
|
228
233
|
// bumped after commit whenever the mounted zero instance changes (first
|
|
229
|
-
// mount, identity change
|
|
230
|
-
//
|
|
234
|
+
// mount, identity change) — the direct query path re-materializes its views
|
|
235
|
+
// against the new instance
|
|
231
236
|
const zeroInstanceVersion = createEmitter<number>(
|
|
232
237
|
`zero-instance-version${emitterScope}`,
|
|
233
238
|
0,
|
|
@@ -316,24 +321,13 @@ export function createZeroClient<
|
|
|
316
321
|
// with different identities would thrash this slot.
|
|
317
322
|
let cachedZero: { key: string; instance: ZeroInstance } | null = null
|
|
318
323
|
|
|
319
|
-
// bumping this recreates the instance with the same options — parity with
|
|
320
|
-
// ZeroProvider's built-in onClientStateNotFound rotation. the pending flag
|
|
321
|
-
// mirrors upstream's rotationPendingRef: a storm of client-state-not-found
|
|
322
|
-
// callbacks coalesces into ONE rotation, re-armed when the fresh instance
|
|
323
|
-
// is created — without it a new instance that immediately re-fires the
|
|
324
|
-
// callback rotation-loops forever.
|
|
325
|
-
const zeroInstanceGeneration = createEmitter<number>(
|
|
326
|
-
`zero-instance-generation${emitterScope}`,
|
|
327
|
-
0,
|
|
328
|
-
)
|
|
329
|
-
let zeroRotationPending = false
|
|
330
|
-
|
|
331
324
|
const ProvideZero = ({
|
|
332
325
|
children,
|
|
333
326
|
authData: authDataIn,
|
|
334
327
|
disable,
|
|
335
328
|
transport,
|
|
336
329
|
pullIntervalMs = 30_000,
|
|
330
|
+
beforeReload,
|
|
337
331
|
...props
|
|
338
332
|
}: Omit<ZeroOptions<Schema, ZeroMutators>, 'schema' | 'mutators'> & {
|
|
339
333
|
children: ReactNode
|
|
@@ -346,8 +340,28 @@ export function createZeroClient<
|
|
|
346
340
|
// http-pull only: every open connection also pulls on this interval so
|
|
347
341
|
// server-initiated changes arrive without a client-side trigger
|
|
348
342
|
pullIntervalMs?: number
|
|
343
|
+
// awaited before a self-healing recovery reload — e.g. wait for the dev
|
|
344
|
+
// origin to be reachable so the reload doesn't hit a restarting server.
|
|
345
|
+
beforeReload?: () => Promise<void>
|
|
349
346
|
}) => {
|
|
350
|
-
|
|
347
|
+
// resolve the auth token first: a real logout (token gone) must clear
|
|
348
|
+
// authData so client mutators don't keep running as the old user, while a
|
|
349
|
+
// transient authData blip with the token still present (session refresh, tab
|
|
350
|
+
// wake) keeps the last value so mutations never see null mid-transition.
|
|
351
|
+
const auth = 'auth' in props ? (props as { auth?: string | null }).auth : undefined
|
|
352
|
+
const hasAuth = typeof auth === 'string'
|
|
353
|
+
|
|
354
|
+
// stabilize authData across transient gaps, but ONLY while authed — bakes in
|
|
355
|
+
// what consumers hand-rolled with a ref, and additionally clears on logout
|
|
356
|
+
// (the bare ref pattern does not, leaving mutators running as the old user
|
|
357
|
+
// until the instance rotates).
|
|
358
|
+
const stableAuthDataRef = useRef<AuthData | null>(authDataIn ?? null)
|
|
359
|
+
if (authDataIn) {
|
|
360
|
+
stableAuthDataRef.current = authDataIn
|
|
361
|
+
} else if (!hasAuth) {
|
|
362
|
+
stableAuthDataRef.current = null
|
|
363
|
+
}
|
|
364
|
+
const authData = (authDataIn ?? stableAuthDataRef.current ?? null) as AuthData
|
|
351
365
|
|
|
352
366
|
// update global authData synchronously during render so mutations always have latest auth
|
|
353
367
|
// (mutations read auth dynamically via getAuthData() to avoid stale closure race condition)
|
|
@@ -366,11 +380,6 @@ export function createZeroClient<
|
|
|
366
380
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
367
381
|
}, [])
|
|
368
382
|
|
|
369
|
-
const generation = useEmitterValue(zeroInstanceGeneration)
|
|
370
|
-
|
|
371
|
-
const auth = 'auth' in props ? (props as { auth?: string | null }).auth : undefined
|
|
372
|
-
const hasAuth = typeof auth === 'string'
|
|
373
|
-
|
|
374
383
|
// identity = every primitive option except the auth token value (token
|
|
375
384
|
// changes refresh in place below; logged-in <-> logged-out still rotates
|
|
376
385
|
// via hasAuth, matching zero's documented provider semantics). function
|
|
@@ -383,7 +392,6 @@ export function createZeroClient<
|
|
|
383
392
|
)
|
|
384
393
|
.sort(([a], [b]) => (a < b ? -1 : 1)),
|
|
385
394
|
hasAuth,
|
|
386
|
-
generation,
|
|
387
395
|
transport,
|
|
388
396
|
])
|
|
389
397
|
|
|
@@ -413,33 +421,38 @@ export function createZeroClient<
|
|
|
413
421
|
}
|
|
414
422
|
ensureHttpPullTransport({ origin: serverURL, pullIntervalMs })
|
|
415
423
|
}
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
onClientStateNotFound: () => {
|
|
425
|
-
// consumer callback wins; recreate-with-same-options is the
|
|
426
|
-
// fallback, mirroring ZeroProvider's internal rotation.
|
|
427
|
-
if (options.onClientStateNotFound) {
|
|
428
|
-
try {
|
|
429
|
-
options.onClientStateNotFound()
|
|
430
|
-
return
|
|
431
|
-
} catch {
|
|
432
|
-
// fall through to rotation
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
if (zeroRotationPending) return
|
|
436
|
-
zeroRotationPending = true
|
|
437
|
-
zeroInstanceGeneration.emit(zeroInstanceGeneration.value + 1)
|
|
438
|
-
},
|
|
439
|
-
}),
|
|
424
|
+
// recovery closures reach the instance through this ref so they always
|
|
425
|
+
// delete the CURRENT instance's own store (set right after construction;
|
|
426
|
+
// the handlers only fire post-mount).
|
|
427
|
+
const instanceRef: { current: ZeroInstance | null } = { current: null }
|
|
428
|
+
const recoveryDeps: ZeroRecoveryDeps = {
|
|
429
|
+
deleteLocalState: () => instanceRef.current?.delete() ?? Promise.resolve(),
|
|
430
|
+
zeroEvents,
|
|
431
|
+
beforeReload,
|
|
440
432
|
}
|
|
433
|
+
const recovery = makeZeroRecovery(recoveryDeps)
|
|
434
|
+
const createdInstance = new ZeroClient<Schema, ZeroMutators>({
|
|
435
|
+
kvStore: 'mem',
|
|
436
|
+
...options,
|
|
437
|
+
schema,
|
|
438
|
+
// @ts-expect-error same erasure ZeroProvider needed
|
|
439
|
+
mutators,
|
|
440
|
+
// when the consumer brings no logSink, install ours: it preserves
|
|
441
|
+
// Zero's console output AND watches for the local-store-lost signature.
|
|
442
|
+
// a consumer with its own logSink owns log-based recovery (no
|
|
443
|
+
// double-fire with e.g. soot's origin-gated recovery).
|
|
444
|
+
logSink: options.logSink ?? composeRecoveryLogSink(recoveryDeps),
|
|
445
|
+
// consumer handlers win; otherwise on-zero's default self-healing
|
|
446
|
+
// recovery covers EVERY reason (drop local state + reload, guarded) —
|
|
447
|
+
// passing these to Zero disables its built-in reload, so any reason we
|
|
448
|
+
// left unhandled would fatal-blank the app forever.
|
|
449
|
+
onUpdateNeeded: options.onUpdateNeeded ?? recovery.onUpdateNeeded,
|
|
450
|
+
onClientStateNotFound:
|
|
451
|
+
options.onClientStateNotFound ?? recovery.onClientStateNotFound,
|
|
452
|
+
})
|
|
453
|
+
instanceRef.current = createdInstance
|
|
454
|
+
cached = { key: instanceKey, instance: createdInstance }
|
|
441
455
|
cachedZero = cached
|
|
442
|
-
zeroRotationPending = false
|
|
443
456
|
}
|
|
444
457
|
setInstance(cached.instance)
|
|
445
458
|
// identity is fully captured by instanceKey; function props are bound
|
package/src/createZeroServer.ts
CHANGED
|
@@ -272,8 +272,8 @@ export function createZeroServer<
|
|
|
272
272
|
{ authData: authData || ({} as AuthData) },
|
|
273
273
|
() =>
|
|
274
274
|
userID === undefined
|
|
275
|
-
? zeroHandleQueryRequest(handler
|
|
276
|
-
: zeroHandleQueryRequest({ handler
|
|
275
|
+
? zeroHandleQueryRequest(handler, schema, request)
|
|
276
|
+
: zeroHandleQueryRequest({ handler, schema, request, userID }),
|
|
277
277
|
)
|
|
278
278
|
|
|
279
279
|
return {
|
package/src/generate.ts
CHANGED
|
@@ -19,6 +19,37 @@ import type { ExtractedMutation, ModelMutations, SchemaColumn } from './generate
|
|
|
19
19
|
|
|
20
20
|
const hash = (s: string) => createHash('sha256').update(s).digest('hex')
|
|
21
21
|
|
|
22
|
+
// hash every .ts input the generator reads (all of baseDir except the generated
|
|
23
|
+
// output dir + node_modules) so a dev-boot regen can be skipped when nothing
|
|
24
|
+
// changed. the expensive part of generate() — loading the typescript compiler
|
|
25
|
+
// and building a TS program per query/model for type resolution — runs every
|
|
26
|
+
// boot otherwise, even when the output is already current (the configureServer
|
|
27
|
+
// watcher re-runs it on real edits, so the boot-time pass is pure redundancy).
|
|
28
|
+
function hashInputTree(baseDir: string, generatedDir: string): string {
|
|
29
|
+
const parts: string[] = []
|
|
30
|
+
const walk = (dir: string) => {
|
|
31
|
+
if (!existsSync(dir)) return
|
|
32
|
+
const entries = readdirSync(dir, { withFileTypes: true }).sort((a, b) =>
|
|
33
|
+
a.name < b.name ? -1 : 1,
|
|
34
|
+
)
|
|
35
|
+
for (const entry of entries) {
|
|
36
|
+
const full = resolve(dir, entry.name)
|
|
37
|
+
if (entry.isDirectory()) {
|
|
38
|
+
if (entry.name === 'node_modules' || full === generatedDir) continue
|
|
39
|
+
walk(full)
|
|
40
|
+
} else if (
|
|
41
|
+
entry.isFile() &&
|
|
42
|
+
entry.name.endsWith('.ts') &&
|
|
43
|
+
!entry.name.endsWith('.d.ts')
|
|
44
|
+
) {
|
|
45
|
+
parts.push(`${full}\0${readFileSync(full, 'utf-8')}`)
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
walk(baseDir)
|
|
50
|
+
return hash(parts.join('\0'))
|
|
51
|
+
}
|
|
52
|
+
|
|
22
53
|
let generateCache: Record<string, string> = {}
|
|
23
54
|
let generateCachePath = ''
|
|
24
55
|
|
|
@@ -750,6 +781,29 @@ export async function generate(options: GenerateOptions): Promise<GenerateResult
|
|
|
750
781
|
|
|
751
782
|
loadCache()
|
|
752
783
|
|
|
784
|
+
// input-freshness gate: if nothing under baseDir changed since the last
|
|
785
|
+
// COMPLETED generate (the input hash is only stored at the end, after
|
|
786
|
+
// saveCache), the outputs are already current — skip the typescript-program
|
|
787
|
+
// build entirely and return the cached counts. the configureServer watcher
|
|
788
|
+
// still re-runs generate on real model/query edits.
|
|
789
|
+
const inputHash = hashInputTree(baseDir, generatedDir)
|
|
790
|
+
if (
|
|
791
|
+
generateCache.__inputHash === inputHash &&
|
|
792
|
+
existsSync(resolve(generatedDir, 'models.ts'))
|
|
793
|
+
) {
|
|
794
|
+
let counts: Partial<GenerateResult> = {}
|
|
795
|
+
try {
|
|
796
|
+
counts = JSON.parse(generateCache.__counts || '{}')
|
|
797
|
+
} catch {}
|
|
798
|
+
return {
|
|
799
|
+
filesChanged: 0,
|
|
800
|
+
modelCount: counts.modelCount ?? 0,
|
|
801
|
+
schemaCount: counts.schemaCount ?? 0,
|
|
802
|
+
queryCount: counts.queryCount ?? 0,
|
|
803
|
+
mutationCount: counts.mutationCount ?? 0,
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
|
|
753
807
|
const allModelFiles = readdirSync(modelsDir)
|
|
754
808
|
.filter((f) => f.endsWith('.ts'))
|
|
755
809
|
.sort()
|
|
@@ -1061,6 +1115,14 @@ export async function generate(options: GenerateOptions): Promise<GenerateResult
|
|
|
1061
1115
|
}
|
|
1062
1116
|
}
|
|
1063
1117
|
|
|
1118
|
+
// record the input hash + counts so the next boot can skip a no-op regen.
|
|
1119
|
+
generateCache.__inputHash = inputHash
|
|
1120
|
+
generateCache.__counts = JSON.stringify({
|
|
1121
|
+
modelCount: allModelFiles.length,
|
|
1122
|
+
schemaCount: filesWithSchema.length,
|
|
1123
|
+
queryCount,
|
|
1124
|
+
mutationCount,
|
|
1125
|
+
})
|
|
1064
1126
|
saveCache()
|
|
1065
1127
|
|
|
1066
1128
|
return {
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
// @vitest-environment jsdom
|
|
2
|
+
import { createEmitter } from '@take-out/helpers'
|
|
3
|
+
import { UpdateNeededReasonType } from '@rocicorp/zero'
|
|
4
|
+
import { beforeEach, describe, expect, test, vi } from 'vitest'
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
composeRecoveryLogSink,
|
|
8
|
+
makeZeroRecovery,
|
|
9
|
+
resetRecoveryStateForTests,
|
|
10
|
+
} from './recoverZeroClient'
|
|
11
|
+
|
|
12
|
+
import type { ZeroRecoveryDeps } from './recoverZeroClient'
|
|
13
|
+
import type { ZeroEvent } from '../types'
|
|
14
|
+
|
|
15
|
+
let emitterSeq = 0
|
|
16
|
+
|
|
17
|
+
function setup() {
|
|
18
|
+
const events: ZeroEvent[] = []
|
|
19
|
+
const zeroEvents = createEmitter<ZeroEvent | null>(`test-recover-${emitterSeq++}`, null)
|
|
20
|
+
zeroEvents.listen((event) => {
|
|
21
|
+
if (event) events.push(event)
|
|
22
|
+
})
|
|
23
|
+
const deleteLocalState = vi.fn(() => Promise.resolve())
|
|
24
|
+
const reload = vi.fn()
|
|
25
|
+
const deps: ZeroRecoveryDeps = { deleteLocalState, zeroEvents, reload }
|
|
26
|
+
return { deps, deleteLocalState, reload, events }
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// recovery chains deletes -> beforeReload -> reload across several microtasks;
|
|
30
|
+
// a macrotask boundary drains the whole chain deterministically.
|
|
31
|
+
async function flush() {
|
|
32
|
+
await new Promise((resolve) => setTimeout(resolve, 0))
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
beforeEach(() => {
|
|
36
|
+
window.sessionStorage.clear()
|
|
37
|
+
resetRecoveryStateForTests()
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
describe('zero recovery', () => {
|
|
41
|
+
test('SchemaVersionNotSupported drops local state and reloads, emitting recovering', async () => {
|
|
42
|
+
const { deps, deleteLocalState, reload, events } = setup()
|
|
43
|
+
makeZeroRecovery(deps).onUpdateNeeded({
|
|
44
|
+
type: UpdateNeededReasonType.SchemaVersionNotSupported,
|
|
45
|
+
})
|
|
46
|
+
expect(events).toEqual([
|
|
47
|
+
{
|
|
48
|
+
type: 'recovering',
|
|
49
|
+
reason: expect.stringContaining('SchemaVersionNotSupported'),
|
|
50
|
+
},
|
|
51
|
+
])
|
|
52
|
+
await flush()
|
|
53
|
+
expect(deleteLocalState).toHaveBeenCalledTimes(1)
|
|
54
|
+
expect(reload).toHaveBeenCalledTimes(1)
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
test('NewClientGroup / VersionNotSupported reload WITHOUT deleting (sibling-tab safe)', async () => {
|
|
58
|
+
const { deps, deleteLocalState, reload } = setup()
|
|
59
|
+
const recovery = makeZeroRecovery(deps)
|
|
60
|
+
recovery.onUpdateNeeded({ type: UpdateNeededReasonType.NewClientGroup })
|
|
61
|
+
await flush()
|
|
62
|
+
resetRecoveryStateForTests()
|
|
63
|
+
recovery.onUpdateNeeded({ type: UpdateNeededReasonType.VersionNotSupported })
|
|
64
|
+
await flush()
|
|
65
|
+
expect(deleteLocalState).not.toHaveBeenCalled()
|
|
66
|
+
expect(reload).toHaveBeenCalledTimes(2)
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
test('onClientStateNotFound drops local state and reloads', async () => {
|
|
70
|
+
const { deps, deleteLocalState, reload } = setup()
|
|
71
|
+
makeZeroRecovery(deps).onClientStateNotFound()
|
|
72
|
+
await flush()
|
|
73
|
+
expect(deleteLocalState).toHaveBeenCalledTimes(1)
|
|
74
|
+
expect(reload).toHaveBeenCalledTimes(1)
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
test('combined client: every instance deletes its own store, but only ONE reload', async () => {
|
|
78
|
+
// two instances (control + project) fail on the same page-load. each must
|
|
79
|
+
// drop its OWN store; only one page reload should fire.
|
|
80
|
+
const a = setup()
|
|
81
|
+
const b = setup()
|
|
82
|
+
makeZeroRecovery(a.deps).onClientStateNotFound()
|
|
83
|
+
makeZeroRecovery(b.deps).onClientStateNotFound()
|
|
84
|
+
await flush()
|
|
85
|
+
expect(a.deleteLocalState).toHaveBeenCalledTimes(1)
|
|
86
|
+
expect(b.deleteLocalState).toHaveBeenCalledTimes(1)
|
|
87
|
+
expect(a.reload.mock.calls.length + b.reload.mock.calls.length).toBe(1)
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
test('a second trigger in the same page-load adds no extra reload or fatal', async () => {
|
|
91
|
+
const { deps, reload, events } = setup()
|
|
92
|
+
const recovery = makeZeroRecovery(deps)
|
|
93
|
+
recovery.onClientStateNotFound()
|
|
94
|
+
recovery.onUpdateNeeded({ type: UpdateNeededReasonType.NewClientGroup })
|
|
95
|
+
await flush()
|
|
96
|
+
expect(reload).toHaveBeenCalledTimes(1)
|
|
97
|
+
expect(events.filter((event) => event.type === 'fatal')).toEqual([])
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
test('after a reload, a re-failing reason emits fatal instead of reloading again', async () => {
|
|
101
|
+
const { deps, reload, events } = setup()
|
|
102
|
+
const recovery = makeZeroRecovery(deps)
|
|
103
|
+
recovery.onClientStateNotFound()
|
|
104
|
+
await flush()
|
|
105
|
+
resetRecoveryStateForTests() // simulate the page reload clearing in-memory state
|
|
106
|
+
recovery.onClientStateNotFound()
|
|
107
|
+
await flush()
|
|
108
|
+
expect(reload).toHaveBeenCalledTimes(1)
|
|
109
|
+
expect(events.some((event) => event.type === 'fatal')).toBe(true)
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
test('after a reload, a different reason still recovers', async () => {
|
|
113
|
+
const { deps, reload } = setup()
|
|
114
|
+
const recovery = makeZeroRecovery(deps)
|
|
115
|
+
recovery.onClientStateNotFound()
|
|
116
|
+
await flush()
|
|
117
|
+
resetRecoveryStateForTests()
|
|
118
|
+
recovery.onUpdateNeeded({ type: UpdateNeededReasonType.SchemaVersionNotSupported })
|
|
119
|
+
await flush()
|
|
120
|
+
expect(reload).toHaveBeenCalledTimes(2)
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
test('logSink recovers on local-store-lost and forwards to the consumer sink', async () => {
|
|
124
|
+
const { deps, deleteLocalState, reload } = setup()
|
|
125
|
+
const consumer = { log: vi.fn() }
|
|
126
|
+
const sink = composeRecoveryLogSink(deps, consumer)
|
|
127
|
+
sink.log('error', undefined, 'Error during persist: Expected IndexedDB not found')
|
|
128
|
+
expect(consumer.log).toHaveBeenCalledTimes(1)
|
|
129
|
+
await flush()
|
|
130
|
+
expect(deleteLocalState).toHaveBeenCalledTimes(1)
|
|
131
|
+
expect(reload).toHaveBeenCalledTimes(1)
|
|
132
|
+
})
|
|
133
|
+
|
|
134
|
+
test('logSink with no consumer preserves console output and still watches', async () => {
|
|
135
|
+
const { deps, deleteLocalState, reload } = setup()
|
|
136
|
+
const infoSpy = vi.spyOn(console, 'info').mockImplementation(() => {})
|
|
137
|
+
const sink = composeRecoveryLogSink(deps)
|
|
138
|
+
sink.log('info', { worker: 'sync' }, 'connected')
|
|
139
|
+
expect(infoSpy).toHaveBeenCalledWith('worker=sync', 'connected')
|
|
140
|
+
infoSpy.mockRestore()
|
|
141
|
+
sink.log('error', undefined, 'Expected IndexedDB not found')
|
|
142
|
+
await flush()
|
|
143
|
+
expect(deleteLocalState).toHaveBeenCalledTimes(1)
|
|
144
|
+
expect(reload).toHaveBeenCalledTimes(1)
|
|
145
|
+
})
|
|
146
|
+
|
|
147
|
+
test('logSink flush calls through the consumer sink (preserves its this)', async () => {
|
|
148
|
+
const { deps } = setup()
|
|
149
|
+
class ClassSink {
|
|
150
|
+
flushed = false
|
|
151
|
+
log(): void {}
|
|
152
|
+
flush(): Promise<void> {
|
|
153
|
+
this.flushed = true
|
|
154
|
+
return Promise.resolve()
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
const consumer = new ClassSink()
|
|
158
|
+
const sink = composeRecoveryLogSink(deps, consumer)
|
|
159
|
+
await sink.flush?.()
|
|
160
|
+
expect(consumer.flushed).toBe(true)
|
|
161
|
+
})
|
|
162
|
+
|
|
163
|
+
test('logSink ignores non-error level and non-matching messages', async () => {
|
|
164
|
+
const { deps, deleteLocalState, reload } = setup()
|
|
165
|
+
const sink = composeRecoveryLogSink(deps)
|
|
166
|
+
sink.log('info', undefined, 'Expected IndexedDB not found')
|
|
167
|
+
sink.log('error', undefined, 'some unrelated error')
|
|
168
|
+
await flush()
|
|
169
|
+
expect(deleteLocalState).not.toHaveBeenCalled()
|
|
170
|
+
expect(reload).not.toHaveBeenCalled()
|
|
171
|
+
})
|
|
172
|
+
})
|