Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | import type { PlatformCapabilityRegistry } from './capabilities/index.ts';
export type CapabilityName = keyof PlatformCapabilityRegistry;
export type Capability<Name extends CapabilityName> =
PlatformCapabilityRegistry[Name]['capability'];
export type CapabilityConfig<Name extends CapabilityName> =
PlatformCapabilityRegistry[Name]['config'];
export type CapabilityFactory<Name extends CapabilityName, Options = never> = (
config: CapabilityConfig<Name>,
options?: Options,
) => Capability<Name>;
export type CapabilityFactories = {
[Key in CapabilityName]: CapabilityFactory<Key>;
};
export type Platform<Name extends CapabilityName> = {
[Key in Name]: PlatformCapabilityRegistry[Key]['capability'];
};
export type PlatformConfig<Name extends CapabilityName = CapabilityName> = {
[Key in Name]: PlatformCapabilityRegistry[Key]['config'];
};
/**
* Extracts the options type from a capability factory
*/
export type ExtractCapabilityOptions<Factory> =
Factory extends CapabilityFactory<never, infer Options> ? Options : never;
/**
* Maps capability names to their factory options types
*/
export type PlatformOptions<Factories extends Partial<CapabilityFactories>> = {
[Key in keyof Factories]: ExtractCapabilityOptions<Factories[Key]>;
};
export type PlatformFactory<
KnownCapabilities extends CapabilityName = CapabilityName,
Factories extends Partial<CapabilityFactories> = Partial<CapabilityFactories>,
> = (
config: Partial<PlatformConfig<KnownCapabilities>>,
options?: Partial<PlatformOptions<Factories>>,
) => Promise<Platform<keyof typeof config>>;
|