ng-mocks 13.0.2 → 13.0.3
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/CHANGELOG.md +7 -0
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/package.json +1 -1
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-mocked-ng-def-of.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/add-entities-to-map.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/add-values-to-set.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-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/external umd \"@angular/platform-browser/animations\"","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/testing\"), require(\"@angular/core\"), require(\"@angular/platform-browser/animations\"), require(\"@angular/forms\"), require(\"@angular/platform-browser\"), require(\"@angular/common\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@angular/core/testing\", \"@angular/core\", \"@angular/platform-browser/animations\", \"@angular/forms\", \"@angular/platform-browser\", \"@angular/common\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"@angular/core/testing\"), require(\"@angular/core\"), require(\"@angular/platform-browser/animations\"), require(\"@angular/forms\"), require(\"@angular/platform-browser\"), require(\"@angular/common\")) : factory(root[\"@angular/core/testing\"], root[\"@angular/core\"], root[\"@angular/platform-browser/animations\"], 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__1087__, __WEBPACK_EXTERNAL_MODULE__8900__, __WEBPACK_EXTERNAL_MODULE__2835__, __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-module-def-with-providers';\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 neverMockToken: [\n 'InjectionToken Set Injector scope.', // INJECTOR_SCOPE // ivy only\n 'InjectionToken EventManagerPlugins', // EVENT_MANAGER_PLUGINS\n 'InjectionToken HammerGestureConfig', // HAMMER_GESTURE_CONFIG\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';\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 (e) {\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 }): T[] => {\n const result: T[] = [];\n set.forEach((value: T) => result.push(value));\n\n return result;\n};\n\nexport const mapEntries = <K, T>(set: Map<K, T>): Array<[K, T]> => {\n const result: Array<[K, T]> = [];\n set.forEach((value: T, key: K) => result.push([key, value]));\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\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 (window as any).ngMocksParent = base;\n // istanbul ignore next\n try {\n // tslint:disable-next-line no-eval\n eval(`\n class MockMiddleware extends window.ngMocksParent {}\n window.ngMocksResult = MockMiddleware\n `);\n child = (window as any).ngMocksResult;\n } catch (e) {\n class MockMiddleware extends (window as any).ngMocksParent {}\n child = MockMiddleware;\n }\n (window as any).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${base.name}`, 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 (e) {\n // nothing to do\n }\n\n return undefined;\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 (e) {\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 { ngMocksMockConfig } from './mock';\n\nexport default function (mock: AnyType<any>, source: AnyType<any>, config: ngMocksMockConfig = {}): void {\n coreDefineProperty(mock, 'mockOf', source);\n coreDefineProperty(mock, 'nameConstructor', mock.name);\n coreDefineProperty(mock, 'name', `MockOf${source.name}`, true);\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 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 ${def.name} 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 ${def.name} 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\nexport default (def: any): void => {\n throw new Error(\n [\n `${def.name} 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","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 { 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 ${source.name}`);\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(declaration: AnyType<any>): Type<any>;\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 ${source.name}`);\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","export 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","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 (e) {\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 (e) {\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, '__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 } 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';\n\nimport coreDefineProperty from './core.define-property';\nimport { flatten, mapEntries } from './core.helpers';\nimport coreReflectMeta from './core.reflect.meta';\nimport coreReflectModuleResolve from './core.reflect.module-resolve';\nimport coreReflectProvidedIn from './core.reflect.provided-in';\nimport { 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, original);\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) {\n ngMocks.flushTestBed();\n for (const [def, original] of mapEntries(testBed.ngMocksOverrides)) {\n applyOverride(def, original);\n }\n testBed.ngMocksOverrides = undefined;\n }\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 touches.add(def);\n const meta = coreReflectMeta(def);\n if (meta) {\n generateTouches(meta, touches);\n }\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 install = () => {\n const hooks = mockHelperFasterInstall();\n // istanbul ignore else\n if (!(TestBed as any).ngMocksOverridesInstalled) {\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 coreDefineProperty(TestBed, 'ngMocksOverridesInstalled', true, false);\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 coreConfig from './core.config';\nimport { AnyType } from './core.types';\n\n// istanbul ignore next\nconst getGlobal = (): any => window || global;\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 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\ngetGlobal().ngMocksUniverse = getGlobal().ngMocksUniverse || {};\nconst ngMocksUniverse: NgMocksUniverse = getGlobal().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.getLocalMocks = () => {\n if (!ngMocksUniverse.global.has('local-mocks')) {\n ngMocksUniverse.global.set('local-mocks', []);\n }\n\n return ngMocksUniverse.global.get('local-mocks');\n};\n\nngMocksUniverse.getOverrides = globalMap('overrides');\nngMocksUniverse.getDefaults = globalMap('defaults');\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(`@${def.name}`) : 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 { NgModule } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\n\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport { MockBuilderPromise } from './mock-builder.promise';\nimport addEntitiesToMap from './performance/add-entities-to-map';\nimport addValuesToSet from './performance/add-values-to-set';\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(): NgModule {\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 addValuesToSet(this.beforeCC, config.beforeCC);\n addValuesToSet(this.excludeDef, config.excludeDef);\n addValuesToSet(this.keepDef, config.keepDef);\n addValuesToSet(this.mockDef, config.mockDef);\n addValuesToSet(this.replaceDef, config.replaceDef);\n\n addEntitiesToMap(this.configDef, config.configDef);\n addEntitiesToMap(this.defProviders, config.defProviders);\n addEntitiesToMap(this.defValue, config.defValue);\n addEntitiesToMap(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 { NgModule, Provider } from '@angular/core';\nimport { TestBed } 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(): NgModule {\n this.stash.backup();\n ngMocksUniverse.config.set('mockNgDefResolver', new Map());\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.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 { mapEntries } from '../../common/core.helpers';\n\nexport default (source: Map<any, any>, destination: Map<any, any>): void => {\n for (const [key, value] of mapEntries(source)) {\n destination.set(key, value);\n }\n};\n","import { mapValues } from '../../common/core.helpers';\n\nexport default (source: Set<any>, destination: Set<any>): void => {\n for (const value of mapValues(source)) {\n destination.add(value);\n }\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 (e) {\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 origin: module.ComponentFactoryResolver['resolveComponentFactory'];\n\n public constructor(map: Map<any, any>, protected componentFactoryResolver: module.ComponentFactoryResolver) {\n this.origin = componentFactoryResolver.resolveComponentFactory;\n componentFactoryResolver.resolveComponentFactory = helperCreateClone(\n this.origin,\n undefined,\n undefined,\n (component: any) => this.origin.call(componentFactoryResolver, map.get(component) ?? component) 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 entryComponent = 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 })(entryComponent);\n ngModule.imports.push(entryComponent);\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, v);\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 { 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' ? (declaration as any).name : 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","export default (value: any): boolean => {\n return typeof value === 'function';\n};\n","import { getSourceOfMock } from '../../common/func.get-source-of-mock';\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') {\n throw new Error('Only classes 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 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';\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') {\n throw new Error('Only classes are accepted');\n }\n\n const declaration = getSourceOfMock(sel);\n const result: T[] = [];\n mockHelperCrawl(\n mockHelperFind(funcGetLastFixture(), el, undefined),\n node => {\n funcGetFromNode(result, node, declaration);\n },\n true,\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 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\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 } from '@angular/core';\n\nimport coreInjector from '../common/core.injector';\nimport { Type } from '../common/core.types';\n\nimport { Node } from './func.get-from-node';\n\nexport default <T>(result: T[], node: (DebugNode & Node) | null | undefined, proto: Type<T>): void => {\n if (!node) {\n return;\n }\n\n const instance = coreInjector(proto, node.injector);\n if (instance && 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 } from '@angular/core';\n\nimport { Type } from '../common/core.types';\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>(result: T[], node: (DebugNode & Node) | null | undefined, proto: Type<T>): T[] => {\n funcGetFromNodeInjector(result, node, proto);\n funcGetFromNodeStandard(result, node, proto);\n funcGetFromNodeIvy(result, node, proto);\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';\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 (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 (e) {\n // Looks like it is a token.\n }\n\n return undefined;\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 (e) {\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 (e) {\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, false);\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, 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, false);\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 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 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","export default <T extends object>(instance: T, key: any, value: any, encapsulation?: 'get' | 'set'): any => {\n const def = Object.getOwnPropertyDescriptor(instance, key) || {};\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 { 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/defaultMock\n */\n defaultMock<T>(\n token: InjectionToken<T>,\n handler?: (value: undefined | T, injector: Injector) => undefined | Partial<T>,\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 ): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/defaultMock\n */\n defaultMock<T>(def: AnyType<T>, handler?: (value: T, injector: Injector) => void | Partial<T>): 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 ): 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>): T;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstance\n */\n findInstance<T>(elSelector: DebugNodeSelector, instanceClass: AnyType<T>): T;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstance\n */\n findInstance<T, D>(instanceClass: AnyType<T>, notFoundValue: D): D | T;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstance\n */\n findInstance<T, D>(elSelector: DebugNodeSelector, instanceClass: AnyType<T>, notFoundValue: D): D | T;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstances\n */\n findInstances<T>(instanceClass: AnyType<T>): T[];\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstances\n */\n findInstances<T>(elSelector: DebugNodeSelector, instanceClass: AnyType<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 (e) {\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?.init) {\n callbacks.push(config.init);\n }\n if (config?.overloads) {\n for (const [name, stub, encapsulation] of config.overloads) {\n callbacks.push((instance: any) => {\n mockHelperStubMember(instance, name, stub, encapsulation);\n });\n }\n }\n\n return callbacks;\n};\n","import 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' ? declaration.name : 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\nngMocksStack.subscribePush(() => {\n // On start we have to flush any caches,\n // they are not from this spec.\n const set = ngMocksUniverse.getLocalMocks();\n set.splice(0, set.length);\n});\nngMocksStack.subscribePop(() => {\n const set = ngMocksUniverse.getLocalMocks();\n while (set.length) {\n const [declaration, config] = set.pop() || /* istanbul ignore next */ [];\n const universeConfig = ngMocksUniverse.configInstance.has(declaration)\n ? ngMocksUniverse.configInstance.get(declaration)\n : /* istanbul ignore next */ {};\n ngMocksUniverse.configInstance.set(declaration, {\n ...universeConfig,\n ...config,\n });\n }\n});\n\nconst restore = (declaration: any, config: any): void => {\n ngMocksUniverse.getLocalMocks().push([declaration, config]);\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.data = args[0];\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>(declaration: Type<T> | AbstractType<T> | InjectionToken<T>, data?: any): void => {\n const config = typeof data === 'function' ? { init: data } : data;\n const universeConfig = ngMocksUniverse.configInstance.has(declaration)\n ? ngMocksUniverse.configInstance.get(declaration)\n : {};\n restore(declaration, universeConfig);\n\n if (config) {\n ngMocksUniverse.configInstance.set(declaration, {\n ...universeConfig,\n ...config,\n });\n } else {\n ngMocksUniverse.configInstance.set(declaration, {\n ...universeConfig,\n init: undefined,\n overloads: [],\n });\n }\n\n if (!config) {\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 } else if (checkCollect) {\n checkReset.push([declaration, ngMocksUniverse.configInstance.get(declaration), currentStack]);\n }\n};\n\nconst mockInstanceMember = <T>(\n declaration: Type<T> | AbstractType<T> | InjectionToken<T>,\n name: string,\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 const { key, value, accessor, data } = parseMockInstanceArgs(args);\n if (key) {\n return mockInstanceMember(declaration, key, value, accessor);\n }\n\n mockInstanceConfig(declaration, data);\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';\nimport * as imports from '@angular/platform-browser/animations';\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\n// tslint:disable-next-line variable-name\nlet BrowserAnimationsModule: any;\n// tslint:disable-next-line variable-name\nlet NoopAnimationsModule: any;\n// istanbul ignore next\nlet replaceWithNoop: (def: any) => boolean = () => false;\n\nBrowserAnimationsModule = imports.BrowserAnimationsModule;\nNoopAnimationsModule = imports.NoopAnimationsModule;\nreplaceWithNoop = (def: any) =>\n def === BrowserAnimationsModule &&\n !!BrowserAnimationsModule &&\n !!NoopAnimationsModule &&\n !ngMocksUniverse.getResolution(def);\n\nconst processDefMap: Array<[any, any]> = [\n ['c', MockComponent],\n ['d', MockDirective],\n ['p', MockPipe],\n];\n\nconst processDef = (def: any) => {\n // BrowserAnimationsModule is a very special case.\n // If it is not resolved manually, we simply replace it with NoopAnimationsModule.\n if (replaceWithNoop(def)) {\n return NoopAnimationsModule;\n }\n\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 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(ngModule.name) !== -1 && !ngMocksUniverse.flags.has('skipMock');\n\nconst preprocessToggleFlag = (ngModule: Type<any>): boolean => {\n let toggleSkipMockFlag = false;\n\n const resolution = ngMocksUniverse.getResolution(ngModule);\n if (flagMock(resolution)) {\n toggleSkipMockFlag = true;\n ngMocksUniverse.flags.delete('skipMock');\n }\n if (flagKeep(resolution) || flagReplace(resolution) || flagNever(ngModule)) {\n toggleSkipMockFlag = true;\n ngMocksUniverse.flags.add('skipMock');\n }\n\n return toggleSkipMockFlag;\n};\n\nconst postprocessToggleFlag = (toggleSkipMockFlag: boolean): 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};\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>): 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 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 toggleSkipMockFlag = preprocessToggleFlag(ngModule);\n const mockModule = detectMockModule(ngModule, getExistingMockModule(ngModule));\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 postprocessToggleFlag(toggleSkipMockFlag);\n\n return generateReturn(module, ngModule, ngModuleProviders, mockModule, mockModuleProviders);\n}\n","import { NgModule, 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 = 'declarations' | 'entryComponents' | 'bootstrap' | 'providers' | 'imports' | '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 ['imports', resolve],\n ['exports', resolve],\n];\n\nconst processMeta = (\n ngModule: NgModule,\n resolve: (def: any) => any,\n resolveProvider: (def: Provider) => any,\n): NgModule => {\n const mockModuleDef: NgModule = {};\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\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 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', `${instance.constructor.name}.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 = [template, ...(bindings ?? [null]), ...(flags.providers ?? [null])];\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 };\n\n ctor = generateWrapper({ ...meta, bindings, options });\n coreDefineProperty(ctor, 'cacheKey', cacheKey, false);\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 =\n (key: keyof any & string, reader: Record<keyof any, any>, source: Record<keyof any, any>) => () => {\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, false);\n coreDefineProperty(reader, `__ngMocks_${key}__origin`, source[key], false);\n }\n\n return reader[`__ngMocks_${key}`];\n }\n\n return source[key];\n };\n\nconst createPropertySet =\n (key: keyof any & string, reader: Record<keyof any, any>, source: Record<keyof any, any>) => (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\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 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 let providers = meta.providers || [];\n providers = [\n ...providers,\n {\n provide: template,\n useExisting: child,\n },\n ];\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\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 (e) {\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, false);\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 helperMockService from './helper.mock-service';\nimport { MockedFunction } from './types';\n\nexport default (service: any): { [key in keyof any]: MockedFunction } => {\n const mockName = service.constructor.name;\n const value: any = {};\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","const 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[prototype.constructor.name] ?? []) {\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 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// istanbul ignore next\nconst getGlobal = (): any => window || global;\n\n// We need a single pointer to the object among all environments.\ngetGlobal().ngMockshelperMockService = getGlobal().ngMockshelperMockService || {\n mockFunction: helperMockFunction,\n\n registerMockFunction: (func: CustomMockFunction | undefined) => {\n getGlobal().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} => getGlobal().ngMockshelperMockService)();\n\nexport const registerMockFunction: (func?: CustomMockFunction | undefined) => void =\n getGlobal().ngMockshelperMockService.registerMockFunction;\n","import 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\n ? mockName\n : typeof instance.prototype === 'function'\n ? instance.prototype.name\n : typeof instance.constructor === 'function'\n ? instance.constructor.name\n : 'unknown'\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 } /* istanbul ignore if because we mock BrowserModule */ 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 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) =>\n helperMockService.mockFunction(`func:${prefix || service.name || 'arrow-function'}`),\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__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2835__;","// 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__1087__","__WEBPACK_EXTERNAL_MODULE__8900__","__WEBPACK_EXTERNAL_MODULE__2835__","__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","e","flatten","values","result","Array","isArray","push","mapKeys","set","forEach","_","mapValues","mapEntries","key","extractDependencyArray","deps","flag","name","ngMetadataName","undefined","add","extractDependency","dep","extendClassicClass","base","child","window","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","config","outputs","output","Output","map","ContentChild","ContentChildren","ViewChild","ViewChildren","isInternalKey","cloneVcrQuery","query","read","ViewContainerRef","queries","final","scanKeys","Object","keys","isViewQuery","generateFinalQueries","decorator","selector","join","jest","type","mockOf","mocks","cacheDeclarations","getMock","isMockedNgDefOf","provider","provide","funcName","_isMockFunction","mockName","__annotations__","isMockControlValueAccessor","__ngMocksConfig","isControlValueAccessor","component","ngType","constructor","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","hooks","applyOverride","override","TestBed","overrideComponent","overrideDirective","overrideModule","overrideProvider","generateTouchesKey","generateTouches","moduleDef","touches","item","meta","applyPlatformOverrideDef","ngMocksOverrides","original","applyPlatformOverridesBasedOnProvidedIn","MockProvider","configureTestingModule","ngMocksSelectors","Map","providers","knownTouches","getDefaults","size","_providers","_compiler","Set","useValue","defineTouches","ngMocks","flushTestBed","_instantiated","_testModuleRef","backup","applyPlatformOverridesBasedOnDefaults","applyPlatformOverrides","call","resetTestingModule","delete","applyNgMocksOverrides","ngMocksOverridesInstalled","before","after","stackRoot","id","level","stack","listenersPush","listenersPop","current","stackPop","state","pop","stackPush","subscribePop","subscribePush","unsubscribePop","index","splice","unsubscribePush","getGlobal","g","globalMap","ngMocksUniverse","builtDeclarations","builtProviders","cacheProviders","configInstance","getLocalMocks","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","destination","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","origin","resolveComponentFactory","EntryComponentsModule","ComponentFactoryResolver","entryComponents","entryComponent","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","vcr","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","args","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","findDebugElement","By","css","queryAll","handlePrimitives","html","outer","format","innerOuter","nodeValue","textContent","wholeText","innerHTML","outerHTML","getElementValue","proto","detectContext","__ngContext__","rootView","detectContextByIndex","_debugContext","lView","normalize","detectGatherFlag","gather","parentNode","isNotObject","shouldBeScanned","scanned","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","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","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","mockInstanceMember","mockInstances","MockInstance","remember","scope","BrowserAnimationsModule","NoopAnimationsModule","replaceWithNoop","processDefMap","createResolveExisting","detectedDef","createResolveExcluded","func","processDef","createResolveWithProviders","createResolve","createResolveProvider","ngModuleProviders","extractModuleAndProviders","toggleSkipMockFlag","flagMock","flagKeep","flagReplace","flagNever","preprocessToggleFlag","mockModule","mockModuleDef","ngModuleDef","getMockModuleDef","detectMockModule","isMockNgDef","getExistingMockModule","mockModuleProviders","getMockProviders","postprocessToggleFlag","generateReturn","flatToExisting","resolveDefForExport","correctExports","moduleConfig","skipAddExports","hasResolver","configureProcessMetaKeys","cachePipe","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","createPropertySet","extra","force","exists","fields","extractAllKeys","useExisting","registerTemplateMiddleware","fixtureMessage","generateFactory","componentCtor","configureTestBed","fixture","createComponent","componentInstance","isExpectedRender","point","tryWhen","renderDeclaration","DebugElement","HTMLElement","renderInjection","_declarations","handleFixtureError","generateFactoryInstall","MockRenderFactory","MockRender","__parameters__","isAngularClass","clsCode","charCodeAt","regEx","guessClass","service","bindFrom","bindTo","apply","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","viewProviders","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","hasOwnProperty","__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.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-mocked-ng-def-of.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/add-entities-to-map.ts","webpack://ng-mocks/./libs/ng-mocks/src/lib/mock-builder/performance/add-values-to-set.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-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/external umd \"@angular/platform-browser/animations\"","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/testing\"), require(\"@angular/core\"), require(\"@angular/platform-browser/animations\"), require(\"@angular/forms\"), require(\"@angular/platform-browser\"), require(\"@angular/common\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@angular/core/testing\", \"@angular/core\", \"@angular/platform-browser/animations\", \"@angular/forms\", \"@angular/platform-browser\", \"@angular/common\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"@angular/core/testing\"), require(\"@angular/core\"), require(\"@angular/platform-browser/animations\"), require(\"@angular/forms\"), require(\"@angular/platform-browser\"), require(\"@angular/common\")) : factory(root[\"@angular/core/testing\"], root[\"@angular/core\"], root[\"@angular/platform-browser/animations\"], 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__1087__, __WEBPACK_EXTERNAL_MODULE__8900__, __WEBPACK_EXTERNAL_MODULE__2835__, __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-module-def-with-providers';\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 neverMockToken: [\n 'InjectionToken Set Injector scope.', // INJECTOR_SCOPE // ivy only\n 'InjectionToken EventManagerPlugins', // EVENT_MANAGER_PLUGINS\n 'InjectionToken HammerGestureConfig', // HAMMER_GESTURE_CONFIG\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';\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 }): T[] => {\n const result: T[] = [];\n set.forEach((value: T) => result.push(value));\n\n return result;\n};\n\nexport const mapEntries = <K, T>(set: Map<K, T>): Array<[K, T]> => {\n const result: Array<[K, T]> = [];\n set.forEach((value: T, key: K) => result.push([key, value]));\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\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 (window as any).ngMocksParent = base;\n // istanbul ignore next\n try {\n // tslint:disable-next-line no-eval\n eval(`\n class MockMiddleware extends window.ngMocksParent {}\n window.ngMocksResult = MockMiddleware\n `);\n child = (window as any).ngMocksResult;\n } catch {\n class MockMiddleware extends (window as any).ngMocksParent {}\n child = MockMiddleware;\n }\n (window as any).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${base.name}`, 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 { ngMocksMockConfig } from './mock';\n\nexport default function (mock: AnyType<any>, source: AnyType<any>, config: ngMocksMockConfig = {}): void {\n coreDefineProperty(mock, 'mockOf', source);\n coreDefineProperty(mock, 'nameConstructor', mock.name);\n coreDefineProperty(mock, 'name', `MockOf${source.name}`, true);\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 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 ${def.name} 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 ${def.name} 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\nexport default (def: any): void => {\n throw new Error(\n [\n `${def.name} 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","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 { 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 ${source.name}`);\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(declaration: AnyType<any>): Type<any>;\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 ${source.name}`);\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","export 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","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, '__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 } 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';\n\nimport coreDefineProperty from './core.define-property';\nimport { flatten, mapEntries } from './core.helpers';\nimport coreReflectMeta from './core.reflect.meta';\nimport coreReflectModuleResolve from './core.reflect.module-resolve';\nimport coreReflectProvidedIn from './core.reflect.provided-in';\nimport { 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) {\n ngMocks.flushTestBed();\n for (const [def, original] of mapEntries(testBed.ngMocksOverrides)) {\n applyOverride(def, original);\n }\n testBed.ngMocksOverrides = undefined;\n }\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 touches.add(def);\n const meta = coreReflectMeta(def);\n if (meta) {\n generateTouches(meta, touches);\n }\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 install = () => {\n const hooks = mockHelperFasterInstall();\n // istanbul ignore else\n if (!(TestBed as any).ngMocksOverridesInstalled) {\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 coreDefineProperty(TestBed, 'ngMocksOverridesInstalled', true, false);\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 coreConfig from './core.config';\nimport { AnyType } from './core.types';\n\n// istanbul ignore next\nconst getGlobal = (): any => window || global;\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 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\ngetGlobal().ngMocksUniverse = getGlobal().ngMocksUniverse || {};\nconst ngMocksUniverse: NgMocksUniverse = getGlobal().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.getLocalMocks = () => {\n if (!ngMocksUniverse.global.has('local-mocks')) {\n ngMocksUniverse.global.set('local-mocks', []);\n }\n\n return ngMocksUniverse.global.get('local-mocks');\n};\n\nngMocksUniverse.getOverrides = globalMap('overrides');\nngMocksUniverse.getDefaults = globalMap('defaults');\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(`@${def.name}`) : 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 { NgModule } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\n\nimport ngMocksUniverse from '../common/ng-mocks-universe';\n\nimport { MockBuilderPromise } from './mock-builder.promise';\nimport addEntitiesToMap from './performance/add-entities-to-map';\nimport addValuesToSet from './performance/add-values-to-set';\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(): NgModule {\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 addValuesToSet(this.beforeCC, config.beforeCC);\n addValuesToSet(this.excludeDef, config.excludeDef);\n addValuesToSet(this.keepDef, config.keepDef);\n addValuesToSet(this.mockDef, config.mockDef);\n addValuesToSet(this.replaceDef, config.replaceDef);\n\n addEntitiesToMap(this.configDef, config.configDef);\n addEntitiesToMap(this.defProviders, config.defProviders);\n addEntitiesToMap(this.defValue, config.defValue);\n addEntitiesToMap(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 { NgModule, Provider } from '@angular/core';\nimport { TestBed } 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(): NgModule {\n this.stash.backup();\n ngMocksUniverse.config.set('mockNgDefResolver', new Map());\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.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 { mapEntries } from '../../common/core.helpers';\n\nexport default (source: Map<any, any>, destination: Map<any, any>): void => {\n for (const [key, value] of mapEntries(source)) {\n destination.set(key, value);\n }\n};\n","import { mapValues } from '../../common/core.helpers';\n\nexport default (source: Set<any>, destination: Set<any>): void => {\n for (const value of mapValues(source)) {\n destination.add(value);\n }\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 origin: module.ComponentFactoryResolver['resolveComponentFactory'];\n\n public constructor(map: Map<any, any>, protected componentFactoryResolver: module.ComponentFactoryResolver) {\n this.origin = componentFactoryResolver.resolveComponentFactory;\n componentFactoryResolver.resolveComponentFactory = helperCreateClone(\n this.origin,\n undefined,\n undefined,\n (component: any) => this.origin.call(componentFactoryResolver, map.get(component) ?? component) 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 entryComponent = 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 })(entryComponent);\n ngModule.imports.push(entryComponent);\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, v);\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 { 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' ? (declaration as any).name : 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","export default (value: any): boolean => {\n return typeof value === 'function';\n};\n","import { getSourceOfMock } from '../../common/func.get-source-of-mock';\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') {\n throw new Error('Only classes 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 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';\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') {\n throw new Error('Only classes are accepted');\n }\n\n const declaration = getSourceOfMock(sel);\n const result: T[] = [];\n mockHelperCrawl(\n mockHelperFind(funcGetLastFixture(), el, undefined),\n node => {\n funcGetFromNode(result, node, declaration);\n },\n true,\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 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\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 } from '@angular/core';\n\nimport coreInjector from '../common/core.injector';\nimport { Type } from '../common/core.types';\n\nimport { Node } from './func.get-from-node';\n\nexport default <T>(result: T[], node: (DebugNode & Node) | null | undefined, proto: Type<T>): void => {\n if (!node) {\n return;\n }\n\n const instance = coreInjector(proto, node.injector);\n if (instance && 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 } from '@angular/core';\n\nimport { Type } from '../common/core.types';\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>(result: T[], node: (DebugNode & Node) | null | undefined, proto: Type<T>): T[] => {\n funcGetFromNodeInjector(result, node, proto);\n funcGetFromNodeStandard(result, node, proto);\n funcGetFromNodeIvy(result, node, proto);\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';\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 (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, false);\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, 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, false);\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 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 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","export default <T extends object>(instance: T, key: any, value: any, encapsulation?: 'get' | 'set'): any => {\n const def = Object.getOwnPropertyDescriptor(instance, key) || {};\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 { 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/defaultMock\n */\n defaultMock<T>(\n token: InjectionToken<T>,\n handler?: (value: undefined | T, injector: Injector) => undefined | Partial<T>,\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 ): void;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/defaultMock\n */\n defaultMock<T>(def: AnyType<T>, handler?: (value: T, injector: Injector) => void | Partial<T>): 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 ): 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>): T;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstance\n */\n findInstance<T>(elSelector: DebugNodeSelector, instanceClass: AnyType<T>): T;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstance\n */\n findInstance<T, D>(instanceClass: AnyType<T>, notFoundValue: D): D | T;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstance\n */\n findInstance<T, D>(elSelector: DebugNodeSelector, instanceClass: AnyType<T>, notFoundValue: D): D | T;\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstances\n */\n findInstances<T>(instanceClass: AnyType<T>): T[];\n\n /**\n * @see https://ng-mocks.sudo.eu/api/ngMocks/findInstances\n */\n findInstances<T>(elSelector: DebugNodeSelector, instanceClass: AnyType<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?.init) {\n callbacks.push(config.init);\n }\n if (config?.overloads) {\n for (const [name, stub, encapsulation] of config.overloads) {\n callbacks.push((instance: any) => {\n mockHelperStubMember(instance, name, stub, encapsulation);\n });\n }\n }\n\n return callbacks;\n};\n","import 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' ? declaration.name : 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\nngMocksStack.subscribePush(() => {\n // On start we have to flush any caches,\n // they are not from this spec.\n const set = ngMocksUniverse.getLocalMocks();\n set.splice(0, set.length);\n});\nngMocksStack.subscribePop(() => {\n const set = ngMocksUniverse.getLocalMocks();\n while (set.length) {\n const [declaration, config] = set.pop() || /* istanbul ignore next */ [];\n const universeConfig = ngMocksUniverse.configInstance.has(declaration)\n ? ngMocksUniverse.configInstance.get(declaration)\n : /* istanbul ignore next */ {};\n ngMocksUniverse.configInstance.set(declaration, {\n ...universeConfig,\n ...config,\n });\n }\n});\n\nconst restore = (declaration: any, config: any): void => {\n ngMocksUniverse.getLocalMocks().push([declaration, config]);\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.data = args[0];\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>(declaration: Type<T> | AbstractType<T> | InjectionToken<T>, data?: any): void => {\n const config = typeof data === 'function' ? { init: data } : data;\n const universeConfig = ngMocksUniverse.configInstance.has(declaration)\n ? ngMocksUniverse.configInstance.get(declaration)\n : {};\n restore(declaration, universeConfig);\n\n if (config) {\n ngMocksUniverse.configInstance.set(declaration, {\n ...universeConfig,\n ...config,\n });\n } else {\n ngMocksUniverse.configInstance.set(declaration, {\n ...universeConfig,\n init: undefined,\n overloads: [],\n });\n }\n\n if (!config) {\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 } else if (checkCollect) {\n checkReset.push([declaration, ngMocksUniverse.configInstance.get(declaration), currentStack]);\n }\n};\n\nconst mockInstanceMember = <T>(\n declaration: Type<T> | AbstractType<T> | InjectionToken<T>,\n name: string,\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 const { key, value, accessor, data } = parseMockInstanceArgs(args);\n if (key) {\n return mockInstanceMember(declaration, key, value, accessor);\n }\n\n mockInstanceConfig(declaration, data);\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';\nimport * as imports from '@angular/platform-browser/animations';\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\n// tslint:disable-next-line variable-name\nlet BrowserAnimationsModule: any;\n// tslint:disable-next-line variable-name\nlet NoopAnimationsModule: any;\n// istanbul ignore next\nlet replaceWithNoop: (def: any) => boolean = () => false;\n\nBrowserAnimationsModule = imports.BrowserAnimationsModule;\nNoopAnimationsModule = imports.NoopAnimationsModule;\nreplaceWithNoop = (def: any) =>\n def === BrowserAnimationsModule &&\n !!BrowserAnimationsModule &&\n !!NoopAnimationsModule &&\n !ngMocksUniverse.getResolution(def);\n\nconst processDefMap: Array<[any, any]> = [\n ['c', MockComponent],\n ['d', MockDirective],\n ['p', MockPipe],\n];\n\nconst processDef = (def: any) => {\n // BrowserAnimationsModule is a very special case.\n // If it is not resolved manually, we simply replace it with NoopAnimationsModule.\n if (replaceWithNoop(def)) {\n return NoopAnimationsModule;\n }\n\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 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(ngModule.name) !== -1 && !ngMocksUniverse.flags.has('skipMock');\n\nconst preprocessToggleFlag = (ngModule: Type<any>): boolean => {\n let toggleSkipMockFlag = false;\n\n const resolution = ngMocksUniverse.getResolution(ngModule);\n if (flagMock(resolution)) {\n toggleSkipMockFlag = true;\n ngMocksUniverse.flags.delete('skipMock');\n }\n if (flagKeep(resolution) || flagReplace(resolution) || flagNever(ngModule)) {\n toggleSkipMockFlag = true;\n ngMocksUniverse.flags.add('skipMock');\n }\n\n return toggleSkipMockFlag;\n};\n\nconst postprocessToggleFlag = (toggleSkipMockFlag: boolean): 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};\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>): 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 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 toggleSkipMockFlag = preprocessToggleFlag(ngModule);\n const mockModule = detectMockModule(ngModule, getExistingMockModule(ngModule));\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 postprocessToggleFlag(toggleSkipMockFlag);\n\n return generateReturn(module, ngModule, ngModuleProviders, mockModule, mockModuleProviders);\n}\n","import { NgModule, 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 = 'declarations' | 'entryComponents' | 'bootstrap' | 'providers' | 'imports' | '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 ['imports', resolve],\n ['exports', resolve],\n];\n\nconst processMeta = (\n ngModule: NgModule,\n resolve: (def: any) => any,\n resolveProvider: (def: Provider) => any,\n): NgModule => {\n const mockModuleDef: NgModule = {};\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\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 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', `${instance.constructor.name}.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 = [template, ...(bindings ?? [null]), ...(flags.providers ?? [null])];\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 };\n\n ctor = generateWrapper({ ...meta, bindings, options });\n coreDefineProperty(ctor, 'cacheKey', cacheKey, false);\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 =\n (key: keyof any & string, reader: Record<keyof any, any>, source: Record<keyof any, any>) => () => {\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, false);\n coreDefineProperty(reader, `__ngMocks_${key}__origin`, source[key], false);\n }\n\n return reader[`__ngMocks_${key}`];\n }\n\n return source[key];\n };\n\nconst createPropertySet =\n (key: keyof any & string, reader: Record<keyof any, any>, source: Record<keyof any, any>) => (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\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 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, false);\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 helperMockService from './helper.mock-service';\nimport { MockedFunction } from './types';\n\nexport default (service: any): { [key in keyof any]: MockedFunction } => {\n const mockName = service.constructor.name;\n const value: any = {};\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","const 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[prototype.constructor.name] ?? []) {\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 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// istanbul ignore next\nconst getGlobal = (): any => window || global;\n\n// We need a single pointer to the object among all environments.\ngetGlobal().ngMockshelperMockService = getGlobal().ngMockshelperMockService || {\n mockFunction: helperMockFunction,\n\n registerMockFunction: (func: CustomMockFunction | undefined) => {\n getGlobal().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} => getGlobal().ngMockshelperMockService)();\n\nexport const registerMockFunction: (func?: CustomMockFunction | undefined) => void =\n getGlobal().ngMockshelperMockService.registerMockFunction;\n","import 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\n ? mockName\n : typeof instance.prototype === 'function'\n ? instance.prototype.name\n : typeof instance.constructor === 'function'\n ? instance.constructor.name\n : 'unknown'\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 } /* istanbul ignore if because we mock BrowserModule */ 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 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) =>\n helperMockService.mockFunction(`func:${prefix || service.name || 'arrow-function'}`),\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__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2835__;","// 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__1087__","__WEBPACK_EXTERNAL_MODULE__8900__","__WEBPACK_EXTERNAL_MODULE__2835__","__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","mapEntries","key","extractDependencyArray","deps","flag","name","ngMetadataName","undefined","add","extractDependency","dep","extendClassicClass","base","child","window","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","config","outputs","output","Output","map","ContentChild","ContentChildren","ViewChild","ViewChildren","isInternalKey","cloneVcrQuery","query","read","ViewContainerRef","queries","final","scanKeys","Object","keys","isViewQuery","generateFinalQueries","decorator","selector","join","jest","type","mockOf","mocks","cacheDeclarations","getMock","isMockedNgDefOf","provider","provide","funcName","_isMockFunction","mockName","__annotations__","isMockControlValueAccessor","__ngMocksConfig","isControlValueAccessor","component","ngType","constructor","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","hooks","applyOverride","override","TestBed","overrideComponent","overrideDirective","overrideModule","overrideProvider","generateTouchesKey","generateTouches","moduleDef","touches","item","meta","applyPlatformOverrideDef","ngMocksOverrides","original","applyPlatformOverridesBasedOnProvidedIn","MockProvider","configureTestingModule","ngMocksSelectors","Map","providers","knownTouches","getDefaults","size","_providers","_compiler","Set","useValue","defineTouches","ngMocks","flushTestBed","_instantiated","_testModuleRef","backup","applyPlatformOverridesBasedOnDefaults","applyPlatformOverrides","call","resetTestingModule","delete","applyNgMocksOverrides","ngMocksOverridesInstalled","before","after","stackRoot","id","level","stack","listenersPush","listenersPop","current","stackPop","state","pop","stackPush","subscribePop","subscribePush","unsubscribePop","index","splice","unsubscribePush","getGlobal","g","globalMap","ngMocksUniverse","builtDeclarations","builtProviders","cacheProviders","configInstance","getLocalMocks","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","destination","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","origin","resolveComponentFactory","EntryComponentsModule","ComponentFactoryResolver","entryComponents","entryComponent","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","vcr","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","args","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","findDebugElement","By","css","queryAll","handlePrimitives","html","outer","format","innerOuter","nodeValue","textContent","wholeText","innerHTML","outerHTML","getElementValue","proto","detectContext","__ngContext__","rootView","detectContextByIndex","_debugContext","lView","normalize","detectGatherFlag","gather","parentNode","isNotObject","shouldBeScanned","scanned","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","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","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","mockInstanceMember","mockInstances","MockInstance","remember","scope","BrowserAnimationsModule","NoopAnimationsModule","replaceWithNoop","processDefMap","createResolveExisting","detectedDef","createResolveExcluded","func","processDef","createResolveWithProviders","createResolve","createResolveProvider","ngModuleProviders","extractModuleAndProviders","toggleSkipMockFlag","flagMock","flagKeep","flagReplace","flagNever","preprocessToggleFlag","mockModule","mockModuleDef","ngModuleDef","getMockModuleDef","detectMockModule","isMockNgDef","getExistingMockModule","mockModuleProviders","getMockProviders","postprocessToggleFlag","generateReturn","flatToExisting","resolveDefForExport","correctExports","moduleConfig","skipAddExports","hasResolver","configureProcessMetaKeys","cachePipe","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","createPropertySet","extra","force","exists","fields","extractAllKeys","useExisting","registerTemplateMiddleware","fixtureMessage","generateFactory","componentCtor","configureTestBed","fixture","createComponent","componentInstance","isExpectedRender","point","tryWhen","renderDeclaration","DebugElement","HTMLElement","renderInjection","_declarations","e","handleFixtureError","generateFactoryInstall","MockRenderFactory","MockRender","__parameters__","isAngularClass","clsCode","charCodeAt","regEx","guessClass","service","bindFrom","bindTo","apply","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","viewProviders","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","hasOwnProperty","__ngMocksDeclarations","parentDeclarations","propDecorators","createDeclarations","parseAnnotations","parseDecorators","parsePropDecorators","__prop__metadata__","parsePropMetadata","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","globalThis","Function","__webpack_exports__"],"sourceRoot":""}
|