Skip to content

ComposedContext type

Home > @rimitive/core > ComposedContext

The composed context type from a tuple of Modules.

Maps module names to their implementations and adds a dispose() method. For overridden modules, also includes the replacement modules’ dependencies.

Signature:

export type ComposedContext<TModules extends readonly Module[]> = {
[M in FlattenModule<TModules[number]> as ModuleName<M>]: ModuleImpl<M>;
} & AllReplacementDeps<TModules> & {
dispose(): void;
};

References: Module, FlattenModule, ModuleName, ModuleImpl, AllReplacementDeps

type SignalModule = Module<'signal', SignalImpl, SignalDeps>;
type ComputedModule = Module<'computed', ComputedImpl, ComputedDeps>;
type Ctx = ComposedContext<[SignalModule, ComputedModule]>;
// Ctx = { signal: SignalImpl; computed: ComputedImpl; dispose(): void }

With override

const OverriddenService = override(Service, { logger: ConfigurableLogger });
type Ctx = ComposedContext<[typeof OverriddenService]>;
// Ctx includes 'service', 'logger', AND 'config' (from ConfigurableLogger's deps)