@playfast/reform 1.2.1 → 1.4.0
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/boundary/boundary.d.ts +64 -0
- package/dist/boundary/boundary.d.ts.map +1 -0
- package/dist/boundary/boundary.js +102 -0
- package/dist/boundary/boundary.js.map +1 -0
- package/dist/calc/asyncCalc.d.ts +23 -0
- package/dist/calc/asyncCalc.d.ts.map +1 -0
- package/dist/calc/asyncCalc.js +100 -0
- package/dist/calc/asyncCalc.js.map +1 -0
- package/dist/calc/asyncCalcTypes.d.ts +80 -0
- package/dist/calc/asyncCalcTypes.d.ts.map +1 -0
- package/dist/calc/asyncCalcTypes.js +2 -0
- package/dist/calc/asyncCalcTypes.js.map +1 -0
- package/dist/calc/asyncData.d.ts +29 -0
- package/dist/calc/asyncData.d.ts.map +1 -0
- package/dist/calc/asyncData.js +21 -0
- package/dist/calc/asyncData.js.map +1 -0
- package/dist/calc/calc.d.ts +39 -0
- package/dist/calc/calc.d.ts.map +1 -0
- package/dist/calc/calc.js +48 -0
- package/dist/calc/calc.js.map +1 -0
- package/dist/calc/calcFamily.d.ts +40 -0
- package/dist/calc/calcFamily.d.ts.map +1 -0
- package/dist/calc/calcFamily.js +156 -0
- package/dist/calc/calcFamily.js.map +1 -0
- package/dist/calc/compose.d.ts +5 -0
- package/dist/calc/compose.d.ts.map +1 -0
- package/dist/calc/compose.js +5 -0
- package/dist/calc/compose.js.map +1 -0
- package/dist/calc/queryState.d.ts +14 -0
- package/dist/calc/queryState.d.ts.map +1 -0
- package/dist/calc/queryState.js +39 -0
- package/dist/calc/queryState.js.map +1 -0
- package/dist/channel/channel.d.ts +51 -0
- package/dist/channel/channel.d.ts.map +1 -0
- package/dist/channel/channel.js +91 -0
- package/dist/channel/channel.js.map +1 -0
- package/dist/channel/procedures.d.ts +24 -0
- package/dist/channel/procedures.d.ts.map +1 -0
- package/dist/channel/procedures.js +82 -0
- package/dist/channel/procedures.js.map +1 -0
- package/dist/compose/composition.d.ts +12 -0
- package/dist/compose/composition.d.ts.map +1 -0
- package/dist/compose/composition.js +62 -0
- package/dist/compose/composition.js.map +1 -0
- package/dist/compose/compositionTypes.d.ts +127 -0
- package/dist/compose/compositionTypes.d.ts.map +1 -0
- package/dist/compose/compositionTypes.js +2 -0
- package/dist/compose/compositionTypes.js.map +1 -0
- package/dist/compose/host.d.ts +6 -0
- package/dist/compose/host.d.ts.map +1 -0
- package/dist/compose/host.js +2 -0
- package/dist/compose/host.js.map +1 -0
- package/dist/compose/props.d.ts +10 -0
- package/dist/compose/props.d.ts.map +1 -0
- package/dist/compose/props.js +6 -0
- package/dist/compose/props.js.map +1 -0
- package/dist/compose/provide.d.ts +18 -0
- package/dist/compose/provide.d.ts.map +1 -0
- package/dist/compose/provide.js +49 -0
- package/dist/compose/provide.js.map +1 -0
- package/dist/compose/slot.d.ts +70 -0
- package/dist/compose/slot.d.ts.map +1 -0
- package/dist/compose/slot.js +26 -0
- package/dist/compose/slot.js.map +1 -0
- package/dist/compose/structure.d.ts +51 -0
- package/dist/compose/structure.d.ts.map +1 -0
- package/dist/compose/structure.js +117 -0
- package/dist/compose/structure.js.map +1 -0
- package/dist/compose/ui.d.ts +112 -0
- package/dist/compose/ui.d.ts.map +1 -0
- package/dist/compose/ui.js +58 -0
- package/dist/compose/ui.js.map +1 -0
- package/dist/definition/definition.d.ts +11 -0
- package/dist/definition/definition.d.ts.map +1 -0
- package/dist/definition/definition.js +35 -0
- package/dist/definition/definition.js.map +1 -0
- package/dist/event/event.d.ts +52 -0
- package/dist/event/event.d.ts.map +1 -0
- package/dist/event/event.js +88 -0
- package/dist/event/event.js.map +1 -0
- package/dist/event/eventGroup.d.ts +8 -0
- package/dist/event/eventGroup.d.ts.map +1 -0
- package/dist/event/eventGroup.js +3 -0
- package/dist/event/eventGroup.js.map +1 -0
- package/dist/feature/feature.d.ts +27 -0
- package/dist/feature/feature.d.ts.map +1 -0
- package/dist/feature/feature.js +20 -0
- package/dist/feature/feature.js.map +1 -0
- package/dist/feature/featureBinding.d.ts +85 -0
- package/dist/feature/featureBinding.d.ts.map +1 -0
- package/dist/feature/featureBinding.js +10 -0
- package/dist/feature/featureBinding.js.map +1 -0
- package/dist/feature/featureClass.d.ts +10 -0
- package/dist/feature/featureClass.d.ts.map +1 -0
- package/dist/feature/featureClass.js +2 -0
- package/dist/feature/featureClass.js.map +1 -0
- package/dist/feature/featureConfig.d.ts +86 -0
- package/dist/feature/featureConfig.d.ts.map +1 -0
- package/dist/feature/featureConfig.js +13 -0
- package/dist/feature/featureConfig.js.map +1 -0
- package/dist/feature/featureFactory.d.ts +15 -0
- package/dist/feature/featureFactory.d.ts.map +1 -0
- package/dist/feature/featureFactory.js +59 -0
- package/dist/feature/featureFactory.js.map +1 -0
- package/dist/feature/featureModule.d.ts +28 -0
- package/dist/feature/featureModule.d.ts.map +1 -0
- package/dist/feature/featureModule.js +33 -0
- package/dist/feature/featureModule.js.map +1 -0
- package/dist/feature/featureNativeTree.d.ts +26 -0
- package/dist/feature/featureNativeTree.d.ts.map +1 -0
- package/dist/feature/featureNativeTree.js +2 -0
- package/dist/feature/featureNativeTree.js.map +1 -0
- package/dist/feature/featureRequirement.d.ts +43 -0
- package/dist/feature/featureRequirement.d.ts.map +1 -0
- package/dist/feature/featureRequirement.js +6 -0
- package/dist/feature/featureRequirement.js.map +1 -0
- package/dist/feature/featureVariants.d.ts +9 -0
- package/dist/feature/featureVariants.d.ts.map +1 -0
- package/dist/feature/featureVariants.js +59 -0
- package/dist/feature/featureVariants.js.map +1 -0
- package/dist/feature/mountFeature.d.ts +10 -0
- package/dist/feature/mountFeature.d.ts.map +1 -0
- package/dist/feature/mountFeature.js +14 -0
- package/dist/feature/mountFeature.js.map +1 -0
- package/dist/graph/closure.d.ts +77 -0
- package/dist/graph/closure.d.ts.map +1 -0
- package/dist/graph/closure.js +4 -0
- package/dist/graph/closure.js.map +1 -0
- package/dist/graph/services.d.ts +30 -0
- package/dist/graph/services.d.ts.map +1 -0
- package/dist/graph/services.js +2 -0
- package/dist/graph/services.js.map +1 -0
- package/dist/graph/summary.d.ts +60 -0
- package/dist/graph/summary.d.ts.map +1 -0
- package/dist/graph/summary.js +7 -0
- package/dist/graph/summary.js.map +1 -0
- package/dist/index.d.ts +51 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/bucketCache.d.ts +19 -0
- package/dist/internal/bucketCache.d.ts.map +1 -0
- package/dist/internal/bucketCache.js +20 -0
- package/dist/internal/bucketCache.js.map +1 -0
- package/dist/internal/capture.d.ts +17 -0
- package/dist/internal/capture.d.ts.map +1 -0
- package/dist/internal/capture.js +5 -0
- package/dist/internal/capture.js.map +1 -0
- package/dist/internal/env.d.ts +2 -0
- package/dist/internal/env.d.ts.map +1 -0
- package/dist/internal/env.js +5 -0
- package/dist/internal/env.js.map +1 -0
- package/dist/internal/errors.d.ts +48 -0
- package/dist/internal/errors.d.ts.map +1 -0
- package/dist/internal/errors.js +69 -0
- package/dist/internal/errors.js.map +1 -0
- 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/inspect.d.ts +5 -0
- package/dist/internal/inspect.d.ts.map +1 -0
- package/dist/internal/inspect.js +20 -0
- package/dist/internal/inspect.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 +7 -0
- package/dist/internal/queryDriver.d.ts.map +1 -0
- package/dist/internal/queryDriver.js +222 -0
- package/dist/internal/queryDriver.js.map +1 -0
- 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 +17 -0
- package/dist/internal/queryDriverHydrate.d.ts.map +1 -0
- package/dist/internal/queryDriverHydrate.js +25 -0
- package/dist/internal/queryDriverHydrate.js.map +1 -0
- 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 +28 -0
- package/dist/internal/queryDriverStore.d.ts.map +1 -0
- package/dist/internal/queryDriverStore.js +53 -0
- package/dist/internal/queryDriverStore.js.map +1 -0
- package/dist/internal/queryDriverTypes.d.ts +44 -0
- package/dist/internal/queryDriverTypes.d.ts.map +1 -0
- package/dist/internal/queryDriverTypes.js +9 -0
- package/dist/internal/queryDriverTypes.js.map +1 -0
- package/dist/internal/queryEvents.d.ts +12 -0
- package/dist/internal/queryEvents.d.ts.map +1 -0
- package/dist/internal/queryEvents.js +11 -0
- package/dist/internal/queryEvents.js.map +1 -0
- package/dist/internal/queryStore.d.ts +13 -0
- package/dist/internal/queryStore.d.ts.map +1 -0
- package/dist/internal/queryStore.js +11 -0
- package/dist/internal/queryStore.js.map +1 -0
- package/dist/internal/reuse.d.ts +2 -0
- package/dist/internal/reuse.d.ts.map +1 -0
- package/dist/internal/reuse.js +55 -0
- package/dist/internal/reuse.js.map +1 -0
- package/dist/internal/scheduler.d.ts +14 -0
- package/dist/internal/scheduler.d.ts.map +1 -0
- package/dist/internal/scheduler.js +101 -0
- package/dist/internal/scheduler.js.map +1 -0
- package/dist/internal/seeds.d.ts +3 -0
- package/dist/internal/seeds.d.ts.map +1 -0
- package/dist/internal/seeds.js +3 -0
- package/dist/internal/seeds.js.map +1 -0
- package/dist/internal/sources.d.ts +20 -0
- package/dist/internal/sources.d.ts.map +1 -0
- package/dist/internal/sources.js +39 -0
- package/dist/internal/sources.js.map +1 -0
- package/dist/internal/stateRegistry.d.ts +2 -0
- package/dist/internal/stateRegistry.d.ts.map +1 -0
- package/dist/internal/stateRegistry.js +15 -0
- package/dist/internal/stateRegistry.js.map +1 -0
- package/dist/internal/store.d.ts +15 -0
- package/dist/internal/store.d.ts.map +1 -0
- package/dist/internal/store.js +61 -0
- package/dist/internal/store.js.map +1 -0
- package/dist/internal/track.d.ts +15 -0
- package/dist/internal/track.d.ts.map +1 -0
- package/dist/internal/track.js +11 -0
- package/dist/internal/track.js.map +1 -0
- package/dist/internal/variance.d.ts +4 -0
- package/dist/internal/variance.d.ts.map +1 -0
- package/dist/internal/variance.js +2 -0
- package/dist/internal/variance.js.map +1 -0
- package/dist/internal.d.ts +43 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +59 -0
- package/dist/internal.js.map +1 -0
- package/dist/namespace/namespace.d.ts +24 -0
- package/dist/namespace/namespace.d.ts.map +1 -0
- package/dist/namespace/namespace.js +20 -0
- package/dist/namespace/namespace.js.map +1 -0
- package/dist/procedure/procedure.d.ts +32 -0
- package/dist/procedure/procedure.d.ts.map +1 -0
- package/dist/procedure/procedure.js +34 -0
- package/dist/procedure/procedure.js.map +1 -0
- package/dist/reducer/reducer.d.ts +35 -0
- package/dist/reducer/reducer.d.ts.map +1 -0
- package/dist/reducer/reducer.js +73 -0
- package/dist/reducer/reducer.js.map +1 -0
- package/dist/remote/pendingQueue.d.ts +22 -0
- package/dist/remote/pendingQueue.d.ts.map +1 -0
- package/dist/remote/pendingQueue.js +129 -0
- package/dist/remote/pendingQueue.js.map +1 -0
- package/dist/remote/remoteState.d.ts +13 -0
- package/dist/remote/remoteState.d.ts.map +1 -0
- package/dist/remote/remoteState.js +189 -0
- package/dist/remote/remoteState.js.map +1 -0
- package/dist/remote/remoteStateMake.d.ts +8 -0
- package/dist/remote/remoteStateMake.d.ts.map +1 -0
- package/dist/remote/remoteStateMake.js +46 -0
- package/dist/remote/remoteStateMake.js.map +1 -0
- package/dist/remote/remoteStateSend.d.ts +43 -0
- package/dist/remote/remoteStateSend.d.ts.map +1 -0
- package/dist/remote/remoteStateSend.js +83 -0
- package/dist/remote/remoteStateSend.js.map +1 -0
- package/dist/remote/remoteStateTypes.d.ts +106 -0
- package/dist/remote/remoteStateTypes.d.ts.map +1 -0
- package/dist/remote/remoteStateTypes.js +4 -0
- package/dist/remote/remoteStateTypes.js.map +1 -0
- package/dist/runtime/appRuntime.d.ts +10 -0
- package/dist/runtime/appRuntime.d.ts.map +1 -0
- package/dist/runtime/appRuntime.js +6 -0
- package/dist/runtime/appRuntime.js.map +1 -0
- package/dist/runtime/bus.d.ts +22 -0
- package/dist/runtime/bus.d.ts.map +1 -0
- package/dist/runtime/bus.js +12 -0
- package/dist/runtime/bus.js.map +1 -0
- package/dist/runtime/capturedAppRuntime.d.ts +7 -0
- package/dist/runtime/capturedAppRuntime.d.ts.map +1 -0
- package/dist/runtime/capturedAppRuntime.js +137 -0
- package/dist/runtime/capturedAppRuntime.js.map +1 -0
- package/dist/runtime/eventBudget.d.ts +32 -0
- package/dist/runtime/eventBudget.d.ts.map +1 -0
- package/dist/runtime/eventBudget.js +68 -0
- package/dist/runtime/eventBudget.js.map +1 -0
- package/dist/runtime/featureMount.d.ts +48 -0
- package/dist/runtime/featureMount.d.ts.map +1 -0
- package/dist/runtime/featureMount.js +118 -0
- package/dist/runtime/featureMount.js.map +1 -0
- package/dist/runtime/instrumentation.d.ts +18 -0
- package/dist/runtime/instrumentation.d.ts.map +1 -0
- package/dist/runtime/instrumentation.js +16 -0
- package/dist/runtime/instrumentation.js.map +1 -0
- package/dist/runtime/loop.d.ts +44 -0
- package/dist/runtime/loop.d.ts.map +1 -0
- package/dist/runtime/loop.js +131 -0
- package/dist/runtime/loop.js.map +1 -0
- package/dist/runtime/queries.d.ts +20 -0
- package/dist/runtime/queries.d.ts.map +1 -0
- package/dist/runtime/queries.js +21 -0
- package/dist/runtime/queries.js.map +1 -0
- package/dist/runtime/runtimeHandle.d.ts +56 -0
- package/dist/runtime/runtimeHandle.d.ts.map +1 -0
- package/dist/runtime/runtimeHandle.js +2 -0
- package/dist/runtime/runtimeHandle.js.map +1 -0
- package/dist/scene/scene.d.ts +55 -0
- package/dist/scene/scene.d.ts.map +1 -0
- package/dist/scene/scene.js +74 -0
- package/dist/scene/scene.js.map +1 -0
- package/dist/state/state.d.ts +54 -0
- package/dist/state/state.d.ts.map +1 -0
- package/dist/state/state.js +41 -0
- package/dist/state/state.js.map +1 -0
- package/dist/state/stateFamily.d.ts +59 -0
- package/dist/state/stateFamily.d.ts.map +1 -0
- package/dist/state/stateFamily.js +139 -0
- package/dist/state/stateFamily.js.map +1 -0
- package/dist/state/stateGroup.d.ts +36 -0
- package/dist/state/stateGroup.d.ts.map +1 -0
- package/dist/state/stateGroup.js +33 -0
- package/dist/state/stateGroup.js.map +1 -0
- package/dist/state/token.d.ts +35 -0
- package/dist/state/token.d.ts.map +1 -0
- package/dist/state/token.js +18 -0
- package/dist/state/token.js.map +1 -0
- package/dist/synced/syncedStore.d.ts +44 -0
- package/dist/synced/syncedStore.d.ts.map +1 -0
- package/dist/synced/syncedStore.js +32 -0
- package/dist/synced/syncedStore.js.map +1 -0
- package/dist/testkit/flight.testkit.d.ts +18 -0
- package/dist/testkit/flight.testkit.d.ts.map +1 -0
- package/dist/testkit/flight.testkit.js +46 -0
- package/dist/testkit/flight.testkit.js.map +1 -0
- package/dist/ui/node.d.ts +3 -0
- package/dist/ui/node.d.ts.map +1 -0
- package/dist/ui/node.js +2 -0
- package/dist/ui/node.js.map +1 -0
- package/dist/ui/trigger.d.ts +2 -0
- package/dist/ui/trigger.d.ts.map +1 -0
- package/dist/ui/trigger.js +2 -0
- package/dist/ui/trigger.js.map +1 -0
- package/dist/wire/tree.d.ts +32 -0
- package/dist/wire/tree.d.ts.map +1 -0
- package/dist/wire/tree.js +64 -0
- package/dist/wire/tree.js.map +1 -0
- package/dist/wire/triggers.d.ts +25 -0
- package/dist/wire/triggers.d.ts.map +1 -0
- package/dist/wire/triggers.js +31 -0
- package/dist/wire/triggers.js.map +1 -0
- package/package.json +17 -5
- 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.test.ts +64 -0
- package/src/calc/asyncCalcTypes.ts +8 -10
- 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 +31 -2
- 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 +1 -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/wire/tree-key-presence.test.ts +46 -0
- package/src/wire/tree.ts +9 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Cause } from 'effect';
|
|
2
|
+
type TaggedErrorClass<Tag extends string, A extends Record<string, unknown>> = new (args: A) => Cause.YieldableError & {
|
|
3
|
+
readonly _tag: Tag;
|
|
4
|
+
} & Readonly<A>;
|
|
5
|
+
type EmptyTaggedErrorClass<Tag extends string> = new () => Cause.YieldableError & {
|
|
6
|
+
readonly _tag: Tag;
|
|
7
|
+
};
|
|
8
|
+
declare const InvalidProvideTargetBase: EmptyTaggedErrorClass<'reform/InvalidProvideTarget'>;
|
|
9
|
+
export declare class InvalidProvideTarget extends InvalidProvideTargetBase {
|
|
10
|
+
get message(): string;
|
|
11
|
+
}
|
|
12
|
+
declare const UnknownGroupStateBase: TaggedErrorClass<'reform/UnknownGroupState', {
|
|
13
|
+
readonly name: string;
|
|
14
|
+
}>;
|
|
15
|
+
export declare class UnknownGroupState extends UnknownGroupStateBase {
|
|
16
|
+
get message(): string;
|
|
17
|
+
}
|
|
18
|
+
declare const FeatureLoadFailedBase: TaggedErrorClass<'reform/FeatureLoadFailed', {
|
|
19
|
+
readonly cause: unknown;
|
|
20
|
+
}>;
|
|
21
|
+
export declare class FeatureLoadFailed extends FeatureLoadFailedBase {
|
|
22
|
+
get message(): string;
|
|
23
|
+
}
|
|
24
|
+
declare const AsyncReducerBase: EmptyTaggedErrorClass<'reform/AsyncReducer'>;
|
|
25
|
+
export declare class AsyncReducer extends AsyncReducerBase {
|
|
26
|
+
get message(): string;
|
|
27
|
+
}
|
|
28
|
+
declare const AsyncSceneLayerBase: EmptyTaggedErrorClass<'reform/AsyncSceneLayer'>;
|
|
29
|
+
export declare class AsyncSceneLayer extends AsyncSceneLayerBase {
|
|
30
|
+
get message(): string;
|
|
31
|
+
}
|
|
32
|
+
export declare const forceSync: <A>(thunk: () => A) => A;
|
|
33
|
+
declare const DuplicateRegistrationBase: TaggedErrorClass<'reform/DuplicateRegistration', {
|
|
34
|
+
readonly kind: string;
|
|
35
|
+
readonly name: string;
|
|
36
|
+
}>;
|
|
37
|
+
export declare class DuplicateRegistration extends DuplicateRegistrationBase {
|
|
38
|
+
get message(): string;
|
|
39
|
+
}
|
|
40
|
+
declare const EventLoopOverflowBase: TaggedErrorClass<'reform/EventLoopOverflow', {
|
|
41
|
+
readonly count: number;
|
|
42
|
+
readonly limit: number;
|
|
43
|
+
}>;
|
|
44
|
+
export declare class EventLoopOverflow extends EventLoopOverflowBase {
|
|
45
|
+
get message(): string;
|
|
46
|
+
}
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/internal/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAyB,MAAM,QAAQ,CAAA;AAErD,KAAK,gBAAgB,CAAC,GAAG,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,KAC7E,IAAI,EAAE,CAAC,KACJ,KAAK,CAAC,cAAc,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAA;CAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;AAEhE,KAAK,qBAAqB,CAAC,GAAG,SAAS,MAAM,IAAI,UAAU,KAAK,CAAC,cAAc,GAAG;IAChF,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAA;CACnB,CAAA;AAED,QAAA,MAAM,wBAAwB,EAAE,qBAAqB,CAAC,6BAA6B,CAC9B,CAAA;AAErD,qBAAa,oBAAqB,SAAQ,wBAAwB;IAChE,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;AAED,QAAA,MAAM,qBAAqB,EAAE,gBAAgB,CAC3C,0BAA0B,EAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CACgD,CAAA;AAE3E,qBAAa,iBAAkB,SAAQ,qBAAqB;IAC1D,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;AAED,QAAA,MAAM,qBAAqB,EAAE,gBAAgB,CAC3C,0BAA0B,EAC1B;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CACgD,CAAA;AAE7E,qBAAa,iBAAkB,SAAQ,qBAAqB;IAC1D,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;AAED,QAAA,MAAM,gBAAgB,EAAE,qBAAqB,CAAC,qBAAqB,CAE9D,CAAA;AAEL,qBAAa,YAAa,SAAQ,gBAAgB;IAChD,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;AAED,QAAA,MAAM,mBAAmB,EAAE,qBAAqB,CAAC,wBAAwB,CAEpE,CAAA;AAEL,qBAAa,eAAgB,SAAQ,mBAAmB;IACtD,IAAa,OAAO,IAAI,MAAM,CAQ7B;CACF;AAaD,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,OAAO,MAAM,CAAC,KAAG,CAQ7C,CAAA;AAED,QAAA,MAAM,yBAAyB,EAAE,gBAAgB,CAC/C,8BAA8B,EAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAIhD,CAAA;AAEF,qBAAa,qBAAsB,SAAQ,yBAAyB;IAClE,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;AAED,QAAA,MAAM,qBAAqB,EAAE,gBAAgB,CAC3C,0BAA0B,EAC1B;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CACgD,CAAA;AAEpG,qBAAa,iBAAkB,SAAQ,qBAAqB;IAC1D,IAAa,OAAO,IAAI,MAAM,CAK7B;CACF"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Cause, Data, Option, Runtime } from 'effect';
|
|
2
|
+
const InvalidProvideTargetBase = (Data.TaggedError('reform/InvalidProvideTarget'));
|
|
3
|
+
export class InvalidProvideTarget extends InvalidProvideTargetBase {
|
|
4
|
+
get message() {
|
|
5
|
+
return 'reform: provide target is neither a ui contract nor a slot';
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
const UnknownGroupStateBase = (Data.TaggedError('reform/UnknownGroupState'));
|
|
9
|
+
export class UnknownGroupState extends UnknownGroupStateBase {
|
|
10
|
+
get message() {
|
|
11
|
+
return `reform: unknown state '${this.name}' in group`;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
const FeatureLoadFailedBase = (Data.TaggedError('reform/FeatureLoadFailed'));
|
|
15
|
+
export class FeatureLoadFailed extends FeatureLoadFailedBase {
|
|
16
|
+
get message() {
|
|
17
|
+
return `reform: a feature failed to load (${String(this.cause)})`;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const AsyncReducerBase = (Data.TaggedError('reform/AsyncReducer'));
|
|
21
|
+
export class AsyncReducer extends AsyncReducerBase {
|
|
22
|
+
get message() {
|
|
23
|
+
return 'reform: a reducer fold must be synchronous (it returned a Promise)';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const AsyncSceneLayerBase = (Data.TaggedError('reform/AsyncSceneLayer'));
|
|
27
|
+
export class AsyncSceneLayer extends AsyncSceneLayerBase {
|
|
28
|
+
get message() {
|
|
29
|
+
return ('reform: a scene layer performed async work while building. Reform builds the ' +
|
|
30
|
+
'scene synchronously so the first frame can render — a layer acquire must be ' +
|
|
31
|
+
'synchronous (Layer.sync/Layer.succeed). For async setup (open a connection, ' +
|
|
32
|
+
'fetch config), use Resource.live from @playfast/reform-resource, which builds ' +
|
|
33
|
+
'synchronously and resolves in the background.');
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const isAsyncBuildDefect = (error) => {
|
|
37
|
+
if (Runtime.isAsyncFiberException(error)) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
if (!Runtime.isFiberFailure(error)) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
const die = Cause.dieOption(error[Runtime.FiberFailureCauseId]);
|
|
44
|
+
return Option.isSome(die) && Runtime.isAsyncFiberException(die.value);
|
|
45
|
+
};
|
|
46
|
+
export const forceSync = (thunk) => {
|
|
47
|
+
// oxlint-disable-next-line reform-rules/no-try-catch -- sync-build boundary must throw the exact value, which Effect.runSync would re-wrap in a FiberFailure
|
|
48
|
+
try {
|
|
49
|
+
return thunk();
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
// oxlint-disable-next-line reform-rules/no-throw -- rethrow the exact value (translated for the async-build defect) so callers can match on it
|
|
53
|
+
throw isAsyncBuildDefect(error) ? new AsyncSceneLayer() : error;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const DuplicateRegistrationBase = (Data.TaggedError('reform/DuplicateRegistration'));
|
|
57
|
+
export class DuplicateRegistration extends DuplicateRegistrationBase {
|
|
58
|
+
get message() {
|
|
59
|
+
return `reform: duplicate ${this.kind} registered under name '${this.name}'`;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const EventLoopOverflowBase = (Data.TaggedError('reform/EventLoopOverflow'));
|
|
63
|
+
export class EventLoopOverflow extends EventLoopOverflowBase {
|
|
64
|
+
get message() {
|
|
65
|
+
return (`reform: ${this.count} events processed without yielding to the event loop ` +
|
|
66
|
+
`(limit ${this.limit}) — likely an infinite event feedback loop; the runtime has been halted`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/internal/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface KeyCanonicalizer<K> {
|
|
2
|
+
readonly canonical: (key: K) => K;
|
|
3
|
+
readonly release: (key: K) => void;
|
|
4
|
+
readonly reset: () => void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* A family indexes its members in a plain `Map`, which compares keys by reference. A
|
|
8
|
+
* composite key — `S.Data(S.Struct({ board, row }))`, the value-typed key Effect makes
|
|
9
|
+
* canonical — is decoded fresh on every lookup, so a plain `Map` mints a new member per
|
|
10
|
+
* lookup and strands the one before it: the fold reads its seed forever and the family
|
|
11
|
+
* grows without bound. Everything else in reform compares values with `Equal.equals`;
|
|
12
|
+
* this makes family keys agree. Primitive keys are their own canonical form and never
|
|
13
|
+
* touch the table, so the hot path is unchanged.
|
|
14
|
+
*/
|
|
15
|
+
export declare const makeKeyCanonicalizer: <K>() => KeyCanonicalizer<K>;
|
|
16
|
+
//# sourceMappingURL=familyKeys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"familyKeys.d.ts","sourceRoot":"","sources":["../../src/internal/familyKeys.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAA;CAC3B;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,OAAK,gBAAgB,CAAC,CAAC,CAuB5D,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { MutableHashMap, Option, Predicate } from 'effect';
|
|
2
|
+
/**
|
|
3
|
+
* A family indexes its members in a plain `Map`, which compares keys by reference. A
|
|
4
|
+
* composite key — `S.Data(S.Struct({ board, row }))`, the value-typed key Effect makes
|
|
5
|
+
* canonical — is decoded fresh on every lookup, so a plain `Map` mints a new member per
|
|
6
|
+
* lookup and strands the one before it: the fold reads its seed forever and the family
|
|
7
|
+
* grows without bound. Everything else in reform compares values with `Equal.equals`;
|
|
8
|
+
* this makes family keys agree. Primitive keys are their own canonical form and never
|
|
9
|
+
* touch the table, so the hot path is unchanged.
|
|
10
|
+
*/
|
|
11
|
+
export const makeKeyCanonicalizer = () => {
|
|
12
|
+
const table = MutableHashMap.empty();
|
|
13
|
+
return {
|
|
14
|
+
canonical: (key) => {
|
|
15
|
+
if (!Predicate.isObject(key)) {
|
|
16
|
+
return key;
|
|
17
|
+
}
|
|
18
|
+
const known = MutableHashMap.get(table, key);
|
|
19
|
+
if (Option.isSome(known)) {
|
|
20
|
+
return known.value;
|
|
21
|
+
}
|
|
22
|
+
MutableHashMap.set(table, key, key);
|
|
23
|
+
return key;
|
|
24
|
+
},
|
|
25
|
+
release: (key) => {
|
|
26
|
+
if (Predicate.isObject(key)) {
|
|
27
|
+
MutableHashMap.remove(table, key);
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
reset: () => {
|
|
31
|
+
MutableHashMap.clear(table);
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=familyKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"familyKeys.js","sourceRoot":"","sources":["../../src/internal/familyKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAQ1D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAA2B,EAAE;IAC/D,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,EAAQ,CAAA;IAC1C,OAAO;QACL,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;YACjB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,OAAO,GAAG,CAAA;YACZ,CAAC;YACD,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YAC5C,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,KAAK,CAAC,KAAK,CAAA;YACpB,CAAC;YACD,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;YACnC,OAAO,GAAG,CAAA;QACZ,CAAC;QACD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC7B,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type Inspectable, NodeInspectSymbol } from 'effect/Inspectable';
|
|
2
|
+
export { type Inspectable, NodeInspectSymbol };
|
|
3
|
+
export declare const inspectable: (toJSON: () => unknown) => Inspectable;
|
|
4
|
+
export declare const attachInspectable: <T extends object>(target: T, toJSON: () => unknown) => T;
|
|
5
|
+
//# sourceMappingURL=inspect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/internal/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEhF,OAAO,EAAE,KAAK,WAAW,EAAE,iBAAiB,EAAE,CAAA;AAE9C,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,OAAO,KAAG,WAIlD,CAAA;AAEF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,MAAM,OAAO,KAAG,CAWtF,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { format, NodeInspectSymbol } from 'effect/Inspectable';
|
|
2
|
+
export { NodeInspectSymbol };
|
|
3
|
+
export const inspectable = (toJSON) => ({
|
|
4
|
+
toJSON,
|
|
5
|
+
toString: () => format(toJSON()),
|
|
6
|
+
[NodeInspectSymbol]: () => toJSON(),
|
|
7
|
+
});
|
|
8
|
+
export const attachInspectable = (target, toJSON) => {
|
|
9
|
+
const trio = inspectable(toJSON);
|
|
10
|
+
Reflect.ownKeys(trio).forEach((key) => {
|
|
11
|
+
Object.defineProperty(target, key, {
|
|
12
|
+
value: Reflect.get(trio, key),
|
|
13
|
+
enumerable: false,
|
|
14
|
+
writable: true,
|
|
15
|
+
configurable: true,
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
return target;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=inspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/internal/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoB,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEhF,OAAO,EAAoB,iBAAiB,EAAE,CAAA;AAE9C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAqB,EAAe,EAAE,CAAC,CAAC;IAClE,MAAM;IACN,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE;CACpC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAmB,MAAS,EAAE,MAAqB,EAAK,EAAE;IACzF,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IAChC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACpC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE;YACjC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;YAC7B,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;SACnB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two host globals reform reaches for, behind a check.
|
|
3
|
+
*
|
|
4
|
+
* The core is renderer-neutral and the React package peers on `react` alone, so
|
|
5
|
+
* a scene is expected to run wherever a React reconciler does — including hosts
|
|
6
|
+
* that are neither a browser nor Node. Two globals were reached for directly and
|
|
7
|
+
* neither is guaranteed off the web: measured on `@react-gpui/core`, whose
|
|
8
|
+
* deno_core host installs `console` and the timers and nothing else, a scene
|
|
9
|
+
* dies at the first scheduler tick with `queueMicrotask is not defined`.
|
|
10
|
+
*
|
|
11
|
+
* Both fall back rather than throw, because the property each is used for
|
|
12
|
+
* survives the fallback: a resolved promise is a microtask by definition, and an
|
|
13
|
+
* operation id has to be unique among the ids one runtime mints.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Run `callback` on a microtask.
|
|
17
|
+
*
|
|
18
|
+
* `queueMicrotask` where the host has it, a resolved promise where it does not.
|
|
19
|
+
* The two differ in one way that matters, which is why the check is kept rather
|
|
20
|
+
* than always taking the promise: a callback that throws inside `queueMicrotask`
|
|
21
|
+
* reaches the host's global error handler, where the same callback inside
|
|
22
|
+
* `.then` becomes an unhandled rejection nobody sees. The rethrow below puts the
|
|
23
|
+
* fallback back on the first of those.
|
|
24
|
+
*/
|
|
25
|
+
export declare const microtask: (callback: () => void) => void;
|
|
26
|
+
/**
|
|
27
|
+
* An id no other operation of this runtime shares.
|
|
28
|
+
*
|
|
29
|
+
* `crypto.randomUUID` where the host has it, because an id that leaves the
|
|
30
|
+
* process should not be guessable from another one. Where it does not, the
|
|
31
|
+
* COUNTER carries uniqueness — every id this runtime mints differs from every
|
|
32
|
+
* other, which is the whole of what a `queued`/`settled` pairing needs — and the
|
|
33
|
+
* clock only separates two runtimes started at different milliseconds. Two
|
|
34
|
+
* started inside one millisecond can agree, so a host that sends these ids
|
|
35
|
+
* somewhere they meet another runtime's should install `crypto.randomUUID`
|
|
36
|
+
* rather than rely on this.
|
|
37
|
+
*
|
|
38
|
+
* `Math.random` is deliberately absent and should not be added: this package
|
|
39
|
+
* forbids it in favour of Effect's `Random`, and a service cannot be reached
|
|
40
|
+
* from a function the scheduler calls synchronously.
|
|
41
|
+
*/
|
|
42
|
+
export declare const operationId: () => string;
|
|
43
|
+
//# sourceMappingURL=platform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/internal/platform.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,GAAI,UAAU,MAAM,IAAI,KAAG,IAehD,CAAA;AAMD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW,QAAO,MAO9B,CAAA"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { MutableRef } from 'effect';
|
|
2
|
+
/**
|
|
3
|
+
* The two host globals reform reaches for, behind a check.
|
|
4
|
+
*
|
|
5
|
+
* The core is renderer-neutral and the React package peers on `react` alone, so
|
|
6
|
+
* a scene is expected to run wherever a React reconciler does — including hosts
|
|
7
|
+
* that are neither a browser nor Node. Two globals were reached for directly and
|
|
8
|
+
* neither is guaranteed off the web: measured on `@react-gpui/core`, whose
|
|
9
|
+
* deno_core host installs `console` and the timers and nothing else, a scene
|
|
10
|
+
* dies at the first scheduler tick with `queueMicrotask is not defined`.
|
|
11
|
+
*
|
|
12
|
+
* Both fall back rather than throw, because the property each is used for
|
|
13
|
+
* survives the fallback: a resolved promise is a microtask by definition, and an
|
|
14
|
+
* operation id has to be unique among the ids one runtime mints.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Run `callback` on a microtask.
|
|
18
|
+
*
|
|
19
|
+
* `queueMicrotask` where the host has it, a resolved promise where it does not.
|
|
20
|
+
* The two differ in one way that matters, which is why the check is kept rather
|
|
21
|
+
* than always taking the promise: a callback that throws inside `queueMicrotask`
|
|
22
|
+
* reaches the host's global error handler, where the same callback inside
|
|
23
|
+
* `.then` becomes an unhandled rejection nobody sees. The rethrow below puts the
|
|
24
|
+
* fallback back on the first of those.
|
|
25
|
+
*/
|
|
26
|
+
export const microtask = (callback) => {
|
|
27
|
+
if (typeof queueMicrotask === 'function') {
|
|
28
|
+
queueMicrotask(callback);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// oxlint-disable-next-line reform-rules/no-promise-static-methods, reform-rules/no-promise-methods -- a microtask is the primitive being polyfilled here; Effect.succeed is not one, and this branch exists precisely because the host has no scheduling primitive to reach for
|
|
32
|
+
void Promise.resolve()
|
|
33
|
+
.then(callback)
|
|
34
|
+
.catch((error) => {
|
|
35
|
+
// oxlint-disable-next-line reform-rules/no-set-timeout-interval -- rethrowing on a macrotask is what reaches the host's global error handler, which is the semantics `queueMicrotask` has and a rejected promise does not
|
|
36
|
+
setTimeout(() => {
|
|
37
|
+
// oxlint-disable-next-line reform-rules/no-throw -- only way to surface a listener defect to the host's global error handler, as internal/scheduler.ts does for the same reason
|
|
38
|
+
throw error;
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
const RADIX = 36;
|
|
43
|
+
const minted = MutableRef.make(0);
|
|
44
|
+
/**
|
|
45
|
+
* An id no other operation of this runtime shares.
|
|
46
|
+
*
|
|
47
|
+
* `crypto.randomUUID` where the host has it, because an id that leaves the
|
|
48
|
+
* process should not be guessable from another one. Where it does not, the
|
|
49
|
+
* COUNTER carries uniqueness — every id this runtime mints differs from every
|
|
50
|
+
* other, which is the whole of what a `queued`/`settled` pairing needs — and the
|
|
51
|
+
* clock only separates two runtimes started at different milliseconds. Two
|
|
52
|
+
* started inside one millisecond can agree, so a host that sends these ids
|
|
53
|
+
* somewhere they meet another runtime's should install `crypto.randomUUID`
|
|
54
|
+
* rather than rely on this.
|
|
55
|
+
*
|
|
56
|
+
* `Math.random` is deliberately absent and should not be added: this package
|
|
57
|
+
* forbids it in favour of Effect's `Random`, and a service cannot be reached
|
|
58
|
+
* from a function the scheduler calls synchronously.
|
|
59
|
+
*/
|
|
60
|
+
export const operationId = () => {
|
|
61
|
+
if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {
|
|
62
|
+
return crypto.randomUUID();
|
|
63
|
+
}
|
|
64
|
+
MutableRef.update(minted, (count) => count + 1);
|
|
65
|
+
// oxlint-disable-next-line reform-rules/no-date-constructor -- DateTime is an Effect and this mint is synchronous; the clock is only a tiebreak between runtimes here, never read as a time
|
|
66
|
+
return `op-${Date.now().toString(RADIX)}-${MutableRef.get(minted).toString(RADIX)}`;
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/internal/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAEnC;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAoB,EAAQ,EAAE;IACtD,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;QACzC,cAAc,CAAC,QAAQ,CAAC,CAAA;QACxB,OAAM;IACR,CAAC;IACD,gRAAgR;IAChR,KAAK,OAAO,CAAC,OAAO,EAAE;SACnB,IAAI,CAAC,QAAQ,CAAC;SACd,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACxB,0NAA0N;QAC1N,UAAU,CAAC,GAAG,EAAE;YACd,gLAAgL;YAChL,MAAM,KAAK,CAAA;QACb,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACN,CAAC,CAAA;AAED,MAAM,KAAK,GAAG,EAAE,CAAA;AAEhB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAEjC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAW,EAAE;IACtC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QAC7E,OAAO,MAAM,CAAC,UAAU,EAAE,CAAA;IAC5B,CAAC;IACD,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IAC/C,4LAA4L;IAC5L,OAAO,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAA;AACrF,CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Effect, type Scope } from 'effect';
|
|
2
|
+
import type { QueryDriver, QueryDriverOptions } from './queryDriverTypes.js';
|
|
3
|
+
import { type InputStores } from './sources.js';
|
|
4
|
+
import { type AnySource } from '../state/token.js';
|
|
5
|
+
export { bumpRevision, gatedFlag, type GatedOf, type QueryCodec, type QueryDriver, type QueryDriverOptions, Revision, RevisionSchema, revisionZero, } from './queryDriverTypes.js';
|
|
6
|
+
export declare const makeQueryDriver: <Inputs extends ReadonlyArray<AnySource>, A, E, R>(options: QueryDriverOptions<Inputs, A, E, R>) => Effect.Effect<QueryDriver<A, E>, never, InputStores<Inputs> | R | Scope.Scope>;
|
|
7
|
+
//# sourceMappingURL=queryDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryDriver.d.ts","sourceRoot":"","sources":["../../src/internal/queryDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAsC,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAA;AActF,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAGzE,OAAO,EAAqB,KAAK,WAAW,EAAwB,MAAM,WAAW,CAAA;AAErF,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C,OAAO,EACL,YAAY,EACZ,SAAS,EACT,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,QAAQ,EACR,cAAc,EACd,YAAY,GACb,MAAM,oBAAoB,CAAA;AAG3B,eAAO,MAAM,eAAe,GAAI,MAAM,SAAS,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9E,SAAS,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC3C,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAyP5E,CAAA"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { Cause, Effect, MutableRef, Option, Queue, Runtime } from 'effect';
|
|
2
|
+
import { empty } from '../calc/queryState.js';
|
|
3
|
+
import { Queries } from '../runtime/queries.js';
|
|
4
|
+
import { resolveInstrumentation } from '../runtime/instrumentation.js';
|
|
5
|
+
import { resolveQueryStore } from './queryStore.js';
|
|
6
|
+
import { makePersistWrite, persistCacheKey } from './queryDriverPersist.js';
|
|
7
|
+
import { makeSettlers } from './queryDriverSettle.js';
|
|
8
|
+
import { hydratePersistedQuery } from './queryDriverHydrate.js';
|
|
9
|
+
import { incrementGeneration, makeQueryProjection, subscribeQuerySources, withReaderTracking, } from './queryDriverStore.js';
|
|
10
|
+
import { consumeRequests } from './queryDriverConsume.js';
|
|
11
|
+
import { resolveScheduler } from './scheduler.js';
|
|
12
|
+
import { sameKey, wireSources } from './sources.js';
|
|
13
|
+
import { makeStore } from './store.js';
|
|
14
|
+
import {} from '../state/token.js';
|
|
15
|
+
import { microtask } from './platform.js';
|
|
16
|
+
export { bumpRevision, gatedFlag, Revision, RevisionSchema, revisionZero, } from './queryDriverTypes.js';
|
|
17
|
+
// oxlint-disable-next-line reform-rules/prefer-effect-fn -- generic export: Effect.fn's inferred type isn't portable under isolatedDeclarations
|
|
18
|
+
export const makeQueryDriver = (options) => Effect.gen(function* () {
|
|
19
|
+
const scheduler = yield* resolveScheduler;
|
|
20
|
+
const instrumentation = yield* resolveInstrumentation;
|
|
21
|
+
const sources = yield* wireSources(options.inputs, options.invalidateBy);
|
|
22
|
+
const extraKey = options.extraKey;
|
|
23
|
+
const persist = options.persist;
|
|
24
|
+
const queryStore = yield* resolveQueryStore;
|
|
25
|
+
const keyOf = (args) => extraKey === undefined ? sources.keyOf(args) : [...sources.keyOf(args), extraKey.read()];
|
|
26
|
+
const disabledNow = (args = sources.snapshot()) => options.gated && options.disabled !== undefined ? options.disabled(args) : false;
|
|
27
|
+
const keepPreviousData = options.keepPreviousData === true;
|
|
28
|
+
const idle = empty(false, keepPreviousData);
|
|
29
|
+
const stateStore = makeStore(disabledNow() ? idle : empty(true, keepPreviousData), scheduler);
|
|
30
|
+
const readers = MutableRef.make(0);
|
|
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);
|
|
36
|
+
// Monotonic source epoch for the one startup hydration attempt. Comparing
|
|
37
|
+
// only the current key is insufficient: A → B → A would otherwise let the
|
|
38
|
+
// original A cache land over the later A request. Same-key refetches do not
|
|
39
|
+
// move this epoch, so cache may still paint during an in-flight revalidation.
|
|
40
|
+
const sourceEpoch = MutableRef.make(0);
|
|
41
|
+
const generation = MutableRef.make(0);
|
|
42
|
+
const nextGeneration = () => incrementGeneration(generation);
|
|
43
|
+
// A stale cause needs a strictly newer requested generation. Hydration
|
|
44
|
+
// captures this before the startup kick, while invalidation captures it when
|
|
45
|
+
// the value is marked stale.
|
|
46
|
+
const staleAtGeneration = MutableRef.make(0);
|
|
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
|
+
});
|
|
65
|
+
yield* Effect.addFinalizer(() => Effect.sync(derived.unsubscribe));
|
|
66
|
+
const commitSuccess = (produced, request) => {
|
|
67
|
+
if (disabledNow()) {
|
|
68
|
+
return Effect.void;
|
|
69
|
+
}
|
|
70
|
+
return Effect.suspend(() => {
|
|
71
|
+
const shared = settleSuccess(produced, request);
|
|
72
|
+
options.onSettled?.(request.generation);
|
|
73
|
+
return persistWrite(shared, request.args);
|
|
74
|
+
});
|
|
75
|
+
};
|
|
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({
|
|
77
|
+
onSuccess: (produced) => Option.some(produced),
|
|
78
|
+
onFailure: (cause) => {
|
|
79
|
+
if (!disabledNow()) {
|
|
80
|
+
Option.match(Cause.failureOption(cause), {
|
|
81
|
+
onSome: (error) => settleError(error, request),
|
|
82
|
+
onNone: () => settleDefect(request),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
return Option.none();
|
|
86
|
+
},
|
|
87
|
+
}), Effect.flatMap((ok) => Option.match(ok, {
|
|
88
|
+
onNone: () => Effect.void,
|
|
89
|
+
onSome: (produced) => commitSuccess(produced, request),
|
|
90
|
+
})));
|
|
91
|
+
const requests = yield* Queue.unbounded();
|
|
92
|
+
yield* Effect.forkScoped(consumeRequests(options.coalesce === 'trailing', {
|
|
93
|
+
requests,
|
|
94
|
+
runQuery,
|
|
95
|
+
disabledNow: () => disabledNow(),
|
|
96
|
+
markFetching,
|
|
97
|
+
}));
|
|
98
|
+
const enqueue = (force) => {
|
|
99
|
+
const args = sources.snapshot();
|
|
100
|
+
if (disabledNow(args)) {
|
|
101
|
+
if (MutableRef.get(lastKey) !== undefined) {
|
|
102
|
+
MutableRef.update(sourceEpoch, (current) => current + 1);
|
|
103
|
+
}
|
|
104
|
+
MutableRef.set(lastKey, undefined);
|
|
105
|
+
MutableRef.set(lastSourceKey, undefined);
|
|
106
|
+
stateStore.set(idle);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const key = keyOf(args);
|
|
110
|
+
const previous = MutableRef.get(lastKey);
|
|
111
|
+
if (!force && previous !== undefined && sameKey(key, previous)) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const sourceKey = sources.keyOf(args);
|
|
115
|
+
const previousSourceKey = MutableRef.get(lastSourceKey);
|
|
116
|
+
const changedKey = previousSourceKey !== undefined && !sameKey(sourceKey, previousSourceKey);
|
|
117
|
+
if (previous !== undefined && !sameKey(key, previous)) {
|
|
118
|
+
MutableRef.update(sourceEpoch, (current) => current + 1);
|
|
119
|
+
}
|
|
120
|
+
MutableRef.set(lastKey, key);
|
|
121
|
+
MutableRef.set(lastSourceKey, sourceKey);
|
|
122
|
+
markFetching(changedKey);
|
|
123
|
+
Queue.unsafeOffer(requests, { args, sourceKey, generation: nextGeneration() });
|
|
124
|
+
};
|
|
125
|
+
const trigger = () => enqueue(false);
|
|
126
|
+
const refetch = () => enqueue(true);
|
|
127
|
+
const maybeAutoRefetch = () => {
|
|
128
|
+
const hasCoveringRequest = MutableRef.get(generation) > MutableRef.get(staleAtGeneration);
|
|
129
|
+
if (stateStore.get().isStale && MutableRef.get(readers) > 0 && !hasCoveringRequest) {
|
|
130
|
+
refetch();
|
|
131
|
+
}
|
|
132
|
+
};
|
|
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)) {
|
|
141
|
+
return;
|
|
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).
|
|
154
|
+
MutableRef.set(staleAtGeneration, MutableRef.get(generation));
|
|
155
|
+
if (!state.isStale) {
|
|
156
|
+
stateStore.set({ ...state, isStale: true });
|
|
157
|
+
}
|
|
158
|
+
scheduleAutoRefetch();
|
|
159
|
+
};
|
|
160
|
+
const unsubscribe = subscribeQuerySources(sources, extraKey, trigger);
|
|
161
|
+
yield* Effect.addFinalizer(() => Effect.sync(unsubscribe));
|
|
162
|
+
// Fork hydration so an asynchronous store never blocks layer acquisition.
|
|
163
|
+
if (persist !== undefined && !disabledNow()) {
|
|
164
|
+
const hydrateArgs = sources.snapshot();
|
|
165
|
+
const hydrateSourceKey = keyOf(hydrateArgs);
|
|
166
|
+
const hydrateSourceEpoch = MutableRef.get(sourceEpoch);
|
|
167
|
+
const hydrate = hydratePersistedQuery({
|
|
168
|
+
queryStore,
|
|
169
|
+
cacheKey: persistCacheKey(persist.key, hydrateArgs),
|
|
170
|
+
codec: persist.codec,
|
|
171
|
+
stateStore,
|
|
172
|
+
staleAtGeneration,
|
|
173
|
+
capturedGeneration: MutableRef.get(generation),
|
|
174
|
+
isSuperseded: () => disabledNow() ||
|
|
175
|
+
hydrateSourceEpoch !== MutableRef.get(sourceEpoch) ||
|
|
176
|
+
!sameKey(hydrateSourceKey, keyOf(sources.snapshot())),
|
|
177
|
+
});
|
|
178
|
+
const runtime = yield* Effect.runtime();
|
|
179
|
+
const scope = yield* Effect.scope;
|
|
180
|
+
Runtime.runFork(runtime)(hydrate, { immediate: true, scope });
|
|
181
|
+
}
|
|
182
|
+
const initial = sources.snapshot();
|
|
183
|
+
if (!disabledNow(initial)) {
|
|
184
|
+
const initialKey = keyOf(initial);
|
|
185
|
+
const initialSourceKey = sources.keyOf(initial);
|
|
186
|
+
MutableRef.set(lastKey, initialKey);
|
|
187
|
+
MutableRef.set(lastSourceKey, initialSourceKey);
|
|
188
|
+
markFetching();
|
|
189
|
+
Queue.unsafeOffer(requests, {
|
|
190
|
+
args: initial,
|
|
191
|
+
sourceKey: initialSourceKey,
|
|
192
|
+
generation: nextGeneration(),
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
const store = withReaderTracking({
|
|
196
|
+
store: derived.store,
|
|
197
|
+
readers,
|
|
198
|
+
onFirstReader: maybeAutoRefetch,
|
|
199
|
+
});
|
|
200
|
+
const handle = {
|
|
201
|
+
name: options.name,
|
|
202
|
+
invalidate,
|
|
203
|
+
refetch,
|
|
204
|
+
snapshot: () => stateStore.getSnapshot(),
|
|
205
|
+
subscribe: (listener) => stateStore.subscribe(listener),
|
|
206
|
+
};
|
|
207
|
+
const queries = Option.getOrUndefined(yield* Effect.serviceOption(Queries));
|
|
208
|
+
if (queries !== undefined) {
|
|
209
|
+
if (queries.byName.has(handle.name)) {
|
|
210
|
+
yield* Effect.logWarning(`reform: duplicate query name '${handle.name}' registered; previous registration is being replaced`);
|
|
211
|
+
}
|
|
212
|
+
queries.register(handle);
|
|
213
|
+
yield* Effect.addFinalizer(() => Effect.sync(() => queries.unregister(handle)));
|
|
214
|
+
}
|
|
215
|
+
return {
|
|
216
|
+
store,
|
|
217
|
+
requested: () => MutableRef.get(generation),
|
|
218
|
+
key: () => sources.keyOf(sources.snapshot()),
|
|
219
|
+
subscribeKey: sources.subscribe,
|
|
220
|
+
};
|
|
221
|
+
});
|
|
222
|
+
//# sourceMappingURL=queryDriver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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
|