{"version":3,"file":"orchestrator-core.mjs","sources":["../../../../libs/core/src/lib/component-map.ts","../../../../libs/core/src/lib/metadata/util.ts","../../../../libs/core/src/lib/metadata/dynamic-component.ts","../../../../libs/core/src/lib/component-locator/component-locator.service.ts","../../../../libs/core/src/lib/metadata/configuration.ts","../../../../libs/core/src/lib/util.ts","../../../../libs/core/src/lib/config/function-error.ts","../../../../libs/core/src/lib/config/invalid-configuration-error.ts","../../../../libs/core/src/lib/config/option/function.ts","../../../../libs/core/src/lib/error-strategy/error-strategy.ts","../../../../libs/core/src/lib/config/configuration.service.ts","../../../../libs/core/src/lib/error-strategy/throw-error-strategy.ts","../../../../libs/core/src/lib/render-component.ts","../../../../libs/core/src/lib/injectors/local-injector-map.ts","../../../../libs/core/src/lib/injectors/mapped-injector.ts","../../../../libs/core/src/lib/injectors/static-injector-map.ts","../../../../libs/core/src/lib/injectors/providers.ts","../../../../libs/core/src/lib/config/option/allowed-values.ts","../../../../libs/core/src/lib/config/option/integer.ts","../../../../libs/core/src/lib/config/option/range.ts","../../../../libs/core/src/lib/config/option/required.ts","../../../../libs/core/src/lib/config/option/type.ts","../../../../libs/core/src/lib/config/option/option.ts","../../../../libs/core/src/lib/config/option/type-factory.ts","../../../../libs/core/src/lib/config/option/not-present.ts","../../../../libs/core/src/lib/injectors/injector-registry.service.ts","../../../../libs/core/src/lib/injectors/local-injector.ts","../../../../libs/core/src/lib/render-item/components-registry.service.ts","../../../../libs/core/src/lib/render-item/render-item.component.ts","../../../../libs/core/src/lib/render-item/render-item.component.html","../../../../libs/core/src/lib/orchestrator/orchestrator.component.ts","../../../../libs/core/src/lib/orchestrator/orchestrator.component.html","../../../../libs/core/src/lib/core.module.ts","../../../../libs/core/src/lib/error-strategy/suppress-error-strategy.ts","../../../../libs/core/src/public_api.ts","../../../../libs/core/src/orchestrator-core.ts"],"sourcesContent":["import { InjectionToken, Type } from '@angular/core';\n\nimport { OrchestratorDynamicComponentType } from './types';\n\nexport type DefaultDynamicComponent = OrchestratorDynamicComponentType;\n\nexport interface ComponentMap<T extends Type<any> = DefaultDynamicComponent> {\n  [k: string]: T;\n}\n\nexport type ComponentRegistry<T extends Type<any> = DefaultDynamicComponent> =\n  | T[]\n  | ComponentMap<T>;\n\nexport const COMPONENTS = new InjectionToken<ComponentRegistry[]>('COMPONENTS');\n","export function createMetadataGetSet<M = any>(key: string) {\n  const k = Symbol(key);\n  return {\n    set: defineMetadata.bind(null, k) as <T>(value: M, target: T) => T,\n    get: (type: any): M | undefined => type[k],\n  };\n}\n\nexport function defineMetadata<T>(\n  key: string | number | symbol,\n  value: any,\n  target: T,\n) {\n  if (key in target === false) {\n    Object.defineProperty(target, key, {\n      enumerable: false,\n      configurable: true,\n      writable: true,\n      value,\n    });\n  } else {\n    target[key] = value;\n  }\n  return target;\n}\n","import { Type } from '@angular/core';\n\nimport { OrchestratorDynamicComponentType } from '../types';\nimport { createMetadataGetSet } from './util';\n\nexport interface DynamicComponentOptions<C> {\n  config: Type<C>;\n}\n\nconst dynamicComponentMeta = createMetadataGetSet<DynamicComponentOptions<any>>(\n  'DynamicComponentMeta',\n);\n\nexport function DynamicComponent<C>(\n  options: DynamicComponentOptions<C>,\n): ClassDecorator {\n  return target => dynamicComponentMeta.set(options, target);\n}\n\nexport function getDynamicComponentMeta<C>(\n  type: OrchestratorDynamicComponentType<C>,\n): DynamicComponentOptions<C> | undefined {\n  return dynamicComponentMeta.get(type);\n}\n","import {\n  ComponentFactoryResolver,\n  Injectable,\n  Injector,\n  Type,\n} from '@angular/core';\n\nimport {\n  ComponentMap,\n  ComponentRegistry,\n  COMPONENTS,\n  DefaultDynamicComponent,\n} from '../component-map';\nimport { getDynamicComponentMeta } from '../metadata/dynamic-component';\nimport {\n  GetOrchestratorDynamicComponentConfig,\n  OrchestratorDynamicComponentType,\n} from '../types';\n\n@Injectable()\nexport class ComponentLocatorService {\n  private componentRegistry = this.injector.get(COMPONENTS);\n\n  private componentArray = this.componentRegistry\n    .filter(isComponentArray)\n    .reduce((arr, reg) => [...arr, ...reg], []);\n\n  private componentArrayMap = this.componentArray\n    .map(type => this.cfr.resolveComponentFactory(type))\n    .reduce(\n      (map, compFactory) => ({\n        ...map,\n        [compFactory.selector]: compFactory.componentType,\n      }),\n      Object.create(null) as ComponentMap,\n    );\n\n  private componentMaps = this.componentRegistry.filter(isComponentMap);\n  private componentMap = this.componentMaps.reduce(\n    (obj, map) => ({ ...obj, ...map }),\n    this.componentArrayMap as ComponentMap,\n  );\n\n  constructor(\n    private injector: Injector,\n    private cfr: ComponentFactoryResolver,\n  ) {}\n\n  resolve<T, C = GetOrchestratorDynamicComponentConfig<T>>(\n    component: string | OrchestratorDynamicComponentType<C>,\n  ): OrchestratorDynamicComponentType<C> | undefined {\n    if (typeof component === 'function') {\n      return component;\n    }\n\n    return this.componentMap[component];\n  }\n\n  getDefaultConfig<C>(\n    component: OrchestratorDynamicComponentType<C>,\n  ): C | null {\n    const configType = this.getConfigType(component);\n\n    if (!configType) {\n      return null;\n    }\n\n    return this.injector.get(configType, null);\n  }\n\n  getConfigType<C>(\n    component: OrchestratorDynamicComponentType<C>,\n  ): Type<C> | null {\n    if (!component) {\n      return null;\n    }\n\n    const meta = getDynamicComponentMeta(component);\n\n    if (!meta) {\n      return null;\n    }\n\n    return meta.config;\n  }\n}\n\nfunction isComponentArray(\n  reg: ComponentRegistry,\n): reg is DefaultDynamicComponent[] {\n  return Array.isArray(reg);\n}\n\nfunction isComponentMap(reg: ComponentRegistry): reg is ComponentMap {\n  return !!reg && !Array.isArray(reg);\n}\n","import { Type } from '@angular/core';\n\nimport { createMetadataGetSet } from './util';\n\nexport interface ConfigurationMeta {\n  prop: string | symbol;\n  decorator: any;\n  args: any[];\n}\n\nconst configurationMeta = createMetadataGetSet<ConfigurationMeta[]>(\n  'ConfigurationMeta',\n);\n\n/**\n * @internal\n */\nexport function addConfig(target: any, meta: ConfigurationMeta) {\n  const configs = getConfigs(target);\n  configurationMeta.set([...configs, meta], target);\n}\n\n/**\n * @internal\n */\nexport function getConfigs(type: Type<any>): ConfigurationMeta[] {\n  return configurationMeta.get(type) || [];\n}\n","/**\n * @internal\n */\nexport function execRegex(regex: RegExp, val: string): string[] {\n  const arr = [];\n  let group: RegExpExecArray;\n\n  while ((group = regex.exec(val)) !== null) {\n    if (group.index === regex.lastIndex) {\n      regex.lastIndex++;\n    }\n\n    arr.push(...group);\n  }\n\n  return !arr.length ? null : arr;\n}\n\n/**\n * @internal\n */\nexport function parseFunction(fnStr: string) {\n  const fnRegex = /^function\\s*(?:[A-z0-9]+)?\\s*\\(([\\w\\W]*?)\\)\\s*\\{([\\w\\W]*)\\}$/gm;\n  const arrowFnRegex = /^\\(?([\\w\\W]*?)\\)?\\s*=>\\s*\\{([\\w\\W]*)\\}$/gm;\n  const returnArrowFnRegex = /^\\(?([\\w\\W]*?)\\)?\\s*=>\\s*([^}{]*)$/gm;\n\n  fnStr = fnStr.trim();\n\n  const fnInfo =\n    execRegex(fnRegex, fnStr) ||\n    execRegex(arrowFnRegex, fnStr) ||\n    execRegex(returnArrowFnRegex, fnStr);\n\n  if (!fnInfo || fnInfo.length < 2) {\n    return null;\n  }\n\n  const _args = fnInfo.length > 2 ? fnInfo[1] || '' : '';\n  const args = _args\n    .split(',')\n    .map(arg => arg.trim())\n    .filter(arg => !!arg);\n\n  const isReturnFunction = returnArrowFnRegex.test(fnStr);\n  const _body = fnInfo[fnInfo.length - 1];\n\n  if (!_body && isReturnFunction) {\n    return null;\n  }\n\n  const body = isReturnFunction ? `return ${_body}` : _body || '';\n\n  return { args, body };\n}\n\n/**\n * @internal\n */\nexport function isArgOptional(argExpr: string): boolean {\n  return /^[^=]+\\s*=.+/.test(argExpr);\n}\n\n/**\n * @internal\n */\nexport function getArgName(argExpr: string): string {\n  return argExpr.match(/^([^=\\s]+)(?:\\s*=.+)?/)[1];\n}\n","import { Type } from '@angular/core';\n\nexport class FunctionError<C> extends Error {\n  constructor(\n    public config: Type<C>,\n    public error: Error,\n    public fnName: string,\n    public fnBody: string,\n    public args: any[],\n  ) {\n    super(\n      `During function execution ${fnName} from config ${config.name}:\n      ${error}\n\n      Stack:\n      ${error.stack}\n\n      Function Body:\n      ${fnBody}\n\n      Function Arguments: [${args.join('\\n')}]`,\n    );\n  }\n}\n","import { Type } from '@angular/core';\nimport { Validation } from 'io-ts';\nimport { PathReporter } from 'io-ts/lib/PathReporter';\n\nexport class InvalidConfigurationError<C> extends Error {\n  component: Type<C>;\n  validation: Validation<C>;\n  config?: C;\n\n  constructor(component: Type<C>, validation: Validation<any>, config?: any) {\n    const paths = PathReporter.report(validation).join('\\n');\n\n    super(\n      `Invalid configuration for component ${component.name}'s config:\n      ${paths}\n\n      Actual config: ${config ? JSON.stringify(config, null, 2) : config}`,\n    );\n\n    this.component = component;\n    this.validation = validation;\n    this.config = config;\n  }\n}\n","import { Injector } from '@angular/core';\nimport { Property } from '@orchestrator/gen-io-ts';\nimport { chain } from 'fp-ts/lib/Either';\nimport { pipe } from 'fp-ts/function';\nimport * as t from 'io-ts';\n\nimport { addConfig } from '../../metadata/configuration';\nimport { parseFunction } from '../../util';\n\nexport type CustomInjectorFactory = (parentInjector: Injector) => Injector;\n\nexport interface FunctionMeta {\n  args: string[];\n  body: string;\n}\n\nexport interface FunctionWithMeta extends Function, FunctionMeta {}\n\nexport const CUSTOM_FUNCTION_ARGUMENT_PREFIX = '$';\n\nexport const FunctionFromMeta = new t.Type<FunctionWithMeta, FunctionMeta>(\n  'FunctionFromMeta',\n  isFunctionWithMeta,\n  (m, c) =>\n    pipe(\n      t.UnknownRecord.validate(m, c),\n      chain((obj) => {\n        if (!hasFunctionMeta(obj)) {\n          return t.failure(m, c);\n        }\n\n        // Move custom arguments to the end\n        obj.args.sort((arg1, arg2) => {\n          const is1Custom = arg1.startsWith(CUSTOM_FUNCTION_ARGUMENT_PREFIX);\n          const is2Custom = arg2.startsWith(CUSTOM_FUNCTION_ARGUMENT_PREFIX);\n\n          if (is1Custom === is2Custom) {\n            return 0;\n          }\n\n          return is1Custom ? 1 : -1;\n        });\n\n        const fn = new Function(...obj.args, obj.body) as FunctionWithMeta;\n        fn.args = obj.args;\n        fn.body = obj.body;\n\n        return t.success(fn);\n      }),\n    ),\n  (fn) => ({ args: fn.args, body: fn.body }),\n);\n\nexport const FunctionFromString = new t.Type<FunctionWithMeta, string>(\n  'FunctionFromString',\n  isFunctionWithMeta,\n  (m, c) =>\n    pipe(\n      t.string.validate(m, c),\n      chain((str) => {\n        try {\n          return FunctionFromMeta.validate(parseFunction(str), c);\n        } catch {\n          return t.failure(str, c);\n        }\n      }),\n    ),\n  (fn) => fn.toString(),\n);\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const FunctionWithMeta = new t.Type<FunctionWithMeta, Function>(\n  'FunctionWithMeta',\n  isFunctionWithMeta,\n  (m, c) =>\n    pipe(\n      t.Function.validate(m, c),\n      chain((fn) => {\n        try {\n          // Reconstruct function from string to reorder arguments\n          return FunctionFromString.validate(fn.toString(), c);\n        } catch {\n          return t.failure(fn, c);\n        }\n      }),\n    ),\n  (fn) => fn,\n);\n\nexport function OptionFunction(\n  customInjector?: CustomInjectorFactory,\n): PropertyDecorator {\n  const decorator = Property({\n    typeFactory: () =>\n      t.union([FunctionFromString, FunctionFromMeta, FunctionWithMeta]),\n  });\n  return (target, prop) => {\n    decorator(target, prop);\n    addConfig(target, {\n      prop,\n      decorator: OptionFunction,\n      args: [customInjector],\n    });\n  };\n}\n\nfunction hasFunctionMeta(obj: any): obj is FunctionMeta {\n  return obj && Array.isArray(obj.args) && typeof obj.body === 'string';\n}\n\nfunction isFunctionWithMeta(fn: any): fn is FunctionWithMeta {\n  return typeof fn === 'function' && hasFunctionMeta(fn);\n}\n","export abstract class ErrorStrategy {\n  abstract handle(error: Error): void;\n}\n","import { Injectable, Injector, Type } from '@angular/core';\nimport { genIoType } from '@orchestrator/gen-io-ts';\nimport { fold as foldEither, isLeft, left, map } from 'fp-ts/lib/Either';\nimport { fold, none, Option, some } from 'fp-ts/lib/Option';\nimport { pipe } from 'fp-ts/function';\nimport { Errors, Type as IoCodec, Validation } from 'io-ts';\n\nimport { ErrorStrategy } from '../error-strategy/error-strategy';\nimport { ConfigurationMeta, getConfigs } from '../metadata/configuration';\nimport { getArgName, isArgOptional } from '../util';\nimport { FunctionError } from './function-error';\nimport { InvalidConfigurationError } from './invalid-configuration-error';\nimport {\n  CustomInjectorFactory,\n  FunctionWithMeta,\n  OptionFunction,\n} from './option/function';\n\n@Injectable()\nexport class ConfigurationService {\n  private codecMap = new Map<Type<any>, IoCodec<any>>();\n\n  constructor(\n    private errorStrategy: ErrorStrategy,\n    private injector: Injector,\n  ) {}\n\n  decode<T>(type: Type<T>, config: T, injector?: Injector): T;\n  decode<T, C>(type: Type<T>, config: C, injector?: Injector): T | C;\n  decode<T, C>(type: Type<T>, config: C, injector?: Injector): T | C {\n    return pipe(\n      this.validate(type, config),\n      map((c) => this.processFunctions(type, c, config, injector)),\n      foldEither(\n        () => config,\n        (decodedConfig) => decodedConfig,\n      ),\n    );\n  }\n\n  validate<T, C>(type: Type<T>, config: C): Validation<T | C> {\n    const validation = pipe(\n      this.getCodecFor(type),\n      fold(\n        () => left<Errors, T>([]),\n        (codec) => codec.decode(config),\n      ),\n    );\n\n    if (isLeft(validation) && type) {\n      this.errorStrategy.handle(\n        new InvalidConfigurationError(type, validation, config),\n      );\n    }\n\n    return validation;\n  }\n\n  getMetaOf(type: Type<any>): ConfigurationMeta[] {\n    return getConfigs(type.prototype);\n  }\n\n  private getCodecFor<T>(type: Type<T>): Option<IoCodec<T>> {\n    if (!type) {\n      return none;\n    }\n\n    const codec = this.codecMap.get(type) || genIoType(type);\n    this.codecMap.set(type, codec); // Set codec back to cache\n    return some(codec);\n  }\n\n  private processFunctions<T>(\n    type: Type<T>,\n    config: T,\n    originalConfig: any,\n    injector = this.injector,\n  ): T {\n    const meta = this.getMetaOf(type);\n\n    meta\n      .filter((m) => m.decorator === OptionFunction && config[m.prop])\n      .forEach((m) => {\n        const customInjectorFactory = m.args[0] as CustomInjectorFactory;\n        const customInjector = customInjectorFactory\n          ? customInjectorFactory(injector)\n          : injector;\n\n        const { args, fn } = this.bindFunction(config[m.prop], customInjector);\n\n        config[m.prop] = fn;\n        config[m.prop] = this.guardFunction(\n          config[m.prop],\n          type,\n          String(m.prop),\n          originalConfig[m.prop],\n          args,\n        );\n      });\n\n    return config;\n  }\n\n  private bindFunction(\n    fn: FunctionWithMeta,\n    injector: Injector,\n  ): { fn: FunctionWithMeta; args: any[] } {\n    const { args, body } = fn;\n\n    const resolvedArgs = args\n      .filter((arg) => !arg.startsWith('$'))\n      .map((arg) => this.resolveArg(arg, injector));\n\n    const boundFn = fn.bind(null, ...resolvedArgs) as FunctionWithMeta;\n    boundFn.args = args;\n    boundFn.body = body;\n\n    return { fn: boundFn, args: resolvedArgs };\n  }\n\n  private guardFunction(\n    fn: FunctionWithMeta,\n    configType: Type<any>,\n    fnName: string,\n    fnBody: string,\n    boundArgs: any[],\n  ): FunctionWithMeta {\n    const guardedFn = ((...args: any[]) => {\n      try {\n        return fn(...args);\n      } catch (e) {\n        this.errorStrategy.handle(\n          new FunctionError(configType, e, fnName, fnBody, [\n            ...boundArgs,\n            ...args,\n          ]),\n        );\n      }\n    }) as unknown as FunctionWithMeta;\n\n    guardedFn.args = fn.args;\n    guardedFn.body = fn.body;\n\n    return guardedFn;\n  }\n\n  private resolveArg(argExpr: string, injector: Injector): any {\n    const arg = getArgName(argExpr);\n    const isOptional = isArgOptional(argExpr);\n\n    // Dynamically resolve function arguments - no type info available\n    const res = injector.get(\n      arg,\n      isOptional ? null : Injector.THROW_IF_NOT_FOUND,\n    );\n\n    return res === null && isOptional ? undefined : res;\n  }\n}\n","import { ErrorStrategy } from './error-strategy';\n\nexport class ThrowErrorStrategy extends ErrorStrategy {\n  handle(error: Error): void {\n    throw error;\n  }\n}\n","import { InjectorRegistryService } from './injectors/injector-registry.service';\nimport { OrchestratorConfigItem } from './types';\n\n/**\n * Abstract component type that is responsible to render dynamic component\n */\nexport abstract class RenderComponent {\n  /**\n   * Mark for check dynamic component\n   */\n  abstract markForCheck(): void;\n\n  /**\n   * Add new item to dynamic component `items` property\n   * causing it to render new component if supported by component\n   */\n  abstract addItem(item: OrchestratorConfigItem<any>): void;\n\n  /**\n   * Remove item from dynamic component `item` property\n   * causing it to remove rendered component from view\n   */\n  abstract removeItem(item: OrchestratorConfigItem<any>): void;\n\n  /**\n   * Remove all dynamic components from view\n   */\n  abstract clearItems(): void;\n\n  /**\n   * Get {@link InjectorRegistryService} to manage injector resolution\n   */\n  abstract getInjectorRegistryService(): InjectorRegistryService;\n}\n","import { InjectionToken, Injector, StaticProvider, Type } from '@angular/core';\n\nimport { RenderComponent } from '../render-component';\nimport { InjectorMap } from '../types';\n\nexport type LocalGetInjectorToken = () => Injector;\nexport type LocalGetComponentToken = () => any;\nexport type LocalGetConfigToken = () => any;\nexport type LocalUpdateConfigToken = (config: any) => any;\nexport type LocalIsConfigValidToken = () => boolean;\nexport type LocalGetContextToken = () => any;\n\nexport const LOCAL_GET_INJECTOR = new InjectionToken<LocalGetInjectorToken>(\n  'LOCAL_GET_INJECTOR',\n);\n\nexport const LOCAL_GET_COMPONENT = new InjectionToken<LocalGetComponentToken>(\n  'LOCAL_GET_COMPONENT',\n);\n\nexport const LOCAL_GET_CONFIG = new InjectionToken<LocalGetConfigToken>(\n  'LOCAL_GET_CONFIGURATION',\n);\n\nexport const LOCAL_UPDATE_CONFIG = new InjectionToken<LocalUpdateConfigToken>(\n  'LOCAL_GET_CONFIGURATION',\n);\n\nexport const LOCAL_GET_CONFIG_VALID = new InjectionToken<\n  LocalIsConfigValidToken\n>('LOCAL_GET_CONFIGURATION_VALID');\n\nexport const LOCAL_GET_CONTEXT = new InjectionToken<LocalGetContextToken>(\n  'LOCAL_GET_CONTEXT',\n);\n\nexport const LOCAL_INJECTOR_MAP: InjectorMap = {\n  getInjector: LOCAL_GET_INJECTOR,\n  getComponent: LOCAL_GET_COMPONENT,\n  getConfig: LOCAL_GET_CONFIG,\n  updateConfig: LOCAL_UPDATE_CONFIG,\n  isConfigValid: LOCAL_GET_CONFIG_VALID,\n  renderComponent: RenderComponent as Type<RenderComponent>,\n  getContext: LOCAL_GET_CONTEXT,\n};\n\nexport function getLocalProviders(data: {\n  getInjector: LocalGetInjectorToken;\n  getComponent: LocalGetComponentToken;\n  getConfig: LocalGetConfigToken;\n  updateConfig: LocalUpdateConfigToken;\n  isConfigValid: LocalIsConfigValidToken;\n  getContext: LocalGetContextToken;\n}): StaticProvider[] {\n  return [\n    {\n      provide: LOCAL_GET_INJECTOR,\n      useValue: data.getInjector,\n    },\n    {\n      provide: LOCAL_GET_COMPONENT,\n      useValue: data.getComponent,\n    },\n    {\n      provide: LOCAL_GET_CONFIG,\n      useValue: data.getConfig,\n    },\n    {\n      provide: LOCAL_UPDATE_CONFIG,\n      useValue: data.updateConfig,\n    },\n    {\n      provide: LOCAL_GET_CONFIG_VALID,\n      useValue: data.isConfigValid,\n    },\n    {\n      provide: LOCAL_GET_CONTEXT,\n      useValue: data.getContext,\n    },\n  ];\n}\n","import {\n  Inject,\n  Injectable,\n  InjectFlags,\n  InjectionToken,\n  Injector,\n  Provider,\n  Type,\n} from '@angular/core';\n\nimport { InjectorMap } from '../types';\n\nexport interface InjectorMapToken extends Array<InjectorMap> {}\n\n/**\n * Multi-provider of {@link InjectorMap}\n */\nexport const INJECTOR_MAP_TOKEN = new InjectionToken<InjectorMapToken>(\n  'INJECTOR_MAP',\n);\n\n/**\n * Helper to provide {@link INJECTOR_MAP_TOKEN}\n */\nexport function provideInjectorMap(map: InjectorMap): Provider {\n  return { provide: INJECTOR_MAP_TOKEN, useValue: map, multi: true };\n}\n\n/**\n * Maps tokens to other tokens and then executes parent injector.\n *\n * NOT a Service!\n * Use via {@link MappedInjectorFactory}\n */\nexport class MappedInjector implements Injector {\n  private injectorMap: InjectorMap;\n\n  constructor(\n    private parent: Injector,\n    private injectorMaps: InjectorMapToken,\n  ) {}\n\n  get<T>(\n    token: Type<T> | InjectionToken<T>,\n    notFoundValue?: T,\n    flags?: InjectFlags,\n  ): T;\n  get(token: any, notFoundValue?: any, flags?: InjectFlags): any;\n  get(token: any, notFoundValue?: any, flags?: any) {\n    return this.parent.get(this.mapToken(token), notFoundValue, flags);\n  }\n\n  private mapToken(token: any): any {\n    if (typeof token !== 'string') {\n      return token;\n    }\n\n    this.maybeInitInjectorMap();\n\n    token = this.processToken(token);\n\n    return token in this.injectorMap ? this.injectorMap[token] : token;\n  }\n\n  private maybeInitInjectorMap() {\n    if (!this.injectorMap) {\n      this.injectorMap = this.injectorMaps.reduce(\n        (acc, m) =>\n          Object.keys(m).reduce(\n            (obj, k) => ({ ...obj, [this.processToken(k)]: m[k] }),\n            acc,\n          ),\n        Object.create(null),\n      );\n    }\n  }\n\n  private processToken(t: string) {\n    return t.toLowerCase();\n  }\n}\n\n/**\n * Factory for {@link MappedInjector}\n */\n@Injectable()\nexport class MappedInjectorFactory {\n  constructor(\n    @Inject(INJECTOR_MAP_TOKEN) private injectorMap: InjectorMapToken,\n  ) {}\n\n  /**\n   * Creates MappedInjector with parent injector and {@link INJECTOR_MAP_TOKEN} from DI\n   */\n  create(parent: Injector): Injector {\n    return new MappedInjector(parent, this.injectorMap);\n  }\n}\n","import { InjectFlags, InjectionToken, StaticProvider } from '@angular/core';\n\nimport { InjectorMap } from '../types';\n\nexport const STATIC_INJECT_FLAGS = new InjectionToken<InjectFlags>(\n  'STATIC_INJECT_FLAGS',\n);\n\nexport const STATIC_INJECTOR_MAP: InjectorMap = {\n  InjectFlags: STATIC_INJECT_FLAGS,\n};\n\nexport function getStaticProviders(): StaticProvider[] {\n  return [{ provide: STATIC_INJECT_FLAGS, useValue: InjectFlags }];\n}\n","import { Provider } from '@angular/core';\n\nimport { LOCAL_INJECTOR_MAP } from './local-injector-map';\nimport { provideInjectorMap } from './mapped-injector';\nimport { getStaticProviders, STATIC_INJECTOR_MAP } from './static-injector-map';\n\n/**\n * Provides a map for injectors with providers\n *\n * @internal\n */\nexport const INJECTOR_MAP_PROVIDERS: Provider[] = [\n  ...getStaticProviders(),\n  provideInjectorMap(STATIC_INJECTOR_MAP),\n  provideInjectorMap(LOCAL_INJECTOR_MAP),\n];\n","import { anyOf, Property } from '@orchestrator/gen-io-ts';\n\nimport { addConfig } from '../../metadata/configuration';\n\nexport function OptionAllowedValues(...values: any[]): PropertyDecorator {\n  const decorator = Property({ type: anyOf(...values) });\n  return (target, prop) => {\n    decorator(target, prop);\n    addConfig(target, { prop, decorator: OptionAllowedValues, args: [values] });\n  };\n}\n","import { Property } from '@orchestrator/gen-io-ts';\nimport { Int } from 'io-ts';\n\nimport { addConfig } from '../../metadata/configuration';\n\nexport function OptionInteger(): PropertyDecorator {\n  const decorator = Property({ typeFactory: () => Int });\n  return (target, prop) => {\n    decorator(target, prop);\n    addConfig(target, { prop, decorator: OptionInteger, args: [] });\n  };\n}\n","import { Property } from '@orchestrator/gen-io-ts';\nimport { brand, Branded } from 'io-ts';\n\nimport { addConfig } from '../../metadata/configuration';\n\nexport interface InRangeBrand {\n  readonly InRange: unique symbol;\n}\n\nexport function OptionRange(\n  min: number,\n  max: number,\n  step: number = 1,\n): PropertyDecorator {\n  const typeFactory = (type: any) =>\n    brand(\n      type,\n      (n): n is Branded<number, InRangeBrand> => n >= min && n <= max,\n      'InRange',\n    );\n  const decorator = Property({ type: Number, typeFactory });\n  return (target, prop) => {\n    decorator(target, prop);\n    addConfig(target, { prop, decorator: OptionRange, args: [min, max, step] });\n  };\n}\n","import { Property } from '@orchestrator/gen-io-ts';\n\nimport { addConfig } from '../../metadata/configuration';\n\nexport function OptionRequired(): PropertyDecorator {\n  const decorator = Property({ isRequired: true });\n  return (target, prop) => {\n    decorator(target, prop);\n    addConfig(target, { prop, decorator: OptionRequired, args: [] });\n  };\n}\n","import { Property } from '@orchestrator/gen-io-ts';\n\nimport { addConfig } from '../../metadata/configuration';\n\nexport function OptionType(type: any): PropertyDecorator {\n  const decorator = Property({ type });\n  return (target, prop) => {\n    decorator(target, prop);\n    addConfig(target, { prop, decorator: OptionType, args: [type] });\n  };\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { Property } from '@orchestrator/gen-io-ts';\n\nimport { OptionAllowedValues } from './allowed-values';\nimport { OptionInteger } from './integer';\nimport { OptionRange } from './range';\nimport { OptionRequired } from './required';\nimport { OptionType } from './type';\n\nexport interface OptionConfig {\n  required?: boolean;\n  type?: any;\n  range?: { min: number; max: number; step?: number };\n  integer?: boolean;\n  allowedValues?: any[];\n}\n\nexport function Option(config: OptionConfig = {}): PropertyDecorator {\n  const decorator = Property();\n\n  const decorators = (Object.keys(config) as (keyof OptionConfig)[])\n    .map((key) => {\n      switch (key) {\n        case 'required':\n          return config.required ? OptionRequired() : null;\n        case 'type':\n          return OptionType(config.type);\n        case 'range':\n          return OptionRange(\n            config.range!.min,\n            config.range!.max,\n            config.range!.step,\n          );\n        case 'integer':\n          return config.integer ? OptionInteger() : null;\n        case 'allowedValues':\n          return OptionAllowedValues(...config.allowedValues!);\n      }\n    })\n    .filter(Boolean);\n\n  return (target, prop) => {\n    decorator(target, prop);\n    decorators.forEach((d) => d!(target, prop));\n  };\n}\n","import { Type } from '@angular/core';\nimport { genIoType, Property } from '@orchestrator/gen-io-ts';\nimport { TypeFactory } from '@orchestrator/gen-io-ts/lib/metadata';\n\nimport { addConfig } from '../../metadata/configuration';\n\nexport function OptionTypeFactory<T>(\n  typeFactory: TypeFactory<T>,\n): PropertyDecorator {\n  const decorator = Property({ typeFactory });\n  return (target, prop) => {\n    decorator(target, prop);\n    addConfig(target, {\n      prop,\n      decorator: OptionTypeFactory,\n      args: [typeFactory],\n    });\n  };\n}\n\nexport function classToType<T>(cls: Type<T>) {\n  return genIoType<T>(cls);\n}\n","import { Property } from '@orchestrator/gen-io-ts';\nimport { null as nullType, undefined as undefinedType, union } from 'io-ts';\n\nimport { addConfig } from '../../metadata/configuration';\n\n/**\n * Will set type of property to `null | undefined`.\n *\n * Useful for cases when you have to explicitly exclude\n * specific property from type.\n *\n * **Example:**\n * ```ts\n * class A {\n *   @Option()\n *   prop1: string;\n *   @Option()\n *   prop2: string;\n *   @OptionNotPresent()\n *   prop3?: null | undefined; // This prop should be excluded!\n * }\n *\n * class B {\n *   @Option()\n *   prop1: string;\n *   @Option()\n *   prop2: string;\n *   @Option()\n *   prop3: string;\n * }\n *\n * type AorB = A | B;\n * ```\n */\nexport function OptionNotPresent(): PropertyDecorator {\n  const decorator = Property({\n    typeFactory: () => union([nullType, undefinedType]),\n  });\n  return (target, prop) => {\n    decorator(target, prop);\n    addConfig(target, { prop, decorator: OptionNotPresent, args: [] });\n  };\n}\n","import {\n  Injectable,\n  InjectFlags,\n  InjectionToken,\n  Injector,\n  StaticProvider,\n  Type,\n} from '@angular/core';\n\n@Injectable()\nexport class InjectorRegistryService implements Injector {\n  private injector = this.parentInjector;\n\n  constructor(private parentInjector: Injector) {}\n\n  get<T>(\n    token: Type<T> | InjectionToken<T>,\n    notFoundValue?: T,\n    flags?: InjectFlags,\n  ): T;\n  get(token: any, notFoundValue?: any, flags?: InjectFlags): any;\n  get(token: any, notFoundValue?: any, flags?: InjectFlags): any {\n    return this.injector.get(token, notFoundValue, flags);\n  }\n\n  addProviders(providers: StaticProvider[]) {\n    this.injector = Injector.create({\n      providers,\n      parent: this.injector,\n    });\n  }\n\n  reset(parentInjector?: Injector) {\n    this.injector = parentInjector || this.parentInjector;\n  }\n}\n","import { Injector } from '@angular/core';\n\nimport {\n  getLocalProviders,\n  LocalGetComponentToken,\n  LocalGetConfigToken,\n  LocalGetContextToken,\n  LocalIsConfigValidToken,\n  LocalUpdateConfigToken,\n} from './local-injector-map';\n\n/**\n * @internal\n */\nexport interface LocalInjectorParams {\n  parentInjector: Injector;\n  getComponent: LocalGetComponentToken;\n  getConfig: LocalGetConfigToken;\n  updateConfig: LocalUpdateConfigToken;\n  isConfigValid: LocalIsConfigValidToken;\n  getContext: LocalGetContextToken;\n}\n\n/**\n * @internal\n */\nexport function createLocalInjector(params: LocalInjectorParams): Injector {\n  const injector = Injector.create({\n    providers: getLocalProviders({\n      ...params,\n      getInjector: () => injector,\n    }),\n    parent: params.parentInjector,\n  });\n\n  return injector;\n}\n","import {\n  ComponentRef,\n  Injectable,\n  OnDestroy,\n  Optional,\n  SkipSelf,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class ComponentsRegistryService implements OnDestroy {\n  private _componentsReady$ = new Subject<ComponentRef<any>[]>();\n  componentsReady$ = this._componentsReady$.asObservable();\n\n  private count: number;\n  private childComponents: ComponentRef<any>[] = [];\n  private subChildComponents: ComponentRef<any>[] = [];\n\n  constructor(\n    @SkipSelf()\n    @Optional()\n    private parentComponentsRegistryService: ComponentsRegistryService,\n  ) {}\n\n  ngOnDestroy(): void {\n    this.childComponents = [];\n    this.subChildComponents = [];\n  }\n\n  waitFor(count: number) {\n    this.count = count;\n    this.childComponents = [];\n    this.subChildComponents = [];\n  }\n\n  add(compRef: ComponentRef<any>) {\n    if (this.parentComponentsRegistryService) {\n      this.parentComponentsRegistryService.addChild(compRef);\n\n      if (this.count === 0) {\n        this.parentComponentsRegistryService.addSubChildren([]);\n      }\n    }\n  }\n\n  addChildren(compRefs: ComponentRef<any>[]) {\n    if (this.parentComponentsRegistryService) {\n      this.parentComponentsRegistryService.addSubChildren(compRefs);\n    }\n  }\n\n  addChild(compRef: ComponentRef<any> | null | undefined) {\n    this.childComponents.push(compRef);\n  }\n\n  addSubChildren(compRefs: ComponentRef<any>[]) {\n    this.subChildComponents = this.subChildComponents.concat(compRefs);\n\n    if (this.childComponents.length >= this.count) {\n      this._componentsReady$.next(\n        this.childComponents.concat(this.subChildComponents).filter(Boolean),\n      );\n    }\n  }\n}\n","import { NgClass } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentFactory,\n  ComponentFactoryResolver,\n  ComponentRef,\n  EventEmitter,\n  Injector,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  Renderer2,\n  SimpleChanges,\n} from '@angular/core';\nimport { isRight } from 'fp-ts/lib/Either';\nimport {\n  AttributesMap,\n  DynamicDirectiveDef,\n  dynamicDirectiveDef,\n} from 'ng-dynamic-component';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ComponentLocatorService } from '../component-locator/component-locator.service';\nimport { OptionFunction } from '../config';\nimport { ConfigurationService } from '../config/configuration.service';\nimport { InjectorRegistryService } from '../injectors/injector-registry.service';\nimport { createLocalInjector } from '../injectors/local-injector';\nimport { MappedInjectorFactory } from '../injectors/mapped-injector';\nimport { RenderComponent } from '../render-component';\nimport {\n  OrchestratorConfigItem,\n  OrchestratorDynamicComponentInputs,\n  OrchestratorDynamicComponentType,\n} from '../types';\nimport { ComponentsRegistryService } from './components-registry.service';\n\nclass Handler {\n  @OptionFunction() handler: Function | string;\n}\n\n@Component({\n  selector: 'orc-render-item',\n  templateUrl: './render-item.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    { provide: RenderComponent, useExisting: RenderItemComponent },\n    ComponentsRegistryService,\n    InjectorRegistryService,\n    MappedInjectorFactory,\n  ],\n})\nexport class RenderItemComponent\n  extends RenderComponent\n  implements OnInit, OnChanges, OnDestroy\n{\n  @Input() item: OrchestratorConfigItem<any> | undefined;\n  @Input() context: any;\n\n  @Output() componentCreated = new EventEmitter<ComponentRef<any>>();\n  @Output() childComponentsCreated = new EventEmitter<ComponentRef<any>[]>();\n\n  destroyed$ = new Subject<void>();\n\n  componentType: OrchestratorDynamicComponentType;\n\n  inputs: OrchestratorDynamicComponentInputs = {\n    items: undefined,\n    config: undefined,\n    context: undefined,\n  };\n\n  directives: DynamicDirectiveDef<any>[] = [];\n  attributes: AttributesMap | null = null;\n\n  injector: Injector;\n\n  get itemsLength() {\n    return this.item && this.item.items ? this.item.items.length : 0;\n  }\n\n  private compRef: ComponentRef<any>;\n  private compCdr: ChangeDetectorRef;\n  private compFactory: ComponentFactory<any>;\n  private config: any;\n  private disposableHandlers: Function[] = [];\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    private renderer: Renderer2,\n    private cfr: ComponentFactoryResolver,\n    private componentLocatorService: ComponentLocatorService,\n    private componentsRegistryService: ComponentsRegistryService,\n    private configurationService: ConfigurationService,\n    private mappedInjectorFactory: MappedInjectorFactory,\n    private injectorRegistryService: InjectorRegistryService,\n  ) {\n    super();\n  }\n\n  ngOnInit() {\n    this.componentsRegistryService.componentsReady$\n      .pipe(takeUntil(this.destroyed$))\n      .subscribe((compRefs) => {\n        this.childComponentsCreated.emit(compRefs);\n        this.componentsRegistryService.addChildren(compRefs);\n      });\n\n    this.update();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if ('item' in changes && !changes.item.firstChange) {\n      this.update();\n    } else if ('context' in changes && !changes.context.firstChange) {\n      this.updateContextInput();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed$.next();\n    this.disposeHandlers();\n    this.compRef = this.compCdr = this.compFactory = this.config = null;\n  }\n\n  onComponentCreated(compRef: ComponentRef<any>) {\n    this.compRef = compRef;\n    this.compFactory = this.cfr.resolveComponentFactory(this.componentType);\n    this.componentCreated.emit(compRef);\n    this.componentsRegistryService.add(compRef);\n    this.updateHandlers();\n  }\n\n  getInjectorRegistryService() {\n    return this.injectorRegistryService;\n  }\n\n  markForCheck() {\n    if (!this.compCdr && this.compRef) {\n      this.compCdr = this.compRef.injector.get(ChangeDetectorRef);\n    }\n\n    if (this.compCdr) {\n      this.compCdr.markForCheck();\n    }\n  }\n\n  addItem(item: OrchestratorConfigItem<any>) {\n    if (this.inputs.items) {\n      this.inputs.items = [...this.inputs.items, item];\n    } else {\n      this.inputs.items = [item];\n    }\n\n    this.cdr.markForCheck();\n  }\n\n  removeItem(item: OrchestratorConfigItem<any>) {\n    const idx = this.inputs.items ? this.inputs.items.indexOf(item) : -1;\n\n    if (idx === -1) {\n      return;\n    }\n\n    this.inputs.items = this.inputs.items.filter((_, i) => i !== idx);\n\n    this.cdr.markForCheck();\n  }\n\n  clearItems() {\n    this.inputs.items = [];\n    this.cdr.markForCheck();\n  }\n\n  private update() {\n    this.updateComponent();\n    this.updateConfig();\n    this.updateInjector();\n    this.updateInputs();\n    this.updateContextInput();\n    this.updateAttributes();\n    this.updateDirectives();\n  }\n\n  private updateComponent() {\n    // Invalidate late-component-refs immediately\n    this.compRef = this.compCdr = this.compFactory = null;\n\n    if (this.item) {\n      this.componentType = this.componentLocatorService.resolve(\n        this.item.component,\n      );\n      this.componentsRegistryService.waitFor(this.itemsLength);\n    } else {\n      this.componentType = null;\n      this.componentsRegistryService.waitFor(0);\n    }\n  }\n\n  private updateConfig() {\n    if (this.componentType) {\n      this.config = {\n        ...this.componentLocatorService.getDefaultConfig(this.componentType),\n        ...this.item.config,\n      };\n    } else {\n      this.config = null;\n    }\n  }\n\n  private updateInjector() {\n    if (this.componentType) {\n      this.injector = this.createInjector();\n    } else {\n      this.injector = null;\n    }\n  }\n\n  private updateInputs() {\n    if (this.componentType) {\n      this.inputs.items = this.item.items;\n      this.inputs.config = this.getConfig();\n    } else {\n      this.inputs.items = this.inputs.config = null;\n    }\n  }\n\n  private updateAttributes() {\n    if (this.componentType) {\n      this.attributes = this.item.attributes || null;\n\n      if (this.item.id) {\n        this.attributes = { ...this.attributes, id: this.item.id };\n      }\n    }\n  }\n\n  private updateDirectives() {\n    if (this.componentType && this.item.classes) {\n      this.directives = [\n        dynamicDirectiveDef(NgClass, { ngClass: this.item.classes }),\n      ];\n    } else {\n      this.directives = [];\n    }\n  }\n\n  private getConfig() {\n    return (\n      this.configurationService.decode(\n        this.componentLocatorService.getConfigType(this.componentType),\n        this.config,\n        this.injector,\n      ) || {}\n    );\n  }\n\n  private createInjector() {\n    return this.mappedInjectorFactory.create(this.createLocalInjector());\n  }\n\n  private createLocalInjector() {\n    return createLocalInjector({\n      parentInjector: this.injectorRegistryService,\n      getComponent: () => this.compRef.instance,\n      getConfig: () => this.inputs.config,\n      updateConfig: (config) => {\n        this.markForCheck();\n        return (this.inputs.config = { ...this.inputs.config, ...config });\n      },\n      isConfigValid: () =>\n        isRight(\n          this.configurationService.validate(\n            this.componentLocatorService.getConfigType(this.componentType),\n            this.inputs.config,\n          ),\n        ),\n      getContext: () => this.context,\n    });\n  }\n\n  private updateHandlers() {\n    this.disposeHandlers();\n\n    if (!this.item.handlers || !this.compRef || !this.compFactory) {\n      return;\n    }\n\n    const { handlers } = this.item;\n\n    this.disposableHandlers = Object.keys(handlers)\n      .map((event) => ({\n        event,\n        handler: this.decodeHandler(handlers[event]),\n      }))\n      .filter(({ handler }) => handler)\n      .map(({ event, handler }) => this.attachHandler(event, handler));\n  }\n\n  private decodeHandler(handler: Function | string): Function {\n    const fn = this.configurationService.decode(\n      Handler,\n      { handler },\n      this.injector,\n    ).handler;\n    return typeof fn === 'function' ? fn : null;\n  }\n\n  private attachHandler(event: string, handler: Function): Function {\n    const outputInfo = this.compFactory.outputs.find(\n      (output) => output.templateName === event,\n    );\n\n    if (outputInfo) {\n      const output = this.compRef.instance[\n        outputInfo.propName\n      ] as Observable<any>;\n      const sub = output.subscribe(handler as any);\n      return () => sub.unsubscribe();\n    }\n\n    return this.renderer.listen(\n      this.compRef.location.nativeElement,\n      event,\n      handler as any,\n    );\n  }\n\n  private disposeHandlers() {\n    this.disposableHandlers.forEach((disposeHandler) => disposeHandler());\n    this.disposableHandlers = [];\n  }\n\n  private updateContextInput() {\n    if (this.componentType) {\n      this.inputs.context = this.context;\n    } else {\n      this.inputs.context = null;\n    }\n  }\n}\n","<ndc-dynamic\n  [ndcDynamicComponent]=\"componentType\"\n  [ndcDynamicInputs]=\"inputs\"\n  [ndcDynamicInjector]=\"injector\"\n  [ndcDynamicAttributes]=\"attributes\"\n  [ndcDynamicDirectives]=\"directives\"\n  (ndcDynamicCreated)=\"onComponentCreated($event)\"\n></ndc-dynamic>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  Output,\n} from '@angular/core';\nimport { ComponentRef } from '@angular/core';\nimport { combineLatest, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { OrchestratorConfigItem } from '../types';\n\n@Component({\n  selector: 'orc-orchestrator',\n  templateUrl: './orchestrator.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OrchestratorComponent {\n  @Input() config: OrchestratorConfigItem<any>;\n  @Input() context?: any;\n\n  private compCreated$ = new Subject<ComponentRef<any>>();\n  private childCompsCreated$ = new Subject<ComponentRef<any>[]>();\n\n  @Output()\n  componentsCreated = combineLatest([\n    this.compCreated$,\n    this.childCompsCreated$,\n  ]).pipe(map(([comp, comps]) => [comp, ...comps]));\n\n  compCreated(compRef: ComponentRef<any>) {\n    this.compCreated$.next(compRef);\n  }\n\n  childCompsCreated(compRefs: ComponentRef<any>[]) {\n    this.childCompsCreated$.next(compRefs);\n  }\n}\n","<orc-render-item\n  [item]=\"config\"\n  [context]=\"context\"\n  (componentCreated)=\"compCreated($event)\"\n  (childComponentsCreated)=\"childCompsCreated($event)\"\n></orc-render-item>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport {\n  DynamicAttributesModule,\n  DynamicDirectivesModule,\n  DynamicModule,\n} from 'ng-dynamic-component';\n\nimport { ComponentLocatorService } from './component-locator/component-locator.service';\nimport { ComponentRegistry, COMPONENTS } from './component-map';\nimport { ConfigurationService } from './config/configuration.service';\nimport { ErrorStrategy } from './error-strategy/error-strategy';\nimport { ThrowErrorStrategy } from './error-strategy/throw-error-strategy';\nimport { INJECTOR_MAP_PROVIDERS } from './injectors/providers';\nimport { OrchestratorComponent } from './orchestrator/orchestrator.component';\nimport { RenderItemComponent } from './render-item/render-item.component';\nimport { OrchestratorDynamicComponentType } from './types';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    DynamicModule,\n    DynamicAttributesModule,\n    DynamicDirectivesModule,\n  ],\n  declarations: [OrchestratorComponent, RenderItemComponent],\n  exports: [OrchestratorComponent, RenderItemComponent],\n})\nexport class OrchestratorCoreModule {\n  /**\n   * Use this to import module in root application only once\n   */\n  static forRoot(): ModuleWithProviders<OrchestratorCoreModule> {\n    return {\n      ngModule: OrchestratorCoreModule,\n      providers: [...OrchestratorCoreModule.getRootProviders()],\n    };\n  }\n\n  /**\n   * Use this to import module with components in root application only once\n   */\n  static withComponents(\n    components: ComponentRegistry<OrchestratorDynamicComponentType>,\n  ): ModuleWithProviders<OrchestratorCoreModule> {\n    return {\n      ngModule: OrchestratorCoreModule,\n      providers: [\n        ...OrchestratorCoreModule.getRootProviders(),\n        ...OrchestratorCoreModule.registerComponents(components),\n      ],\n    };\n  }\n\n  /**\n   * Use this to provide custom components for {@link OrchestratorCoreModule}\n   */\n  static registerComponents(\n    components: ComponentRegistry<OrchestratorDynamicComponentType>,\n  ): Provider[] {\n    return [{ provide: COMPONENTS, useValue: components, multi: true }];\n  }\n\n  private static getRootProviders(): Provider[] {\n    return [\n      { provide: ErrorStrategy, useClass: ThrowErrorStrategy },\n      ...INJECTOR_MAP_PROVIDERS,\n      ComponentLocatorService,\n      ConfigurationService,\n    ];\n  }\n}\n","import { ErrorStrategy } from './error-strategy';\n\nexport class SuppressErrorStrategy extends ErrorStrategy {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  handle(error: Error): void {\n    // Not doing anything here...\n  }\n}\n","// Core\nexport * from './lib/core.module';\nexport * from './lib/types';\nexport * from './lib/metadata';\nexport * from './lib/component-map';\n\n// Components\nexport * from './lib/orchestrator/orchestrator.component';\nexport * from './lib/render-component';\nexport * from './lib/render-item/render-item.component';\n\n// Errors\nexport * from './lib/error-strategy/error-strategy';\nexport * from './lib/error-strategy/throw-error-strategy';\nexport * from './lib/error-strategy/suppress-error-strategy';\n\n// Configuration\nexport * from './lib/config';\nexport * from './lib/config/configuration.service';\nexport * from './lib/config/invalid-configuration-error';\nexport * from './lib/config/function-error';\n\n// Injectors\nexport * from './lib/injectors/injector-registry.service';\nexport * from './lib/injectors/mapped-injector';\nexport * from './lib/injectors/static-injector-map';\nexport * from './lib/injectors/local-injector-map';\n\n// gen-io-ts lib re-export\nexport * from './lib/gen-io';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["foldEither","fold","nullType","undefinedType","map"],"mappings":"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"}