@playfast/reform 1.2.0 → 1.3.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/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 +21 -0
- package/dist/calc/asyncCalc.d.ts.map +1 -0
- package/dist/calc/asyncCalc.js +90 -0
- package/dist/calc/asyncCalc.js.map +1 -0
- package/dist/calc/asyncCalcTypes.d.ts +78 -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 +113 -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 +12 -0
- package/dist/calc/queryState.d.ts.map +1 -0
- package/dist/calc/queryState.js +17 -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 +86 -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 +56 -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 +92 -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 +47 -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 +67 -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/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/queryDriver.d.ts +7 -0
- package/dist/internal/queryDriver.d.ts.map +1 -0
- package/dist/internal/queryDriver.js +198 -0
- package/dist/internal/queryDriver.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 +19 -0
- package/dist/internal/queryDriverHydrate.js.map +1 -0
- package/dist/internal/queryDriverStore.d.ts +54 -0
- package/dist/internal/queryDriverStore.d.ts.map +1 -0
- package/dist/internal/queryDriverStore.js +77 -0
- package/dist/internal/queryDriverStore.js.map +1 -0
- package/dist/internal/queryDriverTypes.d.ts +41 -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 +13 -0
- package/dist/internal/scheduler.d.ts.map +1 -0
- package/dist/internal/scheduler.js +38 -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 +42 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +58 -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 +20 -0
- package/dist/remote/pendingQueue.d.ts.map +1 -0
- package/dist/remote/pendingQueue.js +113 -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 +176 -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 +41 -0
- package/dist/remote/remoteStateSend.d.ts.map +1 -0
- package/dist/remote/remoteStateSend.js +67 -0
- package/dist/remote/remoteStateSend.js.map +1 -0
- package/dist/remote/remoteStateTypes.d.ts +103 -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 +17 -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 +151 -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 +67 -0
- package/dist/runtime/eventBudget.js.map +1 -0
- package/dist/runtime/featureMount.d.ts +16 -0
- package/dist/runtime/featureMount.d.ts.map +1 -0
- package/dist/runtime/featureMount.js +54 -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 +32 -0
- package/dist/runtime/loop.d.ts.map +1 -0
- package/dist/runtime/loop.js +128 -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 +91 -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 +45 -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 +59 -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/boundary/boundary.test.ts +26 -23
- package/src/calc/asyncCalc.invalidate.test.ts +258 -55
- package/src/calc/asyncCalc.test.ts +225 -85
- package/src/calc/asyncCalc.ts +27 -141
- package/src/calc/asyncCalcTypes.test.ts +64 -0
- package/src/calc/asyncCalcTypes.ts +139 -0
- package/src/calc/calc.test.ts +10 -11
- package/src/calc/calcFamily.test.ts +12 -12
- package/src/channel/channel.ts +8 -106
- package/src/channel/procedures.ts +108 -0
- package/src/compose/composition.ts +49 -246
- package/src/compose/compositionTypes.ts +249 -0
- package/src/event/event.fromSource.test.ts +12 -12
- package/src/feature/feature.ts +50 -1210
- package/src/feature/feature.typecheck.ts +2 -61
- package/src/feature/featureBinding.ts +158 -0
- package/src/feature/featureClass.ts +162 -0
- package/src/feature/featureConfig.ts +192 -0
- package/src/feature/featureFactory.ts +163 -0
- package/src/feature/featureModule.ts +136 -0
- package/src/feature/featureModule.typecheck.ts +63 -0
- package/src/feature/featureNativeTree.ts +152 -0
- package/src/feature/featureRequirement.ts +82 -0
- package/src/feature/featureVariants.ts +234 -0
- package/src/feature/mountFeature.ts +54 -0
- package/src/graph/closure.ts +45 -226
- package/src/graph/services.ts +95 -0
- package/src/graph/summary.ts +134 -0
- package/src/internal/queryDriver.ts +20 -89
- package/src/internal/queryDriverHydrate.ts +45 -0
- package/src/internal/queryDriverTypes.ts +8 -10
- package/src/internal/store.test.ts +27 -6
- package/src/remote/pendingQueue.ts +145 -0
- package/src/remote/remoteState.test.ts +28 -22
- package/src/remote/remoteState.ts +63 -489
- package/src/remote/remoteStateMake.ts +97 -0
- package/src/remote/remoteStateSend.ts +122 -0
- package/src/remote/remoteStateTypes.ts +155 -0
- package/src/runtime/appRuntime.activation.test.ts +9 -5
- package/src/runtime/appRuntime.test.ts +40 -16
- package/src/runtime/appRuntime.ts +17 -472
- package/src/runtime/capturedAppRuntime.ts +274 -0
- package/src/runtime/eventBudget.test.ts +38 -8
- package/src/runtime/featureMount.ts +94 -0
- package/src/runtime/hardening.test.ts +18 -4
- package/src/runtime/instrumentation.test.ts +49 -12
- package/src/runtime/loop.test.ts +51 -10
- package/src/runtime/runtimeHandle.ts +124 -0
- package/src/state/stateFamily.test.ts +25 -8
- package/src/testkit/flight.testkit.ts +9 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAY,KAAK,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC3F,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,KAAK,QAAQ,EAAkB,MAAM,0BAA0B,CAAA;AAKxE,OAAO,EAAa,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAGzD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AACD,MAAM,MAAM,YAAY,GAAG,uBAAuB,CAAA;AAGlD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAA;CAC9D;AAED,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,QAAQ;IAC1E,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AACD,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI,wBAAwB,CAAC,CAAC,CAAC,CAAA;AAEzE,eAAO,MAAM,gBAAgB,EAAE,OAAO,MAAwC,CAAA;AAC9E,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAA;AAEtD,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IACtE,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;CAC/B;AAED,MAAM,MAAM,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAA;AAE3F,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,CAAA;IACV,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACxC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,MAAM,CAAA;CAClE;AAED,UAAU,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAEnC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,MAAM,CAAA;IACjE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACvD,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAC3F,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAAA;IACjD,QAAQ,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;CACnE;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,CAC7C,SAAQ,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,QAAQ,EAAE,CAAA;CACX;AAED,MAAM,MAAM,eAAe,CACzB,CAAC,SAAS,MAAM,EAChB,CAAC,EACD,WAAW,SAAS,MAAM,CAAC,MAAM,CAAC,YAAY,IAC5C,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IACrB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;KAAE,CAAA;CACvE,CAAA;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAC/E,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE9E,eAAO,MAAM,IAAI,GAAI,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,SAAS,MAAM,CAAC,MAAM,CAAC,YAAY,EACzF,MAAM,CAAC,EACP,QAAQ,WAAW,EACnB,UAAS,YAAiB,KACzB,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,WAAW,CA8BjE,CAAA;AAcD,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,EACtC,OAAO,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EACvB,SAAS,CAAC,KACT,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAQ5B,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Context, Effect, FiberRef, Layer, Option, Schema } from 'effect';
|
|
2
|
+
import { yieldableClass } from '../definition/definition.js';
|
|
3
|
+
import { resolveScheduler } from '../internal/scheduler.js';
|
|
4
|
+
import { CurrentSeedOverrides } from '../internal/seeds.js';
|
|
5
|
+
import { resolveInstrumentation, stateUpdateHook } from '../runtime/instrumentation.js';
|
|
6
|
+
import { claimStateTag } from '../internal/stateRegistry.js';
|
|
7
|
+
import { makeStore } from '../internal/store.js';
|
|
8
|
+
import { readTracked } from '../internal/track.js';
|
|
9
|
+
export const StateStoreTypeId = Symbol.for('reform/StateStore');
|
|
10
|
+
export const make = (name, schema, options = {}) => {
|
|
11
|
+
const identifier = `reform/state/${name}`;
|
|
12
|
+
claimStateTag(identifier);
|
|
13
|
+
const store = Context.GenericTag(identifier);
|
|
14
|
+
const manifest = {
|
|
15
|
+
kind: 'State',
|
|
16
|
+
name,
|
|
17
|
+
schema,
|
|
18
|
+
...(options.title !== undefined ? { title: options.title } : {}),
|
|
19
|
+
...(options.description !== undefined ? { description: options.description } : {}),
|
|
20
|
+
};
|
|
21
|
+
const read = Effect.flatMap(store, readTracked);
|
|
22
|
+
const state = yieldableClass(read, {
|
|
23
|
+
manifest,
|
|
24
|
+
name,
|
|
25
|
+
store,
|
|
26
|
+
decodeUnknown: Schema.decodeUnknown(schema),
|
|
27
|
+
decodeUnknownSync: Schema.decodeUnknownSync(schema),
|
|
28
|
+
decodeUnknownOption: Schema.decodeUnknownOption(schema),
|
|
29
|
+
capture: (visit) => visit(state),
|
|
30
|
+
});
|
|
31
|
+
return state;
|
|
32
|
+
};
|
|
33
|
+
const resolveSeed = (state, initial) => Effect.map(FiberRef.get(CurrentSeedOverrides), (overrides) => {
|
|
34
|
+
if (!(state.manifest.name in overrides)) {
|
|
35
|
+
return initial;
|
|
36
|
+
}
|
|
37
|
+
const override = state.decodeUnknownOption(overrides[state.manifest.name]);
|
|
38
|
+
return Option.getOrElse(override, () => initial);
|
|
39
|
+
});
|
|
40
|
+
export const live = (state, initial) => Layer.effect(state.store, Effect.all([resolveScheduler, resolveSeed(state, initial), resolveInstrumentation]).pipe(Effect.map(([scheduler, seed, instrumentation]) => makeStore(seed, scheduler, stateUpdateHook(instrumentation, state.manifest.name)))));
|
|
41
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/state/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Context, Effect, Layer, Schema } from 'effect';
|
|
2
|
+
import { type Manifest } from '../definition/definition.js';
|
|
3
|
+
import { type Store } from '../internal/store.js';
|
|
4
|
+
export declare const Tombstone: unique symbol;
|
|
5
|
+
export type Tombstone = typeof Tombstone;
|
|
6
|
+
export interface FamilyStore<K, V> {
|
|
7
|
+
at(key: K): Store<V>;
|
|
8
|
+
forget(key: K): void;
|
|
9
|
+
clear(): void;
|
|
10
|
+
size(): number;
|
|
11
|
+
}
|
|
12
|
+
export interface FamilyOptionsExternalApi {
|
|
13
|
+
readonly evictWhenUnused?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export type FamilyOptions = FamilyOptionsExternalApi;
|
|
16
|
+
export interface FamilySchemaReflection {
|
|
17
|
+
readonly ast: Schema.Schema<unknown, unknown, unknown>['ast'];
|
|
18
|
+
}
|
|
19
|
+
export interface StateFamilyManifestExternalApi<N extends string> extends Manifest {
|
|
20
|
+
readonly kind: 'StateFamily';
|
|
21
|
+
readonly name: N;
|
|
22
|
+
readonly key: FamilySchemaReflection;
|
|
23
|
+
readonly value: FamilySchemaReflection;
|
|
24
|
+
readonly title?: string;
|
|
25
|
+
readonly description?: string;
|
|
26
|
+
}
|
|
27
|
+
export type StateFamilyManifest<N extends string> = StateFamilyManifestExternalApi<N>;
|
|
28
|
+
export declare const StateFamilyStoreTypeId: unique symbol;
|
|
29
|
+
export type StateFamilyStoreTypeId = typeof StateFamilyStoreTypeId;
|
|
30
|
+
export interface StateFamilyStore<N extends string, in out K, in out V> extends FamilyStore<K, V> {
|
|
31
|
+
readonly [StateFamilyStoreTypeId]: N;
|
|
32
|
+
}
|
|
33
|
+
export type StateFamilyCapture<Result> = <N extends string, K, V>(family: StateFamilyClass<N, K, V>) => Result;
|
|
34
|
+
export interface AnyFamily {
|
|
35
|
+
new (): {};
|
|
36
|
+
readonly manifest: StateFamilyManifest<string>;
|
|
37
|
+
readonly capture: <Result>(visit: StateFamilyCapture<Result>) => Result;
|
|
38
|
+
}
|
|
39
|
+
export interface StateFamilyClass<N extends string, K, V> {
|
|
40
|
+
new (): {
|
|
41
|
+
readonly Key: K;
|
|
42
|
+
};
|
|
43
|
+
readonly manifest: StateFamilyManifest<N>;
|
|
44
|
+
readonly capture: <Result>(visit: StateFamilyCapture<Result>) => Result;
|
|
45
|
+
readonly store: Context.Tag<StateFamilyStore<N, K, V>, FamilyStore<K, V>>;
|
|
46
|
+
readonly decodeKeySync: (input: unknown) => K;
|
|
47
|
+
readonly decodeValueSync: (input: unknown) => V;
|
|
48
|
+
}
|
|
49
|
+
export type FamilyName<F> = F extends StateFamilyClass<infer N, infer _K, infer _V> ? N : never;
|
|
50
|
+
export type FamilyKey<F> = F extends StateFamilyClass<infer _N, infer K, infer _V> ? K : never;
|
|
51
|
+
export type FamilyValue<F> = F extends StateFamilyClass<infer _N, infer _K, infer V> ? V : never;
|
|
52
|
+
export interface StateFamilyMakeOptionsExternalApi {
|
|
53
|
+
readonly title?: string;
|
|
54
|
+
readonly description?: string;
|
|
55
|
+
}
|
|
56
|
+
export declare const make: <const N extends string, K, KeyEncoded, V, ValueEncoded>(name: N, key: Schema.Schema<K, KeyEncoded, never>, valueSchema: Schema.Schema<V, ValueEncoded, never>, options?: StateFamilyMakeOptionsExternalApi) => StateFamilyClass<N, K, V>;
|
|
57
|
+
export declare const read: <N extends string, K, V>(family: StateFamilyClass<N, K, V>, key: K) => Effect.Effect<V, never, StateFamilyStore<N, K, V>>;
|
|
58
|
+
export declare const live: <N extends string, K, V>(family: StateFamilyClass<N, K, V>, initial: V | ((key: K) => V), options?: FamilyOptions) => Layer.Layer<StateFamilyStore<N, K, V>>;
|
|
59
|
+
//# sourceMappingURL=stateFamily.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stateFamily.d.ts","sourceRoot":"","sources":["../../src/state/stateFamily.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Context, Effect, Layer, Option, Schema } from 'effect';
|
|
2
|
+
import { definitionClass } from '../definition/definition.js';
|
|
3
|
+
import { resolveScheduler } from '../internal/scheduler.js';
|
|
4
|
+
import { claimStateTag } from '../internal/stateRegistry.js';
|
|
5
|
+
import { resolveInstrumentation, stateUpdateHook } from '../runtime/instrumentation.js';
|
|
6
|
+
import { makeStore } from '../internal/store.js';
|
|
7
|
+
import { readTracked } from '../internal/track.js';
|
|
8
|
+
export const Tombstone = Symbol.for('reform/StateFamily/Tombstone');
|
|
9
|
+
const makeFamilyStore = (seed, scheduler, options = {}, onChange = () => { }) => {
|
|
10
|
+
const entries = new Map();
|
|
11
|
+
const evictWhenUnused = options.evictWhenUnused === true;
|
|
12
|
+
const subscribers = new Map();
|
|
13
|
+
const liveSubscriberCount = (key) => Option.getOrElse(Option.fromNullable(subscribers.get(key)), () => 0);
|
|
14
|
+
const refCounted = (key, store) => ({
|
|
15
|
+
...store,
|
|
16
|
+
subscribe: (listener) => {
|
|
17
|
+
subscribers.set(key, liveSubscriberCount(key) + 1);
|
|
18
|
+
const off = store.subscribe(listener);
|
|
19
|
+
const released = { done: false };
|
|
20
|
+
return () => {
|
|
21
|
+
if (released.done) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
released.done = true;
|
|
25
|
+
off();
|
|
26
|
+
const remaining = (subscribers.get(key) ?? 1) - 1;
|
|
27
|
+
if (remaining > 0) {
|
|
28
|
+
subscribers.set(key, remaining);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
subscribers.delete(key);
|
|
32
|
+
queueMicrotask(() => {
|
|
33
|
+
if (liveSubscriberCount(key) === 0) {
|
|
34
|
+
entries.delete(key);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
return {
|
|
41
|
+
at: (key) => {
|
|
42
|
+
const existing = entries.get(key);
|
|
43
|
+
if (existing !== undefined) {
|
|
44
|
+
return existing;
|
|
45
|
+
}
|
|
46
|
+
const base = makeStore(seed(key), scheduler, onChange);
|
|
47
|
+
const created = evictWhenUnused ? refCounted(key, base) : base;
|
|
48
|
+
entries.set(key, created);
|
|
49
|
+
return created;
|
|
50
|
+
},
|
|
51
|
+
forget: (key) => {
|
|
52
|
+
entries.delete(key);
|
|
53
|
+
subscribers.delete(key);
|
|
54
|
+
},
|
|
55
|
+
clear: () => {
|
|
56
|
+
entries.clear();
|
|
57
|
+
subscribers.clear();
|
|
58
|
+
},
|
|
59
|
+
size: () => entries.size,
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
export const StateFamilyStoreTypeId = Symbol.for('reform/StateFamilyStore');
|
|
63
|
+
export const make = (name, key, valueSchema, options = {}) => {
|
|
64
|
+
const identifier = `reform/family/${name}`;
|
|
65
|
+
claimStateTag(identifier);
|
|
66
|
+
const store = Context.GenericTag(identifier);
|
|
67
|
+
const manifest = {
|
|
68
|
+
kind: 'StateFamily',
|
|
69
|
+
name,
|
|
70
|
+
key,
|
|
71
|
+
value: valueSchema,
|
|
72
|
+
...(options.title !== undefined ? { title: options.title } : {}),
|
|
73
|
+
...(options.description !== undefined ? { description: options.description } : {}),
|
|
74
|
+
};
|
|
75
|
+
const family = definitionClass({
|
|
76
|
+
manifest,
|
|
77
|
+
store,
|
|
78
|
+
decodeKeySync: Schema.decodeUnknownSync(key),
|
|
79
|
+
decodeValueSync: Schema.decodeUnknownSync(valueSchema),
|
|
80
|
+
capture: (visit) => visit(family),
|
|
81
|
+
});
|
|
82
|
+
return family;
|
|
83
|
+
};
|
|
84
|
+
export const read = (family, key) => Effect.flatMap(family.store, (familyStore) => readTracked(familyStore.at(key)));
|
|
85
|
+
export const live = (family, initial, options = {}) => {
|
|
86
|
+
const seed = (key) => typeof initial === 'function'
|
|
87
|
+
? family.decodeValueSync(Reflect.apply(initial, undefined, [key]))
|
|
88
|
+
: initial;
|
|
89
|
+
return Layer.effect(family.store, Effect.zipWith(resolveScheduler, resolveInstrumentation, (scheduler, instrumentation) => makeFamilyStore(seed, scheduler, options, stateUpdateHook(instrumentation, family.manifest.name))));
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=stateFamily.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stateFamily.js","sourceRoot":"","sources":["../../src/state/stateFamily.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/D,OAAO,EAAiB,eAAe,EAAE,MAAM,0BAA0B,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAkB,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACpF,OAAO,EAAE,SAAS,EAAc,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,MAAM,CAAC,MAAM,SAAS,GAAkB,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;AAelF,MAAM,eAAe,GAAG,CACtB,IAAmB,EACnB,SAAoB,EACpB,UAAyB,EAAE,EAC3B,WAAuB,GAAG,EAAE,GAAE,CAAC,EACZ,EAAE;IACrB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAe,CAAA;IACtC,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,KAAK,IAAI,CAAA;IACxD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAa,CAAA;IACxC,MAAM,mBAAmB,GAAG,CAAC,GAAM,EAAU,EAAE,CAC7C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IAEtE,MAAM,UAAU,GAAG,CAAC,GAAM,EAAE,KAAe,EAAY,EAAE,CAAC,CAAC;QACzD,GAAG,KAAK;QACR,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE;YACtB,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAClD,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;YACrC,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;YAChC,OAAO,GAAG,EAAE;gBACV,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAClB,OAAM;gBACR,CAAC;gBACD,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAA;gBACpB,GAAG,EAAE,CAAA;gBACL,MAAM,SAAS,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;gBACjD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;oBAClB,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;oBAC/B,OAAM;gBACR,CAAC;gBACD,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBACvB,cAAc,CAAC,GAAG,EAAE;oBAClB,IAAI,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBACnC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBACrB,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAA;QACH,CAAC;KACF,CAAC,CAAA;IAEF,OAAO;QACL,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YACV,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,QAAQ,CAAA;YACjB,CAAC;YACD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;YACtD,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YACzB,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;YACd,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACnB,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,OAAO,CAAC,KAAK,EAAE,CAAA;YACf,WAAW,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;QACD,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI;KACzB,CAAA;AACH,CAAC,CAAA;AAiBD,MAAM,CAAC,MAAM,sBAAsB,GAAkB,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;AAmC1F,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,IAAO,EACP,GAAwC,EACxC,WAAkD,EAClD,UAA6C,EAAE,EACpB,EAAE;IAC7B,MAAM,UAAU,GAAG,iBAAiB,IAAI,EAAE,CAAA;IAC1C,aAAa,CAAC,UAAU,CAAC,CAAA;IACzB,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAA+C,UAAU,CAAC,CAAA;IAC1F,MAAM,QAAQ,GAA2B;QACvC,IAAI,EAAE,aAAa;QACnB,IAAI;QACJ,GAAG;QACH,KAAK,EAAE,WAAW;QAClB,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnF,CAAA;IACD,MAAM,MAAM,GAA8B,eAAe,CAA4B;QACnF,QAAQ;QACR,KAAK;QACL,aAAa,EAAE,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC;QAC5C,eAAe,EAAE,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC;QACtD,OAAO,EAAE,CAAS,KAAiC,EAAU,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;KAC9E,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,MAAiC,EACjC,GAAM,EAC8C,EAAE,CACtD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAEjF,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,MAAiC,EACjC,OAA4B,EAC5B,UAAyB,EAAE,EACa,EAAE;IAC1C,MAAM,IAAI,GAAG,CAAC,GAAM,EAAK,EAAE,CACzB,OAAO,OAAO,KAAK,UAAU;QAC3B,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,OAAO,CAAA;IACb,OAAO,KAAK,CAAC,MAAM,CACjB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,EAAE,CACtF,eAAe,CACb,IAAI,EACJ,SAAS,EACT,OAAO,EACP,eAAe,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CACvD,CACF,CACF,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Layer } from 'effect';
|
|
2
|
+
import { type StoresOf } from '../internal/sources.js';
|
|
3
|
+
import { type AnyState, type StateName, type StateValue } from './state.js';
|
|
4
|
+
import { StateToken } from './token.js';
|
|
5
|
+
type MemberForName<Members extends ReadonlyArray<AnyState>, N extends string> = Extract<Members[number], {
|
|
6
|
+
readonly manifest: {
|
|
7
|
+
readonly name: N;
|
|
8
|
+
};
|
|
9
|
+
}>;
|
|
10
|
+
type ValueForName<Members extends ReadonlyArray<AnyState>, N extends string> = StateValue<MemberForName<Members, N>>;
|
|
11
|
+
export interface StateGroupClass<Members extends ReadonlyArray<AnyState>> {
|
|
12
|
+
new (): {};
|
|
13
|
+
readonly kind: 'StateGroup';
|
|
14
|
+
readonly members: Members;
|
|
15
|
+
readonly byName: ReadonlyMap<string, AnyState>;
|
|
16
|
+
}
|
|
17
|
+
export type AnyStateGroup = StateGroupClass<ReadonlyArray<AnyState>>;
|
|
18
|
+
type DuplicateStateName<N extends string> = readonly ['reform: duplicate state name in group', N];
|
|
19
|
+
type NoDuplicateNames<Members extends ReadonlyArray<AnyState>, Seen extends string = never> = Members extends readonly [
|
|
20
|
+
infer Head extends AnyState,
|
|
21
|
+
...infer Tail extends ReadonlyArray<AnyState>
|
|
22
|
+
] ? readonly [
|
|
23
|
+
StateName<Head> extends Seen ? DuplicateStateName<StateName<Head>> : Head,
|
|
24
|
+
...NoDuplicateNames<Tail, Seen | StateName<Head>>
|
|
25
|
+
] : readonly [];
|
|
26
|
+
export type GroupSeeds<G extends AnyStateGroup> = G extends StateGroupClass<infer Members> ? {
|
|
27
|
+
readonly [N in StateName<Members[number]>]: ValueForName<Members, N>;
|
|
28
|
+
} : never;
|
|
29
|
+
type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
30
|
+
type EntrySeeds<G> = G extends AnyStateGroup ? GroupSeeds<G> : never;
|
|
31
|
+
export type SeedsOf<St extends ReadonlyArray<unknown>> = Partial<UnionToIntersection<EntrySeeds<St[number]>>>;
|
|
32
|
+
export declare const make: <const Members extends ReadonlyArray<AnyState>>(...members: Members & NoDuplicateNames<Members>) => StateGroupClass<Members>;
|
|
33
|
+
export declare const select: <Members extends ReadonlyArray<AnyState>, N extends StateName<Members[number]>>(group: StateGroupClass<Members>, name: N) => StateToken<N, ValueForName<Members, N>>;
|
|
34
|
+
export declare function live<Members extends ReadonlyArray<AnyState>>(group: StateGroupClass<Members>, seeds: GroupSeeds<StateGroupClass<Members>>): Layer.Layer<StoresOf<Members>>;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=stateGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stateGroup.d.ts","sourceRoot":"","sources":["../../src/state/stateGroup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Array as Arr, Context, Effect, Layer, Option } from 'effect';
|
|
2
|
+
import { definitionClass } from '../definition/definition.js';
|
|
3
|
+
import { DuplicateRegistration, UnknownGroupState } from '../internal/errors.js';
|
|
4
|
+
import {} from '../internal/sources.js';
|
|
5
|
+
import { live as stateLive, } from './state.js';
|
|
6
|
+
import { StateToken } from './token.js';
|
|
7
|
+
export const make = (...members) => {
|
|
8
|
+
const names = members.map((member) => member.manifest.name);
|
|
9
|
+
const duplicate = Arr.findFirst(names, (name, index) => Option.exists(Arr.findFirstIndex(names, (candidate) => candidate === name), (firstIndex) => firstIndex !== index));
|
|
10
|
+
if (Option.isSome(duplicate)) {
|
|
11
|
+
// oxlint-disable-next-line reform-rules/no-throw -- definition-time invariant; sync factory has no Effect context (see internal/errors.ts)
|
|
12
|
+
throw new DuplicateRegistration({ kind: 'state in group', name: duplicate.value });
|
|
13
|
+
}
|
|
14
|
+
return definitionClass({
|
|
15
|
+
kind: 'StateGroup',
|
|
16
|
+
members,
|
|
17
|
+
byName: new Map(members.map((member) => [member.manifest.name, member])),
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
export const select = (group, name) => {
|
|
21
|
+
const member = group.byName.get(name);
|
|
22
|
+
if (member === undefined) {
|
|
23
|
+
// oxlint-disable-next-line reform-rules/no-throw -- definition-time invariant; sync lookup has no Effect context (see internal/errors.ts)
|
|
24
|
+
throw new UnknownGroupState({ name });
|
|
25
|
+
}
|
|
26
|
+
const store = Context.GenericTag(`reform/state/${name}`);
|
|
27
|
+
return new StateToken(name, store);
|
|
28
|
+
};
|
|
29
|
+
export function live(group, seeds) {
|
|
30
|
+
const layers = group.members.map((member) => member.capture((state) => Layer.unwrapEffect(state.decodeUnknown(seeds[state.manifest.name]).pipe(Effect.orDie, Effect.map((seed) => stateLive(state, seed))))));
|
|
31
|
+
return layers.reduce((merged, memberLayer) => Layer.merge(merged, memberLayer), Layer.empty);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=stateGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stateGroup.js","sourceRoot":"","sources":["../../src/state/stateGroup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Context, Effect, Effectable } from 'effect';
|
|
2
|
+
import type { Store } from '../internal/store.js';
|
|
3
|
+
import type { StateStore } from './state.js';
|
|
4
|
+
export declare class StateToken<N extends string, in out A, Identifier = StateStore<N, A>> extends Effectable.Class<A, never, Identifier> {
|
|
5
|
+
readonly name: N;
|
|
6
|
+
readonly store: Context.Tag<Identifier, Store<A>>;
|
|
7
|
+
constructor(name: N, store: Context.Tag<Identifier, Store<A>>);
|
|
8
|
+
commit(): Effect.Effect<A, never, Identifier>;
|
|
9
|
+
capture<Result>(visit: SourceCapture<Result>): Result;
|
|
10
|
+
}
|
|
11
|
+
export type SourceCapture<Result> = <N extends string, A, Identifier>(source: Source<N, A, Identifier>) => Result;
|
|
12
|
+
export interface AnySource {
|
|
13
|
+
readonly name: string;
|
|
14
|
+
readonly store: {
|
|
15
|
+
readonly key: string;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export interface Source<N extends string, A, Identifier> extends AnySource {
|
|
19
|
+
readonly name: N;
|
|
20
|
+
readonly store: Context.Tag<Identifier, Store<A>>;
|
|
21
|
+
}
|
|
22
|
+
export type SourceName<S> = S extends {
|
|
23
|
+
readonly manifest: {
|
|
24
|
+
readonly name: infer N extends string;
|
|
25
|
+
};
|
|
26
|
+
} ? N : S extends {
|
|
27
|
+
readonly name: infer N extends string;
|
|
28
|
+
} ? N : never;
|
|
29
|
+
export type SourceValue<S> = S extends {
|
|
30
|
+
readonly store: Context.Tag<infer _Identifier, Store<infer A>>;
|
|
31
|
+
} ? A : never;
|
|
32
|
+
export type SourceIdentifier<S> = S extends {
|
|
33
|
+
readonly store: Context.Tag<infer Identifier, infer _Service>;
|
|
34
|
+
} ? Identifier : never;
|
|
35
|
+
//# sourceMappingURL=token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/state/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,qBAAa,UAAU,CACrB,CAAC,SAAS,MAAM,EAChB,EAAE,CAAC,GAAG,CAAC,CAAC,EACR,UAAU,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAC7B,SAAQ,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;gBACrC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAK7D,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC;IAG7C,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM;CAGtD;AAED,MAAM,MAAM,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,UAAU,EAClE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,KAC7B,MAAM,CAAA;AAEX,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CACzC;AAED,MAAM,WAAW,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,UAAU,CAAE,SAAQ,SAAS;IACxE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;CAClD;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS;IACpC,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,MAAM,CAAA;KAAE,CAAA;CAC7D,GACG,CAAC,GACD,CAAC,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,MAAM,CAAA;CAAE,GACjD,CAAC,GACD,KAAK,CAAA;AACX,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS;IACrC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;CAC/D,GACG,CAAC,GACD,KAAK,CAAA;AACT,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS;IAC1C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,UAAU,EAAE,MAAM,QAAQ,CAAC,CAAA;CAC9D,GACG,UAAU,GACV,KAAK,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Context, Effect, Effectable } from 'effect';
|
|
2
|
+
import { readTracked } from '../internal/track.js';
|
|
3
|
+
export class StateToken extends Effectable.Class {
|
|
4
|
+
name;
|
|
5
|
+
store;
|
|
6
|
+
constructor(name, store) {
|
|
7
|
+
super();
|
|
8
|
+
this.name = name;
|
|
9
|
+
this.store = store;
|
|
10
|
+
}
|
|
11
|
+
commit() {
|
|
12
|
+
return Effect.flatMap(this.store, readTracked);
|
|
13
|
+
}
|
|
14
|
+
capture(visit) {
|
|
15
|
+
return visit(this);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/state/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAG/C,MAAM,OAAO,UAIX,SAAQ,UAAU,CAAC,KAA2B;IACrC,IAAI,CAAG;IACP,KAAK,CAAmC;IACjD,YAAY,IAAO,EAAE,KAAwC;QAC3D,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IACD,MAAM;QACJ,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,CAAS,KAA4B;QAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,CAAA;IACpB,CAAC;CACF"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Context, Effect, Layer, Option, type Schema, type Scope } from 'effect';
|
|
2
|
+
import type { Effect as EffectType } from 'effect/Effect';
|
|
3
|
+
import { type Manifest } from '../definition/definition.js';
|
|
4
|
+
import { type Store } from '../internal/store.js';
|
|
5
|
+
import type { AnySource, Source, SourceCapture } from '../state/token.js';
|
|
6
|
+
import type { StateOptions } from '../state/state.js';
|
|
7
|
+
export interface SyncedSource<A> {
|
|
8
|
+
readonly snapshot: () => A;
|
|
9
|
+
readonly subscribe: (onChange: () => void) => () => void;
|
|
10
|
+
}
|
|
11
|
+
export interface SyncedStoreSchemaReflection {
|
|
12
|
+
readonly ast: Schema.Schema<unknown, unknown, unknown>['ast'];
|
|
13
|
+
}
|
|
14
|
+
export interface SyncedStoreManifest<N extends string> extends Manifest {
|
|
15
|
+
readonly kind: 'SyncedStore';
|
|
16
|
+
readonly name: N;
|
|
17
|
+
readonly schema: SyncedStoreSchemaReflection;
|
|
18
|
+
readonly title: Option.Option<string>;
|
|
19
|
+
readonly description: Option.Option<string>;
|
|
20
|
+
}
|
|
21
|
+
export declare const SyncedStoreIdentifierTypeId: unique symbol;
|
|
22
|
+
export type SyncedStoreIdentifierTypeId = typeof SyncedStoreIdentifierTypeId;
|
|
23
|
+
export interface SyncedStoreIdentifier<N extends string, in out A> extends Store<A> {
|
|
24
|
+
readonly [SyncedStoreIdentifierTypeId]: N;
|
|
25
|
+
}
|
|
26
|
+
export interface SyncedStoreClass<N extends string, in out A> extends EffectType<A, never, SyncedStoreIdentifier<N, A>>, Source<N, A, SyncedStoreIdentifier<N, A>> {
|
|
27
|
+
new (): {};
|
|
28
|
+
readonly manifest: SyncedStoreManifest<N>;
|
|
29
|
+
readonly store: Context.Tag<SyncedStoreIdentifier<N, A>, Store<A>>;
|
|
30
|
+
readonly name: N;
|
|
31
|
+
readonly capture: <Result>(visit: SourceCapture<Result>) => Result;
|
|
32
|
+
}
|
|
33
|
+
export interface StoreCarrier<Identifier, A> {
|
|
34
|
+
readonly store: Context.Tag<Identifier, Store<A>>;
|
|
35
|
+
}
|
|
36
|
+
export type AnySyncedStore = AnySource & {
|
|
37
|
+
readonly manifest: Manifest & {
|
|
38
|
+
readonly kind: 'SyncedStore';
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export type SyncedValue<S> = S extends SyncedStoreClass<infer _N, infer A> ? A : never;
|
|
42
|
+
export declare const make: <const N extends string, ValueSchema extends Schema.Schema.AnyNoContext>(name: N, schema: ValueSchema, options?: StateOptions) => SyncedStoreClass<N, Schema.Schema.Type<ValueSchema>>;
|
|
43
|
+
export declare const live: <Identifier, A, R>(def: StoreCarrier<Identifier, A>, acquire: Effect.Effect<SyncedSource<A>, never, R>) => Layer.Layer<Identifier, never, Exclude<R, Scope.Scope>>;
|
|
44
|
+
//# sourceMappingURL=syncedStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncedStore.d.ts","sourceRoot":"","sources":["../../src/synced/syncedStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Context, Effect, Layer, Option } from 'effect';
|
|
2
|
+
import { yieldableClass } from '../definition/definition.js';
|
|
3
|
+
import { resolveScheduler } from '../internal/scheduler.js';
|
|
4
|
+
import { makeDerivedStore } from '../internal/store.js';
|
|
5
|
+
import { readTracked } from '../internal/track.js';
|
|
6
|
+
export const SyncedStoreIdentifierTypeId = Symbol.for('reform/SyncedStoreIdentifier');
|
|
7
|
+
export const make = (name, schema, options = {}) => {
|
|
8
|
+
const store = Context.GenericTag(`reform/syncedStore/${name}`);
|
|
9
|
+
const manifest = {
|
|
10
|
+
kind: 'SyncedStore',
|
|
11
|
+
name,
|
|
12
|
+
schema,
|
|
13
|
+
title: Option.fromNullable(options.title),
|
|
14
|
+
description: Option.fromNullable(options.description),
|
|
15
|
+
};
|
|
16
|
+
const read = Effect.flatMap(store, readTracked);
|
|
17
|
+
const synced = yieldableClass(read, {
|
|
18
|
+
manifest,
|
|
19
|
+
store,
|
|
20
|
+
name,
|
|
21
|
+
capture: (visit) => visit(synced),
|
|
22
|
+
});
|
|
23
|
+
return synced;
|
|
24
|
+
};
|
|
25
|
+
export const live = (def, acquire) => Layer.scoped(def.store, Effect.gen(function* () {
|
|
26
|
+
const scheduler = yield* resolveScheduler;
|
|
27
|
+
const source = yield* acquire;
|
|
28
|
+
const { store, unsubscribe } = makeDerivedStore(source.snapshot, source.subscribe, scheduler);
|
|
29
|
+
yield* Effect.addFinalizer(() => Effect.sync(unsubscribe));
|
|
30
|
+
return store;
|
|
31
|
+
}));
|
|
32
|
+
//# sourceMappingURL=syncedStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncedStore.js","sourceRoot":"","sources":["../../src/synced/syncedStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAA2B,MAAM,QAAQ,CAAA;AAEhF,OAAO,EAAiB,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAc,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAqB/C,MAAM,CAAC,MAAM,2BAA2B,GAAkB,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;AA2BpG,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,IAAO,EACP,MAAmB,EACnB,UAAwB,EAAE,EAC4B,EAAE;IAExD,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAC9B,sBAAsB,IAAI,EAAE,CAC7B,CAAA;IACD,MAAM,QAAQ,GAA2B;QACvC,IAAI,EAAE,aAAa;QACnB,IAAI;QACJ,MAAM;QACN,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC;QACzC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC;KACtD,CAAA;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;IAC/C,MAAM,MAAM,GAA2B,cAAc,CAAC,IAAI,EAAE;QAC1D,QAAQ;QACR,KAAK;QACL,IAAI;QACJ,OAAO,EAAE,CAAS,KAA4B,EAAU,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;KACzE,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,GAAgC,EAChC,OAAiD,EACQ,EAAE,CAC3D,KAAK,CAAC,MAAM,CACV,GAAG,CAAC,KAAK,EACT,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;IACzC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAA;IAC7B,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAC7F,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;IAC1D,OAAO,KAAK,CAAA;AACd,CAAC,CAAC,CACH,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
export declare const tick: (ms?: number) => Effect.Effect<void>;
|
|
3
|
+
export declare const flush: (turns?: number) => Effect.Effect<void>;
|
|
4
|
+
export declare const until: <A>(read: () => A, predicate: (value: A) => boolean, rounds?: number) => Effect.Effect<A>;
|
|
5
|
+
export interface FlightGate {
|
|
6
|
+
/** Wrap a query body: it records its entry, then parks while the gate holds. */
|
|
7
|
+
readonly through: <A, E, R>(body: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
8
|
+
/** Park every flight that reaches the gate from now on. */
|
|
9
|
+
readonly hold: Effect.Effect<void>;
|
|
10
|
+
/** Let the parked flights settle; later flights pass straight through. */
|
|
11
|
+
readonly release: Effect.Effect<void>;
|
|
12
|
+
/** Resolve once `count` flights have reached the gate. */
|
|
13
|
+
readonly awaitEntry: (count: number) => Effect.Effect<void>;
|
|
14
|
+
/** How many flights have reached the gate. */
|
|
15
|
+
readonly entered: () => number;
|
|
16
|
+
}
|
|
17
|
+
export declare const makeFlightGate: () => FlightGate;
|
|
18
|
+
//# sourceMappingURL=flight.testkit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flight.testkit.d.ts","sourceRoot":"","sources":["../../src/testkit/flight.testkit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,MAAM,EAAsB,MAAM,QAAQ,CAAA;AAUvE,eAAO,MAAM,IAAI,GAAI,WAAO,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAsC,CAAA;AAMvF,eAAO,MAAM,KAAK,GAAI,cAAS,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAGjD,CAAA;AAEH,eAAO,MAAM,KAAK,GAAI,CAAC,EACrB,MAAM,MAAM,CAAC,EACb,WAAW,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,EAChC,eAAY,KACX,MAAM,CAAC,MAAM,CAAC,CAAC,CAMd,CAAA;AAEJ,MAAM,WAAW,UAAU;IACzB,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACnF,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACrC,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC3D,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,CAAA;CAC/B;AAED,eAAO,MAAM,cAAc,QAAO,UAqCjC,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Deferred, Duration, Effect, MutableRef, Option } from 'effect';
|
|
2
|
+
// Coalescing/cancellation semantics are only meaningful while a query is still
|
|
3
|
+
// in flight. Tests used to build that overlap by racing wall-clock — a 25ms
|
|
4
|
+
// query delay against 5ms gaps between input writes — which silently stops
|
|
5
|
+
// overlapping on a loaded machine: the runs serialize, every key gets its own
|
|
6
|
+
// flight, and the assertion fails reporting a coalescing bug that isn't there.
|
|
7
|
+
// A gate makes the overlap explicit: hold the flight open, land the burst,
|
|
8
|
+
// release.
|
|
9
|
+
export const tick = (ms = 10) => Effect.sleep(Duration.millis(ms));
|
|
10
|
+
// The runtime notifies on the microtask queue (scheduler, stateFamily, calcFamily),
|
|
11
|
+
// so draining turns is exact where a duration is a guess: a microtask cannot be
|
|
12
|
+
// starved by host load the way a 10ms budget can. Use this to let the graph
|
|
13
|
+
// quiesce before asserting that something did NOT happen.
|
|
14
|
+
export const flush = (turns = 3) => Effect.promise(() => new Promise((resolve) => queueMicrotask(resolve))).pipe(Effect.repeatN(Math.max(turns - 1, 0)));
|
|
15
|
+
export const until = (read, predicate, rounds = 200) => Effect.suspend(() => {
|
|
16
|
+
const value = read();
|
|
17
|
+
return predicate(value) || rounds <= 0
|
|
18
|
+
? Effect.succeed(value)
|
|
19
|
+
: Effect.flatMap(tick(10), () => until(read, predicate, rounds - 1));
|
|
20
|
+
});
|
|
21
|
+
export const makeFlightGate = () => {
|
|
22
|
+
const latch = MutableRef.make(Option.none());
|
|
23
|
+
const entered = MutableRef.make(0);
|
|
24
|
+
return {
|
|
25
|
+
through: (body) => body.pipe(Effect.tap(() => Effect.suspend(() => {
|
|
26
|
+
MutableRef.update(entered, (count) => count + 1);
|
|
27
|
+
return Option.match(MutableRef.get(latch), {
|
|
28
|
+
onNone: () => Effect.void,
|
|
29
|
+
onSome: (parked) => Deferred.await(parked),
|
|
30
|
+
});
|
|
31
|
+
}))),
|
|
32
|
+
hold: Effect.flatMap(Deferred.make(), (parked) => Effect.sync(() => MutableRef.set(latch, Option.some(parked)))),
|
|
33
|
+
release: Effect.suspend(() => {
|
|
34
|
+
const parked = MutableRef.get(latch);
|
|
35
|
+
MutableRef.set(latch, Option.none());
|
|
36
|
+
return Option.match(parked, {
|
|
37
|
+
onNone: () => Effect.void,
|
|
38
|
+
onSome: (deferred) => Effect.asVoid(Deferred.succeed(deferred, undefined)),
|
|
39
|
+
});
|
|
40
|
+
}),
|
|
41
|
+
awaitEntry: (count) => Effect.asVoid(until(() => MutableRef.get(entered), (reached) => reached >= count)),
|
|
42
|
+
entered: () => MutableRef.get(entered),
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=flight.testkit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flight.testkit.js","sourceRoot":"","sources":["../../src/testkit/flight.testkit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/ui/node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,MAAM,MAAM,IAAI,GAAG,SAAS,CAAA"}
|
package/dist/ui/node.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/ui/node.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../src/ui/trigger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../src/ui/trigger.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type WireProp = {
|
|
2
|
+
readonly _tag: 'Data';
|
|
3
|
+
readonly name: string;
|
|
4
|
+
readonly value: unknown;
|
|
5
|
+
} | {
|
|
6
|
+
readonly _tag: 'Event';
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly handle: string;
|
|
9
|
+
};
|
|
10
|
+
export interface WireNodeExternalApi {
|
|
11
|
+
readonly id: string;
|
|
12
|
+
readonly name: string;
|
|
13
|
+
readonly parentId: string | null;
|
|
14
|
+
readonly childIndex: number;
|
|
15
|
+
readonly slot: string | null;
|
|
16
|
+
readonly key: string | null;
|
|
17
|
+
readonly props: ReadonlyArray<WireProp>;
|
|
18
|
+
}
|
|
19
|
+
export type WireNode = WireNodeExternalApi;
|
|
20
|
+
export type WireTree = ReadonlyArray<WireNode>;
|
|
21
|
+
export type WirePatch = {
|
|
22
|
+
readonly _tag: 'Upsert';
|
|
23
|
+
readonly node: WireNode;
|
|
24
|
+
} | {
|
|
25
|
+
readonly _tag: 'Delete';
|
|
26
|
+
readonly id: string;
|
|
27
|
+
};
|
|
28
|
+
export declare const diff: (previous: WireTree, next: WireTree) => ReadonlyArray<WirePatch>;
|
|
29
|
+
export declare const apply: (state: WireTree, patches: ReadonlyArray<WirePatch>) => WireTree;
|
|
30
|
+
export declare const roots: (tree: WireTree) => WireTree;
|
|
31
|
+
export declare const childrenOf: (tree: WireTree, parentId: string) => WireTree;
|
|
32
|
+
//# sourceMappingURL=tree.d.ts.map
|