@playfast/reform 1.3.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -6
- package/dist/calc/asyncCalc.d.ts +3 -1
- package/dist/calc/asyncCalc.d.ts.map +1 -1
- package/dist/calc/asyncCalc.js +15 -5
- package/dist/calc/asyncCalc.js.map +1 -1
- package/dist/calc/asyncCalcTypes.d.ts +2 -0
- package/dist/calc/asyncCalcTypes.d.ts.map +1 -1
- package/dist/calc/calcFamily.d.ts.map +1 -1
- package/dist/calc/calcFamily.js +77 -34
- package/dist/calc/calcFamily.js.map +1 -1
- package/dist/calc/queryState.d.ts +3 -1
- package/dist/calc/queryState.d.ts.map +1 -1
- package/dist/calc/queryState.js +31 -9
- package/dist/calc/queryState.js.map +1 -1
- package/dist/channel/channel.d.ts.map +1 -1
- package/dist/channel/channel.js +6 -1
- package/dist/channel/channel.js.map +1 -1
- package/dist/compose/composition.d.ts.map +1 -1
- package/dist/compose/composition.js +7 -1
- package/dist/compose/composition.js.map +1 -1
- package/dist/compose/structure.d.ts.map +1 -1
- package/dist/compose/structure.js +33 -8
- package/dist/compose/structure.js.map +1 -1
- package/dist/compose/ui.d.ts.map +1 -1
- package/dist/compose/ui.js +16 -5
- package/dist/compose/ui.js.map +1 -1
- package/dist/event/event.d.ts +1 -1
- package/dist/event/event.d.ts.map +1 -1
- package/dist/event/event.js +26 -4
- package/dist/event/event.js.map +1 -1
- package/dist/internal/familyKeys.d.ts +16 -0
- package/dist/internal/familyKeys.d.ts.map +1 -0
- package/dist/internal/familyKeys.js +35 -0
- package/dist/internal/familyKeys.js.map +1 -0
- package/dist/internal/platform.d.ts +43 -0
- package/dist/internal/platform.d.ts.map +1 -0
- package/dist/internal/platform.js +68 -0
- package/dist/internal/platform.js.map +1 -0
- package/dist/internal/queryDriver.d.ts.map +1 -1
- package/dist/internal/queryDriver.js +88 -64
- package/dist/internal/queryDriver.js.map +1 -1
- package/dist/internal/queryDriverConsume.d.ts +9 -0
- package/dist/internal/queryDriverConsume.d.ts.map +1 -0
- package/dist/internal/queryDriverConsume.js +16 -0
- package/dist/internal/queryDriverConsume.js.map +1 -0
- package/dist/internal/queryDriverHydrate.d.ts.map +1 -1
- package/dist/internal/queryDriverHydrate.js +9 -3
- package/dist/internal/queryDriverHydrate.js.map +1 -1
- package/dist/internal/queryDriverPersist.d.ts +16 -0
- package/dist/internal/queryDriverPersist.d.ts.map +1 -0
- package/dist/internal/queryDriverPersist.js +15 -0
- package/dist/internal/queryDriverPersist.js.map +1 -0
- package/dist/internal/queryDriverPersistWarn.d.ts +12 -0
- package/dist/internal/queryDriverPersistWarn.d.ts.map +1 -0
- package/dist/internal/queryDriverPersistWarn.js +31 -0
- package/dist/internal/queryDriverPersistWarn.js.map +1 -0
- package/dist/internal/queryDriverSettle.d.ts +23 -0
- package/dist/internal/queryDriverSettle.d.ts.map +1 -0
- package/dist/internal/queryDriverSettle.js +52 -0
- package/dist/internal/queryDriverSettle.js.map +1 -0
- package/dist/internal/queryDriverStore.d.ts +2 -28
- package/dist/internal/queryDriverStore.d.ts.map +1 -1
- package/dist/internal/queryDriverStore.js +5 -29
- package/dist/internal/queryDriverStore.js.map +1 -1
- package/dist/internal/queryDriverTypes.d.ts +3 -0
- package/dist/internal/queryDriverTypes.d.ts.map +1 -1
- package/dist/internal/scheduler.d.ts +1 -0
- package/dist/internal/scheduler.d.ts.map +1 -1
- package/dist/internal/scheduler.js +69 -6
- package/dist/internal/scheduler.js.map +1 -1
- package/dist/internal.d.ts +2 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +4 -0
- package/dist/internal.js.map +1 -1
- package/dist/reducer/reducer.js +3 -3
- package/dist/reducer/reducer.js.map +1 -1
- package/dist/remote/pendingQueue.d.ts +4 -2
- package/dist/remote/pendingQueue.d.ts.map +1 -1
- package/dist/remote/pendingQueue.js +20 -4
- package/dist/remote/pendingQueue.js.map +1 -1
- package/dist/remote/remoteState.d.ts.map +1 -1
- package/dist/remote/remoteState.js +27 -14
- package/dist/remote/remoteState.js.map +1 -1
- package/dist/remote/remoteStateSend.d.ts +3 -1
- package/dist/remote/remoteStateSend.d.ts.map +1 -1
- package/dist/remote/remoteStateSend.js +19 -3
- package/dist/remote/remoteStateSend.js.map +1 -1
- package/dist/remote/remoteStateTypes.d.ts +3 -0
- package/dist/remote/remoteStateTypes.d.ts.map +1 -1
- package/dist/runtime/bus.d.ts +5 -0
- package/dist/runtime/bus.d.ts.map +1 -1
- package/dist/runtime/bus.js +1 -1
- package/dist/runtime/bus.js.map +1 -1
- package/dist/runtime/capturedAppRuntime.d.ts.map +1 -1
- package/dist/runtime/capturedAppRuntime.js +37 -51
- package/dist/runtime/capturedAppRuntime.js.map +1 -1
- package/dist/runtime/eventBudget.d.ts.map +1 -1
- package/dist/runtime/eventBudget.js +2 -1
- package/dist/runtime/eventBudget.js.map +1 -1
- package/dist/runtime/featureMount.d.ts +34 -2
- package/dist/runtime/featureMount.d.ts.map +1 -1
- package/dist/runtime/featureMount.js +66 -2
- package/dist/runtime/featureMount.js.map +1 -1
- package/dist/runtime/loop.d.ts +12 -0
- package/dist/runtime/loop.d.ts.map +1 -1
- package/dist/runtime/loop.js +8 -5
- package/dist/runtime/loop.js.map +1 -1
- package/dist/state/state.d.ts +2 -2
- package/dist/state/state.d.ts.map +1 -1
- package/dist/state/state.js +2 -2
- package/dist/state/state.js.map +1 -1
- package/dist/state/stateFamily.d.ts +2 -2
- package/dist/state/stateFamily.d.ts.map +1 -1
- package/dist/state/stateFamily.js +80 -32
- package/dist/state/stateFamily.js.map +1 -1
- package/dist/state/stateGroup.d.ts +5 -5
- package/dist/state/stateGroup.d.ts.map +1 -1
- package/dist/state/stateGroup.js +1 -1
- package/dist/state/stateGroup.js.map +1 -1
- package/dist/testkit/flight.testkit.d.ts.map +1 -1
- package/dist/testkit/flight.testkit.js +2 -1
- package/dist/testkit/flight.testkit.js.map +1 -1
- package/dist/ui/trigger.d.ts +3 -0
- package/dist/ui/trigger.d.ts.map +1 -1
- package/dist/ui/trigger.js +14 -1
- package/dist/ui/trigger.js.map +1 -1
- package/dist/wire/tree.d.ts.map +1 -1
- package/dist/wire/tree.js +6 -1
- package/dist/wire/tree.js.map +1 -1
- package/package.json +1 -1
- package/src/calc/asyncCalc-key-attribution.test.ts +182 -0
- package/src/calc/asyncCalc-registry-name.test.ts +82 -0
- package/src/calc/asyncCalc.superseded-commit.test.ts +162 -0
- package/src/calc/asyncCalc.test.ts +35 -7
- package/src/calc/asyncCalc.ts +33 -10
- package/src/calc/asyncCalcTypes.ts +6 -0
- package/src/calc/calcFamily.ts +81 -34
- package/src/calc/family-identity.test.ts +231 -0
- package/src/calc/queryState.ts +36 -5
- package/src/channel/channel-throttle-frames.test.ts +163 -0
- package/src/channel/channel.ts +5 -0
- package/src/compose/compose-identity.test.ts +175 -0
- package/src/compose/composition.ts +8 -4
- package/src/compose/structure.ts +45 -13
- package/src/compose/ui.ts +22 -5
- package/src/event/event.ts +34 -5
- package/src/event/syncTrigger.test.ts +66 -0
- package/src/internal/familyKeys.ts +41 -0
- package/src/internal/platform.test.ts +55 -0
- package/src/internal/platform.ts +72 -0
- package/src/internal/queryDriver-defect-attribution.test.ts +107 -0
- package/src/internal/queryDriver-persist-key.test.ts +118 -0
- package/src/internal/queryDriver.persistence-staleness.test.ts +209 -0
- package/src/internal/queryDriver.ts +92 -80
- package/src/internal/queryDriverConsume.ts +42 -0
- package/src/internal/queryDriverHydrate.ts +9 -3
- package/src/internal/queryDriverPersist.ts +42 -0
- package/src/internal/queryDriverPersistWarn.ts +61 -0
- package/src/internal/queryDriverSettle.ts +85 -0
- package/src/internal/queryDriverStore.ts +9 -74
- package/src/internal/queryDriverTypes.ts +10 -0
- package/src/internal/queryState-and-scheduler-audit.test.ts +170 -0
- package/src/internal/scheduler-multi-source-wake.test.ts +111 -0
- package/src/internal/scheduler.ts +80 -6
- package/src/internal.ts +4 -0
- package/src/reducer/reducer.ts +3 -3
- package/src/remote/pendingQueue.ts +35 -5
- package/src/remote/remoteState.intent-key-stamp.test.ts +207 -0
- package/src/remote/remoteState.key-attribution.test.ts +174 -0
- package/src/remote/remoteState.ts +27 -15
- package/src/remote/remoteStateSend.ts +29 -8
- package/src/remote/remoteStateTypes.ts +7 -0
- package/src/runtime/bus.ts +6 -1
- package/src/runtime/capturedAppRuntime.ts +134 -110
- package/src/runtime/eventBudget.ts +2 -1
- package/src/runtime/feature-mount-ownership.test.ts +539 -0
- package/src/runtime/featureMount.ts +110 -3
- package/src/runtime/loop.ts +29 -6
- package/src/runtime/mount-inflight-ownership.test.ts +361 -0
- package/src/runtime/mount-scope-hardening.test.ts +440 -0
- package/src/runtime/runtime.schema-identity.test.ts +188 -0
- package/src/state/state.ts +8 -4
- package/src/state/stateFamily.ts +86 -36
- package/src/state/stateGroup.ts +24 -6
- package/src/testkit/flight.testkit.ts +2 -1
- package/src/ui/trigger.ts +18 -0
- package/src/wire/tree-key-presence.test.ts +46 -0
- package/src/wire/tree.ts +9 -1
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import { Cause,
|
|
1
|
+
import { Cause, Effect, MutableRef, Option, Queue, Runtime } from 'effect';
|
|
2
2
|
import { empty } from '../calc/queryState.js';
|
|
3
3
|
import { Queries } from '../runtime/queries.js';
|
|
4
|
-
import { reuse } from './reuse.js';
|
|
5
4
|
import { resolveInstrumentation } from '../runtime/instrumentation.js';
|
|
6
5
|
import { resolveQueryStore } from './queryStore.js';
|
|
6
|
+
import { makePersistWrite, persistCacheKey } from './queryDriverPersist.js';
|
|
7
|
+
import { makeSettlers } from './queryDriverSettle.js';
|
|
7
8
|
import { hydratePersistedQuery } from './queryDriverHydrate.js';
|
|
8
|
-
import { incrementGeneration, makeQueryProjection, subscribeQuerySources,
|
|
9
|
+
import { incrementGeneration, makeQueryProjection, subscribeQuerySources, withReaderTracking, } from './queryDriverStore.js';
|
|
10
|
+
import { consumeRequests } from './queryDriverConsume.js';
|
|
9
11
|
import { resolveScheduler } from './scheduler.js';
|
|
10
12
|
import { sameKey, wireSources } from './sources.js';
|
|
11
13
|
import { makeStore } from './store.js';
|
|
12
14
|
import {} from '../state/token.js';
|
|
15
|
+
import { microtask } from './platform.js';
|
|
13
16
|
export { bumpRevision, gatedFlag, Revision, RevisionSchema, revisionZero, } from './queryDriverTypes.js';
|
|
14
17
|
// oxlint-disable-next-line reform-rules/prefer-effect-fn -- generic export: Effect.fn's inferred type isn't portable under isolatedDeclarations
|
|
15
18
|
export const makeQueryDriver = (options) => Effect.gen(function* () {
|
|
@@ -20,12 +23,16 @@ export const makeQueryDriver = (options) => Effect.gen(function* () {
|
|
|
20
23
|
const persist = options.persist;
|
|
21
24
|
const queryStore = yield* resolveQueryStore;
|
|
22
25
|
const keyOf = (args) => extraKey === undefined ? sources.keyOf(args) : [...sources.keyOf(args), extraKey.read()];
|
|
23
|
-
const persistKey = (key, args) => (typeof key === 'function' ? key(args) : key);
|
|
24
26
|
const disabledNow = (args = sources.snapshot()) => options.gated && options.disabled !== undefined ? options.disabled(args) : false;
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
+
const keepPreviousData = options.keepPreviousData === true;
|
|
28
|
+
const idle = empty(false, keepPreviousData);
|
|
29
|
+
const stateStore = makeStore(disabledNow() ? idle : empty(true, keepPreviousData), scheduler);
|
|
27
30
|
const readers = MutableRef.make(0);
|
|
28
31
|
const lastKey = MutableRef.make(undefined);
|
|
32
|
+
// Attribution tracks the *source* key, not `keyOf`: `extraKey` carries the
|
|
33
|
+
// invalidateOn revision, and a revision bump revalidates the same question
|
|
34
|
+
// rather than asking a new one.
|
|
35
|
+
const lastSourceKey = MutableRef.make(undefined);
|
|
29
36
|
// Monotonic source epoch for the one startup hydration attempt. Comparing
|
|
30
37
|
// only the current key is insufficient: A → B → A would otherwise let the
|
|
31
38
|
// original A cache land over the later A request. Same-key refetches do not
|
|
@@ -37,42 +44,31 @@ export const makeQueryDriver = (options) => Effect.gen(function* () {
|
|
|
37
44
|
// captures this before the startup kick, while invalidation captures it when
|
|
38
45
|
// the value is marked stale.
|
|
39
46
|
const staleAtGeneration = MutableRef.make(0);
|
|
40
|
-
const markFetching = (
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
};
|
|
59
|
-
const settleError = (error, failedGeneration) => {
|
|
60
|
-
// Preserve the stale cause after failure without duplicating a newer request.
|
|
61
|
-
MutableRef.update(staleAtGeneration, (current) => Math.max(current, failedGeneration));
|
|
62
|
-
settleQueryError(stateStore, error);
|
|
63
|
-
};
|
|
64
|
-
const persistWriteTo = (target, produced, args) => target.codec.encode(produced).pipe(Effect.flatMap((encoded) => queryStore.set(persistKey(target.key, args), encoded)),
|
|
65
|
-
// Persistence is best-effort and must not block the visible write.
|
|
66
|
-
Effect.ignore);
|
|
67
|
-
const persistWrite = (produced, args) => persist === undefined ? Effect.void : persistWriteTo(persist, produced, args);
|
|
68
|
-
const derived = makeQueryProjection({ gated: options.gated, scheduler, stateStore });
|
|
47
|
+
const { markFetching, settleSuccess, settleError, settleDefect } = makeSettlers({
|
|
48
|
+
stateStore,
|
|
49
|
+
lastSourceKey,
|
|
50
|
+
generation,
|
|
51
|
+
staleAtGeneration,
|
|
52
|
+
reuse: options.reuse === true,
|
|
53
|
+
});
|
|
54
|
+
const persistWrite = makePersistWrite({
|
|
55
|
+
queryStore,
|
|
56
|
+
persist,
|
|
57
|
+
label: options.label,
|
|
58
|
+
name: options.name,
|
|
59
|
+
});
|
|
60
|
+
const derived = makeQueryProjection({
|
|
61
|
+
gated: options.gated,
|
|
62
|
+
scheduler,
|
|
63
|
+
stateStore,
|
|
64
|
+
});
|
|
69
65
|
yield* Effect.addFinalizer(() => Effect.sync(derived.unsubscribe));
|
|
70
66
|
const commitSuccess = (produced, request) => {
|
|
71
67
|
if (disabledNow()) {
|
|
72
68
|
return Effect.void;
|
|
73
69
|
}
|
|
74
70
|
return Effect.suspend(() => {
|
|
75
|
-
const shared = settleSuccess(produced);
|
|
71
|
+
const shared = settleSuccess(produced, request);
|
|
76
72
|
options.onSettled?.(request.generation);
|
|
77
73
|
return persistWrite(shared, request.args);
|
|
78
74
|
});
|
|
@@ -80,9 +76,11 @@ export const makeQueryDriver = (options) => Effect.gen(function* () {
|
|
|
80
76
|
const runQuery = (request) => Effect.sync(() => instrumentation.queryRun(options.name)).pipe(Effect.flatMap((endSpan) => options.query(request.args).pipe(Effect.ensuring(Effect.sync(endSpan)))), Effect.tapDefect((defect) => Effect.logError(`reform: ${options.label} '${options.name}' query defect`, defect)), Effect.matchCause({
|
|
81
77
|
onSuccess: (produced) => Option.some(produced),
|
|
82
78
|
onFailure: (cause) => {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
79
|
+
if (!disabledNow()) {
|
|
80
|
+
Option.match(Cause.failureOption(cause), {
|
|
81
|
+
onSome: (error) => settleError(error, request),
|
|
82
|
+
onNone: () => settleDefect(request),
|
|
83
|
+
});
|
|
86
84
|
}
|
|
87
85
|
return Option.none();
|
|
88
86
|
},
|
|
@@ -90,22 +88,13 @@ export const makeQueryDriver = (options) => Effect.gen(function* () {
|
|
|
90
88
|
onNone: () => Effect.void,
|
|
91
89
|
onSome: (produced) => commitSuccess(produced, request),
|
|
92
90
|
})));
|
|
93
|
-
const trailing = options.coalesce === 'trailing';
|
|
94
91
|
const requests = yield* Queue.unbounded();
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
yield* runQuery(request);
|
|
101
|
-
}
|
|
102
|
-
const pending = yield* Queue.size(requests);
|
|
103
|
-
if (pending > 0 && !disabledNow()) {
|
|
104
|
-
yield* Effect.sync(markFetching);
|
|
105
|
-
}
|
|
92
|
+
yield* Effect.forkScoped(consumeRequests(options.coalesce === 'trailing', {
|
|
93
|
+
requests,
|
|
94
|
+
runQuery,
|
|
95
|
+
disabledNow: () => disabledNow(),
|
|
96
|
+
markFetching,
|
|
106
97
|
}));
|
|
107
|
-
const switchConsumer = Stream.fromQueue(requests).pipe(Stream.flatMap((request) => Stream.fromEffect(runQuery(request)), { switch: true }), Stream.runDrain);
|
|
108
|
-
yield* Effect.forkScoped(trailing ? trailingConsumer : switchConsumer);
|
|
109
98
|
const enqueue = (force) => {
|
|
110
99
|
const args = sources.snapshot();
|
|
111
100
|
if (disabledNow(args)) {
|
|
@@ -113,6 +102,7 @@ export const makeQueryDriver = (options) => Effect.gen(function* () {
|
|
|
113
102
|
MutableRef.update(sourceEpoch, (current) => current + 1);
|
|
114
103
|
}
|
|
115
104
|
MutableRef.set(lastKey, undefined);
|
|
105
|
+
MutableRef.set(lastSourceKey, undefined);
|
|
116
106
|
stateStore.set(idle);
|
|
117
107
|
return;
|
|
118
108
|
}
|
|
@@ -121,12 +111,16 @@ export const makeQueryDriver = (options) => Effect.gen(function* () {
|
|
|
121
111
|
if (!force && previous !== undefined && sameKey(key, previous)) {
|
|
122
112
|
return;
|
|
123
113
|
}
|
|
114
|
+
const sourceKey = sources.keyOf(args);
|
|
115
|
+
const previousSourceKey = MutableRef.get(lastSourceKey);
|
|
116
|
+
const changedKey = previousSourceKey !== undefined && !sameKey(sourceKey, previousSourceKey);
|
|
124
117
|
if (previous !== undefined && !sameKey(key, previous)) {
|
|
125
118
|
MutableRef.update(sourceEpoch, (current) => current + 1);
|
|
126
119
|
}
|
|
127
120
|
MutableRef.set(lastKey, key);
|
|
128
|
-
|
|
129
|
-
|
|
121
|
+
MutableRef.set(lastSourceKey, sourceKey);
|
|
122
|
+
markFetching(changedKey);
|
|
123
|
+
Queue.unsafeOffer(requests, { args, sourceKey, generation: nextGeneration() });
|
|
130
124
|
};
|
|
131
125
|
const trigger = () => enqueue(false);
|
|
132
126
|
const refetch = () => enqueue(true);
|
|
@@ -136,14 +130,32 @@ export const makeQueryDriver = (options) => Effect.gen(function* () {
|
|
|
136
130
|
refetch();
|
|
137
131
|
}
|
|
138
132
|
};
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
133
|
+
// Every invalidation in a frame is one signal, not N: the mark is raised
|
|
134
|
+
// synchronously but the response is coalesced onto a microtask, so a storm
|
|
135
|
+
// (a focus burst, several mutations acking together) issues one request. A
|
|
136
|
+
// later frame arms it again — that invalidation is genuinely uncovered by a
|
|
137
|
+
// request issued before it.
|
|
138
|
+
const refetchArmed = MutableRef.make(false);
|
|
139
|
+
const scheduleAutoRefetch = () => {
|
|
140
|
+
if (MutableRef.get(refetchArmed)) {
|
|
142
141
|
return;
|
|
143
142
|
}
|
|
143
|
+
MutableRef.set(refetchArmed, true);
|
|
144
|
+
microtask(() => {
|
|
145
|
+
MutableRef.set(refetchArmed, false);
|
|
146
|
+
maybeAutoRefetch();
|
|
147
|
+
});
|
|
148
|
+
};
|
|
149
|
+
const invalidate = () => {
|
|
150
|
+
const state = stateStore.get();
|
|
151
|
+
// Always advance the mark: an invalidation raised while an earlier one's
|
|
152
|
+
// revalidation is in flight is not covered by that flight, so returning early
|
|
153
|
+
// on `isStale` would drop it whole (the refetch-on-focus path).
|
|
144
154
|
MutableRef.set(staleAtGeneration, MutableRef.get(generation));
|
|
145
|
-
|
|
146
|
-
|
|
155
|
+
if (!state.isStale) {
|
|
156
|
+
stateStore.set({ ...state, isStale: true });
|
|
157
|
+
}
|
|
158
|
+
scheduleAutoRefetch();
|
|
147
159
|
};
|
|
148
160
|
const unsubscribe = subscribeQuerySources(sources, extraKey, trigger);
|
|
149
161
|
yield* Effect.addFinalizer(() => Effect.sync(unsubscribe));
|
|
@@ -154,7 +166,7 @@ export const makeQueryDriver = (options) => Effect.gen(function* () {
|
|
|
154
166
|
const hydrateSourceEpoch = MutableRef.get(sourceEpoch);
|
|
155
167
|
const hydrate = hydratePersistedQuery({
|
|
156
168
|
queryStore,
|
|
157
|
-
cacheKey:
|
|
169
|
+
cacheKey: persistCacheKey(persist.key, hydrateArgs),
|
|
158
170
|
codec: persist.codec,
|
|
159
171
|
stateStore,
|
|
160
172
|
staleAtGeneration,
|
|
@@ -169,9 +181,16 @@ export const makeQueryDriver = (options) => Effect.gen(function* () {
|
|
|
169
181
|
}
|
|
170
182
|
const initial = sources.snapshot();
|
|
171
183
|
if (!disabledNow(initial)) {
|
|
172
|
-
|
|
184
|
+
const initialKey = keyOf(initial);
|
|
185
|
+
const initialSourceKey = sources.keyOf(initial);
|
|
186
|
+
MutableRef.set(lastKey, initialKey);
|
|
187
|
+
MutableRef.set(lastSourceKey, initialSourceKey);
|
|
173
188
|
markFetching();
|
|
174
|
-
Queue.unsafeOffer(requests, {
|
|
189
|
+
Queue.unsafeOffer(requests, {
|
|
190
|
+
args: initial,
|
|
191
|
+
sourceKey: initialSourceKey,
|
|
192
|
+
generation: nextGeneration(),
|
|
193
|
+
});
|
|
175
194
|
}
|
|
176
195
|
const store = withReaderTracking({
|
|
177
196
|
store: derived.store,
|
|
@@ -193,6 +212,11 @@ export const makeQueryDriver = (options) => Effect.gen(function* () {
|
|
|
193
212
|
queries.register(handle);
|
|
194
213
|
yield* Effect.addFinalizer(() => Effect.sync(() => queries.unregister(handle)));
|
|
195
214
|
}
|
|
196
|
-
return {
|
|
215
|
+
return {
|
|
216
|
+
store,
|
|
217
|
+
requested: () => MutableRef.get(generation),
|
|
218
|
+
key: () => sources.keyOf(sources.snapshot()),
|
|
219
|
+
subscribeKey: sources.subscribe,
|
|
220
|
+
};
|
|
197
221
|
});
|
|
198
222
|
//# sourceMappingURL=queryDriver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryDriver.js","sourceRoot":"","sources":["../../src/internal/queryDriver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queryDriver.js","sourceRoot":"","sources":["../../src/internal/queryDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Effect, type Queue } from 'effect';
|
|
2
|
+
export interface ConsumeOptions<Request, R> {
|
|
3
|
+
readonly requests: Queue.Queue<Request>;
|
|
4
|
+
readonly runQuery: (request: Request) => Effect.Effect<void, never, R>;
|
|
5
|
+
readonly disabledNow: () => boolean;
|
|
6
|
+
readonly markFetching: () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare const consumeRequests: <Request, R>(trailing: boolean, options: ConsumeOptions<Request, R>) => Effect.Effect<void, never, R>;
|
|
9
|
+
//# sourceMappingURL=queryDriverConsume.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryDriverConsume.d.ts","sourceRoot":"","sources":["../../src/internal/queryDriverConsume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAU,KAAK,KAAK,EAAU,MAAM,QAAQ,CAAA;AAKlE,MAAM,WAAW,cAAc,CAAC,OAAO,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACvC,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACtE,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,IAAI,CAAA;CAClC;AA4BD,eAAO,MAAM,eAAe,GAAI,OAAO,EAAE,CAAC,EACxC,UAAU,OAAO,EACjB,SAAS,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,KAClC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAqE,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Chunk, Effect, Option, Stream } from 'effect';
|
|
2
|
+
const trailingConsumer = (options) => Effect.forever(Effect.gen(function* () {
|
|
3
|
+
const first = yield* options.requests.take;
|
|
4
|
+
const queued = yield* options.requests.takeAll;
|
|
5
|
+
const request = Option.getOrElse(Chunk.last(queued), () => first);
|
|
6
|
+
if (!options.disabledNow()) {
|
|
7
|
+
yield* options.runQuery(request);
|
|
8
|
+
}
|
|
9
|
+
const pending = yield* options.requests.size;
|
|
10
|
+
if (pending > 0 && !options.disabledNow()) {
|
|
11
|
+
yield* Effect.sync(options.markFetching);
|
|
12
|
+
}
|
|
13
|
+
}));
|
|
14
|
+
const switchConsumer = (options) => Stream.fromQueue(options.requests).pipe(Stream.flatMap((request) => Stream.fromEffect(options.runQuery(request)), { switch: true }), Stream.runDrain);
|
|
15
|
+
export const consumeRequests = (trailing, options) => (trailing ? trailingConsumer(options) : switchConsumer(options));
|
|
16
|
+
//# sourceMappingURL=queryDriverConsume.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryDriverConsume.js","sourceRoot":"","sources":["../../src/internal/queryDriverConsume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAc,MAAM,EAAE,MAAM,QAAQ,CAAA;AAYlE,MAAM,gBAAgB,GAAG,CACvB,OAAmC,EACH,EAAE,CAClC,MAAM,CAAC,OAAO,CACZ,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAA;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;IACjE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3B,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA;IAC5C,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QAC1C,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IAC1C,CAAC;AACH,CAAC,CAAC,CACH,CAAA;AAEH,MAAM,cAAc,GAAG,CACrB,OAAmC,EACJ,EAAE,CACjC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CACrC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAC3F,MAAM,CAAC,QAAQ,CAChB,CAAA;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,QAAiB,EACjB,OAAmC,EACJ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryDriverHydrate.d.ts","sourceRoot":"","sources":["../../src/internal/queryDriverHydrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAU,MAAM,QAAQ,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,UAAU,uBAAuB,CAAC,CAAC,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC5C,QAAQ,CAAC,iBAAiB,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACzD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IAEnC,QAAQ,CAAC,YAAY,EAAE,MAAM,OAAO,CAAA;CACrC;
|
|
1
|
+
{"version":3,"file":"queryDriverHydrate.d.ts","sourceRoot":"","sources":["../../src/internal/queryDriverHydrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAU,MAAM,QAAQ,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,UAAU,uBAAuB,CAAC,CAAC,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC5C,QAAQ,CAAC,iBAAiB,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACzD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IAEnC,QAAQ,CAAC,YAAY,EAAE,MAAM,OAAO,CAAA;CACrC;AAmBD,eAAO,MAAM,qBAAqB,GAAI,CAAC,EAAE,CAAC,EACxC,SAAS,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,KACrC,MAAM,CAAC,MAAM,CAAC,IAAI,CAclB,CAAA"}
|
|
@@ -5,7 +5,12 @@ const paint = (options, decoded) => {
|
|
|
5
5
|
return;
|
|
6
6
|
}
|
|
7
7
|
MutableRef.update(options.staleAtGeneration, (current) => Math.max(current, options.capturedGeneration));
|
|
8
|
-
options.stateStore.set({
|
|
8
|
+
options.stateStore.set({
|
|
9
|
+
...state,
|
|
10
|
+
data: Option.some(decoded),
|
|
11
|
+
isStale: true,
|
|
12
|
+
isPreviousKey: false,
|
|
13
|
+
});
|
|
9
14
|
};
|
|
10
15
|
// Epoch, key, and settled-state guards prevent a late cache from replacing newer truth.
|
|
11
16
|
export const hydratePersistedQuery = (options) => options.queryStore.get(options.cacheKey).pipe(Effect.flatMap((cached) => Option.match(cached, {
|
|
@@ -14,6 +19,7 @@ export const hydratePersistedQuery = (options) => options.queryStore.get(options
|
|
|
14
19
|
.decode(raw)
|
|
15
20
|
.pipe(Effect.tap((decoded) => Effect.sync(() => paint(options, decoded)))),
|
|
16
21
|
})),
|
|
17
|
-
// Corrupt/incompatible cache: ignore and fetch fresh.
|
|
18
|
-
|
|
22
|
+
// Corrupt/incompatible cache: ignore and fetch fresh. Catches defects too — a
|
|
23
|
+
// store backed by localStorage throws rather than failing typed.
|
|
24
|
+
Effect.catchAllCause(() => Effect.void));
|
|
19
25
|
//# sourceMappingURL=queryDriverHydrate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryDriverHydrate.js","sourceRoot":"","sources":["../../src/internal/queryDriverHydrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAiBnD,MAAM,KAAK,GAAG,CAAO,OAAsC,EAAE,OAAU,EAAQ,EAAE;IAC/E,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,CAAA;IACtC,IAAI,OAAO,CAAC,YAAY,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACtF,OAAM;IACR,CAAC;IACD,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,EAAE,CACvD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAC9C,CAAA;IACD,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"queryDriverHydrate.js","sourceRoot":"","sources":["../../src/internal/queryDriverHydrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAiBnD,MAAM,KAAK,GAAG,CAAO,OAAsC,EAAE,OAAU,EAAQ,EAAE;IAC/E,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,CAAA;IACtC,IAAI,OAAO,CAAC,YAAY,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACtF,OAAM;IACR,CAAC;IACD,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,EAAE,CACvD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAC9C,CAAA;IACD,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QACrB,GAAG,KAAK;QACR,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1B,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,KAAK;KACrB,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,wFAAwF;AACxF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,OAAsC,EACjB,EAAE,CACvB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACxB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI;IACzB,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CACd,OAAO,CAAC,KAAK;SACV,MAAM,CAAC,GAAG,CAAC;SACX,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CAC/E,CAAC,CACH;AACD,8EAA8E;AAC9E,iEAAiE;AACjE,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CACxC,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import type { QueryStoreApi } from './queryStore.js';
|
|
3
|
+
import type { QueryCodec } from './queryDriverTypes.js';
|
|
4
|
+
export interface PersistTarget<Args, A> {
|
|
5
|
+
readonly key: string | ((inputs: Args) => string);
|
|
6
|
+
readonly codec: QueryCodec<A>;
|
|
7
|
+
}
|
|
8
|
+
export declare const persistCacheKey: <Args>(key: string | ((inputs: Args) => string), args: Args) => string;
|
|
9
|
+
export interface PersistWriterOptions<Args, A> {
|
|
10
|
+
readonly queryStore: QueryStoreApi;
|
|
11
|
+
readonly persist: PersistTarget<Args, A> | undefined;
|
|
12
|
+
readonly label: string;
|
|
13
|
+
readonly name: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const makePersistWrite: <Args, A>(options: PersistWriterOptions<Args, A>) => ((produced: A, args: Args) => Effect.Effect<void>);
|
|
16
|
+
//# sourceMappingURL=queryDriverPersist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryDriverPersist.d.ts","sourceRoot":"","sources":["../../src/internal/queryDriverPersist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,MAAM,WAAW,aAAa,CAAC,IAAI,EAAE,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,KAAK,MAAM,CAAC,CAAA;IACjD,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;CAC9B;AAED,eAAO,MAAM,eAAe,GAAI,IAAI,EAClC,KAAK,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,KAAK,MAAM,CAAC,EACxC,MAAM,IAAI,KACT,MAAuD,CAAA;AAE1D,MAAM,WAAW,oBAAoB,CAAC,IAAI,EAAE,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAA;IAClC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,SAAS,CAAA;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,eAAO,MAAM,gBAAgB,GAAI,IAAI,EAAE,CAAC,EACtC,SAAS,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,KACrC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAkBnD,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
export const persistCacheKey = (key, args) => (typeof key === 'function' ? key(args) : key);
|
|
3
|
+
export const makePersistWrite = (options) => {
|
|
4
|
+
const target = options.persist;
|
|
5
|
+
if (target === undefined) {
|
|
6
|
+
return () => Effect.void;
|
|
7
|
+
}
|
|
8
|
+
return (produced, args) => target.codec.encode(produced).pipe(Effect.flatMap((encoded) => options.queryStore.set(persistCacheKey(target.key, args), encoded)),
|
|
9
|
+
// Persistence is best-effort and must not block the visible write. This
|
|
10
|
+
// catches defects, not just typed failures: a store backed by localStorage
|
|
11
|
+
// *throws* when quota is exhausted, and `Effect.ignore` would let that escape
|
|
12
|
+
// and kill the request consumer for the rest of the session.
|
|
13
|
+
Effect.catchAllCause((cause) => Effect.logWarning(`reform: ${options.label} '${options.name}' persist failed`, cause)));
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=queryDriverPersist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryDriverPersist.js","sourceRoot":"","sources":["../../src/internal/queryDriverPersist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAS/B,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,GAAwC,EACxC,IAAU,EACF,EAAE,CAAC,CAAC,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAS1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,OAAsC,EACc,EAAE;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAA;IAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAA;IAC1B,CAAC;IACD,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CACxB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAChC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACzB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CACnE;IACD,wEAAwE;IACxE,2EAA2E;IAC3E,8EAA8E;IAC9E,6DAA6D;IAC7D,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7B,MAAM,CAAC,UAAU,CAAC,WAAW,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,kBAAkB,EAAE,KAAK,CAAC,CACtF,CACF,CAAA;AACL,CAAC,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
export type PersistOptionExternalApi<Args> = boolean | undefined | {
|
|
3
|
+
readonly key?: string | ((inputs: Args) => string);
|
|
4
|
+
};
|
|
5
|
+
export interface PersistSlotInput<Args> {
|
|
6
|
+
readonly label: string;
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly inputs: number;
|
|
9
|
+
readonly option: PersistOptionExternalApi<Args>;
|
|
10
|
+
}
|
|
11
|
+
export declare const resolvePersistSlot: <Args>(input: PersistSlotInput<Args>) => Effect.Effect<string | ((inputs: Args) => string)>;
|
|
12
|
+
//# sourceMappingURL=queryDriverPersistWarn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryDriverPersistWarn.d.ts","sourceRoot":"","sources":["../../src/internal/queryDriverPersistWarn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAa,MAAM,QAAQ,CAAA;AAG1C,MAAM,MAAM,wBAAwB,CAAC,IAAI,IACrC,OAAO,GACP,SAAS,GACT;IAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,KAAK,MAAM,CAAC,CAAA;CAAE,CAAA;AAE1D,MAAM,WAAW,gBAAgB,CAAC,IAAI;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAA;CAChD;AAWD,eAAO,MAAM,kBAAkB,GAAI,IAAI,EACrC,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAC5B,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,KAAK,MAAM,CAAC,CAgBnD,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Effect, Predicate } from 'effect';
|
|
2
|
+
// The cache slot a query persists into, plus the warning if that slot is shared.
|
|
3
|
+
export const resolvePersistSlot = (input) => {
|
|
4
|
+
const option = input.option;
|
|
5
|
+
const key = option === true || option === undefined || option === false
|
|
6
|
+
? input.name
|
|
7
|
+
: (option.key ?? input.name);
|
|
8
|
+
return Effect.as(warnSharedPersistSlot({
|
|
9
|
+
label: input.label,
|
|
10
|
+
name: input.name,
|
|
11
|
+
inputs: input.inputs,
|
|
12
|
+
key,
|
|
13
|
+
enabled: option !== undefined && option !== false,
|
|
14
|
+
}), key);
|
|
15
|
+
};
|
|
16
|
+
// A constant `persist` key gives every input key ONE cache slot: the last key to
|
|
17
|
+
// settle overwrites the rest, and on the next boot that payload is hydrated as the
|
|
18
|
+
// answer to whichever key is being asked. Sharing a slot on purpose is a legitimate
|
|
19
|
+
// choice — a "last seen" cache — so this warns rather than refuses, but it must not
|
|
20
|
+
// be silent: it is the same misattribution `isPreviousKey` exists to stop, arriving
|
|
21
|
+
// across a reload where no epoch or key guard can see it.
|
|
22
|
+
const warnSharedPersistSlot = (slot) => {
|
|
23
|
+
if (!slot.enabled || slot.inputs === 0 || !Predicate.isString(slot.key)) {
|
|
24
|
+
return Effect.void;
|
|
25
|
+
}
|
|
26
|
+
return Effect.logWarning(`reform: ${slot.label} '${slot.name}' persists ${slot.inputs} input(s) into the single cache slot ` +
|
|
27
|
+
`'${slot.key}'. Every input key overwrites the same entry, and a reload hydrates it as the answer ` +
|
|
28
|
+
`to whichever key is being asked. Pass persist: { key: (inputs) => ... } for a slot per key, or ` +
|
|
29
|
+
`keep the shared slot deliberately.`);
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=queryDriverPersistWarn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryDriverPersistWarn.js","sourceRoot":"","sources":["../../src/internal/queryDriverPersistWarn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAuB1C,iFAAiF;AACjF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,KAA6B,EACuB,EAAE;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAC3B,MAAM,GAAG,GACP,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,KAAK;QACzD,CAAC,CAAC,KAAK,CAAC,IAAI;QACZ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAA;IAChC,OAAO,MAAM,CAAC,EAAE,CACd,qBAAqB,CAAC;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG;QACH,OAAO,EAAE,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,KAAK;KAClD,CAAC,EACF,GAAG,CACJ,CAAA;AACH,CAAC,CAAA;AAED,iFAAiF;AACjF,mFAAmF;AACnF,oFAAoF;AACpF,oFAAoF;AACpF,oFAAoF;AACpF,0DAA0D;AAC1D,MAAM,qBAAqB,GAAG,CAAC,IAAuB,EAAuB,EAAE;IAC7E,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACxE,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IACD,OAAO,MAAM,CAAC,UAAU,CACtB,WAAW,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,cAAc,IAAI,CAAC,MAAM,uCAAuC;QACjG,IAAI,IAAI,CAAC,GAAG,uFAAuF;QACnG,iGAAiG;QACjG,oCAAoC,CACvC,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { MutableRef } from 'effect';
|
|
2
|
+
import type { QueryState } from '../calc/queryState.js';
|
|
3
|
+
import type { Store } from './store.js';
|
|
4
|
+
export interface SettleRequest {
|
|
5
|
+
readonly sourceKey: ReadonlyArray<unknown>;
|
|
6
|
+
readonly generation: number;
|
|
7
|
+
}
|
|
8
|
+
export interface SettlersOptions<A, E> {
|
|
9
|
+
readonly stateStore: Store<QueryState<A, E>>;
|
|
10
|
+
readonly lastSourceKey: MutableRef.MutableRef<ReadonlyArray<unknown> | undefined>;
|
|
11
|
+
readonly generation: MutableRef.MutableRef<number>;
|
|
12
|
+
readonly staleAtGeneration: MutableRef.MutableRef<number>;
|
|
13
|
+
readonly reuse: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface Settlers<A, E> {
|
|
16
|
+
readonly supersededKey: (requestSourceKey: ReadonlyArray<unknown>) => boolean;
|
|
17
|
+
readonly markFetching: (superseded?: boolean) => void;
|
|
18
|
+
readonly settleSuccess: (produced: A, request: SettleRequest) => A;
|
|
19
|
+
readonly settleError: (error: E, request: SettleRequest) => void;
|
|
20
|
+
readonly settleDefect: (request: SettleRequest) => void;
|
|
21
|
+
}
|
|
22
|
+
export declare const makeSettlers: <A, E>(options: SettlersOptions<A, E>) => Settlers<A, E>;
|
|
23
|
+
//# sourceMappingURL=queryDriverSettle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryDriverSettle.d.ts","sourceRoot":"","sources":["../../src/internal/queryDriverSettle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAU,MAAM,QAAQ,CAAA;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAIpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAKpC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC5C,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAA;IACjF,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAClD,QAAQ,CAAC,iBAAiB,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACzD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC,EAAE,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAA;IAC7E,QAAQ,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IACrD,QAAQ,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,KAAK,CAAC,CAAA;IAClE,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;IAChE,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;CACxD;AAED,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,CAAC,EAAE,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAqDhF,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { MutableRef, Option } from 'effect';
|
|
2
|
+
import { settleQueryError } from './queryDriverStore.js';
|
|
3
|
+
import { reuse } from './reuse.js';
|
|
4
|
+
import { sameKey } from './sources.js';
|
|
5
|
+
export const makeSettlers = (options) => {
|
|
6
|
+
const { stateStore } = options;
|
|
7
|
+
// A settling request answers the key it was issued for. If the sources have
|
|
8
|
+
// moved on, whatever it writes is about a question nobody is asking any more.
|
|
9
|
+
const supersededKey = (requestSourceKey) => {
|
|
10
|
+
const current = MutableRef.get(options.lastSourceKey);
|
|
11
|
+
return current === undefined || !sameKey(requestSourceKey, current);
|
|
12
|
+
};
|
|
13
|
+
const markFetching = (superseded = false) => {
|
|
14
|
+
const state = stateStore.get();
|
|
15
|
+
const isPreviousKey = state.isPreviousKey || superseded;
|
|
16
|
+
if (!state.isFetching || isPreviousKey !== state.isPreviousKey) {
|
|
17
|
+
stateStore.set({ ...state, isFetching: true, isPreviousKey });
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const settleSuccess = (produced, request) => {
|
|
21
|
+
const prev = stateStore.get();
|
|
22
|
+
const shared = options.reuse && Option.isSome(prev.data) ? reuse(prev.data.value, produced) : produced;
|
|
23
|
+
stateStore.set({
|
|
24
|
+
...prev,
|
|
25
|
+
data: Option.some(shared),
|
|
26
|
+
error: Option.none(),
|
|
27
|
+
isFetching: false,
|
|
28
|
+
// An answer requested before an invalidation cannot discharge it: the mark
|
|
29
|
+
// clears only for a strictly newer generation, matching `maybeAutoRefetch`.
|
|
30
|
+
isStale: request.generation <= MutableRef.get(options.staleAtGeneration),
|
|
31
|
+
isPreviousKey: supersededKey(request.sourceKey),
|
|
32
|
+
});
|
|
33
|
+
return shared;
|
|
34
|
+
};
|
|
35
|
+
const settleError = (error, request) => {
|
|
36
|
+
// Preserve the stale cause after failure without duplicating a newer request.
|
|
37
|
+
MutableRef.update(options.staleAtGeneration, (current) => Math.max(current, request.generation));
|
|
38
|
+
settleQueryError(stateStore, error, supersededKey(request.sourceKey));
|
|
39
|
+
};
|
|
40
|
+
// A run that dies is over; leaving `isFetching` raised advertises a flight that
|
|
41
|
+
// no longer exists. Only the newest run may retract it — a superseded run's
|
|
42
|
+
// death says nothing about its successor.
|
|
43
|
+
const settleDefect = (request) => {
|
|
44
|
+
if (MutableRef.get(options.generation) !== request.generation) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const state = stateStore.get();
|
|
48
|
+
stateStore.set({ ...state, isFetching: false });
|
|
49
|
+
};
|
|
50
|
+
return { supersededKey, markFetching, settleSuccess, settleError, settleDefect };
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=queryDriverSettle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryDriverSettle.js","sourceRoot":"","sources":["../../src/internal/queryDriverSettle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA2BnC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAO,OAA8B,EAAkB,EAAE;IACnF,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IAE9B,4EAA4E;IAC5E,8EAA8E;IAC9E,MAAM,aAAa,GAAG,CAAC,gBAAwC,EAAW,EAAE;QAC1E,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QACrD,OAAO,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;IACrE,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,CAAC,UAAU,GAAG,KAAK,EAAQ,EAAE;QAChD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAA;QAC9B,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,UAAU,CAAA;QACvD,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,aAAa,KAAK,KAAK,CAAC,aAAa,EAAE,CAAC;YAC/D,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAA;QAC/D,CAAC;IACH,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,CAAC,QAAW,EAAE,OAAsB,EAAK,EAAE;QAC/D,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,CAAA;QAC7B,MAAM,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;QACzF,UAAU,CAAC,GAAG,CAAC;YACb,GAAG,IAAI;YACP,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YACzB,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE;YACpB,UAAU,EAAE,KAAK;YACjB,2EAA2E;YAC3E,4EAA4E;YAC5E,OAAO,EAAE,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC;YACxE,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC;SAChD,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,KAAQ,EAAE,OAAsB,EAAQ,EAAE;QAC7D,8EAA8E;QAC9E,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;QAChG,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;IACvE,CAAC,CAAA;IAED,gFAAgF;IAChF,4EAA4E;IAC5E,0CAA0C;IAC1C,MAAM,YAAY,GAAG,CAAC,OAAsB,EAAQ,EAAE;QACpD,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC;YAC9D,OAAM;QACR,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAA;QAC9B,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAA;IACjD,CAAC,CAAA;IAED,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,CAAA;AAClF,CAAC,CAAA"}
|
|
@@ -1,39 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MutableRef } from 'effect';
|
|
2
2
|
import type { AnyAsyncData } from '../calc/asyncData.js';
|
|
3
3
|
import { type QueryState } from '../calc/queryState.js';
|
|
4
|
-
import type { QueryStoreApi } from './queryStore.js';
|
|
5
4
|
import type { Scheduler } from './scheduler.js';
|
|
6
5
|
import { type Store } from './store.js';
|
|
7
|
-
import type { AnySchema } from './variance.js';
|
|
8
|
-
import type { InputsObject } from './sources.js';
|
|
9
|
-
import type { AnySource } from '../state/token.js';
|
|
10
|
-
interface HydrateQueryOptions<A, E> {
|
|
11
|
-
readonly cacheKey: string;
|
|
12
|
-
readonly queryStore: QueryStoreApi;
|
|
13
|
-
readonly schema: AnySchema<A>;
|
|
14
|
-
readonly stateStore: Store<QueryState<A, E>>;
|
|
15
|
-
}
|
|
16
|
-
export declare const hydrateQuery: <A, E>(options: HydrateQueryOptions<A, E>) => Effect.Effect<void>;
|
|
17
|
-
interface PersistQueryValueOptions<A> {
|
|
18
|
-
readonly cacheKey: string;
|
|
19
|
-
readonly produced: A;
|
|
20
|
-
readonly queryStore: QueryStoreApi;
|
|
21
|
-
readonly schema: AnySchema<A>;
|
|
22
|
-
}
|
|
23
|
-
export declare const persistQueryValue: <A>(options: PersistQueryValueOptions<A>) => Effect.Effect<void>;
|
|
24
|
-
interface PersistWriterOptions<Inputs extends ReadonlyArray<AnySource>, A> {
|
|
25
|
-
readonly persist: {
|
|
26
|
-
readonly key: string | ((inputs: InputsObject<Inputs>) => string);
|
|
27
|
-
readonly schema: AnySchema<A>;
|
|
28
|
-
} | undefined;
|
|
29
|
-
readonly queryStore: QueryStoreApi;
|
|
30
|
-
}
|
|
31
|
-
export declare const makePersistWriter: <Inputs extends ReadonlyArray<AnySource>, A>(options: PersistWriterOptions<Inputs, A>) => ((produced: A, inputs: InputsObject<Inputs>) => Effect.Effect<void>);
|
|
32
6
|
interface SubscribableSource {
|
|
33
7
|
readonly subscribe: (listener: () => void) => () => void;
|
|
34
8
|
}
|
|
35
9
|
export declare const subscribeQuerySources: (sources: SubscribableSource, extraKey: SubscribableSource | undefined, listener: () => void) => (() => void);
|
|
36
|
-
export declare const settleQueryError: <A, E>(stateStore: Store<QueryState<A, E>>, error: E) => void;
|
|
10
|
+
export declare const settleQueryError: <A, E>(stateStore: Store<QueryState<A, E>>, error: E, isPreviousKey: boolean) => void;
|
|
37
11
|
export declare const incrementGeneration: (generation: MutableRef.MutableRef<number>) => number;
|
|
38
12
|
interface QueryProjectionOptions<A, E> {
|
|
39
13
|
readonly gated: boolean;
|