@microsoft/teams.apps
Version:
<p> <a href="https://www.npmjs.com/package/@microsoft/teams.apps" target="_blank"> <img src="https://img.shields.io/npm/v/@microsoft/teams.apps/latest" /> </a> <a href="https://www.npmjs.com/package/@microsoft/teams.apps?activeTab=code
12 lines (11 loc) • 679 B
TypeScript
import { IPlugin } from './plugin';
import { UnionToIntersection } from './union-to-intersection';
import type { App } from '../app';
import type { IRoutes } from '../routes';
/**
* Extracts the events from a plugin if it extends PluginWithEvents
*/
export type PluginAdditionalContext<T> = UnionToIntersection<T extends IPlugin<infer Ctx, any> ? Ctx : {}> extends infer R ? R extends Record<string, any> ? R : {} : {};
type AppPlugin<TApp extends App> = TApp extends App<infer TPlugin> ? TPlugin : never;
export type AppRoutingHandler<Name extends keyof IRoutes, TApp extends App<any>> = Exclude<IRoutes<PluginAdditionalContext<AppPlugin<TApp>>>[Name], undefined>;
export {};