UNPKG

@teambit/harmony

Version:
64 lines (63 loc) 1.97 kB
import 'reflect-metadata'; import ExtensionGraph, { DependencyGraphOptions } from './extension-graph/extension-graph'; import { Extension, ExtensionManifest } from './extension'; import { Config } from './config'; import { Aspect } from './aspect'; import { Runtimes } from './runtimes/runtimes'; import { RuntimeDefinition } from './runtimes/runtime-definition'; export type GlobalConfig = { [key: string]: object; }; export type RequireFn = (aspect: Extension, runtime: RuntimeDefinition) => Promise<void>; export declare class Harmony { /** * extension graph */ readonly graph: ExtensionGraph; /** * harmony top level config */ readonly config: Config; readonly runtimes: Runtimes; readonly activeRuntime: string; private depOptions; constructor( /** * extension graph */ graph: ExtensionGraph, /** * harmony top level config */ config: Config, runtimes: Runtimes, activeRuntime: string, depOptions: DependencyGraphOptions); current: string | null; private runtime; /** * list all registered extensions */ get extensions(): Map<string, Extension>; /** * list all registered extensions ids */ get extensionsIds(): string[]; /** * load an Aspect into the dependency graph. */ load(extensions: ExtensionManifest[]): Promise<void>; /** * set extensions during Harmony runtime. * hack! */ set(extensions: ExtensionManifest[]): Promise<void>; private runOne; getDependencies(aspect: Extension): Extension[]; initExtension(id: string): void; endExtension(): void; /** * get an extension from harmony. */ get<T>(id: string): T; resolveRuntime(name: string): RuntimeDefinition; run(requireFn?: RequireFn): Promise<void>; static load(aspects: Aspect[], runtime: string, globalConfig: GlobalConfig, options?: DependencyGraphOptions): Promise<Harmony>; }