@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryDriverStore.d.ts","sourceRoot":"","sources":["../../src/internal/queryDriverStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"queryDriverStore.d.ts","sourceRoot":"","sources":["../../src/internal/queryDriverStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAU,MAAM,QAAQ,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,KAAK,UAAU,EAAe,MAAM,oBAAoB,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAoB,KAAK,KAAK,EAAE,MAAM,SAAS,CAAA;AAEtD,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAA;CACzD;AAED,eAAO,MAAM,qBAAqB,GAChC,SAAS,kBAAkB,EAC3B,UAAU,kBAAkB,GAAG,SAAS,EACxC,UAAU,MAAM,IAAI,KACnB,CAAC,MAAM,IAAI,CAOb,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,CAAC,EACnC,YAAY,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACnC,OAAO,CAAC,EACR,eAAe,OAAO,KACrB,IAGF,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,YAAY,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,KAAG,MAG/E,CAAA;AAED,UAAU,sBAAsB,CAAC,CAAC,EAAE,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;CAC7C;AAED,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAE,CAAC,EACtC,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,KACpC;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAA;CAqB/E,CAAA;AAED,UAAU,kBAAkB,CAAC,CAAC,EAAE,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACzC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAC/C,QAAQ,CAAC,aAAa,EAAE,MAAM,IAAI,CAAA;CACnC;AAED,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,CAAC,EACrC,SAAS,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,KAChC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAczB,CAAA"}
|
|
@@ -1,31 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MutableRef, Option } from 'effect';
|
|
2
2
|
import { toAsyncData } from '../calc/queryState.js';
|
|
3
3
|
import { makeDerivedStore } from './store.js';
|
|
4
|
-
export const hydrateQuery = (options) => Effect.flatMap(options.queryStore.get(options.cacheKey), (cached) => Option.match(cached, {
|
|
5
|
-
onNone: () => Effect.void,
|
|
6
|
-
onSome: (raw) => Schema.decodeUnknown(options.schema)(raw).pipe(Effect.match({
|
|
7
|
-
onFailure: () => undefined,
|
|
8
|
-
onSuccess: (decoded) => options.stateStore.set({
|
|
9
|
-
data: Option.some(decoded),
|
|
10
|
-
error: Option.none(),
|
|
11
|
-
isFetching: false,
|
|
12
|
-
isStale: true,
|
|
13
|
-
}),
|
|
14
|
-
})),
|
|
15
|
-
}));
|
|
16
|
-
export const persistQueryValue = (options) => Schema.encode(options.schema)(options.produced).pipe(Effect.flatMap((encoded) => options.queryStore.set(options.cacheKey, encoded)), Effect.ignore);
|
|
17
|
-
export const makePersistWriter = (options) => {
|
|
18
|
-
if (options.persist === undefined) {
|
|
19
|
-
return () => Effect.void;
|
|
20
|
-
}
|
|
21
|
-
const persist = options.persist;
|
|
22
|
-
return (produced, inputs) => persistQueryValue({
|
|
23
|
-
cacheKey: typeof persist.key === 'function' ? persist.key(inputs) : persist.key,
|
|
24
|
-
produced,
|
|
25
|
-
queryStore: options.queryStore,
|
|
26
|
-
schema: persist.schema,
|
|
27
|
-
});
|
|
28
|
-
};
|
|
29
4
|
export const subscribeQuerySources = (sources, extraKey, listener) => {
|
|
30
5
|
const offSources = sources.subscribe(listener);
|
|
31
6
|
const offExtra = extraKey?.subscribe(listener);
|
|
@@ -34,9 +9,9 @@ export const subscribeQuerySources = (sources, extraKey, listener) => {
|
|
|
34
9
|
offExtra?.();
|
|
35
10
|
};
|
|
36
11
|
};
|
|
37
|
-
export const settleQueryError = (stateStore, error) => {
|
|
12
|
+
export const settleQueryError = (stateStore, error, isPreviousKey) => {
|
|
38
13
|
const previous = stateStore.get();
|
|
39
|
-
stateStore.set({ ...previous, error: Option.some(error), isFetching: false });
|
|
14
|
+
stateStore.set({ ...previous, error: Option.some(error), isFetching: false, isPreviousKey });
|
|
40
15
|
};
|
|
41
16
|
export const incrementGeneration = (generation) => {
|
|
42
17
|
MutableRef.update(generation, (current) => current + 1);
|
|
@@ -50,7 +25,8 @@ export const makeQueryProjection = (options) => {
|
|
|
50
25
|
if (previous !== undefined &&
|
|
51
26
|
previous.state.data === state.data &&
|
|
52
27
|
previous.state.error === state.error &&
|
|
53
|
-
previous.state.isFetching === state.isFetching
|
|
28
|
+
previous.state.isFetching === state.isFetching &&
|
|
29
|
+
previous.state.isPreviousKey === state.isPreviousKey) {
|
|
54
30
|
return previous.view;
|
|
55
31
|
}
|
|
56
32
|
const view = toAsyncData(state, options.gated);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryDriverStore.js","sourceRoot":"","sources":["../../src/internal/queryDriverStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"queryDriverStore.js","sourceRoot":"","sources":["../../src/internal/queryDriverStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@ export interface QueryDriverOptions<Inputs extends ReadonlyArray<AnySource>, A,
|
|
|
24
24
|
readonly disabled?: ((inputs: InputsObject<Inputs>) => boolean) | undefined;
|
|
25
25
|
readonly coalesce?: 'switch' | 'trailing' | undefined;
|
|
26
26
|
readonly reuse?: boolean | undefined;
|
|
27
|
+
readonly keepPreviousData?: boolean | undefined;
|
|
27
28
|
readonly extraKey?: {
|
|
28
29
|
readonly read: () => unknown;
|
|
29
30
|
readonly subscribe: (listener: () => void) => () => void;
|
|
@@ -37,5 +38,7 @@ export interface QueryDriverOptions<Inputs extends ReadonlyArray<AnySource>, A,
|
|
|
37
38
|
export interface QueryDriver<A, E> {
|
|
38
39
|
readonly store: Store<AnyAsyncData<A, E>>;
|
|
39
40
|
readonly requested: () => number;
|
|
41
|
+
readonly key: () => ReadonlyArray<unknown>;
|
|
42
|
+
readonly subscribeKey: (listener: () => void) => () => void;
|
|
40
43
|
}
|
|
41
44
|
//# sourceMappingURL=queryDriverTypes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryDriverTypes.d.ts","sourceRoot":"","sources":["../../src/internal/queryDriverTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,MAAM,MAAM,OAAO,CAAC,QAAQ,SAAS,OAAO,IAAI,QAAQ,SAAS,IAAI,GAAG,KAAK,GAAG,IAAI,CAAA;AAEpF,eAAO,MAAM,SAAS,GAAI,QAAQ,SAAS,OAAO,EAChD,UAAU,QAAQ,GAAG,SAAS,KAC7B,OAAO,CAAC,QAAQ,CAEuB,CAAA;AAE1C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;AAC9D,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAA6B,CAAA;AACpF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAE1D,CAAA;AACD,eAAO,MAAM,YAAY,EAAE,QAAsB,CAAA;AACjD,eAAO,MAAM,YAAY,GAAI,UAAU,QAAQ,KAAG,QAAkC,CAAA;AAGpF,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IACpF,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;CACrF;AAED,MAAM,WAAW,kBAAkB,CAAC,MAAM,SAAS,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAClF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACxE,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IACxD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,GAAG,SAAS,CAAA;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAA;IACrD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"queryDriverTypes.d.ts","sourceRoot":"","sources":["../../src/internal/queryDriverTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { Context, Effect, Layer } from 'effect';
|
|
|
2
2
|
export interface Scheduler {
|
|
3
3
|
readonly schedule: (listeners: Iterable<() => void>) => void;
|
|
4
4
|
}
|
|
5
|
+
export declare const withInlineNotifications: <A>(run: () => A) => A;
|
|
5
6
|
export declare const makeScheduler: () => Scheduler;
|
|
6
7
|
export declare const defaultScheduler: Scheduler;
|
|
7
8
|
declare const NotificationsBase: Context.TagClass<Notifications, 'reform/Notifications', Scheduler>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/internal/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/internal/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAiC,MAAM,QAAQ,CAAA;AAG9E,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAA;CAC7D;AAgBD,eAAO,MAAM,uBAAuB,GAAI,CAAC,EAAE,KAAK,MAAM,CAAC,KAAG,CAMzD,CAAA;AAED,eAAO,MAAM,aAAa,QAAO,SA6FhC,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,SAA2B,CAAA;AAE1D,QAAA,MAAM,iBAAiB,EAAE,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,sBAAsB,EAAE,SAAS,CACzB,CAAA;AACjE,qBAAa,aAAc,SAAQ,iBAAiB;CAAG;AAEvD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,CAGzD,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAGrD,CAAA"}
|
|
@@ -1,30 +1,93 @@
|
|
|
1
|
-
import { Context, Effect, Layer, MutableRef, Option } from 'effect';
|
|
1
|
+
import { Context, Effect, Layer, MutableRef, Option, Predicate } from 'effect';
|
|
2
|
+
import { microtask } from './platform.js';
|
|
3
|
+
/**
|
|
4
|
+
* Notifications normally coalesce onto a microtask. Inside this window they run
|
|
5
|
+
* inline instead, because the synchronous trigger path needs subscribers
|
|
6
|
+
* re-rendered before it returns: React restores a controlled input's DOM value at
|
|
7
|
+
* the end of the discrete event, and a listener that has not run by then leaves it
|
|
8
|
+
* restoring stale props over the character the user just typed.
|
|
9
|
+
*
|
|
10
|
+
* A module-level flag rather than a method on one Scheduler: stores and triggers
|
|
11
|
+
* resolve `Notifications` from their own contexts and can legitimately land on
|
|
12
|
+
* different instances, so flushing "the" scheduler would flush the wrong one.
|
|
13
|
+
* Nothing awaits inside the window, so it cannot interleave with another trigger.
|
|
14
|
+
*/
|
|
15
|
+
const inlineNotifications = MutableRef.make(false);
|
|
16
|
+
export const withInlineNotifications = (run) => {
|
|
17
|
+
const outer = MutableRef.get(inlineNotifications);
|
|
18
|
+
MutableRef.set(inlineNotifications, true);
|
|
19
|
+
const ran = run();
|
|
20
|
+
MutableRef.set(inlineNotifications, outer);
|
|
21
|
+
return ran;
|
|
22
|
+
};
|
|
2
23
|
export const makeScheduler = () => {
|
|
3
24
|
const pending = new Set();
|
|
4
25
|
const armed = MutableRef.make(false);
|
|
5
|
-
const
|
|
26
|
+
const flushing = MutableRef.make(false);
|
|
27
|
+
const runListener = (listener) => Effect.runSync(Effect.try({ try: listener, catch: (error) => error }).pipe(Effect.catchAll((error) => Effect.sync(() => microtask(() => {
|
|
6
28
|
// oxlint-disable-next-line reform-rules/no-throw -- only way to surface a listener defect to the host's global error handler
|
|
7
29
|
throw error;
|
|
8
30
|
})))));
|
|
31
|
+
// Membership at flush time. A re-readable source — a `Set`, the hot path every store
|
|
32
|
+
// passes, or an array — is read again so a listener that unsubscribed in between is
|
|
33
|
+
// dropped. Anything else is judged against the schedule-time snapshot, because an
|
|
34
|
+
// `Iterable` may be one-shot (`map.values()`, a generator) and taking that snapshot
|
|
35
|
+
// already drained it.
|
|
36
|
+
const isLive = (queued, listener) => {
|
|
37
|
+
if (Predicate.isSet(queued.source)) {
|
|
38
|
+
return queued.source.has(listener);
|
|
39
|
+
}
|
|
40
|
+
if (Array.isArray(queued.source)) {
|
|
41
|
+
return queued.source.includes(listener);
|
|
42
|
+
}
|
|
43
|
+
return queued.members.includes(listener);
|
|
44
|
+
};
|
|
9
45
|
const drain = () => {
|
|
10
46
|
if (pending.size === 0) {
|
|
11
47
|
return;
|
|
12
48
|
}
|
|
13
49
|
const due = [...pending];
|
|
14
50
|
pending.clear();
|
|
15
|
-
|
|
51
|
+
// One wake per listener, however many writes queued it, in schedule order. Each
|
|
52
|
+
// write is judged against its OWN source at the moment it would run: an earlier
|
|
53
|
+
// listener in this same flush can tear a later one down — a scope closing, a
|
|
54
|
+
// family key forgotten, a composition unmounting — and a listener that has since
|
|
55
|
+
// unsubscribed must not be woken. A listener registered in several stores is
|
|
56
|
+
// still owed the wakes of the stores it did not leave, so each queued write gets
|
|
57
|
+
// its own answer rather than one memoised for the whole drain.
|
|
58
|
+
const woken = new Set();
|
|
59
|
+
due.forEach((queued) => {
|
|
60
|
+
queued.members.forEach((listener) => {
|
|
61
|
+
if (!woken.has(listener) && isLive(queued, listener)) {
|
|
62
|
+
woken.add(listener);
|
|
63
|
+
runListener(listener);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
});
|
|
16
67
|
drain();
|
|
17
68
|
};
|
|
69
|
+
// A listener that triggers another event re-enters here; the guard drops the inner
|
|
70
|
+
// call because `drain` already loops until `pending` is empty, so the outer pass
|
|
71
|
+
// still runs whatever the listener queued.
|
|
18
72
|
const flush = () => {
|
|
73
|
+
if (MutableRef.get(flushing)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
MutableRef.set(flushing, true);
|
|
19
77
|
MutableRef.set(armed, false);
|
|
78
|
+
// `runListener` absorbs every listener defect, so `drain` cannot throw past here.
|
|
20
79
|
drain();
|
|
80
|
+
MutableRef.set(flushing, false);
|
|
21
81
|
};
|
|
22
82
|
const schedule = (listeners) => {
|
|
23
|
-
;
|
|
24
|
-
|
|
83
|
+
pending.add({ source: listeners, members: Array.from(listeners) });
|
|
84
|
+
if (MutableRef.get(inlineNotifications)) {
|
|
85
|
+
flush();
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
25
88
|
if (pending.size > 0 && !MutableRef.get(armed)) {
|
|
26
89
|
MutableRef.set(armed, true);
|
|
27
|
-
|
|
90
|
+
microtask(flush);
|
|
28
91
|
}
|
|
29
92
|
};
|
|
30
93
|
return { schedule };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/internal/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/internal/scheduler.ts"],"names":[],"mappings":"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"}
|
package/dist/internal.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export * as Wire from './wire/tree.js';
|
|
|
25
25
|
export type { WireNode, WirePatch, WireProp, WireTree } from './wire/tree.js';
|
|
26
26
|
export * as Triggers from './wire/triggers.js';
|
|
27
27
|
export { type TriggerHandle, TriggerRegistry, type TriggerRegistryApi, UnknownTrigger, } from './wire/triggers.js';
|
|
28
|
+
export { triggerEventTag } from './ui/trigger.js';
|
|
28
29
|
export { type AnyFeatureBinding, type AnyLoadedModule, type CapturedFeatureBinding, type FeatureBinding, type FeatureBindingCapture, FeatureBindingTypeId, type FeatureDefinition, FeatureGraphValidTypeId, type FeatureIdentityToken, FeatureInput, type FeatureManifest, featureModuleFromInput, type FeatureMountProps, type FeatureOpenServices, type FeatureRequirement, type FeatureSupportOpenServices, type FeatureToken, type FeatureTreeCarrier, type LoadedModule, type LoadedModuleCapture, mountFeature, type ProvideableFeature, type ProvidedBy, type RequireCarrier, } from './feature/feature.js';
|
|
29
30
|
export { type CompositionChildSummary, CompositionChildSummaryTypeId, type DescendantOpenServices, type FeatureChildSummary, FeatureChildSummaryTypeId, type ModuleOpenServices, type OpenServicesFromFeatureSlotWitnesses, type SlotBindingSummary, SlotBindingSummaryTypeId, type ValidateFeatureGraphLayer, } from './graph/closure.js';
|
|
30
31
|
export { type AnyScene, type AnySceneCapture, type SceneCapture, seedAnyScene } from './scene/scene.js';
|
|
@@ -39,4 +40,5 @@ export { type CapturedRender, CaptureSink, type CaptureSinkApi } from './interna
|
|
|
39
40
|
export { defaultScheduler, makeScheduler, Notifications, notificationsLayer, resolveScheduler, type Scheduler, } from './internal/scheduler.js';
|
|
40
41
|
export { makeStore, type Store } from './internal/store.js';
|
|
41
42
|
export { type Kind, type Manifest, yieldableClass } from './definition/definition.js';
|
|
43
|
+
export { microtask, operationId } from './internal/platform.js';
|
|
42
44
|
//# sourceMappingURL=internal.d.ts.map
|
package/dist/internal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,gBAAgB,GACjB,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,YAAY,EACV,SAAS,EACT,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,WAAW,GACZ,MAAM,eAAe,CAAA;AACtB,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,SAAS,EACT,eAAe,EACf,qBAAqB,EACrB,SAAS,GACV,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAG5E,OAAO,EACL,cAAc,EACd,UAAU,EACV,KAAK,aAAa,EAClB,iBAAiB,GAClB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,eAAe,EACf,WAAW,EACX,KAAK,cAAc,EACnB,kBAAkB,GACnB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,EAC3B,6BAA6B,GAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,KAAK,cAAc,EACnB,QAAQ,EACR,aAAa,EACb,KAAK,cAAc,EACnB,UAAU,EACV,eAAe,GAChB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,GACd,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,KAAK,OAAO,EAAE,aAAa,EAAE,KAAK,QAAQ,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACtF,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,iBAAiB,EACjB,UAAU,GACX,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,eAAe,EACf,QAAQ,EACR,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,WAAW,GACjB,MAAM,cAAc,CAAA;AAIrB,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAG1E,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EACL,KAAK,aAAa,EAClB,eAAe,EACf,KAAK,kBAAkB,EACvB,cAAc,GACf,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"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"}
|
package/dist/internal.js
CHANGED
|
@@ -30,6 +30,9 @@ export * as Wire from './wire/tree.js';
|
|
|
30
30
|
// back to live triggers, decoding payloads via the event schema. See REMOTE_UI.md §4.
|
|
31
31
|
export * as Triggers from './wire/triggers.js';
|
|
32
32
|
export { TriggerRegistry, UnknownTrigger, } from './wire/triggers.js';
|
|
33
|
+
// The domain Event a UI trigger publishes, for harnesses that must tell two
|
|
34
|
+
// same-named actions apart. None for triggers built outside `Event.trigger`.
|
|
35
|
+
export { triggerEventTag } from './ui/trigger.js';
|
|
33
36
|
export { FeatureBindingTypeId, FeatureGraphValidTypeId, FeatureInput, featureModuleFromInput, mountFeature, } from './feature/feature.js';
|
|
34
37
|
export { CompositionChildSummaryTypeId, FeatureChildSummaryTypeId, SlotBindingSummaryTypeId, } from './graph/closure.js';
|
|
35
38
|
export { seedAnyScene } from './scene/scene.js';
|
|
@@ -55,4 +58,5 @@ export { makeStore } from './internal/store.js';
|
|
|
55
58
|
// first-class `Source`s which must participate in dependency tracking and
|
|
56
59
|
// reflection exactly like a `Calc`.
|
|
57
60
|
export { yieldableClass } from './definition/definition.js';
|
|
61
|
+
export { microtask, operationId } from './internal/platform.js';
|
|
58
62
|
//# sourceMappingURL=internal.js.map
|
package/dist/internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,4EAA4E;AAC5E,6DAA6D;AAC7D,8EAA8E;AAC9E,iCAAiC;AAEjC,OAAO,EAOL,gBAAgB,GACjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAOL,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAkB1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAqB,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAC5E,mFAAmF;AACnF,0FAA0F;AAC1F,OAAO,EACL,cAAc,EACd,UAAU,EAEV,iBAAiB,GAClB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,eAAe,EACf,WAAW,EAEX,kBAAkB,GACnB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,EAC3B,6BAA6B,GAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAOzD,OAAO,EAEL,QAAQ,EACR,aAAa,EAEb,UAAU,EACV,eAAe,GAChB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAY3D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAgB,aAAa,EAAiB,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACtF,OAAO,EAOL,iBAAiB,EACjB,UAAU,GACX,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EASL,eAAe,EACf,QAAQ,GAIT,MAAM,cAAc,CAAA;AAErB,0EAA0E;AAC1E,gFAAgF;AAChF,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AAEnC,gFAAgF;AAChF,sFAAsF;AACtF,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAEL,eAAe,EAEf,cAAc,GACf,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"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"}
|
package/dist/reducer/reducer.js
CHANGED
|
@@ -38,7 +38,7 @@ export function live(reducer, fold) {
|
|
|
38
38
|
// The loop calls entries only for handled events. At this
|
|
39
39
|
// existential boundary the family's decoders restore the
|
|
40
40
|
// exact key/value types before either touches its store.
|
|
41
|
-
const key = familyDefinition.
|
|
41
|
+
const key = familyDefinition.validateKeySync(sync(Reflect.apply(config.keyOf, undefined, [narrowHandled(event)])));
|
|
42
42
|
const previous = family.at(key).get();
|
|
43
43
|
const next = sync(Reflect.apply(fold, undefined, [previous, event]));
|
|
44
44
|
if (next === Tombstone) {
|
|
@@ -47,7 +47,7 @@ export function live(reducer, fold) {
|
|
|
47
47
|
else if (next !== previous) {
|
|
48
48
|
// Same-reference return means "no change": skip the nominal re-decode,
|
|
49
49
|
// which would mint a fresh value and repaint every tracker of this slice.
|
|
50
|
-
family.at(key).set(familyDefinition.
|
|
50
|
+
family.at(key).set(familyDefinition.validateValueSync(next));
|
|
51
51
|
}
|
|
52
52
|
},
|
|
53
53
|
})));
|
|
@@ -63,7 +63,7 @@ export function live(reducer, fold) {
|
|
|
63
63
|
if (next === previous) {
|
|
64
64
|
return;
|
|
65
65
|
}
|
|
66
|
-
store.set(state.
|
|
66
|
+
store.set(state.validateSync(next));
|
|
67
67
|
},
|
|
68
68
|
})));
|
|
69
69
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../src/reducer/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACjD,OAAO,EAAiB,eAAe,EAAE,MAAM,0BAA0B,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAiC,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAmE,MAAM,gBAAgB,CAAA;AAChG,OAAO,EAML,SAAS,GACV,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,aAAa,EAAe,MAAM,gBAAgB,CAAA;AAC3D,OAAO,EAAqB,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AA2D7D,MAAM,UAAU,IAAI,CAClB,IAAY,EACZ,MAA8D;IAE9D,OAAO,eAAe,CAAU;QAC9B,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE,IAAI,EAA4B;QACtE,MAAM;QACN,OAAO,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KAC1D,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,SAAkB,EAAqC,EAAE,CAC3E,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,UAAU,CAAA;AAE1E,MAAM,IAAI,GAAG,CAAI,SAAY,EAAK,EAAE;IAClC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,4IAA4I;QAC5I,MAAM,IAAI,YAAY,EAAE,CAAA;IAC1B,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAcD,MAAM,UAAU,IAAI,CAClB,OAA4B,EAC5B,IAAgB;IAEhB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA;IAClC,OAAO,KAAK,CAAC,aAAa,CACxB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAA;QAChC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,mCAAmC,IAAI,cAAc,CAAC,CAAA;QACjF,CAAC;QACD,MAAM,KAAK,GAAiB,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACrD,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;gBACvB,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CACjC,CAAC,gBAAgB,EAAE,EAAE,CACnB,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBAC9C,IAAI;oBACJ,OAAO;oBACP,KAAK,EAAE,CAAC,KAAa,EAAE,EAAE;wBACvB,0DAA0D;wBAC1D,yDAAyD;wBACzD,yDAAyD;wBACzD,MAAM,GAAG,GAAG,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../src/reducer/reducer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { MutableRef } from 'effect';
|
|
1
|
+
import { MutableRef, Option } from 'effect';
|
|
2
2
|
import type { Scheduler } from '../internal/scheduler.js';
|
|
3
3
|
import type { Store } from '../internal/store.js';
|
|
4
4
|
import type { PendingIntent } from './remoteStateTypes.js';
|
|
5
5
|
export interface PendingNode<I> {
|
|
6
6
|
readonly entry: MutableRef.MutableRef<PendingIntent<I>>;
|
|
7
|
+
readonly key: Option.Option<ReadonlyArray<unknown>>;
|
|
7
8
|
}
|
|
8
9
|
export interface PendingOpEntry<I> {
|
|
9
10
|
readonly nodes: Set<PendingNode<I>>;
|
|
@@ -12,7 +13,8 @@ export interface PendingQueue<I> {
|
|
|
12
13
|
readonly store: Store<ReadonlyArray<PendingIntent<I>>>;
|
|
13
14
|
readonly revision: () => number;
|
|
14
15
|
readonly fold: <B>(initial: B, combine: (accumulator: B, entry: PendingIntent<I>) => B) => B;
|
|
15
|
-
readonly
|
|
16
|
+
readonly foldFor: <B>(key: ReadonlyArray<unknown>, initial: B, combine: (accumulator: B, entry: PendingIntent<I>) => B) => B;
|
|
17
|
+
readonly append: (entry: PendingIntent<I>, key: Option.Option<ReadonlyArray<unknown>>) => void;
|
|
16
18
|
readonly ack: (opId: string) => void;
|
|
17
19
|
readonly settle: (opId: string) => void;
|
|
18
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pendingQueue.d.ts","sourceRoot":"","sources":["../../src/remote/pendingQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,
|
|
1
|
+
{"version":3,"file":"pendingQueue.d.ts","sourceRoot":"","sources":["../../src/remote/pendingQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAElD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAGvD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;CACpD;AAGD,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACtD,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAE5F,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAClB,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,EAC3B,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KACpD,CAAC,CAAA;IACN,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,CAAA;IAC9F,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC;AAED,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,WAAW,SAAS,KAAG,YAAY,CAAC,CAAC,CA4IxE,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Equal, MutableRef, Option } from 'effect';
|
|
2
2
|
import { inspectable } from '../internal/inspect.js';
|
|
3
|
+
import { sameKey } from '../internal/sources.js';
|
|
3
4
|
export const makePendingQueue = (scheduler) => {
|
|
4
5
|
// Set insertion order preserves dispatch/apply order while allowing O(1) updates.
|
|
5
6
|
const ordered = new Set();
|
|
@@ -22,9 +23,10 @@ export const makePendingQueue = (scheduler) => {
|
|
|
22
23
|
MutableRef.update(revision, (current) => current + 1);
|
|
23
24
|
scheduler.schedule(listeners);
|
|
24
25
|
};
|
|
25
|
-
const link = (entry) => {
|
|
26
|
+
const link = (entry, key) => {
|
|
26
27
|
const node = {
|
|
27
28
|
entry: MutableRef.make(entry),
|
|
29
|
+
key,
|
|
28
30
|
};
|
|
29
31
|
ordered.add(node);
|
|
30
32
|
const indexed = byOpId.get(entry.opId);
|
|
@@ -46,8 +48,21 @@ export const makePendingQueue = (scheduler) => {
|
|
|
46
48
|
});
|
|
47
49
|
return MutableRef.get(folded);
|
|
48
50
|
};
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
+
const foldFor = (key, initialValue, combine) => {
|
|
52
|
+
const folded = MutableRef.make(initialValue);
|
|
53
|
+
ordered.forEach((node) => {
|
|
54
|
+
const applies = Option.match(node.key, {
|
|
55
|
+
onNone: () => true,
|
|
56
|
+
onSome: (issuedFor) => sameKey(issuedFor, key),
|
|
57
|
+
});
|
|
58
|
+
if (applies) {
|
|
59
|
+
MutableRef.update(folded, (accumulator) => combine(accumulator, MutableRef.get(node.entry)));
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
return MutableRef.get(folded);
|
|
63
|
+
};
|
|
64
|
+
const append = (entry, key) => {
|
|
65
|
+
link(entry, key);
|
|
51
66
|
announce(Option.none());
|
|
52
67
|
};
|
|
53
68
|
const ack = (opId) => {
|
|
@@ -90,7 +105,7 @@ export const makePendingQueue = (scheduler) => {
|
|
|
90
105
|
return;
|
|
91
106
|
}
|
|
92
107
|
clear();
|
|
93
|
-
next.forEach(link);
|
|
108
|
+
next.forEach((entry) => link(entry, Option.none()));
|
|
94
109
|
announce(Option.some(next));
|
|
95
110
|
},
|
|
96
111
|
subscribe: (listener) => {
|
|
@@ -105,6 +120,7 @@ export const makePendingQueue = (scheduler) => {
|
|
|
105
120
|
store,
|
|
106
121
|
revision: () => MutableRef.get(revision),
|
|
107
122
|
fold,
|
|
123
|
+
foldFor,
|
|
108
124
|
append,
|
|
109
125
|
ack,
|
|
110
126
|
settle,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pendingQueue.js","sourceRoot":"","sources":["../../src/remote/pendingQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"pendingQueue.js","sourceRoot":"","sources":["../../src/remote/pendingQueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remoteState.d.ts","sourceRoot":"","sources":["../../src/remote/remoteState.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,EAAuC,MAAM,QAAQ,CAAA;AAE9F,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"remoteState.d.ts","sourceRoot":"","sources":["../../src/remote/remoteState.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,EAAuC,MAAM,QAAQ,CAAA;AAE9F,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAUvC,OAAO,EAAE,KAAK,WAAW,EAAW,MAAM,qBAAqB,CAAA;AAG/D,OAAO,EAAE,GAAG,EAAW,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1C,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAI/C,OAAO,KAAK,EACV,gBAAgB,EAChB,0BAA0B,EAC1B,uBAAuB,EAEvB,qBAAqB,EACrB,uBAAuB,EAGxB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,EAC3B,6BAA6B,GAC9B,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACV,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,4BAA4B,EAC5B,0BAA0B,EAC1B,8BAA8B,EAC9B,uBAAuB,EACvB,2BAA2B,EAC3B,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,oBAAoB,CAAA;AAE3B,eAAO,MAAM,IAAI,GACf,CAAC,SAAS,MAAM,EAChB,MAAM,SAAS,aAAa,CAAC,SAAS,CAAC,EACvC,OAAO,SAAS,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC7C,CAAC,EACD,CAAC,EACD,KAAK,SAAS,OAAO,EACrB,CAAC,EACD,EAAE,EACF,YAAY,SAAS,KAAK,CAAC,QAAQ,GAAG,KAAK,EAE3C,QAAQ,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EACzD,QAAQ,0BAA0B,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,KACpF,KAAK,CAAC,KAAK,CACZ,uBAAuB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,EAClF,KAAK,EACL,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,GAAG,GAAG,CAiOtF,CAAA"}
|
|
@@ -5,6 +5,7 @@ import * as Event from '../event/event.js';
|
|
|
5
5
|
import { bumpRevision, makeQueryDriver, RevisionSchema, revisionZero, } from '../internal/queryDriver.js';
|
|
6
6
|
import { reuse as shareStructure } from '../internal/reuse.js';
|
|
7
7
|
import { resolveScheduler } from '../internal/scheduler.js';
|
|
8
|
+
import { resolvePersistSlot } from '../internal/queryDriverPersistWarn.js';
|
|
8
9
|
import { sameKey } from '../internal/sources.js';
|
|
9
10
|
import { makeDerivedStore } from '../internal/store.js';
|
|
10
11
|
import * as Reducer from '../reducer/reducer.js';
|
|
@@ -55,11 +56,13 @@ export const live = (remote, config) => {
|
|
|
55
56
|
generationWaiters.add({ opId });
|
|
56
57
|
}
|
|
57
58
|
};
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
:
|
|
62
|
-
|
|
59
|
+
const persistKey = yield* resolvePersistSlot({
|
|
60
|
+
label: 'RemoteState',
|
|
61
|
+
name,
|
|
62
|
+
inputs: remote.inputs.length,
|
|
63
|
+
option: config.persist,
|
|
64
|
+
});
|
|
65
|
+
const persist = config.persist === undefined || config.persist === false
|
|
63
66
|
? undefined
|
|
64
67
|
: { key: persistKey, codec: remote.codec };
|
|
65
68
|
const revisionKey = (source) => ({
|
|
@@ -77,6 +80,7 @@ export const live = (remote, config) => {
|
|
|
77
80
|
disabled: config.disabled,
|
|
78
81
|
coalesce: config.coalesce,
|
|
79
82
|
reuse: config.reuse,
|
|
83
|
+
keepPreviousData: config.keepPreviousData,
|
|
80
84
|
persist,
|
|
81
85
|
extraKey,
|
|
82
86
|
onSettled,
|
|
@@ -102,6 +106,8 @@ export const live = (remote, config) => {
|
|
|
102
106
|
const link = {
|
|
103
107
|
requested: driver.requested,
|
|
104
108
|
register: (opId, waitFor) => registerWaiter({ opId, waitFor }),
|
|
109
|
+
key: driver.key,
|
|
110
|
+
subscribeKey: driver.subscribeKey,
|
|
105
111
|
};
|
|
106
112
|
return Context.make(truthTag, narrowStore(driver.store)).pipe(Context.add(linkTag, link));
|
|
107
113
|
}));
|
|
@@ -109,16 +115,21 @@ export const live = (remote, config) => {
|
|
|
109
115
|
const scheduler = yield* resolveScheduler;
|
|
110
116
|
const feedStore = widenStore(yield* truthTag);
|
|
111
117
|
const queue = yield* pendingQueueTag;
|
|
118
|
+
const link = yield* linkTag;
|
|
112
119
|
const memo = MutableRef.make(undefined);
|
|
113
120
|
const recompute = () => {
|
|
114
121
|
const feed = feedStore.getSnapshot();
|
|
115
|
-
const
|
|
122
|
+
const inputKey = link.key();
|
|
123
|
+
// The input key joins the memo key: which intents apply depends on it.
|
|
124
|
+
const key = [feed, queue.revision(), ...inputKey];
|
|
116
125
|
const prev = MutableRef.get(memo);
|
|
117
126
|
if (prev !== undefined && sameKey(key, prev.key)) {
|
|
118
127
|
return prev.output;
|
|
119
128
|
}
|
|
120
129
|
// Full replay preserves observable value identity when apply allocates and reuse is off.
|
|
121
|
-
|
|
130
|
+
// Only this key's intents: an optimistic write issued on another key is not
|
|
131
|
+
// about this payload, and applying it injects or deletes rows it never targeted.
|
|
132
|
+
const applyPending = (base) => queue.foldFor(inputKey, base, (applied, entry) => config.apply(applied, entry.intent));
|
|
122
133
|
const overlaid = feed._tag === 'Success'
|
|
123
134
|
? AsyncData.success(applyPending(feed.value), feed.refetching)
|
|
124
135
|
: feed;
|
|
@@ -134,12 +145,16 @@ export const live = (remote, config) => {
|
|
|
134
145
|
MutableRef.set(memo, { key, output });
|
|
135
146
|
return output;
|
|
136
147
|
};
|
|
148
|
+
// The key is a third input: it decides which queued intents apply, and it can
|
|
149
|
+
// move without the feed or the queue writing anything.
|
|
137
150
|
const subscribe = (listener) => {
|
|
138
151
|
const offFeed = feedStore.subscribe(listener);
|
|
139
152
|
const offQueue = queue.store.subscribe(listener);
|
|
153
|
+
const offKey = link.subscribeKey(listener);
|
|
140
154
|
return () => {
|
|
141
155
|
offFeed();
|
|
142
156
|
offQueue();
|
|
157
|
+
offKey();
|
|
143
158
|
};
|
|
144
159
|
};
|
|
145
160
|
const derived = makeDerivedStore(recompute, subscribe, scheduler);
|
|
@@ -147,21 +162,19 @@ export const live = (remote, config) => {
|
|
|
147
162
|
return narrowStore(derived.store);
|
|
148
163
|
}));
|
|
149
164
|
const channel = config.channel ?? Channel.make(`${name}/sends`, { policy: { _tag: 'merge' } });
|
|
150
|
-
const intentEvents = {
|
|
151
|
-
|
|
152
|
-
acked: Acked,
|
|
153
|
-
settled: Settled,
|
|
154
|
-
invalidated: Invalidated,
|
|
155
|
-
};
|
|
165
|
+
const intentEvents = { queued: Queued, acked: Acked, settled: Settled, invalidated: Invalidated };
|
|
166
|
+
const intentTags = new Set(remote.intents.map((event) => event.tag));
|
|
156
167
|
const pendingReducer = queueReducerLayer({
|
|
168
|
+
linkTag,
|
|
157
169
|
name: `${name}/pending`,
|
|
158
170
|
queueTag: pendingQueueTag,
|
|
171
|
+
handles: intentTags,
|
|
159
172
|
events: intentEvents,
|
|
160
173
|
});
|
|
161
174
|
const sendProcedure = sendProcedureLayer({
|
|
162
175
|
name: `${name}/send`,
|
|
163
176
|
channel,
|
|
164
|
-
handles:
|
|
177
|
+
handles: intentTags,
|
|
165
178
|
linkTag,
|
|
166
179
|
failed: remote.Failed,
|
|
167
180
|
send: config.send,
|