@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,101 @@
|
|
|
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
|
+
};
|
|
23
|
+
export const makeScheduler = () => {
|
|
24
|
+
const pending = new Set();
|
|
25
|
+
const armed = MutableRef.make(false);
|
|
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(() => {
|
|
28
|
+
// oxlint-disable-next-line reform-rules/no-throw -- only way to surface a listener defect to the host's global error handler
|
|
29
|
+
throw error;
|
|
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
|
+
};
|
|
45
|
+
const drain = () => {
|
|
46
|
+
if (pending.size === 0) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const due = [...pending];
|
|
50
|
+
pending.clear();
|
|
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
|
+
});
|
|
67
|
+
drain();
|
|
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.
|
|
72
|
+
const flush = () => {
|
|
73
|
+
if (MutableRef.get(flushing)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
MutableRef.set(flushing, true);
|
|
77
|
+
MutableRef.set(armed, false);
|
|
78
|
+
// `runListener` absorbs every listener defect, so `drain` cannot throw past here.
|
|
79
|
+
drain();
|
|
80
|
+
MutableRef.set(flushing, false);
|
|
81
|
+
};
|
|
82
|
+
const schedule = (listeners) => {
|
|
83
|
+
pending.add({ source: listeners, members: Array.from(listeners) });
|
|
84
|
+
if (MutableRef.get(inlineNotifications)) {
|
|
85
|
+
flush();
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (pending.size > 0 && !MutableRef.get(armed)) {
|
|
89
|
+
MutableRef.set(armed, true);
|
|
90
|
+
microtask(flush);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
return { schedule };
|
|
94
|
+
};
|
|
95
|
+
export const defaultScheduler = makeScheduler();
|
|
96
|
+
const NotificationsBase = Context.Tag('reform/Notifications')();
|
|
97
|
+
export class Notifications extends NotificationsBase {
|
|
98
|
+
}
|
|
99
|
+
export const notificationsLayer = Layer.sync(Notifications, makeScheduler);
|
|
100
|
+
export const resolveScheduler = Effect.map(Effect.serviceOption(Notifications), Option.getOrElse(() => defaultScheduler));
|
|
101
|
+
//# sourceMappingURL=scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/internal/scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeds.d.ts","sourceRoot":"","sources":["../../src/internal/seeds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAe,MAAM,QAAQ,CAAA;AAE9C,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAGnF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeds.js","sourceRoot":"","sources":["../../src/internal/seeds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAE9C,MAAM,CAAC,MAAM,oBAAoB,GAC/B,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,EAAE,GAAG,EAAE,CACtE,QAAQ,CAAC,UAAU,CAAoC,EAAE,CAAC,CAC3D,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Context, Effect } from 'effect';
|
|
2
|
+
import { type AnySource, type SourceName, type SourceValue } from '../state/token.js';
|
|
3
|
+
export type InputsObject<Inputs extends ReadonlyArray<AnySource>> = {
|
|
4
|
+
readonly [S in Inputs[number] as SourceName<S>]: SourceValue<S>;
|
|
5
|
+
};
|
|
6
|
+
export type StoresOf<Items extends ReadonlyArray<unknown>> = {
|
|
7
|
+
[I in keyof Items]: Items[I] extends {
|
|
8
|
+
readonly store: Context.Tag<infer Service, infer _Store>;
|
|
9
|
+
} ? Service : never;
|
|
10
|
+
}[number];
|
|
11
|
+
export type InputStores<Inputs extends ReadonlyArray<AnySource>> = StoresOf<Inputs>;
|
|
12
|
+
export type InvalidateBy<Inputs extends ReadonlyArray<AnySource>> = (inputs: InputsObject<Inputs>) => ReadonlyArray<unknown>;
|
|
13
|
+
export declare const sameKey: (left: ReadonlyArray<unknown>, right: ReadonlyArray<unknown>) => boolean;
|
|
14
|
+
export interface WiredSources<Inputs extends ReadonlyArray<AnySource>> {
|
|
15
|
+
readonly snapshot: () => InputsObject<Inputs>;
|
|
16
|
+
readonly keyOf: (inputs: InputsObject<Inputs>) => ReadonlyArray<unknown>;
|
|
17
|
+
readonly subscribe: (listener: () => void) => () => void;
|
|
18
|
+
}
|
|
19
|
+
export declare const wireSources: <Inputs extends ReadonlyArray<AnySource>>(inputs: Inputs, invalidateBy?: InvalidateBy<Inputs>) => Effect.Effect<WiredSources<Inputs>, never, InputStores<Inputs>>;
|
|
20
|
+
//# sourceMappingURL=sources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../src/internal/sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAoB,MAAM,QAAQ,CAAA;AAC1D,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAA;AAEvB,MAAM,MAAM,YAAY,CAAC,MAAM,SAAS,aAAa,CAAC,SAAS,CAAC,IAAI;IAClE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;CAChE,CAAA;AAED,MAAM,MAAM,QAAQ,CAAC,KAAK,SAAS,aAAa,CAAC,OAAO,CAAC,IAAI;KAC1D,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS;QACnC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,OAAO,EAAE,MAAM,MAAM,CAAC,CAAA;KACzD,GACG,OAAO,GACP,KAAK;CACV,CAAC,MAAM,CAAC,CAAA;AAET,MAAM,MAAM,WAAW,CAAC,MAAM,SAAS,aAAa,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;AAEnF,MAAM,MAAM,YAAY,CAAC,MAAM,SAAS,aAAa,CAAC,SAAS,CAAC,IAAI,CAClE,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,KACzB,aAAa,CAAC,OAAO,CAAC,CAAA;AAoB3B,eAAO,MAAM,OAAO,GAAI,MAAM,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,aAAa,CAAC,OAAO,CAAC,KAAG,OAEjB,CAAA;AAErE,MAAM,WAAW,YAAY,CAAC,MAAM,SAAS,aAAa,CAAC,SAAS,CAAC;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,CAAA;IAC7C,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,aAAa,CAAC,OAAO,CAAC,CAAA;IACxE,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAA;CACzD;AAED,eAAO,MAAM,WAAW,GAAI,MAAM,SAAS,aAAa,CAAC,SAAS,CAAC,EACjE,QAAQ,MAAM,EACd,eAAe,YAAY,CAAC,MAAM,CAAC,KAClC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CA6BM,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Context, Effect, Equal, Predicate } from 'effect';
|
|
2
|
+
import {} from '../state/token.js';
|
|
3
|
+
const inputKey = (input) => Predicate.hasProperty(input, 'manifest') &&
|
|
4
|
+
Predicate.isRecord(input.manifest) &&
|
|
5
|
+
Predicate.isString(input.manifest['name'])
|
|
6
|
+
? input.manifest['name']
|
|
7
|
+
: input.name;
|
|
8
|
+
const readStore = (source) => Context.GenericTag(source.store.key);
|
|
9
|
+
export const sameKey = (left, right) => left.length === right.length &&
|
|
10
|
+
left.every((element, index) => Equal.equals(element, right[index]));
|
|
11
|
+
export const wireSources = (inputs, invalidateBy) =>
|
|
12
|
+
// oxlint-disable-next-line reform-rules/no-type-assertion -- restate the precise InputStores<Inputs> union the signature promises; Effect.forEach over a heterogeneous tuple widens R (the single seam this cast lives at)
|
|
13
|
+
Effect.gen(function* () {
|
|
14
|
+
const sources = yield* Effect.forEach(inputs, readStore);
|
|
15
|
+
const snapshot = () => {
|
|
16
|
+
const args = {};
|
|
17
|
+
inputs.forEach((input, index) => {
|
|
18
|
+
const source = sources[index];
|
|
19
|
+
if (source !== undefined) {
|
|
20
|
+
args[inputKey(input)] = source.getSnapshot();
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
// oxlint-disable-next-line reform-rules/no-type-assertion -- `args` is built by reflection over input names; this restates the InputsObject mapped-type shape
|
|
24
|
+
return args;
|
|
25
|
+
};
|
|
26
|
+
const keyOf = (args) => invalidateBy ? invalidateBy(args) : Object.values(args);
|
|
27
|
+
const subscribe = (listener) => {
|
|
28
|
+
const unsubscribes = sources.map((source) => source.subscribe(listener));
|
|
29
|
+
return () => {
|
|
30
|
+
unsubscribes.forEach((unsubscribe) => unsubscribe());
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
return { snapshot, keyOf, subscribe };
|
|
34
|
+
// Yielding each `input.store` (a `Context.Tag<Store<unknown>>`) widens the
|
|
35
|
+
// inferred requirement to `Store<unknown>`; restate the precise per-input
|
|
36
|
+
// `InputStores<Inputs>` union the signature promises. This is the single
|
|
37
|
+
// place that cast lives — `Calc.live`/`AsyncCalc.live` inherit it.
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=sources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/internal/sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC1D,OAAO,EAKN,MAAM,gBAAgB,CAAA;AAoBvB,MAAM,QAAQ,GAAG,CAAC,KAAgB,EAAU,EAAE,CAC5C,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA;AAQhB,MAAM,SAAS,GAAG,CAChB,MAAc,EACsE,EAAE,CACtF,OAAO,CAAC,UAAU,CAA+D,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAEpG,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAA4B,EAAE,KAA6B,EAAW,EAAE,CAC9F,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;IAC5B,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAQrE,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,MAAc,EACd,YAAmC,EAC8B,EAAE;AACnE,2NAA2N;AAC3N,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAExD,MAAM,QAAQ,GAAG,GAAyB,EAAE;QAC1C,MAAM,IAAI,GAA4B,EAAE,CAAA;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;YAC7B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;YAC9C,CAAC;QACH,CAAC,CAAC,CAAA;QACF,8JAA8J;QAC9J,OAAO,IAA4B,CAAA;IACrC,CAAC,CAAA;IACD,MAAM,KAAK,GAAG,CAAC,IAA0B,EAA0B,EAAE,CACnE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACzD,MAAM,SAAS,GAAG,CAAC,QAAoB,EAAgB,EAAE;QACvD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;QACxE,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;QACtD,CAAC,CAAA;IACH,CAAC,CAAA;IACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;IACrC,2EAA2E;IAC3E,0EAA0E;IAC1E,yEAAyE;IACzE,mEAAmE;AACrE,CAAC,CAAoE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stateRegistry.d.ts","sourceRoot":"","sources":["../../src/internal/stateRegistry.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa,GAAI,YAAY,MAAM,KAAG,IAclD,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
const claimed = new Set();
|
|
3
|
+
const warned = new Set();
|
|
4
|
+
export const claimStateTag = (identifier) => {
|
|
5
|
+
if (!claimed.has(identifier)) {
|
|
6
|
+
claimed.add(identifier);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
if (warned.has(identifier)) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
warned.add(identifier);
|
|
13
|
+
Effect.runSync(Effect.logWarning(`reform: duplicate state tag '${identifier}' — two definitions collide and the last merged wins; namespace the name per feature`));
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=stateRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stateRegistry.js","sourceRoot":"","sources":["../../src/internal/stateRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;AACjC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAA;AAEhC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,UAAkB,EAAQ,EAAE;IACxD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACvB,OAAM;IACR,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAM;IACR,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACtB,MAAM,CAAC,OAAO,CACZ,MAAM,CAAC,UAAU,CACf,gCAAgC,UAAU,sFAAsF,CACjI,CACF,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type Inspectable } from './inspect.js';
|
|
2
|
+
import { type Scheduler } from './scheduler.js';
|
|
3
|
+
export interface Store<in out A> extends Inspectable {
|
|
4
|
+
get(): A;
|
|
5
|
+
set(value: A): void;
|
|
6
|
+
getSnapshot(): A;
|
|
7
|
+
getVersion(): number;
|
|
8
|
+
subscribe(listener: () => void): () => void;
|
|
9
|
+
}
|
|
10
|
+
export declare const makeStore: <A>(initial: A, scheduler?: Scheduler, onChange?: () => void) => Store<A>;
|
|
11
|
+
export declare const makeDerivedStore: <A>(compute: () => A, subscribeUpstream: (onChange: () => void) => () => void, scheduler?: Scheduler, onOutputChange?: () => void) => {
|
|
12
|
+
readonly store: Store<A>;
|
|
13
|
+
readonly unsubscribe: () => void;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/internal/store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,WAAW,CAAA;AACzD,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAA;AAE9D,MAAM,WAAW,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAE,SAAQ,WAAW;IAClD,GAAG,IAAI,CAAC,CAAA;IACR,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IACnB,WAAW,IAAI,CAAC,CAAA;IAChB,UAAU,IAAI,MAAM,CAAA;IACpB,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC5C;AAID,eAAO,MAAM,SAAS,GAAI,CAAC,EACzB,SAAS,CAAC,EACV,YAAW,SAA4B,EACvC,WAAU,MAAM,IAAe,KAC9B,KAAK,CAAC,CAAC,CAyBT,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAChC,SAAS,MAAM,CAAC,EAChB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,EACvD,YAAW,SAA4B,EACvC,iBAAgB,MAAM,IAAe,KACpC;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAA;CA6B9D,CAAA"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Equal, MutableRef } from 'effect';
|
|
2
|
+
import { inspectable } from './inspect.js';
|
|
3
|
+
import { defaultScheduler } from './scheduler.js';
|
|
4
|
+
const noChange = () => { };
|
|
5
|
+
export const makeStore = (initial, scheduler = defaultScheduler, onChange = noChange) => {
|
|
6
|
+
const current = MutableRef.make(initial);
|
|
7
|
+
const version = MutableRef.make(0);
|
|
8
|
+
const listeners = new Set();
|
|
9
|
+
return {
|
|
10
|
+
get: () => MutableRef.get(current),
|
|
11
|
+
getSnapshot: () => MutableRef.get(current),
|
|
12
|
+
getVersion: () => MutableRef.get(version),
|
|
13
|
+
set: (next) => {
|
|
14
|
+
if (Equal.equals(MutableRef.get(current), next)) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
MutableRef.set(current, next);
|
|
18
|
+
MutableRef.update(version, (count) => count + 1);
|
|
19
|
+
onChange();
|
|
20
|
+
scheduler.schedule(listeners);
|
|
21
|
+
},
|
|
22
|
+
subscribe: (listener) => {
|
|
23
|
+
listeners.add(listener);
|
|
24
|
+
return () => {
|
|
25
|
+
listeners.delete(listener);
|
|
26
|
+
};
|
|
27
|
+
},
|
|
28
|
+
...inspectable(() => ({ _id: 'reform/Store', value: MutableRef.get(current) })),
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
export const makeDerivedStore = (compute, subscribeUpstream, scheduler = defaultScheduler, onOutputChange = noChange) => {
|
|
32
|
+
const listeners = new Set();
|
|
33
|
+
const version = MutableRef.make(0);
|
|
34
|
+
const seen = MutableRef.make({ value: compute() });
|
|
35
|
+
const onChange = () => {
|
|
36
|
+
const previous = MutableRef.get(seen);
|
|
37
|
+
const next = compute();
|
|
38
|
+
MutableRef.set(seen, { value: next });
|
|
39
|
+
if (previous === undefined || !Equal.equals(previous.value, next)) {
|
|
40
|
+
MutableRef.update(version, (count) => count + 1);
|
|
41
|
+
onOutputChange();
|
|
42
|
+
scheduler.schedule(listeners);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const unsubscribe = subscribeUpstream(onChange);
|
|
46
|
+
const store = {
|
|
47
|
+
get: compute,
|
|
48
|
+
getSnapshot: compute,
|
|
49
|
+
getVersion: () => MutableRef.get(version),
|
|
50
|
+
set: () => { },
|
|
51
|
+
subscribe: (listener) => {
|
|
52
|
+
listeners.add(listener);
|
|
53
|
+
return () => {
|
|
54
|
+
listeners.delete(listener);
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
...inspectable(() => ({ _id: 'reform/Store', value: compute() })),
|
|
58
|
+
};
|
|
59
|
+
return { store, unsubscribe };
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/internal/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Context, Effect } from 'effect';
|
|
2
|
+
import type { Store } from './store.js';
|
|
3
|
+
export interface Subscribable {
|
|
4
|
+
subscribe(listener: () => void): () => void;
|
|
5
|
+
getVersion(): number;
|
|
6
|
+
}
|
|
7
|
+
export interface Tracker {
|
|
8
|
+
add(source: Subscribable): void;
|
|
9
|
+
}
|
|
10
|
+
declare const CurrentTrackerBase: Context.TagClass<CurrentTracker, 'reform/Tracker', Tracker>;
|
|
11
|
+
export declare class CurrentTracker extends CurrentTrackerBase {
|
|
12
|
+
}
|
|
13
|
+
export declare const readTracked: <A>(store: Store<A>) => Effect.Effect<A>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=track.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../../src/internal/track.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;IAC3C,UAAU,IAAI,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;CAChC;AAED,QAAA,MAAM,kBAAkB,EAAE,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,gBAAgB,EAAE,OAAO,CAExD,CAAA;AAC5B,qBAAa,cAAe,SAAQ,kBAAkB;CAAG;AAEzD,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAM5D,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Context, Effect, Option } from 'effect';
|
|
2
|
+
const CurrentTrackerBase = Context.Tag('reform/Tracker')();
|
|
3
|
+
export class CurrentTracker extends CurrentTrackerBase {
|
|
4
|
+
}
|
|
5
|
+
export const readTracked = (store) => Effect.map(Effect.serviceOption(CurrentTracker), (tracker) => {
|
|
6
|
+
if (Option.isSome(tracker)) {
|
|
7
|
+
tracker.value.add(store);
|
|
8
|
+
}
|
|
9
|
+
return store.getSnapshot();
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=track.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"track.js","sourceRoot":"","sources":["../../src/internal/track.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAYhD,MAAM,kBAAkB,GAAgE,OAAO,CAAC,GAAG,CACjG,gBAAgB,CACjB,EAA2B,CAAA;AAC5B,MAAM,OAAO,cAAe,SAAQ,kBAAkB;CAAG;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAI,KAAe,EAAoB,EAAE,CAClE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE;IAC3D,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IACD,OAAO,KAAK,CAAC,WAAW,EAAE,CAAA;AAC5B,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variance.d.ts","sourceRoot":"","sources":["../../src/internal/variance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEpC,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;AAErE,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variance.js","sourceRoot":"","sources":["../../src/internal/variance.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export { type AnyState, type StateCapture, type StateDefinition, type StateManifest, type StateName, type StateSchemaReflection, StateStoreTypeId, } from './state/state.js';
|
|
2
|
+
export { type AnyFamily, type FamilyName, type FamilySchemaReflection, type FamilyStore, type StateFamilyCapture, type StateFamilyManifest, StateFamilyStoreTypeId, } from './state/stateFamily.js';
|
|
3
|
+
export { StateToken } from './state/token.js';
|
|
4
|
+
export type { AnySource, Source, SourceCapture, SourceIdentifier, SourceName, SourceValue, } from './state/token.js';
|
|
5
|
+
export type { AnyEvent, EventCapture, EventManifest, EventName, EventReflection, EventSchemaReflection, EventType, } from './event/event.js';
|
|
6
|
+
export { CalcStoreTypeId } from './calc/calc.js';
|
|
7
|
+
export { CalcFamilyStoreTypeId } from './calc/calcFamily.js';
|
|
8
|
+
export { AsyncCalcStoreTypeId } from './calc/asyncCalc.js';
|
|
9
|
+
export { sameKey, type WiredSources, wireSources } from './internal/sources.js';
|
|
10
|
+
export { noopQueryStore, QueryStore, type QueryStoreApi, resolveQueryStore, } from './internal/queryStore.js';
|
|
11
|
+
export { noopQueryEvents, QueryEvents, type QueryEventsApi, resolveQueryEvents, } from './internal/queryEvents.js';
|
|
12
|
+
export { RemoteStatePendingStoreTypeId, RemoteStateTruthStoreTypeId, RemoteStateVisibleStoreTypeId, } from './remote/remoteState.js';
|
|
13
|
+
export { SyncedStoreIdentifierTypeId } from './synced/syncedStore.js';
|
|
14
|
+
export { BoundaryStoreTypeId } from './boundary/boundary.js';
|
|
15
|
+
export type { AnyProcedure, ProcedureCapture, ProcedureManifest, ProcedureReflection, } from './procedure/procedure.js';
|
|
16
|
+
export { type ChannelRuntime, Channels, channelsLayer, type ProcedureEntry, Procedures, proceduresLayer, } from './channel/channel.js';
|
|
17
|
+
export { CompositionIdTypeId } from './compose/composition.js';
|
|
18
|
+
export type { AnyComposition, CompositionCapture, CompositionManifest, CompositionPropsReceiver, CompositionReflection, CompositionTag, HasExactCompositionId, RequiredSlotIdentities, SlotClassesOf, } from './compose/composition.js';
|
|
19
|
+
export { StructureTypeId } from './compose/structure.js';
|
|
20
|
+
export { type PropsId, PropsIdTypeId, type PropsTag, propsTag } from './compose/props.js';
|
|
21
|
+
export { type AnySlot, type AnySlotChild, type AnySlotInstance, type SlotCapture, type SlotChild, type SlotManifest, SlotServiceTypeId, SlotTypeId, } from './compose/slot.js';
|
|
22
|
+
export type { SlotRenderer } from './compose/host.js';
|
|
23
|
+
export { type AnyMadeView, type AnyUi, type MadeViewCapture, type UiCapture, type UiManifest, type UiName, type UiReflection, type UiSchemaReflection, UiServiceTypeId, UiTypeId, type WiredUi, type WiredUiManifest, type WireSchemas, } from './compose/ui.js';
|
|
24
|
+
export * as Wire from './wire/tree.js';
|
|
25
|
+
export type { WireNode, WirePatch, WireProp, WireTree } from './wire/tree.js';
|
|
26
|
+
export * as Triggers from './wire/triggers.js';
|
|
27
|
+
export { type TriggerHandle, TriggerRegistry, type TriggerRegistryApi, UnknownTrigger, } from './wire/triggers.js';
|
|
28
|
+
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
|
+
export { type CompositionChildSummary, CompositionChildSummaryTypeId, type DescendantOpenServices, type FeatureChildSummary, FeatureChildSummaryTypeId, type ModuleOpenServices, type OpenServicesFromFeatureSlotWitnesses, type SlotBindingSummary, SlotBindingSummaryTypeId, type ValidateFeatureGraphLayer, } from './graph/closure.js';
|
|
30
|
+
export { type AnyScene, type AnySceneCapture, type SceneCapture, seedAnyScene } from './scene/scene.js';
|
|
31
|
+
export { Bus, busLayer, type Envelope, type Tagged } from './runtime/bus.js';
|
|
32
|
+
export { type AnyFeatureMountHandlers, type CapturedFeatureMountHandlers, type FeatureMountHandlersExternalApi, type UnspecifiedRuntimeServices, UnspecifiedRuntimeServicesTypeId, } from './runtime/appRuntime.js';
|
|
33
|
+
export { EngineRequirements, type EngineServices, type ReducerEntry, Reducers, reducersLayer, } from './runtime/loop.js';
|
|
34
|
+
export { CurrentEventBudget, defaultEventBudget, resolveEventBudget } from './runtime/eventBudget.js';
|
|
35
|
+
export { CurrentInstrumentation, type Instrumentation, noopInstrumentation, resolveInstrumentation, type SpanEnd, } from './runtime/instrumentation.js';
|
|
36
|
+
export { Queries, queriesLayer, type QueryHandle, type QueryRegistry } from './runtime/queries.js';
|
|
37
|
+
export { CurrentTracker, readTracked, type Subscribable, type Tracker } from './internal/track.js';
|
|
38
|
+
export { type CapturedRender, CaptureSink, type CaptureSinkApi } from './internal/capture.js';
|
|
39
|
+
export { defaultScheduler, makeScheduler, Notifications, notificationsLayer, resolveScheduler, type Scheduler, } from './internal/scheduler.js';
|
|
40
|
+
export { makeStore, type Store } from './internal/store.js';
|
|
41
|
+
export { type Kind, type Manifest, yieldableClass } from './definition/definition.js';
|
|
42
|
+
export { microtask, operationId } from './internal/platform.js';
|
|
43
|
+
//# sourceMappingURL=internal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"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"}
|
package/dist/internal.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// Quarantined surface for first-party hosts and companion packages
|
|
2
|
+
// (`@playfast/reform-*`): reflection/manifest types, TypeIds, erased `Any*`
|
|
3
|
+
// forms, capture callbacks, and runtime seams. Importable as
|
|
4
|
+
// `@playfast/reform/internal`; not part of the app-facing API and not covered
|
|
5
|
+
// by its stability expectations.
|
|
6
|
+
export { StateStoreTypeId, } from './state/state.js';
|
|
7
|
+
export { StateFamilyStoreTypeId, } from './state/stateFamily.js';
|
|
8
|
+
export { StateToken } from './state/token.js';
|
|
9
|
+
export { CalcStoreTypeId } from './calc/calc.js';
|
|
10
|
+
export { CalcFamilyStoreTypeId } from './calc/calcFamily.js';
|
|
11
|
+
export { AsyncCalcStoreTypeId } from './calc/asyncCalc.js';
|
|
12
|
+
export { sameKey, wireSources } from './internal/sources.js';
|
|
13
|
+
// Optional host seams an `AsyncCalc` consults — persistence and lifecycle signals.
|
|
14
|
+
// Concrete implementations live in edge packages (e.g. `@playfast/reform-query-browser`).
|
|
15
|
+
export { noopQueryStore, QueryStore, resolveQueryStore, } from './internal/queryStore.js';
|
|
16
|
+
export { noopQueryEvents, QueryEvents, resolveQueryEvents, } from './internal/queryEvents.js';
|
|
17
|
+
export { RemoteStatePendingStoreTypeId, RemoteStateTruthStoreTypeId, RemoteStateVisibleStoreTypeId, } from './remote/remoteState.js';
|
|
18
|
+
export { SyncedStoreIdentifierTypeId } from './synced/syncedStore.js';
|
|
19
|
+
export { BoundaryStoreTypeId } from './boundary/boundary.js';
|
|
20
|
+
export { Channels, channelsLayer, Procedures, proceduresLayer, } from './channel/channel.js';
|
|
21
|
+
export { CompositionIdTypeId } from './compose/composition.js';
|
|
22
|
+
export { StructureTypeId } from './compose/structure.js';
|
|
23
|
+
export { PropsIdTypeId, propsTag } from './compose/props.js';
|
|
24
|
+
export { SlotServiceTypeId, SlotTypeId, } from './compose/slot.js';
|
|
25
|
+
export { UiServiceTypeId, UiTypeId, } from './compose/ui.js';
|
|
26
|
+
// Wire: the serializable rendered-tree model + pure diff/apply the remote
|
|
27
|
+
// transport sends over the wire and the client folds back. See REMOTE_UI.md §3.
|
|
28
|
+
export * as Wire from './wire/tree.js';
|
|
29
|
+
// Triggers: the server-side handle registry bridging client trigger invocations
|
|
30
|
+
// back to live triggers, decoding payloads via the event schema. See REMOTE_UI.md §4.
|
|
31
|
+
export * as Triggers from './wire/triggers.js';
|
|
32
|
+
export { TriggerRegistry, UnknownTrigger, } from './wire/triggers.js';
|
|
33
|
+
export { FeatureBindingTypeId, FeatureGraphValidTypeId, FeatureInput, featureModuleFromInput, mountFeature, } from './feature/feature.js';
|
|
34
|
+
export { CompositionChildSummaryTypeId, FeatureChildSummaryTypeId, SlotBindingSummaryTypeId, } from './graph/closure.js';
|
|
35
|
+
export { seedAnyScene } from './scene/scene.js';
|
|
36
|
+
export { Bus, busLayer } from './runtime/bus.js';
|
|
37
|
+
export { UnspecifiedRuntimeServicesTypeId, } from './runtime/appRuntime.js';
|
|
38
|
+
export { EngineRequirements, Reducers, reducersLayer, } from './runtime/loop.js';
|
|
39
|
+
export { CurrentEventBudget, defaultEventBudget, resolveEventBudget } from './runtime/eventBudget.js';
|
|
40
|
+
// The profiler SPI: synchronous hooks the engine calls on its hot paths, plus
|
|
41
|
+
// the FiberRef seam `@playfast/reform-profiler` writes through (`profiledScene`).
|
|
42
|
+
export { CurrentInstrumentation, noopInstrumentation, resolveInstrumentation, } from './runtime/instrumentation.js';
|
|
43
|
+
// The runtime-wide registry of live query handles. `AsyncCalc.invalidate` /
|
|
44
|
+
// `AsyncCalc.refetch` and provider layers act on a query by name through it.
|
|
45
|
+
export { Queries, queriesLayer } from './runtime/queries.js';
|
|
46
|
+
export { CurrentTracker, readTracked } from './internal/track.js';
|
|
47
|
+
export { CaptureSink } from './internal/capture.js';
|
|
48
|
+
// Notification scheduler: hosts that need per-runtime isolation (concurrent SSR,
|
|
49
|
+
// multiple mounted roots) provide `Notifications` upstream of their state layers;
|
|
50
|
+
// everything else coalesces on the process-wide default.
|
|
51
|
+
export { defaultScheduler, makeScheduler, Notifications, notificationsLayer, resolveScheduler, } from './internal/scheduler.js';
|
|
52
|
+
export { makeStore } from './internal/store.js';
|
|
53
|
+
// Primitive-authoring toolkit — for first-party companion packages
|
|
54
|
+
// (e.g. `@playfast/reform-db`, `@playfast/reform-resource`) that build their own
|
|
55
|
+
// first-class `Source`s which must participate in dependency tracking and
|
|
56
|
+
// reflection exactly like a `Calc`.
|
|
57
|
+
export { yieldableClass } from './definition/definition.js';
|
|
58
|
+
export { microtask, operationId } from './internal/platform.js';
|
|
59
|
+
//# sourceMappingURL=internal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Schema } from 'effect';
|
|
2
|
+
import * as AsyncCalc from '../calc/asyncCalc.js';
|
|
3
|
+
import * as Calc from '../calc/calc.js';
|
|
4
|
+
import * as CalcFamily from '../calc/calcFamily.js';
|
|
5
|
+
import * as Channel from '../channel/channel.js';
|
|
6
|
+
import * as Event from '../event/event.js';
|
|
7
|
+
import type { GatedOf } from '../internal/queryDriver.js';
|
|
8
|
+
import * as RemoteState from '../remote/remoteState.js';
|
|
9
|
+
import * as State from '../state/state.js';
|
|
10
|
+
import * as StateFamily from '../state/stateFamily.js';
|
|
11
|
+
import type { AnySource } from '../state/token.js';
|
|
12
|
+
export interface FeatureNamespace<Prefix extends string> {
|
|
13
|
+
readonly prefix: Prefix;
|
|
14
|
+
readonly Event: <const N extends string, P, Encoded>(name: N, schema: Schema.Schema<P, Encoded, never>) => Event.EventClass<`${Prefix}.${N}`, P>;
|
|
15
|
+
readonly Channel: (name: string, config: Channel.ChannelConfig) => Channel.ChannelClass;
|
|
16
|
+
readonly State: <const N extends string, StateSchema extends Schema.Schema.AnyNoContext>(name: N, schema: StateSchema, options?: State.StateOptions) => State.StateDefinition<`${Prefix}.${N}`, Schema.Schema.Type<StateSchema>, StateSchema>;
|
|
17
|
+
readonly StateFamily: <const N extends string, K, KeyEncoded, V, ValueEncoded>(name: N, key: Schema.Schema<K, KeyEncoded, never>, valueSchema: Schema.Schema<V, ValueEncoded, never>, options?: StateFamily.StateFamilyMakeOptionsExternalApi) => StateFamily.StateFamilyClass<`${Prefix}.${N}`, K, V>;
|
|
18
|
+
readonly Calc: <const N extends string, const Inputs extends ReadonlyArray<AnySource>, OutputSchema extends Schema.Schema.AnyNoContext>(name: N, config: Calc.CalcConfig<Inputs, OutputSchema>) => Calc.CalcClass<`${Prefix}.${N}`, Inputs, Schema.Schema.Type<OutputSchema>>;
|
|
19
|
+
readonly CalcFamily: <const N extends string, const Inputs extends ReadonlyArray<AnySource>, KeySchema extends Schema.Schema.AnyNoContext, OutputSchema extends Schema.Schema.AnyNoContext>(name: N, config: CalcFamily.CalcFamilyConfig<Inputs, KeySchema, OutputSchema>) => CalcFamily.CalcFamilyClass<`${Prefix}.${N}`, Inputs, Schema.Schema.Type<KeySchema>, Schema.Schema.Type<OutputSchema>>;
|
|
20
|
+
readonly AsyncCalc: <const N extends string, const Inputs extends ReadonlyArray<AnySource>, OutputSchema extends Schema.Schema.AnyNoContext, ErrorSchema extends Schema.Schema.AnyNoContext | undefined = undefined, const AlwaysOn extends boolean = false>(name: N, config: AsyncCalc.AsyncCalcConfig<Inputs, OutputSchema, ErrorSchema, AlwaysOn>) => AsyncCalc.AsyncCalcClass<`${Prefix}.${N}`, Inputs, Schema.Schema.Type<OutputSchema>, ErrorSchema extends Schema.Schema.AnyNoContext ? Schema.Schema.Type<ErrorSchema> : never, GatedOf<AlwaysOn>>;
|
|
21
|
+
readonly RemoteState: <const N extends string, const Inputs extends ReadonlyArray<AnySource>, const Intents extends ReadonlyArray<Event.AnyEvent>, OutputSchema extends Schema.Schema.AnyNoContext, ErrorSchema extends Schema.Schema.AnyNoContext | undefined = undefined, const AlwaysOn extends boolean = false>(name: N, config: RemoteState.RemoteStateConfigExternalApi<Inputs, Intents, OutputSchema, ErrorSchema, AlwaysOn>) => RemoteState.RemoteStateClass<`${Prefix}.${N}`, Inputs, Intents, Schema.Schema.Type<OutputSchema>, ErrorSchema extends Schema.Schema.AnyNoContext ? Schema.Schema.Type<ErrorSchema> : never, GatedOf<AlwaysOn>>;
|
|
22
|
+
}
|
|
23
|
+
export declare const make: <const Prefix extends string>(prefix: Prefix) => FeatureNamespace<Prefix>;
|
|
24
|
+
//# sourceMappingURL=namespace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/namespace/namespace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as AsyncCalc from '../calc/asyncCalc.js';
|
|
2
|
+
import * as Calc from '../calc/calc.js';
|
|
3
|
+
import * as CalcFamily from '../calc/calcFamily.js';
|
|
4
|
+
import * as Channel from '../channel/channel.js';
|
|
5
|
+
import * as Event from '../event/event.js';
|
|
6
|
+
import * as RemoteState from '../remote/remoteState.js';
|
|
7
|
+
import * as State from '../state/state.js';
|
|
8
|
+
import * as StateFamily from '../state/stateFamily.js';
|
|
9
|
+
export const make = (prefix) => ({
|
|
10
|
+
prefix,
|
|
11
|
+
Event: (name, schema) => Event.make(`${prefix}.${name}`, schema),
|
|
12
|
+
Channel: (name, config) => Channel.make(`${prefix}.${name}`, config),
|
|
13
|
+
State: (name, schema, options) => State.make(`${prefix}.${name}`, schema, options),
|
|
14
|
+
StateFamily: (name, key, valueSchema, options) => StateFamily.make(`${prefix}.${name}`, key, valueSchema, options),
|
|
15
|
+
Calc: (name, config) => Calc.make(`${prefix}.${name}`, config),
|
|
16
|
+
CalcFamily: (name, config) => CalcFamily.make(`${prefix}.${name}`, config),
|
|
17
|
+
AsyncCalc: (name, config) => AsyncCalc.make(`${prefix}.${name}`, config),
|
|
18
|
+
RemoteState: (name, config) => RemoteState.make(`${prefix}.${name}`, config),
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=namespace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/namespace/namespace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,IAAI,MAAM,cAAc,CAAA;AACpC,OAAO,KAAK,UAAU,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAEvC,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,WAAW,MAAM,sBAAsB,CAAA;AAqFnD,MAAM,CAAC,MAAM,IAAI,GAAG,CAA8B,MAAc,EAA4B,EAAE,CAAC,CAAC;IAC9F,MAAM;IACN,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC;IAChE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC;IACpE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC;IAClF,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,CAC/C,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC;IAClE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC;IAC9D,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC;IAC1E,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC;IACxE,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC;CAC7E,CAAC,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Effect, Layer } from 'effect';
|
|
2
|
+
import type { YieldWrap } from 'effect/Utils';
|
|
3
|
+
import { type ChannelClass, Procedures } from '../channel/channel.js';
|
|
4
|
+
import { type Manifest } from '../definition/definition.js';
|
|
5
|
+
import { type AnyEvent, type EventType } from '../event/event.js';
|
|
6
|
+
import { Bus } from '../runtime/bus.js';
|
|
7
|
+
import type { AnyValue } from '../internal/variance.js';
|
|
8
|
+
export interface ProcedureManifest extends Manifest {
|
|
9
|
+
readonly kind: 'Procedure';
|
|
10
|
+
}
|
|
11
|
+
export interface ProcedureReflection<out Events extends ReadonlyArray<AnyEvent> = ReadonlyArray<AnyEvent>> {
|
|
12
|
+
new (): {};
|
|
13
|
+
readonly manifest: ProcedureManifest;
|
|
14
|
+
readonly events: Events;
|
|
15
|
+
readonly channel: ChannelClass;
|
|
16
|
+
}
|
|
17
|
+
export type ProcedureCapture<Result> = <Events extends ReadonlyArray<AnyEvent>>(procedure: ProcedureClass<Events>) => Result;
|
|
18
|
+
export interface AnyProcedure extends ProcedureReflection {
|
|
19
|
+
readonly capture: <Result>(visit: ProcedureCapture<Result>) => Result;
|
|
20
|
+
}
|
|
21
|
+
export interface ProcedureClass<Events extends ReadonlyArray<AnyEvent>> extends ProcedureReflection<Events> {
|
|
22
|
+
readonly capture: <Result>(visit: ProcedureCapture<Result>) => Result;
|
|
23
|
+
}
|
|
24
|
+
export interface ProcedureConfig<Events extends ReadonlyArray<AnyEvent>> {
|
|
25
|
+
readonly events: Events;
|
|
26
|
+
readonly channel: ChannelClass;
|
|
27
|
+
}
|
|
28
|
+
export declare const make: <const Events extends ReadonlyArray<AnyEvent>>(name: string, config: ProcedureConfig<Events>) => ProcedureClass<Events>;
|
|
29
|
+
type GeneratorContext<Eff> = [Eff] extends [never] ? never : [Eff] extends [YieldWrap<Effect.Effect<AnyValue, AnyValue, infer Context>>] ? Context : never;
|
|
30
|
+
export declare const live: <Events extends ReadonlyArray<AnyEvent>, Eff extends YieldWrap<Effect.Effect<AnyValue, AnyValue, AnyValue>>, Done>(procedure: ProcedureClass<Events>, body: (event: EventType<Events[number]>) => Generator<Eff, Done, never>) => Layer.Layer<never, never, Procedures | Bus | GeneratorContext<Eff>>;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=procedure.d.ts.map
|