@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,82 @@
|
|
|
1
|
+
import { Context, Layer, Option } from 'effect';
|
|
2
|
+
import { makeBucketCache } from '../internal/bucketCache.js';
|
|
3
|
+
const ProceduresBase = Context.Tag('reform/Procedures')();
|
|
4
|
+
export class Procedures extends ProceduresBase {
|
|
5
|
+
}
|
|
6
|
+
const getOrCreate = (map, key, make) => {
|
|
7
|
+
const existing = map.get(key);
|
|
8
|
+
if (existing !== undefined) {
|
|
9
|
+
return existing;
|
|
10
|
+
}
|
|
11
|
+
const created = make();
|
|
12
|
+
map.set(key, created);
|
|
13
|
+
return created;
|
|
14
|
+
};
|
|
15
|
+
const dropFrom = (map, key, target) => {
|
|
16
|
+
const bucket = map.get(key);
|
|
17
|
+
if (bucket === undefined) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
bucket.delete(target);
|
|
21
|
+
if (bucket.size === 0) {
|
|
22
|
+
map.delete(key);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
const makeProcedureRegistry = () => {
|
|
26
|
+
const entries = new Set();
|
|
27
|
+
const byName = new Map();
|
|
28
|
+
const byTag = new Map();
|
|
29
|
+
const channelsByTag = new Map();
|
|
30
|
+
const channelsFor = makeBucketCache(channelsByTag);
|
|
31
|
+
const byChannelTag = new Map();
|
|
32
|
+
const snapshot = {
|
|
33
|
+
value: Option.some([]),
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
get entries() {
|
|
37
|
+
return Option.getOrElse(snapshot.value, () => {
|
|
38
|
+
const current = Array.from(entries);
|
|
39
|
+
snapshot.value = Option.some(current);
|
|
40
|
+
return current;
|
|
41
|
+
});
|
|
42
|
+
},
|
|
43
|
+
byName,
|
|
44
|
+
byTag,
|
|
45
|
+
channelsByTag,
|
|
46
|
+
channelsFor: channelsFor.read,
|
|
47
|
+
byChannelTag,
|
|
48
|
+
register: (entry) => {
|
|
49
|
+
entries.add(entry);
|
|
50
|
+
snapshot.value = Option.none();
|
|
51
|
+
getOrCreate(byName, entry.name, () => new Set()).add(entry);
|
|
52
|
+
entry.handles.forEach((tag) => {
|
|
53
|
+
getOrCreate(byTag, tag, () => new Set()).add(entry);
|
|
54
|
+
getOrCreate(channelsByTag, tag, () => new Set()).add(entry.channelName);
|
|
55
|
+
channelsFor.invalidate(tag);
|
|
56
|
+
const channelMap = getOrCreate(byChannelTag, entry.channelName, () => new Map());
|
|
57
|
+
getOrCreate(channelMap, tag, () => new Set()).add(entry);
|
|
58
|
+
});
|
|
59
|
+
},
|
|
60
|
+
unregister: (entry) => {
|
|
61
|
+
entries.delete(entry);
|
|
62
|
+
snapshot.value = Option.none();
|
|
63
|
+
dropFrom(byName, entry.name, entry);
|
|
64
|
+
entry.handles.forEach((tag) => {
|
|
65
|
+
dropFrom(byTag, tag, entry);
|
|
66
|
+
const channelMap = byChannelTag.get(entry.channelName);
|
|
67
|
+
if (channelMap !== undefined) {
|
|
68
|
+
dropFrom(channelMap, tag, entry);
|
|
69
|
+
if (channelMap.get(tag) === undefined) {
|
|
70
|
+
dropFrom(channelsByTag, tag, entry.channelName);
|
|
71
|
+
channelsFor.invalidate(tag);
|
|
72
|
+
}
|
|
73
|
+
if (channelMap.size === 0) {
|
|
74
|
+
byChannelTag.delete(entry.channelName);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
export const proceduresLayer = Layer.sync(Procedures, makeProcedureRegistry);
|
|
82
|
+
//# sourceMappingURL=procedures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"procedures.js","sourceRoot":"","sources":["../../src/channel/procedures.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Effect, Layer, Option } from 'effect';
|
|
2
|
+
import type { YieldWrap } from 'effect/Utils';
|
|
3
|
+
import type { UiContract } from './ui.js';
|
|
4
|
+
import type { CompositionActivation, CompositionActivationLayerInput, CompositionClass, CompositionConfig, CompositionId, CompositionLayerInput, CompositionService, ContextFreeProps, ContractSlots, Frame, PropsOf, RenderEnv, RequiredSlotIdentities, ScopedCompositionLiveConfig, StatesOf, UiCarrier } from './compositionTypes.js';
|
|
5
|
+
export { CompositionIdTypeId } from './compositionTypes.js';
|
|
6
|
+
export type { AnyComposition, CompositionActivation, CompositionCapture, CompositionClass, CompositionConfig, CompositionId, CompositionInstance, CompositionManifest, CompositionPropsReceiver, CompositionReflection, CompositionService, CompositionTag, Frame, HasExactCompositionId, RenderEnv, RequiredSlotIdentities, ScopedCompositionLiveConfig, SlotClassesOf, } from './compositionTypes.js';
|
|
7
|
+
export declare const make: <const N extends string, const Config extends CompositionConfig, C extends UiContract, const UiName extends string>(name: N, config: Config & UiCarrier<C, UiName> & ContractSlots<C> & ContextFreeProps<Config>) => <Self>() => CompositionClass<PropsOf<Config>, C, StatesOf<Config>, N, Self>;
|
|
8
|
+
export declare const live: <P, C extends UiContract, S extends ReadonlyArray<unknown>, N extends string, Identity, Eff extends YieldWrap<Effect.Effect<unknown, never, unknown>>>(composition: CompositionClass<P, C, S, N, Identity>, body: () => Generator<Eff, Frame<C>, never>) => Layer.Layer<CompositionId<N, Identity, RequiredSlotIdentities<C>>, never, CompositionLayerInput<Eff>>;
|
|
9
|
+
export declare const liveScoped: <P, C extends UiContract, S extends ReadonlyArray<unknown>, N extends string, Identity, RenderEff extends YieldWrap<Effect.Effect<unknown, never, unknown>>, ActivationEff extends YieldWrap<Effect.Effect<unknown, never, unknown>>>(composition: CompositionClass<P, C, S, N, Identity>, config: ScopedCompositionLiveConfig<C, RenderEff, ActivationEff>) => Layer.Layer<CompositionId<N, Identity, RequiredSlotIdentities<C>>, never, CompositionLayerInput<RenderEff> | CompositionActivationLayerInput<ActivationEff>>;
|
|
10
|
+
export declare const render: <P, C extends UiContract>(service: CompositionService<P, C>, env: RenderEnv<P>) => Effect.Effect<Frame<C>, never, never>;
|
|
11
|
+
export declare const activation: <P, C extends UiContract>(service: CompositionService<P, C>, props: P) => Option.Option<CompositionActivation>;
|
|
12
|
+
//# sourceMappingURL=composition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/compose/composition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAe,KAAK,EAAc,MAAM,EAAU,MAAM,QAAQ,CAAA;AACxF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAI7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AACtC,OAAO,KAAK,EACV,qBAAqB,EACrB,+BAA+B,EAE/B,gBAAgB,EAChB,iBAAiB,EAEjB,aAAa,EACb,qBAAqB,EAErB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EAEb,KAAK,EAEL,OAAO,EACP,SAAS,EACT,sBAAsB,EACtB,2BAA2B,EAC3B,QAAQ,EACR,SAAS,EACV,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,KAAK,EACL,qBAAqB,EACrB,SAAS,EACT,sBAAsB,EACtB,2BAA2B,EAC3B,aAAa,GACd,MAAM,oBAAoB,CAAA;AAU3B,eAAO,MAAM,IAAI,GAEb,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,MAAM,SAAS,iBAAiB,EACtC,CAAC,SAAS,UAAU,EACpB,KAAK,CAAC,MAAM,SAAS,MAAM,EAE3B,MAAM,CAAC,EACP,QAAQ,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAEpF,IAAI,OAAK,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAmCvE,CAAA;AAEH,eAAO,MAAM,IAAI,GACf,CAAC,EACD,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAChC,CAAC,SAAS,MAAM,EAChB,QAAQ,EACR,GAAG,SAAS,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,EAE7D,aAAa,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EACnD,MAAM,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAC1C,KAAK,CAAC,KAAK,CACZ,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,EACrD,KAAK,EACL,qBAAqB,CAAC,GAAG,CAAC,CAmB3B,CAAA;AAED,eAAO,MAAM,UAAU,GACrB,CAAC,EACD,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAChC,CAAC,SAAS,MAAM,EAChB,QAAQ,EACR,SAAS,SAAS,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,EACnE,aAAa,SAAS,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,EAEvE,aAAa,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EACnD,QAAQ,2BAA2B,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,KAC/D,KAAK,CAAC,KAAK,CACZ,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,EACrD,KAAK,EACL,qBAAqB,CAAC,SAAS,CAAC,GAAG,+BAA+B,CAAC,aAAa,CAAC,CA8BlF,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,CAAC,SAAS,UAAU,EAC5C,SAAS,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EACjC,KAAK,SAAS,CAAC,CAAC,CAAC,KAChB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAwB,CAAA;AAE/D,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,CAAC,SAAS,UAAU,EAChD,SAAS,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EACjC,OAAO,CAAC,KACP,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAA8B,CAAA"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Context, Effect, GlobalValue, Layer, MutableRef, Option, Schema } from 'effect';
|
|
2
|
+
import { definitionClass } from '../definition/definition.js';
|
|
3
|
+
import { CurrentTracker } from '../internal/track.js';
|
|
4
|
+
import { propsTag } from './props.js';
|
|
5
|
+
export { CompositionIdTypeId } from './compositionTypes.js';
|
|
6
|
+
const compositionDefinitionSequence = GlobalValue.globalValue(Symbol.for('reform/CompositionDefinitionSequence'), () => MutableRef.make(0));
|
|
7
|
+
const nextCompositionTagKey = (name) => `reform/composition/${name}/${MutableRef.incrementAndGet(compositionDefinitionSequence)}`;
|
|
8
|
+
export const make = (name, config) => () => {
|
|
9
|
+
const identity = Symbol(name);
|
|
10
|
+
const props = propsTag();
|
|
11
|
+
const propsSchema = Schema.make(config.props?.ast ?? Schema.Unknown.ast);
|
|
12
|
+
// Both sides. `PropsOf<Config>` — and so every value a parent renders with — is
|
|
13
|
+
// the schema's Type, which is what the in-process call sites hold; a decode-only
|
|
14
|
+
// parser rejects a transforming props schema's own declared props. Props
|
|
15
|
+
// arriving over the wire are Encoded, so that reading has to keep working too.
|
|
16
|
+
const validateProps = Schema.validateOption(propsSchema);
|
|
17
|
+
const decodeProps = Schema.decodeUnknownOption(propsSchema);
|
|
18
|
+
const parseProps = (input) => Option.orElse(validateProps(input), () => decodeProps(input));
|
|
19
|
+
const tag = Context.GenericTag(nextCompositionTagKey(name));
|
|
20
|
+
const manifest = {
|
|
21
|
+
kind: 'Composition',
|
|
22
|
+
name,
|
|
23
|
+
...config,
|
|
24
|
+
};
|
|
25
|
+
const composition = definitionClass({
|
|
26
|
+
manifest,
|
|
27
|
+
identity,
|
|
28
|
+
props,
|
|
29
|
+
parseProps,
|
|
30
|
+
acceptsProps: () => undefined,
|
|
31
|
+
tag,
|
|
32
|
+
capture: (visit) => visit(composition),
|
|
33
|
+
});
|
|
34
|
+
return composition;
|
|
35
|
+
};
|
|
36
|
+
export const live = (composition, body) => {
|
|
37
|
+
const logic = Effect.gen(body).pipe(Effect.orDie);
|
|
38
|
+
return Layer.effect(composition.tag, Effect.gen(function* () {
|
|
39
|
+
const context = yield* Effect.context();
|
|
40
|
+
const render = (env) => {
|
|
41
|
+
return logic.pipe(Effect.provideService(composition.props, env.props), Effect.provideService(CurrentTracker, env.tracker), Effect.provide(context));
|
|
42
|
+
};
|
|
43
|
+
return { render, activation: () => Option.none() };
|
|
44
|
+
}));
|
|
45
|
+
};
|
|
46
|
+
export const liveScoped = (composition, config) => {
|
|
47
|
+
const renderLogic = Effect.gen(config.render).pipe(Effect.orDie);
|
|
48
|
+
const activationLogic = Effect.gen(config.activate).pipe(Effect.orDie);
|
|
49
|
+
return Layer.effect(composition.tag, Effect.gen(function* () {
|
|
50
|
+
const renderContext = yield* Effect.context();
|
|
51
|
+
const activationContext = yield* Effect.context();
|
|
52
|
+
const render = (env) => renderLogic.pipe(Effect.provideService(composition.props, env.props), Effect.provideService(CurrentTracker, env.tracker), Effect.provide(renderContext));
|
|
53
|
+
const activation = (props) => {
|
|
54
|
+
const scoped = Layer.scopedDiscard(activationLogic.pipe(Effect.provideService(composition.props, props)));
|
|
55
|
+
return Option.some(scoped.pipe(Layer.provide(Layer.succeedContext(activationContext))));
|
|
56
|
+
};
|
|
57
|
+
return { render, activation };
|
|
58
|
+
}));
|
|
59
|
+
};
|
|
60
|
+
export const render = (service, env) => service.render(env);
|
|
61
|
+
export const activation = (service, props) => service.activation(props);
|
|
62
|
+
//# sourceMappingURL=composition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composition.js","sourceRoot":"","sources":["../../src/compose/composition.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { Context, Effect, Layer, Option, Schema, Scope } from 'effect';
|
|
2
|
+
import type { AST } from 'effect/SchemaAST';
|
|
3
|
+
import type { YieldWrap } from 'effect/Utils';
|
|
4
|
+
import type { Manifest } from '../definition/definition.js';
|
|
5
|
+
import type { Tracker } from '../internal/track.js';
|
|
6
|
+
import type { CurrentTracker } from '../internal/track.js';
|
|
7
|
+
import type { PropsId, PropsTag } from './props.js';
|
|
8
|
+
import type { AnySlot, AnySlotInstance, SlotClass, SlotInstance } from './slot.js';
|
|
9
|
+
import type { Structure } from './structure.js';
|
|
10
|
+
import type { UiClass, UiContract, UiReflection } from './ui.js';
|
|
11
|
+
export type Frame<C extends UiContract = UiContract> = Structure<C>;
|
|
12
|
+
export interface RenderEnv<out P = unknown> {
|
|
13
|
+
readonly props: P;
|
|
14
|
+
readonly tracker: Tracker;
|
|
15
|
+
}
|
|
16
|
+
export type CompositionActivation = Layer.Layer<never, never, never>;
|
|
17
|
+
export interface CompositionService<in out P = unknown, out C extends UiContract = UiContract> {
|
|
18
|
+
readonly render: (env: RenderEnv<P>) => Effect.Effect<Frame<C>, never, never>;
|
|
19
|
+
readonly activation: (props: P) => Option.Option<CompositionActivation>;
|
|
20
|
+
}
|
|
21
|
+
export declare const CompositionIdTypeId: unique symbol;
|
|
22
|
+
export type CompositionIdTypeId = typeof CompositionIdTypeId;
|
|
23
|
+
export interface CompositionId<out N extends string, out Identity = unknown, out RequiredSlots = unknown> {
|
|
24
|
+
readonly [CompositionIdTypeId]: {
|
|
25
|
+
readonly name: N;
|
|
26
|
+
readonly identity: Identity;
|
|
27
|
+
readonly requiredSlots: RequiredSlots;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export type IsExact<Left, Right> = [Left] extends [Right] ? ([Right] extends [Left] ? true : false) : false;
|
|
31
|
+
export type IsExactCompositionId<Service, N extends string, Identity> = Service extends {
|
|
32
|
+
readonly [CompositionIdTypeId]: {
|
|
33
|
+
readonly name: infer ServiceName extends string;
|
|
34
|
+
readonly identity: infer ServiceIdentity;
|
|
35
|
+
};
|
|
36
|
+
} ? IsExact<ServiceName, N> extends true ? IsExact<ServiceIdentity, Identity> : false : false;
|
|
37
|
+
export type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
38
|
+
export type HasExactCompositionId<Services, N extends string, Identity> = IsAny<Services> extends true ? false : true extends IsExactCompositionId<Services, N, Identity> ? true : false;
|
|
39
|
+
export type CompositionTag<N extends string, P, C extends UiContract, Identity = unknown> = Context.Tag<CompositionId<N, Identity, RequiredSlotIdentities<C>>, CompositionService<P, C>>;
|
|
40
|
+
export type SlotClassesOf<C extends UiContract> = C extends {
|
|
41
|
+
readonly slots: infer Slots extends Record<string, AnySlotInstance>;
|
|
42
|
+
} ? {
|
|
43
|
+
readonly [K in keyof Slots]: Slots[K] extends SlotInstance<infer Child, infer SlotName, infer SlotIdentity> ? SlotClass<Child, SlotName, SlotIdentity> : never;
|
|
44
|
+
} : Readonly<Record<PropertyKey, never>>;
|
|
45
|
+
export type RequiredSlotIdentity<Slot> = Slot extends SlotInstance<infer _Target, infer _Name, infer Identity> ? Identity : never;
|
|
46
|
+
export type RequiredSlotIdentities<C extends UiContract> = C extends {
|
|
47
|
+
readonly slots: infer Slots extends Record<string, AnySlotInstance>;
|
|
48
|
+
} ? RequiredSlotIdentity<Slots[keyof Slots]> : never;
|
|
49
|
+
export type CompositionSlots<C extends UiContract> = C extends {
|
|
50
|
+
readonly slots: infer Slots extends Record<string, AnySlotInstance>;
|
|
51
|
+
} ? [Slots[keyof Slots]] extends [never] ? {} : {
|
|
52
|
+
readonly slots: SlotClassesOf<C>;
|
|
53
|
+
} : {};
|
|
54
|
+
export type CompositionManifest<C extends UiContract = UiContract, N extends string = string> = Manifest & Omit<CompositionConfig, 'slots' | 'ui'> & CompositionSlots<C> & {
|
|
55
|
+
readonly kind: 'Composition';
|
|
56
|
+
readonly name: N;
|
|
57
|
+
readonly ui: UiReflection<C>;
|
|
58
|
+
};
|
|
59
|
+
export interface CompositionInstance<out Identity = unknown> {
|
|
60
|
+
readonly _compositionIdentity: Identity;
|
|
61
|
+
}
|
|
62
|
+
export interface CompositionReflection<out P = unknown, out C extends UiContract = UiContract, out S extends ReadonlyArray<unknown> = ReadonlyArray<unknown>, out N extends string = string, out Identity = unknown> {
|
|
63
|
+
new (): CompositionInstance<Identity>;
|
|
64
|
+
readonly manifest: CompositionManifest<C, N>;
|
|
65
|
+
readonly Props: P;
|
|
66
|
+
readonly Contract: C;
|
|
67
|
+
readonly States: S;
|
|
68
|
+
readonly parseProps: (input: unknown) => Option.Option<P>;
|
|
69
|
+
}
|
|
70
|
+
export interface CompositionPropsReceiver<in P> {
|
|
71
|
+
readonly acceptsProps: (props: P) => void;
|
|
72
|
+
}
|
|
73
|
+
export type CompositionCapture<Result> = <P, C extends UiContract, S extends ReadonlyArray<unknown>, N extends string, Identity>(composition: CompositionClass<P, C, S, N, Identity>) => Result;
|
|
74
|
+
export interface AnyComposition extends CompositionReflection {
|
|
75
|
+
readonly capture: <Result>(visit: CompositionCapture<Result>) => Result;
|
|
76
|
+
}
|
|
77
|
+
export interface CompositionSchema {
|
|
78
|
+
readonly ast: AST;
|
|
79
|
+
}
|
|
80
|
+
export type GeneratorContext<Eff> = [Eff] extends [never] ? never : [Eff] extends [YieldWrap<Effect.Effect<infer _Success, infer _Error, infer R>>] ? R : never;
|
|
81
|
+
export interface CompositionConfigOptionalFields {
|
|
82
|
+
readonly description: string;
|
|
83
|
+
readonly props: CompositionSchema;
|
|
84
|
+
readonly states: ReadonlyArray<unknown>;
|
|
85
|
+
readonly calcs: ReadonlyArray<unknown>;
|
|
86
|
+
readonly events: ReadonlyArray<unknown>;
|
|
87
|
+
readonly slots: Record<string, AnySlot>;
|
|
88
|
+
}
|
|
89
|
+
export interface CompositionConfig extends Partial<CompositionConfigOptionalFields> {
|
|
90
|
+
readonly title: string;
|
|
91
|
+
readonly ui: UiReflection;
|
|
92
|
+
}
|
|
93
|
+
export type PropsOf<Config> = Config extends {
|
|
94
|
+
props: infer PropsSchema;
|
|
95
|
+
} ? PropsSchema extends Schema.Schema<infer P, infer _Encoded, infer _Context> ? P : unknown : unknown;
|
|
96
|
+
export type EncodedPropsOf<Config> = Config extends {
|
|
97
|
+
props: infer PropsSchema;
|
|
98
|
+
} ? PropsSchema extends Schema.Schema<infer _Props, infer Encoded, infer _Context> ? Encoded : unknown : unknown;
|
|
99
|
+
export type StatesOf<Config> = Config extends {
|
|
100
|
+
states: infer S extends ReadonlyArray<unknown>;
|
|
101
|
+
} ? S : readonly [];
|
|
102
|
+
export interface CompositionClass<in out P, in out C extends UiContract = UiContract, out S extends ReadonlyArray<unknown> = ReadonlyArray<unknown>, in out N extends string = string, in out Identity = unknown> extends CompositionReflection<P, C, S, N, Identity>, CompositionPropsReceiver<P> {
|
|
103
|
+
readonly Props: P;
|
|
104
|
+
readonly Contract: C;
|
|
105
|
+
readonly States: S;
|
|
106
|
+
readonly identity: symbol;
|
|
107
|
+
readonly props: PropsTag<P>;
|
|
108
|
+
readonly tag: CompositionTag<N, P, C, Identity>;
|
|
109
|
+
readonly capture: <Result>(visit: CompositionCapture<Result>) => Result;
|
|
110
|
+
}
|
|
111
|
+
export type CompositionDefinitionStatics<P, C extends UiContract, S extends ReadonlyArray<unknown>, N extends string, Identity> = Pick<CompositionClass<P, C, S, N, Identity>, 'manifest' | 'identity' | 'props' | 'parseProps' | 'acceptsProps' | 'tag' | 'capture'>;
|
|
112
|
+
export interface UiCarrier<C extends UiContract, UiName extends string> {
|
|
113
|
+
readonly ui: UiClass<C, UiName>;
|
|
114
|
+
}
|
|
115
|
+
export type ContractSlots<C extends UiContract> = CompositionSlots<C>;
|
|
116
|
+
export type ContextFreeProps<Config> = Config extends {
|
|
117
|
+
readonly props: infer PropsSchema;
|
|
118
|
+
} ? PropsSchema extends Schema.Schema<infer _P, infer _Encoded, infer Context> ? [Context] extends [never] ? unknown : {
|
|
119
|
+
readonly propsSchemaMustNotRequireServices: never;
|
|
120
|
+
} : unknown : unknown;
|
|
121
|
+
export type CompositionLayerInput<Eff> = Exclude<Exclude<GeneratorContext<Eff>, PropsId>, CurrentTracker>;
|
|
122
|
+
export type CompositionActivationLayerInput<Eff> = Exclude<Exclude<GeneratorContext<Eff>, PropsId>, Scope.Scope>;
|
|
123
|
+
export interface ScopedCompositionLiveConfig<C extends UiContract, RenderEff extends YieldWrap<Effect.Effect<unknown, never, unknown>>, ActivationEff extends YieldWrap<Effect.Effect<unknown, never, unknown>>> {
|
|
124
|
+
readonly render: () => Generator<RenderEff, Frame<C>, never>;
|
|
125
|
+
readonly activate: () => Generator<ActivationEff, void, never>;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=compositionTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compositionTypes.d.ts","sourceRoot":"","sources":["../../src/compose/compositionTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compositionTypes.js","sourceRoot":"","sources":["../../src/compose/compositionTypes.ts"],"names":[],"mappings":"AAyBA,MAAM,CAAC,MAAM,mBAAmB,GAAkB,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/compose/host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAElC,MAAM,WAAW,YAAY;IAC3B,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;CACvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../src/compose/host.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Context } from 'effect';
|
|
2
|
+
export declare const PropsIdTypeId: unique symbol;
|
|
3
|
+
export type PropsIdTypeId = typeof PropsIdTypeId;
|
|
4
|
+
export interface PropsId {
|
|
5
|
+
readonly [PropsIdTypeId]: PropsIdTypeId;
|
|
6
|
+
}
|
|
7
|
+
export type PropsTag<P> = Context.Tag<PropsId, P>;
|
|
8
|
+
export declare const propsTag: <P>() => PropsTag<P>;
|
|
9
|
+
export declare const Props: PropsTag<unknown>;
|
|
10
|
+
//# sourceMappingURL=props.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../src/compose/props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,eAAO,MAAM,aAAa,EAAE,OAAO,MAAqC,CAAA;AACxE,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAA;AAEhD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,aAAa,CAAA;CACxC;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;AAEjD,eAAO,MAAM,QAAQ,GAAI,CAAC,OAAK,QAAQ,CAAC,CAAC,CAAmD,CAAA;AAG5F,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAuB,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Context } from 'effect';
|
|
2
|
+
export const PropsIdTypeId = Symbol.for('reform/PropsId');
|
|
3
|
+
export const propsTag = () => Context.GenericTag('reform/Props');
|
|
4
|
+
// Unknown keeps the compatibility reader from leaking untyped props.
|
|
5
|
+
export const Props = propsTag();
|
|
6
|
+
//# sourceMappingURL=props.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"props.js","sourceRoot":"","sources":["../../src/compose/props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,MAAM,CAAC,MAAM,aAAa,GAAkB,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;AASxE,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAmB,EAAE,CAAC,OAAO,CAAC,UAAU,CAAa,cAAc,CAAC,CAAA;AAE5F,qEAAqE;AACrE,MAAM,CAAC,MAAM,KAAK,GAAsB,QAAQ,EAAW,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Layer } from 'effect';
|
|
2
|
+
import { type EngineServices } from '../feature/feature.js';
|
|
3
|
+
import type { AnyComposition, CompositionClass, CompositionId, RequiredSlotIdentities } from './composition.js';
|
|
4
|
+
import type { CompositionChildSummary, ExactServiceExclude, FeatureSummaryOpenServices, FeatureSummarySupportOpenServices } from '../graph/closure.js';
|
|
5
|
+
import { type AnyFeatureSlotTarget, type AnySlot, type SlotClass, type SlotService } from './slot.js';
|
|
6
|
+
import { type Contract, type AnyUi, type UiName, type UiContract, type UiService, type ViewImpl } from './ui.js';
|
|
7
|
+
type TargetOfSlotClass<Slot extends AnySlot> = InstanceType<Slot>['_slot'];
|
|
8
|
+
type NameOfSlotClass<Slot extends AnySlot> = InstanceType<Slot>['_slotName'];
|
|
9
|
+
type IdentityOfSlotClass<Slot extends AnySlot> = InstanceType<Slot>['_slotIdentity'];
|
|
10
|
+
type FeatureTargetOfSlotClass<Slot extends AnySlot> = TargetOfSlotClass<Slot> extends AnyFeatureSlotTarget ? TargetOfSlotClass<Slot> : never;
|
|
11
|
+
type CompositionIdentityOf<Composition extends AnyComposition> = InstanceType<Composition>['_compositionIdentity'];
|
|
12
|
+
export declare const provideMergeExact: <Provided, ProviderError, ProviderInput>(provider: Layer.Layer<Provided, ProviderError, ProviderInput>) => <Output, Error, Input>(consumer: Layer.Layer<Output, Error, Input>) => Layer.Layer<Provided | Output, ProviderError | Error, ProviderInput | Exclude<Input, Provided> | ExactServiceExclude<Input, Provided>>;
|
|
13
|
+
export declare const provideExisting: <P, C extends UiContract, S extends ReadonlyArray<unknown>, CompositionName extends string, CompositionIdentity, SlotName extends string, SlotIdentity>(hole: SlotClass<CompositionClass<P, C, S, CompositionName, CompositionIdentity>, SlotName, SlotIdentity>, composition: NoInfer<CompositionClass<P, C, S, CompositionName, CompositionIdentity>>) => Layer.Layer<SlotService<SlotName, SlotIdentity, CompositionChildSummary<CompositionIdentity>>, never, CompositionId<CompositionName, CompositionIdentity, RequiredSlotIdentities<C>>>;
|
|
14
|
+
export declare function provide<U extends AnyUi>(contract: U, view: ViewImpl<Contract<U>>): Layer.Layer<UiService<UiName<U>>>;
|
|
15
|
+
export declare function provide<Comp extends AnyComposition, N extends string, Identity>(hole: SlotClass<Comp, N, Identity>, composition: NoInfer<Comp>): Layer.Layer<SlotService<N, Identity, CompositionChildSummary<CompositionIdentityOf<Comp>>>>;
|
|
16
|
+
export declare function provide<Slot extends AnySlot>(hole: Slot, feature: NoInfer<FeatureTargetOfSlotClass<Slot>>): Layer.Layer<SlotService<NameOfSlotClass<Slot>, IdentityOfSlotClass<Slot>, FeatureTargetOfSlotClass<Slot>['summary']>, never, EngineServices | FeatureSummaryOpenServices<FeatureTargetOfSlotClass<Slot>['summary']> | FeatureSummarySupportOpenServices<FeatureTargetOfSlotClass<Slot>['summary']>>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=provide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provide.d.ts","sourceRoot":"","sources":["../../src/compose/provide.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Context, Effect, Layer, Predicate } from 'effect';
|
|
2
|
+
import { InvalidProvideTarget } from '../internal/errors.js';
|
|
3
|
+
import { isFeature, tree, } from '../feature/feature.js';
|
|
4
|
+
import { isSlot, } from './slot.js';
|
|
5
|
+
import { isUi, } from './ui.js';
|
|
6
|
+
// Preserve exact residual inputs that Layer.provideMerge's union subtraction hides.
|
|
7
|
+
export const provideMergeExact = (provider) => (consumer) => Layer.merge(Layer.provideMerge(provider)(consumer), Layer.effectDiscard(Effect.context()));
|
|
8
|
+
const compositionSlotLayer = (slotDefinition, composition) => Layer.succeed(Context.GenericTag(slotDefinition.tag.key), composition);
|
|
9
|
+
export const provideExisting = (hole, composition) => Layer.effect(Context.GenericTag(hole.tag.key), Effect.as(composition.tag, composition));
|
|
10
|
+
const featureSlotLayer = (slotDefinition, binding) => Layer.succeed(Context.GenericTag(slotDefinition.tag.key), binding);
|
|
11
|
+
const isComposition = (candidate) => (typeof candidate === 'function' || typeof candidate === 'object') &&
|
|
12
|
+
candidate !== null &&
|
|
13
|
+
Predicate.hasProperty(candidate, 'manifest') &&
|
|
14
|
+
Predicate.isRecord(candidate.manifest) &&
|
|
15
|
+
candidate.manifest['kind'] === 'Composition' &&
|
|
16
|
+
Predicate.hasProperty(candidate, 'capture') &&
|
|
17
|
+
typeof candidate.capture === 'function';
|
|
18
|
+
const isCallableView = (candidate) => typeof candidate === 'function';
|
|
19
|
+
export function provide(...args) {
|
|
20
|
+
const [target, implementation] = args;
|
|
21
|
+
if (isUi(target)) {
|
|
22
|
+
if (!isCallableView(implementation)) {
|
|
23
|
+
return Layer.die(new InvalidProvideTarget());
|
|
24
|
+
}
|
|
25
|
+
return target.capture((contract) => Layer.succeed(contract.provider, implementation));
|
|
26
|
+
}
|
|
27
|
+
if (!isSlot(target)) {
|
|
28
|
+
return Layer.die(new InvalidProvideTarget());
|
|
29
|
+
}
|
|
30
|
+
return target.capture((slotDefinition) => {
|
|
31
|
+
if (isFeature(implementation)) {
|
|
32
|
+
const native = tree(implementation.token);
|
|
33
|
+
return native.binding.capture((featureBinding) => {
|
|
34
|
+
// Lazy features merge only eager support; default features merge their live module.
|
|
35
|
+
const eager = native.eagerModule ?? native.supportModule;
|
|
36
|
+
const binding = featureSlotLayer(slotDefinition, featureBinding);
|
|
37
|
+
if (eager === undefined) {
|
|
38
|
+
return binding;
|
|
39
|
+
}
|
|
40
|
+
return eager.capture((module) => Layer.merge(binding, module.layer));
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (!isComposition(implementation)) {
|
|
44
|
+
return Layer.die(new InvalidProvideTarget());
|
|
45
|
+
}
|
|
46
|
+
return implementation.capture((composition) => compositionSlotLayer(slotDefinition, composition));
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=provide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provide.js","sourceRoot":"","sources":["../../src/compose/provide.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Context } from 'effect';
|
|
2
|
+
import { type Manifest } from '../definition/definition.js';
|
|
3
|
+
import type { AnyFeatureBinding, ProvideableFeature } from '../feature/feature.js';
|
|
4
|
+
import type { AnyFeatureGraphSummary, FeatureSummaryCompositionIdentity, FeatureSummaryCompositionProps, FeatureSummaryContract, FeatureSummaryMountProps, FeatureSummaryName, FeatureSummaryStates, FeatureSummaryIdentity, SlotBindingSummary } from '../graph/closure.js';
|
|
5
|
+
import type { Node } from '../ui/node.js';
|
|
6
|
+
import type { AnyComposition, CompositionClass } from './composition.js';
|
|
7
|
+
export type { Node };
|
|
8
|
+
export type { AnyComposition } from './composition.js';
|
|
9
|
+
type AnyProvideableFeature = ProvideableFeature<unknown, AnyFeatureGraphSummary>;
|
|
10
|
+
export type FeatureSlotTarget<Feature extends AnyProvideableFeature> = ProvideableFeature<FeatureSummaryIdentity<Feature['summary']>, Feature['summary']>;
|
|
11
|
+
export type AnyFeatureSlotTarget = FeatureSlotTarget<AnyProvideableFeature>;
|
|
12
|
+
export type SlotTarget = AnyComposition | AnyFeatureSlotTarget;
|
|
13
|
+
export type CompositionOfSlotTarget<Target extends SlotTarget> = Target extends AnyComposition ? Target : Target extends AnyFeatureSlotTarget ? CompositionClass<FeatureSummaryCompositionProps<Target['summary']>, FeatureSummaryContract<Target['summary']>, FeatureSummaryStates<Target['summary']>, FeatureSummaryName<Target['summary']>, FeatureSummaryCompositionIdentity<Target['summary']>> : never;
|
|
14
|
+
export type PropsOfSlotTarget<Target extends SlotTarget> = Target extends AnyComposition ? Target['Props'] : Target extends AnyFeatureSlotTarget ? FeatureSummaryMountProps<Target['summary']> : never;
|
|
15
|
+
export type ContractOfSlotTarget<Target extends SlotTarget> = Target extends AnyComposition ? Target['Contract'] : Target extends AnyFeatureSlotTarget ? FeatureSummaryContract<Target['summary']> : never;
|
|
16
|
+
export type SlotChild<Target extends SlotTarget> = Target extends AnyComposition ? Target | (AnyFeatureBinding & {
|
|
17
|
+
readonly composition: Target;
|
|
18
|
+
}) : Target extends AnyFeatureSlotTarget ? AnyFeatureBinding & {
|
|
19
|
+
readonly summary: Target['summary'];
|
|
20
|
+
} : never;
|
|
21
|
+
export type AnySlotChild = AnyComposition | AnyFeatureBinding;
|
|
22
|
+
export interface AnySlotInstance {
|
|
23
|
+
readonly _slot: SlotTarget;
|
|
24
|
+
readonly _slotName: string;
|
|
25
|
+
readonly _slotIdentity: unknown;
|
|
26
|
+
}
|
|
27
|
+
export interface SlotInstance<Target extends SlotTarget, N extends string, Identity> extends AnySlotInstance {
|
|
28
|
+
readonly _slot: Target;
|
|
29
|
+
readonly _slotName: N;
|
|
30
|
+
readonly _slotIdentity: Identity;
|
|
31
|
+
}
|
|
32
|
+
export declare const SlotTypeId: unique symbol;
|
|
33
|
+
export type SlotTypeId = typeof SlotTypeId;
|
|
34
|
+
export declare const SlotServiceTypeId: unique symbol;
|
|
35
|
+
export type SlotServiceTypeId = typeof SlotServiceTypeId;
|
|
36
|
+
export interface SlotService<N extends string, Identity = unknown, out Binding extends SlotBindingSummary = SlotBindingSummary> {
|
|
37
|
+
readonly [SlotServiceTypeId]: {
|
|
38
|
+
readonly name: N;
|
|
39
|
+
readonly identity: Identity;
|
|
40
|
+
readonly binding: Binding;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export interface SlotManifest<N extends string = string> extends Manifest {
|
|
44
|
+
readonly kind: 'Slot';
|
|
45
|
+
readonly name: N;
|
|
46
|
+
}
|
|
47
|
+
export type SlotCapture<Result> = <Target extends SlotTarget, N extends string, Identity>(slotDefinition: SlotClass<Target, N, Identity>) => Result;
|
|
48
|
+
export interface AnySlot {
|
|
49
|
+
new (): AnySlotInstance;
|
|
50
|
+
readonly [SlotTypeId]: SlotTypeId;
|
|
51
|
+
readonly manifest: SlotManifest;
|
|
52
|
+
readonly identity: symbol;
|
|
53
|
+
readonly capture: <Result>(visit: SlotCapture<Result>) => Result;
|
|
54
|
+
}
|
|
55
|
+
export interface SlotClass<Target extends SlotTarget, N extends string, Identity> {
|
|
56
|
+
new (): SlotInstance<Target, N, Identity>;
|
|
57
|
+
readonly [SlotTypeId]: SlotTypeId;
|
|
58
|
+
readonly manifest: SlotManifest<N>;
|
|
59
|
+
readonly identity: symbol;
|
|
60
|
+
readonly capture: <Result>(visit: SlotCapture<Result>) => Result;
|
|
61
|
+
readonly tag: Context.Tag<SlotService<N, Identity>, SlotChild<Target>>;
|
|
62
|
+
readonly provider: Context.Tag<SlotService<N, Identity>, AnySlotChild>;
|
|
63
|
+
}
|
|
64
|
+
export declare const isSlot: (candidate: unknown) => candidate is AnySlot;
|
|
65
|
+
export type TargetOfSlot<S> = S extends SlotInstance<infer Target, infer _N, infer _Identity> ? Target : never;
|
|
66
|
+
export type SlotProps<S> = S extends SlotInstance<infer Target, infer _N, infer _Identity> ? PropsOfSlotTarget<Target> : never;
|
|
67
|
+
export type SlotComposition<S> = S extends SlotInstance<infer Target, infer _N, infer _Identity> ? CompositionOfSlotTarget<Target> : never;
|
|
68
|
+
export type SlotContract<S> = S extends SlotInstance<infer Target, infer _N, infer _Identity> ? ContractOfSlotTarget<Target> : never;
|
|
69
|
+
export declare const slot: <const N extends string>(name: N) => <Self, Target extends SlotTarget = AnyComposition>() => SlotClass<Target, N, Self>;
|
|
70
|
+
//# sourceMappingURL=slot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slot.d.ts","sourceRoot":"","sources":["../../src/compose/slot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Context, GlobalValue, MutableRef } from 'effect';
|
|
2
|
+
import { definitionClass } from '../definition/definition.js';
|
|
3
|
+
export const SlotTypeId = Symbol.for('reform/Slot');
|
|
4
|
+
export const SlotServiceTypeId = Symbol.for('reform/SlotService');
|
|
5
|
+
export const isSlot = (candidate) => (typeof candidate === 'function' || typeof candidate === 'object') &&
|
|
6
|
+
candidate !== null &&
|
|
7
|
+
SlotTypeId in candidate;
|
|
8
|
+
const slotDefinitionSequence = GlobalValue.globalValue(Symbol.for('reform/SlotDefinitionSequence'), () => MutableRef.make(0));
|
|
9
|
+
const nextSlotTagKey = (name) => `reform/slot/${name}/${MutableRef.incrementAndGet(slotDefinitionSequence)}`;
|
|
10
|
+
export const slot = (name) => () => {
|
|
11
|
+
const key = nextSlotTagKey(name);
|
|
12
|
+
const identity = Symbol(name);
|
|
13
|
+
const tag = Context.GenericTag(key);
|
|
14
|
+
const provider = Context.GenericTag(key);
|
|
15
|
+
const manifest = { kind: 'Slot', name };
|
|
16
|
+
const slotDefinition = definitionClass({
|
|
17
|
+
[SlotTypeId]: SlotTypeId,
|
|
18
|
+
manifest,
|
|
19
|
+
identity,
|
|
20
|
+
tag,
|
|
21
|
+
provider,
|
|
22
|
+
capture: (visit) => visit(slotDefinition),
|
|
23
|
+
});
|
|
24
|
+
return slotDefinition;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=slot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slot.js","sourceRoot":"","sources":["../../src/compose/slot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACzD,OAAO,EAAiB,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAiFzE,MAAM,CAAC,MAAM,UAAU,GAAkB,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;AAGlE,MAAM,CAAC,MAAM,iBAAiB,GAAkB,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;AA2ChF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,SAAkB,EAAwB,EAAE,CACjE,CAAC,OAAO,SAAS,KAAK,UAAU,IAAI,OAAO,SAAS,KAAK,QAAQ,CAAC;IAClE,SAAS,KAAK,IAAI;IAClB,UAAU,IAAI,SAAS,CAAA;AAoBzB,MAAM,sBAAsB,GAAkC,WAAW,CAAC,WAAW,CACnF,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,EAC3C,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CACzB,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,IAAY,EAAU,EAAE,CAC9C,eAAe,IAAI,IAAI,UAAU,CAAC,eAAe,CAAC,sBAAsB,CAAC,EAAE,CAAA;AAE7E,MAAM,CAAC,MAAM,IAAI,GACf,CAAyB,IAAO,EAAE,EAAE,CACpC,GAAiF,EAAE;IACjF,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;IAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAA0C,GAAG,CAAC,CAAA;IAC5E,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAqC,GAAG,CAAC,CAAA;IAC5E,MAAM,QAAQ,GAAoB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IACxD,MAAM,cAAc,GAA+B,eAAe,CAA6B;QAC7F,CAAC,UAAU,CAAC,EAAE,UAAU;QACxB,QAAQ;QACR,QAAQ;QACR,GAAG;QACH,QAAQ;QACR,OAAO,EAAE,CAAS,KAA0B,EAAU,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;KAC/E,CAAC,CAAA;IACF,OAAO,cAAc,CAAA;AACvB,CAAC,CAAA"}
|