@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,27 @@
|
|
|
1
|
+
import { type Schema } from 'effect';
|
|
2
|
+
import type { AnyComposition, CompositionClass } from '../compose/composition.js';
|
|
3
|
+
import type { UiContract } from '../compose/ui.js';
|
|
4
|
+
import { FeatureGraphValidTypeId } from '../graph/closure.js';
|
|
5
|
+
import type { EagerFeatureClass, LazyFeatureClass } from './featureClass.js';
|
|
6
|
+
import { type EagerFeatureConfigExternalApi, type FeatureMountProps, type FeatureUsesInput, type LazyFeatureConfigExternalApi } from './featureConfig.js';
|
|
7
|
+
import type { FeatureRequirement } from './featureRequirement.js';
|
|
8
|
+
export type { EngineServices } from '../runtime/loop.js';
|
|
9
|
+
export { FeatureGraphValidTypeId };
|
|
10
|
+
export { FeatureInput } from './featureRequirement.js';
|
|
11
|
+
export type { FeatureModuleInput, FeatureRequirement, ProvidedBy, RequireCarrier, } from './featureRequirement.js';
|
|
12
|
+
export { featureModule, featureModuleFromInput, lazyImport } from './featureModule.js';
|
|
13
|
+
export type { AnyLoadedModule, FeatureModule, LoadedModule, LoadedModuleCapture } from './featureModule.js';
|
|
14
|
+
export { FeatureBindingTypeId, isFeatureBinding, tree } from './featureBinding.js';
|
|
15
|
+
export type { AnyFeatureBinding, AnyFeatureBindingExternalApi, CapturedFeatureBinding, FailedProps, FeatureBinding, FeatureBindingCapture, FeatureBindingType, FeatureDefinition, FeatureIdentityToken, FeatureManifest, FeatureOpenServices, FeatureSupportOpenServices, FeatureToken, FeatureTreeCarrier, ProvideableFeature, } from './featureBinding.js';
|
|
16
|
+
export type { EagerFeatureNativeTree, FeatureNativeTree, LazyFeatureNativeTree, } from './featureNativeTree.js';
|
|
17
|
+
export type { EagerFeatureClass, FeatureClass, LazyFeatureClass } from './featureClass.js';
|
|
18
|
+
export { isFeature } from './featureConfig.js';
|
|
19
|
+
export type { FeatureMountProps, Placeholders } from './featureConfig.js';
|
|
20
|
+
export { mountFeature } from './mountFeature.js';
|
|
21
|
+
export declare function make<P, C extends UiContract, ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>, OpenServices, S extends ReadonlyArray<unknown>, N extends string, Identity, const Composition extends CompositionClass<P, C, S, N, Identity>>(name: string, config: EagerFeatureConfigExternalApi<P, C, ROut, DirectRequires, OpenServices, S, N, Identity> & {
|
|
22
|
+
readonly composition: Composition;
|
|
23
|
+
}): EagerFeatureClass<Identity, P, C, ROut, DirectRequires, OpenServices, S, N, Identity, Composition>;
|
|
24
|
+
export declare function make<CompositionProps, C extends UiContract, ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>, OpenServices, S extends ReadonlyArray<unknown>, N extends string, Identity, const Composition extends CompositionClass<CompositionProps, C, S, N, Identity>, const Loading extends AnyComposition, const Failed extends AnyComposition, const InputSchema extends Schema.Schema.AnyNoContext = never, SupportOut = never, SupportDirectRequires extends ReadonlyArray<FeatureRequirement> = readonly [], SupportOpenServices = never>(name: string, config: LazyFeatureConfigExternalApi<CompositionProps, C, ROut, DirectRequires, OpenServices, SupportOut, SupportDirectRequires, SupportOpenServices, S, N, Identity, InputSchema, Loading, Failed> & {
|
|
25
|
+
readonly composition: Composition;
|
|
26
|
+
}): LazyFeatureClass<Identity, FeatureMountProps<FeatureUsesInput<InputSchema>, CompositionProps, InputSchema>, C, ROut, DirectRequires, OpenServices, SupportOut, SupportDirectRequires, SupportOpenServices, FeatureUsesInput<InputSchema>, S, N, CompositionProps, Identity, Composition>;
|
|
27
|
+
//# sourceMappingURL=feature.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../src/feature/feature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import { FeatureGraphValidTypeId } from '../graph/closure.js';
|
|
3
|
+
import { isMakeImplementationConfig, } from './featureConfig.js';
|
|
4
|
+
import { makeEagerFeature, makeLazyFeature } from './featureVariants.js';
|
|
5
|
+
export { FeatureGraphValidTypeId };
|
|
6
|
+
export { FeatureInput } from './featureRequirement.js';
|
|
7
|
+
export { featureModule, featureModuleFromInput, lazyImport } from './featureModule.js';
|
|
8
|
+
export { FeatureBindingTypeId, isFeatureBinding, tree } from './featureBinding.js';
|
|
9
|
+
export { isFeature } from './featureConfig.js';
|
|
10
|
+
export { mountFeature } from './mountFeature.js';
|
|
11
|
+
export function make(name, config) {
|
|
12
|
+
if (!isMakeImplementationConfig(config)) {
|
|
13
|
+
return Effect.runSync(Effect.dieMessage(`Invalid Feature config for ${name}`));
|
|
14
|
+
}
|
|
15
|
+
if (config.loadingStrategy === 'lazy') {
|
|
16
|
+
return makeLazyFeature(name, config);
|
|
17
|
+
}
|
|
18
|
+
return makeEagerFeature(name, config);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/feature/feature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,MAAM,QAAQ,CAAA;AAG5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAE1D,OAAO,EAKL,0BAA0B,GAE3B,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGrE,OAAO,EAAE,uBAAuB,EAAE,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAOnD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEnF,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAwB/E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAuF7C,MAAM,UAAU,IAAI,CAiBlB,IAAY,EACZ,MA4B4C;IA+B5C,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC,CAAA;IAChF,CAAC;IACD,IAAI,MAAM,CAAC,eAAe,KAAK,MAAM,EAAE,CAAC;QACtC,OAAO,eAAe,CAgBpB,IAAI,EAAE,MAAM,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,gBAAgB,CAUrB,IAAI,EAAE,MAAM,CAAC,CAAA;AACjB,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { Effect, Option } from 'effect';
|
|
2
|
+
import type { AnyComposition, CompositionClass } from '../compose/composition.js';
|
|
3
|
+
import type { Manifest } from '../definition/definition.js';
|
|
4
|
+
import { type AnyFeatureGraphSummary, FeatureGraphValidTypeId, type FeatureSummaryCompositionIdentity, type FeatureSummaryCompositionProps, type FeatureSummaryContract, type FeatureSummaryInput, type FeatureSummaryName, type FeatureSummaryOpenServices, type FeatureSummaryStates, type FeatureSummarySupportOpenServices, type FeatureSummaryUsesInput } from '../graph/closure.js';
|
|
5
|
+
import type { FeatureLoadFailed } from '../internal/errors.js';
|
|
6
|
+
import type { Tagged } from '../runtime/bus.js';
|
|
7
|
+
import type { LoadedModule } from './featureModule.js';
|
|
8
|
+
import type { FeatureRequirement } from './featureRequirement.js';
|
|
9
|
+
export interface FailedProps {
|
|
10
|
+
readonly error: FeatureLoadFailed;
|
|
11
|
+
readonly retry: () => void;
|
|
12
|
+
}
|
|
13
|
+
export interface FeatureManifest extends Manifest {
|
|
14
|
+
readonly kind: 'Feature';
|
|
15
|
+
readonly name: string;
|
|
16
|
+
readonly strategy: 'lazy' | 'default';
|
|
17
|
+
readonly composition: Manifest & {
|
|
18
|
+
readonly kind: 'Composition';
|
|
19
|
+
};
|
|
20
|
+
readonly placeholder: Option.Option<{
|
|
21
|
+
readonly loading: Manifest & {
|
|
22
|
+
readonly kind: 'Composition';
|
|
23
|
+
};
|
|
24
|
+
readonly failed: Manifest & {
|
|
25
|
+
readonly kind: 'Composition';
|
|
26
|
+
};
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
export declare const FeatureBindingTypeId: unique symbol;
|
|
30
|
+
export type FeatureBindingTypeId = typeof FeatureBindingTypeId;
|
|
31
|
+
export type FeatureBindingType = FeatureBindingTypeId;
|
|
32
|
+
export declare const FeatureTokenIdentityTypeId: unique symbol;
|
|
33
|
+
export declare const FeatureNativeTypeId: unique symbol;
|
|
34
|
+
export interface FeatureIdentityToken<out FeatureIdentity> {
|
|
35
|
+
readonly identity: symbol;
|
|
36
|
+
readonly [FeatureTokenIdentityTypeId]: readonly [] | readonly [FeatureIdentity];
|
|
37
|
+
}
|
|
38
|
+
export interface FeatureToken<out FeatureIdentity, out NativeTree extends object> extends FeatureIdentityToken<FeatureIdentity> {
|
|
39
|
+
readonly [FeatureNativeTypeId]: NativeTree;
|
|
40
|
+
}
|
|
41
|
+
export interface FeatureTreeCarrier {
|
|
42
|
+
readonly token: FeatureToken<unknown, object>;
|
|
43
|
+
}
|
|
44
|
+
type Native<Feature extends FeatureTreeCarrier, Token extends Feature['token'] = Feature['token']> = Token[typeof FeatureNativeTypeId];
|
|
45
|
+
export declare const tree: <Feature extends FeatureTreeCarrier, Token extends Feature["token"] = Feature["token"]>(token: Token) => Native<Feature, Token>;
|
|
46
|
+
export interface ProvideableFeature<out FeatureIdentity, out Summary extends AnyFeatureGraphSummary> {
|
|
47
|
+
new (): {};
|
|
48
|
+
readonly manifest: FeatureManifest;
|
|
49
|
+
readonly token: FeatureIdentityToken<FeatureIdentity>;
|
|
50
|
+
readonly summary: Summary;
|
|
51
|
+
}
|
|
52
|
+
export interface FeatureDefinition<out FeatureIdentity, out Summary extends AnyFeatureGraphSummary, out NativeTree extends object> extends ProvideableFeature<FeatureIdentity, Summary> {
|
|
53
|
+
readonly token: FeatureToken<FeatureIdentity, NativeTree>;
|
|
54
|
+
}
|
|
55
|
+
export type FeatureOpenServices<Feature extends {
|
|
56
|
+
readonly summary: AnyFeatureGraphSummary;
|
|
57
|
+
}> = FeatureSummaryOpenServices<Feature['summary']>;
|
|
58
|
+
export type FeatureSupportOpenServices<Feature extends {
|
|
59
|
+
readonly summary: AnyFeatureGraphSummary;
|
|
60
|
+
}> = FeatureSummarySupportOpenServices<Feature['summary']>;
|
|
61
|
+
export interface AnyFeatureBindingExternalApi {
|
|
62
|
+
readonly [FeatureBindingTypeId]: FeatureBindingTypeId;
|
|
63
|
+
readonly [FeatureGraphValidTypeId]: FeatureGraphValidTypeId;
|
|
64
|
+
readonly capture: <Result>(visit: FeatureBindingCapture<Result>) => Result;
|
|
65
|
+
}
|
|
66
|
+
export type AnyFeatureBinding = AnyFeatureBindingExternalApi;
|
|
67
|
+
export interface FeatureBinding<Summary extends AnyFeatureGraphSummary, ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>> extends AnyFeatureBindingExternalApi {
|
|
68
|
+
readonly manifest: FeatureManifest;
|
|
69
|
+
readonly identity: symbol;
|
|
70
|
+
readonly summary: Summary;
|
|
71
|
+
readonly composition: CompositionClass<FeatureSummaryCompositionProps<Summary>, FeatureSummaryContract<Summary>, FeatureSummaryStates<Summary>, FeatureSummaryName<Summary>, FeatureSummaryCompositionIdentity<Summary>>;
|
|
72
|
+
readonly strategy: 'lazy' | 'default';
|
|
73
|
+
readonly load: Effect.Effect<LoadedModule<ROut, DirectRequires, FeatureSummaryOpenServices<Summary>, FeatureSummaryUsesInput<Summary>, FeatureSummaryInput<Summary>>, FeatureLoadFailed>;
|
|
74
|
+
readonly placeholder: Option.Option<{
|
|
75
|
+
readonly loading: AnyComposition;
|
|
76
|
+
readonly failed: AnyComposition;
|
|
77
|
+
}>;
|
|
78
|
+
readonly parseInput: (input: unknown) => Option.Option<unknown>;
|
|
79
|
+
readonly boot: ReadonlyArray<Tagged>;
|
|
80
|
+
}
|
|
81
|
+
export type CapturedFeatureBinding<Summary extends AnyFeatureGraphSummary, ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>> = FeatureBinding<Summary, ROut, DirectRequires>;
|
|
82
|
+
export type FeatureBindingCapture<Result> = <Summary extends AnyFeatureGraphSummary, ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>>(binding: FeatureBinding<Summary, ROut, DirectRequires>) => Result;
|
|
83
|
+
export declare const isFeatureBinding: (candidate: unknown) => candidate is AnyFeatureBinding;
|
|
84
|
+
export {};
|
|
85
|
+
//# sourceMappingURL=featureBinding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureBinding.d.ts","sourceRoot":"","sources":["../../src/feature/featureBinding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FeatureGraphValidTypeId, } from '../graph/closure.js';
|
|
2
|
+
export const FeatureBindingTypeId = Symbol.for('reform/FeatureBinding');
|
|
3
|
+
export const FeatureTokenIdentityTypeId = Symbol('reform/FeatureTokenIdentity');
|
|
4
|
+
export const FeatureNativeTypeId = Symbol('reform/FeatureNative');
|
|
5
|
+
export const tree = (token) => token[FeatureNativeTypeId];
|
|
6
|
+
export const isFeatureBinding = (candidate) => typeof candidate === 'object' &&
|
|
7
|
+
candidate !== null &&
|
|
8
|
+
FeatureBindingTypeId in candidate &&
|
|
9
|
+
FeatureGraphValidTypeId in candidate;
|
|
10
|
+
//# sourceMappingURL=featureBinding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureBinding.js","sourceRoot":"","sources":["../../src/feature/featureBinding.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,uBAAuB,GAUxB,MAAM,kBAAkB,CAAA;AAsBzB,MAAM,CAAC,MAAM,oBAAoB,GAAkB,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;AAItF,MAAM,CAAC,MAAM,0BAA0B,GAAkB,MAAM,CAAC,6BAA6B,CAAC,CAAA;AAC9F,MAAM,CAAC,MAAM,mBAAmB,GAAkB,MAAM,CAAC,sBAAsB,CAAC,CAAA;AAuBhF,MAAM,CAAC,MAAM,IAAI,GAAG,CAIlB,KAAY,EACY,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;AAmFvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAkB,EAAkC,EAAE,CACrF,OAAO,SAAS,KAAK,QAAQ;IAC7B,SAAS,KAAK,IAAI;IAClB,oBAAoB,IAAI,SAAS;IACjC,uBAAuB,IAAI,SAAS,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CompositionClass } from '../compose/composition.js';
|
|
2
|
+
import type { UiContract } from '../compose/ui.js';
|
|
3
|
+
import type { FeatureDefinition } from './featureBinding.js';
|
|
4
|
+
import type { EagerFeatureNativeTree, FeatureNativeTree, FeatureSummaryOf, LazyFeatureNativeTree } from './featureNativeTree.js';
|
|
5
|
+
import type { DefaultFeatureOpenServices, FeatureRequirement, RootCompositionIdentity, RootCompositionName } from './featureRequirement.js';
|
|
6
|
+
export interface FeatureClass<FeatureIdentity, P, C extends UiContract, ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>, OpenServices = DefaultFeatureOpenServices<ROut, DirectRequires>, SupportOut = never, SupportDirectRequires extends ReadonlyArray<FeatureRequirement> = readonly [], SupportOpenServices = DefaultFeatureOpenServices<SupportOut, SupportDirectRequires>, UsesInput extends boolean = false, Input = UsesInput extends true ? P : never, S extends ReadonlyArray<unknown> = ReadonlyArray<unknown>, N extends string = RootCompositionName<ROut>, CompositionProps = P, Identity = RootCompositionIdentity<ROut>, Composition extends CompositionClass<CompositionProps, C, S, N, Identity> = CompositionClass<CompositionProps, C, S, N, Identity>> extends FeatureDefinition<FeatureIdentity, FeatureSummaryOf<FeatureIdentity, P, CompositionProps, C, S, N, Identity, OpenServices, SupportOpenServices, UsesInput, Input>, FeatureNativeTree<FeatureSummaryOf<FeatureIdentity, P, CompositionProps, C, S, N, Identity, OpenServices, SupportOpenServices, UsesInput, Input>, ROut, DirectRequires, SupportOut, SupportDirectRequires, Composition>> {
|
|
7
|
+
}
|
|
8
|
+
export type EagerFeatureClass<FeatureIdentity, P, C extends UiContract, ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>, OpenServices, S extends ReadonlyArray<unknown>, N extends string, Identity, Composition extends CompositionClass<P, C, S, N, Identity> = CompositionClass<P, C, S, N, Identity>> = FeatureDefinition<FeatureIdentity, FeatureSummaryOf<FeatureIdentity, P, P, C, S, N, Identity, OpenServices, never, false, never>, EagerFeatureNativeTree<FeatureSummaryOf<FeatureIdentity, P, P, C, S, N, Identity, OpenServices, never, false, never>, ROut, DirectRequires, Composition>>;
|
|
9
|
+
export type LazyFeatureClass<FeatureIdentity, P, C extends UiContract, ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>, OpenServices, SupportOut, SupportDirectRequires extends ReadonlyArray<FeatureRequirement>, SupportOpenServices, UsesInput extends boolean, S extends ReadonlyArray<unknown>, N extends string, CompositionProps, Identity, Composition extends CompositionClass<CompositionProps, C, S, N, Identity> = CompositionClass<CompositionProps, C, S, N, Identity>> = FeatureDefinition<FeatureIdentity, FeatureSummaryOf<FeatureIdentity, P, CompositionProps, C, S, N, Identity, OpenServices, SupportOpenServices, UsesInput, UsesInput extends true ? P : never>, LazyFeatureNativeTree<FeatureSummaryOf<FeatureIdentity, P, CompositionProps, C, S, N, Identity, OpenServices, SupportOpenServices, UsesInput, UsesInput extends true ? P : never>, ROut, DirectRequires, SupportOut, SupportDirectRequires, Composition>>;
|
|
10
|
+
//# sourceMappingURL=featureClass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureClass.d.ts","sourceRoot":"","sources":["../../src/feature/featureClass.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureClass.js","sourceRoot":"","sources":["../../src/feature/featureClass.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { Effect } from 'effect';
|
|
2
|
+
import { Schema } from 'effect';
|
|
3
|
+
import type { AnyComposition, CompositionClass, CompositionPropsReceiver, HasExactCompositionId } from '../compose/composition.js';
|
|
4
|
+
import type { UiContract } from '../compose/ui.js';
|
|
5
|
+
import type { AnyFeatureGraphSummary } from '../graph/closure.js';
|
|
6
|
+
import type { FeatureLoadFailed } from '../internal/errors.js';
|
|
7
|
+
import type { Tagged } from '../runtime/bus.js';
|
|
8
|
+
import { type AnyFeatureBinding, type FailedProps, type FeatureManifest, type FeatureToken } from './featureBinding.js';
|
|
9
|
+
import type { AnyLoadedModule, FeatureModule } from './featureModule.js';
|
|
10
|
+
import type { FeatureRequirement } from './featureRequirement.js';
|
|
11
|
+
export interface RuntimeFeatureTree {
|
|
12
|
+
readonly composition: AnyComposition;
|
|
13
|
+
readonly load: Effect.Effect<AnyLoadedModule, FeatureLoadFailed>;
|
|
14
|
+
readonly binding: AnyFeatureBinding;
|
|
15
|
+
readonly eagerModule: AnyLoadedModule | undefined;
|
|
16
|
+
readonly supportModule: AnyLoadedModule | undefined;
|
|
17
|
+
}
|
|
18
|
+
export interface RuntimeFeature {
|
|
19
|
+
new (): {};
|
|
20
|
+
readonly manifest: FeatureManifest;
|
|
21
|
+
readonly token: FeatureToken<unknown, RuntimeFeatureTree>;
|
|
22
|
+
readonly summary: AnyFeatureGraphSummary;
|
|
23
|
+
}
|
|
24
|
+
export declare const isFeature: (candidate: unknown) => candidate is RuntimeFeature;
|
|
25
|
+
export type PlaceholderComposition<P> = AnyComposition & CompositionPropsReceiver<P>;
|
|
26
|
+
export interface Placeholders<P> {
|
|
27
|
+
readonly loading: PlaceholderComposition<P>;
|
|
28
|
+
readonly failed: PlaceholderComposition<FailedProps>;
|
|
29
|
+
}
|
|
30
|
+
export type FeatureMountProps<UsesInput extends boolean, CompositionProps, InputSchema extends Schema.Schema.AnyNoContext> = UsesInput extends true ? Schema.Schema.Type<InputSchema> : CompositionProps;
|
|
31
|
+
export type FeatureUsesInput<InputSchema extends Schema.Schema.AnyNoContext> = [InputSchema] extends [
|
|
32
|
+
never
|
|
33
|
+
] ? false : true;
|
|
34
|
+
export type FeatureInputValue<InputSchema extends Schema.Schema.AnyNoContext> = [InputSchema] extends [
|
|
35
|
+
never
|
|
36
|
+
] ? never : Schema.Schema.Type<InputSchema>;
|
|
37
|
+
export interface FeatureConfigBaseExternalApi<P, C extends UiContract, S extends ReadonlyArray<unknown>, N extends string, Identity> {
|
|
38
|
+
readonly composition: CompositionClass<P, C, S, N, Identity>;
|
|
39
|
+
readonly boot?: ReadonlyArray<Tagged>;
|
|
40
|
+
}
|
|
41
|
+
export interface ExactFeatureCompositionConfig<Composition extends AnyComposition> {
|
|
42
|
+
readonly composition: Composition;
|
|
43
|
+
}
|
|
44
|
+
export type IncludesComposition<ROut, N extends string, Identity> = HasExactCompositionId<ROut, N, Identity> extends true ? object : {
|
|
45
|
+
readonly missingCompositionService: 'The feature module must provide its root composition';
|
|
46
|
+
};
|
|
47
|
+
export type EagerFeatureConfigExternalApi<P, C extends UiContract, ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>, OpenServices, S extends ReadonlyArray<unknown>, N extends string, Identity> = FeatureConfigBaseExternalApi<P, C, S, N, Identity> & {
|
|
48
|
+
readonly loadingStrategy?: 'default';
|
|
49
|
+
readonly module: FeatureModule<ROut, DirectRequires, OpenServices, false, never> & IncludesComposition<ROut, N, Identity>;
|
|
50
|
+
};
|
|
51
|
+
export type LazyFeatureConfigExternalApi<CompositionProps, C extends UiContract, ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>, OpenServices, SupportOut, SupportDirectRequires extends ReadonlyArray<FeatureRequirement>, SupportOpenServices, S extends ReadonlyArray<unknown>, N extends string, Identity, InputSchema extends Schema.Schema.AnyNoContext, Loading extends AnyComposition, Failed extends AnyComposition> = FeatureConfigBaseExternalApi<CompositionProps, C, S, N, Identity> & {
|
|
52
|
+
readonly composition: CompositionClass<CompositionProps, C, S, N, Identity> & CompositionPropsReceiver<NoInfer<FeatureMountProps<FeatureUsesInput<InputSchema>, CompositionProps, InputSchema>>>;
|
|
53
|
+
readonly loadingStrategy: 'lazy';
|
|
54
|
+
readonly input?: InputSchema;
|
|
55
|
+
readonly load: Effect.Effect<FeatureModule<ROut, DirectRequires, OpenServices, FeatureUsesInput<InputSchema>, FeatureInputValue<InputSchema>> & IncludesComposition<ROut, N, Identity>, FeatureLoadFailed>;
|
|
56
|
+
readonly placeholder: {
|
|
57
|
+
readonly loading: Loading & CompositionPropsReceiver<NoInfer<FeatureMountProps<FeatureUsesInput<InputSchema>, CompositionProps, InputSchema>>>;
|
|
58
|
+
readonly failed: Failed & CompositionPropsReceiver<FailedProps>;
|
|
59
|
+
};
|
|
60
|
+
readonly eager?: FeatureModule<SupportOut, SupportDirectRequires, SupportOpenServices, false, never>;
|
|
61
|
+
} & (FeatureUsesInput<InputSchema> extends true ? {
|
|
62
|
+
readonly input: InputSchema;
|
|
63
|
+
} : object);
|
|
64
|
+
export type MakeImplementationConfigExternalApi = {
|
|
65
|
+
readonly composition: AnyComposition;
|
|
66
|
+
readonly boot?: ReadonlyArray<Tagged>;
|
|
67
|
+
readonly loadingStrategy?: 'default';
|
|
68
|
+
readonly module: AnyLoadedModule;
|
|
69
|
+
} | {
|
|
70
|
+
readonly composition: AnyComposition;
|
|
71
|
+
readonly boot?: ReadonlyArray<Tagged>;
|
|
72
|
+
readonly loadingStrategy: 'lazy';
|
|
73
|
+
readonly input?: Schema.Schema.Any;
|
|
74
|
+
readonly load: Effect.Effect<AnyLoadedModule, FeatureLoadFailed>;
|
|
75
|
+
readonly placeholder: {
|
|
76
|
+
readonly loading: AnyComposition;
|
|
77
|
+
readonly failed: AnyComposition;
|
|
78
|
+
};
|
|
79
|
+
readonly eager?: AnyLoadedModule;
|
|
80
|
+
};
|
|
81
|
+
export declare const isMakeImplementationConfig: (candidate: unknown) => candidate is MakeImplementationConfigExternalApi;
|
|
82
|
+
export type RuntimePlaceholders = {
|
|
83
|
+
readonly loading: AnyComposition;
|
|
84
|
+
readonly failed: AnyComposition;
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=featureConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureConfig.d.ts","sourceRoot":"","sources":["../../src/feature/featureConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Schema } from 'effect';
|
|
2
|
+
import { FeatureNativeTypeId, } from './featureBinding.js';
|
|
3
|
+
const isRuntimeFeatureToken = (candidate) => typeof candidate === 'object' && candidate !== null && FeatureNativeTypeId in candidate;
|
|
4
|
+
export const isFeature = (candidate) => (typeof candidate === 'function' || typeof candidate === 'object') &&
|
|
5
|
+
candidate !== null &&
|
|
6
|
+
'token' in candidate &&
|
|
7
|
+
isRuntimeFeatureToken(candidate.token);
|
|
8
|
+
export const isMakeImplementationConfig = (candidate) => typeof candidate === 'object' &&
|
|
9
|
+
candidate !== null &&
|
|
10
|
+
'composition' in candidate &&
|
|
11
|
+
(!('input' in candidate) || Schema.isSchema(candidate.input)) &&
|
|
12
|
+
('module' in candidate || ('load' in candidate && 'placeholder' in candidate));
|
|
13
|
+
//# sourceMappingURL=featureConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureConfig.js","sourceRoot":"","sources":["../../src/feature/featureConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAW/B,OAAO,EAIL,mBAAmB,GAEpB,MAAM,kBAAkB,CAAA;AAmBzB,MAAM,qBAAqB,GAAG,CAC5B,SAAkB,EACsC,EAAE,CAC1D,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,mBAAmB,IAAI,SAAS,CAAA;AAEzF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAkB,EAA+B,EAAE,CAC3E,CAAC,OAAO,SAAS,KAAK,UAAU,IAAI,OAAO,SAAS,KAAK,QAAQ,CAAC;IAClE,SAAS,KAAK,IAAI;IAClB,OAAO,IAAI,SAAS;IACpB,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAqIxC,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,SAAkB,EACgC,EAAE,CACpD,OAAO,SAAS,KAAK,QAAQ;IAC7B,SAAS,KAAK,IAAI;IAClB,aAAa,IAAI,SAAS;IAC1B,CAAC,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC,QAAQ,IAAI,SAAS,IAAI,CAAC,MAAM,IAAI,SAAS,IAAI,aAAa,IAAI,SAAS,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type Effect, Option, Schema } from 'effect';
|
|
2
|
+
import type { AnyComposition, CompositionClass } from '../compose/composition.js';
|
|
3
|
+
import type { UiContract } from '../compose/ui.js';
|
|
4
|
+
import { type AnyFeatureGraphSummary, type FeatureSummaryCompositionIdentity, type FeatureSummaryCompositionProps, type FeatureSummaryContract, type FeatureSummaryInput, type FeatureSummaryName, type FeatureSummaryOpenServices, type FeatureSummaryStates, type FeatureSummaryUsesInput } from '../graph/closure.js';
|
|
5
|
+
import type { FeatureLoadFailed } from '../internal/errors.js';
|
|
6
|
+
import type { Tagged } from '../runtime/bus.js';
|
|
7
|
+
import { type FeatureBinding, type FeatureManifest } from './featureBinding.js';
|
|
8
|
+
import type { RuntimePlaceholders } from './featureConfig.js';
|
|
9
|
+
import type { LoadedModule } from './featureModule.js';
|
|
10
|
+
import type { FeatureSummaryOf } from './featureNativeTree.js';
|
|
11
|
+
import type { FeatureRequirement } from './featureRequirement.js';
|
|
12
|
+
export declare const makeFeatureManifest: (name: string, strategy: "lazy" | "default", composition: AnyComposition, placeholder: Option.Option<RuntimePlaceholders>) => FeatureManifest;
|
|
13
|
+
export declare const makeFeatureSummary: <FeatureIdentity, MountProps, CompositionProps, C extends UiContract, S extends ReadonlyArray<unknown>, N extends string, Identity, OpenServices, SupportOpenServices, UsesInput extends boolean, Input>(composition: CompositionClass<CompositionProps, C, S, N, Identity>) => FeatureSummaryOf<FeatureIdentity, MountProps, CompositionProps, C, S, N, Identity, OpenServices, SupportOpenServices, UsesInput, Input>;
|
|
14
|
+
export declare const makeFeatureBinding: <Summary extends AnyFeatureGraphSummary, ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>>(identity: symbol, manifest: FeatureManifest, summary: Summary, composition: CompositionClass<FeatureSummaryCompositionProps<Summary>, FeatureSummaryContract<Summary>, FeatureSummaryStates<Summary>, FeatureSummaryName<Summary>, FeatureSummaryCompositionIdentity<Summary>>, load: Effect.Effect<LoadedModule<ROut, DirectRequires, FeatureSummaryOpenServices<Summary>, FeatureSummaryUsesInput<Summary>, FeatureSummaryInput<Summary>>, FeatureLoadFailed>, placeholder: Option.Option<RuntimePlaceholders>, inputSchema: Schema.Schema.AnyNoContext | undefined, boot: ReadonlyArray<Tagged>) => FeatureBinding<Summary, ROut, DirectRequires>;
|
|
15
|
+
//# sourceMappingURL=featureFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureFactory.d.ts","sourceRoot":"","sources":["../../src/feature/featureFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EACL,KAAK,sBAAsB,EAK3B,KAAK,iCAAiC,EACtC,KAAK,8BAA8B,EACnC,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAE7B,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAE9D,eAAO,MAAM,mBAAmB,GAC9B,MAAM,MAAM,EACZ,UAAU,MAAM,GAAG,SAAS,EAC5B,aAAa,cAAc,EAC3B,aAAa,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAC9C,eASD,CAAA;AAwBF,eAAO,MAAM,kBAAkB,GAC7B,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAChC,CAAC,SAAS,MAAM,EAChB,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,SAAS,SAAS,OAAO,EACzB,KAAK,EAEL,aAAa,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,KACjE,gBAAgB,CACjB,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,CAAC,EACD,CAAC,EACD,CAAC,EACD,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,SAAS,EACT,KAAK,CAqBL,CAAA;AAEF,eAAO,MAAM,kBAAkB,GAC7B,OAAO,SAAS,sBAAsB,EACtC,IAAI,EACJ,cAAc,SAAS,aAAa,CAAC,kBAAkB,CAAC,EAExD,UAAU,MAAM,EAChB,UAAU,eAAe,EACzB,SAAS,OAAO,EAChB,aAAa,gBAAgB,CAC3B,8BAA8B,CAAC,OAAO,CAAC,EACvC,sBAAsB,CAAC,OAAO,CAAC,EAC/B,oBAAoB,CAAC,OAAO,CAAC,EAC7B,kBAAkB,CAAC,OAAO,CAAC,EAC3B,iCAAiC,CAAC,OAAO,CAAC,CAC3C,EACD,MAAM,MAAM,CAAC,MAAM,CACjB,YAAY,CACV,IAAI,EACJ,cAAc,EACd,0BAA0B,CAAC,OAAO,CAAC,EACnC,uBAAuB,CAAC,OAAO,CAAC,EAChC,mBAAmB,CAAC,OAAO,CAAC,CAC7B,EACD,iBAAiB,CAClB,EACD,aAAa,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAC/C,aAAa,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,SAAS,EACnD,MAAM,aAAa,CAAC,MAAM,CAAC,KAC1B,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,CAgB9C,CAAA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Option, Schema } from 'effect';
|
|
2
|
+
import { FeatureChildSummaryTypeId, FeatureGraphSummaryTypeId, FeatureGraphValidTypeId, FeatureModuleGraphValidTypeId, SlotBindingSummaryTypeId, } from '../graph/closure.js';
|
|
3
|
+
import { FeatureBindingTypeId, } from './featureBinding.js';
|
|
4
|
+
export const makeFeatureManifest = (name, strategy, composition, placeholder) => ({
|
|
5
|
+
kind: 'Feature',
|
|
6
|
+
name,
|
|
7
|
+
strategy,
|
|
8
|
+
composition: composition.manifest,
|
|
9
|
+
placeholder: Option.map(placeholder, (placeholders) => ({
|
|
10
|
+
loading: placeholders.loading.manifest,
|
|
11
|
+
failed: placeholders.failed.manifest,
|
|
12
|
+
})),
|
|
13
|
+
});
|
|
14
|
+
const makeFeatureInputParser = (composition, inputSchema, placeholder) => (input) => Option.flatMap(Option.match(Option.fromNullable(inputSchema), {
|
|
15
|
+
onNone: () => Option.some(input),
|
|
16
|
+
onSome: (schema) => Schema.validateOption(schema)(input),
|
|
17
|
+
}), (decoded) => Option.flatMap(composition.parseProps(decoded), () => Option.match(placeholder, {
|
|
18
|
+
onNone: () => Option.some(decoded),
|
|
19
|
+
onSome: (placeholders) => Option.map(placeholders.loading.parseProps(decoded), () => decoded),
|
|
20
|
+
})));
|
|
21
|
+
export const makeFeatureSummary = (composition) => ({
|
|
22
|
+
[SlotBindingSummaryTypeId]: SlotBindingSummaryTypeId,
|
|
23
|
+
[FeatureChildSummaryTypeId]: {
|
|
24
|
+
featureIdentity: [],
|
|
25
|
+
compositionIdentity: [],
|
|
26
|
+
},
|
|
27
|
+
[FeatureGraphSummaryTypeId]: {
|
|
28
|
+
featureIdentity: [],
|
|
29
|
+
mountProps: [],
|
|
30
|
+
compositionProps: [],
|
|
31
|
+
contract: [],
|
|
32
|
+
states: [],
|
|
33
|
+
name: composition.manifest.name,
|
|
34
|
+
compositionIdentity: [],
|
|
35
|
+
openServices: [],
|
|
36
|
+
supportOpenServices: [],
|
|
37
|
+
usesInput: [],
|
|
38
|
+
input: [],
|
|
39
|
+
validated: FeatureModuleGraphValidTypeId,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
export const makeFeatureBinding = (identity, manifest, summary, composition, load, placeholder, inputSchema, boot) => {
|
|
43
|
+
const binding = {
|
|
44
|
+
[FeatureBindingTypeId]: FeatureBindingTypeId,
|
|
45
|
+
[FeatureGraphValidTypeId]: FeatureGraphValidTypeId,
|
|
46
|
+
manifest,
|
|
47
|
+
identity,
|
|
48
|
+
summary,
|
|
49
|
+
composition,
|
|
50
|
+
strategy: manifest.strategy,
|
|
51
|
+
load,
|
|
52
|
+
placeholder,
|
|
53
|
+
parseInput: makeFeatureInputParser(composition, inputSchema, placeholder),
|
|
54
|
+
boot,
|
|
55
|
+
capture: (visit) => visit(binding),
|
|
56
|
+
};
|
|
57
|
+
return binding;
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=featureFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureFactory.js","sourceRoot":"","sources":["../../src/feature/featureFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Effect, type Layer, type Schema } from 'effect';
|
|
2
|
+
import { FeatureModuleGraphValidTypeId, type ModuleOpenServices, type ValidateFeatureGraphLayer } from '../graph/closure.js';
|
|
3
|
+
import { FeatureLoadFailed } from '../internal/errors.js';
|
|
4
|
+
import type { DefaultFeatureOpenServices, FeatureModuleInput, FeatureRequirement } from './featureRequirement.js';
|
|
5
|
+
export interface FeatureModule<ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>, OpenServices = DefaultFeatureOpenServices<ROut, DirectRequires>, UsesInput extends boolean = false, Input = never> extends AnyLoadedModule {
|
|
6
|
+
readonly [FeatureModuleGraphValidTypeId]: FeatureModuleGraphValidTypeId;
|
|
7
|
+
readonly requires: DirectRequires;
|
|
8
|
+
readonly usesInput: UsesInput;
|
|
9
|
+
readonly layer: Layer.Layer<ROut, never, FeatureModuleInput<OpenServices, UsesInput>>;
|
|
10
|
+
readonly inputSchema: UsesInput extends true ? Schema.Schema.AnyNoContext : undefined;
|
|
11
|
+
readonly Input: (input: Input) => void;
|
|
12
|
+
}
|
|
13
|
+
export type LoadedModuleCapture<Result> = <ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>, OpenServices, UsesInput extends boolean, Input>(module: LoadedModule<ROut, DirectRequires, OpenServices, UsesInput, Input>) => Result;
|
|
14
|
+
export interface AnyLoadedModule {
|
|
15
|
+
readonly capture: <Result>(visit: LoadedModuleCapture<Result>) => Result;
|
|
16
|
+
}
|
|
17
|
+
export type FeatureLayerOutput<L extends Layer.Layer.Any> = Layer.Layer.Success<L>;
|
|
18
|
+
export type ExactFeatureLayer<L extends Layer.Layer.Any, UsesInput extends boolean> = Layer.Layer<FeatureLayerOutput<L>, never, FeatureModuleInput<ModuleOpenServices<L, UsesInput>, UsesInput>> & (unknown extends Layer.Layer.Context<L> ? {
|
|
19
|
+
readonly featureLayerContextMustBeExact: 'A feature layer context cannot be erased';
|
|
20
|
+
} : object);
|
|
21
|
+
export declare const featureModule: <const DirectRequires extends ReadonlyArray<FeatureRequirement>, L extends Layer.Layer.Any>(requires: DirectRequires, layer: L & ExactFeatureLayer<L, false> & ValidateFeatureGraphLayer<L, DirectRequires, false>) => FeatureModule<FeatureLayerOutput<L>, DirectRequires, ModuleOpenServices<L, false>, false, never>;
|
|
22
|
+
export declare const featureModuleFromInput: <const InputSchema extends Schema.Schema.AnyNoContext, const DirectRequires extends ReadonlyArray<FeatureRequirement>, L extends Layer.Layer.Any>(input: InputSchema, requires: DirectRequires, layer: L & ExactFeatureLayer<L, true> & ValidateFeatureGraphLayer<L, DirectRequires, true>) => FeatureModule<FeatureLayerOutput<L>, DirectRequires, ModuleOpenServices<L, true>, true, Schema.Schema.Type<InputSchema>>;
|
|
23
|
+
export declare const lazyImport: <M>(thunk: () => Promise<{
|
|
24
|
+
readonly default: M;
|
|
25
|
+
}>) => Effect.Effect<M, FeatureLoadFailed>;
|
|
26
|
+
export interface LoadedModule<ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>, OpenServices = DefaultFeatureOpenServices<ROut, DirectRequires>, UsesInput extends boolean = false, Input = never> extends FeatureModule<ROut, DirectRequires, OpenServices, UsesInput, Input> {
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=featureModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureModule.d.ts","sourceRoot":"","sources":["../../src/feature/featureModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import { FeatureModuleGraphValidTypeId, } from '../graph/closure.js';
|
|
3
|
+
import { FeatureLoadFailed } from '../internal/errors.js';
|
|
4
|
+
export const featureModule = (requires, layer) => {
|
|
5
|
+
const module = {
|
|
6
|
+
[FeatureModuleGraphValidTypeId]: FeatureModuleGraphValidTypeId,
|
|
7
|
+
requires,
|
|
8
|
+
usesInput: false,
|
|
9
|
+
layer,
|
|
10
|
+
inputSchema: undefined,
|
|
11
|
+
Input: () => undefined,
|
|
12
|
+
capture: (visit) => visit(module),
|
|
13
|
+
};
|
|
14
|
+
return module;
|
|
15
|
+
};
|
|
16
|
+
export const featureModuleFromInput = (input, requires, layer) => {
|
|
17
|
+
const module = {
|
|
18
|
+
[FeatureModuleGraphValidTypeId]: FeatureModuleGraphValidTypeId,
|
|
19
|
+
requires,
|
|
20
|
+
usesInput: true,
|
|
21
|
+
layer,
|
|
22
|
+
inputSchema: input,
|
|
23
|
+
Input: () => undefined,
|
|
24
|
+
capture: (visit) => visit(module),
|
|
25
|
+
};
|
|
26
|
+
return module;
|
|
27
|
+
};
|
|
28
|
+
// Seal dynamic imports as typed Effects so chunk failures become FeatureLoadFailed.
|
|
29
|
+
export const lazyImport = (thunk) => Effect.tryPromise({
|
|
30
|
+
try: thunk,
|
|
31
|
+
catch: (cause) => new FeatureLoadFailed({ cause }),
|
|
32
|
+
}).pipe(Effect.map((module) => module.default));
|
|
33
|
+
//# sourceMappingURL=featureModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureModule.js","sourceRoot":"","sources":["../../src/feature/featureModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA2B,MAAM,QAAQ,CAAA;AACxD,OAAO,EACL,6BAA6B,GAG9B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAkDtD,MAAM,CAAC,MAAM,aAAa,GAAG,CAI3B,QAAwB,EACxB,KAA4F,EAO5F,EAAE;IACF,MAAM,MAAM,GAMR;QACF,CAAC,6BAA6B,CAAC,EAAE,6BAA6B;QAC9D,QAAQ;QACR,SAAS,EAAE,KAAK;QAChB,KAAK;QACL,WAAW,EAAE,SAAS;QACtB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;QACtB,OAAO,EAAE,CAAS,KAAkC,EAAU,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;KAC/E,CAAA;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAKpC,KAAkB,EAClB,QAAwB,EACxB,KAA0F,EAO1F,EAAE;IACF,MAAM,MAAM,GAMR;QACF,CAAC,6BAA6B,CAAC,EAAE,6BAA6B;QAC9D,QAAQ;QACR,SAAS,EAAE,IAAI;QACf,KAAK;QACL,WAAW,EAAE,KAAK;QAClB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;QACtB,OAAO,EAAE,CAAS,KAAkC,EAAU,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;KAC/E,CAAA;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,oFAAoF;AACpF,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,KAA6C,EACR,EAAE,CACvC,MAAM,CAAC,UAAU,CAAC;IAChB,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,EAAE,KAAK,EAAE,CAAC;CACnD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Effect } from 'effect';
|
|
2
|
+
import type { CompositionClass } from '../compose/composition.js';
|
|
3
|
+
import type { UiContract } from '../compose/ui.js';
|
|
4
|
+
import type { AnyFeatureGraphSummary, FeatureGraphSummary, FeatureSummaryCompositionIdentity, FeatureSummaryCompositionProps, FeatureSummaryContract, FeatureSummaryInput, FeatureSummaryName, FeatureSummaryOpenServices, FeatureSummaryStates, FeatureSummarySupportOpenServices, FeatureSummaryUsesInput } from '../graph/closure.js';
|
|
5
|
+
import type { FeatureLoadFailed } from '../internal/errors.js';
|
|
6
|
+
import type { CapturedFeatureBinding } from './featureBinding.js';
|
|
7
|
+
import type { FeatureModule } from './featureModule.js';
|
|
8
|
+
import type { FeatureRequirement } from './featureRequirement.js';
|
|
9
|
+
export interface FeatureNativeTree<Summary extends AnyFeatureGraphSummary, ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>, SupportOut, SupportDirectRequires extends ReadonlyArray<FeatureRequirement>, Composition extends CompositionClass<FeatureSummaryCompositionProps<Summary>, FeatureSummaryContract<Summary>, FeatureSummaryStates<Summary>, FeatureSummaryName<Summary>, FeatureSummaryCompositionIdentity<Summary>> = CompositionClass<FeatureSummaryCompositionProps<Summary>, FeatureSummaryContract<Summary>, FeatureSummaryStates<Summary>, FeatureSummaryName<Summary>, FeatureSummaryCompositionIdentity<Summary>>> {
|
|
10
|
+
readonly identity: symbol;
|
|
11
|
+
readonly summary: Summary;
|
|
12
|
+
readonly composition: Composition;
|
|
13
|
+
readonly load: Effect.Effect<FeatureModule<ROut, DirectRequires, FeatureSummaryOpenServices<Summary>, FeatureSummaryUsesInput<Summary>, FeatureSummaryInput<Summary>>, FeatureLoadFailed>;
|
|
14
|
+
readonly binding: CapturedFeatureBinding<Summary, ROut, DirectRequires>;
|
|
15
|
+
readonly eagerModule: FeatureModule<ROut, DirectRequires, FeatureSummaryOpenServices<Summary>, false, never> | undefined;
|
|
16
|
+
readonly supportModule: FeatureModule<SupportOut, SupportDirectRequires, FeatureSummarySupportOpenServices<Summary>, false, never> | undefined;
|
|
17
|
+
}
|
|
18
|
+
export interface EagerFeatureNativeTree<Summary extends AnyFeatureGraphSummary, ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>, Composition extends CompositionClass<FeatureSummaryCompositionProps<Summary>, FeatureSummaryContract<Summary>, FeatureSummaryStates<Summary>, FeatureSummaryName<Summary>, FeatureSummaryCompositionIdentity<Summary>> = CompositionClass<FeatureSummaryCompositionProps<Summary>, FeatureSummaryContract<Summary>, FeatureSummaryStates<Summary>, FeatureSummaryName<Summary>, FeatureSummaryCompositionIdentity<Summary>>> extends FeatureNativeTree<Summary, ROut, DirectRequires, never, readonly [], Composition> {
|
|
19
|
+
readonly eagerModule: FeatureModule<ROut, DirectRequires, FeatureSummaryOpenServices<Summary>, false, never>;
|
|
20
|
+
readonly supportModule: undefined;
|
|
21
|
+
}
|
|
22
|
+
export interface LazyFeatureNativeTree<Summary extends AnyFeatureGraphSummary, ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>, SupportOut, SupportDirectRequires extends ReadonlyArray<FeatureRequirement>, Composition extends CompositionClass<FeatureSummaryCompositionProps<Summary>, FeatureSummaryContract<Summary>, FeatureSummaryStates<Summary>, FeatureSummaryName<Summary>, FeatureSummaryCompositionIdentity<Summary>> = CompositionClass<FeatureSummaryCompositionProps<Summary>, FeatureSummaryContract<Summary>, FeatureSummaryStates<Summary>, FeatureSummaryName<Summary>, FeatureSummaryCompositionIdentity<Summary>>> extends FeatureNativeTree<Summary, ROut, DirectRequires, SupportOut, SupportDirectRequires, Composition> {
|
|
23
|
+
readonly eagerModule: undefined;
|
|
24
|
+
}
|
|
25
|
+
export type FeatureSummaryOf<FeatureIdentity, MountProps, CompositionProps, C extends UiContract, S extends ReadonlyArray<unknown>, N extends string, Identity, OpenServices, SupportOpenServices, UsesInput extends boolean, Input> = FeatureGraphSummary<FeatureIdentity, MountProps, CompositionProps, C, S, N, Identity, OpenServices, SupportOpenServices, UsesInput, Input>;
|
|
26
|
+
//# sourceMappingURL=featureNativeTree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureNativeTree.d.ts","sourceRoot":"","sources":["../../src/feature/featureNativeTree.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureNativeTree.js","sourceRoot":"","sources":["../../src/feature/featureNativeTree.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Context } from 'effect';
|
|
2
|
+
import { CompositionIdTypeId } from '../compose/composition.js';
|
|
3
|
+
import type { OpenServicesFromFeatureSlotWitnesses } from '../graph/closure.js';
|
|
4
|
+
import type { EngineServices } from '../runtime/loop.js';
|
|
5
|
+
declare const FeatureInputBase: Context.TagClass<FeatureInput, 'reform/FeatureInput', unknown>;
|
|
6
|
+
export declare class FeatureInput extends FeatureInputBase {
|
|
7
|
+
}
|
|
8
|
+
export interface FeatureServiceTag<out Identifier = unknown, out Service = unknown> {
|
|
9
|
+
readonly [Context.TagTypeId]: object;
|
|
10
|
+
readonly Identifier: Identifier;
|
|
11
|
+
readonly Service: Service;
|
|
12
|
+
}
|
|
13
|
+
export interface StoredFeatureRequirement<out Identifier = unknown, out Service = unknown> {
|
|
14
|
+
readonly store: FeatureServiceTag<Identifier, Service>;
|
|
15
|
+
}
|
|
16
|
+
export type RequireCarrier = StoredFeatureRequirement | {
|
|
17
|
+
readonly members: ReadonlyArray<StoredFeatureRequirement>;
|
|
18
|
+
};
|
|
19
|
+
export type FeatureRequirement = RequireCarrier | FeatureServiceTag;
|
|
20
|
+
export type TagRequirement<Tag> = Tag extends FeatureServiceTag<infer Identifier, infer _Service> ? Identifier : never;
|
|
21
|
+
export type StoredRequirementIdentifier<Carrier> = Carrier extends {
|
|
22
|
+
readonly store: infer Tag;
|
|
23
|
+
} ? TagRequirement<Tag> : never;
|
|
24
|
+
export type RequirementIdentifier<Requirement> = Requirement extends FeatureServiceTag ? TagRequirement<Requirement> : Requirement extends {
|
|
25
|
+
readonly members: infer Members extends ReadonlyArray<StoredFeatureRequirement>;
|
|
26
|
+
} ? StoredRequirementIdentifier<Members[number]> : StoredRequirementIdentifier<Requirement>;
|
|
27
|
+
export type ProvidedBy<Requires extends ReadonlyArray<FeatureRequirement>> = RequirementIdentifier<Requires[number]>;
|
|
28
|
+
export type DefaultFeatureOpenServices<ROut, DirectRequires extends ReadonlyArray<FeatureRequirement>> = ProvidedBy<DirectRequires> | OpenServicesFromFeatureSlotWitnesses<ROut>;
|
|
29
|
+
export type CompositionNames<ROut> = ROut extends {
|
|
30
|
+
readonly [CompositionIdTypeId]: {
|
|
31
|
+
readonly name: infer Name extends string;
|
|
32
|
+
};
|
|
33
|
+
} ? Name : never;
|
|
34
|
+
export type CompositionIdentities<ROut> = ROut extends {
|
|
35
|
+
readonly [CompositionIdTypeId]: {
|
|
36
|
+
readonly identity: infer Identity;
|
|
37
|
+
};
|
|
38
|
+
} ? Identity : never;
|
|
39
|
+
export type RootCompositionName<ROut> = [CompositionNames<ROut>] extends [never] ? string : CompositionNames<ROut>;
|
|
40
|
+
export type RootCompositionIdentity<ROut> = [CompositionIdentities<ROut>] extends [never] ? unknown : CompositionIdentities<ROut>;
|
|
41
|
+
export type FeatureModuleInput<OpenServices, UsesInput extends boolean> = EngineServices | OpenServices | (UsesInput extends true ? FeatureInput : never);
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=featureRequirement.d.ts.map
|