UNPKG

@lotto24-angular/imports-orchestrator

Version:

Orchestrate dynamically imported components in Angular applications

47 lines (46 loc) 1.94 kB
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 {};