{"version":3,"file":"ngneat-spectator.mjs","sources":["../../../projects/spectator/src/lib/types.ts","../../../projects/spectator/src/lib/internals/key-parser.ts","../../../projects/spectator/src/lib/event-creators.ts","../../../projects/spectator/src/lib/dispatch-events.ts","../../../projects/spectator/src/lib/dom-selectors.ts","../../../projects/spectator/src/lib/utils.ts","../../../projects/spectator/src/lib/internals/element-focus.ts","../../../projects/spectator/src/lib/internals/query.ts","../../../projects/spectator/src/lib/select-option.ts","../../../projects/spectator/src/lib/type-in-element.ts","../../../projects/spectator/src/lib/base/base-spectator.ts","../../../projects/spectator/src/lib/base/dom-spectator.ts","../../../projects/spectator/src/lib/spectator/spectator.ts","../../../projects/spectator/src/lib/core.ts","../../../projects/spectator/src/lib/internals/rgb-to-hex.ts","../../../projects/spectator/src/lib/matchers.ts","../../../projects/spectator/src/lib/globals-injections.ts","../../../projects/spectator/src/lib/base/initial-module.ts","../../../projects/spectator/src/lib/spectator/initial-module.ts","../../../projects/spectator/src/lib/internals/merge.ts","../../../projects/spectator/src/lib/mock.ts","../../../projects/spectator/src/lib/base/options.ts","../../../projects/spectator/src/lib/spectator/options.ts","../../../projects/spectator/src/lib/spectator/create-factory.ts","../../../projects/spectator/src/lib/spectator-host/spectator-host.ts","../../../projects/spectator/src/lib/internals/node-by-directive.ts","../../../projects/spectator/src/lib/spectator-host/initial-module.ts","../../../projects/spectator/src/lib/spectator-host/host-component.ts","../../../projects/spectator/src/lib/spectator-host/options.ts","../../../projects/spectator/src/lib/spectator-host/create-factory.ts","../../../projects/spectator/src/lib/spectator-directive/spectator-directive.ts","../../../projects/spectator/src/lib/spectator-directive/initial-module.ts","../../../projects/spectator/src/lib/spectator-directive/options.ts","../../../projects/spectator/src/lib/spectator-directive/create-factory.ts","../../../projects/spectator/src/lib/spectator-service/spectator-service.ts","../../../projects/spectator/src/lib/spectator-service/initial-module.ts","../../../projects/spectator/src/lib/spectator-service/options.ts","../../../projects/spectator/src/lib/spectator-service/create-factory.ts","../../../projects/spectator/src/lib/spectator-routing/router-stub.ts","../../../projects/spectator/src/lib/spectator-routing/spectator-routing.ts","../../../projects/spectator/src/lib/spectator-routing/activated-route-stub.ts","../../../projects/spectator/src/lib/spectator-routing/initial-module.ts","../../../projects/spectator/src/lib/spectator-routing/options.ts","../../../projects/spectator/src/lib/spectator-routing/create-factory.ts","../../../projects/spectator/src/lib/spectator-http/spectator-http.ts","../../../projects/spectator/src/lib/spectator-http/initial-module.ts","../../../projects/spectator/src/lib/spectator-http/options.ts","../../../projects/spectator/src/lib/spectator-http/create-factory.ts","../../../projects/spectator/src/lib/spectator-pipe/spectator-pipe.ts","../../../projects/spectator/src/lib/spectator-pipe/initial-module.ts","../../../projects/spectator/src/lib/spectator-pipe/options.ts","../../../projects/spectator/src/lib/spectator-pipe/create-factory.ts","../../../projects/spectator/src/lib/spectator-injection-context/spectator-injection-context.ts","../../../projects/spectator/src/lib/spectator-injection-context/initial-module.ts","../../../projects/spectator/src/lib/spectator-injection-context/options.ts","../../../projects/spectator/src/lib/spectator-injection-context/create-factory.ts","../../../projects/spectator/src/public_api.ts","../../../projects/spectator/src/ngneat-spectator.ts"],"sourcesContent":["import { DebugElement, ElementRef, EventEmitter, InputSignalWithTransform, OnDestroy, OutputRef, Type } from '@angular/core';\n\nimport { DOMSelector } from './dom-selectors';\nimport { Token } from './token';\n\ntype OptionalPropertyNames<T> = {\n  [K in keyof T]-?: undefined extends T[K] ? K : never;\n}[keyof T];\ntype OptionalProperties<T> = Pick<T, OptionalPropertyNames<T>>;\n\nexport type InferInputSignal<T> = T extends InputSignalWithTransform<infer K, infer _> ? K : T;\nexport type InferInputSignals<C> = {\n  [P in keyof C]+?: InferInputSignal<C[P]>;\n};\n\nexport type OptionalsRequired<T> = Required<OptionalProperties<T>> & Partial<T>;\n\nexport type AtLeastOneRequired<T> = {\n  [K in keyof T]: Required<Pick<T, K>> & Partial<Omit<T, K>>;\n}[keyof T];\n\nexport type SpectatorElement = string | Element | DebugElement | ElementRef | Window | Document | DOMSelector;\n\nexport type QueryType = Type<any> | DOMSelector | string;\nexport interface QueryOptions<R> {\n  read?: Token<R>;\n  root?: boolean;\n  parentSelector?: Type<any> | string | DOMSelector;\n}\n\nexport type OutputType<P> = P extends EventEmitter<infer T> ? T : P extends OutputRef<infer T> ? T : never;\n\nexport type KeysMatching<T, V> = { [K in keyof T]: T[K] extends V ? K : never }[keyof T];\n\nexport type SelectOptions = string | string[] | HTMLOptionElement | HTMLOptionElement[];\n\nexport type NestedDeferBlocks = {\n  deferBlock: (deferBlockIndex?: number) => DeferBlocks;\n};\n\nexport interface DeferBlocks {\n  renderComplete(): Promise<NestedDeferBlocks>;\n  renderPlaceholder(): Promise<NestedDeferBlocks>;\n  renderLoading(): Promise<NestedDeferBlocks>;\n  renderError(): Promise<NestedDeferBlocks>;\n}\n\nexport interface KeyboardEventOptions {\n  key: string;\n  keyCode: number;\n}\n\nexport function doesServiceImplementsOnDestroy<S extends object>(testedService: S): testedService is S & OnDestroy {\n  return 'ngOnDestroy' in testedService && typeof testedService['ngOnDestroy'] === 'function';\n}\n\nexport function isString(value: any): value is string {\n  return typeof value === 'string';\n}\n\nexport function isNumber(value: any): value is number {\n  return typeof value === 'number';\n}\n\nexport function isType(v: any): v is Type<any> {\n  return typeof v === 'function';\n}\n\nexport function isHTMLOptionElementArray(value: any): value is HTMLOptionElement[] {\n  return Array.isArray(value) && !!value.length && value.every((item) => item instanceof HTMLOptionElement);\n}\n\nexport function isObject(v: any): v is object {\n  return v && typeof v === 'object';\n}\n","import { isNumber, isString, KeyboardEventOptions, isObject } from '../types';\n\nexport interface ModifierKeys {\n  alt?: boolean;\n  control?: boolean;\n  shift?: boolean;\n  meta?: boolean;\n}\n\nexport interface KeyOptions {\n  key: string | false;\n  keyCode: number | false;\n  modifiers: ModifierKeys;\n}\n\nexport const parseKeyOptions = (keyOrKeyCode: string | number | KeyboardEventOptions): KeyOptions => {\n  if (isNumber(keyOrKeyCode) && keyOrKeyCode) {\n    return { key: false, keyCode: keyOrKeyCode, modifiers: {} };\n  }\n\n  if (isString(keyOrKeyCode) && keyOrKeyCode) {\n    return parseKey(keyOrKeyCode as string);\n  }\n\n  if (isObject(keyOrKeyCode)) {\n    const parsedKey = parseKey(keyOrKeyCode.key);\n\n    return {\n      ...parsedKey,\n      keyCode: keyOrKeyCode.keyCode,\n    };\n  }\n\n  throw new Error('keyboard.pressKey() requires a valid key or keyCode');\n};\n\nconst parseKey = (keyStr: string): KeyOptions => {\n  if (keyStr.indexOf('.') < 0 || '.' === keyStr) {\n    return { key: keyStr, keyCode: false, modifiers: {} };\n  }\n\n  const keyParts = keyStr.split('.');\n  const key = keyParts.pop() as string;\n  const modifiers = keyParts.reduce(\n    (mods, part) => {\n      switch (part) {\n        case 'control':\n        case 'ctrl':\n          mods.control = true;\n\n          return mods;\n        case 'shift':\n          mods.shift = true;\n\n          return mods;\n        case 'alt':\n          mods.alt = true;\n\n          return mods;\n        case 'meta':\n        case 'cmd':\n        case 'win':\n          mods.meta = true;\n\n          return mods;\n        default:\n          throw new Error(`invalid key modifier: ${part ? part : 'undefined'}, keyStr: ${keyStr}`);\n      }\n    },\n    { alt: false, control: false, shift: false, meta: false },\n  );\n\n  return { key, keyCode: false, modifiers };\n};\n","/**\n * Credit - Angular Material\n */\n\nimport { parseKeyOptions } from './internals/key-parser';\nimport { KeyboardEventOptions } from './types';\n\n/** Creates a browser MouseEvent with the specified options. */\nexport function createMouseEvent(type: string, x: number = 0, y: number = 0, button: number = 0): MouseEvent {\n  const event = document.createEvent('MouseEvent');\n\n  event.initMouseEvent(type, true, false, window, 0, x, y, x, y, false, false, false, false, button, null);\n\n  // `initMouseEvent` doesn't allow us to pass the `buttons` and\n  // defaults it to 0 which looks like a fake event.\n  Object.defineProperty(event, 'buttons', { get: () => 1 });\n\n  return event;\n}\n\n/**\n * Creates a browser TouchEvent with the specified pointer coordinates.\n */\nexport function createTouchEvent(type: string, pageX: number = 0, pageY: number = 0): UIEvent {\n  // In favor of creating events that work for most of the browsers, the event is created\n  // as a basic UI Event. The necessary details for the event will be set manually.\n  const event = new UIEvent(type, {\n    bubbles: true,\n    cancelable: true,\n    view: window,\n    detail: 0,\n  });\n\n  // Most of the browsers don't have a \"initTouchEvent\" method that can be used to define\n  // the touch details.\n  Object.defineProperties(event, {\n    touches: { value: [{ pageX, pageY }] },\n  });\n\n  return event;\n}\n\n/** Dispatches a keydown event from an element. */\nexport function createKeyboardEvent(type: string, keyOrKeyCode: string | number | KeyboardEventOptions, target?: Element): KeyboardEvent {\n  const { key, keyCode, modifiers } = parseKeyOptions(keyOrKeyCode);\n\n  const event = document.createEvent('KeyboardEvent') as any;\n  const originalPreventDefault = event.preventDefault;\n\n  // Firefox does not support `initKeyboardEvent`, but supports `initKeyEvent`.\n  if (event.initKeyEvent) {\n    event.initKeyEvent(type, true, true, window, modifiers.control, modifiers.alt, modifiers.shift, modifiers.meta, keyCode);\n  } else {\n    // `initKeyboardEvent` expects to receive modifiers as a whitespace-delimited string\n    // See https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/initKeyboardEvent\n    const modifiersStr = (\n      modifiers.control ? 'Control ' : '' + modifiers.alt ? 'Alt ' : '' + modifiers.shift ? 'Shift ' : '' + modifiers.meta ? 'Meta' : ''\n    ).trim();\n    event.initKeyboardEvent(\n      type,\n      true /* canBubble */,\n      true /* cancelable */,\n      window /* view */,\n      0 /* char */,\n      key /* key */,\n      0 /* location */,\n      modifiersStr /* modifiersList */,\n      false /* repeat */,\n    );\n  }\n\n  // Webkit Browsers don't set the keyCode when calling the init function.\n  // See related bug https://bugs.webkit.org/show_bug.cgi?id=16735\n  Object.defineProperties(event, {\n    code: { get: () => keyCode },\n    keyCode: { get: () => keyCode },\n    key: { get: () => key },\n    target: { get: () => target },\n    altKey: { get: () => !!modifiers.alt },\n    ctrlKey: { get: () => !!modifiers.control },\n    shiftKey: { get: () => !!modifiers.shift },\n    metaKey: { get: () => !!modifiers.meta },\n  });\n\n  // IE won't set `defaultPrevented` on synthetic events so we need to do it manually.\n  // eslint-disable-next-line\n  event.preventDefault = function () {\n    Object.defineProperty(event, 'defaultPrevented', { configurable: true, get: () => true });\n\n    return originalPreventDefault.apply(this, arguments);\n  };\n\n  return event;\n}\n\n/** Creates a fake event object with any desired event type. */\nexport function createFakeEvent(type: string, canBubble: boolean = false, cancelable: boolean = true): Event {\n  const event = document.createEvent('Event');\n  event.initEvent(type, canBubble, cancelable);\n\n  return event;\n}\n","/**\n * Credit - Angular Material\n */\n\nimport { createFakeEvent, createKeyboardEvent, createMouseEvent, createTouchEvent } from './event-creators';\nimport { KeyboardEventOptions } from './types';\n\n/**\n * Utility to dispatch any event on a Node.\n *\n * @publicApi\n */\nexport function dispatchEvent<E extends Event = Event>(node: Node | Window, event: E): E {\n  node.dispatchEvent(event);\n\n  return event;\n}\n\n/**\n * Shorthand to dispatch a fake event on a specified node.\n *\n * dispatchFakeEvent(element, 'mousedown');\n *\n * @publicApi\n */\nexport function dispatchFakeEvent(node: Node | Window, type: string, canBubble?: boolean): Event {\n  return dispatchEvent(node, createFakeEvent(type, canBubble));\n}\n\n/**\n * Shorthand to dispatch a keyboard event with a specified key.\n *\n *  dispatchKeyboardEvent(calendarBodyEl, 'keydown', 'LEFT_ARROW');\n *\n *  @publicApi\n */\nexport function dispatchKeyboardEvent(\n  node: Node,\n  type: string,\n  keyOrKeyCode: string | number | KeyboardEventOptions,\n  target?: Element,\n): KeyboardEvent {\n  return dispatchEvent(node, createKeyboardEvent(type, keyOrKeyCode, target));\n}\n\n/**\n * Shorthand to dispatch a mouse event on the specified coordinates.\n *\n *  dispatchMouseEvent(rippleTarget, 'mousedown', 50, 75);\n *  dispatchMouseEvent(rippleTarget, 'mouseup');\n *\n *  @publicApi\n */\nexport function dispatchMouseEvent(\n  node: Node,\n  type: string,\n  x: number = 0,\n  y: number = 0,\n  event: MouseEvent = createMouseEvent(type, x, y),\n): MouseEvent {\n  return dispatchEvent(node, event);\n}\n\n/**\n * Shorthand to dispatch a touch event on the specified coordinates.\n *\n * dispatchTouchEvent(rippleTarget, 'touchstart');\n *\n * @publicApi\n */\nexport function dispatchTouchEvent(node: HTMLElement | Window | Document, type: string, x: number = 0, y: number = 0): Event {\n  return dispatchEvent(node, createTouchEvent(type, x, y));\n}\n","import {\n  Matcher,\n  MatcherOptions,\n  NormalizerFn,\n  SelectorMatcherOptions,\n  queries as DOMQueries,\n  getDefaultNormalizer,\n  ByRoleOptions,\n  ByRoleMatcher,\n} from '@testing-library/dom';\n\ninterface MandatorySelectorMatchingOptions extends MatcherOptions {\n  selector: SelectorMatcherOptions['selector'];\n}\n\nexport class DOMSelector {\n  // Wrap selector functions in a class to make reflection easier in getChild\n  constructor(public readonly execute: (el: HTMLElement) => HTMLElement[]) {}\n}\n\nexport type DOMSelectorFactory<TOptions extends MatcherOptions = MatcherOptions> = (matcher: Matcher, options?: TOptions) => DOMSelector;\n\nexport const byLabel: DOMSelectorFactory = (matcher, options) =>\n  new DOMSelector((el) => DOMQueries.queryAllByLabelText(el, matcher, options));\n\nexport const byPlaceholder: DOMSelectorFactory = (matcher, options) =>\n  new DOMSelector((el) => DOMQueries.queryAllByPlaceholderText(el, matcher, options));\n\nexport const byText: DOMSelectorFactory<SelectorMatcherOptions> = (matcher, options) =>\n  new DOMSelector((el) => DOMQueries.queryAllByText(el, matcher, options));\n\nexport const byTextContent = (matcher: Matcher, options: MandatorySelectorMatchingOptions): DOMSelector => {\n  let textContentMatcher: Matcher;\n  const normalizer: NormalizerFn = options?.normalizer || getDefaultNormalizer(options);\n  const getTextContent = (elem: Element | null): string => normalizer(elem?.textContent ?? '');\n\n  if (typeof matcher === 'string' || typeof matcher === 'number') {\n    textContentMatcher = (_, elem) => {\n      if (options?.exact === false) {\n        return getTextContent(elem).toLowerCase().indexOf(matcher.toString().toLowerCase()) >= 0;\n      }\n\n      return getTextContent(elem) === matcher.toString();\n    };\n  } else if (matcher instanceof RegExp) {\n    textContentMatcher = (_, elem) => matcher.test(getTextContent(elem));\n  } else if (typeof matcher === 'function') {\n    textContentMatcher = (_, elem) => matcher(getTextContent(elem), elem);\n  } else {\n    throw new Error(`Matcher type not supported: ${typeof matcher}`);\n  }\n\n  return new DOMSelector((el) => DOMQueries.queryAllByText(el, textContentMatcher, options));\n};\n\nexport const byAltText: DOMSelectorFactory = (matcher, options) =>\n  new DOMSelector((el) => DOMQueries.queryAllByAltText(el, matcher, options));\n\nexport const byTitle: DOMSelectorFactory = (matcher, options) => new DOMSelector((el) => DOMQueries.queryAllByTitle(el, matcher, options));\n\nexport const byTestId: DOMSelectorFactory = (matcher, options) =>\n  new DOMSelector((el) => DOMQueries.queryAllByTestId(el, matcher, options));\n\nexport const byValue: DOMSelectorFactory = (matcher, options) =>\n  new DOMSelector((el) => DOMQueries.queryAllByDisplayValue(el, matcher, options));\n\nexport const byRole = (matcher: ByRoleMatcher, options?: ByRoleOptions): DOMSelector =>\n  new DOMSelector((el) => DOMQueries.queryAllByRole(el, matcher, options));\n","import { Type, isStandalone } from '@angular/core';\nimport { ModuleMetadata } from './base/initial-module';\n\nexport function isRunningInJsDom() {\n  return navigator.userAgent.includes('Node.js') || navigator.userAgent.includes('jsdom');\n}\n\nexport function coerceArray<T>(value: T | T[]): T[];\nexport function coerceArray<T>(value: T | readonly T[]): readonly T[];\nexport function coerceArray<T>(value: T | T[]): T[] {\n  return Array.isArray(value) ? value : [value];\n}\n\nexport function declareInModule<T>(moduleMetadata: ModuleMetadata, type: Type<T>) {\n  if (isStandalone(type)) {\n    moduleMetadata.imports.push(type);\n  } else {\n    moduleMetadata.declarations.push(type);\n  }\n}\n","import { dispatchFakeEvent } from '../dispatch-events';\nimport { isRunningInJsDom } from '../utils';\n\n/** Property added to HTML Elements to ensure we don't double-patch focus methods on an element. */\nconst IS_FOCUS_PATCHED_PROP = Symbol('isFocusPatched');\n\n/** Ensures that a single set of matching focus and blur events occur when HTMLElement.focus() is called. */\nclass FocusEventWatcher implements EventListenerObject {\n  private readonly priorActiveElement: Element | null;\n\n  /** Set to true when browser sends a blur event for priorActiveElement */\n  private _blurred = false;\n  /** Set to true when browser sends a focus event for element */\n  private _focused = false;\n\n  constructor(private readonly element: HTMLElement) {\n    this.element.addEventListener('focus', this);\n    this.priorActiveElement = element.ownerDocument.activeElement;\n    this.priorActiveElement?.addEventListener('blur', this);\n  }\n\n  public handleEvent({ type }: Event): void {\n    if (type === 'focus') {\n      this._focused = true;\n    } else if (type === 'blur') {\n      this._blurred = true;\n    }\n  }\n\n  /**\n   * If focus and blur events haven't occurred, fire fake ones.\n   */\n  public ensureFocusEvents() {\n    this.element.removeEventListener('focus', this);\n    this.priorActiveElement?.removeEventListener('blur', this);\n\n    // Ensure priorActiveElement is blurred\n    if (!this._blurred && this.priorActiveElement) {\n      dispatchFakeEvent(this.priorActiveElement, 'blur');\n    }\n\n    if (!this._focused) {\n      dispatchFakeEvent(this.element, 'focus'); // Needed to cause focus event\n    }\n  }\n}\n\n/**\n * Patches an element's focus and blur methods to emit events consistently and predictably in tests.\n * This is necessary, because some browsers, like IE11, will call the focus handlers asynchronously,\n * while others won't fire them at all if the browser window is not focused.\n *\n * patchElementFocus(triggerEl);\n */\nexport function patchElementFocus(element: HTMLElement): void {\n  // https://github.com/ngneat/spectator/issues/373 - Don't patch when using JSDOM, eg in Jest\n  if (!isRunningInJsDom() && element[IS_FOCUS_PATCHED_PROP] === undefined) {\n    const originalFocus = element.focus.bind(element);\n    element.focus = (options) => {\n      const focusEventWatcher = new FocusEventWatcher(element);\n\n      // Sets document.activeElement. May or may not send focus + blur events\n      originalFocus(options);\n\n      focusEventWatcher.ensureFocusEvents();\n    };\n    element.blur = () => dispatchFakeEvent(element, 'blur');\n    element[IS_FOCUS_PATCHED_PROP] = true;\n  }\n}\n","import { ComponentRef, DebugElement } from '@angular/core';\nimport { By } from '@angular/platform-browser';\n\nimport { DOMSelector } from '../dom-selectors';\nimport { isString, QueryOptions, QueryType } from '../types';\nimport { type Token } from '../token';\n\nexport function getChildren<R>(debugElementRoot: DebugElement): (directiveOrSelector: QueryType, options?: QueryOptions<R>) => R[] {\n  return (directiveOrSelector: QueryType, options: QueryOptions<R> = { root: false, read: undefined }): R[] => {\n    if (directiveOrSelector instanceof DOMSelector) {\n      return directiveOrSelector.execute(debugElementRoot.nativeElement) as any[];\n    }\n\n    const debugElements = debugElementRoot.queryAll(\n      isString(directiveOrSelector) ? By.css(directiveOrSelector) : By.directive(directiveOrSelector),\n    );\n\n    if (options.read) {\n      return debugElements.map((debug) => debug.injector.get(options.read as Token<R>));\n    }\n\n    if (isString(directiveOrSelector)) {\n      return debugElements.map((debug) => debug.nativeElement);\n    }\n\n    return debugElements.map((debug) => debug.injector.get(directiveOrSelector));\n  };\n}\n\n/**\n * @internal\n * Set props on a component. This is used in `createComponent` and `createRoutingFactory` since we have direct access to the componentRef.\n */\nexport function setProps<T, K extends string | number | symbol, V>(componentRef: ComponentRef<T>, key: K, value: V): T & { [KEY in K]: V };\nexport function setProps<T, KV>(componentRef: ComponentRef<T>, keyValues?: KV): T & KV;\nexport function setProps(componentRef: ComponentRef<any>, keyOrKeyValues: any, value?: any): any {\n  if (isString(keyOrKeyValues)) {\n    componentRef.setInput(keyOrKeyValues, value);\n  } else {\n    // eslint-disable-next-line guard-for-in\n    for (const p in keyOrKeyValues) {\n      componentRef.setInput(p, keyOrKeyValues[p]);\n    }\n  }\n\n  return componentRef.instance;\n}\n\n/**\n * @internal\n * Set props on a host component. This is used in `createHostFactory`, `createDirectiveFactory` and `createPipeFactory`.\n * As these factories contain a custom host component, we set properties on this host component rather than the tested component itself.\n * Setting props on the component that's being tested is not possible as we don't have access to its componentRef.\n */\nexport function setHostProps<T, K extends string | number | symbol, V>(\n  componentRef: ComponentRef<T>,\n  key: K,\n  value: V,\n): T & { [KEY in K]: V };\nexport function setHostProps<T, KV>(componentRef: ComponentRef<T>, keyValues?: KV): T & KV;\nexport function setHostProps(componentRef: ComponentRef<any>, keyOrKeyValues: any, value?: any): any {\n  if (isString(keyOrKeyValues)) {\n    componentRef.instance[keyOrKeyValues] = value;\n  } else {\n    // eslint-disable-next-line guard-for-in\n    for (const p in keyOrKeyValues) {\n      componentRef.instance[p] = keyOrKeyValues[p];\n    }\n  }\n\n  return componentRef.instance;\n}\n","import { dispatchFakeEvent } from './dispatch-events';\nimport { isString, isHTMLOptionElementArray, SelectOptions } from './types';\n\n/**\n * Focuses a select element, selects the correct options and dispatches\n * the `change` event, simulating the user selecting an option\n * @param options Options to be selected.\n * @param element Element onto which to select the options.\n * @param config Object with extra config to dispatch change event when option selected\n *\n * selectOption('al' | ['al', 'ab'], select, config);\n */\nexport function selectOption(\n  options: SelectOptions,\n  element: HTMLElement | HTMLSelectElement | Document | Window,\n  config: { emitEvents: boolean },\n): void {\n  if (!(element instanceof HTMLSelectElement)) {\n    return;\n  }\n\n  element.focus();\n\n  if (isString(options)) {\n    const option: HTMLOptionElement | null = element.querySelector(`option[value=\"${options}\"]`);\n    if (!option) {\n      return;\n    }\n\n    setOptionSelected(option, element, config);\n  } else if (options instanceof HTMLOptionElement) {\n    setOptionSelected(options, element, config);\n  } else {\n    if (!element.multiple) {\n      return;\n    }\n\n    if (isHTMLOptionElementArray(options)) {\n      options.forEach((option) => setOptionSelected(option, element, config));\n    } else {\n      element.querySelectorAll('option').forEach((opt) => {\n        if (options.includes(opt.value)) {\n          setOptionSelected(opt, element, config);\n        }\n      });\n    }\n  }\n}\n\n/**\n * Set the option in the HTMLSelectElement to selected\n * @param option HTMLOptionElement to select\n * @param select HTMLSelectElement to add the options to\n * @param config Object with extra config to dispatch change event when option selected\n *\n * setOptionSelected(option, element, config);\n */\nfunction setOptionSelected(option: HTMLOptionElement, select: HTMLSelectElement, config: { emitEvents: boolean }): void {\n  option.selected = true;\n  if (config.emitEvents) {\n    dispatchFakeEvent(select, 'change', true);\n  }\n}\n","import { dispatchFakeEvent } from './dispatch-events';\n\n/**\n * Focuses an input or textarea, sets its value and dispatches\n * the `input` or `textarea` event, simulating the user typing.\n * @param value Value to be set on the input.\n * @param element Element onto which to set the value.\n *\n * typeInElement('al', input);\n */\nexport function typeInElement(value: string, element: HTMLElement | Document | Window): void {\n  if (!(element instanceof HTMLInputElement) && !(element instanceof HTMLTextAreaElement)) {\n    return;\n  }\n\n  element.focus();\n  element.value = value;\n  dispatchFakeEvent(element, 'input', true);\n}\n","import { TestBed } from '@angular/core/testing';\n\nimport { SpyObject } from '../mock';\nimport { Token } from '../token';\n\n/**\n * @internal\n */\nexport abstract class BaseSpectator {\n  public inject<T>(token: Token<T>): SpyObject<T> {\n    return TestBed.inject(token) as SpyObject<T>;\n  }\n\n  /**\n   * Execute any pending effects.\n   */\n  public flushEffects(): void {\n    TestBed.flushEffects();\n  }\n\n  public runInInjectionContext<T>(fn: () => T): T {\n    return TestBed.runInInjectionContext(fn);\n  }\n}\n","import { DebugElement, ElementRef, EventEmitter, OutputEmitterRef, Type } from '@angular/core';\nimport { ComponentFixture, tick } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { Observable, Subject } from 'rxjs';\n\nimport { dispatchFakeEvent, dispatchKeyboardEvent, dispatchMouseEvent, dispatchTouchEvent } from '../dispatch-events';\nimport { DOMSelector } from '../dom-selectors';\nimport { createMouseEvent } from '../event-creators';\nimport { patchElementFocus } from '../internals/element-focus';\nimport { getChildren } from '../internals/query';\nimport { SpyObject } from '../mock';\nimport { selectOption } from '../select-option';\nimport { Token } from '../token';\nimport { typeInElement } from '../type-in-element';\nimport { OutputType, KeyboardEventOptions, KeysMatching, QueryOptions, QueryType, SpectatorElement, isString } from '../types';\n\nimport { BaseSpectator } from './base-spectator';\n\nconst KEY_UP = 'keyup';\n\ntype KeysMatchingReturnType<T, V> = keyof { [P in keyof T as T[P] extends V ? P : never]: P } & keyof T;\ntype KeysMatchingOutputFunction<T> = KeysMatchingReturnType<T, OutputEmitterRef<any>>;\ntype KeysMatchingClassicOutput<T> = KeysMatchingReturnType<T, EventEmitter<any> | Subject<any>>;\ntype KeysMatchingOutput<T> = KeysMatchingOutputFunction<T> | KeysMatchingClassicOutput<T>;\n\n/**\n * @internal\n */\nexport abstract class DomSpectator<I> extends BaseSpectator {\n  constructor(\n    public fixture: ComponentFixture<any>,\n    public debugElement: DebugElement,\n    protected instance: I,\n    public element: Element,\n  ) {\n    super();\n  }\n\n  public inject<T>(token: Token<T>): SpyObject<T> {\n    return super.inject(token);\n  }\n\n  public detectChanges(): void {\n    this.fixture.detectChanges();\n  }\n\n  public query<R extends Element>(selector: string | DOMSelector, options?: { root: boolean }): R | null;\n  public query<R>(directive: Type<R>, options?: { root: boolean }): R | null;\n  public query<R extends Element>(selector: string | DOMSelector, options?: { parentSelector: Type<any> | string | DOMSelector }): R | null;\n  public query<R>(directive: Type<R>, options?: { parentSelector?: Type<any> | string | DOMSelector }): R | null;\n  public query<R>(\n    directiveOrSelector: Type<any> | string,\n    options: { read: Token<R>; root?: boolean; parentSelector?: Type<any> | string | DOMSelector },\n  ): R | null;\n  public query<R>(directiveOrSelector: QueryType, options?: QueryOptions<R>): R | Element | null {\n    if ((options || {}).root) {\n      if (isString(directiveOrSelector)) {\n        return document.querySelector(directiveOrSelector);\n      }\n\n      if (directiveOrSelector instanceof DOMSelector) {\n        return directiveOrSelector.execute(document as any)[0] || null;\n      }\n\n      return getChildren<R>(this.getRootDebugElement())(directiveOrSelector, options)[0] || null;\n    }\n\n    if (options?.parentSelector) {\n      const debugElement = this.getDebugElement(options.parentSelector);\n      if (!debugElement) {\n        /* eslint-disable no-console */\n        console.error(`${directiveOrSelector} does not exists`);\n        return null;\n      }\n\n      return (\n        getChildren<R>(debugElement as DebugElement)(directiveOrSelector, {\n          root: options.root,\n          read: options.read,\n        })[0] || null\n      );\n    }\n\n    return getChildren<R>(this.debugElement)(directiveOrSelector, options)[0] || null;\n  }\n\n  public queryAll<R extends Element>(selector: string | DOMSelector, options?: { root: boolean }): R[];\n  public queryAll<R>(directive: Type<R>, options?: { root: boolean }): R[];\n  public queryAll<R extends Element>(selector: string | DOMSelector, options?: { parentSelector: Type<any> | string | DOMSelector }): R[];\n  public queryAll<R>(directive: Type<R>, options?: { parentSelector: Type<any> | string | DOMSelector }): R[];\n  public queryAll<R>(\n    directiveOrSelector: Type<any> | string,\n    options: { read: Token<R>; root?: boolean; parentSelector?: Type<any> | string | DOMSelector },\n  ): R[];\n  public queryAll<R>(directiveOrSelector: QueryType, options?: QueryOptions<R>): R[] | Element[] {\n    if ((options || {}).root) {\n      if (isString(directiveOrSelector)) {\n        return Array.from(document.querySelectorAll(directiveOrSelector));\n      }\n\n      if (directiveOrSelector instanceof DOMSelector) {\n        return directiveOrSelector.execute(document as any);\n      }\n\n      return getChildren<R>(this.getRootDebugElement())(directiveOrSelector, options);\n    }\n\n    if (options?.parentSelector) {\n      const debugElement = this.getDebugElement(options.parentSelector);\n      if (!debugElement) {\n        /* eslint-disable no-console */\n        console.error(`${directiveOrSelector} does not exists`);\n        return [];\n      }\n\n      return getChildren<R>(debugElement as DebugElement)(directiveOrSelector, {\n        root: options.root,\n        read: options.read,\n      });\n    }\n\n    return getChildren<R>(this.debugElement)(directiveOrSelector, options);\n  }\n\n  public queryLast<R extends Element>(selector: string | DOMSelector, options?: { root: boolean }): R | null;\n  public queryLast<R>(directive: Type<R>, options?: { root: boolean }): R | null;\n  public queryLast<R extends Element>(\n    selector: string | DOMSelector,\n    options?: { parentSelector: Type<any> | string | DOMSelector },\n  ): R | null;\n  public queryLast<R>(directive: Type<R>, options?: { parentSelector: Type<any> | string | DOMSelector }): R | null;\n  public queryLast<R>(\n    directiveOrSelector: Type<any> | string,\n    options: { read: Token<R>; root?: boolean; parentSelector?: Type<any> | string | DOMSelector },\n  ): R | null;\n  public queryLast<R>(directiveOrSelector: QueryType, options?: QueryOptions<R>): R | Element | null {\n    let result: (R | Element)[] = [];\n\n    if ((options || {}).root) {\n      if (isString(directiveOrSelector)) {\n        result = Array.from(document.querySelectorAll(directiveOrSelector));\n      } else if (directiveOrSelector instanceof DOMSelector) {\n        result = directiveOrSelector.execute(document as any);\n      } else {\n        result = getChildren<R>(this.getRootDebugElement())(directiveOrSelector, options);\n      }\n    } else if (options?.parentSelector) {\n      const debugElement = this.getDebugElement(options.parentSelector);\n      if (!debugElement) {\n        /* eslint-disable no-console */\n        console.error(`${directiveOrSelector} does not exists`);\n        result = [];\n      } else {\n        result = getChildren<R>(debugElement as DebugElement)(directiveOrSelector, {\n          root: options.root,\n          read: options.read,\n        });\n      }\n    } else {\n      result = getChildren<R>(this.debugElement)(directiveOrSelector, options);\n    }\n\n    if (result && result.length) {\n      return result[result.length - 1];\n    }\n\n    return null;\n  }\n\n  public output<K extends KeysMatchingOutput<I> = KeysMatchingOutput<I>>(output: K): I[K];\n  public output<T, K extends KeysMatchingClassicOutput<I> = KeysMatchingClassicOutput<I>>(output: K): Observable<T>;\n  public output<T, K extends KeysMatchingOutputFunction<I> = KeysMatchingOutputFunction<I>>(output: K): OutputEmitterRef<T>;\n  public output<T, K extends KeysMatchingOutput<I>>(output: K): I[K] | Observable<T> | OutputEmitterRef<T> {\n    const eventEmitter = this.instance[output];\n\n    if (!(eventEmitter instanceof Observable) && !(eventEmitter instanceof OutputEmitterRef)) {\n      throw new Error(`${String(output)} is not an @Output or an output function`);\n    }\n\n    return eventEmitter;\n  }\n\n  public tick(millis?: number): void {\n    tick(millis);\n    this.detectChanges();\n  }\n\n  public click(selector: SpectatorElement = this.element): void {\n    const element = this.getNativeElement(selector);\n\n    if (!(element instanceof HTMLElement)) {\n      throw new Error(`Cannot click: ${selector} is not a HTMLElement`);\n    }\n\n    element.click();\n    this.detectChanges();\n  }\n\n  public blur(selector: SpectatorElement = this.element): void {\n    const element = this.getNativeElement(selector);\n\n    if (!(element instanceof HTMLElement)) {\n      throw new Error(`Cannot blur: ${selector} is not a HTMLElement`);\n    }\n\n    patchElementFocus(element);\n    element.blur();\n    this.detectChanges();\n  }\n\n  public focus(selector: SpectatorElement = this.element): void {\n    const element = this.getNativeElement(selector);\n\n    if (!(element instanceof HTMLElement)) {\n      throw new Error(`Cannot focus: ${selector} is not a HTMLElement`);\n    }\n\n    patchElementFocus(element);\n    element.focus();\n    this.detectChanges();\n  }\n\n  public dispatchMouseEvent(\n    selector: SpectatorElement = this.element,\n    type: string,\n    x: number = 0,\n    y: number = 0,\n    event: MouseEvent = createMouseEvent(type, x, y),\n  ): MouseEvent {\n    const element = this.getNativeElement(selector);\n\n    if (!(element instanceof Node)) {\n      throw new Error(`Cannot dispatch mouse event: ${selector} is not a node`);\n    }\n\n    const dispatchedEvent = dispatchMouseEvent(element, type, x, y, event);\n    this.detectChanges();\n\n    return dispatchedEvent;\n  }\n\n  public dispatchKeyboardEvent(selector: SpectatorElement, type: string, keyCode: number, target?: Element): KeyboardEvent;\n  public dispatchKeyboardEvent(selector: SpectatorElement, type: string, key: string, target?: Element): KeyboardEvent;\n  public dispatchKeyboardEvent(selector: SpectatorElement, type: string, keyAndCode: KeyboardEventOptions, target?: Element): KeyboardEvent;\n  public dispatchKeyboardEvent(\n    selector: SpectatorElement = this.element,\n    type: string,\n    keyOrKeyCode: string | number | KeyboardEventOptions,\n    target?: Element,\n  ): KeyboardEvent {\n    const element = this.getNativeElement(selector);\n\n    if (!(element instanceof Node)) {\n      throw new Error(`Cannot dispatch keyboard event: ${selector} is not a node`);\n    }\n\n    const event = dispatchKeyboardEvent(element, type, keyOrKeyCode, target);\n\n    this.detectChanges();\n\n    return event;\n  }\n\n  public dispatchFakeEvent(selector: SpectatorElement = this.element, type: string, canBubble?: boolean): Event {\n    const event = dispatchFakeEvent(this.getNativeElement(selector), type, canBubble);\n    this.detectChanges();\n\n    return event;\n  }\n\n  public triggerEventHandler<C = any, K extends KeysMatching<C, EventEmitter<any> | OutputEmitterRef<any>> = any>(\n    directiveOrSelector: Type<C> | string | DebugElement,\n    eventName: K,\n    eventObj: OutputType<C[K]>,\n    options?: { root: boolean },\n  ) {\n    const triggerDebugElement = this.getDebugElement(directiveOrSelector, options);\n    if (!triggerDebugElement) {\n      /* eslint-disable no-console */\n      console.error(`${directiveOrSelector} does not exists`);\n      return;\n    }\n\n    triggerDebugElement.triggerEventHandler(eventName as string, eventObj);\n\n    this.detectChanges();\n  }\n\n  public get keyboard() {\n    return {\n      pressKey: (key: string, selector: SpectatorElement = this.element, event = KEY_UP) => {\n        this.dispatchKeyboardEvent(selector, event, key);\n      },\n      pressEscape: (selector: SpectatorElement = this.element, event = KEY_UP) => {\n        this.dispatchKeyboardEvent(selector, event, { key: 'Escape', keyCode: 27 });\n      },\n      pressEnter: (selector: SpectatorElement = this.element, event = KEY_UP) => {\n        this.dispatchKeyboardEvent(selector, event, { key: 'Enter', keyCode: 13 });\n      },\n      pressTab: (selector: SpectatorElement = this.element, event = KEY_UP) => {\n        this.dispatchKeyboardEvent(selector, event, { key: 'Tab', keyCode: 9 });\n      },\n      pressBackspace: (selector: SpectatorElement = this.element, event = KEY_UP) => {\n        this.dispatchKeyboardEvent(selector, event, { key: 'Backspace', keyCode: 8 });\n      },\n    };\n  }\n\n  public get mouse() {\n    return {\n      contextmenu: (selector: SpectatorElement = this.element) => {\n        this.dispatchMouseEvent(selector, 'contextmenu');\n      },\n      dblclick: (selector: SpectatorElement = this.element) => {\n        this.dispatchMouseEvent(selector, 'dblclick');\n      },\n    };\n  }\n\n  public dispatchTouchEvent(selector: SpectatorElement = this.element, type: string, x: number = 0, y: number = 0): void {\n    dispatchTouchEvent(this.getNativeElement(selector), type, x, y);\n    this.detectChanges();\n  }\n\n  public typeInElement(value: string, selector: SpectatorElement = this.element): void {\n    typeInElement(value, this.getNativeElement(selector));\n    this.detectChanges();\n  }\n\n  public selectOption(\n    selector: SpectatorElement = this.element,\n    options: string | string[] | HTMLOptionElement | HTMLOptionElement[],\n    config: { emitEvents: boolean } = { emitEvents: true },\n  ): void {\n    if (!selector) {\n      throw new Error(`Cannot find select: ${selector}`);\n    }\n    selectOption(options, this.getNativeElement(selector), config);\n    this.detectChanges();\n  }\n\n  private getNativeElement(selector: SpectatorElement): HTMLElement | Window | Document {\n    let element;\n\n    // Support global objects window and document\n    if (selector === window || selector === document) {\n      return selector as any;\n    }\n\n    if (isString(selector)) {\n      const exists = this.debugElement.query(By.css(selector));\n      if (exists) {\n        element = exists.nativeElement;\n      } else {\n        /* eslint-disable no-console */\n        console.error(`${selector} does not exists`);\n      }\n    } else if (selector instanceof DOMSelector) {\n      element = selector.execute(document as any)[0] || null;\n    } else {\n      if (selector instanceof DebugElement || selector instanceof ElementRef) {\n        element = selector.nativeElement;\n      } else {\n        element = selector;\n      }\n    }\n\n    return element;\n  }\n\n  private getDebugElement(\n    directiveOrSelector: string | DebugElement | Type<unknown> | DOMSelector,\n    options?: { root: boolean },\n  ): DebugElement | undefined {\n    const debugElement = options?.root ? this.getRootDebugElement() : this.debugElement;\n\n    if (isString(directiveOrSelector)) {\n      return debugElement.query(By.css(directiveOrSelector));\n    } else if (directiveOrSelector instanceof DOMSelector) {\n      return new DebugElement(directiveOrSelector.execute(document as unknown as HTMLElement)[0]);\n    } else if (directiveOrSelector instanceof DebugElement) {\n      return directiveOrSelector;\n    } else {\n      return debugElement.query(By.directive(directiveOrSelector));\n    }\n  }\n\n  private getRootDebugElement(): DebugElement {\n    let element: DebugElement | null | undefined = this.debugElement;\n\n    /**\n     * This bounded loop call is required to access the debug element for\n     * root dom element\n     */\n    while (true) {\n      if (!element) {\n        throw Error('Unable to find root element');\n      }\n\n      if (!element.parent) {\n        // Found the root element\n        return element;\n      }\n\n      element = element.parent;\n    }\n  }\n}\n","import { ChangeDetectorRef, DebugElement } from '@angular/core';\nimport { ComponentFixture, DeferBlockFixture, DeferBlockState } from '@angular/core/testing';\n\nimport { DomSpectator } from '../base/dom-spectator';\nimport { setProps } from '../internals/query';\nimport { SpyObject } from '../mock';\nimport { Token } from '../token';\nimport { DeferBlocks, InferInputSignal, InferInputSignals, NestedDeferBlocks } from '../types';\n\n/**\n * @publicApi\n */\nexport class Spectator<C> extends DomSpectator<C> {\n  constructor(\n    public fixture: ComponentFixture<C>,\n    public debugElement: DebugElement,\n    protected instance: C,\n    public element: HTMLElement,\n  ) {\n    super(fixture, debugElement, instance, element);\n  }\n\n  public get component(): C {\n    return this.instance;\n  }\n\n  public inject<T>(token: Token<T>, fromComponentInjector: boolean = false): SpyObject<T> {\n    if (fromComponentInjector) {\n      return this.debugElement.injector.get(token) as SpyObject<T>;\n    }\n\n    return super.inject(token);\n  }\n\n  public detectComponentChanges(): void {\n    if (this.debugElement) {\n      this.debugElement.injector.get(ChangeDetectorRef).detectChanges();\n    } else {\n      this.detectChanges();\n    }\n  }\n\n  public setInput<K extends keyof C>(input: InferInputSignals<C>): void;\n  public setInput(input: { [inputName: string]: unknown }): void;\n  public setInput<K extends keyof C>(input: K, inputValue: InferInputSignal<C[K]>): void;\n  public setInput(input: string, inputValue: unknown): void;\n  public setInput(input: any, value?: any): void {\n    setProps(this.fixture.componentRef, input, value);\n    // Force cd on the host component for cases such as: https://github.com/ngneat/spectator/issues/539\n    this.detectChanges();\n\n    // Force cd on the tested component\n    this.debugElement.injector.get(ChangeDetectorRef).detectChanges();\n  }\n\n  public deferBlock(deferBlockIndex = 0): DeferBlocks {\n    return this._deferBlocksForGivenFixture(deferBlockIndex, this.fixture.getDeferBlocks());\n  }\n\n  /**\n   *\n   * @param deferBlockFixtures Defer block fixture\n   * @returns deferBlock object with methods to access the defer blocks\n   */\n  private _deferBlocksForGivenFixture(deferBlockIndex = 0, deferBlockFixtures: Promise<DeferBlockFixture[]>): DeferBlocks {\n    return {\n      renderComplete: async () => {\n        const renderedDeferFixture = await this._renderDeferStateAndGetFixture(\n          DeferBlockState.Complete,\n          deferBlockIndex,\n          deferBlockFixtures,\n        );\n\n        return this._childrenDeferFixtures(renderedDeferFixture);\n      },\n      renderPlaceholder: async () => {\n        const renderedDeferFixture = await this._renderDeferStateAndGetFixture(\n          DeferBlockState.Placeholder,\n          deferBlockIndex,\n          deferBlockFixtures,\n        );\n\n        return this._childrenDeferFixtures(renderedDeferFixture);\n      },\n      renderLoading: async () => {\n        const renderedDeferFixture = await this._renderDeferStateAndGetFixture(\n          DeferBlockState.Loading,\n          deferBlockIndex,\n          deferBlockFixtures,\n        );\n\n        return this._childrenDeferFixtures(renderedDeferFixture);\n      },\n      renderError: async () => {\n        const renderedDeferFixture = await this._renderDeferStateAndGetFixture(DeferBlockState.Error, deferBlockIndex, deferBlockFixtures);\n\n        return this._childrenDeferFixtures(renderedDeferFixture);\n      },\n    };\n  }\n\n  /**\n   * Renders the given defer block state and returns the defer block fixture\n   *\n   * @param deferBlockState complete, placeholder, loading or error\n   * @param deferBlockIndex index of the defer block to render\n   * @param deferBlockFixtures Defer block fixture\n   * @returns Defer block fixture\n   */\n  private async _renderDeferStateAndGetFixture(\n    deferBlockState: DeferBlockState,\n    deferBlockIndex = 0,\n    deferBlockFixtures: Promise<DeferBlockFixture[]>,\n  ): Promise<DeferBlockFixture> {\n    const deferFixture = (await deferBlockFixtures)[deferBlockIndex];\n\n    await deferFixture.render(deferBlockState);\n\n    return deferFixture;\n  }\n\n  /**\n   *\n   * @param deferFixture Defer block fixture\n   * @returns deferBlock object with methods to access the nested defer blocks\n   */\n  private _childrenDeferFixtures(deferFixture: DeferBlockFixture): NestedDeferBlocks {\n    return {\n      deferBlock: (deferBlockIndex = 0) => this._deferBlocksForGivenFixture(deferBlockIndex, deferFixture.getDeferBlocks()),\n    };\n  }\n}\n","import { CustomMatcherFactory } from './matchers';\n\ndeclare var jasmine: any;\n\nexport function addMatchers(matchers: Record<string, CustomMatcherFactory>): void {\n  if (!matchers) return;\n\n  if (typeof jasmine !== 'undefined') {\n    jasmine.addMatchers(matchers);\n  } else {\n    // Jest (when using ESM) and Vitest aren't on the global scope so we\n    // assume that it's Jest or Vitest if Jasmine is not defined\n    const jestVitestExpectExtend = {};\n    for (const key of Object.keys(matchers)) {\n      if (key.startsWith('to')) jestVitestExpectExtend[key] = matchers[key]().compare;\n    }\n\n    (expect as any).extend(jestVitestExpectExtend);\n  }\n}\n","/**\n * @license\n * Copyright Netanel Basal. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NetanelBasal/spectator/blob/master/LICENSE\n */\n\nexport function hex2rgb(hex: string): string {\n  const h = hex.replace('#', '');\n  const matches = h.match(new RegExp('(.{' + h.length / 3 + '})', 'g'))!;\n  const [r, g, b] = matches.map((match) => parseInt(match.length === 1 ? match + match : match, 16));\n\n  return `rgb(${r},${g},${b})`;\n}\n\nexport function isHex(value: string): boolean {\n  return /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(value);\n}\n\nexport function trim(value: string): string {\n  return (value || '').replace(/\\s/g, '');\n}\n","/** Credit: https://github.com/unindented/custom-jquery-matchers/tree/master/packages/custom-jquery-matchers */\n\n// This should be imported before `jquery` since this library unpatches the `setTimeout`,\n// so jQuery won't setup a timer, that might be captured by zone.js.\nimport { restoreSetTimeout } from '@ngneat/spectator/internals';\nimport $ from 'jquery';\n\nrestoreSetTimeout();\n\nimport { DOMSelector } from './dom-selectors';\nimport { hex2rgb, isHex, trim } from './internals/rgb-to-hex';\nimport { isHTMLOptionElementArray, isObject } from './types';\nimport { coerceArray, isRunningInJsDom } from './utils';\n\nexport interface CustomMatcherFactory {\n  (): CustomMatcher;\n}\n\nexport interface CustomMatcher {\n  compare<T>(actual: T, expected: T, ...args: any[]): CustomMatcherResult;\n}\n\nexport interface CustomMatcherResult {\n  pass: boolean;\n  message: () => string;\n}\n\nconst resolveDOMSelector = (\n  el: string | HTMLElement | HTMLElement[] | NodeListOf<HTMLElement> | DOMSelector,\n): string | HTMLElement | HTMLElement[] | NodeListOf<HTMLElement> => {\n  if (el instanceof DOMSelector) return el.execute(document.body);\n  return el;\n};\n\nconst hasProperty = (actual: unknown, expected: unknown): boolean => {\n  return expected === undefined ? actual !== undefined : actual === expected;\n};\n\nconst containsProperty = (actual: string, expected: unknown): boolean => {\n  return expected === undefined ? true : actual.includes(expected as string);\n};\n\nconst checkProperty = (\n  el: string | HTMLElement | HTMLElement[] | DOMSelector,\n  prop: object,\n  predicate: (actual, expected) => boolean,\n): { pass: boolean; message: () => string } => {\n  let pass = false;\n  let failing = '';\n\n  for (const key of Object.keys(prop)) {\n    const actual = $(resolveDOMSelector(el)).prop(key);\n    const addendum = prop[key] !== undefined ? ` with value '${prop[key]}'` : '';\n\n    pass = predicate(actual, prop[key]);\n    failing = !pass ? `'${prop}'${addendum}, but had '${actual}'` : '';\n  }\n\n  const message = () => `Expected element${pass ? ' not' : ''} to have property ${failing}`;\n\n  return { pass, message };\n};\n\nconst hasCss = (el: string | HTMLElement | HTMLElement[] | DOMSelector, css: { [key: string]: string }) => {\n  let prop;\n  let value;\n  const resolvedEl = resolveDOMSelector(el);\n  const $el = $(resolvedEl);\n  for (prop in css) {\n    if (css.hasOwnProperty(prop)) {\n      value = css[prop];\n\n      if (isHex(value)) {\n        value = hex2rgb(css[prop]);\n      }\n\n      if (value === 'auto' && $el.get(0).style[prop] === 'auto') {\n        continue;\n      }\n\n      if (\n        trim($el.get(0).style[prop]) !== trim(value) &&\n        typeof resolvedEl !== 'string' &&\n        !('length' in resolvedEl) &&\n        trim(resolvedEl.style[prop]) !== trim(value) &&\n        trim(resolvedEl.style.getPropertyValue(prop)) !== trim(value)\n      ) {\n        return false;\n      }\n    }\n  }\n\n  return true;\n};\n\nconst hasSameText = (\n  el: string | HTMLElement | HTMLElement[] | DOMSelector,\n  expected: string | string[] | ((s: string) => boolean),\n  options: {\n    exact: boolean;\n    trim: boolean;\n  },\n) => {\n  const resolvedEl = resolveDOMSelector(el);\n\n  if (expected && Array.isArray(expected)) {\n    let actual: string;\n    let pass = false;\n    let failing: string;\n\n    $(resolvedEl).each((i, e) => {\n      actual = options.exact && !options.trim ? $(e).text() : $.trim($(e).text());\n      pass = options.exact ? actual === expected[i] : actual.includes(expected[i]);\n      if (!pass) {\n        failing = expected[i];\n\n        return false;\n      }\n    });\n\n    const message = () =>\n      `Expected element${pass ? ' not' : ''} to have${options.exact ? ' exact' : ''} text '${failing}', but had '${actual}'`;\n\n    return { pass, message };\n  }\n\n  const actual = options.exact && !options.trim ? $(resolvedEl).text() : $.trim($(resolvedEl).text());\n\n  if (expected && typeof expected !== 'string') {\n    const pass = expected(actual);\n    const message = () =>\n      `Expected element${pass ? ' not' : ''} to have${options.exact ? ' exact' : ''} text matching '${expected}',` + ` but had '${actual}'`;\n\n    return { pass, message };\n  }\n\n  const pass = options.exact && !Array.isArray(expected) ? actual === expected : actual.indexOf(expected) !== -1;\n  const message = () =>\n    `Expected element${pass ? ' not' : ''} to have${options.exact ? ' exact' : ''} text '${expected}', but had '${actual}'`;\n\n  return { pass, message };\n};\n\nconst comparator =\n  (func): CustomMatcherFactory =>\n  () => ({\n    compare: func,\n  });\n\n/**\n *\n * expect('.zippy__content').not.toExist();\n */\nexport const toExist = comparator((el: string | HTMLElement | HTMLElement[] | DOMSelector) => {\n  const resolvedEl = resolveDOMSelector(el);\n  const actual = $(resolvedEl).length;\n  const pass = actual > 0;\n  const message = () => `Expected ${resolvedEl} element${pass ? ' not' : ''} to exist`;\n\n  return { pass, message };\n});\n\n/**\n *\n * expect('.zippy__content').toHaveLength(3);\n */\nexport const toHaveLength = comparator((el: string | HTMLElement | HTMLElement[] | DOMSelector, expected: number) => {\n  const actual = $(resolveDOMSelector(el)).length;\n  const pass = actual === expected;\n  const message = () => `Expected element${pass ? ' not' : ''} to have length ${expected}, but had ${actual}`;\n\n  return { pass, message };\n});\n\n/**\n *\n * expect('.zippy__content').toHaveId('ID');\n */\nexport const toHaveId = comparator((el, expected) => {\n  const actual = $(resolveDOMSelector(el)).attr('id');\n  const pass = actual === expected;\n  const message = () => `Expected element${pass ? ' not' : ''} to have ID '${expected}', but had '${actual}'`;\n\n  return { pass, message };\n});\n\n/**\n * This validates classes in strict order. If you want to validate classes in any order,\n * just set the strict config option to false.\n *\n * expect('.zippy__content').toHaveClass('class');\n * expect('.zippy__content').toHaveClass('class-a, class-b');\n * expect('.zippy__content').toHaveClass(['class-a, class-b']);\n * expect('.zippy__content').toHaveClass(['class-b, class-a']);\n * expect('.zippy__content').not.toHaveClass(['class-b, class-a'], { strict: true });\n */\nexport const toHaveClass = comparator((el, expected: string | string[], options: { strict: boolean } = { strict: true }) => {\n  const resolvedEl = resolveDOMSelector(el);\n\n  if (expected && Array.isArray(expected)) {\n    const actual: string = $(resolvedEl).attr('class');\n    const expectedClasses = expected.join(' ');\n    const pass = options.strict ? $(resolvedEl).hasClass(expectedClasses) : expected.every((e) => $(resolvedEl).hasClass(e));\n    const message = () => `Expected element${pass ? ' not' : ''} to have value '${expectedClasses}', but had '${actual}'`;\n\n    return { pass, message };\n  }\n\n  const actual = $(resolvedEl).attr('class');\n  const pass = $(resolvedEl).hasClass(expected);\n  const message = () => `Expected element${pass ? ' not' : ''} to have class '${expected}', but had '${actual}'`;\n\n  return { pass, message };\n});\n\n/**\n * expect(host.query('.zippy')).toHaveAttribute('id', 'zippy');\n */\nexport const toHaveAttribute = comparator((el, attr: string | object, val) => {\n  const resolvedEl = resolveDOMSelector(el);\n\n  if (isObject(attr)) {\n    let pass = false;\n    let failing: string;\n\n    for (const key of Object.keys(attr)) {\n      const actual = $(resolvedEl).attr(key);\n      const addendum = attr[key] !== undefined ? ` with value '${attr[key]}'` : '';\n      pass = hasProperty(actual, attr[key]);\n      failing = !pass ? `'${attr}'${addendum}, but had '${actual}'` : '';\n    }\n    const message = () => `Expected element${pass ? ' not' : ''} to have attribute ${failing}`;\n\n    return { pass, message };\n  }\n\n  const actual = $(resolvedEl).attr(attr);\n  const addendum = val !== undefined ? ` with value '${val}'` : '';\n  const pass = hasProperty(actual, val);\n  const message = () => `Expected element${pass ? ' not' : ''} to have attribute '${attr}'${addendum}, but had '${actual}'`;\n\n  return { pass, message };\n});\n\n/**\n *  expect(host.query('.checkbox')).toHaveProperty('checked', true);\n *  expect(host.query('.checkbox')).toHaveProperty({checked: true});\n */\nexport const toHaveProperty = comparator((el, prop, val) => {\n  const resolvedEl = resolveDOMSelector(el);\n\n  if (isObject(prop)) {\n    return checkProperty(el, prop, hasProperty);\n  }\n\n  const actual = $(resolvedEl).prop(prop);\n  const addendum = val !== undefined ? ` with value '${val}'` : '';\n  const pass = hasProperty(actual, val);\n  const message = () => `Expected element${pass ? ' not' : ''} to have property '${prop}'${addendum}, but had '${actual}'`;\n\n  return { pass, message };\n});\n\nexport const toContainProperty = comparator((el, prop, val) => {\n  const resolvedEl = resolveDOMSelector(el);\n\n  if (isObject(prop)) {\n    return checkProperty(el, prop, containsProperty);\n  }\n\n  const actual = $(resolvedEl).prop(prop);\n  const addendum = val !== undefined ? ` with value '${val}'` : '';\n  const pass = containsProperty(actual, val);\n  const message = () => `Expected element${pass ? ' not' : ''} to have property '${prop}'${addendum}, but had '${actual}'`;\n\n  return { pass, message };\n});\n\n/**\n *\n * expect('.zippy__content').toHaveText('Content');\n * expect('.zippy__content').toHaveText(['Content A', 'Content B']);\n *\n * expect('.zippy__content').toHaveText((text) => text.includes('..');\n */\nexport const toHaveText = comparator((el, expected, exact = false) => hasSameText(el, expected, { exact, trim: false }));\n\nexport const toHaveExactText = comparator((el, expected, options: { trim: boolean } = { trim: false }) =>\n  hasSameText(el, expected, { exact: true, trim: options.trim }),\n);\n\nexport const toHaveExactTrimmedText = comparator((el, expected) => hasSameText(el, expected, { exact: true, trim: true }));\n\nexport const toContainText = toHaveText;\n\n/**\n *\n * expect('.zippy__content').toHaveValue('value');\n * expect('.zippy__content').toHaveValue(['value a', 'value b']);\n */\nexport const toHaveValue = comparator((el, expected) => {\n  const resolvedEl = resolveDOMSelector(el);\n\n  if (expected && Array.isArray(expected)) {\n    let actual: string;\n    let pass = false;\n    let failing: string;\n\n    $(resolvedEl).each((i, e) => {\n      actual = $(e).val();\n      pass = actual === expected[i];\n      if (!pass) {\n        failing = expected[i];\n\n        return false;\n      }\n    });\n\n    const message = () => `Expected element${pass ? ' not' : ''} to have value '${failing}', but had '${actual}'`;\n\n    return { pass, message };\n  }\n\n  const actual = $(resolvedEl).val();\n  const pass = actual === expected;\n  const message = () => `Expected element${pass ? ' not' : ''} to have value '${expected}', but had '${actual}'`;\n\n  return { pass, message };\n});\n\nexport const toContainValue = toHaveValue;\n\n/**\n *\n *  expect(host.element).toHaveStyle({\n *    backgroundColor: 'rgba(0, 0, 0, 0.1)'\n *  });\n */\nexport const toHaveStyle = comparator((el, expected) => {\n  const pass = hasCss(el, expected);\n  const message = () => `Expected element${pass ? ' not' : ''} to have CSS ${JSON.stringify(expected)}`;\n\n  return { pass, message };\n});\n\n/**\n *\n * expect('.zippy__content').toHaveData({data: 'role', val: 'admin'});\n */\nexport const toHaveData = comparator((el, { data, val }) => {\n  const actual = $(resolveDOMSelector(el)).data(data);\n  const addendum = val !== undefined ? ` with value '${val}'` : '';\n  const pass = hasProperty(actual, val);\n  const message = () => `Expected element${pass ? ' not' : ''} to have data '${data}'${addendum}, but had '${actual}'`;\n\n  return { pass, message };\n});\n\n/**\n *\n * expect('.checkbox').toBeChecked();\n */\nexport const toBeChecked = comparator((el) => {\n  const pass = $(resolveDOMSelector(el)).is(':checked');\n  const message = () => `Expected element${pass ? ' not' : ''} to be checked`;\n\n  return { pass, message };\n});\n\n/**\n *\n * expect('.checkbox').toBeIndeterminate();\n */\nexport const toBeIndeterminate = comparator((el) => {\n  const pass = $(resolveDOMSelector(el)).is(':indeterminate');\n  const message = () => `Expected element${pass ? ' not' : ''} to be indeterminate`;\n\n  return { pass, message };\n});\n\n/**\n *\n * expect('.checkbox').toBeDisabled();\n */\nexport const toBeDisabled = comparator((el) => {\n  const pass = $(resolveDOMSelector(el)).is(':disabled');\n  const message = () => `Expected element${pass ? ' not' : ''} to be disabled`;\n\n  return { pass, message };\n});\n\n/**\n * An empty element is an element without child elements or text.\n *\n * expect('div').toBeEmpty();\n */\nexport const toBeEmpty = comparator((el) => {\n  const pass = $(resolveDOMSelector(el)).is(':empty');\n  const message = () => `Expected element${pass ? ' not' : ''} to be empty`;\n\n  return { pass, message };\n});\n\n/**\n * Verify if an object has some expected properties.\n *\n * const actual = { lorem: 'first', ipsum: 'second' };\n * expect(actual).toBePartial({ lorem: 'first' });\n */\nexport const toBePartial = comparator((actual, expected) => {\n  const mapToPropsAndValues = (values: any[], properties: any[]) => {\n    return properties.map((prop) => {\n      return {\n        name: prop,\n        value: values[prop],\n        type: typeof values[prop],\n      };\n    });\n  };\n  const actualProps = Object.getOwnPropertyNames(actual);\n  const actualPropsAndValues = mapToPropsAndValues(actual, actualProps);\n\n  const expectedProps = Object.getOwnPropertyNames(expected);\n  const expectedPropsAndValues = mapToPropsAndValues(expected, expectedProps);\n\n  const pass = expectedProps.every((expectedProp) => actual[expectedProp] === expected[expectedProp]);\n  const message = () =>\n    `Expected element${pass ? ' not' : ''} to contain properties: ${JSON.stringify(expectedPropsAndValues)}.`.concat(\n      ` Actual properties: ${JSON.stringify(actualPropsAndValues)}`,\n    );\n\n  return { pass, message };\n});\n\n/**\n * Hidden elements are elements that have:\n * 1. Display or visibility style properties set to \"none\" or \"hidden\"\n * 2. Display or visibility computed styles set to \"none\" or \"hidden\"\n * 3. Width and height set to 0 (check not applied in jest)\n * 4. A hidden parent element (this also hides child elements)\n * 5. Type equal to \"hidden\" (only for form elements)\n * 6. A \"hidden\" attribute\n */\nfunction isHidden(elOrSelector: HTMLElement | HTMLElement[] | string): boolean {\n  let el = $(resolveDOMSelector(elOrSelector))[0];\n\n  if (!el) {\n    return true;\n  }\n\n  const hiddenWhen = [\n    (el) => !(el.offsetWidth || el.offsetHeight || el.getClientRects().length),\n    (el) => el.style.display === 'none' || window.getComputedStyle(el).getPropertyValue?.('display') === 'none',\n    (el) => el.style.visibility === 'hidden' || window.getComputedStyle(el).getPropertyValue?.('visibility') === 'hidden',\n    (el) => el.type === 'hidden',\n    (el) => el.hasAttribute('hidden'),\n  ];\n\n  if (isRunningInJsDom()) {\n    // When running in JSDOM (Jest), offset-properties and client rects are always reported as 0\n    // - hence, let's take a more \"naive\" approach here. (https://github.com/jsdom/jsdom/issues/135)\n    hiddenWhen.shift();\n  }\n\n  while (el) {\n    if (el === document) {\n      break;\n    }\n\n    if (el.nodeType === Node.ELEMENT_NODE && hiddenWhen.some((rule) => rule(el))) {\n      return true;\n    }\n\n    el = el.parentNode || el.host;\n  }\n\n  return false;\n}\n\n/**\n * Hidden elements are elements that have:\n * 1. Display or visibility style properties set to \"none\" or \"hidden\"\n * 2. Display or visibility computed styles set to \"none\" or \"hidden\"\n * 3. Width and height set to 0 (check not applied in jest)\n * 4. A hidden parent element (this also hides child elements)\n * 5. Type equal to \"hidden\" (only for form elements)\n * 6. A \"hidden\" attribute\n *\n * expect('div').toBeHidden();\n *\n */\nexport const toBeHidden = comparator((el) => {\n  const pass = isHidden(el);\n  const message = () => `Expected element${pass ? ' not' : ''} to be hidden`;\n\n  return { pass, message };\n});\n\n/**\n * The :selected selector selects option elements that are pre-selected.\n *\n * expect('div').toBeSelected();\n *\n */\nexport const toBeSelected = comparator((el) => {\n  const pass = $(resolveDOMSelector(el)).is(':selected');\n  const message = () => `Expected element${pass ? ' not' : ''} to be selected`;\n\n  return { pass, message };\n});\n\n/**\n * Hidden elements are elements that have:\n * 1. Display property set to \"none\"\n * 2. Width and height set to 0\n * 3. A hidden parent element (this also hides child elements)\n * 4. Type equal to \"hidden\" (only for form elements)\n * 5. A \"hidden\" attribute\n *\n * expect('div').toBeVisible();\n *\n */\nexport const toBeVisible = comparator((el) => {\n  const pass = !isHidden(el);\n\n  const message = () => `Expected element${pass ? ' not' : ''} to be visible`;\n\n  return { pass, message };\n});\n\n/**\n * The :focus selector selects the element that currently has focus.\n *\n * expect('input').toBeFocused();\n */\nexport const toBeFocused = comparator((el) => {\n  const element = $(resolveDOMSelector(el)).get(0);\n  const pass = element === element.ownerDocument.activeElement;\n  const message = () => `Expected element${pass ? ' not' : ''} to be focused`;\n\n  return { pass, message };\n});\n\n/**\n * Check to see if the set of matched elements matches the given selector\n * returns true if the dom contains the element\n *\n * expect('div').toBeMatchedBy('.js-something')\n */\nexport const toBeMatchedBy = comparator((el, expected) => {\n  const actual = $(resolveDOMSelector(el)).filter(expected).length;\n  const pass = actual > 0;\n  const message = () => `Expected element${pass ? ' not' : ''} to be matched by '${expected}'`;\n\n  return { pass, message };\n});\n\n/**\n *\n * expect('div').toHaveDescendant('.child')\n */\nexport const toHaveDescendant = comparator((el, selector) => {\n  const actual = $(resolveDOMSelector(el)).find(selector).length;\n  const pass = actual > 0;\n  const message = () => `Expected element${pass ? ' not' : ''} to contain child '${selector}'`;\n\n  return { pass, message };\n});\n\n/**\n *\n * expect('div').toHaveDescendantWithText({selector: '.child', text: 'text'})\n */\nexport const toHaveDescendantWithText = comparator((el, { selector, text }) => {\n  const actual = $.trim($(resolveDOMSelector(el)).find(selector).text());\n  if (text && $.isFunction(text.test)) {\n    const pass = text.test(actual);\n    const message = () =>\n      `Expected element${pass ? ' not' : ''} to have descendant '${selector}' with text matching '${text}',` + ` but had '${actual}'`;\n\n    return { pass, message };\n  }\n  const pass = actual.indexOf(text) !== -1;\n  const message = () => `Expected element${pass ? ' not' : ''} to have descendant '${selector}' with text '${text}', but had '${actual}'`;\n\n  return { pass, message };\n});\n\nexport const toHaveSelectedOptions = comparator((el, expected) => {\n  const resolvedEl = resolveDOMSelector(el);\n\n  if (expected instanceof HTMLOptionElement) {\n    const actual = $(resolvedEl).find(':selected');\n\n    const pass = actual.is($(expected));\n\n    const message = () =>\n      `Expected element${pass ? ' not' : ''} to have options '[${expected.outerHTML}]' but had '[${actual[0].outerHTML}]'`;\n\n    return { pass, message };\n  }\n\n  if (isHTMLOptionElementArray(expected)) {\n    const actual = $(resolvedEl).find(':selected');\n\n    const pass = actual.length === expected.length && actual.toArray().every((_, index) => $(actual[index]).is(expected[index]));\n\n    const expectedOptionsString = $(expected)\n      .get()\n      .map((option) => option.outerHTML)\n      .join(',');\n\n    const actualOptionsString = actual\n      .get()\n      .map((option) => option.outerHTML)\n      .join(',');\n\n    const message = () =>\n      `Expected element${pass ? ' not' : ''} to have options '[${expectedOptionsString}]' but had '[${actualOptionsString}]'`;\n\n    return { pass, message };\n  }\n\n  const actual: string[] = $(resolvedEl).val();\n\n  const pass = coerceArray(expected)?.every((v) => actual.includes(v));\n\n  const expectedOptionsString = Array.isArray(expected)\n    ? expected.reduce((acc: string, val: string, i) => acc + `${i === expected.length ? '' : ','}${val}`)\n    : expected;\n  const message = () => `Expected element${pass ? ' not' : ''} to have options '[${expectedOptionsString}]' but had '[${actual}]'`;\n\n  return { pass, message };\n});\n","import { TestModuleMetadata } from '@angular/core/testing';\n\nlet globals: TestModuleMetadata = {\n  providers: [],\n  declarations: [],\n  imports: [],\n};\n\nexport function defineGlobalsInjections(config: TestModuleMetadata): void {\n  globals = { ...globals, ...config };\n}\n\nexport function getGlobalsInjections(): TestModuleMetadata {\n  return globals;\n}\n","import { SchemaMetadata, Type } from '@angular/core';\nimport { DeferBlockBehavior, ModuleTeardownOptions } from '@angular/core/testing';\nimport { NoopAnimationsModule } from '@angular/platform-browser/animations';\n\nimport { getGlobalsInjections } from '../globals-injections';\n\nimport { BaseSpectatorOptions } from './options';\n\n/**\n * @publicApi\n */\nexport interface ModuleMetadata {\n  declarations: any[];\n  imports: any[];\n  providers: any[];\n  entryComponents: Type<any>[];\n  schemas?: (SchemaMetadata | any[])[];\n  teardown?: ModuleTeardownOptions;\n  deferBlockBehavior: DeferBlockBehavior;\n  errorOnUnknownElements: boolean;\n  errorOnUnknownProperties: boolean;\n}\n\n/**\n * @internal\n */\nexport function initialModule(options: Required<BaseSpectatorOptions>): ModuleMetadata {\n  const globals = { imports: [], declarations: [], providers: [], ...getGlobalsInjections() };\n\n  return {\n    declarations: [...globals.declarations, ...options.declarations, ...options.entryComponents],\n    imports: [...(options.disableAnimations ? [NoopAnimationsModule] : []), ...globals.imports, ...options.imports],\n    providers: [...globals.providers, ...options.providers, ...options.mocks.map((type) => options.mockProvider(type))],\n    entryComponents: [...options.entryComponents],\n    teardown:\n      // Caretaker note: we don't want to merge the `globals.teardown` and `options.teardown`, since `options.teardown`\n      // is always defined. If the user calls `defineGlobalsInjections({ teardown: { ... } })` and we merge it with\n      // `options.teardown`, then `options.teardown` will always override global options.\n      { ...(globals.teardown || options.teardown) },\n    deferBlockBehavior: globals.deferBlockBehavior || options.deferBlockBehavior,\n    errorOnUnknownElements: globals.errorOnUnknownElements || options.errorOnUnknownElements,\n    errorOnUnknownProperties: globals.errorOnUnknownProperties || options.errorOnUnknownProperties,\n  };\n}\n","import { NO_ERRORS_SCHEMA } from '@angular/core';\n\nimport { initialModule, ModuleMetadata } from '../base/initial-module';\nimport { declareInModule } from '../utils';\n\nimport { SpectatorOptions } from './options';\n\n/**\n * @internal\n */\nexport function initialSpectatorModule<C>(options: Required<SpectatorOptions<C>>): ModuleMetadata {\n  const moduleMetadata = initialModule(options);\n\n  if (options.declareComponent) {\n    declareInModule(moduleMetadata, options.component);\n  }\n\n  moduleMetadata.schemas = [options.shallow ? NO_ERRORS_SCHEMA : options.schemas || []];\n\n  return moduleMetadata;\n}\n","import { OptionalsRequired } from '../types';\n\n/**\n * @internal\n */\nexport function merge<T>(defaults: OptionalsRequired<T>, overrides?: T): Required<T> {\n  return { ...defaults, ...overrides } as Required<T>;\n}\n","/** Credit: Valentin Buryakov */\nimport { FactoryProvider, Type, AbstractType } from '@angular/core';\n\ntype Writable<T> = { -readonly [P in keyof T]: T[P] };\n\ndeclare type UnknownFunction = (...args: any[]) => any;\n\n/**\n * @publicApi\n */\nexport interface CompatibleSpy<F extends UnknownFunction = UnknownFunction> extends jasmine.Spy<(...args: Parameters<F>) => ReturnType<F>> {\n  /**\n   * By chaining the spy with and.returnValue, all calls to the function will return a specific\n   * value.\n   */\n  andReturn(val: ReturnType<F>): void;\n\n  /**\n   * By chaining the spy with and.callFake, all calls to the spy will delegate to the supplied\n   * function.\n   */\n  andCallFake(fn: F): this;\n\n  /**\n   * removes all recorded calls\n   */\n  reset(): void;\n}\n\n/**\n * @publicApi\n */\nexport type SpyObject<T> = T & { [P in keyof T]: T[P] extends UnknownFunction ? T[P] & CompatibleSpy<T[P]> : T[P] } & {\n  /**\n   * Casts to type without readonly properties\n   */\n  castToWritable(): Writable<T>;\n};\n\n/**\n * @internal\n */\nexport function installProtoMethods<T>(mock: any, proto: any, createSpyFn: Function): void {\n  if (proto === null || proto === Object.prototype) {\n    return;\n  }\n\n  for (const key of Object.getOwnPropertyNames(proto)) {\n    const descriptor = Object.getOwnPropertyDescriptor(proto, key);\n\n    if (!descriptor) {\n      continue;\n    }\n\n    if (typeof descriptor.value === 'function' && key !== 'constructor' && typeof mock[key] === 'undefined') {\n      mock[key] = createSpyFn(key);\n    } else if (descriptor.get && !mock.hasOwnProperty(key)) {\n      Object.defineProperty(mock, key, {\n        set: (value) => (mock[`_${key}`] = value),\n        get: () => mock[`_${key}`],\n        configurable: true,\n      });\n    }\n  }\n\n  installProtoMethods(mock, Object.getPrototypeOf(proto), createSpyFn);\n\n  mock.castToWritable = () => mock;\n}\n\n/**\n * @publicApi\n */\nexport function createSpyObject<T>(type: Type<T> | AbstractType<T>, template?: Partial<Record<keyof T, any>>): SpyObject<T> {\n  const mock: any = { ...template };\n\n  installProtoMethods<T>(mock, type.prototype, (name) => {\n    const newSpy: jasmine.Spy & Partial<CompatibleSpy> = jasmine.createSpy(name);\n    newSpy.andCallFake = (fn: (...args: any[]) => any) => <any>newSpy.and.callFake(fn);\n    newSpy.andReturn = (val) => newSpy.and.returnValue(val);\n    newSpy.reset = () => newSpy.calls.reset();\n    // revisit return null here (previously needed for rtts_assert).\n    newSpy.and.returnValue(null);\n\n    return newSpy;\n  });\n\n  return mock;\n}\n\n/**\n * @publicApi\n */\nexport function mockProvider<T>(type: Type<T> | AbstractType<T>, properties?: Partial<Record<keyof T, any>>): FactoryProvider {\n  return {\n    provide: type,\n    useFactory: () => createSpyObject(type, properties),\n  };\n}\n\n/**\n * @publicApi\n */\nexport type MockProvider = typeof mockProvider;\n","import { Component, Directive, NgModule, Pipe, Provider, SchemaMetadata, Type } from '@angular/core';\nimport { DeferBlockBehavior, MetadataOverride, ModuleTeardownOptions } from '@angular/core/testing';\n\nimport { merge } from '../internals/merge';\nimport { mockProvider, MockProvider } from '../mock';\nimport { OptionalsRequired } from '../types';\n\n/**\n * @internal\n */\nexport interface BaseSpectatorOptions {\n  disableAnimations?: boolean;\n  entryComponents?: Type<any>[];\n  mocks?: Type<any>[];\n  mockProvider?: MockProvider;\n  providers?: any[];\n  declarations?: any[];\n  imports?: any[];\n  schemas?: (SchemaMetadata | any[])[];\n  overrideModules?: [Type<any>, MetadataOverride<NgModule>][];\n  overrideComponents?: [Type<any>, MetadataOverride<Component>][];\n  overrideDirectives?: [Type<any>, MetadataOverride<Directive>][];\n  overridePipes?: [Type<any>, MetadataOverride<Pipe>][];\n  teardown?: ModuleTeardownOptions;\n  deferBlockBehavior?: DeferBlockBehavior;\n  errorOnUnknownElements?: boolean;\n  errorOnUnknownProperties?: boolean;\n}\n\n/**\n * @internal\n */\nexport interface BaseSpectatorOverrides {\n  providers?: Provider[];\n}\n\nconst defaultOptions: OptionalsRequired<BaseSpectatorOptions> = {\n  disableAnimations: true,\n  entryComponents: [],\n  mocks: [],\n  mockProvider,\n  providers: [],\n  declarations: [],\n  imports: [],\n  schemas: [],\n  overrideModules: [],\n  overrideComponents: [],\n  overrideDirectives: [],\n  overridePipes: [],\n  teardown: { destroyAfterEach: false },\n  errorOnUnknownElements: false,\n  errorOnUnknownProperties: false,\n  deferBlockBehavior: DeferBlockBehavior.Playthrough,\n};\n\n/**\n * @internal\n */\nexport function getDefaultBaseOptions(options?: BaseSpectatorOptions): Required<BaseSpectatorOptions> {\n  return merge<BaseSpectatorOptions>(defaultOptions, options);\n}\n","import { Type, Binding } from '@angular/core';\n\nimport { getDefaultBaseOptions, BaseSpectatorOptions } from '../base/options';\nimport { merge } from '../internals/merge';\nimport { OptionalsRequired } from '../types';\n\n/**\n * @publicApi\n */\nexport interface SpectatorOptions<C> extends BaseSpectatorOptions {\n  component: Type<C>;\n  shallow?: boolean;\n  /** set options for TestBed.createComponent(component, options: TestComponentOptions)  */\n  bindings?: Binding[]; // TestComponentOptions['bindings'];\n  componentProviders?: any[];\n  componentViewProviders?: any[];\n  componentImports?: any[];\n  detectChanges?: boolean;\n  declareComponent?: boolean;\n  componentMocks?: Type<any>[];\n  componentViewProvidersMocks?: Type<any>[];\n}\n\nconst defaultSpectatorOptions: OptionalsRequired<SpectatorOptions<any>> = {\n  ...getDefaultBaseOptions(),\n  shallow: false,\n  declareComponent: true,\n  detectChanges: true,\n  componentProviders: [],\n  componentViewProviders: [],\n  componentImports: [],\n  componentMocks: [],\n  componentViewProvidersMocks: [],\n  bindings: [],\n};\n\n/**\n * @internal\n */\nexport function getSpectatorDefaultOptions<C>(overrides?: SpectatorOptions<C>): Required<SpectatorOptions<C>> {\n  return merge(defaultSpectatorOptions, overrides);\n}\n","import { Component, isStandalone, Provider, reflectComponentType, Type } from '@angular/core';\nimport { MetadataOverride, TestBed } from '@angular/core/testing';\nimport { BrowserDynamicTestingModule } from '@angular/platform-browser-dynamic/testing';\n\nimport { BaseSpectatorOptions, BaseSpectatorOverrides } from '../base/options';\nimport { addMatchers } from '../core';\nimport { setProps } from '../internals/query';\nimport * as customMatchers from '../matchers';\nimport { InferInputSignals, isType } from '../types';\n\nimport { initialSpectatorModule } from './initial-module';\nimport { getSpectatorDefaultOptions, SpectatorOptions } from './options';\nimport { Spectator } from './spectator';\n\n/**\n * @publicApi\n */\nexport type SpectatorFactory<C> = (options?: SpectatorOverrides<C>) => Spectator<C>;\n\n/**\n * @publicApi\n */\nexport interface SpectatorOverrides<C> extends BaseSpectatorOverrides {\n  detectChanges?: boolean;\n  props?: InferInputSignals<C>;\n}\n\n/**\n * @internal\n */\nexport function overrideComponentIfProviderOverridesSpecified<C>(options: Required<SpectatorOptions<C>>): void {\n  const hasProviderOverrides = options.componentProviders.length || options.componentMocks.length;\n  const hasViewProviders = options.componentViewProviders.length || options.componentViewProvidersMocks.length;\n  if (hasProviderOverrides || hasViewProviders) {\n    let providerConfiguration = {};\n    if (hasProviderOverrides) {\n      providerConfiguration = {\n        providers: [...options.componentProviders, ...options.componentMocks.map((p) => options.mockProvider(p))],\n      };\n    }\n    if (hasViewProviders) {\n      providerConfiguration = {\n        ...providerConfiguration,\n        viewProviders: [...options.componentViewProviders, ...options.componentViewProvidersMocks.map((p) => options.mockProvider(p))],\n      };\n    }\n    TestBed.overrideComponent(options.component, {\n      set: providerConfiguration,\n    });\n  }\n}\n\n/**\n * @internal\n */\nexport function overrideComponentImports<C>(options: Required<SpectatorOptions<C>>): void {\n  if (!options.componentImports.length) {\n    return;\n  }\n\n  TestBed.overrideComponent(\n    options.component,\n    options.componentImports.reduce<MetadataOverride<Component>>(\n      (r, [original, override]) => {\n        r.remove!.imports!.push(original);\n\n        if (override) {\n          r.add!.imports!.push(override);\n        }\n\n        return r;\n      },\n      { remove: { imports: [] }, add: { imports: [] } },\n    ),\n  );\n}\n\n/**\n * @internal\n */\nexport function overrideModules(options: Required<BaseSpectatorOptions>): void {\n  if (options.overrideModules.length) {\n    options.overrideModules.forEach((overrideModule) => {\n      const [ngModule, override] = overrideModule;\n\n      TestBed.overrideModule(ngModule, override);\n    });\n  }\n}\n\n/**\n * @internal\n */\nexport function overrideComponents(options: Required<BaseSpectatorOptions>): void {\n  if (options.overrideComponents.length) {\n    options.overrideComponents.forEach((overrideComponent) => {\n      const [component, override] = overrideComponent;\n\n      if (!reflectComponentType(component)?.isStandalone) {\n        throw new Error(`Can not override non standalone component`);\n      }\n\n      TestBed.overrideComponent(component, override);\n    });\n  }\n}\n\n/**\n * @internal\n */\nexport function overrideDirectives(options: Required<BaseSpectatorOptions>): void {\n  if (options.overrideDirectives.length) {\n    options.overrideDirectives.forEach((overrideDirective) => {\n      const [directive, override] = overrideDirective;\n\n      if (!isStandalone(directive)) {\n        throw new Error(`Can not override non standalone directive`);\n      }\n\n      TestBed.overrideDirective(directive, override);\n    });\n  }\n}\n\n/**\n * @internal\n */\nexport function overridePipes(options: Required<BaseSpectatorOptions>): void {\n  if (options.overridePipes.length) {\n    options.overridePipes.forEach((overridePipe) => {\n      const [pipe, override] = overridePipe;\n\n      if (!isStandalone(pipe)) {\n        throw new Error(`Can not override non standalone pipe`);\n      }\n\n      TestBed.overridePipe(pipe, override);\n    });\n  }\n}\n\n/**\n * @publicApi\n */\nexport function createComponentFactory<C>(typeOrOptions: Type<C> | SpectatorOptions<C>): SpectatorFactory<C> {\n  const options = isType(typeOrOptions)\n    ? getSpectatorDefaultOptions<C>({ component: typeOrOptions })\n    : getSpectatorDefaultOptions(typeOrOptions);\n\n  const moduleMetadata = initialSpectatorModule<C>(options);\n\n  beforeEach(() => {\n    addMatchers(customMatchers);\n    TestBed.configureTestingModule(moduleMetadata).overrideModule(BrowserDynamicTestingModule, {});\n\n    overrideModules(options);\n    overrideComponents(options);\n    overrideDirectives(options);\n    overridePipes(options);\n\n    overrideComponentIfProviderOverridesSpecified(options);\n    overrideComponentImports(options);\n  });\n\n  return (overrides?: SpectatorOverrides<C>) => {\n    const defaults: SpectatorOverrides<C> = { props: {}, detectChanges: true, providers: [] };\n    const { detectChanges, props, providers } = { ...defaults, ...overrides };\n\n    if (providers && providers.length) {\n      providers.forEach((provider: Provider) => {\n        const token = (provider as any).provide;\n        if (token) {\n          TestBed.overrideProvider(token, provider as any);\n        }\n      });\n    }\n\n    const spectator = createSpectator(options, props);\n\n    if (options.detectChanges && detectChanges) {\n      spectator.detectChanges();\n    }\n\n    return spectator;\n  };\n}\n\nfunction createSpectator<C>(options: Required<SpectatorOptions<C>>, props?: InferInputSignals<C>): Spectator<C> {\n  const fixture = TestBed.createComponent(options.component, { bindings: options.bindings });\n  const debugElement = fixture.debugElement;\n\n  const component = setProps(fixture.componentRef, props);\n\n  return new Spectator(fixture, debugElement, component, debugElement.nativeElement);\n}\n","import { ChangeDetectorRef, DebugElement, Type } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\n\nimport { DOMSelector } from '../dom-selectors';\nimport { getChildren, setHostProps } from '../internals/query';\nimport { Token } from '../token';\nimport { QueryOptions, QueryType, isString } from '../types';\n\nimport { DomSpectator } from '../base/dom-spectator';\nimport { SpyObject } from '../mock';\nimport { HostComponent } from './host-component';\n\n/**\n * @publicApi\n */\nexport class SpectatorHost<C, H = HostComponent> extends DomSpectator<C> {\n  constructor(\n    public hostComponent: H,\n    public hostDebugElement: DebugElement,\n    public hostElement: Element,\n    public hostFixture: ComponentFixture<any>,\n    public debugElement: DebugElement,\n    componentInstance: C,\n    public element: HTMLElement,\n  ) {\n    super(hostFixture, debugElement, componentInstance, element);\n  }\n\n  public get component(): C {\n    return this.instance;\n  }\n\n  public inject<T>(token: Token<T>, fromComponentInjector: boolean = false): SpyObject<T> {\n    if (fromComponentInjector) {\n      return this.debugElement.injector.get(token) as SpyObject<T>;\n    }\n\n    return super.inject(token);\n  }\n\n  public detectComponentChanges(): void {\n    if (this.debugElement) {\n      this.debugElement.injector.get(ChangeDetectorRef).detectChanges();\n    } else {\n      this.detectChanges();\n    }\n  }\n\n  public queryHost<R extends Element>(selector: string | DOMSelector, options?: { root: boolean }): R | null;\n  public queryHost<R>(directive: Type<R>): R | null;\n  public queryHost<R>(directiveOrSelector: Type<any> | string, options: { read: Token<R> }): R | null;\n  public queryHost<R>(directiveOrSelector: QueryType, options?: QueryOptions<R>): R | Element | null {\n    if ((options || {}).root && isString(directiveOrSelector)) {\n      return document.querySelector(directiveOrSelector);\n    }\n\n    return getChildren<R>(this.hostDebugElement)(directiveOrSelector, options)[0] || null;\n  }\n\n  public queryHostAll<R extends Element>(selector: string | DOMSelector, options?: { root: boolean }): R[];\n  public queryHostAll<R>(directive: Type<R>): R[];\n  public queryHostAll<R>(directiveOrSelector: Type<any> | string, options: { read: Token<R> }): R[];\n  public queryHostAll<R>(directiveOrSelector: QueryType, options?: QueryOptions<R>): R[] | Element[] {\n    if ((options || {}).root && isString(directiveOrSelector)) {\n      return Array.from(document.querySelectorAll(directiveOrSelector));\n    }\n\n    return getChildren<R>(this.hostDebugElement)(directiveOrSelector, options);\n  }\n\n  public setHostInput<K extends keyof H>(input: H extends HostComponent ? any : Partial<H>): void;\n  public setHostInput<K extends keyof H>(input: H extends HostComponent ? any : K, inputValue: H extends HostComponent ? any : H[K]): void;\n  public setHostInput(input: any, value?: any): void {\n    setHostProps(this.fixture.componentRef, input, value);\n    this.detectChanges();\n  }\n}\n","import { DebugNode, Predicate, Type } from '@angular/core';\n\n// TODO (dirkluijk): remove after upgrading to Angular 8.2\n// see: https://github.com/angular/angular/commit/10a1e1974b816ebb979dc10586b160ee07ad8356\nexport function nodeByDirective(type: Type<any>): Predicate<DebugNode> {\n  return (debugNode) => debugNode.providerTokens.includes(type);\n}\n","import { ModuleMetadata } from '../base/initial-module';\nimport { initialSpectatorModule } from '../spectator/initial-module';\n\nimport { SpectatorHostOptions } from './options';\n\n/**\n * @internal\n */\nexport function initialSpectatorWithHostModule<C, H>(options: Required<SpectatorHostOptions<C, H>>): ModuleMetadata {\n  const moduleMetadata = initialSpectatorModule<C>(options);\n\n  moduleMetadata.declarations.push(options.host);\n\n  return moduleMetadata;\n}\n","import { Component, NgModule } from '@angular/core';\n\n@Component({\n  selector: 'lib-ngneat-host-component',\n  template: '',\n  // eslint-disable-next-line @angular-eslint/prefer-standalone\n  standalone: false,\n})\nexport class HostComponent {}\n\n/*\n  This is an unused module to resolve the ng build error:\n    'Cannot determine the module for class HostComponent'\n\n  Reference: https://github.com/angular/issues/13590\n*/\n@NgModule({\n  declarations: [HostComponent],\n})\nexport class HostModule {}\n","import { Type } from '@angular/core';\n\nimport { merge } from '../internals/merge';\nimport { getSpectatorDefaultOptions, SpectatorOptions } from '../spectator/options';\nimport { OptionalsRequired } from '../types';\n\nimport { HostComponent } from './host-component';\n\n/**\n * @publicApi\n */\nexport interface SpectatorHostOptions<C, H> extends SpectatorOptions<C> {\n  host?: Type<H>;\n  template?: string;\n}\n\nconst defaultSpectatorHostOptions: OptionalsRequired<SpectatorHostOptions<any, any>> = {\n  ...getSpectatorDefaultOptions<any>(),\n  host: HostComponent,\n  template: '',\n};\n\n/**\n * @internal\n */\nexport function getSpectatorHostDefaultOptions<C, H>(overrides?: SpectatorHostOptions<C, H>): Required<SpectatorHostOptions<C, H>> {\n  return merge(defaultSpectatorHostOptions, overrides);\n}\n","import { Provider, Type } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { BrowserDynamicTestingModule } from '@angular/platform-browser-dynamic/testing';\n\nimport { addMatchers } from '../core';\nimport { nodeByDirective } from '../internals/node-by-directive';\nimport * as customMatchers from '../matchers';\nimport {\n  overrideComponentIfProviderOverridesSpecified,\n  overrideComponentImports,\n  overrideComponents,\n  overrideDirectives,\n  overrideModules,\n  overridePipes,\n} from '../spectator/create-factory';\nimport { isType } from '../types';\n\nimport { BaseSpectatorOverrides } from '../base/options';\nimport { setHostProps } from '../internals/query';\nimport { HostComponent } from './host-component';\nimport { initialSpectatorWithHostModule } from './initial-module';\nimport { getSpectatorHostDefaultOptions, SpectatorHostOptions } from './options';\nimport { SpectatorHost } from './spectator-host';\n\n/**\n * @publicApi\n */\nexport type SpectatorHostFactory<C, H> = <HP>(\n  template: string,\n  overrides?: SpectatorHostOverrides<H, HP>,\n) => SpectatorHost<C, H & (HostComponent extends H ? HP : unknown)>;\n\n/**\n * @publicApi\n */\nexport type PresetSpectatorHostFactory<C, H> = <HP>(\n  template?: string,\n  overrides?: SpectatorHostOverrides<H, HP>,\n) => SpectatorHost<C, H & (HostComponent extends H ? HP : unknown)>;\n\n/**\n * @publicApi\n */\nexport interface SpectatorHostOverrides<H, HP> extends BaseSpectatorOverrides {\n  detectChanges?: boolean;\n  hostProps?: HostComponent extends H ? HP : Partial<H>;\n}\n\n/**\n * @publicApi\n */\nexport function createHostFactory<C, H = HostComponent>(\n  options: SpectatorHostOptions<C, H> & { template: string },\n): PresetSpectatorHostFactory<C, H>;\n/**\n * @publicApi\n */\nexport function createHostFactory<C, H = HostComponent>(typeOrOptions: Type<C> | SpectatorHostOptions<C, H>): SpectatorHostFactory<C, H>;\nexport function createHostFactory<C, H = HostComponent>(typeOrOptions: Type<C> | SpectatorHostOptions<C, H>): SpectatorHostFactory<C, H> {\n  const options = isType(typeOrOptions)\n    ? getSpectatorHostDefaultOptions<C, H>({ component: typeOrOptions })\n    : getSpectatorHostDefaultOptions(typeOrOptions);\n\n  const moduleMetadata = initialSpectatorWithHostModule<C, H>(options);\n\n  beforeEach(() => {\n    addMatchers(customMatchers);\n    TestBed.configureTestingModule(moduleMetadata).overrideModule(BrowserDynamicTestingModule, {});\n\n    overrideModules(options);\n    overrideComponents(options);\n    overrideDirectives(options);\n    overridePipes(options);\n\n    overrideComponentIfProviderOverridesSpecified(options);\n    overrideComponentImports(options);\n\n    if (options.template) {\n      TestBed.overrideComponent(options.host, {\n        set: { template: options.template },\n      });\n    }\n  });\n\n  return <HP>(template?: string, overrides?: SpectatorHostOverrides<H, HP>) => {\n    const defaults: SpectatorHostOverrides<H, HP> = { hostProps: {} as any, detectChanges: true, providers: [] };\n    const { detectChanges, hostProps, providers } = { ...defaults, ...overrides };\n\n    if (providers && providers.length) {\n      providers.forEach((provider: Provider) => {\n        TestBed.overrideProvider((provider as any).provide, provider as any);\n      });\n    }\n\n    if (template) {\n      TestBed.overrideComponent(options.host, {\n        set: { template: template },\n      });\n    }\n\n    const spectator = createSpectatorHost(options, hostProps);\n\n    if (options.detectChanges && detectChanges) {\n      spectator.detectChanges();\n    }\n\n    return spectator;\n  };\n}\n\nfunction createSpectatorHost<C, H, HP>(options: Required<SpectatorHostOptions<C, H>>, hostProps?: HP): SpectatorHost<C, H & HP> {\n  const hostFixture = TestBed.createComponent(options.host);\n  const debugElement = hostFixture.debugElement.query(By.directive(options.component)) || hostFixture.debugElement;\n  const debugNode = hostFixture.debugElement.queryAllNodes(nodeByDirective(options.component))[0];\n\n  if (!debugNode) {\n    throw new Error(`Cannot find component/directive ${options.component} in host template 😔`);\n  }\n\n  const hostComponent = setHostProps(hostFixture.componentRef, hostProps);\n  const component = debugNode.injector.get(options.component);\n\n  return new SpectatorHost(\n    hostComponent,\n    hostFixture.debugElement,\n    hostFixture.nativeElement,\n    hostFixture,\n    debugElement,\n    component,\n    debugElement.nativeElement,\n  );\n}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\n\nimport { DomSpectator } from '../base/dom-spectator';\nimport { setHostProps, setProps } from '../internals/query';\nimport { SpyObject } from '../mock';\nimport { HostComponent } from '../spectator-host/host-component';\nimport { Token } from '../token';\n\n/**\n * @publicApi\n */\nexport class SpectatorDirective<D, H = HostComponent> extends DomSpectator<D> {\n  constructor(\n    public hostComponent: H,\n    public fixture: ComponentFixture<any>,\n    public debugElement: DebugElement,\n    protected instance: D,\n    public element: Element,\n  ) {\n    super(fixture, debugElement, instance, element);\n  }\n\n  public get directive(): D {\n    return this.instance;\n  }\n\n  public inject<T>(token: Token<T>, fromDirectiveInjector: boolean = false): SpyObject<T> {\n    if (fromDirectiveInjector) {\n      return this.debugElement.injector.get(token) as SpyObject<T>;\n    }\n\n    return super.inject(token);\n  }\n\n  public setHostInput<K extends keyof H>(input: H extends HostComponent ? any : Partial<H>): void;\n  public setHostInput<K extends keyof H>(input: H extends HostComponent ? any : K, inputValue: H extends HostComponent ? any : H[K]): void;\n  public setHostInput(input: any, value?: any): void {\n    setHostProps(this.fixture.componentRef, input, value);\n    this.detectChanges();\n  }\n}\n","import { NO_ERRORS_SCHEMA } from '@angular/core';\n\nimport { initialModule, ModuleMetadata } from '../base/initial-module';\nimport { declareInModule } from '../utils';\nimport { SpectatorDirectiveOptions } from './options';\n\n/**\n * @internal\n */\nexport function initialSpectatorDirectiveModule<D, H>(options: Required<SpectatorDirectiveOptions<D, H>>): ModuleMetadata {\n  const moduleMetadata = initialModule(options);\n\n  if (options.declareDirective) {\n    declareInModule(moduleMetadata, options.directive);\n  }\n  moduleMetadata.declarations.push(options.host);\n\n  moduleMetadata.schemas = [options.shallow ? NO_ERRORS_SCHEMA : options.schemas || []];\n\n  return moduleMetadata;\n}\n","import { Provider, Type } from '@angular/core';\n\nimport { BaseSpectatorOptions, getDefaultBaseOptions } from '../base/options';\nimport { merge } from '../internals/merge';\nimport { HostComponent } from '../spectator-host/host-component';\nimport { OptionalsRequired } from '../types';\n\n/**\n * @publicApi\n */\nexport interface SpectatorDirectiveOptions<D, H> extends BaseSpectatorOptions {\n  directive: Type<D>;\n  shallow?: boolean;\n  detectChanges?: boolean;\n  host?: Type<H>;\n  template?: string;\n  directiveProviders?: Provider[];\n  directiveMocks?: Type<any>[];\n  declareDirective?: boolean;\n}\n\nconst defaultSpectatorRoutingOptions: OptionalsRequired<SpectatorDirectiveOptions<any, any>> = {\n  ...getDefaultBaseOptions(),\n  host: HostComponent,\n  template: '',\n  shallow: false,\n  detectChanges: true,\n  directiveProviders: [],\n  directiveMocks: [],\n  declareDirective: true,\n};\n\n/**\n * @internal\n */\nexport function getSpectatorDirectiveDefaultOptions<D, H>(\n  overrides?: SpectatorDirectiveOptions<D, H>,\n): Required<SpectatorDirectiveOptions<D, H>> {\n  return merge(defaultSpectatorRoutingOptions, overrides);\n}\n","import { Provider, Type } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { BrowserDynamicTestingModule } from '@angular/platform-browser-dynamic/testing';\n\nimport { BaseSpectatorOverrides } from '../base/options';\nimport { addMatchers } from '../core';\nimport { nodeByDirective } from '../internals/node-by-directive';\nimport { setHostProps } from '../internals/query';\nimport * as customMatchers from '../matchers';\nimport { HostComponent } from '../spectator-host/host-component';\nimport { isType } from '../types';\n\nimport { overrideComponents, overrideDirectives, overrideModules, overridePipes } from '../spectator/create-factory';\nimport { initialSpectatorDirectiveModule } from './initial-module';\nimport { SpectatorDirectiveOptions, getSpectatorDirectiveDefaultOptions } from './options';\nimport { SpectatorDirective } from './spectator-directive';\n\n/**\n * @publicApi\n */\nexport type SpectatorDirectiveFactory<D, H> = <HP>(\n  template: string,\n  overrides?: SpectatorDirectiveOverrides<H, HP>,\n) => SpectatorDirective<D, H & (HostComponent extends H ? HP : unknown)>;\n\n/**\n * @publicApi\n */\nexport type PresetSpectatorDirectiveFactory<D, H> = <HP>(\n  template?: string,\n  overrides?: SpectatorDirectiveOverrides<H, HP>,\n) => SpectatorDirective<D, H & (HostComponent extends H ? HP : unknown)>;\n\n/**\n * @publicApi\n */\nexport interface SpectatorDirectiveOverrides<H, HP> extends BaseSpectatorOverrides {\n  detectChanges?: boolean;\n  hostProps?: HostComponent extends H ? HP : Partial<H>;\n  directiveProviders?: Provider[];\n}\n\n/**\n * @publicApi\n */\nexport function createDirectiveFactory<D, H = HostComponent>(\n  options: SpectatorDirectiveOptions<D, H> & { template: string },\n): PresetSpectatorDirectiveFactory<D, H>;\n/**\n * @publicApi\n */\nexport function createDirectiveFactory<D, H = HostComponent>(\n  typeOrOptions: Type<D> | SpectatorDirectiveOptions<D, H>,\n): SpectatorDirectiveFactory<D, H>;\nexport function createDirectiveFactory<D, H = HostComponent>(\n  typeOrOptions: Type<D> | SpectatorDirectiveOptions<D, H>,\n): SpectatorDirectiveFactory<D, H> {\n  const options = isType(typeOrOptions)\n    ? getSpectatorDirectiveDefaultOptions<D, H>({ directive: typeOrOptions })\n    : getSpectatorDirectiveDefaultOptions(typeOrOptions);\n\n  const moduleMetadata = initialSpectatorDirectiveModule<D, H>(options);\n\n  beforeEach(() => {\n    addMatchers(customMatchers);\n    TestBed.configureTestingModule(moduleMetadata);\n    overrideModules(options);\n    overrideComponents(options);\n    overrideDirectives(options);\n    overridePipes(options);\n  });\n\n  return <HP>(template?: string, overrides?: SpectatorDirectiveOverrides<H, HP>) => {\n    const defaults: SpectatorDirectiveOverrides<H, HP> = {\n      hostProps: {} as any,\n      detectChanges: true,\n      providers: [],\n    };\n    const { detectChanges, hostProps, providers } = { ...defaults, ...overrides };\n\n    if (providers && providers.length) {\n      providers.forEach((provider: Provider) => {\n        TestBed.overrideProvider((provider as any).provide, provider as any);\n      });\n    }\n\n    TestBed.overrideModule(BrowserDynamicTestingModule, {}).overrideComponent(options.host, {\n      set: { template: template || options.template },\n    });\n\n    if (options.directiveProviders.length || options.directiveMocks.length) {\n      TestBed.overrideDirective(options.directive, {\n        set: { providers: [...options.directiveProviders, ...options.directiveMocks.map((p) => options.mockProvider(p))] },\n      });\n    }\n\n    const spectator = createSpectatorDirective(options, hostProps);\n\n    if (options.detectChanges && detectChanges) {\n      spectator.detectChanges();\n    }\n\n    return spectator;\n  };\n}\n\nfunction createSpectatorDirective<D, H, HP>(\n  options: Required<SpectatorDirectiveOptions<D, H>>,\n  hostProps?: HP,\n): SpectatorDirective<D, H & HP> {\n  const hostFixture = TestBed.createComponent(options.host);\n  const debugElement = hostFixture.debugElement.query(By.directive(options.directive)) || hostFixture.debugElement;\n  const debugNode = hostFixture.debugElement.queryAllNodes(nodeByDirective(options.directive))[0];\n\n  if (!debugNode) {\n    throw new Error(`Cannot find directive ${options.directive} in host template 😔`);\n  }\n\n  const hostComponent = setHostProps(hostFixture.componentRef, hostProps);\n  const directive = debugNode.injector.get(options.directive);\n\n  return new SpectatorDirective(hostComponent, hostFixture, hostFixture.debugElement, directive, debugElement.nativeElement);\n}\n","import { BaseSpectator } from '../base/base-spectator';\n\n/**\n * @publicApi\n */\nexport class SpectatorService<S> extends BaseSpectator {\n  constructor(public service: S) {\n    super();\n  }\n}\n","import { initialModule, ModuleMetadata } from '../base/initial-module';\n\nimport { SpectatorServiceOptions } from './options';\n\n/**\n * @internal\n */\nexport function initialServiceModule<S>(options: Required<SpectatorServiceOptions<S>>): ModuleMetadata {\n  const moduleMetadata = initialModule(options);\n\n  moduleMetadata.providers.push(options.service);\n\n  return moduleMetadata;\n}\n","import { Type } from '@angular/core';\n\nimport { getDefaultBaseOptions, BaseSpectatorOptions } from '../base/options';\nimport { merge } from '../internals/merge';\nimport { OptionalsRequired } from '../types';\n\nexport interface SpectatorServiceOptions<S = any> extends BaseSpectatorOptions {\n  service: Type<S>;\n}\n\nconst defaultServiceOptions: OptionalsRequired<SpectatorServiceOptions> = {\n  ...getDefaultBaseOptions(),\n};\n\n/**\n * @internal\n */\nexport function getDefaultServiceOptions<S>(overrides: SpectatorServiceOptions<S>): Required<SpectatorServiceOptions<S>> {\n  return merge(defaultServiceOptions, overrides) as Required<SpectatorServiceOptions<S>>;\n}\n","import { Provider, Type } from '@angular/core';\nimport { TestBed, TestBedStatic } from '@angular/core/testing';\n\nimport { BaseSpectatorOverrides } from '../base/options';\nimport { isType, doesServiceImplementsOnDestroy } from '../types';\n\nimport { initialServiceModule } from './initial-module';\nimport { getDefaultServiceOptions, SpectatorServiceOptions } from './options';\nimport { SpectatorService } from './spectator-service';\nimport { overrideModules } from '../spectator/create-factory';\n\n/**\n * @publicApi\n */\nexport type SpectatorServiceFactory<S> = (overrides?: SpectatorServiceOverrides<S>) => SpectatorService<S>;\n\n/**\n * @publicApi\n */\nexport interface SpectatorServiceOverrides<S> extends BaseSpectatorOverrides {}\n\n/**\n * @publicApi\n */\nexport function createServiceFactory<S>(typeOrOptions: Type<S> | SpectatorServiceOptions<S>): SpectatorServiceFactory<S> {\n  const service = isType(typeOrOptions) ? typeOrOptions : typeOrOptions.service;\n  const options = isType(typeOrOptions) ? getDefaultServiceOptions<S>({ service }) : getDefaultServiceOptions(typeOrOptions);\n\n  const moduleMetadata = initialServiceModule(options);\n\n  beforeEach(() => {\n    TestBed.configureTestingModule(moduleMetadata);\n    overrideModules(options);\n  });\n\n  afterEach(() => {\n    const testedService = (<{ inject<T>(token: Type<T>, notFoundValue?: T): T } & TestBedStatic>TestBed).inject<S>(service) as object;\n\n    if (doesServiceImplementsOnDestroy(testedService)) {\n      testedService.ngOnDestroy();\n    }\n  });\n\n  return (overrides?: SpectatorServiceOverrides<S>) => {\n    const defaults: SpectatorServiceOverrides<S> = { providers: [] };\n    const { providers } = { ...defaults, ...overrides };\n\n    if (providers && providers.length) {\n      providers.forEach((provider: Provider) => {\n        TestBed.overrideProvider((provider as any).provide, provider as any);\n      });\n    }\n\n    return new SpectatorService<S>(TestBed.inject(service));\n  };\n}\n","import { Router, Event } from '@angular/router';\n\nexport abstract class RouterStub extends Router {\n  public abstract emitRouterEvent(event: Event): void;\n  public abstract serializeUrl(): string;\n}\n\nexport function isRouterStub(router: Router): router is RouterStub {\n  return 'emitRouterEvent' in router;\n}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { Event, Router, UrlSegment } from '@angular/router';\n\nimport { Spectator } from '../spectator/spectator';\n\nimport { ActivatedRouteStub } from './activated-route-stub';\nimport { RouteOptions } from './route-options';\nimport { isRouterStub } from './router-stub';\n\n/**\n * @publicApi\n */\nexport class SpectatorRouting<C> extends Spectator<C> {\n  constructor(\n    fixture: ComponentFixture<any>,\n    debugElement: DebugElement,\n    instance: C,\n    public readonly router: Router,\n    public readonly activatedRouteStub?: ActivatedRouteStub,\n  ) {\n    super(fixture, debugElement, instance, debugElement.nativeElement);\n  }\n\n  /**\n   * Simulates a route navigation by updating the Params, QueryParams and Data observable streams.\n   */\n  public triggerNavigation(options?: RouteOptions): void {\n    if (!this.checkStubPresent()) {\n      return;\n    }\n\n    if (options && options.params) {\n      this.activatedRouteStub.setParams(options.params);\n    }\n\n    if (options && options.queryParams) {\n      this.activatedRouteStub.setQueryParams(options.queryParams);\n    }\n\n    if (options && options.data) {\n      this.activatedRouteStub.setAllData(options.data);\n    }\n\n    if (options && options.fragment) {\n      this.activatedRouteStub.setFragment(options.fragment);\n    }\n\n    this.triggerNavigationAndUpdate();\n  }\n\n  /**\n   * Updates the route params and triggers a route navigation.\n   */\n  public setRouteParam(name: string, value: string): void {\n    if (this.checkStubPresent()) {\n      this.activatedRouteStub.setParam(name, value);\n      this.triggerNavigationAndUpdate();\n    }\n  }\n\n  /**\n   * Updates the route query params and triggers a route navigation.\n   */\n  public setRouteQueryParam(name: string, value: string): void {\n    if (this.checkStubPresent()) {\n      this.activatedRouteStub.setQueryParam(name, value);\n      this.triggerNavigationAndUpdate();\n    }\n  }\n\n  /**\n   * Updates the route data and triggers a route navigation.\n   * The `value` is typed as `any` since the `Route#data` is a record with `any` values.\n   * There's no sense to make it generic until `Route#data` starts supporting generic types.\n   */\n  public setRouteData(name: string, value: any): void {\n    if (this.checkStubPresent()) {\n      this.activatedRouteStub.setData(name, value);\n      this.triggerNavigationAndUpdate();\n    }\n  }\n\n  /**\n   * Updates the route fragment and triggers a route navigation.\n   */\n  public setRouteFragment(fragment: string | null): void {\n    if (this.checkStubPresent()) {\n      this.activatedRouteStub.setFragment(fragment);\n      this.triggerNavigationAndUpdate();\n    }\n  }\n\n  /**\n   * Updates the route url and triggers a route navigation.\n   */\n  public setRouteUrl(url: UrlSegment[]): void {\n    if (this.checkStubPresent()) {\n      this.activatedRouteStub.setUrl(url);\n      this.triggerNavigationAndUpdate();\n    }\n  }\n\n  /**\n   * Emits a router event\n   */\n  public emitRouterEvent(event: Event): void {\n    if (!isRouterStub(this.router)) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        'No stub for Router present. Set Spectator option \"stubsEnabled\" to true if you want to use this ' +\n          'helper, or use Router navigation to trigger events.',\n      );\n\n      return;\n    }\n\n    this.router.emitRouterEvent(event);\n  }\n\n  private triggerNavigationAndUpdate(): void {\n    this.activatedRouteStub!.triggerNavigation();\n    this.detectChanges();\n  }\n\n  private checkStubPresent(): this is { readonly activatedRouteStub: ActivatedRouteStub } {\n    if (!this.activatedRouteStub) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        'No stub for ActivatedRoute present. Set Spectator option \"stubsEnabled\" to true if you want to use this ' +\n          'helper, or use Router to trigger navigation.',\n      );\n\n      return false;\n    }\n\n    return true;\n  }\n}\n","import { convertToParamMap, ActivatedRoute, ActivatedRouteSnapshot, Data, Params, ParamMap, UrlSegment } from '@angular/router';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { RouteOptions } from './route-options';\n\n/**\n * @publicApi\n *\n * Utility class for stubbing ActivatedRoute of @angular/router\n */\nexport class ActivatedRouteStub extends ActivatedRoute {\n  private testParams: Params = {};\n  private testQueryParams: Params = {};\n  private testData: Data = {};\n  private testFragment: string | null = null;\n  private testUrl: UrlSegment[] = [];\n  private testRoot: ActivatedRouteStub | null = null;\n  private testParent: ActivatedRouteStub | null = null;\n  private testFirstChild: ActivatedRouteStub | null = null;\n  private testChildren: ActivatedRouteStub[] | null = null;\n\n  private readonly paramsSubject = new ReplaySubject<Params>(1);\n  private readonly queryParamsSubject = new ReplaySubject<Params>(1);\n  private readonly dataSubject = new ReplaySubject<Data>(1);\n  private readonly fragmentSubject = new ReplaySubject<string | null>(1);\n  private readonly urlSubject = new ReplaySubject<UrlSegment[]>(1);\n\n  constructor(options?: RouteOptions) {\n    super();\n\n    if (options) {\n      this.testParams = options.params || {};\n      this.testQueryParams = options.queryParams || {};\n      this.testData = options.data || {};\n      this.testFragment = options.fragment || null;\n      this.testUrl = options.url || [];\n      this.testRoot = options.root || null;\n      this.testParent = options.parent || null;\n      this.testFirstChild = options.firstChild || null;\n      this.testChildren = options.children || null;\n    }\n\n    this.params = this.paramsSubject.asObservable();\n    this.queryParams = this.queryParamsSubject.asObservable();\n    this.data = this.dataSubject.asObservable();\n    this.fragment = this.fragmentSubject.asObservable() as Observable<string>;\n    this.url = this.urlSubject.asObservable() as Observable<UrlSegment[]>;\n\n    this.snapshot = this.buildSnapshot();\n\n    this.triggerNavigation();\n  }\n\n  public get paramMap(): Observable<ParamMap> {\n    return this.paramsSubject.asObservable().pipe(map((params) => convertToParamMap(params)));\n  }\n\n  public snapshot: ActivatedRouteSnapshot;\n\n  public setParams(params: Params): void {\n    this.testParams = params;\n    this.snapshot = this.buildSnapshot();\n  }\n\n  public setParam(name: string, value: string): void {\n    this.testParams = { ...this.testParams, [name]: value };\n    this.snapshot = this.buildSnapshot();\n  }\n\n  public setQueryParams(queryParams: Params): void {\n    this.testQueryParams = queryParams;\n    this.snapshot = this.buildSnapshot();\n  }\n\n  public setQueryParam(name: string, value: string): void {\n    this.testQueryParams = { ...this.testQueryParams, [name]: value };\n    this.snapshot = this.buildSnapshot();\n  }\n\n  public setAllData(data: Data): void {\n    this.testData = data;\n    this.snapshot = this.buildSnapshot();\n  }\n\n  public setData(name: string, value: any): void {\n    this.testData = { ...this.testData, [name]: value };\n    this.snapshot = this.buildSnapshot();\n  }\n\n  public setFragment(fragment: string | null): void {\n    this.testFragment = fragment;\n    this.snapshot = this.buildSnapshot();\n  }\n\n  public setUrl(url: UrlSegment[]): void {\n    this.testUrl = url;\n    this.snapshot = this.buildSnapshot();\n  }\n\n  public get root(): ActivatedRouteStub {\n    return this.testRoot || this;\n  }\n\n  public get parent(): ActivatedRouteStub | null {\n    return this.testParent || null;\n  }\n\n  public get children(): ActivatedRouteStub[] {\n    return this.testChildren || [this];\n  }\n\n  public get firstChild(): ActivatedRouteStub | null {\n    return this.testFirstChild || null;\n  }\n\n  /**\n   * Simulates a route navigation by updating the Params, QueryParams and Data observable streams.\n   */\n  public triggerNavigation(): void {\n    this.paramsSubject.next(this.testParams);\n    this.queryParamsSubject.next(this.testQueryParams);\n    this.dataSubject.next(this.testData);\n    this.fragmentSubject.next(this.testFragment);\n    this.urlSubject.next(this.testUrl);\n  }\n\n  public toString(): string {\n    return 'activatedRouteStub';\n  }\n\n  private buildSnapshot(): ActivatedRouteSnapshot {\n    const snapshot = new ActivatedRouteSnapshot();\n\n    snapshot.params = this.testParams;\n    snapshot.queryParams = this.testQueryParams;\n    snapshot.data = this.testData;\n    snapshot.fragment = this.testFragment!;\n    snapshot.url = this.testUrl;\n\n    return snapshot;\n  }\n}\n","import { ActivatedRoute, Event, Router } from '@angular/router';\nimport { RouterTestingModule } from '@angular/router/testing';\nimport { Subject } from 'rxjs';\n\nimport { ModuleMetadata } from '../base/initial-module';\nimport { initialSpectatorModule } from '../spectator/initial-module';\n\nimport { ActivatedRouteStub } from './activated-route-stub';\nimport { SpectatorRoutingOptions } from './options';\nimport { RouterStub } from './router-stub';\n\n/**\n * @internal\n */\nexport function initialRoutingModule<S>(options: Required<SpectatorRoutingOptions<S>>): ModuleMetadata {\n  const moduleMetadata = initialSpectatorModule(options);\n\n  if (options.stubsEnabled) {\n    moduleMetadata.imports.push(RouterTestingModule);\n    moduleMetadata.providers.push(\n      options.mockProvider(RouterStub, {\n        events: new Subject<Event>(),\n        emitRouterEvent(event: Event): void {\n          this.events.next(event);\n        },\n        serializeUrl(): string {\n          return '/';\n        },\n      }),\n      {\n        provide: Router,\n        useExisting: RouterStub,\n      },\n    );\n\n    moduleMetadata.providers.push(\n      {\n        provide: ActivatedRouteStub,\n        useValue: new ActivatedRouteStub({\n          params: options.params,\n          queryParams: options.queryParams,\n          data: options.data,\n        }),\n      },\n      {\n        provide: ActivatedRoute,\n        useExisting: ActivatedRouteStub,\n      },\n    );\n  } else {\n    moduleMetadata.imports.push(RouterTestingModule.withRoutes(options.routes));\n  }\n\n  return moduleMetadata;\n}\n","import { Routes } from '@angular/router';\n\nimport { merge } from '../internals/merge';\nimport { getSpectatorDefaultOptions, SpectatorOptions } from '../spectator/options';\nimport { OptionalsRequired } from '../types';\n\nimport { RouteOptions } from './route-options';\n\nexport type SpectatorRoutingOptions<C> = SpectatorOptions<C> &\n  RouteOptions & {\n    stubsEnabled?: boolean;\n    routes?: Routes;\n  };\n\nconst defaultRoutingOptions: OptionalsRequired<SpectatorRoutingOptions<any>> = {\n  ...getSpectatorDefaultOptions(),\n  params: {},\n  queryParams: {},\n  data: {},\n  fragment: null,\n  stubsEnabled: true,\n  routes: [],\n  url: [],\n  root: null,\n  parent: null,\n  children: null,\n  firstChild: null,\n};\n\n/**\n * @internal\n */\nexport function getRoutingDefaultOptions<S>(overrides: SpectatorRoutingOptions<S>): Required<SpectatorRoutingOptions<S>> {\n  return merge(defaultRoutingOptions, overrides);\n}\n","import { NgZone, Provider, Type } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { addMatchers } from '../core';\nimport { setProps } from '../internals/query';\nimport * as customMatchers from '../matchers';\nimport {\n  overrideComponentIfProviderOverridesSpecified,\n  overrideComponentImports,\n  overrideComponents,\n  overrideDirectives,\n  overrideModules,\n  overridePipes,\n  SpectatorOverrides,\n} from '../spectator/create-factory';\nimport { InferInputSignals, isType } from '../types';\n\nimport { SpyObject } from '../mock';\nimport { ActivatedRouteStub } from './activated-route-stub';\nimport { initialRoutingModule } from './initial-module';\nimport { getRoutingDefaultOptions, SpectatorRoutingOptions } from './options';\nimport { RouteOptions } from './route-options';\nimport { SpectatorRouting } from './spectator-routing';\n\n/**\n * @publicApi\n */\nexport type SpectatorRoutingOverrides<C> = SpectatorOverrides<C> & RouteOptions;\n\n/**\n * @publicApi\n */\nexport type SpectatorRoutingFactory<C> = (options?: SpectatorRoutingOverrides<C>) => SpectatorRouting<C>;\n\n/**\n * @publicApi\n */\nexport function createRoutingFactory<C>(typeOrOptions: Type<C> | SpectatorRoutingOptions<C>): SpectatorRoutingFactory<C> {\n  const options = isType(typeOrOptions)\n    ? getRoutingDefaultOptions<C>({ component: typeOrOptions })\n    : getRoutingDefaultOptions(typeOrOptions);\n\n  const moduleMetadata = initialRoutingModule<C>(options);\n\n  beforeEach(() => {\n    addMatchers(customMatchers);\n    TestBed.configureTestingModule(moduleMetadata);\n\n    overrideModules(options);\n    overrideComponents(options);\n    overrideDirectives(options);\n    overridePipes(options);\n\n    overrideComponentIfProviderOverridesSpecified(options);\n    overrideComponentImports(options);\n  });\n\n  return (overrides?: SpectatorRoutingOverrides<C>) => {\n    const defaults: SpectatorRoutingOverrides<C> = {\n      props: {},\n      detectChanges: true,\n      providers: [],\n    };\n\n    const { detectChanges, props, providers } = { ...defaults, ...overrides };\n\n    if (providers && providers.length) {\n      providers.forEach((provider: Provider) => {\n        TestBed.overrideProvider((provider as any).provide, provider as any);\n      });\n    }\n\n    const { params, queryParams, data, fragment, url, root, parent, children, firstChild } = { ...options, ...overrides };\n\n    TestBed.overrideProvider(ActivatedRoute, {\n      useValue: new ActivatedRouteStub({ params, queryParams, data, fragment, url, root, parent, children, firstChild }),\n    });\n\n    const ngZone = TestBed.inject(NgZone);\n\n    return ngZone.run(() => {\n      const spectator = createSpectatorRouting(options, props);\n\n      spectator.router.initialNavigation();\n\n      if (options.detectChanges && detectChanges) {\n        spectator.detectChanges();\n      }\n\n      return spectator;\n    });\n  };\n}\n\nfunction createSpectatorRouting<C>(options: Required<SpectatorRoutingOptions<C>>, props?: InferInputSignals<C>): SpectatorRouting<C> {\n  const fixture = TestBed.createComponent(options.component, { bindings: options.bindings });\n  const debugElement = fixture.debugElement;\n\n  const component = setProps(fixture.componentRef, props);\n\n  return new SpectatorRouting(\n    fixture,\n    debugElement,\n    component,\n    TestBed.inject(Router),\n    TestBed.inject(ActivatedRoute) as SpyObject<ActivatedRouteStub>,\n  );\n}\n","import { HttpClient } from '@angular/common/http';\nimport { HttpTestingController, TestRequest } from '@angular/common/http/testing';\n\nimport { BaseSpectator } from '../base/base-spectator';\n\n/**\n * @publicApi\n */\nexport enum HttpMethod {\n  GET = 'GET',\n  POST = 'POST',\n  DELETE = 'DELETE',\n  PUT = 'PUT',\n  PATCH = 'PATCH',\n  HEAD = 'HEAD',\n  JSONP = 'JSONP',\n  OPTIONS = 'OPTIONS',\n}\n\nexport interface HttpExpect {\n  url: string;\n  method: HttpMethod;\n}\n\n/**\n * @publicApi\n */\nexport class SpectatorHttp<S> extends BaseSpectator {\n  constructor(\n    public service: S,\n    public httpClient: HttpClient,\n    public controller: HttpTestingController,\n  ) {\n    super();\n\n    // small workaround to prevent issues if destructuring SpectatorHttp, which was common in Spectator 3\n    // remove in v5?\n    this.expectOne = this.expectOne.bind(this);\n    this.expectConcurrent = this.expectConcurrent.bind(this);\n  }\n\n  public expectOne(url: string, method: HttpMethod): TestRequest {\n    expect(true).toBe(true); // workaround to avoid `Spec has no expectations` https://github.com/NetanelBasal/spectator/issues/75\n\n    const req = this.controller.expectOne({\n      url,\n      method,\n    });\n\n    // assert that there are no outstanding requests.\n    this.controller.verify();\n\n    return req;\n  }\n\n  public expectConcurrent(expectations: HttpExpect[]): TestRequest[] {\n    const requests = expectations.map((expectation: HttpExpect) => {\n      return this.controller.expectOne({\n        url: expectation.url,\n        method: expectation.method,\n      });\n    });\n\n    this.controller.verify();\n\n    return requests;\n  }\n\n  public flushAll(requests: TestRequest[], args: any[]): void {\n    requests.forEach((request: TestRequest, idx: number) => {\n      request.flush(args[idx]);\n    });\n  }\n}\n","import { HttpClientTestingModule } from '@angular/common/http/testing';\n\nimport { initialModule, ModuleMetadata } from '../base/initial-module';\n\nimport { SpectatorHttpOptions } from './options';\n\n/**\n * @internal\n */\nexport function initialHttpModule<S>(options: Required<SpectatorHttpOptions<S>>): ModuleMetadata {\n  const moduleMetadata = initialModule(options);\n\n  moduleMetadata.providers.push(options.service);\n  moduleMetadata.imports.push(HttpClientTestingModule);\n\n  return moduleMetadata;\n}\n","import { Type } from '@angular/core';\n\nimport { getDefaultBaseOptions, BaseSpectatorOptions } from '../base/options';\nimport { merge } from '../internals/merge';\nimport { OptionalsRequired } from '../types';\n\nexport interface SpectatorHttpOptions<S> extends BaseSpectatorOptions {\n  service: Type<S>;\n}\n\nconst defaultHttpOptions: OptionalsRequired<SpectatorHttpOptions<any>> = {\n  ...getDefaultBaseOptions(),\n};\n\n/**\n * @internal\n */\nexport function getDefaultHttpOptions<S>(overrides: SpectatorHttpOptions<S>): Required<SpectatorHttpOptions<S>> {\n  return merge(defaultHttpOptions, overrides);\n}\n","import { HttpClient } from '@angular/common/http';\nimport { HttpTestingController } from '@angular/common/http/testing';\nimport { Provider, Type } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\n\nimport { BaseSpectatorOverrides } from '../base/options';\nimport { addMatchers } from '../core';\nimport * as customMatchers from '../matchers';\nimport { isType } from '../types';\n\nimport { initialHttpModule } from './initial-module';\nimport { getDefaultHttpOptions, SpectatorHttpOptions } from './options';\nimport { SpectatorHttp } from './spectator-http';\nimport { overrideModules } from '../spectator/create-factory';\n\n/**\n * @publicApi\n */\nexport type SpectatorHttpFactory<S> = (overrides?: CreateHttpOverrides<S>) => SpectatorHttp<S>;\n\n/**\n * @publicApi\n */\nexport interface CreateHttpOverrides<S> extends BaseSpectatorOverrides {}\n\n/**\n * @publicApi\n */\nexport function createHttpFactory<S>(typeOrOptions: Type<S> | SpectatorHttpOptions<S>): SpectatorHttpFactory<S> {\n  const service = isType(typeOrOptions) ? typeOrOptions : typeOrOptions.service;\n  const options = isType(typeOrOptions) ? getDefaultHttpOptions<S>({ service }) : getDefaultHttpOptions(typeOrOptions);\n  const moduleMetadata = initialHttpModule(options);\n\n  beforeEach(() => {\n    addMatchers(customMatchers);\n    TestBed.configureTestingModule(moduleMetadata);\n    overrideModules(options);\n  });\n\n  afterEach(() => {\n    TestBed.inject(HttpTestingController).verify();\n  });\n\n  return (overrides?: CreateHttpOverrides<S>) => {\n    const defaults: CreateHttpOverrides<S> = { providers: [] };\n    const { providers } = { ...defaults, ...overrides };\n\n    if (providers && providers.length) {\n      providers.forEach((provider: Provider) => {\n        TestBed.overrideProvider((provider as any).provide, provider as any);\n      });\n    }\n\n    return new SpectatorHttp<S>(TestBed.inject(service), TestBed.inject(HttpClient), TestBed.inject(HttpTestingController));\n  };\n}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\n\nimport { BaseSpectator } from '../base/base-spectator';\nimport { setHostProps } from '../internals/query';\nimport { HostComponent } from '../spectator-host/host-component';\n\n/**\n * @publicApi\n */\nexport class SpectatorPipe<P, H = HostComponent> extends BaseSpectator {\n  constructor(\n    public hostComponent: H,\n    public fixture: ComponentFixture<any>,\n    public debugElement: DebugElement,\n    public element: Element,\n  ) {\n    super();\n  }\n\n  public detectChanges(): void {\n    this.fixture.detectChanges();\n  }\n\n  public setHostInput<K extends keyof H>(input: H extends HostComponent ? any : Partial<H>): void;\n  public setHostInput<K extends keyof H>(input: H extends HostComponent ? any : K, inputValue: H extends HostComponent ? any : H[K]): void;\n  public setHostInput(input: any, value?: any): void {\n    setHostProps(this.fixture.componentRef, input, value);\n    this.detectChanges();\n  }\n}\n","import { initialModule, ModuleMetadata } from '../base/initial-module';\nimport { declareInModule } from '../utils';\n\nimport { SpectatorPipeOptions } from './options';\n\n/**\n * @internal\n */\nexport function initialSpectatorPipeModule<D, H>(options: Required<SpectatorPipeOptions<D, H>>): ModuleMetadata {\n  const moduleMetadata = initialModule(options);\n\n  declareInModule(moduleMetadata, options.pipe);\n  moduleMetadata.declarations.push(options.host);\n\n  return moduleMetadata;\n}\n","import { Type } from '@angular/core';\n\nimport { merge } from '../internals/merge';\nimport { OptionalsRequired } from '../types';\nimport { BaseSpectatorOptions, getDefaultBaseOptions } from '../base/options';\nimport { HostComponent } from '../spectator-host/host-component';\n\n/**\n * @publicApi\n */\nexport interface SpectatorPipeOptions<P, H> extends BaseSpectatorOptions {\n  pipe: Type<P>;\n  host?: Type<H>;\n  detectChanges?: boolean;\n  template?: string;\n}\n\nconst defaultSpectatorPipeOptions: OptionalsRequired<SpectatorPipeOptions<any, any>> = {\n  ...getDefaultBaseOptions(),\n  host: HostComponent,\n  detectChanges: true,\n  template: '',\n};\n\n/**\n * @internal\n */\nexport function getSpectatorPipeDefaultOptions<P, H>(overrides?: SpectatorPipeOptions<P, H>): Required<SpectatorPipeOptions<P, H>> {\n  return merge(defaultSpectatorPipeOptions, overrides);\n}\n","import { Provider, Type } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\nimport { BrowserDynamicTestingModule } from '@angular/platform-browser-dynamic/testing';\n\nimport { BaseSpectatorOverrides } from '../base/options';\nimport { addMatchers } from '../core';\nimport { setHostProps } from '../internals/query';\nimport * as customMatchers from '../matchers';\nimport { HostComponent } from '../spectator-host/host-component';\nimport { isType } from '../types';\n\nimport { overrideModules, overridePipes } from '../spectator/create-factory';\nimport { initialSpectatorPipeModule } from './initial-module';\nimport { SpectatorPipeOptions, getSpectatorPipeDefaultOptions } from './options';\nimport { SpectatorPipe } from './spectator-pipe';\n\n/**\n * @publicApi\n */\nexport type SpectatorPipeFactory<P, H> = <HP>(\n  templateOrOverrides?: string | SpectatorPipeOverrides<H, HP>,\n  overrides?: SpectatorPipeOverrides<H, HP>,\n) => SpectatorPipe<P, H & (HostComponent extends H ? HP : unknown)>;\n\n/**\n * @publicApi\n */\nexport interface SpectatorPipeOverrides<H, HP> extends BaseSpectatorOverrides {\n  detectChanges?: boolean;\n  hostProps?: HostComponent extends H ? HP : Partial<H>;\n}\n\n/**\n * @publicApi\n */\nexport function createPipeFactory<P, H = HostComponent>(typeOrOptions: Type<P> | SpectatorPipeOptions<P, H>): SpectatorPipeFactory<P, H> {\n  const options = isType(typeOrOptions)\n    ? getSpectatorPipeDefaultOptions<P, H>({ pipe: typeOrOptions })\n    : getSpectatorPipeDefaultOptions(typeOrOptions);\n\n  const moduleMetadata = initialSpectatorPipeModule<P, H>(options);\n\n  beforeEach(() => {\n    addMatchers(customMatchers);\n    TestBed.configureTestingModule(moduleMetadata);\n    overrideModules(options);\n    overridePipes(options);\n  });\n\n  return <HP>(templateOrOverrides?: string | SpectatorPipeOverrides<H, HP>, overrides?: SpectatorPipeOverrides<H, HP>) => {\n    const defaults: SpectatorPipeOverrides<H, HP> = {\n      hostProps: {} as any,\n      detectChanges: true,\n      providers: [],\n    };\n    const resolvedOverrides = typeof templateOrOverrides === 'object' ? templateOrOverrides : overrides;\n    const { detectChanges, hostProps, providers } = { ...defaults, ...resolvedOverrides };\n    const template = typeof templateOrOverrides === 'string' ? templateOrOverrides : options.template;\n\n    if (providers && providers.length) {\n      providers.forEach((provider: Provider) => {\n        TestBed.overrideProvider((provider as any).provide, provider as any);\n      });\n    }\n\n    if (template) {\n      TestBed.overrideModule(BrowserDynamicTestingModule, {}).overrideComponent(options.host, {\n        set: { template },\n      });\n    }\n\n    const spectator = createSpectatorPipe(options, hostProps);\n\n    if (options.detectChanges && detectChanges) {\n      spectator.detectChanges();\n    }\n\n    return spectator;\n  };\n}\n\nfunction createSpectatorPipe<P, H, HP>(options: Required<SpectatorPipeOptions<P, H>>, hostProps?: HP): SpectatorPipe<P, H & HP> {\n  const hostFixture = TestBed.createComponent(options.host);\n  const debugElement = hostFixture.debugElement;\n\n  const hostComponent = setHostProps(hostFixture.componentRef, hostProps);\n\n  return new SpectatorPipe(hostComponent, hostFixture, hostFixture.debugElement, debugElement.nativeElement);\n}\n","import { BaseSpectator } from '../base/base-spectator';\n\n/**\n * @publicApi\n */\nexport class SpectatorInjectionContext extends BaseSpectator {\n  constructor() {\n    super();\n  }\n}\n","import { initialModule, ModuleMetadata } from '../base/initial-module';\nimport { FullInjectionContextOptions } from './options';\n\n/**\n * @internal\n */\nexport function initialInjectionContextModule<F>(options: FullInjectionContextOptions): ModuleMetadata {\n  const moduleMetadata = initialModule(options);\n\n  return moduleMetadata;\n}\n","import { BaseSpectatorOptions, getDefaultBaseOptions } from '../base/options';\nimport { merge } from '../internals/merge';\nimport { AtLeastOneRequired, OptionalsRequired } from '../types';\n\nexport type SpectatorInjectionContextOptions = AtLeastOneRequired<\n  Pick<BaseSpectatorOptions, 'imports' | 'mockProvider' | 'mocks' | 'providers'>\n>;\n\nconst defaultFunctionOptions: OptionalsRequired<SpectatorInjectionContextOptions> = {\n  ...getDefaultBaseOptions(),\n};\n\n/**\n * @internal\n */\nexport type FullInjectionContextOptions = Required<SpectatorInjectionContextOptions> & Required<BaseSpectatorOptions>;\n\n/**\n * @internal\n */\nexport function getDefaultFunctionOptions(overrides: SpectatorInjectionContextOptions): FullInjectionContextOptions {\n  return merge(defaultFunctionOptions, overrides) as FullInjectionContextOptions;\n}\n","import { TestBed } from '@angular/core/testing';\nimport { initialInjectionContextModule as initialInjectionContextModule } from './initial-module';\nimport { getDefaultFunctionOptions, SpectatorInjectionContextOptions } from './options';\nimport { overrideModules } from '../spectator/create-factory';\nimport { BaseSpectatorOverrides } from '../base/options';\nimport { SpectatorInjectionContext } from './spectator-injection-context';\nimport { Provider } from '@angular/core';\n\n/**\n * @publicApi\n */\nexport type SpectatorInjectionContextFactory = (overrides?: SpectatorInjectionContextOverrides) => SpectatorInjectionContext;\n\n/**\n * @publicApi\n */\nexport interface SpectatorInjectionContextOverrides extends BaseSpectatorOverrides {}\n\n/**\n * @publicApi\n */\nexport function createInjectionContextFactory(options: SpectatorInjectionContextOptions): SpectatorInjectionContextFactory {\n  const fullOptions = getDefaultFunctionOptions(options);\n\n  const moduleMetadata = initialInjectionContextModule(fullOptions);\n\n  beforeEach(() => {\n    TestBed.configureTestingModule(moduleMetadata);\n    overrideModules(fullOptions);\n  });\n\n  return (overrides?: SpectatorInjectionContextOverrides) => {\n    const defaults: SpectatorInjectionContextOverrides = { providers: [] };\n    const { providers } = { ...defaults, ...overrides };\n\n    if (providers && providers.length) {\n      providers.forEach((provider: Provider) => {\n        TestBed.overrideProvider((provider as any).provide, provider as any);\n      });\n    }\n\n    return new SpectatorInjectionContext();\n  };\n}\n","/// <reference path=\"./lib/matchers-types.ts\" preserve=\"true\" />\nexport { Spectator } from './lib/spectator/spectator';\nexport { SpectatorOptions } from './lib/spectator/options';\nexport { createComponentFactory, SpectatorFactory, SpectatorOverrides } from './lib/spectator/create-factory';\nexport { initialSpectatorModule } from './lib/spectator/initial-module';\n\nexport { SpectatorHost } from './lib/spectator-host/spectator-host';\nexport { SpectatorHostOptions } from './lib/spectator-host/options';\nexport { createHostFactory, SpectatorHostFactory, SpectatorHostOverrides } from './lib/spectator-host/create-factory';\nexport { initialSpectatorWithHostModule } from './lib/spectator-host/initial-module';\nexport { HostComponent, HostModule } from './lib/spectator-host/host-component';\n\nexport { SpectatorDirective } from './lib/spectator-directive/spectator-directive';\nexport { SpectatorDirectiveOptions } from './lib/spectator-directive/options';\nexport { createDirectiveFactory, SpectatorDirectiveFactory, SpectatorDirectiveOverrides } from './lib/spectator-directive/create-factory';\nexport { initialSpectatorDirectiveModule } from './lib/spectator-directive/initial-module';\n\nexport { SpectatorService } from './lib/spectator-service/spectator-service';\nexport { SpectatorServiceOptions } from './lib/spectator-service/options';\nexport { SpectatorServiceFactory, createServiceFactory, SpectatorServiceOverrides } from './lib/spectator-service/create-factory';\n\nexport { SpectatorRouting } from './lib/spectator-routing/spectator-routing';\nexport { SpectatorRoutingOptions } from './lib/spectator-routing/options';\nexport { SpectatorRoutingFactory, createRoutingFactory, SpectatorRoutingOverrides } from './lib/spectator-routing/create-factory';\nexport { ActivatedRouteStub } from './lib/spectator-routing/activated-route-stub';\n\nexport { SpectatorHttp, HttpMethod } from './lib/spectator-http/spectator-http';\nexport { SpectatorHttpOptions } from './lib/spectator-http/options';\nexport { SpectatorHttpFactory, createHttpFactory, CreateHttpOverrides } from './lib/spectator-http/create-factory';\n\nexport { SpectatorPipe } from './lib/spectator-pipe/spectator-pipe';\nexport { SpectatorPipeOptions } from './lib/spectator-pipe/options';\nexport { createPipeFactory, SpectatorPipeFactory, SpectatorPipeOverrides } from './lib/spectator-pipe/create-factory';\nexport { initialSpectatorPipeModule } from './lib/spectator-pipe/initial-module';\n\nexport { SpectatorInjectionContext } from './lib/spectator-injection-context/spectator-injection-context';\nexport { SpectatorInjectionContextOptions } from './lib/spectator-injection-context/options';\nexport {\n  createInjectionContextFactory,\n  SpectatorInjectionContextFactory,\n  SpectatorInjectionContextOverrides,\n} from './lib/spectator-injection-context/create-factory';\nexport { initialInjectionContextModule } from './lib/spectator-injection-context/initial-module';\n\nexport * from './lib/dom-selectors';\nexport * from './lib/matchers';\nexport * from './lib/mock';\nexport * from './lib/token';\nexport * from './lib/types';\nexport { typeInElement } from './lib/type-in-element';\nexport { defineGlobalsInjections } from './lib/globals-injections';\nexport { dispatchEvent, dispatchFakeEvent, dispatchKeyboardEvent, dispatchMouseEvent, dispatchTouchEvent } from './lib/dispatch-events';\nexport { createFakeEvent, createKeyboardEvent, createMouseEvent, createTouchEvent } from './lib/event-creators';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["DOMQueries"],"mappings":"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"}