@teambit/bundler
Version:
122 lines (121 loc) • 4.18 kB
TypeScript
import type { PubsubMain } from '@teambit/pubsub';
import type { Component } from '@teambit/component';
import type { DependencyResolverMain } from '@teambit/dependency-resolver';
import type { EnvsMain } from '@teambit/envs';
import type { GraphqlMain } from '@teambit/graphql';
import type { SlotRegistry } from '@teambit/harmony';
import type { BrowserRuntime } from './browser-runtime';
import type { ComponentServer } from './component-server';
import type { BundlerContext } from './bundler-context';
import { DevServerService } from './dev-server.service';
import type { DevServer } from './dev-server';
export type DevServerTransformer = (devServer: DevServer, { envId }: {
envId: string;
}) => DevServer;
export type OnPreDevServerCreated = (newCompsWithoutDevServer: Component[]) => Promise<void>;
export type BrowserRuntimeSlot = SlotRegistry<BrowserRuntime>;
export type DevServerTransformerSlot = SlotRegistry<DevServerTransformer>;
export type OnPreDevServerCreatedSlot = SlotRegistry<OnPreDevServerCreated>;
export type BundlerConfig = {
dedicatedEnvDevServers: string[];
};
/**
* bundler extension.
*/
export declare class BundlerMain {
readonly config: BundlerConfig;
/**
* Pubsub extension.
*/
private pubsub;
/**
* environments extension.
*/
private envs;
/**
* dev server service.
*/
private devService;
/**
* browser runtime slot.
*/
private runtimeSlot;
/**
* dev server transformer slot.
*/
private devServerTransformerSlot;
/**
* pre-dev-server operation slot.
*/
private onPreDevServerCreatedSlot;
private graphql;
/**
* component servers.
*/
private _componentServers;
constructor(config: BundlerConfig,
/**
* Pubsub extension.
*/
pubsub: PubsubMain,
/**
* environments extension.
*/
envs: EnvsMain,
/**
* dev server service.
*/
devService: DevServerService,
/**
* browser runtime slot.
*/
runtimeSlot: BrowserRuntimeSlot,
/**
* dev server transformer slot.
*/
devServerTransformerSlot: DevServerTransformerSlot,
/**
* pre-dev-server operation slot.
*/
onPreDevServerCreatedSlot: OnPreDevServerCreatedSlot, graphql: GraphqlMain);
addNewDevServers(newCompsWithoutDevServers: Component[]): Promise<ComponentServer[]>;
devServer(components: Component[], opts?: {
configureProxy?: boolean;
}): Promise<ComponentServer[]>;
/**
* get a dev server instance containing a component.
* @param component
*/
getComponentServer(component: Component): undefined | ComponentServer;
/**
* compute entry files for bundling components in a given execution context.
*/
computeEntries(context: BundlerContext): Promise<string[]>;
/**
* register a new browser runtime environment.
* @param browserRuntime
*/
registerTarget(browserRuntime: BrowserRuntime[]): this;
/**
* register a new dev server transformer.
* @param devServerTransformer
*/
registerDevServerTransformer(devServerTransformer: DevServerTransformer): this;
/**
* register a new pre-dev-server compiler.
* @param onPreDevServerCreated
*/
registerOnPreDevServerCreated(onPreDevServerCreated: OnPreDevServerCreated): this;
private indexByComponent;
static slots: (((registerFn: () => string) => SlotRegistry<BrowserRuntime>) | ((registerFn: () => string) => SlotRegistry<DevServerTransformerSlot>) | ((registerFn: () => string) => SlotRegistry<OnPreDevServerCreatedSlot>))[];
static runtime: import("@teambit/harmony").RuntimeDefinition;
static dependencies: import("@teambit/harmony").Aspect[];
static defaultConfig: {
dedicatedEnvDevServers: never[];
};
static provider([pubsub, envs, graphql, dependencyResolver]: [PubsubMain, EnvsMain, GraphqlMain, DependencyResolverMain], config: any, [runtimeSlot, devServerTransformerSlot, onPreDevServerCreatedSlot]: [
BrowserRuntimeSlot,
DevServerTransformerSlot,
OnPreDevServerCreatedSlot
]): Promise<BundlerMain>;
}