{"version":3,"file":"lotto24-angular-imports-orchestrator.mjs","sources":["../../../../libs/imports-orchestrator/src/lib/host-directive/import-lifecycle.directive.ts","../../../../libs/imports-orchestrator/src/lib/host-directive/import-css-class.directive.ts","../../../../libs/imports-orchestrator/src/lib/host-directive/import-io.directive.ts","../../../../libs/imports-orchestrator/src/lib/host-directive/util/find-import-priority.ts","../../../../libs/imports-orchestrator/src/lib/host-directive/util/find-fn.ts","../../../../libs/imports-orchestrator/src/lib/queue/process-queue-item.ts","../../../../libs/imports-orchestrator/src/lib/internal.ts","../../../../libs/imports-orchestrator/src/lib/queue/imports-queue-processor.service.ts","../../../../libs/imports-orchestrator/src/lib/service.ts","../../../../libs/imports-orchestrator/src/lib/host-directive/import-queue.directive.ts","../../../../libs/imports-orchestrator/src/lib/features/internal.ts","../../../../libs/imports-orchestrator/src/lib/features/concurrency.ts","../../../../libs/imports-orchestrator/src/lib/features/interceptor.ts","../../../../libs/imports-orchestrator/src/lib/features/routing.ts","../../../../libs/imports-orchestrator/src/lib/features/logger.ts","../../../../libs/imports-orchestrator/src/lib/features/timeout.ts","../../../../libs/imports-orchestrator/src/lib/resolve/util/bind-component-io.ts","../../../../libs/imports-orchestrator/src/lib/resolve/util/module.ts","../../../../libs/imports-orchestrator/src/lib/resolve/util/defer-until-component-ready.ts","../../../../libs/imports-orchestrator/src/lib/resolve/util/mount-component.ts","../../../../libs/imports-orchestrator/src/lib/resolve/util/resolve-constructor.ts","../../../../libs/imports-orchestrator/src/lib/resolve/import-standalone.ts","../../../../libs/imports-orchestrator/src/lib/resolve/import-ng-module.ts","../../../../libs/imports-orchestrator/src/lib/resolve/import-promise.ts","../../../../libs/imports-orchestrator/src/lib/component.ts","../../../../libs/imports-orchestrator/src/lib/decorator.ts","../../../../libs/imports-orchestrator/src/lib/directive.ts","../../../../libs/imports-orchestrator/src/lib/queue/queue.ts","../../../../libs/imports-orchestrator/src/lib/features/queue.ts","../../../../libs/imports-orchestrator/src/lib/features/orchestration.ts","../../../../libs/imports-orchestrator/src/lib/provide.ts","../../../../libs/imports-orchestrator/src/lotto24-angular-imports-orchestrator.ts"],"sourcesContent":["import { ComponentRef, Directive, EventEmitter, Output } from '@angular/core';\nimport { ImportLifecycle } from '../interface';\n\n@Directive({\n  selector: '[importLifecycle]',\n  standalone: true,\n})\nexport class ImportsOrchestratorLifecycleDirective implements ImportLifecycle {\n  @Output() public importQueued = new EventEmitter<void>();\n  @Output() public importStarted = new EventEmitter<void>();\n  @Output() public importFinished = new EventEmitter<unknown>();\n  @Output() public importComponent = new EventEmitter<ComponentRef<unknown>>();\n  @Output() public importErrored = new EventEmitter<unknown>();\n}\n","import {\n  ComponentRef,\n  Directive,\n  ElementRef,\n  inject,\n  Input,\n  OnDestroy,\n  Renderer2,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ImportsOrchestratorLifecycleDirective } from './import-lifecycle.directive';\n\n@Directive({\n  selector: '[importCSSClass]',\n  standalone: true,\n})\nexport class ImportsOrchestratorCSSClassDirective implements OnDestroy {\n  @Input() public cssClass!: string;\n\n  private readonly subscriptions = new Subscription();\n  private readonly lifecycle = inject(ImportsOrchestratorLifecycleDirective, {\n    self: true,\n  });\n\n  constructor() {\n    this.subscriptions.add(\n      this.lifecycle.importComponent.subscribe(\n        this.onImportComponent.bind(this)\n      )\n    );\n  }\n\n  private onImportComponent(componentRef: ComponentRef<unknown>): void {\n    if (!this.cssClass) return;\n\n    const renderer2 = componentRef.injector.get(Renderer2);\n    const elementRef = componentRef.injector.get(ElementRef);\n    const htmlElement = elementRef.nativeElement as HTMLElement;\n\n    const classes = this.cssClass.match(/[^\\s]+/gi);\n    classes?.forEach((c) => renderer2.addClass(htmlElement, c));\n  }\n\n  public ngOnDestroy(): void {\n    this.subscriptions.unsubscribe();\n  }\n}\n","import { Directive, Input, OnDestroy } from '@angular/core';\nimport { ReplaySubject, share, Subject, takeUntil } from 'rxjs';\nimport { ImportObservableComponentIO } from '../interface';\n\nexport type ComponentIO = { [index: string]: unknown };\n\n@Directive({\n  selector: '[importLifecycle]',\n  standalone: true,\n})\nexport class ImportsOrchestratorIODirective\n  implements ImportObservableComponentIO, OnDestroy\n{\n  private readonly destroy$ = new Subject<void>();\n  public readonly _inputs = new ReplaySubject<ComponentIO>(1);\n  public readonly inputs$ = this._inputs.pipe(\n    takeUntil(this.destroy$),\n    share()\n  );\n  public readonly _outputs = new ReplaySubject<ComponentIO>(1);\n  public readonly outputs$ = this._outputs.pipe(\n    takeUntil(this.destroy$),\n    share()\n  );\n\n  @Input()\n  public set inputs(value: ComponentIO | null) {\n    this._inputs.next(value ?? {});\n  }\n\n  @Input()\n  public set outputs(value: ComponentIO | null) {\n    this._outputs.next(value ?? {});\n  }\n\n  public ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","import {ConsoleLike} from \"../../features\";\n\nexport const IMPORT_PRIORITY_LOWEST = 9999999999;\nexport function findImportPriority(\n  priorities: { [p: string]: number },\n  importId: string,\n  logger: ConsoleLike\n): number {\n  if (typeof priorities[importId] === 'number') {\n    return priorities[importId];\n  }\n\n  const key = Object.keys(priorities).find((key) => importId.startsWith(key));\n\n  if (key) {\n    return priorities[key];\n  }\n\n  logger.warn(\n    `no priority found for import '${importId}; falling back to lowest priority'`\n  );\n\n  return IMPORT_PRIORITY_LOWEST;\n}\n","export function findFn<T>(\n  config: { [index: string]: string | T },\n  key: string,\n  trail: string[] = []\n): T {\n  const stringOrFn = config[key];\n\n  if (trail.includes(key)) {\n    throw new Error(\n      `circular reference found: ${[...trail, key].join(' => ')}`\n    );\n  }\n\n  if (typeof stringOrFn === 'string') {\n    return findFn(config, stringOrFn, [...trail, key]);\n  }\n\n  if (typeof stringOrFn === 'function') {\n    return stringOrFn;\n  }\n\n  throw new Error(`Missing entry for key=\"${key}\"`);\n}\n","import {ImportsOrchestratorQueueItem} from '../service';\nimport {Queue} from './queue';\nimport {ConsoleLike} from \"../features\";\n\n/**\n * recursive loading of queued features\n */\nexport async function processQueueItem(\n  queue: Queue<ImportsOrchestratorQueueItem>,\n  logger: ConsoleLike,\n): Promise<void> {\n  // let's take the next item off the queue\n  const item = queue.take();\n\n  // let's stop if there are no items in the queue\n  if (!item) {\n    logger.debug('queue is drained');\n    return;\n  }\n\n  logger.debug(`queue item resolve (${item})`);\n\n  try {\n    item.hooks.start.next(item);\n    item.lifecycle?.importStarted?.emit();\n    const result = await item.resolveFn(item);\n    item.hooks.finish.next(item);\n    item.lifecycle?.importFinished?.emit(result);\n    item.callback && item.callback(result, null);\n    logger.debug(`queue item resolved (${item})`);\n  } catch (x) {\n    item.hooks.error.next([item, x]);\n    item.lifecycle?.importErrored?.emit(x);\n    item.callback && item.callback(null, x);\n    logger.error(`error resolving queue item (${item})`, x);\n  } finally {\n    item.hooks.start.complete();\n    item.hooks.finish.complete();\n    item.hooks.error.complete();\n  }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Queue } from './queue/queue';\nimport { ImportsOrchestratorQueueItem } from './service';\nimport { ImportsOrchestration, ImportsStore } from './features/internal';\nimport { Observable } from 'rxjs';\nimport { ImportsInterceptor } from './interface';\n\nexport const IMPORTS_ORCHESTRATOR_FEATURE_CONCURRENCY = new InjectionToken<\n  number | (() => number)\n>('IMPORTS_ORCHESTRATOR_FEAUTURE_CONCURRENCY');\nexport const IMPORTS_ORCHESTRATOR_FEATURE_INTERCEPTOR = new InjectionToken<ImportsInterceptor>('IMPORTS_ORCHESTRATOR_FEAUTURE_INTERCEPTOR');\nexport const IMPORTS_ORCHESTRATOR_FEATURE_ROUTING = new InjectionToken<\n  Observable<boolean>\n>('IMPORTS_ORCHESTRATOR_FEAUTURE_DEFER_UNTIL_FIRST_NAVIGATION');\nexport const IMPORTS_ORCHESTRATOR_FEATURE_TIMEOUT = new InjectionToken<number>(\n  'IMPORTS_ORCHESTRATOR_FEAUTURE_TIMEOUT'\n);\nexport const IMPORTS_ORCHESTRATOR_FEATURE_LOGGER = new InjectionToken<\n  Pick<Console, 'info' | 'warn' | 'error' | 'debug'>\n>('IMPORTS_ORCHESTRATOR_FEAUTURE_LOGGER');\nexport const IMPORTS_ORCHESTRATOR_FEATURE_QUEUE = new InjectionToken<\n  Queue<ImportsOrchestratorQueueItem>\n>('IMPORTS_ORCHESTRATOR_FEATURE_QUEUE');\nexport const IMPORTS_ORCHESTRATOR_FEATURE_ORCHESTRATION =\n  new InjectionToken<ImportsOrchestration>(\n    'IMPORTS_ORCHESTRATOR_FEATURE_ORCHESTRATION'\n  );\n\nexport const IMPORTS_STORE: ImportsStore = {};\nexport const IMPORTS_ORCHESTRATOR_FEATURE_IMPORTS_STORE =\n  new InjectionToken<ImportsStore>(\n    'IMPORTS_ORCHESTRATOR_FEATURE_IMPORTS_STORE',\n    { providedIn: 'platform', factory: () => IMPORTS_STORE }\n  );\n","import { inject, Injectable } from '@angular/core';\nimport { processQueueItem } from './process-queue-item';\nimport {\n  IMPORTS_ORCHESTRATOR_FEATURE_CONCURRENCY,\n  IMPORTS_ORCHESTRATOR_FEATURE_LOGGER,\n  IMPORTS_ORCHESTRATOR_FEATURE_QUEUE,\n  IMPORTS_ORCHESTRATOR_FEATURE_ROUTING,\n} from '../internal';\nimport { filter, firstValueFrom, tap } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ImportsQueueProcessor {\n  private static processing = false;\n\n  private readonly logger = inject(IMPORTS_ORCHESTRATOR_FEATURE_LOGGER);\n  private readonly queue = inject(IMPORTS_ORCHESTRATOR_FEATURE_QUEUE);\n  private readonly isRoutingActive$ = inject(\n    IMPORTS_ORCHESTRATOR_FEATURE_ROUTING\n  );\n  private readonly concurrency = inject(\n    IMPORTS_ORCHESTRATOR_FEATURE_CONCURRENCY\n  );\n\n  private running = 0;\n\n  public process(): void {\n    if (!ImportsQueueProcessor.processing) {\n      // do not await, as it would block the lifecycle callback from completing until the queue is processed\n      ImportsQueueProcessor.processing = true;\n\n      this.processQueue()\n        .then(() => {\n          this.logger.debug('queue processing ended');\n        })\n        .catch(() => {\n          this.logger.debug('queue processing failed');\n        })\n        .finally(() => {\n          ImportsQueueProcessor.processing = false;\n        });\n    }\n  }\n\n  private async processQueue(): Promise<void> {\n    await this.suspendForNavigation();\n\n    const concurrency = this.updateConcurrency();\n    const concurrentBatch = [];\n    for (let i = this.running; i < concurrency; i++) {\n      this.running++;\n      concurrentBatch.push(this.processItem());\n    }\n    this.logger.debug(\n      `queue starting ${concurrentBatch.length} item(s) to reach max concurrency (running=${this.running})`\n    );\n    await Promise.all(concurrentBatch);\n  }\n\n  private async processItem(): Promise<void> {\n    await processQueueItem(this.queue, this.logger);\n    this.running--;\n    if (!this.queue.empty) {\n      await this.processQueue();\n    }\n  }\n\n  private updateConcurrency(): number {\n    const value =\n      typeof this.concurrency === 'function'\n        ? this.concurrency()\n        : this.concurrency;\n\n    if (value !== this.concurrency) {\n      this.logger.debug(`queue concurrency changed to ${value}`);\n    }\n\n    return value;\n  }\n\n  private async suspendForNavigation(): Promise<unknown> {\n    // suspend processing while routing, as navigation takes precedence\n    return firstValueFrom(\n      this.isRoutingActive$.pipe(\n        tap((active) => {\n          if (active) {\n            this.logger.debug('queue processing suspended for navigation');\n          }\n        }),\n        filter((active) => !active)\n      )\n    );\n  }\n}\n","import {\n  inject,\n  Injectable,\n  Injector,\n  runInInjectionContext,\n} from '@angular/core';\nimport { findFn, findImportPriority } from './host-directive/util';\nimport { ImportsQueueProcessor } from './queue/imports-queue-processor.service';\nimport { Observable, Subject } from 'rxjs';\nimport { ImportResolveFn } from './resolve';\nimport {\n  ImportLifecycle,\n  ImportObservableComponentIO,\n  ImportsInterceptorHooks,\n} from './interface';\n\nimport {\n  IMPORTS_ORCHESTRATOR_FEATURE_IMPORTS_STORE,\n  IMPORTS_ORCHESTRATOR_FEATURE_INTERCEPTOR,\n  IMPORTS_ORCHESTRATOR_FEATURE_LOGGER,\n  IMPORTS_ORCHESTRATOR_FEATURE_ORCHESTRATION,\n  IMPORTS_ORCHESTRATOR_FEATURE_QUEUE,\n  IMPORTS_ORCHESTRATOR_FEATURE_TIMEOUT,\n} from './internal';\nimport { ImportsStore } from './features/internal';\nimport { ConsoleLike } from './features';\n\nexport interface ImportServiceOptions {\n  lifecycle?: Partial<ImportLifecycle>;\n  io?: ImportObservableComponentIO;\n  injector: Injector;\n  timeout: number;\n}\n\ninterface InterceptorHooksSubjects extends ImportsInterceptorHooks {\n  queued: Subject<ImportsOrchestratorQueueItem>;\n  finish: Subject<ImportsOrchestratorQueueItem>;\n  start: Subject<ImportsOrchestratorQueueItem>;\n  error: Subject<[ImportsOrchestratorQueueItem, unknown]>;\n}\n\nexport interface ImportsOrchestratorQueueItem extends ImportServiceOptions {\n  identifier: string;\n  resolveFn: ImportResolveFn;\n  priority: number;\n  logger: ConsoleLike;\n  destroy$: Observable<void>;\n  hooks: InterceptorHooksSubjects;\n  callback?: (result: unknown, err: unknown) => void;\n  toString: () => string;\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ImportService {\n  private readonly queueProcessor = inject(ImportsQueueProcessor);\n  private readonly timeout = inject(IMPORTS_ORCHESTRATOR_FEATURE_TIMEOUT);\n  private readonly logger = inject(IMPORTS_ORCHESTRATOR_FEATURE_LOGGER);\n  private readonly queue = inject(IMPORTS_ORCHESTRATOR_FEATURE_QUEUE);\n  private readonly orchestration = inject(\n    IMPORTS_ORCHESTRATOR_FEATURE_ORCHESTRATION\n  );\n  private readonly interceptor = inject(\n    IMPORTS_ORCHESTRATOR_FEATURE_INTERCEPTOR,\n    { optional: true }\n  );\n  private readonly injector = inject(Injector);\n\n  public createQueueItem(\n    identifier: string,\n    destroy$: Observable<void>,\n    options: Partial<ImportServiceOptions> = {}\n  ): Readonly<ImportsOrchestratorQueueItem> {\n    const opts: ImportServiceOptions = {\n      ...options,\n      injector: options.injector ?? this.injector,\n      timeout: options.timeout ?? this.timeout,\n    };\n\n    const imports = this.importsFromDI(opts.injector);\n    const resolveFn = this.resolveFnFromImports(imports, identifier);\n\n    const priority = findImportPriority(\n      this.orchestration,\n      identifier,\n      this.logger\n    );\n\n    const hooks: InterceptorHooksSubjects = {\n      queued: new Subject(),\n      start: new Subject(),\n      finish: new Subject(),\n      error: new Subject(),\n    };\n\n    runInInjectionContext(this.injector, () => {\n      if (this.interceptor) {\n        this.interceptor(identifier, hooks);\n      }\n    });\n\n    return {\n      ...opts,\n      priority,\n      identifier,\n      resolveFn,\n      destroy$,\n      hooks,\n      logger: this.logger,\n      toString: () => `@identifier=\"${identifier}\", @priority=${priority}`,\n    };\n  }\n\n  public async addItemToQueue(\n    item: ImportsOrchestratorQueueItem\n  ): Promise<unknown> {\n    const promise = new Promise((resolve, reject) => {\n      item.callback = (result, err) => {\n        if (err) {\n          reject(err);\n        } else {\n          resolve(result);\n        }\n      };\n    });\n\n    this.queue.insert(item.priority, item);\n    item.lifecycle?.importQueued?.emit();\n    item.hooks.queued.next(item);\n    item.hooks.queued.complete();\n\n    this.logger.debug(`queue insert ${item.toString()}`);\n\n    this.queueProcessor.process();\n\n    return promise;\n  }\n\n  public async bypassQueue(\n    item: ImportsOrchestratorQueueItem\n  ): Promise<unknown> {\n    this.logger.debug(`bypass queue ${item.toString()}`);\n\n    return item.resolveFn(item);\n  }\n\n  public removeItemFromQueue(\n    item: Readonly<ImportsOrchestratorQueueItem>\n  ): boolean {\n    return this.queue.take(item) !== undefined;\n  }\n\n  private importsFromDI(injector: Injector): ImportsStore {\n    try {\n      const store = injector.get(IMPORTS_ORCHESTRATOR_FEATURE_IMPORTS_STORE);\n      return store;\n    } catch (x: unknown) {\n      throw new Error(`\n        Could not inject ${IMPORTS_ORCHESTRATOR_FEATURE_IMPORTS_STORE}. Did you \\`provideImports({...})\\` in a component or module? If you did, you may need to provide an Injector when calling createQueueItem.\n        ${x}`);\n    }\n  }\n\n  private resolveFnFromImports(\n    imports: ImportsStore,\n    identifier: string\n  ): ImportResolveFn {\n    try {\n      return findFn(imports, identifier);\n    } catch (x) {\n      throw new Error(`\n        Could not find ImportResolveFn. Did you \\`provideImports({...})\\` in a component or module? If you did, you may need to provide an Injector when calling createQueueItem.\n        ${x}`);\n    }\n  }\n}\n","import {\n  Directive,\n  inject,\n  Injector,\n  Input,\n  NgModuleRef,\n  OnChanges,\n  OnDestroy,\n  SimpleChanges,\n  StaticProvider,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ImportsOrchestratorIODirective } from './import-io.directive';\nimport { ImportsOrchestratorLifecycleDirective } from './import-lifecycle.directive';\nimport {\n  ImportService,\n  ImportServiceOptions,\n  ImportsOrchestratorQueueItem,\n} from '../service';\n\ntype ImportsOrchestratorQueueDirectiveExposed = Pick<\n  ImportServiceOptions,\n  'io' | 'lifecycle'\n>;\n\n@Directive({\n  selector: '[importQueue]',\n  standalone: true,\n})\nexport class ImportsOrchestratorQueueDirective implements OnChanges, OnDestroy {\n  @Input() public import!: string;\n  @Input() public providers!: StaticProvider[];\n  @Input() public timeout!: number;\n\n  public readonly io = inject(ImportsOrchestratorIODirective, {\n    self: true,\n  });\n  public readonly lifecycle = inject(ImportsOrchestratorLifecycleDirective, {\n    self: true,\n  });\n\n  public readonly destroyComponents$ = new Subject<void>();\n  public viewContainerRef = inject(ViewContainerRef);\n\n  private readonly moduleRef = inject(NgModuleRef);\n\n  private readonly importService = inject(ImportService);\n\n  private item: ImportsOrchestratorQueueItem | null = null;\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    const importInput = changes['import'];\n    if (\n      importInput !== undefined &&\n      importInput.currentValue !== importInput.previousValue\n    ) {\n      this.createAndAddItemToQueue();\n    }\n  }\n\n  public createAndAddItemToQueue(): void {\n    this.removeItemFromQueue();\n    this.destroyComponents$.next(); // destroy a previously mounted component(s)\n\n    const injector = Injector.create({\n      providers: [\n        ...(this.providers ?? []),\n        { provide: ViewContainerRef, useValue: this.viewContainerRef },\n      ],\n      parent: this.moduleRef.injector,\n    });\n\n    this.item = this.importService.createQueueItem(\n      this.import,\n      this.destroyComponents$,\n      {\n        ...(this as ImportsOrchestratorQueueDirectiveExposed),\n        injector,\n        lifecycle: this.lifecycle,\n      }\n    );\n\n    this.importService.addItemToQueue(this.item);\n  }\n\n  private removeItemFromQueue(): void {\n    if (this.item) {\n      this.importService.removeItemFromQueue(this.item);\n      this.item = null;\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.removeItemFromQueue();\n    this.destroyComponents$.next();\n    this.destroyComponents$.complete();\n  }\n}\n","import { Provider } from '@angular/core';\nimport { ImportResolveFn } from '../resolve';\n\nexport type ImportsOrchestratorConcurrency =\n  ImportsOrchestratorFeature<ImportsOrchestratorFeatureKind.Concurrency>;\n\nexport type ImportsOrchestratorInterceptor =\n  ImportsOrchestratorFeature<ImportsOrchestratorFeatureKind.Interceptor>;\n\nexport type ImportsOrchestratorRouting =\n  ImportsOrchestratorFeature<ImportsOrchestratorFeatureKind.Routing>;\n\nexport type ImportsOrchestratorTimeout =\n  ImportsOrchestratorFeature<ImportsOrchestratorFeatureKind.Timeout>;\n\nexport type ImportsOrchestratorLogger =\n  ImportsOrchestratorFeature<ImportsOrchestratorFeatureKind.Logger>;\n\nexport type ImportsOrhestratorQueue =\n  ImportsOrchestratorFeature<ImportsOrchestratorFeatureKind.Queue>;\n\nexport type ImportsOrchestratorOrchestration =\n  ImportsOrchestratorFeature<ImportsOrchestratorFeatureKind.Orchestration>;\n\nexport enum ImportsOrchestratorFeatureKind {\n  Logger,\n  Timeout,\n  Routing,\n  Concurrency,\n  Interceptor,\n  // internal\n  Orchestration,\n  Queue,\n}\n\n// internal utils\n\nexport type ImportsOrchestratorFeature<\n  T extends ImportsOrchestratorFeatureKind\n> = {\n  kind: T;\n  providers: Provider[];\n};\n\nexport function importsOrchestratorFeature<\n  T extends ImportsOrchestratorFeatureKind\n>(kind: T, providers: Provider[]): ImportsOrchestratorFeature<T> {\n  return { kind, providers };\n}\n\nexport type ImportsOrchestration = {\n  [index: string]: number;\n};\nexport type ImportsStore = {\n  [index: string]: string | ImportResolveFn;\n};\n","import { Provider } from '@angular/core';\nimport {\n  ImportsOrchestratorConcurrency,\n  importsOrchestratorFeature,\n  ImportsOrchestratorFeatureKind,\n} from './internal';\nimport { IMPORTS_ORCHESTRATOR_FEATURE_CONCURRENCY } from '../internal';\n\nexport function withConcurrencyRelativeToDownlinkSpeed(\n  max: number = 4,\n  min: number = 1\n): ImportsOrchestratorConcurrency {\n  const providers: Provider[] = [\n    {\n      provide: IMPORTS_ORCHESTRATOR_FEATURE_CONCURRENCY,\n      useValue: downlinkToConcurrencyFn(max, min),\n    },\n  ];\n  return importsOrchestratorFeature(\n    ImportsOrchestratorFeatureKind.Concurrency,\n    providers\n  );\n}\n\n/**\n * @param onUpdateConcurrencyFn called when queue processor updates concurrency;\n */\nexport function withConcurrencyUpdateFn(\n  onUpdateConcurrencyFn: () => number\n): ImportsOrchestratorConcurrency {\n  const providers: Provider[] = [\n    {\n      provide: IMPORTS_ORCHESTRATOR_FEATURE_CONCURRENCY,\n      useValue: onUpdateConcurrencyFn,\n    },\n  ];\n\n  return importsOrchestratorFeature(\n    ImportsOrchestratorFeatureKind.Concurrency,\n    providers\n  );\n}\n\nexport function withConcurrencyStatic(\n  value: number\n): ImportsOrchestratorConcurrency {\n  const providers: Provider[] = [\n    {\n      provide: IMPORTS_ORCHESTRATOR_FEATURE_CONCURRENCY,\n      useValue: value,\n    },\n  ];\n  return importsOrchestratorFeature(\n    ImportsOrchestratorFeatureKind.Concurrency,\n    providers\n  );\n}\n\nfunction downlinkToConcurrencyFn(max: number, min: number = 1): () => number {\n  return () => {\n\n    const downlink = (navigator as any).connection?.downlink ?? 10;\n\n    if (downlink < 1) {\n      return min;\n    } else if (downlink < 2) {\n      return Math.max(min, Math.floor(min + (max - min) / 4));\n    } else if (downlink < 4) {\n      return Math.max(min, Math.floor(min + (max - min) / 2));\n    } else if (downlink < 8) {\n      return Math.max(min, Math.floor(min + (max - min) / 1.5));\n    }\n\n    return max;\n  };\n}\n","import {\n  importsOrchestratorFeature,\n  ImportsOrchestratorFeatureKind,\n  ImportsOrchestratorInterceptor,\n} from './internal';\nimport { Provider } from '@angular/core';\nimport { IMPORTS_ORCHESTRATOR_FEATURE_INTERCEPTOR } from '../internal';\nimport { ImportsInterceptor } from '../interface';\n\nexport function withInterceptor(\n  interceptor: ImportsInterceptor\n): ImportsOrchestratorInterceptor {\n  const providers: Provider[] = [\n    {\n      provide: IMPORTS_ORCHESTRATOR_FEATURE_INTERCEPTOR,\n      useValue: interceptor,\n    },\n  ];\n  return importsOrchestratorFeature(\n    ImportsOrchestratorFeatureKind.Interceptor,\n    providers\n  );\n}\n","import { Provider } from '@angular/core';\nimport {\n  importsOrchestratorFeature,\n  ImportsOrchestratorFeatureKind,\n  ImportsOrchestratorRouting,\n} from './internal';\nimport { IMPORTS_ORCHESTRATOR_FEATURE_ROUTING } from '../internal';\nimport { NavigationEnd, NavigationStart, Router } from '@angular/router';\nimport {\n  asyncScheduler,\n  filter,\n  map,\n  Observable,\n  observeOn,\n  of,\n  shareReplay,\n  startWith,\n} from 'rxjs';\n\nexport function withSuspendWhileRouting(\n  suspendForInitialNavigation = true\n): ImportsOrchestratorRouting {\n  const providers: Provider[] = [\n    {\n      provide: IMPORTS_ORCHESTRATOR_FEATURE_ROUTING,\n      useFactory: (router: Router) =>\n        isRoutingActive$(router, suspendForInitialNavigation),\n      deps: [Router],\n    },\n  ];\n  return importsOrchestratorFeature(\n    ImportsOrchestratorFeatureKind.Routing,\n    providers\n  );\n}\n\nexport function withoutRouting(): ImportsOrchestratorRouting {\n  const providers: Provider[] = [\n    {\n      provide: IMPORTS_ORCHESTRATOR_FEATURE_ROUTING,\n      useValue: of(false).pipe(shareReplay(1)),\n    },\n  ];\n  return importsOrchestratorFeature(\n    ImportsOrchestratorFeatureKind.Routing,\n    providers\n  );\n}\n\nfunction isRoutingActive$(\n  router: Router,\n  suspendForInitialNavigation: boolean\n): Observable<boolean> {\n  const navigationActive$ = router.events.pipe(\n    filter(\n      (event) =>\n        event instanceof NavigationStart || event instanceof NavigationEnd\n    ),\n    map((event) => {\n      if (event instanceof NavigationStart) {\n        return true;\n      }\n\n      return false;\n    }),\n    observeOn(asyncScheduler),\n    startWith(suspendForInitialNavigation)\n  );\n\n  return navigationActive$.pipe(shareReplay(1));\n}\n","import { Provider } from '@angular/core';\nimport {\n  importsOrchestratorFeature,\n  ImportsOrchestratorFeatureKind,\n  ImportsOrchestratorLogger,\n} from './internal';\nimport { IMPORTS_ORCHESTRATOR_FEATURE_LOGGER } from '../internal';\n\nexport type ConsoleLike = Pick<Console, 'info' | 'warn' | 'error' | 'debug'>;\n\nexport function withLogger(logger: ConsoleLike): ImportsOrchestratorLogger {\n  const providers: Provider[] = [\n    {\n      provide: IMPORTS_ORCHESTRATOR_FEATURE_LOGGER,\n      useValue: logger,\n    },\n  ];\n  return importsOrchestratorFeature(\n    ImportsOrchestratorFeatureKind.Logger,\n    providers\n  );\n}\n","import {\n  importsOrchestratorFeature,\n  ImportsOrchestratorFeatureKind,\n  ImportsOrchestratorTimeout,\n} from './internal';\nimport { Provider } from '@angular/core';\nimport {IMPORTS_ORCHESTRATOR_FEATURE_TIMEOUT} from \"../internal\";\n\nexport function withTimeout(timeout: number = 10000): ImportsOrchestratorTimeout {\n  const providers: Provider[] = [\n    {\n      provide: IMPORTS_ORCHESTRATOR_FEATURE_TIMEOUT,\n      useValue: timeout,\n    },\n  ];\n  return importsOrchestratorFeature(\n    ImportsOrchestratorFeatureKind.Timeout,\n    providers\n  );\n}\n","import type { ComponentRef } from '@angular/core';\nimport {\n  filter,\n  mergeMap,\n  pairwise,\n  share,\n  skip,\n  startWith,\n  takeUntil,\n} from 'rxjs';\nimport { ImportsOrchestratorQueueItem } from '../../service';\nimport { ComponentIO } from '../../host-directive';\n\nexport function bindComponentInputs(\n  componentRef: ComponentRef<any>,\n  item: ImportsOrchestratorQueueItem\n): void {\n  item.io?.inputs$\n    .pipe(\n      takeUntil(item.destroy$),\n      startWith({} as ComponentIO),\n      pairwise(),\n      filter(([_, current]) => Object.keys(current).length > 0),\n      mergeMap(([previous, current]) =>\n        Object.entries(current).filter(\n          ([key, value]) => previous[key] !== value\n        )\n      )\n    )\n    .subscribe(([key, value]) => componentRef.setInput(key, value));\n}\n\nexport function bindComponentOutputs(\n  componentRef: ComponentRef<any>,\n  item: ImportsOrchestratorQueueItem\n): void {\n  const outputs$ = item.io?.outputs$.pipe(share());\n  if (!outputs$) return;\n\n  const output$ = outputs$.pipe(\n    takeUntil(item.destroy$),\n    startWith({} as ComponentIO),\n    pairwise(),\n    filter(([_, current]) => Object.keys(current).length > 0),\n    mergeMap(([previous, current]) =>\n      Object.entries(current).filter(([key, value]) => !previous[key])\n    )\n    // tap(([key, value]) => console.log(key, value))\n  );\n\n  output$.subscribe(([key, value]) => {\n    if (typeof value !== 'function') {\n      throw new Error(\n        `outputs.${key} must be a function, got '${typeof value}'`\n      );\n    }\n\n    componentRef.instance[key]\n      .pipe(\n        takeUntil(item.destroy$),\n        takeUntil(\n          output$.pipe(\n            filter(([k]) => k === key),\n            skip(1) // skip the first value emitted from replay\n            // tap(() => console.log('unsubscribe componentRef, key=' + key))\n          )\n        )\n      )\n      .subscribe((data: any) => {\n        value(data);\n      });\n  });\n}\n","import { Type } from '@angular/core';\n\nexport interface ESModule {\n  __esModule: boolean;\n}\n\nexport interface NgModuleDef<T> {\n  bootstrap: Type<any>[] | (() => Type<any>[]);\n}\n\nexport const NG_MOD_DEF = getClosureSafeProperty({\n  ɵmod: getClosureSafeProperty,\n});\nexport const ES_MODULE = getClosureSafeProperty({\n  __esModule: getClosureSafeProperty,\n});\n\nexport function isESModule(type: any): type is ESModule {\n  return type[Symbol.toStringTag] === 'Module' || type[ES_MODULE];\n}\n\nexport function isNgModuleDef<T>(\n  type: any\n): type is Type<T> & { ɵmod: NgModuleDef<T> } {\n  return !!type[NG_MOD_DEF];\n}\n\nfunction getClosureSafeProperty<T>(objWithPropertyToExtract: T): string {\n  for (const key in objWithPropertyToExtract) {\n    if (objWithPropertyToExtract[key] === (getClosureSafeProperty as any)) {\n      return key;\n    }\n  }\n  throw Error('Could not find renamed property on target object.');\n}\n","import { ImportedComponentReady } from '../imported-component-ready.interface';\nimport {\n  catchError,\n  filter,\n  from,\n  map,\n  Observable,\n  of,\n  race,\n  take,\n  timeout,\n  TimeoutError,\n} from 'rxjs';\nimport { ChangeDetectorRef, ComponentRef, Signal } from '@angular/core';\n\nimport { ImportsOrchestratorQueueItem } from '../../service';\nimport { assertPromise, assertSignal } from '@lotto24-angular/util';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\nexport function deferUntilComponentReady$<T>(\n  componentRef: ComponentRef<any>,\n  item: ImportsOrchestratorQueueItem\n): Observable<void> {\n  const instance = componentRef.instance;\n  if (!assertImportedComponentReadyEmitter(instance)) {\n    return of(undefined);\n  }\n\n  item.logger.debug(\n    `deferring until component w/ import=${item.identifier} emits ready`\n  );\n  componentRef.injector.get(ChangeDetectorRef).markForCheck(); // ensure Lifecycle hooks are called\n\n  return race(resolveReady(instance), item.destroy$).pipe(\n    timeout(item.timeout),\n    catchError((err) => {\n      if (err instanceof TimeoutError) {\n        item.logger.warn(\n          `deferred component w/ import=${item.identifier} timed out after ${item.timeout}ms`\n        );\n      } else {\n        item.logger.error(\n          `deferred component w/ import=${item.identifier} errored: ${err}`\n        );\n      }\n      return of(undefined);\n    })\n  );\n}\n\nexport function assertImportedComponentReadyEmitter(\n  type: any\n): type is ImportedComponentReady {\n  return (type as ImportedComponentReady).importedComponentReady !== undefined;\n}\n\nfunction resolveReady(instance: ImportedComponentReady): Observable<void> {\n  const callback = instance.importedComponentReady.call(instance);\n  if (assertPromise(callback)) {\n    return from(callback);\n  }\n\n  return (\n    assertSignal(callback)\n      ? toObservable(callback as unknown as Signal<boolean>)\n      : (callback as unknown as Observable<boolean>)\n  ).pipe(\n    filter((value) => value),\n    map(() => undefined),\n    take(1)\n  );\n}\n","import { ChangeDetectorRef, ComponentRef } from '@angular/core';\nimport { bindComponentInputs, bindComponentOutputs } from './bind-component-io';\nimport { firstValueFrom } from 'rxjs';\nimport { deferUntilComponentReady$ } from './defer-until-component-ready';\nimport { ImportsOrchestratorQueueItem } from '../../service';\n\nexport async function mountComponent(\n  componentRef: ComponentRef<unknown>,\n  item: ImportsOrchestratorQueueItem\n): Promise<void> {\n  item.destroy$.subscribe(() => componentRef.destroy());\n  if (item.io) {\n    bindComponentInputs(componentRef, item);\n    bindComponentOutputs(componentRef, item);\n  }\n  try {\n    await firstValueFrom(deferUntilComponentReady$(componentRef, item));\n  } catch (x) {\n    // no-op\n  }\n\n  // This will trigger Angular lifecycle on componentRef's entire component tree\n  // * Bindings will be resolved\n  // * Projected content will be processed\n  // * Usages of ImportsOrchestratorQueueDirective in the tree will then insert items to the queue\n  // * It is of vital importance that items are queued before triggering processQueue again\n  // IMPORTANT: markForCheck is not enough, as it would not cause an immediate change detection cycle\n  componentRef.injector.get(ChangeDetectorRef).detectChanges();\n}\n","import { Type } from '@angular/core';\nimport { ESModule, isESModule } from './module';\n\nexport type Constructor = Type<unknown>;\n\nexport function isAssumedESModuleContainingAngularComponentsOrModules(type: any) {\n  return typeof type === 'object' && Object.keys(type).some(key => key.includes('Module') || key.includes('Component'));\n}\n\nexport function resolveConstructorsFromESModule(\n  esm: ESModule | Constructor\n): Constructor[] {\n  if (isESModule(esm) || isAssumedESModuleContainingAngularComponentsOrModules(esm)) {\n    const constructors = Object.values<Constructor>(\n      esm as unknown as { [index: string]: Constructor }\n    ).filter((v) => typeof v === 'function');\n\n    if (!constructors) {\n      throw new Error('Class not found');\n    }\n\n    return constructors;\n  }\n\n  return [esm];\n}\n\n","import {\n  Constructor,\n  ESModule,\n  mountComponent,\n  resolveConstructorsFromESModule,\n} from './util';\nimport { ImportsOrchestratorQueueItem } from '../service';\nimport { ViewContainerRef } from '@angular/core';\nimport { ImportResolveFn } from './import-resolve-fn.interface';\nimport {\n  assertStandalone,\n  resolvePromiseWithRetries,\n} from '@lotto24-angular/util';\n\nexport function importStandalone(\n  promise: () => Promise<unknown>\n): ImportResolveFn {\n  return async (item: ImportsOrchestratorQueueItem) => {\n    const resolvedImport = (await resolvePromiseWithRetries(promise)) as\n      | Constructor\n      | ESModule;\n    const constructor = resolveConstructorsFromESModule(resolvedImport).shift();\n\n    if (!constructor) {\n      throw new Error('class not found');\n    }\n\n    assertStandalone(constructor);\n\n    const viewContainerRef = item.injector.get(ViewContainerRef);\n\n    const componentRef = viewContainerRef.createComponent(constructor, {\n      injector: item.injector,\n    });\n\n    await mountComponent(componentRef, item);\n    item.lifecycle?.importComponent?.emit(componentRef);\n    return componentRef;\n  };\n}\n","import {createEnvironmentInjector, createNgModule, Type, ViewContainerRef} from '@angular/core';\nimport {\n  Constructor,\n  ESModule,\n  isNgModuleDef,\n  mountComponent,\n  resolveConstructorsFromESModule,\n} from './util';\nimport { ImportsOrchestratorQueueItem } from '../service';\nimport { ImportResolveFn } from './import-resolve-fn.interface';\nimport { resolvePromiseWithRetries } from '@lotto24-angular/util';\n\nexport function importNgModule(\n  promise: () => Promise<unknown>\n): ImportResolveFn {\n  return async (item: ImportsOrchestratorQueueItem) => {\n    const resolvedImport = (await resolvePromiseWithRetries(promise)) as\n      | Constructor\n      | ESModule;\n    const ngModuleConstructors = resolveConstructorsFromESModule(\n      resolvedImport\n    )?.filter((type) => isNgModuleDef(type));\n\n    if (ngModuleConstructors?.length > 1) {\n      item.logger.warn(\n        `ES module should return a single NgModule definition, found ${ngModuleConstructors?.length}. Please append \\`.then(m => m.{DesiredModule})\\` to your dynamic import.`\n      );\n    }\n\n    const ngModuleConstructor = ngModuleConstructors?.shift();\n\n    if (!ngModuleConstructor) {\n      throw new Error('no ngModuleRef constructor found');\n    }\n\n\n    const ngModuleRef = createNgModule(ngModuleConstructor, item.injector);\n\n    const componentConstructors = (\n      ngModuleRef as unknown as {\n        _bootstrapComponents: Array<Type<unknown>> | null;\n      }\n    )._bootstrapComponents;\n\n    if (!componentConstructors?.length) {\n      item.logger.debug('no bootstrap components found in ngModuleRef');\n      item.lifecycle?.importFinished?.emit(undefined);\n      return;\n    }\n\n    const viewContainerRef = ngModuleRef.injector.get(ViewContainerRef);\n\n    const mountComponentPromises = componentConstructors.map(\n      (componentConstructor) => {\n        const componentRef = viewContainerRef.createComponent(\n          componentConstructor,\n          { injector: ngModuleRef.injector, ngModuleRef }\n        );\n\n        return mountComponent(componentRef, item).then(() => componentRef);\n      }\n    );\n\n    const componentRefs = await Promise.all(mountComponentPromises);\n    componentRefs.forEach((componentRef) =>\n      item.lifecycle?.importComponent?.emit(componentRef)\n    );\n    return componentRefs;\n  };\n}\n","import { ImportResolveFn } from './import-resolve-fn.interface';\nimport { resolvePromiseWithRetries } from '@lotto24-angular/util';\n\nexport function importPromise(\n  promise: () => Promise<unknown>\n): ImportResolveFn {\n  return async () => resolvePromiseWithRetries(promise);\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  inject,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport {\n  ImportsOrchestratorCSSClassDirective,\n  ImportsOrchestratorIODirective,\n  ImportsOrchestratorLifecycleDirective,\n  ImportsOrchestratorQueueDirective,\n} from './host-directive';\n\n@Component({\n  selector: 'import',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  hostDirectives: [\n    {\n      directive: ImportsOrchestratorQueueDirective,\n      // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n      inputs: ['providers', 'timeout'],\n    },\n    {\n      directive: ImportsOrchestratorIODirective,\n      // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n      inputs: ['inputs', 'outputs'],\n    },\n    {\n      directive: ImportsOrchestratorLifecycleDirective,\n      // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property\n      outputs: [\n        'importQueued',\n        'importStarted',\n        'importFinished',\n        'importComponent',\n        'importErrored',\n      ],\n    },\n    {\n      directive: ImportsOrchestratorCSSClassDirective,\n      // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n      inputs: ['cssClass'],\n    },\n  ],\n  template: `<ng-container #container></ng-container>`,\n})\nexport class ImportsOrchestratorComponent implements OnChanges, AfterViewInit {\n  @Input()\n  public identifier!: string;\n\n  private readonly queue = inject(ImportsOrchestratorQueueDirective, {\n    self: true,\n  });\n\n  @ViewChild('container', { read: ViewContainerRef })\n  container!: ViewContainerRef;\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    const importInput = changes['import'];\n    if (\n      importInput !== undefined &&\n      importInput.currentValue !== importInput.previousValue\n    ) {\n      this.createAndAddItemToQueue();\n    }\n  }\n\n  public ngAfterViewInit(): void {\n    this.createAndAddItemToQueue();\n  }\n\n  private createAndAddItemToQueue(): void {\n    if (!this.identifier || !this.container) {\n      return;\n    }\n\n    this.queue.viewContainerRef = this.container;\n    this.queue.import = this.identifier;\n    this.queue.createAndAddItemToQueue();\n  }\n}\n","import { ImportsOrchestration } from './features/internal';\nimport { IMPORTS_STORE } from './internal';\nimport { ImportResolveFn } from './resolve';\n\nexport const Imports = <T extends ImportsOrchestration>(\n  imports: Partial<{\n    [key in keyof T]: keyof T | ImportResolveFn;\n  }>\n) => {\n  Object.entries(imports).forEach(([key, value]) => {\n    IMPORTS_STORE[key] = value as ImportResolveFn | string;\n  });\n\n  return function (target: unknown) {\n    // noop\n  };\n};\n","import { Directive } from '@angular/core';\n\nimport {\n  ImportsOrchestratorCSSClassDirective,\n  ImportsOrchestratorIODirective,\n  ImportsOrchestratorLifecycleDirective,\n  ImportsOrchestratorQueueDirective,\n} from './host-directive';\n\n@Directive({\n  selector: '[import]',\n  standalone: true,\n  hostDirectives: [\n    {\n      directive: ImportsOrchestratorQueueDirective,\n      // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n      inputs: ['import', 'providers', 'timeout'],\n    },\n    {\n      directive: ImportsOrchestratorIODirective,\n      // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n      inputs: ['inputs', 'outputs'],\n    },\n    {\n      directive: ImportsOrchestratorLifecycleDirective,\n      // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property\n      outputs: [\n        'importQueued',\n        'importStarted',\n        'importFinished',\n        'importComponent',\n        'importErrored',\n      ],\n    },\n    {\n      directive: ImportsOrchestratorCSSClassDirective,\n      // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n      inputs: ['cssClass'],\n    },\n  ],\n})\nexport class ImportsOrchestratorDirective {}\n","interface Item<T> {\n  priority: number;\n  payload: T;\n}\n\nexport class Queue<T> {\n  protected data: Item<T>[] = [];\n\n  public insert(priority: number, payload: T): void {\n    this.data = [...this.data, { priority, payload }].sort(comparePriority);\n  }\n\n  public take(payload: T | null = null): T | null {\n    if (!payload) {\n      return this.data.shift()?.payload || null;\n    }\n\n    return this.takeSpecific(payload);\n  }\n\n  public peek(): T | undefined {\n    return this.data[0]?.payload;\n  }\n\n  public get length(): number {\n    return this.data.length;\n  }\n\n  public get empty(): boolean {\n    return this.length < 1;\n  }\n\n  private takeSpecific(payload: T): T | null {\n    const index = this.data.findIndex((s) => s.payload === payload);\n    if (index < 0) {\n      return null;\n    }\n\n    payload = this.data[index].payload;\n    const updated = this.data.slice();\n    updated.splice(index, 1);\n    this.data = updated;\n    return payload;\n  }\n}\n\nfunction comparePriority<T>(a: Item<T>, b: Item<T>) {\n  return a.priority - b.priority;\n}\n","import {\n  importsOrchestratorFeature,\n  ImportsOrchestratorFeatureKind,\n  ImportsOrhestratorQueue,\n} from './internal';\nimport { Provider } from '@angular/core';\nimport { Queue } from '../queue/queue';\nimport { ImportsOrchestratorQueueItem } from '../service';\nimport { IMPORTS_ORCHESTRATOR_FEATURE_QUEUE } from '../internal';\n\nexport function withQueue(\n  queue: Queue<ImportsOrchestratorQueueItem>\n): ImportsOrhestratorQueue {\n  const providers: Provider[] = [\n    {\n      provide: IMPORTS_ORCHESTRATOR_FEATURE_QUEUE,\n      useValue: queue,\n    },\n  ];\n  return importsOrchestratorFeature(\n    ImportsOrchestratorFeatureKind.Queue,\n    providers\n  );\n}\n","import {\n  ImportsOrchestration,\n  importsOrchestratorFeature,\n  ImportsOrchestratorFeatureKind,\n  ImportsOrchestratorOrchestration,\n} from './internal';\nimport { Provider } from '@angular/core';\nimport {IMPORTS_ORCHESTRATOR_FEATURE_ORCHESTRATION, IMPORTS_ORCHESTRATOR_FEATURE_LOGGER} from \"../internal\";\nimport {ConsoleLike} from \"./logger\";\n\nexport function withOrchestration(\n  orchestration: ImportsOrchestration\n): ImportsOrchestratorOrchestration {\n  const providers: Provider[] = [\n    {\n      provide: IMPORTS_ORCHESTRATOR_FEATURE_ORCHESTRATION,\n      useFactory: (logger: ConsoleLike) =>\n        validateOrchestration(orchestration, logger),\n      deps: [IMPORTS_ORCHESTRATOR_FEATURE_LOGGER],\n    },\n  ];\n  return importsOrchestratorFeature(\n    ImportsOrchestratorFeatureKind.Orchestration,\n    providers\n  );\n}\n\nfunction validateOrchestration(\n  orchestration: ImportsOrchestration,\n  logger: ConsoleLike\n) {\n  const conflicts = findConflictingPriorities(orchestration).map(\n    ([priority, imports]) =>\n      `conflicting priority=${priority} for @imports=\"${imports.join('\", \"')}\"`\n  );\n\n  if (conflicts.length > 0) {\n    logger.warn(conflicts.join('\\n'));\n  }\n\n  return orchestration;\n}\n\nfunction findConflictingPriorities(orchestration: ImportsOrchestration) {\n  const byPriority = Object.entries(orchestration).reduce<{\n    [key: number]: string[];\n  }>((acc, [key, value]) => {\n    acc[value] = [...(acc[value] || []), key];\n    return acc;\n  }, {});\n\n  return Object.entries(byPriority).filter(\n    ([order, imports]) => imports.length > 1\n  );\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport {\n  ImportsOrchestration,\n  ImportsOrchestratorConcurrency, ImportsOrchestratorInterceptor,\n  ImportsOrchestratorLogger,\n  ImportsOrchestratorRouting,\n  ImportsOrchestratorTimeout,\n} from './features/internal';\nimport {\n  withConcurrencyStatic,\n  withLogger,\n  withoutRouting,\n  withTimeout,\n} from './features';\nimport { Queue } from './queue/queue';\nimport { ImportsOrchestratorQueueItem } from './service';\nimport { withQueue } from './features/queue';\nimport { withOrchestration } from './features/orchestration';\n\nexport type ImportsOrchestratorFeatures =\n  | ImportsOrchestratorRouting\n  | ImportsOrchestratorConcurrency\n  | ImportsOrchestratorInterceptor\n  | ImportsOrchestratorTimeout\n  | ImportsOrchestratorLogger;\n\nexport const provideImportsOrchestration = <T>(\n  orchestration: T & ImportsOrchestration,\n  ...features: ImportsOrchestratorFeatures[]\n): EnvironmentProviders =>\n  makeEnvironmentProviders([\n    // default values:\n    ...[\n      withoutRouting(),\n      withConcurrencyStatic(2),\n      withLogger(console),\n      withTimeout(10000),\n      withQueue(new Queue<ImportsOrchestratorQueueItem>()),\n    ].map((feature) => feature.providers),\n    // configured values from features\n    ...(features || []).map((feature) => feature.providers),\n    ...withOrchestration(orchestration).providers,\n  ]);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ImportsOrchestratorQueueDirective","i2.ImportsOrchestratorIODirective","i3.ImportsOrchestratorLifecycleDirective","i4.ImportsOrchestratorCSSClassDirective"],"mappings":"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"}