@lotto24-angular/imports-orchestrator
Version:
Orchestrate dynamically imported components in Angular applications
47 lines (46 loc) • 1.94 kB
TypeScript
import { Injector } from '@angular/core';
import { Observable, Subject } from 'rxjs';
import { ImportResolveFn } from './resolve';
import { ImportLifecycle, ImportObservableComponentIO, ImportsInterceptorHooks } from './interface';
import { ConsoleLike } from './features';
import * as i0 from "@angular/core";
export interface ImportServiceOptions {
lifecycle?: Partial<ImportLifecycle>;
io?: ImportObservableComponentIO;
injector: Injector;
timeout: number;
}
interface InterceptorHooksSubjects extends ImportsInterceptorHooks {
queued: Subject<ImportsOrchestratorQueueItem>;
finish: Subject<ImportsOrchestratorQueueItem>;
start: Subject<ImportsOrchestratorQueueItem>;
error: Subject<[ImportsOrchestratorQueueItem, unknown]>;
}
export interface ImportsOrchestratorQueueItem extends ImportServiceOptions {
identifier: string;
resolveFn: ImportResolveFn;
priority: number;
logger: ConsoleLike;
destroy$: Observable<void>;
hooks: InterceptorHooksSubjects;
callback?: (result: unknown, err: unknown) => void;
toString: () => string;
}
export declare class ImportService {
private readonly queueProcessor;
private readonly timeout;
private readonly logger;
private readonly queue;
private readonly orchestration;
private readonly interceptor;
private readonly injector;
createQueueItem(identifier: string, destroy$: Observable<void>, options?: Partial<ImportServiceOptions>): Readonly<ImportsOrchestratorQueueItem>;
addItemToQueue(item: ImportsOrchestratorQueueItem): Promise<unknown>;
bypassQueue(item: ImportsOrchestratorQueueItem): Promise<unknown>;
removeItemFromQueue(item: Readonly<ImportsOrchestratorQueueItem>): boolean;
private importsFromDI;
private resolveFnFromImports;
static ɵfac: i0.ɵɵFactoryDeclaration<ImportService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<ImportService>;
}
export {};