ng-mocks 13.4.0 → 13.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/examples/MockBuilder/spec.components.fixtures.ts +4 -4
- package/examples/MockBuilder/spec.modules.fixtures.ts +6 -6
- package/examples/MockBuilder/test.deep.spec.ts +9 -8
- package/examples/MockBuilder/test.ng-mocks.spec.ts +9 -8
- package/examples/MockBuilder/test.promise.spec.ts +6 -6
- package/examples/MockComponent/test.spec.ts +3 -2
- package/examples/MockDirective-Attribute/test.spec.ts +4 -3
- package/examples/MockDirective-Structural/test.spec.ts +23 -16
- package/examples/MockForms/test.spec.ts +2 -3
- package/examples/MockInstance/test.spec.ts +2 -1
- package/examples/MockModule/test.spec.ts +5 -4
- package/examples/MockObservable/test.spec.ts +3 -2
- package/examples/MockPipe/test.spec.ts +25 -9
- package/examples/MockProvider/test.spec.ts +1 -0
- package/examples/MockReactiveForms/test.spec.ts +3 -4
- package/examples/MockRender/test.spec.ts +5 -6
- package/examples/MockSanitizer/test.spec.ts +1 -0
- package/examples/MockViewChild/test.spec.ts +1 -0
- package/examples/TestAttributeDirective/test.spec.ts +3 -2
- package/examples/TestDirectiveLetOf/dynamic.spec.ts +1 -0
- package/examples/TestDirectiveLetOf/static.spec.ts +1 -0
- package/examples/TestHttpInterceptor/test.spec.ts +3 -2
- package/examples/TestHttpRequest/test.spec.ts +2 -1
- package/examples/TestLazyModule/test.spec.ts +1 -0
- package/examples/TestLifecycleHooks/fixtures.ts +1 -1
- package/examples/TestLifecycleHooks/test.spec.ts +1 -0
- package/examples/TestMultiToken/test.spec.ts +1 -0
- package/examples/TestPipe/test.spec.ts +3 -2
- package/examples/TestProvider/test.spec.ts +1 -0
- package/examples/TestProviderInComponent/test.spec.ts +2 -1
- package/examples/TestProviderInDirective/test.spec.ts +3 -2
- package/examples/TestProviderWithDependencies/test.spec.ts +1 -0
- package/examples/TestProviderWithUseClass/test.spec.ts +1 -0
- package/examples/TestProviderWithUseExisting/test.spec.ts +1 -0
- package/examples/TestProviderWithUseFactory/test.spec.ts +1 -0
- package/examples/TestProviderWithUseValue/test.spec.ts +1 -0
- package/examples/TestRoute/test.spec.ts +1 -0
- package/examples/TestRoutingGuard/test.spec.ts +5 -4
- package/examples/TestRoutingResolver/test.spec.ts +2 -1
- package/examples/TestStructuralDirective/test.spec.ts +1 -0
- package/examples/TestStructuralDirectiveWithContext/test.spec.ts +1 -0
- package/examples/TestTemplateRefByDirective/test.spec.ts +1 -0
- package/examples/TestTemplateRefById/test.spec.ts +1 -0
- package/examples/TestTemplateRefByRender/test.spec.ts +1 -0
- package/examples/TestToken/test.spec.ts +1 -0
- package/examples/TestViewChild/test.spec.ts +1 -0
- package/examples/main/test.spec.ts +1 -2
- package/examples/ngMocksFaster/test.spec.ts +1 -2
- package/examples/ngMocksGuts/test.spec.ts +2 -1
- package/examples/readme/builder.spec.ts +2 -1
- package/examples/readme/classic.spec.ts +2 -3
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/ng-mocks.d.ts +2449 -0
- package/package.json +13 -7
- package/index.d.ts +0 -37
- package/lib/common/core.config.d.ts +0 -10
- package/lib/common/core.define-property.d.ts +0 -2
- package/lib/common/core.form.d.ts +0 -12
- package/lib/common/core.helpers.d.ts +0 -12
- package/lib/common/core.injector.d.ts +0 -3
- package/lib/common/core.reflect.body-catch.d.ts +0 -2
- package/lib/common/core.reflect.directive-resolve.d.ts +0 -3
- package/lib/common/core.reflect.jit.d.ts +0 -3
- package/lib/common/core.reflect.meta.d.ts +0 -2
- package/lib/common/core.reflect.module-resolve.d.ts +0 -3
- package/lib/common/core.reflect.pipe-resolve.d.ts +0 -3
- package/lib/common/core.reflect.provided-in.d.ts +0 -3
- package/lib/common/core.tokens.d.ts +0 -9
- package/lib/common/core.types.d.ts +0 -10
- package/lib/common/decorate.inputs.d.ts +0 -2
- package/lib/common/decorate.mock.d.ts +0 -3
- package/lib/common/decorate.outputs.d.ts +0 -2
- package/lib/common/decorate.queries.d.ts +0 -5
- package/lib/common/error.empty-def.d.ts +0 -2
- package/lib/common/error.jest-mock.d.ts +0 -2
- package/lib/common/error.missing-decorators.d.ts +0 -2
- package/lib/common/func.get-global.d.ts +0 -2
- package/lib/common/func.get-mocked-ng-def-of.d.ts +0 -35
- package/lib/common/func.get-name.d.ts +0 -2
- package/lib/common/func.get-provider.d.ts +0 -2
- package/lib/common/func.get-source-of-mock.d.ts +0 -35
- package/lib/common/func.import-exists.d.ts +0 -2
- package/lib/common/func.is-jest-mock.d.ts +0 -2
- package/lib/common/func.is-mock-control-value-accessor.d.ts +0 -5
- package/lib/common/func.is-mock-ng-def.d.ts +0 -10
- package/lib/common/func.is-mock-of.d.ts +0 -36
- package/lib/common/func.is-mock-validator.d.ts +0 -5
- package/lib/common/func.is-mock.d.ts +0 -8
- package/lib/common/func.is-mocked-ng-def-of.d.ts +0 -36
- package/lib/common/func.is-ng-def.d.ts +0 -44
- package/lib/common/func.is-ng-injection-token.d.ts +0 -7
- package/lib/common/func.is-ng-module-def-with-providers.d.ts +0 -7
- package/lib/common/func.is-ng-type.d.ts +0 -2
- package/lib/common/jit-reflector.d.ts +0 -15
- package/lib/common/mock-control-value-accessor-proxy.d.ts +0 -26
- package/lib/common/mock-control-value-accessor.d.ts +0 -45
- package/lib/common/mock.d.ts +0 -20
- package/lib/common/ng-mocks-global-overrides.d.ts +0 -1
- package/lib/common/ng-mocks-stack.d.ts +0 -16
- package/lib/common/ng-mocks-universe.d.ts +0 -25
- package/lib/mock/clone-providers.d.ts +0 -7
- package/lib/mock/decorate-declaration.d.ts +0 -12
- package/lib/mock/get-mock.d.ts +0 -2
- package/lib/mock/to-existing-provider.d.ts +0 -6
- package/lib/mock/to-factory-provider.d.ts +0 -7
- package/lib/mock-builder/func.extract-tokens.d.ts +0 -8
- package/lib/mock-builder/mock-builder-stash.d.ts +0 -5
- package/lib/mock-builder/mock-builder.d.ts +0 -9
- package/lib/mock-builder/mock-builder.performance.d.ts +0 -9
- package/lib/mock-builder/mock-builder.promise.d.ts +0 -36
- package/lib/mock-builder/performance/are-equal-config-params.d.ts +0 -2
- package/lib/mock-builder/performance/are-equal-maps.d.ts +0 -2
- package/lib/mock-builder/performance/are-equal-providers.d.ts +0 -2
- package/lib/mock-builder/performance/are-equal-sets.d.ts +0 -2
- package/lib/mock-builder/performance/equal-render-configs.d.ts +0 -2
- package/lib/mock-builder/performance/equal-render-defs.d.ts +0 -2
- package/lib/mock-builder/performance/equal-variables.d.ts +0 -2
- package/lib/mock-builder/performance/get-empty-config.d.ts +0 -12
- package/lib/mock-builder/performance/required-metadata.d.ts +0 -7
- package/lib/mock-builder/promise/add-def-to-root-provider-parameters.d.ts +0 -3
- package/lib/mock-builder/promise/add-missing-definition.d.ts +0 -2
- package/lib/mock-builder/promise/add-missing-keep-declarations-and-modules.d.ts +0 -3
- package/lib/mock-builder/promise/add-missing-mock-declarations-and-modules.d.ts +0 -3
- package/lib/mock-builder/promise/add-requested-providers.d.ts +0 -3
- package/lib/mock-builder/promise/apply-platform-modules.d.ts +0 -2
- package/lib/mock-builder/promise/check-root-provider-dependency.d.ts +0 -2
- package/lib/mock-builder/promise/create-ng-mocks-overrides-token.d.ts +0 -3
- package/lib/mock-builder/promise/create-ng-mocks-token.d.ts +0 -3
- package/lib/mock-builder/promise/create-ng-mocks-touches-token.d.ts +0 -3
- package/lib/mock-builder/promise/detect-wrong-declarations.d.ts +0 -3
- package/lib/mock-builder/promise/extract-dep.d.ts +0 -2
- package/lib/mock-builder/promise/get-override-def.d.ts +0 -3
- package/lib/mock-builder/promise/get-root-provider-parameters.d.ts +0 -3
- package/lib/mock-builder/promise/get-root-providers-data.d.ts +0 -5
- package/lib/mock-builder/promise/handle-entry-components.d.ts +0 -3
- package/lib/mock-builder/promise/handle-provided-in-dependency.d.ts +0 -2
- package/lib/mock-builder/promise/handle-root-providers.d.ts +0 -3
- package/lib/mock-builder/promise/init-exclude-def.d.ts +0 -2
- package/lib/mock-builder/promise/init-keep-def.d.ts +0 -2
- package/lib/mock-builder/promise/init-mock-declarations.d.ts +0 -2
- package/lib/mock-builder/promise/init-module.d.ts +0 -5
- package/lib/mock-builder/promise/init-modules.d.ts +0 -2
- package/lib/mock-builder/promise/init-ng-modules.d.ts +0 -3
- package/lib/mock-builder/promise/init-replace-def.d.ts +0 -2
- package/lib/mock-builder/promise/init-universe.d.ts +0 -3
- package/lib/mock-builder/promise/parse-mock-arguments.d.ts +0 -5
- package/lib/mock-builder/promise/parse-provider.d.ts +0 -5
- package/lib/mock-builder/promise/skip-dep.d.ts +0 -2
- package/lib/mock-builder/promise/skip-init-module.d.ts +0 -3
- package/lib/mock-builder/promise/skip-override.d.ts +0 -3
- package/lib/mock-builder/promise/skip-root-provider-dependency.d.ts +0 -2
- package/lib/mock-builder/promise/try-mock-declaration.d.ts +0 -2
- package/lib/mock-builder/promise/try-mock-provider.d.ts +0 -2
- package/lib/mock-builder/promise/types.d.ts +0 -18
- package/lib/mock-builder/types.d.ts +0 -96
- package/lib/mock-component/mock-component.d.ts +0 -7
- package/lib/mock-component/render/generate-template.d.ts +0 -2
- package/lib/mock-component/render/get-key.d.ts +0 -2
- package/lib/mock-component/types.d.ts +0 -12
- package/lib/mock-declaration/mock-declaration.d.ts +0 -6
- package/lib/mock-directive/mock-directive.d.ts +0 -7
- package/lib/mock-directive/types.d.ts +0 -32
- package/lib/mock-helper/crawl/crawl-by-attribute-value.d.ts +0 -3
- package/lib/mock-helper/crawl/crawl-by-attribute.d.ts +0 -3
- package/lib/mock-helper/crawl/crawl-by-declaration.d.ts +0 -4
- package/lib/mock-helper/crawl/crawl-by-id.d.ts +0 -3
- package/lib/mock-helper/crawl/crawl-by-tag-name.d.ts +0 -3
- package/lib/mock-helper/crawl/detect-attribute-in-selectors.d.ts +0 -2
- package/lib/mock-helper/crawl/detect-crawler.d.ts +0 -5
- package/lib/mock-helper/crawl/detect-selectors-from-node.d.ts +0 -3
- package/lib/mock-helper/crawl/detect-tag-name-in-selectors.d.ts +0 -2
- package/lib/mock-helper/crawl/detect-text-node.d.ts +0 -3
- package/lib/mock-helper/crawl/el-def-compare.d.ts +0 -2
- package/lib/mock-helper/crawl/el-def-get-node.d.ts +0 -2
- package/lib/mock-helper/crawl/el-def-get-parent.d.ts +0 -2
- package/lib/mock-helper/crawl/func.get-public-provider-keys.d.ts +0 -3
- package/lib/mock-helper/crawl/func.is-valid-reveal-selector.d.ts +0 -2
- package/lib/mock-helper/crawl/func.parse-inputs-and-requires-attributes.d.ts +0 -3
- package/lib/mock-helper/crawl/mock-helper.crawl.d.ts +0 -4
- package/lib/mock-helper/crawl/mock-helper.reveal-all.d.ts +0 -2
- package/lib/mock-helper/crawl/mock-helper.reveal.d.ts +0 -2
- package/lib/mock-helper/crawl/nested-check-children.d.ts +0 -3
- package/lib/mock-helper/crawl/nested-check.d.ts +0 -3
- package/lib/mock-helper/cva/func.get-vca.d.ts +0 -3
- package/lib/mock-helper/cva/mock-helper.change.d.ts +0 -3
- package/lib/mock-helper/cva/mock-helper.touch.d.ts +0 -4
- package/lib/mock-helper/events/mock-helper.click.d.ts +0 -3
- package/lib/mock-helper/events/mock-helper.event.d.ts +0 -2
- package/lib/mock-helper/events/mock-helper.trigger.d.ts +0 -5
- package/lib/mock-helper/find/func.parse-find-args.d.ts +0 -2
- package/lib/mock-helper/find/func.parse-find-term.d.ts +0 -4
- package/lib/mock-helper/find/mock-helper.find-all.d.ts +0 -3
- package/lib/mock-helper/find/mock-helper.find.d.ts +0 -3
- package/lib/mock-helper/find-instance/func.is-valid-find-instance-selector.d.ts +0 -2
- package/lib/mock-helper/find-instance/mock-helper.find-instance.d.ts +0 -2
- package/lib/mock-helper/find-instance/mock-helper.find-instances.d.ts +0 -2
- package/lib/mock-helper/format/format-handler.d.ts +0 -2
- package/lib/mock-helper/format/handle-array.d.ts +0 -2
- package/lib/mock-helper/format/handle-text.d.ts +0 -2
- package/lib/mock-helper/format/is-debug-node.d.ts +0 -3
- package/lib/mock-helper/format/is-fixture.d.ts +0 -5
- package/lib/mock-helper/format/is-html-element.d.ts +0 -2
- package/lib/mock-helper/format/is-text.d.ts +0 -2
- package/lib/mock-helper/format/mock-helper.format-html.d.ts +0 -2
- package/lib/mock-helper/format/mock-helper.format-text.d.ts +0 -2
- package/lib/mock-helper/format/types.d.ts +0 -14
- package/lib/mock-helper/func.get-from-node-element.d.ts +0 -3
- package/lib/mock-helper/func.get-from-node-injector.d.ts +0 -5
- package/lib/mock-helper/func.get-from-node-ivy.d.ts +0 -5
- package/lib/mock-helper/func.get-from-node-scan.d.ts +0 -10
- package/lib/mock-helper/func.get-from-node-standard.d.ts +0 -5
- package/lib/mock-helper/func.get-from-node.d.ts +0 -24
- package/lib/mock-helper/func.get-last-fixture.d.ts +0 -3
- package/lib/mock-helper/func.global-prepare.d.ts +0 -2
- package/lib/mock-helper/func.parse-find-args-name.d.ts +0 -3
- package/lib/mock-helper/func.parse-find-args.d.ts +0 -2
- package/lib/mock-helper/func.parse-provider-tokens-directives.d.ts +0 -3
- package/lib/mock-helper/mock-helper.attributes.d.ts +0 -2
- package/lib/mock-helper/mock-helper.auto-spy.d.ts +0 -4
- package/lib/mock-helper/mock-helper.console-ignore.d.ts +0 -2
- package/lib/mock-helper/mock-helper.console-throw.d.ts +0 -2
- package/lib/mock-helper/mock-helper.console.d.ts +0 -2
- package/lib/mock-helper/mock-helper.d.ts +0 -342
- package/lib/mock-helper/mock-helper.default-config.d.ts +0 -5
- package/lib/mock-helper/mock-helper.default-mock.d.ts +0 -4
- package/lib/mock-helper/mock-helper.faster-install.d.ts +0 -6
- package/lib/mock-helper/mock-helper.faster.d.ts +0 -2
- package/lib/mock-helper/mock-helper.flush-test-bed.d.ts +0 -2
- package/lib/mock-helper/mock-helper.get.d.ts +0 -2
- package/lib/mock-helper/mock-helper.global-exclude.d.ts +0 -4
- package/lib/mock-helper/mock-helper.global-keep.d.ts +0 -4
- package/lib/mock-helper/mock-helper.global-mock.d.ts +0 -4
- package/lib/mock-helper/mock-helper.global-replace.d.ts +0 -3
- package/lib/mock-helper/mock-helper.global-wipe.d.ts +0 -4
- package/lib/mock-helper/mock-helper.guts.d.ts +0 -3
- package/lib/mock-helper/mock-helper.input.d.ts +0 -2
- package/lib/mock-helper/mock-helper.object.d.ts +0 -47
- package/lib/mock-helper/mock-helper.output.d.ts +0 -2
- package/lib/mock-helper/mock-helper.reset.d.ts +0 -2
- package/lib/mock-helper/mock-helper.stub-member.d.ts +0 -4
- package/lib/mock-helper/mock-helper.stub.d.ts +0 -3
- package/lib/mock-helper/render/func.find-deep.d.ts +0 -3
- package/lib/mock-helper/render/func.parse-template.d.ts +0 -3
- package/lib/mock-helper/render/mock-helper.hide.d.ts +0 -2
- package/lib/mock-helper/render/mock-helper.render.d.ts +0 -2
- package/lib/mock-helper/template-ref/detect-crawler.d.ts +0 -3
- package/lib/mock-helper/template-ref/detect-template-ref.d.ts +0 -4
- package/lib/mock-helper/template-ref/func.is-valid-template-ref-selector.d.ts +0 -2
- package/lib/mock-helper/template-ref/mock-helper.find-template-ref.d.ts +0 -2
- package/lib/mock-helper/template-ref/mock-helper.find-template-refs.d.ts +0 -3
- package/lib/mock-instance/mock-instance-apply.d.ts +0 -2
- package/lib/mock-instance/mock-instance-forgot-reset.d.ts +0 -2
- package/lib/mock-instance/mock-instance.d.ts +0 -61
- package/lib/mock-module/create-resolvers.d.ts +0 -6
- package/lib/mock-module/mark-providers.d.ts +0 -2
- package/lib/mock-module/mock-module.d.ts +0 -10
- package/lib/mock-module/mock-ng-def.d.ts +0 -4
- package/lib/mock-module/types.d.ts +0 -2
- package/lib/mock-pipe/mock-pipe.d.ts +0 -11
- package/lib/mock-pipe/types.d.ts +0 -2
- package/lib/mock-provider/mock-provider.d.ts +0 -15
- package/lib/mock-render/func.create-wrapper.d.ts +0 -4
- package/lib/mock-render/func.generate-template.d.ts +0 -2
- package/lib/mock-render/func.install-prop-reader.d.ts +0 -2
- package/lib/mock-render/func.reflect-template.d.ts +0 -4
- package/lib/mock-render/mock-render-factory.d.ts +0 -48
- package/lib/mock-render/mock-render.d.ts +0 -53
- package/lib/mock-render/types.d.ts +0 -23
- package/lib/mock-service/check.is-class.d.ts +0 -2
- package/lib/mock-service/check.is-func.d.ts +0 -2
- package/lib/mock-service/check.is-inst.d.ts +0 -2
- package/lib/mock-service/helper.create-clone.d.ts +0 -2
- package/lib/mock-service/helper.create-mock-from-prototype.d.ts +0 -5
- package/lib/mock-service/helper.define-property-descriptor.d.ts +0 -2
- package/lib/mock-service/helper.extract-methods-from-prototype.d.ts +0 -2
- package/lib/mock-service/helper.extract-properties-from-prototype.d.ts +0 -2
- package/lib/mock-service/helper.extract-property-descriptor.d.ts +0 -2
- package/lib/mock-service/helper.mock-function.d.ts +0 -6
- package/lib/mock-service/helper.mock-service.d.ts +0 -28
- package/lib/mock-service/helper.mock.d.ts +0 -3
- package/lib/mock-service/helper.replace-with-mocks.d.ts +0 -2
- package/lib/mock-service/helper.resolve-provider.d.ts +0 -2
- package/lib/mock-service/helper.use-factory.d.ts +0 -3
- package/lib/mock-service/mock-provider.d.ts +0 -2
- package/lib/mock-service/mock-service.d.ts +0 -17
- package/lib/mock-service/types.d.ts +0 -2
- package/lib/resolve/collect-declarations.d.ts +0 -2
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","mappings":"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","sources":["webpack://ng-mocks/webpack/universalModuleDefinition","webpack://ng-mocks/./libs/ng-mocks/src/index.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.config.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.define-property.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.form.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.helpers.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.injector.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.reflect.body-catch.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.reflect.directive-resolve.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.reflect.jit.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.reflect.meta.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.reflect.module-resolve.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.reflect.pipe-resolve.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.reflect.provided-in.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.tokens.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/decorate.inputs.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/decorate.mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/decorate.outputs.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/decorate.queries.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/error.empty-def.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/error.jest-mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/error.missing-decorators.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.get-global.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.get-mocked-ng-def-of.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.get-name.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.get-provider.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.get-source-of-mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.import-exists.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-jest-mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-mock-control-value-accessor.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-mock-ng-def.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-mock-of.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-mock-validator.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-mocked-ng-def-of.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-ng-def.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-ng-injection-token.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-ng-module-def-with-providers.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-ng-type.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/jit-reflector.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/mock-control-value-accessor-proxy.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/mock-control-value-accessor.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/ng-mocks-global-overrides.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/ng-mocks-stack.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/ng-mocks-universe.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/func.extract-tokens.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/mock-builder-stash.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/mock-builder.performance.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/mock-builder.promise.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/mock-builder.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/are-equal-config-params.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/are-equal-maps.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/are-equal-providers.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/are-equal-sets.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/equal-render-configs.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/equal-render-defs.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/equal-variables.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/get-empty-config.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/required-metadata.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/add-def-to-root-provider-parameters.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/add-missing-definition.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/add-missing-keep-declarations-and-modules.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/add-missing-mock-declarations-and-modules.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/add-requested-providers.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/apply-platform-modules.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/check-root-provider-dependency.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/create-ng-mocks-overrides-token.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/create-ng-mocks-token.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/create-ng-mocks-touches-token.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/detect-wrong-declarations.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/extract-dep.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/get-override-def.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/get-root-provider-parameters.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/get-root-providers-data.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/handle-entry-components.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/handle-provided-in-dependency.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/handle-root-providers.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/init-exclude-def.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/init-keep-def.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/init-mock-declarations.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/init-module.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/init-modules.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/init-ng-modules.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/init-replace-def.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/init-universe.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/parse-mock-arguments.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/parse-provider.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/skip-dep.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/skip-init-module.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/skip-override.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/skip-root-provider-dependency.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/try-mock-declaration.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/try-mock-provider.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-component/mock-component.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-component/render/generate-template.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-component/render/get-key.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-declaration/mock-declaration.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-directive/mock-directive.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/crawl-by-attribute-value.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/crawl-by-attribute.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/crawl-by-declaration.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/crawl-by-id.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/crawl-by-tag-name.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/detect-attribute-in-selectors.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/detect-crawler.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/detect-selectors-from-node.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/detect-tag-name-in-selectors.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/detect-text-node.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/el-def-compare.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/el-def-get-node.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/el-def-get-parent.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/func.get-public-provider-keys.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/func.is-valid-reveal-selector.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/func.parse-inputs-and-requires-attributes.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/mock-helper.crawl.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/mock-helper.reveal-all.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/mock-helper.reveal.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/nested-check-children.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/nested-check.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/cva/func.get-vca.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/cva/mock-helper.change.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/cva/mock-helper.touch.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/events/mock-helper.click.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/events/mock-helper.event.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/events/mock-helper.trigger.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/find-instance/func.is-valid-find-instance-selector.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/find-instance/mock-helper.find-instance.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/find-instance/mock-helper.find-instances.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/find/func.parse-find-args.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/find/func.parse-find-term.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/find/mock-helper.find-all.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/find/mock-helper.find.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/format-handler.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/handle-array.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/handle-text.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/is-debug-node.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/is-fixture.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/is-html-element.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/is-text.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/mock-helper.format-html.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/mock-helper.format-text.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.get-from-node-element.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.get-from-node-injector.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.get-from-node-ivy.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.get-from-node-scan.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.get-from-node-standard.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.get-from-node.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.get-last-fixture.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.global-prepare.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.parse-find-args-name.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.parse-find-args.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.parse-provider-tokens-directives.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.attributes.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.auto-spy.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.console-ignore.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.console-throw.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.console.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.default-config.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.default-mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.faster-install.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.faster.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.flush-test-bed.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.get.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.global-exclude.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.global-keep.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.global-mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.global-replace.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.global-wipe.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.guts.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.input.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.object.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.output.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.reset.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.stub-member.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.stub.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/render/func.find-deep.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/render/func.parse-template.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/render/mock-helper.hide.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/render/mock-helper.render.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/template-ref/detect-crawler.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/template-ref/detect-template-ref.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/template-ref/func.is-valid-template-ref-selector.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/template-ref/mock-helper.find-template-ref.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/template-ref/mock-helper.find-template-refs.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-instance/mock-instance-apply.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-instance/mock-instance-forgot-reset.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-instance/mock-instance.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-module/create-resolvers.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-module/mark-providers.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-module/mock-module.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-module/mock-ng-def.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-pipe/mock-pipe.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-provider/mock-provider.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-render/func.create-wrapper.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-render/func.generate-template.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-render/func.install-prop-reader.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-render/func.reflect-template.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-render/mock-render-factory.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-render/mock-render.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/check.is-class.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/check.is-func.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/check.is-inst.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.create-clone.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.create-mock-from-prototype.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.define-property-descriptor.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.extract-methods-from-prototype.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.extract-properties-from-prototype.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.extract-property-descriptor.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.mock-function.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.mock-service.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.replace-with-mocks.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.resolve-provider.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.use-factory.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/mock-provider.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/mock-service.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock/clone-providers.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock/decorate-declaration.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock/get-mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock/to-existing-provider.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock/to-factory-provider.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/resolve/collect-declarations.ts","webpack://ng-mocks/external umd \"@angular/common\"","webpack://ng-mocks/external umd \"@angular/core\"","webpack://ng-mocks/external umd \"@angular/core/testing\"","webpack://ng-mocks/external umd \"@angular/forms\"","webpack://ng-mocks/external umd \"@angular/platform-browser\"","webpack://ng-mocks/webpack/bootstrap","webpack://ng-mocks/webpack/runtime/global","webpack://ng-mocks/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@angular/core\"), require(\"@angular/core/testing\"), require(\"@angular/forms\"), require(\"@angular/platform-browser\"), require(\"@angular/common\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@angular/core\", \"@angular/core/testing\", \"@angular/forms\", \"@angular/platform-browser\", \"@angular/common\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"@angular/core\"), require(\"@angular/core/testing\"), require(\"@angular/forms\"), require(\"@angular/platform-browser\"), require(\"@angular/common\")) : factory(root[\"@angular/core\"], root[\"@angular/core/testing\"], root[\"@angular/forms\"], root[\"@angular/platform-browser\"], root[\"@angular/common\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function(__WEBPACK_EXTERNAL_MODULE__8900__, __WEBPACK_EXTERNAL_MODULE__1087__, __WEBPACK_EXTERNAL_MODULE__7161__, __WEBPACK_EXTERNAL_MODULE__3046__, __WEBPACK_EXTERNAL_MODULE__5848__) {\nreturn ","// istanbul ignore file\n\n// tslint:disable-next-line no-import-side-effect\nimport './lib/common/ng-mocks-stack';\n// tslint:disable-next-line no-import-side-effect ordered-imports\nimport './lib/common/ng-mocks-global-overrides';\n\nexport { getTestBedInjection, getInjection } from './lib/common/core.helpers';\nexport * from './lib/common/core.tokens';\nexport * from './lib/common/core.types';\nexport * from './lib/common/func.get-mocked-ng-def-of';\nexport * from './lib/common/func.get-source-of-mock';\nexport * from './lib/common/func.is-mock-control-value-accessor';\nexport * from './lib/common/func.is-mock-ng-def';\nexport * from './lib/common/func.is-mock-of';\nexport * from './lib/common/func.is-mock-validator';\nexport * from './lib/common/func.is-mocked-ng-def-of';\nexport * from './lib/common/func.is-ng-def';\nexport * from './lib/common/func.is-ng-injection-token';\nexport * from './lib/common/func.is-ng-type';\nexport { Mock } from './lib/common/mock';\nexport { MockControlValueAccessor, MockValidator } from './lib/common/mock-control-value-accessor';\n\nexport * from './lib/mock-builder/mock-builder';\nexport * from './lib/mock-builder/types';\n\nexport * from './lib/mock-component/mock-component';\nexport * from './lib/mock-component/types';\n\nexport * from './lib/mock-declaration/mock-declaration';\n\nexport * from './lib/mock-directive/mock-directive';\nexport * from './lib/mock-directive/types';\n\nexport * from './lib/mock-helper/mock-helper';\n\nexport * from './lib/mock-instance/mock-instance';\n\nexport * from './lib/mock-module/mock-module';\nexport * from './lib/mock-module/types';\n\nexport * from './lib/mock-pipe/mock-pipe';\nexport * from './lib/mock-pipe/types';\n\nexport * from './lib/mock-provider/mock-provider';\n\nexport * from './lib/mock-render/mock-render';\nexport * from './lib/mock-render/mock-render-factory';\nexport * from './lib/mock-render/types';\n\nexport { registerMockFunction } from './lib/mock-service/helper.mock-service';\nexport * from './lib/mock-service/mock-service';\nexport * from './lib/mock-service/types';\n","export default {\n flags: ['cacheModule', 'cacheComponent', 'cacheDirective', 'cacheProvider', 'correctModuleExports'],\n mockRenderCacheSize: 25,\n neverMockModule: ['ApplicationModule', 'CommonModule', 'BrowserModule'],\n neverMockProvidedFunction: [\n 'DomRendererFactory2',\n 'EventManager',\n 'Injector', // ivy only\n 'RendererFactory2',\n\n // https://github.com/ike18t/ng-mocks/issues/538\n 'Sanitizer',\n 'DomSanitizer',\n\n // ApplicationModule, A14 made them global at root level\n 'ApplicationInitStatus',\n 'ApplicationRef',\n 'Compiler',\n 'IterableDiffers',\n 'KeyValueDiffers',\n ],\n neverMockToken: [\n 'InjectionToken Set Injector scope.', // INJECTOR_SCOPE // ivy only\n 'InjectionToken EventManagerPlugins', // EVENT_MANAGER_PLUGINS\n 'InjectionToken HammerGestureConfig', // HAMMER_GESTURE_CONFIG\n\n // ApplicationModule, A14 made them global at root level\n 'InjectionToken AppId', // APP_ID\n 'InjectionToken DefaultCurrencyCode', // DEFAULT_CURRENCY_CODE\n 'InjectionToken LocaleId', // LOCALE_ID\n 'InjectionToken SCHEDULER_TOKEN', // SCHEDULER\n ],\n onMockInstanceRestoreNeed: 'warn',\n onTestBedFlushNeed: 'warn',\n};\n","import helperMockService from '../mock-service/helper.mock-service';\n\nexport default (instance: any, property: keyof any, value: any, enumerable = false) => {\n helperMockService.definePropertyDescriptor(instance, property, {\n configurable: true,\n enumerable,\n value,\n writable: true,\n });\n};\n","// tslint:disable variable-name\n\nimport * as module from '@angular/forms';\n\nlet AbstractControl: any | undefined;\nlet DefaultValueAccessor: any | undefined;\nlet FormControl: any | undefined;\nlet FormControlDirective: any | undefined;\nlet NG_ASYNC_VALIDATORS: any | undefined;\nlet NG_VALIDATORS: any | undefined;\nlet NG_VALUE_ACCESSOR: any | undefined;\nlet NgControl: any | undefined;\nlet NgModel: any | undefined;\n\nAbstractControl = module.AbstractControl;\nDefaultValueAccessor = module.DefaultValueAccessor;\nFormControl = module.FormControl;\nFormControlDirective = module.FormControlDirective;\nNG_ASYNC_VALIDATORS = module.NG_ASYNC_VALIDATORS;\nNG_VALIDATORS = module.NG_VALIDATORS;\nNG_VALUE_ACCESSOR = module.NG_VALUE_ACCESSOR;\nNgControl = module.NgControl;\nNgModel = module.NgModel;\n\nexport default {\n AbstractControl,\n DefaultValueAccessor,\n FormControl,\n FormControlDirective,\n NG_ASYNC_VALIDATORS,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n NgModel,\n};\n","import { InjectionToken } from '@angular/core';\nimport { getTestBed } from '@angular/core/testing';\n\nimport coreDefineProperty from './core.define-property';\nimport coreReflectJit from './core.reflect.jit';\nimport { AnyType, Type } from './core.types';\nimport funcGetGlobal from './func.get-global';\nimport funcGetName from './func.get-name';\n\nexport const getTestBedInjection = <I>(token: AnyType<I> | InjectionToken<I>): I | undefined => {\n const testBed: any = getTestBed();\n try {\n // istanbul ignore next\n return testBed.inject ? testBed.inject(token) : testBed.get(token);\n } catch {\n return undefined;\n }\n};\n\nexport const getInjection = <I>(token: Type<I> | InjectionToken<I>): I => {\n const testBed: any = getTestBed();\n\n // istanbul ignore next\n return testBed.inject ? testBed.inject(token) : testBed.get(token);\n};\n\nexport const flatten = <T>(values: T | T[], result: T[] = []): T[] => {\n if (Array.isArray(values)) {\n for (const value of values) {\n flatten(value, result);\n }\n } else {\n result.push(values);\n }\n\n return result;\n};\n\nexport const mapKeys = <T>(set: Map<T, any>): T[] => {\n const result: T[] = [];\n set.forEach((_, value: T) => result.push(value));\n\n return result;\n};\n\nexport const mapValues = <T>(set: { forEach(a1: (value: T) => void): void }, destination?: Set<T>): T[] => {\n const result: T[] = [];\n if (destination) {\n set.forEach((value: T) => {\n destination.add(value);\n });\n } else {\n set.forEach((value: T) => {\n result.push(value);\n });\n }\n\n return result;\n};\n\nexport const mapEntries = <K, T>(set: Map<K, T>, destination?: Map<K, T>): Array<[K, T]> => {\n const result: Array<[K, T]> = [];\n\n if (destination) {\n set.forEach((value: T, key: K) => destination.set(key, value));\n } else {\n set.forEach((value: T, key: K) => result.push([key, value]));\n }\n\n return result;\n};\n\nconst extractDependencyArray = (deps: any[], set: Set<any>): void => {\n for (const flag of deps) {\n const name = flag && typeof flag === 'object' ? flag.ngMetadataName : undefined;\n if (name === 'Optional' || name === 'SkipSelf' || name === 'Self') {\n continue;\n }\n set.add(flag);\n }\n};\n\n// Accepts an array of dependencies from providers, skips injections flags,\n// and adds the providers to the set.\nexport const extractDependency = (deps: any[], set?: Set<any>): void => {\n if (!set) {\n return;\n }\n for (const dep of deps) {\n if (!Array.isArray(dep)) {\n set.add(dep);\n continue;\n }\n extractDependencyArray(dep, set);\n }\n};\n\nconst extendClassicClass = <I extends object>(base: AnyType<I>): Type<I> => {\n let child: any;\n const glb = funcGetGlobal();\n\n // First we try to eval es2015 style and if it fails to use es5 transpilation in the catch block.\n // The next step is to respect constructor parameters as the parent class via jitReflector.\n glb.ngMocksParent = base;\n // istanbul ignore next\n try {\n // tslint:disable-next-line no-eval\n eval(`\n var glb = typeof window === 'undefined' ? global : window;\n class MockMiddleware extends glb.ngMocksParent {}\n glb.ngMocksResult = MockMiddleware\n `);\n child = glb.ngMocksResult;\n } catch {\n class MockMiddleware extends glb.ngMocksParent {}\n child = MockMiddleware;\n }\n glb.ngMocksParent = undefined;\n\n return child;\n};\n\nexport const extendClass = <I extends object>(base: AnyType<I>): Type<I> => {\n const child: Type<I> = extendClassicClass(base);\n coreDefineProperty(child, 'name', `MockMiddleware${funcGetName(base)}`, true);\n\n const parameters = coreReflectJit().parameters(base);\n if (parameters.length) {\n coreDefineProperty(child, 'parameters', [...parameters]);\n }\n\n return child;\n};\n","import { Injector } from '@angular/core';\n\nimport { getTestBedInjection } from './core.helpers';\n\nconst defaultInjector: any = {};\n\nexport default (declaration: any, injector: Injector = defaultInjector): any => {\n if (injector === defaultInjector) {\n return getTestBedInjection(declaration);\n }\n try {\n return injector.get(declaration);\n } catch {\n return undefined;\n }\n};\n","import errorEmptyDef from './error.empty-def';\nimport errorJestMock from './error.jest-mock';\nimport errorMissingDecorators from './error.missing-decorators';\n\nexport default (callback: any) => (def: any) => {\n errorEmptyDef(def);\n\n try {\n return callback(def);\n } catch {\n errorJestMock(def);\n errorMissingDecorators(def);\n }\n};\n","import { Component, Directive } from '@angular/core';\n\nimport collectDeclarations from '../resolve/collect-declarations';\n\nimport coreReflectBodyCatch from './core.reflect.body-catch';\n\nexport default (def: any): Directive & Partial<Component> =>\n coreReflectBodyCatch((arg: any) => {\n const declaration = collectDeclarations(arg);\n if (declaration.Component) {\n return declaration.Component;\n }\n if (declaration.Directive) {\n return declaration.Directive;\n }\n\n throw new Error('Cannot resolve declarations');\n })(def);\n","import { JitReflector } from './jit-reflector';\nimport ngMocksUniverse from './ng-mocks-universe';\n\nexport default (): JitReflector => {\n if (!ngMocksUniverse.global.has(JitReflector)) {\n ngMocksUniverse.global.set(JitReflector, new JitReflector());\n }\n\n return ngMocksUniverse.global.get(JitReflector);\n};\n","import coreReflectDirectiveResolve from './core.reflect.directive-resolve';\nimport coreReflectModuleResolve from './core.reflect.module-resolve';\nimport { isNgDef } from './func.is-ng-def';\n\nexport default (value: any): any => {\n if (isNgDef(value, 'c')) {\n return coreReflectDirectiveResolve(value);\n }\n if (isNgDef(value, 'd')) {\n return coreReflectDirectiveResolve(value);\n }\n if (isNgDef(value, 'm')) {\n return coreReflectModuleResolve(value);\n }\n\n return undefined;\n};\n","import { NgModule } from '@angular/core';\n\nimport collectDeclarations from '../resolve/collect-declarations';\n\nimport coreReflectBodyCatch from './core.reflect.body-catch';\n\nexport default (def: any): NgModule =>\n coreReflectBodyCatch((arg: any) => {\n const declaration = collectDeclarations(arg);\n if (declaration.NgModule) {\n return declaration.NgModule;\n }\n\n throw new Error('Cannot resolve declarations');\n })(def);\n","import { Pipe } from '@angular/core';\n\nimport collectDeclarations from '../resolve/collect-declarations';\n\nimport coreReflectBodyCatch from './core.reflect.body-catch';\n\nexport default (def: any): Pipe =>\n coreReflectBodyCatch((arg: any) => {\n const declaration = collectDeclarations(arg);\n if (declaration.Pipe) {\n return declaration.Pipe;\n }\n\n throw new Error('Cannot resolve declarations');\n })(def);\n","import { AnyType } from './core.types';\n\nexport default (declaration: any): undefined | AnyType<any> | string => {\n return declaration?.ɵprov?.providedIn ?? declaration?.ngInjectableDef?.providedIn;\n};\n","import { InjectionToken } from '@angular/core';\nimport { MetadataOverride } from '@angular/core/testing';\n\nimport { AnyType } from './core.types';\n\nexport const NG_MOCKS = new InjectionToken<Map<any, any>>('NG_MOCKS');\nexport const NG_MOCKS_TOUCHES = new InjectionToken<Set<any>>('NG_MOCKS_TOUCHES');\nexport const NG_MOCKS_OVERRIDES = new InjectionToken<Map<AnyType<any>, MetadataOverride<any>>>('NG_MOCKS_OVERRIDES');\nexport const NG_MOCKS_GUARDS = new InjectionToken<void>('NG_MOCKS_GUARDS');\nexport const NG_MOCKS_INTERCEPTORS = new InjectionToken<void>('NG_MOCKS_INTERCEPTORS');\nexport const NG_MOCKS_ROOT_PROVIDERS = new InjectionToken<void>('NG_MOCKS_ROOT_PROVIDERS');\n","import { Input } from '@angular/core';\n\nimport { AnyType } from './core.types';\n\n// Looks like an A9 bug, that queries from @Component are not processed.\n// Also we have to pass prototype, not the class.\n// The same issue happens with outputs, but time to time\n// (when I restart tests with refreshing browser manually).\n// https://github.com/ike18t/ng-mocks/issues/109\nexport default function (cls: AnyType<any>, inputs?: string[], exclude?: string[]) {\n // istanbul ignore else\n if (inputs) {\n for (const input of inputs) {\n const [key, alias] = input.split(': ');\n if (exclude && exclude.indexOf(key) !== -1) {\n continue;\n }\n Input(alias)(cls.prototype, key);\n }\n }\n}\n","import coreDefineProperty from './core.define-property';\nimport { AnyType } from './core.types';\nimport funcGetName from './func.get-name';\nimport { ngMocksMockConfig } from './mock';\nimport ngMocksUniverse from './ng-mocks-universe';\n\nexport default function (mock: AnyType<any>, source: AnyType<any>, configInput: ngMocksMockConfig = {}): void {\n coreDefineProperty(mock, 'mockOf', source);\n coreDefineProperty(mock, 'nameConstructor', funcGetName(mock));\n coreDefineProperty(mock, 'name', `MockOf${funcGetName(source)}`, true);\n const config = ngMocksUniverse.getConfigMock().has(source)\n ? {\n ...configInput,\n config: {\n ...ngMocksUniverse.getConfigMock().get(source),\n ...configInput.config,\n },\n }\n : configInput;\n coreDefineProperty(mock.prototype, '__ngMocksConfig', config);\n}\n","import { Output } from '@angular/core';\n\nimport { AnyType } from './core.types';\n\n// Looks like an A9 bug, that queries from @Component are not processed.\n// Also we have to pass prototype, not the class.\n// The same issue happens with outputs, but time to time\n// (when I restart tests with refreshing browser manually).\n// https://github.com/ike18t/ng-mocks/issues/109\nexport default function (cls: AnyType<any>, outputs?: string[]) {\n // istanbul ignore else\n if (outputs) {\n for (const output of outputs) {\n const [key, alias] = output.split(': ');\n Output(alias)(cls.prototype, key);\n }\n }\n}\n","import { ContentChild, ContentChildren, Query, ViewChild, ViewChildren, ViewContainerRef } from '@angular/core';\n\nimport { AnyType } from './core.types';\n\nconst map: any = {\n ContentChild,\n ContentChildren,\n ViewChild,\n ViewChildren,\n};\n\nconst isInternalKey = (key: string): boolean => {\n return key.indexOf('__mock') === 0;\n};\n\nconst cloneVcrQuery = (query: Query & { ngMetadataName?: string }) => ({\n ...query,\n ngMetadataName: query.ngMetadataName,\n read: ViewContainerRef,\n});\n\nconst generateFinalQueries = (queries: {\n [key: string]: Query;\n}): [Array<[string, Query & { ngMetadataName?: string }]>, string[]] => {\n const final: Array<[string, Query & { ngMetadataName?: string }]> = [];\n const scanKeys: string[] = [];\n\n for (const key of Object.keys(queries)) {\n const query: Query & { ngMetadataName?: string } = queries[key];\n final.push([key, query]);\n\n if (!query.isViewQuery && !isInternalKey(key)) {\n scanKeys.push(key);\n final.push([`__ngMocksVcr_${key}`, cloneVcrQuery(query)]);\n }\n }\n\n return [final, scanKeys];\n};\n\n// Looks like an A9 bug, that queries from @Component are not processed.\n// Also, we have to pass prototype, not the class.\n// The same issue happens with outputs, but time to time\n// (when I restart tests with refreshing browser manually).\n// https://github.com/ike18t/ng-mocks/issues/109\nexport default function (cls: AnyType<any>, queries?: { [key: string]: Query }): string[] {\n // istanbul ignore if\n if (!queries) {\n return [];\n }\n const [final, keys] = generateFinalQueries(queries);\n\n for (const [key, query] of final) {\n // istanbul ignore else\n if (query.ngMetadataName) {\n const decorator = map[query.ngMetadataName];\n decorator(query.selector, query)(cls.prototype, key);\n }\n }\n\n return keys;\n}\n","export default (def: any): void => {\n if (!def) {\n throw new Error(\n [\n 'undefined / null has been passed into ng-mocks as a declaration / provider.',\n 'Please ensure that the current test file has correct imports:',\n 'imported files exist and imported declarations have been exported in the file.',\n ].join(' '),\n );\n }\n};\n","import funcGetName from './func.get-name';\nimport funcIsJestMock from './func.is-jest-mock';\n\nexport default (def: any): void => {\n if (funcIsJestMock(def)) {\n throw new Error(\n [\n `ng-mocks got ${funcGetName(def)} which has been already mocked by jest.mock().`,\n 'It is not possible to produce correct mocks for it, because jest.mock() removes Angular decorators.',\n `To fix this, please avoid jest.mock() on the file which exports ${funcGetName(\n def,\n )} or add jest.dontMock() on it.`,\n 'The same should be done for all related dependencies.',\n ].join(' '),\n );\n }\n};\n","// tslint:disable strict-type-predicates\n\nimport funcGetName from './func.get-name';\n\nexport default (def: any): void => {\n throw new Error(\n [\n `${funcGetName(def)} declaration has been passed into ng-mocks without Angular decorators.`,\n 'Therefore, it cannot be properly handled.',\n 'Highly likely,',\n typeof jest === 'undefined' ? '' : /* istanbul ignore next */ 'jest.mock() has been used on its file, or',\n 'ng-mocks is not in JIT mode.',\n 'Otherwise, please create an issue on github: https://github.com/ike18t/ng-mocks/issues/new?title=False%20positive%20ng-mocks%20not%20in%20JIT.',\n 'Thank you in advance for support.',\n ].join(' '),\n );\n};\n","// istanbul ignore next\nexport default (): Record<keyof any, any> => (typeof window === 'undefined' ? global : window);\n","import { MockedComponent } from '../mock-component/types';\nimport { MockedDirective } from '../mock-directive/types';\nimport { MockedModule } from '../mock-module/types';\nimport { MockedPipe } from '../mock-pipe/types';\n\nimport coreInjector from './core.injector';\nimport { NG_MOCKS } from './core.tokens';\nimport { AnyType, Type } from './core.types';\nimport funcGetName from './func.get-name';\nimport { isMockedNgDefOf } from './func.is-mocked-ng-def-of';\nimport ngMocksUniverse from './ng-mocks-universe';\n\nconst getMock = (declaration: any, source: any, mocks?: Map<any, any>) => {\n if (mocks && !mocks.has(source)) {\n throw new Error(`There is no mock for ${funcGetName(source)}`);\n }\n let mock = mocks ? mocks.get(source) : undefined;\n if (mock === source) {\n mock = undefined;\n }\n\n // If we are not in the MockBuilder env we can rely on the current cache.\n if (!mock && source !== declaration) {\n mock = declaration;\n } else if (!mock && ngMocksUniverse.cacheDeclarations.has(source)) {\n mock = ngMocksUniverse.cacheDeclarations.get(source);\n }\n\n return mock;\n};\n\n/**\n * Returns a def of a mock module based on a mock module or a source module.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getMockedNgDefOf\n */\nexport function getMockedNgDefOf<T>(declaration: AnyType<T>, type: 'm'): Type<MockedModule<T>>;\n\n/**\n * Returns a def of a mock component based on a mock component or a source component.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getMockedNgDefOf\n */\nexport function getMockedNgDefOf<T>(declaration: AnyType<T>, type: 'c'): Type<MockedComponent<T>>;\n\n/**\n * Returns a def of a mock directive based on a mock directive or a source directive.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getMockedNgDefOf\n */\nexport function getMockedNgDefOf<T>(declaration: AnyType<T>, type: 'd'): Type<MockedDirective<T>>;\n\n/**\n * Returns a def of a mock pipe based on a mock pipe or a source pipe.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getMockedNgDefOf\n */\nexport function getMockedNgDefOf<T>(declaration: AnyType<T>, type: 'p'): Type<MockedPipe<T>>;\n\n/**\n * Returns a def of a mock class based on a mock class or a source class decorated by a ng type.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getMockedNgDefOf\n */\nexport function getMockedNgDefOf<T>(declaration: AnyType<T>): Type<T>;\n\nexport function getMockedNgDefOf(declaration: any, type?: any): any {\n const source = declaration.mockOf ? declaration.mockOf : declaration;\n const mocks = coreInjector(NG_MOCKS);\n\n const mock = getMock(declaration, source, mocks);\n if (mock && !type) {\n return mock;\n }\n if (mock && type && isMockedNgDefOf(mock, source, type)) {\n return mock;\n }\n\n throw new Error(`There is no mock for ${funcGetName(source)}`);\n}\n","export default (value: any): string => {\n if (typeof value === 'function' && value.name) {\n return value.name;\n }\n if (typeof value === 'function') {\n return 'arrow-function';\n }\n if (typeof value === 'object' && value && value.ngMetadataName === 'InjectionToken') {\n return value._desc;\n }\n if (typeof value === 'object' && value && typeof value.constructor === 'function') {\n return value.constructor.name;\n }\n\n return 'unknown';\n};\n","export default (provider: any): any => {\n return provider && typeof provider === 'object' && provider.provide ? provider.provide : provider;\n};\n","import { MockedComponent } from '../mock-component/types';\nimport { MockedDirective } from '../mock-directive/types';\nimport { MockedModule } from '../mock-module/types';\nimport { MockedPipe } from '../mock-pipe/types';\n\nimport { AnyType, Type } from './core.types';\n\n/**\n * Returns an original type.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getSourceOfMock\n */\nexport function getSourceOfMock<T>(declaration: AnyType<MockedModule<T>>): Type<T>;\n\n/**\n * Returns an original type.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getSourceOfMock\n */\nexport function getSourceOfMock<T>(declaration: AnyType<MockedComponent<T>>): Type<T>;\n\n/**\n * Returns an original type.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getSourceOfMock\n */\nexport function getSourceOfMock<T>(declaration: AnyType<MockedDirective<T>>): Type<T>;\n\n/**\n * Returns an original type.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getSourceOfMock\n */\nexport function getSourceOfMock<T>(declaration: AnyType<MockedPipe<T>>): Type<T>;\n\n/**\n * Returns an original type.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getSourceOfMock\n */\nexport function getSourceOfMock<T>(declaration: AnyType<T>): Type<T>;\n\n/**\n * Returns an original type.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getSourceOfMock\n */\nexport function getSourceOfMock<T>(declaration: any): Type<T> {\n return typeof declaration === 'function' && declaration.mockOf ? declaration.mockOf : declaration;\n}\n","import funcGetName from './func.get-name';\nimport { isNgDef } from './func.is-ng-def';\n\nexport default (value: any, funcName: string) => {\n if (value === undefined || value === null) {\n throw new Error(`An empty parameter has been passed into ${funcName}. Please check that its import is correct.`);\n }\n\n if (funcName === 'MockPipe' && isNgDef(value, 'p')) {\n return;\n }\n if (funcName === 'MockDirective' && isNgDef(value, 'd')) {\n return;\n }\n if (funcName === 'MockComponent' && isNgDef(value, 'c')) {\n return;\n }\n if (funcName === 'MockModule' && isNgDef(value, 'm')) {\n return;\n }\n\n const type = isNgDef(value, 'p')\n ? 'pipe'\n : isNgDef(value, 'd')\n ? 'directive'\n : isNgDef(value, 'c')\n ? 'component'\n : isNgDef(value, 'm')\n ? 'module'\n : isNgDef(value, 'i')\n ? 'service'\n : isNgDef(value, 't')\n ? 'token'\n : '';\n\n if (type && funcName === 'MockPipe') {\n throw new Error(`${funcName} accepts pipes, whereas ${funcGetName(value)} is a ${type}.`);\n }\n if (type && funcName === 'MockDirective') {\n throw new Error(`${funcName} accepts directives, whereas ${funcGetName(value)} is a ${type}.`);\n }\n if (type && funcName === 'MockComponent') {\n throw new Error(`${funcName} accepts components, whereas ${funcGetName(value)} is a ${type}.`);\n }\n if (type && funcName === 'MockModule') {\n throw new Error(`${funcName} accepts modules, whereas ${funcGetName(value)} is a ${type}.`);\n }\n};\n","export default (def: any): boolean => {\n if (!def) {\n return false;\n }\n\n if (typeof def !== 'function' && typeof def !== 'object') {\n return false;\n }\n\n if (def._isMockFunction && def.mockName && def.__annotations__) {\n return true;\n }\n\n return false;\n};\n","import funcIsMock from './func.is-mock';\nimport { MockControlValueAccessor } from './mock-control-value-accessor';\n\n/**\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockControlValueAccessor\n */\nexport const isMockControlValueAccessor = <T>(value: T): value is T & MockControlValueAccessor => {\n if (!funcIsMock(value)) {\n return false;\n }\n\n return !!value.__ngMocksConfig.isControlValueAccessor;\n};\n","import { MockedComponent } from '../mock-component/types';\nimport { MockedDirective } from '../mock-directive/types';\nimport { MockedModule } from '../mock-module/types';\nimport { MockedPipe } from '../mock-pipe/types';\n\nimport { Type } from './core.types';\nimport { isNgDef } from './func.is-ng-def';\n\nexport function isMockNgDef<T>(component: Type<T>, ngType: 'c'): component is Type<MockedComponent<T>>;\n\nexport function isMockNgDef<T>(directive: Type<T>, ngType: 'd'): directive is Type<MockedDirective<T>>;\n\nexport function isMockNgDef<T>(pipe: Type<T>, ngType: 'p'): pipe is Type<MockedPipe<T>>;\n\nexport function isMockNgDef<T>(module: Type<T>, ngType: 'm'): module is Type<MockedModule<T>>;\n\nexport function isMockNgDef<T>(module: Type<T>): module is Type<T>;\n\nexport function isMockNgDef<TComponent>(\n component: Type<TComponent> & { mockOf?: any },\n type?: 'c' | 'd' | 'p' | 'm',\n): component is Type<TComponent> {\n if (!(component as any).mockOf) {\n return false;\n }\n if (!type) {\n return true;\n }\n\n return isNgDef(component.mockOf, type as never);\n}\n","import { PipeTransform } from '@angular/core';\n\nimport { MockedComponent } from '../mock-component/types';\nimport { MockedDirective } from '../mock-directive/types';\nimport { MockedModule } from '../mock-module/types';\nimport { MockedPipe } from '../mock-pipe/types';\n\nimport { Type } from './core.types';\nimport funcIsMock from './func.is-mock';\nimport { isNgDef } from './func.is-ng-def';\n\n/**\n * Checks whether the instance derives from a mock module.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockOf\n */\nexport function isMockOf<T>(instance: any, declaration: Type<T>, ngType: 'm'): instance is MockedModule<T>;\n\n/**\n * Checks whether the instance derives from a mock component.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockOf\n */\nexport function isMockOf<T>(instance: any, declaration: Type<T>, ngType: 'c'): instance is MockedComponent<T>;\n\n/**\n * Checks whether the instance derives from a mock directive.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockOf\n */\nexport function isMockOf<T>(instance: any, declaration: Type<T>, ngType: 'd'): instance is MockedDirective<T>;\n\n/**\n * Checks whether the instance derives from a mock pipe.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockOf\n */\nexport function isMockOf<T extends PipeTransform>(\n instance: any,\n declaration: Type<T>,\n ngType: 'p',\n): instance is MockedPipe<T>;\n\n/**\n * Checks whether the instance derives from a mock type.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockOf\n */\nexport function isMockOf<T>(instance: any, declaration: Type<T>): instance is T;\n\nexport function isMockOf<T>(instance: any, declaration: Type<T>, ngType?: any): instance is T {\n return (\n funcIsMock(instance) &&\n instance.constructor === declaration &&\n (ngType ? isNgDef(instance.constructor, ngType) : isNgDef(instance.constructor))\n );\n}\n","import funcIsMock from './func.is-mock';\nimport { MockValidator } from './mock-control-value-accessor';\n\n/**\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockValidator\n */\nexport const isMockValidator = <T>(value: T): value is T & MockValidator => {\n if (!funcIsMock(value)) {\n return false;\n }\n\n return !!(value as any).__ngMocksConfig.isValidator;\n};\n","import { Injector, TemplateRef, ViewContainerRef } from '@angular/core';\n\nimport { MockConfig } from './mock';\n\nexport default <T>(\n value: T,\n): value is T &\n MockConfig & {\n __ngMocksInjector?: Injector;\n __template?: TemplateRef<any>;\n __vcr?: ViewContainerRef;\n } => {\n return value && typeof value === 'object' && !!(value as any).__ngMocksConfig;\n};\n","import { PipeTransform } from '@angular/core';\n\nimport { MockedComponent } from '../mock-component/types';\nimport { MockedDirective } from '../mock-directive/types';\nimport { MockedModule } from '../mock-module/types';\nimport { MockedPipe } from '../mock-pipe/types';\n\nimport { Type } from './core.types';\nimport { isNgDef } from './func.is-ng-def';\n\n/**\n * Checks whether the declaration is a mock one and derives from the specified module.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockedNgDefOf\n */\nexport function isMockedNgDefOf<T>(declaration: any, type: Type<T>, ngType: 'm'): declaration is Type<MockedModule<T>>;\n\n/**\n * Checks whether the declaration is a mock one and derives from the specified component.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockedNgDefOf\n */\nexport function isMockedNgDefOf<T>(\n declaration: any,\n type: Type<T>,\n ngType: 'c',\n): declaration is Type<MockedComponent<T>>;\n\n/**\n * Checks whether the declaration is a mock one and derives from the specified directive.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockedNgDefOf\n */\nexport function isMockedNgDefOf<T>(\n declaration: any,\n type: Type<T>,\n ngType: 'd',\n): declaration is Type<MockedDirective<T>>;\n\n/**\n * Checks whether the declaration is a mock one and derives from the specified pipe.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockedNgDefOf\n */\nexport function isMockedNgDefOf<T extends PipeTransform>(\n declaration: any,\n type: Type<T>,\n ngType: 'p',\n): declaration is Type<MockedPipe<T>>;\n\n/**\n * Checks whether the declaration is a mock one and derives from the specified type.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockedNgDefOf\n */\nexport function isMockedNgDefOf<T>(declaration: any, type: Type<T>): declaration is Type<T>;\n\nexport function isMockedNgDefOf<T>(declaration: any, type: Type<T>, ngType?: any): declaration is Type<T> {\n return (\n typeof declaration === 'function' && declaration.mockOf === type && (ngType ? isNgDef(declaration, ngType) : true)\n );\n}\n","import { InjectionToken, PipeTransform } from '@angular/core';\n\nimport { Type } from './core.types';\nimport { isNgInjectionToken } from './func.is-ng-injection-token';\nimport { isNgType } from './func.is-ng-type';\n\nconst isModuleCheck = (def: any, ngType?: string): boolean => (!ngType || ngType === 'm') && isNgType(def, 'NgModule');\nconst isComponentCheck = (def: any, ngType?: string): boolean =>\n (!ngType || ngType === 'c') && isNgType(def, 'Component');\nconst isDirectiveCheck = (def: any, ngType?: string): boolean =>\n (!ngType || ngType === 'd') && isNgType(def, 'Directive');\nconst isPipeCheck = (def: any, ngType?: string): boolean => (!ngType || ngType === 'p') && isNgType(def, 'Pipe');\nconst isInjectableCheck = (def: any, ngType?: string): boolean =>\n (!ngType || ngType === 'i') && isNgType(def, 'Injectable');\n\n/**\n * Checks whether a class was decorated by @NgModule.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isNgDef\n */\nexport function isNgDef(declaration: any, ngType: 'm'): declaration is Type<any>;\n\n/**\n * Checks whether a class was decorated by @Component.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isNgDef\n */\nexport function isNgDef(declaration: any, ngType: 'c'): declaration is Type<any>;\n\n/**\n * Checks whether a class was decorated by @Directive.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isNgDef\n */\nexport function isNgDef(declaration: any, ngType: 'd'): declaration is Type<any>;\n\n/**\n * Checks whether a class was decorated by @Pipe.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isNgDef\n */\nexport function isNgDef(declaration: any, ngType: 'p'): declaration is Type<PipeTransform>;\n\n/**\n * Checks whether a class was decorated by @Injectable.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isNgDef\n */\nexport function isNgDef(declaration: any, ngType: 'i'): declaration is Type<any>;\n\n/**\n * Checks whether a class was decorated by @Injectable.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isNgDef\n */\nexport function isNgDef(declaration: any, ngType: 't'): declaration is InjectionToken<any>;\n\n/**\n * Checks whether a class was decorated by a ng type.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isNgDef\n */\nexport function isNgDef(declaration: any): declaration is Type<any>;\n\nexport function isNgDef(declaration: any, ngType?: string): declaration is Type<any> {\n if (ngType === 't') {\n return isNgInjectionToken(declaration);\n }\n\n const isModule = isModuleCheck(declaration, ngType);\n const isComponent = isComponentCheck(declaration, ngType);\n const isDirective = isDirectiveCheck(declaration, ngType);\n const isPipe = isPipeCheck(declaration, ngType);\n const isInjectable = isInjectableCheck(declaration, ngType);\n\n return isModule || isComponent || isDirective || isPipe || isInjectable;\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Checks whether a variable is a real token.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isNgInjectionToken\n */\nexport const isNgInjectionToken = (token: any): token is InjectionToken<any> =>\n token && typeof token === 'object' && token.ngMetadataName === 'InjectionToken';\n","import { Provider } from '@angular/core';\n\nimport { Type } from './core.types';\nimport { isNgDef } from './func.is-ng-def';\n\n// remove after removal of A5 support\nexport interface NgModuleWithProviders<T = any> {\n ngModule: Type<T>;\n providers?: Provider[];\n}\n\n// Checks if an object implements ModuleWithProviders.\nexport const isNgModuleDefWithProviders = (declaration: any): declaration is NgModuleWithProviders =>\n declaration &&\n typeof declaration === 'object' &&\n declaration.ngModule !== undefined &&\n isNgDef(declaration.ngModule, 'm');\n","import coreReflectJit from './core.reflect.jit';\nimport { AnyType } from './core.types';\n\nexport const isNgType = (declaration: AnyType<any>, type: string): boolean =>\n coreReflectJit()\n .annotations(declaration)\n .some(annotation => annotation.ngMetadataName === type);\n","import { ɵReflectionCapabilities as ReflectionCapabilities, ɵstringify as stringify } from '@angular/core';\n\nexport class JitReflector {\n protected reflectionCapabilities: ReflectionCapabilities;\n\n public constructor() {\n this.reflectionCapabilities = new ReflectionCapabilities();\n }\n\n public annotations(typeOrFunc: any): any[] {\n return this.reflectionCapabilities.annotations(typeOrFunc);\n }\n\n public componentModuleUrl(type: any): string {\n return `./${stringify(type)}`;\n }\n\n // This does not exist in Angular 5.1.x but is required to exist in 5.2+\n public guards(): Record<keyof any, any> {\n return {};\n }\n\n public hasLifecycleHook(type: any, lcProperty: string): boolean {\n return this.reflectionCapabilities.hasLifecycleHook(type, lcProperty);\n }\n\n public parameters(typeOrFunc: any): any[][] {\n return this.reflectionCapabilities.parameters(typeOrFunc);\n }\n\n public propMetadata(typeOrFunc: any): { [key: string]: any[] } {\n return this.reflectionCapabilities.propMetadata(typeOrFunc);\n }\n\n public shallowAnnotations(): any[] {\n throw new Error('Not supported in JIT mode');\n }\n\n public tryAnnotations(typeOrFunc: any): any[] {\n return this.annotations(typeOrFunc);\n }\n}\n","// tslint:disable variable-name ban-ts-ignore\n\nimport { AsyncValidator, ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';\n\nimport { AnyType } from './core.types';\nimport { MockControlValueAccessor, MockValidator } from './mock-control-value-accessor';\n\nconst applyProxy = (proxy: any, method: string, value: any, storage?: string) => {\n if (proxy.instance && storage) {\n proxy.instance[storage] = value;\n }\n if (proxy.instance && proxy.instance[method]) {\n return proxy.instance[method](value);\n }\n};\n\nexport class MockControlValueAccessorProxy implements ControlValueAccessor {\n public instance?: Partial<MockControlValueAccessor & ControlValueAccessor>;\n\n public constructor(public readonly target?: AnyType<any>) {}\n\n public registerOnChange(fn: any): void {\n applyProxy(this, 'registerOnChange', fn, '__simulateChange');\n }\n\n public registerOnTouched(fn: any): void {\n applyProxy(this, 'registerOnTouched', fn, '__simulateTouch');\n }\n\n public setDisabledState(isDisabled: boolean): void {\n applyProxy(this, 'setDisabledState', isDisabled);\n }\n\n public writeValue(value: any): void {\n applyProxy(this, 'writeValue', value);\n }\n}\n\nexport class MockValidatorProxy implements Validator {\n public instance?: Partial<MockValidator & Validator>;\n\n public constructor(public readonly target?: AnyType<any>) {}\n\n public registerOnValidatorChange(fn: any): void {\n applyProxy(this, 'registerOnValidatorChange', fn, '__simulateValidatorChange');\n }\n\n public validate(control: any): ValidationErrors | null {\n if (this.instance && this.instance.validate) {\n return this.instance.validate(control);\n }\n\n return null;\n }\n}\n\nexport class MockAsyncValidatorProxy implements AsyncValidator {\n public instance?: Partial<MockValidator & AsyncValidator>;\n\n public constructor(public readonly target?: AnyType<any>) {}\n\n public registerOnValidatorChange(fn: any): void {\n applyProxy(this, 'registerOnValidatorChange', fn, '__simulateValidatorChange');\n }\n\n public validate(control: any): any {\n if (this.instance && this.instance.validate) {\n const result: any = this.instance.validate(control);\n\n return result === undefined ? Promise.resolve(null) : result;\n }\n\n return Promise.resolve(null);\n }\n}\n","// tslint:disable variable-name ban-ts-ignore\n\nimport { Mock } from './mock';\n\n/**\n * @deprecated use isMockControlValueAccessor or isMockValidator instead (removing in A13)\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockControlValueAccessor\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockValidator\n */\nexport class LegacyControlValueAccessor extends Mock {\n /**\n * @deprecated use isMockControlValueAccessor instead (removing in A13)\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockControlValueAccessor\n */\n public __simulateChange(value: any): void;\n // istanbul ignore next\n public __simulateChange() {\n // nothing to do.\n }\n\n // istanbul ignore next\n /**\n * @deprecated use isMockControlValueAccessor instead (removing in A13)\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockControlValueAccessor\n */\n public __simulateTouch() {\n // nothing to do.\n }\n\n // istanbul ignore next\n /**\n * @deprecated use isMockValidator instead (removing in A13)\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockValidator\n */\n public __simulateValidatorChange() {\n // nothing to do.\n }\n}\n\n/**\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockControlValueAccessor\n */\nexport interface MockControlValueAccessor {\n /**\n * @see https://ng-mocks.sudo.eu/extra/mock-form-controls\n */\n __simulateChange(value: any): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/extra/mock-form-controls\n */\n __simulateTouch(): void;\n}\n\n/**\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockValidator\n */\nexport interface MockValidator {\n /**\n * @see https://ng-mocks.sudo.eu/extra/mock-form-controls\n */\n __simulateValidatorChange(): void;\n}\n","// tslint:disable variable-name\n\nimport { EventEmitter, Injector, Optional, Self } from '@angular/core';\n\nimport { IMockBuilderConfig } from '../mock-builder/types';\nimport mockHelperStub from '../mock-helper/mock-helper.stub';\nimport mockInstanceApply from '../mock-instance/mock-instance-apply';\nimport helperMockService from '../mock-service/helper.mock-service';\n\nimport coreDefineProperty from './core.define-property';\nimport coreForm from './core.form';\nimport { mapValues } from './core.helpers';\nimport { AnyType } from './core.types';\nimport funcIsMock from './func.is-mock';\nimport { MockControlValueAccessorProxy } from './mock-control-value-accessor-proxy';\nimport ngMocksUniverse from './ng-mocks-universe';\n\nconst setValueAccessor = (instance: any, ngControl?: any) => {\n if (ngControl && !ngControl.valueAccessor && instance.__ngMocksConfig.setControlValueAccessor) {\n try {\n ngControl.valueAccessor = new MockControlValueAccessorProxy(instance.__ngMocksCtor);\n } catch {\n // nothing to do.\n }\n }\n};\n\n// connecting to NG_VALUE_ACCESSOR\nconst installValueAccessor = (ngControl: any, instance: any) => {\n if (!ngControl.valueAccessor.instance && ngControl.valueAccessor.target === instance.__ngMocksCtor) {\n ngControl.valueAccessor.instance = instance;\n helperMockService.mock(instance, 'registerOnChange');\n helperMockService.mock(instance, 'registerOnTouched');\n helperMockService.mock(instance, 'setDisabledState');\n helperMockService.mock(instance, 'writeValue');\n instance.__ngMocksConfig.isControlValueAccessor = true;\n }\n};\n\n// connecting to NG_VALIDATORS\n// connecting to NG_ASYNC_VALIDATORS\nconst installValidator = (validators: any[], instance: any) => {\n for (const validator of validators) {\n if (!validator.instance && validator.target === instance.__ngMocksCtor) {\n validator.instance = instance;\n helperMockService.mock(instance, 'registerOnValidatorChange');\n helperMockService.mock(instance, 'validate');\n instance.__ngMocksConfig.isValidator = true;\n }\n }\n};\n\nconst applyNgValueAccessor = (instance: any, ngControl: any) => {\n setValueAccessor(instance, ngControl);\n\n try {\n // istanbul ignore else\n if (ngControl) {\n installValueAccessor(ngControl, instance);\n installValidator(ngControl._rawValidators, instance);\n installValidator(ngControl._rawAsyncValidators, instance);\n }\n } catch {\n // nothing to do.\n }\n};\n\nconst applyOutputs = (instance: MockConfig & Record<keyof any, any>) => {\n const mockOutputs = [];\n for (const output of instance.__ngMocksConfig.outputs || []) {\n mockOutputs.push(output.split(':')[0]);\n }\n\n for (const output of mockOutputs) {\n if (instance[output] || Object.getOwnPropertyDescriptor(instance, output)) {\n continue;\n }\n instance[output] = new EventEmitter<any>();\n }\n};\n\nconst applyPrototype = (instance: Mock, prototype: AnyType<any>) => {\n for (const prop of [\n ...helperMockService.extractMethodsFromPrototype(prototype),\n ...helperMockService.extractPropertiesFromPrototype(prototype),\n ]) {\n const descriptor = helperMockService.extractPropertyDescriptor(prototype, prop);\n helperMockService.definePropertyDescriptor(instance, prop, descriptor);\n }\n};\n\nconst applyMethods = (instance: Mock & Record<keyof any, any>, prototype: AnyType<any>) => {\n for (const method of helperMockService.extractMethodsFromPrototype(prototype)) {\n if (instance[method] || Object.getOwnPropertyDescriptor(instance, method)) {\n continue;\n }\n helperMockService.mock(instance, method);\n }\n};\n\nconst applyProps = (instance: Mock & Record<keyof any, any>, prototype: AnyType<any>) => {\n for (const prop of helperMockService.extractPropertiesFromPrototype(prototype)) {\n if (instance[prop] || Object.getOwnPropertyDescriptor(instance, prop)) {\n continue;\n }\n helperMockService.mock(instance, prop, 'get');\n helperMockService.mock(instance, prop, 'set');\n }\n};\n\nexport type ngMocksMockConfig = {\n config?: IMockBuilderConfig;\n hostBindings?: string[];\n hostListeners?: string[];\n init?: (instance: any) => void;\n isControlValueAccessor?: boolean;\n isValidator?: boolean;\n outputs?: string[];\n queryScanKeys?: string[];\n setControlValueAccessor?: boolean;\n};\n\nconst applyOverrides = (instance: any, mockOf: any, injector?: Injector): void => {\n const configGlobal: Set<any> | undefined = ngMocksUniverse.getOverrides().get(mockOf);\n const callbacks = configGlobal ? mapValues(configGlobal) : [];\n if (instance.__ngMocksConfig.init) {\n callbacks.push(instance.__ngMocksConfig.init);\n }\n callbacks.push(...mockInstanceApply(mockOf));\n\n for (const callback of callbacks) {\n const overrides = callback(instance, injector);\n if (!overrides) {\n continue;\n }\n mockHelperStub(instance, overrides);\n }\n};\n\nexport interface MockConfig {\n __ngMocksConfig: ngMocksMockConfig;\n}\n\nexport class Mock {\n protected __ngMocksConfig!: ngMocksMockConfig;\n\n public constructor(\n injector: Injector | null = null,\n ngControl: any | null = null, // NgControl\n ) {\n const mockOf = (this.constructor as any).mockOf;\n coreDefineProperty(this, '__ngMocks', true);\n coreDefineProperty(this, '__ngMocksInjector', injector);\n coreDefineProperty(this, '__ngMocksCtor', this.constructor);\n for (const key of this.__ngMocksConfig.queryScanKeys || /* istanbul ignore next */ []) {\n coreDefineProperty(this, `__ngMocksVcr_${key}`, undefined);\n }\n for (const key of this.__ngMocksConfig.hostBindings || /* istanbul ignore next */ []) {\n helperMockService.mock(this, key, 'get');\n helperMockService.mock(this, key, 'set');\n }\n for (const key of this.__ngMocksConfig.hostListeners || /* istanbul ignore next */ []) {\n helperMockService.mock(this, key);\n }\n\n // istanbul ignore else\n if (funcIsMock(this)) {\n applyNgValueAccessor(this, ngControl);\n applyOutputs(this);\n applyPrototype(this, Object.getPrototypeOf(this));\n applyMethods(this, mockOf.prototype);\n applyProps(this, mockOf.prototype);\n }\n\n // and faking prototype\n Object.setPrototypeOf(this, mockOf.prototype);\n\n applyOverrides(this, mockOf, injector ?? undefined);\n }\n}\n\ncoreDefineProperty(Mock, 'parameters', [\n [Injector, new Optional()],\n [coreForm.NgControl || /* istanbul ignore next */ (() => undefined), new Optional(), new Self()],\n]);\n","import { Component, Directive, NgModule, Pipe, ViewContainerRef } from '@angular/core';\nimport { getTestBed, MetadataOverride, TestBed, TestBedStatic, TestModuleMetadata } from '@angular/core/testing';\n\nimport funcExtractTokens from '../mock-builder/func.extract-tokens';\nimport getOverrideDef from '../mock-builder/promise/get-override-def';\nimport { ngMocks } from '../mock-helper/mock-helper';\nimport mockHelperFasterInstall from '../mock-helper/mock-helper.faster-install';\nimport { MockProvider } from '../mock-provider/mock-provider';\nimport helperCreateClone from '../mock-service/helper.create-clone';\n\nimport coreDefineProperty from './core.define-property';\nimport { flatten, mapEntries, mapValues } from './core.helpers';\nimport coreInjector from './core.injector';\nimport coreReflectMeta from './core.reflect.meta';\nimport coreReflectModuleResolve from './core.reflect.module-resolve';\nimport coreReflectProvidedIn from './core.reflect.provided-in';\nimport { NG_MOCKS, NG_MOCKS_TOUCHES } from './core.tokens';\nimport { AnyType } from './core.types';\nimport funcGetProvider from './func.get-provider';\nimport { isNgDef } from './func.is-ng-def';\nimport { isNgModuleDefWithProviders } from './func.is-ng-module-def-with-providers';\nimport ngMocksUniverse from './ng-mocks-universe';\n\nconst applyOverride = (def: any, override: any) => {\n if (isNgDef(def, 'c')) {\n TestBed.overrideComponent(def, override);\n } else if (isNgDef(def, 'd')) {\n TestBed.overrideDirective(def, override);\n } else if (isNgDef(def, 'm')) {\n TestBed.overrideModule(def, override);\n }\n if (isNgDef(def, 't')) {\n TestBed.overrideProvider(def, override);\n } else if (isNgDef(def, 'i')) {\n TestBed.overrideProvider(def, override);\n }\n};\n\nconst applyOverrides = (overrides: Map<AnyType<any>, [MetadataOverride<any>, MetadataOverride<any>]>): void => {\n for (const [def, [override, original]] of mapEntries(overrides)) {\n (TestBed as any).ngMocksOverrides.set(def, {\n ...original,\n override,\n });\n applyOverride(def, override);\n }\n};\n\n// Thanks Ivy and its TestBed.override - it does not clean up leftovers.\nconst applyNgMocksOverrides = (testBed: TestBedStatic & { ngMocksOverrides?: Map<any, any> }): void => {\n if (testBed.ngMocksOverrides?.size) {\n ngMocks.flushTestBed();\n for (const [def, original] of mapEntries(testBed.ngMocksOverrides)) {\n applyOverride(def, original);\n }\n }\n testBed.ngMocksOverrides = undefined;\n};\n\nconst initTestBed = () => {\n if (!(TestBed as any).ngMocksSelectors) {\n coreDefineProperty(TestBed, 'ngMocksSelectors', new Map());\n }\n // istanbul ignore else\n if (!(TestBed as any).ngMocksOverrides) {\n coreDefineProperty(TestBed, 'ngMocksOverrides', new Map());\n }\n};\n\nconst generateTouchesKey = [\n 'bootstrap',\n 'declarations',\n 'entryComponents',\n 'exports',\n 'imports',\n 'providers',\n 'viewProviders',\n] as const;\n\nconst generateTouches = (\n moduleDef: Partial<TestModuleMetadata & NgModule & Directive & Pipe & Component>,\n touches: Set<any>,\n): void => {\n for (const key of generateTouchesKey) {\n for (const item of moduleDef[key] ? flatten(moduleDef[key]) : []) {\n let def = funcGetProvider(item);\n if (isNgModuleDefWithProviders(def)) {\n generateTouches(def, touches);\n def = def.ngModule;\n }\n if (touches.has(def)) {\n continue;\n }\n touches.add(def);\n if (typeof def !== 'function') {\n continue;\n }\n\n if (!def.hasOwnProperty('__ngMocksTouches')) {\n const local = new Set<any>();\n const meta = coreReflectMeta(def);\n if (meta) {\n generateTouches(meta, local);\n }\n coreDefineProperty(def, '__ngMocksTouches', local, false);\n }\n\n mapValues(def.__ngMocksTouches, touches);\n }\n }\n};\n\nconst defineTouches = (testBed: TestBed, moduleDef: TestModuleMetadata, knownTouches?: Set<any>) => {\n let touches = knownTouches;\n\n if (!touches && ngMocksUniverse.getDefaults().size) {\n touches = funcExtractTokens(\n (testBed as any)._providers || /* istanbul ignore next Ivy part */ (testBed as any)._compiler?.providers,\n ).touches;\n if (!touches) {\n touches = new Set();\n moduleDef.providers = moduleDef.providers || [];\n moduleDef.providers.push({ provide: NG_MOCKS_TOUCHES, useValue: touches });\n }\n generateTouches(moduleDef, touches);\n }\n\n return touches;\n};\n\nconst applyPlatformOverrideDef = (def: any) => {\n const ngModule = isNgModuleDefWithProviders(def) ? /* istanbul ignore next */ def.ngModule : def;\n if ((TestBed as any).ngMocksOverrides.has(ngModule)) {\n return;\n }\n\n const original = coreReflectModuleResolve(ngModule);\n const set = getOverrideDef(original);\n if (set) {\n (TestBed as any).ngMocksOverrides.set(ngModule, { set: original });\n TestBed.overrideModule(ngModule, { set });\n }\n};\n\nconst applyPlatformOverridesBasedOnProvidedIn = (provide: any, touches: Set<any>) => {\n const providedIn = coreReflectProvidedIn(provide);\n if (!providedIn) {\n return;\n }\n // knownTouches present from MockBuilder and we can rely on it,\n // otherwise we have to override the provider always.\n if (typeof providedIn !== 'string' && !touches.has(providedIn)) {\n return;\n }\n (TestBed as any).ngMocksOverrides.set(provide, {});\n TestBed.overrideProvider(provide, MockProvider(provide as never));\n};\n\nconst applyPlatformOverridesBasedOnDefaults = (touches: Set<any>) => {\n for (const [provide, [config]] of mapEntries(ngMocksUniverse.getDefaults())) {\n if (config !== 'mock') {\n continue;\n }\n if (!isNgDef(provide, 'i') && !isNgDef(provide, 't')) {\n continue;\n }\n if (touches.has(provide)) {\n continue;\n }\n if ((TestBed as any).ngMocksOverrides.has(provide)) {\n continue;\n }\n applyPlatformOverridesBasedOnProvidedIn(provide, touches);\n }\n};\n\nconst applyPlatformOverrides = (testBed: TestBed, touches: Set<any>) => {\n // istanbul ignore else\n if ((TestBed as any).ngMocksOverrides) {\n const backup = ngMocksUniverse.touches;\n ngMocksUniverse.touches = touches;\n for (const def of flatten(testBed.ngModule || /* istanbul ignore next */ [])) {\n applyPlatformOverrideDef(def);\n }\n applyPlatformOverridesBasedOnDefaults(touches);\n ngMocksUniverse.touches = backup;\n }\n};\n\nconst configureTestingModule =\n (original: TestBedStatic['configureTestingModule']): TestBedStatic['configureTestingModule'] =>\n (moduleDef: TestModuleMetadata) => {\n initTestBed();\n\n const testBed = getTestBed();\n\n const providers = funcExtractTokens(moduleDef.providers);\n const { mocks, overrides } = providers;\n // touches are important,\n // therefore we are trying to fetch them from the known providers.\n const touches = defineTouches(testBed, moduleDef, providers.touches);\n\n if (mocks) {\n ngMocks.flushTestBed();\n }\n\n // istanbul ignore else\n if (overrides) {\n applyOverrides(overrides);\n }\n // _testModuleRef exists only after the 1st call,\n // so we shouldn't override platform again.\n if (touches && !(testBed as any)._instantiated && !(testBed as any)._testModuleRef) {\n applyPlatformOverrides(testBed, touches);\n }\n\n return original.call(TestBed, moduleDef);\n };\n\nconst resetTestingModule =\n (original: TestBedStatic['resetTestingModule']): TestBedStatic['resetTestingModule'] =>\n () => {\n ngMocksUniverse.global.delete('builder:config');\n ngMocksUniverse.global.delete('builder:module');\n (TestBed as any).ngMocksSelectors = undefined;\n applyNgMocksOverrides(TestBed);\n\n return original.call(TestBed);\n };\n\nconst viewContainerInstall = () => {\n const vcr: any = ViewContainerRef;\n\n // istanbul ignore else\n if (!vcr.ngMocksOverridesInstalled) {\n const ngElementId = vcr.__NG_ELEMENT_ID__;\n\n // istanbul ignore else\n if (ngElementId) {\n coreDefineProperty(\n vcr,\n '__NG_ELEMENT_ID__',\n helperCreateClone(ngElementId, undefined, undefined, (...ngElementIdArgs: any[]) => {\n const vcrInstance = ngElementId.apply(ngElementId, ngElementIdArgs);\n\n const createComponent = vcrInstance.createComponent;\n coreDefineProperty(\n vcrInstance,\n 'createComponent',\n helperCreateClone(\n createComponent,\n undefined,\n undefined,\n (component: any, ...createComponentArgs: any[]) => {\n const map = coreInjector(NG_MOCKS, vcrInstance.injector);\n\n return createComponent.apply(vcrInstance, [\n map?.get(component) ?? component,\n ...createComponentArgs,\n ] as any);\n },\n ),\n true,\n );\n\n return vcrInstance;\n }),\n true,\n );\n }\n\n coreDefineProperty(ViewContainerRef, 'ngMocksOverridesInstalled', true);\n }\n};\n\nconst install = () => {\n // istanbul ignore else\n if (!(TestBed as any).ngMocksOverridesInstalled) {\n const hooks = mockHelperFasterInstall();\n viewContainerInstall();\n\n // istanbul ignore else\n if (hooks.before.indexOf(configureTestingModule) === -1) {\n hooks.before.push(configureTestingModule);\n }\n // istanbul ignore else\n if (hooks.after.indexOf(resetTestingModule) === -1) {\n hooks.after.push(resetTestingModule);\n }\n\n coreDefineProperty(TestBed, 'ngMocksOverridesInstalled', true);\n }\n};\n\ninstall();\n","import ngMocksUniverse from './ng-mocks-universe';\n\nexport interface NgMocksStack {\n id: object;\n level: 'root' | 'runtime';\n mockInstance?: any[];\n}\n\ntype NgMocksStackCallback = (state: NgMocksStack, stack: NgMocksStack[]) => void;\n\nconst stackRoot: NgMocksStack = { id: {}, level: 'root' };\nconst stack: NgMocksStack[] = ngMocksUniverse.global.get('reporter-stack') || [{ ...stackRoot }];\nngMocksUniverse.global.set('reporter-stack', stack);\nconst current = () => stack[stack.length - 1];\n\n// istanbul ignore next\nconst listenersPush: NgMocksStackCallback[] = ngMocksUniverse.global.get('reporter-stack-push') ?? [];\nngMocksUniverse.global.set('reporter-stack-push', listenersPush);\n\n// istanbul ignore next\nconst listenersPop: NgMocksStackCallback[] = ngMocksUniverse.global.get('reporter-stack-pop') ?? [];\nngMocksUniverse.global.set('reporter-stack-pop', listenersPop);\n\nconst stackPush = () => {\n const id = {};\n ngMocksUniverse.global.set('reporter-stack-id', id);\n const state: NgMocksStack = { id, level: 'runtime' };\n stack.push(state);\n\n for (const callback of listenersPush) {\n callback(state, stack);\n }\n};\nconst stackPop = () => {\n const state = stack.pop();\n\n // this code is actually needed for jest tests.\n // istanbul ignore if\n if (stack.length === 0) {\n stack.push(state?.level === 'root' ? state : { ...stackRoot });\n }\n\n // istanbul ignore else\n if (state && state.level !== 'root') {\n for (const callback of listenersPop) {\n callback(state, stack);\n }\n }\n\n ngMocksUniverse.global.set('reporter-stack-id', stack[stack.length - 1].id);\n};\n\n// istanbul ignore next\nconst subscribePush = (callback: NgMocksStackCallback) => {\n if (listenersPush.indexOf(callback)) {\n listenersPush.push(callback);\n }\n if (stack.length) {\n callback(stack[stack.length - 1], stack);\n }\n};\n\n// istanbul ignore next\nconst subscribePop = (callback: NgMocksStackCallback) => {\n if (listenersPop.indexOf(callback) === -1) {\n listenersPop.push(callback);\n }\n};\n\n// istanbul ignore next\nconst unsubscribePush = (callback: NgMocksStackCallback) => {\n const index = listenersPush.indexOf(callback);\n if (index !== -1) {\n listenersPush.splice(index, 1);\n }\n};\n\n// istanbul ignore next\nconst unsubscribePop = (callback: NgMocksStackCallback) => {\n const index = listenersPop.indexOf(callback);\n if (index !== -1) {\n listenersPop.splice(index, 1);\n }\n};\n\nexport default {\n current,\n stackPop,\n stackPush,\n subscribePop,\n subscribePush,\n unsubscribePop,\n unsubscribePush,\n};\n","import { InjectionToken } from '@angular/core';\n\nimport { IMockBuilderConfig } from '../mock-builder/types';\n\nimport coreConfig from './core.config';\nimport { AnyType } from './core.types';\nimport funcGetGlobal from './func.get-global';\nimport funcGetName from './func.get-name';\n\nconst globalMap = (key: string) => () => {\n if (!ngMocksUniverse.global.has(key)) {\n ngMocksUniverse.global.set(key, new Map());\n }\n\n return ngMocksUniverse.global.get(key);\n};\n\ninterface NgMocksUniverse {\n builtDeclarations: Map<any, any>;\n builtProviders: Map<any, any>;\n cacheDeclarations: Map<any, any>;\n cacheProviders: Map<any, any>;\n config: Map<any, any>;\n configInstance: Map<any, any>;\n flags: Set<string>;\n getBuildDeclaration: (def: any) => any | undefined;\n getConfigMock: () => Map<any, IMockBuilderConfig>;\n getDefaults: () => Map<any, ['mock' | 'keep' | 'replace' | 'exclude', any?]>;\n getLocalMocks: () => Array<[any, any]>;\n getOverrides: () => Map<any, any>;\n getResolution: (def: any) => undefined | 'mock' | 'keep' | 'replace' | 'exclude';\n global: Map<any, any>;\n hasBuildDeclaration: (def: any) => boolean;\n isExcludedDef: (def: any) => boolean;\n isProvidedDef: (def: any) => boolean;\n touches: Set<AnyType<any> | InjectionToken<any> | string>;\n}\n\nfuncGetGlobal().ngMocksUniverse = funcGetGlobal().ngMocksUniverse || {};\nconst ngMocksUniverse: NgMocksUniverse = funcGetGlobal().ngMocksUniverse;\n\nngMocksUniverse.builtDeclarations = new Map();\nngMocksUniverse.builtProviders = new Map();\nngMocksUniverse.cacheDeclarations = new Map();\nngMocksUniverse.cacheProviders = new Map();\nngMocksUniverse.config = new Map();\nngMocksUniverse.configInstance = new Map();\nngMocksUniverse.flags = new Set(coreConfig.flags);\nngMocksUniverse.global = new Map();\nngMocksUniverse.touches = new Set();\n\nngMocksUniverse.global.set('flags', {\n // @deprecated and will be changed in A13 to 'throw'\n onMockInstanceRestoreNeed: coreConfig.onMockInstanceRestoreNeed,\n // @deprecated and will be changed in A13 to 'throw'\n onTestBedFlushNeed: coreConfig.onTestBedFlushNeed,\n});\n\nngMocksUniverse.getOverrides = globalMap('overrides');\nngMocksUniverse.getDefaults = globalMap('defaults');\nngMocksUniverse.getConfigMock = globalMap('configMock');\n\nconst getDefaults = (def: any): [] | ['mock' | 'keep' | 'replace' | 'exclude', any?] => {\n {\n const defValue = ngMocksUniverse.getDefaults().get(def);\n if (defValue) {\n return defValue;\n }\n }\n\n {\n const defValue = typeof def === 'function' ? ngMocksUniverse.getDefaults().get(`@${funcGetName(def)}`) : undefined;\n if (defValue) {\n return defValue;\n }\n }\n\n return [];\n};\n\nngMocksUniverse.getResolution = (def: any): undefined | 'mock' | 'keep' | 'replace' | 'exclude' => {\n const set = ngMocksUniverse.config.get('ngMocksDepsResolution');\n if (set?.has(def)) {\n return set.get(def);\n }\n const [value] = getDefaults(def);\n\n return value;\n};\n\nngMocksUniverse.getBuildDeclaration = (def: any): undefined | null | any => {\n if (ngMocksUniverse.builtDeclarations.has(def)) {\n return ngMocksUniverse.builtDeclarations.get(def);\n }\n const [mode, replacement] = getDefaults(def);\n\n if (mode === 'exclude') {\n return null;\n }\n if (mode === 'keep') {\n return def;\n }\n if (mode === 'replace') {\n return replacement;\n }\n};\n\nngMocksUniverse.hasBuildDeclaration = (def: any): boolean => {\n if (ngMocksUniverse.builtDeclarations.has(def)) {\n return true;\n }\n const [mode] = getDefaults(def);\n\n return !!mode && mode !== 'mock';\n};\n\nconst hasBuildDeclaration = (def: any): boolean => ngMocksUniverse.hasBuildDeclaration(def);\nconst getBuildDeclaration = (def: any): any => ngMocksUniverse.getBuildDeclaration(def);\n\nngMocksUniverse.isExcludedDef = (def: any): boolean => {\n const resolution = ngMocksUniverse.getResolution(def);\n if (resolution && resolution !== 'exclude') {\n return false;\n }\n\n return hasBuildDeclaration(def) && getBuildDeclaration(def) === null;\n};\n\nngMocksUniverse.isProvidedDef = (def: any): boolean => hasBuildDeclaration(def) && getBuildDeclaration(def) !== null;\n\n// excluding StoreDevtoolsModule by default\nngMocksUniverse.getDefaults().set('@StoreDevtoolsModule', ['exclude']);\n\nexport default ((): NgMocksUniverse => ngMocksUniverse)();\n","import { MetadataOverride } from '@angular/core/testing';\n\nimport { flatten } from '../common/core.helpers';\nimport { NG_MOCKS, NG_MOCKS_OVERRIDES, NG_MOCKS_TOUCHES } from '../common/core.tokens';\nimport { AnyType } from '../common/core.types';\n\nexport default (\n providers: any,\n): {\n mocks?: Map<any, any>;\n overrides?: Map<AnyType<any>, [MetadataOverride<any>, MetadataOverride<any>]>;\n touches?: Set<any>;\n} => {\n let mocks: Map<any, any> | undefined;\n let overrides: Map<AnyType<any>, [MetadataOverride<any>, MetadataOverride<any>]> | undefined;\n let touches: Set<any> | undefined;\n\n for (const provide of flatten(providers || [])) {\n if (typeof provide !== 'object') {\n continue;\n }\n if (provide.provide === NG_MOCKS) {\n mocks = provide.useValue;\n }\n if (provide.provide === NG_MOCKS_OVERRIDES) {\n overrides = provide.useValue;\n }\n if (provide.provide === NG_MOCKS_TOUCHES) {\n touches = provide.useValue;\n }\n }\n\n return {\n mocks,\n overrides,\n touches,\n };\n};\n","import coreConfig from '../common/core.config';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nexport class MockBuilderStash {\n protected data: Record<keyof any, any> = {};\n\n public backup(): void {\n this.data = {\n builtDeclarations: ngMocksUniverse.builtDeclarations,\n builtProviders: ngMocksUniverse.builtProviders,\n cacheDeclarations: ngMocksUniverse.cacheDeclarations,\n cacheProviders: ngMocksUniverse.cacheProviders,\n config: ngMocksUniverse.config,\n configInstance: ngMocksUniverse.configInstance,\n flags: ngMocksUniverse.flags,\n touches: ngMocksUniverse.touches,\n };\n\n ngMocksUniverse.builtDeclarations = new Map();\n ngMocksUniverse.builtProviders = new Map();\n ngMocksUniverse.cacheDeclarations = new Map();\n ngMocksUniverse.cacheProviders = new Map();\n ngMocksUniverse.config = new Map();\n ngMocksUniverse.configInstance = new Map();\n ngMocksUniverse.flags = new Set(coreConfig.flags);\n ngMocksUniverse.touches = new Set();\n }\n\n public restore(): void {\n for (const key of Object.keys(this.data)) {\n (ngMocksUniverse as any)[key] = (this.data as any)[key];\n }\n }\n}\n","import { TestBed, TestModuleMetadata } from '@angular/core/testing';\n\nimport { mapEntries, mapValues } from '../common/core.helpers';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport { MockBuilderPromise } from './mock-builder.promise';\nimport areEqualConfigParams from './performance/are-equal-config-params';\nimport areEqualMaps from './performance/are-equal-maps';\nimport areEqualProviders from './performance/are-equal-providers';\nimport areEqualSets from './performance/are-equal-sets';\nimport getEmptyConfig from './performance/get-empty-config';\nimport requiredMetadata from './performance/required-metadata';\nimport { IMockBuilderResult } from './types';\n\nexport class MockBuilderPerformance extends MockBuilderPromise {\n public build(): TestModuleMetadata {\n const global = ngMocksUniverse.global;\n\n // avoiding influences on cache when users extend the testing module.\n if (global.has('builder:module') && global.has('builder:config') && this.equalsTo(global.get('builder:config'))) {\n return requiredMetadata(global.get('builder:module'));\n }\n\n // removal of cached promise in case of mismatch\n if (global.has('builder:module')) {\n global.delete(global.get('builder:module'));\n }\n\n const clone = this.cloneConfig();\n const ngModule = super.build();\n global.set('builder:config', clone);\n global.set('builder:module', ngModule);\n\n // avoiding influences on cache when users extend the testing module.\n return requiredMetadata(ngModule);\n }\n\n public async then<TResult1 = IMockBuilderResult>(\n fulfill?: ((value: IMockBuilderResult) => PromiseLike<TResult1>) | undefined | null,\n reject?: ((reason: any) => PromiseLike<never>) | undefined | null,\n ): Promise<TResult1> {\n const global = ngMocksUniverse.global;\n\n const flags = global.has('bullet') && global.has('builder:module') && global.has('builder:config');\n if (flags && this.equalsTo(global.get('builder:config'))) {\n return global.get(global.get('builder:module')).then(fulfill, reject);\n }\n\n // we need to reset testing module in case if we are in bullet mode but current module does not match.\n if (global.has('bullet') && global.has('bullet:reset')) {\n // tslint:disable-next-line no-console\n console.warn('ngMocks.faster has zero effect due to changes in testing module between runs');\n global.delete('bullet');\n TestBed.resetTestingModule();\n global.set('bullet', true);\n }\n\n const promise = super.then(fulfill, reject);\n global.set(global.get('builder:module'), promise);\n\n return promise;\n }\n\n private cloneConfig() {\n const config = getEmptyConfig();\n\n mapValues(this.beforeCC, config.beforeCC);\n mapValues(this.excludeDef, config.excludeDef);\n mapValues(this.keepDef, config.keepDef);\n mapValues(this.mockDef, config.mockDef);\n mapValues(this.replaceDef, config.replaceDef);\n\n mapEntries(this.configDef, config.configDef);\n mapEntries(this.defProviders, config.defProviders);\n mapEntries(this.defValue, config.defValue);\n mapEntries(this.providerDef, config.providerDef);\n\n return config;\n }\n\n private equalsTo(prototype: Record<any, any>): boolean {\n for (const key of ['beforeCC', 'keepDef', 'replaceDef', 'excludeDef', 'mockDef']) {\n if (!areEqualSets((this as any)[key], prototype[key])) {\n return false;\n }\n }\n for (const key of ['defValue']) {\n if (!areEqualMaps((this as any)[key], prototype[key])) {\n return false;\n }\n }\n for (const key of ['providerDef', 'defProviders']) {\n if (!areEqualMaps((this as any)[key], prototype[key], areEqualProviders)) {\n return false;\n }\n }\n\n return areEqualMaps(this.configDef, prototype.configDef, areEqualConfigParams);\n }\n}\n","import { Provider } from '@angular/core';\nimport { TestBed, TestModuleMetadata } from '@angular/core/testing';\n\nimport { flatten, mapValues } from '../common/core.helpers';\nimport { Type } from '../common/core.types';\nimport { isNgDef } from '../common/func.is-ng-def';\nimport { isNgModuleDefWithProviders } from '../common/func.is-ng-module-def-with-providers';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport { MockBuilderStash } from './mock-builder-stash';\nimport addMissingKeepDeclarationsAndModules from './promise/add-missing-keep-declarations-and-modules';\nimport addMissingMockDeclarationsAndModules from './promise/add-missing-mock-declarations-and-modules';\nimport addRequestedProviders from './promise/add-requested-providers';\nimport applyPlatformModules from './promise/apply-platform-modules';\nimport createNgMocksOverridesToken from './promise/create-ng-mocks-overrides-token';\nimport createNgMocksToken from './promise/create-ng-mocks-token';\nimport createNgMocksTouchesToken from './promise/create-ng-mocks-touches-token';\nimport detectWrongDeclarations from './promise/detect-wrong-declarations';\nimport handleEntryComponents from './promise/handle-entry-components';\nimport handleRootProviders from './promise/handle-root-providers';\nimport initNgModules from './promise/init-ng-modules';\nimport initUniverse from './promise/init-universe';\nimport parseMockArguments from './promise/parse-mock-arguments';\nimport parseProvider from './promise/parse-provider';\nimport { BuilderData } from './promise/types';\nimport { IMockBuilder, IMockBuilderConfig, IMockBuilderResult } from './types';\n\nconst normaliseModule = (\n module: any,\n): {\n def: Type<any>;\n providers?: Provider[];\n} =>\n isNgModuleDefWithProviders(module)\n ? { def: module.ngModule, providers: module.providers }\n : { def: module, providers: undefined };\n\nconst generateProviderValue = (provider: any, existing: any, multi: boolean): any =>\n multi ? [...(Array.isArray(existing) ? existing : /* istanbul ignore next */ []), provider] : provider;\n\nconst defaultMock = {}; // simulating Symbol\n\nexport interface MockBuilderPromise {\n [Symbol.toStringTag]: 'Promise';\n}\n\nexport class MockBuilderPromise implements IMockBuilder {\n protected beforeCC: Set<(testBed: typeof TestBed) => void> = new Set();\n protected configDef: BuilderData['configDef'] = new Map();\n protected defProviders: BuilderData['defProviders'] = new Map();\n protected defValue: BuilderData['defValue'] = new Map();\n protected excludeDef: BuilderData['excludeDef'] = new Set();\n protected keepDef: BuilderData['keepDef'] = new Set();\n protected mockDef: BuilderData['mockDef'] = new Set();\n protected providerDef: BuilderData['providerDef'] = new Map();\n protected replaceDef: BuilderData['replaceDef'] = new Set();\n protected stash: MockBuilderStash = new MockBuilderStash();\n\n public constructor() {\n // istanbul ignore else\n // tslint:disable-next-line strict-type-predicates\n if (typeof Symbol !== 'undefined') {\n (this as any)[Symbol.toStringTag] = 'Promise';\n }\n }\n\n public beforeCompileComponents(callback: (testBed: typeof TestBed) => void): this {\n this.beforeCC.add(callback);\n\n return this;\n }\n\n public build(): TestModuleMetadata {\n this.stash.backup();\n ngMocksUniverse.config.set('mockNgDefResolver', new Map());\n ngMocksUniverse.flags.add('hasRootModule');\n\n try {\n const params = this.combineParams();\n\n const ngModule = initNgModules(params, initUniverse(params));\n detectWrongDeclarations(params);\n addMissingKeepDeclarationsAndModules(ngModule, params);\n addMissingMockDeclarationsAndModules(ngModule, params);\n addRequestedProviders(ngModule, params);\n handleRootProviders(ngModule, params);\n handleEntryComponents(ngModule);\n applyPlatformModules();\n\n ngModule.providers.push(createNgMocksToken());\n ngModule.providers.push(createNgMocksTouchesToken());\n ngModule.providers.push(createNgMocksOverridesToken(this.replaceDef, this.defValue));\n\n return ngModule;\n } finally {\n ngMocksUniverse.flags.delete('hasRootModule');\n ngMocksUniverse.config.delete('mockNgDefResolver');\n this.stash.restore();\n }\n }\n\n // istanbul ignore next\n public async catch(reject?: ((reason: any) => PromiseLike<never>) | undefined | null): Promise<IMockBuilderResult> {\n return this.then().catch(reject);\n }\n\n public exclude(def: any): this {\n this.wipe(def);\n this.excludeDef.add(def);\n\n return this;\n }\n\n // istanbul ignore next\n public async finally(callback?: (() => void) | null | undefined): Promise<IMockBuilderResult> {\n return this.then().finally(callback);\n }\n\n public keep(input: any, config?: IMockBuilderConfig): this {\n const { def, providers } = normaliseModule(input);\n\n const existing = this.keepDef.has(def) ? this.defProviders.get(def) : [];\n this.wipe(def);\n this.keepDef.add(def);\n\n // a magic to support modules with providers.\n if (providers) {\n this.defProviders.set(def, [...(existing || /* istanbul ignore next */ []), ...providers]);\n }\n\n if (config) {\n this.configDef.set(def, config);\n } else {\n this.configDef.delete(def);\n }\n\n return this;\n }\n\n public mock(input: any, a1: any = defaultMock, a2?: any): this {\n const { def, providers } = normaliseModule(input);\n\n const { config, mock } = parseMockArguments(def, a1, a2, defaultMock);\n\n const existing = this.mockDef.has(def) ? this.defProviders.get(def) : [];\n this.wipe(def);\n this.mockDef.add(def);\n\n // a magic to support modules with providers.\n if (providers) {\n this.defProviders.set(def, [...(existing || /* istanbul ignore next */ []), ...providers]);\n }\n\n this.setDefValue(def, mock);\n this.setConfigDef(def, config);\n\n return this;\n }\n\n public provide(def: Provider): this {\n for (const provider of flatten(def)) {\n const { provide, multi } = parseProvider(provider);\n const existing = this.providerDef.has(provide) ? this.providerDef.get(provide) : [];\n this.wipe(provide);\n this.providerDef.set(provide, generateProviderValue(provider, existing, multi));\n }\n\n return this;\n }\n\n public replace(source: Type<any>, destination: Type<any>, config?: IMockBuilderConfig): this {\n if (!isNgDef(destination) || !isNgDef(source) || isNgDef(destination, 'i') || isNgDef(source, 'i')) {\n throw new Error(\n 'Cannot replace the declaration, both have to be a Module, a Component, a Directive or a Pipe, for Providers use `.mock` or `.provide`',\n );\n }\n\n this.wipe(source);\n this.replaceDef.add(source);\n this.defValue.set(source, destination);\n\n if (config) {\n this.configDef.set(source, config);\n } else {\n this.configDef.delete(source);\n }\n\n return this;\n }\n\n public async then<TResult1 = IMockBuilderResult>(\n fulfill?: ((value: IMockBuilderResult) => PromiseLike<TResult1>) | undefined | null,\n reject?: ((reason: any) => PromiseLike<any>) | undefined | null,\n ): Promise<TResult1> {\n const promise = new Promise((resolve: (value: IMockBuilderResult) => void): void => {\n const testBed = TestBed.configureTestingModule(this.build());\n for (const callback of mapValues(this.beforeCC)) {\n callback(testBed);\n }\n const testBedPromise = testBed.compileComponents();\n testBedPromise.then(() => {\n resolve({ testBed });\n });\n });\n\n return promise.then(fulfill, reject);\n }\n\n private combineParams(): BuilderData {\n return {\n configDef: this.configDef,\n defProviders: this.defProviders,\n defValue: this.defValue,\n excludeDef: this.excludeDef,\n keepDef: this.keepDef,\n mockDef: this.mockDef,\n providerDef: this.providerDef,\n replaceDef: this.replaceDef,\n };\n }\n\n private setConfigDef(def: any, config: any): void {\n if (config) {\n this.configDef.set(def, config);\n } else {\n this.configDef.delete(def);\n }\n }\n\n private setDefValue(def: any, mock: any): void {\n if (mock !== defaultMock) {\n this.defValue.set(def, mock);\n } else {\n this.defValue.delete(def);\n }\n }\n\n private wipe(def: Type<any>): void {\n this.defProviders.delete(def);\n this.defValue.delete(def);\n this.excludeDef.delete(def);\n this.keepDef.delete(def);\n this.mockDef.delete(def);\n this.providerDef.delete(def);\n this.replaceDef.delete(def);\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { flatten } from '../common/core.helpers';\nimport { AnyType } from '../common/core.types';\nimport { NgModuleWithProviders } from '../common/func.is-ng-module-def-with-providers';\n\nimport { MockBuilderPerformance } from './mock-builder.performance';\nimport { IMockBuilder } from './types';\n\nexport type MockBuilderParam = string | AnyType<any> | InjectionToken<any> | NgModuleWithProviders;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockBuilder\n */\nexport function MockBuilder(\n keepDeclaration?: MockBuilderParam | MockBuilderParam[] | null | undefined,\n itsModuleToMock?: MockBuilderParam | MockBuilderParam[] | null | undefined,\n): IMockBuilder {\n const instance = new MockBuilderPerformance();\n\n if (keepDeclaration) {\n for (const declaration of flatten(keepDeclaration)) {\n instance.keep(declaration, {\n export: true,\n });\n }\n }\n if (itsModuleToMock) {\n for (const declaration of flatten(itsModuleToMock)) {\n instance.mock(declaration, declaration, {\n export: true,\n exportAll: true,\n });\n }\n }\n\n return instance;\n}\n","import equalRenderConfigs from './equal-render-configs';\n\nexport default (source: any, destination: any): boolean => {\n if (destination === source) {\n return true;\n }\n if (destination.dependency !== source.dependency) {\n return false;\n }\n if (destination.export !== source.export) {\n return false;\n }\n if (destination.exportAll !== source.exportAll) {\n return false;\n }\n if (!equalRenderConfigs(source.render, destination.render)) {\n return false;\n }\n\n return true;\n};\n","import { mapKeys } from '../../common/core.helpers';\n\nexport default (source: Map<any, any>, destination: Map<any, any>, compare = (a: any, b: any) => a === b): boolean => {\n if (!destination || destination.size !== source.size) {\n return false;\n }\n for (const value of mapKeys(source)) {\n if (!destination.has(value)) {\n return false;\n }\n if (!compare(destination.get(value), source.get(value))) {\n return false;\n }\n }\n\n return true;\n};\n","import { flatten } from '../../common/core.helpers';\n\nconst areEqualProviderDefs = (thisDef: any, prototypeDef: any, ...keys: string[]) => {\n for (const key of keys) {\n if (prototypeDef && thisDef && prototypeDef[key] && thisDef[key] && prototypeDef[key] === thisDef[key]) {\n return true;\n }\n }\n\n return prototypeDef === thisDef;\n};\n\nexport default (prototype: any, source: any): boolean => {\n if (Array.isArray(prototype) !== Array.isArray(source)) {\n return false;\n }\n\n const [prototypeDefs, thisDefs] = [flatten(prototype), flatten(source)];\n if (prototypeDefs.length !== thisDefs.length) {\n return false;\n }\n\n for (let index = 0; index < prototypeDefs.length; index += 1) {\n const [prototypeDef, thisDef] = [prototypeDefs[index], thisDefs[index]];\n\n if (prototypeDef && thisDef && prototypeDef.multi !== thisDef.multi) {\n return false;\n }\n if (areEqualProviderDefs(thisDef, prototypeDef, 'useValue', 'useClass', 'useFactory', 'useExisting')) {\n continue;\n }\n\n return false;\n }\n\n return true;\n};\n","import { mapValues } from '../../common/core.helpers';\n\nexport default (source: Set<any>, destination: Set<any>): boolean => {\n if (!destination || destination.size !== source.size) {\n return false;\n }\n for (const value of mapValues(source)) {\n if (!destination.has(value)) {\n return false;\n }\n }\n\n return true;\n};\n","import equalRenderDefs from './equal-render-defs';\n\nconst objectsDiffer = (destination: any, source: any): boolean => {\n if (Object.keys(destination).length !== Object.keys(source).length) {\n return true;\n }\n for (const key of Object.keys(destination)) {\n if (!equalRenderDefs(destination[key], source[key])) {\n return true;\n }\n }\n\n return false;\n};\n\nexport default (source: any, destination: any): boolean => {\n if (!equalRenderDefs(destination, source)) {\n return false;\n }\n if (typeof destination !== 'object' || typeof source !== 'object') {\n return true;\n }\n if (objectsDiffer(destination, source)) {\n return false;\n }\n\n return true;\n};\n","import equalVariables from './equal-variables';\n\nexport default (prototype: any, source: any): boolean => {\n if (prototype === source) {\n return true;\n }\n if ((typeof prototype === 'boolean' || typeof source === 'boolean') && prototype !== source) {\n return false;\n }\n\n return prototype.$implicit === source.$implicit && equalVariables(prototype.variables, source.variables);\n};\n","const objectsDiffer = (prototype: any, source: any): boolean => {\n const prototypeKeys = Object.keys(prototype);\n const sourceKeys = Object.keys(source);\n if (prototypeKeys.length !== sourceKeys.length) {\n return true;\n }\n for (const key of prototypeKeys) {\n if (prototype[key] !== source[key]) {\n return true;\n }\n }\n\n return false;\n};\n\nexport default (prototype: any, source: any): boolean => {\n if (prototype === source) {\n return true;\n }\n if ((prototype && !source) || (!prototype && source)) {\n return false;\n }\n if (objectsDiffer(prototype, source)) {\n return false;\n }\n\n return true;\n};\n","export default () => ({\n beforeCC: new Set(),\n configDef: new Map(),\n defProviders: new Map(),\n defValue: new Map(),\n excludeDef: new Set(),\n keepDef: new Set(),\n mockDef: new Set(),\n providerDef: new Map(),\n replaceDef: new Set(),\n});\n","import { TestModuleMetadata } from '@angular/core/testing';\n\nexport default (\n ngModule: TestModuleMetadata,\n): {\n declarations: any[];\n imports: any[];\n providers: any[];\n} => ({\n declarations: [...(ngModule.declarations || /* istanbul ignore next */ [])],\n imports: [...(ngModule.imports || /* istanbul ignore next */ [])],\n providers: [...(ngModule.providers || /* istanbul ignore next */ [])],\n});\n","import { NG_MOCKS_ROOT_PROVIDERS } from '../../common/core.tokens';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport skipDep from './skip-dep';\nimport { BuilderData } from './types';\n\nexport default (parameters: Set<any>, mockDef: BuilderData['mockDef'], def: any): void => {\n if (!skipDep(def)) {\n if (mockDef.has(NG_MOCKS_ROOT_PROVIDERS) || !ngMocksUniverse.config.get('ngMocksDepsSkip').has(def)) {\n parameters.add(def);\n }\n }\n};\n","import { isNgDef } from '../../common/func.is-ng-def';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default (def: any, configDef: Map<any, any>): boolean => {\n if (!isNgDef(def, 'i') && isNgDef(def)) {\n return true;\n }\n\n const config = configDef.get(def);\n if (config?.dependency) {\n return true;\n }\n\n const configInstance = ngMocksUniverse.configInstance.get(def);\n if (ngMocksUniverse.touches.has(def) && (configInstance?.exported || !config?.export)) {\n return true;\n }\n\n return false;\n};\n","import { mapValues } from '../../common/core.helpers';\nimport { isNgInjectionToken } from '../../common/func.is-ng-injection-token';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport addMissingDefinition from './add-missing-definition';\nimport { BuilderData, NgMeta } from './types';\n\nexport default (ngModule: NgMeta, { keepDef, configDef }: BuilderData): void => {\n // Adding missed kept providers to test bed.\n for (const def of mapValues(keepDef)) {\n if (addMissingDefinition(def, configDef)) {\n continue;\n }\n\n if (isNgInjectionToken(def) || typeof def === 'string') {\n ngMocksUniverse.touches.add(def);\n continue;\n }\n ngModule.providers.push(def);\n ngMocksUniverse.touches.add(def);\n }\n};\n","import { mapValues } from '../../common/core.helpers';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport addMissingDefinition from './add-missing-definition';\nimport { BuilderData, NgMeta } from './types';\n\nexport default (ngModule: NgMeta, { mockDef, configDef }: BuilderData): void => {\n // Adding missed mock providers to test bed.\n for (const def of mapValues(mockDef)) {\n if (addMissingDefinition(def, configDef)) {\n continue;\n }\n\n const mock = ngMocksUniverse.builtProviders.get(def);\n ngModule.providers.push(mock);\n ngMocksUniverse.touches.add(def);\n }\n};\n","import { extractDependency, flatten, mapValues } from '../../common/core.helpers';\nimport funcGetProvider from '../../common/func.get-provider';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport { BuilderData, NgMeta } from './types';\n\nexport default (ngModule: NgMeta, { providerDef }: BuilderData): void => {\n // Adding requested providers to test bed.\n for (const provider of mapValues(providerDef)) {\n ngModule.providers.push(provider);\n }\n\n // Analyzing providers.\n for (const provider of flatten(ngModule.providers)) {\n const provide = funcGetProvider(provider);\n ngMocksUniverse.touches.add(provide);\n\n if (provide !== provider && (provider as any).deps) {\n extractDependency((provider as any).deps, ngMocksUniverse.config.get('ngMocksDeps'));\n }\n }\n};\n","import { getTestBed } from '@angular/core/testing';\n\nimport { flatten } from '../../common/core.helpers';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default () => {\n const testBed = getTestBed();\n // istanbul ignore else\n if (testBed.ngModule) {\n for (const def of flatten<any>(testBed.ngModule)) {\n // istanbul ignore if\n if (typeof def === 'object' && /* istanbul ignore next */ def.ngModule) {\n ngMocksUniverse.touches.add(def.ngModule);\n } else {\n ngMocksUniverse.touches.add(def);\n }\n }\n }\n};\n","export default (provide: any, bucket: any[], touched: any[]): void => {\n if (typeof provide === 'function' && touched.indexOf(provide) === -1) {\n touched.push(provide);\n bucket.push(provide);\n }\n};\n","import { ValueProvider } from '@angular/core';\nimport { MetadataOverride } from '@angular/core/testing';\n\nimport { mapValues } from '../../common/core.helpers';\nimport coreReflectMeta from '../../common/core.reflect.meta';\nimport { NG_MOCKS_OVERRIDES } from '../../common/core.tokens';\nimport { Type } from '../../common/core.types';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport getOverrideDef from './get-override-def';\nimport skipOverride from './skip-override';\n\nexport default (replaceDef: Set<any>, defValue: Map<any, any>): ValueProvider => {\n const overrides: Map<Type<any>, [MetadataOverride<any>, MetadataOverride<any>]> = new Map();\n for (const proto of mapValues(ngMocksUniverse.touches)) {\n const source: any = proto;\n const value = ngMocksUniverse.getBuildDeclaration(source) || source;\n if (skipOverride(replaceDef, defValue, source, value)) {\n continue;\n }\n\n const original = coreReflectMeta(value);\n const override = getOverrideDef(original);\n if (!override) {\n continue;\n }\n overrides.set(value, [{ set: override }, { set: original }]);\n }\n\n return {\n provide: NG_MOCKS_OVERRIDES,\n useValue: overrides,\n };\n};\n","import { ValueProvider } from '@angular/core';\n\nimport { mapEntries } from '../../common/core.helpers';\nimport { NG_MOCKS } from '../../common/core.tokens';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default (): ValueProvider => {\n const mocks = new Map();\n for (const [key, value] of [\n ...mapEntries(ngMocksUniverse.builtProviders),\n ...mapEntries(ngMocksUniverse.builtDeclarations),\n ...mapEntries(ngMocksUniverse.cacheDeclarations),\n ...mapEntries(ngMocksUniverse.cacheProviders),\n ]) {\n if (mocks.has(key)) {\n continue;\n }\n mocks.set(key, value);\n }\n\n return {\n provide: NG_MOCKS,\n useValue: mocks,\n };\n};\n","import { ValueProvider } from '@angular/core';\n\nimport { mapValues } from '../../common/core.helpers';\nimport { NG_MOCKS_TOUCHES } from '../../common/core.tokens';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default (): ValueProvider => {\n // Redefining providers for kept declarations.\n const touches = new Set();\n for (const proto of mapValues(ngMocksUniverse.touches)) {\n const source: any = proto;\n let value = ngMocksUniverse.getBuildDeclaration(source);\n\n // kept declarations should be based on their source.\n if (value === undefined) {\n value = source;\n }\n\n touches.add(source);\n touches.add(value);\n }\n\n return {\n provide: NG_MOCKS_TOUCHES,\n useValue: touches,\n };\n};\n","import { flatten, mapValues } from '../../common/core.helpers';\nimport errorJestMock from '../../common/error.jest-mock';\nimport { isNgDef } from '../../common/func.is-ng-def';\nimport { isNgInjectionToken } from '../../common/func.is-ng-injection-token';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport { BuilderData } from './types';\n\nconst skipDef = (def: any): boolean =>\n ngMocksUniverse.touches.has(def) || isNgDef(def) || isNgInjectionToken(def) || typeof def === 'string';\n\nexport default (params: BuilderData): void => {\n for (const def of flatten([mapValues(params.keepDef), mapValues(params.mockDef)])) {\n if (skipDef(def)) {\n continue;\n }\n errorJestMock(def);\n }\n};\n","// Extracts dependency among flags of parameters.\n\nconst detectForwardRed = (provide: any): any => {\n if (typeof provide === 'function' && provide.__forward_ref__) {\n return provide();\n }\n\n return provide;\n};\n\nexport default (decorators?: any[]): any => {\n if (!decorators) {\n return;\n }\n\n let provide: any;\n for (const decorator of decorators) {\n if (decorator && typeof decorator === 'object' && decorator.token) {\n provide = decorator.token;\n }\n if (!provide && decorator && (typeof decorator !== 'object' || !decorator.ngMetadataName)) {\n provide = decorator;\n }\n }\n\n return detectForwardRed(provide);\n};\n","import { Directive, NgModule } from '@angular/core';\n\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\nimport mockNgDef from '../../mock-module/mock-ng-def';\n\nexport default (meta?: Directive | NgModule): NgModule | undefined => {\n if (!meta) {\n return undefined;\n }\n\n const skipMock = ngMocksUniverse.flags.has('skipMock');\n // istanbul ignore else\n if (!skipMock) {\n ngMocksUniverse.flags.add('skipMock');\n }\n const [changed, def] = mockNgDef(meta);\n // istanbul ignore else\n if (!skipMock) {\n ngMocksUniverse.flags.delete('skipMock');\n }\n if (!changed) {\n return undefined;\n }\n\n return def;\n};\n","import coreReflectJit from '../../common/core.reflect.jit';\nimport { NG_MOCKS_ROOT_PROVIDERS } from '../../common/core.tokens';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport addDefToRootProviderParameters from './add-def-to-root-provider-parameters';\nimport checkRootProviderDependency from './check-root-provider-dependency';\nimport extractDep from './extract-dep';\nimport getRootProvidersData from './get-root-providers-data';\nimport handleProvidedInDependency from './handle-provided-in-dependency';\nimport skipRootProviderDependency from './skip-root-provider-dependency';\nimport { BuilderData } from './types';\n\nexport default (mockDef: BuilderData['mockDef']): Set<any> => {\n const parameters = new Set();\n const { buckets, touched } = getRootProvidersData();\n\n for (const bucket of buckets) {\n for (const def of bucket) {\n addDefToRootProviderParameters(parameters, mockDef, def);\n\n for (const decorators of coreReflectJit().parameters(def)) {\n const provide: any = extractDep(decorators);\n handleProvidedInDependency(provide);\n if (skipRootProviderDependency(provide)) {\n continue;\n }\n checkRootProviderDependency(provide, touched, bucket);\n if (mockDef.has(NG_MOCKS_ROOT_PROVIDERS) || !ngMocksUniverse.config.get('ngMocksDepsSkip').has(def)) {\n parameters.add(provide);\n } else {\n ngMocksUniverse.config.get('ngMocksDepsSkip').add(provide);\n }\n }\n }\n }\n\n return parameters;\n};\n","import { mapValues } from '../../common/core.helpers';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default (): {\n buckets: any[];\n touched: any[];\n} => {\n // We need buckets here to process first all depsSkip, then deps and only after that all other defs.\n const buckets: any[] = [\n mapValues(ngMocksUniverse.config.get('ngMocksDepsSkip')),\n mapValues(ngMocksUniverse.config.get('ngMocksDeps')),\n mapValues(ngMocksUniverse.touches),\n ];\n\n // Also we need to track what has been touched to check params recursively, but avoiding duplicates.\n const touched: any[] = [].concat(...buckets);\n\n return {\n buckets,\n touched,\n };\n};\n","import * as module from '@angular/core';\n\nlet isIvy = false;\ntry {\n // tslint:disable-next-line no-require-imports no-var-requires\n isIvy = module.ɵivyEnabled;\n} catch {\n // nothing to do\n}\n\nimport coreDefineProperty from '../../common/core.define-property';\nimport { extendClass } from '../../common/core.helpers';\nimport { NG_MOCKS } from '../../common/core.tokens';\nimport { isNgDef } from '../../common/func.is-ng-def';\nimport helperCreateClone from '../../mock-service/helper.create-clone';\n\nimport { NgMeta } from './types';\n\nclass EntryComponentsModule {\n protected originCFR: module.ComponentFactoryResolver['resolveComponentFactory'];\n\n public constructor(map: Map<any, any>, protected componentFactoryResolver: module.ComponentFactoryResolver) {\n this.originCFR = componentFactoryResolver.resolveComponentFactory;\n componentFactoryResolver.resolveComponentFactory = helperCreateClone(\n this.originCFR,\n undefined,\n undefined,\n (component: any, ...args: any[]) =>\n this.originCFR.apply(componentFactoryResolver, [map.get(component) ?? component, ...args] as any),\n );\n }\n}\ncoreDefineProperty(EntryComponentsModule, 'parameters', [[NG_MOCKS], [module.ComponentFactoryResolver]]);\n\nexport default (ngModule: NgMeta): void => {\n const entryComponents: any[] = [];\n for (const declaration of ngModule.declarations) {\n if (isNgDef(declaration, 'c')) {\n entryComponents.push(declaration);\n }\n }\n // the way to cause entryComponents to do its work\n const entryModule = extendClass(EntryComponentsModule);\n module.NgModule({\n // Ivy knows how to make any component an entry point,\n // but we still would like to patch resolveComponentFactory in order to provide mocks.\n entryComponents: isIvy ? [] : /* istanbul ignore next */ entryComponents,\n })(entryModule);\n ngModule.imports.push(entryModule);\n};\n","import coreReflectProvidedIn from '../../common/core.reflect.provided-in';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default (provide: any): void => {\n if (ngMocksUniverse.touches.has(provide)) {\n return;\n }\n\n const providedIn = coreReflectProvidedIn(provide);\n if (!providedIn) {\n return;\n }\n\n if (ngMocksUniverse.config.get('ngMocksDepsSkip').has(providedIn)) {\n ngMocksUniverse.config.get('ngMocksDepsSkip').add(provide);\n }\n};\n","import { mapValues } from '../../common/core.helpers';\nimport { NG_MOCKS_ROOT_PROVIDERS } from '../../common/core.tokens';\nimport { isNgInjectionToken } from '../../common/func.is-ng-injection-token';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\nimport helperResolveProvider from '../../mock-service/helper.resolve-provider';\nimport helperUseFactory from '../../mock-service/helper.use-factory';\n\nimport getRootProviderParameters from './get-root-provider-parameters';\nimport { BuilderData, NgMeta } from './types';\n\n// Mocking root providers.\nexport default (ngModule: NgMeta, { keepDef, mockDef }: BuilderData): void => {\n // Adding missed providers.\n const parameters = keepDef.has(NG_MOCKS_ROOT_PROVIDERS) ? new Set() : getRootProviderParameters(mockDef);\n if (parameters.size) {\n const parametersMap = new Map();\n for (const parameter of mapValues(parameters)) {\n const mock = helperResolveProvider(parameter, parametersMap);\n if (mock) {\n ngModule.providers.push(mock);\n } else if (isNgInjectionToken(parameter)) {\n const multi =\n ngMocksUniverse.config.has('ngMocksMulti') && ngMocksUniverse.config.get('ngMocksMulti').has(parameter);\n ngModule.providers.push(helperUseFactory(parameter, () => (multi ? [] : undefined)));\n }\n }\n }\n};\n","import { mapValues } from '../../common/core.helpers';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default (excludeDef: Set<any>): void => {\n for (const def of [...mapValues(excludeDef)]) {\n ngMocksUniverse.builtDeclarations.set(def, null);\n ngMocksUniverse.builtProviders.set(def, null);\n ngMocksUniverse.config.get('ngMocksDepsResolution').set(def, 'exclude');\n }\n};\n","import { mapValues } from '../../common/core.helpers';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default (keepDef: Set<any>): void => {\n for (const def of mapValues(keepDef)) {\n ngMocksUniverse.builtDeclarations.set(def, def);\n ngMocksUniverse.builtProviders.set(def, def);\n ngMocksUniverse.config.get('ngMocksDepsResolution').set(def, 'keep');\n }\n};\n","import { mapValues } from '../../common/core.helpers';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport tryMockDeclaration from './try-mock-declaration';\nimport tryMockProvider from './try-mock-provider';\n\nexport default (mockDef: Set<any>, defValue: Map<any, any>): void => {\n for (const def of mapValues(mockDef)) {\n ngMocksUniverse.config.get('ngMocksDepsResolution').set(def, 'mock');\n tryMockDeclaration(def, defValue);\n tryMockProvider(def, defValue);\n\n ngMocksUniverse.touches.delete(def);\n }\n};\n","import { ModuleWithProviders } from '@angular/core';\n\nimport { Type } from '../../common/core.types';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport { BuilderData } from './types';\n\nexport default (def: Type<any>, defProviders: BuilderData['defProviders']): Type<any> | ModuleWithProviders<any> => {\n const loModule = ngMocksUniverse.getBuildDeclaration(def);\n const loProviders = defProviders.has(def) ? defProviders.get(def) : undefined;\n\n return loProviders\n ? {\n ngModule: loModule,\n providers: loProviders,\n }\n : loModule;\n};\n","import { mapValues } from '../../common/core.helpers';\nimport { isNgDef } from '../../common/func.is-ng-def';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\nimport { MockModule } from '../../mock-module/mock-module';\nimport mockNgDef from '../../mock-module/mock-ng-def';\n\nexport default (\n keepDef: Set<any>,\n mockDef: Set<any>,\n replaceDef: Set<any>,\n defProviders: Map<any, any>,\n): Map<any, any> => {\n const loProviders = new Map();\n\n for (const def of [...mapValues(keepDef), ...mapValues(mockDef), ...mapValues(replaceDef)]) {\n if (!isNgDef(def, 'm')) {\n continue;\n }\n\n if (defProviders.has(def)) {\n if (!mockDef.has(def)) {\n ngMocksUniverse.flags.add('skipMock');\n }\n const [, loDef] = mockNgDef({ providers: defProviders.get(def) });\n loProviders.set(def, loDef.providers);\n ngMocksUniverse.flags.delete('skipMock');\n }\n\n ngMocksUniverse.builtDeclarations.set(def, MockModule(def));\n ngMocksUniverse.touches.delete(def);\n }\n\n return loProviders;\n};\n","import { flatten, mapValues } from '../../common/core.helpers';\nimport funcGetProvider from '../../common/func.get-provider';\nimport { isNgDef } from '../../common/func.is-ng-def';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport initModule from './init-module';\nimport skipInitModule from './skip-init-module';\nimport { BuilderData, NgMeta } from './types';\n\nconst handleDef = ({ imports, declarations }: NgMeta, def: any, defProviders: Map<any, any>): void => {\n if (isNgDef(def, 'm')) {\n const extendedDef = initModule(def, defProviders);\n imports.push(extendedDef);\n\n // adding providers to touches\n if (typeof extendedDef === 'object' && extendedDef.providers) {\n for (const provider of flatten(extendedDef.providers)) {\n ngMocksUniverse.touches.add(funcGetProvider(provider));\n }\n }\n } else {\n declarations.push(ngMocksUniverse.getBuildDeclaration(def));\n }\n\n ngMocksUniverse.touches.add(def);\n};\n\nexport default ({ configDef, keepDef, mockDef, replaceDef }: BuilderData, defProviders: Map<any, any>): NgMeta => {\n const meta: NgMeta = { imports: [], declarations: [], providers: [] };\n\n // Adding suitable leftovers.\n for (const def of [...mapValues(mockDef), ...mapValues(keepDef), ...mapValues(replaceDef)]) {\n if (skipInitModule(def, configDef)) {\n continue;\n }\n handleDef(meta, def, defProviders);\n }\n\n return meta;\n};\n","import { mapValues } from '../../common/core.helpers';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default (replaceDef: Set<any>, defValue: Map<any, any>): void => {\n for (const def of mapValues(replaceDef)) {\n ngMocksUniverse.builtDeclarations.set(def, defValue.get(def));\n ngMocksUniverse.config.get('ngMocksDepsResolution').set(def, 'replace');\n }\n};\n","import { mapEntries } from '../../common/core.helpers';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport initExcludeDef from './init-exclude-def';\nimport initKeepDef from './init-keep-def';\nimport initMockDeclarations from './init-mock-declarations';\nimport initModules from './init-modules';\nimport initReplaceDef from './init-replace-def';\nimport { BuilderData } from './types';\n\nexport default ({\n configDef,\n defProviders,\n defValue,\n excludeDef,\n keepDef,\n mockDef,\n replaceDef,\n}: BuilderData): Map<any, any> => {\n ngMocksUniverse.flags.add('cachePipe');\n\n // collecting multi flags of providers.\n ngMocksUniverse.config.set('ngMocksMulti', new Set());\n // collecting all deps of providers.\n ngMocksUniverse.config.set('ngMocksDeps', new Set());\n // collecting all declarations of kept modules.\n ngMocksUniverse.config.set('ngMocksDepsSkip', new Set());\n // flags to understand how to mock nested declarations.\n ngMocksUniverse.config.set('ngMocksDepsResolution', new Map());\n for (const [k, v] of mapEntries(configDef)) {\n ngMocksUniverse.config.set(k, {\n ...ngMocksUniverse.getConfigMock().get(k),\n ...v,\n });\n }\n initKeepDef(keepDef);\n initReplaceDef(replaceDef, defValue);\n initExcludeDef(excludeDef);\n initMockDeclarations(mockDef, defValue);\n\n return initModules(keepDef, mockDef, replaceDef, defProviders);\n};\n","import { isNgDef } from '../../common/func.is-ng-def';\n\nexport default (\n def: any,\n a1: any,\n a2: any,\n defaultMockValue: any,\n): {\n config: any;\n mock: any;\n} => {\n let mock: any = def === a1 ? defaultMockValue : a1;\n let config: any = a2 ? a2 : a1 !== defaultMockValue ? a1 : undefined;\n if (isNgDef(def, 'p') && typeof a1 === 'function' && a1 !== def) {\n mock = a1;\n config = a2;\n } else if (isNgDef(def, 'i') || !isNgDef(def)) {\n config = a2;\n }\n mock = mock === config ? defaultMockValue : mock;\n\n return {\n config,\n mock,\n };\n};\n","import funcGetProvider from '../../common/func.get-provider';\n\nexport default (\n provider: any,\n): {\n multi: boolean;\n provide: any;\n} => {\n const provide = funcGetProvider(provider);\n const multi = provide !== provider && provider.multi;\n\n return {\n multi,\n provide,\n };\n};\n","import { DOCUMENT } from '@angular/common';\n\nimport coreConfig from '../../common/core.config';\nimport coreReflectProvidedIn from '../../common/core.reflect.provided-in';\nimport { isNgInjectionToken } from '../../common/func.is-ng-injection-token';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nconst skipResolution = (provide: any): boolean | undefined => {\n const resolution = ngMocksUniverse.getResolution(provide);\n if (resolution === 'keep' || resolution === 'exclude') {\n return true;\n }\n if (resolution === 'mock') {\n return false;\n }\n\n return undefined;\n};\n\nconst skipSystem = (provide: any): boolean => {\n if (!provide || provide === DOCUMENT || ngMocksUniverse.touches.has(provide)) {\n return true;\n }\n const skipByResolution = skipResolution(provide);\n if (skipByResolution !== undefined) {\n return skipByResolution;\n }\n\n if (typeof provide === 'function' && coreConfig.neverMockProvidedFunction.indexOf(provide.name) !== -1) {\n return true;\n }\n // istanbul ignore if because we mock BrowserModule\n if (isNgInjectionToken(provide) && coreConfig.neverMockToken.indexOf(provide.toString()) !== -1) {\n return true;\n }\n\n return false;\n};\n\n// Checks if we should avoid mocking of the provider.\nexport default (provide: any): boolean => {\n if (skipSystem(provide)) {\n return true;\n }\n\n // Empty providedIn or things for a platform have to be skipped.\n const providedIn = coreReflectProvidedIn(provide);\n const skip = !providedIn || providedIn === 'platform';\n if (typeof provide === 'function' && skip) {\n return true;\n }\n\n return false;\n};\n","import { isNgDef } from '../../common/func.is-ng-def';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport { BuilderData } from './types';\n\nexport default (def: any, configDef: BuilderData['configDef']): boolean => {\n if (isNgDef(def, 'i') || !isNgDef(def)) {\n return true;\n }\n if (ngMocksUniverse.touches.has(def)) {\n return true;\n }\n\n const config = configDef.get(def);\n\n return config && config.dependency;\n};\n","import ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport { BuilderData } from './types';\n\nexport default (\n replaceDef: BuilderData['replaceDef'],\n defValue: BuilderData['defValue'],\n source: any,\n value: any,\n): boolean => {\n // no reason to touch mocks\n if (ngMocksUniverse.cacheDeclarations.has(value)) {\n return true;\n }\n\n // no customizations in replacements\n if (replaceDef.has(source) && value === defValue.get(source)) {\n return true;\n }\n\n return false;\n};\n","import ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport skipDep from './skip-dep';\n\nexport default (provide: any): boolean => {\n if (skipDep(provide)) {\n return true;\n }\n\n return ngMocksUniverse.config.get('ngMocksDepsSkip').has(provide);\n};\n","import { isNgDef } from '../../common/func.is-ng-def';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\nimport { MockComponent } from '../../mock-component/mock-component';\nimport { MockDirective } from '../../mock-directive/mock-directive';\nimport { MockPipe } from '../../mock-pipe/mock-pipe';\n\nexport default (def: any, defValue: Map<any, any>): void => {\n if (isNgDef(def, 'c')) {\n ngMocksUniverse.builtDeclarations.set(def, MockComponent(def));\n }\n if (isNgDef(def, 'd')) {\n ngMocksUniverse.builtDeclarations.set(def, MockDirective(def));\n }\n if (isNgDef(def, 'p')) {\n const instance = defValue.get(def);\n ngMocksUniverse.builtDeclarations.set(\n def,\n typeof instance === 'function'\n ? MockPipe(def, instance)\n : instance && typeof instance === 'object' && typeof instance.transform === 'function'\n ? MockPipe(def, instance.transform)\n : MockPipe(def),\n );\n }\n};\n","import { isNgDef } from '../../common/func.is-ng-def';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\nimport mockHelperStub from '../../mock-helper/mock-helper.stub';\nimport helperUseFactory from '../../mock-service/helper.use-factory';\nimport mockProvider from '../../mock-service/mock-provider';\nimport { IMockBuilderConfigMock } from '../types';\n\nconst createInstance = (existing: any, instance: any, config: IMockBuilderConfigMock, isPipeFunc: boolean): any => {\n const params = isPipeFunc ? { transform: instance } : instance;\n if (config.precise) {\n return params;\n }\n\n return mockHelperStub(existing, params);\n};\n\nexport default (def: any, defValue: Map<any, any>): void => {\n if (isNgDef(def, 'i') && defValue.has(def)) {\n const config: IMockBuilderConfigMock = ngMocksUniverse.config.get(def) || {};\n const instance = defValue.get(def);\n const isPipeFunc = isNgDef(def, 'p') && typeof instance === 'function';\n ngMocksUniverse.builtProviders.set(\n def,\n helperUseFactory(def, undefined, existing => createInstance(existing, instance, config, isPipeFunc)),\n );\n } else if (isNgDef(def, 'i')) {\n ngMocksUniverse.builtProviders.set(def, mockProvider(def, true));\n }\n\n if (!isNgDef(def) && defValue.has(def)) {\n const instance = defValue.get(def);\n ngMocksUniverse.builtProviders.set(\n def,\n helperUseFactory(def, undefined, () => instance),\n );\n } else if (!isNgDef(def)) {\n ngMocksUniverse.builtProviders.set(def, mockProvider(def, true));\n }\n};\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n EmbeddedViewRef,\n Injector,\n Optional,\n QueryList,\n Self,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\n\nimport coreDefineProperty from '../common/core.define-property';\nimport coreForm from '../common/core.form';\nimport coreReflectDirectiveResolve from '../common/core.reflect.directive-resolve';\nimport { Type } from '../common/core.types';\nimport funcIsMock from '../common/func.is-mock';\nimport { MockConfig } from '../common/mock';\nimport { LegacyControlValueAccessor } from '../common/mock-control-value-accessor';\nimport decorateDeclaration from '../mock/decorate-declaration';\nimport getMock from '../mock/get-mock';\n\nimport generateTemplate from './render/generate-template';\nimport getKey from './render/get-key';\nimport { MockedComponent } from './types';\n\nconst mixRenderPrepareVcr = (\n instance: MockConfig & Record<keyof any, any>,\n type: string,\n selector: string,\n cdr: ChangeDetectorRef,\n): ViewContainerRef | undefined => {\n if (!instance[`ngMocksRender_${type}_${selector}`]) {\n instance[`ngMocksRender_${type}_${selector}`] = true;\n cdr.detectChanges();\n }\n\n return instance[`__mockView_${type}_${selector}`];\n};\n\nconst mixRenderReorderViews = (\n viewContainer: ViewContainerRef,\n views: Array<EmbeddedViewRef<any>>,\n index: number,\n): void => {\n for (const view of views.splice(index + 1)) {\n view.destroy();\n }\n\n let viewIndex = 0;\n for (const view of views) {\n if (!view) {\n continue;\n }\n viewContainer.move(view, viewIndex);\n viewIndex += 1;\n }\n};\n\nconst mixRenderApplyContext = (view: EmbeddedViewRef<any>, context: Record<any, any>): void => {\n for (const contextKey of Object.keys(view.context)) {\n view.context[contextKey] = undefined;\n }\n for (const contextKey of Object.keys(context)) {\n view.context[contextKey] = (context as any)[contextKey];\n }\n view.markForCheck();\n};\n\nconst mixRenderHandleViews = (\n vcr: ViewContainerRef,\n cdr: ChangeDetectorRef,\n templates: any[],\n views: Array<EmbeddedViewRef<any>>,\n indices: undefined | number[],\n context: Record<any, any>,\n): number => {\n let index = -1;\n\n for (const templateRef of templates) {\n index += 1;\n views[index] = views[index] || undefined;\n if ((indices && indices.indexOf(index) === -1) || !templateRef) {\n continue;\n }\n if (!(templateRef instanceof TemplateRef)) {\n throw new Error(`Cannot find TemplateRef`);\n }\n if (!views[index]) {\n views[index] = vcr.createEmbeddedView(templateRef, {});\n }\n mixRenderApplyContext(views[index], context);\n }\n cdr.detectChanges();\n\n return index;\n};\n\nconst mixRender = (instance: MockConfig & Record<keyof any, any>, cdr: ChangeDetectorRef): void => {\n // Providing a method to render any @ContentChild based on its selector.\n coreDefineProperty(\n instance,\n '__render',\n (contentChildSelector: string | [string, ...number[]], $implicit?: any, variables?: Record<keyof any, any>) => {\n const [type, key, selector, indices] = getKey(contentChildSelector);\n\n const vcr = mixRenderPrepareVcr(instance, type, selector, cdr);\n if (!vcr) {\n return;\n }\n\n const property: any = instance[key];\n const templates = property instanceof QueryList ? property.toArray() : [property];\n\n const views = instance[`ngMocksRender_${type}_${selector}_views`] || [];\n const index = mixRenderHandleViews(vcr, cdr, templates, views, indices, { ...variables, $implicit });\n\n mixRenderReorderViews(vcr, views, index);\n instance[`ngMocksRender_${type}_${selector}_views`] = views;\n cdr.detectChanges();\n },\n );\n};\n\nconst mixHideHandler = (\n instance: MockConfig & Record<keyof any, any>,\n type: string,\n selector: string,\n indices: undefined | number[],\n) => {\n const views = instance[`ngMocksRender_${type}_${selector}_views`];\n let index = -1;\n for (const view of views) {\n index += 1;\n if ((indices && indices.indexOf(index) === -1) || !view) {\n continue;\n }\n view.destroy();\n views[index] = undefined;\n }\n};\n\nconst mixHide = (instance: MockConfig & Record<keyof any, any>, changeDetector: ChangeDetectorRef): void => {\n // Providing method to hide any @ContentChild based on its selector.\n coreDefineProperty(instance, '__hide', (contentChildSelector: string | [string, ...number[]]) => {\n const [type, , selector, indices] = getKey(contentChildSelector);\n\n if (!instance[`ngMocksRender_${type}_${selector}`]) {\n return;\n }\n mixHideHandler(instance, type, selector, indices);\n\n if (!indices) {\n instance[`ngMocksRender_${type}_${selector}`] = false;\n }\n changeDetector.detectChanges();\n });\n};\n\nclass ComponentMockBase extends LegacyControlValueAccessor implements AfterContentInit {\n // istanbul ignore next\n public constructor(\n injector: Injector,\n ngControl: any, // NgControl\n changeDetector: ChangeDetectorRef,\n ) {\n super(injector, ngControl);\n if (funcIsMock(this)) {\n mixRender(this, changeDetector);\n mixHide(this, changeDetector);\n }\n }\n\n public ngAfterContentInit(): void {\n const config = (this.__ngMocksConfig as any).config;\n if (!(this as any).__rendered && config && config.render) {\n for (const block of Object.keys(config.render)) {\n const { $implicit, variables } =\n config.render[block] !== true\n ? config.render[block]\n : {\n $implicit: undefined,\n variables: {},\n };\n (this as any).__render(block, $implicit, variables);\n }\n (this as any).__rendered = true;\n }\n }\n}\n\ncoreDefineProperty(ComponentMockBase, 'parameters', [\n [Injector],\n [coreForm.NgControl || /* istanbul ignore next */ (() => undefined), new Optional(), new Self()],\n [ChangeDetectorRef],\n]);\n\nconst decorateClass = (component: Type<any>, mock: Type<any>): void => {\n const meta = coreReflectDirectiveResolve(component);\n const template = generateTemplate(meta.queries);\n const mockParams = { exportAs: meta.exportAs, selector: meta.selector, template };\n Component(decorateDeclaration(component, mock, meta, mockParams))(mock);\n};\n\nexport function MockComponents(...components: Array<Type<any>>): Array<Type<MockedComponent<any>>> {\n return components.map(MockComponent);\n}\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockComponent\n */\nexport function MockComponent<TComponent>(component: Type<TComponent>): Type<MockedComponent<TComponent>> {\n return getMock(component, 'c', 'MockComponent', 'cacheComponent', ComponentMockBase, decorateClass);\n}\n","import { Query, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\n\nconst viewChildArgs: any = { read: ViewContainerRef, static: false };\n\nconst viewChildTemplate = (selector: string, key: string): string =>\n `<div *ngIf=\"ngMocksRender_${key}_${selector}\" data-${key}=\"${selector}\"><ng-template #${key}_${selector}></ng-template></div>`;\n\nconst isTemplateRefQuery = (query: Query): boolean => {\n if (query.isViewQuery) {\n return false; // ignoring all internal @ViewChild\n }\n if (query.read && query.read !== TemplateRef) {\n return false; // ignoring read of instances\n }\n if (typeof query.selector !== 'string' && !query.read) {\n return false; // ignoring class selectors if they do not read TemplateRef\n }\n\n return true;\n};\n\nexport default (queries?: Record<keyof any, any>): string => {\n const parts = [`<ng-content></ng-content>`];\n // istanbul ignore if\n if (!queries) {\n return parts.join('');\n }\n\n for (const key of Object.keys(queries)) {\n const query: Query = queries[key];\n if (!isTemplateRefQuery(query)) {\n continue;\n }\n if (typeof query.selector === 'string') {\n const selector = query.selector.replace(new RegExp('[^a-zA-Z0-9_]', 'mg'), '_');\n queries[`__mockView_key_${selector}`] = new ViewChild(`key_${selector}`, viewChildArgs);\n queries[`__mockTpl_key_${selector}`] = query;\n parts.push(viewChildTemplate(selector, 'key'));\n }\n queries[`__mockView_prop_${key}`] = new ViewChild(`prop_${key}`, viewChildArgs);\n parts.push(viewChildTemplate(key, 'prop'));\n }\n\n return parts.join('');\n};\n","export default (\n contentChildSelector: string | [string, ...number[]],\n): [string, string, string, undefined | number[]] => {\n if (typeof contentChildSelector === 'string') {\n return ['key', `__mockTpl_key_${contentChildSelector}`, contentChildSelector, undefined];\n }\n\n const [key, ...indices] = contentChildSelector;\n\n return ['prop', key, key, indices.length ? indices : undefined];\n};\n","// tslint:disable strict-type-predicates\n\nimport { Type } from '../common/core.types';\nimport errorJestMock from '../common/error.jest-mock';\nimport funcGetName from '../common/func.get-name';\nimport { isNgDef } from '../common/func.is-ng-def';\nimport { MockComponent } from '../mock-component/mock-component';\nimport { MockedComponent } from '../mock-component/types';\nimport { MockDirective } from '../mock-directive/mock-directive';\nimport { MockedDirective } from '../mock-directive/types';\nimport { MockPipe } from '../mock-pipe/mock-pipe';\nimport { MockedPipe } from '../mock-pipe/types';\n\nexport function MockDeclarations(...declarations: Array<Type<any>>): Array<Type<any>> {\n return declarations.map(MockDeclaration);\n}\n\nexport function MockDeclaration<T>(declaration: Type<T>): Type<MockedPipe<T> | MockedDirective<T> | MockedComponent<T>>;\n\nexport function MockDeclaration<T>(\n declaration: Type<T>,\n): Type<MockedPipe<T> | MockedDirective<T> | MockedComponent<T>> {\n if (isNgDef(declaration, 'p')) {\n return MockPipe(declaration);\n }\n if (isNgDef(declaration, 'c')) {\n return MockComponent(declaration);\n }\n if (isNgDef(declaration, 'd')) {\n return MockDirective(declaration);\n }\n\n errorJestMock(declaration);\n throw new Error(\n [\n 'MockDeclaration does not know how to mock',\n typeof declaration === 'function' ? funcGetName(declaration) : declaration,\n ].join(' '),\n );\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Injector,\n OnInit,\n Optional,\n Self,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\n\nimport coreDefineProperty from '../common/core.define-property';\nimport coreForm from '../common/core.form';\nimport coreReflectDirectiveResolve from '../common/core.reflect.directive-resolve';\nimport { Type } from '../common/core.types';\nimport { LegacyControlValueAccessor } from '../common/mock-control-value-accessor';\nimport decorateDeclaration from '../mock/decorate-declaration';\nimport getMock from '../mock/get-mock';\n\nimport { MockedDirective } from './types';\n\nclass DirectiveMockBase extends LegacyControlValueAccessor implements OnInit {\n // istanbul ignore next\n public constructor(\n injector: Injector,\n ngControl: any, // NgControl\n cdr: ChangeDetectorRef,\n vcr: ViewContainerRef,\n element: ElementRef | null = null,\n template: TemplateRef<any> | null = null,\n ) {\n super(injector, ngControl);\n this.__ngMocksInstall(vcr, cdr, element, template);\n }\n\n public ngOnInit(): void {\n const config = (this.__ngMocksConfig as any).config;\n if (config?.render) {\n const { $implicit, variables } =\n config.render !== true\n ? config.render\n : {\n $implicit: undefined,\n variables: {},\n };\n (this as any).__render($implicit, variables);\n }\n }\n\n private __ngMocksInstall(\n vcr: ViewContainerRef,\n cdr: ChangeDetectorRef,\n element: ElementRef | null,\n template: TemplateRef<any> | null,\n ): void {\n // Basically any directive on ng-template is treated as structural, even it does not control render process.\n // In our case we do not if we should render it or not and due to this we do nothing.\n coreDefineProperty(this, '__element', element);\n coreDefineProperty(this, '__template', template);\n coreDefineProperty(this, '__viewContainer', vcr);\n coreDefineProperty(this, '__vcr', vcr);\n coreDefineProperty(this, '__cdr', cdr);\n coreDefineProperty(this, '__isStructural', template && vcr);\n\n // Providing method to render mock values.\n coreDefineProperty(this, '__render', ($implicit?: any, variables?: Record<keyof any, any>) => {\n if (vcr && template) {\n vcr.clear();\n vcr.createEmbeddedView(template, { ...variables, $implicit });\n cdr.detectChanges();\n }\n });\n }\n}\n\ncoreDefineProperty(DirectiveMockBase, 'parameters', [\n [Injector],\n [coreForm.NgControl || /* istanbul ignore next */ (() => undefined), new Optional(), new Self()],\n [ChangeDetectorRef],\n [ViewContainerRef],\n [ElementRef, new Optional(), new Self()],\n [TemplateRef, new Optional(), new Self()],\n]);\n\nconst decorateClass = (directive: Type<any>, mock: Type<any>): void => {\n const meta = coreReflectDirectiveResolve(directive);\n const mockParams = { exportAs: meta.exportAs, selector: meta.selector };\n const options = decorateDeclaration(directive, mock, meta, mockParams);\n Directive(options)(mock);\n};\n\nexport function MockDirectives(...directives: Array<Type<any>>): Array<Type<MockedDirective<any>>> {\n return directives.map(MockDirective);\n}\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockDirective\n */\nexport function MockDirective<TDirective>(directive: Type<TDirective>): Type<MockedDirective<TDirective>> {\n return getMock(directive, 'd', 'MockDirective', 'cacheDirective', DirectiveMockBase, decorateClass);\n}\n","import { MockedDebugNode } from '../../mock-render/types';\n\nimport funcGetPublicProviderKeys from './func.get-public-provider-keys';\nimport funcParseInputsAndRequiresAttributes from './func.parse-inputs-and-requires-attributes';\n\nconst detectInClassic = (node: MockedDebugNode, attribute: string, value: any): boolean => {\n for (const key of funcGetPublicProviderKeys(node)) {\n const [inputs, expectedAttributes, nodeIndex] = funcParseInputsAndRequiresAttributes(node, key);\n for (const input of inputs) {\n const [prop, alias] = input.split(': ');\n if (attribute !== (alias || prop) || expectedAttributes.indexOf(prop) === -1) {\n continue;\n }\n if (value === (node.injector as any).view.nodes[nodeIndex].instance[prop]) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nconst detectInIvy = (node: MockedDebugNode, attribute: string, value: any): boolean => {\n const attrs = (node.injector as any)._tNode?.attrs || [];\n let step = 2;\n for (let index = 0; index < attrs.length; index += step) {\n // 3 is a divider between static and dynamic bindings\n if (typeof attrs[index] === 'number') {\n step = 1;\n continue;\n }\n const attr = attrs[index];\n if (attr !== attribute || !(node.injector as any)._tNode.inputs?.[attr]) {\n continue;\n }\n const [attrIndex, attrProp] = (node.injector as any)._tNode.inputs[attr];\n\n if (value === (node.injector as any)._lView?.[attrIndex][attrProp]) {\n return true;\n }\n }\n\n return false;\n};\n\nexport default (attribute: string, value: any): ((node: MockedDebugNode) => boolean) =>\n node => {\n if (detectInIvy(node, attribute, value)) {\n return true;\n }\n\n return detectInClassic(node, attribute, value);\n };\n","import { MockedDebugNode } from '../../mock-render/types';\n\nimport detectAttributeInSelectors from './detect-attribute-in-selectors';\nimport detectSelectorsFromNode from './detect-selectors-from-node';\n\nexport default (attribute: string): ((node: MockedDebugNode) => boolean) =>\n node => {\n const [selectors, attributes] = detectSelectorsFromNode(node);\n\n if (attributes.indexOf(attribute) !== -1) {\n return true;\n }\n\n if (detectAttributeInSelectors(selectors, attribute)) {\n return true;\n }\n\n return false;\n };\n","import coreInjector from '../../common/core.injector';\nimport { AnyType } from '../../common/core.types';\nimport { getSourceOfMock } from '../../common/func.get-source-of-mock';\nimport { MockedDebugNode } from '../../mock-render/types';\n\nexport default (declaration: AnyType<any>): ((node: MockedDebugNode) => boolean) => {\n const source = getSourceOfMock(declaration);\n\n return node =>\n !!node && node.providerTokens.indexOf(source) !== -1 && coreInjector(source, node.injector) !== undefined;\n};\n","import { MockedDebugNode } from '../../mock-render/types';\n\nexport default (id: string): ((node: MockedDebugNode) => boolean) =>\n node => {\n return !!node.references[id];\n };\n","import { MockedDebugNode } from '../../mock-render/types';\n\nimport detectSelectorsFromNode from './detect-selectors-from-node';\nimport detectTagNameInSelectors from './detect-tag-name-in-selectors';\n\nexport default (attribute: string): ((node: MockedDebugNode) => boolean) =>\n node => {\n const [selectors] = detectSelectorsFromNode(node);\n\n return detectTagNameInSelectors(selectors, attribute);\n };\n","export default (selectors: string[], query: string): boolean => {\n for (const selector of selectors) {\n const attributes = selector.match(/\\[([^\\]=]+)/g);\n if (!attributes) {\n continue;\n }\n\n for (const attribute of attributes) {\n if (attribute === `[${query}`) {\n return true;\n }\n }\n }\n\n return false;\n};\n","import { AnyType } from '../../common/core.types';\nimport { MockedDebugNode } from '../../mock-render/types';\n\nimport crawlByAttribute from './crawl-by-attribute';\nimport crawlByAttributeValue from './crawl-by-attribute-value';\nimport crawlByDeclaration from './crawl-by-declaration';\nimport crawlById from './crawl-by-id';\nimport crawlByTagName from './crawl-by-tag-name';\n\ntype SELECTOR = string | AnyType<any> | [any] | [any, any];\n\nconst isCrawlByAttribute = (selector: SELECTOR): selector is [string] => {\n return Array.isArray(selector) && selector.length === 1 && typeof selector[0] === 'string';\n};\n\nconst isCrawlByAttributeValue = (selector: SELECTOR): selector is [string, any] => {\n return Array.isArray(selector) && selector.length === 2 && typeof selector[0] === 'string';\n};\n\nconst isCrawlById = (selector: SELECTOR): selector is string => {\n return typeof selector === 'string' && selector.indexOf('#') === 0 && selector.length > 1;\n};\n\nconst isCrawlByTagName = (selector: SELECTOR): selector is string => {\n return typeof selector === 'string' && selector.indexOf('#') !== 0 && selector.length > 0;\n};\n\nconst isCrawlByDeclaration = (selector: SELECTOR): selector is AnyType<any> => {\n return typeof selector === 'function';\n};\n\nexport default (selector: SELECTOR): ((node: MockedDebugNode) => boolean) => {\n if (isCrawlByAttribute(selector)) {\n return crawlByAttribute(selector[0]);\n }\n if (isCrawlByAttributeValue(selector)) {\n return crawlByAttributeValue(selector[0], selector[1]);\n }\n if (isCrawlById(selector)) {\n return crawlById(selector.substr(1));\n }\n if (isCrawlByTagName(selector)) {\n return crawlByTagName(selector);\n }\n if (isCrawlByDeclaration(selector)) {\n return crawlByDeclaration(selector);\n }\n\n throw new Error(`Unknown selector`);\n};\n","import { MockedDebugNode } from '../../mock-render/types';\nimport funcParseProviderTokensDirectives from '../func.parse-provider-tokens-directives';\n\nimport funcGetPublicProviderKeys from './func.get-public-provider-keys';\nimport funcParseInputsAndRequiresAttributes from './func.parse-inputs-and-requires-attributes';\n\nconst collectSelectors = (node: MockedDebugNode): string[] => {\n const selectors: string[] = [];\n\n for (const token of node.providerTokens) {\n const meta = funcParseProviderTokensDirectives(node, token);\n if (meta?.selector && selectors.indexOf(meta.selector) === -1) {\n selectors.push(meta.selector);\n }\n }\n\n return selectors;\n};\n\nconst collectAttributesClassic = (node: MockedDebugNode): string[] => {\n const result: string[] = [];\n\n for (const key of funcGetPublicProviderKeys(node)) {\n const [inputs, expectedAttributes] = funcParseInputsAndRequiresAttributes(node, key);\n for (const input of inputs) {\n const [prop, alias] = input.split(': ');\n const attr = alias || prop;\n if (expectedAttributes.indexOf(prop) !== -1 && result.indexOf(attr) === -1) {\n result.push(attr);\n }\n }\n }\n\n return result;\n};\n\nconst collectAttributesIvy = (node: MockedDebugNode): string[] => {\n const result: string[] = [];\n\n const attrs = (node.injector as any)._tNode?.attrs || [];\n let step = 2;\n for (let index = 0; index < attrs.length; index += step) {\n // 3 is a divider between static and dynamic bindings\n if (typeof attrs[index] === 'number') {\n step = 1;\n continue;\n }\n const attr = attrs[index];\n if ((node.injector as any)._tNode.inputs?.[attr] && result.indexOf(attr) === -1) {\n result.push(attr);\n }\n }\n\n return result;\n};\n\nexport default (node: MockedDebugNode): [string[], string[]] => {\n const selectors = collectSelectors(node);\n const attributes = [...collectAttributesClassic(node), ...collectAttributesIvy(node)];\n\n return [selectors, attributes];\n};\n","const regExp = new RegExp('\\\\[.*?\\\\]', 'g');\n\nexport default (selectors: string[], query: string): boolean => {\n for (const selector of selectors) {\n const attributes = selector.replace(regExp, '').split(',');\n\n for (const attribute of attributes) {\n if (attribute.trim() === query) {\n return true;\n }\n }\n }\n\n return false;\n};\n","import { MockedDebugNode } from '../../mock-render/types';\n\nexport default (node: MockedDebugNode): boolean => {\n return node.nativeNode.nodeName === '#text';\n};\n","export default (a: any, b: any): boolean => {\n if (!a || !b) {\n return false;\n }\n\n return a === b;\n};\n","import detectTextNode from './detect-text-node';\n\nexport default (node: any) => {\n return detectTextNode(node)\n ? undefined\n : node.injector._tNode || // ivy\n node.injector.elDef || // classic\n undefined;\n};\n","import { DebugElement, ViewContainerRef } from '@angular/core';\n\nimport coreInjector from '../../common/core.injector';\n\nimport elDefGetNode from './el-def-get-node';\n\nconst getVcr = (node: any, child: any): undefined | ViewContainerRef => {\n if (node === child) {\n return undefined;\n }\n if (child.nativeNode.nodeName !== '#comment') {\n return undefined;\n }\n\n return coreInjector(ViewContainerRef, child.injector);\n};\n\nconst getScanViewRefRootNodes = (node: any, child: any): Array<[number, any]> => {\n const vcr = getVcr(node, child);\n if (!vcr) {\n return [];\n }\n\n const result: Array<[number, any]> = [];\n for (let vrIndex = 0; vrIndex < vcr.length; vrIndex += 1) {\n const vr = vcr.get(vrIndex);\n for (let rnIndex = 0; rnIndex < (vr as any).rootNodes.length; rnIndex += 1) {\n result.push([rnIndex, (vr as any).rootNodes[rnIndex]]);\n }\n }\n\n return result;\n};\n\nconst scanViewRef = (node: DebugElement) => {\n let result: any;\n let index: any;\n\n for (const child of node.parent?.childNodes || []) {\n for (const [rnIndex, rootNode] of getScanViewRefRootNodes(node, child)) {\n if (rootNode === node.nativeNode && (index === undefined || rnIndex < index)) {\n result = elDefGetNode(child);\n index = rnIndex;\n }\n }\n }\n\n return result;\n};\n\nexport default (node: any) => {\n return (\n node.injector._tNode?.parent || // ivy\n node.injector.elDef?.parent || // classic\n scanViewRef(node) ||\n node.parent?.injector._tNode || // ivy\n node.parent?.injector.elDef || // classic\n undefined\n );\n};\n","import { MockedDebugNode } from '../../mock-render/types';\n\nexport default (node: MockedDebugNode): string[] => {\n return (node.injector as any).elDef ? Object.keys((node.injector as any).elDef.element.publicProviders) : [];\n};\n","export default (value: any) => {\n if (typeof value === 'string') {\n return true;\n }\n if (Array.isArray(value) && typeof value[0] === 'string') {\n return true;\n }\n\n return typeof value === 'function';\n};\n","import { MockedDebugNode } from '../../mock-render/types';\nimport funcParseProviderTokensDirectives from '../func.parse-provider-tokens-directives';\n\nexport default (node: MockedDebugNode, key: string): [string[], string[], number] => {\n const config = (node.injector as any).elDef.element.publicProviders[key];\n const token = config.provider.value;\n if (!token) {\n return [[], [], 0];\n }\n const meta = funcParseProviderTokensDirectives(node, token);\n\n const requiredAttributes = config.bindings.map((binding: any) => binding.nonMinifiedName || binding.name);\n\n return [meta?.inputs || [], requiredAttributes, config.nodeIndex];\n};\n","import { DebugNode } from '@angular/core';\n\nimport { DebugNodeSelector } from '../../common/core.types';\nimport mockHelperFind from '../find/mock-helper.find';\nimport funcGetLastFixture from '../func.get-last-fixture';\n\nimport nestedCheck from './nested-check';\n\nexport default (\n sel: DebugNode | DebugNodeSelector,\n callback: (node: DebugNode) => void | boolean,\n includeTextNode = false,\n): void => {\n const el = mockHelperFind(funcGetLastFixture(), sel, undefined);\n nestedCheck(el, undefined, callback, includeTextNode);\n};\n","import mockHelperFind from '../find/mock-helper.find';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport funcParseFindArgs from '../func.parse-find-args';\n\nimport detectCrawler from './detect-crawler';\nimport detectTextNode from './detect-text-node';\nimport funcIsValidRevealSelector from './func.is-valid-reveal-selector';\nimport mockHelperCrawl from './mock-helper.crawl';\n\nexport default (...args: any[]): any[] => {\n const [el, sel] = funcParseFindArgs(args, funcIsValidRevealSelector);\n const root = mockHelperFind(funcGetLastFixture(), el, undefined);\n\n const detector = detectCrawler(sel);\n\n const result: any[] = [];\n mockHelperCrawl(root, node => {\n if (node !== root && !detectTextNode(node) && detector(node)) {\n result.push(node);\n }\n });\n\n return result;\n};\n","import mockHelperFind from '../find/mock-helper.find';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport funcParseFindArgs from '../func.parse-find-args';\nimport funcParseFindArgsName from '../func.parse-find-args-name';\n\nimport detectCrawler from './detect-crawler';\nimport detectTextNode from './detect-text-node';\nimport funcIsValidRevealSelector from './func.is-valid-reveal-selector';\nimport mockHelperCrawl from './mock-helper.crawl';\n\nconst defaultNotFoundValue = {}; // simulating Symbol\n\nexport default (...args: any[]): any => {\n const [el, sel, notFoundValue] = funcParseFindArgs(args, funcIsValidRevealSelector, defaultNotFoundValue);\n const root = mockHelperFind(funcGetLastFixture(), el, undefined);\n\n const detector = detectCrawler(sel);\n\n let result;\n mockHelperCrawl(root, node => {\n if (node !== root && !detectTextNode(node) && detector(node)) {\n result = node;\n\n return true;\n }\n\n return false;\n });\n if (result) {\n return result;\n }\n if (notFoundValue !== defaultNotFoundValue) {\n return notFoundValue;\n }\n\n throw new Error(`Cannot find a DebugElement via ngMocks.reveal(${funcParseFindArgsName(sel)})`);\n};\n","import { MockedDebugNode } from '../../mock-render/types';\n\nimport detectTextNode from './detect-text-node';\nimport elDefCompare from './el-def-compare';\nimport elDefGetNode from './el-def-get-node';\nimport elDefGetParent from './el-def-get-parent';\n\nexport default (node: MockedDebugNode): MockedDebugNode[] => {\n const elDef = elDefGetNode(node);\n if (!elDef || detectTextNode(node)) {\n return [];\n }\n\n const isDirect = (node as any).childNodes !== undefined;\n const children: MockedDebugNode[] = [];\n for (const childNode of (node as any).childNodes || node.parent?.childNodes || []) {\n const childNodeParent = elDefGetParent(childNode);\n\n if (!isDirect && !elDefCompare(elDef, childNodeParent)) {\n continue;\n }\n if (childNodeParent && !elDefCompare(elDef, childNodeParent)) {\n continue;\n }\n\n children.push(childNode);\n }\n\n if ((node as any).parent?.name === 'BODY') {\n const childNodes: any[] = (node as any).parent.childNodes;\n let start = childNodes.length;\n let end = 0;\n for (let i = childNodes.length - 1; i >= 0; i -= 1) {\n const childNode = childNodes[i];\n if (childNode.nativeNode.nodeName === '#comment') {\n end = i;\n } else if (childNode.nativeNode === node.nativeNode) {\n start = i + 1;\n break;\n }\n }\n for (let i = start; i < end; i += 1) {\n children.push(childNodes[i]);\n }\n }\n\n return children;\n};\n","import { MockedDebugNode } from '../../mock-render/types';\n\nimport detectTextNode from './detect-text-node';\nimport elDefCompare from './el-def-compare';\nimport elDefGetNode from './el-def-get-node';\nimport elDefGetParent from './el-def-get-parent';\nimport nestedCheckChildren from './nested-check-children';\n\nconst detectParent = (node: MockedDebugNode, parent: MockedDebugNode | undefined): MockedDebugNode | undefined => {\n if (parent) {\n return parent;\n }\n\n const expected = elDefGetParent(node);\n const currentParent = node.parent ? elDefGetNode(node.parent) : undefined;\n if (node.parent && elDefCompare(expected, currentParent)) {\n return node.parent;\n }\n for (const childNode of node.parent?.childNodes || []) {\n const childElDef = elDefGetNode(childNode);\n if (elDefCompare(expected, childElDef)) {\n return childNode;\n }\n }\n\n return undefined;\n};\n\nconst nestedCheck = (\n node: MockedDebugNode | null | undefined,\n parent: MockedDebugNode | undefined,\n check: (node: MockedDebugNode, parent?: MockedDebugNode) => void | boolean,\n includeTextNode = false,\n): boolean => {\n if (!node) {\n return false;\n }\n if (!includeTextNode && detectTextNode(node)) {\n return false;\n }\n if (check(node, detectParent(node, parent))) {\n return true;\n }\n\n for (const childNode of nestedCheckChildren(node)) {\n if (nestedCheck(childNode, node, check, includeTextNode)) {\n return true;\n }\n }\n\n return false;\n};\n\nexport default ((): typeof nestedCheck => nestedCheck)();\n","import { DebugNode } from '@angular/core';\n\nimport coreForm from '../../common/core.form';\nimport coreInjector from '../../common/core.injector';\n\nconst message = [\n 'Cannot find ControlValueAccessor on the element.',\n 'If it is a mock input with [formControlName],',\n 'you need either to avoid mocking ReactiveFormsModule',\n 'or to avoid accessing the control in such a way,',\n 'because this tests ReactiveFormsModule instead of own implementation.',\n].join(' ');\n\nexport default (el: DebugNode): Record<keyof any, any> => {\n const ngControl = coreForm && coreInjector(coreForm.NgControl, el.injector);\n const valueAccessor = ngControl?.valueAccessor;\n if (valueAccessor) {\n return valueAccessor;\n }\n\n const formControlDirective = coreForm && coreInjector(coreForm.FormControlDirective, el.injector);\n if (formControlDirective?.form) {\n return formControlDirective.form;\n }\n\n const ngModel = coreForm && coreInjector(coreForm.NgModel, el.injector);\n if (ngModel) {\n return ngModel;\n }\n\n throw new Error(message);\n};\n","import { DebugElement } from '@angular/core';\n\nimport coreForm from '../../common/core.form';\nimport { DebugNodeSelector } from '../../common/core.types';\nimport { isMockControlValueAccessor } from '../../common/func.is-mock-control-value-accessor';\nimport helperDefinePropertyDescriptor from '../../mock-service/helper.define-property-descriptor';\nimport mockHelperTrigger from '../events/mock-helper.trigger';\nimport mockHelperFind from '../find/mock-helper.find';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport funcParseFindArgsName from '../func.parse-find-args-name';\nimport mockHelperStubMember from '../mock-helper.stub-member';\n\nimport funcGetVca from './func.get-vca';\n\n// default html behavior\nconst triggerInput = (el: DebugElement, value: any): void => {\n mockHelperTrigger(el, 'focus');\n\n const descriptor = Object.getOwnPropertyDescriptor(el.nativeElement, 'value');\n mockHelperStubMember(el.nativeElement, 'value', value);\n mockHelperTrigger(el, 'input');\n mockHelperTrigger(el, 'change');\n if (descriptor) {\n helperDefinePropertyDescriptor(el.nativeElement, 'value', descriptor);\n el.nativeElement.value = value;\n }\n\n mockHelperTrigger(el, 'blur');\n};\n\nconst handleKnown = (valueAccessor: any, value: any): boolean => {\n if (coreForm && valueAccessor instanceof coreForm.AbstractControl) {\n valueAccessor.setValue(value);\n\n return true;\n }\n\n if (coreForm && valueAccessor instanceof coreForm.NgModel) {\n valueAccessor.update.emit(value);\n\n return true;\n }\n\n if (isMockControlValueAccessor(valueAccessor.instance)) {\n valueAccessor.instance.__simulateChange(value);\n\n return true;\n }\n\n return false;\n};\n\nconst hasListener = (el: DebugElement): boolean =>\n el.listeners.filter(listener => listener.name === 'input' || listener.name === 'change').length > 0;\n\nconst keys = ['onChange', '_onChange', 'changeFn', '_onChangeCallback', 'onModelChange'];\n\nexport default (selector: DebugNodeSelector, value: any): void => {\n const el = mockHelperFind(funcGetLastFixture(), selector, undefined);\n if (!el) {\n throw new Error(`Cannot find an element via ngMocks.change(${funcParseFindArgsName(selector)})`);\n }\n\n const valueAccessor = funcGetVca(el);\n if (handleKnown(valueAccessor, value) || hasListener(el)) {\n triggerInput(el, value);\n\n return;\n }\n\n for (const key of keys) {\n if (typeof valueAccessor[key] === 'function') {\n valueAccessor.writeValue(value);\n valueAccessor[key](value);\n\n return;\n }\n }\n\n throw new Error('Unsupported type of ControlValueAccessor');\n};\n","import { DebugElement } from '@angular/core';\n\nimport coreForm from '../../common/core.form';\nimport { DebugNodeSelector } from '../../common/core.types';\nimport { isMockControlValueAccessor } from '../../common/func.is-mock-control-value-accessor';\nimport mockHelperTrigger from '../events/mock-helper.trigger';\nimport mockHelperFind from '../find/mock-helper.find';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport funcParseFindArgsName from '../func.parse-find-args-name';\n\nimport funcGetVca from './func.get-vca';\n\n// default html behavior\nconst triggerTouch = (el: DebugElement): void => {\n mockHelperTrigger(el, 'focus');\n mockHelperTrigger(el, 'blur');\n};\n\nconst handleKnown = (valueAccessor: any): boolean => {\n if (coreForm && valueAccessor instanceof coreForm.AbstractControl) {\n valueAccessor.markAsTouched();\n\n return true;\n }\n\n if (isMockControlValueAccessor(valueAccessor.instance)) {\n valueAccessor.instance.__simulateTouch();\n\n return true;\n }\n\n return false;\n};\n\nconst hasListener = (el: DebugElement): boolean =>\n el.listeners.filter(listener => listener.name === 'focus' || listener.name === 'blur').length > 0;\n\nconst keys = ['onTouched', '_onTouched', '_cvaOnTouch', '_markAsTouched', '_onTouchedCallback', 'onModelTouched'];\n\nexport default (sel: DebugElement | DebugNodeSelector): void => {\n const el = mockHelperFind(funcGetLastFixture(), sel, undefined);\n if (!el) {\n throw new Error(`Cannot find an element via ngMocks.touch(${funcParseFindArgsName(sel)})`);\n }\n\n const valueAccessor = funcGetVca(el);\n if (handleKnown(valueAccessor) || hasListener(el)) {\n triggerTouch(el);\n\n return;\n }\n\n for (const key of keys) {\n if (typeof valueAccessor[key] === 'function') {\n valueAccessor[key]();\n\n return;\n }\n }\n\n throw new Error('Unsupported type of ControlValueAccessor');\n};\n","import { DebugNodeSelector } from '../../common/core.types';\n\nimport mockHelperTrigger from './mock-helper.trigger';\n\nexport default (selector: DebugNodeSelector, payload?: object) => {\n mockHelperTrigger(selector, 'click', payload);\n};\n","import mockHelperStub from '../mock-helper.stub';\n\n/**\n * @see https://developer.mozilla.org/de/docs/Web/Events\n */\nconst preventBubble = ['focus', 'blur', 'load', 'unload', 'change', 'reset', 'scroll'];\n\n// istanbul ignore next\nfunction customEvent(event: string, params?: EventInit) {\n const initParams = {\n bubbles: false,\n cancelable: false,\n ...params,\n };\n const eventObj = document.createEvent('CustomEvent');\n eventObj.initCustomEvent(event, initParams.bubbles, initParams.cancelable, null);\n\n return eventObj;\n}\n\nconst eventCtor =\n typeof (Event as any) === 'function'\n ? (event: string, init?: EventInit): CustomEvent => new CustomEvent(event, init)\n : /* istanbul ignore next */ customEvent;\n\nconst keyMap: Record<string, object> = {\n alt: {\n altKey: true,\n code: 'AltLeft',\n key: 'Alt',\n location: 1,\n which: 18,\n },\n arrowdown: {\n code: 'ArrowDown',\n key: 'ArrowDown',\n location: 0,\n which: 40,\n },\n arrowleft: {\n code: 'ArrowLeft',\n key: 'ArrowLeft',\n location: 0,\n which: 37,\n },\n arrowright: {\n code: 'ArrowRight',\n key: 'ArrowRight',\n location: 0,\n which: 39,\n },\n arrowup: {\n code: 'ArrowUp',\n key: 'ArrowUp',\n location: 0,\n which: 38,\n },\n backspace: {\n code: 'Backspace',\n key: 'Backspace',\n location: 0,\n which: 8,\n },\n control: {\n code: 'ControlLeft',\n ctrlKey: true,\n key: 'Control',\n location: 1,\n which: 17,\n },\n enter: {\n code: 'Enter',\n key: 'Enter',\n location: 0,\n which: 13,\n },\n esc: {\n code: 'Escape',\n key: 'Escape',\n location: 0,\n which: 27,\n },\n meta: {\n code: 'MetaLeft',\n key: 'Meta',\n location: 1,\n metaKey: true,\n which: 91,\n },\n shift: {\n code: 'ShiftLeft',\n key: 'Shift',\n location: 1,\n shiftKey: true,\n which: 16,\n },\n space: {\n code: 'Space',\n key: ' ',\n location: 0,\n which: 32,\n },\n tab: {\n code: 'Tab',\n key: 'Tab',\n location: 0,\n which: 9,\n },\n};\nfor (let f = 1; f <= 12; f += 1) {\n keyMap[`f${f}`] = {\n code: `F${f}`,\n key: `F${f}`,\n location: 0,\n which: f + 111,\n };\n}\n\nconst getCode = (char: string): string => {\n const code = char.codePointAt(0);\n // a-z\n if (code && code >= 97 && code <= 122) {\n return `Key${char.toUpperCase()}`;\n }\n // A-Z\n if (code && code >= 65 && code <= 90) {\n return `Key${char.toUpperCase()}`;\n }\n // A-Z\n if (code && code >= 48 && code <= 57) {\n return `Digit${char}`;\n }\n\n return 'Unknown';\n};\n\nconst applyPayload = (event: Event, payload?: string): void => {\n const keyData: object = {};\n for (const key of payload ? payload.split('.') : []) {\n let map = keyMap[key];\n if (!map && key.length === 1) {\n map = {\n code: getCode(key),\n key,\n };\n }\n\n if (!map) {\n throw new Error(`Unknown event part ${key}`);\n }\n\n mockHelperStub(keyData, map);\n }\n\n if (payload) {\n mockHelperStub(event, keyData);\n }\n};\n\nexport default (\n event: string,\n init?: EventInit,\n overrides?: Partial<UIEvent | KeyboardEvent | MouseEvent | TouchEvent | Event>,\n): CustomEvent => {\n const dot = event.indexOf('.');\n const [eventName, eventPayload] = dot === -1 ? [event] : [event.substr(0, dot), event.substr(dot + 1)];\n const eventObj = eventCtor(eventName, {\n bubbles: preventBubble.indexOf(event) === -1,\n cancelable: true,\n ...init,\n });\n applyPayload(eventObj, eventPayload);\n\n if (overrides) {\n mockHelperStub(eventObj, overrides);\n }\n\n return eventObj;\n};\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\n\nimport { DebugNodeSelector } from '../../common/core.types';\nimport mockHelperFind from '../find/mock-helper.find';\nimport isDebugNode from '../format/is-debug-node';\nimport isFixture from '../format/is-fixture';\nimport isHtmlElement from '../format/is-html-element';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport mockHelperStub from '../mock-helper.stub';\n\nimport mockHelperEvent from './mock-helper.event';\n\n/**\n * @see https://developer.mozilla.org/de/docs/Web/Events\n */\nconst preventBubble = ['focus', 'blur', 'load', 'unload', 'change', 'reset', 'scroll'];\n\nconst toEventObj = (event: string | UIEvent | KeyboardEvent | MouseEvent | TouchEvent | Event): Event => {\n return typeof event === 'string'\n ? mockHelperEvent(event, {\n bubbles: preventBubble.indexOf(event) === -1,\n cancelable: true,\n })\n : event;\n};\n\nconst getNativeElement = (\n debugElement: DebugElement | HTMLElement | ComponentFixture<any> | undefined | null,\n): HTMLElement | undefined => {\n if (isDebugNode(debugElement) || isFixture(debugElement)) {\n return debugElement.nativeElement;\n }\n if (isHtmlElement(debugElement)) {\n return debugElement;\n }\n\n return undefined;\n};\n\nexport default (\n selector: DebugElement | HTMLElement | ComponentFixture<any> | DebugNodeSelector,\n eventName: string | UIEvent | KeyboardEvent | MouseEvent | TouchEvent | Event,\n payload?: Partial<UIEvent | KeyboardEvent | MouseEvent | TouchEvent | Event>,\n) => {\n const debugElement = isHtmlElement(selector) ? selector : mockHelperFind(funcGetLastFixture(), selector, undefined);\n const nativeElement = getNativeElement(debugElement);\n\n if (!nativeElement) {\n throw new Error(\n `Cannot trigger ${typeof eventName === 'string' ? eventName : eventName.type} event undefined element`,\n );\n }\n\n // nothing to emit on disabled elements\n if ((nativeElement as HTMLInputElement).disabled) {\n return;\n }\n\n const event = toEventObj(eventName);\n if (!event.target) {\n mockHelperStub(event, {\n target: nativeElement,\n });\n }\n if (payload) {\n mockHelperStub(event, payload);\n }\n nativeElement.dispatchEvent(event);\n};\n","import { isNgDef } from '../../common/func.is-ng-def';\n\nexport default (value: any): boolean => {\n return typeof value === 'function' || isNgDef(value, 't');\n};\n","import { getSourceOfMock } from '../../common/func.get-source-of-mock';\nimport { isNgDef } from '../../common/func.is-ng-def';\nimport mockHelperCrawl from '../crawl/mock-helper.crawl';\nimport mockHelperFind from '../find/mock-helper.find';\nimport funcGetFromNode from '../func.get-from-node';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport funcParseFindArgs from '../func.parse-find-args';\nimport funcParseFindArgsName from '../func.parse-find-args-name';\n\nimport funcIsValidFindInstanceSelector from './func.is-valid-find-instance-selector';\n\nconst defaultNotFoundValue = {}; // simulating Symbol\n\nexport default (...args: any[]) => {\n const [el, sel, notFoundValue] = funcParseFindArgs(args, funcIsValidFindInstanceSelector, defaultNotFoundValue);\n if (typeof sel !== 'function' && !isNgDef(sel, 't')) {\n throw new Error('Only classes or tokens are accepted');\n }\n\n const declaration = getSourceOfMock(sel);\n const result: any[] = [];\n mockHelperCrawl(\n mockHelperFind(funcGetLastFixture(), el, undefined),\n node => {\n funcGetFromNode(result, node, declaration);\n\n return result.length > 0;\n },\n true,\n );\n if (result.length) {\n return result[0];\n }\n if (notFoundValue !== defaultNotFoundValue) {\n return notFoundValue;\n }\n throw new Error(`Cannot find an instance via ngMocks.findInstance(${funcParseFindArgsName(sel)})`);\n};\n","import { getSourceOfMock } from '../../common/func.get-source-of-mock';\nimport { isNgDef } from '../../common/func.is-ng-def';\nimport mockHelperCrawl from '../crawl/mock-helper.crawl';\nimport mockHelperFindAll from '../find/mock-helper.find-all';\nimport funcGetFromNode from '../func.get-from-node';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport funcParseFindArgs from '../func.parse-find-args';\n\nimport funcIsValidFindInstanceSelector from './func.is-valid-find-instance-selector';\n\nexport default <T>(...args: any[]): T[] => {\n const [el, sel] = funcParseFindArgs(args, funcIsValidFindInstanceSelector);\n if (typeof sel !== 'function' && !isNgDef(sel, 't')) {\n throw new Error('Only classes or tokens are accepted');\n }\n\n const declaration = getSourceOfMock(sel);\n const result: T[] = [];\n const scanned: any[] = [];\n const elements = mockHelperFindAll(funcGetLastFixture(), el, undefined);\n for (const element of elements) {\n mockHelperCrawl(\n element,\n node => {\n if (scanned.indexOf(node) === -1) {\n funcGetFromNode(result, node, declaration);\n scanned.push(node);\n }\n },\n true,\n );\n }\n\n return result;\n};\n","import { DebugElement } from '@angular/core';\n\nimport isFixture from '../format/is-fixture';\nimport funcGetLastFixture from '../func.get-last-fixture';\n\nconst findDebugElement = (el: any): DebugElement | undefined => {\n if (isFixture(el)) {\n return findDebugElement(el.debugElement);\n }\n if (el && el.injector && el.query) {\n return el;\n }\n\n return undefined;\n};\n\nexport default (args: any[], defaultNotFoundValue?: any): [any, any, any] => {\n let el;\n let sel;\n let notFoundValue = defaultNotFoundValue;\n if (args.length === 3) {\n el = findDebugElement(args[0]);\n sel = args[1];\n notFoundValue = args[2];\n } else if (args.length === 1) {\n el = findDebugElement(funcGetLastFixture());\n [sel] = args;\n } else if (!args[0]) {\n sel = args[1];\n } else {\n el = findDebugElement(args[0]);\n if (el) {\n sel = args[1];\n } else {\n el = findDebugElement(funcGetLastFixture());\n [sel, notFoundValue] = args;\n }\n }\n sel = findDebugElement(sel) ?? sel;\n\n return [el, sel, notFoundValue];\n};\n","import { DebugElement, Predicate } from '@angular/core';\nimport { By } from '@angular/platform-browser';\n\nimport { AnyType } from '../../common/core.types';\nimport { getSourceOfMock } from '../../common/func.get-source-of-mock';\n\nexport default (selector: string | AnyType<any> | [string] | [string, any]): Predicate<DebugElement> => {\n return Array.isArray(selector)\n ? By.css(selector.length === 1 ? `[${selector[0]}]` : `[${selector[0]}=\"${selector[1]}\"]`)\n : typeof selector === 'string'\n ? By.css(selector)\n : By.directive(getSourceOfMock(selector));\n};\n","import { DebugElement } from '@angular/core';\n\nimport isDebugNode from '../format/is-debug-node';\n\nimport funcParseFindArgs from './func.parse-find-args';\nimport funcParseFindTerm from './func.parse-find-term';\n\nexport default (...args: any[]): DebugElement[] => {\n const [el, sel] = funcParseFindArgs(args);\n if (isDebugNode(sel)) {\n return [sel as any];\n }\n\n return el?.queryAll(funcParseFindTerm(sel)) || [];\n};\n","import { DebugElement } from '@angular/core';\n\nimport isDebugNode from '../format/is-debug-node';\nimport funcParseFindArgsName from '../func.parse-find-args-name';\n\nimport funcParseFindArgs from './func.parse-find-args';\nimport funcParseFindTerm from './func.parse-find-term';\n\nconst defaultNotFoundValue = {}; // simulating Symbol\n\nexport default (...args: any[]): DebugElement => {\n const [el, sel, notFoundValue] = funcParseFindArgs(args, defaultNotFoundValue);\n const result = isDebugNode(sel) ? sel : el?.query(funcParseFindTerm(sel));\n if (result) {\n return result;\n }\n if (notFoundValue !== defaultNotFoundValue) {\n return notFoundValue;\n }\n throw new Error(`Cannot find an element via ngMocks.find(${funcParseFindArgsName(sel)})`);\n};\n","import nestedCheckChildren from '../crawl/nested-check-children';\n\nimport handleArray from './handle-array';\nimport isDebugNode from './is-debug-node';\nimport isFixture from './is-fixture';\nimport { FORMAT_SET, FORMAT_SINGLE } from './types';\n\nexport default (handlePrimitives: any) =>\n (html: any, outer = false) => {\n const format = (value: Text | Comment | FORMAT_SINGLE | FORMAT_SET, innerOuter = false): any => {\n if (Array.isArray(value)) {\n return handleArray(format, value);\n }\n if (isFixture(value)) {\n return format(value.debugElement, outer);\n }\n const result = handlePrimitives(format, value, innerOuter);\n if (result !== undefined) {\n return result;\n }\n\n if (isDebugNode(value) && value.nativeNode.nodeName === '#comment') {\n return format(nestedCheckChildren(value), true);\n }\n\n return isDebugNode(value) ? format(value.nativeNode, innerOuter) : '';\n };\n\n return Array.isArray(html) ? html.map((item: any) => format(item, outer)) : format(html, outer);\n };\n","export default (format: any, html: any) => {\n return format((html as any[]).map(item => format(item, true)).join(''));\n};\n","export default (html: Text): string => html.nodeValue ?? html.textContent ?? html.wholeText;\n","import { MockedDebugNode } from '../../mock-render/types';\n\nexport default (value: any): value is MockedDebugNode => {\n return !!value?.nativeElement || !!value?.nativeNode;\n};\n","import { MockedDebugNode } from '../../mock-render/types';\n\nexport default (value: any): value is { debugElement: MockedDebugNode } => {\n return !!value && typeof value === 'object' && value.debugElement !== undefined;\n};\n","export default (value: any): value is HTMLElement => {\n return !!value && typeof value === 'object' && value.innerHTML !== undefined;\n};\n","export default (value: any): value is Text => {\n return !!value && typeof value === 'object' && value.nodeName === '#text';\n};\n","import formatHandler from './format-handler';\nimport handleText from './handle-text';\nimport isHtmlElement from './is-html-element';\nimport isText from './is-text';\n\nconst normalizeValue = (html: string | undefined): string =>\n html\n ? html // lgtm [js/incomplete-multi-character-sanitization]\n .replace(new RegExp('\\\\s+', 'mg'), ' ')\n .replace(new RegExp('<!--.*?-->', 'mg'), '')\n .replace(new RegExp('\\\\s+', 'mg'), ' ')\n .replace(new RegExp('>\\\\s+<', 'mg'), '><')\n .replace(new RegExp('\"\\\\s+>', 'mg'), '\">')\n : '';\n\nconst normalizeText = (text: string): string =>\n text\n .replace(new RegExp('&', 'mg'), '&')\n .replace(new RegExp('\"', 'mg'), '"')\n .replace(new RegExp('<', 'mg'), '<')\n .replace(new RegExp('>', 'mg'), '>')\n // tslint:disable-next-line quotemark\n .replace(new RegExp(\"'\", 'mg'), ''');\n\nconst getElementValue = (element: HTMLElement, outer: boolean): string =>\n outer ? element.outerHTML : element.innerHTML;\n\nconst handlePrimitives = (format: any, value: any, outer: boolean): string | undefined => {\n if (typeof value === 'string' || value === undefined) {\n const result = normalizeValue(value);\n\n return outer ? result : result.trim();\n }\n if (isHtmlElement(value)) {\n return format(getElementValue(value, outer));\n }\n if (isText(value)) {\n return handlePrimitives(format, normalizeText(handleText(value)), outer);\n }\n\n return undefined;\n};\n\nexport default (() => formatHandler(handlePrimitives))();\n","import formatHandler from './format-handler';\nimport handleText from './handle-text';\nimport isHtmlElement from './is-html-element';\nimport isText from './is-text';\n\nconst normalizeValue = (html: string | undefined): string => (html ? html.replace(new RegExp('\\\\s+', 'mg'), ' ') : '');\n\nconst getElementValue = (element: HTMLElement, outer: boolean): string => {\n const value = element.textContent ?? '';\n\n return outer ? value : value.trim();\n};\n\nconst handlePrimitives = (format: any, value: any, outer: boolean): string | undefined => {\n if (typeof value === 'string' || value === undefined) {\n const result = normalizeValue(value);\n\n return outer ? result : result.trim();\n }\n if (isHtmlElement(value)) {\n return format(getElementValue(value, outer));\n }\n if (isText(value)) {\n return handlePrimitives(format, handleText(value), outer);\n }\n\n return undefined;\n};\n\nexport default (() => formatHandler(handlePrimitives))();\n","import { DebugNode } from '@angular/core';\n\nexport default (node: DebugNode): DebugNode =>\n node.nativeNode?.nodeName === '#text' && node.parent ? node.parent : node;\n","import { DebugNode, InjectionToken, Injector } from '@angular/core';\n\nimport coreInjector from '../common/core.injector';\nimport { Type } from '../common/core.types';\nimport { isNgDef } from '../common/func.is-ng-def';\n\nimport { Node } from './func.get-from-node';\n\nconst getParentWithInjector = (node: (DebugNode & Node) | null): Injector | undefined => {\n let parent: DebugNode | null = node;\n while (parent?.injector.constructor.name === 'NullInjector') {\n parent = parent.parent;\n }\n\n if (parent) {\n return parent.injector;\n }\n\n return undefined;\n};\n\nexport default <T>(\n result: T[],\n node: (DebugNode & Node) | null | undefined,\n proto: Type<T> | InjectionToken<T>,\n): void => {\n if (!node?.injector || node.injector.constructor.name === 'NullInjector') {\n return;\n }\n\n const parentInjector = getParentWithInjector(node.parent);\n const parentInstance = parentInjector ? coreInjector(proto, parentInjector) : undefined;\n const instance = coreInjector(proto, node.injector);\n // a way to avoid inherited injections\n if (parentInstance === instance) {\n return;\n }\n\n if (isNgDef(proto, 't') && instance !== undefined) {\n result.push(instance);\n } else if (instance !== undefined && result.indexOf(instance) === -1) {\n result.push(instance);\n }\n};\n","import { DebugNode } from '@angular/core';\n\nimport { Type } from '../common/core.types';\n\nimport { Node } from './func.get-from-node';\nimport funcGetFromNodeElement from './func.get-from-node-element';\nimport funcGetFromNodeScan from './func.get-from-node-scan';\n\nconst detectContextByIndex = (rootView: any, index: number) => {\n if (typeof rootView[1] === 'object' && rootView[20] === index) {\n return rootView;\n }\n\n for (let i = 21; i < rootView.length; i += 1) {\n const item = rootView[i];\n if (Array.isArray(item) && typeof item[1] === 'object' && item[20] === index) {\n return item;\n }\n }\n\n return undefined;\n};\n\nconst detectContext = (node: DebugNode): any => {\n let current = node;\n let context = current.nativeNode?.__ngContext__;\n while (context === undefined && current.parent) {\n current = current.parent;\n context = current.nativeNode.__ngContext__;\n }\n if (typeof context !== 'number') {\n return context;\n }\n // welcome to A12 and its optimization\n // https://github.com/angular/angular/pull/41358\n\n const rootView = (current.injector as any)._lView;\n if (Array.isArray(rootView)) {\n return detectContextByIndex(rootView, context);\n }\n\n return undefined;\n};\n\nconst contextToNodes = (context: any): any => (Array.isArray(context) ? context : context?.lView);\n\nexport default <T>(result: T[], node: (DebugNode & Node) | null | undefined, proto: Type<T>): void => {\n if (!node || node._debugContext) {\n return;\n }\n\n const el = funcGetFromNodeElement(node);\n funcGetFromNodeScan(\n {\n el,\n nodes: contextToNodes(detectContext(node)) || [],\n normalize: item => item,\n proto,\n result,\n },\n true,\n );\n};\n","import { DebugNode } from '@angular/core';\n\nimport { Type } from '../common/core.types';\n\nconst detectGatherFlag = (gather: boolean, el: DebugNode | null, node: any): boolean => {\n // LContainer should stop the scan.\n if (Array.isArray(node)) {\n return false;\n }\n\n if (!el || !node.nodeName) {\n return gather;\n }\n\n // checking if a textNode belongs to the current element.\n if (node.nodeName === '#text') {\n return node.parentNode === el.nativeNode;\n }\n\n return false;\n};\n\nconst isNotObject = (node: any): boolean => !node || typeof node !== 'object';\n\nconst shouldBeScanned = (scanned: any[], node: any): boolean => scanned.indexOf(node) === -1 && Array.isArray(node);\n\nconst scan = <T>(\n {\n result,\n el,\n nodes,\n normalize,\n proto,\n }: {\n el: DebugNode | null;\n nodes: any[];\n normalize: (item: any) => any;\n proto: Type<T>;\n result: T[];\n },\n gatherDefault: boolean,\n scanned: any[] = [],\n): void => {\n scanned.push(nodes);\n let gather = gatherDefault;\n\n for (const raw of nodes) {\n const node = normalize(raw);\n if (isNotObject(node)) {\n continue;\n }\n\n if (shouldBeScanned(scanned, node)) {\n scan({ result, el, nodes: node, normalize, proto }, gather, scanned);\n }\n\n gather = detectGatherFlag(gather, el, node);\n if (!gather) {\n continue;\n }\n\n if (result.indexOf(node) === -1 && node instanceof proto) {\n result.push(node);\n }\n }\n};\n\nexport default (() => scan)();\n","import { DebugNode } from '@angular/core';\n\nimport { Type } from '../common/core.types';\n\nimport { Node } from './func.get-from-node';\nimport funcGetFromNodeElement from './func.get-from-node-element';\nimport funcGetFromNodeScan from './func.get-from-node-scan';\n\nconst normalize = (item: any): any => {\n if (!item || typeof item !== 'object') {\n return item;\n }\n\n for (const key of ['renderElement', 'renderText', 'instance']) {\n if (item[key]) {\n return item[key];\n }\n }\n\n return null;\n};\n\nexport default <T>(result: T[], node: (DebugNode & Node) | null | undefined, proto: Type<T>): void => {\n if (!node || !node._debugContext) {\n return;\n }\n\n const el = funcGetFromNodeElement(node);\n\n funcGetFromNodeScan(\n {\n el,\n nodes: node._debugContext.view.nodes,\n normalize,\n proto,\n result,\n },\n true,\n );\n};\n","import { DebugNode, InjectionToken } from '@angular/core';\n\nimport { Type } from '../common/core.types';\nimport { isNgDef } from '../common/func.is-ng-def';\n\nimport funcGetFromNodeInjector from './func.get-from-node-injector';\nimport funcGetFromNodeIvy from './func.get-from-node-ivy';\nimport funcGetFromNodeStandard from './func.get-from-node-standard';\n\nexport interface Node {\n _debugContext?: {\n elDef: {\n nodeIndex: number;\n };\n nodeDef: {\n nodeIndex: number;\n };\n nodeIndex: number;\n view: {\n nodes: Array<{\n instance?: any;\n renderElement?: any;\n renderText?: any;\n value?: any;\n }>;\n };\n };\n parent?: (DebugNode & Node) | null;\n}\n\nexport default <T>(\n result: T[],\n node: (DebugNode & Node) | null | undefined,\n proto: Type<T> | InjectionToken<T>,\n): T[] => {\n funcGetFromNodeInjector(result, node, proto);\n if (!isNgDef(proto, 't')) {\n funcGetFromNodeStandard(result, node, proto);\n funcGetFromNodeIvy(result, node, proto);\n }\n\n return result;\n};\n","import { ComponentFixture, getTestBed } from '@angular/core/testing';\n\nexport default () => {\n const fixtures: Array<ComponentFixture<any>> = (getTestBed() as any)._activeFixtures;\n\n return fixtures[fixtures.length - 1];\n};\n","import ngMocksUniverse from '../common/ng-mocks-universe';\n\nexport default () => {\n ngMocksUniverse.cacheDeclarations.clear();\n ngMocksUniverse.config.get('ngMocksDepsSkip')?.clear();\n};\n","import { AnyType, DebugNodeSelector } from '../common/core.types';\nimport { isNgDef } from '../common/func.is-ng-def';\n\nexport default (selector: AnyType<any> | DebugNodeSelector): string => {\n if (typeof selector === 'string') {\n return selector;\n }\n if (typeof selector === 'function') {\n return selector.name;\n }\n if (isNgDef(selector, 't')) {\n return (selector as any)._desc;\n }\n if (Array.isArray(selector)) {\n return selector[0];\n }\n if (!selector) {\n return '<EMPTY>';\n }\n\n return '<UNKNOWN>';\n};\n","import isDebugNode from './format/is-debug-node';\nimport isFixture from './format/is-fixture';\nimport funcGetLastFixture from './func.get-last-fixture';\n\nconst isSelector = (value: any): boolean => {\n if (typeof value === 'string') {\n return true;\n }\n if (Array.isArray(value) && typeof value[0] === 'string') {\n return true;\n }\n if (isFixture(value)) {\n return true;\n }\n if (isDebugNode(value)) {\n return true;\n }\n\n return true;\n};\n\nexport default (args: any[], isValidValue: (value: any) => boolean, defaultNotFoundValue?: any): [any, any, any] => {\n let el;\n let sel;\n let notFoundValue = defaultNotFoundValue;\n if (args.length === 3) {\n [el, sel, notFoundValue] = args;\n } else if (args.length === 1) {\n el = funcGetLastFixture();\n [sel] = args;\n } else if (isValidValue(args[1]) && isSelector(args[0])) {\n [el, sel] = args;\n } else {\n el = funcGetLastFixture();\n [sel, notFoundValue] = args;\n }\n\n return [el, sel, notFoundValue];\n};\n","import { DebugNode, Directive } from '@angular/core';\n\nimport coreInjector from '../common/core.injector';\nimport coreReflectDirectiveResolve from '../common/core.reflect.directive-resolve';\nimport funcGetProvider from '../common/func.get-provider';\n\nconst getMeta = (token: any): Directive | undefined => {\n try {\n return coreReflectDirectiveResolve(token);\n } catch {\n return undefined;\n }\n};\n\nexport default (el: DebugNode | null | undefined, token: any): Directive | undefined => {\n // istanbul ignore if\n if (!el) {\n return undefined;\n }\n\n try {\n const provider = funcGetProvider(token);\n const instance = coreInjector(provider, el.injector);\n\n return getMeta(instance.constructor);\n } catch {\n return undefined;\n }\n};\n","import { MockedDebugElement } from '../mock-render/types';\n\nimport mockHelperFind from './find/mock-helper.find';\nimport funcGetLastFixture from './func.get-last-fixture';\nimport funcParseProviderTokensDirectives from './func.parse-provider-tokens-directives';\nimport mockHelperGet from './mock-helper.get';\n\nconst defaultNotFoundValue = {}; // simulating Symbol\n\nconst parseArgs = (args: any[]): [MockedDebugElement | null | undefined, string, any] => [\n args[0],\n args[1],\n args.length === 3 ? args[2] : defaultNotFoundValue,\n];\n\nconst attrMatches = (attribute: string, selector: string): string | undefined => {\n const [prop, alias = ''] = attribute.split(':', 2).map(v => v.trim());\n\n if ((!alias && prop === selector) || (!!alias && alias === selector)) {\n return prop;\n }\n\n return undefined;\n};\n\nconst detectAttribute = (el: MockedDebugElement | null | undefined, attr: 'inputs' | 'outputs', sel: string) => {\n for (const token of el?.providerTokens || []) {\n const meta = funcParseProviderTokensDirectives(el, token);\n if (!meta) {\n continue;\n }\n\n for (const attrDef of meta[attr] || /* istanbul ignore next */ []) {\n const prop = attrMatches(attrDef, sel);\n if (prop) {\n return mockHelperGet(el, token)[prop];\n }\n }\n }\n\n throw new Error('Not found');\n};\n\nexport default (label: string, attr: 'inputs' | 'outputs', ...args: any[]) => {\n const [el, sel, notFoundValue] = parseArgs(args);\n\n try {\n return detectAttribute(mockHelperFind(funcGetLastFixture(), el, undefined), attr, sel);\n } catch {\n // nothing to do\n }\n if (notFoundValue !== defaultNotFoundValue) {\n return notFoundValue;\n }\n throw new Error(`Cannot find ${sel} ${label} via ngMocks.${label}`);\n};\n","import { registerMockFunction } from '../mock-service/helper.mock-service';\nimport { CustomMockFunction } from '../mock-service/types';\n\ntype param = 'jasmine' | 'jest' | 'default' | 'reset' | CustomMockFunction;\n\nconst calls: param[] = [];\n\nexport default (type: param) => {\n if (type === 'reset') {\n calls.pop();\n } else {\n calls.push(type);\n }\n const action: param | undefined = calls[calls.length - 1];\n\n if (action === 'jasmine') {\n return registerMockFunction(mockName => jasmine.createSpy(mockName));\n }\n // istanbul ignore if: because it is run with jasmine\n if (action === 'jest') {\n return registerMockFunction(name => jest.fn().mockName(name));\n }\n if (!action || action === 'default' || action === 'reset') {\n return registerMockFunction();\n }\n\n return registerMockFunction(action);\n};\n","// tslint:disable no-console\n\nimport helperMockService from '../mock-service/helper.mock-service';\n\nimport mockHelperConsole from './mock-helper.console';\n\nconst factory = (propName: string) => helperMockService.mockFunction(`console.${propName}`);\n\n// Thanks Ivy, it does not throw an error and we have to use injector.\nexport default mockHelperConsole(['log'], factory);\n","// tslint:disable no-console\n\nimport coreDefineProperty from '../common/core.define-property';\n\nimport mockHelperConsole from './mock-helper.console';\n\nconst factory =\n (propName: string) =>\n (...args: any[]) => {\n const error = new Error(args.join(' '));\n coreDefineProperty(error, 'ngMocksConsoleCatch', propName);\n throw error;\n };\n\n// Thanks Ivy, it does not throw an error, and we have to use injector.\nexport default mockHelperConsole(['warn', 'error'], factory);\n","// tslint:disable no-console\n\nimport coreDefineProperty from '../common/core.define-property';\n\n// Thanks Ivy, it does not throw an error, and we have to use injector.\nexport default (defaultMethods: Array<keyof typeof console>, factory: (name: string) => any) =>\n (...methods: Array<keyof typeof console>): void => {\n const backup: Array<keyof typeof console> = [];\n\n beforeEach(() => {\n for (const method of defaultMethods) {\n if (methods.indexOf(method) === -1) {\n methods.push(method);\n }\n }\n\n for (const method of methods) {\n coreDefineProperty(console, `__ngMocksBackup_${method}`, (console as any)[`__ngMocksBackup_${method}`] || []);\n (console as any)[`__ngMocksBackup_${method}`].push(console[method]);\n backup.push(method);\n console[method] = factory(method) as never;\n }\n });\n\n afterEach(() => {\n for (const method of backup) {\n console[method] = (console as any)[`__ngMocksBackup_${method}`].pop();\n }\n backup.splice(0, backup.length);\n });\n };\n","import { InjectionToken } from '@angular/core';\n\nimport { flatten } from '../common/core.helpers';\nimport { AnyType } from '../common/core.types';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\nimport { IMockBuilderConfig } from '../mock-builder/types';\n\nexport default <T>(\n def: AnyType<T> | InjectionToken<T> | string | Array<AnyType<T> | InjectionToken<T> | string>,\n config?: IMockBuilderConfig,\n): void => {\n const map = ngMocksUniverse.getConfigMock();\n for (const item of flatten(def)) {\n if (config) {\n map.set(item, config);\n } else {\n map.delete(item);\n }\n }\n};\n","import { InjectionToken, Injector } from '@angular/core';\n\nimport { flatten } from '../common/core.helpers';\nimport { AnyType } from '../common/core.types';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nexport default <T>(\n def: AnyType<T> | InjectionToken<T> | string | Array<AnyType<T> | InjectionToken<T> | string>,\n callback?: (instance: undefined | T, injector: Injector) => void | Partial<T>,\n): void => {\n const map = ngMocksUniverse.getOverrides();\n for (const item of flatten(def)) {\n if (callback) {\n const set: Set<any> = map.has(item) ? map.get(item) : new Set();\n set.add(callback);\n map.set(item, set);\n } else {\n map.delete(item);\n }\n }\n};\n","import { TestBed, TestBedStatic, TestModuleMetadata } from '@angular/core/testing';\n\nimport coreDefineProperty from '../common/core.define-property';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nconst hooks: {\n after: Array<(original: TestBedStatic['resetTestingModule']) => TestBedStatic['resetTestingModule']>;\n before: Array<(original: TestBedStatic['configureTestingModule']) => TestBedStatic['configureTestingModule']>;\n} = ngMocksUniverse.global.get('faster-hooks') || {\n after: [],\n before: [],\n};\nngMocksUniverse.global.set('faster-hooks', hooks);\n\nconst configureTestingModule =\n (original: TestBedStatic['configureTestingModule']): TestBedStatic['configureTestingModule'] =>\n (moduleDef: TestModuleMetadata) => {\n ngMocksUniverse.global.set('bullet:customized', true);\n\n let final = original;\n for (const callback of hooks.before) {\n final = callback(final);\n }\n\n return final.call(TestBed, moduleDef);\n };\n\nconst resetTestingModule =\n (original: TestBedStatic['resetTestingModule']): TestBedStatic['resetTestingModule'] =>\n () => {\n if (ngMocksUniverse.global.has('bullet')) {\n if (ngMocksUniverse.global.has('bullet:customized')) {\n ngMocksUniverse.global.set('bullet:reset', true);\n }\n\n return TestBed;\n }\n ngMocksUniverse.global.delete('bullet:customized');\n ngMocksUniverse.global.delete('bullet:reset');\n let final = original;\n for (const callback of hooks.after) {\n final = callback(final);\n }\n\n return final.call(TestBed);\n };\n\nexport default () => {\n if (!(TestBed as any).ngMocksFasterInstalled) {\n TestBed.configureTestingModule = configureTestingModule(TestBed.configureTestingModule);\n TestBed.resetTestingModule = resetTestingModule(TestBed.resetTestingModule);\n coreDefineProperty(TestBed, 'ngMocksFasterInstalled', true);\n }\n\n return hooks;\n};\n","import { ComponentFixture, getTestBed, TestBed } from '@angular/core/testing';\n\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport mockHelperFasterInstall from './mock-helper.faster-install';\nimport mockHelperFlushTestBed from './mock-helper.flush-test-bed';\n\nconst resetFixtures = (id: never) => {\n const activeFixtures: Array<ComponentFixture<any> & { ngMocksStackId?: any }> =\n (getTestBed() as any)._activeFixtures || /* istanbul ignore next */ [];\n\n let active = 0;\n for (let i = activeFixtures.length - 1; i >= 0; i -= 1) {\n if (!activeFixtures[i].ngMocksStackId || activeFixtures[i].ngMocksStackId === id) {\n activeFixtures[i].ngMocksStackId = undefined;\n } else {\n active += 1;\n }\n }\n if (active === 0) {\n mockHelperFlushTestBed();\n }\n};\n\nconst idAdd = (id: any) => {\n const bulletStack: any[] = ngMocksUniverse.global.get('bullet:stack') ?? [];\n bulletStack.push(id);\n ngMocksUniverse.global.set('bullet:stack', bulletStack);\n ngMocksUniverse.global.set('bullet:stack:id', id);\n};\nconst idRemove = (id: any) => {\n const bulletStack: any[] = ngMocksUniverse.global.get('bullet:stack');\n bulletStack.splice(bulletStack.indexOf(id), 1);\n if (bulletStack.length) {\n ngMocksUniverse.global.set('bullet:stack:id', bulletStack[bulletStack.length - 1]);\n } else {\n ngMocksUniverse.global.delete('bullet:stack:id');\n }\n\n resetFixtures(id as never);\n};\n\nexport default () => {\n mockHelperFasterInstall();\n\n const idAll = {};\n const idEach = {};\n\n beforeAll(() => {\n if (ngMocksUniverse.global.has('bullet:customized')) {\n TestBed.resetTestingModule();\n }\n ngMocksUniverse.global.set('bullet', true);\n idAdd(idAll);\n });\n\n beforeEach(() => {\n idAdd(idEach);\n });\n afterEach(() => {\n idRemove(idEach);\n });\n\n afterAll(() => {\n idRemove(idAll);\n ngMocksUniverse.global.delete('bullet');\n if (ngMocksUniverse.global.has('bullet:reset')) {\n TestBed.resetTestingModule();\n }\n });\n};\n","import { getTestBed } from '@angular/core/testing';\n\nexport default (): void => {\n const testBed: any = getTestBed();\n testBed._instantiated = false;\n testBed._moduleFactory = undefined;\n testBed._testModuleRef = null;\n};\n","import { Type } from '../common/core.types';\nimport { getSourceOfMock } from '../common/func.get-source-of-mock';\nimport { MockedDebugElement } from '../mock-render/types';\n\nimport mockHelperFind from './find/mock-helper.find';\nimport funcGetFromNode from './func.get-from-node';\nimport funcGetLastFixture from './func.get-last-fixture';\n\nconst defaultNotFoundValue = {}; // simulating Symbol\n\nconst parseArgs = <T>(\n args: any[],\n): {\n el: MockedDebugElement | null | undefined;\n notFoundValue: any;\n sel: Type<T>;\n} => ({\n el: args[0],\n notFoundValue: args.length === 3 ? args[2] : defaultNotFoundValue,\n sel: args[1],\n});\n\nexport default <T>(...args: any[]) => {\n const { el, sel, notFoundValue } = parseArgs<T>(args);\n const root = mockHelperFind(funcGetLastFixture(), el, undefined);\n\n const res1 = funcGetFromNode([], root, getSourceOfMock(sel));\n if (res1.length) {\n return res1[0];\n }\n\n // Looking for related structural directive.\n const prevNode = root?.nativeNode.previousSibling;\n const matches =\n !prevNode || prevNode.nodeName !== '#comment' || !root || !root.parent\n ? []\n : root.parent.queryAllNodes(node => node.nativeNode === prevNode);\n const matchedNode = matches[0];\n const res2 = funcGetFromNode([], matchedNode, getSourceOfMock(sel));\n if (res2.length) {\n return res2[0];\n }\n if (notFoundValue !== defaultNotFoundValue) {\n return notFoundValue;\n }\n throw new Error(`Cannot find ${sel.name} instance via ngMocks.get`);\n};\n","import { InjectionToken } from '@angular/core';\n\nimport { AnyType } from '../common/core.types';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport funcGlobalPrepare from './func.global-prepare';\n\nexport default (source: AnyType<any> | InjectionToken<any>): void => {\n funcGlobalPrepare();\n ngMocksUniverse.getDefaults().set(source, ['exclude']);\n};\n","import { InjectionToken } from '@angular/core';\n\nimport { AnyType } from '../common/core.types';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport funcGlobalPrepare from './func.global-prepare';\n\nexport default (source: AnyType<any> | InjectionToken<any>): void => {\n funcGlobalPrepare();\n ngMocksUniverse.getDefaults().set(source, ['keep']);\n};\n","import { InjectionToken } from '@angular/core';\n\nimport { AnyType } from '../common/core.types';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport funcGlobalPrepare from './func.global-prepare';\n\nexport default (source: AnyType<any> | InjectionToken<any>): void => {\n funcGlobalPrepare();\n ngMocksUniverse.getDefaults().set(source, ['mock']);\n};\n","import { AnyType } from '../common/core.types';\nimport { isNgDef } from '../common/func.is-ng-def';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport funcGlobalPrepare from './func.global-prepare';\n\nexport default (source: AnyType<any>, destination: AnyType<any>): void => {\n let fail = true;\n if (isNgDef(source, 'm') && isNgDef(destination, 'm')) {\n fail = false;\n } else if (isNgDef(source, 'c') && isNgDef(destination, 'c')) {\n fail = false;\n } else if (isNgDef(source, 'd') && isNgDef(destination, 'd')) {\n fail = false;\n } else if (isNgDef(source, 'p') && isNgDef(destination, 'p')) {\n fail = false;\n }\n\n if (fail) {\n throw new Error('Cannot replace the declaration, both have to be a Module, a Component, a Directive or a Pipe');\n }\n\n funcGlobalPrepare();\n ngMocksUniverse.getDefaults().set(source, ['replace', destination]);\n};\n","import { InjectionToken } from '@angular/core';\n\nimport { AnyType } from '../common/core.types';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport funcGlobalPrepare from './func.global-prepare';\nimport mockHelperDefaultMock from './mock-helper.default-mock';\n\nexport default (source: AnyType<any> | InjectionToken<any>): void => {\n funcGlobalPrepare();\n ngMocksUniverse.getDefaults().delete(source);\n mockHelperDefaultMock(source);\n};\n","import { TestModuleMetadata } from '@angular/core/testing';\n\nimport { flatten, mapKeys, mapValues } from '../common/core.helpers';\nimport coreReflectModuleResolve from '../common/core.reflect.module-resolve';\nimport funcGetProvider from '../common/func.get-provider';\nimport { isNgDef } from '../common/func.is-ng-def';\nimport { isNgInjectionToken } from '../common/func.is-ng-injection-token';\nimport { isNgModuleDefWithProviders } from '../common/func.is-ng-module-def-with-providers';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\nimport { MockComponent } from '../mock-component/mock-component';\nimport { MockDirective } from '../mock-directive/mock-directive';\nimport { MockModule } from '../mock-module/mock-module';\nimport { MockPipe } from '../mock-pipe/mock-pipe';\nimport mockProvider from '../mock-service/mock-provider';\n\ntype Data = {\n declarations: any[];\n exclude: Set<any>;\n imports: any[];\n keep: Set<any>;\n mock: Set<any>;\n optional: Map<any, any>;\n providers: any[];\n skip: Set<any>;\n};\n\nconst skipDef = (def: any, skip: Set<any>, exclude: Set<any>): boolean => {\n if (skip.has(def)) {\n return true;\n }\n skip.add(def);\n\n return exclude.has(def);\n};\n\nconst createMetaHandler = (\n optional: Map<any, any>,\n proto: any,\n imports: any[],\n declarations: any[],\n providers: any[],\n): void => {\n const def = optional.get(proto) || proto;\n\n if (isNgDef(def, 'm')) {\n imports.push(def);\n } else if (isNgDef(def, 'c') || isNgDef(def, 'd')) {\n declarations.push(def);\n } else if (isNgDef(def, 'p')) {\n declarations.push(def);\n providers.push(def);\n } else if (!isNgInjectionToken(def)) {\n providers.push(def);\n }\n};\n\nconst createMeta = ({ keep, skip, optional, exclude, imports, declarations, providers }: Data): TestModuleMetadata => {\n for (const proto of keep) {\n if (skip.has(proto) || exclude.has(proto) || optional.has(proto)) {\n continue;\n }\n createMetaHandler(optional, proto, imports, declarations, providers);\n }\n\n return { declarations, imports, providers };\n};\n\nconst typeMap: Array<[any, string]> = [\n ['m', 'module'],\n ['c', 'component'],\n ['d', 'directive'],\n ['p', 'pipe'],\n];\n\nconst getType = (def: any, keep: Set<any>): string => {\n if (isNgModuleDefWithProviders(def)) {\n return 'module-with-providers';\n }\n for (const [flag, value] of typeMap) {\n if (isNgDef(def, flag)) {\n return flag === 'm' && keep.has(def) ? `${value}-keep` : value;\n }\n }\n\n return '';\n};\n\nconst handleModuleWithProviders = (data: Data, def: any): void => {\n if (data.skip.has(def.ngModule)) {\n return;\n }\n data.skip.add(def.ngModule);\n if (data.exclude.has(def.ngModule)) {\n return;\n }\n\n data.imports.push(data.keep.has(def.ngModule) ? def : MockModule(def));\n};\n\nconst handleDeclaration = (data: Data, def: any, callback: any, bucket: any[]): void => {\n if (skipDef(def, data.skip, data.exclude)) {\n return;\n }\n\n bucket.push(data.keep.has(def) ? def : callback(def));\n};\n\nconst handleDestructuring = (data: Data, def: any, callback: any): void => {\n if (skipDef(def, data.skip, data.exclude)) {\n return;\n }\n\n const meta = coreReflectModuleResolve(def);\n for (const toMock of flatten([meta.declarations, meta.imports])) {\n callback(data, toMock);\n }\n for (const toMock of meta.providers ? flatten(meta.providers) : []) {\n resolveProvider(data, toMock);\n }\n};\n\nconst resolveProvider = ({ skip, keep, providers, exclude }: Data, def: any): void => {\n const provider = funcGetProvider(def);\n skip.add(provider);\n if (exclude.has(provider)) {\n return;\n }\n\n const providerDef = keep.has(provider) ? def : mockProvider(def);\n if (providerDef) {\n providers.push(providerDef);\n }\n};\n\nconst resolveMap: Record<string, any> = {\n component: MockComponent,\n directive: MockDirective,\n pipe: MockPipe,\n};\n\nconst resolveHandler = (data: Data, type: string, def: any, skipDestruction: boolean): void => {\n if (type === 'module-with-providers') {\n handleModuleWithProviders(data, def);\n } else if (type === 'module-keep') {\n handleDeclaration(data, def, MockModule, data.imports); // MockModule will not be called because the def is kept.\n } else if (type === 'module' && skipDestruction) {\n handleDeclaration(data, def, MockModule, data.imports);\n } else if (type === 'module') {\n handleDestructuring(data, def, resolve);\n } else if (resolveMap[type]) {\n handleDeclaration(data, def, resolveMap[type], data.declarations);\n } else {\n resolveProvider(data, def);\n }\n};\n\nconst resolve = (data: Data, proto: any, skipDestruction = true): void => {\n if (!proto) {\n return;\n }\n\n const type = getType(proto, data.keep);\n let def: any;\n\n // an attempt to replace declarations.\n if (type !== 'module-with-providers') {\n const value = data.optional.get(proto);\n if (value && value !== proto) {\n def = value;\n data.keep.add(def);\n }\n }\n if (!def) {\n def = proto;\n }\n\n resolveHandler(data, type, def, skipDestruction);\n};\n\nconst generateDataWithUniverse = (keep: Set<any>, mock: Set<any>, exclude: Set<any>, optional: Map<any, any>): void => {\n for (const k of mapKeys(ngMocksUniverse.getDefaults())) {\n const v = ngMocksUniverse.getBuildDeclaration(k);\n if (keep.has(k) || mock.has(k) || exclude.has(k)) {\n continue;\n }\n optional.set(k, v);\n\n if (v === null) {\n exclude.add(k);\n } else if (v === undefined) {\n mock.add(k);\n } else if (k === v) {\n keep.add(k);\n }\n }\n};\n\nconst generateData = (protoKeep: any, protoMock: any, protoExclude: any): Data => {\n const keep = new Set(flatten(protoKeep || []));\n const mock = new Set(flatten(protoMock || []));\n const exclude = new Set(flatten(protoExclude || []));\n const optional = new Map();\n generateDataWithUniverse(keep, mock, exclude, optional);\n\n return {\n declarations: [],\n exclude,\n imports: [],\n keep,\n mock,\n optional,\n providers: [],\n skip: new Set(),\n };\n};\n\nexport default (keep: any, mock: any = null, exclude: any = null): TestModuleMetadata => {\n const data: Data = generateData(keep, mock, exclude);\n\n const resolutions = new Map();\n ngMocksUniverse.config.set('ngMocksDepsResolution', resolutions);\n for (const mockDef of mapValues(data.keep)) {\n resolutions.set(mockDef, 'keep');\n }\n for (const mockDef of mapValues(data.exclude)) {\n resolutions.set(mockDef, 'exclude');\n }\n\n ngMocksUniverse.config.set('mockNgDefResolver', new Map());\n for (const def of mapValues(data.mock)) {\n resolutions.set(def, 'mock');\n if (data.optional.has(def)) {\n continue;\n }\n resolve(data, def, false);\n }\n const meta = createMeta(data);\n ngMocksUniverse.config.delete('mockNgDefResolver');\n ngMocksUniverse.config.delete('ngMocksDepsResolution');\n\n return meta;\n};\n","import mockHelperAttributes from './mock-helper.attributes';\n\nexport default (...args: any[]) => mockHelperAttributes('input', 'inputs', ...args);\n","import coreConfig from '../common/core.config';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport mockHelperCrawl from './crawl/mock-helper.crawl';\nimport mockHelperReveal from './crawl/mock-helper.reveal';\nimport mockHelperRevealAll from './crawl/mock-helper.reveal-all';\nimport mockHelperChange from './cva/mock-helper.change';\nimport mockHelperTouch from './cva/mock-helper.touch';\nimport mockHelperClick from './events/mock-helper.click';\nimport mockHelperEvent from './events/mock-helper.event';\nimport mockHelperTrigger from './events/mock-helper.trigger';\nimport mockHelperFindInstance from './find-instance/mock-helper.find-instance';\nimport mockHelperFindInstances from './find-instance/mock-helper.find-instances';\nimport mockHelperFind from './find/mock-helper.find';\nimport mockHelperFindAll from './find/mock-helper.find-all';\nimport mockHelperFormatHtml from './format/mock-helper.format-html';\nimport mockHelperFormatText from './format/mock-helper.format-text';\nimport mockHelperAutoSpy from './mock-helper.auto-spy';\nimport mockHelperConsoleIgnore from './mock-helper.console-ignore';\nimport mockHelperConsoleThrow from './mock-helper.console-throw';\nimport mockHelperDefaultConfig from './mock-helper.default-config';\nimport mockHelperDefaultMock from './mock-helper.default-mock';\nimport mockHelperFaster from './mock-helper.faster';\nimport mockHelperFlushTestBed from './mock-helper.flush-test-bed';\nimport mockHelperGet from './mock-helper.get';\nimport mockHelperGlobalExclude from './mock-helper.global-exclude';\nimport mockHelperGlobalKeep from './mock-helper.global-keep';\nimport mockHelperGlobalMock from './mock-helper.global-mock';\nimport mockHelperGlobalReplace from './mock-helper.global-replace';\nimport mockHelperGlobalWipe from './mock-helper.global-wipe';\nimport mockHelperGuts from './mock-helper.guts';\nimport mockHelperInput from './mock-helper.input';\nimport mockHelperOutput from './mock-helper.output';\nimport mockHelperReset from './mock-helper.reset';\nimport mockHelperStub from './mock-helper.stub';\nimport mockHelperStubMember from './mock-helper.stub-member';\nimport mockHelperHide from './render/mock-helper.hide';\nimport mockHelperRender from './render/mock-helper.render';\nimport mockHelperFindTemplateRef from './template-ref/mock-helper.find-template-ref';\nimport mockHelperFindTemplateRefs from './template-ref/mock-helper.find-template-refs';\n\nexport default {\n autoSpy: mockHelperAutoSpy,\n change: mockHelperChange,\n click: mockHelperClick,\n config: (config: {\n mockRenderCacheSize?: number | null;\n onMockInstanceRestoreNeed?: 'throw' | 'warn' | 'i-know-but-disable' | null;\n onTestBedFlushNeed?: 'throw' | 'warn' | 'i-know-but-disable' | null;\n }) => {\n const flags = ngMocksUniverse.global.get('flags');\n for (const flag of ['onTestBedFlushNeed', 'onMockInstanceRestoreNeed'] as const) {\n if (config[flag] === null) {\n flags[flag] = coreConfig[flag];\n } else if (config[flag] !== undefined) {\n flags[flag] = config[flag];\n }\n }\n if (config.mockRenderCacheSize === null) {\n ngMocksUniverse.global.delete('mockRenderCacheSize');\n } else if (config.mockRenderCacheSize !== undefined) {\n ngMocksUniverse.global.set('mockRenderCacheSize', config.mockRenderCacheSize);\n }\n },\n crawl: mockHelperCrawl,\n defaultConfig: mockHelperDefaultConfig,\n defaultMock: mockHelperDefaultMock,\n event: mockHelperEvent,\n faster: mockHelperFaster,\n find: mockHelperFind,\n findAll: mockHelperFindAll,\n findInstance: mockHelperFindInstance,\n findInstances: mockHelperFindInstances,\n findTemplateRef: mockHelperFindTemplateRef,\n findTemplateRefs: mockHelperFindTemplateRefs,\n flushTestBed: mockHelperFlushTestBed,\n formatHtml: mockHelperFormatHtml,\n formatText: mockHelperFormatText,\n get: mockHelperGet,\n globalExclude: mockHelperGlobalExclude,\n globalKeep: mockHelperGlobalKeep,\n globalMock: mockHelperGlobalMock,\n globalReplace: mockHelperGlobalReplace,\n globalWipe: mockHelperGlobalWipe,\n guts: mockHelperGuts,\n hide: mockHelperHide,\n ignoreOnConsole: mockHelperConsoleIgnore,\n input: mockHelperInput,\n output: mockHelperOutput,\n render: mockHelperRender,\n reset: mockHelperReset,\n reveal: mockHelperReveal,\n revealAll: mockHelperRevealAll,\n stub: mockHelperStub,\n stubMember: mockHelperStubMember,\n throwOnConsole: mockHelperConsoleThrow,\n touch: mockHelperTouch,\n trigger: mockHelperTrigger,\n};\n","import mockHelperAttributes from './mock-helper.attributes';\n\nexport default (...args: any[]) => mockHelperAttributes('output', 'outputs', ...args);\n","import coreConfig from '../common/core.config';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nexport default (): void => {\n ngMocksUniverse.builtDeclarations = new Map();\n ngMocksUniverse.builtProviders = new Map();\n ngMocksUniverse.cacheDeclarations = new Map();\n ngMocksUniverse.cacheProviders = new Map();\n ngMocksUniverse.config = new Map();\n ngMocksUniverse.configInstance = new Map();\n ngMocksUniverse.flags = new Set(coreConfig.flags);\n ngMocksUniverse.touches = new Set();\n};\n","import helperExtractPropertyDescriptor from '../mock-service/helper.extract-property-descriptor';\n\nexport default <T extends object>(\n instance: T & { __ngMocks__source?: object },\n key: any,\n value: any,\n encapsulation?: 'get' | 'set',\n): any => {\n const def = helperExtractPropertyDescriptor(instance, key) ?? {};\n\n if (!encapsulation && def.set && (def.set as any).__ngMocksProxy) {\n def.set(value);\n\n return value;\n }\n\n const descriptor: PropertyDescriptor = {\n configurable: true,\n enumerable: true,\n };\n if (encapsulation === 'get' && def.set) {\n descriptor.set = def.set;\n } else if (encapsulation === 'set' && def.get) {\n descriptor.get = def.get;\n }\n if (encapsulation) {\n descriptor[encapsulation] = value;\n } else {\n descriptor.writable = true;\n descriptor.value = value;\n }\n\n Object.defineProperty(instance, key, descriptor);\n\n return value;\n};\n","import helperMockService from '../mock-service/helper.mock-service';\nimport { MockedFunction } from '../mock-service/types';\n\nexport default <T = MockedFunction>(instance: any, override: any, style?: 'get' | 'set'): T => {\n if (typeof override === 'string') {\n return helperMockService.mock(instance, override, style);\n }\n\n // if someone is giving us a function, then we should swap instance and overrides.\n // so in the end the function can be called, but it also has all desired properties.\n let correctInstance = instance;\n let applyOverrides = override;\n const skipProps = ['__zone_symbol__unconfigurables'];\n if (typeof override === 'function') {\n correctInstance = helperMockService.createClone(override);\n applyOverrides = instance;\n skipProps.push(...Object.getOwnPropertyNames(correctInstance));\n }\n\n for (const key of Object.getOwnPropertyNames(applyOverrides)) {\n const desc = skipProps.indexOf(key) === -1 ? Object.getOwnPropertyDescriptor(applyOverrides, key) : undefined;\n helperMockService.definePropertyDescriptor(correctInstance, key, desc);\n }\n\n return correctInstance;\n};\n","// tslint:disable max-file-line-count\n\nimport { DebugNode, EventEmitter, InjectionToken, Injector, Provider, TemplateRef } from '@angular/core';\nimport { ComponentFixture, TestModuleMetadata } from '@angular/core/testing';\n\nimport { AnyType, DebugNodeSelector, Type } from '../common/core.types';\nimport { NgModuleWithProviders } from '../common/func.is-ng-module-def-with-providers';\nimport { IMockBuilderConfig } from '../mock-builder/types';\nimport { MockedDebugElement, MockedDebugNode } from '../mock-render/types';\nimport { CustomMockFunction, MockedFunction } from '../mock-service/types';\n\nimport { FORMAT_SET, FORMAT_SINGLE } from './format/types';\nimport mockHelperObject from './mock-helper.object';\n\n/**\n * @see https://ng-mocks.sudo.eu/api/ngMocks\n */\nexport const ngMocks: {\n /**\n * @see https://ng-mocks.sudo.eu/extra/auto-spy\n */\n autoSpy(type: 'jasmine' | 'jest' | 'default' | 'reset'): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/extra/auto-spy\n */\n autoSpy(type: CustomMockFunction): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/change\n */\n change(elSelector: DebugNodeSelector, value: any): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/click\n */\n click(elSelector: HTMLElement | DebugNodeSelector, payload?: Partial<MouseEvent>): void;\n\n config(config: {\n mockRenderCacheSize?: number | null;\n onMockInstanceRestoreNeed?: 'throw' | 'warn' | 'i-know-but-disable' | null;\n onTestBedFlushNeed?: 'throw' | 'warn' | 'i-know-but-disable' | null;\n }): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/crawl\n */\n crawl(\n elSelector: DebugNodeSelector,\n callback: (\n node: MockedDebugNode | MockedDebugElement,\n parent?: MockedDebugNode | MockedDebugElement,\n ) => boolean | void,\n includeTextNodes?: boolean,\n ): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/defaultConfig\n */\n defaultConfig<T>(token: string | InjectionToken<T> | AnyType<T>, config?: IMockBuilderConfig): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/defaultMock\n */\n defaultMock<T>(\n token: InjectionToken<T>,\n handler?: (value: undefined | T, injector: Injector) => undefined | Partial<T>,\n config?: IMockBuilderConfig,\n ): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/defaultMock\n */\n defaultMock<T = any>(\n token: string,\n handler?: (value: undefined | T, injector: Injector) => undefined | Partial<T>,\n config?: IMockBuilderConfig,\n ): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/defaultMock\n */\n defaultMock<T>(\n def: AnyType<T>,\n handler?: (value: T, injector: Injector) => void | Partial<T>,\n config?: IMockBuilderConfig,\n ): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/defaultMock\n */\n defaultMock<T = any>(\n defs: Array<AnyType<T> | InjectionToken<T>>,\n handler?: (value: undefined | T, injector: Injector) => undefined | Partial<T>,\n config?: IMockBuilderConfig,\n ): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/event\n */\n event(\n event: string,\n init?: EventInit,\n overrides?: Partial<UIEvent | KeyboardEvent | MouseEvent | TouchEvent | Event>,\n ): Event;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/faster\n */\n faster(): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/find\n */\n find<T>(component: Type<T>): MockedDebugElement<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/find\n */\n find<T>(\n debugElement: MockedDebugElement | ComponentFixture<any> | undefined | null,\n component: Type<T>,\n ): MockedDebugElement<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/find\n */\n find<T, D>(component: Type<T>, notFoundValue: D): D | MockedDebugElement<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/find\n */\n find<T, D>(\n debugElement: MockedDebugElement | ComponentFixture<any> | undefined | null,\n component: Type<T>,\n notFoundValue: D,\n ): D | MockedDebugElement<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/find\n */\n find<T = any>(cssSelector: string | [string] | [string, string | number]): MockedDebugElement<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/find\n */\n find<T = any>(\n debugElement: MockedDebugElement | ComponentFixture<any> | undefined | null,\n cssSelector: string | [string] | [string, string | number],\n ): MockedDebugElement<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/find\n */\n find<T = any, D = undefined>(\n cssSelector: string | [string] | [string, string | number],\n notFoundValue: D,\n ): D | MockedDebugElement<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/find\n */\n find<T = any, D = undefined>(\n debugElement: MockedDebugElement | ComponentFixture<any> | undefined | null,\n cssSelector: string | [string] | [string, string | number],\n notFoundValue: D,\n ): D | MockedDebugElement<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findAll\n */\n findAll<T>(component: Type<T>): Array<MockedDebugElement<T>>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findAll\n */\n findAll<T>(\n debugElement: MockedDebugElement | ComponentFixture<any> | undefined | null,\n component: Type<T>,\n ): Array<MockedDebugElement<T>>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findAll\n */\n findAll<T = any>(cssSelector: string | [string] | [string, string | number]): Array<MockedDebugElement<T>>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findAll\n */\n findAll<T = any>(\n debugElement: MockedDebugElement | ComponentFixture<any> | undefined | null,\n cssSelector: string | [string] | [string, string | number],\n ): Array<MockedDebugElement<T>>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstance\n */\n findInstance<T>(instanceClass: AnyType<T> | InjectionToken<T>): T;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstance\n */\n findInstance<T>(elSelector: DebugNodeSelector, instanceClass: AnyType<T> | InjectionToken<T>): T;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstance\n */\n findInstance<T, D>(instanceClass: AnyType<T> | InjectionToken<T>, notFoundValue: D): D | T;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstance\n */\n findInstance<T, D>(\n elSelector: DebugNodeSelector,\n instanceClass: AnyType<T> | InjectionToken<T>,\n notFoundValue: D,\n ): D | T;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstances\n */\n findInstances<T>(instanceClass: AnyType<T> | InjectionToken<T>): T[];\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstances\n */\n findInstances<T>(elSelector: DebugNodeSelector, instanceClass: AnyType<T> | InjectionToken<T>): T[];\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findTemplateRef\n */\n findTemplateRef<T = any, D = undefined>(\n elSelector: DebugNodeSelector,\n selector: string | [string] | [string, any] | AnyType<any>,\n notFoundValue: D,\n ): D | TemplateRef<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findTemplateRef\n */\n findTemplateRef<T = any>(\n elSelector: DebugNodeSelector,\n selector: string | [string] | [string, any] | AnyType<any>,\n ): TemplateRef<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findTemplateRef\n */\n findTemplateRef<T = any, D = undefined>(\n selector: string | [string] | [string, any] | AnyType<any>,\n notFoundValue: D,\n ): D | TemplateRef<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findTemplateRef\n */\n findTemplateRef<T = any>(selector: string | [string] | [string, any] | AnyType<any>): TemplateRef<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findTemplateRefs\n */\n findTemplateRefs<T = any>(\n elSelector: DebugNodeSelector,\n selector: string | [string] | [string, any] | AnyType<any>,\n ): Array<TemplateRef<T>>;\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findTemplateRefs\n */\n findTemplateRefs<T = any>(selector: string | [string] | [string, any] | AnyType<any>): Array<TemplateRef<T>>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/flushTestBed\n */\n flushTestBed(): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/formatHtml\n */\n formatHtml(html: FORMAT_SINGLE, outer?: boolean): string;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/formatHtml\n */\n formatHtml(html: FORMAT_SET, outer?: boolean): string[];\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/formatText\n */\n formatText(text: FORMAT_SINGLE, outer?: boolean): string;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/formatText\n */\n formatText(text: FORMAT_SET, outer?: boolean): string[];\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/get\n */\n get<T>(elSelector: DebugNodeSelector, provider: AnyType<T> | InjectionToken<T>): T;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/get\n */\n get<T, D>(elSelector: DebugNodeSelector, provider: AnyType<T> | InjectionToken<T>, notFoundValue: D): D | T;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/globalExclude\n */\n globalExclude(source: AnyType<any> | InjectionToken<any>): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/globalKeep\n */\n globalKeep(source: AnyType<any> | InjectionToken<any>): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/globalMock\n */\n globalMock(source: AnyType<any> | InjectionToken<any>): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/globalReplace\n */\n globalReplace(source: AnyType<any>, destination: AnyType<any>): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/globalWipe\n */\n globalWipe(source: AnyType<any> | InjectionToken<any>): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/guts\n */\n guts(\n keep:\n | AnyType<any>\n | InjectionToken<any>\n | Provider\n | Array<AnyType<any> | InjectionToken<any> | Provider>\n | null\n | undefined,\n mock?:\n | AnyType<any>\n | InjectionToken<any>\n | NgModuleWithProviders\n | Provider\n | Array<AnyType<any> | InjectionToken<any> | NgModuleWithProviders | Provider>\n | null\n | undefined,\n exclude?: AnyType<any> | InjectionToken<any> | Array<AnyType<any> | InjectionToken<any>> | null | undefined,\n ): TestModuleMetadata;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/hide\n */\n hide(instance: object, tpl?: TemplateRef<any> | DelayNode): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/hide\n */\n hide(instance: object, directive: object): void;\n\n /**\n * it suppresses any log calls, other methods can be suppressed too.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/ignoreOnConsole\n */\n ignoreOnConsole(...args: Array<keyof typeof console>): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/input\n */\n input<T = any>(elSelector: DebugNodeSelector, input: string): T;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/input\n */\n input<T = any, D = undefined>(elSelector: DebugNodeSelector, input: string, notFoundValue: D): D | T;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/output\n */\n output<T = any>(elSelector: DebugNodeSelector, output: string): EventEmitter<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/output\n */\n output<T = any, D = undefined>(elSelector: DebugNodeSelector, output: string, notFoundValue: D): D | EventEmitter<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/render\n */\n render(\n instance: object,\n template: TemplateRef<any> | DebugNode,\n $implicit?: any,\n variables?: Record<keyof any, any>,\n ): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/render\n */\n render(instance: object, directive: object, $implicit?: any, variables?: Record<keyof any, any>): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reset\n */\n reset(): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reveal\n */\n reveal<T>(selector: AnyType<T>): MockedDebugNode<T> | MockedDebugElement<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reveal\n */\n reveal<T>(elSelector: DebugNodeSelector, selector: AnyType<T>): MockedDebugNode<T> | MockedDebugElement<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reveal\n */\n reveal<T = any>(selector: string | [string] | [string, any]): MockedDebugNode<T> | MockedDebugElement<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reveal\n */\n reveal<T = any>(\n elSelector: DebugNodeSelector,\n selector: string | [string] | [string, any],\n ): MockedDebugNode<T> | MockedDebugElement<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reveal\n */\n reveal<T, D>(selector: AnyType<T>, notFoundValue: D): D | MockedDebugNode<T> | MockedDebugElement<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reveal\n */\n reveal<T, D>(\n elSelector: DebugNodeSelector,\n selector: AnyType<T>,\n notFoundValue: D,\n ): D | MockedDebugNode<T> | MockedDebugElement<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reveal\n */\n reveal<T = any, D = undefined>(\n selector: string | [string] | [string, any],\n notFoundValue: D,\n ): D | MockedDebugNode<T> | MockedDebugElement<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reveal\n */\n reveal<T = any, D = undefined>(\n elSelector: DebugNodeSelector,\n selector: string | [string] | [string, any],\n notFoundValue: D,\n ): D | MockedDebugNode<T> | MockedDebugElement<T>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/revealAll\n */\n revealAll<T>(selector: AnyType<T>): Array<MockedDebugNode<T> | MockedDebugElement<T>>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/revealAll\n */\n revealAll<T = any>(selector: string | [string] | [string, any]): Array<MockedDebugNode<T> | MockedDebugElement<T>>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/revealAll\n */\n revealAll<T>(elSelector: DebugNodeSelector, selector: AnyType<T>): Array<MockedDebugNode<T> | MockedDebugElement<T>>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/revealAll\n */\n revealAll<T = any>(\n elSelector: DebugNodeSelector,\n selector: string | [string] | [string, any],\n ): Array<MockedDebugNode<T> | MockedDebugElement<T>>;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/stub\n */\n stub<T = MockedFunction, I = any>(instance: I, name: keyof I, style?: 'get' | 'set'): T;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/stub\n */\n stub<I extends object>(instance: I, overrides: Partial<I>): I;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/stubMember\n */\n stubMember<T extends object, K extends keyof T, S extends () => T[K]>(\n instance: T,\n name: K,\n stub: S,\n encapsulation: 'get',\n ): S;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/stubMember\n */\n stubMember<T extends object, K extends keyof T, S extends (value: T[K]) => void>(\n instance: T,\n name: K,\n stub: S,\n encapsulation: 'set',\n ): S;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/stubMember\n */\n stubMember<T extends object, K extends keyof T, S extends T[K]>(instance: T, name: K, stub: S): S;\n\n /**\n * Thanks Ivy, it does not throw an error and we have to use injector.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/throwOnConsole\n */\n throwOnConsole(...args: Array<keyof typeof console>): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/touch\n */\n touch(elSelector: DebugNode | DebugNodeSelector): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/trigger\n */\n trigger(elSelector: DebugNodeSelector, event: Event): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/trigger\n */\n trigger(\n elSelector: HTMLElement | DebugNodeSelector,\n event: string,\n payload?: Partial<UIEvent | KeyboardEvent | MouseEvent | TouchEvent>,\n ): void;\n} = mockHelperObject;\n","import { QueryList, TemplateRef, ViewContainerRef } from '@angular/core';\n\nimport funcIsMock from '../../common/func.is-mock';\nimport { MockConfig } from '../../common/mock';\n\nconst getValVcr = (entryPoint: MockConfig): Array<[any, ViewContainerRef]> => {\n const result: Array<[any, ViewContainerRef]> = [];\n\n for (const key of entryPoint.__ngMocksConfig.queryScanKeys || /* istanbul ignore next */ []) {\n const value = (entryPoint as any)[key];\n const vcr = (entryPoint as any)[`__ngMocksVcr_${key}`];\n\n const scanValue = value instanceof QueryList ? value.toArray() : [value];\n const scanVcr = vcr instanceof QueryList ? vcr.toArray() : [vcr];\n\n for (let index = 0; index < scanValue.length; index += 1) {\n result.push([scanValue[index], scanVcr[index]]);\n }\n }\n\n return result;\n};\n\nconst handleDirective = (\n entryPoint: {\n __template?: TemplateRef<any>;\n __vcr?: ViewContainerRef;\n },\n isExpectedTemplate: (tpl: TemplateRef<any>) => boolean,\n callback: (vcr: ViewContainerRef, tpl: TemplateRef<any>) => boolean,\n): boolean => {\n return (\n !!entryPoint.__template &&\n !!entryPoint.__vcr &&\n isExpectedTemplate(entryPoint.__template) &&\n callback(entryPoint.__vcr, entryPoint.__template)\n );\n};\n\nconst isRightTemplate = (\n localVcr: ViewContainerRef | undefined,\n localValue: any,\n isExpectedTemplate: (tpl: TemplateRef<any>) => boolean,\n): boolean => {\n return !!localVcr && localValue instanceof TemplateRef && isExpectedTemplate(localValue);\n};\n\nconst findDeep = (\n entryPoint: object,\n isExpectedTemplate: (tpl: TemplateRef<any>) => boolean,\n callback: (vcr: ViewContainerRef, tpl: TemplateRef<any>) => boolean,\n): boolean => {\n if (!funcIsMock(entryPoint)) {\n throw new Error('Only instances of mock declarations are accepted');\n }\n\n // structural directive\n if (handleDirective(entryPoint, isExpectedTemplate, callback)) {\n return true;\n }\n\n for (const [localValue, localVcr] of getValVcr(entryPoint)) {\n if (funcIsMock<{}>(localValue) && findDeep(localValue, isExpectedTemplate, callback)) {\n return true;\n }\n if (isRightTemplate(localVcr, localValue, isExpectedTemplate)) {\n return callback(localVcr, localValue);\n }\n }\n\n return false;\n};\n\nexport default ((): typeof findDeep => findDeep)();\n","import { TemplateRef } from '@angular/core';\n\nimport coreInjector from '../../common/core.injector';\nimport funcIsMock from '../../common/func.is-mock';\n\nexport default (param: any): TemplateRef<any> => {\n if (param instanceof TemplateRef) {\n return param;\n }\n if (funcIsMock(param) && param.__template) {\n return param.__template;\n }\n\n const injector = param?.nativeNode && param.injector;\n if (injector) {\n const template = coreInjector(TemplateRef, injector);\n\n if (template) {\n return template;\n }\n }\n\n const error = new Error(\n 'Unknown template has been passed, only TemplateRef or a mock structural directive are supported',\n );\n (error as any).param = param;\n\n throw error;\n};\n","import funcFindDeep from './func.find-deep';\nimport funcParseTemplate from './func.parse-template';\n\nexport default (instance: object, param?: object) => {\n const template = param ? funcParseTemplate(param) : undefined;\n\n let result = false;\n funcFindDeep(\n instance,\n tpl => {\n if (!template) {\n return true;\n }\n\n return tpl.elementRef.nativeElement === template.elementRef.nativeElement;\n },\n vcr => {\n vcr.clear();\n result = true;\n\n return false;\n },\n );\n\n if (!result) {\n throw new Error('Cannot find path to the TemplateRef');\n }\n};\n","import funcFindDeep from './func.find-deep';\nimport funcParseTemplate from './func.parse-template';\n\nexport default (instance: object, param: object, $implicit?: any, variables?: Record<keyof any, any>) => {\n const template = funcParseTemplate(param);\n\n const result = funcFindDeep(\n instance,\n tpl => tpl.elementRef.nativeElement === template.elementRef.nativeElement,\n (vcr, tpl) => {\n const context = {\n ...variables,\n $implicit,\n };\n vcr.clear();\n vcr.createEmbeddedView(tpl, context).detectChanges();\n\n return true;\n },\n );\n\n if (!result) {\n throw new Error('Cannot find path to the TemplateRef');\n }\n};\n","import { Type } from '../../common/core.types';\nimport crawlByAttribute from '../crawl/crawl-by-attribute';\nimport crawlByAttributeValue from '../crawl/crawl-by-attribute-value';\nimport crawlByDeclaration from '../crawl/crawl-by-declaration';\nimport crawlById from '../crawl/crawl-by-id';\n\nexport default (selector: string | Type<any> | [string] | [string, any] | any) => {\n if (typeof selector === 'string') {\n return crawlById(selector);\n }\n if (Array.isArray(selector) && selector.length === 1 && typeof selector[0] === 'string') {\n return crawlByAttribute(selector[0]);\n }\n if (Array.isArray(selector) && selector.length === 2 && typeof selector[0] === 'string') {\n return crawlByAttributeValue(selector[0], selector[1]);\n }\n if (typeof selector === 'function') {\n return crawlByDeclaration(selector);\n }\n\n throw new Error(`Unknown selector`);\n};\n","import { TemplateRef } from '@angular/core';\n\nimport coreInjector from '../../common/core.injector';\nimport { MockedDebugNode } from '../../mock-render/types';\nimport detectTextNode from '../crawl/detect-text-node';\n\nexport default (\n result: Array<TemplateRef<any>>,\n detector: (node: MockedDebugNode) => boolean,\n limit = 0,\n ): ((node: MockedDebugNode) => boolean) =>\n node => {\n try {\n const instance = !detectTextNode(node) && detector(node) ? coreInjector(TemplateRef, node.injector) : undefined;\n if (instance) {\n result.push(instance);\n }\n } catch {\n // nothing to do\n }\n\n return !!limit && result.length === limit;\n };\n","export default (value: any): boolean => {\n if (typeof value === 'string') {\n return true;\n }\n if (Array.isArray(value) && typeof value[0] === 'string') {\n return true;\n }\n if (typeof value === 'function') {\n return true;\n }\n\n return false;\n};\n","import { TemplateRef } from '@angular/core';\n\nimport nestedCheck from '../crawl/nested-check';\nimport mockHelperFind from '../find/mock-helper.find';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport funcParseFindArgs from '../func.parse-find-args';\nimport funcParseFindArgsName from '../func.parse-find-args-name';\n\nimport detectCrawler from './detect-crawler';\nimport detectTemplateRef from './detect-template-ref';\nimport funcIsValidTemplateRefSelector from './func.is-valid-template-ref-selector';\n\nconst defaultNotFoundValue = {}; // simulating Symbol\n\nexport default (...args: any[]) => {\n const [el, sel, notFoundValue] = funcParseFindArgs(args, funcIsValidTemplateRefSelector, defaultNotFoundValue);\n\n const result: Array<TemplateRef<any>> = [];\n const detector = detectCrawler(sel);\n nestedCheck(mockHelperFind(funcGetLastFixture(), el, undefined), undefined, detectTemplateRef(result, detector, 1));\n if (result.length) {\n return result[0];\n }\n if (notFoundValue !== defaultNotFoundValue) {\n return notFoundValue;\n }\n\n throw new Error(`Cannot find a TemplateRef via ngMocks.findTemplateRef(${funcParseFindArgsName(sel)})`);\n};\n","import { TemplateRef } from '@angular/core';\n\nimport nestedCheck from '../crawl/nested-check';\nimport mockHelperFind from '../find/mock-helper.find';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport funcParseFindArgs from '../func.parse-find-args';\n\nimport detectCrawler from './detect-crawler';\nimport detectTemplateRef from './detect-template-ref';\nimport funcIsValidTemplateRefSelector from './func.is-valid-template-ref-selector';\n\nexport default (...args: any[]): Array<TemplateRef<any>> => {\n const [el, sel] = funcParseFindArgs(args, funcIsValidTemplateRefSelector);\n\n const result: Array<TemplateRef<any>> = [];\n const detector = detectCrawler(sel);\n nestedCheck(mockHelperFind(funcGetLastFixture(), el, undefined), undefined, detectTemplateRef(result, detector));\n\n return result;\n};\n","import ngMocksUniverse from '../common/ng-mocks-universe';\nimport mockHelperStubMember from '../mock-helper/mock-helper.stub-member';\n\nexport default (def: any): any[] => {\n const callbacks = [];\n\n const config = ngMocksUniverse.configInstance.get(def);\n if (config?.overloads) {\n for (const [name, stub, encapsulation] of config.overloads) {\n if (name) {\n callbacks.push((instance: any) => {\n mockHelperStubMember(instance, name, stub, encapsulation);\n });\n } else {\n callbacks.push(stub);\n }\n }\n }\n\n return callbacks;\n};\n","import funcGetName from '../common/func.get-name';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nexport default (checkReset: Array<[any, any, any?]>) => {\n const showError: string[] = [];\n\n // istanbul ignore next: because of the installed global scope switcher we cannot test this part\n while (checkReset.length) {\n const [declaration, config] = checkReset.pop() || /* istanbul ignore next */ [];\n if (config === ngMocksUniverse.configInstance.get(declaration)) {\n showError.push(typeof declaration === 'function' ? funcGetName(declaration) : declaration);\n }\n }\n\n // istanbul ignore if: because of the installed global scope switcher we cannot test this part\n if (showError.length) {\n const globalFlags = ngMocksUniverse.global.get('flags');\n const errorMessage = [\n `MockInstance: side effects have been detected (${showError.join(', ')}).`,\n `Forgot to add MockInstance.scope() or to call MockInstance.restore()?`,\n ].join(' ');\n if (globalFlags.onMockInstanceRestoreNeed === 'warn') {\n // tslint:disable-next-line no-console\n console.warn(errorMessage);\n } else if (globalFlags.onMockInstanceRestoreNeed === 'throw') {\n throw new Error(errorMessage);\n }\n }\n};\n","// tslint:disable max-file-line-count\n\nimport { InjectionToken, Injector } from '@angular/core';\n\nimport { AbstractType, Type } from '../common/core.types';\nimport funcImportExists from '../common/func.import-exists';\nimport ngMocksStack, { NgMocksStack } from '../common/ng-mocks-stack';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport mockInstanceForgotReset from './mock-instance-forgot-reset';\n\nlet currentStack: NgMocksStack;\nngMocksStack.subscribePush(state => {\n currentStack = state;\n});\nngMocksStack.subscribePop((state, stack) => {\n for (const declaration of state.mockInstance || /* istanbul ignore next */ []) {\n if (ngMocksUniverse.configInstance.has(declaration)) {\n const universeConfig = ngMocksUniverse.configInstance.get(declaration);\n universeConfig.overloads.pop();\n ngMocksUniverse.configInstance.set(declaration, {\n ...universeConfig,\n });\n }\n }\n currentStack = stack[stack.length - 1];\n});\n\ninterface MockInstanceArgs {\n accessor?: 'get' | 'set';\n data?: any;\n key?: string;\n value?: any;\n}\n\nconst parseMockInstanceArgs = (args: any[]): MockInstanceArgs => {\n const set: MockInstanceArgs = {};\n\n if (typeof args[0] === 'string') {\n set.key = args[0];\n set.value = args[1];\n set.accessor = args[2];\n } else {\n set.value = args[0];\n if (set.value && typeof set.value === 'object') {\n set.value = set.value.init;\n }\n }\n\n return set;\n};\n\nconst checkReset: Array<[any, any, any?]> = [];\nlet checkCollect = false;\n\n// istanbul ignore else: maybe a different runner is used\n// tslint:disable-next-line strict-type-predicates\nif (typeof beforeEach !== 'undefined') {\n beforeEach(() => (checkCollect = true));\n beforeEach(() => mockInstanceForgotReset(checkReset));\n afterEach(() => (checkCollect = false));\n}\n\nconst mockInstanceConfig = <T>(\n declaration: Type<T> | AbstractType<T> | InjectionToken<T>,\n name: string | undefined,\n stub: any,\n encapsulation?: 'get' | 'set',\n) => {\n const config = ngMocksUniverse.configInstance.has(declaration) ? ngMocksUniverse.configInstance.get(declaration) : {};\n const overloads = config.overloads || [];\n overloads.push([name, stub, encapsulation]);\n config.overloads = overloads;\n ngMocksUniverse.configInstance.set(declaration, {\n ...config,\n });\n const mockInstances = currentStack.mockInstance ?? [];\n mockInstances.push(declaration);\n currentStack.mockInstance = mockInstances;\n\n if (checkCollect) {\n checkReset.push([declaration, ngMocksUniverse.configInstance.get(declaration), currentStack]);\n }\n\n return stub;\n};\n\nexport interface MockInstance {\n /**\n * Creates a bucket which remembers all future changes.\n *\n * @see https://ng-mocks.sudo.eu/api/MockInstance#remember\n */\n remember(): void;\n\n /**\n * Resets all changes for current bucket.\n *\n * @see https://ng-mocks.sudo.eu/api/MockInstance#restore\n */\n restore(): void;\n\n /**\n * Creates a local scope in `beforeAll` and `afterAll`.\n * If `each` has been passed, then `beforeEach` and `afterEach` are used.\n *\n * @see https://ng-mocks.sudo.eu/api/MockInstance#scope\n */\n scope(scope?: 'all'): void;\n}\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockInstance\n */\nexport function MockInstance<T extends object, K extends keyof T, S extends () => T[K]>(\n instance: Type<T> | AbstractType<T>,\n name: K,\n stub: S,\n encapsulation: 'get',\n): S;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockInstance\n */\nexport function MockInstance<T extends object, K extends keyof T, S extends (value: T[K]) => void>(\n instance: Type<T> | AbstractType<T>,\n name: K,\n stub: S,\n encapsulation: 'set',\n): S;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockInstance\n */\nexport function MockInstance<T extends object, K extends keyof T, S extends T[K]>(\n instance: Type<T> | AbstractType<T>,\n name: K,\n stub: S,\n): S;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockInstance\n */\nexport function MockInstance<T>(\n declaration: InjectionToken<T>,\n init?: (instance: T | undefined, injector: Injector | undefined) => Partial<T>,\n): void;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockInstance\n */\nexport function MockInstance<T>(\n declaration: InjectionToken<T>,\n config?: {\n init?: (instance: T | undefined, injector: Injector | undefined) => Partial<T>;\n },\n): void;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockInstance\n */\nexport function MockInstance<T>(\n declaration: Type<T> | AbstractType<T>,\n init?: (instance: T, injector: Injector | undefined) => void | Partial<T>,\n): void;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockInstance\n */\nexport function MockInstance<T>(\n declaration: Type<T> | AbstractType<T>,\n config?: {\n init?: (instance: T, injector: Injector | undefined) => void | Partial<T>;\n },\n): void;\n\nexport function MockInstance<T>(declaration: Type<T> | AbstractType<T> | InjectionToken<T>, ...args: any[]) {\n funcImportExists(declaration, 'MockInstance');\n\n if (args.length) {\n const { key, value, accessor } = parseMockInstanceArgs(args);\n\n return mockInstanceConfig(declaration, key, value, accessor);\n }\n\n const config = ngMocksUniverse.configInstance.get(declaration) || /* istanbul ignore next */ {};\n\n ngMocksUniverse.configInstance.set(declaration, {\n ...config,\n overloads: [],\n });\n\n // When we are calling MockInstance without a config we need to reset it from the checks too.\n for (let i = checkReset.length - 1; i >= 0; i -= 1) {\n if (checkReset[i][0] === declaration && checkReset[i][2] === currentStack) {\n checkReset.splice(i, 1);\n }\n }\n}\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockInstance#remember\n */\nMockInstance.remember = () => ngMocksStack.stackPush();\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockInstance#restore\n */\nMockInstance.restore = () => ngMocksStack.stackPop();\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockInstance#scope\n */\nMockInstance.scope = (scope: 'all' | 'suite' | 'case' = 'case') => {\n if (scope === 'all' || scope === 'suite') {\n beforeAll(MockInstance.remember);\n afterAll(MockInstance.restore);\n }\n if (scope === 'all' || scope === 'case') {\n beforeEach(MockInstance.remember);\n afterEach(MockInstance.restore);\n }\n};\n\nexport function MockReset() {\n ngMocksUniverse.configInstance.clear();\n}\n","import { Provider } from '@angular/core';\n\nimport { isNgDef } from '../common/func.is-ng-def';\nimport { isNgModuleDefWithProviders } from '../common/func.is-ng-module-def-with-providers';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\nimport { MockComponent } from '../mock-component/mock-component';\nimport { MockDirective } from '../mock-directive/mock-directive';\nimport { MockPipe } from '../mock-pipe/mock-pipe';\nimport helperMockService from '../mock-service/helper.mock-service';\n\nimport { MockModule } from './mock-module';\n\nconst processDefMap: Array<[any, any]> = [\n ['c', MockComponent],\n ['d', MockDirective],\n ['p', MockPipe],\n];\n\nconst processDef = (def: any) => {\n if (isNgDef(def, 'm') || isNgModuleDefWithProviders(def)) {\n return MockModule(def as any);\n }\n if (ngMocksUniverse.hasBuildDeclaration(def)) {\n return ngMocksUniverse.getBuildDeclaration(def);\n }\n if (ngMocksUniverse.flags.has('skipMock') && ngMocksUniverse.getResolution(def) !== 'mock') {\n return def;\n }\n for (const [flag, func] of processDefMap) {\n if (isNgDef(def, flag)) {\n return func(def);\n }\n }\n};\n\n// resolveProvider is a special case because of the def structure.\nconst createResolveProvider =\n (resolutions: Map<any, any>, change: () => void): ((def: Provider) => any) =>\n (def: Provider) =>\n helperMockService.resolveProvider(def, resolutions, change);\n\nconst createResolveWithProviders = (def: any, mockDef: any): boolean =>\n mockDef && mockDef.ngModule && isNgModuleDefWithProviders(def);\n\nconst createResolveExisting = (def: any, resolutions: Map<any, any>, change: (flag?: boolean) => void): any => {\n const mockDef = resolutions.get(def);\n if (def !== mockDef) {\n change();\n }\n\n return mockDef;\n};\n\nconst createResolveExcluded = (def: any, resolutions: Map<any, any>, change: (flag?: boolean) => void): void => {\n resolutions.set(def, undefined);\n\n change();\n};\n\nconst createResolve =\n (resolutions: Map<any, any>, change: (flag?: boolean) => void): ((def: any) => any) =>\n (def: any) => {\n if (resolutions.has(def)) {\n return createResolveExisting(def, resolutions, change);\n }\n\n const detectedDef = isNgModuleDefWithProviders(def) ? def.ngModule : def;\n if (ngMocksUniverse.isExcludedDef(detectedDef)) {\n return createResolveExcluded(def, resolutions, change);\n }\n ngMocksUniverse.touches.add(detectedDef);\n\n const mockDef = processDef(def);\n if (createResolveWithProviders(def, mockDef)) {\n resolutions.set(def.ngModule, mockDef.ngModule);\n }\n if (ngMocksUniverse.flags.has('skipMock')) {\n ngMocksUniverse.config.get('ngMocksDepsSkip')?.add(mockDef);\n }\n resolutions.set(def, mockDef);\n change(mockDef !== def);\n\n return mockDef;\n };\n\nexport default (\n change: () => void,\n resolutions: Map<any, any>,\n): {\n resolve: (def: any) => any;\n resolveProvider: (def: Provider) => any;\n} => {\n const resolve = createResolve(resolutions, change);\n const resolveProvider = createResolveProvider(resolutions, change);\n\n return {\n resolve,\n resolveProvider,\n };\n};\n","import { flatten } from '../common/core.helpers';\nimport funcGetProvider from '../common/func.get-provider';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nexport default (providers?: any[]): void => {\n for (const provider of flatten(providers ?? [])) {\n const provide = funcGetProvider(provider);\n\n const config = ngMocksUniverse.configInstance.get(provide) ?? {};\n config.exported = true;\n ngMocksUniverse.configInstance.set(provide, config);\n }\n};\n","import { NgModule, Provider } from '@angular/core';\n\nimport coreConfig from '../common/core.config';\nimport { extendClass } from '../common/core.helpers';\nimport coreReflectModuleResolve from '../common/core.reflect.module-resolve';\nimport { Type } from '../common/core.types';\nimport decorateMock from '../common/decorate.mock';\nimport funcGetName from '../common/func.get-name';\nimport funcImportExists from '../common/func.import-exists';\nimport { isMockNgDef } from '../common/func.is-mock-ng-def';\nimport { isNgDef } from '../common/func.is-ng-def';\nimport { isNgModuleDefWithProviders, NgModuleWithProviders } from '../common/func.is-ng-module-def-with-providers';\nimport { Mock } from '../common/mock';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport mockNgDef from './mock-ng-def';\n\nconst flagMock = (resolution?: string): boolean => resolution === 'mock' && ngMocksUniverse.flags.has('skipMock');\n\nconst flagKeep = (resolution?: string): boolean => resolution === 'keep' && !ngMocksUniverse.flags.has('skipMock');\n\nconst flagReplace = (resolution?: string): boolean =>\n resolution === 'replace' && !ngMocksUniverse.flags.has('skipMock');\n\nconst flagNever = (ngModule?: any): boolean =>\n coreConfig.neverMockModule.indexOf(funcGetName(ngModule)) !== -1 && !ngMocksUniverse.flags.has('skipMock');\n\nconst preProcessFlags = (ngModule: Type<any>): { isRootModule: boolean; toggleSkipMockFlag: boolean } => {\n let toggleSkipMockFlag = false;\n let isRootModule = true;\n\n if (ngMocksUniverse.flags.has('hasRootModule')) {\n isRootModule = false;\n } else {\n ngMocksUniverse.flags.add('hasRootModule');\n }\n\n const resolution = ngMocksUniverse.getResolution(ngModule);\n if (flagMock(resolution)) {\n toggleSkipMockFlag = true;\n ngMocksUniverse.flags.delete('skipMock');\n }\n if (flagNever(ngModule)) {\n toggleSkipMockFlag = true;\n ngMocksUniverse.flags.add('skipMock');\n }\n if (!isRootModule && (flagKeep(resolution) || flagReplace(resolution))) {\n toggleSkipMockFlag = true;\n ngMocksUniverse.flags.add('skipMock');\n }\n\n return {\n isRootModule,\n toggleSkipMockFlag,\n };\n};\n\nconst postProcessFlags = ({\n isRootModule,\n toggleSkipMockFlag,\n}: {\n isRootModule: boolean;\n toggleSkipMockFlag: boolean;\n}): void => {\n if (toggleSkipMockFlag && ngMocksUniverse.flags.has('skipMock')) {\n ngMocksUniverse.flags.delete('skipMock');\n } else if (toggleSkipMockFlag && !ngMocksUniverse.flags.has('skipMock')) {\n ngMocksUniverse.flags.add('skipMock');\n }\n if (isRootModule) {\n ngMocksUniverse.flags.delete('hasRootModule');\n }\n};\n\nconst extractModuleAndProviders = (\n module: any,\n): {\n ngModule: Type<any>;\n ngModuleProviders: Provider[] | undefined;\n} => {\n let ngModule: Type<any>;\n let ngModuleProviders: Provider[] | undefined;\n\n if (isNgModuleDefWithProviders(module)) {\n ngModule = module.ngModule;\n if (module.providers) {\n ngModuleProviders = module.providers;\n }\n } else {\n ngModule = module;\n }\n\n return {\n ngModule,\n ngModuleProviders,\n };\n};\n\nconst getExistingMockModule = (ngModule: Type<any>, isRootModule: boolean): Type<any> | undefined => {\n if (isMockNgDef(ngModule, 'm')) {\n return ngModule;\n }\n\n // Every module should be replaced with its mock copy only once to avoid errors like:\n // Failed: Type ...Component is part of the declarations of 2 modules: ...Module and ...Module...\n if (ngMocksUniverse.flags.has('cacheModule') && ngMocksUniverse.cacheDeclarations.has(ngModule)) {\n return ngMocksUniverse.cacheDeclarations.get(ngModule);\n }\n\n // Now we check if we need to keep the original module or to replace it with some other.\n // and there is no override in its resolution.\n if (isRootModule || ngMocksUniverse.config.get('ngMocksDepsResolution')?.get(ngModule) === 'mock') {\n return undefined;\n }\n if (ngMocksUniverse.hasBuildDeclaration(ngModule)) {\n const instance = ngMocksUniverse.getBuildDeclaration(ngModule);\n if (isNgDef(instance, 'm') && instance !== ngModule) {\n return instance;\n }\n }\n\n return undefined;\n};\n\nconst getMockModuleDef = (ngModule: Type<any>, mockModule?: Type<any>): NgModule | undefined => {\n if (!mockModule) {\n const meta = coreReflectModuleResolve(ngModule);\n const [changed, ngModuleDef] = mockNgDef(meta, ngModule);\n if (changed) {\n return ngModuleDef;\n }\n }\n\n return undefined;\n};\n\nconst detectMockModule = (ngModule: Type<any>, mockModule?: Type<any>): Type<any> => {\n const mockModuleDef = getMockModuleDef(ngModule, mockModule);\n\n if (mockModuleDef) {\n const parent = ngMocksUniverse.flags.has('skipMock') ? ngModule : Mock;\n const mock = extendClass(parent);\n\n // the last thing is to apply decorators.\n NgModule(mockModuleDef)(mock);\n decorateMock(mock, ngModule);\n\n return mock;\n }\n\n return mockModule || ngModule;\n};\n\nconst getMockProviders = (ngModuleProviders: Provider[] | undefined): Provider[] | undefined => {\n if (ngModuleProviders) {\n const [changed, ngModuleDef] = mockNgDef({ providers: ngModuleProviders });\n\n return changed ? ngModuleDef.providers : ngModuleProviders;\n }\n\n return undefined;\n};\n\nconst generateReturn = (\n module: any,\n ngModule: Type<any>,\n ngModuleProviders: Provider[] | undefined,\n mockModule: Type<any>,\n mockModuleProviders: Provider[] | undefined,\n): any =>\n mockModule === ngModule && mockModuleProviders === ngModuleProviders\n ? module\n : isNgModuleDefWithProviders(module)\n ? { ngModule: mockModule, ...(mockModuleProviders ? { providers: mockModuleProviders } : {}) }\n : mockModule;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockModule\n */\nexport function MockModule<T>(module: Type<T>): Type<T>;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockModule\n */\nexport function MockModule<T>(module: NgModuleWithProviders<T>): NgModuleWithProviders<T>;\n\nexport function MockModule(module: any): any {\n funcImportExists(module, 'MockModule');\n\n const { ngModule, ngModuleProviders } = extractModuleAndProviders(module);\n const flags = preProcessFlags(ngModule);\n try {\n const mockModule = detectMockModule(ngModule, getExistingMockModule(ngModule, flags.isRootModule));\n // istanbul ignore else\n if (ngMocksUniverse.flags.has('cacheModule')) {\n ngMocksUniverse.cacheDeclarations.set(ngModule, mockModule);\n }\n if (ngMocksUniverse.flags.has('skipMock')) {\n ngMocksUniverse.config.get('ngMocksDepsSkip')?.add(mockModule);\n }\n const mockModuleProviders = getMockProviders(ngModuleProviders);\n\n return generateReturn(module, ngModule, ngModuleProviders, mockModule, mockModuleProviders);\n } finally {\n postProcessFlags(flags);\n }\n}\n","import { Component, Directive, NgModule, Pipe, Provider } from '@angular/core';\n\nimport { flatten } from '../common/core.helpers';\nimport { Type } from '../common/core.types';\nimport { isNgModuleDefWithProviders } from '../common/func.is-ng-module-def-with-providers';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport createResolvers from './create-resolvers';\nimport markProviders from './mark-providers';\n\nconst flatToExisting = <T, R>(data: T | T[], callback: (arg: T) => R | undefined): R[] =>\n flatten(data)\n .map(callback)\n .filter((item): item is R => !!item);\n\ntype processMeta =\n | 'declarations'\n | 'entryComponents'\n | 'bootstrap'\n | 'providers'\n | 'viewProviders'\n | 'imports'\n | 'exports';\n\nconst configureProcessMetaKeys = (\n resolve: (def: any) => any,\n resolveProvider: (def: Provider) => any,\n): Array<[processMeta, (def: any) => any]> => [\n ['declarations', resolve],\n ['entryComponents', resolve],\n ['bootstrap', resolve],\n ['providers', resolveProvider],\n ['viewProviders', resolveProvider],\n ['imports', resolve],\n ['exports', resolve],\n];\n\nconst processMeta = (\n ngModule: Partial<NgModule & Component & Directive & Pipe>,\n resolve: (def: any) => any,\n resolveProvider: (def: Provider) => any,\n): NgModule => {\n const mockModuleDef: Partial<NgModule & Component & Directive & Pipe> = {};\n const keys = configureProcessMetaKeys(resolve, resolveProvider);\n\n const cachePipe = ngMocksUniverse.flags.has('cachePipe');\n if (!cachePipe) {\n ngMocksUniverse.flags.add('cachePipe');\n }\n for (const [key, callback] of keys) {\n if (ngModule[key]?.length) {\n mockModuleDef[key] = flatToExisting(ngModule[key], callback);\n }\n }\n markProviders(mockModuleDef.providers);\n markProviders(mockModuleDef.viewProviders);\n\n if (!cachePipe) {\n ngMocksUniverse.flags.delete('cachePipe');\n }\n\n return mockModuleDef;\n};\n\nconst resolveDefForExport = (\n def: any,\n resolve: (def: any) => any,\n correctExports: boolean,\n ngModule?: Type<any>,\n): Type<any> | undefined => {\n const moduleConfig = ngMocksUniverse.config.get(ngModule) || {};\n const instance = isNgModuleDefWithProviders(def) ? def.ngModule : def;\n const mockDef = resolve(instance);\n if (!mockDef) {\n return undefined;\n }\n\n // If we export a declaration, then we have to export its module too.\n const config = ngMocksUniverse.config.get(instance);\n if (config?.export && ngModule) {\n if (!moduleConfig.export) {\n ngMocksUniverse.config.set(ngModule, {\n ...moduleConfig,\n export: true,\n });\n }\n }\n\n if (correctExports && !moduleConfig.exportAll && !config?.export) {\n return undefined;\n }\n\n return mockDef;\n};\n\nconst skipAddExports = (mockDef: any, mockModuleDef: NgModule): mockDef is undefined =>\n !mockDef || (!!mockModuleDef.exports && mockModuleDef.exports.indexOf(mockDef) !== -1);\n\n// if we are in the skipMock mode we need to export only the default exports.\n// if we are in the correctModuleExports mode we need to export only default exports.\nconst addExports = (\n resolve: (def: any) => any,\n change: () => void,\n ngModuleDef: NgModule,\n mockModuleDef: NgModule,\n ngModule?: Type<any>,\n): void => {\n const correctExports = ngMocksUniverse.flags.has('skipMock') || ngMocksUniverse.flags.has('correctModuleExports');\n for (const def of flatten([ngModuleDef.imports || [], ngModuleDef.declarations || []])) {\n const mockDef = resolveDefForExport(def, resolve, correctExports, ngModule);\n if (skipAddExports(mockDef, mockModuleDef)) {\n continue;\n }\n\n change();\n mockModuleDef.exports = mockModuleDef.exports || [];\n mockModuleDef.exports.push(mockDef);\n }\n};\n\nexport default (ngModuleDef: NgModule, ngModule?: Type<any>): [boolean, NgModule] => {\n const hasResolver = ngMocksUniverse.config.has('mockNgDefResolver');\n if (!hasResolver) {\n ngMocksUniverse.config.set('mockNgDefResolver', new Map());\n }\n let changed = !ngMocksUniverse.flags.has('skipMock');\n const change = (flag = true) => {\n changed = changed || flag;\n };\n const { resolve, resolveProvider } = createResolvers(change, ngMocksUniverse.config.get('mockNgDefResolver'));\n const mockModuleDef = processMeta(ngModuleDef, resolve, resolveProvider);\n addExports(resolve, change, ngModuleDef, mockModuleDef, ngModule);\n\n if (!hasResolver) {\n ngMocksUniverse.config.delete('mockNgDefResolver');\n }\n\n return [changed, mockModuleDef];\n};\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { extendClass } from '../common/core.helpers';\nimport coreReflectPipeResolve from '../common/core.reflect.pipe-resolve';\nimport { Type } from '../common/core.types';\nimport decorateMock from '../common/decorate.mock';\nimport funcGetName from '../common/func.get-name';\nimport funcImportExists from '../common/func.import-exists';\nimport { isMockNgDef } from '../common/func.is-mock-ng-def';\nimport { Mock } from '../common/mock';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\nimport helperMockService from '../mock-service/helper.mock-service';\n\nimport { MockedPipe } from './types';\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockPipe\n */\nexport function MockPipes(...pipes: Array<Type<PipeTransform>>): Array<Type<PipeTransform>> {\n return pipes.map(pipe => MockPipe(pipe, undefined));\n}\n\nconst getMockClass = (pipe: Type<any>, transform?: PipeTransform['transform']): Type<any> => {\n const mock = extendClass(Mock);\n Pipe(coreReflectPipeResolve(pipe))(mock);\n decorateMock(mock, pipe, {\n init: (instance: PipeTransform) => {\n if (transform) {\n instance.transform = transform;\n }\n if (!instance.transform) {\n helperMockService.mock(instance, 'transform', `${funcGetName(instance)}.transform`);\n }\n },\n });\n\n return mock;\n};\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockPipe\n */\nexport function MockPipe<TPipe extends PipeTransform>(\n pipe: Type<TPipe>,\n transform?: TPipe['transform'],\n): Type<MockedPipe<TPipe>>;\n\nexport function MockPipe<TPipe extends PipeTransform>(\n pipe: Type<TPipe>,\n transform?: TPipe['transform'],\n): Type<MockedPipe<TPipe>> {\n funcImportExists(pipe, 'MockPipe');\n\n if (isMockNgDef(pipe, 'p')) {\n return pipe;\n }\n\n // istanbul ignore next\n if (ngMocksUniverse.flags.has('cachePipe') && ngMocksUniverse.cacheDeclarations.has(pipe)) {\n return ngMocksUniverse.cacheDeclarations.get(pipe);\n }\n\n const mock = getMockClass(pipe, transform);\n if (ngMocksUniverse.flags.has('cachePipe')) {\n ngMocksUniverse.cacheDeclarations.set(pipe, mock);\n }\n\n return mock as any;\n}\n","import { FactoryProvider, InjectionToken, Provider } from '@angular/core';\n\nimport { AnyType } from '../common/core.types';\nimport funcImportExists from '../common/func.import-exists';\nimport mockHelperStub from '../mock-helper/mock-helper.stub';\nimport helperUseFactory from '../mock-service/helper.use-factory';\nimport { MockService } from '../mock-service/mock-service';\n\nconst defaultValue = {};\n\nexport function MockProviders(...providers: Array<AnyType<any> | InjectionToken<any>>): FactoryProvider[] {\n return providers.map((provider: any) => MockProvider(provider, defaultValue));\n}\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockProvider\n */\nexport function MockProvider<I extends object>(instance: AnyType<I>, overrides?: Partial<I>): FactoryProvider;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockProvider\n */\nexport function MockProvider<I>(provider: InjectionToken<I> | string, useValue?: Partial<I>): FactoryProvider;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockProvider\n */\nexport function MockProvider<I = any>(provider: string, useValue?: Partial<I>): FactoryProvider;\n\nexport function MockProvider(provide: any, overrides: any = defaultValue): Provider {\n funcImportExists(provide, 'MockProvider');\n\n return helperUseFactory(\n provide,\n () => MockService(provide),\n value => {\n if (overrides === defaultValue) {\n return value;\n }\n if (!value) {\n return overrides;\n }\n\n return mockHelperStub(value, overrides);\n },\n );\n}\n","import { Component, Directive } from '@angular/core';\n\nimport coreConfig from '../common/core.config';\nimport coreDefineProperty from '../common/core.define-property';\nimport { Type } from '../common/core.types';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\nimport helperDefinePropertyDescriptor from '../mock-service/helper.define-property-descriptor';\n\nimport funcGenerateTemplate from './func.generate-template';\n\nconst generateWrapperOutput =\n (instance: any) =>\n (prop: keyof any, event: any): void => {\n if (typeof instance[prop] === 'function') {\n return instance[prop](event);\n }\n if (instance[prop] && typeof instance[prop] === 'object' && typeof instance[prop].emit === 'function') {\n return instance[prop].emit(event);\n }\n if (instance[prop] && typeof instance[prop] === 'object' && typeof instance[prop].next === 'function') {\n return instance[prop].next(event);\n }\n\n instance[prop] = event;\n };\n\nconst generateWrapper = ({ bindings, options, inputs }: any) => {\n class MockRenderComponent {\n public constructor() {\n coreDefineProperty(this, '__ngMocksOutput', generateWrapperOutput(this));\n\n if (!bindings) {\n for (const input of inputs || []) {\n let value: any = null;\n helperDefinePropertyDescriptor(this, input, {\n get: () => value,\n set: (newValue: any) => (value = newValue),\n });\n }\n }\n }\n }\n Component(options)(MockRenderComponent);\n\n return MockRenderComponent;\n};\n\nconst getCache = () => {\n const caches: Array<Type<any> & Record<'cacheKey', any[]>> = ngMocksUniverse.config.get('MockRenderCaches') ?? [];\n if (caches.length === 0) {\n ngMocksUniverse.config.set('MockRenderCaches', caches);\n }\n\n return caches;\n};\n\nconst checkCache = (caches: Array<Type<any> & Record<'cacheKey', any[]>>, cacheKey: any[]): undefined | Type<any> => {\n for (const cache of caches) {\n if (cache.cacheKey.length !== cacheKey.length) {\n continue;\n }\n let isValid = true;\n for (let i = 0; i < cacheKey.length; i += 1) {\n if (cache.cacheKey[i] !== cacheKey[i]) {\n isValid = false;\n break;\n }\n }\n if (isValid) {\n return cache;\n }\n }\n\n return undefined;\n};\n\nexport default (\n template: any,\n meta: Directive,\n bindings: undefined | null | any[],\n flags: Record<keyof any, any>,\n): Type<any> => {\n const caches = getCache();\n\n // nulls help to detect defaults\n const cacheKey = [\n template,\n ...(bindings ?? [null]),\n ...(flags.providers ?? [null]),\n ...(flags.viewProviders ?? [null]),\n ];\n let ctor = checkCache(caches, cacheKey);\n if (ctor) {\n return ctor;\n }\n\n const mockTemplate = funcGenerateTemplate(template, { ...meta, bindings });\n const options: Component = {\n providers: flags.providers,\n selector: 'mock-render',\n template: mockTemplate,\n viewProviders: flags.viewProviders,\n };\n\n ctor = generateWrapper({ ...meta, bindings, options });\n coreDefineProperty(ctor, 'cacheKey', cacheKey);\n caches.unshift(ctor as any);\n caches.splice(ngMocksUniverse.global.get('mockRenderCacheSize') ?? coreConfig.mockRenderCacheSize);\n\n return ctor;\n};\n","const generateTemplateAttrWrap = (prop: string, type: 'i' | 'o') => (type === 'i' ? `[${prop}]` : `(${prop})`);\n\nconst generateTemplateAttrWithParams = (prop: string, type: 'i' | 'o'): string => {\n let tpl = ` ${generateTemplateAttrWrap(prop, type)}=\"`;\n if (type === 'i') {\n tpl += prop;\n } else {\n tpl += `__ngMocksOutput('${prop}', $event)`;\n }\n tpl += `\"`;\n\n return tpl;\n};\n\nconst generateTemplateAttr = (bindings: null | undefined | any[], attr: any, type: 'i' | 'o') => {\n // unprovided params for inputs should render empty placeholders\n if (!bindings && type === 'o') {\n return '';\n }\n\n let mockTemplate = '';\n const keys = bindings ?? attr;\n for (const definition of attr) {\n const [property, alias] = definition.split(': ');\n mockTemplate +=\n keys.indexOf(alias || property) === -1 ? '' : generateTemplateAttrWithParams(alias || property, type);\n }\n\n return mockTemplate;\n};\n\nexport default (declaration: any, { selector, bindings, inputs, outputs }: any): string => {\n let mockTemplate = '';\n\n // istanbul ignore else\n if (typeof declaration === 'string') {\n mockTemplate = declaration;\n } else if (selector) {\n mockTemplate += `<${selector}`;\n mockTemplate += generateTemplateAttr(bindings, inputs, 'i');\n mockTemplate += generateTemplateAttr(bindings, outputs, 'o');\n mockTemplate += `></${selector}>`;\n }\n\n return mockTemplate;\n};\n","import coreDefineProperty from '../common/core.define-property';\nimport helperDefinePropertyDescriptor from '../mock-service/helper.define-property-descriptor';\nimport helperMockService from '../mock-service/helper.mock-service';\n\nconst createPropertyGet = (key: keyof any & string, reader: Record<keyof any, any>, source: Record<keyof any, any>) => {\n const handler = () => {\n if (typeof source[key] === 'function') {\n if (reader[`__ngMocks_${key}__origin`] !== source[key]) {\n const clone = helperMockService.createClone(source[key], reader, source);\n coreDefineProperty(reader, `__ngMocks_${key}`, clone);\n coreDefineProperty(reader, `__ngMocks_${key}__origin`, source[key]);\n }\n\n return reader[`__ngMocks_${key}`];\n }\n\n return source[key];\n };\n coreDefineProperty(handler, '__ngMocksProxy', true);\n\n return handler;\n};\n\nconst createPropertySet = (key: keyof any & string, reader: Record<keyof any, any>, source: Record<keyof any, any>) => {\n const handler = (newValue: any) => {\n if (reader[`__ngMocks_${key}`]) {\n reader[`__ngMocks_${key}`] = undefined;\n }\n if (reader[`__ngMocks_${key}__origin`]) {\n reader[`__ngMocks_${key}__origin`] = undefined;\n }\n source[key] = newValue;\n };\n coreDefineProperty(handler, '__ngMocksProxy', true);\n\n return handler;\n};\n\nconst extractAllKeys = (instance: object) => [\n ...helperMockService.extractPropertiesFromPrototype(Object.getPrototypeOf(instance)),\n ...helperMockService.extractMethodsFromPrototype(Object.getPrototypeOf(instance)),\n ...Object.keys(instance),\n];\n\nconst extractOwnKeys = (instance: object) => [...Object.getOwnPropertyNames(instance), ...Object.keys(instance)];\n\nexport default (\n reader: Record<keyof any, any>,\n source: Record<keyof any, any> | undefined,\n extra: string[],\n force: boolean = false,\n): void => {\n if (!source) {\n return;\n }\n coreDefineProperty(reader, '__ngMocks__source', source);\n const exists = extractOwnKeys(reader);\n const fields = [...extractAllKeys(source), ...extra];\n for (const key of fields) {\n if (!force && exists.indexOf(key) !== -1) {\n continue;\n }\n helperDefinePropertyDescriptor(reader, key, {\n get: createPropertyGet(key, reader, source),\n set: createPropertySet(key, reader, source),\n });\n exists.push(key);\n }\n};\n","import { Component, Directive } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\n\nimport { extendClass } from '../common/core.helpers';\nimport coreReflectDirectiveResolve from '../common/core.reflect.directive-resolve';\nimport { AnyType } from '../common/core.types';\nimport { isNgDef } from '../common/func.is-ng-def';\n\nconst registerTemplateMiddleware = (template: AnyType<any>, meta: Directive): void => {\n const child = extendClass(template);\n\n const alias = {\n provide: template,\n useExisting: child,\n };\n const providers = [...(meta.providers || []), alias];\n meta.providers = providers;\n\n if (isNgDef(template, 'c')) {\n Component(meta)(child);\n } else {\n Directive(meta)(child);\n }\n TestBed.configureTestingModule({\n declarations: [child],\n });\n\n // https://github.com/ike18t/ng-mocks/issues/1876\n // We need to apply overrides to our cloned declaration.\n try {\n const ngMocksOverrides: Map<any, any> = (TestBed as any).ngMocksOverrides;\n const { override } = ngMocksOverrides.get(template);\n const { set } = override;\n ngMocksOverrides.set(child, { set: meta });\n TestBed.overrideComponent(child, {\n set: {\n ...set,\n providers: [...set.providers, alias],\n },\n });\n } catch {\n // nothing to do\n }\n};\n\nexport default (template: AnyType<any>): Directive => {\n if (!isNgDef(template, 'c') && !isNgDef(template, 'd')) {\n return {};\n }\n\n const meta = { ...coreReflectDirectiveResolve(template) };\n\n if (meta.selector && meta.selector.match(/[\\[\\],\\s]/)) {\n meta.selector = '';\n }\n\n if (!meta.selector) {\n // istanbul ignore next\n meta.selector = (TestBed as any).ngMocksSelectors?.get(template) || '';\n if (!meta.selector) {\n meta.selector = `ng-mocks-${template.name}`;\n registerTemplateMiddleware(template, meta);\n // istanbul ignore else\n if ((TestBed as any).ngMocksSelectors) {\n (TestBed as any).ngMocksSelectors.set(template, meta.selector);\n }\n }\n }\n\n return meta;\n};\n","import { DebugElement, Directive, InjectionToken } from '@angular/core';\nimport { getTestBed, TestBed } from '@angular/core/testing';\n\nimport coreDefineProperty from '../common/core.define-property';\nimport { AnyType, Type } from '../common/core.types';\nimport funcImportExists from '../common/func.import-exists';\nimport { isNgDef } from '../common/func.is-ng-def';\nimport ngMocksStack from '../common/ng-mocks-stack';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\nimport { ngMocks } from '../mock-helper/mock-helper';\nimport helperDefinePropertyDescriptor from '../mock-service/helper.define-property-descriptor';\nimport { MockService } from '../mock-service/mock-service';\n\nimport funcCreateWrapper from './func.create-wrapper';\nimport funcInstallPropReader from './func.install-prop-reader';\nimport funcReflectTemplate from './func.reflect-template';\nimport { IMockRenderFactoryOptions, MockedComponentFixture } from './types';\n\ninterface MockRenderFactory<C = any, F extends keyof any = keyof C> {\n bindings: keyof F;\n configureTestBed: () => void;\n declaration: AnyType<never>;\n <T extends Record<F, any>>(params?: Partial<T>, detectChanges?: boolean): MockedComponentFixture<C, T>;\n}\n\nconst isExpectedRender = (template: any): boolean =>\n typeof template === 'string' || isNgDef(template, 'c') || isNgDef(template, 'd');\n\nconst renderDeclaration = (fixture: any, template: any, params: any): void => {\n fixture.point = fixture.debugElement.children[0] || fixture.debugElement.childNodes[0];\n if (isNgDef(template, 'd')) {\n helperDefinePropertyDescriptor(fixture.point, 'componentInstance', {\n get: () => ngMocks.get(fixture.point, template),\n });\n }\n tryWhen(!params, () => funcInstallPropReader(fixture.componentInstance, fixture.point?.componentInstance, []));\n};\n\nconst renderInjection = (fixture: any, template: any, params: any): void => {\n const instance = TestBed.get(template);\n if (params) {\n ngMocks.stub(instance, params);\n }\n fixture.point = MockService(DebugElement, {\n childNodes: [],\n children: [],\n componentInstance: instance,\n nativeElement: MockService(HTMLElement),\n });\n funcInstallPropReader(fixture.componentInstance, fixture.point.componentInstance, [], true);\n};\n\nconst tryWhen = (flag: boolean, callback: () => void) => {\n if (!flag) {\n return;\n }\n try {\n // ivy throws Error: Expecting instance of DOM Element\n callback();\n } catch {\n // nothing to do\n }\n};\n\nconst fixtureMessage = [\n 'Forgot to flush TestBed?',\n 'MockRender cannot be used without a reset after TestBed.get / TestBed.inject / TestBed.createComponent and another MockRender in the same test.',\n 'If you want to mock a service before rendering, consider usage of MockRenderFactory or MockInstance.',\n 'To flush TestBed, add a call of ngMocks.flushTestBed() before the call of MockRender, or pass `reset: true` to MockRender options.',\n].join(' ');\n\nconst handleFixtureError = (e: any) => {\n const error = new Error(fixtureMessage);\n coreDefineProperty(error, 'parent', e);\n throw error;\n};\n\nconst flushTestBed = (flags: Record<string, any>): void => {\n const globalFlags = ngMocksUniverse.global.get('flags');\n const testBed: any = getTestBed();\n if (flags.reset || (!testBed._instantiated && !testBed._testModuleRef)) {\n ngMocks.flushTestBed();\n } else if (globalFlags.onTestBedFlushNeed !== 'throw' && (testBed._instantiated || testBed._testModuleRef)) {\n if (globalFlags.onTestBedFlushNeed === 'warn') {\n // tslint:disable-next-line:no-console\n console.warn(fixtureMessage);\n }\n ngMocks.flushTestBed();\n }\n};\n\nconst generateFactoryInstall = (ctor: AnyType<any>, options: IMockRenderFactoryOptions) => () => {\n const testBed: TestBed & {\n _compiler?: {\n declarations?: Array<AnyType<any>>;\n };\n _declarations?: Array<AnyType<any>>;\n declarations?: Array<AnyType<any>>;\n } = getTestBed();\n // istanbul ignore next\n const declarations = testBed._compiler?.declarations || testBed.declarations || testBed._declarations;\n if (!declarations || declarations.indexOf(ctor) === -1) {\n flushTestBed(options);\n try {\n TestBed.configureTestingModule({\n declarations: [ctor],\n });\n } catch (e) {\n handleFixtureError(e);\n }\n }\n};\n\nconst generateFactory = (\n componentCtor: Type<any>,\n bindings: undefined | null | string[],\n template: any,\n options: IMockRenderFactoryOptions,\n) => {\n const result = (params: any, detectChanges?: boolean) => {\n result.configureTestBed();\n const fixture: any = TestBed.createComponent(componentCtor);\n\n funcInstallPropReader(fixture.componentInstance, params ?? {}, bindings ?? []);\n coreDefineProperty(fixture, 'ngMocksStackId', ngMocksUniverse.global.get('bullet:stack:id'));\n\n if (detectChanges === undefined || detectChanges) {\n fixture.detectChanges();\n }\n\n if (isExpectedRender(template)) {\n renderDeclaration(fixture, template, params);\n } else {\n renderInjection(fixture, template, params);\n }\n\n return fixture;\n };\n result.declaration = componentCtor;\n result.bindings = bindings;\n result.configureTestBed = generateFactoryInstall(componentCtor, options);\n\n return result;\n};\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockRender#factory\n */\nfunction MockRenderFactory<MComponent>(\n template: InjectionToken<MComponent>,\n bindings?: undefined | null,\n options?: IMockRenderFactoryOptions,\n): MockRenderFactory<MComponent, never>;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockRender#factory\n */\nfunction MockRenderFactory<MComponent>(\n template: AnyType<MComponent>,\n bindings: undefined | null,\n options?: IMockRenderFactoryOptions,\n): MockRenderFactory<MComponent, keyof MComponent>;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockRender#factory\n */\nfunction MockRenderFactory<MComponent, TKeys extends keyof any>(\n template: AnyType<MComponent>,\n bindings: TKeys[],\n options?: IMockRenderFactoryOptions,\n): MockRenderFactory<MComponent, TKeys>;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockRender#factory\n */\nfunction MockRenderFactory<MComponent, TKeys extends keyof any = keyof any>(\n template: AnyType<MComponent>,\n bindings: TKeys[],\n options?: IMockRenderFactoryOptions,\n): MockRenderFactory<MComponent, TKeys>;\n\n/**\n * Without params we should not autocomplete any keys of any types.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender#factory\n */\nfunction MockRenderFactory<MComponent>(template: AnyType<MComponent>): MockRenderFactory<MComponent, keyof MComponent>;\n\n/**\n * An empty string does not have point.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender#factory\n */\nfunction MockRenderFactory(template: ''): MockRenderFactory<void, never>;\n\n/**\n * Without params we should not autocomplete any keys of any types.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender#factory\n */\nfunction MockRenderFactory<MComponent = void>(template: string): MockRenderFactory<MComponent>;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockRender#factory\n */\nfunction MockRenderFactory<MComponent = void, TKeys extends keyof any = keyof any>(\n template: string,\n bindings: TKeys[],\n options?: IMockRenderFactoryOptions,\n): MockRenderFactory<MComponent, TKeys>;\n\nfunction MockRenderFactory<MComponent, TKeys extends string>(\n template: string | AnyType<MComponent> | InjectionToken<MComponent>,\n bindings?: undefined | null | TKeys[],\n options: IMockRenderFactoryOptions = {},\n): any {\n funcImportExists(template, 'MockRender');\n\n const meta: Directive = typeof template === 'string' || isNgDef(template, 't') ? {} : funcReflectTemplate(template);\n const componentCtor: any = funcCreateWrapper(template, meta, bindings, options);\n const factory = generateFactory(componentCtor, bindings, template, options);\n if (ngMocksStack.current().level !== 'root' && options.configureTestBed !== false) {\n factory.configureTestBed();\n }\n\n return factory;\n}\n\nexport { MockRenderFactory };\n","import { InjectionToken } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\n\nimport { AnyType } from '../common/core.types';\n\nimport { MockRenderFactory } from './mock-render-factory';\nimport { IMockRenderOptions, MockedComponentFixture } from './types';\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nfunction MockRender<MComponent>(\n template: InjectionToken<MComponent>,\n params?: undefined | null,\n detectChangesOrOptions?: boolean | IMockRenderOptions,\n): MockedComponentFixture<MComponent, void>;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nfunction MockRender<MComponent>(\n template: AnyType<MComponent>,\n params: undefined | null,\n detectChangesOrOptions?: boolean | IMockRenderOptions,\n): MockedComponentFixture<MComponent, MComponent>;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nfunction MockRender<MComponent, TComponent extends object>(\n template: AnyType<MComponent>,\n params: TComponent,\n detectChangesOrOptions?: boolean | IMockRenderOptions,\n): MockedComponentFixture<MComponent, TComponent>;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nfunction MockRender<MComponent, TComponent extends object = Record<keyof any, any>>(\n template: AnyType<MComponent>,\n params: TComponent,\n detectChangesOrOptions?: boolean | IMockRenderOptions,\n): MockedComponentFixture<MComponent, TComponent>;\n\n/**\n * Without params we should not autocomplete any keys of any types.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nfunction MockRender<MComponent>(template: AnyType<MComponent>): MockedComponentFixture<MComponent, MComponent>;\n\n/**\n * An empty string does not have point.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nfunction MockRender(template: ''): ComponentFixture<void> & { point: undefined };\n\n/**\n * Without params we should not autocomplete any keys of any types.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nfunction MockRender<MComponent = void>(template: string): MockedComponentFixture<MComponent>;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nfunction MockRender<MComponent = void>(\n template: string,\n params: undefined | null,\n detectChangesOrOptions?: boolean | IMockRenderOptions,\n): MockedComponentFixture<MComponent, void>;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nfunction MockRender<MComponent = void, TComponent extends Record<keyof any, any> = Record<keyof any, any>>(\n template: string,\n params: TComponent,\n detectChangesOrOptions?: boolean | IMockRenderOptions,\n): MockedComponentFixture<MComponent, TComponent>;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nfunction MockRender<MComponent, TComponent extends Record<keyof any, any> = Record<keyof any, any>>(\n template: string,\n params: TComponent,\n detectChangesOrOptions?: boolean | IMockRenderOptions,\n): MockedComponentFixture<MComponent, TComponent>;\n\nfunction MockRender<MComponent, TComponent extends Record<keyof any, any>>(\n template: string | AnyType<MComponent> | InjectionToken<MComponent>,\n params?: TComponent,\n flags: boolean | IMockRenderOptions = true,\n): any {\n const bindings = params && typeof params === 'object' ? Object.keys(params) : params;\n const options = typeof flags === 'boolean' ? { detectChanges: flags } : { ...flags };\n const factory = (MockRenderFactory as any)(template, bindings, options);\n\n return factory(params, options.detectChanges);\n}\n\nexport { MockRender };\n","import checkIsFunc from './check.is-func';\n\nexport default (value: any): boolean => {\n if (typeof value !== 'function') {\n return false;\n }\n\n return !checkIsFunc(value);\n};\n","const isAngularClass = (value: Record<keyof any, unknown>): boolean => {\n if (value.ɵprov) {\n return true;\n }\n if (value.__annotations__) {\n return true;\n }\n if (value.__parameters__) {\n return true;\n }\n if (value.parameters) {\n return true;\n }\n\n return false;\n};\n\nconst guessClass = (name: string, proto: string, value: any): boolean => {\n // unnamed classes can be class_N\n if (name.match(/^class/) !== null) {\n return true;\n }\n\n // let's consider an existing 'prototype' as a class\n if (Object.keys(value.prototype).length > 0) {\n return true;\n }\n\n // let's consider a capital name and 'this' usage as a class\n const clsCode = name.charCodeAt(0);\n if (clsCode >= 65 && clsCode <= 90 && proto.match(/\\bthis\\./gm) !== null) {\n return true;\n }\n\n // webpack es5 class\n const regEx = new RegExp(`\\\\(this,\\\\s*${name}\\\\)`, 'mg');\n // istanbul ignore if\n if (proto.match(regEx) !== null) {\n return true;\n }\n\n return false;\n};\n\nexport default (value: any): boolean => {\n if (typeof value !== 'function') {\n return false;\n }\n if (!value.prototype) {\n return true;\n }\n if (isAngularClass(value)) {\n return false;\n }\n\n const proto = value.toString();\n\n // es2015 class\n // istanbul ignore if\n if (proto.match(/^class\\b/) !== null) {\n return false;\n }\n\n const cls = proto.match(/^function\\s+([^\\(\\s]+)\\(/);\n if (cls === null) {\n return true;\n }\n if (guessClass(cls[1], proto, value)) {\n return false;\n }\n\n return true;\n};\n","export default (value: any): boolean => {\n if (value === null) {\n return false;\n }\n if (typeof value !== 'object') {\n return false;\n }\n if (value.ngMetadataName === 'InjectionToken') {\n return false;\n }\n\n return typeof Object.getPrototypeOf(value) === 'object';\n};\n","import helperDefinePropertyDescriptor from './helper.define-property-descriptor';\nimport helperExtractMethodsFromPrototype from './helper.extract-methods-from-prototype';\nimport helperExtractPropertiesFromPrototype from './helper.extract-properties-from-prototype';\nimport helperExtractPropertyDescriptor from './helper.extract-property-descriptor';\n\nexport default (service: any, bindFrom?: object, bindTo?: object, mock?: any): any => {\n const instance = function () {\n // tslint:disable-next-line:ban-ts-ignore\n // @ts-ignore\n return (mock || service).apply(bindFrom === this ? bindTo : this, arguments);\n };\n\n for (const prop of [\n ...helperExtractMethodsFromPrototype(service),\n ...helperExtractPropertiesFromPrototype(service),\n ]) {\n const desc = helperExtractPropertyDescriptor(service, prop);\n helperDefinePropertyDescriptor(instance, prop, desc);\n }\n\n return instance;\n};\n","import coreDefineProperty from '../common/core.define-property';\nimport funcGetName from '../common/func.get-name';\n\nimport helperMockService from './helper.mock-service';\nimport { MockedFunction } from './types';\n\nexport default (service: any): { [key in keyof any]: MockedFunction } => {\n const mockName = funcGetName(service);\n const value: any = {};\n coreDefineProperty(value, '__ngMocks', true);\n\n const methods = helperMockService.extractMethodsFromPrototype(service);\n for (const method of methods) {\n helperMockService.mock(value, method, mockName);\n }\n\n const properties = helperMockService.extractPropertiesFromPrototype(service);\n for (const property of properties) {\n helperMockService.mock(value, property, 'get', mockName);\n helperMockService.mock(value, property, 'set', mockName);\n }\n Object.setPrototypeOf(value, service);\n\n return value;\n};\n","import helperExtractPropertyDescriptor from './helper.extract-property-descriptor';\n\nexport default (instance: any, prop: keyof any, desc?: PropertyDescriptor): boolean => {\n if (!desc || !instance) {\n return false;\n }\n\n // istanbul ignore else\n if (Object.defineProperty) {\n const sourceDesc = helperExtractPropertyDescriptor(instance, prop);\n if (sourceDesc?.configurable === false) {\n return false;\n }\n\n Object.defineProperty(instance, prop, {\n ...desc,\n configurable: true,\n ...((desc.get === undefined && desc.set === undefined) || desc.writable === false ? { writable: true } : {}),\n });\n } else {\n instance[prop] = desc.value;\n }\n\n return true;\n};\n","import funcGetName from '../common/func.get-name';\n\nconst sanitizerMethods = [\n 'sanitize',\n 'bypassSecurityTrustHtml',\n 'bypassSecurityTrustStyle',\n 'bypassSecurityTrustScript',\n 'bypassSecurityTrustUrl',\n 'bypassSecurityTrustResourceUrl',\n];\n\nconst extraMethods: Record<string, undefined | string[]> = {\n DomSanitizer: sanitizerMethods,\n Sanitizer: sanitizerMethods,\n};\n\nconst getOwnPropertyNames = (prototype: any): string[] => {\n const result: string[] = Object.getOwnPropertyNames(prototype);\n for (const method of extraMethods[funcGetName(prototype)] ?? []) {\n result.push(method);\n }\n\n return result;\n};\n\nexport default <T>(service: T): string[] => {\n const result: string[] = [];\n\n let prototype = service;\n while (prototype && Object.getPrototypeOf(prototype) !== null) {\n for (const method of getOwnPropertyNames(prototype)) {\n if ((method as any) === 'constructor') {\n continue;\n }\n\n const descriptor = Object.getOwnPropertyDescriptor(prototype, method);\n const isGetterSetter = descriptor && (descriptor.get || descriptor.set);\n if (isGetterSetter || result.indexOf(method) !== -1) {\n continue;\n }\n result.push(method);\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n\n return result;\n};\n","export default <T>(service: T): string[] => {\n const result: string[] = [];\n let prototype = service;\n while (prototype && Object.getPrototypeOf(prototype) !== null) {\n for (const prop of Object.getOwnPropertyNames(prototype)) {\n if ((prop as any) === 'constructor') {\n continue;\n }\n\n const descriptor = Object.getOwnPropertyDescriptor(prototype, prop);\n const isGetterSetter = descriptor && (descriptor.get || descriptor.set);\n if (!isGetterSetter || result.indexOf(prop) !== -1) {\n continue;\n }\n result.push(prop);\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n\n return result;\n};\n","export default <T>(service: T, prop: keyof any): PropertyDescriptor | undefined => {\n let prototype = service;\n while (prototype && Object.getPrototypeOf(prototype) !== null) {\n const descriptor = Object.getOwnPropertyDescriptor(prototype, prop);\n if (descriptor) {\n return descriptor;\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n\n return undefined;\n};\n","import coreDefineProperty from '../common/core.define-property';\n\nimport { CustomMockFunction, MockedFunction } from './types';\n\nconst mockFunction: {\n (mockName: string, original?: boolean): MockedFunction;\n customMockFunction?: CustomMockFunction;\n} = (mockName: string, original: boolean = false): MockedFunction => {\n let func: any;\n if (mockFunction.customMockFunction && !original) {\n func = mockFunction.customMockFunction(mockName);\n } else {\n func = (val: any) => {\n if (setValue) {\n setValue(val);\n }\n\n return value;\n };\n }\n\n // magic to make getters / setters working\n\n let value: any;\n let setValue: any;\n\n coreDefineProperty(func, '__ngMocks', true);\n coreDefineProperty(func, '__ngMocksSet', (newSetValue: any) => (setValue = newSetValue));\n coreDefineProperty(func, '__ngMocksGet', (newValue: any) => (value = newValue));\n\n return func;\n};\n\nexport default (() => mockFunction)();\n","import funcGetGlobal from '../common/func.get-global';\n\nimport helperCreateClone from './helper.create-clone';\nimport helperCreateMockFromPrototype from './helper.create-mock-from-prototype';\nimport helperDefinePropertyDescriptor from './helper.define-property-descriptor';\nimport helperExtractMethodsFromPrototype from './helper.extract-methods-from-prototype';\nimport helperExtractPropertiesFromPrototype from './helper.extract-properties-from-prototype';\nimport helperExtractPropertyDescriptor from './helper.extract-property-descriptor';\nimport helperMock from './helper.mock';\nimport helperMockFunction from './helper.mock-function';\nimport helperReplaceWithMocks from './helper.replace-with-mocks';\nimport helperResolveProvider from './helper.resolve-provider';\nimport helperUseFactory from './helper.use-factory';\nimport { CustomMockFunction } from './types';\n\n// We need a single pointer to the object among all environments.\nfuncGetGlobal().ngMockshelperMockService = funcGetGlobal().ngMockshelperMockService || {\n mockFunction: helperMockFunction,\n\n registerMockFunction: (func: CustomMockFunction | undefined) => {\n funcGetGlobal().ngMockshelperMockService.mockFunction.customMockFunction = func;\n },\n\n createClone: helperCreateClone,\n createMockFromPrototype: helperCreateMockFromPrototype,\n definePropertyDescriptor: helperDefinePropertyDescriptor,\n extractMethodsFromPrototype: helperExtractMethodsFromPrototype,\n extractPropertiesFromPrototype: helperExtractPropertiesFromPrototype,\n extractPropertyDescriptor: helperExtractPropertyDescriptor,\n mock: helperMock,\n replaceWithMocks: helperReplaceWithMocks,\n resolveProvider: helperResolveProvider,\n useFactory: helperUseFactory,\n};\n\nexport default ((): {\n createClone: typeof helperCreateClone;\n createMockFromPrototype: typeof helperCreateMockFromPrototype;\n definePropertyDescriptor: typeof helperDefinePropertyDescriptor;\n extractMethodsFromPrototype: typeof helperExtractMethodsFromPrototype;\n extractPropertiesFromPrototype: typeof helperExtractPropertiesFromPrototype;\n extractPropertyDescriptor: typeof helperExtractPropertyDescriptor;\n mock: typeof helperMock;\n mockFunction: typeof helperMockFunction;\n registerMockFunction: (func: CustomMockFunction | undefined) => void;\n replaceWithMocks: typeof helperReplaceWithMocks;\n resolveProvider: typeof helperResolveProvider;\n useFactory: typeof helperUseFactory;\n} => funcGetGlobal().ngMockshelperMockService)();\n\nexport const registerMockFunction: (func?: CustomMockFunction | undefined) => void =\n funcGetGlobal().ngMockshelperMockService.registerMockFunction;\n","import funcGetName from '../common/func.get-name';\n\nimport helperMockService from './helper.mock-service';\nimport { MockedFunction } from './types';\n\n// istanbul ignore next\nconst createName = (name: string, mockName?: string, instance?: any, accessType?: string) =>\n `${\n mockName ? mockName : typeof instance.prototype === 'function' ? instance.prototype.name : funcGetName(instance)\n }.${name}${accessType || ''}`;\n\nconst generateMockDef = (def: any, mock: any, accessType?: string): PropertyDescriptor => ({\n ...(accessType === 'get' && def && def.set\n ? {\n set: def.set,\n }\n : {}),\n\n ...(accessType === 'set' && def && def.get\n ? {\n get: def.get,\n }\n : {}),\n\n ...(accessType\n ? {}\n : {\n writable: true,\n }),\n\n [accessType || 'value']: mock,\n configurable: true,\n enumerable: true,\n});\n\nconst parseArgs = (\n args: any[],\n): {\n accessType?: 'get' | 'set';\n mockName?: string;\n} => {\n let accessType: 'get' | 'set' | undefined;\n let mockName: string | undefined;\n\n if (args.length && args[0] !== 'get' && args[0] !== 'set') {\n mockName = args[0];\n } else if (args.length && (args[0] === 'get' || args[0] === 'set')) {\n accessType = args[0];\n mockName = args[1];\n }\n\n return { accessType, mockName };\n};\n\nexport default <T = MockedFunction>(instance: any, name: string, ...args: Array<string | undefined>): T => {\n const { accessType, mockName } = parseArgs(args);\n\n const def = Object.getOwnPropertyDescriptor(instance, name);\n if (def && def[accessType || 'value']) {\n return def[accessType || 'value'];\n }\n\n const detectedMockName = createName(name, mockName, instance, accessType);\n const mock: any = helperMockService.mockFunction(detectedMockName, !!accessType);\n\n const mockDef = generateMockDef(def, mock, accessType);\n if (mockDef.get && mockDef.set && (mockDef.get as any).__ngMocks && (mockDef.set as any).__ngMocks) {\n (mockDef.set as any).__ngMocksSet((val: any) => (mockDef.get as any).__ngMocksGet(val));\n }\n\n Object.defineProperty(instance, name, mockDef);\n\n return mock;\n};\n","import { NG_MOCKS_GUARDS } from '../common/core.tokens';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nconst handleSection = (section: any[]) => {\n const guards: any[] = [];\n\n for (const guard of section) {\n if (ngMocksUniverse.isProvidedDef(guard)) {\n guards.push(guard);\n continue;\n }\n if (ngMocksUniverse.isExcludedDef(NG_MOCKS_GUARDS)) {\n continue;\n }\n guards.push(guard);\n }\n\n return guards;\n};\n\nconst handleArray = (value: any[], callback: any): [boolean, any[]] => {\n const mock = [];\n let updated = false;\n\n for (const valueItem of value) {\n if (ngMocksUniverse.isExcludedDef(valueItem)) {\n updated = updated || true;\n continue;\n }\n mock.push(callback(valueItem));\n updated = updated || mock[mock.length - 1] !== valueItem;\n }\n\n return [updated, mock];\n};\n\nconst handleItemKeys = ['canActivate', 'canActivateChild', 'canDeactivate', 'canLoad'];\nconst handleItemGetGuards = (mock: any, section: string) =>\n Array.isArray(mock[section]) ? handleSection(mock[section]) : mock[section];\n\nconst handleItem = (value: Record<keyof any, any>, callback: any): [boolean, Record<keyof any, any>] => {\n let mock: Record<keyof any, any> = {};\n let updated = false;\n\n for (const key of Object.keys(value)) {\n if (ngMocksUniverse.isExcludedDef(value[key])) {\n updated = updated || true;\n continue;\n }\n mock[key] = callback(value[key]);\n updated = updated || mock[key] !== value[key];\n }\n\n // Removal of guards.\n for (const section of handleItemKeys) {\n const guards: any[] = handleItemGetGuards(mock, section);\n if (guards && mock[section].length !== guards.length) {\n updated = updated || true;\n mock = { ...mock, [section]: guards };\n }\n }\n\n return [updated, mock];\n};\n\nconst replaceWithMocks = (value: any): any => {\n if (ngMocksUniverse.cacheDeclarations.has(value)) {\n return ngMocksUniverse.cacheDeclarations.get(value);\n }\n if (typeof value !== 'object') {\n return value;\n }\n\n let mock: any;\n let updated = false;\n\n if (Array.isArray(value)) {\n [updated, mock] = handleArray(value, replaceWithMocks);\n } else if (value) {\n [updated, mock] = handleItem(value, replaceWithMocks);\n }\n\n if (updated) {\n Object.setPrototypeOf(mock, Object.getPrototypeOf(value));\n\n return mock;\n }\n\n return value;\n};\n\nexport default (() => replaceWithMocks)();\n","import { extractDependency } from '../common/core.helpers';\nimport { NG_MOCKS_INTERCEPTORS } from '../common/core.tokens';\nimport funcGetProvider from '../common/func.get-provider';\nimport { isNgInjectionToken } from '../common/func.is-ng-injection-token';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport helperMockService from './helper.mock-service';\nimport mockProvider from './mock-provider';\n\nconst anyDiffers = (a: any, b: any, ...keys: string[]): boolean => {\n for (const key of keys) {\n if (a[key] !== b[key]) {\n return true;\n }\n }\n\n return false;\n};\n\nconst createFromResolution = (provide: any, resolution: any) => {\n let mockDef = resolution;\n\n const existingMock = ngMocksUniverse.builtProviders.get(provide);\n if (existingMock) {\n mockDef = existingMock;\n }\n\n // A case when a provider is actually a component, directive, pipe.\n if (typeof mockDef === 'function') {\n mockDef = {\n provide,\n useClass: mockDef,\n };\n }\n\n return mockDef;\n};\n\nconst isSuitableProvider = (provider: any, provide: any): boolean =>\n ngMocksUniverse.builtProviders.has(NG_MOCKS_INTERCEPTORS) &&\n ngMocksUniverse.builtProviders.get(NG_MOCKS_INTERCEPTORS) === null &&\n isNgInjectionToken(provide) &&\n provide.toString() === 'InjectionToken HTTP_INTERCEPTORS' &&\n provide !== provider;\n\nconst excludeInterceptors = (provider: any, provide: any): boolean => {\n if (isSuitableProvider(provider, provide)) {\n if (provider.useFactory || provider.useValue) {\n return true;\n }\n const interceptor = provider.useExisting || provider.useClass;\n if (!ngMocksUniverse.builtProviders.has(interceptor) || ngMocksUniverse.builtProviders.get(interceptor) === null) {\n return true;\n }\n }\n\n return false;\n};\n\nconst parseProvider = (\n provider: any,\n callback: any,\n): {\n change: () => void;\n multi: boolean;\n provide: any;\n} => {\n const provide = funcGetProvider(provider);\n const multi = provider !== provide && !!provider.multi;\n\n return {\n change: () => {\n if (callback) {\n callback();\n }\n },\n multi,\n provide,\n };\n};\n\n// if the provider is a value, we need to go through the value and to replace all mock instances.\nconst replaceWithMocks = (provider: any, provide: any, mockDef: any) => {\n if (provide !== provider && mockDef && mockDef.useValue) {\n const useValue = helperMockService.replaceWithMocks(mockDef.useValue);\n\n return useValue === mockDef.useValue\n ? mockDef\n : {\n ...mockDef,\n useValue,\n };\n }\n\n return mockDef;\n};\n\nconst createPredefinedMockProvider = (provider: any, provide: any): any => {\n // Then we check decisions whether we should keep or replace a provider.\n if (ngMocksUniverse.builtProviders.has(provide)) {\n const mockDef = ngMocksUniverse.builtProviders.get(provide);\n if (mockDef === provide) {\n return provider;\n }\n\n return mockDef;\n }\n\n return undefined;\n};\n\nconst createMockProvider = (provider: any, provide: any, change: () => void) => {\n let mockDef = createPredefinedMockProvider(provider, provide);\n\n if (!mockDef && ngMocksUniverse.flags.has('skipMock') && ngMocksUniverse.getResolution(provide) !== 'mock') {\n ngMocksUniverse.config.get('ngMocksDepsSkip')?.add(provide);\n mockDef = provider;\n }\n if (!mockDef) {\n mockDef = mockProvider(provider);\n }\n\n mockDef = replaceWithMocks(provider, provide, mockDef);\n if (!areEqualDefs(mockDef, provider, provide)) {\n change();\n }\n // Touching only when we really provide a value.\n if (mockDef) {\n ngMocksUniverse.touches.add(provide);\n }\n\n return mockDef;\n};\n\nconst areEqualDefs = (mockDef: any, provider: any, provide: any): boolean => {\n let providerDiffers = false;\n let defDiffers = !mockDef;\n if (provider && mockDef && !defDiffers) {\n defDiffers = anyDiffers(provider, mockDef, 'provide', 'useValue', 'useClass', 'useExisting', 'useFactory', 'deps');\n }\n if (provider === provide && mockDef !== provider) {\n providerDiffers = true;\n } else if (provider !== provide && defDiffers) {\n providerDiffers = true;\n }\n\n return !providerDiffers;\n};\n\nconst isPreconfiguredDependency = (provider: any, provide: any): boolean => {\n // we should not touch excluded providers.\n if (ngMocksUniverse.builtProviders.has(provide) && ngMocksUniverse.builtProviders.get(provide) === null) {\n return true;\n }\n\n if (provide !== provider && provider.deps) {\n extractDependency(provider.deps, ngMocksUniverse.config.get('ngMocksDeps'));\n }\n\n return excludeInterceptors(provider, provide);\n};\n\n// tries to resolve a provider based on current universe state.\nexport default (provider: any, resolutions: Map<any, any>, changed?: () => void) => {\n const { provide, multi, change } = parseProvider(provider, changed);\n // we should not touch our system providers.\n if (provider && typeof provider === 'object' && provider.useExisting && provider.useExisting.mockOf) {\n return provider;\n }\n if (isPreconfiguredDependency(provider, provide)) {\n return change();\n }\n if (resolutions.has(provide)) {\n return createFromResolution(provide, resolutions.get(provide));\n }\n\n const mockDef = createMockProvider(provider, provide, change);\n\n return multi && typeof mockDef === 'object' ? { ...mockDef, multi } : mockDef;\n};\n","import { FactoryProvider, Injector } from '@angular/core';\n\nimport { mapValues } from '../common/core.helpers';\nimport { isNgInjectionToken } from '../common/func.is-ng-injection-token';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\nimport mockHelperStub from '../mock-helper/mock-helper.stub';\nimport mockInstanceApply from '../mock-instance/mock-instance-apply';\n\nimport { MockService } from './mock-service';\n\nconst applyCallbackToken = (def: any): boolean => isNgInjectionToken(def) || typeof def === 'string';\n\nconst applyCallback = (def: any, inst: any, callbacks: any[], injector?: Injector, overrides?: any): void => {\n let instance: any = inst;\n\n for (const callback of callbacks) {\n const override = callback(instance, injector);\n if (applyCallbackToken(def)) {\n instance = override;\n continue;\n }\n\n // overrides return real value.\n if (callback === overrides) {\n instance = override;\n continue;\n }\n\n if (!override) {\n continue;\n }\n\n instance = mockHelperStub(instance, override);\n }\n\n return instance;\n};\n\nexport default <D, I>(\n def: D,\n init?: () => I,\n overrides?: (instance: I, injector: Injector) => I | Partial<I>,\n): FactoryProvider => ({\n deps: [Injector],\n provide: def,\n useFactory: (injector?: Injector) => {\n const instance = init ? init() : MockService(def as any);\n\n const configGlobal: Set<any> | undefined = ngMocksUniverse.getOverrides().get(def);\n const callbacks = configGlobal ? mapValues(configGlobal) : [];\n if (overrides) {\n callbacks.push(overrides);\n }\n callbacks.push(...mockInstanceApply(def));\n\n return applyCallback(def, instance, callbacks, injector, overrides);\n },\n});\n","import { Provider } from '@angular/core';\n\nimport coreConfig from '../common/core.config';\nimport { Type } from '../common/core.types';\nimport funcGetProvider from '../common/func.get-provider';\nimport { isNgInjectionToken } from '../common/func.is-ng-injection-token';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport helperDefinePropertyDescriptor from './helper.define-property-descriptor';\nimport helperExtractPropertyDescriptor from './helper.extract-property-descriptor';\nimport helperUseFactory from './helper.use-factory';\nimport { MockService } from './mock-service';\n\nconst { neverMockProvidedFunction, neverMockToken } = coreConfig;\n\nconst applyMissingClassProperties = (instance: any, useClass: Type<any>) => {\n const existing = Object.getOwnPropertyNames(instance);\n const child = MockService(useClass);\n\n for (const name of Object.getOwnPropertyNames(child)) {\n if (existing.indexOf(name) !== -1) {\n continue;\n }\n const def = helperExtractPropertyDescriptor(child, name);\n helperDefinePropertyDescriptor(instance, name, def);\n }\n};\n\nconst createFactoryProvider = (provider: any, provide: any) =>\n helperUseFactory(provide, () => {\n const instance = MockService(provide);\n // Magic below adds missed properties to the instance to\n // fulfill missed abstract methods.\n if (provide !== provider && Object.keys(provider).indexOf('useClass') !== -1) {\n applyMissingClassProperties(instance, provider.useClass);\n }\n\n return instance;\n });\n\nconst normalizePrimitivesMap: Array<[(value: any) => boolean, any]> = [\n [value => typeof value === 'boolean', false],\n [value => typeof value === 'number', 0],\n [value => typeof value === 'string', ''],\n [value => value === null, null],\n];\n\nconst normalizePrimitives = (value: any): any => {\n for (const [check, result] of normalizePrimitivesMap) {\n if (check(value)) {\n return result;\n }\n }\n\n return undefined;\n};\n\nconst createValueProvider = (provider: any, provide: any) =>\n helperUseFactory(provide, () =>\n provider.useValue && typeof provider.useValue === 'object'\n ? MockService(provider.useValue)\n : normalizePrimitives(provider.useValue),\n );\n\nconst createClassProvider = (provider: any, provide: any) =>\n ngMocksUniverse.builtProviders.has(provider.useClass) &&\n ngMocksUniverse.builtProviders.get(provider.useClass) === provider.useClass\n ? provider\n : helperUseFactory(provide, () => MockService(provider.useClass));\n\nconst createMockProvider = (provider: any, provide: any, cacheProviders?: Map<any, any>): Provider | undefined => {\n let mockProvider: Provider | undefined;\n if (typeof provide === 'function') {\n mockProvider = createFactoryProvider(provider, provide);\n }\n if (provide === provider && mockProvider && cacheProviders) {\n cacheProviders.set(provide, mockProvider);\n }\n\n return mockProvider;\n};\n\n// Tokens are special subject, we can skip adding them because in a mock module they are useless.\n// The main problem is that providing undefined to HTTP_INTERCEPTORS and others breaks their code.\n// If a testing module / component requires omitted tokens then they should be provided manually\n// during creation of TestBed module.\nconst handleProvider = (provider: any, provide: any, useFactory: boolean) => {\n if (provide === provider) {\n return useFactory ? helperUseFactory(provider, () => undefined) : undefined;\n }\n if (provider.multi) {\n ngMocksUniverse.config.get('ngMocksMulti')?.add(provide);\n\n return undefined;\n }\n\n let mockProvider: any;\n // istanbul ignore else\n if (Object.keys(provider).indexOf('useValue') !== -1) {\n mockProvider = createValueProvider(provider, provide);\n } else if (Object.keys(provider).indexOf('useExisting') !== -1) {\n mockProvider = provider;\n } else if (Object.keys(provider).indexOf('useClass') !== -1) {\n mockProvider = createClassProvider(provider, provide);\n } else if (Object.keys(provider).indexOf('useFactory') !== -1) {\n mockProvider = helperUseFactory(provide, () => ({}));\n }\n\n return mockProvider;\n};\n\nconst isNeverMockFunction = (provide: any): boolean =>\n typeof provide === 'function' && neverMockProvidedFunction.indexOf(provide.name) !== -1;\n\nconst isNeverMockToken = (provide: any): boolean =>\n isNgInjectionToken(provide) && neverMockToken.indexOf(provide.toString()) !== -1;\n\nexport default function (provider: any, useFactory = false): Provider | undefined {\n const provide = funcGetProvider(provider);\n\n if (ngMocksUniverse.getResolution(provide) === 'mock') {\n // nothing to do\n } else if (isNeverMockFunction(provide)) {\n return provider;\n } else if (isNeverMockToken(provide)) {\n return undefined;\n }\n\n // Only pure provides should be cached to avoid their influence on\n // another different declarations.\n const cacheProviders = ngMocksUniverse.flags.has('cacheProvider')\n ? ngMocksUniverse.cacheProviders\n : /* istanbul ignore next */ undefined;\n if (provide === provider && cacheProviders && cacheProviders.has(provide)) {\n return cacheProviders.get(provide);\n }\n\n return createMockProvider(provider, provide, cacheProviders) || handleProvider(provider, provide, useFactory);\n}\n","import { AnyType } from '../common/core.types';\nimport funcGetName from '../common/func.get-name';\nimport mockHelperStub from '../mock-helper/mock-helper.stub';\n\nimport checkIsClass from './check.is-class';\nimport checkIsFunc from './check.is-func';\nimport checkIsInst from './check.is-inst';\nimport helperMockService from './helper.mock-service';\n\nconst mockVariableMap: Array<\n [(def: any) => boolean, (service: any, prefix: string, callback: typeof MockService) => any]\n> = [\n [checkIsClass, (service: any) => helperMockService.createMockFromPrototype(service.prototype)],\n [\n checkIsFunc,\n (service: any, prefix: string) => helperMockService.mockFunction(`func:${prefix || funcGetName(service)}`),\n ],\n [def => Array.isArray(def), () => []],\n [\n checkIsInst,\n (service, prefix, callback) => {\n const value = helperMockService.createMockFromPrototype(service.constructor.prototype);\n for (const property of Object.keys(service)) {\n const mock: any = callback(service[property], `${prefix || 'instance'}.${property}`);\n if (mock !== undefined) {\n value[property] = mock;\n }\n }\n Object.setPrototypeOf(value, Object.getPrototypeOf(service));\n\n return value;\n },\n ],\n];\n\nconst mockVariable = (service: any, prefix: string, callback: typeof MockService) => {\n for (const [check, createMock] of mockVariableMap) {\n if (!check(service)) {\n continue;\n }\n\n return createMock(service, prefix, callback);\n }\n};\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockService\n */\nexport function MockService(service: boolean | number | string | null | undefined): undefined;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockService\n */\nexport function MockService<T>(service: AnyType<T>, overrides?: Partial<T>, mockNamePrefix?: string): T;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockService\n */\nexport function MockService<T>(service: AnyType<T>, mockNamePrefix?: string): T;\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockService\n */\nexport function MockService<T = any>(service: object, mockNamePrefix?: string): T;\n\nexport function MockService(service: any, ...args: any[]): any {\n // mocking all methods / properties of a class / object.\n\n const mockNamePrefix = args.length > 0 && typeof args[0] === 'string' ? args[0] : args[1];\n const overrides = args.length > 0 && args[0] && typeof args[0] === 'object' ? args[0] : undefined;\n\n const value: any = mockVariable(service, mockNamePrefix, MockService);\n\n if (overrides) {\n mockHelperStub(value, overrides);\n }\n\n return value;\n}\n","import { Provider } from '@angular/core';\n\nimport coreForm from '../common/core.form';\nimport { flatten } from '../common/core.helpers';\nimport { AnyType } from '../common/core.types';\nimport funcGetProvider from '../common/func.get-provider';\nimport {\n MockAsyncValidatorProxy,\n MockControlValueAccessorProxy,\n MockValidatorProxy,\n} from '../common/mock-control-value-accessor-proxy';\nimport helperMockService from '../mock-service/helper.mock-service';\n\nimport toExistingProvider from './to-existing-provider';\nimport toFactoryProvider from './to-factory-provider';\n\nconst processTokens = (mockType: AnyType<any>, provider: any) => {\n const provide = funcGetProvider(provider);\n if (coreForm.NG_VALIDATORS && provide === coreForm.NG_VALIDATORS) {\n return toFactoryProvider(provide, () => new MockValidatorProxy(mockType));\n }\n if (coreForm.NG_ASYNC_VALIDATORS && provide === coreForm.NG_ASYNC_VALIDATORS) {\n return toFactoryProvider(provide, () => new MockAsyncValidatorProxy(mockType));\n }\n if (coreForm.NG_VALUE_ACCESSOR && provide === coreForm.NG_VALUE_ACCESSOR) {\n return toFactoryProvider(provide, () => new MockControlValueAccessorProxy(mockType));\n }\n\n return undefined;\n};\n\nconst processOwnUseExisting = (sourceType: AnyType<any>, mockType: AnyType<any>, provider: any) => {\n const provide = funcGetProvider(provider);\n\n // Check tests/issue-302/test.spec.ts\n if (provide === coreForm.NgControl || provide === coreForm.FormControlDirective) {\n return undefined;\n }\n\n if (provider !== provide && provider.useExisting === sourceType) {\n return toExistingProvider(provide, mockType);\n }\n if (\n provider !== provide &&\n provider.useExisting &&\n provider.useExisting.__forward_ref__ &&\n provider.useExisting() === sourceType\n ) {\n return toExistingProvider(provide, mockType);\n }\n\n return undefined;\n};\n\nconst processProvider = (\n sourceType: AnyType<any>,\n mockType: AnyType<any>,\n provider: any,\n resolutions: Map<any, any>,\n): any => {\n const token = processTokens(mockType, provider);\n if (token) {\n return token;\n }\n\n const ownUseExisting = processOwnUseExisting(sourceType, mockType, provider);\n if (ownUseExisting) {\n return ownUseExisting;\n }\n\n return helperMockService.resolveProvider(provider, resolutions);\n};\n\nexport default (\n sourceType: AnyType<any>,\n mockType: AnyType<any>,\n providers?: any[],\n): {\n providers: Provider[];\n setControlValueAccessor?: boolean;\n} => {\n const result: Provider[] = [];\n let setControlValueAccessor: boolean | undefined;\n const resolutions = new Map();\n\n for (const provider of flatten(providers || /* istanbul ignore next */ [])) {\n const provide = funcGetProvider(provider);\n if (provide === coreForm.NG_VALUE_ACCESSOR) {\n setControlValueAccessor = false;\n }\n const mock = processProvider(sourceType, mockType, provider, resolutions);\n if (mock) {\n result.push(mock);\n }\n }\n\n return {\n providers: result,\n setControlValueAccessor,\n };\n};\n","// tslint:disable cyclomatic-complexity\n\nimport { Component, Directive, Provider, ViewChild } from '@angular/core';\n\nimport { AnyType } from '../common/core.types';\nimport decorateInputs from '../common/decorate.inputs';\nimport decorateMock from '../common/decorate.mock';\nimport decorateOutputs from '../common/decorate.outputs';\nimport decorateQueries from '../common/decorate.queries';\nimport { ngMocksMockConfig } from '../common/mock';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\nimport helperMockService from '../mock-service/helper.mock-service';\n\nimport cloneProviders from './clone-providers';\nimport toExistingProvider from './to-existing-provider';\n\nconst buildConfig = (\n source: AnyType<any>,\n meta: {\n inputs?: string[];\n outputs?: string[];\n providers?: Provider[];\n queries?: Record<string, ViewChild>;\n },\n setControlValueAccessor: boolean,\n): ngMocksMockConfig => ({\n config: ngMocksUniverse.config.get(source),\n outputs: meta.outputs,\n queryScanKeys: [],\n setControlValueAccessor,\n});\n\nexport default <T extends Component | Directive>(\n source: AnyType<any>,\n mock: AnyType<any>,\n meta: {\n hostBindings?: Array<[string, any]>;\n hostListeners?: Array<[string, any, any]>;\n inputs?: string[];\n outputs?: string[];\n providers?: Provider[];\n queries?: Record<string, ViewChild>;\n viewProviders?: Provider[];\n },\n params: T,\n): T => {\n const data = cloneProviders(source, mock, meta.providers || []);\n const providers = [toExistingProvider(source, mock), ...data.providers];\n const { providers: viewProviders } = cloneProviders(source, mock, meta.viewProviders || []);\n const options: T = { ...params, providers, viewProviders };\n\n if (data.setControlValueAccessor === undefined) {\n data.setControlValueAccessor =\n helperMockService.extractMethodsFromPrototype(source.prototype).indexOf('writeValue') !== -1;\n }\n\n const config: ngMocksMockConfig = buildConfig(source, meta, data.setControlValueAccessor);\n decorateMock(mock, source, config);\n\n // istanbul ignore else\n if (meta.queries) {\n decorateInputs(mock, meta.inputs, Object.keys(meta.queries));\n }\n decorateOutputs(mock, meta.outputs);\n config.queryScanKeys = decorateQueries(mock, meta.queries);\n\n config.hostBindings = [];\n for (const [key] of meta.hostBindings || /* istanbul ignore next */ []) {\n // mock declarations should not have side effects based on host bindings.\n // HostBinding(...args)(mock.prototype, key);\n if (config.hostBindings.indexOf(key) === -1) {\n config.hostBindings.push(key);\n }\n }\n\n config.hostListeners = [];\n for (const [key] of meta.hostListeners || /* istanbul ignore next */ []) {\n // mock declarations should not have side effects based on host bindings.\n // HostListener(...args)(mock.prototype, key);\n if (config.hostListeners.indexOf(key) === -1) {\n config.hostListeners.push(key);\n }\n }\n\n return options;\n};\n","import { extendClass } from '../common/core.helpers';\nimport funcImportExists from '../common/func.import-exists';\nimport { isMockNgDef } from '../common/func.is-mock-ng-def';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nexport default (def: any, type: any, func: string, cacheFlag: string, base: any, decorator: any) => {\n funcImportExists(def, func);\n\n if (isMockNgDef(def, type)) {\n return def;\n }\n\n if (ngMocksUniverse.flags.has(cacheFlag) && ngMocksUniverse.cacheDeclarations.has(def)) {\n return ngMocksUniverse.cacheDeclarations.get(def);\n }\n\n const mock = extendClass(base);\n decorator(def, mock);\n\n // istanbul ignore else\n if (ngMocksUniverse.flags.has(cacheFlag)) {\n ngMocksUniverse.cacheDeclarations.set(def, mock);\n }\n\n return mock as any;\n};\n","import { AnyType } from '../common/core.types';\n\nexport default (provide: AnyType<any>, useExisting: AnyType<any>) => ({\n provide,\n useExisting,\n});\n","import { AnyType } from '../common/core.types';\n\nexport default (provide: AnyType<any>, useFactory: any) => ({\n multi: true,\n provide,\n useFactory,\n});\n","// tslint:disable max-func-body-length cyclomatic-complexity\n\nimport coreDefineProperty from '../common/core.define-property';\n\ninterface Declaration {\n host: Record<string, string | undefined>;\n hostBindings: Array<[string, string?, ...any[]]>;\n hostListeners: Array<[string, string?, ...any[]]>;\n inputs: string[];\n outputs: string[];\n propDecorators: Record<string, any[]>;\n queries: Record<string, {}>;\n [key: string]: any;\n}\n\nconst getAllKeys = <T>(instance: T): Array<keyof T> => {\n const props: string[] = [];\n for (const key of Object.keys(instance)) {\n props.push(key);\n }\n\n return props as never;\n};\n\nconst createDeclarations = (parent: Partial<Declaration>): Declaration => {\n return {\n host: parent.host ? { ...parent.host } : {},\n hostBindings: parent.hostBindings ? [...parent.hostBindings] : [],\n hostListeners: parent.hostListeners ? [...parent.hostListeners] : [],\n inputs: parent.inputs ? [...parent.inputs] : [],\n outputs: parent.outputs ? [...parent.outputs] : [],\n propDecorators: parent.propDecorators ? { ...parent.propDecorators } : {},\n queries: parent.queries ? { ...parent.queries } : {},\n };\n};\n\nconst parseAnnotations = (\n def: {\n __annotations__?: Array<{\n ngMetadataName?: string;\n }>;\n },\n declaration: Declaration,\n): void => {\n if (def.hasOwnProperty('__annotations__') && def.__annotations__) {\n for (const annotation of def.__annotations__) {\n const ngMetadataName = annotation?.ngMetadataName;\n if (!ngMetadataName) {\n continue;\n }\n\n declaration[ngMetadataName] = { ...annotation };\n }\n }\n};\n\nconst parseDecorators = (\n def: {\n decorators?: Array<{\n args?: [{}];\n type?: {\n prototype?: {\n ngMetadataName?: string;\n };\n };\n }>;\n },\n declaration: Declaration,\n): void => {\n if (def.hasOwnProperty('decorators') && def.decorators) {\n for (const decorator of def.decorators) {\n const ngMetadataName = decorator?.type?.prototype?.ngMetadataName;\n if (!ngMetadataName) {\n continue;\n }\n\n declaration[ngMetadataName] = decorator.args ? { ...decorator.args[0] } : {};\n }\n }\n};\n\nconst parsePropDecoratorsParserFactoryProp =\n (key: 'inputs' | 'outputs') =>\n (\n _: string,\n prop: string,\n decorator: {\n args?: [string];\n },\n declaration: Declaration,\n ): void => {\n const value = prop + (decorator.args?.[0] ? `: ${decorator.args[0]}` : '');\n if (declaration[key].indexOf(value) === -1) {\n declaration[key].unshift(value);\n }\n };\nconst parsePropDecoratorsParserInput = parsePropDecoratorsParserFactoryProp('inputs');\nconst parsePropDecoratorsParserOutput = parsePropDecoratorsParserFactoryProp('outputs');\n\nconst parsePropDecoratorsParserFactoryQuery =\n (isViewQuery: boolean) =>\n (\n ngMetadataName: string,\n prop: string,\n decorator: {\n args: [string] | [string, {}];\n },\n declaration: Declaration,\n ): void => {\n if (!declaration.queries[prop]) {\n declaration.queries[prop] = {\n isViewQuery,\n ngMetadataName,\n selector: decorator.args[0],\n ...(decorator.args[1] || {}),\n };\n }\n };\nconst parsePropDecoratorsParserContent = parsePropDecoratorsParserFactoryQuery(false);\nconst parsePropDecoratorsParserView = parsePropDecoratorsParserFactoryQuery(true);\n\nconst parsePropDecoratorsParserHostBinding = (\n _: string,\n prop: string,\n decorator: {\n args?: [string] | [string, any[]];\n },\n declaration: Declaration,\n): void => {\n const key = `[${decorator.args?.[0] || prop}]`;\n if (!declaration.host[key]) {\n declaration.host[key] = prop;\n }\n declaration.hostBindings.push([prop, ...(decorator.args || [])]);\n};\n\nconst parsePropDecoratorsParserHostListener = (\n _: string,\n prop: string,\n decorator: {\n args?: any[];\n },\n declaration: Declaration,\n): void => {\n const key = `(${decorator.args?.[0] || prop})`;\n if (!declaration.host[key]) {\n declaration.host[key] = `${prop}($event)`;\n }\n declaration.hostListeners.push([prop, ...(decorator.args || [])]);\n};\n\nconst parsePropDecoratorsMap: any = {\n ContentChild: parsePropDecoratorsParserContent,\n ContentChildren: parsePropDecoratorsParserContent,\n HostBinding: parsePropDecoratorsParserHostBinding,\n HostListener: parsePropDecoratorsParserHostListener,\n Input: parsePropDecoratorsParserInput,\n Output: parsePropDecoratorsParserOutput,\n ViewChild: parsePropDecoratorsParserView,\n ViewChildren: parsePropDecoratorsParserView,\n};\n\nconst parsePropDecorators = (\n def: {\n propDecorators?: Record<\n string,\n Array<{\n args: any;\n type?: {\n prototype?: {\n ngMetadataName?: string;\n };\n };\n }>\n >;\n },\n declaration: Declaration,\n): void => {\n if (def.hasOwnProperty('propDecorators') && def.propDecorators) {\n for (const prop of getAllKeys(def.propDecorators)) {\n declaration.propDecorators[prop] = [...(declaration.propDecorators[prop] || []), ...def.propDecorators[prop]];\n for (const decorator of def.propDecorators[prop]) {\n const ngMetadataName = decorator?.type?.prototype?.ngMetadataName;\n if (!ngMetadataName) {\n continue;\n }\n parsePropDecoratorsMap[ngMetadataName]?.(ngMetadataName, prop, decorator, declaration);\n }\n }\n }\n};\n\nconst parsePropMetadataParserFactoryProp =\n (key: 'inputs' | 'outputs') =>\n (\n _: string,\n prop: string,\n decorator: {\n bindingPropertyName?: string;\n },\n declaration: Declaration,\n ): void => {\n const value = prop + (decorator.bindingPropertyName ? `: ${decorator.bindingPropertyName}` : '');\n if (declaration[key].indexOf(value) === -1) {\n declaration[key].unshift(value);\n }\n };\nconst parsePropMetadataParserInput = parsePropMetadataParserFactoryProp('inputs');\nconst parsePropMetadataParserOutput = parsePropMetadataParserFactoryProp('outputs');\n\nconst parsePropMetadataParserFactoryQueryChild =\n (isViewQuery: boolean) =>\n (\n ngMetadataName: string,\n prop: string,\n decorator: {\n read?: any;\n selector: string;\n static?: boolean;\n },\n declaration: Declaration,\n ): void => {\n if (!declaration.queries[prop]) {\n declaration.queries[prop] = {\n isViewQuery,\n ngMetadataName,\n selector: decorator.selector,\n ...(decorator.read !== undefined ? { read: decorator.read } : {}),\n ...(decorator.static !== undefined ? { static: decorator.static } : {}),\n };\n }\n };\nconst parsePropMetadataParserContentChild = parsePropMetadataParserFactoryQueryChild(false);\nconst parsePropMetadataParserViewChild = parsePropMetadataParserFactoryQueryChild(true);\n\nconst parsePropMetadataParserFactoryQueryChildren =\n (isViewQuery: boolean) =>\n (\n ngMetadataName: string,\n prop: string,\n decorator: {\n descendants?: any;\n emitDistinctChangesOnly?: boolean;\n read?: any;\n selector: string;\n },\n declaration: Declaration,\n ): void => {\n if (!declaration.queries[prop]) {\n declaration.queries[prop] = {\n isViewQuery,\n ngMetadataName,\n selector: decorator.selector,\n ...(decorator.descendants !== undefined ? { descendants: decorator.descendants } : {}),\n ...(decorator.emitDistinctChangesOnly !== undefined\n ? { emitDistinctChangesOnly: decorator.emitDistinctChangesOnly }\n : {}),\n ...(decorator.read !== undefined ? { read: decorator.read } : {}),\n };\n }\n };\nconst parsePropMetadataParserContentChildren = parsePropMetadataParserFactoryQueryChildren(false);\nconst parsePropMetadataParserViewChildren = parsePropMetadataParserFactoryQueryChildren(true);\n\nconst parsePropMetadataParserHostBinding = (\n _: string,\n prop: string,\n decorator: {\n args?: any;\n hostPropertyName?: string;\n },\n declaration: Declaration,\n): void => {\n const key = `[${decorator.hostPropertyName || prop}]`;\n if (!declaration.host[key]) {\n declaration.host[key] = prop;\n }\n declaration.hostBindings.push([\n prop,\n decorator.hostPropertyName || prop,\n ...(decorator.args ? [decorator.args] : []),\n ]);\n};\n\nconst parsePropMetadataParserHostListener = (\n _: string,\n prop: string,\n decorator: {\n args?: any;\n eventName?: string;\n },\n declaration: Declaration,\n): void => {\n const key = `(${decorator.eventName || prop})`;\n if (!declaration.host[key]) {\n declaration.host[key] = `${prop}($event)`;\n }\n declaration.hostListeners.push([prop, decorator.eventName || prop, ...(decorator.args ? [decorator.args] : [])]);\n};\n\nconst parsePropMetadataMap: any = {\n ContentChild: parsePropMetadataParserContentChild,\n ContentChildren: parsePropMetadataParserContentChildren,\n HostBinding: parsePropMetadataParserHostBinding,\n HostListener: parsePropMetadataParserHostListener,\n Input: parsePropMetadataParserInput,\n Output: parsePropMetadataParserOutput,\n ViewChild: parsePropMetadataParserViewChild,\n ViewChildren: parsePropMetadataParserViewChildren,\n};\n\nconst parsePropMetadata = (\n def: {\n __prop__metadata__?: Record<string, any[]>;\n },\n declaration: Declaration,\n): void => {\n if (def.hasOwnProperty('__prop__metadata__') && def.__prop__metadata__) {\n for (const prop of getAllKeys(def.__prop__metadata__)) {\n for (const decorator of def.__prop__metadata__[prop]) {\n const ngMetadataName = decorator?.ngMetadataName;\n if (!ngMetadataName) {\n continue;\n }\n parsePropMetadataMap[ngMetadataName]?.(ngMetadataName, prop, decorator, declaration);\n }\n }\n }\n};\n\nconst buildDeclaration = (def: any | undefined, declaration: Declaration): void => {\n if (def) {\n def.inputs = def.inputs || [];\n for (const input of declaration.inputs) {\n if (def.inputs.indexOf(input) === -1) {\n def.inputs.push(input);\n }\n }\n\n def.outputs = def.outputs || [];\n for (const output of declaration.outputs) {\n if (def.outputs.indexOf(output) === -1) {\n def.outputs.push(output);\n }\n }\n\n def.queries = {\n ...(def.queries || []),\n ...declaration.queries,\n };\n\n def.hostBindings = declaration.hostBindings;\n def.hostListeners = declaration.hostListeners;\n }\n};\n\nconst parse = (def: any): any => {\n if (def.hasOwnProperty('__ngMocksParsed')) {\n return def.__ngMocksDeclarations;\n }\n\n const parent = Object.getPrototypeOf(def);\n const parentDeclarations = parent ? parse(parent) : {};\n const declaration = createDeclarations(parentDeclarations);\n coreDefineProperty(def, '__ngMocksParsed', true);\n parseAnnotations(def, declaration);\n parseDecorators(def, declaration);\n parsePropDecorators(def, declaration);\n parsePropMetadata(def, declaration);\n buildDeclaration(declaration.Directive, declaration);\n buildDeclaration(declaration.Component, declaration);\n\n coreDefineProperty(def, '__ngMocksDeclarations', {\n ...parentDeclarations,\n ...declaration,\n });\n\n return def.__ngMocksDeclarations;\n};\n\nexport default ((): ((def: any) => any) => parse)();\n","module.exports = __WEBPACK_EXTERNAL_MODULE__5848__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8900__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1087__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7161__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3046__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(9387);\n"],"names":["root","factory","exports","module","require","define","amd","a","i","self","__WEBPACK_EXTERNAL_MODULE__8900__","__WEBPACK_EXTERNAL_MODULE__1087__","__WEBPACK_EXTERNAL_MODULE__7161__","__WEBPACK_EXTERNAL_MODULE__3046__","__WEBPACK_EXTERNAL_MODULE__5848__","get","getTestBedInjection","getInjection","Mock","MockControlValueAccessor","MockValidator","registerMockFunction","flags","mockRenderCacheSize","neverMockModule","neverMockProvidedFunction","neverMockToken","onMockInstanceRestoreNeed","onTestBedFlushNeed","instance","property","value","enumerable","definePropertyDescriptor","configurable","writable","AbstractControl","DefaultValueAccessor","FormControl","FormControlDirective","NG_ASYNC_VALIDATORS","NG_VALIDATORS","NG_VALUE_ACCESSOR","NgControl","NgModel","token","testBed","getTestBed","inject","flatten","values","result","Array","isArray","push","mapKeys","set","forEach","_","mapValues","destination","add","mapEntries","key","extractDependencyArray","deps","flag","name","ngMetadataName","undefined","extractDependency","dep","extendClassicClass","base","child","glb","ngMocksParent","eval","ngMocksResult","MockMiddleware","extendClass","parameters","length","defaultInjector","declaration","injector","callback","def","arg","Component","Directive","Error","global","has","JitReflector","isNgDef","NgModule","Pipe","providedIn","ngInjectableDef","NG_MOCKS","InjectionToken","NG_MOCKS_TOUCHES","NG_MOCKS_OVERRIDES","NG_MOCKS_GUARDS","NG_MOCKS_INTERCEPTORS","NG_MOCKS_ROOT_PROVIDERS","cls","inputs","exclude","input","split","alias","indexOf","Input","prototype","mock","source","configInput","config","getConfigMock","outputs","output","Output","map","ContentChild","ContentChildren","ViewChild","ViewChildren","isInternalKey","cloneVcrQuery","query","read","ViewContainerRef","queries","final","scanKeys","Object","keys","isViewQuery","generateFinalQueries","decorator","selector","join","jest","window","g","type","mockOf","mocks","cacheDeclarations","getMock","isMockedNgDefOf","_desc","constructor","provider","provide","funcName","_isMockFunction","mockName","__annotations__","isMockControlValueAccessor","__ngMocksConfig","isControlValueAccessor","component","ngType","isMockValidator","isValidator","isNgInjectionToken","isModule","isNgType","isModuleCheck","isComponent","isComponentCheck","isDirective","isDirectiveCheck","isPipe","isPipeCheck","isInjectable","isInjectableCheck","isNgModuleDefWithProviders","ngModule","annotations","some","annotation","this","reflectionCapabilities","typeOrFunc","componentModuleUrl","guards","hasLifecycleHook","lcProperty","propMetadata","shallowAnnotations","tryAnnotations","applyProxy","proxy","method","storage","target","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","writeValue","MockControlValueAccessorProxy","registerOnValidatorChange","validate","control","MockValidatorProxy","Promise","resolve","MockAsyncValidatorProxy","__simulateChange","__simulateTouch","__simulateValidatorChange","LegacyControlValueAccessor","installValidator","validators","validator","__ngMocksCtor","ngControl","queryScanKeys","hostBindings","hostListeners","valueAccessor","setControlValueAccessor","setValueAccessor","installValueAccessor","_rawValidators","_rawAsyncValidators","applyNgValueAccessor","mockOutputs","getOwnPropertyDescriptor","EventEmitter","applyOutputs","extractMethodsFromPrototype","extractPropertiesFromPrototype","prop","descriptor","extractPropertyDescriptor","applyPrototype","getPrototypeOf","applyMethods","applyProps","setPrototypeOf","configGlobal","getOverrides","callbacks","init","overrides","applyOverrides","Injector","Optional","Self","applyOverride","override","TestBed","overrideComponent","overrideDirective","overrideModule","overrideProvider","generateTouchesKey","generateTouches","moduleDef","touches","item","hasOwnProperty","local","Set","meta","__ngMocksTouches","applyPlatformOverrideDef","ngMocksOverrides","original","applyPlatformOverridesBasedOnProvidedIn","MockProvider","configureTestingModule","ngMocksSelectors","Map","providers","knownTouches","getDefaults","size","_providers","_compiler","useValue","defineTouches","ngMocks","flushTestBed","_instantiated","_testModuleRef","backup","applyPlatformOverridesBasedOnDefaults","applyPlatformOverrides","call","resetTestingModule","delete","applyNgMocksOverrides","ngMocksOverridesInstalled","hooks","vcr","__NG_ELEMENT_ID__","vcrInstance","apply","ngElementIdArgs","createComponent","createComponentArgs","viewContainerInstall","before","after","install","stackRoot","id","level","stack","listenersPush","listenersPop","current","stackPop","state","pop","stackPush","subscribePop","subscribePush","unsubscribePop","index","splice","unsubscribePush","globalMap","ngMocksUniverse","builtDeclarations","builtProviders","cacheProviders","configInstance","defValue","getResolution","getBuildDeclaration","mode","replacement","hasBuildDeclaration","isExcludedDef","resolution","isProvidedDef","data","restore","MockBuilderStash","build","equalsTo","clone","cloneConfig","then","fulfill","reject","console","warn","promise","beforeCC","excludeDef","keepDef","mockDef","replaceDef","configDef","defProviders","providerDef","MockBuilderPromise","MockBuilderPerformance","normaliseModule","generateProviderValue","existing","multi","defaultMock","stash","Symbol","toStringTag","beforeCompileComponents","params","combineParams","catch","wipe","finally","keep","a1","a2","setDefValue","setConfigDef","replace","compileComponents","keepDeclaration","itsModuleToMock","export","exportAll","dependency","render","compare","b","areEqualProviderDefs","thisDef","prototypeDef","prototypeDefs","thisDefs","objectsDiffer","$implicit","variables","prototypeKeys","sourceKeys","declarations","imports","exported","bucket","touched","skipDef","decorators","__forward_ref__","detectForwardRed","skipMock","changed","buckets","concat","isIvy","componentFactoryResolver","originCFR","resolveComponentFactory","args","EntryComponentsModule","ComponentFactoryResolver","entryComponents","entryModule","parametersMap","parameter","loModule","loProviders","loDef","MockModule","handleDef","extendedDef","k","v","defaultMockValue","DOCUMENT","skipByResolution","skipResolution","toString","skipSystem","MockComponent","MockDirective","MockPipe","transform","isPipeFunc","precise","createInstance","mixRenderApplyContext","view","context","contextKey","markForCheck","changeDetector","cdr","contentChildSelector","indices","detectChanges","mixRenderPrepareVcr","templates","QueryList","toArray","views","templateRef","TemplateRef","createEmbeddedView","mixRenderHandleViews","viewContainer","destroy","viewIndex","move","mixRenderReorderViews","mixHideHandler","mixHide","ngAfterContentInit","__rendered","block","__render","ComponentMockBase","ChangeDetectorRef","decorateClass","template","mockParams","exportAs","components","viewChildArgs","static","viewChildTemplate","isTemplateRefQuery","parts","RegExp","MockDeclaration","element","__ngMocksInstall","ngOnInit","clear","DirectiveMockBase","ElementRef","directive","options","directives","attribute","node","attrs","_tNode","step","attr","attrIndex","attrProp","_lView","detectInIvy","expectedAttributes","nodeIndex","nodes","detectInClassic","selectors","getSourceOfMock","providerTokens","references","attributes","match","isCrawlByAttribute","isCrawlByAttributeValue","isCrawlById","substr","isCrawlByTagName","isCrawlByDeclaration","collectSelectors","collectAttributesClassic","collectAttributesIvy","regExp","trim","nativeNode","nodeName","elDef","getScanViewRefRootNodes","getVcr","vrIndex","vr","rnIndex","rootNodes","parent","childNodes","scanViewRef","publicProviders","requiredAttributes","bindings","binding","nonMinifiedName","sel","includeTextNode","el","detector","defaultNotFoundValue","notFoundValue","isDirect","children","childNode","childNodeParent","start","end","nestedCheck","check","expected","currentParent","childElDef","detectParent","message","formControlDirective","form","ngModel","setValue","update","emit","handleKnown","listeners","filter","listener","hasListener","nativeElement","triggerInput","markAsTouched","triggerTouch","payload","preventBubble","eventCtor","Event","event","CustomEvent","initParams","bubbles","cancelable","eventObj","document","createEvent","initCustomEvent","keyMap","alt","altKey","code","location","which","arrowdown","arrowleft","arrowright","arrowup","backspace","ctrlKey","enter","esc","metaKey","shift","shiftKey","space","tab","f","dot","eventName","eventPayload","char","keyData","codePointAt","toUpperCase","applyPayload","debugElement","disabled","toEventObj","dispatchEvent","scanned","elements","findDebugElement","By","css","queryAll","handlePrimitives","html","outer","format","innerOuter","nodeValue","textContent","wholeText","innerHTML","outerHTML","getElementValue","proto","parentInjector","getParentWithInjector","parentInstance","detectContext","__ngContext__","rootView","detectContextByIndex","_debugContext","lView","normalize","detectGatherFlag","gather","parentNode","isNotObject","shouldBeScanned","scan","gatherDefault","fixtures","_activeFixtures","isValidValue","getMeta","parseArgs","attrMatches","detectAttribute","attrDef","label","calls","action","jasmine","createSpy","propName","mockFunction","error","defaultMethods","beforeEach","methods","afterEach","ngMocksFasterInstalled","idAdd","bulletStack","idRemove","activeFixtures","active","ngMocksStackId","resetFixtures","idAll","idEach","beforeAll","afterAll","_moduleFactory","res1","prevNode","previousSibling","matches","queryAllNodes","matchedNode","res2","fail","skip","createMetaHandler","optional","typeMap","handleDeclaration","resolveProvider","resolveMap","pipe","skipDestruction","getType","handleModuleWithProviders","toMock","handleDestructuring","resolveHandler","protoKeep","protoMock","protoExclude","generateDataWithUniverse","generateData","resolutions","createMeta","autoSpy","change","click","crawl","defaultConfig","faster","find","findAll","findInstance","findInstances","findTemplateRef","findTemplateRefs","formatHtml","formatText","globalExclude","globalKeep","globalMock","globalReplace","globalWipe","guts","hide","ignoreOnConsole","reset","reveal","revealAll","stub","stubMember","throwOnConsole","touch","trigger","encapsulation","__ngMocksProxy","defineProperty","style","correctInstance","skipProps","createClone","getOwnPropertyNames","desc","isRightTemplate","localVcr","localValue","isExpectedTemplate","findDeep","entryPoint","__template","__vcr","handleDirective","scanValue","scanVcr","getValVcr","param","tpl","elementRef","limit","overloads","checkReset","showError","globalFlags","errorMessage","currentStack","mockInstance","universeConfig","parseMockInstanceArgs","accessor","checkCollect","mockInstanceConfig","mockInstances","MockInstance","remember","scope","processDefMap","createResolveExisting","detectedDef","createResolveExcluded","func","processDef","createResolveWithProviders","createResolve","createResolveProvider","ngModuleProviders","extractModuleAndProviders","toggleSkipMockFlag","isRootModule","flagMock","flagNever","flagKeep","flagReplace","preProcessFlags","mockModule","mockModuleDef","ngModuleDef","getMockModuleDef","detectMockModule","isMockNgDef","getExistingMockModule","mockModuleProviders","getMockProviders","generateReturn","postProcessFlags","flatToExisting","resolveDefForExport","correctExports","moduleConfig","skipAddExports","hasResolver","configureProcessMetaKeys","cachePipe","viewProviders","processMeta","addExports","getMockClass","pipes","defaultValue","MockService","caches","getCache","cacheKey","ctor","cache","isValid","checkCache","mockTemplate","next","newValue","MockRenderComponent","generateWrapper","unshift","generateTemplateAttrWithParams","generateTemplateAttrWrap","generateTemplateAttr","definition","createPropertyGet","reader","handler","createPropertySet","extra","force","exists","fields","extractAllKeys","useExisting","registerTemplateMiddleware","fixtureMessage","generateFactory","componentCtor","configureTestBed","fixture","componentInstance","isExpectedRender","point","tryWhen","renderDeclaration","DebugElement","HTMLElement","renderInjection","_declarations","e","handleFixtureError","generateFactoryInstall","MockRenderFactory","MockRender","__parameters__","isAngularClass","clsCode","charCodeAt","regEx","guessClass","service","bindFrom","bindTo","arguments","properties","sourceDesc","sanitizerMethods","extraMethods","DomSanitizer","Sanitizer","customMockFunction","val","newSetValue","ngMockshelperMockService","createMockFromPrototype","replaceWithMocks","useFactory","createName","accessType","generateMockDef","detectedMockName","__ngMocks","__ngMocksSet","__ngMocksGet","handleItemKeys","handleItemGetGuards","section","guard","handleSection","updated","valueItem","handleArray","handleItem","areEqualDefs","providerDiffers","defDiffers","anyDiffers","parseProvider","isSuitableProvider","interceptor","useClass","excludeInterceptors","isPreconfiguredDependency","existingMock","createFromResolution","createPredefinedMockProvider","createMockProvider","applyCallbackToken","inst","applyCallback","normalizePrimitivesMap","handleProvider","mockProvider","normalizePrimitives","createValueProvider","createClassProvider","isNeverMockFunction","isNeverMockToken","applyMissingClassProperties","createFactoryProvider","mockVariableMap","prefix","mockVariable","createMock","mockNamePrefix","processProvider","sourceType","mockType","processTokens","ownUseExisting","processOwnUseExisting","buildConfig","cacheFlag","getAllKeys","props","parsePropDecoratorsParserFactoryProp","parsePropDecoratorsParserInput","parsePropDecoratorsParserOutput","parsePropDecoratorsParserFactoryQuery","parsePropDecoratorsParserContent","parsePropDecoratorsParserView","parsePropDecoratorsMap","HostBinding","host","HostListener","parsePropMetadataParserFactoryProp","bindingPropertyName","parsePropMetadataParserInput","parsePropMetadataParserOutput","parsePropMetadataParserFactoryQueryChild","parsePropMetadataParserContentChild","parsePropMetadataParserViewChild","parsePropMetadataParserFactoryQueryChildren","descendants","emitDistinctChangesOnly","parsePropMetadataMap","hostPropertyName","buildDeclaration","parse","__ngMocksDeclarations","parentDeclarations","propDecorators","createDeclarations","parseAnnotations","parseDecorators","parsePropDecorators","__prop__metadata__","parsePropMetadata","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","globalThis","Function","__webpack_exports__"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"index.js","mappings":"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","sources":["webpack://ng-mocks/webpack/universalModuleDefinition","webpack://ng-mocks/./libs/ng-mocks/src/index.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.config.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.define-property.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.form.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.helpers.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.injector.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.reflect.body-catch.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.reflect.directive-resolve.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.reflect.meta.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.reflect.module-resolve.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.reflect.parameters-resolve.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.reflect.pipe-resolve.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.reflect.provided-in.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/core.tokens.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/decorate.inputs.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/decorate.mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/decorate.outputs.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/decorate.queries.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/error.empty-def.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/error.jest-mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/error.missing-decorators.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.get-global.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.get-mocked-ng-def-of.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.get-name.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.get-provider.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.get-source-of-mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.import-exists.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-jest-mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-mock-control-value-accessor.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-mock-ng-def.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-mock-of.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-mock-validator.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-mocked-ng-def-of.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-ng-def.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-ng-injection-token.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-ng-module-def-with-providers.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/func.is-ng-type.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/mock-control-value-accessor-proxy.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/mock-control-value-accessor.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/ng-mocks-global-overrides.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/ng-mocks-stack.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/common/ng-mocks-universe.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/func.extract-tokens.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/mock-builder-stash.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/mock-builder.performance.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/mock-builder.promise.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/mock-builder.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/are-equal-config-params.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/are-equal-maps.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/are-equal-providers.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/are-equal-sets.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/equal-render-configs.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/equal-render-defs.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/equal-variables.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/get-empty-config.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/required-metadata.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/add-def-to-root-provider-parameters.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/add-missing-definition.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/add-missing-keep-declarations-and-modules.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/add-missing-mock-declarations-and-modules.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/add-requested-providers.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/apply-platform-modules.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/check-root-provider-dependency.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/create-ng-mocks-overrides-token.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/create-ng-mocks-token.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/create-ng-mocks-touches-token.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/detect-wrong-declarations.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/extract-dep.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/get-override-def.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/get-root-provider-parameters.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/get-root-providers-data.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/handle-entry-components.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/handle-provided-in-dependency.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/handle-root-providers.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/init-exclude-def.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/init-keep-def.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/init-mock-declarations.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/init-module.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/init-modules.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/init-ng-modules.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/init-replace-def.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/init-universe.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/parse-mock-arguments.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/parse-provider.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/skip-dep.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/skip-init-module.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/skip-override.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/skip-root-provider-dependency.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/try-mock-declaration.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/promise/try-mock-provider.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-component/mock-component.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-component/render/generate-template.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-component/render/get-key.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-declaration/mock-declaration.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-directive/mock-directive.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/crawl-by-attribute-value.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/crawl-by-attribute.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/crawl-by-declaration.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/crawl-by-id.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/crawl-by-tag-name.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/detect-attribute-in-selectors.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/detect-crawler.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/detect-selectors-from-node.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/detect-tag-name-in-selectors.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/detect-text-node.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/el-def-compare.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/el-def-get-node.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/el-def-get-parent.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/func.get-public-provider-keys.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/func.is-valid-reveal-selector.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/func.parse-inputs-and-requires-attributes.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/mock-helper.crawl.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/mock-helper.reveal-all.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/mock-helper.reveal.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/nested-check-children.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/crawl/nested-check.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/cva/func.get-vca.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/cva/mock-helper.change.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/cva/mock-helper.touch.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/events/mock-helper.click.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/events/mock-helper.event.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/events/mock-helper.trigger.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/find-instance/func.is-valid-find-instance-selector.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/find-instance/mock-helper.find-instance.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/find-instance/mock-helper.find-instances.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/find/func.parse-find-args.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/find/func.parse-find-term.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/find/mock-helper.find-all.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/find/mock-helper.find.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/format-handler.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/handle-array.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/handle-text.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/is-debug-node.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/is-fixture.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/is-html-element.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/is-text.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/mock-helper.format-html.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/format/mock-helper.format-text.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.get-from-node-element.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.get-from-node-injector.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.get-from-node-ivy.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.get-from-node-scan.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.get-from-node-standard.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.get-from-node.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.get-last-fixture.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.global-prepare.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.parse-find-args-name.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.parse-find-args.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/func.parse-provider-tokens-directives.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.attributes.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.auto-spy.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.console-ignore.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.console-throw.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.console.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.default-config.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.default-mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.faster-install.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.faster.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.flush-test-bed.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.get.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.global-exclude.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.global-keep.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.global-mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.global-replace.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.global-wipe.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.guts.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.input.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.object.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.output.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.reset.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.stub-member.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.stub.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/mock-helper.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/render/func.find-deep.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/render/func.parse-template.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/render/mock-helper.hide.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/render/mock-helper.render.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/template-ref/detect-crawler.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/template-ref/detect-template-ref.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/template-ref/func.is-valid-template-ref-selector.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/template-ref/mock-helper.find-template-ref.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-helper/template-ref/mock-helper.find-template-refs.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-instance/mock-instance-apply.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-instance/mock-instance-forgot-reset.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-instance/mock-instance.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-module/create-resolvers.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-module/mark-providers.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-module/mock-module.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-module/mock-ng-def.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-pipe/mock-pipe.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-provider/mock-provider.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-render/func.create-wrapper.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-render/func.generate-template.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-render/func.install-prop-reader.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-render/func.reflect-template.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-render/mock-render-factory.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-render/mock-render.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/check.is-class.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/check.is-func.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/check.is-inst.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.create-clone.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.create-mock-from-prototype.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.define-property-descriptor.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.extract-methods-from-prototype.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.extract-properties-from-prototype.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.extract-property-descriptor.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.mock-function.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.mock-service.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.replace-with-mocks.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.resolve-provider.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/helper.use-factory.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/mock-provider.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-service/mock-service.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock/clone-providers.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock/decorate-declaration.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock/get-mock.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock/to-existing-provider.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock/to-factory-provider.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/resolve/collect-declarations.ts","webpack://ng-mocks/external umd \"@angular/common\"","webpack://ng-mocks/external umd \"@angular/core\"","webpack://ng-mocks/external umd \"@angular/core/testing\"","webpack://ng-mocks/external umd \"@angular/forms\"","webpack://ng-mocks/external umd \"@angular/platform-browser\"","webpack://ng-mocks/webpack/bootstrap","webpack://ng-mocks/webpack/runtime/global","webpack://ng-mocks/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@angular/core\"), require(\"@angular/core/testing\"), require(\"@angular/forms\"), require(\"@angular/platform-browser\"), require(\"@angular/common\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@angular/core\", \"@angular/core/testing\", \"@angular/forms\", \"@angular/platform-browser\", \"@angular/common\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"@angular/core\"), require(\"@angular/core/testing\"), require(\"@angular/forms\"), require(\"@angular/platform-browser\"), require(\"@angular/common\")) : factory(root[\"@angular/core\"], root[\"@angular/core/testing\"], root[\"@angular/forms\"], root[\"@angular/platform-browser\"], root[\"@angular/common\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function(__WEBPACK_EXTERNAL_MODULE__8900__, __WEBPACK_EXTERNAL_MODULE__1087__, __WEBPACK_EXTERNAL_MODULE__7161__, __WEBPACK_EXTERNAL_MODULE__3046__, __WEBPACK_EXTERNAL_MODULE__5848__) {\nreturn ","// istanbul ignore file\n\nimport './lib/common/ng-mocks-stack';\nimport './lib/common/ng-mocks-global-overrides';\n\nexport * from './lib/common/core.tokens';\n\nexport { getTestBedInjection, getInjection } from './lib/common/core.helpers';\n\nexport { getMockedNgDefOf } from './lib/common/func.get-mocked-ng-def-of';\nexport { getSourceOfMock } from './lib/common/func.get-source-of-mock';\nexport { isMockControlValueAccessor } from './lib/common/func.is-mock-control-value-accessor';\nexport { isMockNgDef } from './lib/common/func.is-mock-ng-def';\nexport { isMockOf } from './lib/common/func.is-mock-of';\nexport { isMockValidator } from './lib/common/func.is-mock-validator';\nexport { isMockedNgDefOf } from './lib/common/func.is-mocked-ng-def-of';\nexport { isNgDef } from './lib/common/func.is-ng-def';\nexport { isNgInjectionToken } from './lib/common/func.is-ng-injection-token';\n\nexport { Mock } from './lib/common/mock';\nexport {\n MockControlValueAccessor,\n MockValidator,\n LegacyControlValueAccessor,\n} from './lib/common/mock-control-value-accessor';\nexport { MockInstance, MockReset } from './lib/mock-instance/mock-instance';\n\nexport { MockBuilder } from './lib/mock-builder/mock-builder';\nexport {\n IMockBuilder,\n IMockBuilderConfig,\n IMockBuilderConfigAll,\n IMockBuilderConfigComponent,\n IMockBuilderConfigDirective,\n IMockBuilderConfigModule,\n IMockBuilderResult,\n} from './lib/mock-builder/types';\n\nexport { MockModule } from './lib/mock-module/mock-module';\nexport { MockedModule } from './lib/mock-module/types';\n\nexport { MockComponent, MockComponents } from './lib/mock-component/mock-component';\nexport { MockedComponent } from './lib/mock-component/types';\n\nexport { MockDirective, MockDirectives } from './lib/mock-directive/mock-directive';\nexport { MockedDirective } from './lib/mock-directive/types';\n\nexport { MockPipe, MockPipes } from './lib/mock-pipe/mock-pipe';\nexport { MockedPipe } from './lib/mock-pipe/types';\n\nexport { MockDeclaration, MockDeclarations } from './lib/mock-declaration/mock-declaration';\n\nexport { MockProvider, MockProviders } from './lib/mock-provider/mock-provider';\n\nexport { MockService } from './lib/mock-service/mock-service';\n\nexport { ngMocks } from './lib/mock-helper/mock-helper';\n\nexport { MockRender } from './lib/mock-render/mock-render';\nexport { MockRenderFactory } from './lib/mock-render/mock-render-factory';\nexport * from './lib/mock-render/types';\n\nexport * from './lib/mock-service/types';\n","export default {\n flags: ['cacheModule', 'cacheComponent', 'cacheDirective', 'cacheProvider', 'correctModuleExports'],\n mockRenderCacheSize: 25,\n neverMockModule: ['ApplicationModule', 'CommonModule', 'BrowserModule'],\n neverMockProvidedFunction: [\n 'DomRendererFactory2',\n 'EventManager',\n 'Injector', // ivy only\n 'RendererFactory2',\n\n // https://github.com/ike18t/ng-mocks/issues/538\n 'Sanitizer',\n 'DomSanitizer',\n\n // ApplicationModule, A14 made them global at root level\n 'ApplicationInitStatus',\n 'ApplicationRef',\n 'Compiler',\n 'IterableDiffers',\n 'KeyValueDiffers',\n ],\n neverMockToken: [\n 'InjectionToken Set Injector scope.', // INJECTOR_SCOPE // ivy only\n 'InjectionToken EventManagerPlugins', // EVENT_MANAGER_PLUGINS\n 'InjectionToken HammerGestureConfig', // HAMMER_GESTURE_CONFIG\n\n // ApplicationModule, A14 made them global at root level\n 'InjectionToken AppId', // APP_ID\n 'InjectionToken DefaultCurrencyCode', // DEFAULT_CURRENCY_CODE\n 'InjectionToken LocaleId', // LOCALE_ID\n 'InjectionToken SCHEDULER_TOKEN', // SCHEDULER\n ],\n onMockInstanceRestoreNeed: 'warn',\n onTestBedFlushNeed: 'warn',\n};\n","import helperMockService from '../mock-service/helper.mock-service';\n\nexport default (instance: any, property: keyof any, value: any, enumerable = false) => {\n helperMockService.definePropertyDescriptor(instance, property, {\n configurable: true,\n enumerable,\n value,\n writable: true,\n });\n};\n","import * as module from '@angular/forms';\n\nconst AbstractControl = module.AbstractControl;\nconst DefaultValueAccessor = module.DefaultValueAccessor;\nconst FormControl = module.FormControl;\nconst FormControlDirective = module.FormControlDirective;\nconst NG_ASYNC_VALIDATORS = module.NG_ASYNC_VALIDATORS;\nconst NG_VALIDATORS = module.NG_VALIDATORS;\nconst NG_VALUE_ACCESSOR = module.NG_VALUE_ACCESSOR;\nconst NgControl = module.NgControl;\nconst NgModel = module.NgModel;\n\nexport default {\n AbstractControl,\n DefaultValueAccessor,\n FormControl,\n FormControlDirective,\n NG_ASYNC_VALIDATORS,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n NgModel,\n};\n","import { InjectionToken } from '@angular/core';\nimport { getTestBed } from '@angular/core/testing';\n\nimport coreDefineProperty from './core.define-property';\nimport coreReflectParametersResolve from './core.reflect.parameters-resolve';\nimport { AnyType, Type } from './core.types';\nimport funcGetGlobal from './func.get-global';\nimport funcGetName from './func.get-name';\n\n/**\n * It will be removed from public interface with the next release: A14\n *\n * @deprecated\n * @internal\n */\nexport const getTestBedInjection = <I>(token: AnyType<I> | InjectionToken<I>): I | undefined => {\n const testBed: any = getTestBed();\n try {\n // istanbul ignore next\n return testBed.inject ? testBed.inject(token) : testBed.get(token);\n } catch {\n return undefined;\n }\n};\n\n/**\n * It will be removed from public interface with the next release: A14\n *\n * @deprecated\n * @internal\n */\nexport const getInjection = <I>(token: Type<I> | InjectionToken<I>): I => {\n const testBed: any = getTestBed();\n\n // istanbul ignore next\n return testBed.inject ? testBed.inject(token) : testBed.get(token);\n};\n\nexport const flatten = <T>(values: T | T[], result: T[] = []): T[] => {\n if (Array.isArray(values)) {\n for (const value of values) {\n flatten(value, result);\n }\n } else {\n result.push(values);\n }\n\n return result;\n};\n\nexport const mapKeys = <T>(set: Map<T, any>): T[] => {\n const result: T[] = [];\n // eslint-disable-next-line unicorn/no-array-for-each\n set.forEach((_, value: T) => result.push(value));\n\n return result;\n};\n\nexport const mapValues = <T>(set: { forEach(a1: (value: T) => void): void }, destination?: Set<T>): T[] => {\n const result: T[] = [];\n if (destination) {\n // eslint-disable-next-line unicorn/no-array-for-each\n set.forEach((value: T) => {\n destination.add(value);\n });\n } else {\n // eslint-disable-next-line unicorn/no-array-for-each\n set.forEach((value: T) => {\n result.push(value);\n });\n }\n\n return result;\n};\n\nexport const mapEntries = <K, T>(set: Map<K, T>, destination?: Map<K, T>): Array<[K, T]> => {\n const result: Array<[K, T]> = [];\n\n if (destination) {\n // eslint-disable-next-line unicorn/no-array-for-each\n set.forEach((value: T, key: K) => destination.set(key, value));\n } else {\n // eslint-disable-next-line unicorn/no-array-for-each\n set.forEach((value: T, key: K) => result.push([key, value]));\n }\n\n return result;\n};\n\nconst extractDependencyArray = (deps: any[], set: Set<any>): void => {\n for (const flag of deps) {\n const name = flag && typeof flag === 'object' ? flag.ngMetadataName : undefined;\n if (name === 'Optional' || name === 'SkipSelf' || name === 'Self') {\n continue;\n }\n set.add(flag);\n }\n};\n\n// Accepts an array of dependencies from providers, skips injections flags,\n// and adds the providers to the set.\nexport const extractDependency = (deps: any[], set?: Set<any>): void => {\n if (!set) {\n return;\n }\n for (const dep of deps) {\n if (!Array.isArray(dep)) {\n set.add(dep);\n continue;\n }\n extractDependencyArray(dep, set);\n }\n};\n\nconst extendClassicClass = <I extends object>(base: AnyType<I>): Type<I> => {\n let child: any;\n const glb = funcGetGlobal();\n\n // First we try to eval es2015 style and if it fails to use es5 transpilation in the catch block.\n // The next step is to respect constructor parameters as the parent class via jitReflector.\n glb.ngMocksParent = base;\n // istanbul ignore next\n try {\n eval(`\n var glb = typeof window === 'undefined' ? global : window;\n class MockMiddleware extends glb.ngMocksParent {}\n glb.ngMocksResult = MockMiddleware\n `);\n child = glb.ngMocksResult;\n } catch {\n class MockMiddleware extends glb.ngMocksParent {}\n child = MockMiddleware;\n }\n glb.ngMocksParent = undefined;\n\n return child;\n};\n\nexport const extendClass = <I extends object>(base: AnyType<I>): Type<I> => {\n const child: Type<I> = extendClassicClass(base);\n coreDefineProperty(child, 'name', `MockMiddleware${funcGetName(base)}`, true);\n\n const parameters = coreReflectParametersResolve(base);\n if (parameters.length > 0) {\n coreDefineProperty(child, 'parameters', [...parameters]);\n }\n\n return child;\n};\n","import { Injector } from '@angular/core';\n\nimport { getTestBedInjection } from './core.helpers';\n\nconst defaultInjector: any = {};\n\nexport default (declaration: any, injector: Injector = defaultInjector): any => {\n if (injector === defaultInjector) {\n return getTestBedInjection(declaration);\n }\n try {\n return injector.get(declaration);\n } catch {\n return undefined;\n }\n};\n","import errorEmptyDef from './error.empty-def';\nimport errorJestMock from './error.jest-mock';\nimport errorMissingDecorators from './error.missing-decorators';\n\nexport default (callback: any) => (def: any) => {\n errorEmptyDef(def);\n\n try {\n return callback(def);\n } catch {\n errorJestMock(def);\n errorMissingDecorators(def);\n }\n};\n","import { Component, Directive } from '@angular/core';\n\nimport collectDeclarations from '../resolve/collect-declarations';\n\nimport coreReflectBodyCatch from './core.reflect.body-catch';\n\nexport default (def: any): Directive & Partial<Component> =>\n coreReflectBodyCatch((arg: any) => {\n const declaration = collectDeclarations(arg);\n if (declaration.Component) {\n return declaration.Component;\n }\n if (declaration.Directive) {\n return declaration.Directive;\n }\n\n throw new Error('Cannot resolve declarations');\n })(def);\n","import coreReflectDirectiveResolve from './core.reflect.directive-resolve';\nimport coreReflectModuleResolve from './core.reflect.module-resolve';\nimport { isNgDef } from './func.is-ng-def';\n\nexport default (value: any): any => {\n if (isNgDef(value, 'c')) {\n return coreReflectDirectiveResolve(value);\n }\n if (isNgDef(value, 'd')) {\n return coreReflectDirectiveResolve(value);\n }\n if (isNgDef(value, 'm')) {\n return coreReflectModuleResolve(value);\n }\n\n return undefined;\n};\n","import { NgModule } from '@angular/core';\n\nimport collectDeclarations from '../resolve/collect-declarations';\n\nimport coreReflectBodyCatch from './core.reflect.body-catch';\n\nexport default (def: any): NgModule =>\n coreReflectBodyCatch((arg: any) => {\n const declaration = collectDeclarations(arg);\n if (declaration.NgModule) {\n return declaration.NgModule;\n }\n\n throw new Error('Cannot resolve declarations');\n })(def);\n","import collectDeclarations from '../resolve/collect-declarations';\n\nexport default (def: any): any[] => {\n const declaration = collectDeclarations(def);\n\n return declaration.parameters ?? [];\n};\n","import { Pipe } from '@angular/core';\n\nimport collectDeclarations from '../resolve/collect-declarations';\n\nimport coreReflectBodyCatch from './core.reflect.body-catch';\n\nexport default (def: any): Pipe =>\n coreReflectBodyCatch((arg: any) => {\n const declaration = collectDeclarations(arg);\n if (declaration.Pipe) {\n return declaration.Pipe;\n }\n\n throw new Error('Cannot resolve declarations');\n })(def);\n","import { AnyType } from './core.types';\n\nexport default (declaration: any): undefined | AnyType<any> | string => {\n return declaration?.ɵprov?.providedIn ?? declaration?.ngInjectableDef?.providedIn;\n};\n","import { InjectionToken } from '@angular/core';\nimport { MetadataOverride } from '@angular/core/testing';\n\nimport { AnyType } from './core.types';\n\n/**\n * NG_MOCKS token is a map from a declaration to its mock copy.\n *\n * @internal\n *\n * ```ts\n * const MockClass = TestBed.inject(NG_MOCKS).get(RealClass);\n * ```\n */\nexport const NG_MOCKS = new InjectionToken<Map<any, any>>('NG_MOCKS');\n\n/**\n * NG_MOCKS_TOUCHES token is a set of all touched declarations during mock process.\n *\n * @internal\n *\n * ```ts\n * const touched = TestBed.inject(NG_MOCKS_TOUCHES).has(RealClass);\n * ```\n */\nexport const NG_MOCKS_TOUCHES = new InjectionToken<Set<any>>('NG_MOCKS_TOUCHES');\n\n/**\n * NG_MOCKS_OVERRIDES token contains overrides for:\n * - TestBed.overrideModule\n * - TestBed.overrideComponent\n * - TestBed.overrideDirective\n * - TestBed.overrideProvider\n *\n * It is used when there is no way to provide a mock copy and an override is required.\n * For example, if we want to keep a component, but to override one of its local providers.\n *\n * @internal\n */\nexport const NG_MOCKS_OVERRIDES = new InjectionToken<Map<AnyType<any>, MetadataOverride<any>>>('NG_MOCKS_OVERRIDES');\n\n/**\n * NG_MOCKS_GUARDS token influences on provided guards in MockBuilder.\n * More info by the links below.\n *\n * @see https://ng-mocks.sudo.eu/api/MockBuilder#ng_mocks_guards-token\n * @see https://ng-mocks.sudo.eu/guides/routing-guard\n */\nexport const NG_MOCKS_GUARDS = new InjectionToken<void>('NG_MOCKS_GUARDS');\n\n/**\n * NG_MOCKS_INTERCEPTORS token influences on provided interceptors in MockBuilder.\n * More info by the links below.\n *\n * @see https://ng-mocks.sudo.eu/api/MockBuilder#ng_mocks_interceptors-token\n * @see https://ng-mocks.sudo.eu/guides/http-interceptor\n */\nexport const NG_MOCKS_INTERCEPTORS = new InjectionToken<void>('NG_MOCKS_INTERCEPTORS');\n\n/**\n * NG_MOCKS_ROOT_PROVIDERS token influences on root providers in MockBuilder,\n * which aren't provided in specified modules.\n * It helps to mock or keep them automatically.\n *\n * @see https://ng-mocks.sudo.eu/api/MockBuilder#ng_mocks_root_providers-token\n */\nexport const NG_MOCKS_ROOT_PROVIDERS = new InjectionToken<void>('NG_MOCKS_ROOT_PROVIDERS');\n","import { Input } from '@angular/core';\n\nimport { AnyType } from './core.types';\n\n// Looks like an A9 bug, that queries from @Component are not processed.\n// Also we have to pass prototype, not the class.\n// The same issue happens with outputs, but time to time\n// (when I restart tests with refreshing browser manually).\n// https://github.com/ike18t/ng-mocks/issues/109\nexport default (cls: AnyType<any>, inputs?: string[], exclude?: string[]) => {\n // istanbul ignore else\n if (inputs) {\n for (const input of inputs) {\n const [key, alias] = input.split(': ');\n if (exclude && exclude.indexOf(key) !== -1) {\n continue;\n }\n Input(alias)(cls.prototype, key);\n }\n }\n};\n","import coreDefineProperty from './core.define-property';\nimport { AnyType } from './core.types';\nimport funcGetName from './func.get-name';\nimport { ngMocksMockConfig } from './mock';\nimport ngMocksUniverse from './ng-mocks-universe';\n\nexport default (mock: AnyType<any>, source: AnyType<any>, configInput: ngMocksMockConfig = {}): void => {\n coreDefineProperty(mock, 'mockOf', source);\n coreDefineProperty(mock, 'nameConstructor', funcGetName(mock));\n coreDefineProperty(mock, 'name', `MockOf${funcGetName(source)}`, true);\n const config = ngMocksUniverse.getConfigMock().has(source)\n ? {\n ...configInput,\n config: {\n ...ngMocksUniverse.getConfigMock().get(source),\n ...configInput.config,\n },\n }\n : configInput;\n coreDefineProperty(mock.prototype, '__ngMocksConfig', config);\n};\n","import { Output } from '@angular/core';\n\nimport { AnyType } from './core.types';\n\n// Looks like an A9 bug, that queries from @Component are not processed.\n// Also we have to pass prototype, not the class.\n// The same issue happens with outputs, but time to time\n// (when I restart tests with refreshing browser manually).\n// https://github.com/ike18t/ng-mocks/issues/109\nexport default (cls: AnyType<any>, outputs?: string[]) => {\n // istanbul ignore else\n if (outputs) {\n for (const output of outputs) {\n const [key, alias] = output.split(': ');\n Output(alias)(cls.prototype, key);\n }\n }\n};\n","import { ContentChild, ContentChildren, Query, ViewChild, ViewChildren, ViewContainerRef } from '@angular/core';\n\nimport { AnyType } from './core.types';\n\nconst map: any = {\n ContentChild,\n ContentChildren,\n ViewChild,\n ViewChildren,\n};\n\nconst isInternalKey = (key: string): boolean => {\n return key.indexOf('__mock') === 0;\n};\n\nconst cloneVcrQuery = (query: Query & { ngMetadataName?: string }) => ({\n ...query,\n ngMetadataName: query.ngMetadataName,\n read: ViewContainerRef,\n});\n\nconst generateFinalQueries = (queries: {\n [key: string]: Query;\n}): [Array<[string, Query & { ngMetadataName?: string }]>, string[]] => {\n const final: Array<[string, Query & { ngMetadataName?: string }]> = [];\n const scanKeys: string[] = [];\n\n for (const key of Object.keys(queries)) {\n const query: Query & { ngMetadataName?: string } = queries[key];\n final.push([key, query]);\n\n if (!query.isViewQuery && !isInternalKey(key)) {\n scanKeys.push(key);\n final.push([`__ngMocksVcr_${key}`, cloneVcrQuery(query)]);\n }\n }\n\n return [final, scanKeys];\n};\n\n// Looks like an A9 bug, that queries from @Component are not processed.\n// Also, we have to pass prototype, not the class.\n// The same issue happens with outputs, but time to time\n// (when I restart tests with refreshing browser manually).\n// https://github.com/ike18t/ng-mocks/issues/109\nexport default (cls: AnyType<any>, queries?: { [key: string]: Query }): string[] => {\n // istanbul ignore if\n if (!queries) {\n return [];\n }\n const [final, keys] = generateFinalQueries(queries);\n\n for (const [key, query] of final) {\n // istanbul ignore else\n if (query.ngMetadataName) {\n const decorator = map[query.ngMetadataName];\n decorator(query.selector, query)(cls.prototype, key);\n }\n }\n\n return keys;\n};\n","export default (def: any): void => {\n if (!def) {\n throw new Error(\n [\n 'undefined / null has been passed into ng-mocks as a declaration / provider.',\n 'Please ensure that the current test file has correct imports:',\n 'imported files exist and imported declarations have been exported in the file.',\n ].join(' '),\n );\n }\n};\n","import funcGetName from './func.get-name';\nimport funcIsJestMock from './func.is-jest-mock';\n\nexport default (def: any): void => {\n if (funcIsJestMock(def)) {\n throw new Error(\n [\n `ng-mocks got ${funcGetName(def)} which has been already mocked by jest.mock().`,\n 'It is not possible to produce correct mocks for it, because jest.mock() removes Angular decorators.',\n `To fix this, please avoid jest.mock() on the file which exports ${funcGetName(\n def,\n )} or add jest.dontMock() on it.`,\n 'The same should be done for all related dependencies.',\n ].join(' '),\n );\n }\n};\n","import funcGetName from './func.get-name';\n\nexport default (def: any): void => {\n throw new Error(\n [\n `${funcGetName(def)} declaration has been passed into ng-mocks without Angular decorators.`,\n 'Therefore, it cannot be properly handled.',\n 'Highly likely,',\n typeof jest === 'undefined' ? '' : /* istanbul ignore next */ 'jest.mock() has been used on its file, or',\n 'ng-mocks is imported in production code, or got a class without Angular decoration.',\n 'Otherwise, please create an issue on github: https://github.com/ike18t/ng-mocks/issues/new?title=False%20positive%20ng-mocks%20not%20in%20JIT.',\n 'Thank you in advance for support.',\n ].join(' '),\n );\n};\n","// istanbul ignore next\nexport default (): Record<keyof any, any> => (typeof window === 'undefined' ? global : window);\n","import { MockedComponent } from '../mock-component/types';\nimport { MockedDirective } from '../mock-directive/types';\nimport { MockedModule } from '../mock-module/types';\nimport { MockedPipe } from '../mock-pipe/types';\n\nimport coreInjector from './core.injector';\nimport { NG_MOCKS } from './core.tokens';\nimport { AnyType, Type } from './core.types';\nimport funcGetName from './func.get-name';\nimport { isMockedNgDefOf } from './func.is-mocked-ng-def-of';\nimport ngMocksUniverse from './ng-mocks-universe';\n\nconst getMock = (declaration: any, source: any, mocks?: Map<any, any>) => {\n if (mocks && !mocks.has(source)) {\n throw new Error(`There is no mock for ${funcGetName(source)}`);\n }\n let mock = mocks ? mocks.get(source) : undefined;\n if (mock === source) {\n mock = undefined;\n }\n\n // If we are not in the MockBuilder env we can rely on the current cache.\n if (!mock && source !== declaration) {\n mock = declaration;\n } else if (!mock && ngMocksUniverse.cacheDeclarations.has(source)) {\n mock = ngMocksUniverse.cacheDeclarations.get(source);\n }\n\n return mock;\n};\n\n/**\n * Returns the mock class of a mock module based on a mock module or a source module.\n * It works in runtime if the module has been mocked.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getMockedNgDefOf\n *\n * ```ts\n * getMockedNgDefOf(RealModule, 'm'); // returns MockModule\n * getMockedNgDefOf(MockModule, 'm'); // returns MockModule\n * getMockedNgDefOf(ArbitraryClass, 'm'); // throws\n * ```\n */\nexport function getMockedNgDefOf<T>(declaration: AnyType<T>, type: 'm'): Type<MockedModule<T>>;\n\n/**\n * Returns the mock class of a mock component based on a mock component or a source component.\n * It works in runtime if the component has been mocked.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getMockedNgDefOf\n *\n * ```ts\n * getMockedNgDefOf(RealComponent, 'c'); // returns MockComponent\n * getMockedNgDefOf(MockComponent, 'c'); // returns MockComponent\n * getMockedNgDefOf(ArbitraryClass, 'c'); // throws\n * ```\n */\nexport function getMockedNgDefOf<T>(declaration: AnyType<T>, type: 'c'): Type<MockedComponent<T>>;\n\n/**\n * Returns the mock class of a mock directive based on a mock directive or a source directive.\n * It works in runtime if the directive has been mocked.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getMockedNgDefOf\n *\n * ```ts\n * getMockedNgDefOf(RealDirective, 'd'); // returns MockDirective\n * getMockedNgDefOf(MockDirective, 'd'); // returns MockDirective\n * getMockedNgDefOf(ArbitraryClass, 'd'); // throws\n * ```\n */\nexport function getMockedNgDefOf<T>(declaration: AnyType<T>, type: 'd'): Type<MockedDirective<T>>;\n\n/**\n * Returns the mock class of a mock pipe based on a mock pipe or a source pipe.\n * It works in runtime if the pipe has been mocked.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getMockedNgDefOf\n *\n * ```ts\n * getMockedNgDefOf(RealPipe, 'p'); // returns MockPipe\n * getMockedNgDefOf(MockPipe, 'p'); // returns MockPipe\n * getMockedNgDefOf(ArbitraryClass, 'p'); // throws\n * ```\n */\nexport function getMockedNgDefOf<T>(declaration: AnyType<T>, type: 'p'): Type<MockedPipe<T>>;\n\n/**\n * Returns the mock class of a thing based on a mock class or a source class.\n * It works in runtime if the thing has been mocked.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getMockedNgDefOf\n *\n * ```ts\n * getMockedNgDefOf(RealComponent); // returns MockComponent\n * getMockedNgDefOf(MockPipe); // returns MockPipe\n * getMockedNgDefOf(ArbitraryClass); // throws\n * ```\n */\nexport function getMockedNgDefOf<T>(declaration: AnyType<T>): Type<T>;\n\nexport function getMockedNgDefOf(declaration: any, type?: any): any {\n const source = declaration.mockOf ? declaration.mockOf : declaration;\n const mocks = coreInjector(NG_MOCKS);\n\n const mock = getMock(declaration, source, mocks);\n if (mock && !type) {\n return mock;\n }\n if (mock && type && isMockedNgDefOf(mock, source, type)) {\n return mock;\n }\n\n throw new Error(`There is no mock for ${funcGetName(source)}`);\n}\n","export default (value: any): string => {\n if (typeof value === 'function' && value.name) {\n return value.name;\n }\n if (typeof value === 'function') {\n return 'arrow-function';\n }\n if (typeof value === 'object' && value && value.ngMetadataName === 'InjectionToken') {\n return value._desc;\n }\n if (typeof value === 'object' && value && typeof value.constructor === 'function') {\n return value.constructor.name;\n }\n\n return 'unknown';\n};\n","export default (provider: any): any => {\n return provider && typeof provider === 'object' && provider.provide ? provider.provide : provider;\n};\n","import { MockedComponent } from '../mock-component/types';\nimport { MockedDirective } from '../mock-directive/types';\nimport { MockedModule } from '../mock-module/types';\nimport { MockedPipe } from '../mock-pipe/types';\n\nimport { AnyType, Type } from './core.types';\n\n/**\n * Returns the original class of a mock module class.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getSourceOfMock\n *\n * ```ts\n * getSourceOfMock(MockModule); // returns RealModule\n * getSourceOfMock(RealModule); // returns RealModule\n * ```\n */\nexport function getSourceOfMock<T>(declaration: AnyType<MockedModule<T>>): Type<T>;\n\n/**\n * Returns the original class of a mock component class.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getSourceOfMock\n *\n * ```ts\n * getSourceOfMock(MockComponent); // returns RealComponent\n * getSourceOfMock(RealComponent); // returns RealComponent\n * ```\n */\nexport function getSourceOfMock<T>(declaration: AnyType<MockedComponent<T>>): Type<T>;\n\n/**\n * Returns the original class of a mock directive class.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getSourceOfMock\n *\n * ```ts\n * getSourceOfMock(MockDirective); // returns RealDirective\n * getSourceOfMock(RealDirective); // returns RealDirective\n * ```\n */\nexport function getSourceOfMock<T>(declaration: AnyType<MockedDirective<T>>): Type<T>;\n\n/**\n * Returns the original class of a mock pipe class.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getSourceOfMock\n *\n * ```ts\n * getSourceOfMock(MockPipe); // returns RealPipe\n * getSourceOfMock(RealPipe); // returns RealPipe\n * ```\n */\nexport function getSourceOfMock<T>(declaration: AnyType<MockedPipe<T>>): Type<T>;\n\n/**\n * Returns the original class of a mock class.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/getSourceOfMock\n *\n * ```ts\n * getSourceOfMock(MockClass); // returns RealClass\n * getSourceOfMock(RealClass); // returns RealClass\n * ```\n */\nexport function getSourceOfMock<T>(declaration: AnyType<T>): Type<T>;\n\nexport function getSourceOfMock<T>(declaration: any): Type<T> {\n return typeof declaration === 'function' && declaration.mockOf ? declaration.mockOf : declaration;\n}\n","import funcGetName from './func.get-name';\nimport { isNgDef } from './func.is-ng-def';\n\nconst getType = (value: any): string =>\n isNgDef(value, 'p')\n ? 'pipe'\n : isNgDef(value, 'd')\n ? 'directive'\n : isNgDef(value, 'c')\n ? 'component'\n : isNgDef(value, 'm')\n ? 'module'\n : isNgDef(value, 'i')\n ? 'service'\n : isNgDef(value, 't')\n ? 'token'\n : '';\n\nexport default (value: any, funcName: string) => {\n if (value === undefined || value === null) {\n throw new Error(`null / undefined has been passed into ${funcName}. Please check that its import is correct.`);\n }\n\n if (funcName === 'MockPipe' && isNgDef(value, 'p')) {\n return;\n }\n if (funcName === 'MockDirective' && isNgDef(value, 'd')) {\n return;\n }\n if (funcName === 'MockComponent' && isNgDef(value, 'c')) {\n return;\n }\n if (funcName === 'MockModule' && isNgDef(value, 'm')) {\n return;\n }\n\n const type = getType(value);\n\n if (type && funcName === 'MockPipe') {\n throw new Error(`${funcName} accepts pipes, whereas ${funcGetName(value)} is a ${type}.`);\n }\n if (type && funcName === 'MockDirective') {\n throw new Error(`${funcName} accepts directives, whereas ${funcGetName(value)} is a ${type}.`);\n }\n if (type && funcName === 'MockComponent') {\n throw new Error(`${funcName} accepts components, whereas ${funcGetName(value)} is a ${type}.`);\n }\n if (type && funcName === 'MockModule') {\n throw new Error(`${funcName} accepts modules, whereas ${funcGetName(value)} is a ${type}.`);\n }\n};\n","export default (def: any): boolean => {\n if (!def) {\n return false;\n }\n\n if (typeof def !== 'function' && typeof def !== 'object') {\n return false;\n }\n\n if (def._isMockFunction && def.mockName && def.__annotations__) {\n return true;\n }\n\n return false;\n};\n","import funcIsMock from './func.is-mock';\nimport { MockControlValueAccessor } from './mock-control-value-accessor';\n\n/**\n * isMockControlValueAccessor helps to assert that an instance is a mock ControlValueAccessor\n * to perform valueChange or touch simulations.\n * Usually, it is used in if statements.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockControlValueAccessor\n * @see https://ng-mocks.sudo.eu/api/ngMocks/change\n * @see https://ng-mocks.sudo.eu/api/ngMocks/touch\n */\nexport const isMockControlValueAccessor = <T>(value: T): value is T & MockControlValueAccessor => {\n if (!funcIsMock(value)) {\n return false;\n }\n\n return !!value.__ngMocksConfig.isControlValueAccessor;\n};\n","import { MockedComponent } from '../mock-component/types';\nimport { MockedDirective } from '../mock-directive/types';\nimport { MockedModule } from '../mock-module/types';\nimport { MockedPipe } from '../mock-pipe/types';\n\nimport { Type } from './core.types';\nimport { isNgDef } from './func.is-ng-def';\n\n/**\n * isMockNgDef verifies whether a class is a mock component class.\n *\n * @internal\n *\n * ```ts\n * isMockNgDef(MockComponent, 'c'); // returns true\n * isMockNgDef(RealComponent, 'c'); // returns false\n * isMockNgDef(ArbitraryClass, 'c'); // returns false\n * ```\n */\nexport function isMockNgDef<T>(component: Type<T>, ngType: 'c'): component is Type<MockedComponent<T>>;\n\n/**\n * isMockNgDef verifies whether a class is a mock directive class.\n *\n * @internal\n *\n * ```ts\n * isMockNgDef(MockDirective, 'd'); // returns true\n * isMockNgDef(RealDirective, 'd'); // returns false\n * isMockNgDef(ArbitraryClass, 'd'); // returns false\n * ```\n */\nexport function isMockNgDef<T>(directive: Type<T>, ngType: 'd'): directive is Type<MockedDirective<T>>;\n\n/**\n * isMockNgDef verifies whether a class is a mock pipe class.\n *\n * @internal\n *\n * ```ts\n * isMockNgDef(MockPipe, 'p'); // returns true\n * isMockNgDef(RealPipe, 'p'); // returns false\n * isMockNgDef(ArbitraryClass, 'p'); // returns false\n * ```\n */\nexport function isMockNgDef<T>(pipe: Type<T>, ngType: 'p'): pipe is Type<MockedPipe<T>>;\n\n/**\n * isMockNgDef verifies whether a class is a mock module class.\n *\n * @internal\n *\n * ```ts\n * isMockNgDef(MockModule, 'm'); // returns true\n * isMockNgDef(RealModule, 'm'); // returns false\n * isMockNgDef(ArbitraryClass, 'm'); // returns false\n * ```\n */\nexport function isMockNgDef<T>(module: Type<T>, ngType: 'm'): module is Type<MockedModule<T>>;\n\n/**\n * isMockNgDef verifies whether a class is a mock class.\n *\n * @internal\n *\n * ```ts\n * isMockNgDef(MockComponent); // returns true\n * isMockNgDef(RealModule); // returns false\n * isMockNgDef(ArbitraryClass); // returns false\n * ```\n */\nexport function isMockNgDef<T>(module: Type<T>): module is Type<T>;\n\nexport function isMockNgDef<TComponent>(\n component: Type<TComponent> & { mockOf?: any },\n type?: 'c' | 'd' | 'p' | 'm',\n): component is Type<TComponent> {\n if (!(component as any).mockOf) {\n return false;\n }\n if (!type) {\n return true;\n }\n\n return isNgDef(component.mockOf, type as never);\n}\n","import { PipeTransform } from '@angular/core';\n\nimport { MockedComponent } from '../mock-component/types';\nimport { MockedDirective } from '../mock-directive/types';\nimport { MockedModule } from '../mock-module/types';\nimport { MockedPipe } from '../mock-pipe/types';\n\nimport { Type } from './core.types';\nimport funcIsMock from './func.is-mock';\nimport { isNgDef } from './func.is-ng-def';\n\n/**\n * Checks whether the instance derives from a mock module.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockOf\n *\n * ```ts\n * isMockOf(moduleInstance, RealModule, 'm'); // returns true\n * isMockOf(moduleInstance, ArbitraryClass, 'm'); // returns false\n * ```\n */\nexport function isMockOf<T>(instance: any, declaration: Type<T>, ngType: 'm'): instance is MockedModule<T>;\n\n/**\n * Checks whether the instance derives from a mock component.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockOf\n *\n * ```ts\n * isMockOf(componentInstance, RealComponent, 'c'); // returns true\n * isMockOf(componentInstance, ArbitraryClass, 'c'); // returns false\n * ```\n */\nexport function isMockOf<T>(instance: any, declaration: Type<T>, ngType: 'c'): instance is MockedComponent<T>;\n\n/**\n * Checks whether the instance derives from a mock directive.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockOf\n *\n * ```ts\n * isMockOf(directiveInstance, RealDirective, 'd'); // returns true\n * isMockOf(directiveInstance, ArbitraryClass, 'd'); // returns false\n * ```\n */\nexport function isMockOf<T>(instance: any, declaration: Type<T>, ngType: 'd'): instance is MockedDirective<T>;\n\n/**\n * Checks whether the instance derives from a mock pipe.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockOf\n *\n * ```ts\n * isMockOf(pipeInstance, RealPipe, 'p'); // returns true\n * isMockOf(pipeInstance, ArbitraryClass, 'p'); // returns false\n * ```\n */\nexport function isMockOf<T extends PipeTransform>(\n instance: any,\n declaration: Type<T>,\n ngType: 'p',\n): instance is MockedPipe<T>;\n\n/**\n * Checks whether the instance derives from a mock type.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockOf\n *\n * ```ts\n * isMockOf(componentInstance, RealComponent); // returns true\n * isMockOf(pipeInstance, RealPipe); // returns true\n * isMockOf(pipeInstance, ArbitraryClass); // returns false\n * ```\n */\nexport function isMockOf<T>(instance: any, declaration: Type<T>): instance is T;\n\nexport function isMockOf<T>(instance: any, declaration: Type<T>, ngType?: any): instance is T {\n return (\n funcIsMock(instance) &&\n instance.constructor === declaration &&\n (ngType ? isNgDef(instance.constructor, ngType) : isNgDef(instance.constructor))\n );\n}\n","import funcIsMock from './func.is-mock';\nimport { MockValidator } from './mock-control-value-accessor';\n\n/**\n * isMockValidator helps to assert that an instance is a mock Validator\n * to perform validationChange simulations.\n * Usually, it is used in if statements.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockValidator\n */\nexport const isMockValidator = <T>(value: T): value is T & MockValidator => {\n if (!funcIsMock(value)) {\n return false;\n }\n\n return !!(value as any).__ngMocksConfig.isValidator;\n};\n","import { Injector, TemplateRef, ViewContainerRef } from '@angular/core';\n\nimport { MockConfig } from './mock';\n\nexport default <T>(\n value: T,\n): value is T &\n MockConfig & {\n __ngMocksInjector?: Injector;\n __template?: TemplateRef<any>;\n __vcr?: ViewContainerRef;\n } => {\n return value && typeof value === 'object' && !!(value as any).__ngMocksConfig;\n};\n","import { PipeTransform } from '@angular/core';\n\nimport { MockedComponent } from '../mock-component/types';\nimport { MockedDirective } from '../mock-directive/types';\nimport { MockedModule } from '../mock-module/types';\nimport { MockedPipe } from '../mock-pipe/types';\n\nimport { Type } from './core.types';\nimport { isNgDef } from './func.is-ng-def';\n\n/**\n * Checks whether a declaration is the mock class of a module.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockedNgDefOf\n *\n * ```ts\n * isMockedNgDefOf(MockModule, RealModule, 'm'); // returns true\n * isMockedNgDefOf(MockModule, ArbitraryModule, 'm'); // returns false\n * isMockedNgDefOf(MockModule, ArbitraryClass, 'm'); // returns false\n * ```\n */\nexport function isMockedNgDefOf<T>(declaration: any, type: Type<T>, ngType: 'm'): declaration is Type<MockedModule<T>>;\n\n/**\n * Checks whether a declaration is the mock class of a component.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockedNgDefOf\n *\n * ```ts\n * isMockedNgDefOf(MockComponent, RealComponent, 'c'); // returns true\n * isMockedNgDefOf(MockComponent, ArbitraryComponent, 'c'); // returns false\n * isMockedNgDefOf(MockComponent, ArbitraryClass, 'c'); // returns false\n * ```\n */\nexport function isMockedNgDefOf<T>(\n declaration: any,\n type: Type<T>,\n ngType: 'c',\n): declaration is Type<MockedComponent<T>>;\n\n/**\n * Checks whether a declaration is the mock class of a directive.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockedNgDefOf\n *\n * ```ts\n * isMockedNgDefOf(MockDirective, RealDirective, 'd'); // returns true\n * isMockedNgDefOf(MockDirective, ArbitraryDirective, 'd'); // returns false\n * isMockedNgDefOf(MockDirective, ArbitraryClass, 'd'); // returns false\n * ```\n */\nexport function isMockedNgDefOf<T>(\n declaration: any,\n type: Type<T>,\n ngType: 'd',\n): declaration is Type<MockedDirective<T>>;\n\n/**\n * Checks whether a declaration is the mock class of a pipe.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockedNgDefOf\n *\n * ```ts\n * isMockedNgDefOf(MockPipe, RealPipe, 'p'); // returns true\n * isMockedNgDefOf(MockPipe, ArbitraryPipe, 'p'); // returns false\n * isMockedNgDefOf(MockPipe, ArbitraryClass, 'p'); // returns false\n * ```\n */\nexport function isMockedNgDefOf<T extends PipeTransform>(\n declaration: any,\n type: Type<T>,\n ngType: 'p',\n): declaration is Type<MockedPipe<T>>;\n\n/**\n * Checks whether a declaration is the mock class of a thing.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockedNgDefOf\n *\n * ```ts\n * isMockedNgDefOf(MockPipe, RealPipe); // returns true\n * isMockedNgDefOf(MockComponent, ArbitraryComponent); // returns false\n * isMockedNgDefOf(MockPipe, ArbitraryClass); // returns false\n * ```\n */\nexport function isMockedNgDefOf<T>(declaration: any, type: Type<T>): declaration is Type<T>;\n\nexport function isMockedNgDefOf<T>(declaration: any, type: Type<T>, ngType?: any): declaration is Type<T> {\n return (\n typeof declaration === 'function' && declaration.mockOf === type && (ngType ? isNgDef(declaration, ngType) : true)\n );\n}\n","import { InjectionToken, PipeTransform } from '@angular/core';\n\nimport { Type } from './core.types';\nimport { isNgInjectionToken } from './func.is-ng-injection-token';\nimport { isNgType } from './func.is-ng-type';\n\nconst isModuleCheck = (def: any, ngType?: string): boolean => (!ngType || ngType === 'm') && isNgType(def, 'NgModule');\nconst isComponentCheck = (def: any, ngType?: string): boolean =>\n (!ngType || ngType === 'c') && isNgType(def, 'Component');\nconst isDirectiveCheck = (def: any, ngType?: string): boolean =>\n (!ngType || ngType === 'd') && isNgType(def, 'Directive');\nconst isPipeCheck = (def: any, ngType?: string): boolean => (!ngType || ngType === 'p') && isNgType(def, 'Pipe');\nconst isInjectableCheck = (def: any, ngType?: string): boolean =>\n (!ngType || ngType === 'i') && isNgType(def, 'Injectable');\n\n/**\n * Checks whether a class has been decorated by @NgModule.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isNgDef\n *\n * ```ts\n * isNgDef(RealModule, 'm'); // returns true\n * isNgDef(MockModule, 'm'); // returns true\n * isNgDef(ArbitraryModule, 'm'); // returns true\n * isNgDef(ArbitraryClass, 'm'); // returns false\n * ```\n */\nexport function isNgDef(declaration: any, ngType: 'm'): declaration is Type<any>;\n\n/**\n * Checks whether a class has been decorated by @Component.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isNgDef\n *\n * ```ts\n * isNgDef(RealComponent, 'c'); // returns true\n * isNgDef(MockComponent, 'c'); // returns true\n * isNgDef(ArbitraryComponent, 'c'); // returns true\n * isNgDef(ArbitraryClass, 'c'); // returns false\n * ```\n */\nexport function isNgDef(declaration: any, ngType: 'c'): declaration is Type<any>;\n\n/**\n * Checks whether a class has been decorated by @Directive.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isNgDef\n *\n * ```ts\n * isNgDef(RealDirective, 'd'); // returns true\n * isNgDef(MockDirective, 'd'); // returns true\n * isNgDef(ArbitraryDirective, 'd'); // returns true\n * isNgDef(ArbitraryClass, 'd'); // returns false\n * ```\n */\nexport function isNgDef(declaration: any, ngType: 'd'): declaration is Type<any>;\n\n/**\n * Checks whether a class has been decorated by @Pipe.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isNgDef\n *\n * ```ts\n * isNgDef(RealPipe, 'p'); // returns true\n * isNgDef(MockPipe, 'p'); // returns true\n * isNgDef(ArbitraryPipe, 'p'); // returns true\n * isNgDef(ArbitraryClass, 'p'); // returns false\n * ```\n */\nexport function isNgDef(declaration: any, ngType: 'p'): declaration is Type<PipeTransform>;\n\n/**\n * Checks whether a class has been decorated by @Injectable.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isNgDef\n *\n * ```ts\n * isNgDef(RealService, 'i'); // returns true\n * isNgDef(MockService, 'i'); // returns true\n * isNgDef(ArbitraryService, 'i'); // returns true\n * isNgDef(ArbitraryClass, 'i'); // returns false\n * ```\n */\nexport function isNgDef(declaration: any, ngType: 'i'): declaration is Type<any>;\n\n/**\n * Checks whether a variable is a token.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isNgDef\n *\n * ```ts\n * isNgDef(realToken, 't'); // returns true\n * isNgDef(mockToken, 't'); // returns true\n * isNgDef(arbitraryToken, 't'); // returns true\n * isNgDef(arbitraryObject, 't'); // returns false\n * ```\n */\nexport function isNgDef(declaration: any, ngType: 't'): declaration is InjectionToken<any>;\n\n/**\n * Checks whether a class or variable has been decorated by a ng type.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isNgDef\n *\n * ```ts\n * isNgDef(RealModule); // returns true\n * isNgDef(MockComponent); // returns true\n * isNgDef(ArbitraryDirective); // returns true\n * isNgDef(token); // returns true\n * isNgDef(ArbitraryClass); // returns false\n * ```\n */\nexport function isNgDef(declaration: any): declaration is Type<any>;\n\nexport function isNgDef(declaration: any, ngType?: string): declaration is Type<any> {\n if (ngType === 't') {\n return isNgInjectionToken(declaration);\n }\n if (typeof declaration !== 'function') {\n return false;\n }\n\n const isModule = isModuleCheck(declaration, ngType);\n const isComponent = isComponentCheck(declaration, ngType);\n const isDirective = isDirectiveCheck(declaration, ngType);\n const isPipe = isPipeCheck(declaration, ngType);\n const isInjectable = isInjectableCheck(declaration, ngType);\n\n return isModule || isComponent || isDirective || isPipe || isInjectable;\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Checks whether a variable is an Angular token.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isNgInjectionToken\n *\n * ```ts\n * isNgInjectionToken(APP_ID); // returns true\n * isNgInjectionToken(arbitraryVariable); // returns false\n * ```\n */\nexport const isNgInjectionToken = (token: any): token is InjectionToken<any> =>\n token && typeof token === 'object' && token.ngMetadataName === 'InjectionToken';\n","import { Provider } from '@angular/core';\n\nimport { Type } from './core.types';\nimport { isNgDef } from './func.is-ng-def';\n\n/**\n * NgModuleWithProviders helps to support ModuleWithProviders in all angular versions.\n * In A5 it was without the generic type.\n *\n * @internal remove after removal of A5 support\n */\nexport interface NgModuleWithProviders<T = any> {\n ngModule: Type<T>;\n providers?: Provider[];\n}\n\n/**\n * isNgModuleDefWithProviders checks if an object implements ModuleWithProviders.\n *\n * @internal\n */\nexport const isNgModuleDefWithProviders = (declaration: any): declaration is NgModuleWithProviders =>\n declaration &&\n typeof declaration === 'object' &&\n declaration.ngModule !== undefined &&\n isNgDef(declaration.ngModule, 'm');\n","import collectDeclarations from '../resolve/collect-declarations';\n\nimport { AnyType } from './core.types';\n\n/**\n * Checks whether a class has been decorated with a specific Angular decorator.\n *\n * @internal\n *\n * ```ts\n * isNgType(MockModule, 'NgModule'); // returns true\n * isNgType(RealComponent, 'Component'); // returns true\n * isNgType(ArbitraryClass, 'Directive'); // returns false\n * ```\n */\nexport const isNgType = (declaration: AnyType<any>, type: string): boolean => {\n const declarations = collectDeclarations(declaration);\n\n return !!declarations[type];\n};\n","import { AsyncValidator, ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';\n\nimport { AnyType } from './core.types';\nimport { MockControlValueAccessor, MockValidator } from './mock-control-value-accessor';\n\nconst applyProxy = (proxy: any, method: string, value: any, storage?: string) => {\n if (proxy.instance && storage) {\n proxy.instance[storage] = value;\n }\n if (proxy.instance && proxy.instance[method]) {\n return proxy.instance[method](value);\n }\n};\n\nexport class MockControlValueAccessorProxy implements ControlValueAccessor {\n public instance?: Partial<MockControlValueAccessor & ControlValueAccessor>;\n\n public constructor(public readonly target?: AnyType<any>) {}\n\n public registerOnChange(fn: any): void {\n applyProxy(this, 'registerOnChange', fn, '__simulateChange');\n }\n\n public registerOnTouched(fn: any): void {\n applyProxy(this, 'registerOnTouched', fn, '__simulateTouch');\n }\n\n public setDisabledState(isDisabled: boolean): void {\n applyProxy(this, 'setDisabledState', isDisabled);\n }\n\n public writeValue(value: any): void {\n applyProxy(this, 'writeValue', value);\n }\n}\n\nexport class MockValidatorProxy implements Validator {\n public instance?: Partial<MockValidator & Validator>;\n\n public constructor(public readonly target?: AnyType<any>) {}\n\n public registerOnValidatorChange(fn: any): void {\n applyProxy(this, 'registerOnValidatorChange', fn, '__simulateValidatorChange');\n }\n\n public validate(control: any): ValidationErrors | null {\n if (this.instance && this.instance.validate) {\n return this.instance.validate(control);\n }\n\n return null;\n }\n}\n\nexport class MockAsyncValidatorProxy implements AsyncValidator {\n public instance?: Partial<MockValidator & AsyncValidator>;\n\n public constructor(public readonly target?: AnyType<any>) {}\n\n public registerOnValidatorChange(fn: any): void {\n applyProxy(this, 'registerOnValidatorChange', fn, '__simulateValidatorChange');\n }\n\n public validate(control: any): any {\n if (this.instance && this.instance.validate) {\n const result: any = this.instance.validate(control);\n\n return result === undefined ? Promise.resolve(null) : result;\n }\n\n return Promise.resolve(null);\n }\n}\n","import { Mock } from './mock';\n\n/**\n * LegacyControlValueAccessor was used to be a way to manipulate a mock ControlValueAccessor.\n *\n * @deprecated use isMockControlValueAccessor or isMockValidator instead (removing in A13)\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockControlValueAccessor\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockValidator\n */\nexport class LegacyControlValueAccessor extends Mock {\n /**\n * @deprecated use isMockControlValueAccessor instead (removing in A13)\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockControlValueAccessor\n */\n public __simulateChange(value: any): void;\n // istanbul ignore next\n public __simulateChange() {\n // nothing to do.\n }\n\n // istanbul ignore next\n /**\n * @deprecated use isMockControlValueAccessor instead (removing in A13)\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockControlValueAccessor\n */\n public __simulateTouch() {\n // nothing to do.\n }\n\n // istanbul ignore next\n /**\n * @deprecated use isMockValidator instead (removing in A13)\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockValidator\n */\n public __simulateValidatorChange() {\n // nothing to do.\n }\n}\n\n/**\n * MockControlValueAccessor exposes access to a mock ControlValueAccessor.\n * It should be used in a combination with isMockControlValueAccessor.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockControlValueAccessor\n */\nexport interface MockControlValueAccessor {\n /**\n * It simulates an external change of the value.\n * Please consider usage of ngMocks.change().\n *\n * @see https://ng-mocks.sudo.eu/extra/mock-form-controls\n * @see https://ng-mocks.sudo.eu/api/ngMocks/change\n */\n __simulateChange(value: any): void;\n\n /**\n * It simulates an external touch.\n * Please consider usage of ngMocks.touch().\n *\n * @see https://ng-mocks.sudo.eu/extra/mock-form-controls\n * @see https://ng-mocks.sudo.eu/api/ngMocks/touch\n */\n __simulateTouch(): void;\n}\n\n/**\n * MockValidator exposes access to a mock Validator.\n * It should be used in a combination with isMockValidator.\n *\n * @see https://ng-mocks.sudo.eu/api/helpers/isMockValidator\n */\nexport interface MockValidator {\n /**\n * it simulates an external validation change.\n *\n * @see https://ng-mocks.sudo.eu/extra/mock-form-controls\n */\n __simulateValidatorChange(): void;\n}\n","import { EventEmitter, Injector, Optional, Self } from '@angular/core';\n\nimport { IMockBuilderConfig } from '../mock-builder/types';\nimport mockHelperStub from '../mock-helper/mock-helper.stub';\nimport mockInstanceApply from '../mock-instance/mock-instance-apply';\nimport helperMockService from '../mock-service/helper.mock-service';\n\nimport coreDefineProperty from './core.define-property';\nimport coreForm from './core.form';\nimport { mapValues } from './core.helpers';\nimport { AnyType } from './core.types';\nimport funcIsMock from './func.is-mock';\nimport { MockControlValueAccessorProxy } from './mock-control-value-accessor-proxy';\nimport ngMocksUniverse from './ng-mocks-universe';\n\nconst setValueAccessor = (instance: any, ngControl?: any) => {\n if (ngControl && !ngControl.valueAccessor && instance.__ngMocksConfig.setControlValueAccessor) {\n try {\n ngControl.valueAccessor = new MockControlValueAccessorProxy(instance.__ngMocksCtor);\n } catch {\n // nothing to do.\n }\n }\n};\n\n// connecting to NG_VALUE_ACCESSOR\nconst installValueAccessor = (ngControl: any, instance: any) => {\n if (!ngControl.valueAccessor.instance && ngControl.valueAccessor.target === instance.__ngMocksCtor) {\n ngControl.valueAccessor.instance = instance;\n helperMockService.mock(instance, 'registerOnChange');\n helperMockService.mock(instance, 'registerOnTouched');\n helperMockService.mock(instance, 'setDisabledState');\n helperMockService.mock(instance, 'writeValue');\n instance.__ngMocksConfig.isControlValueAccessor = true;\n }\n};\n\n// connecting to NG_VALIDATORS\n// connecting to NG_ASYNC_VALIDATORS\nconst installValidator = (validators: any[], instance: any) => {\n for (const validator of validators) {\n if (!validator.instance && validator.target === instance.__ngMocksCtor) {\n validator.instance = instance;\n helperMockService.mock(instance, 'registerOnValidatorChange');\n helperMockService.mock(instance, 'validate');\n instance.__ngMocksConfig.isValidator = true;\n }\n }\n};\n\nconst applyNgValueAccessor = (instance: any, ngControl: any) => {\n setValueAccessor(instance, ngControl);\n\n try {\n // istanbul ignore else\n if (ngControl) {\n installValueAccessor(ngControl, instance);\n installValidator(ngControl._rawValidators, instance);\n installValidator(ngControl._rawAsyncValidators, instance);\n }\n } catch {\n // nothing to do.\n }\n};\n\nconst applyOutputs = (instance: MockConfig & Record<keyof any, any>) => {\n const mockOutputs = [];\n for (const output of instance.__ngMocksConfig.outputs || []) {\n mockOutputs.push(output.split(':')[0]);\n }\n\n for (const output of mockOutputs) {\n if (instance[output] || Object.getOwnPropertyDescriptor(instance, output)) {\n continue;\n }\n instance[output] = new EventEmitter<any>();\n }\n};\n\nconst applyPrototype = (instance: Mock, prototype: AnyType<any>) => {\n for (const prop of [\n ...helperMockService.extractMethodsFromPrototype(prototype),\n ...helperMockService.extractPropertiesFromPrototype(prototype),\n ]) {\n const descriptor = helperMockService.extractPropertyDescriptor(prototype, prop);\n helperMockService.definePropertyDescriptor(instance, prop, descriptor);\n }\n};\n\nconst applyMethods = (instance: Mock & Record<keyof any, any>, prototype: AnyType<any>) => {\n for (const method of helperMockService.extractMethodsFromPrototype(prototype)) {\n if (instance[method] || Object.getOwnPropertyDescriptor(instance, method)) {\n continue;\n }\n helperMockService.mock(instance, method);\n }\n};\n\nconst applyProps = (instance: Mock & Record<keyof any, any>, prototype: AnyType<any>) => {\n for (const prop of helperMockService.extractPropertiesFromPrototype(prototype)) {\n if (instance[prop] || Object.getOwnPropertyDescriptor(instance, prop)) {\n continue;\n }\n helperMockService.mock(instance, prop, 'get');\n helperMockService.mock(instance, prop, 'set');\n }\n};\n\nexport type ngMocksMockConfig = {\n config?: IMockBuilderConfig;\n hostBindings?: string[];\n hostListeners?: string[];\n init?: (instance: any) => void;\n isControlValueAccessor?: boolean;\n isValidator?: boolean;\n outputs?: string[];\n queryScanKeys?: string[];\n setControlValueAccessor?: boolean;\n};\n\nconst applyOverrides = (instance: any, mockOf: any, injector?: Injector): void => {\n const configGlobal: Set<any> | undefined = ngMocksUniverse.getOverrides().get(mockOf);\n const callbacks = configGlobal ? mapValues(configGlobal) : [];\n if (instance.__ngMocksConfig.init) {\n callbacks.push(instance.__ngMocksConfig.init);\n }\n callbacks.push(...mockInstanceApply(mockOf));\n\n for (const callback of callbacks) {\n const overrides = callback(instance, injector);\n if (!overrides) {\n continue;\n }\n mockHelperStub(instance, overrides);\n }\n};\n\nexport interface MockConfig {\n __ngMocksConfig: ngMocksMockConfig;\n}\n\n/**\n * Mock class is the base class for each mock.\n * Usually, it should not be used directly.\n */\nexport class Mock {\n protected __ngMocksConfig!: ngMocksMockConfig;\n\n public constructor(\n injector: Injector | null = null,\n ngControl: any | null = null, // NgControl\n ) {\n const mockOf = (this.constructor as any).mockOf;\n coreDefineProperty(this, '__ngMocks', true);\n coreDefineProperty(this, '__ngMocksInjector', injector);\n coreDefineProperty(this, '__ngMocksCtor', this.constructor);\n for (const key of this.__ngMocksConfig.queryScanKeys || /* istanbul ignore next */ []) {\n coreDefineProperty(this, `__ngMocksVcr_${key}`, undefined);\n }\n for (const key of this.__ngMocksConfig.hostBindings || /* istanbul ignore next */ []) {\n helperMockService.mock(this, key, 'get');\n helperMockService.mock(this, key, 'set');\n }\n for (const key of this.__ngMocksConfig.hostListeners || /* istanbul ignore next */ []) {\n helperMockService.mock(this, key);\n }\n\n // istanbul ignore else\n if (funcIsMock(this)) {\n applyNgValueAccessor(this, ngControl);\n applyOutputs(this);\n applyPrototype(this, Object.getPrototypeOf(this));\n applyMethods(this, mockOf.prototype);\n applyProps(this, mockOf.prototype);\n }\n\n // and faking prototype\n Object.setPrototypeOf(this, mockOf.prototype);\n\n applyOverrides(this, mockOf, injector ?? undefined);\n }\n}\n\ncoreDefineProperty(Mock, 'parameters', [\n [Injector, new Optional()],\n [coreForm.NgControl || /* istanbul ignore next */ (() => undefined), new Optional(), new Self()],\n]);\n","import { Component, Directive, NgModule, Pipe, ViewContainerRef } from '@angular/core';\nimport { getTestBed, MetadataOverride, TestBed, TestBedStatic, TestModuleMetadata } from '@angular/core/testing';\n\nimport funcExtractTokens from '../mock-builder/func.extract-tokens';\nimport getOverrideDef from '../mock-builder/promise/get-override-def';\nimport { ngMocks } from '../mock-helper/mock-helper';\nimport mockHelperFasterInstall from '../mock-helper/mock-helper.faster-install';\nimport { MockProvider } from '../mock-provider/mock-provider';\nimport helperCreateClone from '../mock-service/helper.create-clone';\n\nimport coreDefineProperty from './core.define-property';\nimport { flatten, mapEntries, mapValues } from './core.helpers';\nimport coreInjector from './core.injector';\nimport coreReflectMeta from './core.reflect.meta';\nimport coreReflectModuleResolve from './core.reflect.module-resolve';\nimport coreReflectProvidedIn from './core.reflect.provided-in';\nimport { NG_MOCKS, NG_MOCKS_TOUCHES } from './core.tokens';\nimport { AnyType } from './core.types';\nimport funcGetProvider from './func.get-provider';\nimport { isNgDef } from './func.is-ng-def';\nimport { isNgModuleDefWithProviders } from './func.is-ng-module-def-with-providers';\nimport ngMocksUniverse from './ng-mocks-universe';\n\nconst applyOverride = (def: any, override: any) => {\n if (isNgDef(def, 'c')) {\n TestBed.overrideComponent(def, override);\n } else if (isNgDef(def, 'd')) {\n TestBed.overrideDirective(def, override);\n } else if (isNgDef(def, 'm')) {\n TestBed.overrideModule(def, override);\n }\n if (isNgDef(def, 't')) {\n TestBed.overrideProvider(def, override);\n } else if (isNgDef(def, 'i')) {\n TestBed.overrideProvider(def, override);\n }\n};\n\nconst applyOverrides = (overrides: Map<AnyType<any>, [MetadataOverride<any>, MetadataOverride<any>]>): void => {\n for (const [def, [override, original]] of mapEntries(overrides)) {\n (TestBed as any).ngMocksOverrides.set(def, {\n ...original,\n override,\n });\n applyOverride(def, override);\n }\n};\n\n// Thanks Ivy and its TestBed.override - it does not clean up leftovers.\nconst applyNgMocksOverrides = (testBed: TestBedStatic & { ngMocksOverrides?: Map<any, any> }): void => {\n if (testBed.ngMocksOverrides?.size) {\n ngMocks.flushTestBed();\n for (const [def, original] of mapEntries(testBed.ngMocksOverrides)) {\n applyOverride(def, original);\n }\n }\n testBed.ngMocksOverrides = undefined;\n};\n\nconst initTestBed = () => {\n if (!(TestBed as any).ngMocksSelectors) {\n coreDefineProperty(TestBed, 'ngMocksSelectors', new Map());\n }\n // istanbul ignore else\n if (!(TestBed as any).ngMocksOverrides) {\n coreDefineProperty(TestBed, 'ngMocksOverrides', new Map());\n }\n};\n\nconst generateTouchesKey = [\n 'bootstrap',\n 'declarations',\n 'entryComponents',\n 'exports',\n 'imports',\n 'providers',\n 'viewProviders',\n] as const;\n\nconst generateTouches = (\n moduleDef: Partial<TestModuleMetadata & NgModule & Directive & Pipe & Component>,\n touches: Set<any>,\n): void => {\n for (const key of generateTouchesKey) {\n for (const item of moduleDef[key] ? flatten(moduleDef[key]) : []) {\n let def = funcGetProvider(item);\n if (isNgModuleDefWithProviders(def)) {\n generateTouches(def, touches);\n def = def.ngModule;\n }\n if (touches.has(def)) {\n continue;\n }\n touches.add(def);\n if (typeof def !== 'function') {\n continue;\n }\n\n if (!Object.prototype.hasOwnProperty.call(def, '__ngMocksTouches')) {\n const local = new Set<any>();\n const meta = coreReflectMeta(def);\n if (meta) {\n generateTouches(meta, local);\n }\n coreDefineProperty(def, '__ngMocksTouches', local, false);\n }\n\n mapValues(def.__ngMocksTouches, touches);\n }\n }\n};\n\nconst defineTouches = (testBed: TestBed, moduleDef: TestModuleMetadata, knownTouches?: Set<any>) => {\n let touches = knownTouches;\n\n if (!touches && ngMocksUniverse.getDefaults().size > 0) {\n touches = funcExtractTokens(\n (testBed as any)._providers || /* istanbul ignore next Ivy part */ (testBed as any)._compiler?.providers,\n ).touches;\n if (!touches) {\n touches = new Set();\n moduleDef.providers = moduleDef.providers || [];\n moduleDef.providers.push({ provide: NG_MOCKS_TOUCHES, useValue: touches });\n }\n generateTouches(moduleDef, touches);\n }\n\n return touches;\n};\n\nconst applyPlatformOverrideDef = (def: any) => {\n const ngModule = isNgModuleDefWithProviders(def) ? /* istanbul ignore next */ def.ngModule : def;\n if ((TestBed as any).ngMocksOverrides.has(ngModule)) {\n return;\n }\n\n const original = coreReflectModuleResolve(ngModule);\n const set = getOverrideDef(original);\n if (set) {\n (TestBed as any).ngMocksOverrides.set(ngModule, { set: original });\n TestBed.overrideModule(ngModule, { set });\n }\n};\n\nconst applyPlatformOverridesBasedOnProvidedIn = (provide: any, touches: Set<any>) => {\n const providedIn = coreReflectProvidedIn(provide);\n if (!providedIn) {\n return;\n }\n // knownTouches present from MockBuilder and we can rely on it,\n // otherwise we have to override the provider always.\n if (typeof providedIn !== 'string' && !touches.has(providedIn)) {\n return;\n }\n (TestBed as any).ngMocksOverrides.set(provide, {});\n TestBed.overrideProvider(provide, MockProvider(provide as never));\n};\n\nconst applyPlatformOverridesBasedOnDefaults = (touches: Set<any>) => {\n for (const [provide, [config]] of mapEntries(ngMocksUniverse.getDefaults())) {\n if (config !== 'mock') {\n continue;\n }\n if (!isNgDef(provide, 'i') && !isNgDef(provide, 't')) {\n continue;\n }\n if (touches.has(provide)) {\n continue;\n }\n if ((TestBed as any).ngMocksOverrides.has(provide)) {\n continue;\n }\n applyPlatformOverridesBasedOnProvidedIn(provide, touches);\n }\n};\n\nconst applyPlatformOverrides = (testBed: TestBed, touches: Set<any>) => {\n // istanbul ignore else\n if ((TestBed as any).ngMocksOverrides) {\n const backup = ngMocksUniverse.touches;\n ngMocksUniverse.touches = touches;\n for (const def of flatten(testBed.ngModule || /* istanbul ignore next */ [])) {\n applyPlatformOverrideDef(def);\n }\n applyPlatformOverridesBasedOnDefaults(touches);\n ngMocksUniverse.touches = backup;\n }\n};\n\nconst configureTestingModule =\n (original: TestBedStatic['configureTestingModule']): TestBedStatic['configureTestingModule'] =>\n (moduleDef: TestModuleMetadata) => {\n initTestBed();\n\n const testBed = getTestBed();\n\n const providers = funcExtractTokens(moduleDef.providers);\n const { mocks, overrides } = providers;\n // touches are important,\n // therefore we are trying to fetch them from the known providers.\n const touches = defineTouches(testBed, moduleDef, providers.touches);\n\n if (mocks) {\n ngMocks.flushTestBed();\n }\n\n // istanbul ignore else\n if (overrides) {\n applyOverrides(overrides);\n }\n // _testModuleRef exists only after the 1st call,\n // so we shouldn't override platform again.\n if (touches && !(testBed as any)._instantiated && !(testBed as any)._testModuleRef) {\n applyPlatformOverrides(testBed, touches);\n }\n\n return original.call(TestBed, moduleDef);\n };\n\nconst resetTestingModule =\n (original: TestBedStatic['resetTestingModule']): TestBedStatic['resetTestingModule'] =>\n () => {\n ngMocksUniverse.global.delete('builder:config');\n ngMocksUniverse.global.delete('builder:module');\n (TestBed as any).ngMocksSelectors = undefined;\n applyNgMocksOverrides(TestBed);\n\n return original.call(TestBed);\n };\n\nconst viewContainerInstall = () => {\n const vcr: any = ViewContainerRef;\n\n // istanbul ignore else\n if (!vcr.ngMocksOverridesInstalled) {\n const ngElementId = vcr.__NG_ELEMENT_ID__;\n\n // istanbul ignore else\n if (ngElementId) {\n coreDefineProperty(\n vcr,\n '__NG_ELEMENT_ID__',\n helperCreateClone(ngElementId, undefined, undefined, (...ngElementIdArgs: any[]) => {\n const vcrInstance = ngElementId.apply(ngElementId, ngElementIdArgs);\n\n const createComponent = vcrInstance.createComponent;\n coreDefineProperty(\n vcrInstance,\n 'createComponent',\n helperCreateClone(\n createComponent,\n undefined,\n undefined,\n (component: any, ...createComponentArgs: any[]) => {\n const map = coreInjector(NG_MOCKS, vcrInstance.injector);\n\n return createComponent.apply(vcrInstance, [\n map?.get(component) ?? component,\n ...createComponentArgs,\n ] as any);\n },\n ),\n true,\n );\n\n return vcrInstance;\n }),\n true,\n );\n }\n\n coreDefineProperty(ViewContainerRef, 'ngMocksOverridesInstalled', true);\n }\n};\n\nconst install = () => {\n // istanbul ignore else\n if (!(TestBed as any).ngMocksOverridesInstalled) {\n const hooks = mockHelperFasterInstall();\n viewContainerInstall();\n\n // istanbul ignore else\n if (hooks.before.indexOf(configureTestingModule) === -1) {\n hooks.before.push(configureTestingModule);\n }\n // istanbul ignore else\n if (hooks.after.indexOf(resetTestingModule) === -1) {\n hooks.after.push(resetTestingModule);\n }\n\n coreDefineProperty(TestBed, 'ngMocksOverridesInstalled', true);\n }\n};\n\ninstall();\n","import ngMocksUniverse from './ng-mocks-universe';\n\nexport interface NgMocksStack {\n id: object;\n level: 'root' | 'runtime';\n mockInstance?: any[];\n}\n\ntype NgMocksStackCallback = (state: NgMocksStack, stack: NgMocksStack[]) => void;\n\nconst stackRoot: NgMocksStack = { id: {}, level: 'root' };\nconst stack: NgMocksStack[] = ngMocksUniverse.global.get('reporter-stack') || [{ ...stackRoot }];\nngMocksUniverse.global.set('reporter-stack', stack);\nconst current = () => stack[stack.length - 1];\n\n// istanbul ignore next\nconst listenersPush: NgMocksStackCallback[] = ngMocksUniverse.global.get('reporter-stack-push') ?? [];\nngMocksUniverse.global.set('reporter-stack-push', listenersPush);\n\n// istanbul ignore next\nconst listenersPop: NgMocksStackCallback[] = ngMocksUniverse.global.get('reporter-stack-pop') ?? [];\nngMocksUniverse.global.set('reporter-stack-pop', listenersPop);\n\nconst stackPush = () => {\n const id = {};\n ngMocksUniverse.global.set('reporter-stack-id', id);\n const state: NgMocksStack = { id, level: 'runtime' };\n stack.push(state);\n\n for (const callback of listenersPush) {\n callback(state, stack);\n }\n};\nconst stackPop = () => {\n const state = stack.pop();\n\n // this code is actually needed for jest tests.\n // istanbul ignore if\n if (stack.length === 0) {\n stack.push(state?.level === 'root' ? state : { ...stackRoot });\n }\n\n // istanbul ignore else\n if (state && state.level !== 'root') {\n for (const callback of listenersPop) {\n callback(state, stack);\n }\n }\n\n ngMocksUniverse.global.set('reporter-stack-id', stack[stack.length - 1].id);\n};\n\n// istanbul ignore next\nconst subscribePush = (callback: NgMocksStackCallback) => {\n if (listenersPush.indexOf(callback)) {\n listenersPush.push(callback);\n }\n if (stack.length > 0) {\n callback(stack[stack.length - 1], stack);\n }\n};\n\n// istanbul ignore next\nconst subscribePop = (callback: NgMocksStackCallback) => {\n if (listenersPop.indexOf(callback) === -1) {\n listenersPop.push(callback);\n }\n};\n\n// istanbul ignore next\nconst unsubscribePush = (callback: NgMocksStackCallback) => {\n const index = listenersPush.indexOf(callback);\n if (index !== -1) {\n listenersPush.splice(index, 1);\n }\n};\n\n// istanbul ignore next\nconst unsubscribePop = (callback: NgMocksStackCallback) => {\n const index = listenersPop.indexOf(callback);\n if (index !== -1) {\n listenersPop.splice(index, 1);\n }\n};\n\nexport default {\n current,\n stackPop,\n stackPush,\n subscribePop,\n subscribePush,\n unsubscribePop,\n unsubscribePush,\n};\n","import { InjectionToken } from '@angular/core';\n\nimport { IMockBuilderConfig } from '../mock-builder/types';\n\nimport coreConfig from './core.config';\nimport { AnyType } from './core.types';\nimport funcGetGlobal from './func.get-global';\nimport funcGetName from './func.get-name';\n\nconst globalMap = (key: string) => () => {\n if (!ngMocksUniverse.global.has(key)) {\n ngMocksUniverse.global.set(key, new Map());\n }\n\n return ngMocksUniverse.global.get(key);\n};\n\ninterface NgMocksUniverse {\n builtDeclarations: Map<any, any>;\n builtProviders: Map<any, any>;\n cacheDeclarations: Map<any, any>;\n cacheProviders: Map<any, any>;\n config: Map<any, any>;\n configInstance: Map<any, any>;\n flags: Set<string>;\n getBuildDeclaration: (def: any) => any | undefined;\n getConfigMock: () => Map<any, IMockBuilderConfig>;\n getDefaults: () => Map<any, ['mock' | 'keep' | 'replace' | 'exclude', any?]>;\n getLocalMocks: () => Array<[any, any]>;\n getOverrides: () => Map<any, any>;\n getResolution: (def: any) => undefined | 'mock' | 'keep' | 'replace' | 'exclude';\n global: Map<any, any>;\n hasBuildDeclaration: (def: any) => boolean;\n isExcludedDef: (def: any) => boolean;\n isProvidedDef: (def: any) => boolean;\n touches: Set<AnyType<any> | InjectionToken<any> | string>;\n}\n\nfuncGetGlobal().ngMocksUniverse = funcGetGlobal().ngMocksUniverse || {};\nconst ngMocksUniverse: NgMocksUniverse = funcGetGlobal().ngMocksUniverse;\n\nngMocksUniverse.builtDeclarations = new Map();\nngMocksUniverse.builtProviders = new Map();\nngMocksUniverse.cacheDeclarations = new Map();\nngMocksUniverse.cacheProviders = new Map();\nngMocksUniverse.config = new Map();\nngMocksUniverse.configInstance = new Map();\nngMocksUniverse.flags = new Set(coreConfig.flags);\nngMocksUniverse.global = new Map();\nngMocksUniverse.touches = new Set();\n\nngMocksUniverse.global.set('flags', {\n // @deprecated and will be changed in A13 to 'throw'\n onMockInstanceRestoreNeed: coreConfig.onMockInstanceRestoreNeed,\n // @deprecated and will be changed in A13 to 'throw'\n onTestBedFlushNeed: coreConfig.onTestBedFlushNeed,\n});\n\nngMocksUniverse.getOverrides = globalMap('overrides');\nngMocksUniverse.getDefaults = globalMap('defaults');\nngMocksUniverse.getConfigMock = globalMap('configMock');\n\nconst getDefaults = (def: any): [] | ['mock' | 'keep' | 'replace' | 'exclude', any?] => {\n {\n const defValue = ngMocksUniverse.getDefaults().get(def);\n if (defValue) {\n return defValue;\n }\n }\n\n {\n const defValue = typeof def === 'function' ? ngMocksUniverse.getDefaults().get(`@${funcGetName(def)}`) : undefined;\n if (defValue) {\n return defValue;\n }\n }\n\n return [];\n};\n\nngMocksUniverse.getResolution = (def: any): undefined | 'mock' | 'keep' | 'replace' | 'exclude' => {\n const set = ngMocksUniverse.config.get('ngMocksDepsResolution');\n if (set?.has(def)) {\n return set.get(def);\n }\n const [value] = getDefaults(def);\n\n return value;\n};\n\nngMocksUniverse.getBuildDeclaration = (def: any): undefined | null | any => {\n if (ngMocksUniverse.builtDeclarations.has(def)) {\n return ngMocksUniverse.builtDeclarations.get(def);\n }\n const [mode, replacement] = getDefaults(def);\n\n if (mode === 'exclude') {\n return null;\n }\n if (mode === 'keep') {\n return def;\n }\n if (mode === 'replace') {\n return replacement;\n }\n};\n\nngMocksUniverse.hasBuildDeclaration = (def: any): boolean => {\n if (ngMocksUniverse.builtDeclarations.has(def)) {\n return true;\n }\n const [mode] = getDefaults(def);\n\n return !!mode && mode !== 'mock';\n};\n\nconst hasBuildDeclaration = (def: any): boolean => ngMocksUniverse.hasBuildDeclaration(def);\nconst getBuildDeclaration = (def: any): any => ngMocksUniverse.getBuildDeclaration(def);\n\nngMocksUniverse.isExcludedDef = (def: any): boolean => {\n const resolution = ngMocksUniverse.getResolution(def);\n if (resolution && resolution !== 'exclude') {\n return false;\n }\n\n return hasBuildDeclaration(def) && getBuildDeclaration(def) === null;\n};\n\nngMocksUniverse.isProvidedDef = (def: any): boolean => hasBuildDeclaration(def) && getBuildDeclaration(def) !== null;\n\n// excluding StoreDevtoolsModule by default\nngMocksUniverse.getDefaults().set('@StoreDevtoolsModule', ['exclude']);\n\nexport default ((): NgMocksUniverse => ngMocksUniverse)();\n","import { MetadataOverride } from '@angular/core/testing';\n\nimport { flatten } from '../common/core.helpers';\nimport { NG_MOCKS, NG_MOCKS_OVERRIDES, NG_MOCKS_TOUCHES } from '../common/core.tokens';\nimport { AnyType } from '../common/core.types';\n\nexport default (\n providers: any,\n): {\n mocks?: Map<any, any>;\n overrides?: Map<AnyType<any>, [MetadataOverride<any>, MetadataOverride<any>]>;\n touches?: Set<any>;\n} => {\n let mocks: Map<any, any> | undefined;\n let overrides: Map<AnyType<any>, [MetadataOverride<any>, MetadataOverride<any>]> | undefined;\n let touches: Set<any> | undefined;\n\n for (const provide of flatten(providers || [])) {\n if (typeof provide !== 'object') {\n continue;\n }\n if (provide.provide === NG_MOCKS) {\n mocks = provide.useValue;\n }\n if (provide.provide === NG_MOCKS_OVERRIDES) {\n overrides = provide.useValue;\n }\n if (provide.provide === NG_MOCKS_TOUCHES) {\n touches = provide.useValue;\n }\n }\n\n return {\n mocks,\n overrides,\n touches,\n };\n};\n","import coreConfig from '../common/core.config';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nexport class MockBuilderStash {\n protected data: Record<keyof any, any> = {};\n\n public backup(): void {\n this.data = {\n builtDeclarations: ngMocksUniverse.builtDeclarations,\n builtProviders: ngMocksUniverse.builtProviders,\n cacheDeclarations: ngMocksUniverse.cacheDeclarations,\n cacheProviders: ngMocksUniverse.cacheProviders,\n config: ngMocksUniverse.config,\n configInstance: ngMocksUniverse.configInstance,\n flags: ngMocksUniverse.flags,\n touches: ngMocksUniverse.touches,\n };\n\n ngMocksUniverse.builtDeclarations = new Map();\n ngMocksUniverse.builtProviders = new Map();\n ngMocksUniverse.cacheDeclarations = new Map();\n ngMocksUniverse.cacheProviders = new Map();\n ngMocksUniverse.config = new Map();\n ngMocksUniverse.configInstance = new Map();\n ngMocksUniverse.flags = new Set(coreConfig.flags);\n ngMocksUniverse.touches = new Set();\n }\n\n public restore(): void {\n for (const key of Object.keys(this.data)) {\n (ngMocksUniverse as any)[key] = (this.data as any)[key];\n }\n }\n}\n","import { TestBed, TestModuleMetadata } from '@angular/core/testing';\n\nimport { mapEntries, mapValues } from '../common/core.helpers';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport { MockBuilderPromise } from './mock-builder.promise';\nimport areEqualConfigParams from './performance/are-equal-config-params';\nimport areEqualMaps from './performance/are-equal-maps';\nimport areEqualProviders from './performance/are-equal-providers';\nimport areEqualSets from './performance/are-equal-sets';\nimport getEmptyConfig from './performance/get-empty-config';\nimport requiredMetadata from './performance/required-metadata';\nimport { IMockBuilderResult } from './types';\n\nexport class MockBuilderPerformance extends MockBuilderPromise {\n public build(): TestModuleMetadata {\n const global = ngMocksUniverse.global;\n\n // avoiding influences on cache when users extend the testing module.\n if (global.has('builder:module') && global.has('builder:config') && this.equalsTo(global.get('builder:config'))) {\n return requiredMetadata(global.get('builder:module'));\n }\n\n // removal of cached promise in case of mismatch\n if (global.has('builder:module')) {\n global.delete(global.get('builder:module'));\n }\n\n const clone = this.cloneConfig();\n const ngModule = super.build();\n global.set('builder:config', clone);\n global.set('builder:module', ngModule);\n\n // avoiding influences on cache when users extend the testing module.\n return requiredMetadata(ngModule);\n }\n\n // eslint-disable-next-line unicorn/no-thenable\n public async then<TResult1 = IMockBuilderResult>(\n fulfill?: ((value: IMockBuilderResult) => PromiseLike<TResult1>) | undefined | null,\n reject?: ((reason: any) => PromiseLike<never>) | undefined | null,\n ): Promise<TResult1> {\n const global = ngMocksUniverse.global;\n\n const flags = global.has('bullet') && global.has('builder:module') && global.has('builder:config');\n if (flags && this.equalsTo(global.get('builder:config'))) {\n return global.get(global.get('builder:module')).then(fulfill, reject);\n }\n\n // we need to reset testing module in case if we are in bullet mode but current module does not match.\n if (global.has('bullet') && global.has('bullet:reset')) {\n console.warn('ngMocks.faster has zero effect due to changes in testing module between runs');\n global.delete('bullet');\n TestBed.resetTestingModule();\n global.set('bullet', true);\n }\n\n const promise = super.then(fulfill, reject);\n global.set(global.get('builder:module'), promise);\n\n return promise;\n }\n\n private cloneConfig() {\n const config = getEmptyConfig();\n\n mapValues(this.beforeCC, config.beforeCC);\n mapValues(this.excludeDef, config.excludeDef);\n mapValues(this.keepDef, config.keepDef);\n mapValues(this.mockDef, config.mockDef);\n mapValues(this.replaceDef, config.replaceDef);\n\n mapEntries(this.configDef, config.configDef);\n mapEntries(this.defProviders, config.defProviders);\n mapEntries(this.defValue, config.defValue);\n mapEntries(this.providerDef, config.providerDef);\n\n return config;\n }\n\n private equalsTo(prototype: Record<any, any>): boolean {\n for (const key of ['beforeCC', 'keepDef', 'replaceDef', 'excludeDef', 'mockDef']) {\n if (!areEqualSets((this as any)[key], prototype[key])) {\n return false;\n }\n }\n for (const key of ['defValue']) {\n if (!areEqualMaps((this as any)[key], prototype[key])) {\n return false;\n }\n }\n for (const key of ['providerDef', 'defProviders']) {\n if (!areEqualMaps((this as any)[key], prototype[key], areEqualProviders)) {\n return false;\n }\n }\n\n return areEqualMaps(this.configDef, prototype.configDef, areEqualConfigParams);\n }\n}\n","import { Provider } from '@angular/core';\nimport { TestBed, TestModuleMetadata } from '@angular/core/testing';\n\nimport { flatten, mapValues } from '../common/core.helpers';\nimport { Type } from '../common/core.types';\nimport { isNgDef } from '../common/func.is-ng-def';\nimport { isNgModuleDefWithProviders } from '../common/func.is-ng-module-def-with-providers';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport { MockBuilderStash } from './mock-builder-stash';\nimport addMissingKeepDeclarationsAndModules from './promise/add-missing-keep-declarations-and-modules';\nimport addMissingMockDeclarationsAndModules from './promise/add-missing-mock-declarations-and-modules';\nimport addRequestedProviders from './promise/add-requested-providers';\nimport applyPlatformModules from './promise/apply-platform-modules';\nimport createNgMocksOverridesToken from './promise/create-ng-mocks-overrides-token';\nimport createNgMocksToken from './promise/create-ng-mocks-token';\nimport createNgMocksTouchesToken from './promise/create-ng-mocks-touches-token';\nimport detectWrongDeclarations from './promise/detect-wrong-declarations';\nimport handleEntryComponents from './promise/handle-entry-components';\nimport handleRootProviders from './promise/handle-root-providers';\nimport initNgModules from './promise/init-ng-modules';\nimport initUniverse from './promise/init-universe';\nimport parseMockArguments from './promise/parse-mock-arguments';\nimport parseProvider from './promise/parse-provider';\nimport { BuilderData } from './promise/types';\nimport { IMockBuilder, IMockBuilderConfig, IMockBuilderResult } from './types';\n\nconst normaliseModule = (\n module: any,\n): {\n def: Type<any>;\n providers?: Provider[];\n} =>\n isNgModuleDefWithProviders(module)\n ? { def: module.ngModule, providers: module.providers }\n : { def: module, providers: undefined };\n\nconst generateProviderValue = (provider: any, existing: any, multi: boolean): any =>\n multi ? [...(Array.isArray(existing) ? existing : /* istanbul ignore next */ []), provider] : provider;\n\nconst defaultMock = {}; // simulating Symbol\n\nexport interface MockBuilderPromise {\n [Symbol.toStringTag]: 'Promise';\n}\n\nexport class MockBuilderPromise implements IMockBuilder {\n protected beforeCC: Set<(testBed: typeof TestBed) => void> = new Set();\n protected configDef: BuilderData['configDef'] = new Map();\n protected defProviders: BuilderData['defProviders'] = new Map();\n protected defValue: BuilderData['defValue'] = new Map();\n protected excludeDef: BuilderData['excludeDef'] = new Set();\n protected keepDef: BuilderData['keepDef'] = new Set();\n protected mockDef: BuilderData['mockDef'] = new Set();\n protected providerDef: BuilderData['providerDef'] = new Map();\n protected replaceDef: BuilderData['replaceDef'] = new Set();\n protected stash: MockBuilderStash = new MockBuilderStash();\n\n public constructor() {\n // istanbul ignore else\n if (typeof Symbol !== 'undefined') {\n (this as any)[Symbol.toStringTag] = 'Promise';\n }\n }\n\n public beforeCompileComponents(callback: (testBed: typeof TestBed) => void): this {\n this.beforeCC.add(callback);\n\n return this;\n }\n\n public build(): TestModuleMetadata {\n this.stash.backup();\n ngMocksUniverse.config.set('mockNgDefResolver', new Map());\n ngMocksUniverse.flags.add('hasRootModule');\n\n try {\n const params = this.combineParams();\n\n const ngModule = initNgModules(params, initUniverse(params));\n detectWrongDeclarations(params);\n addMissingKeepDeclarationsAndModules(ngModule, params);\n addMissingMockDeclarationsAndModules(ngModule, params);\n addRequestedProviders(ngModule, params);\n handleRootProviders(ngModule, params);\n handleEntryComponents(ngModule);\n applyPlatformModules();\n\n ngModule.providers.push(\n createNgMocksToken(),\n createNgMocksTouchesToken(),\n createNgMocksOverridesToken(this.replaceDef, this.defValue),\n );\n\n return ngModule;\n } finally {\n ngMocksUniverse.flags.delete('hasRootModule');\n ngMocksUniverse.config.delete('mockNgDefResolver');\n this.stash.restore();\n }\n }\n\n // istanbul ignore next\n public async catch(reject?: ((reason: any) => PromiseLike<never>) | undefined | null): Promise<IMockBuilderResult> {\n return this.then().catch(reject);\n }\n\n public exclude(def: any): this {\n this.wipe(def);\n this.excludeDef.add(def);\n\n return this;\n }\n\n // istanbul ignore next\n public async finally(callback?: (() => void) | null | undefined): Promise<IMockBuilderResult> {\n return this.then().finally(callback);\n }\n\n public keep(input: any, config?: IMockBuilderConfig): this {\n const { def, providers } = normaliseModule(input);\n\n const existing = this.keepDef.has(def) ? this.defProviders.get(def) : [];\n this.wipe(def);\n this.keepDef.add(def);\n\n // a magic to support modules with providers.\n if (providers) {\n this.defProviders.set(def, [...(existing || /* istanbul ignore next */ []), ...providers]);\n }\n\n if (config) {\n this.configDef.set(def, config);\n } else {\n this.configDef.delete(def);\n }\n\n return this;\n }\n\n public mock(input: any, a1: any = defaultMock, a2?: any): this {\n const { def, providers } = normaliseModule(input);\n\n const { config, mock } = parseMockArguments(def, a1, a2, defaultMock);\n\n const existing = this.mockDef.has(def) ? this.defProviders.get(def) : [];\n this.wipe(def);\n this.mockDef.add(def);\n\n // a magic to support modules with providers.\n if (providers) {\n this.defProviders.set(def, [...(existing || /* istanbul ignore next */ []), ...providers]);\n }\n\n this.setDefValue(def, mock);\n this.setConfigDef(def, config);\n\n return this;\n }\n\n public provide(def: Provider): this {\n for (const provider of flatten(def)) {\n const { provide, multi } = parseProvider(provider);\n const existing = this.providerDef.has(provide) ? this.providerDef.get(provide) : [];\n this.wipe(provide);\n this.providerDef.set(provide, generateProviderValue(provider, existing, multi));\n }\n\n return this;\n }\n\n public replace(source: Type<any>, destination: Type<any>, config?: IMockBuilderConfig): this {\n if (!isNgDef(destination) || !isNgDef(source) || isNgDef(destination, 'i') || isNgDef(source, 'i')) {\n throw new Error(\n 'Cannot replace the declaration, both have to be a Module, a Component, a Directive or a Pipe, for Providers use `.mock` or `.provide`',\n );\n }\n\n this.wipe(source);\n this.replaceDef.add(source);\n this.defValue.set(source, destination);\n\n if (config) {\n this.configDef.set(source, config);\n } else {\n this.configDef.delete(source);\n }\n\n return this;\n }\n\n // eslint-disable-next-line unicorn/no-thenable\n public async then<TResult1 = IMockBuilderResult>(\n fulfill?: ((value: IMockBuilderResult) => PromiseLike<TResult1>) | undefined | null,\n reject?: ((reason: any) => PromiseLike<any>) | undefined | null,\n ): Promise<TResult1> {\n const promise = new Promise((resolve: (value: IMockBuilderResult) => void): void => {\n const testBed = TestBed.configureTestingModule(this.build());\n for (const callback of mapValues(this.beforeCC)) {\n callback(testBed);\n }\n const testBedPromise = testBed.compileComponents();\n testBedPromise.then(() => {\n resolve({ testBed });\n });\n });\n\n return promise.then(fulfill, reject);\n }\n\n private combineParams(): BuilderData {\n return {\n configDef: this.configDef,\n defProviders: this.defProviders,\n defValue: this.defValue,\n excludeDef: this.excludeDef,\n keepDef: this.keepDef,\n mockDef: this.mockDef,\n providerDef: this.providerDef,\n replaceDef: this.replaceDef,\n };\n }\n\n private setConfigDef(def: any, config: any): void {\n if (config) {\n this.configDef.set(def, config);\n } else {\n this.configDef.delete(def);\n }\n }\n\n private setDefValue(def: any, mock: any): void {\n if (mock !== defaultMock) {\n this.defValue.set(def, mock);\n } else {\n this.defValue.delete(def);\n }\n }\n\n private wipe(def: Type<any>): void {\n this.defProviders.delete(def);\n this.defValue.delete(def);\n this.excludeDef.delete(def);\n this.keepDef.delete(def);\n this.mockDef.delete(def);\n this.providerDef.delete(def);\n this.replaceDef.delete(def);\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { flatten } from '../common/core.helpers';\nimport { AnyType } from '../common/core.types';\nimport { NgModuleWithProviders } from '../common/func.is-ng-module-def-with-providers';\n\nimport { MockBuilderPerformance } from './mock-builder.performance';\nimport { IMockBuilder } from './types';\n\nexport type MockBuilderParam = string | AnyType<any> | InjectionToken<any> | NgModuleWithProviders;\n\n/**\n * MockBuilder provides reach and simple interfaces of chain functions\n * to build desired mock environment for tests.\n *\n * @see https://ng-mocks.sudo.eu/api/MockBuilder\n */\nexport function MockBuilder(\n keepDeclaration?: MockBuilderParam | MockBuilderParam[] | null | undefined,\n itsModuleToMock?: MockBuilderParam | MockBuilderParam[] | null | undefined,\n): IMockBuilder {\n const instance = new MockBuilderPerformance();\n\n if (keepDeclaration) {\n for (const declaration of flatten(keepDeclaration)) {\n instance.keep(declaration, {\n export: true,\n });\n }\n }\n if (itsModuleToMock) {\n for (const declaration of flatten(itsModuleToMock)) {\n instance.mock(declaration, declaration, {\n export: true,\n exportAll: true,\n });\n }\n }\n\n return instance;\n}\n","import equalRenderConfigs from './equal-render-configs';\n\nexport default (source: any, destination: any): boolean => {\n if (destination === source) {\n return true;\n }\n if (destination.dependency !== source.dependency) {\n return false;\n }\n if (destination.export !== source.export) {\n return false;\n }\n if (destination.exportAll !== source.exportAll) {\n return false;\n }\n if (!equalRenderConfigs(source.render, destination.render)) {\n return false;\n }\n\n return true;\n};\n","import { mapKeys } from '../../common/core.helpers';\n\nexport default (source: Map<any, any>, destination: Map<any, any>, compare = (a: any, b: any) => a === b): boolean => {\n if (!destination || destination.size !== source.size) {\n return false;\n }\n for (const value of mapKeys(source)) {\n if (!destination.has(value)) {\n return false;\n }\n if (!compare(destination.get(value), source.get(value))) {\n return false;\n }\n }\n\n return true;\n};\n","import { flatten } from '../../common/core.helpers';\n\nconst areEqualProviderDefs = (thisDef: any, prototypeDef: any, ...keys: string[]) => {\n for (const key of keys) {\n if (prototypeDef && thisDef && prototypeDef[key] && thisDef[key] && prototypeDef[key] === thisDef[key]) {\n return true;\n }\n }\n\n return prototypeDef === thisDef;\n};\n\nexport default (prototype: any, source: any): boolean => {\n if (Array.isArray(prototype) !== Array.isArray(source)) {\n return false;\n }\n\n const [prototypeDefs, thisDefs] = [flatten(prototype), flatten(source)];\n if (prototypeDefs.length !== thisDefs.length) {\n return false;\n }\n\n for (let index = 0; index < prototypeDefs.length; index += 1) {\n const [prototypeDef, thisDef] = [prototypeDefs[index], thisDefs[index]];\n\n if (prototypeDef && thisDef && prototypeDef.multi !== thisDef.multi) {\n return false;\n }\n if (areEqualProviderDefs(thisDef, prototypeDef, 'useValue', 'useClass', 'useFactory', 'useExisting')) {\n continue;\n }\n\n return false;\n }\n\n return true;\n};\n","import { mapValues } from '../../common/core.helpers';\n\nexport default (source: Set<any>, destination: Set<any>): boolean => {\n if (!destination || destination.size !== source.size) {\n return false;\n }\n for (const value of mapValues(source)) {\n if (!destination.has(value)) {\n return false;\n }\n }\n\n return true;\n};\n","import equalRenderDefs from './equal-render-defs';\n\nconst objectsDiffer = (destination: any, source: any): boolean => {\n if (Object.keys(destination).length !== Object.keys(source).length) {\n return true;\n }\n for (const key of Object.keys(destination)) {\n if (!equalRenderDefs(destination[key], source[key])) {\n return true;\n }\n }\n\n return false;\n};\n\nexport default (source: any, destination: any): boolean => {\n if (!equalRenderDefs(destination, source)) {\n return false;\n }\n if (typeof destination !== 'object' || typeof source !== 'object') {\n return true;\n }\n if (objectsDiffer(destination, source)) {\n return false;\n }\n\n return true;\n};\n","import equalVariables from './equal-variables';\n\nexport default (prototype: any, source: any): boolean => {\n if (prototype === source) {\n return true;\n }\n if ((typeof prototype === 'boolean' || typeof source === 'boolean') && prototype !== source) {\n return false;\n }\n\n return prototype.$implicit === source.$implicit && equalVariables(prototype.variables, source.variables);\n};\n","const objectsDiffer = (prototype: any, source: any): boolean => {\n const prototypeKeys = Object.keys(prototype);\n const sourceKeys = Object.keys(source);\n if (prototypeKeys.length !== sourceKeys.length) {\n return true;\n }\n for (const key of prototypeKeys) {\n if (prototype[key] !== source[key]) {\n return true;\n }\n }\n\n return false;\n};\n\nexport default (prototype: any, source: any): boolean => {\n if (prototype === source) {\n return true;\n }\n if ((prototype && !source) || (!prototype && source)) {\n return false;\n }\n if (objectsDiffer(prototype, source)) {\n return false;\n }\n\n return true;\n};\n","export default () => ({\n beforeCC: new Set(),\n configDef: new Map(),\n defProviders: new Map(),\n defValue: new Map(),\n excludeDef: new Set(),\n keepDef: new Set(),\n mockDef: new Set(),\n providerDef: new Map(),\n replaceDef: new Set(),\n});\n","import { TestModuleMetadata } from '@angular/core/testing';\n\nexport default (\n ngModule: TestModuleMetadata,\n): {\n declarations: any[];\n imports: any[];\n providers: any[];\n} => ({\n declarations: [...(ngModule.declarations || /* istanbul ignore next */ [])],\n imports: [...(ngModule.imports || /* istanbul ignore next */ [])],\n providers: [...(ngModule.providers || /* istanbul ignore next */ [])],\n});\n","import { NG_MOCKS_ROOT_PROVIDERS } from '../../common/core.tokens';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport skipDep from './skip-dep';\nimport { BuilderData } from './types';\n\nexport default (parameters: Set<any>, mockDef: BuilderData['mockDef'], def: any): void => {\n if (\n !skipDep(def) &&\n (mockDef.has(NG_MOCKS_ROOT_PROVIDERS) || !ngMocksUniverse.config.get('ngMocksDepsSkip').has(def))\n ) {\n parameters.add(def);\n }\n};\n","import { isNgDef } from '../../common/func.is-ng-def';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default (def: any, configDef: Map<any, any>): boolean => {\n if (!isNgDef(def, 'i') && isNgDef(def)) {\n return true;\n }\n\n const config = configDef.get(def);\n if (config?.dependency) {\n return true;\n }\n\n const configInstance = ngMocksUniverse.configInstance.get(def);\n if (ngMocksUniverse.touches.has(def) && (configInstance?.exported || !config?.export)) {\n return true;\n }\n\n return false;\n};\n","import { mapValues } from '../../common/core.helpers';\nimport { isNgInjectionToken } from '../../common/func.is-ng-injection-token';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport addMissingDefinition from './add-missing-definition';\nimport { BuilderData, NgMeta } from './types';\n\nexport default (ngModule: NgMeta, { keepDef, configDef }: BuilderData): void => {\n // Adding missed kept providers to test bed.\n for (const def of mapValues(keepDef)) {\n if (addMissingDefinition(def, configDef)) {\n continue;\n }\n\n if (isNgInjectionToken(def) || typeof def === 'string') {\n ngMocksUniverse.touches.add(def);\n continue;\n }\n ngModule.providers.push(def);\n ngMocksUniverse.touches.add(def);\n }\n};\n","import { mapValues } from '../../common/core.helpers';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport addMissingDefinition from './add-missing-definition';\nimport { BuilderData, NgMeta } from './types';\n\nexport default (ngModule: NgMeta, { mockDef, configDef }: BuilderData): void => {\n // Adding missed mock providers to test bed.\n for (const def of mapValues(mockDef)) {\n if (addMissingDefinition(def, configDef)) {\n continue;\n }\n\n const mock = ngMocksUniverse.builtProviders.get(def);\n ngModule.providers.push(mock);\n ngMocksUniverse.touches.add(def);\n }\n};\n","import { extractDependency, flatten, mapValues } from '../../common/core.helpers';\nimport funcGetProvider from '../../common/func.get-provider';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport { BuilderData, NgMeta } from './types';\n\nexport default (ngModule: NgMeta, { providerDef }: BuilderData): void => {\n // Adding requested providers to test bed.\n for (const provider of mapValues(providerDef)) {\n ngModule.providers.push(provider);\n }\n\n // Analyzing providers.\n for (const provider of flatten(ngModule.providers)) {\n const provide = funcGetProvider(provider);\n ngMocksUniverse.touches.add(provide);\n\n if (provide !== provider && (provider as any).deps) {\n extractDependency((provider as any).deps, ngMocksUniverse.config.get('ngMocksDeps'));\n }\n }\n};\n","import { getTestBed } from '@angular/core/testing';\n\nimport { flatten } from '../../common/core.helpers';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default () => {\n const testBed = getTestBed();\n // istanbul ignore else\n if (testBed.ngModule) {\n for (const def of flatten<any>(testBed.ngModule)) {\n // istanbul ignore if\n if (typeof def === 'object' && /* istanbul ignore next */ def.ngModule) {\n ngMocksUniverse.touches.add(def.ngModule);\n } else {\n ngMocksUniverse.touches.add(def);\n }\n }\n }\n};\n","export default (provide: any, bucket: any[], touched: any[]): void => {\n if (typeof provide === 'function' && touched.indexOf(provide) === -1) {\n touched.push(provide);\n bucket.push(provide);\n }\n};\n","import { ValueProvider } from '@angular/core';\nimport { MetadataOverride } from '@angular/core/testing';\n\nimport { mapValues } from '../../common/core.helpers';\nimport coreReflectMeta from '../../common/core.reflect.meta';\nimport { NG_MOCKS_OVERRIDES } from '../../common/core.tokens';\nimport { Type } from '../../common/core.types';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport getOverrideDef from './get-override-def';\nimport skipOverride from './skip-override';\n\nexport default (replaceDef: Set<any>, defValue: Map<any, any>): ValueProvider => {\n const overrides: Map<Type<any>, [MetadataOverride<any>, MetadataOverride<any>]> = new Map();\n for (const proto of mapValues(ngMocksUniverse.touches)) {\n const source: any = proto;\n const value = ngMocksUniverse.getBuildDeclaration(source) || source;\n if (skipOverride(replaceDef, defValue, source, value)) {\n continue;\n }\n\n const original = coreReflectMeta(value);\n const override = getOverrideDef(original);\n if (!override) {\n continue;\n }\n overrides.set(value, [{ set: override }, { set: original }]);\n }\n\n return {\n provide: NG_MOCKS_OVERRIDES,\n useValue: overrides,\n };\n};\n","import { ValueProvider } from '@angular/core';\n\nimport { mapEntries } from '../../common/core.helpers';\nimport { NG_MOCKS } from '../../common/core.tokens';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default (): ValueProvider => {\n const mocks = new Map();\n for (const [key, value] of [\n ...mapEntries(ngMocksUniverse.builtProviders),\n ...mapEntries(ngMocksUniverse.builtDeclarations),\n ...mapEntries(ngMocksUniverse.cacheDeclarations),\n ...mapEntries(ngMocksUniverse.cacheProviders),\n ]) {\n if (mocks.has(key)) {\n continue;\n }\n mocks.set(key, value);\n }\n\n return {\n provide: NG_MOCKS,\n useValue: mocks,\n };\n};\n","import { ValueProvider } from '@angular/core';\n\nimport { mapValues } from '../../common/core.helpers';\nimport { NG_MOCKS_TOUCHES } from '../../common/core.tokens';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default (): ValueProvider => {\n // Redefining providers for kept declarations.\n const touches = new Set();\n for (const proto of mapValues(ngMocksUniverse.touches)) {\n const source: any = proto;\n let value = ngMocksUniverse.getBuildDeclaration(source);\n\n // kept declarations should be based on their source.\n if (value === undefined) {\n value = source;\n }\n\n touches.add(source);\n touches.add(value);\n }\n\n return {\n provide: NG_MOCKS_TOUCHES,\n useValue: touches,\n };\n};\n","import { flatten, mapValues } from '../../common/core.helpers';\nimport errorJestMock from '../../common/error.jest-mock';\nimport { isNgDef } from '../../common/func.is-ng-def';\nimport { isNgInjectionToken } from '../../common/func.is-ng-injection-token';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport { BuilderData } from './types';\n\nconst skipDef = (def: any): boolean =>\n ngMocksUniverse.touches.has(def) || isNgDef(def) || isNgInjectionToken(def) || typeof def === 'string';\n\nexport default (params: BuilderData): void => {\n for (const def of flatten([mapValues(params.keepDef), mapValues(params.mockDef)])) {\n if (skipDef(def)) {\n continue;\n }\n errorJestMock(def);\n }\n};\n","// Extracts dependency among flags of parameters.\n\nconst detectForwardRed = (provide: any): any => {\n if (typeof provide === 'function' && provide.__forward_ref__) {\n return provide();\n }\n\n return provide;\n};\n\nexport default (decorators?: any[]): any => {\n if (!decorators) {\n return;\n }\n\n let provide: any;\n for (const decorator of decorators) {\n if (decorator && typeof decorator === 'object' && decorator.token) {\n provide = decorator.token;\n }\n if (!provide && decorator && (typeof decorator !== 'object' || !decorator.ngMetadataName)) {\n provide = decorator;\n }\n }\n\n return detectForwardRed(provide);\n};\n","import { Directive, NgModule } from '@angular/core';\n\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\nimport mockNgDef from '../../mock-module/mock-ng-def';\n\nexport default (meta?: Directive | NgModule): NgModule | undefined => {\n if (!meta) {\n return undefined;\n }\n\n const skipMock = ngMocksUniverse.flags.has('skipMock');\n // istanbul ignore else\n if (!skipMock) {\n ngMocksUniverse.flags.add('skipMock');\n }\n const [changed, def] = mockNgDef(meta);\n // istanbul ignore else\n if (!skipMock) {\n ngMocksUniverse.flags.delete('skipMock');\n }\n if (!changed) {\n return undefined;\n }\n\n return def;\n};\n","import coreReflectParametersResolve from '../../common/core.reflect.parameters-resolve';\nimport { NG_MOCKS_ROOT_PROVIDERS } from '../../common/core.tokens';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport addDefToRootProviderParameters from './add-def-to-root-provider-parameters';\nimport checkRootProviderDependency from './check-root-provider-dependency';\nimport extractDep from './extract-dep';\nimport getRootProvidersData from './get-root-providers-data';\nimport handleProvidedInDependency from './handle-provided-in-dependency';\nimport skipRootProviderDependency from './skip-root-provider-dependency';\nimport { BuilderData } from './types';\n\nexport default (mockDef: BuilderData['mockDef']): Set<any> => {\n const parameters = new Set();\n const { buckets, touched } = getRootProvidersData();\n\n for (const bucket of buckets) {\n for (const def of bucket) {\n addDefToRootProviderParameters(parameters, mockDef, def);\n\n for (const decorators of coreReflectParametersResolve(def)) {\n const provide: any = extractDep(decorators);\n handleProvidedInDependency(provide);\n if (skipRootProviderDependency(provide)) {\n continue;\n }\n checkRootProviderDependency(provide, touched, bucket);\n if (mockDef.has(NG_MOCKS_ROOT_PROVIDERS) || !ngMocksUniverse.config.get('ngMocksDepsSkip').has(def)) {\n parameters.add(provide);\n } else {\n ngMocksUniverse.config.get('ngMocksDepsSkip').add(provide);\n }\n }\n }\n }\n\n return parameters;\n};\n","import { mapValues } from '../../common/core.helpers';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default (): {\n buckets: any[];\n touched: any[];\n} => {\n // We need buckets here to process first all depsSkip, then deps and only after that all other defs.\n const buckets: any[] = [\n mapValues(ngMocksUniverse.config.get('ngMocksDepsSkip')),\n mapValues(ngMocksUniverse.config.get('ngMocksDeps')),\n mapValues(ngMocksUniverse.touches),\n ];\n\n // Also, we need to track what has been touched to check params recursively, but avoiding duplicates.\n const touched: any[] = [].concat(...buckets);\n\n return {\n buckets,\n touched,\n };\n};\n","import * as module from '@angular/core';\n\nlet isIvy = false;\ntry {\n isIvy = module.ɵivyEnabled;\n} catch {\n // nothing to do\n}\n\nimport coreDefineProperty from '../../common/core.define-property';\nimport { extendClass } from '../../common/core.helpers';\nimport { NG_MOCKS } from '../../common/core.tokens';\nimport { isNgDef } from '../../common/func.is-ng-def';\nimport helperCreateClone from '../../mock-service/helper.create-clone';\n\nimport { NgMeta } from './types';\n\nclass EntryComponentsModule {\n protected originCFR: module.ComponentFactoryResolver['resolveComponentFactory'];\n\n public constructor(map: Map<any, any>, protected componentFactoryResolver: module.ComponentFactoryResolver) {\n this.originCFR = componentFactoryResolver.resolveComponentFactory;\n componentFactoryResolver.resolveComponentFactory = helperCreateClone(\n this.originCFR,\n undefined,\n undefined,\n (component: any, ...args: any[]) =>\n this.originCFR.apply(componentFactoryResolver, [map.get(component) ?? component, ...args] as any),\n );\n }\n}\ncoreDefineProperty(EntryComponentsModule, 'parameters', [[NG_MOCKS], [module.ComponentFactoryResolver]]);\n\nexport default (ngModule: NgMeta): void => {\n const entryComponents: any[] = [];\n for (const declaration of ngModule.declarations) {\n if (isNgDef(declaration, 'c')) {\n entryComponents.push(declaration);\n }\n }\n // the way to cause entryComponents to do its work\n const entryModule = extendClass(EntryComponentsModule);\n module.NgModule({\n // Ivy knows how to make any component an entry point,\n // but we still would like to patch resolveComponentFactory in order to provide mocks.\n entryComponents: isIvy ? [] : /* istanbul ignore next */ entryComponents,\n })(entryModule);\n ngModule.imports.push(entryModule);\n};\n","import coreReflectProvidedIn from '../../common/core.reflect.provided-in';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default (provide: any): void => {\n if (ngMocksUniverse.touches.has(provide)) {\n return;\n }\n\n const providedIn = coreReflectProvidedIn(provide);\n if (!providedIn) {\n return;\n }\n\n if (ngMocksUniverse.config.get('ngMocksDepsSkip').has(providedIn)) {\n ngMocksUniverse.config.get('ngMocksDepsSkip').add(provide);\n }\n};\n","import { mapValues } from '../../common/core.helpers';\nimport { NG_MOCKS_ROOT_PROVIDERS } from '../../common/core.tokens';\nimport { isNgInjectionToken } from '../../common/func.is-ng-injection-token';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\nimport helperResolveProvider from '../../mock-service/helper.resolve-provider';\nimport helperUseFactory from '../../mock-service/helper.use-factory';\n\nimport getRootProviderParameters from './get-root-provider-parameters';\nimport { BuilderData, NgMeta } from './types';\n\n// Mocking root providers.\nexport default (ngModule: NgMeta, { keepDef, mockDef }: BuilderData): void => {\n // Adding missed providers.\n const parameters = keepDef.has(NG_MOCKS_ROOT_PROVIDERS) ? new Set() : getRootProviderParameters(mockDef);\n if (parameters.size > 0) {\n const parametersMap = new Map();\n for (const parameter of mapValues(parameters)) {\n const mock = helperResolveProvider(parameter, parametersMap);\n if (mock) {\n ngModule.providers.push(mock);\n } else if (isNgInjectionToken(parameter)) {\n const multi =\n ngMocksUniverse.config.has('ngMocksMulti') && ngMocksUniverse.config.get('ngMocksMulti').has(parameter);\n ngModule.providers.push(helperUseFactory(parameter, () => (multi ? [] : undefined)));\n }\n }\n }\n};\n","import { mapValues } from '../../common/core.helpers';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default (excludeDef: Set<any>): void => {\n for (const def of mapValues(excludeDef)) {\n ngMocksUniverse.builtDeclarations.set(def, null);\n ngMocksUniverse.builtProviders.set(def, null);\n ngMocksUniverse.config.get('ngMocksDepsResolution').set(def, 'exclude');\n }\n};\n","import { mapValues } from '../../common/core.helpers';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default (keepDef: Set<any>): void => {\n for (const def of mapValues(keepDef)) {\n ngMocksUniverse.builtDeclarations.set(def, def);\n ngMocksUniverse.builtProviders.set(def, def);\n ngMocksUniverse.config.get('ngMocksDepsResolution').set(def, 'keep');\n }\n};\n","import { mapValues } from '../../common/core.helpers';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport tryMockDeclaration from './try-mock-declaration';\nimport tryMockProvider from './try-mock-provider';\n\nexport default (mockDef: Set<any>, defValue: Map<any, any>): void => {\n for (const def of mapValues(mockDef)) {\n ngMocksUniverse.config.get('ngMocksDepsResolution').set(def, 'mock');\n tryMockDeclaration(def, defValue);\n tryMockProvider(def, defValue);\n\n ngMocksUniverse.touches.delete(def);\n }\n};\n","import { ModuleWithProviders } from '@angular/core';\n\nimport { Type } from '../../common/core.types';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport { BuilderData } from './types';\n\nexport default (def: Type<any>, defProviders: BuilderData['defProviders']): Type<any> | ModuleWithProviders<any> => {\n const loModule = ngMocksUniverse.getBuildDeclaration(def);\n const loProviders = defProviders.has(def) ? defProviders.get(def) : undefined;\n\n return loProviders\n ? {\n ngModule: loModule,\n providers: loProviders,\n }\n : loModule;\n};\n","import { mapValues } from '../../common/core.helpers';\nimport { isNgDef } from '../../common/func.is-ng-def';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\nimport { MockModule } from '../../mock-module/mock-module';\nimport mockNgDef from '../../mock-module/mock-ng-def';\n\nexport default (\n keepDef: Set<any>,\n mockDef: Set<any>,\n replaceDef: Set<any>,\n defProviders: Map<any, any>,\n): Map<any, any> => {\n const loProviders = new Map();\n\n for (const def of [...mapValues(keepDef), ...mapValues(mockDef), ...mapValues(replaceDef)]) {\n if (!isNgDef(def, 'm')) {\n continue;\n }\n\n if (defProviders.has(def)) {\n if (!mockDef.has(def)) {\n ngMocksUniverse.flags.add('skipMock');\n }\n const [, loDef] = mockNgDef({ providers: defProviders.get(def) });\n loProviders.set(def, loDef.providers);\n ngMocksUniverse.flags.delete('skipMock');\n }\n\n ngMocksUniverse.builtDeclarations.set(def, MockModule(def));\n ngMocksUniverse.touches.delete(def);\n }\n\n return loProviders;\n};\n","import { flatten, mapValues } from '../../common/core.helpers';\nimport funcGetProvider from '../../common/func.get-provider';\nimport { isNgDef } from '../../common/func.is-ng-def';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport initModule from './init-module';\nimport skipInitModule from './skip-init-module';\nimport { BuilderData, NgMeta } from './types';\n\nconst handleDef = ({ imports, declarations }: NgMeta, def: any, defProviders: Map<any, any>): void => {\n if (isNgDef(def, 'm')) {\n const extendedDef = initModule(def, defProviders);\n imports.push(extendedDef);\n\n // adding providers to touches\n if (typeof extendedDef === 'object' && extendedDef.providers) {\n for (const provider of flatten(extendedDef.providers)) {\n ngMocksUniverse.touches.add(funcGetProvider(provider));\n }\n }\n } else {\n declarations.push(ngMocksUniverse.getBuildDeclaration(def));\n }\n\n ngMocksUniverse.touches.add(def);\n};\n\nexport default ({ configDef, keepDef, mockDef, replaceDef }: BuilderData, defProviders: Map<any, any>): NgMeta => {\n const meta: NgMeta = { imports: [], declarations: [], providers: [] };\n\n // Adding suitable leftovers.\n for (const def of [...mapValues(mockDef), ...mapValues(keepDef), ...mapValues(replaceDef)]) {\n if (skipInitModule(def, configDef)) {\n continue;\n }\n handleDef(meta, def, defProviders);\n }\n\n return meta;\n};\n","import { mapValues } from '../../common/core.helpers';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nexport default (replaceDef: Set<any>, defValue: Map<any, any>): void => {\n for (const def of mapValues(replaceDef)) {\n ngMocksUniverse.builtDeclarations.set(def, defValue.get(def));\n ngMocksUniverse.config.get('ngMocksDepsResolution').set(def, 'replace');\n }\n};\n","import { mapEntries } from '../../common/core.helpers';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport initExcludeDef from './init-exclude-def';\nimport initKeepDef from './init-keep-def';\nimport initMockDeclarations from './init-mock-declarations';\nimport initModules from './init-modules';\nimport initReplaceDef from './init-replace-def';\nimport { BuilderData } from './types';\n\nexport default ({\n configDef,\n defProviders,\n defValue,\n excludeDef,\n keepDef,\n mockDef,\n replaceDef,\n}: BuilderData): Map<any, any> => {\n ngMocksUniverse.flags.add('cachePipe');\n\n // collecting multi flags of providers.\n ngMocksUniverse.config.set('ngMocksMulti', new Set());\n // collecting all deps of providers.\n ngMocksUniverse.config.set('ngMocksDeps', new Set());\n // collecting all declarations of kept modules.\n ngMocksUniverse.config.set('ngMocksDepsSkip', new Set());\n // flags to understand how to mock nested declarations.\n ngMocksUniverse.config.set('ngMocksDepsResolution', new Map());\n for (const [k, v] of mapEntries(configDef)) {\n ngMocksUniverse.config.set(k, {\n ...ngMocksUniverse.getConfigMock().get(k),\n ...v,\n });\n }\n initKeepDef(keepDef);\n initReplaceDef(replaceDef, defValue);\n initExcludeDef(excludeDef);\n initMockDeclarations(mockDef, defValue);\n\n return initModules(keepDef, mockDef, replaceDef, defProviders);\n};\n","import { isNgDef } from '../../common/func.is-ng-def';\n\nexport default (\n def: any,\n a1: any,\n a2: any,\n defaultMockValue: any,\n): {\n config: any;\n mock: any;\n} => {\n let mock: any = def === a1 ? defaultMockValue : a1;\n let config: any = a2 ? a2 : a1 !== defaultMockValue ? a1 : undefined;\n if (isNgDef(def, 'p') && typeof a1 === 'function' && a1 !== def) {\n mock = a1;\n config = a2;\n } else if (isNgDef(def, 'i') || !isNgDef(def)) {\n config = a2;\n }\n mock = mock === config ? defaultMockValue : mock;\n\n return {\n config,\n mock,\n };\n};\n","import funcGetProvider from '../../common/func.get-provider';\n\nexport default (\n provider: any,\n): {\n multi: boolean;\n provide: any;\n} => {\n const provide = funcGetProvider(provider);\n const multi = provide !== provider && provider.multi;\n\n return {\n multi,\n provide,\n };\n};\n","import { DOCUMENT } from '@angular/common';\n\nimport coreConfig from '../../common/core.config';\nimport coreReflectProvidedIn from '../../common/core.reflect.provided-in';\nimport { isNgInjectionToken } from '../../common/func.is-ng-injection-token';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nconst skipResolution = (provide: any): boolean | undefined => {\n const resolution = ngMocksUniverse.getResolution(provide);\n if (resolution === 'keep' || resolution === 'exclude') {\n return true;\n }\n if (resolution === 'mock') {\n return false;\n }\n\n return undefined;\n};\n\nconst skipSystem = (provide: any): boolean => {\n if (!provide || provide === DOCUMENT || ngMocksUniverse.touches.has(provide)) {\n return true;\n }\n const skipByResolution = skipResolution(provide);\n if (skipByResolution !== undefined) {\n return skipByResolution;\n }\n\n if (typeof provide === 'function' && coreConfig.neverMockProvidedFunction.indexOf(provide.name) !== -1) {\n return true;\n }\n // istanbul ignore if because we mock BrowserModule\n if (isNgInjectionToken(provide) && coreConfig.neverMockToken.indexOf(provide.toString()) !== -1) {\n return true;\n }\n\n return false;\n};\n\n// Checks if we should avoid mocking of the provider.\nexport default (provide: any): boolean => {\n if (skipSystem(provide)) {\n return true;\n }\n\n // Empty providedIn or things for a platform have to be skipped.\n const providedIn = coreReflectProvidedIn(provide);\n const skip = !providedIn || providedIn === 'platform';\n if (typeof provide === 'function' && skip) {\n return true;\n }\n\n return false;\n};\n","import { isNgDef } from '../../common/func.is-ng-def';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport { BuilderData } from './types';\n\nexport default (def: any, configDef: BuilderData['configDef']): boolean => {\n if (isNgDef(def, 'i') || !isNgDef(def)) {\n return true;\n }\n if (ngMocksUniverse.touches.has(def)) {\n return true;\n }\n\n const config = configDef.get(def);\n\n return config && config.dependency;\n};\n","import ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport { BuilderData } from './types';\n\nexport default (\n replaceDef: BuilderData['replaceDef'],\n defValue: BuilderData['defValue'],\n source: any,\n value: any,\n): boolean => {\n // no reason to touch mocks\n if (ngMocksUniverse.cacheDeclarations.has(value)) {\n return true;\n }\n\n // no customizations in replacements\n if (replaceDef.has(source) && value === defValue.get(source)) {\n return true;\n }\n\n return false;\n};\n","import ngMocksUniverse from '../../common/ng-mocks-universe';\n\nimport skipDep from './skip-dep';\n\nexport default (provide: any): boolean => {\n if (skipDep(provide)) {\n return true;\n }\n\n return ngMocksUniverse.config.get('ngMocksDepsSkip').has(provide);\n};\n","import { isNgDef } from '../../common/func.is-ng-def';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\nimport { MockComponent } from '../../mock-component/mock-component';\nimport { MockDirective } from '../../mock-directive/mock-directive';\nimport { MockPipe } from '../../mock-pipe/mock-pipe';\n\nexport default (def: any, defValue: Map<any, any>): void => {\n if (isNgDef(def, 'c')) {\n ngMocksUniverse.builtDeclarations.set(def, MockComponent(def));\n }\n if (isNgDef(def, 'd')) {\n ngMocksUniverse.builtDeclarations.set(def, MockDirective(def));\n }\n if (isNgDef(def, 'p')) {\n const instance = defValue.get(def);\n ngMocksUniverse.builtDeclarations.set(\n def,\n typeof instance === 'function'\n ? MockPipe(def, instance)\n : instance && typeof instance === 'object' && typeof instance.transform === 'function'\n ? MockPipe(def, instance.transform)\n : MockPipe(def),\n );\n }\n};\n","import { isNgDef } from '../../common/func.is-ng-def';\nimport ngMocksUniverse from '../../common/ng-mocks-universe';\nimport mockHelperStub from '../../mock-helper/mock-helper.stub';\nimport helperUseFactory from '../../mock-service/helper.use-factory';\nimport mockProvider from '../../mock-service/mock-provider';\nimport { IMockBuilderConfigMock } from '../types';\n\nconst createInstance = (existing: any, instance: any, config: IMockBuilderConfigMock, isPipeFunc: boolean): any => {\n const params = isPipeFunc ? { transform: instance } : instance;\n if (config.precise) {\n return params;\n }\n\n return mockHelperStub(existing, params);\n};\n\nexport default (def: any, defValue: Map<any, any>): void => {\n if (isNgDef(def, 'i') && defValue.has(def)) {\n const config: IMockBuilderConfigMock = ngMocksUniverse.config.get(def) || {};\n const instance = defValue.get(def);\n const isPipeFunc = isNgDef(def, 'p') && typeof instance === 'function';\n ngMocksUniverse.builtProviders.set(\n def,\n helperUseFactory(def, undefined, existing => createInstance(existing, instance, config, isPipeFunc)),\n );\n } else if (isNgDef(def, 'i')) {\n ngMocksUniverse.builtProviders.set(def, mockProvider(def, true));\n }\n\n if (!isNgDef(def) && defValue.has(def)) {\n const instance = defValue.get(def);\n ngMocksUniverse.builtProviders.set(\n def,\n helperUseFactory(def, undefined, () => instance),\n );\n } else if (!isNgDef(def)) {\n ngMocksUniverse.builtProviders.set(def, mockProvider(def, true));\n }\n};\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n EmbeddedViewRef,\n Injector,\n Optional,\n QueryList,\n Self,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\n\nimport coreDefineProperty from '../common/core.define-property';\nimport coreForm from '../common/core.form';\nimport coreReflectDirectiveResolve from '../common/core.reflect.directive-resolve';\nimport { Type } from '../common/core.types';\nimport funcIsMock from '../common/func.is-mock';\nimport { MockConfig } from '../common/mock';\nimport { LegacyControlValueAccessor } from '../common/mock-control-value-accessor';\nimport decorateDeclaration from '../mock/decorate-declaration';\nimport getMock from '../mock/get-mock';\n\nimport generateTemplate from './render/generate-template';\nimport getKey from './render/get-key';\nimport { MockedComponent } from './types';\n\nconst mixRenderPrepareVcr = (\n instance: MockConfig & Record<keyof any, any>,\n type: string,\n selector: string,\n cdr: ChangeDetectorRef,\n): ViewContainerRef | undefined => {\n if (!instance[`ngMocksRender_${type}_${selector}`]) {\n instance[`ngMocksRender_${type}_${selector}`] = true;\n cdr.detectChanges();\n }\n\n return instance[`__mockView_${type}_${selector}`];\n};\n\nconst mixRenderReorderViews = (\n viewContainer: ViewContainerRef,\n views: Array<EmbeddedViewRef<any>>,\n index: number,\n): void => {\n for (const view of views.splice(index + 1)) {\n view.destroy();\n }\n\n let viewIndex = 0;\n for (const view of views) {\n if (!view) {\n continue;\n }\n viewContainer.move(view, viewIndex);\n viewIndex += 1;\n }\n};\n\nconst mixRenderApplyContext = (view: EmbeddedViewRef<any>, context: Record<any, any>): void => {\n for (const contextKey of Object.keys(view.context)) {\n view.context[contextKey] = undefined;\n }\n for (const contextKey of Object.keys(context)) {\n view.context[contextKey] = (context as any)[contextKey];\n }\n view.markForCheck();\n};\n\nconst mixRenderHandleViews = (\n vcr: ViewContainerRef,\n cdr: ChangeDetectorRef,\n templates: any[],\n views: Array<EmbeddedViewRef<any>>,\n indices: undefined | number[],\n context: Record<any, any>,\n): number => {\n let index = -1;\n\n for (const templateRef of templates) {\n index += 1;\n views[index] = views[index] || undefined;\n if ((indices && indices.indexOf(index) === -1) || !templateRef) {\n continue;\n }\n if (!(templateRef instanceof TemplateRef)) {\n throw new Error(`Cannot find TemplateRef`);\n }\n if (!views[index]) {\n views[index] = vcr.createEmbeddedView(templateRef, {});\n }\n mixRenderApplyContext(views[index], context);\n }\n cdr.detectChanges();\n\n return index;\n};\n\nconst mixRender = (instance: MockConfig & Record<keyof any, any>, cdr: ChangeDetectorRef): void => {\n // Providing a method to render any @ContentChild based on its selector.\n coreDefineProperty(\n instance,\n '__render',\n (contentChildSelector: string | [string, ...number[]], $implicit?: any, variables?: Record<keyof any, any>) => {\n const [type, key, selector, indices] = getKey(contentChildSelector);\n\n const vcr = mixRenderPrepareVcr(instance, type, selector, cdr);\n if (!vcr) {\n return;\n }\n\n const property: any = instance[key];\n const templates = property instanceof QueryList ? property.toArray() : [property];\n\n const views = instance[`ngMocksRender_${type}_${selector}_views`] || [];\n const index = mixRenderHandleViews(vcr, cdr, templates, views, indices, { ...variables, $implicit });\n\n mixRenderReorderViews(vcr, views, index);\n instance[`ngMocksRender_${type}_${selector}_views`] = views;\n cdr.detectChanges();\n },\n );\n};\n\nconst mixHideHandler = (\n instance: MockConfig & Record<keyof any, any>,\n type: string,\n selector: string,\n indices: undefined | number[],\n) => {\n const views = instance[`ngMocksRender_${type}_${selector}_views`];\n let index = -1;\n for (const view of views) {\n index += 1;\n if ((indices && indices.indexOf(index) === -1) || !view) {\n continue;\n }\n view.destroy();\n views[index] = undefined;\n }\n};\n\nconst mixHide = (instance: MockConfig & Record<keyof any, any>, changeDetector: ChangeDetectorRef): void => {\n // Providing method to hide any @ContentChild based on its selector.\n coreDefineProperty(instance, '__hide', (contentChildSelector: string | [string, ...number[]]) => {\n const [type, , selector, indices] = getKey(contentChildSelector);\n\n if (!instance[`ngMocksRender_${type}_${selector}`]) {\n return;\n }\n mixHideHandler(instance, type, selector, indices);\n\n if (!indices) {\n instance[`ngMocksRender_${type}_${selector}`] = false;\n }\n changeDetector.detectChanges();\n });\n};\n\nclass ComponentMockBase extends LegacyControlValueAccessor implements AfterContentInit {\n // istanbul ignore next\n public constructor(\n injector: Injector,\n ngControl: any, // NgControl\n changeDetector: ChangeDetectorRef,\n ) {\n super(injector, ngControl);\n if (funcIsMock(this)) {\n mixRender(this, changeDetector);\n mixHide(this, changeDetector);\n }\n }\n\n public ngAfterContentInit(): void {\n const config = (this.__ngMocksConfig as any).config;\n if (!(this as any).__rendered && config && config.render) {\n for (const block of Object.keys(config.render)) {\n const { $implicit, variables } =\n config.render[block] !== true\n ? config.render[block]\n : {\n $implicit: undefined,\n variables: {},\n };\n (this as any).__render(block, $implicit, variables);\n }\n (this as any).__rendered = true;\n }\n }\n}\n\ncoreDefineProperty(ComponentMockBase, 'parameters', [\n [Injector],\n [coreForm.NgControl || /* istanbul ignore next */ (() => undefined), new Optional(), new Self()],\n [ChangeDetectorRef],\n]);\n\nconst decorateClass = (component: Type<any>, mock: Type<any>): void => {\n const meta = coreReflectDirectiveResolve(component);\n const template = generateTemplate(meta.queries);\n const mockParams = { exportAs: meta.exportAs, selector: meta.selector, template };\n Component(decorateDeclaration(component, mock, meta, mockParams))(mock);\n};\n\n/**\n * MockComponents creates an array of mock component classes out of components passed as parameters.\n *\n * @see https://ng-mocks.sudo.eu/api/MockComponent\n *\n * ```ts\n * TestBed.configureTestingModule({\n * declarations: MockComponents(\n * Dep1Component,\n * Dep2Component,\n * ),\n * });\n * ```\n */\nexport function MockComponents(...components: Array<Type<any>>): Array<Type<MockedComponent<any>>> {\n return components.map(MockComponent);\n}\n\n/**\n * MockComponent creates a mock component class out of an arbitrary component.\n *\n * @see https://ng-mocks.sudo.eu/api/MockComponent\n *\n * ```ts\n * TestBed.configureTestingModule({\n * declarations: [\n * MockComponent(Dep1Component),\n * MockComponent(Dep2Component),\n * ],\n * });\n * ```\n */\nexport function MockComponent<TComponent>(component: Type<TComponent>): Type<MockedComponent<TComponent>> {\n return getMock(component, 'c', 'MockComponent', 'cacheComponent', ComponentMockBase, decorateClass);\n}\n","import { Query, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\n\nconst viewChildArgs: any = { read: ViewContainerRef, static: false };\n\nconst viewChildTemplate = (selector: string, key: string): string =>\n `<div *ngIf=\"ngMocksRender_${key}_${selector}\" data-${key}=\"${selector}\"><ng-template #${key}_${selector}></ng-template></div>`;\n\nconst isTemplateRefQuery = (query: Query): boolean => {\n if (query.isViewQuery) {\n return false; // ignoring all internal @ViewChild\n }\n if (query.read && query.read !== TemplateRef) {\n return false; // ignoring read of instances\n }\n if (typeof query.selector !== 'string' && !query.read) {\n return false; // ignoring class selectors if they do not read TemplateRef\n }\n\n return true;\n};\n\nexport default (queries?: Record<keyof any, any>): string => {\n const parts = ['<ng-content></ng-content>'];\n // istanbul ignore if\n if (!queries) {\n return parts.join('');\n }\n\n for (const key of Object.keys(queries)) {\n const query: Query = queries[key];\n if (!isTemplateRefQuery(query)) {\n continue;\n }\n if (typeof query.selector === 'string') {\n const selector = query.selector.replace(new RegExp('\\\\W', 'mg'), '_');\n queries[`__mockView_key_${selector}`] = new ViewChild(`key_${selector}`, viewChildArgs);\n queries[`__mockTpl_key_${selector}`] = query;\n parts.push(viewChildTemplate(selector, 'key'));\n }\n queries[`__mockView_prop_${key}`] = new ViewChild(`prop_${key}`, viewChildArgs);\n parts.push(viewChildTemplate(key, 'prop'));\n }\n\n return parts.join('');\n};\n","export default (\n contentChildSelector: string | [string, ...number[]],\n): [string, string, string, undefined | number[]] => {\n if (typeof contentChildSelector === 'string') {\n return ['key', `__mockTpl_key_${contentChildSelector}`, contentChildSelector, undefined];\n }\n\n const [key, ...indices] = contentChildSelector;\n\n return ['prop', key, key, indices.length > 0 ? indices : undefined];\n};\n","import { Type } from '../common/core.types';\nimport errorJestMock from '../common/error.jest-mock';\nimport funcGetName from '../common/func.get-name';\nimport { isNgDef } from '../common/func.is-ng-def';\nimport { MockComponent } from '../mock-component/mock-component';\nimport { MockedComponent } from '../mock-component/types';\nimport { MockDirective } from '../mock-directive/mock-directive';\nimport { MockedDirective } from '../mock-directive/types';\nimport { MockPipe } from '../mock-pipe/mock-pipe';\nimport { MockedPipe } from '../mock-pipe/types';\n\n/**\n * MockDeclarations creates an array of mock declaration classes out of declarations passed as parameters.\n *\n * @see https://ng-mocks.sudo.eu/api/MockComponent\n * @see https://ng-mocks.sudo.eu/api/MockDirective\n * @see https://ng-mocks.sudo.eu/api/MockPipe\n *\n * ```ts\n * TestBed.configureTestingModule({\n * declarations: MockDeclarations(\n * Dep1Component,\n * Dep2Directive,\n * Dep3Pipe,\n * ),\n * });\n * ```\n */\nexport function MockDeclarations(...declarations: Array<Type<any>>): Array<Type<any>> {\n return declarations.map(MockDeclaration);\n}\n\n/**\n * MockDeclaration creates a mock declaration class out of an arbitrary declaration.\n *\n * @see https://ng-mocks.sudo.eu/api/MockComponent\n * @see https://ng-mocks.sudo.eu/api/MockDirective\n * @see https://ng-mocks.sudo.eu/api/MockPipe\n *\n * ```ts\n * TestBed.configureTestingModule({\n * declarations: [\n * MockDeclaration(Dep1Component),\n * MockDeclaration(Dep2Directive),\n * MockDeclaration(Dep3Pipe),\n * ],\n * });\n * ```\n */\nexport function MockDeclaration<T>(declaration: Type<T>): Type<MockedPipe<T> | MockedDirective<T> | MockedComponent<T>>;\n\nexport function MockDeclaration<T>(\n declaration: Type<T>,\n): Type<MockedPipe<T> | MockedDirective<T> | MockedComponent<T>> {\n if (isNgDef(declaration, 'p')) {\n return MockPipe(declaration);\n }\n if (isNgDef(declaration, 'c')) {\n return MockComponent(declaration);\n }\n if (isNgDef(declaration, 'd')) {\n return MockDirective(declaration);\n }\n\n errorJestMock(declaration);\n throw new Error(\n [\n 'MockDeclaration does not know how to mock',\n typeof declaration === 'function' ? funcGetName(declaration) : declaration,\n ].join(' '),\n );\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Injector,\n OnInit,\n Optional,\n Self,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\n\nimport coreDefineProperty from '../common/core.define-property';\nimport coreForm from '../common/core.form';\nimport coreReflectDirectiveResolve from '../common/core.reflect.directive-resolve';\nimport { Type } from '../common/core.types';\nimport { LegacyControlValueAccessor } from '../common/mock-control-value-accessor';\nimport decorateDeclaration from '../mock/decorate-declaration';\nimport getMock from '../mock/get-mock';\n\nimport { MockedDirective } from './types';\n\nclass DirectiveMockBase extends LegacyControlValueAccessor implements OnInit {\n // istanbul ignore next\n public constructor(\n injector: Injector,\n ngControl: any, // NgControl\n cdr: ChangeDetectorRef,\n vcr: ViewContainerRef,\n element: ElementRef | null = null,\n template: TemplateRef<any> | null = null,\n ) {\n super(injector, ngControl);\n this.__ngMocksInstall(vcr, cdr, element, template);\n }\n\n public ngOnInit(): void {\n const config = (this.__ngMocksConfig as any).config;\n if (config?.render) {\n const { $implicit, variables } =\n config.render !== true\n ? config.render\n : {\n $implicit: undefined,\n variables: {},\n };\n (this as any).__render($implicit, variables);\n }\n }\n\n private __ngMocksInstall(\n vcr: ViewContainerRef,\n cdr: ChangeDetectorRef,\n element: ElementRef | null,\n template: TemplateRef<any> | null,\n ): void {\n // Basically any directive on ng-template is treated as structural, even it does not control render process.\n // In our case we do not if we should render it or not and due to this we do nothing.\n coreDefineProperty(this, '__element', element);\n coreDefineProperty(this, '__template', template);\n coreDefineProperty(this, '__viewContainer', vcr);\n coreDefineProperty(this, '__vcr', vcr);\n coreDefineProperty(this, '__cdr', cdr);\n coreDefineProperty(this, '__isStructural', template && vcr);\n\n // Providing method to render mock values.\n coreDefineProperty(this, '__render', ($implicit?: any, variables?: Record<keyof any, any>) => {\n if (vcr && template) {\n vcr.clear();\n vcr.createEmbeddedView(template, { ...variables, $implicit });\n cdr.detectChanges();\n }\n });\n }\n}\n\ncoreDefineProperty(DirectiveMockBase, 'parameters', [\n [Injector],\n [coreForm.NgControl || /* istanbul ignore next */ (() => undefined), new Optional(), new Self()],\n [ChangeDetectorRef],\n [ViewContainerRef],\n [ElementRef, new Optional(), new Self()],\n [TemplateRef, new Optional(), new Self()],\n]);\n\nconst decorateClass = (directive: Type<any>, mock: Type<any>): void => {\n const meta = coreReflectDirectiveResolve(directive);\n const mockParams = { exportAs: meta.exportAs, selector: meta.selector };\n const options = decorateDeclaration(directive, mock, meta, mockParams);\n Directive(options)(mock);\n};\n\n/**\n * MockDirectives creates an array of mock directive classes out of directives passed as parameters.\n *\n * @see https://ng-mocks.sudo.eu/api/MockDirective\n *\n * ```ts\n * TestBed.configureTestingModule({\n * declarations: MockDirectives(\n * Dep1Directive,\n * Dep2Directive,\n * ),\n * });\n * ```\n */\nexport function MockDirectives(...directives: Array<Type<any>>): Array<Type<MockedDirective<any>>> {\n return directives.map(MockDirective);\n}\n\n/**\n * MockDirective creates a mock directive class out of an arbitrary directive.\n *\n * @see https://ng-mocks.sudo.eu/api/MockDirective\n *\n * ```ts\n * TestBed.configureTestingModule({\n * declarations: [\n * MockDirective(Dep1Directive),\n * MockDirective(Dep2Directive),\n * ],\n * });\n * ```\n */\nexport function MockDirective<TDirective>(directive: Type<TDirective>): Type<MockedDirective<TDirective>> {\n return getMock(directive, 'd', 'MockDirective', 'cacheDirective', DirectiveMockBase, decorateClass);\n}\n","import { MockedDebugNode } from '../../mock-render/types';\n\nimport funcGetPublicProviderKeys from './func.get-public-provider-keys';\nimport funcParseInputsAndRequiresAttributes from './func.parse-inputs-and-requires-attributes';\n\nconst detectInClassic = (node: MockedDebugNode, attribute: string, value: any): boolean => {\n for (const key of funcGetPublicProviderKeys(node)) {\n const [inputs, expectedAttributes, nodeIndex] = funcParseInputsAndRequiresAttributes(node, key);\n for (const input of inputs) {\n const [prop, alias] = input.split(': ');\n if (attribute !== (alias || prop) || expectedAttributes.indexOf(prop) === -1) {\n continue;\n }\n if (value === (node.injector as any).view.nodes[nodeIndex].instance[prop]) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nconst detectInIvy = (node: MockedDebugNode, attribute: string, value: any): boolean => {\n const attrs = (node.injector as any)._tNode?.attrs || [];\n let step = 2;\n for (let index = 0; index < attrs.length; index += step) {\n // 3 is a divider between static and dynamic bindings\n if (typeof attrs[index] === 'number') {\n step = 1;\n continue;\n }\n const attr = attrs[index];\n if (attr !== attribute || !(node.injector as any)._tNode.inputs?.[attr]) {\n continue;\n }\n const [attrIndex, attrProp] = (node.injector as any)._tNode.inputs[attr];\n\n if (value === (node.injector as any)._lView?.[attrIndex][attrProp]) {\n return true;\n }\n }\n\n return false;\n};\n\nexport default (attribute: string, value: any): ((node: MockedDebugNode) => boolean) =>\n node => {\n if (detectInIvy(node, attribute, value)) {\n return true;\n }\n\n return detectInClassic(node, attribute, value);\n };\n","import { MockedDebugNode } from '../../mock-render/types';\n\nimport detectAttributeInSelectors from './detect-attribute-in-selectors';\nimport detectSelectorsFromNode from './detect-selectors-from-node';\n\nexport default (attribute: string): ((node: MockedDebugNode) => boolean) =>\n node => {\n const [selectors, attributes] = detectSelectorsFromNode(node);\n\n if (attributes.indexOf(attribute) !== -1) {\n return true;\n }\n\n if (detectAttributeInSelectors(selectors, attribute)) {\n return true;\n }\n\n return false;\n };\n","import coreInjector from '../../common/core.injector';\nimport { AnyType } from '../../common/core.types';\nimport { getSourceOfMock } from '../../common/func.get-source-of-mock';\nimport { MockedDebugNode } from '../../mock-render/types';\n\nexport default (declaration: AnyType<any>): ((node: MockedDebugNode) => boolean) => {\n const source = getSourceOfMock(declaration);\n\n return node =>\n !!node && node.providerTokens.indexOf(source) !== -1 && coreInjector(source, node.injector) !== undefined;\n};\n","import { MockedDebugNode } from '../../mock-render/types';\n\nexport default (id: string): ((node: MockedDebugNode) => boolean) =>\n node => {\n return !!node.references[id];\n };\n","import { MockedDebugNode } from '../../mock-render/types';\n\nimport detectSelectorsFromNode from './detect-selectors-from-node';\nimport detectTagNameInSelectors from './detect-tag-name-in-selectors';\n\nexport default (attribute: string): ((node: MockedDebugNode) => boolean) =>\n node => {\n const [selectors] = detectSelectorsFromNode(node);\n\n return detectTagNameInSelectors(selectors, attribute);\n };\n","export default (selectors: string[], query: string): boolean => {\n for (const selector of selectors) {\n const attributes = selector.match(/\\[([^=\\]]+)/g);\n if (!attributes) {\n continue;\n }\n\n for (const attribute of attributes) {\n if (attribute === `[${query}`) {\n return true;\n }\n }\n }\n\n return false;\n};\n","import { AnyType } from '../../common/core.types';\nimport { MockedDebugNode } from '../../mock-render/types';\n\nimport crawlByAttribute from './crawl-by-attribute';\nimport crawlByAttributeValue from './crawl-by-attribute-value';\nimport crawlByDeclaration from './crawl-by-declaration';\nimport crawlById from './crawl-by-id';\nimport crawlByTagName from './crawl-by-tag-name';\n\ntype SELECTOR = string | AnyType<any> | [any] | [any, any];\n\nconst isCrawlByAttribute = (selector: SELECTOR): selector is [string] => {\n return Array.isArray(selector) && selector.length === 1 && typeof selector[0] === 'string';\n};\n\nconst isCrawlByAttributeValue = (selector: SELECTOR): selector is [string, any] => {\n return Array.isArray(selector) && selector.length === 2 && typeof selector[0] === 'string';\n};\n\nconst isCrawlById = (selector: SELECTOR): selector is string => {\n return typeof selector === 'string' && selector.indexOf('#') === 0 && selector.length > 1;\n};\n\nconst isCrawlByTagName = (selector: SELECTOR): selector is string => {\n return typeof selector === 'string' && selector.indexOf('#') !== 0 && selector.length > 0;\n};\n\nconst isCrawlByDeclaration = (selector: SELECTOR): selector is AnyType<any> => {\n return typeof selector === 'function';\n};\n\nexport default (selector: SELECTOR): ((node: MockedDebugNode) => boolean) => {\n if (isCrawlByAttribute(selector)) {\n return crawlByAttribute(selector[0]);\n }\n if (isCrawlByAttributeValue(selector)) {\n return crawlByAttributeValue(selector[0], selector[1]);\n }\n if (isCrawlById(selector)) {\n return crawlById(selector.slice(1));\n }\n if (isCrawlByTagName(selector)) {\n return crawlByTagName(selector);\n }\n if (isCrawlByDeclaration(selector)) {\n return crawlByDeclaration(selector);\n }\n\n throw new Error('Unknown selector');\n};\n","import { MockedDebugNode } from '../../mock-render/types';\nimport funcParseProviderTokensDirectives from '../func.parse-provider-tokens-directives';\n\nimport funcGetPublicProviderKeys from './func.get-public-provider-keys';\nimport funcParseInputsAndRequiresAttributes from './func.parse-inputs-and-requires-attributes';\n\nconst collectSelectors = (node: MockedDebugNode): string[] => {\n const selectors: string[] = [];\n\n for (const token of node.providerTokens) {\n const meta = funcParseProviderTokensDirectives(node, token);\n if (meta?.selector && selectors.indexOf(meta.selector) === -1) {\n selectors.push(meta.selector);\n }\n }\n\n return selectors;\n};\n\nconst collectAttributesClassic = (node: MockedDebugNode): string[] => {\n const result: string[] = [];\n\n for (const key of funcGetPublicProviderKeys(node)) {\n const [inputs, expectedAttributes] = funcParseInputsAndRequiresAttributes(node, key);\n for (const input of inputs) {\n const [prop, alias] = input.split(': ');\n const attr = alias || prop;\n if (expectedAttributes.indexOf(prop) !== -1 && result.indexOf(attr) === -1) {\n result.push(attr);\n }\n }\n }\n\n return result;\n};\n\nconst collectAttributesIvy = (node: MockedDebugNode): string[] => {\n const result: string[] = [];\n\n const attrs = (node.injector as any)._tNode?.attrs || [];\n let step = 2;\n for (let index = 0; index < attrs.length; index += step) {\n // 3 is a divider between static and dynamic bindings\n if (typeof attrs[index] === 'number') {\n step = 1;\n continue;\n }\n const attr = attrs[index];\n if ((node.injector as any)._tNode.inputs?.[attr] && result.indexOf(attr) === -1) {\n result.push(attr);\n }\n }\n\n return result;\n};\n\nexport default (node: MockedDebugNode): [string[], string[]] => {\n const selectors = collectSelectors(node);\n const attributes = [...collectAttributesClassic(node), ...collectAttributesIvy(node)];\n\n return [selectors, attributes];\n};\n","const regExp = new RegExp('\\\\[.*?\\\\]', 'g');\n\nexport default (selectors: string[], query: string): boolean => {\n for (const selector of selectors) {\n const attributes = selector.replace(regExp, '').split(',');\n\n for (const attribute of attributes) {\n if (attribute.trim() === query) {\n return true;\n }\n }\n }\n\n return false;\n};\n","import { MockedDebugNode } from '../../mock-render/types';\n\nexport default (node: MockedDebugNode): boolean => {\n return node.nativeNode.nodeName === '#text';\n};\n","export default (a: any, b: any): boolean => {\n if (!a || !b) {\n return false;\n }\n\n return a === b;\n};\n","import detectTextNode from './detect-text-node';\n\nexport default (node: any) => {\n return detectTextNode(node)\n ? undefined\n : node.injector._tNode || // ivy\n node.injector.elDef || // classic\n undefined;\n};\n","import { DebugElement, ViewContainerRef } from '@angular/core';\n\nimport coreInjector from '../../common/core.injector';\n\nimport elDefGetNode from './el-def-get-node';\n\nconst getVcr = (node: any, child: any): undefined | ViewContainerRef => {\n if (node === child) {\n return undefined;\n }\n if (child.nativeNode.nodeName !== '#comment') {\n return undefined;\n }\n\n return coreInjector(ViewContainerRef, child.injector);\n};\n\nconst getScanViewRefRootNodes = (node: any, child: any): Array<[number, any]> => {\n const vcr = getVcr(node, child);\n if (!vcr) {\n return [];\n }\n\n const result: Array<[number, any]> = [];\n for (let vrIndex = 0; vrIndex < vcr.length; vrIndex += 1) {\n const vr = vcr.get(vrIndex);\n for (let rnIndex = 0; rnIndex < (vr as any).rootNodes.length; rnIndex += 1) {\n result.push([rnIndex, (vr as any).rootNodes[rnIndex]]);\n }\n }\n\n return result;\n};\n\nconst scanViewRef = (node: DebugElement) => {\n let result: any;\n let index: any;\n\n for (const child of node.parent?.childNodes || []) {\n for (const [rnIndex, rootNode] of getScanViewRefRootNodes(node, child)) {\n if (rootNode === node.nativeNode && (index === undefined || rnIndex < index)) {\n result = elDefGetNode(child);\n index = rnIndex;\n }\n }\n }\n\n return result;\n};\n\nexport default (node: any) => {\n return (\n node.injector._tNode?.parent || // ivy\n node.injector.elDef?.parent || // classic\n scanViewRef(node) ||\n node.parent?.injector._tNode || // ivy\n node.parent?.injector.elDef || // classic\n undefined\n );\n};\n","import { MockedDebugNode } from '../../mock-render/types';\n\nexport default (node: MockedDebugNode): string[] => {\n return (node.injector as any).elDef ? Object.keys((node.injector as any).elDef.element.publicProviders) : [];\n};\n","export default (value: any) => {\n if (typeof value === 'string') {\n return true;\n }\n if (Array.isArray(value) && typeof value[0] === 'string') {\n return true;\n }\n\n return typeof value === 'function';\n};\n","import { MockedDebugNode } from '../../mock-render/types';\nimport funcParseProviderTokensDirectives from '../func.parse-provider-tokens-directives';\n\nexport default (node: MockedDebugNode, key: string): [string[], string[], number] => {\n const config = (node.injector as any).elDef.element.publicProviders[key];\n const token = config.provider.value;\n if (!token) {\n return [[], [], 0];\n }\n const meta = funcParseProviderTokensDirectives(node, token);\n\n const requiredAttributes = config.bindings.map((binding: any) => binding.nonMinifiedName || binding.name);\n\n return [meta?.inputs || [], requiredAttributes, config.nodeIndex];\n};\n","import { DebugNode } from '@angular/core';\n\nimport { DebugNodeSelector } from '../../common/core.types';\nimport mockHelperFind from '../find/mock-helper.find';\nimport funcGetLastFixture from '../func.get-last-fixture';\n\nimport nestedCheck from './nested-check';\n\nexport default (\n sel: DebugNode | DebugNodeSelector,\n callback: (node: DebugNode) => void | boolean,\n includeTextNode = false,\n): void => {\n const el = mockHelperFind(funcGetLastFixture(), sel, undefined);\n nestedCheck(el, undefined, callback, includeTextNode);\n};\n","import mockHelperFind from '../find/mock-helper.find';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport funcParseFindArgs from '../func.parse-find-args';\n\nimport detectCrawler from './detect-crawler';\nimport detectTextNode from './detect-text-node';\nimport funcIsValidRevealSelector from './func.is-valid-reveal-selector';\nimport mockHelperCrawl from './mock-helper.crawl';\n\nexport default (...args: any[]): any[] => {\n const [el, sel] = funcParseFindArgs(args, funcIsValidRevealSelector);\n const root = mockHelperFind(funcGetLastFixture(), el, undefined);\n\n const detector = detectCrawler(sel);\n\n const result: any[] = [];\n mockHelperCrawl(root, node => {\n if (node !== root && !detectTextNode(node) && detector(node)) {\n result.push(node);\n }\n });\n\n return result;\n};\n","import mockHelperFind from '../find/mock-helper.find';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport funcParseFindArgs from '../func.parse-find-args';\nimport funcParseFindArgsName from '../func.parse-find-args-name';\n\nimport detectCrawler from './detect-crawler';\nimport detectTextNode from './detect-text-node';\nimport funcIsValidRevealSelector from './func.is-valid-reveal-selector';\nimport mockHelperCrawl from './mock-helper.crawl';\n\nconst defaultNotFoundValue = {}; // simulating Symbol\n\nexport default (...args: any[]): any => {\n const [el, sel, notFoundValue] = funcParseFindArgs(args, funcIsValidRevealSelector, defaultNotFoundValue);\n const root = mockHelperFind(funcGetLastFixture(), el, undefined);\n\n const detector = detectCrawler(sel);\n\n let result;\n mockHelperCrawl(root, node => {\n if (node !== root && !detectTextNode(node) && detector(node)) {\n result = node;\n\n return true;\n }\n\n return false;\n });\n if (result) {\n return result;\n }\n if (notFoundValue !== defaultNotFoundValue) {\n return notFoundValue;\n }\n\n throw new Error(`Cannot find a DebugElement via ngMocks.reveal(${funcParseFindArgsName(sel)})`);\n};\n","import { MockedDebugNode } from '../../mock-render/types';\n\nimport detectTextNode from './detect-text-node';\nimport elDefCompare from './el-def-compare';\nimport elDefGetNode from './el-def-get-node';\nimport elDefGetParent from './el-def-get-parent';\n\nexport default (node: MockedDebugNode): MockedDebugNode[] => {\n const elDef = elDefGetNode(node);\n if (!elDef || detectTextNode(node)) {\n return [];\n }\n\n const isDirect = (node as any).childNodes !== undefined;\n const children: MockedDebugNode[] = [];\n for (const childNode of (node as any).childNodes || node.parent?.childNodes || []) {\n const childNodeParent = elDefGetParent(childNode);\n\n if (!isDirect && !elDefCompare(elDef, childNodeParent)) {\n continue;\n }\n if (childNodeParent && !elDefCompare(elDef, childNodeParent)) {\n continue;\n }\n\n children.push(childNode);\n }\n\n if ((node as any).parent?.name === 'BODY') {\n const childNodes: any[] = (node as any).parent.childNodes;\n let start = childNodes.length;\n let end = 0;\n for (let i = childNodes.length - 1; i >= 0; i -= 1) {\n const childNode = childNodes[i];\n if (childNode.nativeNode.nodeName === '#comment') {\n end = i;\n } else if (childNode.nativeNode === node.nativeNode) {\n start = i + 1;\n break;\n }\n }\n for (let i = start; i < end; i += 1) {\n children.push(childNodes[i]);\n }\n }\n\n return children;\n};\n","import { MockedDebugNode } from '../../mock-render/types';\n\nimport detectTextNode from './detect-text-node';\nimport elDefCompare from './el-def-compare';\nimport elDefGetNode from './el-def-get-node';\nimport elDefGetParent from './el-def-get-parent';\nimport nestedCheckChildren from './nested-check-children';\n\nconst detectParent = (node: MockedDebugNode, parent: MockedDebugNode | undefined): MockedDebugNode | undefined => {\n if (parent) {\n return parent;\n }\n\n const expected = elDefGetParent(node);\n const currentParent = node.parent ? elDefGetNode(node.parent) : undefined;\n if (node.parent && elDefCompare(expected, currentParent)) {\n return node.parent;\n }\n for (const childNode of node.parent?.childNodes || []) {\n const childElDef = elDefGetNode(childNode);\n if (elDefCompare(expected, childElDef)) {\n return childNode;\n }\n }\n\n return undefined;\n};\n\nconst nestedCheck = (\n node: MockedDebugNode | null | undefined,\n parent: MockedDebugNode | undefined,\n check: (node: MockedDebugNode, parent?: MockedDebugNode) => void | boolean,\n includeTextNode = false,\n): boolean => {\n if (!node) {\n return false;\n }\n if (!includeTextNode && detectTextNode(node)) {\n return false;\n }\n if (check(node, detectParent(node, parent))) {\n return true;\n }\n\n for (const childNode of nestedCheckChildren(node)) {\n if (nestedCheck(childNode, node, check, includeTextNode)) {\n return true;\n }\n }\n\n return false;\n};\n\nexport default ((): typeof nestedCheck => nestedCheck)();\n","import { DebugNode } from '@angular/core';\n\nimport coreForm from '../../common/core.form';\nimport coreInjector from '../../common/core.injector';\n\nconst message = [\n 'Cannot find ControlValueAccessor on the element.',\n 'If it is a mock input with [formControlName],',\n 'you need either to avoid mocking ReactiveFormsModule',\n 'or to avoid accessing the control in such a way,',\n 'because this tests ReactiveFormsModule instead of own implementation.',\n].join(' ');\n\nexport default (el: DebugNode): Record<keyof any, any> => {\n const ngControl = coreForm && coreInjector(coreForm.NgControl, el.injector);\n const valueAccessor = ngControl?.valueAccessor;\n if (valueAccessor) {\n return valueAccessor;\n }\n\n const formControlDirective = coreForm && coreInjector(coreForm.FormControlDirective, el.injector);\n if (formControlDirective?.form) {\n return formControlDirective.form;\n }\n\n const ngModel = coreForm && coreInjector(coreForm.NgModel, el.injector);\n if (ngModel) {\n return ngModel;\n }\n\n throw new Error(message);\n};\n","import { DebugElement } from '@angular/core';\n\nimport coreForm from '../../common/core.form';\nimport { DebugNodeSelector } from '../../common/core.types';\nimport { isMockControlValueAccessor } from '../../common/func.is-mock-control-value-accessor';\nimport helperDefinePropertyDescriptor from '../../mock-service/helper.define-property-descriptor';\nimport mockHelperTrigger from '../events/mock-helper.trigger';\nimport mockHelperFind from '../find/mock-helper.find';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport funcParseFindArgsName from '../func.parse-find-args-name';\nimport mockHelperStubMember from '../mock-helper.stub-member';\n\nimport funcGetVca from './func.get-vca';\n\n// default html behavior\nconst triggerInput = (el: DebugElement, value: any): void => {\n mockHelperTrigger(el, 'focus');\n\n const descriptor = Object.getOwnPropertyDescriptor(el.nativeElement, 'value');\n mockHelperStubMember(el.nativeElement, 'value', value);\n mockHelperTrigger(el, 'input');\n mockHelperTrigger(el, 'change');\n if (descriptor) {\n helperDefinePropertyDescriptor(el.nativeElement, 'value', descriptor);\n el.nativeElement.value = value;\n }\n\n mockHelperTrigger(el, 'blur');\n};\n\nconst handleKnown = (valueAccessor: any, value: any): boolean => {\n if (coreForm && valueAccessor instanceof coreForm.AbstractControl) {\n valueAccessor.setValue(value);\n\n return true;\n }\n\n if (coreForm && valueAccessor instanceof coreForm.NgModel) {\n valueAccessor.update.emit(value);\n\n return true;\n }\n\n if (isMockControlValueAccessor(valueAccessor.instance)) {\n valueAccessor.instance.__simulateChange(value);\n\n return true;\n }\n\n return false;\n};\n\nconst hasListener = (el: DebugElement): boolean =>\n el.listeners.some(listener => listener.name === 'input' || listener.name === 'change');\n\nconst keys = ['onChange', '_onChange', 'changeFn', '_onChangeCallback', 'onModelChange'];\n\nexport default (selector: DebugNodeSelector, value: any): void => {\n const el = mockHelperFind(funcGetLastFixture(), selector, undefined);\n if (!el) {\n throw new Error(`Cannot find an element via ngMocks.change(${funcParseFindArgsName(selector)})`);\n }\n\n const valueAccessor = funcGetVca(el);\n if (handleKnown(valueAccessor, value) || hasListener(el)) {\n triggerInput(el, value);\n\n return;\n }\n\n for (const key of keys) {\n if (typeof valueAccessor[key] === 'function') {\n valueAccessor.writeValue(value);\n valueAccessor[key](value);\n\n return;\n }\n }\n\n throw new Error('Unsupported type of ControlValueAccessor');\n};\n","import { DebugElement } from '@angular/core';\n\nimport coreForm from '../../common/core.form';\nimport { DebugNodeSelector } from '../../common/core.types';\nimport { isMockControlValueAccessor } from '../../common/func.is-mock-control-value-accessor';\nimport mockHelperTrigger from '../events/mock-helper.trigger';\nimport mockHelperFind from '../find/mock-helper.find';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport funcParseFindArgsName from '../func.parse-find-args-name';\n\nimport funcGetVca from './func.get-vca';\n\n// default html behavior\nconst triggerTouch = (el: DebugElement): void => {\n mockHelperTrigger(el, 'focus');\n mockHelperTrigger(el, 'blur');\n};\n\nconst handleKnown = (valueAccessor: any): boolean => {\n if (coreForm && valueAccessor instanceof coreForm.AbstractControl) {\n valueAccessor.markAsTouched();\n\n return true;\n }\n\n if (isMockControlValueAccessor(valueAccessor.instance)) {\n valueAccessor.instance.__simulateTouch();\n\n return true;\n }\n\n return false;\n};\n\nconst hasListener = (el: DebugElement): boolean =>\n el.listeners.some(listener => listener.name === 'focus' || listener.name === 'blur');\n\nconst keys = ['onTouched', '_onTouched', '_cvaOnTouch', '_markAsTouched', '_onTouchedCallback', 'onModelTouched'];\n\nexport default (sel: DebugElement | DebugNodeSelector): void => {\n const el = mockHelperFind(funcGetLastFixture(), sel, undefined);\n if (!el) {\n throw new Error(`Cannot find an element via ngMocks.touch(${funcParseFindArgsName(sel)})`);\n }\n\n const valueAccessor = funcGetVca(el);\n if (handleKnown(valueAccessor) || hasListener(el)) {\n triggerTouch(el);\n\n return;\n }\n\n for (const key of keys) {\n if (typeof valueAccessor[key] === 'function') {\n valueAccessor[key]();\n\n return;\n }\n }\n\n throw new Error('Unsupported type of ControlValueAccessor');\n};\n","import { DebugNodeSelector } from '../../common/core.types';\n\nimport mockHelperTrigger from './mock-helper.trigger';\n\nexport default (selector: DebugNodeSelector, payload?: object) => {\n mockHelperTrigger(selector, 'click', payload);\n};\n","import mockHelperStub from '../mock-helper.stub';\n\n/**\n * @see https://developer.mozilla.org/de/docs/Web/Events\n */\nconst preventBubble = ['focus', 'blur', 'load', 'unload', 'change', 'reset', 'scroll'];\n\n// istanbul ignore next\nconst customEvent = (event: string, params?: EventInit) => {\n const initParams = {\n bubbles: false,\n cancelable: false,\n ...params,\n };\n const eventObj = document.createEvent('CustomEvent');\n eventObj.initCustomEvent(event, initParams.bubbles, initParams.cancelable, null);\n\n return eventObj;\n};\n\nconst eventCtor =\n typeof (Event as any) === 'function'\n ? (event: string, init?: EventInit): CustomEvent => new CustomEvent(event, init)\n : /* istanbul ignore next */ customEvent;\n\nconst keyMap: Record<string, object> = {\n alt: {\n altKey: true,\n code: 'AltLeft',\n key: 'Alt',\n location: 1,\n which: 18,\n },\n arrowdown: {\n code: 'ArrowDown',\n key: 'ArrowDown',\n location: 0,\n which: 40,\n },\n arrowleft: {\n code: 'ArrowLeft',\n key: 'ArrowLeft',\n location: 0,\n which: 37,\n },\n arrowright: {\n code: 'ArrowRight',\n key: 'ArrowRight',\n location: 0,\n which: 39,\n },\n arrowup: {\n code: 'ArrowUp',\n key: 'ArrowUp',\n location: 0,\n which: 38,\n },\n backspace: {\n code: 'Backspace',\n key: 'Backspace',\n location: 0,\n which: 8,\n },\n control: {\n code: 'ControlLeft',\n ctrlKey: true,\n key: 'Control',\n location: 1,\n which: 17,\n },\n enter: {\n code: 'Enter',\n key: 'Enter',\n location: 0,\n which: 13,\n },\n esc: {\n code: 'Escape',\n key: 'Escape',\n location: 0,\n which: 27,\n },\n meta: {\n code: 'MetaLeft',\n key: 'Meta',\n location: 1,\n metaKey: true,\n which: 91,\n },\n shift: {\n code: 'ShiftLeft',\n key: 'Shift',\n location: 1,\n shiftKey: true,\n which: 16,\n },\n space: {\n code: 'Space',\n key: ' ',\n location: 0,\n which: 32,\n },\n tab: {\n code: 'Tab',\n key: 'Tab',\n location: 0,\n which: 9,\n },\n};\nfor (let f = 1; f <= 12; f += 1) {\n keyMap[`f${f}`] = {\n code: `F${f}`,\n key: `F${f}`,\n location: 0,\n which: f + 111,\n };\n}\n\nconst getCode = (char: string): string => {\n const code = char.codePointAt(0);\n // a-z\n if (code && code >= 97 && code <= 122) {\n return `Key${char.toUpperCase()}`;\n }\n // A-Z\n if (code && code >= 65 && code <= 90) {\n return `Key${char.toUpperCase()}`;\n }\n // A-Z\n if (code && code >= 48 && code <= 57) {\n return `Digit${char}`;\n }\n\n return 'Unknown';\n};\n\nconst applyPayload = (event: Event, payload?: string): void => {\n const keyData: object = {};\n for (const key of payload ? payload.split('.') : []) {\n let map = keyMap[key];\n if (!map && key.length === 1) {\n map = {\n code: getCode(key),\n key,\n };\n }\n\n if (!map) {\n throw new Error(`Unknown event part ${key}`);\n }\n\n mockHelperStub(keyData, map);\n }\n\n if (payload) {\n mockHelperStub(event, keyData);\n }\n};\n\nexport default (\n event: string,\n init?: EventInit,\n overrides?: Partial<UIEvent | KeyboardEvent | MouseEvent | TouchEvent | Event>,\n): CustomEvent => {\n const dot = event.indexOf('.');\n const [eventName, eventPayload] = dot === -1 ? [event] : [event.slice(0, Math.max(0, dot)), event.slice(dot + 1)];\n const eventObj = eventCtor(eventName, {\n bubbles: preventBubble.indexOf(event) === -1,\n cancelable: true,\n ...init,\n });\n applyPayload(eventObj, eventPayload);\n\n if (overrides) {\n mockHelperStub(eventObj, overrides);\n }\n\n return eventObj;\n};\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\n\nimport { DebugNodeSelector } from '../../common/core.types';\nimport mockHelperFind from '../find/mock-helper.find';\nimport isDebugNode from '../format/is-debug-node';\nimport isFixture from '../format/is-fixture';\nimport isHtmlElement from '../format/is-html-element';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport mockHelperStub from '../mock-helper.stub';\n\nimport mockHelperEvent from './mock-helper.event';\n\n/**\n * @see https://developer.mozilla.org/de/docs/Web/Events\n */\nconst preventBubble = ['focus', 'blur', 'load', 'unload', 'change', 'reset', 'scroll'];\n\nconst toEventObj = (event: string | UIEvent | KeyboardEvent | MouseEvent | TouchEvent | Event): Event => {\n return typeof event === 'string'\n ? mockHelperEvent(event, {\n bubbles: preventBubble.indexOf(event) === -1,\n cancelable: true,\n })\n : event;\n};\n\nconst getNativeElement = (\n debugElement: DebugElement | HTMLElement | ComponentFixture<any> | undefined | null,\n): HTMLElement | undefined => {\n if (isDebugNode(debugElement) || isFixture(debugElement)) {\n return debugElement.nativeElement;\n }\n if (isHtmlElement(debugElement)) {\n return debugElement;\n }\n\n return undefined;\n};\n\nexport default (\n selector: DebugElement | HTMLElement | ComponentFixture<any> | DebugNodeSelector,\n eventName: string | UIEvent | KeyboardEvent | MouseEvent | TouchEvent | Event,\n payload?: Partial<UIEvent | KeyboardEvent | MouseEvent | TouchEvent | Event>,\n) => {\n const debugElement = isHtmlElement(selector) ? selector : mockHelperFind(funcGetLastFixture(), selector, undefined);\n const nativeElement = getNativeElement(debugElement);\n\n if (!nativeElement) {\n throw new Error(\n `Cannot trigger ${typeof eventName === 'string' ? eventName : eventName.type} event undefined element`,\n );\n }\n\n // nothing to emit on disabled elements\n if ((nativeElement as HTMLInputElement).disabled) {\n return;\n }\n\n const event = toEventObj(eventName);\n if (!event.target) {\n mockHelperStub(event, {\n target: nativeElement,\n });\n }\n if (payload) {\n mockHelperStub(event, payload);\n }\n nativeElement.dispatchEvent(event);\n};\n","import { isNgDef } from '../../common/func.is-ng-def';\n\nexport default (value: any): boolean => {\n return typeof value === 'function' || isNgDef(value, 't');\n};\n","import { getSourceOfMock } from '../../common/func.get-source-of-mock';\nimport { isNgDef } from '../../common/func.is-ng-def';\nimport mockHelperCrawl from '../crawl/mock-helper.crawl';\nimport mockHelperFind from '../find/mock-helper.find';\nimport funcGetFromNode from '../func.get-from-node';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport funcParseFindArgs from '../func.parse-find-args';\nimport funcParseFindArgsName from '../func.parse-find-args-name';\n\nimport funcIsValidFindInstanceSelector from './func.is-valid-find-instance-selector';\n\nconst defaultNotFoundValue = {}; // simulating Symbol\n\nexport default (...args: any[]) => {\n const [el, sel, notFoundValue] = funcParseFindArgs(args, funcIsValidFindInstanceSelector, defaultNotFoundValue);\n if (typeof sel !== 'function' && !isNgDef(sel, 't')) {\n throw new Error('Only classes or tokens are accepted');\n }\n\n const declaration = getSourceOfMock(sel);\n const result: any[] = [];\n mockHelperCrawl(\n mockHelperFind(funcGetLastFixture(), el, undefined),\n node => {\n funcGetFromNode(result, node, declaration);\n\n return result.length > 0;\n },\n true,\n );\n if (result.length > 0) {\n return result[0];\n }\n if (notFoundValue !== defaultNotFoundValue) {\n return notFoundValue;\n }\n throw new Error(`Cannot find an instance via ngMocks.findInstance(${funcParseFindArgsName(sel)})`);\n};\n","import { getSourceOfMock } from '../../common/func.get-source-of-mock';\nimport { isNgDef } from '../../common/func.is-ng-def';\nimport mockHelperCrawl from '../crawl/mock-helper.crawl';\nimport mockHelperFindAll from '../find/mock-helper.find-all';\nimport funcGetFromNode from '../func.get-from-node';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport funcParseFindArgs from '../func.parse-find-args';\n\nimport funcIsValidFindInstanceSelector from './func.is-valid-find-instance-selector';\n\nexport default <T>(...args: any[]): T[] => {\n const [el, sel] = funcParseFindArgs(args, funcIsValidFindInstanceSelector);\n if (typeof sel !== 'function' && !isNgDef(sel, 't')) {\n throw new Error('Only classes or tokens are accepted');\n }\n\n const declaration = getSourceOfMock(sel);\n const result: T[] = [];\n const scanned: any[] = [];\n const elements = mockHelperFindAll(funcGetLastFixture(), el, undefined);\n for (const element of elements) {\n mockHelperCrawl(\n element,\n node => {\n if (scanned.indexOf(node) === -1) {\n funcGetFromNode(result, node, declaration);\n scanned.push(node);\n }\n },\n true,\n );\n }\n\n return result;\n};\n","import { DebugElement } from '@angular/core';\n\nimport isFixture from '../format/is-fixture';\nimport funcGetLastFixture from '../func.get-last-fixture';\n\nconst findDebugElement = (el: any): DebugElement | undefined => {\n if (isFixture(el)) {\n return findDebugElement(el.debugElement);\n }\n if (el && el.injector && el.query) {\n return el;\n }\n\n return undefined;\n};\n\nexport default (args: any[], defaultNotFoundValue?: any): [any, any, any] => {\n let el;\n let sel;\n let notFoundValue = defaultNotFoundValue;\n if (args.length === 3) {\n el = findDebugElement(args[0]);\n sel = args[1];\n notFoundValue = args[2];\n } else if (args.length === 1) {\n el = findDebugElement(funcGetLastFixture());\n [sel] = args;\n } else if (!args[0]) {\n sel = args[1];\n } else {\n el = findDebugElement(args[0]);\n if (el) {\n sel = args[1];\n } else {\n el = findDebugElement(funcGetLastFixture());\n [sel, notFoundValue] = args;\n }\n }\n sel = findDebugElement(sel) ?? sel;\n\n return [el, sel, notFoundValue];\n};\n","import { DebugElement, Predicate } from '@angular/core';\nimport { By } from '@angular/platform-browser';\n\nimport { AnyType } from '../../common/core.types';\nimport { getSourceOfMock } from '../../common/func.get-source-of-mock';\n\nexport default (selector: string | AnyType<any> | [string] | [string, any]): Predicate<DebugElement> => {\n return Array.isArray(selector)\n ? By.css(selector.length === 1 ? `[${selector[0]}]` : `[${selector[0]}=\"${selector[1]}\"]`)\n : typeof selector === 'string'\n ? By.css(selector)\n : By.directive(getSourceOfMock(selector));\n};\n","import { DebugElement } from '@angular/core';\n\nimport isDebugNode from '../format/is-debug-node';\n\nimport funcParseFindArgs from './func.parse-find-args';\nimport funcParseFindTerm from './func.parse-find-term';\n\nexport default (...args: any[]): DebugElement[] => {\n const [el, sel] = funcParseFindArgs(args);\n if (isDebugNode(sel)) {\n return [sel as any];\n }\n\n return el?.queryAll(funcParseFindTerm(sel)) || [];\n};\n","import { DebugElement } from '@angular/core';\n\nimport isDebugNode from '../format/is-debug-node';\nimport funcParseFindArgsName from '../func.parse-find-args-name';\n\nimport funcParseFindArgs from './func.parse-find-args';\nimport funcParseFindTerm from './func.parse-find-term';\n\nconst defaultNotFoundValue = {}; // simulating Symbol\n\nexport default (...args: any[]): DebugElement => {\n const [el, sel, notFoundValue] = funcParseFindArgs(args, defaultNotFoundValue);\n const result = isDebugNode(sel) ? sel : el?.query(funcParseFindTerm(sel));\n if (result) {\n return result;\n }\n if (notFoundValue !== defaultNotFoundValue) {\n return notFoundValue;\n }\n throw new Error(`Cannot find an element via ngMocks.find(${funcParseFindArgsName(sel)})`);\n};\n","import nestedCheckChildren from '../crawl/nested-check-children';\n\nimport handleArray from './handle-array';\nimport isDebugNode from './is-debug-node';\nimport isFixture from './is-fixture';\nimport { FORMAT_SET, FORMAT_SINGLE } from './types';\n\nexport default (handlePrimitives: any) =>\n (html: any, outer = false) => {\n const format = (value: Text | Comment | FORMAT_SINGLE | FORMAT_SET, innerOuter = false): any => {\n if (Array.isArray(value)) {\n return handleArray(format, value);\n }\n if (isFixture(value)) {\n return format(value.debugElement, outer);\n }\n const result = handlePrimitives(format, value, innerOuter);\n if (result !== undefined) {\n return result;\n }\n\n if (isDebugNode(value) && value.nativeNode.nodeName === '#comment') {\n return format(nestedCheckChildren(value), true);\n }\n\n return isDebugNode(value) ? format(value.nativeNode, innerOuter) : '';\n };\n\n return Array.isArray(html) ? html.map((item: any) => format(item, outer)) : format(html, outer);\n };\n","export default (format: any, html: any) => {\n return format((html as any[]).map(item => format(item, true)).join(''));\n};\n","export default (html: Text): string => html.nodeValue ?? html.textContent ?? html.wholeText;\n","import { MockedDebugNode } from '../../mock-render/types';\n\nexport default (value: any): value is MockedDebugNode => {\n return !!value?.nativeElement || !!value?.nativeNode;\n};\n","import { MockedDebugNode } from '../../mock-render/types';\n\nexport default (value: any): value is { debugElement: MockedDebugNode } => {\n return !!value && typeof value === 'object' && value.debugElement !== undefined;\n};\n","export default (value: any): value is HTMLElement => {\n return !!value && typeof value === 'object' && value.innerHTML !== undefined;\n};\n","export default (value: any): value is Text => {\n return !!value && typeof value === 'object' && value.nodeName === '#text';\n};\n","import formatHandler from './format-handler';\nimport handleText from './handle-text';\nimport isHtmlElement from './is-html-element';\nimport isText from './is-text';\n\nconst normalizeValue = (html: string | undefined): string =>\n html\n ? html // lgtm [js/incomplete-multi-character-sanitization]\n .replace(new RegExp('\\\\s+', 'mg'), ' ')\n .replace(new RegExp('<!--.*?-->', 'mg'), '')\n .replace(new RegExp('\\\\s+', 'mg'), ' ')\n .replace(new RegExp('>\\\\s+<', 'mg'), '><')\n .replace(new RegExp('\"\\\\s+>', 'mg'), '\">')\n : '';\n\nconst normalizeText = (text: string): string =>\n text\n .replace(new RegExp('&', 'mg'), '&')\n .replace(new RegExp('\"', 'mg'), '"')\n .replace(new RegExp('<', 'mg'), '<')\n .replace(new RegExp('>', 'mg'), '>')\n .replace(new RegExp(\"'\", 'mg'), ''');\n\nconst getElementValue = (element: HTMLElement, outer: boolean): string =>\n outer ? element.outerHTML : element.innerHTML;\n\nconst handlePrimitives = (format: any, value: any, outer: boolean): string | undefined => {\n if (typeof value === 'string' || value === undefined) {\n const result = normalizeValue(value);\n\n return outer ? result : result.trim();\n }\n if (isHtmlElement(value)) {\n return format(getElementValue(value, outer));\n }\n if (isText(value)) {\n return handlePrimitives(format, normalizeText(handleText(value)), outer);\n }\n\n return undefined;\n};\n\nexport default (() => formatHandler(handlePrimitives))();\n","import formatHandler from './format-handler';\nimport handleText from './handle-text';\nimport isHtmlElement from './is-html-element';\nimport isText from './is-text';\n\nconst normalizeValue = (html: string | undefined): string => (html ? html.replace(new RegExp('\\\\s+', 'mg'), ' ') : '');\n\nconst getElementValue = (element: HTMLElement, outer: boolean): string => {\n const value = element.textContent ?? '';\n\n return outer ? value : value.trim();\n};\n\nconst handlePrimitives = (format: any, value: any, outer: boolean): string | undefined => {\n if (typeof value === 'string' || value === undefined) {\n const result = normalizeValue(value);\n\n return outer ? result : result.trim();\n }\n if (isHtmlElement(value)) {\n return format(getElementValue(value, outer));\n }\n if (isText(value)) {\n return handlePrimitives(format, handleText(value), outer);\n }\n\n return undefined;\n};\n\nexport default (() => formatHandler(handlePrimitives))();\n","import { DebugNode } from '@angular/core';\n\nexport default (node: DebugNode): DebugNode =>\n node.nativeNode?.nodeName === '#text' && node.parent ? node.parent : node;\n","import { DebugNode, InjectionToken, Injector } from '@angular/core';\n\nimport coreInjector from '../common/core.injector';\nimport { Type } from '../common/core.types';\nimport { isNgDef } from '../common/func.is-ng-def';\n\nimport { Node } from './func.get-from-node';\n\nconst getParentWithInjector = (node: (DebugNode & Node) | null): Injector | undefined => {\n let parent: DebugNode | null = node;\n while (parent?.injector.constructor.name === 'NullInjector') {\n parent = parent.parent;\n }\n\n if (parent) {\n return parent.injector;\n }\n\n return undefined;\n};\n\nexport default <T>(\n result: T[],\n node: (DebugNode & Node) | null | undefined,\n proto: Type<T> | InjectionToken<T>,\n): void => {\n if (!node?.injector || node.injector.constructor.name === 'NullInjector') {\n return;\n }\n\n const parentInjector = getParentWithInjector(node.parent);\n const parentInstance = parentInjector ? coreInjector(proto, parentInjector) : undefined;\n const instance = coreInjector(proto, node.injector);\n // a way to avoid inherited injections\n if (parentInstance === instance) {\n return;\n }\n\n if (isNgDef(proto, 't') && instance !== undefined) {\n result.push(instance);\n } else if (instance !== undefined && result.indexOf(instance) === -1) {\n result.push(instance);\n }\n};\n","import { DebugNode } from '@angular/core';\n\nimport { Type } from '../common/core.types';\n\nimport { Node } from './func.get-from-node';\nimport funcGetFromNodeElement from './func.get-from-node-element';\nimport funcGetFromNodeScan from './func.get-from-node-scan';\n\nconst detectContextByIndex = (rootView: any, index: number) => {\n if (typeof rootView[1] === 'object' && rootView[20] === index) {\n return rootView;\n }\n\n for (let i = 21; i < rootView.length; i += 1) {\n const item = rootView[i];\n if (Array.isArray(item) && typeof item[1] === 'object' && item[20] === index) {\n return item;\n }\n }\n\n return undefined;\n};\n\nconst detectContext = (node: DebugNode): any => {\n let current = node;\n let context = current.nativeNode?.__ngContext__;\n while (context === undefined && current.parent) {\n current = current.parent;\n context = current.nativeNode.__ngContext__;\n }\n if (typeof context !== 'number') {\n return context;\n }\n // welcome to A12 and its optimization\n // https://github.com/angular/angular/pull/41358\n\n const rootView = (current.injector as any)._lView;\n if (Array.isArray(rootView)) {\n return detectContextByIndex(rootView, context);\n }\n\n return undefined;\n};\n\nconst contextToNodes = (context: any): any => (Array.isArray(context) ? context : context?.lView);\n\nexport default <T>(result: T[], node: (DebugNode & Node) | null | undefined, proto: Type<T>): void => {\n if (!node || node._debugContext) {\n return;\n }\n\n const el = funcGetFromNodeElement(node);\n funcGetFromNodeScan(\n {\n el,\n nodes: contextToNodes(detectContext(node)) || [],\n normalize: item => item,\n proto,\n result,\n },\n true,\n );\n};\n","import { DebugNode } from '@angular/core';\n\nimport { Type } from '../common/core.types';\n\nconst detectGatherFlag = (gather: boolean, el: DebugNode | null, node: any): boolean => {\n // LContainer should stop the scan.\n if (Array.isArray(node)) {\n return false;\n }\n\n if (!el || !node.nodeName) {\n return gather;\n }\n\n // checking if a textNode belongs to the current element.\n if (node.nodeName === '#text') {\n return node.parentNode === el.nativeNode;\n }\n\n return false;\n};\n\nconst isNotObject = (node: any): boolean => !node || typeof node !== 'object';\n\nconst shouldBeScanned = (scanned: any[], node: any): boolean => scanned.indexOf(node) === -1 && Array.isArray(node);\n\nconst scan = <T>(\n {\n result,\n el,\n nodes,\n normalize,\n proto,\n }: {\n el: DebugNode | null;\n nodes: any[];\n normalize: (item: any) => any;\n proto: Type<T>;\n result: T[];\n },\n gatherDefault: boolean,\n scanned: any[] = [],\n): void => {\n scanned.push(nodes);\n let gather = gatherDefault;\n\n for (const raw of nodes) {\n const node = normalize(raw);\n if (isNotObject(node)) {\n continue;\n }\n\n if (shouldBeScanned(scanned, node)) {\n scan({ result, el, nodes: node, normalize, proto }, gather, scanned);\n }\n\n gather = detectGatherFlag(gather, el, node);\n if (!gather) {\n continue;\n }\n\n if (result.indexOf(node) === -1 && node instanceof proto) {\n result.push(node);\n }\n }\n};\n\nexport default (() => scan)();\n","import { DebugNode } from '@angular/core';\n\nimport { Type } from '../common/core.types';\n\nimport { Node } from './func.get-from-node';\nimport funcGetFromNodeElement from './func.get-from-node-element';\nimport funcGetFromNodeScan from './func.get-from-node-scan';\n\nconst normalize = (item: any): any => {\n if (!item || typeof item !== 'object') {\n return item;\n }\n\n for (const key of ['renderElement', 'renderText', 'instance']) {\n if (item[key]) {\n return item[key];\n }\n }\n\n return null;\n};\n\nexport default <T>(result: T[], node: (DebugNode & Node) | null | undefined, proto: Type<T>): void => {\n if (!node || !node._debugContext) {\n return;\n }\n\n const el = funcGetFromNodeElement(node);\n\n funcGetFromNodeScan(\n {\n el,\n nodes: node._debugContext.view.nodes,\n normalize,\n proto,\n result,\n },\n true,\n );\n};\n","import { DebugNode, InjectionToken } from '@angular/core';\n\nimport { Type } from '../common/core.types';\nimport { isNgDef } from '../common/func.is-ng-def';\n\nimport funcGetFromNodeInjector from './func.get-from-node-injector';\nimport funcGetFromNodeIvy from './func.get-from-node-ivy';\nimport funcGetFromNodeStandard from './func.get-from-node-standard';\n\nexport interface Node {\n _debugContext?: {\n elDef: {\n nodeIndex: number;\n };\n nodeDef: {\n nodeIndex: number;\n };\n nodeIndex: number;\n view: {\n nodes: Array<{\n instance?: any;\n renderElement?: any;\n renderText?: any;\n value?: any;\n }>;\n };\n };\n parent?: (DebugNode & Node) | null;\n}\n\nexport default <T>(\n result: T[],\n node: (DebugNode & Node) | null | undefined,\n proto: Type<T> | InjectionToken<T>,\n): T[] => {\n funcGetFromNodeInjector(result, node, proto);\n if (!isNgDef(proto, 't')) {\n funcGetFromNodeStandard(result, node, proto);\n funcGetFromNodeIvy(result, node, proto);\n }\n\n return result;\n};\n","import { ComponentFixture, getTestBed } from '@angular/core/testing';\n\nexport default () => {\n const fixtures: Array<ComponentFixture<any>> = (getTestBed() as any)._activeFixtures;\n\n return fixtures[fixtures.length - 1];\n};\n","import ngMocksUniverse from '../common/ng-mocks-universe';\n\nexport default () => {\n ngMocksUniverse.cacheDeclarations.clear();\n ngMocksUniverse.config.get('ngMocksDepsSkip')?.clear();\n};\n","import { AnyType, DebugNodeSelector } from '../common/core.types';\nimport { isNgDef } from '../common/func.is-ng-def';\n\nexport default (selector: AnyType<any> | DebugNodeSelector): string => {\n if (typeof selector === 'string') {\n return selector;\n }\n if (typeof selector === 'function') {\n return selector.name;\n }\n if (isNgDef(selector, 't')) {\n return (selector as any)._desc;\n }\n if (Array.isArray(selector)) {\n return selector[0];\n }\n if (!selector) {\n return '<EMPTY>';\n }\n\n return '<UNKNOWN>';\n};\n","import isDebugNode from './format/is-debug-node';\nimport isFixture from './format/is-fixture';\nimport funcGetLastFixture from './func.get-last-fixture';\n\nconst isSelector = (value: any): boolean => {\n if (typeof value === 'string') {\n return true;\n }\n if (Array.isArray(value) && typeof value[0] === 'string') {\n return true;\n }\n if (isFixture(value)) {\n return true;\n }\n if (isDebugNode(value)) {\n return true;\n }\n\n return true;\n};\n\nexport default (args: any[], isValidValue: (value: any) => boolean, defaultNotFoundValue?: any): [any, any, any] => {\n let el;\n let sel;\n let notFoundValue = defaultNotFoundValue;\n if (args.length === 3) {\n [el, sel, notFoundValue] = args;\n } else if (args.length === 1) {\n el = funcGetLastFixture();\n [sel] = args;\n } else if (isValidValue(args[1]) && isSelector(args[0])) {\n [el, sel] = args;\n } else {\n el = funcGetLastFixture();\n [sel, notFoundValue] = args;\n }\n\n return [el, sel, notFoundValue];\n};\n","import { DebugNode, Directive } from '@angular/core';\n\nimport coreInjector from '../common/core.injector';\nimport coreReflectDirectiveResolve from '../common/core.reflect.directive-resolve';\nimport funcGetProvider from '../common/func.get-provider';\n\nconst getMeta = (token: any): Directive | undefined => {\n try {\n return coreReflectDirectiveResolve(token);\n } catch {\n return undefined;\n }\n};\n\nexport default (el: DebugNode | null | undefined, token: any): Directive | undefined => {\n // istanbul ignore if\n if (!el) {\n return undefined;\n }\n\n try {\n const provider = funcGetProvider(token);\n const instance = coreInjector(provider, el.injector);\n\n return getMeta(instance.constructor);\n } catch {\n return undefined;\n }\n};\n","import { MockedDebugElement } from '../mock-render/types';\n\nimport mockHelperFind from './find/mock-helper.find';\nimport funcGetLastFixture from './func.get-last-fixture';\nimport funcParseProviderTokensDirectives from './func.parse-provider-tokens-directives';\nimport mockHelperGet from './mock-helper.get';\n\nconst defaultNotFoundValue = {}; // simulating Symbol\n\nconst parseArgs = (args: any[]): [MockedDebugElement | null | undefined, string, any] => [\n args[0],\n args[1],\n args.length === 3 ? args[2] : defaultNotFoundValue,\n];\n\nconst attrMatches = (attribute: string, selector: string): string | undefined => {\n const [prop, alias = ''] = attribute.split(':', 2).map(v => v.trim());\n\n if ((!alias && prop === selector) || (!!alias && alias === selector)) {\n return prop;\n }\n\n return undefined;\n};\n\nconst detectAttribute = (el: MockedDebugElement | null | undefined, attr: 'inputs' | 'outputs', sel: string) => {\n for (const token of el?.providerTokens || []) {\n const meta = funcParseProviderTokensDirectives(el, token);\n if (!meta) {\n continue;\n }\n\n for (const attrDef of meta[attr] || /* istanbul ignore next */ []) {\n const prop = attrMatches(attrDef, sel);\n if (prop) {\n return mockHelperGet(el, token)[prop];\n }\n }\n }\n\n throw new Error('Not found');\n};\n\nexport default (label: string, attr: 'inputs' | 'outputs', ...args: any[]) => {\n const [el, sel, notFoundValue] = parseArgs(args);\n\n try {\n return detectAttribute(mockHelperFind(funcGetLastFixture(), el, undefined), attr, sel);\n } catch {\n // nothing to do\n }\n if (notFoundValue !== defaultNotFoundValue) {\n return notFoundValue;\n }\n throw new Error(`Cannot find ${sel} ${label} via ngMocks.${label}`);\n};\n","import { registerMockFunction } from '../mock-service/helper.mock-service';\nimport { CustomMockFunction } from '../mock-service/types';\n\ntype param = 'jasmine' | 'jest' | 'default' | 'reset' | CustomMockFunction;\n\nconst calls: param[] = [];\n\nexport default (type: param) => {\n if (type === 'reset') {\n calls.pop();\n } else {\n calls.push(type);\n }\n const action: param | undefined = calls[calls.length - 1];\n\n if (action === 'jasmine') {\n return registerMockFunction(mockName => jasmine.createSpy(mockName));\n }\n // istanbul ignore if: because it is run with jasmine\n if (action === 'jest') {\n return registerMockFunction(name => jest.fn().mockName(name));\n }\n if (!action || action === 'default' || action === 'reset') {\n return registerMockFunction();\n }\n\n return registerMockFunction(action);\n};\n","import helperMockService from '../mock-service/helper.mock-service';\n\nimport mockHelperConsole from './mock-helper.console';\n\nconst factory = (propName: string) => helperMockService.mockFunction(`console.${propName}`);\n\n// Thanks Ivy, it does not throw an error, and we have to use injector.\nexport default mockHelperConsole(['log'], factory);\n","import coreDefineProperty from '../common/core.define-property';\n\nimport mockHelperConsole from './mock-helper.console';\n\nconst factory =\n (propName: string) =>\n (...args: any[]) => {\n const error = new Error(args.join(' '));\n coreDefineProperty(error, 'ngMocksConsoleCatch', propName);\n throw error;\n };\n\n// Thanks Ivy, it does not throw an error, and we have to use injector.\nexport default mockHelperConsole(['warn', 'error'], factory);\n","/* eslint-disable no-console */\n\nimport coreDefineProperty from '../common/core.define-property';\n\n// Thanks Ivy, it does not throw an error, and we have to use injector.\nexport default (defaultMethods: Array<keyof typeof console>, factory: (name: string) => any) =>\n (...methods: Array<keyof typeof console>): void => {\n const backup: Array<keyof typeof console> = [];\n\n beforeEach(() => {\n for (const method of defaultMethods) {\n if (methods.indexOf(method) === -1) {\n methods.push(method);\n }\n }\n\n for (const method of methods) {\n coreDefineProperty(console, `__ngMocksBackup_${method}`, (console as any)[`__ngMocksBackup_${method}`] || []);\n (console as any)[`__ngMocksBackup_${method}`].push(console[method]);\n backup.push(method);\n console[method] = factory(method) as never;\n }\n });\n\n afterEach(() => {\n for (const method of backup) {\n console[method] = (console as any)[`__ngMocksBackup_${method}`].pop();\n }\n backup.splice(0, backup.length);\n });\n };\n","import { InjectionToken } from '@angular/core';\n\nimport { flatten } from '../common/core.helpers';\nimport { AnyType } from '../common/core.types';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\nimport { IMockBuilderConfig } from '../mock-builder/types';\n\nexport default <T>(\n def: AnyType<T> | InjectionToken<T> | string | Array<AnyType<T> | InjectionToken<T> | string>,\n config?: IMockBuilderConfig,\n): void => {\n const map = ngMocksUniverse.getConfigMock();\n for (const item of flatten(def)) {\n if (config) {\n map.set(item, config);\n } else {\n map.delete(item);\n }\n }\n};\n","import { InjectionToken, Injector } from '@angular/core';\n\nimport { flatten } from '../common/core.helpers';\nimport { AnyType } from '../common/core.types';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nexport default <T>(\n def: AnyType<T> | InjectionToken<T> | string | Array<AnyType<T> | InjectionToken<T> | string>,\n callback?: (instance: undefined | T, injector: Injector) => void | Partial<T>,\n): void => {\n const map = ngMocksUniverse.getOverrides();\n for (const item of flatten(def)) {\n if (callback) {\n const set: Set<any> = map.has(item) ? map.get(item) : new Set();\n set.add(callback);\n map.set(item, set);\n } else {\n map.delete(item);\n }\n }\n};\n","import { TestBed, TestBedStatic, TestModuleMetadata } from '@angular/core/testing';\n\nimport coreDefineProperty from '../common/core.define-property';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nconst hooks: {\n after: Array<(original: TestBedStatic['resetTestingModule']) => TestBedStatic['resetTestingModule']>;\n before: Array<(original: TestBedStatic['configureTestingModule']) => TestBedStatic['configureTestingModule']>;\n} = ngMocksUniverse.global.get('faster-hooks') || {\n after: [],\n before: [],\n};\nngMocksUniverse.global.set('faster-hooks', hooks);\n\nconst configureTestingModule =\n (original: TestBedStatic['configureTestingModule']): TestBedStatic['configureTestingModule'] =>\n (moduleDef: TestModuleMetadata) => {\n ngMocksUniverse.global.set('bullet:customized', true);\n\n let final = original;\n for (const callback of hooks.before) {\n final = callback(final);\n }\n\n return final.call(TestBed, moduleDef);\n };\n\nconst resetTestingModule =\n (original: TestBedStatic['resetTestingModule']): TestBedStatic['resetTestingModule'] =>\n () => {\n if (ngMocksUniverse.global.has('bullet')) {\n if (ngMocksUniverse.global.has('bullet:customized')) {\n ngMocksUniverse.global.set('bullet:reset', true);\n }\n\n return TestBed;\n }\n ngMocksUniverse.global.delete('bullet:customized');\n ngMocksUniverse.global.delete('bullet:reset');\n let final = original;\n for (const callback of hooks.after) {\n final = callback(final);\n }\n\n return final.call(TestBed);\n };\n\nexport default () => {\n if (!(TestBed as any).ngMocksFasterInstalled) {\n TestBed.configureTestingModule = configureTestingModule(TestBed.configureTestingModule);\n TestBed.resetTestingModule = resetTestingModule(TestBed.resetTestingModule);\n coreDefineProperty(TestBed, 'ngMocksFasterInstalled', true);\n }\n\n return hooks;\n};\n","import { ComponentFixture, getTestBed, TestBed } from '@angular/core/testing';\n\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport mockHelperFasterInstall from './mock-helper.faster-install';\nimport mockHelperFlushTestBed from './mock-helper.flush-test-bed';\n\nconst resetFixtures = (id: never) => {\n const activeFixtures: Array<ComponentFixture<any> & { ngMocksStackId?: any }> =\n (getTestBed() as any)._activeFixtures || /* istanbul ignore next */ [];\n\n let active = 0;\n for (let i = activeFixtures.length - 1; i >= 0; i -= 1) {\n if (!activeFixtures[i].ngMocksStackId || activeFixtures[i].ngMocksStackId === id) {\n activeFixtures[i].ngMocksStackId = undefined;\n } else {\n active += 1;\n }\n }\n if (active === 0) {\n mockHelperFlushTestBed();\n }\n};\n\nconst idAdd = (id: any) => {\n const bulletStack: any[] = ngMocksUniverse.global.get('bullet:stack') ?? [];\n bulletStack.push(id);\n ngMocksUniverse.global.set('bullet:stack', bulletStack);\n ngMocksUniverse.global.set('bullet:stack:id', id);\n};\nconst idRemove = (id: any) => {\n const bulletStack: any[] = ngMocksUniverse.global.get('bullet:stack');\n bulletStack.splice(bulletStack.indexOf(id), 1);\n if (bulletStack.length > 0) {\n ngMocksUniverse.global.set('bullet:stack:id', bulletStack[bulletStack.length - 1]);\n } else {\n ngMocksUniverse.global.delete('bullet:stack:id');\n }\n\n resetFixtures(id as never);\n};\n\nexport default () => {\n mockHelperFasterInstall();\n\n const idAll = {};\n const idEach = {};\n\n beforeAll(() => {\n if (ngMocksUniverse.global.has('bullet:customized')) {\n TestBed.resetTestingModule();\n }\n ngMocksUniverse.global.set('bullet', true);\n idAdd(idAll);\n });\n\n beforeEach(() => {\n idAdd(idEach);\n });\n afterEach(() => {\n idRemove(idEach);\n });\n\n afterAll(() => {\n idRemove(idAll);\n ngMocksUniverse.global.delete('bullet');\n if (ngMocksUniverse.global.has('bullet:reset')) {\n TestBed.resetTestingModule();\n }\n });\n};\n","import { getTestBed } from '@angular/core/testing';\n\nexport default (): void => {\n const testBed: any = getTestBed();\n testBed._instantiated = false;\n testBed._moduleFactory = undefined;\n testBed._testModuleRef = null;\n};\n","import { Type } from '../common/core.types';\nimport { getSourceOfMock } from '../common/func.get-source-of-mock';\nimport { MockedDebugElement } from '../mock-render/types';\n\nimport mockHelperFind from './find/mock-helper.find';\nimport funcGetFromNode from './func.get-from-node';\nimport funcGetLastFixture from './func.get-last-fixture';\n\nconst defaultNotFoundValue = {}; // simulating Symbol\n\nconst parseArgs = <T>(\n args: any[],\n): {\n el: MockedDebugElement | null | undefined;\n notFoundValue: any;\n sel: Type<T>;\n} => ({\n el: args[0],\n notFoundValue: args.length === 3 ? args[2] : defaultNotFoundValue,\n sel: args[1],\n});\n\nexport default <T>(...args: any[]) => {\n const { el, sel, notFoundValue } = parseArgs<T>(args);\n const root = mockHelperFind(funcGetLastFixture(), el, undefined);\n\n const res1 = funcGetFromNode([], root, getSourceOfMock(sel));\n if (res1.length > 0) {\n return res1[0];\n }\n\n // Looking for related structural directive.\n const prevNode = root?.nativeNode.previousSibling;\n const matches =\n !prevNode || prevNode.nodeName !== '#comment' || !root || !root.parent\n ? []\n : root.parent.queryAllNodes(node => node.nativeNode === prevNode);\n const matchedNode = matches[0];\n const res2 = funcGetFromNode([], matchedNode, getSourceOfMock(sel));\n if (res2.length > 0) {\n return res2[0];\n }\n if (notFoundValue !== defaultNotFoundValue) {\n return notFoundValue;\n }\n throw new Error(`Cannot find ${sel.name} instance via ngMocks.get`);\n};\n","import { InjectionToken } from '@angular/core';\n\nimport { AnyType } from '../common/core.types';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport funcGlobalPrepare from './func.global-prepare';\n\nexport default (source: AnyType<any> | InjectionToken<any>): void => {\n funcGlobalPrepare();\n ngMocksUniverse.getDefaults().set(source, ['exclude']);\n};\n","import { InjectionToken } from '@angular/core';\n\nimport { AnyType } from '../common/core.types';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport funcGlobalPrepare from './func.global-prepare';\n\nexport default (source: AnyType<any> | InjectionToken<any>): void => {\n funcGlobalPrepare();\n ngMocksUniverse.getDefaults().set(source, ['keep']);\n};\n","import { InjectionToken } from '@angular/core';\n\nimport { AnyType } from '../common/core.types';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport funcGlobalPrepare from './func.global-prepare';\n\nexport default (source: AnyType<any> | InjectionToken<any>): void => {\n funcGlobalPrepare();\n ngMocksUniverse.getDefaults().set(source, ['mock']);\n};\n","import { AnyType } from '../common/core.types';\nimport { isNgDef } from '../common/func.is-ng-def';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport funcGlobalPrepare from './func.global-prepare';\n\nexport default (source: AnyType<any>, destination: AnyType<any>): void => {\n let fail = true;\n if (isNgDef(source, 'm') && isNgDef(destination, 'm')) {\n fail = false;\n } else if (isNgDef(source, 'c') && isNgDef(destination, 'c')) {\n fail = false;\n } else if (isNgDef(source, 'd') && isNgDef(destination, 'd')) {\n fail = false;\n } else if (isNgDef(source, 'p') && isNgDef(destination, 'p')) {\n fail = false;\n }\n\n if (fail) {\n throw new Error('Cannot replace the declaration, both have to be a Module, a Component, a Directive or a Pipe');\n }\n\n funcGlobalPrepare();\n ngMocksUniverse.getDefaults().set(source, ['replace', destination]);\n};\n","import { InjectionToken } from '@angular/core';\n\nimport { AnyType } from '../common/core.types';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport funcGlobalPrepare from './func.global-prepare';\nimport mockHelperDefaultMock from './mock-helper.default-mock';\n\nexport default (source: AnyType<any> | InjectionToken<any>): void => {\n funcGlobalPrepare();\n ngMocksUniverse.getDefaults().delete(source);\n mockHelperDefaultMock(source);\n};\n","import { TestModuleMetadata } from '@angular/core/testing';\n\nimport { flatten, mapKeys, mapValues } from '../common/core.helpers';\nimport coreReflectModuleResolve from '../common/core.reflect.module-resolve';\nimport funcGetProvider from '../common/func.get-provider';\nimport { isNgDef } from '../common/func.is-ng-def';\nimport { isNgInjectionToken } from '../common/func.is-ng-injection-token';\nimport { isNgModuleDefWithProviders } from '../common/func.is-ng-module-def-with-providers';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\nimport { MockComponent } from '../mock-component/mock-component';\nimport { MockDirective } from '../mock-directive/mock-directive';\nimport { MockModule } from '../mock-module/mock-module';\nimport { MockPipe } from '../mock-pipe/mock-pipe';\nimport mockProvider from '../mock-service/mock-provider';\n\ntype Data = {\n declarations: any[];\n exclude: Set<any>;\n imports: any[];\n keep: Set<any>;\n mock: Set<any>;\n optional: Map<any, any>;\n providers: any[];\n skip: Set<any>;\n};\n\nconst skipDef = (def: any, skip: Set<any>, exclude: Set<any>): boolean => {\n if (skip.has(def)) {\n return true;\n }\n skip.add(def);\n\n return exclude.has(def);\n};\n\nconst createMetaHandler = (\n optional: Map<any, any>,\n proto: any,\n imports: any[],\n declarations: any[],\n providers: any[],\n): void => {\n const def = optional.get(proto) || proto;\n\n if (isNgDef(def, 'm')) {\n imports.push(def);\n } else if (isNgDef(def, 'c') || isNgDef(def, 'd')) {\n declarations.push(def);\n } else if (isNgDef(def, 'p')) {\n declarations.push(def);\n providers.push(def);\n } else if (!isNgInjectionToken(def)) {\n providers.push(def);\n }\n};\n\nconst createMeta = ({ keep, skip, optional, exclude, imports, declarations, providers }: Data): TestModuleMetadata => {\n for (const proto of keep) {\n if (skip.has(proto) || exclude.has(proto) || optional.has(proto)) {\n continue;\n }\n createMetaHandler(optional, proto, imports, declarations, providers);\n }\n\n return { declarations, imports, providers };\n};\n\nconst typeMap: Array<[any, string]> = [\n ['m', 'module'],\n ['c', 'component'],\n ['d', 'directive'],\n ['p', 'pipe'],\n];\n\nconst getType = (def: any, keep: Set<any>): string => {\n if (isNgModuleDefWithProviders(def)) {\n return 'module-with-providers';\n }\n for (const [flag, value] of typeMap) {\n if (isNgDef(def, flag)) {\n return flag === 'm' && keep.has(def) ? `${value}-keep` : value;\n }\n }\n\n return '';\n};\n\nconst handleModuleWithProviders = (data: Data, def: any): void => {\n if (data.skip.has(def.ngModule)) {\n return;\n }\n data.skip.add(def.ngModule);\n if (data.exclude.has(def.ngModule)) {\n return;\n }\n\n data.imports.push(data.keep.has(def.ngModule) ? def : MockModule(def));\n};\n\nconst handleDeclaration = (data: Data, def: any, callback: any, bucket: any[]): void => {\n if (skipDef(def, data.skip, data.exclude)) {\n return;\n }\n\n bucket.push(data.keep.has(def) ? def : callback(def));\n};\n\nconst handleDestructuring = (data: Data, def: any, callback: any): void => {\n if (skipDef(def, data.skip, data.exclude)) {\n return;\n }\n\n const meta = coreReflectModuleResolve(def);\n for (const toMock of flatten([meta.declarations, meta.imports])) {\n callback(data, toMock);\n }\n for (const toMock of meta.providers ? flatten(meta.providers) : []) {\n resolveProvider(data, toMock);\n }\n};\n\nconst resolveProvider = ({ skip, keep, providers, exclude }: Data, def: any): void => {\n const provider = funcGetProvider(def);\n skip.add(provider);\n if (exclude.has(provider)) {\n return;\n }\n\n const providerDef = keep.has(provider) ? def : mockProvider(def);\n if (providerDef) {\n providers.push(providerDef);\n }\n};\n\nconst resolveMap: Record<string, any> = {\n component: MockComponent,\n directive: MockDirective,\n pipe: MockPipe,\n};\n\nconst resolveHandler = (data: Data, type: string, def: any, skipDestruction: boolean): void => {\n if (type === 'module-with-providers') {\n handleModuleWithProviders(data, def);\n } else if (type === 'module-keep') {\n handleDeclaration(data, def, MockModule, data.imports); // MockModule will not be called because the def is kept.\n } else if (type === 'module' && skipDestruction) {\n handleDeclaration(data, def, MockModule, data.imports);\n } else if (type === 'module') {\n handleDestructuring(data, def, resolve);\n } else if (resolveMap[type]) {\n handleDeclaration(data, def, resolveMap[type], data.declarations);\n } else {\n resolveProvider(data, def);\n }\n};\n\nconst resolve = (data: Data, proto: any, skipDestruction = true): void => {\n if (!proto) {\n return;\n }\n\n const type = getType(proto, data.keep);\n let def: any;\n\n // an attempt to replace declarations.\n if (type !== 'module-with-providers') {\n const value = data.optional.get(proto);\n if (value && value !== proto) {\n def = value;\n data.keep.add(def);\n }\n }\n if (!def) {\n def = proto;\n }\n\n resolveHandler(data, type, def, skipDestruction);\n};\n\nconst generateDataWithUniverse = (keep: Set<any>, mock: Set<any>, exclude: Set<any>, optional: Map<any, any>): void => {\n for (const k of mapKeys(ngMocksUniverse.getDefaults())) {\n const v = ngMocksUniverse.getBuildDeclaration(k);\n if (keep.has(k) || mock.has(k) || exclude.has(k)) {\n continue;\n }\n optional.set(k, v);\n\n if (v === null) {\n exclude.add(k);\n } else if (v === undefined) {\n mock.add(k);\n } else if (k === v) {\n keep.add(k);\n }\n }\n};\n\nconst generateData = (protoKeep: any, protoMock: any, protoExclude: any): Data => {\n const keep = new Set(flatten(protoKeep || []));\n const mock = new Set(flatten(protoMock || []));\n const exclude = new Set(flatten(protoExclude || []));\n const optional = new Map();\n generateDataWithUniverse(keep, mock, exclude, optional);\n\n return {\n declarations: [],\n exclude,\n imports: [],\n keep,\n mock,\n optional,\n providers: [],\n skip: new Set(),\n };\n};\n\nexport default (keep: any, mock: any = null, exclude: any = null): TestModuleMetadata => {\n const data: Data = generateData(keep, mock, exclude);\n\n const resolutions = new Map();\n ngMocksUniverse.config.set('ngMocksDepsResolution', resolutions);\n for (const mockDef of mapValues(data.keep)) {\n resolutions.set(mockDef, 'keep');\n }\n for (const mockDef of mapValues(data.exclude)) {\n resolutions.set(mockDef, 'exclude');\n }\n\n ngMocksUniverse.config.set('mockNgDefResolver', new Map());\n for (const def of mapValues(data.mock)) {\n resolutions.set(def, 'mock');\n if (data.optional.has(def)) {\n continue;\n }\n resolve(data, def, false);\n }\n const meta = createMeta(data);\n ngMocksUniverse.config.delete('mockNgDefResolver');\n ngMocksUniverse.config.delete('ngMocksDepsResolution');\n\n return meta;\n};\n","import mockHelperAttributes from './mock-helper.attributes';\n\nexport default (...args: any[]) => mockHelperAttributes('input', 'inputs', ...args);\n","import coreConfig from '../common/core.config';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport mockHelperCrawl from './crawl/mock-helper.crawl';\nimport mockHelperReveal from './crawl/mock-helper.reveal';\nimport mockHelperRevealAll from './crawl/mock-helper.reveal-all';\nimport mockHelperChange from './cva/mock-helper.change';\nimport mockHelperTouch from './cva/mock-helper.touch';\nimport mockHelperClick from './events/mock-helper.click';\nimport mockHelperEvent from './events/mock-helper.event';\nimport mockHelperTrigger from './events/mock-helper.trigger';\nimport mockHelperFindInstance from './find-instance/mock-helper.find-instance';\nimport mockHelperFindInstances from './find-instance/mock-helper.find-instances';\nimport mockHelperFind from './find/mock-helper.find';\nimport mockHelperFindAll from './find/mock-helper.find-all';\nimport mockHelperFormatHtml from './format/mock-helper.format-html';\nimport mockHelperFormatText from './format/mock-helper.format-text';\nimport mockHelperAutoSpy from './mock-helper.auto-spy';\nimport mockHelperConsoleIgnore from './mock-helper.console-ignore';\nimport mockHelperConsoleThrow from './mock-helper.console-throw';\nimport mockHelperDefaultConfig from './mock-helper.default-config';\nimport mockHelperDefaultMock from './mock-helper.default-mock';\nimport mockHelperFaster from './mock-helper.faster';\nimport mockHelperFlushTestBed from './mock-helper.flush-test-bed';\nimport mockHelperGet from './mock-helper.get';\nimport mockHelperGlobalExclude from './mock-helper.global-exclude';\nimport mockHelperGlobalKeep from './mock-helper.global-keep';\nimport mockHelperGlobalMock from './mock-helper.global-mock';\nimport mockHelperGlobalReplace from './mock-helper.global-replace';\nimport mockHelperGlobalWipe from './mock-helper.global-wipe';\nimport mockHelperGuts from './mock-helper.guts';\nimport mockHelperInput from './mock-helper.input';\nimport mockHelperOutput from './mock-helper.output';\nimport mockHelperReset from './mock-helper.reset';\nimport mockHelperStub from './mock-helper.stub';\nimport mockHelperStubMember from './mock-helper.stub-member';\nimport mockHelperHide from './render/mock-helper.hide';\nimport mockHelperRender from './render/mock-helper.render';\nimport mockHelperFindTemplateRef from './template-ref/mock-helper.find-template-ref';\nimport mockHelperFindTemplateRefs from './template-ref/mock-helper.find-template-refs';\n\nexport default {\n autoSpy: mockHelperAutoSpy,\n change: mockHelperChange,\n click: mockHelperClick,\n config: (config: {\n mockRenderCacheSize?: number | null;\n onMockInstanceRestoreNeed?: 'throw' | 'warn' | 'i-know-but-disable' | null;\n onTestBedFlushNeed?: 'throw' | 'warn' | 'i-know-but-disable' | null;\n }) => {\n const flags = ngMocksUniverse.global.get('flags');\n for (const flag of ['onTestBedFlushNeed', 'onMockInstanceRestoreNeed'] as const) {\n if (config[flag] === null) {\n flags[flag] = coreConfig[flag];\n } else if (config[flag] !== undefined) {\n flags[flag] = config[flag];\n }\n }\n if (config.mockRenderCacheSize === null) {\n ngMocksUniverse.global.delete('mockRenderCacheSize');\n } else if (config.mockRenderCacheSize !== undefined) {\n ngMocksUniverse.global.set('mockRenderCacheSize', config.mockRenderCacheSize);\n }\n },\n crawl: mockHelperCrawl,\n defaultConfig: mockHelperDefaultConfig,\n defaultMock: mockHelperDefaultMock,\n event: mockHelperEvent,\n faster: mockHelperFaster,\n find: mockHelperFind,\n findAll: mockHelperFindAll,\n findInstance: mockHelperFindInstance,\n findInstances: mockHelperFindInstances,\n findTemplateRef: mockHelperFindTemplateRef,\n findTemplateRefs: mockHelperFindTemplateRefs,\n flushTestBed: mockHelperFlushTestBed,\n formatHtml: mockHelperFormatHtml,\n formatText: mockHelperFormatText,\n get: mockHelperGet,\n globalExclude: mockHelperGlobalExclude,\n globalKeep: mockHelperGlobalKeep,\n globalMock: mockHelperGlobalMock,\n globalReplace: mockHelperGlobalReplace,\n globalWipe: mockHelperGlobalWipe,\n guts: mockHelperGuts,\n hide: mockHelperHide,\n ignoreOnConsole: mockHelperConsoleIgnore,\n input: mockHelperInput,\n output: mockHelperOutput,\n render: mockHelperRender,\n reset: mockHelperReset,\n reveal: mockHelperReveal,\n revealAll: mockHelperRevealAll,\n stub: mockHelperStub,\n stubMember: mockHelperStubMember,\n throwOnConsole: mockHelperConsoleThrow,\n touch: mockHelperTouch,\n trigger: mockHelperTrigger,\n};\n","import mockHelperAttributes from './mock-helper.attributes';\n\nexport default (...args: any[]) => mockHelperAttributes('output', 'outputs', ...args);\n","import coreConfig from '../common/core.config';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nexport default (): void => {\n ngMocksUniverse.builtDeclarations = new Map();\n ngMocksUniverse.builtProviders = new Map();\n ngMocksUniverse.cacheDeclarations = new Map();\n ngMocksUniverse.cacheProviders = new Map();\n ngMocksUniverse.config = new Map();\n ngMocksUniverse.configInstance = new Map();\n ngMocksUniverse.flags = new Set(coreConfig.flags);\n ngMocksUniverse.touches = new Set();\n};\n","import helperExtractPropertyDescriptor from '../mock-service/helper.extract-property-descriptor';\n\nexport default <T extends object>(\n instance: T & { __ngMocks__source?: object },\n key: any,\n value: any,\n encapsulation?: 'get' | 'set',\n): any => {\n const def = helperExtractPropertyDescriptor(instance, key) ?? {};\n\n if (!encapsulation && def.set && (def.set as any).__ngMocksProxy) {\n def.set(value);\n\n return value;\n }\n\n const descriptor: PropertyDescriptor = {\n configurable: true,\n enumerable: true,\n };\n if (encapsulation === 'get' && def.set) {\n descriptor.set = def.set;\n } else if (encapsulation === 'set' && def.get) {\n descriptor.get = def.get;\n }\n if (encapsulation) {\n descriptor[encapsulation] = value;\n } else {\n descriptor.writable = true;\n descriptor.value = value;\n }\n\n Object.defineProperty(instance, key, descriptor);\n\n return value;\n};\n","import helperMockService from '../mock-service/helper.mock-service';\nimport { MockedFunction } from '../mock-service/types';\n\nexport default <T = MockedFunction>(instance: any, override: any, style?: 'get' | 'set'): T => {\n if (typeof override === 'string') {\n return helperMockService.mock(instance, override, style);\n }\n\n // if someone is giving us a function, then we should swap instance and overrides.\n // so in the end the function can be called, but it also has all desired properties.\n let correctInstance = instance;\n let applyOverrides = override;\n const skipProps = ['__zone_symbol__unconfigurables'];\n if (typeof override === 'function') {\n correctInstance = helperMockService.createClone(override);\n applyOverrides = instance;\n skipProps.push(...Object.getOwnPropertyNames(correctInstance));\n }\n\n for (const key of Object.getOwnPropertyNames(applyOverrides)) {\n const desc = skipProps.indexOf(key) === -1 ? Object.getOwnPropertyDescriptor(applyOverrides, key) : undefined;\n helperMockService.definePropertyDescriptor(correctInstance, key, desc);\n }\n\n return correctInstance;\n};\n","/* eslint-disable max-lines */\n\nimport { DebugNode, EventEmitter, InjectionToken, Injector, Provider, TemplateRef } from '@angular/core';\nimport { ComponentFixture, TestModuleMetadata } from '@angular/core/testing';\n\nimport { AnyType, DebugNodeSelector, Type } from '../common/core.types';\nimport { NgModuleWithProviders } from '../common/func.is-ng-module-def-with-providers';\nimport { IMockBuilderConfig } from '../mock-builder/types';\nimport { MockedDebugElement, MockedDebugNode } from '../mock-render/types';\nimport { CustomMockFunction, MockedFunction } from '../mock-service/types';\n\nimport { FORMAT_SET, FORMAT_SINGLE } from './format/types';\nimport mockHelperObject from './mock-helper.object';\n\n/**\n * ngMocks provides a lot of tools to simply testing.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks\n */\nexport const ngMocks: {\n /**\n * ngMocks.autoSpy installs proper spies instead of empty functions.\n *\n * @see https://ng-mocks.sudo.eu/extra/auto-spy\n */\n autoSpy(type: 'jasmine' | 'jest' | 'default' | 'reset'): void;\n\n /**\n * ngMocks.autoSpy installs proper spies instead of empty functions.\n *\n * @see https://ng-mocks.sudo.eu/extra/auto-spy\n */\n autoSpy(type: CustomMockFunction): void;\n\n /**\n * ngMocks.defaultConfig sets the default config of declarations for MockBuilder.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/defaultConfig\n */\n defaultConfig<T>(token: string | InjectionToken<T> | AnyType<T>, config?: IMockBuilderConfig): void;\n\n /**\n * ngMocks.defaultMock sets default customizations of mock tokens.\n * It helps to avoid repetitions from test to test.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/defaultMock\n */\n defaultMock<T>(\n token: InjectionToken<T>,\n handler?: (value: undefined | T, injector: Injector) => undefined | Partial<T>,\n config?: IMockBuilderConfig,\n ): void;\n\n /**\n * ngMocks.defaultMock sets default customizations of mock string tokens.\n * It helps to avoid repetitions from test to test.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/defaultMock\n */\n defaultMock<T = any>(\n token: string,\n handler?: (value: undefined | T, injector: Injector) => undefined | Partial<T>,\n config?: IMockBuilderConfig,\n ): void;\n\n /**\n * ngMocks.defaultMock sets default customizations of mock declarations.\n * It helps to avoid repetitions from test to test.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/defaultMock\n */\n defaultMock<T>(\n def: AnyType<T>,\n handler?: (value: T, injector: Injector) => void | Partial<T>,\n config?: IMockBuilderConfig,\n ): void;\n\n /**\n * ngMocks.defaultMock sets default customizations of mock declarations and tokens.\n * It helps to avoid repetitions from test to test.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/defaultMock\n */\n defaultMock<T = any>(\n defs: Array<AnyType<T> | InjectionToken<T>>,\n handler?: (value: undefined | T, injector: Injector) => undefined | Partial<T>,\n config?: IMockBuilderConfig,\n ): void;\n\n /**\n * ngMocks.globalExclude configures which declarations, providers and tokens\n * should be excluded from mocks.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/globalExclude\n *\n * ```ts\n * ngMocks.globalExclude(TranslationModule);\n * ```\n */\n globalExclude(source: AnyType<any> | InjectionToken<any>): void;\n\n /**\n * ngMocks.globalKeep configures which declarations, providers and tokens\n * should not be mocked and will stay as they are in mocks.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/globalKeep\n *\n * ```ts\n * ngMocks.globalKeep(TranslationModule);\n * ```\n */\n globalKeep(source: AnyType<any> | InjectionToken<any>): void;\n\n /**\n * ngMocks.globalMock configures which declarations, providers and tokens\n * should be mocked in kept declarations.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/globalMock\n *\n * ```ts\n * ngMocks.globalMock(TranslationModule);\n * ```\n */\n globalMock(source: AnyType<any> | InjectionToken<any>): void;\n\n /**\n * ngMocks.globalReplace configures which declarations, providers and tokens\n * should be substituted in mocks.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/globalReplace\n *\n * ```ts\n * ngMocks.globalReplace(BrowserAnimationsModule, NoopAnimationsModule);\n * ```\n */\n globalReplace(source: AnyType<any>, destination: AnyType<any>): void;\n\n /**\n * ngMocks.globalWipe resets all customizations of ngMocks.global* and mgMocks.default* functions.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/globalWipe\n *\n * ```ts\n * ngMocks.globalWipe(TranslationModule);\n * ngMocks.globalWipe(BrowserAnimationsModule);\n * ```\n */\n globalWipe(source: AnyType<any> | InjectionToken<any>): void;\n\n /**\n * ngMocks.change triggers ControlValueAccessor update.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/change\n */\n change(elSelector: DebugNodeSelector, value: any): void;\n\n /**\n * ngMocks.touch triggers ControlValueAccessor touch.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/touch\n */\n touch(elSelector: DebugNode | DebugNodeSelector): void;\n\n /**\n * ngMocks.click properly simulates a click on an element.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/click\n */\n click(elSelector: HTMLElement | DebugNodeSelector, payload?: Partial<MouseEvent>): void;\n\n /**\n * ngMocks.trigger lets trigger custom events on DebugElements.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/trigger\n *\n * ```ts\n * ngMocks.trigger(el, new CustomEvent('my-event'));\n * ```\n */\n trigger(elSelector: DebugNodeSelector, event: Event): void;\n\n /**\n * ngMocks.trigger lets trigger custom events on DebugElements.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/trigger\n *\n * ```ts\n * ngMocks.trigger(el, 'click');\n * ngMocks.trigger(el, 'keydown.control.shift.z');\n * ```\n */\n trigger(\n elSelector: HTMLElement | DebugNodeSelector,\n event: string,\n payload?: Partial<UIEvent | KeyboardEvent | MouseEvent | TouchEvent>,\n ): void;\n\n /**\n * ngMocks.event builds correct event objects.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/event\n */\n event(\n event: string,\n init?: EventInit,\n overrides?: Partial<UIEvent | KeyboardEvent | MouseEvent | TouchEvent | Event>,\n ): Event;\n\n /**\n * ngMocks.render renders a templateRef or DebugElement.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/render\n *\n * ```ts\n * ngMocks.header(component, headerEl);\n * ```\n */\n render(\n instance: object,\n template: TemplateRef<any> | DebugNode,\n $implicit?: any,\n variables?: Record<keyof any, any>,\n ): void;\n\n /**\n * ngMocks.render renders a structural directive.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/render\n *\n * ```ts\n * ngMocks.render(component, directiveInstance);\n * ```\n */\n render(instance: object, directive: object, $implicit?: any, variables?: Record<keyof any, any>): void;\n\n /**\n * ngMocks.hide hides a rendered templateRef or DebugElement.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/hide\n *\n * ```ts\n * ngMocks.hide(component, headerEl);\n * ```\n */\n hide(instance: object, tpl?: TemplateRef<any> | DebugNode): void;\n\n /**\n * ngMocks.hide hides a rendered structural directive.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/hide\n *\n * ```ts\n * ngMocks.hide(component, directiveInstance);\n * ```\n */\n hide(instance: object, directive: object): void;\n\n /**\n * ngMocks.input allows to get an input value without knowing\n * which component / directive it belongs to.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/input\n *\n * ```ts\n * const input = ngMocks.input('app-component', 'version');\n * ```\n */\n input<T = any>(elSelector: DebugNodeSelector, input: string): T;\n\n /**\n * ngMocks.input allows to get an input value without knowing\n * which component / directive it belongs to, otherwise the notFoundValue.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/input\n *\n * ```ts\n * const input = ngMocks.input('app-component', 'version', undefined);\n * ```\n */\n input<T = any, D = undefined>(elSelector: DebugNodeSelector, input: string, notFoundValue: D): D | T;\n\n /**\n * ngMocks.output allows to get an output emitter without knowing\n * which component / directive it belongs to.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/output\n *\n * ```ts\n * const outputEmitter = ngMocks.output('app-component', 'update');\n * ```\n */\n output<T = any>(elSelector: DebugNodeSelector, output: string): EventEmitter<T>;\n\n /**\n * ngMocks.output allows to get an output emitter without knowing\n * which component / directive it belongs to, otherwise the notFoundValue.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/output\n *\n * ```ts\n * const outputEmitter = ngMocks.output('app-component', 'update', undefined);\n * ```\n */\n output<T = any, D = undefined>(elSelector: DebugNodeSelector, output: string, notFoundValue: D): D | EventEmitter<T>;\n\n /**\n * ngMocks.find searches for the DebugElement of a particular component,\n * and returns the first found.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/find\n *\n * ```ts\n * const el = ngMocks.find(MyComponent);\n * ```\n */\n find<T>(component: Type<T>): MockedDebugElement<T>;\n\n /**\n * ngMocks.find searches for the DebugElement of a particular component\n * starting from an element, and returns the first found.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/find\n *\n * ```ts\n * const el = ngMocks.find(fixture.debugElement, MyComponent);\n * ```\n */\n find<T>(\n debugElement: MockedDebugElement | ComponentFixture<any> | undefined | null,\n component: Type<T>,\n ): MockedDebugElement<T>;\n\n /**\n * ngMocks.find searches for the DebugElement of a particular component,\n * and returns the first found, otherwise the notFoundValue.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/find\n *\n * ```ts\n * const el = ngMocks.find(MyComponent, undefined);\n * ```\n */\n find<T, D>(component: Type<T>, notFoundValue: D): D | MockedDebugElement<T>;\n\n /**\n * ngMocks.find searches for the DebugElement of a particular component\n * starting from an element, and returns the first found, otherwise the notFoundValue.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/find\n *\n * ```ts\n * const el = ngMocks.find(fixture, MyComponent, undefined);\n * ```\n */\n find<T, D>(\n debugElement: MockedDebugElement | ComponentFixture<any> | undefined | null,\n component: Type<T>,\n notFoundValue: D,\n ): D | MockedDebugElement<T>;\n\n /**\n * ngMocks.find searches for the DebugElement based on css selector,\n * and returns the first found.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/find\n *\n * ```ts\n * const el = ngMocks.find('.header');\n * const el = ngMocks.find('[data-key=5]');\n * const el = ngMocks.find(['data-key', 5]);\n * ```\n */\n find<T = any>(cssSelector: string | [string] | [string, string | number]): MockedDebugElement<T>;\n\n /**\n * ngMocks.find searches for the DebugElement based on css selector\n * starting from an element, and returns the first found.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/find\n *\n * ```ts\n * const el = ngMocks.find(fixture.debugElement, '.header');\n * const el = ngMocks.find(fixture, '[data-key=5]');\n * const el = ngMocks.find(debugElement, ['data-key', 5]);\n * ```\n */\n find<T = any>(\n debugElement: MockedDebugElement | ComponentFixture<any> | undefined | null,\n cssSelector: string | [string] | [string, string | number],\n ): MockedDebugElement<T>;\n\n /**\n * ngMocks.find searches for the DebugElement based on css selector,\n * and returns the first found, otherwise the notFoundValue.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/find\n *\n * ```ts\n * const el = ngMocks.find('.header', undefined);\n * const el = ngMocks.find('[data-key=5]', null);\n * const el = ngMocks.find(['data-key', 5], null);\n * ```\n */\n find<T = any, D = undefined>(\n cssSelector: string | [string] | [string, string | number],\n notFoundValue: D,\n ): D | MockedDebugElement<T>;\n\n /**\n * ngMocks.find searches for the DebugElement based on css selector\n * starting from an element, and returns the first found, otherwise the notFoundValue.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/find\n *\n * ```ts\n * const el = ngMocks.find(fixture.debugElement, '.header', undefined);\n * const el = ngMocks.find(fixture, '[data-key=5]', null);\n * const el = ngMocks.find(debugElement, ['data-key', 5], null);\n * ```\n */\n find<T = any, D = undefined>(\n debugElement: MockedDebugElement | ComponentFixture<any> | undefined | null,\n cssSelector: string | [string] | [string, string | number],\n notFoundValue: D,\n ): D | MockedDebugElement<T>;\n\n /**\n * ngMocks.findAll searches for all DebugElements of a particular component,\n * and returns an array of them.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findAll\n *\n * ```ts\n * const all = ngMocks.findAll(MyComponent);\n * ```\n */\n findAll<T>(component: Type<T>): Array<MockedDebugElement<T>>;\n\n /**\n * ngMocks.findAll searches for all DebugElements of a particular component\n * starting from an element, and returns an array of them.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findAll\n *\n * ```ts\n * const all = ngMocks.findAll(fixture.debugElement, MyComponent);\n * ```\n */\n findAll<T>(\n debugElement: MockedDebugElement | ComponentFixture<any> | undefined | null,\n component: Type<T>,\n ): Array<MockedDebugElement<T>>;\n\n /**\n * ngMocks.findAll searches for all DebugElements based on css selector,\n * and returns an array of them.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findAll\n *\n * ```ts\n * const all = ngMocks.findAll('.header');\n * const all = ngMocks.findAll('[data-key=5]');\n * const all = ngMocks.findAll(['data-key', 5]);\n * ```\n */\n findAll<T = any>(cssSelector: string | [string] | [string, string | number]): Array<MockedDebugElement<T>>;\n\n /**\n * ngMocks.findAll searches for all DebugElements based on css selector\n * starting from an element, and returns an array of them.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findAll\n *\n * ```ts\n * const all = ngMocks.findAll(fixture.debugElement, '.header');\n * const all = ngMocks.findAll(fixture, '[data-key=5]');\n * const all = ngMocks.findAll(debugElement, ['data-key', 5]);\n * ```\n */\n findAll<T = any>(\n debugElement: MockedDebugElement | ComponentFixture<any> | undefined | null,\n cssSelector: string | [string] | [string, string | number],\n ): Array<MockedDebugElement<T>>;\n\n /**\n * ngMocks.reveal allows finding DebugNodes which belong to ng-container or ng-template.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reveal\n *\n * ```ts\n * const ngContainer = ngMocks.reveal(HeaderComponent);\n * ```\n */\n reveal<T>(selector: AnyType<T>): MockedDebugNode<T> | MockedDebugElement<T>;\n\n /**\n * ngMocks.reveal allows finding DebugNodes which belong to ng-container or ng-template\n * starting from an element.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reveal\n *\n * ```ts\n * const ngContainer = ngMocks.reveal('header', HeaderComponent);\n * ```\n */\n reveal<T>(elSelector: DebugNodeSelector, selector: AnyType<T>): MockedDebugNode<T> | MockedDebugElement<T>;\n\n /**\n * ngMocks.reveal allows finding DebugNodes which belong to ng-container or ng-template.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reveal\n *\n * ```ts\n * const ngContainer = ngMocks.reveal(['tpl', 'header']);\n * ```\n */\n reveal<T = any>(selector: string | [string] | [string, any]): MockedDebugNode<T> | MockedDebugElement<T>;\n\n /**\n * ngMocks.reveal allows finding DebugNodes which belong to ng-container or ng-template\n * starting from an element.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reveal\n *\n * ```ts\n * const ngContainer = ngMocks.reveal('header', ['tpl', 'header']);\n * ```\n */\n reveal<T = any>(\n elSelector: DebugNodeSelector,\n selector: string | [string] | [string, any],\n ): MockedDebugNode<T> | MockedDebugElement<T>;\n\n /**\n * ngMocks.reveal allows finding DebugNodes which belong to ng-container or ng-template,\n * otherwise the notFoundValue.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reveal\n *\n * ```ts\n * const ngContainer = ngMocks.reveal(HeaderComponent, undefined);\n * ```\n */\n reveal<T, D>(selector: AnyType<T>, notFoundValue: D): D | MockedDebugNode<T> | MockedDebugElement<T>;\n\n /**\n * ngMocks.reveal allows finding DebugNodes which belong to ng-container or ng-template\n * starting from an element, otherwise the notFoundValue.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reveal\n *\n * ```ts\n * const ngContainer = ngMocks.reveal('sidebar', HeaderComponent, undefined);\n * ```\n */\n reveal<T, D>(\n elSelector: DebugNodeSelector,\n selector: AnyType<T>,\n notFoundValue: D,\n ): D | MockedDebugNode<T> | MockedDebugElement<T>;\n\n /**\n * ngMocks.reveal allows finding DebugNodes which belong to ng-container or ng-template,\n * otherwise the notFoundValue.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reveal\n *\n * ```ts\n * const ngContainer = ngMocks.reveal(['tpl', 'header'], undefined);\n * ```\n */\n reveal<T = any, D = undefined>(\n selector: string | [string] | [string, any],\n notFoundValue: D,\n ): D | MockedDebugNode<T> | MockedDebugElement<T>;\n\n /**\n * ngMocks.reveal allows finding DebugNodes which belong to ng-container or ng-template\n * starting from an element, otherwise the notFoundValue.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reveal\n *\n * ```ts\n * const ngContainer = ngMocks.reveal('sidebar', ['tpl', 'header'], undefined);\n * ```\n */\n reveal<T = any, D = undefined>(\n elSelector: DebugNodeSelector,\n selector: string | [string] | [string, any],\n notFoundValue: D,\n ): D | MockedDebugNode<T> | MockedDebugElement<T>;\n\n /**\n * ngMocks.revealAll allows finding all DebugNodes which belong to ng-container or ng-template.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/revealAll\n *\n * ```ts\n * const ngContainers = ngMocks.revealAll(HeaderComponent);\n * ```\n */\n revealAll<T>(selector: AnyType<T>): Array<MockedDebugNode<T> | MockedDebugElement<T>>;\n\n /**\n * ngMocks.reveal allows finding all DebugNodes which belong to ng-container or ng-template.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/revealAll\n *\n * ```ts\n * const ngContainers = ngMocks.revealAll(['tpl', 'header']);\n * ```\n */\n revealAll<T = any>(selector: string | [string] | [string, any]): Array<MockedDebugNode<T> | MockedDebugElement<T>>;\n\n /**\n * ngMocks.reveal allows finding all DebugNodes which belong to ng-container or ng-template\n * starting from an element.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/revealAll\n *\n * ```ts\n * const ngContainers = ngMocks.revealAll('sidebar', HeaderComponent);\n * ```\n */\n revealAll<T>(elSelector: DebugNodeSelector, selector: AnyType<T>): Array<MockedDebugNode<T> | MockedDebugElement<T>>;\n\n /**\n * ngMocks.reveal allows finding all DebugNodes which belong to ng-container or ng-template\n * starting from an element.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/revealAll\n *\n * ```ts\n * const ngContainers = ngMocks.revealAll('sidebar', ['tpl', 'header']);\n * ```\n */\n revealAll<T = any>(\n elSelector: DebugNodeSelector,\n selector: string | [string] | [string, any],\n ): Array<MockedDebugNode<T> | MockedDebugElement<T>>;\n\n /**\n * ngMocks.get tries to get an instance of declaration, provider or token\n * from the element which is matching a selector.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/get\n *\n * ```ts\n * const myComponent = ngMocks.get('my-component', MyComponent);\n * const myDirective = ngMocks.get('my-component', MyDirective);\n * ```\n */\n get<T>(elSelector: DebugNodeSelector, provider: AnyType<T> | InjectionToken<T>): T;\n\n /**\n * ngMocks.get tries to get an instance of declaration, provider or token\n * from the element which is matching a selector, otherwise the notFoundValue.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/get\n *\n * ```ts\n * const myComponent = ngMocks.get('my-component', MyComponent, undefined);\n * const myDirective = ngMocks.get('my-component', MyDirective, null);\n * ```\n */\n get<T, D>(elSelector: DebugNodeSelector, provider: AnyType<T> | InjectionToken<T>, notFoundValue: D): D | T;\n\n /**\n * ngMocks.findInstance searches for an instance of declaration, provider or token,\n * and returns the first one.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstance\n *\n * ```ts\n * const component = ngMocks.findInstance(SidebarComponent);\n * const service = ngMocks.findInstance(AuthService);\n * const config = ngMocks.findInstance(APP_CONFIG);\n * ```\n */\n findInstance<T>(instanceClass: AnyType<T> | InjectionToken<T>): T;\n\n /**\n * ngMocks.findInstance searches for an instance of declaration, provider or token\n * starting from an element, and returns the first one.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstance\n *\n * ```ts\n * const component = ngMocks.findInstance(fixture, SidebarComponent);\n * const service = ngMocks.findInstance('header', AuthService);\n * const config = ngMocks.findInstance(debugElement, APP_CONFIG);\n * ```\n */\n findInstance<T>(elSelector: DebugNodeSelector, instanceClass: AnyType<T> | InjectionToken<T>): T;\n\n /**\n * ngMocks.findInstance searches for an instance of declaration, provider or token,\n * and returns the first one, otherwise the notFoundValue.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstance\n *\n * ```ts\n * const component = ngMocks.findInstance(SidebarComponent, undefined);\n * const service = ngMocks.findInstance(AuthService, null);\n * const config = ngMocks.findInstance(APP_CONFIG, false);\n */\n findInstance<T, D>(instanceClass: AnyType<T> | InjectionToken<T>, notFoundValue: D): D | T;\n\n /**\n * ngMocks.findInstance searches for an instance of declaration, provider or token\n * starting from an element, and returns the first one, otherwise the notFoundValue.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstance\n *\n * ```ts\n * const component = ngMocks.findInstance(fixture, SidebarComponent, undefined);\n * const service = ngMocks.findInstance('header', AuthService, null);\n * const config = ngMocks.findInstance(debugElement, APP_CONFIG, false);\n * ```\n */\n findInstance<T, D>(\n elSelector: DebugNodeSelector,\n instanceClass: AnyType<T> | InjectionToken<T>,\n notFoundValue: D,\n ): D | T;\n\n /**\n * ngMocks.findInstances searches for all instances of declaration, provider or token,\n * and returns an array of them.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstances\n *\n * ```ts\n * const components = ngMocks.findInstances(SidebarComponent);\n * const services = ngMocks.findInstances(AuthService);\n * const configs = ngMocks.findInstances(APP_CONFIG);\n * ```\n */\n findInstances<T>(instanceClass: AnyType<T> | InjectionToken<T>): T[];\n\n /**\n * ngMocks.findInstances searches for all instances of declaration, provider or token\n * starting from an element, and returns an array of them.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstances\n *\n * ```ts\n * const components = ngMocks.findInstances(fixture, SidebarComponent);\n * const services = ngMocks.findInstances('header', AuthService);\n * const configs = ngMocks.findInstances(debugElement, APP_CONFIG);\n * ```\n */\n findInstances<T>(elSelector: DebugNodeSelector, instanceClass: AnyType<T> | InjectionToken<T>): T[];\n\n /**\n * ngMocks.findTemplateRef searches for a TemplateRef which is matching the selector,\n * and returns the first found, otherwise the notFoundValue.\n * The TemplateRef can be rendered later on.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findTemplateRef\n *\n * ```ts\n * const templateRef = ngMocks.findTemplateRef('sidebar', StructuralDirective, undefined);\n * ```\n */\n findTemplateRef<T = any, D = undefined>(\n elSelector: DebugNodeSelector,\n selector: string | [string] | [string, any] | AnyType<any>,\n notFoundValue: D,\n ): D | TemplateRef<T>;\n\n /**\n * ngMocks.findTemplateRef searches for a TemplateRef which is matching the selector,\n * and returns the first found.\n * The TemplateRef can be rendered later on.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findTemplateRef\n *\n * ```ts\n * const templateRef = ngMocks.findTemplateRef('sidebar', StructuralDirective);\n * ```\n */\n findTemplateRef<T = any>(\n elSelector: DebugNodeSelector,\n selector: string | [string] | [string, any] | AnyType<any>,\n ): TemplateRef<T>;\n\n /**\n * ngMocks.findTemplateRef searches for a TemplateRef which is matching the selector,\n * and returns the first found, otherwise the notFoundValue.\n * The TemplateRef can be rendered later on.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findTemplateRef\n *\n * ```ts\n * const templateRef = ngMocks.findTemplateRef(['mat-row'], null);\n * ```\n */\n findTemplateRef<T = any, D = undefined>(\n selector: string | [string] | [string, any] | AnyType<any>,\n notFoundValue: D,\n ): D | TemplateRef<T>;\n\n /**\n * ngMocks.findTemplateRef searches for a TemplateRef which is matching the selector,\n * and returns the first found.\n * The TemplateRef can be rendered later on.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findTemplateRef\n *\n * ```ts\n * const templateRef = ngMocks.findTemplateRef(['mat-row']);\n * ```\n */\n findTemplateRef<T = any>(selector: string | [string] | [string, any] | AnyType<any>): TemplateRef<T>;\n\n /**\n * ngMocks.findTemplateRefs searches for all TemplateRefs which is matching the selector\n * starting from an element, and returns an array of them.\n * The TemplateRef can be rendered later on.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findTemplateRefs\n *\n * ```ts\n * const templateRefs = ngMocks.findTemplateRefs('header', StructuralDirective);\n * ```\n */\n findTemplateRefs<T = any>(\n elSelector: DebugNodeSelector,\n selector: string | [string] | [string, any] | AnyType<any>,\n ): Array<TemplateRef<T>>;\n\n /**\n * ngMocks.findTemplateRefs searches for all TemplateRefs which is matching the selector,\n * and returns an array of them.\n * The TemplateRef can be rendered later on.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findTemplateRefs\n *\n * ```ts\n * const templateRefs = ngMocks.findTemplateRefs(['mat-row']);\n * ```\n */\n findTemplateRefs<T = any>(selector: string | [string] | [string, any] | AnyType<any>): Array<TemplateRef<T>>;\n\n /**\n * ngMocks.crawl correctly crawls through Angular DOM with respect of TemplateRefs and ng-containers.\n * Usually, it's used internally.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/crawl\n */\n crawl(\n elSelector: DebugNodeSelector,\n callback: (\n node: MockedDebugNode | MockedDebugElement,\n parent?: MockedDebugNode | MockedDebugElement,\n ) => boolean | void,\n includeTextNodes?: boolean,\n ): void;\n\n /**\n * ngMocks.stub lets replace a method, getter or setter with a dummy callback.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/stub\n *\n * ```ts\n * ngMocks.stub(instance, 'save'); // save is an empty callback now.\n * ngMocks.stub(instance, 'user', 'get'); // getter is an empty callback now.\n * ngMocks.stub(instance, 'user', 'set'); // setter is an empty callback now.\n * ```\n */\n stub<T = MockedFunction, I = any>(instance: I, name: keyof I, style?: 'get' | 'set'): T;\n\n /**\n * ngMocks.stub lets apply partial customizations to an instance.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/stub\n *\n * ```ts\n * ngMocks.stub(instance, {\n * save: () => undefined,\n * user: null,\n * });\n * ```\n */\n stub<I extends object>(instance: I, overrides: Partial<I>): I;\n\n /**\n * ngMocks.stubMember lets inject spies it to getters of properties of an instance.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/stubMember\n *\n * ```ts\n * ngMocks.stubMember(instance, 'user', jasmine.createSpy(), 'get')\n * .and.returnValue(null);\n * ```\n */\n stubMember<T extends object, K extends keyof T, S extends () => T[K]>(\n instance: T,\n name: K,\n stub: S,\n encapsulation: 'get',\n ): S;\n\n /**\n * ngMocks.stubMember lets inject spies it to setters of properties of an instance.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/stubMember\n *\n * ```ts\n * ngMocks.stubMember(instance, 'user', jasmine.createSpy(), 'set')\n * .and.throwError('setter is forbidden');\n * ```\n */\n stubMember<T extends object, K extends keyof T, S extends (value: T[K]) => void>(\n instance: T,\n name: K,\n stub: S,\n encapsulation: 'set',\n ): S;\n\n /**\n * ngMocks.stubMember lets inject spies it to an instance.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/stubMember\n *\n * ```ts\n * ngMocks.stubMember(instance, 'save', jasmine.createSpy());\n * ngMocks.stubMember(instance, 'user', null);\n * ```\n */\n stubMember<T extends object, K extends keyof T, S extends T[K]>(instance: T, name: K, stub: S): S;\n\n /**\n * ngMocks.guts provides a simple way to configure complex mocks.\n * Please check documentation.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/guts\n */\n guts(\n keep:\n | AnyType<any>\n | InjectionToken<any>\n | Provider\n | Array<AnyType<any> | InjectionToken<any> | Provider>\n | null\n | undefined,\n mock?:\n | AnyType<any>\n | InjectionToken<any>\n | NgModuleWithProviders\n | Provider\n | Array<AnyType<any> | InjectionToken<any> | NgModuleWithProviders | Provider>\n | null\n | undefined,\n exclude?: AnyType<any> | InjectionToken<any> | Array<AnyType<any> | InjectionToken<any>> | null | undefined,\n ): TestModuleMetadata;\n\n /**\n * ngMocks.faster lets reuse the same TestBed between tests instead of resetting it.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/faster\n */\n faster(): void;\n\n /**\n * ignoreOnConsole suppresses any log calls, other methods can be suppressed too.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/ignoreOnConsole\n */\n ignoreOnConsole(...args: Array<keyof typeof console>): void;\n\n /**\n * Thanks Ivy, it does not throw an error, and we have to use injector.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/throwOnConsole\n */\n throwOnConsole(...args: Array<keyof typeof console>): void;\n\n /**\n * ngMocks.formatHtml normalizes html for a DebugElement, fixture or html string.\n * It removes redundant spaces, comments etc.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/formatHtml\n *\n * ```ts\n * const html = ngMocks.formatHTML(fixture);\n * const html = ngMocks.formatHTML(debugElement);\n * const html = ngMocks.formatHTML('<div> </div>');\n * ```\n */\n formatHtml(html: FORMAT_SINGLE, outer?: boolean): string;\n\n /**\n * ngMocks.formatHtml normalizes html for an array of DebugElements, fixtures or html strings.\n * It removes redundant spaces, comments etc.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/formatHtml\n *\n * const [html1, html2] = ngMocks.formatHTML([fixture1, fixture2]);\n * const htmlStrings = ngMocks.formatHTML(debugElements);\n */\n formatHtml(html: FORMAT_SET, outer?: boolean): string[];\n\n /**\n * ngMocks.formatText normalizes text for a DebugElement, fixture or html string.\n * It removes tags, redundant spaces, comments etc.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/formatText\n *\n * ```ts\n * const txt = ngMocks.formatText(fixture);\n * const txt = ngMocks.formatText(debugElement);\n * const txt = ngMocks.formatText('<div> </div>');\n * ```\n */\n formatText(text: FORMAT_SINGLE, outer?: boolean): string;\n\n /**\n * ngMocks.formatText normalizes text for an array of DebugElements, fixtures or html strings.\n * It removes tags, redundant spaces, comments etc.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/formatText\n *\n * const [txt1, txt2] = ngMocks.formatText([fixture1, fixture2]);\n * const txtStrings = ngMocks.formatText(debugElements);\n */\n formatText(text: FORMAT_SET, outer?: boolean): string[];\n\n /**\n * ngMocks.flushTestBed resets TestBed.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/flushTestBed\n */\n flushTestBed(): void;\n\n /**\n * ngMocks.reset resets cache of ng-mocks.\n *\n * @see https://ng-mocks.sudo.eu/api/ngMocks/reset\n */\n reset(): void;\n\n /**\n * ngMocks.config lets customize default behavior of error reporting.\n */\n config(config: {\n mockRenderCacheSize?: number | null;\n onMockInstanceRestoreNeed?: 'throw' | 'warn' | 'i-know-but-disable' | null;\n onTestBedFlushNeed?: 'throw' | 'warn' | 'i-know-but-disable' | null;\n }): void;\n} = mockHelperObject;\n","import { QueryList, TemplateRef, ViewContainerRef } from '@angular/core';\n\nimport funcIsMock from '../../common/func.is-mock';\nimport { MockConfig } from '../../common/mock';\n\nconst getValVcr = (entryPoint: MockConfig): Array<[any, ViewContainerRef]> => {\n const result: Array<[any, ViewContainerRef]> = [];\n\n for (const key of entryPoint.__ngMocksConfig.queryScanKeys || /* istanbul ignore next */ []) {\n const value = (entryPoint as any)[key];\n const vcr = (entryPoint as any)[`__ngMocksVcr_${key}`];\n\n const scanValue = value instanceof QueryList ? value.toArray() : [value];\n const scanVcr = vcr instanceof QueryList ? vcr.toArray() : [vcr];\n\n for (let index = 0; index < scanValue.length; index += 1) {\n result.push([scanValue[index], scanVcr[index]]);\n }\n }\n\n return result;\n};\n\nconst handleDirective = (\n entryPoint: {\n __template?: TemplateRef<any>;\n __vcr?: ViewContainerRef;\n },\n isExpectedTemplate: (tpl: TemplateRef<any>) => boolean,\n callback: (vcr: ViewContainerRef, tpl: TemplateRef<any>) => boolean,\n): boolean => {\n return (\n !!entryPoint.__template &&\n !!entryPoint.__vcr &&\n isExpectedTemplate(entryPoint.__template) &&\n callback(entryPoint.__vcr, entryPoint.__template)\n );\n};\n\nconst isRightTemplate = (\n localVcr: ViewContainerRef | undefined,\n localValue: any,\n isExpectedTemplate: (tpl: TemplateRef<any>) => boolean,\n): boolean => {\n return !!localVcr && localValue instanceof TemplateRef && isExpectedTemplate(localValue);\n};\n\nconst findDeep = (\n entryPoint: object,\n isExpectedTemplate: (tpl: TemplateRef<any>) => boolean,\n callback: (vcr: ViewContainerRef, tpl: TemplateRef<any>) => boolean,\n): boolean => {\n if (!funcIsMock(entryPoint)) {\n throw new Error('Only instances of mock declarations are accepted');\n }\n\n // structural directive\n if (handleDirective(entryPoint, isExpectedTemplate, callback)) {\n return true;\n }\n\n for (const [localValue, localVcr] of getValVcr(entryPoint)) {\n if (funcIsMock(localValue) && findDeep(localValue, isExpectedTemplate, callback)) {\n return true;\n }\n if (isRightTemplate(localVcr, localValue, isExpectedTemplate)) {\n return callback(localVcr, localValue);\n }\n }\n\n return false;\n};\n\nexport default ((): typeof findDeep => findDeep)();\n","import { TemplateRef } from '@angular/core';\n\nimport coreInjector from '../../common/core.injector';\nimport funcIsMock from '../../common/func.is-mock';\n\nexport default (param: any): TemplateRef<any> => {\n if (param instanceof TemplateRef) {\n return param;\n }\n if (funcIsMock(param) && param.__template) {\n return param.__template;\n }\n\n const injector = param?.nativeNode && param.injector;\n if (injector) {\n const template = coreInjector(TemplateRef, injector);\n\n if (template) {\n return template;\n }\n }\n\n const error = new Error(\n 'Unknown template has been passed, only TemplateRef or a mock structural directive are supported',\n );\n (error as any).param = param;\n\n throw error;\n};\n","import funcFindDeep from './func.find-deep';\nimport funcParseTemplate from './func.parse-template';\n\nexport default (instance: object, param?: object) => {\n const template = param ? funcParseTemplate(param) : undefined;\n\n let result = false;\n funcFindDeep(\n instance,\n tpl => {\n if (!template) {\n return true;\n }\n\n return tpl.elementRef.nativeElement === template.elementRef.nativeElement;\n },\n vcr => {\n vcr.clear();\n result = true;\n\n return false;\n },\n );\n\n if (!result) {\n throw new Error('Cannot find path to the TemplateRef');\n }\n};\n","import funcFindDeep from './func.find-deep';\nimport funcParseTemplate from './func.parse-template';\n\nexport default (instance: object, param: object, $implicit?: any, variables?: Record<keyof any, any>) => {\n const template = funcParseTemplate(param);\n\n const result = funcFindDeep(\n instance,\n tpl => tpl.elementRef.nativeElement === template.elementRef.nativeElement,\n (vcr, tpl) => {\n const context = {\n ...variables,\n $implicit,\n };\n vcr.clear();\n vcr.createEmbeddedView(tpl, context).detectChanges();\n\n return true;\n },\n );\n\n if (!result) {\n throw new Error('Cannot find path to the TemplateRef');\n }\n};\n","import { Type } from '../../common/core.types';\nimport crawlByAttribute from '../crawl/crawl-by-attribute';\nimport crawlByAttributeValue from '../crawl/crawl-by-attribute-value';\nimport crawlByDeclaration from '../crawl/crawl-by-declaration';\nimport crawlById from '../crawl/crawl-by-id';\n\nexport default (selector: string | Type<any> | [string] | [string, any] | any) => {\n if (typeof selector === 'string') {\n return crawlById(selector);\n }\n if (Array.isArray(selector) && selector.length === 1 && typeof selector[0] === 'string') {\n return crawlByAttribute(selector[0]);\n }\n if (Array.isArray(selector) && selector.length === 2 && typeof selector[0] === 'string') {\n return crawlByAttributeValue(selector[0], selector[1]);\n }\n if (typeof selector === 'function') {\n return crawlByDeclaration(selector);\n }\n\n throw new Error('Unknown selector');\n};\n","import { TemplateRef } from '@angular/core';\n\nimport coreInjector from '../../common/core.injector';\nimport { MockedDebugNode } from '../../mock-render/types';\nimport detectTextNode from '../crawl/detect-text-node';\n\nexport default (\n result: Array<TemplateRef<any>>,\n detector: (node: MockedDebugNode) => boolean,\n limit = 0,\n ): ((node: MockedDebugNode) => boolean) =>\n node => {\n try {\n const instance = !detectTextNode(node) && detector(node) ? coreInjector(TemplateRef, node.injector) : undefined;\n if (instance) {\n result.push(instance);\n }\n } catch {\n // nothing to do\n }\n\n return !!limit && result.length === limit;\n };\n","export default (value: any): boolean => {\n if (typeof value === 'string') {\n return true;\n }\n if (Array.isArray(value) && typeof value[0] === 'string') {\n return true;\n }\n if (typeof value === 'function') {\n return true;\n }\n\n return false;\n};\n","import { TemplateRef } from '@angular/core';\n\nimport nestedCheck from '../crawl/nested-check';\nimport mockHelperFind from '../find/mock-helper.find';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport funcParseFindArgs from '../func.parse-find-args';\nimport funcParseFindArgsName from '../func.parse-find-args-name';\n\nimport detectCrawler from './detect-crawler';\nimport detectTemplateRef from './detect-template-ref';\nimport funcIsValidTemplateRefSelector from './func.is-valid-template-ref-selector';\n\nconst defaultNotFoundValue = {}; // simulating Symbol\n\nexport default (...args: any[]) => {\n const [el, sel, notFoundValue] = funcParseFindArgs(args, funcIsValidTemplateRefSelector, defaultNotFoundValue);\n\n const result: Array<TemplateRef<any>> = [];\n const detector = detectCrawler(sel);\n nestedCheck(mockHelperFind(funcGetLastFixture(), el, undefined), undefined, detectTemplateRef(result, detector, 1));\n if (result.length > 0) {\n return result[0];\n }\n if (notFoundValue !== defaultNotFoundValue) {\n return notFoundValue;\n }\n\n throw new Error(`Cannot find a TemplateRef via ngMocks.findTemplateRef(${funcParseFindArgsName(sel)})`);\n};\n","import { TemplateRef } from '@angular/core';\n\nimport nestedCheck from '../crawl/nested-check';\nimport mockHelperFind from '../find/mock-helper.find';\nimport funcGetLastFixture from '../func.get-last-fixture';\nimport funcParseFindArgs from '../func.parse-find-args';\n\nimport detectCrawler from './detect-crawler';\nimport detectTemplateRef from './detect-template-ref';\nimport funcIsValidTemplateRefSelector from './func.is-valid-template-ref-selector';\n\nexport default (...args: any[]): Array<TemplateRef<any>> => {\n const [el, sel] = funcParseFindArgs(args, funcIsValidTemplateRefSelector);\n\n const result: Array<TemplateRef<any>> = [];\n const detector = detectCrawler(sel);\n nestedCheck(mockHelperFind(funcGetLastFixture(), el, undefined), undefined, detectTemplateRef(result, detector));\n\n return result;\n};\n","import ngMocksUniverse from '../common/ng-mocks-universe';\nimport mockHelperStubMember from '../mock-helper/mock-helper.stub-member';\n\nexport default (def: any): any[] => {\n const callbacks = [];\n\n const config = ngMocksUniverse.configInstance.get(def);\n if (config?.overloads) {\n for (const [name, stub, encapsulation] of config.overloads) {\n if (name) {\n callbacks.push((instance: any) => {\n mockHelperStubMember(instance, name, stub, encapsulation);\n });\n } else {\n callbacks.push(stub);\n }\n }\n }\n\n return callbacks;\n};\n","import funcGetName from '../common/func.get-name';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nexport default (checkReset: Array<[any, any, any?]>) => {\n const showError: string[] = [];\n\n // istanbul ignore next: because of the installed global scope switcher we cannot test this part\n while (checkReset.length > 0) {\n const [declaration, config] = checkReset.pop() || /* istanbul ignore next */ [];\n if (config === ngMocksUniverse.configInstance.get(declaration)) {\n showError.push(typeof declaration === 'function' ? funcGetName(declaration) : declaration);\n }\n }\n\n // istanbul ignore if: because of the installed global scope switcher we cannot test this part\n if (showError.length > 0) {\n const globalFlags = ngMocksUniverse.global.get('flags');\n const errorMessage = [\n `MockInstance: side effects have been detected (${showError.join(', ')}).`,\n 'Forgot to add MockInstance.scope() or to call MockInstance.restore()?',\n ].join(' ');\n if (globalFlags.onMockInstanceRestoreNeed === 'warn') {\n console.warn(errorMessage);\n } else if (globalFlags.onMockInstanceRestoreNeed === 'throw') {\n throw new Error(errorMessage);\n }\n }\n};\n","import { InjectionToken, Injector } from '@angular/core';\n\nimport { AbstractType, Type } from '../common/core.types';\nimport funcImportExists from '../common/func.import-exists';\nimport ngMocksStack, { NgMocksStack } from '../common/ng-mocks-stack';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport mockInstanceForgotReset from './mock-instance-forgot-reset';\n\nlet currentStack: NgMocksStack;\nngMocksStack.subscribePush(state => {\n currentStack = state;\n});\nngMocksStack.subscribePop((state, stack) => {\n for (const declaration of state.mockInstance || /* istanbul ignore next */ []) {\n if (ngMocksUniverse.configInstance.has(declaration)) {\n const universeConfig = ngMocksUniverse.configInstance.get(declaration);\n universeConfig.overloads.pop();\n ngMocksUniverse.configInstance.set(declaration, {\n ...universeConfig,\n });\n }\n }\n currentStack = stack[stack.length - 1];\n});\n\ninterface MockInstanceArgs {\n accessor?: 'get' | 'set';\n data?: any;\n key?: string;\n value?: any;\n}\n\nconst parseMockInstanceArgs = (args: any[]): MockInstanceArgs => {\n const set: MockInstanceArgs = {};\n\n if (typeof args[0] === 'string') {\n set.key = args[0];\n set.value = args[1];\n set.accessor = args[2];\n } else {\n set.value = args[0];\n if (set.value && typeof set.value === 'object') {\n set.value = set.value.init;\n }\n }\n\n return set;\n};\n\nconst checkReset: Array<[any, any, any?]> = [];\nlet checkCollect = false;\n\n// istanbul ignore else: maybe a different runner is used\nif (typeof beforeEach !== 'undefined') {\n beforeEach(() => (checkCollect = true));\n beforeEach(() => mockInstanceForgotReset(checkReset));\n afterEach(() => (checkCollect = false));\n}\n\nconst mockInstanceConfig = <T>(\n declaration: Type<T> | AbstractType<T> | InjectionToken<T>,\n name: string | undefined,\n stub: any,\n encapsulation?: 'get' | 'set',\n) => {\n const config = ngMocksUniverse.configInstance.has(declaration) ? ngMocksUniverse.configInstance.get(declaration) : {};\n const overloads = config.overloads || [];\n overloads.push([name, stub, encapsulation]);\n config.overloads = overloads;\n ngMocksUniverse.configInstance.set(declaration, {\n ...config,\n });\n const mockInstances = currentStack.mockInstance ?? [];\n mockInstances.push(declaration);\n currentStack.mockInstance = mockInstances;\n\n if (checkCollect) {\n checkReset.push([declaration, ngMocksUniverse.configInstance.get(declaration), currentStack]);\n }\n\n return stub;\n};\n\n/**\n * This signature of MockInstance lets customize the getter of a property.\n *\n * @see https://ng-mocks.sudo.eu/api/MockInstance\n *\n * ```ts\n * MockInstance(ArbitraryComponent, 'currentUser$', () => mockUser$, 'get');\n * MockInstance(ArbitraryService, 'enabled', () => false, 'get');\n * ```\n */\nexport function MockInstance<T extends object, K extends keyof T, S extends () => T[K]>(\n instance: Type<T> | AbstractType<T>,\n name: K,\n stub: S,\n encapsulation: 'get',\n): S;\n\n/**\n * This signature of MockInstance lets customize the setters of a property.\n *\n * @see https://ng-mocks.sudo.eu/api/MockInstance\n *\n * ```ts\n * const currentUserSetterSpy = jasmine.createSpy();\n * MockInstance(ArbitraryComponent, 'currentUser', currentUserSetterSpy, 'set');\n *\n * let relServiceEnabled: boolean;\n * MockInstance(ArbitraryService, 'enabled', value => relServiceEnabled = value, 'set');\n * ```\n */\nexport function MockInstance<T extends object, K extends keyof T, S extends (value: T[K]) => void>(\n instance: Type<T> | AbstractType<T>,\n name: K,\n stub: S,\n encapsulation: 'set',\n): S;\n\n/**\n * This signature of MockInstance lets customize the properties and methods.\n *\n * @see https://ng-mocks.sudo.eu/api/MockInstance\n *\n * ```ts\n * MockInstance(ArbitraryComponent, 'onInit', onInitSpy);\n * MockInstance(ArbitraryDirective, 'onDestroy', () => {});\n * MockInstance(ArbitraryService, 'currentDate', new Date());\n * MockInstance(ArbitraryModule, 'currentUser', mockUser);\n * ```\n */\nexport function MockInstance<T extends object, K extends keyof T, S extends T[K]>(\n instance: Type<T> | AbstractType<T>,\n name: K,\n stub: S,\n): S;\n\n/**\n * This signature of MockInstance lets customize tokens with a callback.\n *\n * @see https://ng-mocks.sudo.eu/api/MockInstance\n *\n * ```ts\n * MockInstance(webSocketToken, () => mockWebSocket);\n * ```\n */\nexport function MockInstance<T>(\n declaration: InjectionToken<T>,\n init?: (instance: T | undefined, injector: Injector | undefined) => Partial<T>,\n): void;\n\n/**\n * This signature of MockInstance lets customize tokens with a callback.\n *\n * @deprecated please pass the callback directly instead of config.\n * @see https://ng-mocks.sudo.eu/api/MockInstance\n *\n * ```ts\n * MockInstance(webSocketToken, {\n * init: () => mockWebSocket,\n * });\n * ```\n */\nexport function MockInstance<T>(\n declaration: InjectionToken<T>,\n config?: {\n init?: (instance: T | undefined, injector: Injector | undefined) => Partial<T>;\n },\n): void;\n\n/**\n * This signature of MockInstance lets customize the instances of mock classes with a callback.\n * You can return a shape or change the instance.\n *\n * @see https://ng-mocks.sudo.eu/api/MockInstance\n *\n * ```ts\n * MockInstance(ArbitraryComponent, (instance, injector) => {\n * instance.enabled = true;\n * instance.db = injector.get(DatabaseService);\n * });\n * MockInstance(ArbitraryDirective, () => {\n * return {\n * someProperty: true,\n * };\n * });\n * ```\n */\nexport function MockInstance<T>(\n declaration: Type<T> | AbstractType<T>,\n init?: (instance: T, injector: Injector | undefined) => void | Partial<T>,\n): void;\n\n/**\n * This signature of MockInstance lets customize the instances of mock classes with a callback.\n * You can return a shape or change the instance.\n *\n * @deprecated please pass the callback directly instead of config.\n * @see https://ng-mocks.sudo.eu/api/MockInstance\n *\n * ```ts\n * MockInstance(ArbitraryComponent, {\n * init: (instance, injector) => {\n * instance.enabled = true;\n * instance.db = injector.get(DatabaseService);\n * },\n * });\n * MockInstance(ArbitraryDirective, {\n * init: () => {\n * return {\n * someProperty: true,\n * };\n * },\n * });\n * ```\n */\nexport function MockInstance<T>(\n declaration: Type<T> | AbstractType<T>,\n config?: {\n init?: (instance: T, injector: Injector | undefined) => void | Partial<T>;\n },\n): void;\n\nexport function MockInstance<T>(declaration: Type<T> | AbstractType<T> | InjectionToken<T>, ...args: any[]) {\n funcImportExists(declaration, 'MockInstance');\n\n if (args.length > 0) {\n const { key, value, accessor } = parseMockInstanceArgs(args);\n\n return mockInstanceConfig(declaration, key, value, accessor);\n }\n\n const config = ngMocksUniverse.configInstance.get(declaration) || /* istanbul ignore next */ {};\n\n ngMocksUniverse.configInstance.set(declaration, {\n ...config,\n overloads: [],\n });\n\n // When we are calling MockInstance without a config we need to reset it from the checks too.\n for (let i = checkReset.length - 1; i >= 0; i -= 1) {\n if (checkReset[i][0] === declaration && checkReset[i][2] === currentStack) {\n checkReset.splice(i, 1);\n }\n }\n}\n\n/**\n * Interface describes how to configure scopes for MockInstance.\n *\n * @see https://ng-mocks.sudo.eu/api/MockInstance#customization-scopes\n */\n// istanbul ignore next: issue in istanbul https://github.com/istanbuljs/nyc/issues/1209\nexport namespace MockInstance {\n /**\n * Creates a scope which remembers all future customizations of MockInstance.\n * It allows to reset them afterwards.\n *\n * @see https://ng-mocks.sudo.eu/api/MockInstance#remember\n */\n export function remember() {\n ngMocksStack.stackPush();\n }\n\n /**\n * Resets all changes in the current scope.\n *\n * @see https://ng-mocks.sudo.eu/api/MockInstance#restore\n */\n export function restore() {\n ngMocksStack.stackPop();\n }\n\n /**\n * Creates a local scope in `beforeEach` and `afterEach`.\n * If `suite` has been passed, then `beforeAll` and `afterAll` are used.\n *\n * @see https://ng-mocks.sudo.eu/api/MockInstance#scope\n */\n export function scope(scope: 'all' | 'suite' | 'case' = 'case') {\n if (scope === 'all' || scope === 'suite') {\n beforeAll(MockInstance.remember);\n afterAll(MockInstance.restore);\n }\n if (scope === 'all' || scope === 'case') {\n beforeEach(MockInstance.remember);\n afterEach(MockInstance.restore);\n }\n }\n}\n\n/**\n * MockReset resets everything what has been configured in MockInstance.\n * Please consider using MockInstance.scope() instead,\n * which respects customizations between tests.\n *\n * https://ng-mocks.sudo.eu/api/MockInstance#resetting-customization\n * https://ng-mocks.sudo.eu/api/MockInstance#scope\n */\nexport function MockReset() {\n ngMocksUniverse.configInstance.clear();\n}\n","import { Provider } from '@angular/core';\n\nimport { isNgDef } from '../common/func.is-ng-def';\nimport { isNgModuleDefWithProviders } from '../common/func.is-ng-module-def-with-providers';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\nimport { MockComponent } from '../mock-component/mock-component';\nimport { MockDirective } from '../mock-directive/mock-directive';\nimport { MockPipe } from '../mock-pipe/mock-pipe';\nimport helperMockService from '../mock-service/helper.mock-service';\n\nimport { MockModule } from './mock-module';\n\nconst processDefMap: Array<[any, any]> = [\n ['c', MockComponent],\n ['d', MockDirective],\n ['p', MockPipe],\n];\n\nconst processDef = (def: any) => {\n if (isNgDef(def, 'm') || isNgModuleDefWithProviders(def)) {\n return MockModule(def as any);\n }\n if (ngMocksUniverse.hasBuildDeclaration(def)) {\n return ngMocksUniverse.getBuildDeclaration(def);\n }\n if (ngMocksUniverse.flags.has('skipMock') && ngMocksUniverse.getResolution(def) !== 'mock') {\n return def;\n }\n for (const [flag, func] of processDefMap) {\n if (isNgDef(def, flag)) {\n return func(def);\n }\n }\n};\n\n// resolveProvider is a special case because of the def structure.\nconst createResolveProvider =\n (resolutions: Map<any, any>, change: () => void): ((def: Provider) => any) =>\n (def: Provider) =>\n helperMockService.resolveProvider(def, resolutions, change);\n\nconst createResolveWithProviders = (def: any, mockDef: any): boolean =>\n mockDef && mockDef.ngModule && isNgModuleDefWithProviders(def);\n\nconst createResolveExisting = (def: any, resolutions: Map<any, any>, change: (flag?: boolean) => void): any => {\n const mockDef = resolutions.get(def);\n if (def !== mockDef) {\n change();\n }\n\n return mockDef;\n};\n\nconst createResolveExcluded = (def: any, resolutions: Map<any, any>, change: (flag?: boolean) => void): void => {\n resolutions.set(def, undefined);\n\n change();\n};\n\nconst createResolve =\n (resolutions: Map<any, any>, change: (flag?: boolean) => void): ((def: any) => any) =>\n (def: any) => {\n if (resolutions.has(def)) {\n return createResolveExisting(def, resolutions, change);\n }\n\n const detectedDef = isNgModuleDefWithProviders(def) ? def.ngModule : def;\n if (ngMocksUniverse.isExcludedDef(detectedDef)) {\n return createResolveExcluded(def, resolutions, change);\n }\n ngMocksUniverse.touches.add(detectedDef);\n\n const mockDef = processDef(def);\n if (createResolveWithProviders(def, mockDef)) {\n resolutions.set(def.ngModule, mockDef.ngModule);\n }\n if (ngMocksUniverse.flags.has('skipMock')) {\n ngMocksUniverse.config.get('ngMocksDepsSkip')?.add(mockDef);\n }\n resolutions.set(def, mockDef);\n change(mockDef !== def);\n\n return mockDef;\n };\n\nexport default (\n change: () => void,\n resolutions: Map<any, any>,\n): {\n resolve: (def: any) => any;\n resolveProvider: (def: Provider) => any;\n} => {\n const resolve = createResolve(resolutions, change);\n const resolveProvider = createResolveProvider(resolutions, change);\n\n return {\n resolve,\n resolveProvider,\n };\n};\n","import { flatten } from '../common/core.helpers';\nimport funcGetProvider from '../common/func.get-provider';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nexport default (providers?: any[]): void => {\n for (const provider of flatten(providers ?? [])) {\n const provide = funcGetProvider(provider);\n\n const config = ngMocksUniverse.configInstance.get(provide) ?? {};\n config.exported = true;\n ngMocksUniverse.configInstance.set(provide, config);\n }\n};\n","import { NgModule, Provider } from '@angular/core';\n\nimport coreConfig from '../common/core.config';\nimport { extendClass } from '../common/core.helpers';\nimport coreReflectModuleResolve from '../common/core.reflect.module-resolve';\nimport { Type } from '../common/core.types';\nimport decorateMock from '../common/decorate.mock';\nimport funcGetName from '../common/func.get-name';\nimport funcImportExists from '../common/func.import-exists';\nimport { isMockNgDef } from '../common/func.is-mock-ng-def';\nimport { isNgDef } from '../common/func.is-ng-def';\nimport { isNgModuleDefWithProviders, NgModuleWithProviders } from '../common/func.is-ng-module-def-with-providers';\nimport { Mock } from '../common/mock';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport mockNgDef from './mock-ng-def';\n\nconst flagMock = (resolution?: string): boolean => resolution === 'mock' && ngMocksUniverse.flags.has('skipMock');\n\nconst flagKeep = (resolution?: string): boolean => resolution === 'keep' && !ngMocksUniverse.flags.has('skipMock');\n\nconst flagReplace = (resolution?: string): boolean =>\n resolution === 'replace' && !ngMocksUniverse.flags.has('skipMock');\n\nconst flagNever = (ngModule?: any): boolean =>\n coreConfig.neverMockModule.indexOf(funcGetName(ngModule)) !== -1 && !ngMocksUniverse.flags.has('skipMock');\n\nconst preProcessFlags = (ngModule: Type<any>): { isRootModule: boolean; toggleSkipMockFlag: boolean } => {\n let toggleSkipMockFlag = false;\n let isRootModule = true;\n\n if (ngMocksUniverse.flags.has('hasRootModule')) {\n isRootModule = false;\n } else {\n ngMocksUniverse.flags.add('hasRootModule');\n }\n\n const resolution = ngMocksUniverse.getResolution(ngModule);\n if (flagMock(resolution)) {\n toggleSkipMockFlag = true;\n ngMocksUniverse.flags.delete('skipMock');\n }\n if (flagNever(ngModule)) {\n toggleSkipMockFlag = true;\n ngMocksUniverse.flags.add('skipMock');\n }\n if (!isRootModule && (flagKeep(resolution) || flagReplace(resolution))) {\n toggleSkipMockFlag = true;\n ngMocksUniverse.flags.add('skipMock');\n }\n\n return {\n isRootModule,\n toggleSkipMockFlag,\n };\n};\n\nconst postProcessFlags = ({\n isRootModule,\n toggleSkipMockFlag,\n}: {\n isRootModule: boolean;\n toggleSkipMockFlag: boolean;\n}): void => {\n if (toggleSkipMockFlag && ngMocksUniverse.flags.has('skipMock')) {\n ngMocksUniverse.flags.delete('skipMock');\n } else if (toggleSkipMockFlag && !ngMocksUniverse.flags.has('skipMock')) {\n ngMocksUniverse.flags.add('skipMock');\n }\n if (isRootModule) {\n ngMocksUniverse.flags.delete('hasRootModule');\n }\n};\n\nconst extractModuleAndProviders = (\n module: any,\n): {\n ngModule: Type<any>;\n ngModuleProviders: Provider[] | undefined;\n} => {\n let ngModule: Type<any>;\n let ngModuleProviders: Provider[] | undefined;\n\n if (isNgModuleDefWithProviders(module)) {\n ngModule = module.ngModule;\n if (module.providers) {\n ngModuleProviders = module.providers;\n }\n } else {\n ngModule = module;\n }\n\n return {\n ngModule,\n ngModuleProviders,\n };\n};\n\nconst getExistingMockModule = (ngModule: Type<any>, isRootModule: boolean): Type<any> | undefined => {\n if (isMockNgDef(ngModule, 'm')) {\n return ngModule;\n }\n\n // Every module should be replaced with its mock copy only once to avoid errors like:\n // Failed: Type ...Component is part of the declarations of 2 modules: ...Module and ...Module...\n if (ngMocksUniverse.flags.has('cacheModule') && ngMocksUniverse.cacheDeclarations.has(ngModule)) {\n return ngMocksUniverse.cacheDeclarations.get(ngModule);\n }\n\n // Now we check if we need to keep the original module or to replace it with some other.\n // and there is no override in its resolution.\n if (isRootModule || ngMocksUniverse.config.get('ngMocksDepsResolution')?.get(ngModule) === 'mock') {\n return undefined;\n }\n if (ngMocksUniverse.hasBuildDeclaration(ngModule)) {\n const instance = ngMocksUniverse.getBuildDeclaration(ngModule);\n if (isNgDef(instance, 'm') && instance !== ngModule) {\n return instance;\n }\n }\n\n return undefined;\n};\n\nconst getMockModuleDef = (ngModule: Type<any>, mockModule?: Type<any>): NgModule | undefined => {\n if (!mockModule) {\n const meta = coreReflectModuleResolve(ngModule);\n const [changed, ngModuleDef] = mockNgDef(meta, ngModule);\n if (changed) {\n return ngModuleDef;\n }\n }\n\n return undefined;\n};\n\nconst detectMockModule = (ngModule: Type<any>, mockModule?: Type<any>): Type<any> => {\n const mockModuleDef = getMockModuleDef(ngModule, mockModule);\n\n if (mockModuleDef) {\n const parent = ngMocksUniverse.flags.has('skipMock') ? ngModule : Mock;\n const mock = extendClass(parent);\n\n // the last thing is to apply decorators.\n NgModule(mockModuleDef)(mock);\n decorateMock(mock, ngModule);\n\n return mock;\n }\n\n return mockModule || ngModule;\n};\n\nconst getMockProviders = (ngModuleProviders: Provider[] | undefined): Provider[] | undefined => {\n if (ngModuleProviders) {\n const [changed, ngModuleDef] = mockNgDef({ providers: ngModuleProviders });\n\n return changed ? ngModuleDef.providers : ngModuleProviders;\n }\n\n return undefined;\n};\n\nconst generateReturn = (\n module: any,\n ngModule: Type<any>,\n ngModuleProviders: Provider[] | undefined,\n mockModule: Type<any>,\n mockModuleProviders: Provider[] | undefined,\n): any =>\n mockModule === ngModule && mockModuleProviders === ngModuleProviders\n ? module\n : isNgModuleDefWithProviders(module)\n ? { ngModule: mockModule, ...(mockModuleProviders ? { providers: mockModuleProviders } : {}) }\n : mockModule;\n\n/**\n * MockModule creates a mock module class out of an arbitrary module.\n * All declarations, imports, exports and providers will be mocked too.\n *\n * @see https://ng-mocks.sudo.eu/api/MockModule\n *\n * ```ts\n * TestBed.configureTestingModule({\n * imports: [\n * MockModule(SharedModule),\n * ],\n * });\n * ```\n */\nexport function MockModule<T>(ngModule: Type<T>): Type<T>;\n\n/**\n * MockModule creates a mock module class with mock provides out of an arbitrary module with providers.\n * All declarations, imports, exports and providers will be mocked too.\n *\n * @see https://ng-mocks.sudo.eu/api/MockModule\n *\n * ```ts\n * TestBed.configureTestingModule({\n * imports: [\n * MockModule(StoreModule.forRoot()),\n * ],\n * });\n * ```\n */\nexport function MockModule<T>(ngModule: NgModuleWithProviders<T>): NgModuleWithProviders<T>;\n\nexport function MockModule(def: any): any {\n funcImportExists(def, 'MockModule');\n\n const { ngModule, ngModuleProviders } = extractModuleAndProviders(def);\n const flags = preProcessFlags(ngModule);\n try {\n const mockModule = detectMockModule(ngModule, getExistingMockModule(ngModule, flags.isRootModule));\n // istanbul ignore else\n if (ngMocksUniverse.flags.has('cacheModule')) {\n ngMocksUniverse.cacheDeclarations.set(ngModule, mockModule);\n }\n if (ngMocksUniverse.flags.has('skipMock')) {\n ngMocksUniverse.config.get('ngMocksDepsSkip')?.add(mockModule);\n }\n const mockModuleProviders = getMockProviders(ngModuleProviders);\n\n return generateReturn(def, ngModule, ngModuleProviders, mockModule, mockModuleProviders);\n } finally {\n postProcessFlags(flags);\n }\n}\n","import { Component, Directive, NgModule, Pipe, Provider } from '@angular/core';\n\nimport { flatten } from '../common/core.helpers';\nimport { Type } from '../common/core.types';\nimport { isNgModuleDefWithProviders } from '../common/func.is-ng-module-def-with-providers';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport createResolvers from './create-resolvers';\nimport markProviders from './mark-providers';\n\nconst flatToExisting = <T, R>(data: T | T[], callback: (arg: T) => R | undefined): R[] =>\n flatten(data)\n .map(callback)\n .filter((item): item is R => !!item);\n\ntype processMeta =\n | 'declarations'\n | 'entryComponents'\n | 'bootstrap'\n | 'providers'\n | 'viewProviders'\n | 'imports'\n | 'exports';\n\nconst configureProcessMetaKeys = (\n resolve: (def: any) => any,\n resolveProvider: (def: Provider) => any,\n): Array<[processMeta, (def: any) => any]> => [\n ['declarations', resolve],\n ['entryComponents', resolve],\n ['bootstrap', resolve],\n ['providers', resolveProvider],\n ['viewProviders', resolveProvider],\n ['imports', resolve],\n ['exports', resolve],\n];\n\nconst processMeta = (\n ngModule: Partial<NgModule & Component & Directive & Pipe>,\n resolve: (def: any) => any,\n resolveProvider: (def: Provider) => any,\n): NgModule => {\n const mockModuleDef: Partial<NgModule & Component & Directive & Pipe> = {};\n const keys = configureProcessMetaKeys(resolve, resolveProvider);\n\n const cachePipe = ngMocksUniverse.flags.has('cachePipe');\n if (!cachePipe) {\n ngMocksUniverse.flags.add('cachePipe');\n }\n for (const [key, callback] of keys) {\n if (ngModule[key]?.length) {\n mockModuleDef[key] = flatToExisting(ngModule[key], callback);\n }\n }\n markProviders(mockModuleDef.providers);\n markProviders(mockModuleDef.viewProviders);\n\n if (!cachePipe) {\n ngMocksUniverse.flags.delete('cachePipe');\n }\n\n return mockModuleDef;\n};\n\nconst resolveDefForExport = (\n def: any,\n resolve: (def: any) => any,\n correctExports: boolean,\n ngModule?: Type<any>,\n): Type<any> | undefined => {\n const moduleConfig = ngMocksUniverse.config.get(ngModule) || {};\n const instance = isNgModuleDefWithProviders(def) ? def.ngModule : def;\n const mockDef = resolve(instance);\n if (!mockDef) {\n return undefined;\n }\n\n // If we export a declaration, then we have to export its module too.\n const config = ngMocksUniverse.config.get(instance);\n if (config?.export && ngModule && !moduleConfig.export) {\n ngMocksUniverse.config.set(ngModule, {\n ...moduleConfig,\n export: true,\n });\n }\n\n if (correctExports && !moduleConfig.exportAll && !config?.export) {\n return undefined;\n }\n\n return mockDef;\n};\n\nconst skipAddExports = (mockDef: any, mockModuleDef: NgModule): mockDef is undefined =>\n !mockDef || (!!mockModuleDef.exports && mockModuleDef.exports.indexOf(mockDef) !== -1);\n\n// if we are in the skipMock mode we need to export only the default exports.\n// if we are in the correctModuleExports mode we need to export only default exports.\nconst addExports = (\n resolve: (def: any) => any,\n change: () => void,\n ngModuleDef: NgModule,\n mockModuleDef: NgModule,\n ngModule?: Type<any>,\n): void => {\n const correctExports = ngMocksUniverse.flags.has('skipMock') || ngMocksUniverse.flags.has('correctModuleExports');\n for (const def of flatten([ngModuleDef.imports || [], ngModuleDef.declarations || []])) {\n const mockDef = resolveDefForExport(def, resolve, correctExports, ngModule);\n if (skipAddExports(mockDef, mockModuleDef)) {\n continue;\n }\n\n change();\n mockModuleDef.exports = mockModuleDef.exports || [];\n mockModuleDef.exports.push(mockDef);\n }\n};\n\nexport default (ngModuleDef: NgModule, ngModule?: Type<any>): [boolean, NgModule] => {\n const hasResolver = ngMocksUniverse.config.has('mockNgDefResolver');\n if (!hasResolver) {\n ngMocksUniverse.config.set('mockNgDefResolver', new Map());\n }\n let changed = !ngMocksUniverse.flags.has('skipMock');\n const change = (flag = true) => {\n changed = changed || flag;\n };\n const { resolve, resolveProvider } = createResolvers(change, ngMocksUniverse.config.get('mockNgDefResolver'));\n const mockModuleDef = processMeta(ngModuleDef, resolve, resolveProvider);\n addExports(resolve, change, ngModuleDef, mockModuleDef, ngModule);\n\n if (!hasResolver) {\n ngMocksUniverse.config.delete('mockNgDefResolver');\n }\n\n return [changed, mockModuleDef];\n};\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { extendClass } from '../common/core.helpers';\nimport coreReflectPipeResolve from '../common/core.reflect.pipe-resolve';\nimport { Type } from '../common/core.types';\nimport decorateMock from '../common/decorate.mock';\nimport funcGetName from '../common/func.get-name';\nimport funcImportExists from '../common/func.import-exists';\nimport { isMockNgDef } from '../common/func.is-mock-ng-def';\nimport { Mock } from '../common/mock';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\nimport helperMockService from '../mock-service/helper.mock-service';\n\nimport { MockedPipe } from './types';\n\n/**\n * MockPipes creates an array of mock pipe classes out of pipes passed as parameters.\n *\n * @see https://ng-mocks.sudo.eu/api/MockPipe\n *\n * ```ts\n * TestBed.configureTestingModule({\n * declarations: MockPipes(\n * Dep1Pipe,\n * Dep2Pipe,\n * ),\n * });\n * ```\n */\nexport function MockPipes(...pipes: Array<Type<PipeTransform>>): Array<Type<PipeTransform>> {\n return pipes.map(pipe => MockPipe(pipe, undefined));\n}\n\nconst getMockClass = (pipe: Type<any>, transform?: PipeTransform['transform']): Type<any> => {\n const mock = extendClass(Mock);\n Pipe(coreReflectPipeResolve(pipe))(mock);\n decorateMock(mock, pipe, {\n init: (instance: PipeTransform) => {\n if (transform) {\n instance.transform = transform;\n }\n if (!instance.transform) {\n helperMockService.mock(instance, 'transform', `${funcGetName(instance)}.transform`);\n }\n },\n });\n\n return mock;\n};\n\n/**\n * MockPipe creates a mock pipe class out of an arbitrary pipe.\n *\n * @see https://ng-mocks.sudo.eu/api/MockPipe\n *\n * ```ts\n * TestBed.configureTestingModule({\n * declarations: [\n * MockPipe(Dep1Pipe),\n * MockPipe(Dep2Pipe),\n * ],\n * });\n * ```\n */\nexport function MockPipe<TPipe extends PipeTransform>(\n pipe: Type<TPipe>,\n transform?: TPipe['transform'],\n): Type<MockedPipe<TPipe>>;\n\nexport function MockPipe<TPipe extends PipeTransform>(\n pipe: Type<TPipe>,\n transform?: TPipe['transform'],\n): Type<MockedPipe<TPipe>> {\n funcImportExists(pipe, 'MockPipe');\n\n if (isMockNgDef(pipe, 'p')) {\n return pipe;\n }\n\n // istanbul ignore next\n if (ngMocksUniverse.flags.has('cachePipe') && ngMocksUniverse.cacheDeclarations.has(pipe)) {\n return ngMocksUniverse.cacheDeclarations.get(pipe);\n }\n\n const mock = getMockClass(pipe, transform);\n if (ngMocksUniverse.flags.has('cachePipe')) {\n ngMocksUniverse.cacheDeclarations.set(pipe, mock);\n }\n\n return mock as any;\n}\n","import { FactoryProvider, InjectionToken, Provider } from '@angular/core';\n\nimport { AnyType } from '../common/core.types';\nimport funcImportExists from '../common/func.import-exists';\nimport mockHelperStub from '../mock-helper/mock-helper.stub';\nimport helperUseFactory from '../mock-service/helper.use-factory';\nimport { MockService } from '../mock-service/mock-service';\n\nconst defaultValue = {};\n\n/**\n * MockProviders creates an array of mock providers out of passed as parameters.\n *\n * @see https://ng-mocks.sudo.eu/api/MockProvider\n *\n * ```ts\n * TestBed.configureTestingModule({\n * providers: MockProviders(\n * Dep1Service,\n * Dep2Service,\n * ),\n * });\n * ```\n */\nexport function MockProviders(...providers: Array<AnyType<any> | InjectionToken<any>>): FactoryProvider[] {\n return providers.map((provider: any) => MockProvider(provider, defaultValue));\n}\n\n/**\n * MockProvider creates a mock provider out of passed an arbitrary service.\n *\n * @see https://ng-mocks.sudo.eu/api/MockProvider\n *\n * ```ts\n * TestBed.configureTestingModule({\n * providers: [\n * MockProvider(Dep1Service),\n * MockProvider(Dep2Service, {\n * prop: true,\n * func: () => 'mock',\n * }),\n * ],\n * });\n * ```\n */\nexport function MockProvider<I extends object>(instance: AnyType<I>, overrides?: Partial<I>): FactoryProvider;\n\n/**\n * MockProvider creates a mock provider out of passed an arbitrary token.\n *\n * @see https://ng-mocks.sudo.eu/api/MockProvider\n *\n * ```ts\n * TestBed.configureTestingModule({\n * providers: [\n * MockProvider(APP_ID),\n * MockProvider(WEB_SOCKET, {\n * prop: true,\n * func: () => 'mock',\n * }),\n * ],\n * });\n * ```\n */\nexport function MockProvider<I>(provider: InjectionToken<I>, useValue?: Partial<I>): FactoryProvider;\n\n/**\n * MockProvider creates a mock provider out of passed an arbitrary string token.\n *\n * @see https://ng-mocks.sudo.eu/api/MockProvider\n *\n * ```ts\n * TestBed.configureTestingModule({\n * providers: [\n * MockProvider('web_socket', {\n * prop: true,\n * func: () => 'mock',\n * }),\n * ],\n * });\n * ```\n */\nexport function MockProvider<I = any>(provider: string, useValue?: Partial<I>): FactoryProvider;\n\nexport function MockProvider(provide: any, overrides: any = defaultValue): Provider {\n funcImportExists(provide, 'MockProvider');\n\n return helperUseFactory(\n provide,\n () => MockService(provide),\n value => {\n if (overrides === defaultValue) {\n return value;\n }\n if (!value) {\n return overrides;\n }\n\n return mockHelperStub(value, overrides);\n },\n );\n}\n","import { Component, Directive } from '@angular/core';\n\nimport coreConfig from '../common/core.config';\nimport coreDefineProperty from '../common/core.define-property';\nimport { Type } from '../common/core.types';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\nimport helperDefinePropertyDescriptor from '../mock-service/helper.define-property-descriptor';\n\nimport funcGenerateTemplate from './func.generate-template';\n\nconst generateWrapperOutput =\n (instance: any) =>\n (prop: keyof any, event: any): void => {\n if (typeof instance[prop] === 'function') {\n return instance[prop](event);\n }\n if (instance[prop] && typeof instance[prop] === 'object' && typeof instance[prop].emit === 'function') {\n return instance[prop].emit(event);\n }\n if (instance[prop] && typeof instance[prop] === 'object' && typeof instance[prop].next === 'function') {\n return instance[prop].next(event);\n }\n\n instance[prop] = event;\n };\n\nconst generateWrapper = ({ bindings, options, inputs }: any) => {\n class MockRenderComponent {\n public constructor() {\n coreDefineProperty(this, '__ngMocksOutput', generateWrapperOutput(this));\n\n if (!bindings) {\n for (const input of inputs || []) {\n let value: any = null;\n helperDefinePropertyDescriptor(this, input, {\n get: () => value,\n set: (newValue: any) => (value = newValue),\n });\n }\n }\n }\n }\n Component(options)(MockRenderComponent);\n\n return MockRenderComponent;\n};\n\nconst getCache = () => {\n const caches: Array<Type<any> & Record<'cacheKey', any[]>> = ngMocksUniverse.config.get('MockRenderCaches') ?? [];\n if (caches.length === 0) {\n ngMocksUniverse.config.set('MockRenderCaches', caches);\n }\n\n return caches;\n};\n\nconst checkCache = (caches: Array<Type<any> & Record<'cacheKey', any[]>>, cacheKey: any[]): undefined | Type<any> => {\n for (const cache of caches) {\n if (cache.cacheKey.length !== cacheKey.length) {\n continue;\n }\n let isValid = true;\n for (let i = 0; i < cacheKey.length; i += 1) {\n if (cache.cacheKey[i] !== cacheKey[i]) {\n isValid = false;\n break;\n }\n }\n if (isValid) {\n return cache;\n }\n }\n\n return undefined;\n};\n\nexport default (\n template: any,\n meta: Directive,\n bindings: undefined | null | any[],\n flags: Record<keyof any, any>,\n): Type<any> => {\n const caches = getCache();\n\n // nulls help to detect defaults\n const cacheKey = [\n template,\n ...(bindings ?? [null]),\n ...(flags.providers ?? [null]),\n ...(flags.viewProviders ?? [null]),\n ];\n let ctor = checkCache(caches, cacheKey);\n if (ctor) {\n return ctor;\n }\n\n const mockTemplate = funcGenerateTemplate(template, { ...meta, bindings });\n const options: Component = {\n providers: flags.providers,\n selector: 'mock-render',\n template: mockTemplate,\n viewProviders: flags.viewProviders,\n };\n\n ctor = generateWrapper({ ...meta, bindings, options });\n coreDefineProperty(ctor, 'cacheKey', cacheKey);\n caches.unshift(ctor as any);\n caches.splice(ngMocksUniverse.global.get('mockRenderCacheSize') ?? coreConfig.mockRenderCacheSize);\n\n return ctor;\n};\n","const generateTemplateAttrWrap = (prop: string, type: 'i' | 'o') => (type === 'i' ? `[${prop}]` : `(${prop})`);\n\nconst generateTemplateAttrWithParams = (prop: string, type: 'i' | 'o'): string => {\n let tpl = ` ${generateTemplateAttrWrap(prop, type)}=\"`;\n tpl += type === 'i' ? prop : `__ngMocksOutput('${prop}', $event)`;\n tpl += '\"';\n\n return tpl;\n};\n\nconst generateTemplateAttr = (bindings: null | undefined | any[], attr: any, type: 'i' | 'o') => {\n // unprovided params for inputs should render empty placeholders\n if (!bindings && type === 'o') {\n return '';\n }\n\n let mockTemplate = '';\n const keys = bindings ?? attr;\n for (const definition of attr) {\n const [property, alias] = definition.split(': ');\n mockTemplate +=\n keys.indexOf(alias || property) === -1 ? '' : generateTemplateAttrWithParams(alias || property, type);\n }\n\n return mockTemplate;\n};\n\nexport default (declaration: any, { selector, bindings, inputs, outputs }: any): string => {\n let mockTemplate = '';\n\n // istanbul ignore else\n if (typeof declaration === 'string') {\n mockTemplate = declaration;\n } else if (selector) {\n mockTemplate += `<${selector}`;\n mockTemplate += generateTemplateAttr(bindings, inputs, 'i');\n mockTemplate += generateTemplateAttr(bindings, outputs, 'o');\n mockTemplate += `></${selector}>`;\n }\n\n return mockTemplate;\n};\n","import coreDefineProperty from '../common/core.define-property';\nimport helperDefinePropertyDescriptor from '../mock-service/helper.define-property-descriptor';\nimport helperMockService from '../mock-service/helper.mock-service';\n\nconst createPropertyGet = (key: keyof any & string, reader: Record<keyof any, any>, source: Record<keyof any, any>) => {\n const handler = () => {\n if (typeof source[key] === 'function') {\n if (reader[`__ngMocks_${key}__origin`] !== source[key]) {\n const clone = helperMockService.createClone(source[key], reader, source);\n coreDefineProperty(reader, `__ngMocks_${key}`, clone);\n coreDefineProperty(reader, `__ngMocks_${key}__origin`, source[key]);\n }\n\n return reader[`__ngMocks_${key}`];\n }\n\n return source[key];\n };\n coreDefineProperty(handler, '__ngMocksProxy', true);\n\n return handler;\n};\n\nconst createPropertySet = (key: keyof any & string, reader: Record<keyof any, any>, source: Record<keyof any, any>) => {\n const handler = (newValue: any) => {\n if (reader[`__ngMocks_${key}`]) {\n reader[`__ngMocks_${key}`] = undefined;\n }\n if (reader[`__ngMocks_${key}__origin`]) {\n reader[`__ngMocks_${key}__origin`] = undefined;\n }\n source[key] = newValue;\n };\n coreDefineProperty(handler, '__ngMocksProxy', true);\n\n return handler;\n};\n\nconst extractAllKeys = (instance: object) => [\n ...helperMockService.extractPropertiesFromPrototype(Object.getPrototypeOf(instance)),\n ...helperMockService.extractMethodsFromPrototype(Object.getPrototypeOf(instance)),\n ...Object.keys(instance),\n];\n\nconst extractOwnKeys = (instance: object) => [...Object.getOwnPropertyNames(instance), ...Object.keys(instance)];\n\nexport default (\n reader: Record<keyof any, any>,\n source: Record<keyof any, any> | undefined,\n extra: string[],\n force = false,\n): void => {\n if (!source) {\n return;\n }\n coreDefineProperty(reader, '__ngMocks__source', source);\n const exists = extractOwnKeys(reader);\n const fields = [...extractAllKeys(source), ...extra];\n for (const key of fields) {\n if (!force && exists.indexOf(key) !== -1) {\n continue;\n }\n helperDefinePropertyDescriptor(reader, key, {\n get: createPropertyGet(key, reader, source),\n set: createPropertySet(key, reader, source),\n });\n exists.push(key);\n }\n};\n","import { Component, Directive } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\n\nimport { extendClass } from '../common/core.helpers';\nimport coreReflectDirectiveResolve from '../common/core.reflect.directive-resolve';\nimport { AnyType } from '../common/core.types';\nimport { isNgDef } from '../common/func.is-ng-def';\n\nconst registerTemplateMiddleware = (template: AnyType<any>, meta: Directive): void => {\n const child = extendClass(template);\n\n const alias = {\n provide: template,\n useExisting: child,\n };\n const providers = [...(meta.providers || []), alias];\n meta.providers = providers;\n\n if (isNgDef(template, 'c')) {\n Component(meta)(child);\n } else {\n Directive(meta)(child);\n }\n TestBed.configureTestingModule({\n declarations: [child],\n });\n\n // https://github.com/ike18t/ng-mocks/issues/1876\n // We need to apply overrides to our cloned declaration.\n try {\n const ngMocksOverrides: Map<any, any> = (TestBed as any).ngMocksOverrides;\n const { override } = ngMocksOverrides.get(template);\n const { set } = override;\n ngMocksOverrides.set(child, { set: meta });\n TestBed.overrideComponent(child, {\n set: {\n ...set,\n providers: [...set.providers, alias],\n },\n });\n } catch {\n // nothing to do\n }\n};\n\nexport default (template: AnyType<any>): Directive => {\n if (!isNgDef(template, 'c') && !isNgDef(template, 'd')) {\n return {};\n }\n\n const meta = { ...coreReflectDirectiveResolve(template) };\n\n if (meta.selector && /[\\s,[\\]]/.test(meta.selector)) {\n meta.selector = '';\n }\n\n if (!meta.selector) {\n // istanbul ignore next\n meta.selector = (TestBed as any).ngMocksSelectors?.get(template) || '';\n if (!meta.selector) {\n meta.selector = `ng-mocks-${template.name}`;\n registerTemplateMiddleware(template, meta);\n // istanbul ignore else\n if ((TestBed as any).ngMocksSelectors) {\n (TestBed as any).ngMocksSelectors.set(template, meta.selector);\n }\n }\n }\n\n return meta;\n};\n","import { DebugElement, Directive, InjectionToken } from '@angular/core';\nimport { getTestBed, TestBed } from '@angular/core/testing';\n\nimport coreDefineProperty from '../common/core.define-property';\nimport { AnyType, Type } from '../common/core.types';\nimport funcImportExists from '../common/func.import-exists';\nimport { isNgDef } from '../common/func.is-ng-def';\nimport ngMocksStack from '../common/ng-mocks-stack';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\nimport { ngMocks } from '../mock-helper/mock-helper';\nimport helperDefinePropertyDescriptor from '../mock-service/helper.define-property-descriptor';\nimport { MockService } from '../mock-service/mock-service';\n\nimport funcCreateWrapper from './func.create-wrapper';\nimport funcInstallPropReader from './func.install-prop-reader';\nimport funcReflectTemplate from './func.reflect-template';\nimport { IMockRenderFactoryOptions, MockedComponentFixture } from './types';\n\nexport interface MockRenderFactory<C = any, F extends keyof any = keyof C> {\n bindings: keyof F;\n configureTestBed: () => void;\n declaration: AnyType<never>;\n <T extends Record<F, any>>(params?: Partial<T>, detectChanges?: boolean): MockedComponentFixture<C, T>;\n}\n\nconst isExpectedRender = (template: any): boolean =>\n typeof template === 'string' || isNgDef(template, 'c') || isNgDef(template, 'd');\n\nconst renderDeclaration = (fixture: any, template: any, params: any): void => {\n fixture.point = fixture.debugElement.children[0] || fixture.debugElement.childNodes[0];\n if (isNgDef(template, 'd')) {\n helperDefinePropertyDescriptor(fixture.point, 'componentInstance', {\n get: () => ngMocks.get(fixture.point, template),\n });\n }\n tryWhen(!params, () => funcInstallPropReader(fixture.componentInstance, fixture.point?.componentInstance, []));\n};\n\nconst renderInjection = (fixture: any, template: any, params: any): void => {\n const instance = TestBed.get(template);\n if (params) {\n ngMocks.stub(instance, params);\n }\n fixture.point = MockService(DebugElement, {\n childNodes: [],\n children: [],\n componentInstance: instance,\n nativeElement: MockService(HTMLElement),\n });\n funcInstallPropReader(fixture.componentInstance, fixture.point.componentInstance, [], true);\n};\n\nconst tryWhen = (flag: boolean, callback: () => void) => {\n if (!flag) {\n return;\n }\n try {\n // ivy throws Error: Expecting instance of DOM Element\n callback();\n } catch {\n // nothing to do\n }\n};\n\nconst fixtureMessage = [\n 'Forgot to flush TestBed?',\n 'MockRender cannot be used without a reset after TestBed.get / TestBed.inject / TestBed.createComponent and another MockRender in the same test.',\n 'If you want to mock a service before rendering, consider usage of MockRenderFactory or MockInstance.',\n 'To flush TestBed, add a call of ngMocks.flushTestBed() before the call of MockRender, or pass `reset: true` to MockRender options.',\n].join(' ');\n\nconst handleFixtureError = (e: any) => {\n const error = new Error(fixtureMessage);\n coreDefineProperty(error, 'parent', e);\n throw error;\n};\n\nconst flushTestBed = (flags: Record<string, any>): void => {\n const globalFlags = ngMocksUniverse.global.get('flags');\n const testBed: any = getTestBed();\n if (flags.reset || (!testBed._instantiated && !testBed._testModuleRef)) {\n ngMocks.flushTestBed();\n } else if (globalFlags.onTestBedFlushNeed !== 'throw' && (testBed._instantiated || testBed._testModuleRef)) {\n if (globalFlags.onTestBedFlushNeed === 'warn') {\n console.warn(fixtureMessage);\n }\n ngMocks.flushTestBed();\n }\n};\n\nconst generateFactoryInstall = (ctor: AnyType<any>, options: IMockRenderFactoryOptions) => () => {\n const testBed: TestBed & {\n _compiler?: {\n declarations?: Array<AnyType<any>>;\n };\n _declarations?: Array<AnyType<any>>;\n declarations?: Array<AnyType<any>>;\n } = getTestBed();\n // istanbul ignore next\n const declarations = testBed._compiler?.declarations || testBed.declarations || testBed._declarations;\n if (!declarations || declarations.indexOf(ctor) === -1) {\n flushTestBed(options);\n try {\n TestBed.configureTestingModule({\n declarations: [ctor],\n });\n } catch (error) {\n handleFixtureError(error);\n }\n }\n};\n\nconst generateFactory = (\n componentCtor: Type<any>,\n bindings: undefined | null | string[],\n template: any,\n options: IMockRenderFactoryOptions,\n) => {\n const result = (params: any, detectChanges?: boolean) => {\n result.configureTestBed();\n const fixture: any = TestBed.createComponent(componentCtor);\n\n funcInstallPropReader(fixture.componentInstance, params ?? {}, bindings ?? []);\n coreDefineProperty(fixture, 'ngMocksStackId', ngMocksUniverse.global.get('bullet:stack:id'));\n\n if (detectChanges === undefined || detectChanges) {\n fixture.detectChanges();\n }\n\n if (isExpectedRender(template)) {\n renderDeclaration(fixture, template, params);\n } else {\n renderInjection(fixture, template, params);\n }\n\n return fixture;\n };\n result.declaration = componentCtor;\n result.bindings = bindings;\n result.configureTestBed = generateFactoryInstall(componentCtor, options);\n\n return result;\n};\n\n/**\n * @see https://ng-mocks.sudo.eu/api/MockRender#factory\n */\nexport function MockRenderFactory<MComponent>(\n template: InjectionToken<MComponent>,\n bindings?: undefined | null,\n options?: IMockRenderFactoryOptions,\n): MockRenderFactory<MComponent, never>;\n\n/**\n * MockRenderFactory is a delayed version of MockRender.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender#factory\n */\nexport function MockRenderFactory<MComponent>(\n template: AnyType<MComponent>,\n bindings: undefined | null,\n options?: IMockRenderFactoryOptions,\n): MockRenderFactory<MComponent, keyof MComponent>;\n\n/**\n * MockRenderFactory is a delayed version of MockRender.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender#factory\n */\nexport function MockRenderFactory<MComponent, TKeys extends keyof any>(\n template: AnyType<MComponent>,\n bindings: TKeys[],\n options?: IMockRenderFactoryOptions,\n): MockRenderFactory<MComponent, TKeys>;\n\n/**\n * MockRenderFactory is a delayed version of MockRender.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender#factory\n */\nexport function MockRenderFactory<MComponent, TKeys extends keyof any = keyof any>(\n template: AnyType<MComponent>,\n bindings: TKeys[],\n options?: IMockRenderFactoryOptions,\n): MockRenderFactory<MComponent, TKeys>;\n\n/**\n * Without params we should not autocomplete any keys of any types.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender#factory\n */\nexport function MockRenderFactory<MComponent>(\n template: AnyType<MComponent>,\n): MockRenderFactory<MComponent, keyof MComponent>;\n\n/**\n * An empty string does not have point.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender#factory\n */\nexport function MockRenderFactory(template: ''): MockRenderFactory<void, never>;\n\n/**\n * Without params we should not autocomplete any keys of any types.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender#factory\n */\nexport function MockRenderFactory<MComponent = void>(template: string): MockRenderFactory<MComponent>;\n\n/**\n * MockRenderFactory is a delayed version of MockRender.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender#factory\n */\nexport function MockRenderFactory<MComponent = void, TKeys extends keyof any = keyof any>(\n template: string,\n bindings: TKeys[],\n options?: IMockRenderFactoryOptions,\n): MockRenderFactory<MComponent, TKeys>;\n\nexport function MockRenderFactory<MComponent, TKeys extends string>(\n template: string | AnyType<MComponent> | InjectionToken<MComponent>,\n bindings?: undefined | null | TKeys[],\n options: IMockRenderFactoryOptions = {},\n): any {\n funcImportExists(template, 'MockRender');\n\n const meta: Directive = typeof template === 'string' || isNgDef(template, 't') ? {} : funcReflectTemplate(template);\n const componentCtor: any = funcCreateWrapper(template, meta, bindings, options);\n const factory = generateFactory(componentCtor, bindings, template, options);\n if (ngMocksStack.current().level !== 'root' && options.configureTestBed !== false) {\n factory.configureTestBed();\n }\n\n return factory;\n}\n","import { InjectionToken } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\n\nimport { AnyType } from '../common/core.types';\n\nimport { MockRenderFactory } from './mock-render-factory';\nimport { IMockRenderOptions, MockedComponentFixture } from './types';\n\n/**\n * This signature of MockRender lets create a fixture to access a token.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nexport function MockRender<MComponent>(\n template: InjectionToken<MComponent>,\n params?: undefined | null,\n detectChangesOrOptions?: boolean | IMockRenderOptions,\n): MockedComponentFixture<MComponent, void>;\n\n/**\n * This signature of MockRender lets create a fixture to access a component without parameters.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nexport function MockRender<MComponent>(\n template: AnyType<MComponent>,\n params: undefined | null,\n detectChangesOrOptions?: boolean | IMockRenderOptions,\n): MockedComponentFixture<MComponent, MComponent>;\n\n/**\n * This signature of MockRender lets create a fixture with parameters to access a component.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nexport function MockRender<MComponent, TComponent extends object>(\n template: AnyType<MComponent>,\n params: TComponent,\n detectChangesOrOptions?: boolean | IMockRenderOptions,\n): MockedComponentFixture<MComponent, TComponent>;\n\n/**\n * This signature of MockRender lets create a fixture with parameters to access a component.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nexport function MockRender<MComponent, TComponent extends object = Record<keyof any, any>>(\n template: AnyType<MComponent>,\n params: TComponent,\n detectChangesOrOptions?: boolean | IMockRenderOptions,\n): MockedComponentFixture<MComponent, TComponent>;\n\n/**\n * This signature of MockRender without params should not autocomplete any keys of any types.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nexport function MockRender<MComponent>(template: AnyType<MComponent>): MockedComponentFixture<MComponent, MComponent>;\n\n/**\n * This signature of MockRender with an empty template does not have the point.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nexport function MockRender(template: ''): ComponentFixture<void> & { point: undefined };\n\n/**\n * This signature of MockRender without params should not autocomplete any keys of any types.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nexport function MockRender<MComponent = void>(template: string): MockedComponentFixture<MComponent>;\n\n/**\n * This signature of MockRender lets create a fixture based on string template.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nexport function MockRender<MComponent = void>(\n template: string,\n params: undefined | null,\n detectChangesOrOptions?: boolean | IMockRenderOptions,\n): MockedComponentFixture<MComponent, void>;\n\n/**\n * This signature of MockRender lets create a fixture with parameters to access a string based template.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nexport function MockRender<MComponent = void, TComponent extends Record<keyof any, any> = Record<keyof any, any>>(\n template: string,\n params: TComponent,\n detectChangesOrOptions?: boolean | IMockRenderOptions,\n): MockedComponentFixture<MComponent, TComponent>;\n\n/**\n * This signature of MockRender lets create a fixture with parameters to access a string based template.\n *\n * @see https://ng-mocks.sudo.eu/api/MockRender\n */\nexport function MockRender<MComponent, TComponent extends Record<keyof any, any> = Record<keyof any, any>>(\n template: string,\n params: TComponent,\n detectChangesOrOptions?: boolean | IMockRenderOptions,\n): MockedComponentFixture<MComponent, TComponent>;\n\nexport function MockRender<MComponent, TComponent extends Record<keyof any, any>>(\n template: string | AnyType<MComponent> | InjectionToken<MComponent>,\n params?: TComponent,\n flags: boolean | IMockRenderOptions = true,\n): any {\n const bindings = params && typeof params === 'object' ? Object.keys(params) : params;\n const options = typeof flags === 'boolean' ? { detectChanges: flags } : { ...flags };\n const factory = (MockRenderFactory as any)(template, bindings, options);\n\n return factory(params, options.detectChanges);\n}\n","import checkIsFunc from './check.is-func';\n\nexport default (value: any): boolean => {\n if (typeof value !== 'function') {\n return false;\n }\n\n return !checkIsFunc(value);\n};\n","const isAngularClass = (value: Record<keyof any, unknown>): boolean => {\n if (value.ɵprov) {\n return true;\n }\n if (value.__annotations__) {\n return true;\n }\n if (value.__parameters__) {\n return true;\n }\n if (value.parameters) {\n return true;\n }\n\n return false;\n};\n\nconst guessClass = (name: string, proto: string, value: any): boolean => {\n // unnamed classes can be class_N\n if (name.match(/^class/) !== null) {\n return true;\n }\n\n // let's consider an existing 'prototype' as a class\n if (Object.keys(value.prototype).length > 0) {\n return true;\n }\n\n // let's consider a capital name and 'this' usage as a class\n const clsCode = name.codePointAt(0);\n if (clsCode && clsCode >= 65 && clsCode <= 90 && proto.match(/\\bthis\\./gm) !== null) {\n return true;\n }\n\n // webpack es5 class\n const regEx = new RegExp(`\\\\(this,\\\\s*${name}\\\\)`, 'mg');\n // istanbul ignore if\n if (proto.match(regEx) !== null) {\n return true;\n }\n\n return false;\n};\n\nexport default (value: any): boolean => {\n if (typeof value !== 'function') {\n return false;\n }\n if (!value.prototype) {\n return true;\n }\n if (isAngularClass(value)) {\n return false;\n }\n\n const proto = value.toString();\n\n // es2015 class\n // istanbul ignore if\n if (proto.match(/^class\\b/) !== null) {\n return false;\n }\n\n const cls = proto.match(/^function\\s+([^\\s(]+)\\(/);\n if (cls === null) {\n return true;\n }\n if (guessClass(cls[1], proto, value)) {\n return false;\n }\n\n return true;\n};\n","export default (value: any): boolean => {\n if (value === null) {\n return false;\n }\n if (typeof value !== 'object') {\n return false;\n }\n if (value.ngMetadataName === 'InjectionToken') {\n return false;\n }\n\n return typeof Object.getPrototypeOf(value) === 'object';\n};\n","import helperDefinePropertyDescriptor from './helper.define-property-descriptor';\nimport helperExtractMethodsFromPrototype from './helper.extract-methods-from-prototype';\nimport helperExtractPropertiesFromPrototype from './helper.extract-properties-from-prototype';\nimport helperExtractPropertyDescriptor from './helper.extract-property-descriptor';\n\nexport default (service: any, bindFrom?: object, bindTo?: object, mock?: any): any => {\n const instance = function (...args: any[]) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return (mock || service).apply(bindFrom === this ? bindTo : this, args);\n };\n\n for (const prop of [\n ...helperExtractMethodsFromPrototype(service),\n ...helperExtractPropertiesFromPrototype(service),\n ]) {\n const desc = helperExtractPropertyDescriptor(service, prop);\n helperDefinePropertyDescriptor(instance, prop, desc);\n }\n\n return instance;\n};\n","import coreDefineProperty from '../common/core.define-property';\nimport funcGetName from '../common/func.get-name';\n\nimport helperMockService from './helper.mock-service';\nimport { MockedFunction } from './types';\n\nexport default (service: any): { [key in keyof any]: MockedFunction } => {\n const mockName = funcGetName(service);\n const value: any = {};\n coreDefineProperty(value, '__ngMocks', true);\n\n const methods = helperMockService.extractMethodsFromPrototype(service);\n for (const method of methods) {\n helperMockService.mock(value, method, mockName);\n }\n\n const properties = helperMockService.extractPropertiesFromPrototype(service);\n for (const property of properties) {\n helperMockService.mock(value, property, 'get', mockName);\n helperMockService.mock(value, property, 'set', mockName);\n }\n Object.setPrototypeOf(value, service);\n\n return value;\n};\n","import helperExtractPropertyDescriptor from './helper.extract-property-descriptor';\n\nexport default (instance: any, prop: keyof any, desc?: PropertyDescriptor): boolean => {\n if (!desc || !instance) {\n return false;\n }\n\n // istanbul ignore else\n if (Object.defineProperty) {\n const sourceDesc = helperExtractPropertyDescriptor(instance, prop);\n if (sourceDesc?.configurable === false) {\n return false;\n }\n\n Object.defineProperty(instance, prop, {\n ...desc,\n configurable: true,\n ...((desc.get === undefined && desc.set === undefined) || desc.writable === false ? { writable: true } : {}),\n });\n } else {\n instance[prop] = desc.value;\n }\n\n return true;\n};\n","import funcGetName from '../common/func.get-name';\n\nconst sanitizerMethods = [\n 'sanitize',\n 'bypassSecurityTrustHtml',\n 'bypassSecurityTrustStyle',\n 'bypassSecurityTrustScript',\n 'bypassSecurityTrustUrl',\n 'bypassSecurityTrustResourceUrl',\n];\n\nconst extraMethods: Record<string, undefined | string[]> = {\n DomSanitizer: sanitizerMethods,\n Sanitizer: sanitizerMethods,\n};\n\nconst getOwnPropertyNames = (prototype: any): string[] => {\n const result: string[] = Object.getOwnPropertyNames(prototype);\n for (const method of extraMethods[funcGetName(prototype)] ?? []) {\n result.push(method);\n }\n\n return result;\n};\n\nexport default <T>(service: T): string[] => {\n const result: string[] = [];\n\n let prototype = service;\n while (prototype && Object.getPrototypeOf(prototype) !== null) {\n for (const method of getOwnPropertyNames(prototype)) {\n if ((method as any) === 'constructor') {\n continue;\n }\n\n const descriptor = Object.getOwnPropertyDescriptor(prototype, method);\n const isGetterSetter = descriptor && (descriptor.get || descriptor.set);\n if (isGetterSetter || result.indexOf(method) !== -1) {\n continue;\n }\n result.push(method);\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n\n return result;\n};\n","export default <T>(service: T): string[] => {\n const result: string[] = [];\n let prototype = service;\n while (prototype && Object.getPrototypeOf(prototype) !== null) {\n for (const prop of Object.getOwnPropertyNames(prototype)) {\n if ((prop as any) === 'constructor') {\n continue;\n }\n\n const descriptor = Object.getOwnPropertyDescriptor(prototype, prop);\n const isGetterSetter = descriptor && (descriptor.get || descriptor.set);\n if (!isGetterSetter || result.indexOf(prop) !== -1) {\n continue;\n }\n result.push(prop);\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n\n return result;\n};\n","export default <T>(service: T, prop: keyof any): PropertyDescriptor | undefined => {\n let prototype = service;\n while (prototype && Object.getPrototypeOf(prototype) !== null) {\n const descriptor = Object.getOwnPropertyDescriptor(prototype, prop);\n if (descriptor) {\n return descriptor;\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n\n return undefined;\n};\n","import coreDefineProperty from '../common/core.define-property';\n\nimport { CustomMockFunction, MockedFunction } from './types';\n\nconst mockFunction: {\n (mockName: string, original?: boolean): MockedFunction;\n customMockFunction?: CustomMockFunction;\n} = (mockName: string, original = false): MockedFunction => {\n const func =\n mockFunction.customMockFunction && !original\n ? mockFunction.customMockFunction(mockName)\n : (val: any) => {\n if (setValue) {\n setValue(val);\n }\n\n return value;\n };\n\n // magic to make getters / setters working\n\n let value: any;\n let setValue: any;\n\n coreDefineProperty(func, '__ngMocks', true);\n coreDefineProperty(func, '__ngMocksSet', (newSetValue: any) => (setValue = newSetValue));\n coreDefineProperty(func, '__ngMocksGet', (newValue: any) => (value = newValue));\n\n return func;\n};\n\nexport default (() => mockFunction)();\n","import funcGetGlobal from '../common/func.get-global';\n\nimport helperCreateClone from './helper.create-clone';\nimport helperCreateMockFromPrototype from './helper.create-mock-from-prototype';\nimport helperDefinePropertyDescriptor from './helper.define-property-descriptor';\nimport helperExtractMethodsFromPrototype from './helper.extract-methods-from-prototype';\nimport helperExtractPropertiesFromPrototype from './helper.extract-properties-from-prototype';\nimport helperExtractPropertyDescriptor from './helper.extract-property-descriptor';\nimport helperMock from './helper.mock';\nimport helperMockFunction from './helper.mock-function';\nimport helperReplaceWithMocks from './helper.replace-with-mocks';\nimport helperResolveProvider from './helper.resolve-provider';\nimport helperUseFactory from './helper.use-factory';\nimport { CustomMockFunction } from './types';\n\n// We need a single pointer to the object among all environments.\nfuncGetGlobal().ngMockshelperMockService = funcGetGlobal().ngMockshelperMockService || {\n mockFunction: helperMockFunction,\n\n registerMockFunction: (func: CustomMockFunction | undefined) => {\n funcGetGlobal().ngMockshelperMockService.mockFunction.customMockFunction = func;\n },\n\n createClone: helperCreateClone,\n createMockFromPrototype: helperCreateMockFromPrototype,\n definePropertyDescriptor: helperDefinePropertyDescriptor,\n extractMethodsFromPrototype: helperExtractMethodsFromPrototype,\n extractPropertiesFromPrototype: helperExtractPropertiesFromPrototype,\n extractPropertyDescriptor: helperExtractPropertyDescriptor,\n mock: helperMock,\n replaceWithMocks: helperReplaceWithMocks,\n resolveProvider: helperResolveProvider,\n useFactory: helperUseFactory,\n};\n\nexport default ((): {\n createClone: typeof helperCreateClone;\n createMockFromPrototype: typeof helperCreateMockFromPrototype;\n definePropertyDescriptor: typeof helperDefinePropertyDescriptor;\n extractMethodsFromPrototype: typeof helperExtractMethodsFromPrototype;\n extractPropertiesFromPrototype: typeof helperExtractPropertiesFromPrototype;\n extractPropertyDescriptor: typeof helperExtractPropertyDescriptor;\n mock: typeof helperMock;\n mockFunction: typeof helperMockFunction;\n registerMockFunction: (func: CustomMockFunction | undefined) => void;\n replaceWithMocks: typeof helperReplaceWithMocks;\n resolveProvider: typeof helperResolveProvider;\n useFactory: typeof helperUseFactory;\n} => funcGetGlobal().ngMockshelperMockService)();\n\nexport function registerMockFunction(func?: CustomMockFunction | undefined): void {\n funcGetGlobal().ngMockshelperMockService.registerMockFunction(func);\n}\n","import funcGetName from '../common/func.get-name';\n\nimport helperMockService from './helper.mock-service';\nimport { MockedFunction } from './types';\n\n// istanbul ignore next\nconst createName = (name: string, mockName?: string, instance?: any, accessType?: string) =>\n `${\n mockName ? mockName : typeof instance.prototype === 'function' ? instance.prototype.name : funcGetName(instance)\n }.${name}${accessType || ''}`;\n\nconst generateMockDef = (def: any, mock: any, accessType?: string): PropertyDescriptor => ({\n ...(accessType === 'get' && def && def.set\n ? {\n set: def.set,\n }\n : {}),\n\n ...(accessType === 'set' && def && def.get\n ? {\n get: def.get,\n }\n : {}),\n\n ...(accessType\n ? {}\n : {\n writable: true,\n }),\n\n [accessType || 'value']: mock,\n configurable: true,\n enumerable: true,\n});\n\nconst parseArgs = (\n args: any[],\n): {\n accessType?: 'get' | 'set';\n mockName?: string;\n} => {\n let accessType: 'get' | 'set' | undefined;\n let mockName: string | undefined;\n\n if (args.length > 0 && args[0] !== 'get' && args[0] !== 'set') {\n mockName = args[0];\n } else if (args.length > 0 && (args[0] === 'get' || args[0] === 'set')) {\n accessType = args[0];\n mockName = args[1];\n }\n\n return { accessType, mockName };\n};\n\nexport default <T = MockedFunction>(instance: any, name: string, ...args: Array<string | undefined>): T => {\n const { accessType, mockName } = parseArgs(args);\n\n const def = Object.getOwnPropertyDescriptor(instance, name);\n if (def && def[accessType || 'value']) {\n return def[accessType || 'value'];\n }\n\n const detectedMockName = createName(name, mockName, instance, accessType);\n const mock: any = helperMockService.mockFunction(detectedMockName, !!accessType);\n\n const mockDef = generateMockDef(def, mock, accessType);\n if (mockDef.get && mockDef.set && (mockDef.get as any).__ngMocks && (mockDef.set as any).__ngMocks) {\n (mockDef.set as any).__ngMocksSet((val: any) => (mockDef.get as any).__ngMocksGet(val));\n }\n\n Object.defineProperty(instance, name, mockDef);\n\n return mock;\n};\n","import { NG_MOCKS_GUARDS } from '../common/core.tokens';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nconst handleSection = (section: any[]) => {\n const guards: any[] = [];\n\n for (const guard of section) {\n if (ngMocksUniverse.isProvidedDef(guard)) {\n guards.push(guard);\n continue;\n }\n if (ngMocksUniverse.isExcludedDef(NG_MOCKS_GUARDS)) {\n continue;\n }\n guards.push(guard);\n }\n\n return guards;\n};\n\nconst handleArray = (value: any[], callback: any): [boolean, any[]] => {\n const mock = [];\n let updated = false;\n\n for (const valueItem of value) {\n if (ngMocksUniverse.isExcludedDef(valueItem)) {\n updated = updated || true;\n continue;\n }\n mock.push(callback(valueItem));\n updated = updated || mock[mock.length - 1] !== valueItem;\n }\n\n return [updated, mock];\n};\n\nconst handleItemKeys = ['canActivate', 'canActivateChild', 'canDeactivate', 'canLoad'];\nconst handleItemGetGuards = (mock: any, section: string) =>\n Array.isArray(mock[section]) ? handleSection(mock[section]) : mock[section];\n\nconst handleItem = (value: Record<keyof any, any>, callback: any): [boolean, Record<keyof any, any>] => {\n let mock: Record<keyof any, any> = {};\n let updated = false;\n\n for (const key of Object.keys(value)) {\n if (ngMocksUniverse.isExcludedDef(value[key])) {\n updated = updated || true;\n continue;\n }\n mock[key] = callback(value[key]);\n updated = updated || mock[key] !== value[key];\n }\n\n // Removal of guards.\n for (const section of handleItemKeys) {\n const guards: any[] = handleItemGetGuards(mock, section);\n if (guards && mock[section].length !== guards.length) {\n updated = updated || true;\n mock = { ...mock, [section]: guards };\n }\n }\n\n return [updated, mock];\n};\n\nconst replaceWithMocks = (value: any): any => {\n if (ngMocksUniverse.cacheDeclarations.has(value)) {\n return ngMocksUniverse.cacheDeclarations.get(value);\n }\n if (typeof value !== 'object') {\n return value;\n }\n\n let mock: any;\n let updated = false;\n\n if (Array.isArray(value)) {\n [updated, mock] = handleArray(value, replaceWithMocks);\n } else if (value) {\n [updated, mock] = handleItem(value, replaceWithMocks);\n }\n\n if (updated) {\n Object.setPrototypeOf(mock, Object.getPrototypeOf(value));\n\n return mock;\n }\n\n return value;\n};\n\nexport default (() => replaceWithMocks)();\n","import { extractDependency } from '../common/core.helpers';\nimport { NG_MOCKS_INTERCEPTORS } from '../common/core.tokens';\nimport funcGetProvider from '../common/func.get-provider';\nimport { isNgInjectionToken } from '../common/func.is-ng-injection-token';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport helperMockService from './helper.mock-service';\nimport mockProvider from './mock-provider';\n\nconst anyDiffers = (a: any, b: any, ...keys: string[]): boolean => {\n for (const key of keys) {\n if (a[key] !== b[key]) {\n return true;\n }\n }\n\n return false;\n};\n\nconst createFromResolution = (provide: any, resolution: any) => {\n let mockDef = resolution;\n\n const existingMock = ngMocksUniverse.builtProviders.get(provide);\n if (existingMock) {\n mockDef = existingMock;\n }\n\n // A case when a provider is actually a component, directive, pipe.\n if (typeof mockDef === 'function') {\n mockDef = {\n provide,\n useClass: mockDef,\n };\n }\n\n return mockDef;\n};\n\nconst isSuitableProvider = (provider: any, provide: any): boolean =>\n ngMocksUniverse.builtProviders.has(NG_MOCKS_INTERCEPTORS) &&\n ngMocksUniverse.builtProviders.get(NG_MOCKS_INTERCEPTORS) === null &&\n isNgInjectionToken(provide) &&\n provide.toString() === 'InjectionToken HTTP_INTERCEPTORS' &&\n provide !== provider;\n\nconst excludeInterceptors = (provider: any, provide: any): boolean => {\n if (isSuitableProvider(provider, provide)) {\n if (provider.useFactory || provider.useValue) {\n return true;\n }\n const interceptor = provider.useExisting || provider.useClass;\n if (!ngMocksUniverse.builtProviders.has(interceptor) || ngMocksUniverse.builtProviders.get(interceptor) === null) {\n return true;\n }\n }\n\n return false;\n};\n\nconst parseProvider = (\n provider: any,\n callback: any,\n): {\n change: () => void;\n multi: boolean;\n provide: any;\n} => {\n const provide = funcGetProvider(provider);\n const multi = provider !== provide && !!provider.multi;\n\n return {\n change: () => {\n if (callback) {\n callback();\n }\n },\n multi,\n provide,\n };\n};\n\n// if the provider is a value, we need to go through the value and to replace all mock instances.\nconst replaceWithMocks = (provider: any, provide: any, mockDef: any) => {\n if (provide !== provider && mockDef && mockDef.useValue) {\n const useValue = helperMockService.replaceWithMocks(mockDef.useValue);\n\n return useValue === mockDef.useValue\n ? mockDef\n : {\n ...mockDef,\n useValue,\n };\n }\n\n return mockDef;\n};\n\nconst createPredefinedMockProvider = (provider: any, provide: any): any => {\n // Then we check decisions whether we should keep or replace a provider.\n if (ngMocksUniverse.builtProviders.has(provide)) {\n const mockDef = ngMocksUniverse.builtProviders.get(provide);\n if (mockDef === provide) {\n return provider;\n }\n\n return mockDef;\n }\n\n return undefined;\n};\n\nconst createMockProvider = (provider: any, provide: any, change: () => void) => {\n let mockDef = createPredefinedMockProvider(provider, provide);\n\n if (!mockDef && ngMocksUniverse.flags.has('skipMock') && ngMocksUniverse.getResolution(provide) !== 'mock') {\n ngMocksUniverse.config.get('ngMocksDepsSkip')?.add(provide);\n mockDef = provider;\n }\n if (!mockDef) {\n mockDef = mockProvider(provider);\n }\n\n mockDef = replaceWithMocks(provider, provide, mockDef);\n if (!areEqualDefs(mockDef, provider, provide)) {\n change();\n }\n // Touching only when we really provide a value.\n if (mockDef) {\n ngMocksUniverse.touches.add(provide);\n }\n\n return mockDef;\n};\n\nconst areEqualDefs = (mockDef: any, provider: any, provide: any): boolean => {\n let providerDiffers = false;\n let defDiffers = !mockDef;\n if (provider && mockDef && !defDiffers) {\n defDiffers = anyDiffers(provider, mockDef, 'provide', 'useValue', 'useClass', 'useExisting', 'useFactory', 'deps');\n }\n if (provider === provide && mockDef !== provider) {\n providerDiffers = true;\n } else if (provider !== provide && defDiffers) {\n providerDiffers = true;\n }\n\n return !providerDiffers;\n};\n\nconst isPreconfiguredDependency = (provider: any, provide: any): boolean => {\n // we should not touch excluded providers.\n if (ngMocksUniverse.builtProviders.has(provide) && ngMocksUniverse.builtProviders.get(provide) === null) {\n return true;\n }\n\n if (provide !== provider && provider.deps) {\n extractDependency(provider.deps, ngMocksUniverse.config.get('ngMocksDeps'));\n }\n\n return excludeInterceptors(provider, provide);\n};\n\n// tries to resolve a provider based on current universe state.\nexport default (provider: any, resolutions: Map<any, any>, changed?: () => void) => {\n const { provide, multi, change } = parseProvider(provider, changed);\n // we should not touch our system providers.\n if (provider && typeof provider === 'object' && provider.useExisting && provider.useExisting.mockOf) {\n return provider;\n }\n if (isPreconfiguredDependency(provider, provide)) {\n return change();\n }\n if (resolutions.has(provide)) {\n return createFromResolution(provide, resolutions.get(provide));\n }\n\n const mockDef = createMockProvider(provider, provide, change);\n\n return multi && typeof mockDef === 'object' ? { ...mockDef, multi } : mockDef;\n};\n","import { FactoryProvider, Injector } from '@angular/core';\n\nimport { mapValues } from '../common/core.helpers';\nimport { isNgInjectionToken } from '../common/func.is-ng-injection-token';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\nimport mockHelperStub from '../mock-helper/mock-helper.stub';\nimport mockInstanceApply from '../mock-instance/mock-instance-apply';\n\nimport { MockService } from './mock-service';\n\nconst applyCallbackToken = (def: any): boolean => isNgInjectionToken(def) || typeof def === 'string';\n\nconst applyCallback = (def: any, inst: any, callbacks: any[], injector?: Injector, overrides?: any): void => {\n let instance: any = inst;\n\n for (const callback of callbacks) {\n const override = callback(instance, injector);\n if (applyCallbackToken(def)) {\n instance = override;\n continue;\n }\n\n // overrides return real value.\n if (callback === overrides) {\n instance = override;\n continue;\n }\n\n if (!override) {\n continue;\n }\n\n instance = mockHelperStub(instance, override);\n }\n\n return instance;\n};\n\nexport default <D, I>(\n def: D,\n init?: () => I,\n overrides?: (instance: I, injector: Injector) => I | Partial<I>,\n): FactoryProvider => ({\n deps: [Injector],\n provide: def,\n useFactory: (injector?: Injector) => {\n const instance = init ? init() : MockService(def as any);\n\n const configGlobal: Set<any> | undefined = ngMocksUniverse.getOverrides().get(def);\n const callbacks = configGlobal ? mapValues(configGlobal) : [];\n if (overrides) {\n callbacks.push(overrides);\n }\n callbacks.push(...mockInstanceApply(def));\n\n return applyCallback(def, instance, callbacks, injector, overrides);\n },\n});\n","import { Provider } from '@angular/core';\n\nimport coreConfig from '../common/core.config';\nimport { Type } from '../common/core.types';\nimport funcGetProvider from '../common/func.get-provider';\nimport { isNgInjectionToken } from '../common/func.is-ng-injection-token';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport helperDefinePropertyDescriptor from './helper.define-property-descriptor';\nimport helperExtractPropertyDescriptor from './helper.extract-property-descriptor';\nimport helperUseFactory from './helper.use-factory';\nimport { MockService } from './mock-service';\n\nconst { neverMockProvidedFunction, neverMockToken } = coreConfig;\n\nconst applyMissingClassProperties = (instance: any, useClass: Type<any>) => {\n const existing = Object.getOwnPropertyNames(instance);\n const child = MockService(useClass);\n\n for (const name of Object.getOwnPropertyNames(child)) {\n if (existing.indexOf(name) !== -1) {\n continue;\n }\n const def = helperExtractPropertyDescriptor(child, name);\n helperDefinePropertyDescriptor(instance, name, def);\n }\n};\n\nconst createFactoryProvider = (provider: any, provide: any) =>\n helperUseFactory(provide, () => {\n const instance = MockService(provide);\n // Magic below adds missed properties to the instance to\n // fulfill missed abstract methods.\n if (provide !== provider && Object.keys(provider).indexOf('useClass') !== -1) {\n applyMissingClassProperties(instance, provider.useClass);\n }\n\n return instance;\n });\n\nconst normalizePrimitivesMap: Array<[(value: any) => boolean, any]> = [\n [value => typeof value === 'boolean', false],\n [value => typeof value === 'number', 0],\n [value => typeof value === 'string', ''],\n [value => value === null, null],\n];\n\nconst normalizePrimitives = (value: any): any => {\n for (const [check, result] of normalizePrimitivesMap) {\n if (check(value)) {\n return result;\n }\n }\n\n return undefined;\n};\n\nconst createValueProvider = (provider: any, provide: any) =>\n helperUseFactory(provide, () =>\n provider.useValue && typeof provider.useValue === 'object'\n ? MockService(provider.useValue)\n : normalizePrimitives(provider.useValue),\n );\n\nconst createClassProvider = (provider: any, provide: any) =>\n ngMocksUniverse.builtProviders.has(provider.useClass) &&\n ngMocksUniverse.builtProviders.get(provider.useClass) === provider.useClass\n ? provider\n : helperUseFactory(provide, () => MockService(provider.useClass));\n\nconst createMockProvider = (provider: any, provide: any, cacheProviders?: Map<any, any>): Provider | undefined => {\n let mockProvider: Provider | undefined;\n if (typeof provide === 'function') {\n mockProvider = createFactoryProvider(provider, provide);\n }\n if (provide === provider && mockProvider && cacheProviders) {\n cacheProviders.set(provide, mockProvider);\n }\n\n return mockProvider;\n};\n\n// Tokens are special subject, we can skip adding them because in a mock module they are useless.\n// The main problem is that providing undefined to HTTP_INTERCEPTORS and others breaks their code.\n// If a testing module / component requires omitted tokens then they should be provided manually\n// during creation of TestBed module.\nconst handleProvider = (provider: any, provide: any, useFactory: boolean) => {\n if (provide === provider) {\n return useFactory ? helperUseFactory(provider, () => undefined) : undefined;\n }\n if (provider.multi) {\n ngMocksUniverse.config.get('ngMocksMulti')?.add(provide);\n\n return undefined;\n }\n\n let mockProvider: any;\n // istanbul ignore else\n if (Object.keys(provider).indexOf('useValue') !== -1) {\n mockProvider = createValueProvider(provider, provide);\n } else if (Object.keys(provider).indexOf('useExisting') !== -1) {\n mockProvider = provider;\n } else if (Object.keys(provider).indexOf('useClass') !== -1) {\n mockProvider = createClassProvider(provider, provide);\n } else if (Object.keys(provider).indexOf('useFactory') !== -1) {\n mockProvider = helperUseFactory(provide, () => ({}));\n }\n\n return mockProvider;\n};\n\nconst isNeverMockFunction = (provide: any): boolean =>\n typeof provide === 'function' && neverMockProvidedFunction.indexOf(provide.name) !== -1;\n\nconst isNeverMockToken = (provide: any): boolean =>\n isNgInjectionToken(provide) && neverMockToken.indexOf(provide.toString()) !== -1;\n\nexport default (provider: any, useFactory = false): Provider | undefined => {\n const provide = funcGetProvider(provider);\n\n if (ngMocksUniverse.getResolution(provide) === 'mock') {\n // nothing to do\n } else if (isNeverMockFunction(provide)) {\n return provider;\n } else if (isNeverMockToken(provide)) {\n return undefined;\n }\n\n // Only pure provides should be cached to avoid their influence on\n // another different declarations.\n const cacheProviders = ngMocksUniverse.flags.has('cacheProvider')\n ? ngMocksUniverse.cacheProviders\n : /* istanbul ignore next */ undefined;\n if (provide === provider && cacheProviders && cacheProviders.has(provide)) {\n return cacheProviders.get(provide);\n }\n\n return createMockProvider(provider, provide, cacheProviders) || handleProvider(provider, provide, useFactory);\n};\n","import { AnyType } from '../common/core.types';\nimport funcGetName from '../common/func.get-name';\nimport mockHelperStub from '../mock-helper/mock-helper.stub';\n\nimport checkIsClass from './check.is-class';\nimport checkIsFunc from './check.is-func';\nimport checkIsInst from './check.is-inst';\nimport helperMockService from './helper.mock-service';\n\nconst mockVariableMap: Array<\n [(def: any) => boolean, (service: any, prefix: string, callback: typeof MockService) => any]\n> = [\n [checkIsClass, (service: any) => helperMockService.createMockFromPrototype(service.prototype)],\n [\n checkIsFunc,\n (service: any, prefix: string) => helperMockService.mockFunction(`func:${prefix || funcGetName(service)}`),\n ],\n [def => Array.isArray(def), () => []],\n [\n checkIsInst,\n (service, prefix, callback) => {\n const value = helperMockService.createMockFromPrototype(service.constructor.prototype);\n for (const property of Object.keys(service)) {\n const mock: any = callback(service[property], `${prefix || 'instance'}.${property}`);\n if (mock !== undefined) {\n value[property] = mock;\n }\n }\n Object.setPrototypeOf(value, Object.getPrototypeOf(service));\n\n return value;\n },\n ],\n];\n\nconst mockVariable = (service: any, prefix: string, callback: typeof MockService) => {\n for (const [check, createMock] of mockVariableMap) {\n if (!check(service)) {\n continue;\n }\n\n return createMock(service, prefix, callback);\n }\n};\n\n/**\n * MockService creates a mock instance out of an object or a class.\n * Primitives are converted to undefined.\n *\n * @see https://ng-mocks.sudo.eu/api/MockService\n */\nexport function MockService(service: boolean | number | string | null | undefined): undefined;\n\n/**\n * MockService creates a mock instance out of an object or a class.\n * The second parameter can be used as overrides.\n *\n * @see https://ng-mocks.sudo.eu/api/MockService\n *\n * ```ts\n * const service = MockService(AuthService, {\n * loggedIn: true,\n * });\n * service.login(); // does nothing, it's dummy.\n * ```\n */\nexport function MockService<T>(service: AnyType<T>, overrides?: Partial<T>, mockNamePrefix?: string): T;\n\n/**\n * MockService creates a mock instance out of an object or a class.\n *\n * @see https://ng-mocks.sudo.eu/api/MockService\n *\n * ```ts\n * const service = MockService(AuthService);\n * service.login(); // does nothing, it's dummy.\n */\nexport function MockService<T>(service: AnyType<T>, mockNamePrefix?: string): T;\n\n/**\n * MockService creates a mock instance out of an object or a class.\n *\n * @see https://ng-mocks.sudo.eu/api/MockService\n *\n * ```ts\n * const mockUser = MockService(currentUser);\n * mockUser.save(); // does nothing, it's dummy.\n */\nexport function MockService<T = any>(service: object, mockNamePrefix?: string): T;\n\nexport function MockService(service: any, ...args: any[]): any {\n // mocking all methods / properties of a class / object.\n\n const mockNamePrefix = args.length > 0 && typeof args[0] === 'string' ? args[0] : args[1];\n const overrides = args.length > 0 && args[0] && typeof args[0] === 'object' ? args[0] : undefined;\n\n const value: any = mockVariable(service, mockNamePrefix, MockService);\n\n if (overrides) {\n mockHelperStub(value, overrides);\n }\n\n return value;\n}\n","import { Provider } from '@angular/core';\n\nimport coreForm from '../common/core.form';\nimport { flatten } from '../common/core.helpers';\nimport { AnyType } from '../common/core.types';\nimport funcGetProvider from '../common/func.get-provider';\nimport {\n MockAsyncValidatorProxy,\n MockControlValueAccessorProxy,\n MockValidatorProxy,\n} from '../common/mock-control-value-accessor-proxy';\nimport helperMockService from '../mock-service/helper.mock-service';\n\nimport toExistingProvider from './to-existing-provider';\nimport toFactoryProvider from './to-factory-provider';\n\nconst processTokens = (mockType: AnyType<any>, provider: any) => {\n const provide = funcGetProvider(provider);\n if (coreForm.NG_VALIDATORS && provide === coreForm.NG_VALIDATORS) {\n return toFactoryProvider(provide, () => new MockValidatorProxy(mockType));\n }\n if (coreForm.NG_ASYNC_VALIDATORS && provide === coreForm.NG_ASYNC_VALIDATORS) {\n return toFactoryProvider(provide, () => new MockAsyncValidatorProxy(mockType));\n }\n if (coreForm.NG_VALUE_ACCESSOR && provide === coreForm.NG_VALUE_ACCESSOR) {\n return toFactoryProvider(provide, () => new MockControlValueAccessorProxy(mockType));\n }\n\n return undefined;\n};\n\nconst processOwnUseExisting = (sourceType: AnyType<any>, mockType: AnyType<any>, provider: any) => {\n const provide = funcGetProvider(provider);\n\n // Check tests/issue-302/test.spec.ts\n if (provide === coreForm.NgControl || provide === coreForm.FormControlDirective) {\n return undefined;\n }\n\n if (provider !== provide && provider.useExisting === sourceType) {\n return toExistingProvider(provide, mockType);\n }\n if (\n provider !== provide &&\n provider.useExisting &&\n provider.useExisting.__forward_ref__ &&\n provider.useExisting() === sourceType\n ) {\n return toExistingProvider(provide, mockType);\n }\n\n return undefined;\n};\n\nconst processProvider = (\n sourceType: AnyType<any>,\n mockType: AnyType<any>,\n provider: any,\n resolutions: Map<any, any>,\n): any => {\n const token = processTokens(mockType, provider);\n if (token) {\n return token;\n }\n\n const ownUseExisting = processOwnUseExisting(sourceType, mockType, provider);\n if (ownUseExisting) {\n return ownUseExisting;\n }\n\n return helperMockService.resolveProvider(provider, resolutions);\n};\n\nexport default (\n sourceType: AnyType<any>,\n mockType: AnyType<any>,\n providers?: any[],\n): {\n providers: Provider[];\n setControlValueAccessor?: boolean;\n} => {\n const result: Provider[] = [];\n let setControlValueAccessor: boolean | undefined;\n const resolutions = new Map();\n\n for (const provider of flatten(providers || /* istanbul ignore next */ [])) {\n const provide = funcGetProvider(provider);\n if (provide === coreForm.NG_VALUE_ACCESSOR) {\n setControlValueAccessor = false;\n }\n const mock = processProvider(sourceType, mockType, provider, resolutions);\n if (mock) {\n result.push(mock);\n }\n }\n\n return {\n providers: result,\n setControlValueAccessor,\n };\n};\n","import { Component, Directive, Provider, ViewChild } from '@angular/core';\n\nimport { AnyType } from '../common/core.types';\nimport decorateInputs from '../common/decorate.inputs';\nimport decorateMock from '../common/decorate.mock';\nimport decorateOutputs from '../common/decorate.outputs';\nimport decorateQueries from '../common/decorate.queries';\nimport { ngMocksMockConfig } from '../common/mock';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\nimport helperMockService from '../mock-service/helper.mock-service';\n\nimport cloneProviders from './clone-providers';\nimport toExistingProvider from './to-existing-provider';\n\nconst buildConfig = (\n source: AnyType<any>,\n meta: {\n inputs?: string[];\n outputs?: string[];\n providers?: Provider[];\n queries?: Record<string, ViewChild>;\n },\n setControlValueAccessor: boolean,\n) => {\n return {\n config: ngMocksUniverse.config.get(source),\n outputs: meta.outputs,\n queryScanKeys: [],\n setControlValueAccessor: setControlValueAccessor,\n };\n};\n\nexport default <T extends Component | Directive>(\n source: AnyType<any>,\n mock: AnyType<any>,\n meta: {\n hostBindings?: Array<[string, any]>;\n hostListeners?: Array<[string, any, any]>;\n inputs?: string[];\n outputs?: string[];\n providers?: Provider[];\n queries?: Record<string, ViewChild>;\n viewProviders?: Provider[];\n },\n params: T,\n) => {\n const data = cloneProviders(source, mock, meta.providers || []);\n const providers = [toExistingProvider(source, mock), ...data.providers];\n const { providers: viewProviders } = cloneProviders(source, mock, meta.viewProviders || []);\n const options: T = { ...params, providers: providers, viewProviders: viewProviders };\n\n if (data.setControlValueAccessor === undefined) {\n data.setControlValueAccessor =\n helperMockService.extractMethodsFromPrototype(source.prototype).indexOf('writeValue') !== -1;\n }\n\n const config: ngMocksMockConfig = buildConfig(source, meta, data.setControlValueAccessor);\n decorateMock(mock, source, config);\n\n // istanbul ignore else\n if (meta.queries) {\n decorateInputs(mock, meta.inputs, Object.keys(meta.queries));\n }\n decorateOutputs(mock, meta.outputs);\n config.queryScanKeys = decorateQueries(mock, meta.queries);\n\n config.hostBindings = [];\n for (const [key] of meta.hostBindings || /* istanbul ignore next */ []) {\n // mock declarations should not have side effects based on host bindings.\n // HostBinding(...args)(mock.prototype, key);\n if (config.hostBindings.indexOf(key) === -1) {\n config.hostBindings.push(key);\n }\n }\n\n config.hostListeners = [];\n for (const [key] of meta.hostListeners || /* istanbul ignore next */ []) {\n // mock declarations should not have side effects based on host bindings.\n // HostListener(...args)(mock.prototype, key);\n if (config.hostListeners.indexOf(key) === -1) {\n config.hostListeners.push(key);\n }\n }\n\n return options;\n};\n","import { extendClass } from '../common/core.helpers';\nimport funcImportExists from '../common/func.import-exists';\nimport { isMockNgDef } from '../common/func.is-mock-ng-def';\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nexport default (def: any, type: any, func: string, cacheFlag: string, base: any, decorator: any) => {\n funcImportExists(def, func);\n\n if (isMockNgDef(def, type)) {\n return def;\n }\n\n if (ngMocksUniverse.flags.has(cacheFlag) && ngMocksUniverse.cacheDeclarations.has(def)) {\n return ngMocksUniverse.cacheDeclarations.get(def);\n }\n\n const mock = extendClass(base);\n decorator(def, mock);\n\n // istanbul ignore else\n if (ngMocksUniverse.flags.has(cacheFlag)) {\n ngMocksUniverse.cacheDeclarations.set(def, mock);\n }\n\n return mock as any;\n};\n","import { AnyType } from '../common/core.types';\n\nexport default (provide: AnyType<any>, useExisting: AnyType<any>) => ({\n provide,\n useExisting,\n});\n","import { AnyType } from '../common/core.types';\n\nexport default (provide: AnyType<any>, useFactory: any) => ({\n multi: true,\n provide,\n useFactory,\n});\n","import { ɵReflectionCapabilities as ReflectionCapabilities } from '@angular/core';\n\nimport coreDefineProperty from '../common/core.define-property';\n\ninterface Declaration {\n host: Record<string, string | undefined>;\n hostBindings: Array<[string, string?, ...any[]]>;\n hostListeners: Array<[string, string?, ...any[]]>;\n inputs: string[];\n outputs: string[];\n propDecorators: Record<string, any[]>;\n queries: Record<string, any>;\n [key: string]: any;\n}\n\nconst getAllKeys = <T>(instance: T): Array<keyof T> => {\n const props: string[] = [];\n for (const key of Object.keys(instance)) {\n props.push(key);\n }\n\n return props as never;\n};\n\nconst createDeclarations = (parent: Partial<Declaration>): Declaration => {\n return {\n host: parent.host ? { ...parent.host } : {},\n hostBindings: parent.hostBindings ? [...parent.hostBindings] : [],\n hostListeners: parent.hostListeners ? [...parent.hostListeners] : [],\n inputs: parent.inputs ? [...parent.inputs] : [],\n outputs: parent.outputs ? [...parent.outputs] : [],\n propDecorators: parent.propDecorators ? { ...parent.propDecorators } : {},\n queries: parent.queries ? { ...parent.queries } : {},\n };\n};\n\nconst parseAnnotations = (\n def: {\n __annotations__?: Array<{\n ngMetadataName?: string;\n }>;\n },\n declaration: Declaration,\n): void => {\n if (Object.prototype.hasOwnProperty.call(def, '__annotations__') && def.__annotations__) {\n for (const annotation of def.__annotations__) {\n const ngMetadataName = annotation?.ngMetadataName;\n if (!ngMetadataName) {\n continue;\n }\n\n declaration[ngMetadataName] = { ...annotation };\n }\n }\n};\n\nconst parseDecorators = (\n def: {\n decorators?: Array<{\n args?: [any];\n type?: {\n prototype?: {\n ngMetadataName?: string;\n };\n };\n }>;\n },\n declaration: Declaration,\n): void => {\n if (Object.prototype.hasOwnProperty.call(def, 'decorators') && def.decorators) {\n for (const decorator of def.decorators) {\n const ngMetadataName = decorator?.type?.prototype?.ngMetadataName;\n if (!ngMetadataName) {\n continue;\n }\n\n declaration[ngMetadataName] = decorator.args ? { ...decorator.args[0] } : {};\n }\n }\n};\n\nconst parsePropDecoratorsParserFactoryProp =\n (key: 'inputs' | 'outputs') =>\n (\n _: string,\n prop: string,\n decorator: {\n args?: [string];\n },\n declaration: Declaration,\n ): void => {\n const value = prop + (decorator.args?.[0] ? `: ${decorator.args[0]}` : '');\n if (declaration[key].indexOf(value) === -1) {\n declaration[key].unshift(value);\n }\n };\nconst parsePropDecoratorsParserInput = parsePropDecoratorsParserFactoryProp('inputs');\nconst parsePropDecoratorsParserOutput = parsePropDecoratorsParserFactoryProp('outputs');\n\nconst parsePropDecoratorsParserFactoryQuery =\n (isViewQuery: boolean) =>\n (\n ngMetadataName: string,\n prop: string,\n decorator: {\n args: [string] | [string, any];\n },\n declaration: Declaration,\n ): void => {\n if (!declaration.queries[prop]) {\n declaration.queries[prop] = {\n isViewQuery,\n ngMetadataName,\n selector: decorator.args[0],\n ...decorator.args[1],\n };\n }\n };\nconst parsePropDecoratorsParserContent = parsePropDecoratorsParserFactoryQuery(false);\nconst parsePropDecoratorsParserView = parsePropDecoratorsParserFactoryQuery(true);\n\nconst parsePropDecoratorsParserHostBinding = (\n _: string,\n prop: string,\n decorator: {\n args?: [string] | [string, any[]];\n },\n declaration: Declaration,\n): void => {\n const key = `[${decorator.args?.[0] || prop}]`;\n if (!declaration.host[key]) {\n declaration.host[key] = prop;\n }\n declaration.hostBindings.push([prop, ...(decorator.args || [])]);\n};\n\nconst parsePropDecoratorsParserHostListener = (\n _: string,\n prop: string,\n decorator: {\n args?: any[];\n },\n declaration: Declaration,\n): void => {\n const key = `(${decorator.args?.[0] || prop})`;\n if (!declaration.host[key]) {\n declaration.host[key] = `${prop}($event)`;\n }\n declaration.hostListeners.push([prop, ...(decorator.args || [])]);\n};\n\nconst parsePropDecoratorsMap: any = {\n ContentChild: parsePropDecoratorsParserContent,\n ContentChildren: parsePropDecoratorsParserContent,\n HostBinding: parsePropDecoratorsParserHostBinding,\n HostListener: parsePropDecoratorsParserHostListener,\n Input: parsePropDecoratorsParserInput,\n Output: parsePropDecoratorsParserOutput,\n ViewChild: parsePropDecoratorsParserView,\n ViewChildren: parsePropDecoratorsParserView,\n};\n\nconst parsePropDecorators = (\n def: {\n propDecorators?: Record<\n string,\n Array<{\n args: any;\n type?: {\n prototype?: {\n ngMetadataName?: string;\n };\n };\n }>\n >;\n },\n declaration: Declaration,\n): void => {\n if (Object.prototype.hasOwnProperty.call(def, 'propDecorators') && def.propDecorators) {\n for (const prop of getAllKeys(def.propDecorators)) {\n declaration.propDecorators[prop] = [...(declaration.propDecorators[prop] || []), ...def.propDecorators[prop]];\n for (const decorator of def.propDecorators[prop]) {\n const ngMetadataName = decorator?.type?.prototype?.ngMetadataName;\n if (!ngMetadataName) {\n continue;\n }\n parsePropDecoratorsMap[ngMetadataName]?.(ngMetadataName, prop, decorator, declaration);\n }\n }\n }\n};\n\nconst parsePropMetadataParserFactoryProp =\n (key: 'inputs' | 'outputs') =>\n (\n _: string,\n prop: string,\n decorator: {\n bindingPropertyName?: string;\n },\n declaration: Declaration,\n ): void => {\n const value = prop + (decorator.bindingPropertyName ? `: ${decorator.bindingPropertyName}` : '');\n if (declaration[key].indexOf(value) === -1) {\n declaration[key].unshift(value);\n }\n };\nconst parsePropMetadataParserInput = parsePropMetadataParserFactoryProp('inputs');\nconst parsePropMetadataParserOutput = parsePropMetadataParserFactoryProp('outputs');\n\nconst parsePropMetadataParserFactoryQueryChild =\n (isViewQuery: boolean) =>\n (\n ngMetadataName: string,\n prop: string,\n decorator: {\n read?: any;\n selector: string;\n static?: boolean;\n },\n declaration: Declaration,\n ): void => {\n if (!declaration.queries[prop]) {\n declaration.queries[prop] = {\n isViewQuery,\n ngMetadataName,\n selector: decorator.selector,\n ...(decorator.read !== undefined ? { read: decorator.read } : {}),\n ...(decorator.static !== undefined ? { static: decorator.static } : {}),\n };\n }\n };\nconst parsePropMetadataParserContentChild = parsePropMetadataParserFactoryQueryChild(false);\nconst parsePropMetadataParserViewChild = parsePropMetadataParserFactoryQueryChild(true);\n\nconst parsePropMetadataParserFactoryQueryChildren =\n (isViewQuery: boolean) =>\n (\n ngMetadataName: string,\n prop: string,\n decorator: {\n descendants?: any;\n emitDistinctChangesOnly?: boolean;\n read?: any;\n selector: string;\n },\n declaration: Declaration,\n ): void => {\n if (!declaration.queries[prop]) {\n declaration.queries[prop] = {\n isViewQuery,\n ngMetadataName,\n selector: decorator.selector,\n ...(decorator.descendants !== undefined ? { descendants: decorator.descendants } : {}),\n ...(decorator.emitDistinctChangesOnly !== undefined\n ? { emitDistinctChangesOnly: decorator.emitDistinctChangesOnly }\n : {}),\n ...(decorator.read !== undefined ? { read: decorator.read } : {}),\n };\n }\n };\nconst parsePropMetadataParserContentChildren = parsePropMetadataParserFactoryQueryChildren(false);\nconst parsePropMetadataParserViewChildren = parsePropMetadataParserFactoryQueryChildren(true);\n\nconst parsePropMetadataParserHostBinding = (\n _: string,\n prop: string,\n decorator: {\n args?: any;\n hostPropertyName?: string;\n },\n declaration: Declaration,\n): void => {\n const key = `[${decorator.hostPropertyName || prop}]`;\n if (!declaration.host[key]) {\n declaration.host[key] = prop;\n }\n declaration.hostBindings.push([\n prop,\n decorator.hostPropertyName || prop,\n ...(decorator.args ? [decorator.args] : []),\n ]);\n};\n\nconst parsePropMetadataParserHostListener = (\n _: string,\n prop: string,\n decorator: {\n args?: any;\n eventName?: string;\n },\n declaration: Declaration,\n): void => {\n const key = `(${decorator.eventName || prop})`;\n if (!declaration.host[key]) {\n declaration.host[key] = `${prop}($event)`;\n }\n declaration.hostListeners.push([prop, decorator.eventName || prop, ...(decorator.args ? [decorator.args] : [])]);\n};\n\nconst parsePropMetadataMap: any = {\n ContentChild: parsePropMetadataParserContentChild,\n ContentChildren: parsePropMetadataParserContentChildren,\n HostBinding: parsePropMetadataParserHostBinding,\n HostListener: parsePropMetadataParserHostListener,\n Input: parsePropMetadataParserInput,\n Output: parsePropMetadataParserOutput,\n ViewChild: parsePropMetadataParserViewChild,\n ViewChildren: parsePropMetadataParserViewChildren,\n};\n\nconst parsePropMetadata = (\n def: {\n __prop__metadata__?: Record<string, any[]>;\n },\n declaration: Declaration,\n): void => {\n if (Object.prototype.hasOwnProperty.call(def, '__prop__metadata__') && def.__prop__metadata__) {\n for (const prop of getAllKeys(def.__prop__metadata__)) {\n for (const decorator of def.__prop__metadata__[prop]) {\n const ngMetadataName = decorator?.ngMetadataName;\n if (!ngMetadataName) {\n continue;\n }\n parsePropMetadataMap[ngMetadataName]?.(ngMetadataName, prop, decorator, declaration);\n }\n }\n }\n};\n\nconst buildDeclaration = (def: any | undefined, declaration: Declaration): void => {\n if (def) {\n def.inputs = def.inputs || [];\n for (const input of declaration.inputs) {\n if (def.inputs.indexOf(input) === -1) {\n def.inputs.push(input);\n }\n }\n\n def.outputs = def.outputs || [];\n for (const output of declaration.outputs) {\n if (def.outputs.indexOf(output) === -1) {\n def.outputs.push(output);\n }\n }\n\n def.queries = {\n ...(def.queries || []),\n ...declaration.queries,\n };\n\n def.hostBindings = declaration.hostBindings;\n def.hostListeners = declaration.hostListeners;\n }\n};\n\nconst reflectionCapabilities = new ReflectionCapabilities();\n\nconst parse = (def: any): any => {\n if (typeof def !== 'function' && typeof def !== 'object') {\n return {};\n }\n\n if (Object.prototype.hasOwnProperty.call(def, '__ngMocksParsed')) {\n return def.__ngMocksDeclarations;\n }\n\n const parent = Object.getPrototypeOf(def);\n const parentDeclarations = parent ? parse(parent) : {};\n const declaration = createDeclarations(parentDeclarations);\n coreDefineProperty(def, '__ngMocksParsed', true);\n parseAnnotations(def, declaration);\n parseDecorators(def, declaration);\n parsePropDecorators(def, declaration);\n parsePropMetadata(def, declaration);\n buildDeclaration(declaration.Directive, declaration);\n buildDeclaration(declaration.Component, declaration);\n\n coreDefineProperty(def, '__ngMocksDeclarations', {\n ...parentDeclarations,\n ...declaration,\n parameters: reflectionCapabilities.parameters(def),\n });\n\n return def.__ngMocksDeclarations;\n};\n\nexport default ((): ((def: any) => any) => parse)();\n","module.exports = __WEBPACK_EXTERNAL_MODULE__5848__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8900__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1087__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7161__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3046__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(9387);\n"],"names":["root","factory","exports","module","require","define","amd","a","i","self","__WEBPACK_EXTERNAL_MODULE__8900__","__WEBPACK_EXTERNAL_MODULE__1087__","__WEBPACK_EXTERNAL_MODULE__7161__","__WEBPACK_EXTERNAL_MODULE__3046__","__WEBPACK_EXTERNAL_MODULE__5848__","get","getTestBedInjection","getInjection","getMockedNgDefOf","getSourceOfMock","isMockControlValueAccessor","isMockNgDef","isMockOf","isMockValidator","isMockedNgDefOf","isNgDef","isNgInjectionToken","Mock","MockControlValueAccessor","MockValidator","LegacyControlValueAccessor","MockInstance","MockReset","MockBuilder","IMockBuilder","IMockBuilderConfig","IMockBuilderConfigAll","IMockBuilderConfigComponent","IMockBuilderConfigDirective","IMockBuilderConfigModule","IMockBuilderResult","MockModule","MockedModule","MockComponent","MockComponents","MockedComponent","MockDirective","MockDirectives","MockedDirective","MockPipe","MockPipes","MockedPipe","MockDeclaration","MockDeclarations","MockProvider","MockProviders","MockService","ngMocks","MockRender","MockRenderFactory","flags","mockRenderCacheSize","neverMockModule","neverMockProvidedFunction","neverMockToken","onMockInstanceRestoreNeed","onTestBedFlushNeed","instance","property","value","enumerable","definePropertyDescriptor","configurable","writable","AbstractControl","DefaultValueAccessor","FormControl","FormControlDirective","NG_ASYNC_VALIDATORS","NG_VALIDATORS","NG_VALUE_ACCESSOR","NgControl","NgModel","token","testBed","getTestBed","inject","flatten","values","result","Array","isArray","push","mapKeys","set","forEach","_","mapValues","destination","add","mapEntries","key","extractDependencyArray","deps","flag","name","ngMetadataName","undefined","extractDependency","dep","extendClassicClass","base","child","glb","ngMocksParent","eval","ngMocksResult","MockMiddleware","extendClass","parameters","length","defaultInjector","declaration","injector","callback","def","arg","Component","Directive","Error","NgModule","Pipe","providedIn","ngInjectableDef","NG_MOCKS","InjectionToken","NG_MOCKS_TOUCHES","NG_MOCKS_OVERRIDES","NG_MOCKS_GUARDS","NG_MOCKS_INTERCEPTORS","NG_MOCKS_ROOT_PROVIDERS","cls","inputs","exclude","input","split","alias","indexOf","Input","prototype","mock","source","configInput","config","getConfigMock","has","outputs","output","Output","map","ContentChild","ContentChildren","ViewChild","ViewChildren","isInternalKey","cloneVcrQuery","query","read","ViewContainerRef","queries","final","scanKeys","Object","keys","isViewQuery","generateFinalQueries","decorator","selector","join","jest","window","g","type","mockOf","mocks","cacheDeclarations","getMock","_desc","constructor","provider","provide","funcName","getType","_isMockFunction","mockName","__annotations__","__ngMocksConfig","isControlValueAccessor","component","ngType","isValidator","isModule","isNgType","isModuleCheck","isComponent","isComponentCheck","isDirective","isDirectiveCheck","isPipe","isPipeCheck","isInjectable","isInjectableCheck","isNgModuleDefWithProviders","ngModule","applyProxy","proxy","method","storage","target","registerOnChange","fn","this","registerOnTouched","setDisabledState","isDisabled","writeValue","MockControlValueAccessorProxy","registerOnValidatorChange","validate","control","MockValidatorProxy","Promise","resolve","MockAsyncValidatorProxy","__simulateChange","__simulateTouch","__simulateValidatorChange","installValidator","validators","validator","__ngMocksCtor","ngControl","queryScanKeys","hostBindings","hostListeners","valueAccessor","setControlValueAccessor","setValueAccessor","installValueAccessor","_rawValidators","_rawAsyncValidators","applyNgValueAccessor","mockOutputs","getOwnPropertyDescriptor","EventEmitter","applyOutputs","extractMethodsFromPrototype","extractPropertiesFromPrototype","prop","descriptor","extractPropertyDescriptor","applyPrototype","getPrototypeOf","applyMethods","applyProps","setPrototypeOf","configGlobal","getOverrides","callbacks","init","overrides","applyOverrides","Injector","Optional","Self","applyOverride","override","TestBed","overrideComponent","overrideDirective","overrideModule","overrideProvider","generateTouchesKey","generateTouches","moduleDef","touches","item","hasOwnProperty","call","local","Set","meta","__ngMocksTouches","applyPlatformOverrideDef","ngMocksOverrides","original","applyPlatformOverridesBasedOnProvidedIn","configureTestingModule","ngMocksSelectors","Map","providers","knownTouches","getDefaults","size","_providers","_compiler","useValue","defineTouches","flushTestBed","_instantiated","_testModuleRef","backup","applyPlatformOverridesBasedOnDefaults","applyPlatformOverrides","resetTestingModule","global","delete","applyNgMocksOverrides","ngMocksOverridesInstalled","hooks","vcr","__NG_ELEMENT_ID__","vcrInstance","apply","ngElementIdArgs","createComponent","createComponentArgs","viewContainerInstall","before","after","install","stackRoot","id","level","stack","listenersPush","listenersPop","current","stackPop","state","pop","stackPush","subscribePop","subscribePush","unsubscribePop","index","splice","unsubscribePush","globalMap","ngMocksUniverse","builtDeclarations","builtProviders","cacheProviders","configInstance","defValue","getResolution","getBuildDeclaration","mode","replacement","hasBuildDeclaration","isExcludedDef","resolution","isProvidedDef","data","restore","MockBuilderStash","build","equalsTo","clone","cloneConfig","then","fulfill","reject","console","warn","promise","beforeCC","excludeDef","keepDef","mockDef","replaceDef","configDef","defProviders","providerDef","MockBuilderPromise","MockBuilderPerformance","normaliseModule","generateProviderValue","existing","multi","defaultMock","stash","Symbol","toStringTag","beforeCompileComponents","params","combineParams","catch","wipe","finally","keep","a1","a2","setDefValue","setConfigDef","replace","compileComponents","keepDeclaration","itsModuleToMock","export","exportAll","dependency","render","compare","b","areEqualProviderDefs","thisDef","prototypeDef","prototypeDefs","thisDefs","objectsDiffer","$implicit","variables","prototypeKeys","sourceKeys","declarations","imports","exported","bucket","touched","skipDef","decorators","__forward_ref__","detectForwardRed","skipMock","changed","buckets","concat","isIvy","componentFactoryResolver","originCFR","resolveComponentFactory","args","EntryComponentsModule","ComponentFactoryResolver","entryComponents","entryModule","parametersMap","parameter","loModule","loProviders","loDef","handleDef","extendedDef","k","v","defaultMockValue","DOCUMENT","skipByResolution","skipResolution","toString","skipSystem","transform","isPipeFunc","precise","createInstance","mixRenderApplyContext","view","context","contextKey","markForCheck","changeDetector","cdr","contentChildSelector","indices","detectChanges","mixRenderPrepareVcr","templates","QueryList","toArray","views","templateRef","TemplateRef","createEmbeddedView","mixRenderHandleViews","viewContainer","destroy","viewIndex","move","mixRenderReorderViews","mixHideHandler","mixHide","ngAfterContentInit","__rendered","block","__render","ComponentMockBase","ChangeDetectorRef","decorateClass","template","mockParams","exportAs","components","viewChildArgs","static","viewChildTemplate","isTemplateRefQuery","parts","RegExp","element","__ngMocksInstall","ngOnInit","clear","DirectiveMockBase","ElementRef","directive","options","directives","attribute","node","attrs","_tNode","step","attr","attrIndex","attrProp","_lView","detectInIvy","expectedAttributes","nodeIndex","nodes","detectInClassic","selectors","providerTokens","references","attributes","match","isCrawlByAttribute","isCrawlByAttributeValue","isCrawlById","slice","isCrawlByTagName","isCrawlByDeclaration","collectSelectors","collectAttributesClassic","collectAttributesIvy","regExp","trim","nativeNode","nodeName","elDef","getScanViewRefRootNodes","getVcr","vrIndex","vr","rnIndex","rootNodes","parent","childNodes","scanViewRef","publicProviders","requiredAttributes","bindings","binding","nonMinifiedName","sel","includeTextNode","el","detector","defaultNotFoundValue","notFoundValue","isDirect","children","childNode","childNodeParent","start","end","nestedCheck","check","expected","currentParent","childElDef","detectParent","message","formControlDirective","form","ngModel","setValue","update","emit","handleKnown","listeners","some","listener","hasListener","nativeElement","triggerInput","markAsTouched","triggerTouch","payload","preventBubble","eventCtor","Event","event","CustomEvent","initParams","bubbles","cancelable","eventObj","document","createEvent","initCustomEvent","keyMap","alt","altKey","code","location","which","arrowdown","arrowleft","arrowright","arrowup","backspace","ctrlKey","enter","esc","metaKey","shift","shiftKey","space","tab","f","dot","Math","max","eventName","eventPayload","char","keyData","codePointAt","toUpperCase","applyPayload","debugElement","disabled","toEventObj","dispatchEvent","scanned","elements","findDebugElement","By","css","queryAll","handlePrimitives","html","outer","format","innerOuter","nodeValue","textContent","wholeText","innerHTML","outerHTML","getElementValue","proto","parentInjector","getParentWithInjector","parentInstance","detectContext","__ngContext__","rootView","detectContextByIndex","_debugContext","lView","normalize","detectGatherFlag","gather","parentNode","isNotObject","shouldBeScanned","scan","gatherDefault","fixtures","_activeFixtures","isValidValue","getMeta","parseArgs","attrMatches","detectAttribute","attrDef","label","calls","action","registerMockFunction","jasmine","createSpy","propName","mockFunction","error","defaultMethods","beforeEach","methods","afterEach","ngMocksFasterInstalled","idAdd","bulletStack","idRemove","activeFixtures","active","ngMocksStackId","resetFixtures","idAll","idEach","beforeAll","afterAll","_moduleFactory","res1","prevNode","previousSibling","matches","queryAllNodes","matchedNode","res2","fail","skip","createMetaHandler","optional","typeMap","handleDeclaration","resolveProvider","resolveMap","pipe","skipDestruction","handleModuleWithProviders","toMock","handleDestructuring","resolveHandler","protoKeep","protoMock","protoExclude","generateDataWithUniverse","generateData","resolutions","createMeta","autoSpy","change","click","crawl","defaultConfig","faster","find","findAll","findInstance","findInstances","findTemplateRef","findTemplateRefs","formatHtml","formatText","globalExclude","globalKeep","globalMock","globalReplace","globalWipe","guts","hide","ignoreOnConsole","reset","reveal","revealAll","stub","stubMember","throwOnConsole","touch","trigger","encapsulation","__ngMocksProxy","defineProperty","style","correctInstance","skipProps","createClone","getOwnPropertyNames","desc","isRightTemplate","localVcr","localValue","isExpectedTemplate","findDeep","entryPoint","__template","__vcr","handleDirective","scanValue","scanVcr","getValVcr","param","tpl","elementRef","limit","overloads","checkReset","showError","globalFlags","errorMessage","currentStack","mockInstance","universeConfig","parseMockInstanceArgs","accessor","checkCollect","mockInstanceConfig","mockInstances","remember","scope","processDefMap","createResolveExisting","detectedDef","createResolveExcluded","func","processDef","createResolveWithProviders","createResolve","createResolveProvider","ngModuleProviders","extractModuleAndProviders","toggleSkipMockFlag","isRootModule","flagMock","flagNever","flagKeep","flagReplace","preProcessFlags","mockModule","mockModuleDef","ngModuleDef","getMockModuleDef","detectMockModule","getExistingMockModule","mockModuleProviders","getMockProviders","generateReturn","postProcessFlags","flatToExisting","filter","resolveDefForExport","correctExports","moduleConfig","skipAddExports","hasResolver","configureProcessMetaKeys","cachePipe","viewProviders","processMeta","addExports","getMockClass","pipes","defaultValue","caches","getCache","cacheKey","ctor","cache","isValid","checkCache","mockTemplate","next","newValue","MockRenderComponent","generateWrapper","unshift","generateTemplateAttrWithParams","generateTemplateAttrWrap","generateTemplateAttr","definition","createPropertyGet","reader","handler","createPropertySet","extra","force","exists","fields","extractAllKeys","test","useExisting","registerTemplateMiddleware","fixtureMessage","generateFactory","componentCtor","configureTestBed","fixture","componentInstance","isExpectedRender","point","tryWhen","renderDeclaration","DebugElement","HTMLElement","renderInjection","_declarations","e","handleFixtureError","generateFactoryInstall","__parameters__","isAngularClass","clsCode","regEx","guessClass","service","bindFrom","bindTo","properties","sourceDesc","sanitizerMethods","extraMethods","DomSanitizer","Sanitizer","customMockFunction","val","newSetValue","ngMockshelperMockService","createMockFromPrototype","replaceWithMocks","useFactory","createName","accessType","generateMockDef","detectedMockName","__ngMocks","__ngMocksSet","__ngMocksGet","handleItemKeys","handleItemGetGuards","section","guards","guard","handleSection","updated","valueItem","handleArray","handleItem","areEqualDefs","providerDiffers","defDiffers","anyDiffers","parseProvider","isSuitableProvider","interceptor","useClass","excludeInterceptors","isPreconfiguredDependency","existingMock","createFromResolution","createPredefinedMockProvider","createMockProvider","applyCallbackToken","inst","applyCallback","normalizePrimitivesMap","handleProvider","mockProvider","normalizePrimitives","createValueProvider","createClassProvider","isNeverMockFunction","isNeverMockToken","applyMissingClassProperties","createFactoryProvider","mockVariableMap","prefix","mockVariable","createMock","mockNamePrefix","processProvider","sourceType","mockType","processTokens","ownUseExisting","processOwnUseExisting","buildConfig","cacheFlag","getAllKeys","props","parsePropDecoratorsParserFactoryProp","parsePropDecoratorsParserInput","parsePropDecoratorsParserOutput","parsePropDecoratorsParserFactoryQuery","parsePropDecoratorsParserContent","parsePropDecoratorsParserView","parsePropDecoratorsMap","HostBinding","host","HostListener","parsePropMetadataParserFactoryProp","bindingPropertyName","parsePropMetadataParserInput","parsePropMetadataParserOutput","parsePropMetadataParserFactoryQueryChild","parsePropMetadataParserContentChild","parsePropMetadataParserViewChild","parsePropMetadataParserFactoryQueryChildren","descendants","emitDistinctChangesOnly","parsePropMetadataMap","hostPropertyName","buildDeclaration","reflectionCapabilities","parse","__ngMocksDeclarations","parentDeclarations","propDecorators","createDeclarations","annotation","parseAnnotations","parseDecorators","parsePropDecorators","__prop__metadata__","parsePropMetadata","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","globalThis","Function","__webpack_exports__"],"sourceRoot":""}
|