@dxos/app-framework - v0.15.0
    Preparing search index...

    Type Alias ValidateModuleOptions<Opts>

    ValidateModuleOptions: Opts extends | { provides: readonly AnyTag[] }
    | { requires: readonly AnyTag[] }
    | { activatesOn: Events; requires: readonly AnyTag[] }
        ? Opts["activate"] extends (
            props?: any,
        ) => Effect.Effect<infer A, infer E, infer R>
            ? [R] extends [Requirements<OptRequires<Opts>>]
                ? [E] extends [Error]
                    ? [A] extends [ProvidesReturn<OptProvides<Opts>>]
                        ? [ProvidedIds<OptProvides<Opts>>] extends [CoveredBy<A>]
                            ? true
                            : {
                                "activate return misses declared capabilities": Exclude<
                                    ProvidedIds<OptProvides<Opts>>,
                                    CoveredBy<A>,
                                >;
                            }
                        : {
                            "activate return includes undeclared capabilities": Exclude<
                                CoveredBy<A>,
                                ProvidedIds<OptProvides<Opts>>,
                            >;
                        }
                    : { "activate error channel must extend Error": E }
                : {
                    "activate requires undeclared capabilities": Exclude<
                        R,
                        Requirements<OptRequires<Opts>>,
                    >;
                }
            : { "activate must be an effect-returning function": Opts["activate"] }
        : true

    Validates typed module options: evaluates to true for a valid module, otherwise to an unconstructible branded type naming the violation. Checks that activate's environment only uses declared requires, that its error channel extends Error, and that its return exactly covers the declared provides. Options with no capability declarations are a dependency-mode root and validate as true (the runtime normalizer classifies them).

    Applied on addModule's return type (not intersected with the parameter): inference of Opts from an options object containing inline generator activates fails when the parameter is an intersection with a conditional over Opts, but succeeds for a naked Opts parameter. An invalid module surfaces as a non-callable branded return, which the .pipe(...) site rejects with the brand's message.

    Type Parameters