Full Code of ngrx/platform for AI

main 653efa536466 cached
1675 files
5.3 MB
1.5M tokens
3896 symbols
1 requests
Download .txt
Showing preview only (5,875K chars total). Download the full file or copy to clipboard to get everything.
Repository: ngrx/platform
Branch: main
Commit: 653efa536466
Files: 1675
Total size: 5.3 MB

Directory structure:
gitextract_eb1k2nce/

├── .agents/
│   └── skills/
│       └── writing-docs/
│           └── SKILL.md
├── .devcontainer/
│   ├── devcontainer.json
│   └── welcome-message.txt
├── .dockerignore
├── .editorconfig
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug-report.yml
│   │   ├── config.yml
│   │   ├── documentation-report.yml
│   │   └── feature-request.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── ci.yml
│       ├── main.yml
│       └── release.yml
├── .gitignore
├── .husky/
│   └── pre-commit
├── .node-version
├── .nxignore
├── .prettierignore
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── MIGRATION.md
├── README.md
├── build/
│   ├── config.ts
│   ├── copy-schematics-core.ts
│   ├── deploy-build.ts
│   ├── example-app-server.js
│   ├── generate-eslint-plugin.ts
│   ├── publish-latest.ts
│   ├── publish-next.ts
│   ├── publish-release.ts
│   ├── stackblitz.ts
│   ├── tasks.ts
│   ├── update-version-numbers.ts
│   └── util.ts
├── eslint.config.mjs
├── jest.config.ts
├── jest.preset.js
├── modules/
│   ├── README.md
│   ├── component/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   ├── 15_0_0-beta/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 16_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── public_api.ts
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── core/
│   │   │   │   ├── potential-observable.spec.ts
│   │   │   │   ├── render-event/
│   │   │   │   │   ├── handlers.spec.ts
│   │   │   │   │   └── manager.spec.ts
│   │   │   │   ├── render-scheduler.spec.ts
│   │   │   │   ├── tick-scheduler.spec.ts
│   │   │   │   └── zone-helpers.spec.ts
│   │   │   ├── fixtures/
│   │   │   │   ├── fixtures.ts
│   │   │   │   ├── mock-event-emitter.ts
│   │   │   │   └── mock-noop-ng-zone.ts
│   │   │   ├── helpers.ts
│   │   │   ├── let/
│   │   │   │   └── let.directive.spec.ts
│   │   │   ├── push/
│   │   │   │   └── push.pipe.spec.ts
│   │   │   └── types/
│   │   │       ├── let.directive.types.spec.ts
│   │   │       ├── push.pipe.types.spec.ts
│   │   │       └── utils.ts
│   │   ├── src/
│   │   │   ├── core/
│   │   │   │   ├── potential-observable.ts
│   │   │   │   ├── render-event/
│   │   │   │   │   ├── handlers.ts
│   │   │   │   │   ├── manager.ts
│   │   │   │   │   └── models.ts
│   │   │   │   ├── render-scheduler.ts
│   │   │   │   ├── tick-scheduler.ts
│   │   │   │   └── zone-helpers.ts
│   │   │   ├── index.ts
│   │   │   ├── let/
│   │   │   │   └── let.directive.ts
│   │   │   └── push/
│   │   │       └── push.pipe.ts
│   │   ├── test-setup.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   └── vite.config.mts
│   ├── component-store/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   ├── 18_0_0-beta/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── public_api.ts
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── component-store.spec.ts
│   │   │   ├── integration.spec.ts
│   │   │   ├── integration_signals.spec.ts
│   │   │   └── types/
│   │   │       ├── component-store.types.spec.ts
│   │   │       ├── regression.types.spec.ts
│   │   │       └── utils.ts
│   │   ├── src/
│   │   │   ├── component-store.ts
│   │   │   ├── debounce-sync.ts
│   │   │   ├── index.ts
│   │   │   └── lifecycle_hooks.ts
│   │   ├── test-setup.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   └── vite.config.mts
│   ├── data/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── public_api.ts
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── __snapshots__/
│   │   │       │   └── index.spec.ts.snap
│   │   │       ├── files/
│   │   │       │   └── entity-metadata.ts.template
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── actions/
│   │   │   │   ├── entity-action-factory.spec.ts
│   │   │   │   ├── entity-action-guard.spec.ts
│   │   │   │   ├── entity-action-operators.spec.ts
│   │   │   │   └── entity-cache-changes-set.spec.ts
│   │   │   ├── dataservices/
│   │   │   │   ├── data-service-error.spec.ts
│   │   │   │   ├── default-data.service.spec.ts
│   │   │   │   └── entity-data.service.spec.ts
│   │   │   ├── dispatchers/
│   │   │   │   └── entity-dispatcher.spec.ts
│   │   │   ├── effects/
│   │   │   │   ├── entity-cache-effects.spec.ts
│   │   │   │   ├── entity-effects.marbles.spec.ts
│   │   │   │   └── entity-effects.spec.ts
│   │   │   ├── entity-data.module.spec.ts
│   │   │   ├── entity-metadata/
│   │   │   │   ├── entity-definition.service.spec.ts
│   │   │   │   ├── entity-definition.spec.ts
│   │   │   │   └── entity-filters.spec.ts
│   │   │   ├── entity-services/
│   │   │   │   ├── entity-collection-service.spec.ts
│   │   │   │   └── entity-services.spec.ts
│   │   │   ├── reducers/
│   │   │   │   ├── entity-cache-reducer.spec.ts
│   │   │   │   ├── entity-change-tracker-base.spec.ts
│   │   │   │   ├── entity-collection-creator.spec.ts
│   │   │   │   ├── entity-collection-reducer-registry.spec.ts
│   │   │   │   └── entity-collection-reducer.spec.ts
│   │   │   ├── selectors/
│   │   │   │   ├── entity-selectors$.spec.ts
│   │   │   │   ├── entity-selectors.spec.ts
│   │   │   │   └── related-entity-selectors.spec.ts
│   │   │   └── utils/
│   │   │       ├── default-pluralizer.spec.ts
│   │   │       └── utils.spec.ts
│   │   ├── src/
│   │   │   ├── actions/
│   │   │   │   ├── entity-action-factory.ts
│   │   │   │   ├── entity-action-guard.ts
│   │   │   │   ├── entity-action-operators.ts
│   │   │   │   ├── entity-action.ts
│   │   │   │   ├── entity-cache-action.ts
│   │   │   │   ├── entity-cache-change-set.ts
│   │   │   │   ├── entity-op.ts
│   │   │   │   ├── merge-strategy.ts
│   │   │   │   └── update-response-data.ts
│   │   │   ├── dataservices/
│   │   │   │   ├── data-service-error.ts
│   │   │   │   ├── default-data-service-config.ts
│   │   │   │   ├── default-data.service.ts
│   │   │   │   ├── entity-cache-data.service.ts
│   │   │   │   ├── entity-data.service.ts
│   │   │   │   ├── http-url-generator.ts
│   │   │   │   ├── interfaces.ts
│   │   │   │   └── persistence-result-handler.service.ts
│   │   │   ├── dispatchers/
│   │   │   │   ├── entity-cache-dispatcher.ts
│   │   │   │   ├── entity-commands.ts
│   │   │   │   ├── entity-dispatcher-base.ts
│   │   │   │   ├── entity-dispatcher-default-options.ts
│   │   │   │   ├── entity-dispatcher-factory.ts
│   │   │   │   └── entity-dispatcher.ts
│   │   │   ├── effects/
│   │   │   │   ├── entity-cache-effects.ts
│   │   │   │   ├── entity-effects-scheduler.ts
│   │   │   │   └── entity-effects.ts
│   │   │   ├── entity-data-config.ts
│   │   │   ├── entity-data-without-effects.module.ts
│   │   │   ├── entity-data.module.ts
│   │   │   ├── entity-metadata/
│   │   │   │   ├── entity-definition.service.ts
│   │   │   │   ├── entity-definition.ts
│   │   │   │   ├── entity-filters.ts
│   │   │   │   └── entity-metadata.ts
│   │   │   ├── entity-services/
│   │   │   │   ├── entity-collection-service-base.ts
│   │   │   │   ├── entity-collection-service-elements-factory.ts
│   │   │   │   ├── entity-collection-service-factory.ts
│   │   │   │   ├── entity-collection-service.ts
│   │   │   │   ├── entity-services-base.ts
│   │   │   │   ├── entity-services-elements.ts
│   │   │   │   └── entity-services.ts
│   │   │   ├── index.ts
│   │   │   ├── provide-entity-data.ts
│   │   │   ├── reducers/
│   │   │   │   ├── constants.ts
│   │   │   │   ├── entity-cache-reducer.ts
│   │   │   │   ├── entity-cache.ts
│   │   │   │   ├── entity-change-tracker-base.ts
│   │   │   │   ├── entity-change-tracker.ts
│   │   │   │   ├── entity-collection-creator.ts
│   │   │   │   ├── entity-collection-reducer-methods.ts
│   │   │   │   ├── entity-collection-reducer-registry.ts
│   │   │   │   ├── entity-collection-reducer.ts
│   │   │   │   └── entity-collection.ts
│   │   │   ├── selectors/
│   │   │   │   ├── entity-cache-selector.ts
│   │   │   │   ├── entity-selectors$.ts
│   │   │   │   └── entity-selectors.ts
│   │   │   └── utils/
│   │   │       ├── correlation-id-generator.ts
│   │   │       ├── default-logger.ts
│   │   │       ├── default-pluralizer.ts
│   │   │       ├── guid-fns.ts
│   │   │       ├── interfaces.ts
│   │   │       └── utilities.ts
│   │   ├── test-setup.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   └── vite.config.mts
│   ├── effects/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   ├── 13_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 15_0_0-beta/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 18_0_0-beta/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 6_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 9_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── public_api.ts
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── __snapshots__/
│   │   │       │   └── index.spec.ts.snap
│   │   │       ├── files/
│   │   │       │   └── __name@dasherize@if-flat__/
│   │   │       │       ├── __name@dasherize__.effects.spec.ts.template
│   │   │       │       └── __name@dasherize__.effects.ts.template
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── actions.spec.ts
│   │   │   ├── effect_creator.spec.ts
│   │   │   ├── effect_sources.spec.ts
│   │   │   ├── effects_error_handler.spec.ts
│   │   │   ├── effects_feature_module.spec.ts
│   │   │   ├── effects_metadata.spec.ts
│   │   │   ├── effects_resolver.spec.ts
│   │   │   ├── effects_root_module.spec.ts
│   │   │   ├── integration.spec.ts
│   │   │   ├── provide_effects.spec.ts
│   │   │   ├── types/
│   │   │   │   ├── effect_creator.spec.ts
│   │   │   │   ├── effects_module.spec.ts
│   │   │   │   ├── of_type.spec.ts
│   │   │   │   ├── provide_effects.spec.ts
│   │   │   │   └── utils.ts
│   │   │   └── utils.spec.ts
│   │   ├── src/
│   │   │   ├── actions.ts
│   │   │   ├── effect_creator.ts
│   │   │   ├── effect_notification.ts
│   │   │   ├── effect_sources.ts
│   │   │   ├── effects_actions.ts
│   │   │   ├── effects_error_handler.ts
│   │   │   ├── effects_feature_module.ts
│   │   │   ├── effects_metadata.ts
│   │   │   ├── effects_module.ts
│   │   │   ├── effects_resolver.ts
│   │   │   ├── effects_root_module.ts
│   │   │   ├── effects_runner.ts
│   │   │   ├── index.ts
│   │   │   ├── lifecycle_hooks.ts
│   │   │   ├── models.ts
│   │   │   ├── provide_effects.ts
│   │   │   ├── tokens.ts
│   │   │   └── utils.ts
│   │   ├── test-setup.ts
│   │   ├── testing/
│   │   │   ├── index.ts
│   │   │   ├── ng-package.json
│   │   │   ├── spec/
│   │   │   │   └── mock_actions.spec.ts
│   │   │   ├── src/
│   │   │   │   ├── public_api.ts
│   │   │   │   └── testing.ts
│   │   │   ├── tsconfig.build.json
│   │   │   └── tsconfig.spec.json
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   └── vitest.config.ts
│   ├── entity/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   ├── 6_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── public_api.ts
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── entity_state.spec.ts
│   │   │   ├── fixtures/
│   │   │   │   └── book.ts
│   │   │   ├── sorted_state_adapter.spec.ts
│   │   │   ├── state_selectors.spec.ts
│   │   │   ├── types/
│   │   │   │   ├── entity_selectors.types.spec.ts
│   │   │   │   ├── entity_state.types.spec.ts
│   │   │   │   └── utils.ts
│   │   │   ├── unsorted_state_adapter.spec.ts
│   │   │   └── utils.spec.ts
│   │   ├── src/
│   │   │   ├── create_adapter.ts
│   │   │   ├── entity_state.ts
│   │   │   ├── index.ts
│   │   │   ├── models.ts
│   │   │   ├── sorted_state_adapter.ts
│   │   │   ├── state_adapter.ts
│   │   │   ├── state_selectors.ts
│   │   │   ├── unsorted_state_adapter.ts
│   │   │   └── utils.ts
│   │   ├── test-setup.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   └── vite.config.mts
│   ├── eslint-plugin/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── migrations/
│   │   │   └── migration.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── scripts/
│   │   │   ├── generate-config.ts
│   │   │   ├── generate-docs.ts
│   │   │   └── generate-overview.ts
│   │   ├── spec/
│   │   │   ├── exported-rules.spec.ts
│   │   │   ├── fixtures/
│   │   │   │   └── tsconfig.json
│   │   │   ├── rules/
│   │   │   │   ├── component-store/
│   │   │   │   │   ├── avoid-combining-component-store-selectors.spec.ts
│   │   │   │   │   ├── avoid-mapping-component-store-selectors.spec.ts
│   │   │   │   │   ├── require-super-ondestroy.spec.ts
│   │   │   │   │   └── updater-explicit-return-type.spec.ts
│   │   │   │   ├── effects/
│   │   │   │   │   ├── avoid-cyclic-effects.spec.ts
│   │   │   │   │   ├── no-dispatch-in-effects.spec.ts
│   │   │   │   │   ├── no-effects-in-providers.spec.ts
│   │   │   │   │   ├── no-multiple-actions-in-effects.spec.ts
│   │   │   │   │   ├── prefer-effect-callback-in-block-statement.spec.ts
│   │   │   │   │   └── use-effects-lifecycle-interface.spec.ts
│   │   │   │   ├── operators/
│   │   │   │   │   └── prefer-concat-latest-from.spec.ts
│   │   │   │   ├── signals/
│   │   │   │   │   ├── enforce-type-call.spec.ts
│   │   │   │   │   ├── prefer-protected-state.spec.ts
│   │   │   │   │   ├── signal-state-no-arrays-at-root-level.spec.ts
│   │   │   │   │   ├── signal-store-feature-should-use-generic-type.spec.ts
│   │   │   │   │   └── with-state-no-arrays-at-root-level.spec.ts
│   │   │   │   └── store/
│   │   │   │       ├── avoid-combining-selectors.spec.ts
│   │   │   │       ├── avoid-dispatching-multiple-actions-sequentially.spec.ts
│   │   │   │       ├── avoid-duplicate-actions-in-reducer.spec.ts
│   │   │   │       ├── avoid-mapping-selectors.spec.ts
│   │   │   │       ├── good-action-hygiene.spec.ts
│   │   │   │       ├── no-multiple-global-stores.spec.ts
│   │   │   │       ├── no-reducer-in-key-names.spec.ts
│   │   │   │       ├── no-store-subscription.spec.ts
│   │   │   │       ├── no-typed-global-store.spec.ts
│   │   │   │       ├── on-function-explicit-return-type.spec.ts
│   │   │   │       ├── prefer-action-creator-in-dispatch.spec.ts
│   │   │   │       ├── prefer-action-creator-in-of-type.spec.ts
│   │   │   │       ├── prefer-action-creator.spec.ts
│   │   │   │       ├── prefer-inline-action-props.spec.ts
│   │   │   │       ├── prefer-one-generic-in-create-for-feature-selector.spec.ts
│   │   │   │       ├── prefer-selector-in-select.spec.ts
│   │   │   │       ├── prefix-selectors-with-select.spec.ts
│   │   │   │       ├── select-style.spec.ts
│   │   │   │       └── use-consistent-global-store-name.spec.ts
│   │   │   ├── schematics/
│   │   │   │   └── ng-add.spec.ts
│   │   │   └── utils/
│   │   │       ├── from-fixture.spec.ts
│   │   │       ├── from-fixture.ts
│   │   │       ├── index.ts
│   │   │       └── rule-tester.ts
│   │   ├── src/
│   │   │   ├── configs/
│   │   │   │   ├── all-type-checked.json
│   │   │   │   ├── all-type-checked.ts
│   │   │   │   ├── all.json
│   │   │   │   ├── all.ts
│   │   │   │   ├── component-store.json
│   │   │   │   ├── component-store.ts
│   │   │   │   ├── effects-type-checked.json
│   │   │   │   ├── effects-type-checked.ts
│   │   │   │   ├── effects.json
│   │   │   │   ├── effects.ts
│   │   │   │   ├── operators.json
│   │   │   │   ├── operators.ts
│   │   │   │   ├── signals-type-checked.json
│   │   │   │   ├── signals-type-checked.ts
│   │   │   │   ├── signals.json
│   │   │   │   ├── signals.ts
│   │   │   │   ├── store.json
│   │   │   │   └── store.ts
│   │   │   ├── index.ts
│   │   │   ├── rule-creator.ts
│   │   │   ├── rules/
│   │   │   │   ├── component-store/
│   │   │   │   │   ├── avoid-combining-component-store-selectors.ts
│   │   │   │   │   ├── avoid-mapping-component-store-selectors.ts
│   │   │   │   │   ├── require-super-ondestroy.ts
│   │   │   │   │   └── updater-explicit-return-type.ts
│   │   │   │   ├── effects/
│   │   │   │   │   ├── avoid-cyclic-effects.ts
│   │   │   │   │   ├── no-dispatch-in-effects.ts
│   │   │   │   │   ├── no-effects-in-providers.ts
│   │   │   │   │   ├── no-multiple-actions-in-effects.ts
│   │   │   │   │   ├── prefer-action-creator-in-of-type.ts
│   │   │   │   │   ├── prefer-effect-callback-in-block-statement.ts
│   │   │   │   │   └── use-effects-lifecycle-interface.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── operators/
│   │   │   │   │   └── prefer-concat-latest-from.ts
│   │   │   │   ├── signals/
│   │   │   │   │   ├── enforce-type-call.ts
│   │   │   │   │   ├── prefer-protected-state.ts
│   │   │   │   │   ├── signal-state-no-arrays-at-root-level.ts
│   │   │   │   │   ├── signal-store-feature-should-use-generic-type.ts
│   │   │   │   │   └── with-state-no-arrays-at-root-level.ts
│   │   │   │   └── store/
│   │   │   │       ├── avoid-combining-selectors.ts
│   │   │   │       ├── avoid-dispatching-multiple-actions-sequentially.ts
│   │   │   │       ├── avoid-duplicate-actions-in-reducer.ts
│   │   │   │       ├── avoid-mapping-selectors.ts
│   │   │   │       ├── good-action-hygiene.ts
│   │   │   │       ├── no-multiple-global-stores.ts
│   │   │   │       ├── no-reducer-in-key-names.ts
│   │   │   │       ├── no-store-subscription.ts
│   │   │   │       ├── no-typed-global-store.ts
│   │   │   │       ├── on-function-explicit-return-type.ts
│   │   │   │       ├── prefer-action-creator-in-dispatch.ts
│   │   │   │       ├── prefer-action-creator.ts
│   │   │   │       ├── prefer-inline-action-props.ts
│   │   │   │       ├── prefer-one-generic-in-create-for-feature-selector.ts
│   │   │   │       ├── prefer-selector-in-select.ts
│   │   │   │       ├── prefix-selectors-with-select.ts
│   │   │   │       ├── select-style.ts
│   │   │   │       └── use-consistent-global-store-name.ts
│   │   │   └── utils/
│   │   │       ├── helper-functions/
│   │   │       │   ├── folder.ts
│   │   │       │   ├── guards.ts
│   │   │       │   ├── index.ts
│   │   │       │   ├── ngrx-modules.ts
│   │   │       │   ├── rules.ts
│   │   │       │   └── utils.ts
│   │   │       ├── index.ts
│   │   │       └── selectors/
│   │   │           └── index.ts
│   │   ├── test-setup.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   ├── v9/
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.build.json
│   │   │   └── tsconfig.spec.json
│   │   └── vite.config.mts
│   ├── license-banner.txt
│   ├── operators/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   ├── 20_0_0-rc_0-tap-response/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── concat_latest_from.spec.ts
│   │   │   ├── map-response.spec.ts
│   │   │   ├── tap-response.spec.ts
│   │   │   └── types/
│   │   │       ├── tap-response.types.spec.ts
│   │   │       └── utils.ts
│   │   ├── src/
│   │   │   ├── concat_latest_from.ts
│   │   │   ├── index.ts
│   │   │   ├── map-response.ts
│   │   │   └── tap-response.ts
│   │   ├── test-setup.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   └── vite.config.mts
│   ├── router-store/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── data-persistence/
│   │   │   ├── index.ts
│   │   │   ├── ng-package.json
│   │   │   ├── src/
│   │   │   │   ├── operators.ts
│   │   │   │   └── public_api.ts
│   │   │   └── tsconfig.build.json
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   ├── 14_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 15_2_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 6_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 8_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 9_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── public_api.ts
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── __snapshots__/
│   │   │       │   └── index.spec.ts.snap
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── integration.spec.ts
│   │   │   ├── router_selectors.spec.ts
│   │   │   ├── router_store_module.spec.ts
│   │   │   ├── serializers.spec.ts
│   │   │   ├── types/
│   │   │   │   ├── router_selectors.types.spec.ts
│   │   │   │   └── utils.ts
│   │   │   └── utils.ts
│   │   ├── src/
│   │   │   ├── actions.ts
│   │   │   ├── index.ts
│   │   │   ├── models.ts
│   │   │   ├── provide_router_store.ts
│   │   │   ├── reducer.ts
│   │   │   ├── router_selectors.ts
│   │   │   ├── router_store_config.ts
│   │   │   ├── router_store_module.ts
│   │   │   ├── serializers/
│   │   │   │   ├── base.ts
│   │   │   │   ├── full_serializer.ts
│   │   │   │   └── minimal_serializer.ts
│   │   │   └── store_router_connecting.service.ts
│   │   ├── test-setup.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   ├── vite.config.mts
│   │   └── webpack.e2e.config.js
│   ├── schematics/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── collection.json
│   │   ├── eslint.config.mjs
│   │   ├── jest.config.ts
│   │   ├── migrations/
│   │   │   ├── 6_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── src/
│   │   │   ├── action/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       └── __name@dasherize__.actions.ts.template
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── cli.spec.ts
│   │   │   ├── component-store/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       ├── __name@dasherize__.store.spec.ts.template
│   │   │   │   │       └── __name@dasherize__.store.ts.template
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── container/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       └── __name@dasherize__-component.spec.ts.template
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── integration-files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       └── __name@dasherize__-component.spec.ts.template
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── data/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       ├── __name@dasherize__.service.spec.ts.template
│   │   │   │   │       ├── __name@dasherize__.service.ts.template
│   │   │   │   │       └── __name@dasherize__.ts.template
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── effect/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       ├── __name@dasherize__.effects.spec.ts.template
│   │   │   │   │       └── __name@dasherize__.effects.ts.template
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── entity/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       ├── __name@dasherize@group-actions__.actions.ts.template
│   │   │   │   │       ├── __name@dasherize@group-models__.model.ts.template
│   │   │   │   │       ├── __name@dasherize@group-reducers__.reducer.spec.ts.template
│   │   │   │   │       └── __name@dasherize@group-reducers__.reducer.ts.template
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── feature/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── index.ts
│   │   │   ├── ng-add/
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── ngrx-push-migration/
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── reducer/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       ├── __name@dasherize__.reducer.spec.ts.template
│   │   │   │   │       └── __name@dasherize__.reducer.ts.template
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── selector/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       ├── __name@dasherize__.selectors.spec.ts.template
│   │   │   │   │       └── __name@dasherize__.selectors.ts.template
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   └── store/
│   │   │       ├── __snapshots__/
│   │   │       │   └── index.spec.ts.snap
│   │   │       ├── files/
│   │   │       │   └── __statePath__/
│   │   │       │       └── index.ts.template
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── test-setup.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   └── tsconfig.spec.json
│   ├── schematics-core/
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── project.json
│   │   ├── testing/
│   │   │   ├── create-app-module.ts
│   │   │   ├── create-package.ts
│   │   │   ├── create-reducers.ts
│   │   │   ├── create-workspace.ts
│   │   │   ├── index.ts
│   │   │   └── update.ts
│   │   ├── tsconfig.lib.json
│   │   └── utility/
│   │       ├── ast-utils.ts
│   │       ├── change.ts
│   │       ├── config.ts
│   │       ├── find-component.ts
│   │       ├── find-module.ts
│   │       ├── json-utilts.ts
│   │       ├── libs-version.ts
│   │       ├── ngrx-utils.ts
│   │       ├── package.ts
│   │       ├── parse-name.ts
│   │       ├── project.ts
│   │       ├── standalone.ts
│   │       ├── strings.ts
│   │       ├── update.ts
│   │       └── visitors.ts
│   ├── signals/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── entities/
│   │   │   ├── index.ts
│   │   │   ├── ng-package.json
│   │   │   ├── spec/
│   │   │   │   ├── helpers.ts
│   │   │   │   ├── mocks.ts
│   │   │   │   ├── types/
│   │   │   │   │   ├── entity-config.types.spec.ts
│   │   │   │   │   ├── helpers.ts
│   │   │   │   │   └── with-entities.types.spec.ts
│   │   │   │   ├── updaters/
│   │   │   │   │   ├── add-entities.spec.ts
│   │   │   │   │   ├── add-entity.spec.ts
│   │   │   │   │   ├── prepend-entities.spec.ts
│   │   │   │   │   ├── prepend-entity.spec.ts
│   │   │   │   │   ├── remove-all-entities.spec.ts
│   │   │   │   │   ├── remove-entities.spec.ts
│   │   │   │   │   ├── remove-entity.spec.ts
│   │   │   │   │   ├── set-all-entities.spec.ts
│   │   │   │   │   ├── set-entities.spec.ts
│   │   │   │   │   ├── set-entity.spec.ts
│   │   │   │   │   ├── update-all-entities.spec.ts
│   │   │   │   │   ├── update-entities.spec.ts
│   │   │   │   │   ├── update-entity.spec.ts
│   │   │   │   │   ├── upsert-entities.spec.ts
│   │   │   │   │   └── upsert-entity.spec.ts
│   │   │   │   └── with-entities.spec.ts
│   │   │   └── src/
│   │   │       ├── entity-config.ts
│   │   │       ├── helpers.ts
│   │   │       ├── index.ts
│   │   │       ├── models.ts
│   │   │       ├── updaters/
│   │   │       │   ├── add-entities.ts
│   │   │       │   ├── add-entity.ts
│   │   │       │   ├── prepend-entities.ts
│   │   │       │   ├── prepend-entity.ts
│   │   │       │   ├── remove-all-entities.ts
│   │   │       │   ├── remove-entities.ts
│   │   │       │   ├── remove-entity.ts
│   │   │       │   ├── set-all-entities.ts
│   │   │       │   ├── set-entities.ts
│   │   │       │   ├── set-entity.ts
│   │   │       │   ├── update-all-entities.ts
│   │   │       │   ├── update-entities.ts
│   │   │       │   ├── update-entity.ts
│   │   │       │   ├── upsert-entities.ts
│   │   │       │   └── upsert-entity.ts
│   │   │       └── with-entities.ts
│   │   ├── eslint.config.mjs
│   │   ├── events/
│   │   │   ├── index.ts
│   │   │   ├── ng-package.json
│   │   │   ├── spec/
│   │   │   │   ├── dispatcher.spec.ts
│   │   │   │   ├── event-creator-group.spec.ts
│   │   │   │   ├── event-creator.spec.ts
│   │   │   │   ├── events-service.spec.ts
│   │   │   │   ├── inject-dispatch.spec.ts
│   │   │   │   ├── integration.spec.ts
│   │   │   │   ├── with-event-handlers.spec.ts
│   │   │   │   └── with-reducer.spec.ts
│   │   │   └── src/
│   │   │       ├── case-reducer.ts
│   │   │       ├── dispatcher.ts
│   │   │       ├── event-creator-group.ts
│   │   │       ├── event-creator.ts
│   │   │       ├── event-instance.ts
│   │   │       ├── event-scope.ts
│   │   │       ├── events-service.ts
│   │   │       ├── index.ts
│   │   │       ├── inject-dispatch.ts
│   │   │       ├── with-event-handlers.ts
│   │   │       └── with-reducer.ts
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   ├── 18_0_0-rc_3-protected-state/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 18_0_0-rc_3-writablestatesource/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 19_0_0-rc_0-props/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 21_0_0-beta_0-rename-withEffects-to-withEventHandlers/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── rxjs-interop/
│   │   │   ├── index.ts
│   │   │   ├── ng-package.json
│   │   │   ├── spec/
│   │   │   │   └── rx-method.spec.ts
│   │   │   └── src/
│   │   │       ├── index.ts
│   │   │       └── rx-method.ts
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── deep-computed.spec.ts
│   │   │   ├── deep-signal.spec.ts
│   │   │   ├── helpers.ts
│   │   │   ├── signal-method.spec.ts
│   │   │   ├── signal-state.spec.ts
│   │   │   ├── signal-store-feature.spec.ts
│   │   │   ├── signal-store.spec.ts
│   │   │   ├── state-source.spec.ts
│   │   │   ├── types/
│   │   │   │   ├── helpers.ts
│   │   │   │   ├── patch-state.types.spec.ts
│   │   │   │   ├── signal-state.types.spec.ts
│   │   │   │   ├── signal-store.types.spec.ts
│   │   │   │   ├── with-computed.types.spec.ts
│   │   │   │   └── with-linked-state.types.spec.ts
│   │   │   ├── with-computed.spec.ts
│   │   │   ├── with-feature.spec.ts
│   │   │   ├── with-hooks.spec.ts
│   │   │   ├── with-linked-state.spec.ts
│   │   │   ├── with-methods.spec.ts
│   │   │   ├── with-props.spec.ts
│   │   │   └── with-state.spec.ts
│   │   ├── src/
│   │   │   ├── deep-computed.ts
│   │   │   ├── deep-signal.ts
│   │   │   ├── index.ts
│   │   │   ├── signal-method.ts
│   │   │   ├── signal-state.ts
│   │   │   ├── signal-store-assertions.ts
│   │   │   ├── signal-store-feature.ts
│   │   │   ├── signal-store-models.ts
│   │   │   ├── signal-store.ts
│   │   │   ├── state-source.ts
│   │   │   ├── ts-helpers.ts
│   │   │   ├── with-computed.ts
│   │   │   ├── with-feature.ts
│   │   │   ├── with-hooks.ts
│   │   │   ├── with-linked-state.ts
│   │   │   ├── with-methods.ts
│   │   │   ├── with-props.ts
│   │   │   └── with-state.ts
│   │   ├── test-setup.ts
│   │   ├── testing/
│   │   │   ├── index.ts
│   │   │   ├── ng-package.json
│   │   │   ├── spec/
│   │   │   │   ├── types/
│   │   │   │   │   ├── helpers.ts
│   │   │   │   │   └── uprotected.types.spec.ts
│   │   │   │   └── unprotected.spec.ts
│   │   │   └── src/
│   │   │       ├── index.ts
│   │   │       └── unprotected.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   └── vite.config.mts
│   ├── store/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   ├── 13_0_0-beta/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 13_0_0-rc/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 15_2_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 16_0_0-beta/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 18_0_0-beta/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 6_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 8_0_0-beta/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 8_0_0-rc/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── public_api.ts
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── files/
│   │   │       │   └── __statePath__/
│   │   │       │       └── index.ts.template
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── action_creator.spec.ts
│   │   │   ├── action_group_creator.spec.ts
│   │   │   ├── edge.spec.ts
│   │   │   ├── feature_creator.spec.ts
│   │   │   ├── fixtures/
│   │   │   │   ├── counter.ts
│   │   │   │   ├── edge_todos.ts
│   │   │   │   └── todos.ts
│   │   │   ├── flags.spec.ts
│   │   │   ├── helpers.spec.ts
│   │   │   ├── integration.spec.ts
│   │   │   ├── integration_signals.spec.ts
│   │   │   ├── meta-reducers/
│   │   │   │   ├── immutability_reducer.spec.ts
│   │   │   │   ├── inNgZoneAssert_reducer.spec.ts
│   │   │   │   └── serialization_reducer.spec.ts
│   │   │   ├── modules.spec.ts
│   │   │   ├── ngc/
│   │   │   │   ├── main.ts
│   │   │   │   └── tsconfig.ngc.json
│   │   │   ├── reducer_creator.spec.ts
│   │   │   ├── reducer_manager.spec.ts
│   │   │   ├── runtime_checks.spec.ts
│   │   │   ├── runtime_checks_meta_reducers.spec.ts
│   │   │   ├── selector.spec.ts
│   │   │   ├── state.spec.ts
│   │   │   ├── store.spec.ts
│   │   │   ├── store_pipes.spec.ts
│   │   │   ├── types/
│   │   │   │   ├── action_creator.spec.ts
│   │   │   │   ├── action_group_creator.spec.ts
│   │   │   │   ├── feature_creator.spec.ts
│   │   │   │   ├── reducer_creator.spec.ts
│   │   │   │   ├── select.spec.ts
│   │   │   │   ├── select_signal.spec.ts
│   │   │   │   ├── selector.spec.ts
│   │   │   │   ├── store.spec.ts
│   │   │   │   ├── store_module.spec.ts
│   │   │   │   └── utils.ts
│   │   │   └── utils.spec.ts
│   │   ├── src/
│   │   │   ├── action_creator.ts
│   │   │   ├── action_group_creator.ts
│   │   │   ├── actions_subject.ts
│   │   │   ├── feature_creator.ts
│   │   │   ├── flags.ts
│   │   │   ├── globals.ts
│   │   │   ├── helpers.ts
│   │   │   ├── index.ts
│   │   │   ├── meta-reducers/
│   │   │   │   ├── immutability_reducer.ts
│   │   │   │   ├── inNgZoneAssert_reducer.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── serialization_reducer.ts
│   │   │   │   └── utils.ts
│   │   │   ├── models.ts
│   │   │   ├── private_export.ts
│   │   │   ├── provide_store.ts
│   │   │   ├── reducer_creator.ts
│   │   │   ├── reducer_manager.ts
│   │   │   ├── runtime_checks.ts
│   │   │   ├── scanned_actions_subject.ts
│   │   │   ├── selector.ts
│   │   │   ├── state.ts
│   │   │   ├── store.ts
│   │   │   ├── store_config.ts
│   │   │   ├── store_module.ts
│   │   │   ├── tokens.ts
│   │   │   └── utils.ts
│   │   ├── test-setup.ts
│   │   ├── testing/
│   │   │   ├── index.ts
│   │   │   ├── ng-package.json
│   │   │   ├── spec/
│   │   │   │   └── mock_store.spec.ts
│   │   │   ├── src/
│   │   │   │   ├── mock_reducer_manager.ts
│   │   │   │   ├── mock_selector.ts
│   │   │   │   ├── mock_state.ts
│   │   │   │   ├── mock_store.ts
│   │   │   │   ├── public_api.ts
│   │   │   │   ├── testing.ts
│   │   │   │   └── tokens.ts
│   │   │   ├── tsconfig.build.json
│   │   │   └── tsconfig.spec.json
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   └── vite.config.mts
│   └── store-devtools/
│       ├── CHANGELOG.md
│       ├── README.md
│       ├── eslint.config.mjs
│       ├── index.ts
│       ├── migrations/
│       │   ├── 17_0_0-beta/
│       │   │   ├── index.spec.ts
│       │   │   └── index.ts
│       │   ├── 6_0_0/
│       │   │   ├── index.spec.ts
│       │   │   └── index.ts
│       │   └── migration.json
│       ├── ng-package.json
│       ├── package.json
│       ├── project.json
│       ├── public_api.ts
│       ├── schematics/
│       │   ├── collection.json
│       │   └── ng-add/
│       │       ├── __snapshots__/
│       │       │   └── index.spec.ts.snap
│       │       ├── index.spec.ts
│       │       ├── index.ts
│       │       ├── schema.json
│       │       └── schema.ts
│       ├── schematics-core/
│       │   ├── eslint.config.mjs
│       │   ├── index.ts
│       │   ├── tsconfig.lib.json
│       │   └── utility/
│       │       ├── ast-utils.ts
│       │       ├── change.ts
│       │       ├── config.ts
│       │       ├── find-component.ts
│       │       ├── find-module.ts
│       │       ├── json-utilts.ts
│       │       ├── libs-version.ts
│       │       ├── ngrx-utils.ts
│       │       ├── package.ts
│       │       ├── parse-name.ts
│       │       ├── project.ts
│       │       ├── standalone.ts
│       │       ├── strings.ts
│       │       ├── update.ts
│       │       └── visitors.ts
│       ├── spec/
│       │   ├── config.spec.ts
│       │   ├── extension.spec.ts
│       │   ├── integration.spec.ts
│       │   └── store.spec.ts
│       ├── src/
│       │   ├── actions.ts
│       │   ├── config.ts
│       │   ├── devtools-dispatcher.ts
│       │   ├── devtools.ts
│       │   ├── extension.ts
│       │   ├── index.ts
│       │   ├── instrument.ts
│       │   ├── provide-store-devtools.ts
│       │   ├── reducer.ts
│       │   ├── utils.ts
│       │   └── zone-config.ts
│       ├── test-setup.ts
│       ├── tsconfig.build.json
│       ├── tsconfig.schematics.json
│       ├── tsconfig.spec.json
│       └── vite.config.mts
├── nx.json
├── package.json
├── prettier.config.js
├── projects/
│   ├── example-app/
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── project.json
│   │   ├── src/
│   │   │   ├── app/
│   │   │   │   ├── app-routing.module.ts
│   │   │   │   ├── app.module.ts
│   │   │   │   ├── auth/
│   │   │   │   │   ├── actions/
│   │   │   │   │   │   ├── auth-api.actions.ts
│   │   │   │   │   │   ├── auth.actions.ts
│   │   │   │   │   │   └── login-page.actions.ts
│   │   │   │   │   ├── auth-routing.module.ts
│   │   │   │   │   ├── auth.module.ts
│   │   │   │   │   ├── components/
│   │   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   │   ├── login-form.component.spec.ts.snap
│   │   │   │   │   │   │   └── logout-confirmation-dialog.component.spec.ts.snap
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── login-form.component.spec.ts
│   │   │   │   │   │   ├── login-form.component.ts
│   │   │   │   │   │   ├── logout-confirmation-dialog.component.spec.ts
│   │   │   │   │   │   └── logout-confirmation-dialog.component.ts
│   │   │   │   │   ├── containers/
│   │   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   │   └── login-page.component.spec.ts.snap
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── login-page.component.spec.ts
│   │   │   │   │   │   └── login-page.component.ts
│   │   │   │   │   ├── effects/
│   │   │   │   │   │   ├── auth.effects.spec.ts
│   │   │   │   │   │   ├── auth.effects.ts
│   │   │   │   │   │   └── index.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── models/
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   └── user.ts
│   │   │   │   │   ├── reducers/
│   │   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   │   ├── auth.reducer.spec.ts.snap
│   │   │   │   │   │   │   └── login-page.reducer.spec.ts.snap
│   │   │   │   │   │   ├── auth.reducer.spec.ts
│   │   │   │   │   │   ├── auth.reducer.ts
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── login-page.reducer.spec.ts
│   │   │   │   │   │   └── login-page.reducer.ts
│   │   │   │   │   └── services/
│   │   │   │   │       ├── auth-guard.service.spec.ts
│   │   │   │   │       ├── auth-guard.service.ts
│   │   │   │   │       ├── auth.service.ts
│   │   │   │   │       └── index.ts
│   │   │   │   ├── books/
│   │   │   │   │   ├── actions/
│   │   │   │   │   │   ├── book.actions.ts
│   │   │   │   │   │   ├── books-api.actions.ts
│   │   │   │   │   │   ├── collection-api.actions.ts
│   │   │   │   │   │   ├── collection-page.actions.ts
│   │   │   │   │   │   ├── find-book-page.actions.ts
│   │   │   │   │   │   ├── selected-book-page.actions.ts
│   │   │   │   │   │   └── view-book-page.actions.ts
│   │   │   │   │   ├── books-routing.module.ts
│   │   │   │   │   ├── books.module.ts
│   │   │   │   │   ├── components/
│   │   │   │   │   │   ├── book-authors.component.ts
│   │   │   │   │   │   ├── book-detail.component.ts
│   │   │   │   │   │   ├── book-preview-list.component.ts
│   │   │   │   │   │   ├── book-preview.component.ts
│   │   │   │   │   │   ├── book-search.component.ts
│   │   │   │   │   │   └── index.ts
│   │   │   │   │   ├── containers/
│   │   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   │   ├── collection-page.component.spec.ts.snap
│   │   │   │   │   │   │   ├── find-book-page.component.spec.ts.snap
│   │   │   │   │   │   │   ├── selected-book-page.component.spec.ts.snap
│   │   │   │   │   │   │   └── view-book-page.component.spec.ts.snap
│   │   │   │   │   │   ├── collection-page.component.spec.ts
│   │   │   │   │   │   ├── collection-page.component.ts
│   │   │   │   │   │   ├── find-book-page.component.spec.ts
│   │   │   │   │   │   ├── find-book-page.component.ts
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── selected-book-page.component.spec.ts
│   │   │   │   │   │   ├── selected-book-page.component.ts
│   │   │   │   │   │   ├── view-book-page.component.spec.ts
│   │   │   │   │   │   └── view-book-page.component.ts
│   │   │   │   │   ├── effects/
│   │   │   │   │   │   ├── book.effects.spec.ts
│   │   │   │   │   │   ├── book.effects.ts
│   │   │   │   │   │   ├── collection.effects.spec.ts
│   │   │   │   │   │   ├── collection.effects.ts
│   │   │   │   │   │   └── index.ts
│   │   │   │   │   ├── guards/
│   │   │   │   │   │   ├── book-exists.guard.ts
│   │   │   │   │   │   └── index.ts
│   │   │   │   │   ├── models/
│   │   │   │   │   │   ├── book.ts
│   │   │   │   │   │   └── index.ts
│   │   │   │   │   └── reducers/
│   │   │   │   │       ├── __snapshots__/
│   │   │   │   │       │   └── books.reducer.spec.ts.snap
│   │   │   │   │       ├── books.reducer.spec.ts
│   │   │   │   │       ├── books.reducer.ts
│   │   │   │   │       ├── collection.reducer.ts
│   │   │   │   │       ├── index.ts
│   │   │   │   │       └── search.reducer.ts
│   │   │   │   ├── core/
│   │   │   │   │   ├── actions/
│   │   │   │   │   │   ├── layout.actions.ts
│   │   │   │   │   │   └── user.actions.ts
│   │   │   │   │   ├── components/
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── layout.component.ts
│   │   │   │   │   │   ├── nav-item.component.ts
│   │   │   │   │   │   ├── sidenav.component.ts
│   │   │   │   │   │   └── toolbar.component.ts
│   │   │   │   │   ├── containers/
│   │   │   │   │   │   ├── app.component.ts
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   └── not-found-page.component.ts
│   │   │   │   │   ├── core.module.ts
│   │   │   │   │   ├── effects/
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── router.effects.spec.ts
│   │   │   │   │   │   ├── router.effects.ts
│   │   │   │   │   │   ├── user.effects.spec.ts
│   │   │   │   │   │   └── user.effects.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── reducers/
│   │   │   │   │   │   └── layout.reducer.ts
│   │   │   │   │   └── services/
│   │   │   │   │       ├── book-storage.service.spec.ts
│   │   │   │   │       ├── book-storage.service.ts
│   │   │   │   │       ├── google-books.service.spec.ts
│   │   │   │   │       ├── google-books.service.ts
│   │   │   │   │       └── index.ts
│   │   │   │   ├── material/
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── material.module.ts
│   │   │   │   ├── reducers/
│   │   │   │   │   └── index.ts
│   │   │   │   └── shared/
│   │   │   │       └── pipes/
│   │   │   │           ├── add-commas.pipe.spec.ts
│   │   │   │           ├── add-commas.pipe.ts
│   │   │   │           ├── ellipsis.pipe.spec.ts
│   │   │   │           ├── ellipsis.pipe.ts
│   │   │   │           └── index.ts
│   │   │   ├── assets/
│   │   │   │   ├── .gitkeep
│   │   │   │   └── .npmignore
│   │   │   ├── index.html
│   │   │   ├── main.ts
│   │   │   ├── polyfills.ts
│   │   │   ├── styles.css
│   │   │   └── test-setup.ts
│   │   ├── tsconfig.app.json
│   │   ├── tsconfig.spec.json
│   │   └── vite.config.mts
│   ├── example-app-e2e/
│   │   ├── cypress.config.ts
│   │   ├── eslint.config.mjs
│   │   ├── project.json
│   │   ├── src/
│   │   │   ├── integration/
│   │   │   │   └── round-trip.cy.ts
│   │   │   └── support/
│   │   │       ├── commands.ts
│   │   │       └── e2e.ts
│   │   └── tsconfig.json
│   ├── standalone-app/
│   │   ├── eslint.config.mjs
│   │   ├── jest.config.ts
│   │   ├── project.json
│   │   ├── src/
│   │   │   ├── app/
│   │   │   │   ├── app.component.spec.ts
│   │   │   │   ├── app.component.ts
│   │   │   │   ├── app.config.ts
│   │   │   │   ├── app.effects.ts
│   │   │   │   ├── lazy/
│   │   │   │   │   ├── feature.component.ts
│   │   │   │   │   ├── feature.routes.ts
│   │   │   │   │   └── feature.state.ts
│   │   │   │   └── test.pipe.ts
│   │   │   ├── assets/
│   │   │   │   └── .gitkeep
│   │   │   ├── index.html
│   │   │   ├── main.ts
│   │   │   ├── polyfills.ts
│   │   │   ├── styles.css
│   │   │   └── test-setup.ts
│   │   ├── tsconfig.app.json
│   │   ├── tsconfig.editor.json
│   │   ├── tsconfig.json
│   │   └── tsconfig.spec.json
│   ├── standalone-app-e2e/
│   │   ├── cypress.config.ts
│   │   ├── eslint.config.mjs
│   │   ├── project.json
│   │   ├── src/
│   │   │   ├── integration/
│   │   │   │   └── app.cy.ts
│   │   │   └── support/
│   │   │       ├── app.po.ts
│   │   │       └── e2e.ts
│   │   └── tsconfig.json
│   └── www/
│       ├── eslint.config.mjs
│       ├── firebase.json
│       ├── index.html
│       ├── package.json
│       ├── project.json
│       ├── public/
│       │   ├── .gitkeep
│       │   ├── _redirects
│       │   ├── browserconfig.xml
│       │   ├── images/
│       │   │   └── guide/
│       │   │       └── store/
│       │   │           └── state-management-lifecycle.psd
│       │   └── site.webmanifest
│       ├── src/
│       │   ├── _code_theme.scss
│       │   ├── _theme.scss
│       │   ├── app/
│       │   │   ├── app.component.spec.ts
│       │   │   ├── app.component.ts
│       │   │   ├── app.config.browser.ts
│       │   │   ├── app.config.server.ts
│       │   │   ├── app.config.ts
│       │   │   ├── components/
│       │   │   │   ├── banner-animation.component.ts
│       │   │   │   ├── contributor-card.component.ts
│       │   │   │   ├── contributor-list.component.ts
│       │   │   │   ├── contributor-navigation.component.ts
│       │   │   │   ├── docs/
│       │   │   │   │   ├── alert.component.ts
│       │   │   │   │   ├── code-example.component.ts
│       │   │   │   │   ├── code-highlight.pipe.ts
│       │   │   │   │   ├── code-tabs.component.ts
│       │   │   │   │   ├── deprecated-chip.component.ts
│       │   │   │   │   ├── inline-markdown.pipe.ts
│       │   │   │   │   ├── install-instructions.component.ts
│       │   │   │   │   ├── markdown-article.component.ts
│       │   │   │   │   ├── markdown-symbol-link.component.ts
│       │   │   │   │   ├── markdown.pipe.ts
│       │   │   │   │   ├── stackblitz.component.ts
│       │   │   │   │   ├── symbol-api.component.ts
│       │   │   │   │   ├── symbol-chip.component.ts
│       │   │   │   │   ├── symbol-code-link.component.ts
│       │   │   │   │   ├── symbol-excerpt-group.component.ts
│       │   │   │   │   ├── symbol-excerpt.component.ts
│       │   │   │   │   ├── symbol-header.component.ts
│       │   │   │   │   ├── symbol-link.component.ts
│       │   │   │   │   ├── symbol-methods.component.ts
│       │   │   │   │   ├── symbol-params.component.ts
│       │   │   │   │   ├── symbol-popover.component.ts
│       │   │   │   │   ├── symbol-returns.component.ts
│       │   │   │   │   ├── symbol-summary.component.ts
│       │   │   │   │   ├── symbol-type-params.component.ts
│       │   │   │   │   ├── symbol-usage-notes.component.ts
│       │   │   │   │   └── symbol.component.ts
│       │   │   │   ├── footer.component.ts
│       │   │   │   ├── guide-footer.component.ts
│       │   │   │   ├── guide-link.component.ts
│       │   │   │   ├── guide-section.component.ts
│       │   │   │   ├── menu.component.ts
│       │   │   │   ├── styled-box.component.ts
│       │   │   │   ├── theme-toggle.component.ts
│       │   │   │   ├── top-banner.component.ts
│       │   │   │   └── version-navigation.component.ts
│       │   │   ├── data/
│       │   │   │   ├── contributors.json
│       │   │   │   └── versionInfo.json
│       │   │   ├── examples/
│       │   │   │   ├── __base/
│       │   │   │   │   ├── index.html
│       │   │   │   │   ├── package.json
│       │   │   │   │   ├── src/
│       │   │   │   │   │   ├── _theme.scss
│       │   │   │   │   │   ├── app.component.ts
│       │   │   │   │   │   ├── app.config.ts
│       │   │   │   │   │   ├── main.ts
│       │   │   │   │   │   └── styles.scss
│       │   │   │   │   ├── stackblitz-empty.yml
│       │   │   │   │   ├── stackblitz.yml
│       │   │   │   │   ├── tsconfig.json
│       │   │   │   │   └── vite.config.js
│       │   │   │   ├── component-store-paginator/
│       │   │   │   │   └── src/
│       │   │   │   │       ├── app/
│       │   │   │   │       │   ├── app.component.ts
│       │   │   │   │       │   ├── app.module.ts
│       │   │   │   │       │   ├── paginator.component.ts
│       │   │   │   │       │   ├── paginator.html
│       │   │   │   │       │   └── paginator.scss
│       │   │   │   │       ├── index.html
│       │   │   │   │       ├── main.ts
│       │   │   │   │       └── styles.scss
│       │   │   │   ├── component-store-paginator-service/
│       │   │   │   │   └── src/
│       │   │   │   │       ├── app/
│       │   │   │   │       │   ├── app.component.ts
│       │   │   │   │       │   ├── app.module.ts
│       │   │   │   │       │   ├── paginator.component.ts
│       │   │   │   │       │   ├── paginator.html
│       │   │   │   │       │   ├── paginator.scss
│       │   │   │   │       │   └── paginator.store.ts
│       │   │   │   │       ├── index.html
│       │   │   │   │       ├── main.ts
│       │   │   │   │       └── styles.scss
│       │   │   │   ├── component-store-slide-toggle/
│       │   │   │   │   └── src/
│       │   │   │   │       ├── app/
│       │   │   │   │       │   ├── app.component.css
│       │   │   │   │       │   ├── app.component.ts
│       │   │   │   │       │   ├── app.module.ts
│       │   │   │   │       │   ├── slide-toggle.component.ts
│       │   │   │   │       │   ├── slide-toggle.html
│       │   │   │   │       │   └── slide-toggle.scss
│       │   │   │   │       ├── index.html
│       │   │   │   │       └── main.ts
│       │   │   │   ├── examples.service.ts
│       │   │   │   ├── ngrx-start/
│       │   │   │   │   ├── index.html
│       │   │   │   │   ├── src/
│       │   │   │   │   │   ├── app.config.ts
│       │   │   │   │   │   ├── app.ts
│       │   │   │   │   │   └── main.ts
│       │   │   │   │   └── stackblitz.yml
│       │   │   │   ├── router-store-selectors/
│       │   │   │   │   └── src/
│       │   │   │   │       ├── app/
│       │   │   │   │       │   ├── app.component.css
│       │   │   │   │       │   ├── app.component.html
│       │   │   │   │       │   ├── app.component.ts
│       │   │   │   │       │   ├── app.config.ts
│       │   │   │   │       │   ├── car/
│       │   │   │   │       │   │   ├── car.actions.ts
│       │   │   │   │       │   │   ├── car.component.css
│       │   │   │   │       │   │   ├── car.component.html
│       │   │   │   │       │   │   ├── car.component.ts
│       │   │   │   │       │   │   ├── car.reducer.ts
│       │   │   │   │       │   │   └── car.selectors.ts
│       │   │   │   │       │   └── router.selectors.ts
│       │   │   │   │       ├── index.html
│       │   │   │   │       └── main.ts
│       │   │   │   ├── signals-01/
│       │   │   │   │   ├── src/
│       │   │   │   │   │   └── app.component.ts
│       │   │   │   │   └── stackblitz.yml
│       │   │   │   ├── store/
│       │   │   │   │   ├── src/
│       │   │   │   │   │   ├── app.component.ts
│       │   │   │   │   │   ├── app.config.ts
│       │   │   │   │   │   ├── counter.actions.ts
│       │   │   │   │   │   ├── counter.reducer.ts
│       │   │   │   │   │   └── my-counter/
│       │   │   │   │   │       ├── my-counter.component.todo.ts
│       │   │   │   │   │       └── my-counter.component.ts
│       │   │   │   │   └── stackblitz.yml
│       │   │   │   ├── store-walkthrough/
│       │   │   │   │   ├── index.html
│       │   │   │   │   ├── src/
│       │   │   │   │   │   ├── app.config.ts
│       │   │   │   │   │   ├── app.ts
│       │   │   │   │   │   ├── book-collection/
│       │   │   │   │   │   │   ├── book-collection.css
│       │   │   │   │   │   │   └── book-collection.ts
│       │   │   │   │   │   ├── book-list/
│       │   │   │   │   │   │   ├── book-list.css
│       │   │   │   │   │   │   ├── book-list.ts
│       │   │   │   │   │   │   ├── book.ts
│       │   │   │   │   │   │   └── books-service.ts
│       │   │   │   │   │   ├── main.ts
│       │   │   │   │   │   └── state/
│       │   │   │   │   │       ├── app.state.ts
│       │   │   │   │   │       ├── books.actions.ts
│       │   │   │   │   │       ├── books.reducer.ts
│       │   │   │   │   │       ├── books.selectors.ts
│       │   │   │   │   │       └── collection.reducer.ts
│       │   │   │   │   └── stackblitz.yml
│       │   │   │   └── testing-store/
│       │   │   │       └── src/
│       │   │   │           ├── .browserslistrc
│       │   │   │           ├── app/
│       │   │   │           │   ├── actions/
│       │   │   │           │   │   ├── auth.actions.ts
│       │   │   │           │   │   └── index.ts
│       │   │   │           │   ├── app.component.html
│       │   │   │           │   ├── app.component.spec.ts
│       │   │   │           │   ├── app.component.ts
│       │   │   │           │   ├── app.module.ts
│       │   │   │           │   ├── book-collection/
│       │   │   │           │   │   ├── book-collection.component.css
│       │   │   │           │   │   ├── book-collection.component.html
│       │   │   │           │   │   └── book-collection.component.ts
│       │   │   │           │   ├── book-list/
│       │   │   │           │   │   ├── book-list.component.css
│       │   │   │           │   │   ├── book-list.component.html
│       │   │   │           │   │   ├── book-list.component.ts
│       │   │   │           │   │   ├── books.model.ts
│       │   │   │           │   │   └── books.service.ts
│       │   │   │           │   ├── integration.spec.ts
│       │   │   │           │   ├── reducers/
│       │   │   │           │   │   ├── auth.reducer.ts
│       │   │   │           │   │   └── index.ts
│       │   │   │           │   ├── state/
│       │   │   │           │   │   ├── app.state.ts
│       │   │   │           │   │   ├── books.actions.ts
│       │   │   │           │   │   ├── books.reducer.spec.ts
│       │   │   │           │   │   ├── books.reducer.ts
│       │   │   │           │   │   ├── books.selectors.spec.ts
│       │   │   │           │   │   ├── books.selectors.ts
│       │   │   │           │   │   ├── collection.reducer.spec.ts
│       │   │   │           │   │   └── collection.reducer.ts
│       │   │   │           │   ├── user-greeting.component.spec.ts
│       │   │   │           │   └── user-greeting.component.ts
│       │   │   │           ├── index.html
│       │   │   │           ├── main-test.ts
│       │   │   │           ├── main.ts
│       │   │   │           └── styles.css
│       │   │   ├── pages/
│       │   │   │   ├── (home).page.ts
│       │   │   │   ├── about.page.ts
│       │   │   │   ├── api/
│       │   │   │   │   ├── [package]/
│       │   │   │   │   │   ├── [subpackage]/
│       │   │   │   │   │   │   └── [symbol].page.ts
│       │   │   │   │   │   └── [symbol].page.ts
│       │   │   │   │   └── index.page.ts
│       │   │   │   ├── guide/
│       │   │   │   │   ├── component/
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   ├── let.md
│       │   │   │   │   │   └── push.md
│       │   │   │   │   ├── component-store/
│       │   │   │   │   │   ├── comparison.md
│       │   │   │   │   │   ├── effect.md
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── initialization.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   ├── lifecycle.md
│       │   │   │   │   │   ├── read.md
│       │   │   │   │   │   ├── usage.md
│       │   │   │   │   │   └── write.md
│       │   │   │   │   ├── data/
│       │   │   │   │   │   ├── architecture-overview.md
│       │   │   │   │   │   ├── architecture.md
│       │   │   │   │   │   ├── entity-actions.md
│       │   │   │   │   │   ├── entity-change-tracker.md
│       │   │   │   │   │   ├── entity-collection-service.md
│       │   │   │   │   │   ├── entity-collection.md
│       │   │   │   │   │   ├── entity-dataservice.md
│       │   │   │   │   │   ├── entity-effects.md
│       │   │   │   │   │   ├── entity-metadata.md
│       │   │   │   │   │   ├── entity-reducer.md
│       │   │   │   │   │   ├── entity-services.md
│       │   │   │   │   │   ├── extension-points.md
│       │   │   │   │   │   ├── faq.md
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   ├── limitations.md
│       │   │   │   │   │   └── save-entities.md
│       │   │   │   │   ├── effects/
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   ├── lifecycle.md
│       │   │   │   │   │   ├── operators.md
│       │   │   │   │   │   └── testing.md
│       │   │   │   │   ├── entity/
│       │   │   │   │   │   ├── adapter.md
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   ├── interfaces.md
│       │   │   │   │   │   └── recipes/
│       │   │   │   │   │       ├── additional-state-properties.md
│       │   │   │   │   │       └── entity-adapter-with-feature-creator.md
│       │   │   │   │   ├── eslint-plugin/
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   └── rules/
│       │   │   │   │   │       ├── avoid-combining-component-store-selectors.md
│       │   │   │   │   │       ├── avoid-combining-selectors.md
│       │   │   │   │   │       ├── avoid-cyclic-effects.md
│       │   │   │   │   │       ├── avoid-dispatching-multiple-actions-sequentially.md
│       │   │   │   │   │       ├── avoid-duplicate-actions-in-reducer.md
│       │   │   │   │   │       ├── avoid-mapping-component-store-selectors.md
│       │   │   │   │   │       ├── avoid-mapping-selectors.md
│       │   │   │   │   │       ├── enforce-type-call.md
│       │   │   │   │   │       ├── good-action-hygiene.md
│       │   │   │   │   │       ├── no-dispatch-in-effects.md
│       │   │   │   │   │       ├── no-effects-in-providers.md
│       │   │   │   │   │       ├── no-multiple-actions-in-effects.md
│       │   │   │   │   │       ├── no-multiple-global-stores.md
│       │   │   │   │   │       ├── no-reducer-in-key-names.md
│       │   │   │   │   │       ├── no-store-subscription.md
│       │   │   │   │   │       ├── no-typed-global-store.md
│       │   │   │   │   │       ├── on-function-explicit-return-type.md
│       │   │   │   │   │       ├── prefer-action-creator-in-dispatch.md
│       │   │   │   │   │       ├── prefer-action-creator-in-of-type.md
│       │   │   │   │   │       ├── prefer-action-creator.md
│       │   │   │   │   │       ├── prefer-concat-latest-from.md
│       │   │   │   │   │       ├── prefer-effect-callback-in-block-statement.md
│       │   │   │   │   │       ├── prefer-inline-action-props.md
│       │   │   │   │   │       ├── prefer-one-generic-in-create-for-feature-selector.md
│       │   │   │   │   │       ├── prefer-protected-state.md
│       │   │   │   │   │       ├── prefer-selector-in-select.md
│       │   │   │   │   │       ├── prefix-selectors-with-select.md
│       │   │   │   │   │       ├── require-super-ondestroy.md
│       │   │   │   │   │       ├── select-style.md
│       │   │   │   │   │       ├── signal-state-no-arrays-at-root-level.md
│       │   │   │   │   │       ├── signal-store-feature-should-use-generic-type.md
│       │   │   │   │   │       ├── updater-explicit-return-type.md
│       │   │   │   │   │       ├── use-consistent-global-store-name.md
│       │   │   │   │   │       ├── use-effects-lifecycle-interface.md
│       │   │   │   │   │       └── with-state-no-arrays-at-root-level.md
│       │   │   │   │   ├── migration/
│       │   │   │   │   │   ├── v10.md
│       │   │   │   │   │   ├── v11.md
│       │   │   │   │   │   ├── v12.md
│       │   │   │   │   │   ├── v13.md
│       │   │   │   │   │   ├── v14.md
│       │   │   │   │   │   ├── v15.md
│       │   │   │   │   │   ├── v16.md
│       │   │   │   │   │   ├── v17.md
│       │   │   │   │   │   ├── v18.md
│       │   │   │   │   │   ├── v19.md
│       │   │   │   │   │   ├── v20.md
│       │   │   │   │   │   ├── v21.md
│       │   │   │   │   │   ├── v4.md
│       │   │   │   │   │   ├── v7.md
│       │   │   │   │   │   ├── v8.md
│       │   │   │   │   │   └── v9.md
│       │   │   │   │   ├── nightlies.md
│       │   │   │   │   ├── operators/
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   └── operators.md
│       │   │   │   │   ├── router-store/
│       │   │   │   │   │   ├── actions.md
│       │   │   │   │   │   ├── configuration.md
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   └── selectors.md
│       │   │   │   │   ├── schematics/
│       │   │   │   │   │   ├── action.md
│       │   │   │   │   │   ├── container.md
│       │   │   │   │   │   ├── data.md
│       │   │   │   │   │   ├── effect.md
│       │   │   │   │   │   ├── entity.md
│       │   │   │   │   │   ├── feature.md
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   ├── reducer.md
│       │   │   │   │   │   ├── selector.md
│       │   │   │   │   │   └── store.md
│       │   │   │   │   ├── signals/
│       │   │   │   │   │   ├── deep-computed.md
│       │   │   │   │   │   ├── faq.md
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   ├── rxjs-integration.md
│       │   │   │   │   │   ├── signal-method.md
│       │   │   │   │   │   ├── signal-state.md
│       │   │   │   │   │   └── signal-store/
│       │   │   │   │   │       ├── custom-store-features.md
│       │   │   │   │   │       ├── custom-store-properties.md
│       │   │   │   │   │       ├── entity-management.md
│       │   │   │   │   │       ├── events.md
│       │   │   │   │   │       ├── index.md
│       │   │   │   │   │       ├── lifecycle-hooks.md
│       │   │   │   │   │       ├── linked-state.md
│       │   │   │   │   │       ├── private-store-members.md
│       │   │   │   │   │       ├── state-tracking.md
│       │   │   │   │   │       └── testing.md
│       │   │   │   │   ├── store/
│       │   │   │   │   │   ├── action-groups.md
│       │   │   │   │   │   ├── actions.md
│       │   │   │   │   │   ├── architecture.md
│       │   │   │   │   │   ├── configuration/
│       │   │   │   │   │   │   └── runtime-checks.md
│       │   │   │   │   │   ├── feature-creators.md
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   ├── metareducers.md
│       │   │   │   │   │   ├── recipes/
│       │   │   │   │   │   │   ├── downgrade.md
│       │   │   │   │   │   │   └── injecting.md
│       │   │   │   │   │   ├── reducers.md
│       │   │   │   │   │   ├── selectors.md
│       │   │   │   │   │   ├── testing.md
│       │   │   │   │   │   ├── walkthrough.md
│       │   │   │   │   │   └── why.md
│       │   │   │   │   └── store-devtools/
│       │   │   │   │       ├── config.md
│       │   │   │   │       ├── index.md
│       │   │   │   │       ├── install.md
│       │   │   │   │       └── recipes/
│       │   │   │   │           └── exclude.md
│       │   │   │   ├── guide.page.ts
│       │   │   │   └── workshops.page.ts
│       │   │   ├── reference/
│       │   │   │   └── reference.service.ts
│       │   │   └── services/
│       │   │       ├── contributors.service.ts
│       │   │       ├── guide-menu.service.ts
│       │   │       ├── markdown.service.ts
│       │   │       ├── theme.service.ts
│       │   │       └── versionInfo.service.ts
│       │   ├── main.server.ts
│       │   ├── main.ts
│       │   ├── shared/
│       │   │   ├── api-report.models.ts
│       │   │   ├── index.ts
│       │   │   └── ngrx-shiki-theme.ts
│       │   ├── styles.scss
│       │   ├── test-setup.ts
│       │   ├── tools/
│       │   │   ├── api-extractor.json
│       │   │   ├── extract-docs-content.ts
│       │   │   ├── prepare-examples.ts
│       │   │   └── vite-ngrx-stackblitz.plugin.ts
│       │   └── vite-env.d.ts
│       ├── tsconfig.app.json
│       ├── tsconfig.editor.json
│       ├── tsconfig.json
│       ├── tsconfig.spec.json
│       ├── tsconfig.tools.json
│       └── vite.config.ts
├── setup-jest.ts
├── tsconfig.docs.json
├── tsconfig.json
└── tsdoc-metadata.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .agents/skills/writing-docs/SKILL.md
================================================
---
name: writing-docs
description: Doc conventions (impersonal style, formatting, Vitest in examples, structure, linking). Use when writing, editing, or reviewing guides, tutorials, or READMEs.
---

# Writing Documentation

Apply when writing, editing, or reviewing docs.

## Voice and style

- **Impersonal:** No "you", "your", or second-person imperatives.
- **Statements over imperatives:** Prefer "Tests should not spy" over "Avoid spying"; passive or descriptive phrasing.
- **Titles:** Gerunds, not imperatives (e.g. "Testing the store" not "Test the store").
- **Tone:** Direct and minimal; every sentence adds information.

## Formatting

- **Dashes:** Space-hyphen-space (`-`), not em dash (`—`).
- **Paragraphs:** Merge single-sentence paragraphs when it helps readability.

## Code examples

- **Examples:** Simple, self-contained (e.g. Counter, Books). Short snippets; shorten or link out long async flows unless the topic is async.

## Structure and navigation

- **Section titles:** Accurate and scannable.
- **Links over repetition:** Link to other guides; explain only what is specific to this page.


================================================
FILE: .devcontainer/devcontainer.json
================================================
// For format details, see https://aka.ms/devcontainer.json.
{
  "name": "Platform",
  "image": "mcr.microsoft.com/devcontainers/typescript-node:22-bullseye",

  // Features to add to the dev container. More info: https://containers.dev/features.
  "features": {
    "ghcr.io/devcontainers/features/github-cli:1": {},
    "ghcr.io/devcontainers/features/sshd:1": {}
  },

  // Use 'forwardPorts' to make a list of ports inside the container available locally.
  // "forwardPorts": [],

  // Use 'postCreateCommand' to run commands after the container is created.
  "postCreateCommand": "npm i pnpm -g && pnpm install",
  "waitFor": "postCreateCommand",
  "onCreateCommand": "sudo cp .devcontainer/welcome-message.txt /usr/local/etc/vscode-dev-containers/first-run-notice.txt",

  // Configure tool-specific properties.
  "customizations": {
    // Configure properties specific to VS Code.
    "vscode": {
      "settings": {
        "[typescript]": {
          "editor.defaultFormatter": "esbenp.prettier-vscode",
          "editor.formatOnSave": true
        },
        "[md]": {
          "editor.defaultFormatter": "esbenp.prettier-vscode",
          "editor.formatOnSave": true
        },
        "[json]": {
          "editor.defaultFormatter": "esbenp.prettier-vscode",
          "editor.formatOnSave": true
        }
      },
      // Add the IDs of extensions you want installed when the container is created.
      "extensions": ["esbenp.prettier-vscode", "Angular.ng-template"]
    }
  }
}


================================================
FILE: .devcontainer/welcome-message.txt
================================================
👋 Welcome to "Ngrx Platform" in GitHub Codespaces!

🛠️  Your environment is fully setup with all the required software.

🔍 To explore VS Code to its fullest, search using the Command Palette (Cmd/Ctrl + Shift + P or F1).

📝 Edit away, run your app as usual, and we'll automatically make it available for you to access.



================================================
FILE: .dockerignore
================================================
node_modules
npm-debug.log
Dockerfile*
docker-compose*
.dockerignore
.git
.gitignore


================================================
FILE: .editorconfig
================================================
# Editor configuration, see https://editorconfig.org/
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
max_line_length = off
trim_trailing_whitespace = false


================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms

github: [ngrx, brandonroberts] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: ngrx
ko_fi: timdeschryver # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
custom: https://ko-fi.com/markostanimirovic # Replace with a single custom sponsorship URL


================================================
FILE: .github/ISSUE_TEMPLATE/bug-report.yml
================================================
name: Bug Report
description: Report a bug or regression in functionality

body:
  - type: markdown
    attributes:
      value: |
        ❤️ ngrx? Please consider sponsoring us: 👉  [sponsor](https://github.com/sponsors/ngrx)
        Please search GitHub for a similar issue or PR before submitting a new issue.
        If you need real-time help, join us on [Discord](https://discord.com/invite/ngrx).

  - type: dropdown
    id: affected-packages
    attributes:
      label: Which @ngrx/* package(s) are the source of the bug?
      options:
        - component-store
        - component
        - data
        - effects
        - entity
        - eslint-plugin
        - operators
        - router-store
        - schematics
        - signals
        - store-devtools
        - store
      multiple: true
    validations:
      required: true

  - type: textarea
    id: reproduction
    attributes:
      label: Minimal reproduction of the bug/regression with instructions
      description: Use the [NgRx Global Store StackBlitz example](https://stackblitz.com/edit/ngrx-seed) or [NgRx Signal Store StackBlitz example](https://stackblitz.com/github/ngrx/signal-store-starter?file=src%2Fmain.ts) to create a reproduction.
      placeholder: If the bug/regression does not include a reproduction via StackBlitz or GitHub repo, your issue may be closed without resolution.
    validations:
      required: true

  - type: textarea
    id: expected_behavior
    attributes:
      label: Expected behavior
      description: Describe what the expected behavior would be.
    validations:
      required: true

  - type: textarea
    id: version
    attributes:
      label: Versions of NgRx, Angular, Node, affected browser(s) and operating system(s)
      placeholder: |
        NgRx:
        Angular:
        Node:
        Browser(s):
        Operating system(s):
    validations:
      required: true

  - type: textarea
    id: other
    attributes:
      label: Other information

  - type: checkboxes
    id: assistance
    attributes:
      label: I would be willing to submit a PR to fix this issue
      description: Assistance is provided if you need help submitting a pull request
      options:
        - label: 'Yes'
        - label: 'No'


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: Support Request
    url: https://github.com/ngrx/platform/blob/main/CONTRIBUTING.md#questions-and-requests-for-support
    about: Questions and requests for support


================================================
FILE: .github/ISSUE_TEMPLATE/documentation-report.yml
================================================
name: Documentation Report
description: Report missing or inaccurate documentation
labels: ['Comp: Docs']

body:
  - type: markdown
    attributes:
      value: |
        ❤️ ngrx? Please consider sponsoring us: 👉  [sponsor](https://github.com/sponsors/ngrx)
        Please search GitHub for a similar issue or PR before submitting a new issue.
        If you need real-time help, join us on [Discord](https://discord.com/invite/ngrx).

  - type: textarea
    id: information
    attributes:
      label: Information
    validations:
      required: true

  - type: input
    id: url
    attributes:
      label: Documentation page
      description: Add the documentation URL

  - type: checkboxes
    id: assistance
    attributes:
      label: I would be willing to submit a PR to fix this issue
      description: Assistance is provided if you need help submitting a pull request
      options:
        - label: 'Yes'
        - label: 'No'


================================================
FILE: .github/ISSUE_TEMPLATE/feature-request.yml
================================================
name: Feature Request
description: Submit a Request For Consideration

body:
  - type: markdown
    attributes:
      value: |
        ❤️ ngrx? Please consider sponsoring us: 👉  [sponsor](https://github.com/sponsors/ngrx)
        Please search GitHub for a similar issue or PR before submitting a new issue.
        If you need real-time help, join us on [Discord](https://discord.com/invite/ngrx).

  - type: dropdown
    id: affected-packages
    attributes:
      label: Which @ngrx/* package(s) are relevant/related to the feature request?
      options:
        - component-store
        - component
        - data
        - effects
        - entity
        - eslint-plugin
        - operators
        - router-store
        - schematics
        - signals
        - store-devtools
        - store
      multiple: true
    validations:
      required: true

  - type: textarea
    id: information
    attributes:
      label: Information
      description: Tell us what you want to be added to NgRx
    validations:
      required: true

  - type: textarea
    id: alternatives
    attributes:
      label: Describe any alternatives/workarounds you're currently using

  - type: checkboxes
    id: assistance
    attributes:
      label: I would be willing to submit a PR to fix this issue
      description: Assistance is provided if you need help submitting a pull request
      options:
        - label: 'Yes'
        - label: 'No'


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
## PR Checklist

Please check if your PR fulfills the following requirements:

- [ ] The commit message follows our guidelines: https://github.com/ngrx/platform/blob/main/CONTRIBUTING.md#commit
- [ ] Tests for the changes have been added (for bug fixes / features)
- [ ] Documentation has been added / updated (for bug fixes / features)

## PR Type

What kind of change does this PR introduce?

<!-- Please check the one that applies to this PR using "x". -->

```
[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Documentation content changes
[ ] Other... Please describe:
```

## What is the current behavior?

<!-- Please describe the current behavior that you are modifying, or link to a relevant issue. -->

Closes #

## What is the new behavior?

## Does this PR introduce a breaking change?

```
[ ] Yes
[ ] No
```

<!-- If this PR contains a breaking change, please describe the impact and migration path for existing applications below. -->

## Other information


================================================
FILE: .github/workflows/ci.yml
================================================
name: CI

on:
  pull_request: {}

permissions:
  actions: read
  contents: read

concurrency:
  group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
  cancel-in-progress: true

jobs:
  install:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - run: npm install --global corepack@0.31.0
      - run: corepack enable
      - uses: actions/setup-node@v4
        with:
          node-version-file: .node-version
          cache: 'pnpm'
          cache-dependency-path: '**/pnpm-lock.yaml'
      - run: pnpm install --frozen-lockfile --prefer-offline

  lint-affected:
    runs-on: ubuntu-latest
    needs: install
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - run: npm install --global corepack@0.31.0
      - run: corepack enable
      - uses: actions/setup-node@v4
        with:
          node-version-file: .node-version
          cache: 'pnpm'
          cache-dependency-path: '**/pnpm-lock.yaml'
      - run: pnpm install --frozen-lockfile --prefer-offline
      - uses: nrwl/nx-set-shas@v4
      - run: pnpm exec nx affected -t lint

  test-affected:
    runs-on: ubuntu-latest
    needs: install
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - run: npm install --global corepack@0.31.0
      - run: corepack enable
      - uses: actions/setup-node@v4
        with:
          node-version-file: .node-version
          cache: 'pnpm'
          cache-dependency-path: '**/pnpm-lock.yaml'
      - run: pnpm install --frozen-lockfile --prefer-offline
      - uses: nrwl/nx-set-shas@v4
      - run: pnpm exec nx affected -t test --skip-nx-cache --parallel=3

  e2e-affected:
    runs-on: ubuntu-latest
    needs: install
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - run: npm install --global corepack@0.31.0
      - run: corepack enable
      - uses: actions/setup-node@v4
        with:
          node-version-file: .node-version
          cache: 'pnpm'
          cache-dependency-path: '**/pnpm-lock.yaml'
      - run: pnpm install --frozen-lockfile --prefer-offline
      - run: pnpm exec cypress install
      - uses: nrwl/nx-set-shas@v4
      - run: pnpm exec nx affected -t e2e --exclude=www --parallel=1

  build-affected:
    runs-on: ubuntu-latest
    needs: install
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - run: npm install --global corepack@0.31.0
      - run: corepack enable
      - uses: actions/setup-node@v4
        with:
          node-version-file: .node-version
          cache: 'pnpm'
          cache-dependency-path: '**/pnpm-lock.yaml'
      - run: pnpm install --frozen-lockfile --prefer-offline
      - uses: nrwl/nx-set-shas@v4
      - run: pnpm exec nx affected -t build --exclude=www --skip-nx-cache --parallel=3

  schematics-core-check:
    runs-on: ubuntu-latest
    needs: install
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - run: npm install --global corepack@0.31.0
      - run: corepack enable
      - uses: actions/setup-node@v4
        with:
          node-version-file: .node-version
          cache: 'pnpm'
          cache-dependency-path: '**/pnpm-lock.yaml'
      - run: pnpm install --frozen-lockfile --prefer-offline
      - uses: nrwl/nx-set-shas@v4
      - run: pnpm run copy:schematics
      - run: pnpm run schematics:check


================================================
FILE: .github/workflows/main.yml
================================================
name: main

on:
  push:
    branches:
      - main

permissions:
  actions: read
  contents: read

concurrency:
  group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
  cancel-in-progress: true

jobs:
  install:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - run: npm install --global corepack@0.31.0
      - run: corepack enable
      - uses: actions/setup-node@v4
        with:
          node-version-file: .node-version
          cache: 'pnpm'
          cache-dependency-path: '**/pnpm-lock.yaml'
      - run: pnpm install --frozen-lockfile --prefer-offline

  lint:
    runs-on: ubuntu-latest
    needs: install
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - run: npm install --global corepack@0.31.0
      - run: corepack enable
      - uses: actions/setup-node@v4
        with:
          node-version-file: .node-version
          cache: 'pnpm'
          cache-dependency-path: '**/pnpm-lock.yaml'
      - run: pnpm install --frozen-lockfile --prefer-offline
      - uses: nrwl/nx-set-shas@v4
      - run: pnpm exec nx run-many -t lint

  test:
    runs-on: ubuntu-latest
    needs: install
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - run: npm install --global corepack@0.31.0
      - run: corepack enable
      - uses: actions/setup-node@v4
        with:
          node-version-file: .node-version
          cache: 'pnpm'
          cache-dependency-path: '**/pnpm-lock.yaml'
      - run: pnpm install --frozen-lockfile --prefer-offline
      - uses: nrwl/nx-set-shas@v4
      - run: pnpm exec nx run-many -t test --skip-nx-cache --parallel=3

  e2e:
    runs-on: ubuntu-latest
    needs: install
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - run: npm install --global corepack@0.31.0
      - run: corepack enable
      - uses: actions/setup-node@v4
        with:
          node-version-file: .node-version
          cache: 'pnpm'
          cache-dependency-path: '**/pnpm-lock.yaml'
      - run: pnpm install --frozen-lockfile --prefer-offline
      - run: pnpm exec cypress install
      - uses: nrwl/nx-set-shas@v4
      - run: pnpm exec nx run-many -t e2e --exclude=www --parallel=1

  schematics-core-check:
    runs-on: ubuntu-latest
    needs: install
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - run: npm install --global corepack@0.31.0
      - run: corepack enable
      - uses: actions/setup-node@v4
        with:
          node-version-file: .node-version
          cache: 'pnpm'
          cache-dependency-path: '**/pnpm-lock.yaml'
      - run: pnpm install --frozen-lockfile --prefer-offline
      - uses: nrwl/nx-set-shas@v4
      - run: pnpm run copy:schematics
      - run: pnpm run schematics:check

  build:
    runs-on: ubuntu-latest
    needs: install
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - run: npm install --global corepack@0.31.0
      - run: corepack enable
      - uses: actions/setup-node@v4
        with:
          node-version-file: .node-version
          cache: 'pnpm'
          cache-dependency-path: '**/pnpm-lock.yaml'
      - run: pnpm install --frozen-lockfile --prefer-offline
      - uses: nrwl/nx-set-shas@v4
      - run: pnpm exec nx run-many -t build --exclude=www --skip-nx-cache --parallel=3
      - uses: actions/upload-artifact@v4
        with:
          name: artifact-modules
          path: dist/modules

  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - run: npm install --global corepack@0.31.0
      - run: corepack enable
      - uses: actions/setup-node@v4
        with:
          node-version-file: .node-version
          cache: 'pnpm'
          cache-dependency-path: '**/pnpm-lock.yaml'
      - uses: actions/download-artifact@v4
        with:
          name: artifact-modules
          path: dist
      # TODO: Add deployment steps here
      # - run: pnpm run deploy:builds


================================================
FILE: .github/workflows/release.yml
================================================
name: Release

permissions:
  contents: read

on:
  workflow_dispatch:
    inputs:
      release_version:
        description: 'Version'
        required: true
      release_tag:
        description: 'Tag'
        required: true
        default: 'latest'
        type: choice
        options:
          - latest
          - next
      dry_run:
        description: 'Dry Run'
        required: true
        default: true
        type: boolean

jobs:
  version:
    name: Version and Publish
    runs-on: ubuntu-latest
    permissions:
      contents: write # to be able to publish a GitHub release
      id-token: write # provenance
    steps:
      - name: Generate bot app token
        id: generate_token
        uses: actions/create-github-app-token@v1
        with:
          app-id: ${{ secrets.NGRX_APP_ID }}
          private-key: ${{ secrets.NGRX_APP_PRIVATE_KEY }}
      - name: Checkout
        uses: actions/checkout@v4
        with:
          token: ${{ steps.generate_token.outputs.token }}
          fetch-depth: 0
          persist-credentials: false
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version-file: .node-version
      - run: npm install --global corepack@0.31.0
      - run: corepack enable
      - run: pnpm --version
      - name: Install dependencies
        uses: actions/setup-node@v3
        with:
          cache: 'pnpm'
          cache-dependency-path: '**/pnpm-lock.yaml'
      - name: Install
        run: pnpm install --frozen-lockfile --prefer-offline
      - name: Update Versions
        run: pnpm run update:versions ${{ inputs.release_version }}
      - name: Tag Release
        env:
          GIT_AUTHOR_EMAIL: "${{ secrets.RELEASE_EMAIL }}"
          GIT_COMMITTER_EMAIL: "${{ secrets.RELEASE_EMAIL }}"
          GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
        run: |
          git config --global user.email ${{ secrets.RELEASE_EMAIL }}
          git config --global user.name "${{ secrets.RELEASE_NAME }}"
          git status
          git commit -am "chore: release ${{ inputs.release_version }}"
          git tag ${{ inputs.release_version }}
          git push https://x-access-token:${{ steps.generate_token.outputs.token }}@github.com/ngrx/platform.git --follow-tags $(${{ inputs.dry_run == true }} && echo '--dry-run' || echo '')
      - name: Build Packages
        run: pnpm run build --exclude=standalone-app,example-app,www --skip-nx-cache
      - name: Release
        env:
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
          DRY_RUN: ${{ inputs.dry_run }}
          RELEASE_TAG: ${{ inputs.release_tag }}
          RELEASE_VERSION: ${{ inputs.release_version }}
        run: npx tsx ./build/publish-release.ts


================================================
FILE: .gitignore
================================================
/.angular/cache
# Logs
logs
*.log
.nyc
.nyc_output
.history

# Runtime data
pids
*.pid
*.seed

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Users Environment Variables
.lock-wscript

# OS generated files #
.DS_Store
ehthumbs.db
Icon?
Thumbs.db

# Node Files #
node_modules
/bower_components

# Typing TSD #
/src/typings/tsd/
/typings/
/tsd_typings/

# Dist #
/dist
/public/__build__/
/src/*/__build__/
__build__/**
.webpack.json

#doc
/doc

# IDE #
.idea/
*.iml
*.swp
!/typings/custom.d.ts
.vscode/
.vim/

# Build Artifacts #
release
dist
/node_modules/
lerna-debug.log
/lib/
ngfactory
output
*.ngsummary.json
*.ngfactory.ts
tmp

example-dist/

*.tgz
modules/*/schematics-core/testing
!modules/schematics-core/testing

.angular
migrations.json
.env
.nx/**

vite.config.*.timestamp*
vitest.config.*.timestamp*

# www reference files
projects/www/src/app/reference/**/*.json
projects/www/src/app/examples/**/*.txt
.nx/cache
.nx/workspace-data
.cursor/rules/nx-rules.mdc
.github/instructions/nx.instructions.md


================================================
FILE: .husky/pre-commit
================================================
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx lint-staged


================================================
FILE: .node-version
================================================
22.16.0


================================================
FILE: .nxignore
================================================
*.spec.ts
**/testing/**
modules/BUILD
modules/license-banner.txt
modules/README.md

================================================
FILE: .prettierignore
================================================
/dist
/modules/schematics/src/*/files/*
/modules/**/schematics/**/files/*
/tmp
package-lock.json
package.json
yarn.lock

/.nx/cache
/.nx/workspace-data


================================================
FILE: CHANGELOG.md
================================================
<a name="21.0.1"></a>

## [21.0.1](https://github.com/ngrx/platform/compare/21.0.0...21.0.1) (2025-12-22)

### Bug Fixes

- **schematics:** restore CommonJS module output for Node.js ([#5051](https://github.com/ngrx/platform/issues/5051)) ([7819972](https://github.com/ngrx/platform/commit/7819972)), closes [#5050](https://github.com/ngrx/platform/issues/5050)

<a name="21.0.0"></a>

# [21.0.0](https://github.com/ngrx/platform/compare/21.0.0-rc.0...21.0.0) (2025-12-18)

<a name="21.0.0-rc.0"></a>

# [21.0.0-rc.0](https://github.com/ngrx/platform/compare/21.0.0-beta.0...21.0.0-rc.0) (2025-12-16)

### Bug Fixes

- **eslint-plugin:** add type-checked configs to legacy config ([#5038](https://github.com/ngrx/platform/issues/5038)) ([faf6491](https://github.com/ngrx/platform/commit/faf6491))

### Features

- **eslint-plugin:** extend NonRecord type checks in state rules ([#5045](https://github.com/ngrx/platform/issues/5045)) ([bab4d12](https://github.com/ngrx/platform/commit/bab4d12)), closes [#4615](https://github.com/ngrx/platform/issues/4615)

<a name="21.0.0-beta.0"></a>

# [21.0.0-beta.0](https://github.com/ngrx/platform/compare/20.0.1...21.0.0-beta.0) (2025-12-04)

### Bug Fixes

- **eslint-plugin:** only lint NgRx selectors in prefix-selectors-with-select ([#4995](https://github.com/ngrx/platform/issues/4995)) ([568dbe3](https://github.com/ngrx/platform/commit/568dbe3)), closes [#4447](https://github.com/ngrx/platform/issues/4447)
- **signals:** drop `assertInInjectionContext` in production ([#4954](https://github.com/ngrx/platform/issues/4954)) ([37e6fa1](https://github.com/ngrx/platform/commit/37e6fa1))
- **signals:** drop `assertUniqueStoreMembers` in production ([#4953](https://github.com/ngrx/platform/issues/4953)) ([b4edd95](https://github.com/ngrx/platform/commit/b4edd95))
- **signals:** remove symbol descriptions from prod bundle ([#4979](https://github.com/ngrx/platform/issues/4979)) ([05cfb03](https://github.com/ngrx/platform/commit/05cfb03))

### Features

- **eslint-plugin:** enhance prefix-selectors-with-select to handle destructuring ([#4926](https://github.com/ngrx/platform/issues/4926)) ([bc89544](https://github.com/ngrx/platform/commit/bc89544))
- **eslint-plugin:** split required typechecking configs ([#5002](https://github.com/ngrx/platform/issues/5002)) ([c1f4fc5](https://github.com/ngrx/platform/commit/c1f4fc5))
- **signals:** add ability to provide SignalStore at the platform level ([#4964](https://github.com/ngrx/platform/issues/4964)) ([835014b](https://github.com/ngrx/platform/commit/835014b)), closes [#4963](https://github.com/ngrx/platform/issues/4963)
- **signals:** add EntityChanges type to public API ([#5014](https://github.com/ngrx/platform/issues/5014)) ([76e4dc6](https://github.com/ngrx/platform/commit/76e4dc6)), closes [#5012](https://github.com/ngrx/platform/issues/5012)
- **signals:** add migration schematic to rename withEffects to withEventHandlers ([#5032](https://github.com/ngrx/platform/issues/5032)) ([d6a2c56](https://github.com/ngrx/platform/commit/d6a2c56)), closes [#5010](https://github.com/ngrx/platform/issues/5010)
- **signals:** allow computation fn to be provided to `signalMethod` and `rxMethod` ([#4996](https://github.com/ngrx/platform/issues/4996)) ([eea69d7](https://github.com/ngrx/platform/commit/eea69d7)), closes [#4986](https://github.com/ngrx/platform/issues/4986)
- **signals:** allow returning an array of observables from withEffects ([#5008](https://github.com/ngrx/platform/issues/5008)) ([8994d92](https://github.com/ngrx/platform/commit/8994d92))
- **signals:** provide Dispatcher and Events at the platform level ([#4978](https://github.com/ngrx/platform/issues/4978)) ([0722ddb](https://github.com/ngrx/platform/commit/0722ddb))
- **signals:** provide support for scoped events ([#4997](https://github.com/ngrx/platform/issues/4997)) ([c719d19](https://github.com/ngrx/platform/commit/c719d19)), closes [#4776](https://github.com/ngrx/platform/issues/4776)
- **signals:** rename withEffects to withEventHandlers ([#5009](https://github.com/ngrx/platform/issues/5009)) ([3aa64ae](https://github.com/ngrx/platform/commit/3aa64ae))

### BREAKING CHANGES

- **signals:** The withEffects feature from @ngrx/signals/events plugin is renamed to withEventHandlers.

BEFORE:

```ts
import { withEffects } from '@ngrx/signals/events';

export const CounterStore = signalStore(
  withState({ count: 0 }),
  withEffects((store, events = inject(Events)) => ({
    logCount$: events
      .on(increment)
      .pipe(tap(() => console.log(store.count()))),
  }))
);
```

AFTER:

```ts
import { withEventHandlers } from '@ngrx/signals/events';

export const CounterStore = signalStore(
  withState({ count: 0 }),
  withEventHandlers((store, events = inject(Events)) => ({
    logCount$: events
      .on(increment)
      .pipe(tap(() => console.log(store.count()))),
  }))
);
```

<a name="20.1.0"></a>

# [20.1.0](https://github.com/ngrx/platform/compare/20.0.1...20.1.0) (2025-10-22)

### Bug Fixes

- **signals:** drop `assertInInjectionContext` in production ([#4954](https://github.com/ngrx/platform/issues/4954)) ([37e6fa1](https://github.com/ngrx/platform/commit/37e6fa1))
- **signals:** drop `assertUniqueStoreMembers` in production ([#4953](https://github.com/ngrx/platform/issues/4953)) ([b4edd95](https://github.com/ngrx/platform/commit/b4edd95))

### Features

- **eslint-plugin:** enhance prefix-selectors-with-select to handle destructuring ([#4926](https://github.com/ngrx/platform/issues/4926)) ([bc89544](https://github.com/ngrx/platform/commit/bc89544))
- **signals:** add ability to provide SignalStore at the platform level ([#4964](https://github.com/ngrx/platform/issues/4964)) ([835014b](https://github.com/ngrx/platform/commit/835014b)), closes [#4963](https://github.com/ngrx/platform/issues/4963)
- **signals:** provide Dispatcher and Events at the platform level ([#4978](https://github.com/ngrx/platform/issues/4978)) ([0722ddb](https://github.com/ngrx/platform/commit/0722ddb))

<a name="20.0.1"></a>

## [20.0.1](https://github.com/ngrx/platform/compare/20.0.0...20.0.1) (2025-08-25)

### Bug Fixes

- **component:** use setTimeout instead of requestAnimationFrame in SSR mode ([#4912](https://github.com/ngrx/platform/issues/4912)) ([3ae98d7](https://github.com/ngrx/platform/commit/3ae98d7)), closes [#4902](https://github.com/ngrx/platform/issues/4902)
- **eslint-plugin:** report on-function-explicit-return-type for call expressions ([#4904](https://github.com/ngrx/platform/issues/4904)) ([c8e1352](https://github.com/ngrx/platform/commit/c8e1352)), closes [#4901](https://github.com/ngrx/platform/issues/4901)
- **signals:** add unique member check to `withLinkedState` ([#4932](https://github.com/ngrx/platform/issues/4932)) ([c5a5a27](https://github.com/ngrx/platform/commit/c5a5a27)), closes [#4931](https://github.com/ngrx/platform/issues/4931)
- **www:** Make Guide Pages Responsive ([#4900](https://github.com/ngrx/platform/issues/4900)) ([4c921e3](https://github.com/ngrx/platform/commit/4c921e3))
- **www:** use the stackblitz examples ([#4895](https://github.com/ngrx/platform/issues/4895)) ([e7eabd4](https://github.com/ngrx/platform/commit/e7eabd4))

<a name="20.0.0"></a>

# [20.0.0](https://github.com/ngrx/platform/compare/20.0.0-rc.0...20.0.0) (2025-07-28)

### Bug Fixes

- **www:** Make API Pages Responsive ([#4885](https://github.com/ngrx/platform/issues/4885)) ([7f09858](https://github.com/ngrx/platform/commit/7f09858)), closes [#4816](https://github.com/ngrx/platform/issues/4816)

<a name="20.0.0-rc.0"></a>

# [20.0.0-rc.0](https://github.com/ngrx/platform/compare/20.0.0-beta.0...20.0.0-rc.0) (2025-07-14)

### Bug Fixes

- **signals:** allow generic template literals as state keys ([#4871](https://github.com/ngrx/platform/issues/4871)) ([9fefc77](https://github.com/ngrx/platform/commit/9fefc77)), closes [#4638](https://github.com/ngrx/platform/issues/4638)
- **signals:** allow lazy initialization of DeepSignal ([#4866](https://github.com/ngrx/platform/issues/4866)) ([cb1a2ba](https://github.com/ngrx/platform/commit/cb1a2ba)), closes [#4749](https://github.com/ngrx/platform/issues/4749)
- **signals:** do not create deep signals for empty objects and unknown records with symbol keys ([#4880](https://github.com/ngrx/platform/issues/4880)) ([bae9f18](https://github.com/ngrx/platform/commit/bae9f18))
- **signals:** remove internal Signal type ([#4867](https://github.com/ngrx/platform/issues/4867)) ([4a4a5db](https://github.com/ngrx/platform/commit/4a4a5db))

### Features

- **operators:** add migration for deprecated tapResponse signature ([#4858](https://github.com/ngrx/platform/issues/4858)) ([551ceb4](https://github.com/ngrx/platform/commit/551ceb4))
- **signals:** add `withLinkedState()` ([#4818](https://github.com/ngrx/platform/issues/4818)) ([4bb7fdd](https://github.com/ngrx/platform/commit/4bb7fdd))
- **signals:** allow access to methods in `withComputed` ([#4864](https://github.com/ngrx/platform/issues/4864)) ([e11c23f](https://github.com/ngrx/platform/commit/e11c23f)), closes [#4846](https://github.com/ngrx/platform/issues/4846)
- **signals:** disallow user-defined signals in withState and signalState ([#4879](https://github.com/ngrx/platform/issues/4879)) ([306ed5a](https://github.com/ngrx/platform/commit/306ed5a))

<a name="20.0.0-beta.0"></a>

# [20.0.0-beta.0](https://github.com/ngrx/platform/compare/19.2.1...20.0.0-beta.0) (2025-06-30)

### Bug Fixes

- **signals:** handle events in the dispatched order ([#4857](https://github.com/ngrx/platform/issues/4857)) ([fa50f43](https://github.com/ngrx/platform/commit/fa50f43)), closes [#4852](https://github.com/ngrx/platform/issues/4852)
- **www:** Add padding to code snippets ([#4812](https://github.com/ngrx/platform/issues/4812)) ([9e942db](https://github.com/ngrx/platform/commit/9e942db)), closes [#4811](https://github.com/ngrx/platform/issues/4811)
- **www:** add styles for video ([#4851](https://github.com/ngrx/platform/issues/4851)) ([85680a0](https://github.com/ngrx/platform/commit/85680a0))
- **www:** fix color-scheme and combine duplicate html declarations ([#4855](https://github.com/ngrx/platform/issues/4855)) ([f9b2565](https://github.com/ngrx/platform/commit/f9b2565))
- **www:** remove duplicate scrollbar ([#4829](https://github.com/ngrx/platform/issues/4829)) ([f0f1f2a](https://github.com/ngrx/platform/commit/f0f1f2a)), closes [#4828](https://github.com/ngrx/platform/issues/4828)
- **www:** remove horizontal scrollbar ([#4808](https://github.com/ngrx/platform/issues/4808)) ([2639f67](https://github.com/ngrx/platform/commit/2639f67))

### build

- update to Angular 20 ([#4778](https://github.com/ngrx/platform/issues/4778)) ([8a4ecd9](https://github.com/ngrx/platform/commit/8a4ecd9))

### Features

- **effects:** remove act operator ([#4839](https://github.com/ngrx/platform/issues/4839)) ([9a83f1d](https://github.com/ngrx/platform/commit/9a83f1d))
- **entity:** strengthen typing of getInitialState ([#4819](https://github.com/ngrx/platform/issues/4819)) ([bfb21c2](https://github.com/ngrx/platform/commit/bfb21c2)), closes [#4422](https://github.com/ngrx/platform/issues/4422)
- **eslint-plugin:** add new rule enforce type call ([#4809](https://github.com/ngrx/platform/issues/4809)) ([9b82e67](https://github.com/ngrx/platform/commit/9b82e67)), closes [#4797](https://github.com/ngrx/platform/issues/4797)
- **operators:** deprecate `tapResponse` signature with a sequence of callbacks ([#4844](https://github.com/ngrx/platform/issues/4844)) ([9a16813](https://github.com/ngrx/platform/commit/9a16813)), closes [#4840](https://github.com/ngrx/platform/issues/4840)
- **signals:** allow user-defined signals in `withState` and `signalState` by splitting `STATE_SOURCE` ([#4795](https://github.com/ngrx/platform/issues/4795)) ([521a2a6](https://github.com/ngrx/platform/commit/521a2a6))
- **signals:** enhance `withComputed` to accept computation functions ([#4822](https://github.com/ngrx/platform/issues/4822)) ([c8b15dd](https://github.com/ngrx/platform/commit/c8b15dd)), closes [#4782](https://github.com/ngrx/platform/issues/4782)
- **www:** add sidebar for mobile view and make home page responsive ([#4813](https://github.com/ngrx/platform/issues/4813)) ([4397bfb](https://github.com/ngrx/platform/commit/4397bfb)), closes [#4807](https://github.com/ngrx/platform/issues/4807)

### BREAKING CHANGES

- **signals:** The internal `STATE_SOURCE` is no longer represented as a single `WritableSignal` holding the entire state object. Instead, each top-level state property becomes its own `WritableSignal` or remains as-is if a `WritableSignal` is provided as a state property.

BEFORE:

1. The initial state object reference is preserved:

const initialState = { ngrx: 'rocks' };

// signalState:
const state = signalState(initialState);
state() === initialState; // true

// withState:
const Store = signalStore(withState(initialState));
const store = new Store();
getState(store) === initialState; // true

2. Top-level `WritableSignal`s are wrapped with `Signal`s:

// signalState:
const state = signalState({ ngrx: signal('rocks') });
state.ngrx // type: Signal<WritableSignal<string>>

// withState:
const Store = signalStore(withState({ ngrx: signal('rocks') }));
const store = new Store();
store.ngrx // type: Signal<WritableSignal<string>>

3. Root state properties can be added dynamically:

// signalState:
const state = signalState<Record<string, string>>({});
console.log(state()); // {}

patchState(state, { ngrx: 'rocks' });
console.log(state()); // { ngrx: 'rocks' }

// withState:
const Store = signalStore(
{ protectedState: false },
withState<Record<string, string>>({})
);
const store = new Store();
console.log(getState(store)); // {}

patchState(store, { ngrx: 'rocks' });
console.log(getState(store)); // { ngrx: 'rocks' }

AFTER:

1. The initial state object reference is not preserved:

const initialState = { ngrx: 'rocks' };

// signalState:
const state = signalState(initialState);
state() === initialState; // false

// withState:
const Store = signalStore(withState(initialState));
const store = new Store();
getState(store) === initialState; // false

2. Top-level `WritableSignal`s are not wrapped with `Signal`s:

// signalState:
const state = signalState({ ngrx: signal('rocks') });
state.ngrx // type: Signal<string>

// withState:
const Store = signalStore(withState({ ngrx: signal('rocks') }));
const store = new Store();
store.ngrx // type: Signal<string>

3. Root state properties can not be added dynamically:

// signalState:
const state = signalState<Record<string, string>>({});
console.log(state()); // {}

patchState(state, { ngrx: 'rocks' });
console.log(state()); // {}

// withState:
const Store = signalStore(
{ protectedState: false },
withState<Record<string, string>>({})
);
const store = new Store();
console.log(getState(store)); // {}

patchState(store, { ngrx: 'rocks' });
console.log(getState(store)); // {}

Co-authored-by: Tim Deschryver <28659384+timdeschryver@users.noreply.github.com>
Co-authored-by: michael-small <33669563+michael-small@users.noreply.github.com>
Co-authored-by: Marko Stanimirović <markostanimirovic95@gmail.com>

- The minimum required version of Angular has been updated.

BEFORE:

The minimum required version is Angular 19.x

AFTER:

The minimum required version is Angular 20.x

<a name="20.0.0-beta.0"></a>

# [20.0.0-beta.0](https://github.com/ngrx/platform/compare/19.2.1...20.0.0-beta.0) (2025-06-10)

### Bug Fixes

- **www:** Add padding to code snippets ([#4812](https://github.com/ngrx/platform/issues/4812)) ([9e942db](https://github.com/ngrx/platform/commit/9e942db)), closes [#4811](https://github.com/ngrx/platform/issues/4811)
- **www:** remove horizontal scrollbar ([#4808](https://github.com/ngrx/platform/issues/4808)) ([2639f67](https://github.com/ngrx/platform/commit/2639f67))

### build

- update to Angular 20 ([#4778](https://github.com/ngrx/platform/issues/4778)) ([8a4ecd9](https://github.com/ngrx/platform/commit/8a4ecd9))

### Features

- **eslint-plugin:** add new rule enforce type call ([#4809](https://github.com/ngrx/platform/issues/4809)) ([9b82e67](https://github.com/ngrx/platform/commit/9b82e67)), closes [#4797](https://github.com/ngrx/platform/issues/4797)
- **www:** add sidebar for mobile view and make home page responsive ([#4813](https://github.com/ngrx/platform/issues/4813)) ([4397bfb](https://github.com/ngrx/platform/commit/4397bfb)), closes [#4807](https://github.com/ngrx/platform/issues/4807)

### BREAKING CHANGES

- The minimum required version of Angular has been updated.

BEFORE:

The minimum required version is Angular 19.x

AFTER:

The minimum required version is Angular 20.x

<a name="20.0.0"></a>

# [20.0.0](https://github.com/ngrx/platform/compare/19.2.1...20.0.0) (2025-06-09)

### Bug Fixes

- **www:** Add padding to code snippets ([#4812](https://github.com/ngrx/platform/issues/4812)) ([9e942db](https://github.com/ngrx/platform/commit/9e942db)), closes [#4811](https://github.com/ngrx/platform/issues/4811)
- **www:** remove horizontal scrollbar ([#4808](https://github.com/ngrx/platform/issues/4808)) ([2639f67](https://github.com/ngrx/platform/commit/2639f67))

### build

- update to Angular 20 ([#4778](https://github.com/ngrx/platform/issues/4778)) ([8a4ecd9](https://github.com/ngrx/platform/commit/8a4ecd9))

### Features

- **eslint-plugin:** add new rule enforce type call ([#4809](https://github.com/ngrx/platform/issues/4809)) ([9b82e67](https://github.com/ngrx/platform/commit/9b82e67)), closes [#4797](https://github.com/ngrx/platform/issues/4797)
- **www:** add sidebar for mobile view and make home page responsive ([#4813](https://github.com/ngrx/platform/issues/4813)) ([4397bfb](https://github.com/ngrx/platform/commit/4397bfb)), closes [#4807](https://github.com/ngrx/platform/issues/4807)

### BREAKING CHANGES

- The minimum required version of Angular has been updated.

BEFORE:

The minimum required version is Angular 19.x

AFTER:

The minimum required version is Angular 20.x

<a name="19.2.1"></a>

## [19.2.1](https://github.com/ngrx/platform/compare/19.2.0...19.2.1) (2025-05-29)

### Bug Fixes

- **signals:** add current state as second argument of case reducer ([#4800](https://github.com/ngrx/platform/issues/4800)) ([95dbbfa](https://github.com/ngrx/platform/commit/95dbbfa))
- **signals:** expose WritableStateSource to withFeature callback ([#4792](https://github.com/ngrx/platform/issues/4792)) ([afb6528](https://github.com/ngrx/platform/commit/afb6528)), closes [#4766](https://github.com/ngrx/platform/issues/4766)

<a name="19.2.0"></a>

# [19.2.0](https://github.com/ngrx/platform/compare/19.1.0...19.2.0) (2025-05-12)

### Features

- **eslint-plugin:** add schematic support for flat configs ([#4747](https://github.com/ngrx/platform/issues/4747)) ([f966d0a](https://github.com/ngrx/platform/commit/f966d0a))
- **signals:** add Events plugin ([#4769](https://github.com/ngrx/platform/issues/4769)) ([980cf6f](https://github.com/ngrx/platform/commit/980cf6f)), closes [#4580](https://github.com/ngrx/platform/issues/4580)

<a name="19.1.0"></a>

# [19.1.0](https://github.com/ngrx/platform/compare/19.0.1...19.1.0) (2025-04-01)

### Bug Fixes

- **signals:** skip assertions when ngDevMode is not defined ([#4703](https://github.com/ngrx/platform/issues/4703)) ([0b43014](https://github.com/ngrx/platform/commit/0b43014)), closes [#4699](https://github.com/ngrx/platform/issues/4699)

### Features

- **signals:** add `withFeature` ([#4739](https://github.com/ngrx/platform/issues/4739)) ([345ab4f](https://github.com/ngrx/platform/commit/345ab4f)), closes [#4678](https://github.com/ngrx/platform/issues/4678)
- **signals:** add prepend entity updaters ([#4721](https://github.com/ngrx/platform/issues/4721)) ([dac8665](https://github.com/ngrx/platform/commit/dac8665)), closes [#4723](https://github.com/ngrx/platform/issues/4723)
- **signals:** add RxMethod and SignalMethod types to public API ([#4744](https://github.com/ngrx/platform/issues/4744)) ([40e78d9](https://github.com/ngrx/platform/commit/40e78d9))
- **signals:** add unprotected testing helper ([#4725](https://github.com/ngrx/platform/issues/4725)) ([01c2327](https://github.com/ngrx/platform/commit/01c2327))
- **signals:** add upsert entity updaters ([#4727](https://github.com/ngrx/platform/issues/4727)) ([92fd7c3](https://github.com/ngrx/platform/commit/92fd7c3))
- **signals:** warn when reactive method runs with source injector ([#4742](https://github.com/ngrx/platform/issues/4742)) ([84a537c](https://github.com/ngrx/platform/commit/84a537c)), closes [#4726](https://github.com/ngrx/platform/issues/4726)

<a name="19.0.1"></a>

## [19.0.1](https://github.com/ngrx/platform/compare/19.0.0...19.0.1) (2025-01-31)

### Bug Fixes

- **signals:** enable `withProps` to handle Symbols ([#4656](https://github.com/ngrx/platform/issues/4656)) ([02320b3](https://github.com/ngrx/platform/commit/02320b3)), closes [#4655](https://github.com/ngrx/platform/issues/4655)
- **signals:** remove `signalMethod` instance watcher on destroy ([#4648](https://github.com/ngrx/platform/issues/4648)) ([7f42065](https://github.com/ngrx/platform/commit/7f42065)), closes [#4644](https://github.com/ngrx/platform/issues/4644)
- **signals:** revert the protection for state mutation in dev mode ([#4686](https://github.com/ngrx/platform/issues/4686)) ([ae7922e](https://github.com/ngrx/platform/commit/ae7922e)), closes [#4683](https://github.com/ngrx/platform/issues/4683)

<a name="19.0.0"></a>

# [19.0.0](https://github.com/ngrx/platform/compare/19.0.0-rc.0...19.0.0) (2024-12-17)

<a name="19.0.0-rc.0"></a>

# [19.0.0-rc.0](https://github.com/ngrx/platform/compare/19.0.0-beta.0...19.0.0-rc.0) (2024-12-10)

### Bug Fixes

- **eslint-plugin:** support ESM modudule syntax (.mjs) ([e2f35c8](https://github.com/ngrx/platform/commit/e2f35c8))
- **signals:** create deep signals for custom class instances ([#4614](https://github.com/ngrx/platform/issues/4614)) ([4d34dc4](https://github.com/ngrx/platform/commit/4d34dc4)), closes [#4604](https://github.com/ngrx/platform/issues/4604)

### Features

- **eslint-plugin:** add new rule require-super-ondestroy ([#4611](https://github.com/ngrx/platform/issues/4611)) ([2ac4372](https://github.com/ngrx/platform/commit/2ac4372)), closes [#4505](https://github.com/ngrx/platform/issues/4505)
- **signals:** add `signalMethod` ([#4597](https://github.com/ngrx/platform/issues/4597)) ([bdd1d3e](https://github.com/ngrx/platform/commit/bdd1d3e)), closes [#4581](https://github.com/ngrx/platform/issues/4581)
- **signals:** add `withProps` base feature ([#4607](https://github.com/ngrx/platform/issues/4607)) ([e626082](https://github.com/ngrx/platform/commit/e626082))
- **signals:** add migration for `withProps` ([#4612](https://github.com/ngrx/platform/issues/4612)) ([5f803d0](https://github.com/ngrx/platform/commit/5f803d0)), closes [#4608](https://github.com/ngrx/platform/issues/4608)
- **store:** enable dispatching actions on signal changes ([#4600](https://github.com/ngrx/platform/issues/4600)) ([2528d39](https://github.com/ngrx/platform/commit/2528d39)), closes [#4537](https://github.com/ngrx/platform/issues/4537)

### BREAKING CHANGES

- **signals:** - The `computed` property in `SignalStoreFeatureResult` type is renamed to `props`.

* The `EntityComputed` and `NamedEntityComputed` types in the `entities` plugin are renamed to `EntityProps` and `NamedEntityProps`.

BEFORE:

```ts
import { computed, Signal } from '@angular/core';
import {
  signalStoreFeature,
  SignalStoreFeature,
  type,
  withComputed,
} from '@ngrx/signals';
import { EntityComputed } from '@ngrx/signals/entities';

export function withTotalEntities<Entity>(): SignalStoreFeature<
  { state: {}; computed: EntityComputed<Entity>; methods: {} },
  { state: {}; computed: { total: Signal<number> }; methods: {} }
> {
  return signalStoreFeature(
    { computed: type<EntityComputed<Entity>>() },
    withComputed(({ entities }) => ({
      total: computed(() => entities().length),
    }))
  );
}
```

AFTER:

```ts
import { computed, Signal } from '@angular/core';
import {
  signalStoreFeature,
  SignalStoreFeature,
  type,
  withComputed,
} from '@ngrx/signals';
import { EntityProps } from '@ngrx/signals/entities';

export function withTotalEntities<Entity>(): SignalStoreFeature<
  { state: {}; props: EntityProps<Entity>; methods: {} },
  { state: {}; props: { total: Signal<number> }; methods: {} }
> {
  return signalStoreFeature(
    { props: type<EntityProps<Entity>>() },
    withComputed(({ entities }) => ({
      total: computed(() => entities().length),
    }))
  );
}
```

<a name="19.0.0-beta.0"></a>

# [19.0.0-beta.0](https://github.com/ngrx/platform/compare/18.1.1...19.0.0-beta.0") (2024-11-20)

### Features

- **schematics:** change standalone default to true for components ([#4569](https://github.com/ngrx/platform/issues/4569)) ([c7d0ce6](https://github.com/ngrx/platform/commit/c7d0ce6))
- **signals:** rename `rxMethod.unsubscribe` to `destroy` ([#4584](https://github.com/ngrx/platform/issues/4584)) ([57ad5c5](https://github.com/ngrx/platform/commit/57ad5c5))
- **signals:** throw error in dev mode on state mutation ([#4526](https://github.com/ngrx/platform/issues/4526)) ([7a84209](https://github.com/ngrx/platform/commit/7a84209))

### BREAKING CHANGES

- **signals:** The `signalState`/`signalStore` state object is frozen in development mode.
  If a mutable change occurs to the state object, an error will be thrown.

BEFORE:

```ts
const userState = signalState(initialState);
patchState(userState, (state) => {
  state.user.firstName = 'mutable change'; // mutable change which went through
  return state;
});
```

AFTER:

```ts
const userState = signalState(initialState);
patchState(userState, (state) => {
  state.user.firstName = 'mutable change'; // throws in dev mode
  return state;
});
```

- **signals:** The `unsubscribe` method from `rxMethod` is renamed to `destroy`.

BEFORE:

```ts
const logNumber = rxMethod<number>(tap(console.log));

const num1Ref = logNumber(interval(1_000));
const num2Ref = logNumber(interval(2_000));

// destroy `num1Ref` after 2 seconds
setTimeout(() => num1Ref.unsubscribe(), 2_000);

// destroy all reactive method refs after 5 seconds
setTimeout(() => logNumber.unsubscribe(), 5_000);
```

AFTER:

```ts
const logNumber = rxMethod<number>(tap(console.log));

const num1Ref = logNumber(interval(1_000));
const num2Ref = logNumber(interval(2_000));

// destroy `num1Ref` after 2 seconds
setTimeout(() => num1Ref.destroy(), 2_000);

// destroy all reactive method refs after 5 seconds
setTimeout(() => logNumber.destroy(), 5_000);
```

- **schematics:** The default setting for generating components using schematics is updated.

BEFORE:

The default setting for generating components using schematics does not use standalone components.

AFTER:

The default setting for generating components using schematics uses standalone components.

- The minimum required version of Angular has been updated.

BEFORE:

The minimum required version is Angular 18.x

AFTER:

The minimum required version is Angular 19.x

<a name="18.1.1"></a>

## [18.1.1](https://github.com/ngrx/platform/compare/18.1.0...18.1.1) (2024-10-29)

### Bug Fixes

- **data:** export HttpOptions ([#4564](https://github.com/ngrx/platform/issues/4564)) ([4909627](https://github.com/ngrx/platform/commit/4909627))
- **router-store:** use non-const enum to allow isolatedModules tsconfig option ([#4554](https://github.com/ngrx/platform/issues/4554)) ([f993759](https://github.com/ngrx/platform/commit/f993759))

<a name="18.1.0"></a>

# [18.1.0](https://github.com/ngrx/platform/compare/18.0.2...18.1.0) (2024-10-08)

### Bug Fixes

- **component-store:** remove [@ngrx](https://github.com/ngrx)/operators from dependencies ([#4532](https://github.com/ngrx/platform/issues/4532)) ([3b4b9c4](https://github.com/ngrx/platform/commit/3b4b9c4))
- **effects:** remove [@ngrx](https://github.com/ngrx)/operators from dependencies ([#4531](https://github.com/ngrx/platform/issues/4531)) ([4fb78f1](https://github.com/ngrx/platform/commit/4fb78f1))
- **signals:** remove usage of SIGNAL from [@angular](https://github.com/angular)/core/primitives/signals package ([#4530](https://github.com/ngrx/platform/issues/4530)) ([cae429a](https://github.com/ngrx/platform/commit/cae429a))
- **signals:** use `Injector` of `rxMethod` instance caller if available ([#4529](https://github.com/ngrx/platform/issues/4529)) ([ffc1d87](https://github.com/ngrx/platform/commit/ffc1d87)), closes [#4528](https://github.com/ngrx/platform/issues/4528)
- **store-devtools:** add [@angular](https://github.com/angular)/core as peer dependency ([#4478](https://github.com/ngrx/platform/issues/4478)) ([62cceeb](https://github.com/ngrx/platform/commit/62cceeb)), closes [#4479](https://github.com/ngrx/platform/issues/4479)

### Features

- **eslint-plugin:** add preferProtectedState rule ([#4488](https://github.com/ngrx/platform/issues/4488)) ([32c772d](https://github.com/ngrx/platform/commit/32c772d)), closes [#4474](https://github.com/ngrx/platform/issues/4474)
- **signals:** add deepComputed function ([#4539](https://github.com/ngrx/platform/issues/4539)) ([269bd32](https://github.com/ngrx/platform/commit/269bd32))

<a name="18.0.2"></a>

## [18.0.2](https://github.com/ngrx/platform/compare/18.0.1...18.0.2) (2024-07-31)

### Bug Fixes

- **eslint-plugin:** do not report non-array returns in no-multiple-actions-in-effects ([#4418](https://github.com/ngrx/platform/issues/4418)) ([92a68bc](https://github.com/ngrx/platform/commit/92a68bc))
- **operators:** add [@ngrx](https://github.com/ngrx)/operators to packageGroup for updates ([#4472](https://github.com/ngrx/platform/issues/4472)) ([521ce7b](https://github.com/ngrx/platform/commit/521ce7b)), closes [#4465](https://github.com/ngrx/platform/issues/4465)
- **signals:** allow modifying entity id on update ([#4404](https://github.com/ngrx/platform/issues/4404)) ([0106e93](https://github.com/ngrx/platform/commit/0106e93))

<a name="18.0.1"></a>

## [18.0.1](https://github.com/ngrx/platform/compare/18.0.0...18.0.1) (2024-06-27)

### Bug Fixes

- **component-store:** resolve issues in migration script to v18 ([#4403](https://github.com/ngrx/platform/issues/4403)) ([a15d53e](https://github.com/ngrx/platform/commit/a15d53e))
- **effects:** fix bugs in migration script to v18 ([#4402](https://github.com/ngrx/platform/issues/4402)) ([6ae4723](https://github.com/ngrx/platform/commit/6ae4723))
- **eslint-plugin:** only take return statement into account with no-multiple-actions-in-effects ([#4410](https://github.com/ngrx/platform/issues/4410)) ([c9c646c](https://github.com/ngrx/platform/commit/c9c646c)), closes [#4409](https://github.com/ngrx/platform/issues/4409)

### Features

- **signals:** rename signals to computed when defining custom features with input ([#4395](https://github.com/ngrx/platform/issues/4395)) ([05f0940](https://github.com/ngrx/platform/commit/05f0940)), closes [#4391](https://github.com/ngrx/platform/issues/4391)
- **signals:** replace `idKey` with `selectId` when defining custom entity ID ([#4396](https://github.com/ngrx/platform/issues/4396)) ([67a5a93](https://github.com/ngrx/platform/commit/67a5a93)), closes [#4217](https://github.com/ngrx/platform/issues/4217) [#4392](https://github.com/ngrx/platform/issues/4392)

<a name="18.0.1"></a>

## [18.0.1](https://github.com/ngrx/platform/compare/18.0.0...18.0.1) (2024-06-27)

<a name="18.0.0"></a>

# [18.0.0](https://github.com/ngrx/platform/compare/18.0.0-rc.1...18.0.0) (2024-06-13)

<a name="18.0.0-rc.1"></a>

# [18.0.0-rc.1](https://github.com/ngrx/platform/compare/18.0.0-rc.0...18.0.0-rc.1) (2024-06-12)

### Bug Fixes

- **eslint-plugin:** include signals to ESLint v8 rules ([#4387](https://github.com/ngrx/platform/issues/4387)) ([7c75dcf](https://github.com/ngrx/platform/commit/7c75dcf)), closes [#4385](https://github.com/ngrx/platform/issues/4385)

<a name="18.0.0-rc.0"></a>

# [18.0.0-rc.0](https://github.com/ngrx/platform/compare/18.0.0-beta.1...18.0.0-rc.0) (2024-06-10)

### Bug Fixes

- **router-store:** include string[] as return type for selectQueryParam ([#4369](https://github.com/ngrx/platform/issues/4369)) ([b0b43f7](https://github.com/ngrx/platform/commit/b0b43f7))
- **signals:** export DeepSignal ([#4377](https://github.com/ngrx/platform/issues/4377)) ([fa26c5c](https://github.com/ngrx/platform/commit/fa26c5c))

### Features

- **component-store:** remove tapResponse operator ([#4366](https://github.com/ngrx/platform/issues/4366)) ([285c810](https://github.com/ngrx/platform/commit/285c810))
- **effects:** remove concatLatestFrom operator ([#4367](https://github.com/ngrx/platform/issues/4367)) ([1a1b6df](https://github.com/ngrx/platform/commit/1a1b6df))
- **eslint-plugin:** add signals rules ([#4380](https://github.com/ngrx/platform/issues/4380)) ([c002466](https://github.com/ngrx/platform/commit/c002466))
- **eslint-plugin:** support ESLint v9 (and v8) ([#4371](https://github.com/ngrx/platform/issues/4371)) ([e8d9ffa](https://github.com/ngrx/platform/commit/e8d9ffa))

### BREAKING CHANGES

- **effects:** The concatLatestFrom operator has been removed from @ngrx/effects in favor of the @ngrx/operators package.

BEFORE:

import { concatLatestFrom } from '@ngrx/effects';

AFTER:

import { concatLatestFrom } from '@ngrx/operators';

- **component-store:** The tapResponse operator has been removed from @ngrx/component-store in favor of the @ngrx/operators package.

BEFORE:

import { tapResponse } from '@ngrx/component-store';

AFTER:

import { tapResponse } from '@ngrx/operators';

<a name="18.0.0-beta.1"></a>

# [18.0.0-beta.1](https://github.com/ngrx/platform/compare/18.0.0-beta.0...18.0.0-beta.1) (2024-05-20)

<a name="18.0.0-beta.0"></a>

# [18.0.0-beta.0](https://github.com/ngrx/platform/compare/17.2.0...18.0.0-beta.0) (2024-05-20)

### Bug Fixes

- **eslint-plugin:** add as devDependency via ng add ([#4343](https://github.com/ngrx/platform/issues/4343)) ([4fe7b7f](https://github.com/ngrx/platform/commit/4fe7b7f))
- **schematics:** set correct default value type ([#4307](https://github.com/ngrx/platform/issues/4307)) ([51034e6](https://github.com/ngrx/platform/commit/51034e6))

### Features

- **component-store:** add migrator for `tapResponse` ([#4321](https://github.com/ngrx/platform/issues/4321)) ([0ae21c9](https://github.com/ngrx/platform/commit/0ae21c9)), closes [#4261](https://github.com/ngrx/platform/issues/4261)
- **effects:** add migrator for `concatLatestFrom` ([#4311](https://github.com/ngrx/platform/issues/4311)) ([d264c56](https://github.com/ngrx/platform/commit/d264c56)), closes [#4262](https://github.com/ngrx/platform/issues/4262)
- **operators:** add `mapResponse` ([#4302](https://github.com/ngrx/platform/issues/4302)) ([c460920](https://github.com/ngrx/platform/commit/c460920)), closes [#4230](https://github.com/ngrx/platform/issues/4230)
- **store:** add TypedAction migration ([#4325](https://github.com/ngrx/platform/issues/4325)) ([f76a401](https://github.com/ngrx/platform/commit/f76a401))
- upgrade Angular dependencies to v18 pre-release versions ([#4308](https://github.com/ngrx/platform/issues/4308)) ([62f3971](https://github.com/ngrx/platform/commit/62f3971))
- **store:** merge Action and TypedAction intefaces ([#4318](https://github.com/ngrx/platform/issues/4318)) ([c8bde71](https://github.com/ngrx/platform/commit/c8bde71))

### BREAKING CHANGES

- The minimum required version of Angular has been updated

BEFORE:

The minimum required version of Angular is 17.x

AFTER:

The minimum required version of Angular is 18.x

- **store:** The Action and TypedAction interfaces are merged into one interface.

BEFORE:

There was a separation between the Action and TypedAction interfaces.

AFTER:

The Action interface accepts a generic type parameter that represents the payload type (defaults to string).
The TypedAction interface is removed.

<a name="17.2.0"></a>

# [17.2.0](https://github.com/ngrx/platform/compare/17.1.1...17.2.0) (2024-04-11)

### Bug Fixes

- **effects:** make createEffect work with TS 5.3 ([#4296](https://github.com/ngrx/platform/issues/4296)) ([19c1f11](https://github.com/ngrx/platform/commit/19c1f11))
- **ngrx.io:** set correct path for pwa icons ([#4263](https://github.com/ngrx/platform/issues/4263)) ([703a9c7](https://github.com/ngrx/platform/commit/703a9c7))
- **schematics:** correct module while generating a feature ([#4289](https://github.com/ngrx/platform/issues/4289)) ([7ecffe8](https://github.com/ngrx/platform/commit/7ecffe8)), closes [#4281](https://github.com/ngrx/platform/issues/4281)
- **signals:** make patchState work with TS 5.4 ([#4294](https://github.com/ngrx/platform/issues/4294)) ([6b440ee](https://github.com/ngrx/platform/commit/6b440ee))

### Features

- **component-store:** deprecate `tapResponse` export ([#4259](https://github.com/ngrx/platform/issues/4259)) ([a5958a0](https://github.com/ngrx/platform/commit/a5958a0))
- **effects:** deprecate `concatLatestFrom` export ([#4260](https://github.com/ngrx/platform/issues/4260)) ([79674b7](https://github.com/ngrx/platform/commit/79674b7))

<a name="17.1.1"></a>

## [17.1.1](https://github.com/ngrx/platform/compare/17.1.0...17.1.1) (2024-02-21)

### Bug Fixes

- **signals:** add `StateSignal` to the public API ([#4247](https://github.com/ngrx/platform/issues/4247)) ([3d45e5a](https://github.com/ngrx/platform/commit/3d45e5a))
- **signals:** correctly infer the type of methods with generics ([#4249](https://github.com/ngrx/platform/issues/4249)) ([70517ea](https://github.com/ngrx/platform/commit/70517ea))
- **signals:** run `rxMethod` outside of reactive context ([#4224](https://github.com/ngrx/platform/issues/4224)) ([3a691d9](https://github.com/ngrx/platform/commit/3a691d9))
- **store-devtools:** replace direct with indirect `eval` ([#4216](https://github.com/ngrx/platform/issues/4216)) ([1df0eb5](https://github.com/ngrx/platform/commit/1df0eb5)), closes [#4213](https://github.com/ngrx/platform/issues/4213)

### Performance Improvements

- **signals:** avoid creating unnecessary objects in excludeKeys ([#4240](https://github.com/ngrx/platform/issues/4240)) ([b90da9d](https://github.com/ngrx/platform/commit/b90da9d))
- **signals:** avoid unecessary observable conversions in rxMethod ([#4219](https://github.com/ngrx/platform/issues/4219)) ([fa45d92](https://github.com/ngrx/platform/commit/fa45d92))

<a name="17.1.0"></a>

# [17.1.0](https://github.com/ngrx/platform/compare/17.0.1...17.1.0) (2024-01-16)

### Bug Fixes

- **eslint-plugin:** only report main pipe violations ([#4169](https://github.com/ngrx/platform/issues/4169)) ([970514e](https://github.com/ngrx/platform/commit/970514e))
- **signals:** run `onDestroy` outside of injection context ([#4200](https://github.com/ngrx/platform/issues/4200)) ([e21df19](https://github.com/ngrx/platform/commit/e21df19))

### Features

- **signals:** add `withHooks` signature with factory input ([#4208](https://github.com/ngrx/platform/issues/4208)) ([916fba0](https://github.com/ngrx/platform/commit/916fba0)), closes [#4201](https://github.com/ngrx/platform/issues/4201)

<a name="17.0.1"></a>

## [17.0.1](https://github.com/ngrx/platform/compare/17.0.0...17.0.1) (2023-11-27)

### Bug Fixes

- **signals:** allow using signalStore and signalState in TS libs ([#4152](https://github.com/ngrx/platform/issues/4152)) ([ecc247c](https://github.com/ngrx/platform/commit/ecc247c))
- **signals:** define deep signals as configurable properties ([#4147](https://github.com/ngrx/platform/issues/4147)) ([890ca5b](https://github.com/ngrx/platform/commit/890ca5b))

<a name="17.0.0"></a>

# [17.0.0](https://github.com/ngrx/platform/compare/17.0.0-rc.0...17.0.0) (2023-11-20)

### Bug Fixes

- **data:** DefaultDataService getAll httpOptions fix + test ([#4134](https://github.com/ngrx/platform/issues/4134)) ([213e4c9](https://github.com/ngrx/platform/commit/213e4c9))
- **signals:** remove state checks for better DX ([#4124](https://github.com/ngrx/platform/issues/4124)) ([5749543](https://github.com/ngrx/platform/commit/5749543))

### Features

- **signals:** provide ability to use interface as state type ([#4133](https://github.com/ngrx/platform/issues/4133)) ([9c8304a](https://github.com/ngrx/platform/commit/9c8304a))

<a name="17.0.0-rc.0"></a>

# [17.0.0-rc.0](https://github.com/ngrx/platform/compare/17.0.0-beta.0...17.0.0-rc.0) (2023-11-10)

### Features

- **signals:** add `getState` function ([#4118](https://github.com/ngrx/platform/issues/4118)) ([79b0708](https://github.com/ngrx/platform/commit/79b0708))
- **signals:** add entities subpackage ([#4090](https://github.com/ngrx/platform/issues/4090)) ([f01bcd1](https://github.com/ngrx/platform/commit/f01bcd1))
- **store-devtools:** add migration for connectInZone ([#4106](https://github.com/ngrx/platform/issues/4106)) ([73fda59](https://github.com/ngrx/platform/commit/73fda59))
- **store-devtools:** change connectOutsideZone to be 'true' by default ([#4103](https://github.com/ngrx/platform/issues/4103)) ([d3b4db0](https://github.com/ngrx/platform/commit/d3b4db0)), closes [#4093](https://github.com/ngrx/platform/issues/4093)

<a name="17.0.0-beta.0"></a>

# [17.0.0-beta.0](https://github.com/ngrx/platform/compare/16.3.0...17.0.0-beta.0) (2023-10-30)

### Bug Fixes

- **entity:** set correct return type for getSelectors signature with parent selector ([#4074](https://github.com/ngrx/platform/issues/4074)) ([b3b571e](https://github.com/ngrx/platform/commit/b3b571e))
- **signals:** do not create nested signals for STATE_SIGNAL property ([#4062](https://github.com/ngrx/platform/issues/4062)) ([71a9d7f](https://github.com/ngrx/platform/commit/71a9d7f))
- **signals:** improve state type and add type tests ([#4064](https://github.com/ngrx/platform/issues/4064)) ([10c93ed](https://github.com/ngrx/platform/commit/10c93ed)), closes [#4065](https://github.com/ngrx/platform/issues/4065)

### Features

- **component:** remove `LetModule` ([#4087](https://github.com/ngrx/platform/issues/4087)) ([f28ea71](https://github.com/ngrx/platform/commit/f28ea71)), closes [#4077](https://github.com/ngrx/platform/issues/4077)
- **component:** remove PushModule ([7316d1a](https://github.com/ngrx/platform/commit/7316d1a))
- **effects:** deprecate act operator ([#4073](https://github.com/ngrx/platform/issues/4073)) ([3dbcadc](https://github.com/ngrx/platform/commit/3dbcadc))
- **operators:** introduce [@ngrx](https://github.com/ngrx)/operators package ([#4097](https://github.com/ngrx/platform/issues/4097)) ([e93ead4](https://github.com/ngrx/platform/commit/e93ead4)), closes [#4057](https://github.com/ngrx/platform/issues/4057)
- **signals:** remove selectSignal and rename withSignals to withComputed ([#4075](https://github.com/ngrx/platform/issues/4075)) ([25f95bc](https://github.com/ngrx/platform/commit/25f95bc))
- upgrade Angular dependencies to v17 pre-release versions ([#4068](https://github.com/ngrx/platform/issues/4068)) ([3d25047](https://github.com/ngrx/platform/commit/3d25047))
- **signals:** add rxjs-interop subpackage ([#4061](https://github.com/ngrx/platform/issues/4061)) ([fd565ed](https://github.com/ngrx/platform/commit/fd565ed))

### BREAKING CHANGES

- **component:** The LetModule is removed in favor of the standalone LetDirective.

BEFORE:

import { LetModule } from '@ngrx/component';

@NgModule({
imports: [
// ... other imports
LetModule,
],
})
export class MyFeatureModule {}

AFTER:

import { LetDirective } from '@ngrx/component';

@NgModule({
imports: [
// ... other imports
LetDirective,
],
})
export class MyFeatureModule {}

- **component:** The `PushModule` is deprecated in favor of the standalone `PushPipe`.

BEFORE:

```ts
import { PushModule } from '@ngrx/component';

@NgModule({
  imports: [
    // ... other imports
    PushModule,
  ],
})
export class MyFeatureModule {}
```

AFTER:

```ts
import { Component } from '@angular/core';
import { PushPipe } from '@ngrx/component';

@Component({
  // ... other metadata
  standalone: true,
  imports: [
    // ... other imports
    PushPipe,
  ],
})
export class MyStandaloneComponent {}
```

- **entity:** Selectors returned by the `adapter.getSelectors` signature that accepts a parent selector are strongly typed.

BEFORE:

```ts
const {
  selectIds, // type: (state: object) => string[] | number[]
  selectEntities, // type: (state: object) => Dictionary<Book>
  selectAll, // type: (state: object) => Book[]
  selectTotal, // type: (state: object) => number
} = adapter.getSelectors(selectBooksState);
```

AFTER:

```ts
const {
  selectIds, // type: MemoizedSelector<object, string[] | number[]>
  selectEntities, // type: MemoizedSelector<object, Dictionary<Book>>
  selectAll, // type: MemoizedSelector<object, Book[]>
  selectTotal, // type: MemoizedSelector<object, number>
} = adapter.getSelectors(selectBooksState);
```

- The minimum required version of Angular has been updated

BEFORE:

The minimum required version of Angular is 16.x

AFTER:

The minimum required version of Angular is 17.x

<a name="16.3.0"></a>

# [16.3.0](https://github.com/ngrx/platform/compare/16.2.0...16.3.0) (2023-10-03)

### Bug Fixes

- **schematics:** make action props plural ([#4017](https://github.com/ngrx/platform/issues/4017)) ([3a56412](https://github.com/ngrx/platform/commit/3a56412))

### Features

- **data:** standalone support for ng add [@ngrx](https://github.com/ngrx)/data ([#4019](https://github.com/ngrx/platform/issues/4019)) ([fdd701e](https://github.com/ngrx/platform/commit/fdd701e)), closes [#3935](https://github.com/ngrx/platform/issues/3935)
- **eslint-plugin:** add avoid-combining-component-store-selectors rule ([#4043](https://github.com/ngrx/platform/issues/4043)) ([0bff440](https://github.com/ngrx/platform/commit/0bff440))
- **eslint-plugin:** add new avoid-mapping-component-store-selectors rule ([#4026](https://github.com/ngrx/platform/issues/4026)) ([40477dd](https://github.com/ngrx/platform/commit/40477dd)), closes [#3940](https://github.com/ngrx/platform/issues/3940)
- **signals:** add `patchState` function and remove `$update` method ([#4037](https://github.com/ngrx/platform/issues/4037)) ([f2514ba](https://github.com/ngrx/platform/commit/f2514ba))
- **signals:** add signalState and selectSignal APIs ([#4007](https://github.com/ngrx/platform/issues/4007)) ([745d91f](https://github.com/ngrx/platform/commit/745d91f)), closes [#3993](https://github.com/ngrx/platform/issues/3993)
- **signals:** add signalStore and signalStoreFeature ([#4049](https://github.com/ngrx/platform/issues/4049)) ([0010281](https://github.com/ngrx/platform/commit/0010281)), closes [#4000](https://github.com/ngrx/platform/issues/4000)
- **signals:** initial setup ([#4002](https://github.com/ngrx/platform/issues/4002)) ([b0d63fd](https://github.com/ngrx/platform/commit/b0d63fd)), closes [#3992](https://github.com/ngrx/platform/issues/3992)
- **store:** prettify createFeature result ([#4014](https://github.com/ngrx/platform/issues/4014)) ([f179316](https://github.com/ngrx/platform/commit/f179316))

<a name="16.2.0"></a>

# [16.2.0](https://github.com/ngrx/platform/compare/16.1.0...16.2.0) (2023-08-07)

### Bug Fixes

- **data:** make DataServiceError extend from Error ([#3988](https://github.com/ngrx/platform/issues/3988)) ([0b98a65](https://github.com/ngrx/platform/commit/0b98a65))
- **effects:** register functional effects from object without prototype ([#3984](https://github.com/ngrx/platform/issues/3984)) ([1879cc9](https://github.com/ngrx/platform/commit/1879cc9)), closes [#3972](https://github.com/ngrx/platform/issues/3972)
- **eslint-plugin:** fix prefer-contact-latest-from rule to detect inject ([#3946](https://github.com/ngrx/platform/issues/3946)) ([2efd805](https://github.com/ngrx/platform/commit/2efd805))
- **eslint-plugin:** prefix-selectors-with-select suggestion ([#3959](https://github.com/ngrx/platform/issues/3959)) ([27f09df](https://github.com/ngrx/platform/commit/27f09df))
- **eslint-plugin:** support inject for no-typed-global-store rule ([#3951](https://github.com/ngrx/platform/issues/3951)) ([d3e84d8](https://github.com/ngrx/platform/commit/d3e84d8))
- **eslint-plugin:** support inject for use-consistent-global-store-name rule ([#3983](https://github.com/ngrx/platform/issues/3983)) ([caa74ff](https://github.com/ngrx/platform/commit/caa74ff))
- **store-devtools:** resolve memory leak when devtools are destroyed ([#3965](https://github.com/ngrx/platform/issues/3965)) ([644f0b6](https://github.com/ngrx/platform/commit/644f0b6))

### Features

- **eslint-plugin:** include docs URL in lint message ([#3944](https://github.com/ngrx/platform/issues/3944)) ([a1576de](https://github.com/ngrx/platform/commit/a1576de))
- **schematics:** add entity generation as part of feature schematic ([#3850](https://github.com/ngrx/platform/issues/3850)) ([19ebb0a](https://github.com/ngrx/platform/commit/19ebb0a))
- **store-devtools:** provide the ability to connect extension outside of Angular zone ([#3970](https://github.com/ngrx/platform/issues/3970)) ([1ee80e5](https://github.com/ngrx/platform/commit/1ee80e5)), closes [#3839](https://github.com/ngrx/platform/issues/3839)

<a name="16.1.0"></a>

# [16.1.0](https://github.com/ngrx/platform/compare/16.0.1...16.1.0) (2023-07-06)

### Bug Fixes

- **eslint:** fix inject function based injection not detecting store ([#3936](https://github.com/ngrx/platform/issues/3936)) ([8a5884d](https://github.com/ngrx/platform/commit/8a5884d)), closes [#3834](https://github.com/ngrx/platform/issues/3834)
- **eslint:** updater-explicit-return-type not applied when inheritance ([#3928](https://github.com/ngrx/platform/issues/3928)) ([41a5076](https://github.com/ngrx/platform/commit/41a5076))

### Features

- **component-store:** added custom equal option in select ([#3933](https://github.com/ngrx/platform/issues/3933)) ([c4b5cc5](https://github.com/ngrx/platform/commit/c4b5cc5))

<a name="16.0.1"></a>

## [16.0.1](https://github.com/ngrx/platform/compare/16.0.0...16.0.1) (2023-06-01)

### Bug Fixes

- **component:** untrack subscription in ngrxPush pipe ([#3918](https://github.com/ngrx/platform/issues/3918)) ([a1688e4](https://github.com/ngrx/platform/commit/a1688e4))
- **ngrx.io:** preserve sidenav width for larger menu items ([#3923](https://github.com/ngrx/platform/issues/3923)) ([ef73714](https://github.com/ngrx/platform/commit/ef73714))

<a name="16.0.0"></a>

# [16.0.0](https://github.com/ngrx/platform/compare/16.0.0-rc.0...16.0.0) (2023-05-09)

### Bug Fixes

- **component-store:** use default equality function for selectSignal ([#3884](https://github.com/ngrx/platform/issues/3884)) ([5843e7f](https://github.com/ngrx/platform/commit/5843e7f))
- **store:** add Signal equal function for immutable object comparison ([#3883](https://github.com/ngrx/platform/issues/3883)) ([634fdcb](https://github.com/ngrx/platform/commit/634fdcb))
- **store:** move Angular Signal interop into State service ([#3879](https://github.com/ngrx/platform/issues/3879)) ([8cb5795](https://github.com/ngrx/platform/commit/8cb5795)), closes [#3869](https://github.com/ngrx/platform/issues/3869)
- **store-devtools:** add state signal to StateObservable ([#3889](https://github.com/ngrx/platform/issues/3889)) ([ad6e14a](https://github.com/ngrx/platform/commit/ad6e14a))

### Features

- add ng add support for standalone config to NgRx packages ([#3881](https://github.com/ngrx/platform/issues/3881)) ([58508e3](https://github.com/ngrx/platform/commit/58508e3))
- **component:** add migration for LetModule and PushModule ([#3872](https://github.com/ngrx/platform/issues/3872)) ([5f07eda](https://github.com/ngrx/platform/commit/5f07eda))
- **component:** make LetDirective and PushPipe standalone ([#3826](https://github.com/ngrx/platform/issues/3826)) ([985d80c](https://github.com/ngrx/platform/commit/985d80c)), closes [#3804](https://github.com/ngrx/platform/issues/3804)
- **store:** add support of standalone API for ng add store ([#3874](https://github.com/ngrx/platform/issues/3874)) ([7aec84d](https://github.com/ngrx/platform/commit/7aec84d))

<a name="16.0.0-rc.1"></a>

# [16.0.0-rc.1](https://github.com/ngrx/platform/compare/16.0.0-rc.0...16.0.0-rc.1) (2023-05-09)

### Bug Fixes

- **component-store:** use default equality function for selectSignal ([#3884](https://github.com/ngrx/platform/issues/3884)) ([5843e7f](https://github.com/ngrx/platform/commit/5843e7f))
- **store:** add Signal equal function for immutable object comparison ([#3883](https://github.com/ngrx/platform/issues/3883)) ([634fdcb](https://github.com/ngrx/platform/commit/634fdcb))
- **store:** move Angular Signal interop into State service ([#3879](https://github.com/ngrx/platform/issues/3879)) ([8cb5795](https://github.com/ngrx/platform/commit/8cb5795)), closes [#3869](https://github.com/ngrx/platform/issues/3869)

### Features

- add ng add support for standalone config to NgRx packages ([#3881](https://github.com/ngrx/platform/issues/3881)) ([58508e3](https://github.com/ngrx/platform/commit/58508e3))
- **component:** add migration for LetModule and PushModule ([#3872](https://github.com/ngrx/platform/issues/3872)) ([5f07eda](https://github.com/ngrx/platform/commit/5f07eda))
- **component:** make LetDirective and PushPipe standalone ([#3826](https://github.com/ngrx/platform/issues/3826)) ([985d80c](https://github.com/ngrx/platform/commit/985d80c)), closes [#3804](https://github.com/ngrx/platform/issues/3804)
- **store:** add support of standalone API for ng add store ([#3874](https://github.com/ngrx/platform/issues/3874)) ([7aec84d](https://github.com/ngrx/platform/commit/7aec84d))

<a name="16.0.0-rc.0"></a>

# [16.0.0-rc.0](https://github.com/ngrx/platform/compare/16.0.0-beta.0...16.0.0-rc.0) (2023-05-04)

### Bug Fixes

- **data:** make non-optimistic add command entity partial ([#3859](https://github.com/ngrx/platform/issues/3859)) ([93ee1db](https://github.com/ngrx/platform/commit/93ee1db))

### Features

- **component-store:** add selectSignal options ([503e9d8](https://github.com/ngrx/platform/commit/503e9d8))
- **component-store:** add selectSignal signature that combines provided signals ([#3863](https://github.com/ngrx/platform/issues/3863)) ([07ba3fa](https://github.com/ngrx/platform/commit/07ba3fa))
- **store:** add selectSignal options ([0a13c4d](https://github.com/ngrx/platform/commit/0a13c4d))

<a name="16.0.0-beta.0"></a>

# [16.0.0-beta.0](https://github.com/ngrx/platform/compare/15.4.0...16.0.0-beta.0) (2023-04-27)

### Bug Fixes

- **data:** allow 0 to be a valid key ([#3830](https://github.com/ngrx/platform/issues/3830)) ([e50126d](https://github.com/ngrx/platform/commit/e50126d)), closes [#3828](https://github.com/ngrx/platform/issues/3828)
- **effects:** run user provided effects defined as injection token ([#3851](https://github.com/ngrx/platform/issues/3851)) ([cdaeeb6](https://github.com/ngrx/platform/commit/cdaeeb6)), closes [#3848](https://github.com/ngrx/platform/issues/3848)
- **store:** correctly infer action group events defined as empty object ([#3833](https://github.com/ngrx/platform/issues/3833)) ([dc78447](https://github.com/ngrx/platform/commit/dc78447))
- **store-devtools:** correctly import state when feature is set to true ([#3855](https://github.com/ngrx/platform/issues/3855)) ([0df3419](https://github.com/ngrx/platform/commit/0df3419)), closes [#3636](https://github.com/ngrx/platform/issues/3636)

### Features

- **component-store:** add selectSignal method for interop with Angular Signals ([#3861](https://github.com/ngrx/platform/issues/3861)) ([195d5ac](https://github.com/ngrx/platform/commit/195d5ac))
- **component-store:** add tapResponse signature with observer object ([#3829](https://github.com/ngrx/platform/issues/3829)) ([3a5e5d8](https://github.com/ngrx/platform/commit/3a5e5d8))
- **effects:** accept ObservableInput as concatLatestFrom argument ([#3838](https://github.com/ngrx/platform/issues/3838)) ([34dd28c](https://github.com/ngrx/platform/commit/34dd28c))
- **router-store:** add [@nrwl](https://github.com/nrwl)/angular data persistence operators ([#3841](https://github.com/ngrx/platform/issues/3841)) ([4482751](https://github.com/ngrx/platform/commit/4482751)), closes [#3777](https://github.com/ngrx/platform/issues/3777)
- **router-store:** remove deprecated getSelectors method ([#3816](https://github.com/ngrx/platform/issues/3816)) ([351a75e](https://github.com/ngrx/platform/commit/351a75e)), closes [#3815](https://github.com/ngrx/platform/issues/3815)
- **schematics:** replace `any` type with `unknown` type ([#3827](https://github.com/ngrx/platform/issues/3827)) ([0ea2933](https://github.com/ngrx/platform/commit/0ea2933))
- **schematics:** Use createActionGroup in schematics ([#3791](https://github.com/ngrx/platform/issues/3791)) ([f6ce20f](https://github.com/ngrx/platform/commit/f6ce20f))
- **store:** add createMockStore migration ([#3810](https://github.com/ngrx/platform/issues/3810)) ([ded4240](https://github.com/ngrx/platform/commit/ded4240))
- **store:** add selectSignal method for interop with Angular Signals ([#3856](https://github.com/ngrx/platform/issues/3856)) ([999dcb6](https://github.com/ngrx/platform/commit/999dcb6))
- **store:** preserve the event name case with createActionGroup ([#3832](https://github.com/ngrx/platform/issues/3832)) ([482fa5d](https://github.com/ngrx/platform/commit/482fa5d))
- **store:** remove deprecated createFeature method ([#3825](https://github.com/ngrx/platform/issues/3825)) ([fd8f347](https://github.com/ngrx/platform/commit/fd8f347)), closes [#3814](https://github.com/ngrx/platform/issues/3814)
- **store:** remove forbidden chars and empty str checks from createActionGroup ([#3857](https://github.com/ngrx/platform/issues/3857)) ([e37c57b](https://github.com/ngrx/platform/commit/e37c57b))
- convert entity and router selectors interfaces to types ([#3853](https://github.com/ngrx/platform/issues/3853)) ([73eb55c](https://github.com/ngrx/platform/commit/73eb55c))
- **store:** remove getMockStore in favor of createMockStore ([#3835](https://github.com/ngrx/platform/issues/3835)) ([8d0ed8e](https://github.com/ngrx/platform/commit/8d0ed8e))
- **store:** use strict projectors for createFeature selectors ([#3799](https://github.com/ngrx/platform/issues/3799)) ([bafd121](https://github.com/ngrx/platform/commit/bafd121))
- update to Angular v16.0.0-next.6 release ([#3831](https://github.com/ngrx/platform/issues/3831)) ([d7e03df](https://github.com/ngrx/platform/commit/d7e03df))

### BREAKING CHANGES

- **store:** The event name case is preserved when converting to the action name by using the `createActionGroup` function.

BEFORE:

All letters of the event name will be lowercase, except for the initial letters of words starting from the second word, which will be uppercase.

```ts
const authApiActions = createActionGroup({
  source: 'Auth API',
  events: {
    'LogIn Success': emptyProps(),
    'login failure': emptyProps(),
    'Logout Success': emptyProps(),
    logoutFailure: emptyProps(),
  },
});

// generated actions:
const { loginSuccess, loginFailure, logoutSuccess, logoutfailure } =
  authApiActions;
```

AFTER:

The initial letter of the first word of the event name will be lowercase, and the initial letters of the other words will be uppercase. The case of other letters in the event name will remain the same.

```ts
const { logInSuccess, loginFailure, logoutSuccess, logoutFailure } =
  authApiActions;
```

- **store:** The `createFeature` signature with root state is removed in favor of a signature without root state.
  An automatic migration is added to remove this signature.

BEFORE:

```ts
interface AppState {
  users: State;
}

export const usersFeature = createFeature<AppState>({
  name: 'users',
  reducer: createReducer(initialState /* case reducers */),
});
```

AFTER:

```ts
export const usersFeature = createFeature({
  name: 'users',
  reducer: createReducer(initialState /* case reducers */),
});
```

- **router-store:** The deprecated `getSelectors` function has been removed from the `@ngrx/router-store` package.

BEFORE:

The @ngrx/router-store package exports the `getSelectors` function.

AFTER:

The @ngrx/router-store package no longer exports the `getSelectors` function. A migration has been provided to replace existing usage

- **schematics:** NgRx Schematics do not use `any` types to define actions, these are replaced with the `unknown` type.

BEFORE:

Schematics used the `any` type to declare action payload type.

AFTER:

Schematics use the `unknown` type to declare action payload type.

- **store:** The `getMockStore` function is removed in favor of `createMockStore`

BEFORE:

```ts
import { getMockStore } from '@ngrx/store/testing';
const mockStore = getMockStore();
```

AFTER:

```ts
import { createMockStore } from '@ngrx/store/testing';
const mockStore = createMockStore();
```

- **store:** Projectors of selectors generated by createFeature are strongly typed.

BEFORE:

Projector function arguments of selectors generated by createFeature are not strongly typed:

```ts
const counterFeature = createFeature({
  name: 'counter',
  reducer: createReducer({ count: 0 }),
});

counterFeature.selectCount.projector;
// type: (...args: any[]) => number
```

AFTER:

Projector function arguments of selectors generated by createFeature are strongly typed:

```ts
const counterFeature = createFeature({
  name: 'counter',
  reducer: createReducer({ count: 0 }),
});

counterFeature.selectCount.projector;
// type: (featureState: { count: number; }) => number
```

<a name="15.4.0"></a>

# [15.4.0](https://github.com/ngrx/platform/compare/15.3.0...15.4.0) (2023-03-16)

### Bug Fixes

- **data:** correctly handle HttpOptions when provided ([#3795](https://github.com/ngrx/platform/issues/3795)) ([cbdf524](https://github.com/ngrx/platform/commit/cbdf524)), closes [#3794](https://github.com/ngrx/platform/issues/3794)
- **eslint-plugin:** ignore select name within createFeature ([#3788](https://github.com/ngrx/platform/issues/3788)) ([b58f9a3](https://github.com/ngrx/platform/commit/b58f9a3)), closes [#3786](https://github.com/ngrx/platform/issues/3786)

### Features

- **store:** rename getMockStore to createMockStore ([#3789](https://github.com/ngrx/platform/issues/3789)) ([6d615b3](https://github.com/ngrx/platform/commit/6d615b3)), closes [#3781](https://github.com/ngrx/platform/issues/3781)
- **store:** use createFeature in feature schematics ([#3776](https://github.com/ngrx/platform/issues/3776)) ([9b3647f](https://github.com/ngrx/platform/commit/9b3647f)), closes [#3741](https://github.com/ngrx/platform/issues/3741)

<a name="15.3.0"></a>

# [15.3.0](https://github.com/ngrx/platform/compare/15.2.1...15.3.0) (2023-02-13)

### Bug Fixes

- **store:** support using factory selectors as extra selectors ([#3767](https://github.com/ngrx/platform/issues/3767)) ([f4714c3](https://github.com/ngrx/platform/commit/f4714c3))

### Features

- **data:** Add HttpOptions to EntityActionOptions ([#3663](https://github.com/ngrx/platform/issues/3663)) ([#3664](https://github.com/ngrx/platform/issues/3664)) ([dd745c0](https://github.com/ngrx/platform/commit/dd745c0))

<a name="15.2.1"></a>

## [15.2.1](https://github.com/ngrx/platform/compare/15.2.0...15.2.1) (2023-01-26)

<a name="15.2.0"></a>

# [15.2.0](https://github.com/ngrx/platform/compare/15.1.0...15.2.0) (2023-01-26)

### Features

- **data:** add loadWithQuery method ([#3717](https://github.com/ngrx/platform/issues/3717)) ([06b97bf](https://github.com/ngrx/platform/commit/06b97bf)), closes [#3088](https://github.com/ngrx/platform/issues/3088)
- **effects:** add ability to create functional effects ([#3669](https://github.com/ngrx/platform/issues/3669)) ([dd76c63](https://github.com/ngrx/platform/commit/dd76c63)), closes [#3668](https://github.com/ngrx/platform/issues/3668)
- **router-store:** add migration for getRouterSelectors ([#3753](https://github.com/ngrx/platform/issues/3753)) ([a785331](https://github.com/ngrx/platform/commit/a785331))
- **router-store:** rename getSelectors to getRouterSelectors ([#3745](https://github.com/ngrx/platform/issues/3745)) ([7ad76b8](https://github.com/ngrx/platform/commit/7ad76b8)), closes [#3738](https://github.com/ngrx/platform/issues/3738)
- **store:** add ability to create extra selectors with createFeature ([#3744](https://github.com/ngrx/platform/issues/3744)) ([e4f873b](https://github.com/ngrx/platform/commit/e4f873b)), closes [#3719](https://github.com/ngrx/platform/issues/3719)
- **store:** add createFeature migration ([#3759](https://github.com/ngrx/platform/issues/3759)) ([b3c5931](https://github.com/ngrx/platform/commit/b3c5931))
- **store:** deprecate createFeature signature with root state ([#3756](https://github.com/ngrx/platform/issues/3756)) ([ccb3b93](https://github.com/ngrx/platform/commit/ccb3b93)), closes [#3737](https://github.com/ngrx/platform/issues/3737)

<a name="15.1.0"></a>

# [15.1.0](https://github.com/ngrx/platform/compare/15.0.0...15.1.0) (2022-12-21)

### Bug Fixes

- **component-store:** revert throwError usages with factory for RxJS 6 compatibility ([726dfb7](https://github.com/ngrx/platform/commit/726dfb7))
- **data:** revert throwError usages with factory for RxJS 6 compatibility ([a137b59](https://github.com/ngrx/platform/commit/a137b59)), closes [#3702](https://github.com/ngrx/platform/issues/3702)
- **eslint-plugin:** remove [@angular-devkit](https://github.com/angular-devkit)/schematics dependency ([#3710](https://github.com/ngrx/platform/issues/3710)) ([f0ae915](https://github.com/ngrx/platform/commit/f0ae915)), closes [#3709](https://github.com/ngrx/platform/issues/3709)
- **schematics:** disable package json peer dep updates during build ([#3692](https://github.com/ngrx/platform/issues/3692)) ([9cfc103](https://github.com/ngrx/platform/commit/9cfc103)), closes [#3691](https://github.com/ngrx/platform/issues/3691)
- **store:** support using `createActionGroup` with props typed as unions ([#3713](https://github.com/ngrx/platform/issues/3713)) ([e75fa1a](https://github.com/ngrx/platform/commit/e75fa1a)), closes [#3712](https://github.com/ngrx/platform/issues/3712)

### Features

- **router-store:** add new selectRouteDataParam selector ([#3673](https://github.com/ngrx/platform/issues/3673)) ([#3686](https://github.com/ngrx/platform/issues/3686)) ([81bc0d9](https://github.com/ngrx/platform/commit/81bc0d9))
- **store:** support using`createSelector` with selectors dictionary ([#3703](https://github.com/ngrx/platform/issues/3703)) ([5c87dda](https://github.com/ngrx/platform/commit/5c87dda)), closes [#3677](https://github.com/ngrx/platform/issues/3677)

<a name="15.0.0"></a>

# [15.0.0](https://github.com/ngrx/platform/compare/15.0.0-rc.0...15.0.0) (2022-11-29)

### Features

- **store-devtools:** add redux dev tool trace support ([#3517](https://github.com/ngrx/platform/issues/3517)) ([#3665](https://github.com/ngrx/platform/issues/3665)) ([187802a](https://github.com/ngrx/platform/commit/187802a)), closes [#1868](https://github.com/ngrx/platform/issues/1868)

<a name="15.0.0-rc.0"></a>

# [15.0.0-rc.0](https://github.com/ngrx/platform/compare/15.0.0-beta.1...15.0.0-rc.0) (2022-11-23)

### Features

- **component:** clear `LetDirective` view when replaced observable is in suspense state ([#3671](https://github.com/ngrx/platform/issues/3671)) ([ec59c4b](https://github.com/ngrx/platform/commit/ec59c4b))
- **component:** remove $ prefix from LetViewContext property names ([#3670](https://github.com/ngrx/platform/issues/3670)) ([b3b21e6](https://github.com/ngrx/platform/commit/b3b21e6))

### BREAKING CHANGES

- **component:** The `LetDirective` view will be cleared when the replaced observable is in a suspense state. Also, the `suspense` property is removed from the `LetViewContext` because it would always be `false` when the `LetDirective` view is rendered. Instead of `suspense` property, use the suspense template to handle the suspense state.

BEFORE:

The `LetDirective` view will not be cleared when the replaced observable is in a suspense state and the suspense template is not passed:

```ts
@Component({
  template: `
    <!-- When button is clicked, the 'LetDirective' view won't be cleared. -->
    <!-- Instead, the value of 'o' will be 'undefined' until the replaced -->
    <!-- observable emits the first value (after 1 second). -->
    <p *ngrxLet="obs$ as o">{{ o }}</p>
    <button (click)="replaceObs()">Replace Observable</button>
  `,
})
export class TestComponent {
  obs$ = of(1);

  replaceObs(): void {
    this.obs$ = of(2).pipe(delay(1000));
  }
}
```

AFTER:

The `LetDirective` view will be cleared when the replaced observable is in a suspense state and the suspense template is not passed:

```ts
@Component({
  template: `
    <!-- When button is clicked, the 'LetDirective' view will be cleared. -->
    <!-- The view will be created again when the replaced observable -->
    <!-- emits the first value (after 1 second). -->
    <p *ngrxLet="obs$ as o">{{ o }}</p>
    <button (click)="replaceObs()">Replace Observable</button>
  `,
})
export class TestComponent {
  obs$ = of(1);

  replaceObs(): void {
    this.obs$ = of(2).pipe(delay(1000));
  }
}
```

- **component:** The `$` prefix is removed from `LetViewContext` property names.

BEFORE:

```html
<ng-container *ngrxLet="obs$; $error as e; $complete as c">
  ...
</ng-container>
```

AFTER:

```html
<ng-container *ngrxLet="obs$; error as e; complete as c">
  ...
</ng-container>
```

<a name="15.0.0-beta.1"></a>

# [15.0.0-beta.1](https://github.com/ngrx/platform/compare/15.0.0-beta.0...15.0.0-beta.1) (2022-11-18)

### Features

- **data:** add initial standalone APIs ([#3647](https://github.com/ngrx/platform/issues/3647)) ([aa7ed66](https://github.com/ngrx/platform/commit/aa7ed66)), closes [#3553](https://github.com/ngrx/platform/issues/3553)
- **data:** add withEffects feature for provideEntityData ([#3656](https://github.com/ngrx/platform/issues/3656)) ([a6959e8](https://github.com/ngrx/platform/commit/a6959e8))
- **effects:** forRoot and forFeature accept spreaded array ([#3638](https://github.com/ngrx/platform/issues/3638)) ([0eaa536](https://github.com/ngrx/platform/commit/0eaa536))
- **router-store:** return resolved title via selectTitle ([#3648](https://github.com/ngrx/platform/issues/3648)) ([cc04e2f](https://github.com/ngrx/platform/commit/cc04e2f)), closes [#3622](https://github.com/ngrx/platform/issues/3622)
- **schematics:** add display block flag ([e0d368d](https://github.com/ngrx/platform/commit/e0d368d))
- **schematics:** add standalone flag ([b0bd2ff](https://github.com/ngrx/platform/commit/b0bd2ff))
- **schematics:** replace environments usage with isDevMode ([#3645](https://github.com/ngrx/platform/issues/3645)) ([4f61b63](https://github.com/ngrx/platform/commit/4f61b63)), closes [#3618](https://github.com/ngrx/platform/issues/3618)

### BREAKING CHANGES

- **router-store:** Property `title: string | undefined` is added to the `MinimalActivatedRouteSnapshot` interface.

BEFORE:

The `MinimalActivatedRouteSnapshot` interface doesn't contain the `title` property.

AFTER:

The `MinimalActivatedRouteSnapshot` interface contains the required `title` property.

<a name="15.0.0-beta.0"></a>

# [15.0.0-beta.0](https://github.com/ngrx/platform/compare/14.3.2...15.0.0-beta.0) (2022-11-03)

### Features

- **component:** add migration for replacing ReactiveComponentModule ([#3506](https://github.com/ngrx/platform/issues/3506)) ([49c6cf3](https://github.com/ngrx/platform/commit/49c6cf3)), closes [#3491](https://github.com/ngrx/platform/issues/3491)
- **component:** handle observable dictionaries ([#3602](https://github.com/ngrx/platform/issues/3602)) ([42efccb](https://github.com/ngrx/platform/commit/42efccb)), closes [#3545](https://github.com/ngrx/platform/issues/3545)
- **component:** remove ReactiveComponentModule ([#3643](https://github.com/ngrx/platform/issues/3643)) ([4bdf345](https://github.com/ngrx/platform/commit/4bdf345)), closes [#3623](https://github.com/ngrx/platform/issues/3623)
- **component-store:** Add SelectorObject to `select` ([#3629](https://github.com/ngrx/platform/issues/3629)) ([f8d0241](https://github.com/ngrx/platform/commit/f8d0241)), closes [#3632](https://github.com/ngrx/platform/issues/3632) [#3631](https://github.com/ngrx/platform/issues/3631)
- **effects:** change the signature of provideEffect ([#3587](https://github.com/ngrx/platform/issues/3587)) ([899afe7](https://github.com/ngrx/platform/commit/899afe7))
- **effects:** migration for provideEffects argument ([#3601](https://github.com/ngrx/platform/issues/3601)) ([f7dfeab](https://github.com/ngrx/platform/commit/f7dfeab))
- **effects:** remove @Effect decorator ([#3634](https://github.com/ngrx/platform/issues/3634)) ([96c5bdd](https://github.com/ngrx/platform/commit/96c5bdd)), closes [#3617](https://github.com/ngrx/platform/issues/3617)
- **eslint-plugin:** remove rules using @Effect ([#3635](https://github.com/ngrx/platform/issues/3635)) ([5f74e61](https://github.com/ngrx/platform/commit/5f74e61))
- **schematics:** drop support for TypeScript <4.8 ([#3631](https://github.com/ngrx/platform/issues/3631)) ([b9c1ab6](https://github.com/ngrx/platform/commit/b9c1ab6))
- **store:** make reducers arg of StoreModule.forRoot optional ([#3632](https://github.com/ngrx/platform/issues/3632)) ([e5177aa](https://github.com/ngrx/platform/commit/e5177aa))
- **store:** strict projector for selectors with props ([#3640](https://github.com/ngrx/platform/issues/3640)) ([351459f](https://github.com/ngrx/platform/commit/351459f)), closes [#3571](https://github.com/ngrx/platform/issues/3571)
- **store:** strict projectors ([#3581](https://github.com/ngrx/platform/issues/3581)) ([43198a2](https://github.com/ngrx/platform/commit/43198a2)), closes [#3571](https://github.com/ngrx/platform/issues/3571)

### BREAKING CHANGES

- **component:** `ReactiveComponentModule` is removed in favor of `LetModule` and `PushModule`.

BEFORE:

```ts
import { ReactiveComponentModule } from '@ngrx/component';

@NgModule({
  imports: [
    // ... other imports
    ReactiveComponentModule,
  ],
})
export class MyFeatureModule {}
```

AFTER:

```ts
import { LetModule, PushModule } from '@ngrx/component';

@NgModule({
  imports: [
    // ... other imports
    LetModule,
    PushModule,
  ],
})
export class MyFeatureModule {}
```

- **store:** The projector method has become strict

BEFORE:

You could pass any arguments to the projector method

const selector = createSelector(
selectString, // returning a string
selectNumber, // returning a number
(s, n, prefix: string) => {
return prefix + s.repeat(n);
}
)

// you could pass any argument
selector.projector(1, 'a', true);

AFTER:

const selector = createSelector(
selectString, // returning a string
selectNumber, // returning a number
(s, n, prefix: string) => {
return prefix + s.repeat(n);
}
)

// this throws
selector.projector(1, 'a', true);
// this does not throw because the arguments have the correct type
selector.projector(1, 'a', 'prefix');

- **store:** The projector function on the selector is type-safe by default.

BEFORE:

The projector is not type-safe by default, allowing for potential mismatch types in the projector function.

```ts
const mySelector = createSelector(
  () => 'one',
  () => 2,
  (one, two) => 3
);

mySelector.projector(); // <- type is projector(...args: any[]): number
```

AFTER:

The projector is strict by default, but can be bypassed with an `any` generic parameter.

```ts
const mySelector = createSelector(
  () => 'one',
  () => 2,
  (one, two) => 3
);

mySelector.projector(); // <- Results in type error. Type is projector(s1: string, s2: number): number
```

To retain previous behavior

```ts
const mySelector = createSelector(
  () => 'one',
  () => 2,
  (one, two) => 3
)(mySelector.projector as any)();
```

- **effects:** The @Effect decorator is removed

BEFORE:

Defining an effect is done with @Effect

@Effect()
data$ = this.actions$.pipe();

AFTER:

Defining an effect is done with createEffect

data$ = createEffect(() => this.actions$.pipe());

- **effects:** The signature of `provideEffects` is changed to expect a
  spreaded array of effects.

BEFORE:

`provideEffects` expecteded the effects to be passed as an array.

```ts
// single effect
provideEffects([MyEffect]);

// multiple effects
provideEffects([MyEffect, MySecondEffect]);
```

AFTER:

`provideEffects` expects the effects as a spreaded array as argument.

```ts
// single effect
provideEffects(MyEffect);

// multiple effects
provideEffects(MyEffect, MySecondEffect);
```

<a name="14.3.2"></a>

## [14.3.2](https://github.com/ngrx/platform/compare/14.3.1...14.3.2) (2022-10-04)

### Bug Fixes

- **component:** replace animationFrameScheduler with requestAnimationFrame ([#3592](https://github.com/ngrx/platform/issues/3592)) ([0a4d2dd](https://github.com/ngrx/platform/commit/0a4d2dd)), closes [#3591](https://github.com/ngrx/platform/issues/3591)
- **component-store:** use asapScheduler to schedule lifecycle hooks check ([#3580](https://github.com/ngrx/platform/issues/3580)) ([02431b4](https://github.com/ngrx/platform/commit/02431b4)), closes [#3573](https://github.com/ngrx/platform/issues/3573)
- **eslint-plugin:** avoid-combining-selectors with arrays should warn ([#3566](https://github.com/ngrx/platform/issues/3566)) ([4b0c6de](https://github.com/ngrx/platform/commit/4b0c6de))
- **router-store:** set undefined for unserializable route title ([#3593](https://github.com/ngrx/platform/issues/3593)) ([8eb4001](https://github.com/ngrx/platform/commit/8eb4001)), closes [#3495](https://github.com/ngrx/platform/issues/3495)
- **store:** fix typing of on fn ([#3577](https://github.com/ngrx/platform/issues/3577)) ([d054aa9](https://github.com/ngrx/platform/commit/d054aa9)), closes [#3576](https://github.com/ngrx/platform/issues/3576)

<a name="14.3.1"></a>

## [14.3.1](https://github.com/ngrx/platform/compare/14.3.0...14.3.1) (2022-09-08)

### Bug Fixes

- add support for TypeScript 4.8 ([#3548](https://github.com/ngrx/platform/issues/3548)) ([d558ce1](https://github.com/ngrx/platform/commit/d558ce1)), closes [#3547](https://github.com/ngrx/platform/issues/3547)
- **eslint-plugin:** avoid-mapping-selectors don't report on ThisExpression ([#3546](https://github.com/ngrx/platform/issues/3546)) ([a28175c](https://github.com/ngrx/platform/commit/a28175c)), closes [#3511](https://github.com/ngrx/platform/issues/3511)

<a name="14.3.0"></a>

# [14.3.0](https://github.com/ngrx/platform/compare/14.2.0...14.3.0) (2022-08-25)

### Features

- **effects:** add provideEffects function ([#3524](https://github.com/ngrx/platform/issues/3524)) ([db35bfe](https://github.com/ngrx/platform/commit/db35bfe)), closes [#3522](https://github.com/ngrx/platform/issues/3522)
- **router-store:** add provideRouterStore function ([#3532](https://github.com/ngrx/platform/issues/3532)) ([511b7cf](https://github.com/ngrx/platform/commit/511b7cf)), closes [#3528](https://github.com/ngrx/platform/issues/3528)
- **store:** add provideStore and provideState functions for standalone APIs ([#3539](https://github.com/ngrx/platform/issues/3539)) ([5639c1e](https://github.com/ngrx/platform/commit/5639c1e)), closes [#3526](https://github.com/ngrx/platform/issues/3526)
- **store-devtools:** add provideStoreDevtools function ([#3537](https://github.com/ngrx/platform/issues/3537)) ([6b0db4e](https://github.com/ngrx/platform/commit/6b0db4e)), closes [#3527](https://github.com/ngrx/platform/issues/3527)

<a name="14.2.0"></a>

# [14.2.0](https://github.com/ngrx/platform/compare/14.1.0...14.2.0) (2022-08-18)

### Bug Fixes

- **component-store:** make synchronous updater errors catchable ([#3490](https://github.com/ngrx/platform/issues/3490)) ([1a906fd](https://github.com/ngrx/platform/commit/1a906fd))
- **component-store:** move isInitialized check to queueScheduler context on state update ([#3492](https://github.com/ngrx/platform/issues/3492)) ([53636e4](https://github.com/ngrx/platform/commit/53636e4)), closes [#2991](https://github.com/ngrx/platform/issues/2991)

### Features

- **component-store:** handle errors in next callback ([#3533](https://github.com/ngrx/platform/issues/3533)) ([551c8eb](https://github.com/ngrx/platform/commit/551c8eb))

<a name="14.1.0"></a>

# [14.1.0](https://github.com/ngrx/platform/compare/14.0.2...14.1.0) (2022-08-09)

### Bug Fixes

- **eslint-plugin:** allow sequential dispatches in a different block context ([#3515](https://github.com/ngrx/platform/issues/3515)) ([faf446f](https://github.com/ngrx/platform/commit/faf446f)), closes [#3513](https://github.com/ngrx/platform/issues/3513)
- **eslint-plugin:** Remove the md suffix from the docsUrl path ([#3518](https://github.com/ngrx/platform/issues/3518)) ([71d4d4b](https://github.com/ngrx/platform/commit/71d4d4b))
- **store:** improve error for forbidden characters in createActionGroup ([#3496](https://github.com/ngrx/platform/issues/3496)) ([398fbed](https://github.com/ngrx/platform/commit/398fbed))

### Features

- **component:** add RenderScheduler to the public API ([#3516](https://github.com/ngrx/platform/issues/3516)) ([4642919](https://github.com/ngrx/platform/commit/4642919))
- **component:** replace markDirty with custom TickScheduler ([#3488](https://github.com/ngrx/platform/issues/3488)) ([3fcd8af](https://github.com/ngrx/platform/commit/3fcd8af))

### Performance Improvements

- **component:** do not schedule render for synchronous events ([#3487](https://github.com/ngrx/platform/issues/3487)) ([bb9071c](https://github.com/ngrx/platform/commit/bb9071c))

<a name="14.0.2"></a>

## [14.0.2](https://github.com/ngrx/platform/compare/14.0.1...14.0.2) (2022-07-12)

### Bug Fixes

- **component:** import operators from rxjs/operators ([#3479](https://github.com/ngrx/platform/issues/3479)) ([20ef7a4](https://github.com/ngrx/platform/commit/20ef7a4))
- **component-store:** effect handles generics that extend upon a type ([#3485](https://github.com/ngrx/platform/issues/3485)) ([9d2bda7](https://github.com/ngrx/platform/commit/9d2bda7)), closes [#3482](https://github.com/ngrx/platform/issues/3482)
- **data:** add TSDoc annotations ([#3483](https://github.com/ngrx/platform/issues/3483)) ([cbbc49f](https://github.com/ngrx/platform/commit/cbbc49f))
- **eslint-plugin:** fix configuration guide link ([#3480](https://github.com/ngrx/platform/issues/3480)) ([8219b1d](https://github.com/ngrx/platform/commit/8219b1d))

<a name="14.0.1"></a>

## [14.0.1](https://github.com/ngrx/platform/compare/14.0.0...14.0.1) (2022-06-29)

### Bug Fixes

- **component-store:** allow void callbacks in effect ([#3466](https://github.com/ngrx/platform/issues/3466)) ([e6dedd6](https://github.com/ngrx/platform/commit/e6dedd6)), closes [#3462](https://github.com/ngrx/platform/issues/3462)
- **component-store:** import operators from rxjs/operators ([#3465](https://github.com/ngrx/platform/issues/3465)) ([f9ba513](https://github.com/ngrx/platform/commit/f9ba513))
- **schematics:** add workingDirectory to schemas ([#3473](https://github.com/ngrx/platform/issues/3473)) ([50ea6b3](https://github.com/ngrx/platform/commit/50ea6b3)), closes [#3469](https://github.com/ngrx/platform/issues/3469)
- **schematics:** create schematicCollections if not exists ([#3470](https://github.com/ngrx/platform/issues/3470)) ([011cbcc](https://github.com/ngrx/platform/commit/011cbcc))

<a name="14.0.0"></a>

# [14.0.0](https://github.com/ngrx/platform/compare/14.0.0-rc.0...14.0.0) (2022-06-20)

### Bug Fixes

- **component:** do not exclude falsy types from LetDirective's input type ([#3460](https://github.com/ngrx/platform/issues/3460)) ([7028adb](https://github.com/ngrx/platform/commit/7028adb))

<a name="14.0.0-rc.0"></a>

# [14.0.0-rc.0](https://github.com/ngrx/platform/compare/14.0.0-beta.0...14.0.0-rc.0) (2022-06-08)

### Code Refactoring

- **router-store:** change name for full router state serializer ([#3430](https://github.com/ngrx/platform/issues/3430)) ([d443f50](https://github.com/ngrx/platform/commit/d443f50)), closes [#3416](https://github.com/ngrx/platform/issues/3416)

### Features

- **component:** add separate modules for PushPipe and LetDirective ([#3449](https://github.com/ngrx/platform/issues/3449)) ([eacc4b4](https://github.com/ngrx/platform/commit/eacc4b4)), closes [#3341](https://github.com/ngrx/platform/issues/3341)
- **component:** deprecate ReactiveComponentModule ([#3451](https://github.com/ngrx/platform/issues/3451)) ([b4dd2c8](https://github.com/ngrx/platform/commit/b4dd2c8))
- **eslint-plugin:** improve install flow ([#3447](https://github.com/ngrx/platform/issues/3447)) ([8ddaf60](https://github.com/ngrx/platform/commit/8ddaf60))
- **schematics:** use schematicCollections instead of defaultCollection ([#3441](https://github.com/ngrx/platform/issues/3441)) ([5abf828](https://github.com/ngrx/platform/commit/5abf828)), closes [#3383](https://github.com/ngrx/platform/issues/3383)

### BREAKING CHANGES

- **router-store:** The full router state serializer has been renamed.

BEFORE:

The full router state serializer is named `DefaultRouterStateSerializer`

AFTER:

The full router state serializer is named `FullRouterStateSerializer`. A migration is provided to rename the export in affected projects.

<a name="14.0.0-beta.0"></a>

# [14.0.0-beta.0](https://github.com/ngrx/platform/compare/13.1.0...14.0.0-beta.0) (2022-05-30)

- Closes #3344, #3345 ([70056a8](https://github.com/ngrx/platform/commit/70056a8)), closes [#3344](https://github.com/ngrx/platform/issues/3344) [#3345](https://github.com/ngrx/platform/issues/3345)

### Bug Fixes

- **store:** rename template literal to string literal for createActionGroup ([#3426](https://github.com/ngrx/platform/issues/3426)) ([7d08db1](https://github.com/ngrx/platform/commit/7d08db1))

### Features

- **schematics:** remove creators option ([#3311](https://github.com/ngrx/platform/issues/3311)) ([e86278a](https://github.com/ngrx/platform/commit/e86278a))
- update Angular packages to latest v14 RC ([#3425](https://github.com/ngrx/platform/issues/3425)) ([f15dd1e](https://github.com/ngrx/platform/commit/f15dd1e)), closes [#3417](https://github.com/ngrx/platform/issues/3417)
- **component:** add error as value to LetDirective's context ([#3380](https://github.com/ngrx/platform/issues/3380)) ([6452e24](https://github.com/ngrx/platform/commit/6452e24)), closes [#3343](https://github.com/ngrx/platform/issues/3343)
- **component:** add suspense template input to LetDirective ([#3377](https://github.com/ngrx/platform/issues/3377)) ([345ee53](https://github.com/ngrx/platform/commit/345ee53)), closes [#3340](https://github.com/ngrx/platform/issues/3340)
- **component:** use global render strategy in zone-less mode ([#3379](https://github.com/ngrx/platform/issues/3379)) ([f233dae](https://github.com/ngrx/platform/commit/f233dae)), closes [#3342](https://github.com/ngrx/platform/issues/3342)
- **component-store:** add OnStoreInit and OnStateInit lifecycle hooks ([#3368](https://github.com/ngrx/platform/issues/3368)) ([0ffed02](https://github.com/ngrx/platform/commit/0ffed02)), closes [#3335](https://github.com/ngrx/platform/issues/3335)
- **eslint-plugin:** add NgRx ESLint Plugin ([#3373](https://github.com/ngrx/platform/issues/3373)) ([ae0041b](https://github.com/ngrx/platform/commit/ae0041b))
- **store:** add createActionGroup function ([#3381](https://github.com/ngrx/platform/issues/3381)) ([2cdecb3](https://github.com/ngrx/platform/commit/2cdecb3)), closes [#3337](https://github.com/ngrx/platform/issues/3337)
- **store:** install and configure the [@ngrx](https://github.com/ngrx)/eslint-plugin on ng-add ([#3386](https://github.com/ngrx/platform/issues/3386)) ([bf2672e](https://github.com/ngrx/platform/commit/bf2672e))

### Performance Improvements

- **component:** reset state / trigger CD only if necessary ([#3328](https://github.com/ngrx/platform/issues/3328)) ([f5b055b](https://github.com/ngrx/platform/commit/f5b055b))

### BREAKING CHANGES

- 1. The context of `LetDirective` is strongly typed when `null` or
     `undefined` is passed as input.

BEFORE:

```html
<p *ngrxLet="null as n">{{ n }}</p>
<p *ngrxLet="undefined as u">{{ u }}</p>
```

- The type of `n` is `any`.
- The type of `u` is `any`.

AFTER:

```html
<p *ngrxLet="null as n">{{ n }}</p>
<p *ngrxLet="undefined as u">{{ u }}</p>
```

- The type of `n` is `null`.
- The type of `u` is `undefined`.

* **schematics:** BEFORE:

Creating actions, reducers, and effects is possible without using the creator syntax is possible.

AFTER:

- All schematics use the non-creator syntax to scaffold the code.
- The option `--creators` (and `-c`) is removed from the schematic options.
- The `skipTests` option is removed while generating actions.

* Minimum version of Angular has been updated

BEFORE:

Minimum version of Angular was 13.x

AFTER:

Minimum version of Angular is 14.x

- **component:** The native local rendering strategy is replaced by global
  in zone-less mode for better performance.

BEFORE:

The change detection is triggered via `changeDetectorRef.detectChanges`
in zone-less mode.

AFTER:

The change detection is triggered via `ɵmarkDirty` in zone-less mode.

- **component:** The `$error` property from `LetDirective`'s view context is
  a thrown error or `undefined` instead of `true`/`false`.

BEFORE:

```ts
<p *ngrxLet="obs$; $error as e">{{ e }}</p>
```

- `e` will be `true` when `obs$` emits error event.
- `e` will be `false` when `obs$` emits next/complete event.

AFTER:

```ts
<p *ngrxLet="obs$; $error as e">{{ e }}</p>
```

- `e` will be thrown error when `obs$` emits error event.
- `e` will be `undefined` when `obs$` emits next/complete event.

<a name="13.1.0"></a>

# [13.1.0](https://github.com/ngrx/platform/compare/13.0.2...13.1.0) (2022-03-28)

### Bug Fixes

- **component-store:** memoization not working when passing selectors directly to select ([#3356](https://github.com/ngrx/platform/issues/3356)) ([38bce88](https://github.com/ngrx/platform/commit/38bce88))
- **entity:** add default options to entity adapter when undefined is passed ([#3287](https://github.com/ngrx/platform/issues/3287)) ([17fe494](https://github.com/ngrx/platform/commit/17fe494))
- **store:** add explicit overloads for createSelector ([#3354](https://github.com/ngrx/platform/issues/3354)) ([2f82101](https://github.com/ngrx/platform/commit/2f82101)), closes [#3268](https://github.com/ngrx/platform/issues/3268)

### Features

- **data:** add ability to configure trailing slashes ([#3357](https://github.com/ngrx/platform/issues/3357)) ([56aedfd](https://github.com/ngrx/platform/commit/56aedfd))
- **store-devtools:** add REDUX_DEVTOOLS_EXTENSION injection token to public API ([#3338](https://github.com/ngrx/platform/issues/3338)) ([b55b0e4](https://github.com/ngrx/platform/commit/b55b0e4))

<a name="13.0.2"></a>

## [13.0.2](https://github.com/ngrx/platform/compare/13.0.1...13.0.2) (2021-12-07)

### Bug Fixes

- **component:** fixes recursive rendering ([#3255](https://github.com/ngrx/platform/issues/3255)) ([d24dde1](https://github.com/ngrx/platform/commit/d24dde1)), closes [#3246](https://github.com/ngrx/platform/issues/3246)
- **store:** remove afterEach hook in mock store ([#3245](https://github.com/ngrx/platform/issues/3245)) ([0640085](https://github.com/ngrx/platform/commit/0640085)), closes [#3243](https://github.com/ngrx/platform/issues/3243)
- **store:** update installation of the NgRx ESLint Plugin ([#3259](https://github.com/ngrx/platform/issues/3259)) ([df211fe](https://github.com/ngrx/platform/commit/df211fe))
- set correct dist paths for testing packages ([#3249](https://github.com/ngrx/platform/issues/3249)) ([ed9f6f1](https://github.com/ngrx/platform/commit/ed9f6f1)), closes [#3248](https://github.com/ngrx/platform/issues/3248)

<a name="13.0.1"></a>

## [13.0.1](https://github.com/ngrx/platform/compare/13.0.0...13.0.1) (2021-11-17)

### Bug Fixes

- **store:** add migration for create selector generics ([#3237](https://github.com/ngrx/platform/issues/3237)) ([5d97a11](https://github.com/ngrx/platform/commit/5d97a11))

<a name="13.0.0"></a>

# [13.0.0](https://github.com/ngrx/platform/compare/13.0.0-rc.0...13.0.0) (2021-11-16)

<a name="13.0.0-rc.0"></a>

# [13.0.0-rc.0](https://github.com/ngrx/platform/compare/13.0.0-beta.0...13.0.0-rc.0) (2021-11-11)

### Bug Fixes

- **data:** set loaded to true on queryManySuccess ([#3228](https://github.com/ngrx/platform/issues/3228)) ([52b828e](https://github.com/ngrx/platform/commit/52b828e)), closes [#3165](https://github.com/ngrx/platform/issues/3165)

### Features

- **store:** use variadic tuple types for createSelector ([#3023](https://github.com/ngrx/platform/issues/3023)) ([367d9b4](https://github.com/ngrx/platform/commit/367d9b4)), closes [#2715](https://github.com/ngrx/platform/issues/2715)
- update Angular packages to version 13.0.0 ([#3184](https://github.com/ngrx/platform/issues/3184)) ([996f1e8](https://github.com/ngrx/platform/commit/996f1e8)), closes [#3189](https://github.com/ngrx/platform/issues/3189)

### BREAKING CHANGES

- **store:** When manually specifying the generic arguments, you have to specify the selector's list of selector return values.

BEFORE:

```ts
createSelector<Story[], Story[], Story[][]>;
```

AFTER:

```ts
//        needs to be a tuple 👇
createSelector<Story[], [Story[]], Story[][]>;
```

- **data:** Now both the `getWithQuery` and `getAll` methods are consistent and do set `loaded` property to true on dispatching their success actions respectively.

BEFORE:

The `getWithQuery` method would not set the `loaded` property to true upon success

AFTER:

The `getWithQuery` method sets the `loaded` property to true upon success

<a name="13.0.0-beta.0"></a>

# [13.0.0-beta.0](https://github.com/ngrx/platform/compare/12.5.1...13.0.0-beta.0) (2021-11-04)

### Bug Fixes

- **component:** remove class-level generic from PushPipe ([#3127](https://github.com/ngrx/platform/issues/3127)) ([548c72c](https://github.com/ngrx/platform/commit/548c72c)), closes [#3114](https://github.com/ngrx/platform/issues/3114)
- **store:** infer initial store state properly with metareducers ([#3102](https://github.com/ngrx/platform/issues/3102)) ([d003b85](https://github.com/ngrx/platform/commit/d003b85)), closes [#3007](https://github.com/ngrx/platform/issues/3007)
- **store:** remove store config from forFeature signature with slice ([#3218](https://github.com/ngrx/platform/issues/3218)) ([b1a64dd](https://github.com/ngrx/platform/commit/b1a64dd)), closes [#3216](https://github.com/ngrx/platform/issues/3216)

### build

- build packages with Ivy ([#3219](https://github.com/ngrx/platform/issues/3219)) ([9e28050](https://github.com/ngrx/platform/commit/9e28050))

### Features

- **effects:** move createEffect migration to ng-update migration ([#3074](https://github.com/ngrx/platform/issues/3074)) ([5974913](https://github.com/ngrx/platform/commit/5974913))
- **store:** add createFeatureSelector migration ([#3214](https://github.com/ngrx/platform/issues/3214)) ([62334f9](https://github.com/ngrx/platform/commit/62334f9))
- **store:** provide better TS errors for action creator props ([#3060](https://github.com/ngrx/platform/issues/3060)) ([5ed3c3d](https://github.com/ngrx/platform/commit/5ed3c3d)), closes [#2892](https://github.com/ngrx/platform/issues/2892)

### BREAKING CHANGES

- The minimum version required for Angular and RxJS has been updated

BEFORE:

Angular 12.x is the minimum version
RxJS 6.5.x is the minimum required version

AFTER:

Angular 13.0.0-RC.0 is the minimum version
RxJS 7.4.x is the minimum required version

- **store:** The `StoreConfig` argument is removed from the `StoreModule.forFeature` signature with `FeatureSlice`.

BEFORE:

The `StoreModule.forFeature` signature with `FeatureSlice` has `StoreConfig` as the second input argument, but the configuration isn't registered if passed.

AFTER:

The `StoreModule.forFeature` signature with `FeatureSlice` no longer has `StoreConfig` as the second input argument.

- **store:** `initialState` needs to match the interface of the store/feature.

BEFORE:

Missing properties were valid

```ts
StoreModule.forRoot(reducers, {
  initialState: { notExisting: 3 },
  metaReducers: [metaReducer],
});
```

AFTER:

A type error is produced for initialState that does not match the store/feature

```ts
StoreModule.forRoot(reducers, {
  initialState: { notExisting: 3 },
  metaReducers: [metaReducer],
});
```

- **component:** PushPipe no longer has a class-level generic type parameter.

BEFORE:

Use of PushPipe outside of component templates required a generic

AFTER:

Use of PushPipe outside of component templates no longer requires a generic

- **store:** Types for props outside an action creator is more strictly checked

BEFORE:

Usage of `props` outside of an action creator with invalid types was allowed

AFTER:

Usage of `props` outside of an action creator now breaks for invalid types

- **effects:** The create-effect-migration migration is removed

BEFORE:

The Effect decorator removal and migration are done manually through schematics.

AFTER:

The Effect decorator removal and migration are performed automatically on upgrade to version 13 of NgRx Effects.

<a name="12.5.1"></a>

## [12.5.1](https://github.com/ngrx/platform/compare/12.5.0...12.5.1) (2021-10-25)

### Bug Fixes

- **router-store:** google upstream ([#3177](https://github.com/ngrx/platform/issues/3177)) ([20afb21](https://github.com/ngrx/platform/commit/20afb21))

<a name="12.5.0"></a>

# [12.5.0](https://github.com/ngrx/platform/compare/12.4.0...12.5.0) (2021-10-14)

### Bug Fixes

- **entity:** set correct input argument types for removeMutably methods ([#3148](https://github.com/ngrx/platform/issues/3148)) ([9611415](https://github.com/ngrx/platform/commit/9611415))
- **schematics:** add missing method ([#3157](https://github.com/ngrx/platform/issues/3157)) ([2a927a2](https://github.com/ngrx/platform/commit/2a927a2))
- **schematics:** use prefix option in feature schematic ([#3139](https://github.com/ngrx/platform/issues/3139)) ([5fa8890](https://github.com/ngrx/platform/commit/5fa8890)), closes [#3116](https://github.com/ngrx/platform/issues/3116)

### Features

- update to RxJS 7.4.x ([#3109](https://github.com/ngrx/platform/issues/3109)) ([4a42550](https://github.com/ngrx/platform/commit/4a42550))

<a name="12.4.0"></a>

# [12.4.0](https://github.com/ngrx/platform/compare/12.3.0...12.4.0) (2021-08-11)

### Bug Fixes

- **component:** capture errors from observable when using `ngrxPush` pipe and `ngrxLet` directive ([23c846b](https://github.com/ngrx/platform/commit/23c846b)), closes [#3100](https://github.com/ngrx/platform/issues/3100)

### Features

- **router-store:** add createRouterSelector to select router data for default config ([#3103](https://github.com/ngrx/platform/issues/3103)) ([507f58e](https://github.com/ngrx/platform/commit/507f58e))

<a name="12.3.0"></a>

# [12.3.0](https://github.com/ngrx/platform/compare/12.2.0...12.3.0) (2021-07-22)

### Bug Fixes

- **component-store:** accept error type in tapResponse with strict generic checks ([#3068](https://github.com/ngrx/platform/issues/3068)) ([3e02e37](https://github.com/ngrx/platform/commit/3e02e37)), closes [#3056](https://github.com/ngrx/platform/issues/3056)
- **data:** immutably delete an entity ([#3040](https://github.com/ngrx/platform/issues/3040)) ([a6c199f](https://github.com/ngrx/platform/commit/a6c199f)), closes [#2553](https://github.com/ngrx/platform/issues/2553)
- **data:** SAVE_ENTITIES_CANCELED type in SaveEntitiesCanceled ([#3079](https://github.com/ngrx/platform/issues/3079)) ([b24c1e0](https://github.com/ngrx/platform/commit/b24c1e0)), closes [#3065](https://github.com/ngrx/platform/issues/3065)
- **store:** make readonly usage consistent ([#3050](https://github.com/ngrx/platform/issues/3050)) ([#3069](https://github.com/ngrx/platform/issues/3069)) ([a39b278](https://github.com/ngrx/platform/commit/a39b278))

### Features

- **store:** make reducers accessible from ReducerManager ([#3064](https://github.com/ngrx/platform/issues/3064)) ([bf2bd1a](https://github.com/ngrx/platform/commit/bf2bd1a))

<a name="12.2.0"></a>

# [12.2.0](https://github.com/ngrx/platform/compare/12.1.0...12.2.0) (2021-06-29)

### Bug Fixes

- **component:** avoid early destruction of view in ngrxLet which interfered with animations ([#2890](https://github.com/ngrx/platform/issues/2890)) ([#3045](https://github.com/ngrx/platform/issues/3045)) ([7515e36](https://github.com/ngrx/platform/commit/7515e36))
- **data:** make options optional on add with partial ([#3043](https://github.com/ngrx/platform/issues/3043)) ([1620df9](https://github.com/ngrx/platform/commit/1620df9))

### Features

- **component-store:** accept error type in `tapResponse` ([#3056](https://github.com/ngrx/platform/issues/3056)) ([61e1963](https://github.com/ngrx/platform/commit/61e1963))

<a name="12.1.0"></a>

# [12.1.0](https://github.com/ngrx/platform/compare/12.0.0...12.1.0) (2021-06-09)

### Bug Fixes

- **data:** remove strict typing for optimistic false ([#3020](https://github.com/ngrx/platform/issues/3020)) ([3b565b4](https://github.com/ngrx/platform/commit/3b565b4)), closes [#2928](https://github.com/ngrx/platform/issues/2928)
- **store:** add ESLint plugin to TS overrides when possible ([#3032](https://github.com/ngrx/platform/issues/3032)) ([5102a34](https://github.com/ngrx/platform/commit/5102a34)), closes [#3031](https://github.com/ngrx/platform/issues/3031)

### Features

- **entity:** new `setMany` adapter ([#3026](https://github.com/ngrx/platform/issues/3026)) ([#3029](https://github.com/ngrx/platform/issues/3029)) ([a02ea9f](https://github.com/ngrx/platform/commit/a02ea9f))
- **schematics:** add the ability to create actions with the prefix ([#3025](https://github.com/ngrx/platform/issues/3025)) ([15bc0df](https://github.com/ngrx/platform/commit/15bc0df))
- **store:** add createFeature ([#3033](https://github.com/ngrx/platform/issues/3033)) ([5fd1c7b](https://github.com/ngrx/platform/commit/5fd1c7b)), closes [#2974](https://github.com/ngrx/platform/issues/2974)
- **store-devtools:** add autoPause option ([#2941](https://github.com/ngrx/platform/issues/2941)) ([698bd29](https://github.com/ngrx/platform/commit/698bd29)), closes [#2722](https://github.com/ngrx/platform/issues/2722)

<a name="12.0.0"></a>

# [12.0.0](https://github.com/ngrx/platform/compare/12.0.0-rc.0...12.0.0) (2021-05-12)

### Features

- **store:** register eslint-plugin-ngrx with ng add ([#3014](https://github.com/ngrx/platform/issues/3014)) ([5259890](https://github.com/ngrx/platform/commit/5259890))

<a name="12.0.0-rc.0"></a>

# [12.0.0-rc.0](https://github.com/ngrx/platform/compare/12.0.0-beta.1...12.0.0-rc.0) (2021-05-05)

<a name="12.0.0-beta.1"></a>

# [12.0.0-beta.1](https://github.com/ngrx/platform/compare/12.0.0-beta.0...12.0.0-beta.1) (2021-04-29)

### Bug Fixes

- **schematics:** assert empty as action observable ([#3005](https://github.com/ngrx/platform/issues/3005)) ([61b1ac7](https://github.com/ngrx/platform/commit/61b1ac7)), closes [#2931](https://github.com/ngrx/platform/issues/2931)

<a name="12.0.0-beta.0"></a>

# [12.0.0-beta.0](https://github.com/ngrx/platform/compare/11.1.1...12.0.0-beta.0) (2021-04-27)

### Bug Fixes

- **component:** include files in ng-add schematics ([ad13c9c](https://github.com/ngrx/platform/commit/ad13c9c))
- **component-store:** include files in ng-add schematics ([bfef622](https://github.com/ngrx/platform/commit/bfef622))
- **data:** include files in ng-add schematics ([526edd9](https://github.com/ngrx/platform/commit/526edd9))
- **effects:** ng-add schematics will generate effects files properly ([4389307](https://github.com/ngrx/platform/commit/4389307))
- **entity:** include files in ng-add schematics ([4d9f647](https://github.com/ngrx/platform/commit/4d9f647))
- **router-store:** include files in ng-add schematics ([eb71d5c](https://github.com/ngrx/platform/commit/eb71d5c))
- **store:** ng-add schematics will generate router files if minimal set to false ([74a2671](https://github.com/ngrx/platform/commit/74a2671))
- **store-devtools:** include files in ng-add schematics ([ac706de](https://github.com/ngrx/platform/commit/ac706de))

### build

- update to Angular libraries to version 12 RC.0 ([#3000](https://github.com/ngrx/platform/issues/3000)) ([4fb030e](https://github.com/ngrx/platform/commit/4fb030e))
- update to Nx version 12.0.x and TypeScript 4.1.x ([#2999](https://github.com/ngrx/platform/issues/2999)) ([cb258cb](https://github.com/ngrx/platform/commit/cb258cb))

### Features

- **store:** deprecate selectors with props ([#2993](https://github.com/ngrx/platform/issues/2993)) ([7c6d4e4](https://github.com/ngrx/platform/commit/7c6d4e4))

### BREAKING CHANGES

- Minimum versions of Angular and TypeScript have been updated

BEFORE:

Minimum of Angular version 11.x
Minimum of TypeScript 4.1.x

AFTER:

Minimum of Angular version 12.x
Minimum of TypeScript 4.2.x

- The minimum TypeScript version has been updated to 4.1.x

BEFORE:

The minimum TypeScript version is 4.0.x

AFTER:

The minimum TypeScript version is 4.1.x

<a name="11.1.1"></a>

## [11.1.1](https://github.com/ngrx/platform/compare/11.1.0...11.1.1) (2021-04-20)

### Bug Fixes

- **store:** adjust types to allow a generic reducer ([#2996](https://github.com/ngrx/platform/issues/2996)) ([7da57bc](https://github.com/ngrx/platform/commit/7da57bc)), closes [#2982](https://github.com/ngrx/platform/issues/2982)

### Features

- **store:** add FunctionWithParametersType to public API ([#2988](https://github.com/ngrx/platform/issues/2988)) ([fe7d058](https://github.com/ngrx/platform/commit/fe7d058)), closes [#2983](https://github.com/ngrx/platform/issues/2983)

<a name="11.1.0"></a>

# [11.1.0](https://github.com/ngrx/platform/compare/11.0.1...11.1.0) (2021-03-31)

### Bug Fixes

- **effects:** add support for Proxy objects in Effects ([#2976](https://github.com/ngrx/platform/issues/2976)) ([5f5b679](https://github.com/ngrx/platform/commit/5f5b679)), closes [#2975](https://github.com/ngrx/platform/issues/2975)
- **store:** allow default parameters in function action ([#2954](https://github.com/ngrx/platform/issues/2954)) ([9b23403](https://github.com/ngrx/platform/commit/9b23403)), closes [#2948](https://github.com/ngrx/platform/issues/2948)
- **store:** allow primitive types ([#2967](https://github.com/ngrx/platform/issues/2967)) ([eecc8ce](https://github.com/ngrx/platform/commit/eecc8ce)), closes [#2966](https://github.com/ngrx/platform/issues/2966)

### Features

- **component-store:** add ability for patchState to accept Observable ([#2937](https://github.com/ngrx/platform/issues/2937)) ([8930e22](https://github.com/ngrx/platform/commit/8930e22)), closes [#2852](https://github.com/ngrx/platform/issues/2852)
- **schematics:** add component store schematics ([#2886](https://github.com/ngrx/platform/issues/2886)) ([f086f80](https://github.com/ngrx/platform/commit/f086f80)), closes [#2570](https://github.com/ngrx/platform/issues/2570)

<a name="11.0.1"></a>

## [11.0.1](https://github.com/ngrx/platform/compare/11.0.0...11.0.1) (2021-02-15)

### Bug Fixes

- **schematics:** add index file ([#2923](https://github.com/ngrx/platform/issues/2923)) ([775c794](https://github.com/ngrx/platform/commit/775c794)), closes [#2917](https://github.com/ngrx/platform/issues/2917)
- **store:** forFeature using instanceof instead of typeof ([#2922](https://github.com/ngrx/platform/issues/2922)) ([2bea205](https://github.com/ngrx/platform/commit/2bea205)), closes [#2919](https://github.com/ngrx/platform/issues/2919)

<a name="11.0.0"></a>

# [11.0.0](https://github.com/ngrx/platform/compare/11.0.0-rc.0...11.0.0) (2021-02-09)

<a name="11.0.0-rc.0"></a>

# [11.0.0-rc.0](https://github.com/ngrx/platform/compare/11.0.0-beta.2...11.0.0-rc.0) (2021-02-04)

<a name="11.0.0-beta.2"></a>

# [11.0.0-beta.2](https://github.com/ngrx/platform/compare/11.0.0-beta.0...11.0.0-beta.2) (2021-02-02)

### Bug Fixes

- **component:** remove ? from LetViewContext props to prevent 'possibly undefined' error in strict mode ([#2876](https://github.com/ngrx/platform/issues/2876)) ([c3ac252](https://github.com/ngrx/platform/commit/c3ac252))
- **component:** transform to Observable if Input is Promise ([b611367](https://github.com/ngrx/platform/commit/b611367))
- **data:** make entity param partial when is not optimistic ([#2899](https://github.com/ngrx/platform/issues/2899)) ([bb70e6c](https://github.com/ngrx/platform/commit/bb70e6c)), closes [#2870](https://github.com/ngrx/platform/issues/2870)
- **data:** type overloaded add for is optimistic true | undefined ([#2906](https://github.com/ngrx/platform/issues/2906)) ([6d46ac4](https://github.com/ngrx/platform/commit/6d46ac4))
- **push:** fix return typing for observables to include undefined ([#2907](https://github.com/ngrx/platform/issues/2907)) ([abcc599](https://github.com/ngrx/platform/commit/abcc599)), closes [#2888](https://github.com/ngrx/platform/issues/2888)
- **router-store:** cast return type as RouterReducerState ([#2887](https://github.com/ngrx/platform/issues/2887)) ([d489484](https://github.com/ngrx/platform/commit/d489484))

### Features

- **effects:** concatLatestFrom operator ([#2760](https://github.com/ngrx/platform/issues/2760)) ([55f0f7a](https://github.com/ngrx/platform/commit/55f0f7a))
- **effects:** deprecate @Effect decorator ([#2855](https://github.com/ngrx/platform/issues/2855)) ([dbd1ecf](https://github.com/ngrx/platform/commit/dbd1ecf))
- **store:** add object-style StoreModule.forFeature overload w/fixes ([#2885](https://github.com/ngrx/platform/issues/2885)) ([a9468e1](https://github.com/ngrx/platform/commit/a9468e1)), closes [#2821](https://github.com/ngrx/platform/issues/2821) [#2809](https://github.com/ngrx/platform/issues/2809)
- **store-devtools:** pass entire error object to the error handler ([#2853](https://github.com/ngrx/platform/issues/2853)) ([ce28b44](https://github.com/ngrx/platform/commit/ce28b44)), closes [#2824](https://github.com/ngrx/platform/issues/2824)

### Performance Improvements

- **schematics:** speed up create effect migration ([#2873](https://github.com/ngrx/platform/issues/2873)) ([2f5dcb4](https://github.com/ngrx/platform/commit/2f5dcb4))

### BREAKING CHANGES

- **push:** BEFORE:

ngrxPush typing doesn't consider `undefined` when the input type is an observable

AFTER:

ngrxPush typing considers `undefined` when the input type is an observable

<a name="11.0.0-beta.0"></a>

# [11.0.0-beta.0](https://github.com/ngrx/platform/compare/10.0.1...11.0.0-beta.0) (2021-01-05)

### Bug Fixes

- update Angular peer dependencies to version 11 ([#2843](https://github.com/ngrx/platform/issues/2843)) ([f63d281](https://github.com/ngrx/platform/commit/f63d281)), closes [#2842](https://github.com/ngrx/platform/issues/2842)
- **component:** add schematic assets to ng-package.json ([9598527](https://github.com/ngrx/platform/commit/9598527)), closes [#2819](https://github.com/ngrx/platform/issues/2819)
- **component-store:** add schematic assets to ng-package.json ([0e3b52d](https://github.com/ngrx/platform/commit/0e3b52d)), closes [#2819](https://github.com/ngrx/platform/issues/2819)
- **component-store:** adjust updater to accept partials ([#2765](https://github.com/ngrx/platform/issues/2765)) ([b54b9b6](https://github.com/ngrx/platform/commit/b54b9b6)), closes [#2754](https://github.com/ngrx/platform/issues/2754)
- **router-store:** ingore slash when comparing routes ([#2834](https://github.com/ngrx/platform/issues/2834)) ([cad3f60](https://github.com/ngrx/platform/commit/cad3f60)), closes [#2829](https://github.com/ngrx/platform/issues/2829) [#1781](https://github.com/ngrx/platform/issues/1781)
- **schematics:** add schematics to devDependencies ([#2784](https://github.com/ngrx/platform/issues/2784)) ([daf1889](https://github.com/ngrx/platform/commit/daf1889))
- **store:** add noop for all methods in MockReducerManager ([#2777](https://github.com/ngrx/platform/issues/2777)) ([a489b48](https://github.com/ngrx/platform/commit/a489b48)), closes [#2776](https://github.com/ngrx/platform/issues/2776)
- **store:** correct types for SelectorFactoryConfig ([#2752](https://github.com/ngrx/platform/issues/2752)) ([aa9bf1a](https://github.com/ngrx/platform/commit/aa9bf1a))

### Code Refactoring

- use consistent naming of injection tokens across packages ([#2737](https://github.com/ngrx/platform/issues/2737)) ([e02d0d4](https://github.com/ngrx/platform/commit/e02d0d4))

### Features

- **component-store:** add patchState method ([#2788](https://github.com/ngrx/platform/issues/2788)) ([ecedadb](https://github.com/ngrx/platform/commit/ecedadb))
- **component-store:** add tapResponse operator ([#2763](https://github.com/ngrx/platform/issues/2763)) ([d1873c9](https://github.com/ngrx/platform/commit/d1873c9))
- **component-store:** allow more than 4 selects ([#2841](https://github.com/ngrx/platform/issues/2841)) ([7c29320](https://github.com/ngrx/platform/commit/7c29320))
- **effects:** add support for provideMockActions outside of the TestBed ([#2762](https://github.com/ngrx/platform/issues/2762)) ([c47114c](https://github.com/ngrx/platform/commit/c47114c))
- **effects:** allow usage of empty forRoot array multiple times ([#2774](https://github.com/ngrx/platform/issues/2774)) ([5219ff5](https://github.com/ngrx/platform/commit/5219ff5))
- **entity:** remove addAll ([#2783](https://github.com/ngrx/platform/issues/2783)) ([93a4754](https://github.com/ngrx/platform/commit/93a4754))
- **router-store:** add selectParamFromRouterState selector ([#2771](https://github.com/ngrx/platform/issues/2771)) ([3a1f359](https://github.com/ngrx/platform/commit/3a1f359)), closes [#2758](https://github.com/ngrx/platform/issues/2758)
- **router-store:** Add urlAfterRedirects ([#2775](https://github.com/ngrx/platform/issues/2775)) ([14553f6](https://github.com/ngrx/platform/commit/14553f6))
- **store:** add object-style StoreModule.forFeature overload ([#2821](https://github.com/ngrx/platform/issues/2821)) ([17571e5](https://github.com/ngrx/platform/commit/17571e5)), closes [#2809](https://github.com/ngrx/platform/issues/2809)
- **store:** add support for provideMockStore outside of the TestBed ([#2759](https://github.com/ngrx/platform/issues/2759)) ([1650582](https://github.com/ngrx/platform/commit/1650582)), closes [#2745](https://github.com/ngrx/platform/issues/2745)

### Performance Improvements

- **router-store:** optimize selectQueryParams, selectQueryParam and selectFragment selectors ([#2764](https://github.com/ngrx/platform/issues/2764)) ([918f184](https://github.com/ngrx/platform/commit/918f184))

### BREAKING CHANGES

- **router-store:** Router-store selectors for query params and fragment select from the root router state node. This could potentially break unit tests, but is functionally equivalent to the current behavior at runtime.

BEFORE:

selectQueryParams - returns query params from the last router state node
selectQueryParam - returns a query param from the last router state node
selectFragment - returns the fragment from the last router state node

AFTER:

selectQueryParams - returns query params from routerState.root
selectQueryParam - returns a query param from routerState.root
selectFragment - returns the fragment from routerState.root

- Angular peer dependency versions are bumped to latest major (11)

BEFORE:

Minimum Angular peer dependency version is ^10.0.0

AFTER:

Minimum Angular peer dependency version is ^11.0.0

- **entity:** To overwrite the entities, we previously used the `addAll` method but the method name was confusing.

BEFORE:

```ts
adapter.addAll(action.entities, state);
```

AFTER:

The new method name `setAll` describes the intention better.

```ts
adapter.setAll(action.entities, state);
```

- refactor(data): use the setAll adapter method
- The initial state Injection Token for `@ngrx/component-store` has been renamed

BEFORE:

Injection Token is `initialStateToken`

AFTER:

Injection Token is `INITIAL_STATE_TOKEN`

<a name="10.0.1"></a>

## [10.0.1](https://github.com/ngrx/platform/compare/10.0.0...10.0.1) (2020-10-07)

### Bug Fixes

- **component:** add entry point for schematic ([#2688](https://github.com/ngrx/platform/issues/2688)) ([d937275](https://github.com/ngrx/platform/commit/d937275)), closes [#2683](https://github.com/ngrx/platform/issues/2683)
- **component-store:** add entry point for schematic ([#2687](https://github.com/ngrx/platform/issues/2687)) ([f8928e3](https://github.com/ngrx/platform/commit/f8928e3)), closes [#2682](https://github.com/ngrx/platform/issues/2682)
- **schematics:** prevent ng-add from rewriting other workspace cli options ([#2731](https://github.com/ngrx/platform/issues/2731)) ([37354aa](https://github.com/ngrx/platform/commit/37354aa))
- **store:** prevent unexpected behavior of {} as a props type ([#2728](https://github.com/ngrx/platform/issues/2728)) ([63510a8](https://github.com/ngrx/platform/commit/63510a8))

<a name="10.0.0"></a>

# [10.0.0](https://github.com/ngrx/platform/compare/10.0.0-rc.0...10.0.0) (2020-08-10)

<a name="10.0.0-rc.0"></a>

# [10.0.0-rc.0](https://github.com/ngrx/platform/compare/10.0.0-beta.1...10.0.0-rc.0) (2020-08-06)

### Bug Fixes

- **router-store:** add safety check to schematic ([#2632](https://github.com/ngrx/platform/issues/2632)) ([255e9e8](https://github.com/ngrx/platform/commit/255e9e8))

### Code Refactoring

- **component-store:** fine-tune effect types ([#2645](https://github.com/ngrx/platform/issues/2645)) ([ee92912](https://github.com/ngrx/platform/commit/ee92912))

### Features

- **entity:** add mapOne adapter method ([#2628](https://github.com/ngrx/platform/issues/2628)) ([d1891ad](https://github.com/ngrx/platform/commit/d1891ad)), closes [#2538](https://github.com/ngrx/platform/issues/2538)

### BREAKING CHANGES

- **component-store:** EffectReturnFn has been removed and the effect type is stricter and more predictable.

BEFORE:

If effect was const e = effect((o: Observable<string>) => ....) it was still possible to call e() without passing any strings

AFTER:

If effect was const e = effect((o: Observable<string>) => ....) its not allowed to call e() without passing any strings

<a name="10.0.0-beta.1"></a>

# [10.0.0-beta.1](https://github.com/ngrx/platform/compare/10.0.0-beta.0...10.0.0-beta.1) (2020-07-20)

### Bug Fixes

- **example-app:** update snapshot ([f2af688](https://github.com/ngrx/platform/commit/f2af688))
- **schematics:** fix unit tests for JSON with comments ([155ec1c](https://github.com/ngrx/platform/commit/155ec1c))

### Features

- **component:** add ng-add and ng-update schematics ([#2611](https://github.com/ngrx/platform/issues/2611)) ([3f2bea4](https://github.com/ngrx/platform/commit/3f2bea4))
- **component-store:** add config for debounce selectors ([#2606](https://github.com/ngrx/platform/issues/2606)) ([ddf0271](https://github.com/ngrx/platform/commit/ddf0271))
- **component-store:** add imperative reads ([#2614](https://github.com/ngrx/platform/issues/2614)) ([2146774](https://github.com/ngrx/platform/commit/2146774))
- **component-store:** add ng-add and ng-update schematics ([#2598](https://github.com/ngrx/platform/issues/2598)) ([af7b2cc](https://github.com/ngrx/platform/commit/af7b2cc)), closes [#2569](https://github.com/ngrx/platform/issues/2569)

### schematics

- remove skipTest option ([#2596](https://github.com/ngrx/platform/issues/2596)) ([60cd5cc](https://github.com/ngrx/platform/commit/60cd5cc)), closes [#2561](https://github.com/ngrx/platform/issues/2561)

### BREAKING CHANGES

- The skipTest option has been renamed to skipTests

BEFORE:

ng generate container UsersPage --skipTest

AFTER:

ng generate container UsersPage --skipTests

<a name="10.0.0-beta.0"></a>

# [10.0.0-beta.0](https://github.com/ngrx/platform/compare/9.2.0...10.0.0-beta.0) (2020-06-25)

### Bug Fixes

- **component:** detect zone.js using instanceof comparison ([#2547](https://github.com/ngrx/platform/issues/2547)) ([7128667](https://github.com/ngrx/platform/commit/7128667))
- **component:** removed ivy checks as obsolete ([#2579](https://github.com/ngrx/platform/issues/2579)) ([e239950](https://github.com/ngrx/platform/commit/e239950))
- **component-store:** export EffectReturnFn interface ([#2555](https://github.com/ngrx/platform/issues/2555)) ([f2a2212](https://github.com/ngrx/platform/commit/f2a2212))
- **data:** mergeQuerySet uses mergeStrategy ([#2430](https://github.com/ngrx/platform/issues/2430)) ([e1720b4](https://github.com/ngrx/platform/commit/e1720b4)), closes [#2368](https://github.com/ngrx/platform/issues/2368)
- **entity:** remove incorrect ComparerStr type ([#2584](https://github.com/ngrx/platform/issues/2584)) ([4796c97](https://github.com/ngrx/platform/commit/4796c97))
- **schematics:** add comma before devtools for empty imports ([#2542](https://github.com/ngrx/platform/issues/2542)) ([f2d4ebc](https://github.com/ngrx/platform/commit/f2d4ebc))

### Chores

- update Angular dependencies to latest v10 RC ([#2573](https://github.com/ngrx/platform/issues/2573)) ([ed28449](https://github.com/ngrx/platform/commit/ed28449))

### Features

- **component-store:** add support for selectors ([#2539](https://github.com/ngrx/platform/issues/2539)) ([47e7ba3](https://github.com/ngrx/platform/commit/47e7ba3))
- **component-store:** add support for side effects ([#2544](https://github.com/ngrx/platform/issues/2544)) ([f892cc8](https://github.com/ngrx/platform/commit/f892cc8))
- **component-store:** make library compatible with ViewEngine ([#2580](https://github.com/ngrx/platform/issues/2580)) ([ba0818e](https://github.com/ngrx/platform/commit/ba0818e))
- **router-store:** add route fragment selector ([#2543](https://github.com/ngrx/platform/issues/2543)) ([aba7368](https://github.com/ngrx/platform/commit/aba7368))

### Performance Improvements

- **component-store:** push updates to queueScheduler and single selectors to asapSchedulers ([#2586](https://github.com/ngrx/platform/issues/2586)) ([58073ab](https://github.com/ngrx/platform/commit/58073ab))

### BREAKING CHANGES

- **entity:** The compare function is used in two places, neither of which expect it to be able to return a string:
  The first caller is the Array prototype sort function, and there it "should return a negative, zero, or positive value, depending on the arguments".
  The second caller does a numerical comparison with the result.

Even though an id can be a string, the result of a comparison shouldn't be.

BEFORE:

The sortComparer types allow for a string to be returned

AFTER:

The sortComparer types only allow a number to be returned

- BEFORE:

Angular v9 are minimum dependencies

AFTER:

Angular v10 are minimum dependencies

<a name="9.2.0"></a>

# [9.2.0](https://github.com/ngrx/platform/compare/9.1.2...9.2.0) (2020-05-28)

### Bug Fixes

- **router-store:** selects should return selectors ([#2517](https://github.com/ngrx/platform/issues/2517)) ([831e1e4](https://github.com/ngrx/platform/commit/831e1e4)), closes [#2516](https://github.com/ngrx/platform/issues/2516)
- **schematics:** components should inject the store without generic ([#2512](https://github.com/ngrx/platform/issues/2512)) ([4f7dcdc](https://github.com/ngrx/platform/commit/4f7dcdc))
- **schematics:** use skipTests flag consistently, deprecate skipTest option ([#2522](https://github.com/ngrx/platform/issues/2522)) ([83033d7](https://github.com/ngrx/platform/commit/83033d7)), closes [#2521](https://github.com/ngrx/platform/issues/2521)
- **store:** remove circular dependency for mock import ([#2540](https://github.com/ngrx/platform/issues/2540)) ([4892fa2](https://github.com/ngrx/platform/commit/4892fa2))

### Features

- **component:** add ngrxPush migration ([#2452](https://github.com/ngrx/platform/issues/2452)) ([0775093](https://github.com/ngrx/platform/commit/0775093)), closes [#2450](https://github.com/ngrx/platform/issues/2450)
- **component-store:** add initial setup ([#2519](https://github.com/ngrx/platform/issues/2519)) ([a2657ac](https://github.com/ngrx/platform/commit/a2657ac))
- **component-store:** initialization + updater/setState ([#2528](https://github.com/ngrx/platform/issues/2528)) ([3545df2](https://github.com/ngrx/platform/commit/3545df2))
- **effects:** catch action creators being returned in effect without being called ([#2536](https://github.com/ngrx/platform/issues/2536)) ([100970b](https://github.com/ngrx/platform/commit/100970b))
- **store:** add ngrxMockEnvironment function to control output during testing ([#2513](https://github.com/ngrx/platform/issues/2513)) ([da1a0c0](https://github.com/ngrx/platform/commit/da1a0c0)), closes [#2363](https://github.com/ngrx/platform/issues/2363)
- **store:** add runtime check for action type uniqueness ([#2520](https://github.com/ngrx/platform/issues/2520)) ([2972980](https://github.com/ngrx/platform/commit/2972980))

<a name="9.1.2"></a>

## [9.1.2](https://github.com/ngrx/platform/compare/9.1.1...9.1.2) (2020-05-06)

<a name="9.1.1"></a>

## [9.1.1](https://github.com/ngrx/platform/compare/9.1.0...9.1.1) (2020-05-05)

### Bug Fixes

- **router-store:** selectors should return MemoizedSelector ([#2492](https://github.com/ngrx/platform/issues/2492)) ([39a4b91](https://github.com/ngrx/platform/commit/39a4b91))
- **schematics:** use Angular default properties when not defined ([#2507](https://github.com/ngrx/platform/issues/2507)) ([7cd0624](https://github.com/ngrx/platform/commit/7cd0624)), closes [#1036](https://github.com/ngrx/platform/issues/1036)
- **store:** ignore Ivy in runtime checks ([#2491](https://github.com/ngrx/platform/issues/2491)) ([46d752f](https://github.com/ngrx/platform/commit/46d752f)), closes [#2404](https://github.com/ngrx/platform/issues/2404)

<a name="9.1.0"></a>

# [9.1.0](https://github.com/ngrx/platform/compare/9.0.0...9.1.0) (2020-04-07)

### Bug Fixes

- **component:** add docs overview ([#2444](https://github.com/ngrx/platform/issues/2444)) ([a279dd1](https://github.com/ngrx/platform/commit/a279dd1)), closes [#2442](https://github.com/ngrx/platform/issues/2442)
- **example:** optimistically add/remove book from collection ([#2429](https://github.com/ngrx/platform/issues/2429)) ([b0aacf7](https://github.com/ngrx/platform/commit/b0aacf7)), closes [#2417](https://github.com/ngrx/platform/issues/2417)
- **schematics:** install v9 with ng-add ([#2455](https://github.com/ngrx/platform/issues/2455)) ([19f1bda](https://github.com/ngrx/platform/commit/19f1bda))
- **toObservableValue:** accommodate all observable inputs ([#2471](https://github.com/ngrx/platform/issues/2471)) ([468303a](https://github.com/ngrx/platform/commit/468303a))

### Features

- **component:** add ngrxPush pipe and ngrxLet directive to [@ngrx](https://github.com/ngrx)/component package ([#2046](https://github.com/ngrx/platform/issues/2046)) ([464073d](https://github.com/ngrx/platform/commit/464073d))
- **effects:** add user provided effects to EffectsModule.forFeature ([#2231](https://github.com/ngrx/platform/issues/2231)) ([59ce3e2](https://github.com/ngrx/platform/commit/59ce3e2)), closes [#2232](https://github.com/ngrx/platform/issues/2232)
- **schematics:** export reducer directly when Ivy is enabled ([#2440](https://github.com/ngrx/platform/issues/2440)) ([b68fa67](https://github.com/ngrx/platform/commit/b68fa67))

<a name="9.0.0"></a>

# [9.0.0](https://github.com/ngrx/platform/compare/9.0.0-rc.0...9.0.0) (2020-03-09)

### Features

- **effects:** add EffectsRunner to public API ([#2427](https://github.com/ngrx/platform/issues/2427)) ([f66fd64](https://github.com/ngrx/platform/commit/f66fd64))

<a name="9.0.0-rc.0"></a>

# [9.0.0-rc.0](https://github.com/ngrx/platform/compare/9.0.0-beta.2...9.0.0-rc.0) (2020-03-02)

### Bug Fixes

- **data:** correct AppEntityServices example in ngrx data doc page ([#2413](https://github.com/ngrx/platform/issues/2413)) ([711ba0e](https://github.com/ngrx/platform/commit/711ba0e)), closes [#2280](https://github.com/ngrx/platform/issues/2280)
- **example:** fix a typo selectShowSidenav ([#2414](https://github.com/ngrx/platform/issues/2414)) ([c9ebb06](https://github.com/ngrx/platform/commit/c9ebb06))

### Features

- **entity:** add 'setOne' method to entity adapter ([#2410](https://github.com/ngrx/platform/issues/2410)) ([4b4bb85](https://github.com/ngrx/platform/commit/4b4bb85)), closes [#2369](https://github.com/ngrx/platform/issues/2369)

<a name="9.0.0-beta.2"></a>

# [9.0.0-beta.2](https://github.com/ngrx/platform/compare/9.0.0-beta.1...9.0.0-beta.2) (2020-02-25)

### Bug Fixes

- **docs:** replace duplicate link ([#2399](https://github.com/ngrx/platform/issues/2399)) ([d4502b4](https://github.com/ngrx/platform/commit/d4502b4))
- **effects:** use source instance for ngrxOnRunEffects to retain context ([#2401](https://github.com/ngrx/platform/issues/2401)) ([79c830c](https://github.com/ngrx/platform/commit/79c830c))

### Features

- **store-devtools:** add INITIAL_OPTIONS to public API ([#2405](https://github.com/ngrx/platform/issues/2405)) ([37f91db](https://github.com/ngrx/platform/commit/37f91db)), closes [#1470](https://github.com/ngrx/platform/issues/1470)

<a name="9.0.0-beta.1"></a>

# [9.0.0-beta.1](https://github.com/ngrx/platform/compare/9.0.0-beta.0...9.0.0-beta.1) (2020-02-18)

### Bug Fixes

- **data:** Angular 9 style ModuleWithProvider ([#2356](https://github.com/ngrx/platform/issues/2356)) ([#2357](https://github.com/ngrx/platform/issues/2357)) ([182f140](https://github.com/ngrx/platform/commit/182f140))
- **data:** change type of filter observable ([#2349](https://github.com/ngrx/platform/issues/2349)) ([94f3ef1](https://github.com/ngrx/platform/commit/94f3ef1)), closes [#2337](https://github.com/ngrx/platform/issues/2337)
- **data:** EntityDataModuleWithoutEffect ModuleWithProviders ([#2366](https://github.com/ngrx/platform/issues/2366)) ([234ce84](https://github.com/ngrx/platform/commit/234ce84))
- **data:** make mergeServerUpserts change state immutably ([#2374](https://github.com/ngrx/platform/issues/2374)) ([#2389](https://github.com/ngrx/platform/issues/2389)) ([b3a49c1](https://github.com/ngrx/platform/commit/b3a49c1))
- **data:** make undoMany remove tracking changes in changeState ([#2346](https://github.com/ngrx/platform/issues/2346)) ([#2352](https://github.com/ngrx/platform/issues/2352)) ([637b2c7](https://github.com/ngrx/platform/commit/637b2c7))
- **data:** use ng_package for bundling instead of pkg_npm ([9a935b1](https://github.com/ngrx/platform/commit/9a935b1))
- **effects:** dispatch OnInitEffects action after registration ([#2386](https://github.com/ngrx/platform/issues/2386)) ([daf1e64](https://github.com/ngrx/platform/commit/daf1e64)), closes [#2373](https://github.com/ngrx/platform/issues/2373)
- **store:** provide the same instance of MockStore ([#2381](https://github.com/ngrx/platform/issues/2381)) ([827f336](https://github.com/ngrx/platform/commit/827f336)), closes [#2362](https://github.com/ngrx/platform/issues/2362)

### Features

- **effects:** limit retries to 10 by default ([#2376](https://github.com/ngrx/platform/issues/2376)) ([88124a7](https://github.com/ngrx/platform/commit/88124a7)), closes [#2303](https://github.com/ngrx/platform/issues/2303)
- **store:** add strictActionWithinNgZone runtime check ([#2364](https://github.com/ngrx/platform/issues/2364)) ([4cae255](https://github.com/ngrx/platform/commit/4cae255)), closes [#2339](https://github.com/ngrx/platform/issues/2339)
- **store:** testing - clean up mock store and remove static property ([#2361](https://github.com/ngrx/platform/issues/2361)) ([ee2c114](https://github.com/ngrx/platform/commit/ee2c114))

<a name="9.0.0-beta.0"></a>

# [9.0.0-beta.0](https://github.com/ngrx/platform/compare/8.6.0...9.0.0-beta.0) (2020-02-06)

### Bug Fixes

- **data:** allow additional selectors in entitySelectors$ ([#2332](https://github.com/ngrx/platform/issues/2332)) ([900bf75](https://github.com/ngrx/platform/commit/900bf75))
- **effects:** dispatch init action once ([#2164](https://github.com/ngrx/platform/issues/2164)) ([a528320](https://github.com/ngrx/platform/commit/a528320)), closes [#2106](https://github.com/ngrx/platform/issues/2106)
- **effects:** fix specs for ng-add tests ([#2314](https://github.com/ngrx/platform/issues/2314)) ([98d6606](https://github.com/ngrx/platform/commit/98d6606))
- **schematics:** migrate spec to skipTest to be in line with Angular CLI ([#2253](https://github.com/ngrx/platform/issues/2253)) ([714ae5f](https://github.com/ngrx/platform/commit/714ae5f)), closes [#2242](https://github.com/ngrx/platform/issues/2242)
- **store:** add not allowed check to action creator config ([#2313](https://github.com/ngrx/platform/issues/2313)) ([f6336d5](https://github.com/ngrx/platform/commit/f6336d5))
- **store:** allow union of types in props ([#2301](https://github.com/ngrx/platform/issues/2301)) ([33241cb](https://github.com/ngrx/platform/commit/33241cb))
- **store:** replace Creator with ActionCreator on createAction ([#2299](https://github.com/ngrx/platform/issues/2299)) ([fe6bfa7](https://github.com/ngrx/platform/commit/fe6bfa7))

### Chores

- update deps to Angular version 9 ([#2234](https://github.com/ngrx/platform/issues/2234)) ([b146af5](https://github.com/ngrx/platform/commit/b146af5))

### Code Refactoring

- **schematics:** Flag minimal is set to true ([#2258](https://github.com/ngrx/platform/issues/2258)) ([7ecaa22](https://github.com/ngrx/platform/commit/7ecaa22)), closes [#2250](https://github.com/ngrx/platform/issues/2250)
- **schematics:** migrate from styleext to style ([#2254](https://github.com/ngrx/platform/issues/2254)) ([2801018](https://github.com/ngrx/platform/commit/2801018)), closes [#2248](https://github.com/ngrx/platform/issues/2248)

### Features

- **component:** initial setup ([#2257](https://github.com/ngrx/platform/issues/2257)) ([b8a769a](https://github.com/ngrx/platform/commit/b8a769a))
- **docs:** add presskit page ([#2296](https://github.com/ngrx/platform/issues/2296)) ([9ac1165](https://github.com/ngrx/platform/commit/9ac1165)), closes [#2293](https://github.com/ngrx/platform/issues/2293)
- **effects:** add migration for breaking change that renames effects error handler config key ([#2335](https://github.com/ngrx/platform/issues/2335)) ([93b4081](https://github.com/ngrx/platform/commit/93b4081))
- **effects:** make resubscription handler overridable ([#2295](https://github.com/ngrx/platform/issues/2295)) ([3a9ad63](https://github.com/ngrx/platform/commit/3a9ad63)), closes [#2294](https://github.com/ngrx/platform/issues/2294)
- **entity:** deprecate addAll and rename it to setAll ([#2348](https://github.com/ngrx/platform/issues/2348)) ([27f5059](https://github.com/ngrx/platform/commit/27f5059)), closes [#2330](https://github.com/ngrx/platform/issues/2330)
- **router:** enabling MinimalRouterStateSerializer by default ([#2326](https://github.com/ngrx/platform/issues/2326)) ([ba37ad8](https://github.com/ngrx/platform/commit/ba37ad8)), closes [#2225](https://github.com/ngrx/platform/issues/2225)
- **router-store:** add migration to add the default serializer ([#2291](https://github.com/ngrx/platform/issues/2291)) ([b742a8c](https://github.com/ngrx/platform/commit/b742a8c))
- **schematics:** update creators to the default ([6149753](https://github.com/ngrx/platform/commit/6149753))
- **store:** add default generic type to Store and MockStore ([#2325](https://github.com/ngrx/platform/issues/2325)) ([09daeb9](https://github.com/ngrx/platform/commit/09daeb9))
- **store:** ignore actions from NgRx libraries in runtime checks ([#2351](https://github.com/ngrx/platform/issues/2351)) ([0dabfc4](https://github.com/ngrx/platform/commit/0dabfc4))
- update to Angular 9-rc.13 ([#2345](https://github.com/ngrx/platform/issues/2345)) ([d7fdf7f](https://github.com/ngrx/platform/commit/d7fdf7f))
- **store:** add clearResult to reset a mock selector ([#2270](https://github.com/ngrx/platform/issues/2270)) ([803295b](https://github.com/ngrx/platform/commit/803295b)), closes [#2244](https://github.com/ngrx/platform/issues/2244)
- **store:** compile time errors when action creators being passed to dispatch without () ([#2306](https://github.com/ngrx/platform/issues/2306)) ([98b74ad](https://github.com/ngrx/platform/commit/98b74ad))
- **store:** enable immutability checks by default ([#2266](https://github.com/ngrx/platform/issues/2266)) ([1758d34](https://github.com/ngrx/platform/commit/1758d34)), closes [#2217](https://github.com/ngrx/platform/issues/2217)
- **store:** testing - expose MockStore provider ([#2331](https://github.com/ngrx/platform/issues/2331)) ([ef5cd5f](https://github.com/ngrx/platform/commit/ef5cd5f)), closes [#2328](https://github.com/ngrx/platform/issues/2328)

### BREAKING CHANGES

- **router:** The MinimalRouterStateSerializer is enabled by default.

BEFORE:

If no router state serializer is provided through the configuration of router store, the DefaultRouterStateSerializer is used.

AFTER:

If no router state serializer is provided through the configuration of router store, the MinimalRouterStateSerializer is used.

- **effects:** `resubscribeOnError` renamed to `useEffectsErrorHandler` in `createEffect` metadata

BEFORE:

```ts
class MyEffects {
  effect$ = createEffect(() => stream$, {
    resubscribeOnError: true, // default
  });
}
```

AFTER:

```ts
class MyEffects {
  effect$ = createEffect(() => stream$, {
    useEffectsErrorHandler: true, // default
  });
}
```

- **effects:** BEFORE:

When the effect class was registered, the init action would be dispatched.
If the effect was provided in multiple lazy loaded modules, the init action would be dispatched for every module.

AFTER:

The init action is only dispatched once
The init action is now dispatched based on the identifier of the effect (via ngrxOnIdentifyEffects)

- **schematics:** To be inline with the Angular CLI, we migrated the `--spec` to `--skipTest`.
  By default skipTest is false, this way you will always be provided with `*.spec.ts files`

BEFORE:

```sh

ng generate action User --spec

```

AFTER:

```sh

ng generate action User

```

- **store:** BEFORE:

Using `mockSelector.setResult(undefined)` resulted in clearing the
return value.

AFTER:

Using `mockSelector.setResult(undefined)` will set the return value of
the selector to `undefined`.
To reset the mock selector, use `mockSelector.clearResult()`.

- **schematics:** To be inline with the Angular CLI, the `styleExt` option has been changed to `style`.

BEFORE:

```ts
"@schematics/angular:component": {
      "inlineStyle": true,
      "prefix": "aio",
      "styleext": "scss"
    }
...
```

AFTER:

```ts
"@schematics/angular:component": {
      "inlineStyle": true,
      "prefix": "aio",
      "style": "scss"
    }
....
```

- **store:** Immutability checks are enabled by default.

BEFORE:

Immutability checks are opt-in.

AFTER:

If state or action is mutated then there will be a run time exception thrown.

- **schematics:** With this change by default the minimal setup for `@ngrx/store` will be generated.

BEFORE:

```ts
@NgModule({
  declarations: [
    AppComponent,
  ],
  imports: [
    BrowserModule,
    StoreModule.forRoot(reducers, {
      metaReducers,
      runtimeChecks: {
        strictStateImmutability: true,
        strictActionImmutability: true
      }
    }),
    .....
  ],
  providers: [],
  bootstrap: [AppComponent]
})
```

AFTER:

```ts
@NgModule({
  declarations: [
    AppComponent,
  ],
  imports: [
    BrowserModule,
    StoreModule.forRoot({})
    ....
  ],
  providers: [],
  bootstrap: [AppComponent]
})
```

- **schematics:** BEFORE:

The create functions weren't the default to create actions, reducers and effects

AFTER:

The create functions are the default to create actions (createAction, reducers (createReducer) and effects (createEffect)
To fallback to the previous generators, use

`sh
ng generate reducer ReducerName --creators=false
`

- Libraries will depend on Angular version 9

<a name="8.6.0"></a>

# [8.6.0](https://github.com/ngrx/platform/compare/8.5.2...8.6.0) (2019-12-18)

### Features

- **router-store:** add action creator for root router actions ([#2272](https://github.com/ngrx/platform/issues/2272)) ([f17589f](https://github.com/ngrx/platform/commit/f17589f)), closes [#2206](https://github.com/ngrx/platform/issues/2206)

<a name="8.5.2"></a>

## [8.5.2](https://github.com/ngrx/platform/compare/8.5.1...8.5.2) (2019-11-21)

### Bug Fixes

- **effects:** add EffectsRootModule and EffectsFeatureModule to public API ([#2273](https://github.com/ngrx/platform/issues/2273)) ([abe1f6b](https://github.com/ngrx/platform/commit/abe1f6b))
- **store:** added noop for addFeature in MockReducerManager ([#2265](https://github.com/ngrx/platform/issues/2265)) ([c42e444](https://github.com/ngrx/platform/commit/c42e444)), closes [#2263](https://github.com/ngrx/platform/issues/2263)
- **store-devtools:** escaping the safelist and blocklist strings ([#2259](https://github.com/ngrx/platform/issues/2259)) ([e888977](https://github.com/ngrx/platform/commit/e888977)), closes [#2228](https://github.com/ngrx/platform/issues/2228)

<a name="8.5.1"></a>

## [8.5.1](https://github.com/ngrx/platform/compare/8.5.0...8.5.1) (2019-11-12)

### Bug Fixes

- **effects:** add action creator for root effects init action ([#2219](https://github.com/ngrx/platform/issues/2219)) ([de9a590](https://github.com/ngrx/platform/commit/de9a590)), closes [#2218](https://github.com/ngrx/platform/issues/2218)
- **effects:** export CreateEffectMetadata ([#2245](https://github.com/ngrx/platform/issues/2245)) ([bfe4c81](https://github.com/ngrx/platform/commit/bfe4c81)), closes [#2243](https://github.com/ngrx/platform/issues/2243)

<a name="8.5.0"></a>

# [8.5.0](https://github.com/ngrx/platform/compare/8.4.0...8.5.0) (2019-11-07)

### Bug Fixes

- **effects:** resubscribe every time an error occurs ([#2165](https://github.com/ngrx/platform/issues/2165)) ([0d59783](https://github.com/ngrx/platform/commit/0d59783))
- **store:** disallow arrays in action creators ([#2155](https://github.com/ngrx/platform/issues/2155)) ([1e4c0be](https://github.com/ngrx/platform/commit/1e4c0be))
- **store:** improve createFeatureSelector warning ([#2163](https://github.com/ngrx/platform/issues/2163)) ([e4765d6](https://github.com/ngrx/platform/commit/e4765d6)), closes [#2116](https://github.com/ngrx/platform/issues/2116)
- **store:** improve types for string selectors ([#2174](https://github.com/ngrx/platform/issues/2174)) ([46a8467](https://github.com/ngrx/platform/commit/46a8467))

### Features

- **data:** add entity config in app module declaration for ng-add ([#2133](https://github.com/ngrx/platform/issues/2133)) ([6ca3056](https://github.com/ngrx/platform/commit/6ca3056))
- **effects:** createEffect returns specific type for dispatch false ([#2195](https://github.com/ngrx/platform/issues/2195)) ([f70600f](https://github.com/ngrx/platform/commit/f70600f))
- **effects:** improve types for ofType with action creators ([#2175](https://github.com/ngrx/platform/issues/2175)) ([cf02dd2](https://github.com/ngrx/platform/commit/cf02dd2))
- **schematics:** add message prompts for individual schematics ([#2143](https://github.com/ngrx/platform/issues/2143)) ([fcb01e2](https://github.com/ngrx/platform/commit/fcb01e2))
- **schematics:** add selector schematics ([#2160](https://github.com/ngrx/platform/issues/2160)) ([78817c7](https://github.com/ngrx/platform/commit/78817c7)), closes [#2140](https://github.com/ngrx/platform/issues/2140)
- **store:** add On interface to public api ([#2157](https://github.com/ngrx/platform/issues/2157)) ([1b4ba1a](https://github.com/ngrx/platform/commit/1b4ba1a))

<a name="8.4.0"></a>

# [8.4.0](https://github.com/ngrx/platform/compare/8.3.0...8.4.0) (2019-10-09)

### Bug Fixes

- **schematics:** fixed the schematics/action spec template ([#2092](https://github.com/ngrx/platform/issues/2092)) ([ed3b1f9](https://github.com/ngrx/platform/commit/ed3b1f9)), closes [#2082](https://github.com/ngrx/platform/issues/2082)
- **store:** improve consistency of memoized selector result when projection fails ([#2101](https://github.com/ngrx/platform/issues/2101)) ([c63941c](https://github.com/ngrx/platform/commit/c63941c)), closes [#2100](https://github.com/ngrx/platform/issues/2100)

### Features

- **effects:** throw error when forRoot() is used more than once ([b46748c](https://github.com/ngrx/platform/commit/b46748c))
- **schematics:** add createEffect migration schematic ([#2136](https://github.com/ngrx/platform/issues/2136)) ([9eb1bd5](https://github.com/ngrx/platform/commit/9eb1bd5))
- **store:** add refreshState method to mock store ([#2148](https://github.com/ngrx/platform/issues/2148)) ([30e876f](https://github.com/ngrx/platform/commit/30e876f)), closes [#2121](https://github.com/ngrx/platform/issues/2121)
- **store:** allow multiple on handlers for the same action in createReducer([#2103](https://github.com/ngrx/platform/issues/2103)) ([9a70262](https://github.com/ngrx/platform/commit/9a70262)), closes [#1956](https://github.com/ngrx/platform/issues/1956)
- **store:** cleanup selector after a test ([2964e2b](https://github.com/ngrx/platform/commit/2964e2b))
- **store:** throw error when forRoot() is used more than once ([4304865](https://github.com/ngrx/platform/commit/4304865))

<a name="8.3.0"></a>

# [8.3.0](https://github.com/ngrx/platform/compare/8.2.0...8.3.0) (2019-08-29)

### Bug Fixes

- **data:** use correct guard when handling optimistic update ([#2060](https://github.com/ngrx/platform/issues/2060)) ([34c0420](https://github.com/ngrx/platform/commit/34c0420)), closes [#2059](https://github.com/ngrx/platform/issues/2059)
- **store:** add DefaultProjectorFn to public API ([#2090](https://github.com/ngrx/platform/issues/2090)) ([2d37b48](https://github.com/ngrx/platform/commit/2d37b48))
- **store:** should not run schematics when not using named imports ([#2095](https://github.com/ngrx/platform/issues/2095)) ([7cadbc0](https://github.com/ngrx/platform/commit/7cadbc0)), closes [#2093](https://github.com/ngrx/platform/issues/2093)

### Features

- **store:** add verbose error message for undefined feature state in development mode ([#2078](https://github.com/ngrx/platform/issues/2078)) ([6946e2e](https://github.com/ngrx/platform/commit/6946e2e)), closes [#1897](https://github.com/ngrx/platform/issues/1897)

<a name="8.2.0"></a>

# [8.2.0](https://github.com/ngrx/platform/compare/8.1.0...8.2.0) (2019-07-31)

### Bug Fixes

- **effects:** resubscribe every time an error occurs ([#2023](https://github.com/ngrx/platform/issues/2023)) ([#2026](https://github.com/ngrx/platform/issues/2026)) ([5b48912](https://github.com/ngrx/platform/commit/5b48912))
- **store:** add missing StoreConfig and RootStoreConfig exports ([#2009](https://github.com/ngrx/platform/issues/2009)) ([5e01e50](https://github.com/ngrx/platform/commit/5e01e50)), closes [#2007](https://github.com/ngrx/platform/issues/2007)

### Features

- **docs:** enable search functionality ([#2020](https://github.com/ngrx/platform/issues/2020)) ([3cc4f3d](https://github.com/ngrx/platform/commit/3cc4f3d))
- **router-store:** add selectQueryParam and selectRouteParam ([#2014](https://github.com/ngrx/platform/issues/2014)) ([57fd3d7](https://github.com/ngrx/platform/commit/57fd3d7))
- **schematics:** add option to use MockStore in container tests ([#2029](https://github.com/ngrx/platform/issues/2029)) ([6905d52](https://github.com/ngrx/platform/commit/6905d52)), closes [#2028](https://github.com/ngrx/platform/issues/2028)
- **store:** add USER_RUNTIME_CHECKS public token ([#2006](https://github.com/ngrx/platform/issues/2006)) ([fa8da34](https://github.com/ngrx/platform/commit/fa8da34)), closes [#1973](https://github.com/ngrx/platform/issues/1973)

<a name="8.1.0"></a>

# [8.1.0](https://github.com/ngrx/platform/compare/8.0.1...8.1.0) (2019-07-09)

### Bug Fixes

- **data:** allow ChangeSetItemFactory to update entities with number ids ([#1995](https://github.com/ngrx/platform/issues/1995)) ([f11c7b2](https://github.com/ngrx/platform/commit/f11c7b2)), closes [#1988](https://github.com/ngrx/platform/issues/1988)
- **data:** search for replacements in all files when using ng-add ([#1971](https://github.com/ngrx/platform/issues/1971)) ([30ce2c6](https://github.com/ngrx/platform/commit/30ce2c6))
- **store:** add immutability check for IE compatibility ([#1997](https://github.com/ngrx/platform/issues/1997)) ([11c0864](https://github.com/ngrx/platform/commit/11c0864)), closes [#1991](https://github.com/ngrx/platform/issues/1991)
- **store:** fix typo in runtime checks injection token description ([#1975](https://github.com/ngrx/platform/issues/1975)) ([125d950](https://github.com/ngrx/platform/commit/125d950)), closes [#1972](https://github.com/ngrx/platform/issues/1972)

### Features

- **effects:** add support for minimal setup option for ng-add ([e839568](https://github.com/ngrx/platform/commit/e839568))
- **effects:** export EffectConfig and add docs ([6a4bbcf](https://github.com/ngrx/platform/commit/6a4bbcf))
- **schematics:** add support for minimal setup option for store and effects ([cede393](https://github.com/ngrx/platform/commit/cede393))
- **schematics:** enable immutability checks for root store by default ([#1983](https://github.com/ngrx/platform/issues/1983)) ([2b8178d](https://github.com/ngrx/platform/commit/2b8178d)), closes [#1950](https://github.com/ngrx/platform/issues/1950)
- **store:** add support for minimal setup option for ng-add ([12202a7](https://github.com/ngrx/platform/commit/12202a7))

<a name="8.0.1"></a>

## [8.0.1](https://github.com/ngrx/platform/compare/8.0.0...8.0.1) (2019-06-10)

### Bug Fixes

- **store:** prevent passing of action creator function to store dispatch and effects ([#1914](https://github.com/ngrx/platform/issues/1914)) ([78153cb](https://github.com/ngrx/platform/commit/78153cb)), closes [#1906](https://github.com/ngrx/platform/issues/1906)

<a name="8.0.0"></a>

# [8.0.0](https://github.com/ngrx/platform/compare/8.0.0-rc.1...8.0.0) (2019-06-06)

### Features

- **store:** add protection from type property use ([#1923](https://github.com/ngrx/platform/issues/1923)) ([bb9add7](https://github.com/ngrx/platform/commit/bb9add7)), closes [#1917](https://github.com/ngrx/platform/issues/1917)
- **store:** capture the type of a selector projector function ([#1920](https://github.com/ngrx/platform/issues/1920)) ([4e39cc1](https://github.com/ngrx/platform/commit/4e39cc1)), closes [#1908](https://github.com/ngrx/platform/issues/1908)

### Performance Improvements

- fine tune schematics to only commit changes ([#1925](https://github.com/ngrx/platform/issues/1925)) ([5fcdd3b](https://github.com/ngrx/platform/commit/5fcdd3b))

<a name="8.0.0-rc.1"></a>

# [8.0.0-rc.1](https://github.com/ngrx/platform/compare/8.0.0-rc.0...8.0.0-rc.1) (2019-06-04)

### Bug Fixes

- **router-store:** remove circular dependency in serializers ([#1904](https://github.com/ngrx/platform/issues/1904)) ([0407c5b](https://github.com/ngrx/platform/commit/0407c5b)), closes [#1902](https://github.com/ngrx/platform/issues/1902)

### Features

- **store:** add ngrx-store-freeze migration ([#1901](https://github.com/ngrx/platform/issues/1901)) ([4146650](https://github.com/ngrx/platform/commit/4146650)), closes [#1896](https://github.com/ngrx/platform/issues/1896)

<a name="8.0.0-rc.0"></a>

# [8.0.0-rc.0](https://github.com/ngrx/platform/compare/8.0.0-beta.2...8.0.0-rc.0) (2019-05-30)

### Bug Fixes

- update signature for createSelectorFactory and createSelector to return a MemoizedSelector ([#1883](https://github.com/ngrx/platform/issues/1883)) ([8b31da7](https://github.com/ngrx/platform/commit/8b31da7))
- **store:** adjust mock store to handle selectors with props ([#1878](https://github.com/ngrx/platform/issues/1878)) ([a7ded00](https://github.com/ngrx/platform/commit/a7ded00)), closes [#1864](https://github.com/ngrx/platform/issues/1864) [#1873](https://github.com/ngrx/platform/issues/1873)

### Features

- **effects:** resubscribe to effects on error ([#1881](https://github.com/ngrx/platform/issues/1881)) ([71137e5](https://github.com/ngrx/platform/commit/71137e5))
- **example:** add examples of effects not based on the Actions stream ([#1845](https://github.com/ngrx/platform/issues/1845)) ([3454e70](https://github.com/ngrx/platform/commit/3454e70)), closes [#1830](https://github.com/ngrx/platform/issues/1830)
- **router-store:** add routerState config option ([#1847](https://github.com/ngrx/platform/issues/1847)) ([d874cfc](https://github.com/ngrx/platform/commit/d874cfc)), closes [#1834](https://github.com/ngrx/platform/issues/1834)
- **router-store:** add selectors for router state ([#1874](https://github.com/ngrx/platform/issues/1874)) ([21c67cc](https://github.com/ngrx/platform/commit/21c67cc)), closes [#1854](https://github.com/ngrx/platform/issues/1854)
- **store:** split immutibility checks in state and action checks ([#1894](https://github.com/ngrx/platform/issues/1894)) ([c59c211](https://github.com/ngrx/platform/commit/c59c211))

### Reverts

- **store:** store should fail synchronously ([#1871](https://github.com/ngrx/platform/issues/1871)) ([59a9e6c](https://github.com/ngrx/platform/commit/59a9e6c)), closes [#1865](https://github.com/ngrx/platform/issues/1865)

### BREAKING CHANGES

- **effects:** Prior to introduction of automatic resubscriptions on errors, all effects had effectively {resubscribeOnError: false} behavior. For the rare cases when this is still wanted please add {resubscribeOnError: false} to the effect metadata.

BEFORE:

```ts
login$ = createEffect(() =>
  this.actions$.pipe(
    ofType(LoginPageActions.login),
    mapToAction(
      // Happy path callback
      (action) =>
        this.authService
          .login(action.credentials)
          .pipe(map((user) => AuthApiActions.loginSuccess({ user }))),
      // error callback
      (error) => AuthApiActions.loginFailure({ error })
    )
  )
);
```

AFTER:

```ts
login$ = createEffect(
  () =>
    this.actions$.pipe(
      ofType(LoginPageActions.login),
      mapToAction(
        // Happy path callback
        (action) =>
          this.authService
            .login(action.credentials)
            .pipe(
              map((user) => AuthApiActions.loginSuccess({ user }))
            ),
        // error callback
        (error) => AuthApiActions.loginFailure({ error })
      )
      // Errors are handled and it is safe to disable resubscription
    ),
  { resubscribeOnError: false }
);
```

- The return type of the createSelectorFactory and createSelector is now a MemoizedSelector instead of a Selector

<a name="8.0.0-beta.2"></a>

# [8.0.0-beta.2](https://github.com/ngrx/platform/compare/8.0.0-beta.1...8.0.0-beta.2) (2019-05-15)

### Bug Fixes

- **data:** update the package name for replacement to ngrx-data ([#1805](https://github.com/ngrx/platform/issues/1805)) ([00c00e0](https://github.com/ngrx/platform/commit/00c00e0)), closes [#1802](https://github.com/ngrx/platform/issues/1802)
- **example:** resolve circular dependency ([#1833](https://github.com/ngrx/platform/issues/1833)) ([1fbd59c](https://github.com/ngrx/platform/commit/1fbd59c))

### Features

- **effects:** add mapToAction operator ([#1822](https://github.com/ngrx/platform/issues/1822)) ([1ff986f](https://github.com/ngrx/platform/commit/1ff986f)), closes [#1224](https://github.com/ngrx/platform/issues/1224)
- **store:** add option to mock selectors in MockStoreConfig ([#1836](https://github.com/ngrx/platform/issues/1836)) ([070228c](https://github.com/ngrx/platform/commit/070228c)), closes [#1827](https://github.com/ngrx/platform/issues/1827)
- **store:** expand createReducer type signature to support up to ten action creators ([#1803](https://github.com/ngrx/platform/issues/1803)) ([63e4926](https://github.com/ngrx/platform/commit/63e4926))
- **store:** warn when same action is registered ([#1801](https://github.com/ngrx/platform/issues/1801)) ([ecda5f7](https://github.com/ngrx/platform/commit/ecda5f7)), closes [#1758](https://github.com/ngrx/platform/issues/1758)

### Reverts

- warn when same action is registered ([#1801](https://github.com/ngrx/platform/issues/1801)) ([#1841](https://github.com/ngrx/platform/issues/1841)) ([b07ae4e](https://github.com/ngrx/platform/commit/b07ae4e))

<a name="8.0.0-beta.1"></a>

# [8.0.0-beta.1](https://github.com/ngrx/platform/compare/8.0.0-beta.0...8.0.0-beta.1) (2019-04-24)

### Features

- **data:** add schematics and migrations ([#1782](https://github.com/ngrx/platform/issues/1782)) ([c79362d](https://github.com/ngrx/platform/commit/c79362d))
- **schematics:** add support for reducer creators ([#1785](https://github.com/ngrx/platform/issues/1785)) ([8a0a049](https://github.com/ngrx/platform/commit/8a0a049)), closes [#1764](https://github.com/ngrx/platform/issues/1764)
- **store:** change createReducer to avoid generic ([#1796](https://github.com/ngrx/platform/issues/1796)) ([8f2cb7b](https://github.com/ngrx/platform/commit/8f2cb7b))

<a name="8.0.0-beta.0"></a>

# [8.0.0-beta.0](https://github.com/ngrx/platform/compare/7.4.0...8.0.0-beta.0) (2019-04-17)

### Bug Fixes

- **effects:** add the export of EffectMetadata ([#1720](https://github.com/ngrx/platform/issues/1720)) ([214316f](https://github.com/ngrx/platform/commit/214316f))
- **example:** handle possible undefined results from Dictionary ([#1745](https://github.com/ngrx/platform/issues/1745)) ([861b0cb](https://github.com/ngrx/platform/commit/861b0cb)), closes [#1735](https://github.com/ngrx/platform/issues/1735)
- **schematics:** check for empty name when using store schematic for feature states ([#1659](https://github.com/ngrx/platform/issues/1659)) ([#1666](https://github.com/ngrx/platform/issues/1666)) ([3b9b890](https://github.com/ngrx/platform/commit/3b9b890))
- **store:** add the missing bracket in immutability meta-reducer ([#1721](https://github.com/ngrx/platform/issues/1721)) ([56f8a59](https://github.com/ngrx/platform/commit/56f8a59))
- **Store:** selector with only a projector ([#1579](https://github.com/ngrx/platform/issues/1579)) ([da1ec80](https://github.com/ngrx/platform/commit/da1ec80)), closes [#1558](https://github.com/ngrx/platform/issues/1558)
- **StoreDevTools:** rename action list filters ([#1589](https://github.com/ngrx/platform/issues/1589)) ([5581826](https://github.com/ngrx/platform/commit/5581826)), closes [#1557](https://github.com/ngrx/platform/issues/1557)

### Code Refactoring

- **Store:** don't export internal functions and tokens ([#1679](https://github.com/ngrx/platform/issues/1679)) ([0446a15](https://github.com/ngrx/platform/commit/0446a15)), closes [#1657](https://github.com/ngrx/platform/issues/1657)

### Features

- **schematics:** add support for action creators to schematics ([#1765](https://github.com/ngrx/platform/issues/1765)) ([876f80a](https://github.com/ngrx/platform/commit/876f80a)), closes [#1670](https://github.com/ngrx/platform/issues/1670)
- **store:** add createReducer function ([#1746](https://github.com/ngrx/platform/issues/1746)) ([f954e14](https://github.com/ngrx/platform/commit/f954e14)), closes [#1724](https://github.com/ngrx/platform/issues/1724)
- introduce [@ngrx](https://github.com/ngrx)/data library to the platform ([#1733](https://github.com/ngrx/platform/issues/1733)) ([5d569c3](https://github.com/ngrx/platform/commit/5d569c3))
- introduce [@ngrx](https://github.com/ngrx)/data library to the platform ([#1754](https://github.com/ngrx/platform/issues/1754)) ([dbfdbaf](https://github.com/ngrx/platform/commit/dbfdbaf))
- **effects:** add createEffect function ([#1667](https://github.com/ngrx/platform/issues/1667)) ([ced2d3d](https://github.com/ngrx/platform/commit/ced2d3d)), closes [#1368](https://github.com/ngrx/platform/issues/1368)
- **effects:** allow non-dispatching effects to not return an action ([#1689](https://github.com/ngrx/platform/issues/1689)) ([04e07a6](https://github.com/ngrx/platform/commit/04e07a6))
- **effects:** allow ofType to handle ActionCreator ([#1676](https://github.com/ngrx/platform/issues/1676)) ([a41d1d6](https://github.com/ngrx/platform/commit/a41d1d6))
- **entity:** add undefined to Dictionary's index signature ([#1719](https://github.com/ngrx/platform/issues/1719)) ([d472757](https://github.com/ngrx/platform/commit/d472757))
- **example:** update ofType in effects per [#1676](https://github.com/ngrx/platform/issues/1676) ([#1691](https://github.com/ngrx/platform/issues/1691)) ([c9c9a0e](https://github.com/ngrx/platform/commit/c9c9a0e))
- **router-store:** add v8 migration schematic ([#1699](https://github.com/ngrx/platform/issues/1699)) ([0b794ce](https://github.com/ngrx/platform/commit/0b794ce))
- **router-store:** Make usage of forRoot required ([#1662](https://github.com/ngrx/platform/issues/1662)) ([#1672](https://github.com/ngrx/platform/issues/1672)) ([c7e1406](https://github.com/ngrx/platform/commit/c7e1406))
- **schematics:** add support for effect creators to schematics ([#1725](https://github.com/ngrx/platform/issues/1725)) ([8901abd](https://github.com/ngrx/platform/commit/8901abd)), closes [#1682](https://github.com/ngrx/platform/issues/1682)
- **store:** add API to mock selectors ([#1688](https://github.com/ngrx/platform/issues/1688)) ([2a9b067](https://github.com/ngrx/platform/commit/2a9b067)), closes [#1504](https://github.com/ngrx/platform/issues/1504)
- **store:** add immutability and serializability runtime checks ([#1613](https://github.com/ngrx/platform/issues/1613)) ([60633b7](https://github.com/ngrx/platform/commit/60633b7)), closes [#857](https://github.com/ngrx/platform/issues/857)
- **store:** add META_REDUCERS replacement migration ([#1640](https://github.com/ngrx/platform/issues/1640)) ([57bacf5](https://github.com/ngrx/platform/commit/57bacf5))
- **store:** run migration schema for v8 beta ([#1716](https://github.com/ngrx/platform/issues/1716)) ([0abc948](https://github.com/ngrx/platform/commit/0abc948))

### BREAKING CHANGES

- **entity:** Dictionary could be producing undefined but previous typings were not explicit about it.
- **Store:** Internal functions and tokens are removed from the public API
- **router-store:** usage of forRoot is now required for StoreRouterConnectingModule

BEFORE:

```ts
@NgModule({
  imports: [StoreRouterConnectingModule],
})
export class AppModule {}
```

AFTER:

```ts
@NgModule({
  imports: [StoreRouterConnectingModule.forRoot()],
})
export class AppModule {}
```

- **Store:** Selectors with only a projector function aren't valid anymore.
  This change will make the usage more consistent.

BEFORE:

```ts
const getTodosById = createSelector(
  (state: TodoAppSchema, id: number) =>
    state.todos.find((p) => p.id === id)
);
```

AFTER:

```ts
const getTodosById = createSelector(
  (state: TodoAppSchema) => state.todos,
  (todos: Todo[], id: number) => todos.find((p) => p.id === id)
);
```

- **StoreDevTools:** `actionsWhitelist` is renamed to `actionsSafelist`
  `actionsBlacklist` is renamed to `actionsBlocklist`

BEFORE:

```ts
StoreDevtoolsModule.instrument({
  actionsWhitelist: ['...'],
  actionsBlacklist: ['...'],
});
```

AFTER:

```ts
StoreDevtoolsModule.instrument({
  actionsSafelist: ['...'],
  actionsBlocklist: ['...'],
});
```

<a name="7.4.0"></a>

# [7.4.0](https://github.com/ngrx/platform/compare/7.3.0...7.4.0) (2019-03-29)

### Bug Fixes

- **Example:** linter problems ([#1597](https://github.com/ngrx/platform/issues/1597)) ([4cfcc08](https://github.com/ngrx/platform/commit/4cfcc08))

### Features

- **example-app:** add visual testing with Applitools ([#1605](https://github.com/ngrx/platform/issues/1605)) ([8856210](https://github.com/ngrx/platform/commit/8856210))
- **schematics:** use plural for entity schematics reducer key ([#1596](https://github.com/ngrx/platform/issues/1596)) ([1e49530](https://github.com/ngrx/platform/commit/1e49530)), closes [#1412](https://github.com/ngrx/platform/issues/1412)
- **store:** add action creator functions ([#1654](https://github.com/ngrx/platform/issues/1654)) ([e7fe28b](https://github.com/ngrx/platform/commit/e7fe28b)), closes [#1480](https://github.com/ngrx/platform/issues/1480) [#1634](https://github.com/ngrx/platform/issues/1634)

<a name="7.3.0"></a>

# [7.3.0](https://github.com/ngrx/platform/compare/7.2.0...7.3.0) (2019-02-27)

### Bug Fixes

- **schematics:** type actions and avoid endless loop in effect schematic ([#1576](https://github.com/ngrx/platform/issues/1576)) ([5fbcb3c](https://github.com/ngrx/platform/commit/5fbcb3c)), closes [#1573](https://github.com/ngrx/platform/issues/1573)
- **store:** deprecate signature for selector with only a projector ([#1580](https://github.com/ngrx/platform/issues/1580)) ([e86c5f6](https://github.com/ngrx/platform/commit/e86c5f6))

### Features

- **schematics:** Add ng-add support with prompt for making our schematics default ([#1552](https://github.com/ngrx/platform/issues/1552)) ([01ff157](https://github.com/ngrx/platform/commit/01ff157))

<a name="7.2.0"></a>

# [7.2.0](https://github.com/ngrx/platform/compare/7.1.0...7.2.0) (2019-01-29)

### Bug Fixes

- **Entity:** add schematics to bazel build ([88d0ad5](https://github.com/ngrx/platform/commit/88d0ad5))
- **RouterStore:** add schematics to bazel build ([7465af9](https://github.com/ngrx/platform/commit/7465af9))
- **StoreDevTools:** out of bounds when actions are filtered ([#1532](https://github.com/ngrx/platform/issues/1532)) ([d532979](https://github.com/ngrx/platform/commit/d532979)), closes [#1522](https://github.com/ngrx/platform/issues/1522)

### Features

- **schematics:** add api success/failure effects/actions to ng generate feature ([#1530](https://github.com/ngrx/platform/issues/1530)) ([e17a787](https://github.com/ngrx/platform/commit/e17a787))
- **schematics:** bump platformVersion to ^7.0.0 per issue [#1489](https://github.com/ngrx/platform/issues/1489) ([#1527](https://github.com/ngrx/platform/issues/1527)) ([a71aa71](https://github.com/ngrx/platform/commit/a71aa71))

<a name="7.1.0"></a>

# [7.1.0](https://github.com/ngrx/platform/compare/7.0.0...7.1.0) (2019-01-21)

### Bug Fixes

- **store:** call metareducer with the user's config initial state ([#1498](https://github.com/ngrx/platform/issues/1498)) ([2aabe0f](https://github.com/ngrx/platform/commit/2aabe0f)), closes [#1464](https://github.com/ngrx/platform/issues/1464)
- **store:** don't call the projector function if there are no selectors and props ([#1515](https://github.com/ngrx/platform/issues/1515)) ([e0ad3c3](https://github.com/ngrx/platform/commit/e0ad3c3)), closes [#1501](https://github.com/ngrx/platform/issues/1501)

### Features

- **example:** make the example app more user friendly ([#1508](https://github.com/ngrx/platform/issues/1508)) ([ac4fb88](https://github.com/ngrx/platform/commit/ac4fb88))
- **router-store:** add routerState to action payload ([#1511](https://github.com/ngrx/platform/issues/1511)) ([283424f](https://github.com/ngrx/platform/commit/283424f))
- **schematics:** add ng add support for [@ngrx](https://github.com/ngrx)/entity ([#1503](https://github.com/ngrx/platform/issues/1503)) ([da1c955](https://github.com/ngrx/platform/commit/da1c955))
- **schematics:** implement router store ng-add ([#1487](https://github.com/ngrx/platform/issues/1487)) ([9da4aac](https://github.com/ngrx/platform/commit/9da4aac)), closes [#1479](https://github.com/ngrx/platform/issues/1479)
- **store:** support store config factory for feature ([#1445](https://github.com/ngrx/platform/issues/1445)) ([6aa5645](https://github.com/ngrx/platform/commit/6aa5645)), closes [#1414](https://github.com/ngrx/platform/issues/1414)

<a name="7.0.0"></a>

# [7.0.0](https://github.com/ngrx/platform/compare/7.0.0-beta.1...7.0.0) (2018-12-20)

### Features

- **Effects:** add OnInitEffects interface to dispatch an action on initialization ([e921cd9](https://github.com/ngrx/platform/commit/e921cd9))
- **RouterStore:** make the router store key selector generic ([a30a514](https://github.com/ngrx/platform/commit/a30a514)), closes [#1457](https://github.com/ngrx/platform/issues/1457)
- **schematics:** add project flag support to specify apps or libs ([#1477](https://github.com/ngrx/platform/issues/1477)) ([af39fd2](https://github.com/ngrx/platform/commit/af39fd2)), closes [#1455](https://github.com/ngrx/platform/issues/1455)

### Reverts

- **Effects:** dispatch init feature effects action on init [#1305](https://github.com/ngrx/platform/issues/1305) ([e9cc9ae](https://github.com/ngrx/platform/commit/e9cc9ae))

<a name="7.0.0-beta.1"></a>

# [7.0.0-beta.1](https://github.com/ngrx/platform/compare/7.0.0-beta.0...7.0.0-beta.1) (2018-12-04)

### Features

- **effects:** add OnIdentifyEffects interface to register multiple effect instances ([#1448](https://github.com/ngrx/platform/issues/1448)) ([b553ce7](https://github.com/ngrx/platform/commit/b553ce7))
- **store-devtools:** catch and log redux devtools errors ([#1450](https://github.com/ngrx/platform/issues/1450)) ([4ed16cd](https://github.com/ngrx/platform/commit/4ed16cd))

<a name="7.0.0-beta.0"></a>

# [7.0.0-beta.0](https://github.com/ngrx/platform/compare/6.1.0...7.0.0-beta.0) (2018-11-03)

### Bug Fixes

- **docs-infra:** ARIA roles used must conform to valid values ([8a4b2de](https://github.com/ngrx/platform/commit/8a4b2de))
- **docs-infra:** elements must have sufficient color contrast ([c5dfaef](https://github.com/ngrx/platform/commit/c5dfaef))
- **docs-infra:** html element must have a lang attribute ([32256de](https://github.com/ngrx/platform/commit/32256de))
- **docs-infra:** Images must have alternate text ([8241f99](https://github.com/ngrx/platform/commit/8241f99))
- **docs-infra:** notification must have sufficient color contrast ([ac24cc3](https://github.com/ngrx/platform/commit/ac24cc3))
- **example:** close side nav when escape key is pressed ([#1244](https://github.com/ngrx/platform/issues/1244)) ([b3fc5dd](https://github.com/ngrx/platform/commit/b3fc5dd)), closes [#1172](https://github.com/ngrx/platform/issues/1172)
- **router-store:** Added new imports to index.ts, codestyle ([293f960](https://github.com/ngrx/platform/commit/293f960))
- **router-store:** allow compilation with strictFunctionTypes ([#1385](https://github.com/ngrx/platform/issues/1385)) ([0e38673](https://github.com/ngrx/platform/commit/0e38673)), closes [#1344](https://github.com/ngrx/platform/issues/1344)
- **router-store:** Avoiding [@ngrx](https://github.com/ngrx)/effects dependency inside tests ([11d3b9f](https://github.com/ngrx/platform/commit/11d3b9f))
- **router-store:** handle internal navigation error, dispatch cancel/error action with previous state ([#1294](https://github.com/ngrx/platform/issues/1294)) ([5300e7d](https://github.com/ngrx/platform/commit/5300e7d))
- **schematics:** correct spec description in reducer template ([#1269](https://github.com/ngrx/platform/issues/1269)) ([b7ab4f8](https://github.com/ngrx/platform/commit/b7ab4f8))
- **schematics:** fix effects code generated by schematics:feature ([#1357](https://github.com/ngrx/platform/issues/1357)) ([458e2b4](https://github.com/ngrx/platform/commit/458e2b4))
- **store:** add typing to allow props with store.select ([#1387](https://github.com/ngrx/platform/issues/1387)) ([a9e7cbd](https://github.com/ngrx/platform/commit/a9e7cbd))
- **store:** memoize selector arguments ([#1393](https://github.com/ngrx/platform/issues/1393)) ([7cc9702](https://github.com/ngrx/platform/commit/7cc9702)), closes [#1389](https://github.com/ngrx/platform/issues/1389)
- **store:** remove deprecation from Store.select ([#1382](https://github.com/ngrx/platform/issues/1382)) ([626784e](https://github.com/ngrx/platform/commit/626784e))

### Code Refactoring

- **routerstore:** change default state key to router ([#1258](https://github.com/ngrx/platform/issues/1258)) ([e8173d9](https://github.com/ngrx/platform/commit/e8173d9))
- **RouterStore:** normalize actions ([#1302](https://github.com/ngrx/platform/issues/1302)) ([466e2cd](https://github.com/ngrx/platform/commit/466e2cd))

### Features

- update angular dependencies to V7 ([e6048bd](https://github.com/ngrx/platform/commit/e6048bd)), closes [#1340](https://github.com/ngrx/platform/issues/1340)
- **effects:** add smarter type inference for ofType operator. ([#1183](https://github.com/ngrx/platform/issues/1183)) ([8d56a6f](https://github.com/ngrx/platform/commit/8d56a6f))
- **effects:** add support for effects of different instances of same class ([#1249](https://github.com/ngrx/platform/issues/1249)) ([518e561](https://github.com/ngrx/platform/commit/518e561)), closes [#1246](https://github.com/ngrx/platform/issues/1246)
- **effects:** dispatch feature effects action on init ([#1305](https://github.com/ngrx/platform/issues/1305)) ([15a4b58](https://github.com/ngrx/platform/commit/15a4b58)), closes [#683](https://github.com/ngrx/platform/issues/683)
- **entity:** add support for predicate to removeMany ([#900](https://github.com/ngrx/platform/issues/900)) ([d7daa2f](https://github.com/ngrx/platform/commit/d7daa2f))
- **entity:** add support for predicate to updateMany ([#907](https://github.com/ngrx/platform/issues/907)) ([4e4c50f](https://github.com/ngrx/platform/commit/4e4c50f))
- **example:** add logout confirmation ([#1287](https://github.com/ngrx/platform/issues/1287)) ([ba8d300](https://github.com/ngrx/platform/commit/ba8d300)), closes [#1271](https://github.com/ngrx/platform/issues/1271)
- **router-store:** Add custom serializer to config object ([5c814a9](https://github.com/ngrx/platform/commit/5c814a9)), closes [#1262](https://github.com/ngrx/platform/issues/1262)
- **router-store:** Add support for serializers with injected values ([959cfac](https://github.com/ngrx/platform/commit/959cfac))
- **router-store:** config option to dispatch ROUTER_NAVIGATION later ([fe71ffb](https://github.com/ngrx/platform/commit/fe71ffb)), closes [#1263](https://github.com/ngrx/platform/issues/1263)
- **router-store:** New router Actions ROUTER_REQUEST and ROUTER_NAVIGATED ([9f731c3](https://github.com/ngrx/platform/commit/9f731c3)), closes [#1010](https://github.com/ngrx/platform/issues/1010) [#1263](https://github.com/ngrx/platform/issues/1263)
- **router-store:** serialize routeConfig inside the default serializer ([#1384](https://github.com/ngrx/platform/issues/1384)) ([18a16d4](https://github.com/ngrx/platform/commit/18a16d4))
- **router-store:** update stateKey definition to take a string or selector ([4ad9a94](https://github.com/ngrx/platform/commit/4ad9a94)), closes [#1300](https://github.com/ngrx/platform/issues/1300)
- **store:** add testing package ([#1027](https://github.com/ngrx/platform/issues/1027)) ([ab56aac](https://github.com/ngrx/platform/commit/ab56aac)), closes [#915](https://github.com/ngrx/platform/issues/915)
- **store:** dispatch one update action when features are added or removed ([#1240](https://github.com/ngrx/platform/issues/1240)) ([0b90f91](https://github.com/ngrx/platform/commit/0b90f91))
- **Store:** export SelectorWithProps and MemoizedSelectorWithProps ([#1341](https://github.com/ngrx/platform/issues/1341)) ([df8fc60](https://github.com/ngrx/platform/commit/df8fc60))
- **store-devtools:** add support for persist, lock, pause ([#955](https://github.com/ngrx/platform
Download .txt
gitextract_eb1k2nce/

├── .agents/
│   └── skills/
│       └── writing-docs/
│           └── SKILL.md
├── .devcontainer/
│   ├── devcontainer.json
│   └── welcome-message.txt
├── .dockerignore
├── .editorconfig
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug-report.yml
│   │   ├── config.yml
│   │   ├── documentation-report.yml
│   │   └── feature-request.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── ci.yml
│       ├── main.yml
│       └── release.yml
├── .gitignore
├── .husky/
│   └── pre-commit
├── .node-version
├── .nxignore
├── .prettierignore
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── MIGRATION.md
├── README.md
├── build/
│   ├── config.ts
│   ├── copy-schematics-core.ts
│   ├── deploy-build.ts
│   ├── example-app-server.js
│   ├── generate-eslint-plugin.ts
│   ├── publish-latest.ts
│   ├── publish-next.ts
│   ├── publish-release.ts
│   ├── stackblitz.ts
│   ├── tasks.ts
│   ├── update-version-numbers.ts
│   └── util.ts
├── eslint.config.mjs
├── jest.config.ts
├── jest.preset.js
├── modules/
│   ├── README.md
│   ├── component/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   ├── 15_0_0-beta/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 16_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── public_api.ts
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── core/
│   │   │   │   ├── potential-observable.spec.ts
│   │   │   │   ├── render-event/
│   │   │   │   │   ├── handlers.spec.ts
│   │   │   │   │   └── manager.spec.ts
│   │   │   │   ├── render-scheduler.spec.ts
│   │   │   │   ├── tick-scheduler.spec.ts
│   │   │   │   └── zone-helpers.spec.ts
│   │   │   ├── fixtures/
│   │   │   │   ├── fixtures.ts
│   │   │   │   ├── mock-event-emitter.ts
│   │   │   │   └── mock-noop-ng-zone.ts
│   │   │   ├── helpers.ts
│   │   │   ├── let/
│   │   │   │   └── let.directive.spec.ts
│   │   │   ├── push/
│   │   │   │   └── push.pipe.spec.ts
│   │   │   └── types/
│   │   │       ├── let.directive.types.spec.ts
│   │   │       ├── push.pipe.types.spec.ts
│   │   │       └── utils.ts
│   │   ├── src/
│   │   │   ├── core/
│   │   │   │   ├── potential-observable.ts
│   │   │   │   ├── render-event/
│   │   │   │   │   ├── handlers.ts
│   │   │   │   │   ├── manager.ts
│   │   │   │   │   └── models.ts
│   │   │   │   ├── render-scheduler.ts
│   │   │   │   ├── tick-scheduler.ts
│   │   │   │   └── zone-helpers.ts
│   │   │   ├── index.ts
│   │   │   ├── let/
│   │   │   │   └── let.directive.ts
│   │   │   └── push/
│   │   │       └── push.pipe.ts
│   │   ├── test-setup.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   └── vite.config.mts
│   ├── component-store/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   ├── 18_0_0-beta/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── public_api.ts
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── component-store.spec.ts
│   │   │   ├── integration.spec.ts
│   │   │   ├── integration_signals.spec.ts
│   │   │   └── types/
│   │   │       ├── component-store.types.spec.ts
│   │   │       ├── regression.types.spec.ts
│   │   │       └── utils.ts
│   │   ├── src/
│   │   │   ├── component-store.ts
│   │   │   ├── debounce-sync.ts
│   │   │   ├── index.ts
│   │   │   └── lifecycle_hooks.ts
│   │   ├── test-setup.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   └── vite.config.mts
│   ├── data/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── public_api.ts
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── __snapshots__/
│   │   │       │   └── index.spec.ts.snap
│   │   │       ├── files/
│   │   │       │   └── entity-metadata.ts.template
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── actions/
│   │   │   │   ├── entity-action-factory.spec.ts
│   │   │   │   ├── entity-action-guard.spec.ts
│   │   │   │   ├── entity-action-operators.spec.ts
│   │   │   │   └── entity-cache-changes-set.spec.ts
│   │   │   ├── dataservices/
│   │   │   │   ├── data-service-error.spec.ts
│   │   │   │   ├── default-data.service.spec.ts
│   │   │   │   └── entity-data.service.spec.ts
│   │   │   ├── dispatchers/
│   │   │   │   └── entity-dispatcher.spec.ts
│   │   │   ├── effects/
│   │   │   │   ├── entity-cache-effects.spec.ts
│   │   │   │   ├── entity-effects.marbles.spec.ts
│   │   │   │   └── entity-effects.spec.ts
│   │   │   ├── entity-data.module.spec.ts
│   │   │   ├── entity-metadata/
│   │   │   │   ├── entity-definition.service.spec.ts
│   │   │   │   ├── entity-definition.spec.ts
│   │   │   │   └── entity-filters.spec.ts
│   │   │   ├── entity-services/
│   │   │   │   ├── entity-collection-service.spec.ts
│   │   │   │   └── entity-services.spec.ts
│   │   │   ├── reducers/
│   │   │   │   ├── entity-cache-reducer.spec.ts
│   │   │   │   ├── entity-change-tracker-base.spec.ts
│   │   │   │   ├── entity-collection-creator.spec.ts
│   │   │   │   ├── entity-collection-reducer-registry.spec.ts
│   │   │   │   └── entity-collection-reducer.spec.ts
│   │   │   ├── selectors/
│   │   │   │   ├── entity-selectors$.spec.ts
│   │   │   │   ├── entity-selectors.spec.ts
│   │   │   │   └── related-entity-selectors.spec.ts
│   │   │   └── utils/
│   │   │       ├── default-pluralizer.spec.ts
│   │   │       └── utils.spec.ts
│   │   ├── src/
│   │   │   ├── actions/
│   │   │   │   ├── entity-action-factory.ts
│   │   │   │   ├── entity-action-guard.ts
│   │   │   │   ├── entity-action-operators.ts
│   │   │   │   ├── entity-action.ts
│   │   │   │   ├── entity-cache-action.ts
│   │   │   │   ├── entity-cache-change-set.ts
│   │   │   │   ├── entity-op.ts
│   │   │   │   ├── merge-strategy.ts
│   │   │   │   └── update-response-data.ts
│   │   │   ├── dataservices/
│   │   │   │   ├── data-service-error.ts
│   │   │   │   ├── default-data-service-config.ts
│   │   │   │   ├── default-data.service.ts
│   │   │   │   ├── entity-cache-data.service.ts
│   │   │   │   ├── entity-data.service.ts
│   │   │   │   ├── http-url-generator.ts
│   │   │   │   ├── interfaces.ts
│   │   │   │   └── persistence-result-handler.service.ts
│   │   │   ├── dispatchers/
│   │   │   │   ├── entity-cache-dispatcher.ts
│   │   │   │   ├── entity-commands.ts
│   │   │   │   ├── entity-dispatcher-base.ts
│   │   │   │   ├── entity-dispatcher-default-options.ts
│   │   │   │   ├── entity-dispatcher-factory.ts
│   │   │   │   └── entity-dispatcher.ts
│   │   │   ├── effects/
│   │   │   │   ├── entity-cache-effects.ts
│   │   │   │   ├── entity-effects-scheduler.ts
│   │   │   │   └── entity-effects.ts
│   │   │   ├── entity-data-config.ts
│   │   │   ├── entity-data-without-effects.module.ts
│   │   │   ├── entity-data.module.ts
│   │   │   ├── entity-metadata/
│   │   │   │   ├── entity-definition.service.ts
│   │   │   │   ├── entity-definition.ts
│   │   │   │   ├── entity-filters.ts
│   │   │   │   └── entity-metadata.ts
│   │   │   ├── entity-services/
│   │   │   │   ├── entity-collection-service-base.ts
│   │   │   │   ├── entity-collection-service-elements-factory.ts
│   │   │   │   ├── entity-collection-service-factory.ts
│   │   │   │   ├── entity-collection-service.ts
│   │   │   │   ├── entity-services-base.ts
│   │   │   │   ├── entity-services-elements.ts
│   │   │   │   └── entity-services.ts
│   │   │   ├── index.ts
│   │   │   ├── provide-entity-data.ts
│   │   │   ├── reducers/
│   │   │   │   ├── constants.ts
│   │   │   │   ├── entity-cache-reducer.ts
│   │   │   │   ├── entity-cache.ts
│   │   │   │   ├── entity-change-tracker-base.ts
│   │   │   │   ├── entity-change-tracker.ts
│   │   │   │   ├── entity-collection-creator.ts
│   │   │   │   ├── entity-collection-reducer-methods.ts
│   │   │   │   ├── entity-collection-reducer-registry.ts
│   │   │   │   ├── entity-collection-reducer.ts
│   │   │   │   └── entity-collection.ts
│   │   │   ├── selectors/
│   │   │   │   ├── entity-cache-selector.ts
│   │   │   │   ├── entity-selectors$.ts
│   │   │   │   └── entity-selectors.ts
│   │   │   └── utils/
│   │   │       ├── correlation-id-generator.ts
│   │   │       ├── default-logger.ts
│   │   │       ├── default-pluralizer.ts
│   │   │       ├── guid-fns.ts
│   │   │       ├── interfaces.ts
│   │   │       └── utilities.ts
│   │   ├── test-setup.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   └── vite.config.mts
│   ├── effects/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   ├── 13_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 15_0_0-beta/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 18_0_0-beta/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 6_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 9_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── public_api.ts
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── __snapshots__/
│   │   │       │   └── index.spec.ts.snap
│   │   │       ├── files/
│   │   │       │   └── __name@dasherize@if-flat__/
│   │   │       │       ├── __name@dasherize__.effects.spec.ts.template
│   │   │       │       └── __name@dasherize__.effects.ts.template
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── actions.spec.ts
│   │   │   ├── effect_creator.spec.ts
│   │   │   ├── effect_sources.spec.ts
│   │   │   ├── effects_error_handler.spec.ts
│   │   │   ├── effects_feature_module.spec.ts
│   │   │   ├── effects_metadata.spec.ts
│   │   │   ├── effects_resolver.spec.ts
│   │   │   ├── effects_root_module.spec.ts
│   │   │   ├── integration.spec.ts
│   │   │   ├── provide_effects.spec.ts
│   │   │   ├── types/
│   │   │   │   ├── effect_creator.spec.ts
│   │   │   │   ├── effects_module.spec.ts
│   │   │   │   ├── of_type.spec.ts
│   │   │   │   ├── provide_effects.spec.ts
│   │   │   │   └── utils.ts
│   │   │   └── utils.spec.ts
│   │   ├── src/
│   │   │   ├── actions.ts
│   │   │   ├── effect_creator.ts
│   │   │   ├── effect_notification.ts
│   │   │   ├── effect_sources.ts
│   │   │   ├── effects_actions.ts
│   │   │   ├── effects_error_handler.ts
│   │   │   ├── effects_feature_module.ts
│   │   │   ├── effects_metadata.ts
│   │   │   ├── effects_module.ts
│   │   │   ├── effects_resolver.ts
│   │   │   ├── effects_root_module.ts
│   │   │   ├── effects_runner.ts
│   │   │   ├── index.ts
│   │   │   ├── lifecycle_hooks.ts
│   │   │   ├── models.ts
│   │   │   ├── provide_effects.ts
│   │   │   ├── tokens.ts
│   │   │   └── utils.ts
│   │   ├── test-setup.ts
│   │   ├── testing/
│   │   │   ├── index.ts
│   │   │   ├── ng-package.json
│   │   │   ├── spec/
│   │   │   │   └── mock_actions.spec.ts
│   │   │   ├── src/
│   │   │   │   ├── public_api.ts
│   │   │   │   └── testing.ts
│   │   │   ├── tsconfig.build.json
│   │   │   └── tsconfig.spec.json
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   └── vitest.config.ts
│   ├── entity/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   ├── 6_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── public_api.ts
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── entity_state.spec.ts
│   │   │   ├── fixtures/
│   │   │   │   └── book.ts
│   │   │   ├── sorted_state_adapter.spec.ts
│   │   │   ├── state_selectors.spec.ts
│   │   │   ├── types/
│   │   │   │   ├── entity_selectors.types.spec.ts
│   │   │   │   ├── entity_state.types.spec.ts
│   │   │   │   └── utils.ts
│   │   │   ├── unsorted_state_adapter.spec.ts
│   │   │   └── utils.spec.ts
│   │   ├── src/
│   │   │   ├── create_adapter.ts
│   │   │   ├── entity_state.ts
│   │   │   ├── index.ts
│   │   │   ├── models.ts
│   │   │   ├── sorted_state_adapter.ts
│   │   │   ├── state_adapter.ts
│   │   │   ├── state_selectors.ts
│   │   │   ├── unsorted_state_adapter.ts
│   │   │   └── utils.ts
│   │   ├── test-setup.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   └── vite.config.mts
│   ├── eslint-plugin/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── migrations/
│   │   │   └── migration.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── scripts/
│   │   │   ├── generate-config.ts
│   │   │   ├── generate-docs.ts
│   │   │   └── generate-overview.ts
│   │   ├── spec/
│   │   │   ├── exported-rules.spec.ts
│   │   │   ├── fixtures/
│   │   │   │   └── tsconfig.json
│   │   │   ├── rules/
│   │   │   │   ├── component-store/
│   │   │   │   │   ├── avoid-combining-component-store-selectors.spec.ts
│   │   │   │   │   ├── avoid-mapping-component-store-selectors.spec.ts
│   │   │   │   │   ├── require-super-ondestroy.spec.ts
│   │   │   │   │   └── updater-explicit-return-type.spec.ts
│   │   │   │   ├── effects/
│   │   │   │   │   ├── avoid-cyclic-effects.spec.ts
│   │   │   │   │   ├── no-dispatch-in-effects.spec.ts
│   │   │   │   │   ├── no-effects-in-providers.spec.ts
│   │   │   │   │   ├── no-multiple-actions-in-effects.spec.ts
│   │   │   │   │   ├── prefer-effect-callback-in-block-statement.spec.ts
│   │   │   │   │   └── use-effects-lifecycle-interface.spec.ts
│   │   │   │   ├── operators/
│   │   │   │   │   └── prefer-concat-latest-from.spec.ts
│   │   │   │   ├── signals/
│   │   │   │   │   ├── enforce-type-call.spec.ts
│   │   │   │   │   ├── prefer-protected-state.spec.ts
│   │   │   │   │   ├── signal-state-no-arrays-at-root-level.spec.ts
│   │   │   │   │   ├── signal-store-feature-should-use-generic-type.spec.ts
│   │   │   │   │   └── with-state-no-arrays-at-root-level.spec.ts
│   │   │   │   └── store/
│   │   │   │       ├── avoid-combining-selectors.spec.ts
│   │   │   │       ├── avoid-dispatching-multiple-actions-sequentially.spec.ts
│   │   │   │       ├── avoid-duplicate-actions-in-reducer.spec.ts
│   │   │   │       ├── avoid-mapping-selectors.spec.ts
│   │   │   │       ├── good-action-hygiene.spec.ts
│   │   │   │       ├── no-multiple-global-stores.spec.ts
│   │   │   │       ├── no-reducer-in-key-names.spec.ts
│   │   │   │       ├── no-store-subscription.spec.ts
│   │   │   │       ├── no-typed-global-store.spec.ts
│   │   │   │       ├── on-function-explicit-return-type.spec.ts
│   │   │   │       ├── prefer-action-creator-in-dispatch.spec.ts
│   │   │   │       ├── prefer-action-creator-in-of-type.spec.ts
│   │   │   │       ├── prefer-action-creator.spec.ts
│   │   │   │       ├── prefer-inline-action-props.spec.ts
│   │   │   │       ├── prefer-one-generic-in-create-for-feature-selector.spec.ts
│   │   │   │       ├── prefer-selector-in-select.spec.ts
│   │   │   │       ├── prefix-selectors-with-select.spec.ts
│   │   │   │       ├── select-style.spec.ts
│   │   │   │       └── use-consistent-global-store-name.spec.ts
│   │   │   ├── schematics/
│   │   │   │   └── ng-add.spec.ts
│   │   │   └── utils/
│   │   │       ├── from-fixture.spec.ts
│   │   │       ├── from-fixture.ts
│   │   │       ├── index.ts
│   │   │       └── rule-tester.ts
│   │   ├── src/
│   │   │   ├── configs/
│   │   │   │   ├── all-type-checked.json
│   │   │   │   ├── all-type-checked.ts
│   │   │   │   ├── all.json
│   │   │   │   ├── all.ts
│   │   │   │   ├── component-store.json
│   │   │   │   ├── component-store.ts
│   │   │   │   ├── effects-type-checked.json
│   │   │   │   ├── effects-type-checked.ts
│   │   │   │   ├── effects.json
│   │   │   │   ├── effects.ts
│   │   │   │   ├── operators.json
│   │   │   │   ├── operators.ts
│   │   │   │   ├── signals-type-checked.json
│   │   │   │   ├── signals-type-checked.ts
│   │   │   │   ├── signals.json
│   │   │   │   ├── signals.ts
│   │   │   │   ├── store.json
│   │   │   │   └── store.ts
│   │   │   ├── index.ts
│   │   │   ├── rule-creator.ts
│   │   │   ├── rules/
│   │   │   │   ├── component-store/
│   │   │   │   │   ├── avoid-combining-component-store-selectors.ts
│   │   │   │   │   ├── avoid-mapping-component-store-selectors.ts
│   │   │   │   │   ├── require-super-ondestroy.ts
│   │   │   │   │   └── updater-explicit-return-type.ts
│   │   │   │   ├── effects/
│   │   │   │   │   ├── avoid-cyclic-effects.ts
│   │   │   │   │   ├── no-dispatch-in-effects.ts
│   │   │   │   │   ├── no-effects-in-providers.ts
│   │   │   │   │   ├── no-multiple-actions-in-effects.ts
│   │   │   │   │   ├── prefer-action-creator-in-of-type.ts
│   │   │   │   │   ├── prefer-effect-callback-in-block-statement.ts
│   │   │   │   │   └── use-effects-lifecycle-interface.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── operators/
│   │   │   │   │   └── prefer-concat-latest-from.ts
│   │   │   │   ├── signals/
│   │   │   │   │   ├── enforce-type-call.ts
│   │   │   │   │   ├── prefer-protected-state.ts
│   │   │   │   │   ├── signal-state-no-arrays-at-root-level.ts
│   │   │   │   │   ├── signal-store-feature-should-use-generic-type.ts
│   │   │   │   │   └── with-state-no-arrays-at-root-level.ts
│   │   │   │   └── store/
│   │   │   │       ├── avoid-combining-selectors.ts
│   │   │   │       ├── avoid-dispatching-multiple-actions-sequentially.ts
│   │   │   │       ├── avoid-duplicate-actions-in-reducer.ts
│   │   │   │       ├── avoid-mapping-selectors.ts
│   │   │   │       ├── good-action-hygiene.ts
│   │   │   │       ├── no-multiple-global-stores.ts
│   │   │   │       ├── no-reducer-in-key-names.ts
│   │   │   │       ├── no-store-subscription.ts
│   │   │   │       ├── no-typed-global-store.ts
│   │   │   │       ├── on-function-explicit-return-type.ts
│   │   │   │       ├── prefer-action-creator-in-dispatch.ts
│   │   │   │       ├── prefer-action-creator.ts
│   │   │   │       ├── prefer-inline-action-props.ts
│   │   │   │       ├── prefer-one-generic-in-create-for-feature-selector.ts
│   │   │   │       ├── prefer-selector-in-select.ts
│   │   │   │       ├── prefix-selectors-with-select.ts
│   │   │   │       ├── select-style.ts
│   │   │   │       └── use-consistent-global-store-name.ts
│   │   │   └── utils/
│   │   │       ├── helper-functions/
│   │   │       │   ├── folder.ts
│   │   │       │   ├── guards.ts
│   │   │       │   ├── index.ts
│   │   │       │   ├── ngrx-modules.ts
│   │   │       │   ├── rules.ts
│   │   │       │   └── utils.ts
│   │   │       ├── index.ts
│   │   │       └── selectors/
│   │   │           └── index.ts
│   │   ├── test-setup.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   ├── v9/
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.build.json
│   │   │   └── tsconfig.spec.json
│   │   └── vite.config.mts
│   ├── license-banner.txt
│   ├── operators/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   ├── 20_0_0-rc_0-tap-response/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── concat_latest_from.spec.ts
│   │   │   ├── map-response.spec.ts
│   │   │   ├── tap-response.spec.ts
│   │   │   └── types/
│   │   │       ├── tap-response.types.spec.ts
│   │   │       └── utils.ts
│   │   ├── src/
│   │   │   ├── concat_latest_from.ts
│   │   │   ├── index.ts
│   │   │   ├── map-response.ts
│   │   │   └── tap-response.ts
│   │   ├── test-setup.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   └── vite.config.mts
│   ├── router-store/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── data-persistence/
│   │   │   ├── index.ts
│   │   │   ├── ng-package.json
│   │   │   ├── src/
│   │   │   │   ├── operators.ts
│   │   │   │   └── public_api.ts
│   │   │   └── tsconfig.build.json
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   ├── 14_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 15_2_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 6_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 8_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 9_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── public_api.ts
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── __snapshots__/
│   │   │       │   └── index.spec.ts.snap
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── integration.spec.ts
│   │   │   ├── router_selectors.spec.ts
│   │   │   ├── router_store_module.spec.ts
│   │   │   ├── serializers.spec.ts
│   │   │   ├── types/
│   │   │   │   ├── router_selectors.types.spec.ts
│   │   │   │   └── utils.ts
│   │   │   └── utils.ts
│   │   ├── src/
│   │   │   ├── actions.ts
│   │   │   ├── index.ts
│   │   │   ├── models.ts
│   │   │   ├── provide_router_store.ts
│   │   │   ├── reducer.ts
│   │   │   ├── router_selectors.ts
│   │   │   ├── router_store_config.ts
│   │   │   ├── router_store_module.ts
│   │   │   ├── serializers/
│   │   │   │   ├── base.ts
│   │   │   │   ├── full_serializer.ts
│   │   │   │   └── minimal_serializer.ts
│   │   │   └── store_router_connecting.service.ts
│   │   ├── test-setup.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   ├── vite.config.mts
│   │   └── webpack.e2e.config.js
│   ├── schematics/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── collection.json
│   │   ├── eslint.config.mjs
│   │   ├── jest.config.ts
│   │   ├── migrations/
│   │   │   ├── 6_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── src/
│   │   │   ├── action/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       └── __name@dasherize__.actions.ts.template
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── cli.spec.ts
│   │   │   ├── component-store/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       ├── __name@dasherize__.store.spec.ts.template
│   │   │   │   │       └── __name@dasherize__.store.ts.template
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── container/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       └── __name@dasherize__-component.spec.ts.template
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── integration-files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       └── __name@dasherize__-component.spec.ts.template
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── data/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       ├── __name@dasherize__.service.spec.ts.template
│   │   │   │   │       ├── __name@dasherize__.service.ts.template
│   │   │   │   │       └── __name@dasherize__.ts.template
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── effect/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       ├── __name@dasherize__.effects.spec.ts.template
│   │   │   │   │       └── __name@dasherize__.effects.ts.template
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── entity/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       ├── __name@dasherize@group-actions__.actions.ts.template
│   │   │   │   │       ├── __name@dasherize@group-models__.model.ts.template
│   │   │   │   │       ├── __name@dasherize@group-reducers__.reducer.spec.ts.template
│   │   │   │   │       └── __name@dasherize@group-reducers__.reducer.ts.template
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── feature/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── index.ts
│   │   │   ├── ng-add/
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── ngrx-push-migration/
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── reducer/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       ├── __name@dasherize__.reducer.spec.ts.template
│   │   │   │   │       └── __name@dasherize__.reducer.ts.template
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   ├── selector/
│   │   │   │   ├── __snapshots__/
│   │   │   │   │   └── index.spec.ts.snap
│   │   │   │   ├── files/
│   │   │   │   │   └── __name@dasherize@if-flat__/
│   │   │   │   │       ├── __name@dasherize__.selectors.spec.ts.template
│   │   │   │   │       └── __name@dasherize__.selectors.ts.template
│   │   │   │   ├── index.spec.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── schema.json
│   │   │   │   └── schema.ts
│   │   │   └── store/
│   │   │       ├── __snapshots__/
│   │   │       │   └── index.spec.ts.snap
│   │   │       ├── files/
│   │   │       │   └── __statePath__/
│   │   │       │       └── index.ts.template
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── test-setup.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   └── tsconfig.spec.json
│   ├── schematics-core/
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── project.json
│   │   ├── testing/
│   │   │   ├── create-app-module.ts
│   │   │   ├── create-package.ts
│   │   │   ├── create-reducers.ts
│   │   │   ├── create-workspace.ts
│   │   │   ├── index.ts
│   │   │   └── update.ts
│   │   ├── tsconfig.lib.json
│   │   └── utility/
│   │       ├── ast-utils.ts
│   │       ├── change.ts
│   │       ├── config.ts
│   │       ├── find-component.ts
│   │       ├── find-module.ts
│   │       ├── json-utilts.ts
│   │       ├── libs-version.ts
│   │       ├── ngrx-utils.ts
│   │       ├── package.ts
│   │       ├── parse-name.ts
│   │       ├── project.ts
│   │       ├── standalone.ts
│   │       ├── strings.ts
│   │       ├── update.ts
│   │       └── visitors.ts
│   ├── signals/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── entities/
│   │   │   ├── index.ts
│   │   │   ├── ng-package.json
│   │   │   ├── spec/
│   │   │   │   ├── helpers.ts
│   │   │   │   ├── mocks.ts
│   │   │   │   ├── types/
│   │   │   │   │   ├── entity-config.types.spec.ts
│   │   │   │   │   ├── helpers.ts
│   │   │   │   │   └── with-entities.types.spec.ts
│   │   │   │   ├── updaters/
│   │   │   │   │   ├── add-entities.spec.ts
│   │   │   │   │   ├── add-entity.spec.ts
│   │   │   │   │   ├── prepend-entities.spec.ts
│   │   │   │   │   ├── prepend-entity.spec.ts
│   │   │   │   │   ├── remove-all-entities.spec.ts
│   │   │   │   │   ├── remove-entities.spec.ts
│   │   │   │   │   ├── remove-entity.spec.ts
│   │   │   │   │   ├── set-all-entities.spec.ts
│   │   │   │   │   ├── set-entities.spec.ts
│   │   │   │   │   ├── set-entity.spec.ts
│   │   │   │   │   ├── update-all-entities.spec.ts
│   │   │   │   │   ├── update-entities.spec.ts
│   │   │   │   │   ├── update-entity.spec.ts
│   │   │   │   │   ├── upsert-entities.spec.ts
│   │   │   │   │   └── upsert-entity.spec.ts
│   │   │   │   └── with-entities.spec.ts
│   │   │   └── src/
│   │   │       ├── entity-config.ts
│   │   │       ├── helpers.ts
│   │   │       ├── index.ts
│   │   │       ├── models.ts
│   │   │       ├── updaters/
│   │   │       │   ├── add-entities.ts
│   │   │       │   ├── add-entity.ts
│   │   │       │   ├── prepend-entities.ts
│   │   │       │   ├── prepend-entity.ts
│   │   │       │   ├── remove-all-entities.ts
│   │   │       │   ├── remove-entities.ts
│   │   │       │   ├── remove-entity.ts
│   │   │       │   ├── set-all-entities.ts
│   │   │       │   ├── set-entities.ts
│   │   │       │   ├── set-entity.ts
│   │   │       │   ├── update-all-entities.ts
│   │   │       │   ├── update-entities.ts
│   │   │       │   ├── update-entity.ts
│   │   │       │   ├── upsert-entities.ts
│   │   │       │   └── upsert-entity.ts
│   │   │       └── with-entities.ts
│   │   ├── eslint.config.mjs
│   │   ├── events/
│   │   │   ├── index.ts
│   │   │   ├── ng-package.json
│   │   │   ├── spec/
│   │   │   │   ├── dispatcher.spec.ts
│   │   │   │   ├── event-creator-group.spec.ts
│   │   │   │   ├── event-creator.spec.ts
│   │   │   │   ├── events-service.spec.ts
│   │   │   │   ├── inject-dispatch.spec.ts
│   │   │   │   ├── integration.spec.ts
│   │   │   │   ├── with-event-handlers.spec.ts
│   │   │   │   └── with-reducer.spec.ts
│   │   │   └── src/
│   │   │       ├── case-reducer.ts
│   │   │       ├── dispatcher.ts
│   │   │       ├── event-creator-group.ts
│   │   │       ├── event-creator.ts
│   │   │       ├── event-instance.ts
│   │   │       ├── event-scope.ts
│   │   │       ├── events-service.ts
│   │   │       ├── index.ts
│   │   │       ├── inject-dispatch.ts
│   │   │       ├── with-event-handlers.ts
│   │   │       └── with-reducer.ts
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   ├── 18_0_0-rc_3-protected-state/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 18_0_0-rc_3-writablestatesource/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 19_0_0-rc_0-props/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 21_0_0-beta_0-rename-withEffects-to-withEventHandlers/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── rxjs-interop/
│   │   │   ├── index.ts
│   │   │   ├── ng-package.json
│   │   │   ├── spec/
│   │   │   │   └── rx-method.spec.ts
│   │   │   └── src/
│   │   │       ├── index.ts
│   │   │       └── rx-method.ts
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── deep-computed.spec.ts
│   │   │   ├── deep-signal.spec.ts
│   │   │   ├── helpers.ts
│   │   │   ├── signal-method.spec.ts
│   │   │   ├── signal-state.spec.ts
│   │   │   ├── signal-store-feature.spec.ts
│   │   │   ├── signal-store.spec.ts
│   │   │   ├── state-source.spec.ts
│   │   │   ├── types/
│   │   │   │   ├── helpers.ts
│   │   │   │   ├── patch-state.types.spec.ts
│   │   │   │   ├── signal-state.types.spec.ts
│   │   │   │   ├── signal-store.types.spec.ts
│   │   │   │   ├── with-computed.types.spec.ts
│   │   │   │   └── with-linked-state.types.spec.ts
│   │   │   ├── with-computed.spec.ts
│   │   │   ├── with-feature.spec.ts
│   │   │   ├── with-hooks.spec.ts
│   │   │   ├── with-linked-state.spec.ts
│   │   │   ├── with-methods.spec.ts
│   │   │   ├── with-props.spec.ts
│   │   │   └── with-state.spec.ts
│   │   ├── src/
│   │   │   ├── deep-computed.ts
│   │   │   ├── deep-signal.ts
│   │   │   ├── index.ts
│   │   │   ├── signal-method.ts
│   │   │   ├── signal-state.ts
│   │   │   ├── signal-store-assertions.ts
│   │   │   ├── signal-store-feature.ts
│   │   │   ├── signal-store-models.ts
│   │   │   ├── signal-store.ts
│   │   │   ├── state-source.ts
│   │   │   ├── ts-helpers.ts
│   │   │   ├── with-computed.ts
│   │   │   ├── with-feature.ts
│   │   │   ├── with-hooks.ts
│   │   │   ├── with-linked-state.ts
│   │   │   ├── with-methods.ts
│   │   │   ├── with-props.ts
│   │   │   └── with-state.ts
│   │   ├── test-setup.ts
│   │   ├── testing/
│   │   │   ├── index.ts
│   │   │   ├── ng-package.json
│   │   │   ├── spec/
│   │   │   │   ├── types/
│   │   │   │   │   ├── helpers.ts
│   │   │   │   │   └── uprotected.types.spec.ts
│   │   │   │   └── unprotected.spec.ts
│   │   │   └── src/
│   │   │       ├── index.ts
│   │   │       └── unprotected.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   └── vite.config.mts
│   ├── store/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── index.ts
│   │   ├── migrations/
│   │   │   ├── 13_0_0-beta/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 13_0_0-rc/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 15_2_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 16_0_0-beta/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 18_0_0-beta/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 6_0_0/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 8_0_0-beta/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   ├── 8_0_0-rc/
│   │   │   │   ├── index.spec.ts
│   │   │   │   └── index.ts
│   │   │   └── migration.json
│   │   ├── ng-package.json
│   │   ├── package.json
│   │   ├── project.json
│   │   ├── public_api.ts
│   │   ├── schematics/
│   │   │   ├── collection.json
│   │   │   └── ng-add/
│   │   │       ├── files/
│   │   │       │   └── __statePath__/
│   │   │       │       └── index.ts.template
│   │   │       ├── index.spec.ts
│   │   │       ├── index.ts
│   │   │       ├── schema.json
│   │   │       └── schema.ts
│   │   ├── schematics-core/
│   │   │   ├── eslint.config.mjs
│   │   │   ├── index.ts
│   │   │   ├── tsconfig.lib.json
│   │   │   └── utility/
│   │   │       ├── ast-utils.ts
│   │   │       ├── change.ts
│   │   │       ├── config.ts
│   │   │       ├── find-component.ts
│   │   │       ├── find-module.ts
│   │   │       ├── json-utilts.ts
│   │   │       ├── libs-version.ts
│   │   │       ├── ngrx-utils.ts
│   │   │       ├── package.ts
│   │   │       ├── parse-name.ts
│   │   │       ├── project.ts
│   │   │       ├── standalone.ts
│   │   │       ├── strings.ts
│   │   │       ├── update.ts
│   │   │       └── visitors.ts
│   │   ├── spec/
│   │   │   ├── action_creator.spec.ts
│   │   │   ├── action_group_creator.spec.ts
│   │   │   ├── edge.spec.ts
│   │   │   ├── feature_creator.spec.ts
│   │   │   ├── fixtures/
│   │   │   │   ├── counter.ts
│   │   │   │   ├── edge_todos.ts
│   │   │   │   └── todos.ts
│   │   │   ├── flags.spec.ts
│   │   │   ├── helpers.spec.ts
│   │   │   ├── integration.spec.ts
│   │   │   ├── integration_signals.spec.ts
│   │   │   ├── meta-reducers/
│   │   │   │   ├── immutability_reducer.spec.ts
│   │   │   │   ├── inNgZoneAssert_reducer.spec.ts
│   │   │   │   └── serialization_reducer.spec.ts
│   │   │   ├── modules.spec.ts
│   │   │   ├── ngc/
│   │   │   │   ├── main.ts
│   │   │   │   └── tsconfig.ngc.json
│   │   │   ├── reducer_creator.spec.ts
│   │   │   ├── reducer_manager.spec.ts
│   │   │   ├── runtime_checks.spec.ts
│   │   │   ├── runtime_checks_meta_reducers.spec.ts
│   │   │   ├── selector.spec.ts
│   │   │   ├── state.spec.ts
│   │   │   ├── store.spec.ts
│   │   │   ├── store_pipes.spec.ts
│   │   │   ├── types/
│   │   │   │   ├── action_creator.spec.ts
│   │   │   │   ├── action_group_creator.spec.ts
│   │   │   │   ├── feature_creator.spec.ts
│   │   │   │   ├── reducer_creator.spec.ts
│   │   │   │   ├── select.spec.ts
│   │   │   │   ├── select_signal.spec.ts
│   │   │   │   ├── selector.spec.ts
│   │   │   │   ├── store.spec.ts
│   │   │   │   ├── store_module.spec.ts
│   │   │   │   └── utils.ts
│   │   │   └── utils.spec.ts
│   │   ├── src/
│   │   │   ├── action_creator.ts
│   │   │   ├── action_group_creator.ts
│   │   │   ├── actions_subject.ts
│   │   │   ├── feature_creator.ts
│   │   │   ├── flags.ts
│   │   │   ├── globals.ts
│   │   │   ├── helpers.ts
│   │   │   ├── index.ts
│   │   │   ├── meta-reducers/
│   │   │   │   ├── immutability_reducer.ts
│   │   │   │   ├── inNgZoneAssert_reducer.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── serialization_reducer.ts
│   │   │   │   └── utils.ts
│   │   │   ├── models.ts
│   │   │   ├── private_export.ts
│   │   │   ├── provide_store.ts
│   │   │   ├── reducer_creator.ts
│   │   │   ├── reducer_manager.ts
│   │   │   ├── runtime_checks.ts
│   │   │   ├── scanned_actions_subject.ts
│   │   │   ├── selector.ts
│   │   │   ├── state.ts
│   │   │   ├── store.ts
│   │   │   ├── store_config.ts
│   │   │   ├── store_module.ts
│   │   │   ├── tokens.ts
│   │   │   └── utils.ts
│   │   ├── test-setup.ts
│   │   ├── testing/
│   │   │   ├── index.ts
│   │   │   ├── ng-package.json
│   │   │   ├── spec/
│   │   │   │   └── mock_store.spec.ts
│   │   │   ├── src/
│   │   │   │   ├── mock_reducer_manager.ts
│   │   │   │   ├── mock_selector.ts
│   │   │   │   ├── mock_state.ts
│   │   │   │   ├── mock_store.ts
│   │   │   │   ├── public_api.ts
│   │   │   │   ├── testing.ts
│   │   │   │   └── tokens.ts
│   │   │   ├── tsconfig.build.json
│   │   │   └── tsconfig.spec.json
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.schematics.json
│   │   ├── tsconfig.spec.json
│   │   └── vite.config.mts
│   └── store-devtools/
│       ├── CHANGELOG.md
│       ├── README.md
│       ├── eslint.config.mjs
│       ├── index.ts
│       ├── migrations/
│       │   ├── 17_0_0-beta/
│       │   │   ├── index.spec.ts
│       │   │   └── index.ts
│       │   ├── 6_0_0/
│       │   │   ├── index.spec.ts
│       │   │   └── index.ts
│       │   └── migration.json
│       ├── ng-package.json
│       ├── package.json
│       ├── project.json
│       ├── public_api.ts
│       ├── schematics/
│       │   ├── collection.json
│       │   └── ng-add/
│       │       ├── __snapshots__/
│       │       │   └── index.spec.ts.snap
│       │       ├── index.spec.ts
│       │       ├── index.ts
│       │       ├── schema.json
│       │       └── schema.ts
│       ├── schematics-core/
│       │   ├── eslint.config.mjs
│       │   ├── index.ts
│       │   ├── tsconfig.lib.json
│       │   └── utility/
│       │       ├── ast-utils.ts
│       │       ├── change.ts
│       │       ├── config.ts
│       │       ├── find-component.ts
│       │       ├── find-module.ts
│       │       ├── json-utilts.ts
│       │       ├── libs-version.ts
│       │       ├── ngrx-utils.ts
│       │       ├── package.ts
│       │       ├── parse-name.ts
│       │       ├── project.ts
│       │       ├── standalone.ts
│       │       ├── strings.ts
│       │       ├── update.ts
│       │       └── visitors.ts
│       ├── spec/
│       │   ├── config.spec.ts
│       │   ├── extension.spec.ts
│       │   ├── integration.spec.ts
│       │   └── store.spec.ts
│       ├── src/
│       │   ├── actions.ts
│       │   ├── config.ts
│       │   ├── devtools-dispatcher.ts
│       │   ├── devtools.ts
│       │   ├── extension.ts
│       │   ├── index.ts
│       │   ├── instrument.ts
│       │   ├── provide-store-devtools.ts
│       │   ├── reducer.ts
│       │   ├── utils.ts
│       │   └── zone-config.ts
│       ├── test-setup.ts
│       ├── tsconfig.build.json
│       ├── tsconfig.schematics.json
│       ├── tsconfig.spec.json
│       └── vite.config.mts
├── nx.json
├── package.json
├── prettier.config.js
├── projects/
│   ├── example-app/
│   │   ├── README.md
│   │   ├── eslint.config.mjs
│   │   ├── project.json
│   │   ├── src/
│   │   │   ├── app/
│   │   │   │   ├── app-routing.module.ts
│   │   │   │   ├── app.module.ts
│   │   │   │   ├── auth/
│   │   │   │   │   ├── actions/
│   │   │   │   │   │   ├── auth-api.actions.ts
│   │   │   │   │   │   ├── auth.actions.ts
│   │   │   │   │   │   └── login-page.actions.ts
│   │   │   │   │   ├── auth-routing.module.ts
│   │   │   │   │   ├── auth.module.ts
│   │   │   │   │   ├── components/
│   │   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   │   ├── login-form.component.spec.ts.snap
│   │   │   │   │   │   │   └── logout-confirmation-dialog.component.spec.ts.snap
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── login-form.component.spec.ts
│   │   │   │   │   │   ├── login-form.component.ts
│   │   │   │   │   │   ├── logout-confirmation-dialog.component.spec.ts
│   │   │   │   │   │   └── logout-confirmation-dialog.component.ts
│   │   │   │   │   ├── containers/
│   │   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   │   └── login-page.component.spec.ts.snap
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── login-page.component.spec.ts
│   │   │   │   │   │   └── login-page.component.ts
│   │   │   │   │   ├── effects/
│   │   │   │   │   │   ├── auth.effects.spec.ts
│   │   │   │   │   │   ├── auth.effects.ts
│   │   │   │   │   │   └── index.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── models/
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   └── user.ts
│   │   │   │   │   ├── reducers/
│   │   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   │   ├── auth.reducer.spec.ts.snap
│   │   │   │   │   │   │   └── login-page.reducer.spec.ts.snap
│   │   │   │   │   │   ├── auth.reducer.spec.ts
│   │   │   │   │   │   ├── auth.reducer.ts
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── login-page.reducer.spec.ts
│   │   │   │   │   │   └── login-page.reducer.ts
│   │   │   │   │   └── services/
│   │   │   │   │       ├── auth-guard.service.spec.ts
│   │   │   │   │       ├── auth-guard.service.ts
│   │   │   │   │       ├── auth.service.ts
│   │   │   │   │       └── index.ts
│   │   │   │   ├── books/
│   │   │   │   │   ├── actions/
│   │   │   │   │   │   ├── book.actions.ts
│   │   │   │   │   │   ├── books-api.actions.ts
│   │   │   │   │   │   ├── collection-api.actions.ts
│   │   │   │   │   │   ├── collection-page.actions.ts
│   │   │   │   │   │   ├── find-book-page.actions.ts
│   │   │   │   │   │   ├── selected-book-page.actions.ts
│   │   │   │   │   │   └── view-book-page.actions.ts
│   │   │   │   │   ├── books-routing.module.ts
│   │   │   │   │   ├── books.module.ts
│   │   │   │   │   ├── components/
│   │   │   │   │   │   ├── book-authors.component.ts
│   │   │   │   │   │   ├── book-detail.component.ts
│   │   │   │   │   │   ├── book-preview-list.component.ts
│   │   │   │   │   │   ├── book-preview.component.ts
│   │   │   │   │   │   ├── book-search.component.ts
│   │   │   │   │   │   └── index.ts
│   │   │   │   │   ├── containers/
│   │   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   │   ├── collection-page.component.spec.ts.snap
│   │   │   │   │   │   │   ├── find-book-page.component.spec.ts.snap
│   │   │   │   │   │   │   ├── selected-book-page.component.spec.ts.snap
│   │   │   │   │   │   │   └── view-book-page.component.spec.ts.snap
│   │   │   │   │   │   ├── collection-page.component.spec.ts
│   │   │   │   │   │   ├── collection-page.component.ts
│   │   │   │   │   │   ├── find-book-page.component.spec.ts
│   │   │   │   │   │   ├── find-book-page.component.ts
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── selected-book-page.component.spec.ts
│   │   │   │   │   │   ├── selected-book-page.component.ts
│   │   │   │   │   │   ├── view-book-page.component.spec.ts
│   │   │   │   │   │   └── view-book-page.component.ts
│   │   │   │   │   ├── effects/
│   │   │   │   │   │   ├── book.effects.spec.ts
│   │   │   │   │   │   ├── book.effects.ts
│   │   │   │   │   │   ├── collection.effects.spec.ts
│   │   │   │   │   │   ├── collection.effects.ts
│   │   │   │   │   │   └── index.ts
│   │   │   │   │   ├── guards/
│   │   │   │   │   │   ├── book-exists.guard.ts
│   │   │   │   │   │   └── index.ts
│   │   │   │   │   ├── models/
│   │   │   │   │   │   ├── book.ts
│   │   │   │   │   │   └── index.ts
│   │   │   │   │   └── reducers/
│   │   │   │   │       ├── __snapshots__/
│   │   │   │   │       │   └── books.reducer.spec.ts.snap
│   │   │   │   │       ├── books.reducer.spec.ts
│   │   │   │   │       ├── books.reducer.ts
│   │   │   │   │       ├── collection.reducer.ts
│   │   │   │   │       ├── index.ts
│   │   │   │   │       └── search.reducer.ts
│   │   │   │   ├── core/
│   │   │   │   │   ├── actions/
│   │   │   │   │   │   ├── layout.actions.ts
│   │   │   │   │   │   └── user.actions.ts
│   │   │   │   │   ├── components/
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── layout.component.ts
│   │   │   │   │   │   ├── nav-item.component.ts
│   │   │   │   │   │   ├── sidenav.component.ts
│   │   │   │   │   │   └── toolbar.component.ts
│   │   │   │   │   ├── containers/
│   │   │   │   │   │   ├── app.component.ts
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   └── not-found-page.component.ts
│   │   │   │   │   ├── core.module.ts
│   │   │   │   │   ├── effects/
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── router.effects.spec.ts
│   │   │   │   │   │   ├── router.effects.ts
│   │   │   │   │   │   ├── user.effects.spec.ts
│   │   │   │   │   │   └── user.effects.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── reducers/
│   │   │   │   │   │   └── layout.reducer.ts
│   │   │   │   │   └── services/
│   │   │   │   │       ├── book-storage.service.spec.ts
│   │   │   │   │       ├── book-storage.service.ts
│   │   │   │   │       ├── google-books.service.spec.ts
│   │   │   │   │       ├── google-books.service.ts
│   │   │   │   │       └── index.ts
│   │   │   │   ├── material/
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── material.module.ts
│   │   │   │   ├── reducers/
│   │   │   │   │   └── index.ts
│   │   │   │   └── shared/
│   │   │   │       └── pipes/
│   │   │   │           ├── add-commas.pipe.spec.ts
│   │   │   │           ├── add-commas.pipe.ts
│   │   │   │           ├── ellipsis.pipe.spec.ts
│   │   │   │           ├── ellipsis.pipe.ts
│   │   │   │           └── index.ts
│   │   │   ├── assets/
│   │   │   │   ├── .gitkeep
│   │   │   │   └── .npmignore
│   │   │   ├── index.html
│   │   │   ├── main.ts
│   │   │   ├── polyfills.ts
│   │   │   ├── styles.css
│   │   │   └── test-setup.ts
│   │   ├── tsconfig.app.json
│   │   ├── tsconfig.spec.json
│   │   └── vite.config.mts
│   ├── example-app-e2e/
│   │   ├── cypress.config.ts
│   │   ├── eslint.config.mjs
│   │   ├── project.json
│   │   ├── src/
│   │   │   ├── integration/
│   │   │   │   └── round-trip.cy.ts
│   │   │   └── support/
│   │   │       ├── commands.ts
│   │   │       └── e2e.ts
│   │   └── tsconfig.json
│   ├── standalone-app/
│   │   ├── eslint.config.mjs
│   │   ├── jest.config.ts
│   │   ├── project.json
│   │   ├── src/
│   │   │   ├── app/
│   │   │   │   ├── app.component.spec.ts
│   │   │   │   ├── app.component.ts
│   │   │   │   ├── app.config.ts
│   │   │   │   ├── app.effects.ts
│   │   │   │   ├── lazy/
│   │   │   │   │   ├── feature.component.ts
│   │   │   │   │   ├── feature.routes.ts
│   │   │   │   │   └── feature.state.ts
│   │   │   │   └── test.pipe.ts
│   │   │   ├── assets/
│   │   │   │   └── .gitkeep
│   │   │   ├── index.html
│   │   │   ├── main.ts
│   │   │   ├── polyfills.ts
│   │   │   ├── styles.css
│   │   │   └── test-setup.ts
│   │   ├── tsconfig.app.json
│   │   ├── tsconfig.editor.json
│   │   ├── tsconfig.json
│   │   └── tsconfig.spec.json
│   ├── standalone-app-e2e/
│   │   ├── cypress.config.ts
│   │   ├── eslint.config.mjs
│   │   ├── project.json
│   │   ├── src/
│   │   │   ├── integration/
│   │   │   │   └── app.cy.ts
│   │   │   └── support/
│   │   │       ├── app.po.ts
│   │   │       └── e2e.ts
│   │   └── tsconfig.json
│   └── www/
│       ├── eslint.config.mjs
│       ├── firebase.json
│       ├── index.html
│       ├── package.json
│       ├── project.json
│       ├── public/
│       │   ├── .gitkeep
│       │   ├── _redirects
│       │   ├── browserconfig.xml
│       │   ├── images/
│       │   │   └── guide/
│       │   │       └── store/
│       │   │           └── state-management-lifecycle.psd
│       │   └── site.webmanifest
│       ├── src/
│       │   ├── _code_theme.scss
│       │   ├── _theme.scss
│       │   ├── app/
│       │   │   ├── app.component.spec.ts
│       │   │   ├── app.component.ts
│       │   │   ├── app.config.browser.ts
│       │   │   ├── app.config.server.ts
│       │   │   ├── app.config.ts
│       │   │   ├── components/
│       │   │   │   ├── banner-animation.component.ts
│       │   │   │   ├── contributor-card.component.ts
│       │   │   │   ├── contributor-list.component.ts
│       │   │   │   ├── contributor-navigation.component.ts
│       │   │   │   ├── docs/
│       │   │   │   │   ├── alert.component.ts
│       │   │   │   │   ├── code-example.component.ts
│       │   │   │   │   ├── code-highlight.pipe.ts
│       │   │   │   │   ├── code-tabs.component.ts
│       │   │   │   │   ├── deprecated-chip.component.ts
│       │   │   │   │   ├── inline-markdown.pipe.ts
│       │   │   │   │   ├── install-instructions.component.ts
│       │   │   │   │   ├── markdown-article.component.ts
│       │   │   │   │   ├── markdown-symbol-link.component.ts
│       │   │   │   │   ├── markdown.pipe.ts
│       │   │   │   │   ├── stackblitz.component.ts
│       │   │   │   │   ├── symbol-api.component.ts
│       │   │   │   │   ├── symbol-chip.component.ts
│       │   │   │   │   ├── symbol-code-link.component.ts
│       │   │   │   │   ├── symbol-excerpt-group.component.ts
│       │   │   │   │   ├── symbol-excerpt.component.ts
│       │   │   │   │   ├── symbol-header.component.ts
│       │   │   │   │   ├── symbol-link.component.ts
│       │   │   │   │   ├── symbol-methods.component.ts
│       │   │   │   │   ├── symbol-params.component.ts
│       │   │   │   │   ├── symbol-popover.component.ts
│       │   │   │   │   ├── symbol-returns.component.ts
│       │   │   │   │   ├── symbol-summary.component.ts
│       │   │   │   │   ├── symbol-type-params.component.ts
│       │   │   │   │   ├── symbol-usage-notes.component.ts
│       │   │   │   │   └── symbol.component.ts
│       │   │   │   ├── footer.component.ts
│       │   │   │   ├── guide-footer.component.ts
│       │   │   │   ├── guide-link.component.ts
│       │   │   │   ├── guide-section.component.ts
│       │   │   │   ├── menu.component.ts
│       │   │   │   ├── styled-box.component.ts
│       │   │   │   ├── theme-toggle.component.ts
│       │   │   │   ├── top-banner.component.ts
│       │   │   │   └── version-navigation.component.ts
│       │   │   ├── data/
│       │   │   │   ├── contributors.json
│       │   │   │   └── versionInfo.json
│       │   │   ├── examples/
│       │   │   │   ├── __base/
│       │   │   │   │   ├── index.html
│       │   │   │   │   ├── package.json
│       │   │   │   │   ├── src/
│       │   │   │   │   │   ├── _theme.scss
│       │   │   │   │   │   ├── app.component.ts
│       │   │   │   │   │   ├── app.config.ts
│       │   │   │   │   │   ├── main.ts
│       │   │   │   │   │   └── styles.scss
│       │   │   │   │   ├── stackblitz-empty.yml
│       │   │   │   │   ├── stackblitz.yml
│       │   │   │   │   ├── tsconfig.json
│       │   │   │   │   └── vite.config.js
│       │   │   │   ├── component-store-paginator/
│       │   │   │   │   └── src/
│       │   │   │   │       ├── app/
│       │   │   │   │       │   ├── app.component.ts
│       │   │   │   │       │   ├── app.module.ts
│       │   │   │   │       │   ├── paginator.component.ts
│       │   │   │   │       │   ├── paginator.html
│       │   │   │   │       │   └── paginator.scss
│       │   │   │   │       ├── index.html
│       │   │   │   │       ├── main.ts
│       │   │   │   │       └── styles.scss
│       │   │   │   ├── component-store-paginator-service/
│       │   │   │   │   └── src/
│       │   │   │   │       ├── app/
│       │   │   │   │       │   ├── app.component.ts
│       │   │   │   │       │   ├── app.module.ts
│       │   │   │   │       │   ├── paginator.component.ts
│       │   │   │   │       │   ├── paginator.html
│       │   │   │   │       │   ├── paginator.scss
│       │   │   │   │       │   └── paginator.store.ts
│       │   │   │   │       ├── index.html
│       │   │   │   │       ├── main.ts
│       │   │   │   │       └── styles.scss
│       │   │   │   ├── component-store-slide-toggle/
│       │   │   │   │   └── src/
│       │   │   │   │       ├── app/
│       │   │   │   │       │   ├── app.component.css
│       │   │   │   │       │   ├── app.component.ts
│       │   │   │   │       │   ├── app.module.ts
│       │   │   │   │       │   ├── slide-toggle.component.ts
│       │   │   │   │       │   ├── slide-toggle.html
│       │   │   │   │       │   └── slide-toggle.scss
│       │   │   │   │       ├── index.html
│       │   │   │   │       └── main.ts
│       │   │   │   ├── examples.service.ts
│       │   │   │   ├── ngrx-start/
│       │   │   │   │   ├── index.html
│       │   │   │   │   ├── src/
│       │   │   │   │   │   ├── app.config.ts
│       │   │   │   │   │   ├── app.ts
│       │   │   │   │   │   └── main.ts
│       │   │   │   │   └── stackblitz.yml
│       │   │   │   ├── router-store-selectors/
│       │   │   │   │   └── src/
│       │   │   │   │       ├── app/
│       │   │   │   │       │   ├── app.component.css
│       │   │   │   │       │   ├── app.component.html
│       │   │   │   │       │   ├── app.component.ts
│       │   │   │   │       │   ├── app.config.ts
│       │   │   │   │       │   ├── car/
│       │   │   │   │       │   │   ├── car.actions.ts
│       │   │   │   │       │   │   ├── car.component.css
│       │   │   │   │       │   │   ├── car.component.html
│       │   │   │   │       │   │   ├── car.component.ts
│       │   │   │   │       │   │   ├── car.reducer.ts
│       │   │   │   │       │   │   └── car.selectors.ts
│       │   │   │   │       │   └── router.selectors.ts
│       │   │   │   │       ├── index.html
│       │   │   │   │       └── main.ts
│       │   │   │   ├── signals-01/
│       │   │   │   │   ├── src/
│       │   │   │   │   │   └── app.component.ts
│       │   │   │   │   └── stackblitz.yml
│       │   │   │   ├── store/
│       │   │   │   │   ├── src/
│       │   │   │   │   │   ├── app.component.ts
│       │   │   │   │   │   ├── app.config.ts
│       │   │   │   │   │   ├── counter.actions.ts
│       │   │   │   │   │   ├── counter.reducer.ts
│       │   │   │   │   │   └── my-counter/
│       │   │   │   │   │       ├── my-counter.component.todo.ts
│       │   │   │   │   │       └── my-counter.component.ts
│       │   │   │   │   └── stackblitz.yml
│       │   │   │   ├── store-walkthrough/
│       │   │   │   │   ├── index.html
│       │   │   │   │   ├── src/
│       │   │   │   │   │   ├── app.config.ts
│       │   │   │   │   │   ├── app.ts
│       │   │   │   │   │   ├── book-collection/
│       │   │   │   │   │   │   ├── book-collection.css
│       │   │   │   │   │   │   └── book-collection.ts
│       │   │   │   │   │   ├── book-list/
│       │   │   │   │   │   │   ├── book-list.css
│       │   │   │   │   │   │   ├── book-list.ts
│       │   │   │   │   │   │   ├── book.ts
│       │   │   │   │   │   │   └── books-service.ts
│       │   │   │   │   │   ├── main.ts
│       │   │   │   │   │   └── state/
│       │   │   │   │   │       ├── app.state.ts
│       │   │   │   │   │       ├── books.actions.ts
│       │   │   │   │   │       ├── books.reducer.ts
│       │   │   │   │   │       ├── books.selectors.ts
│       │   │   │   │   │       └── collection.reducer.ts
│       │   │   │   │   └── stackblitz.yml
│       │   │   │   └── testing-store/
│       │   │   │       └── src/
│       │   │   │           ├── .browserslistrc
│       │   │   │           ├── app/
│       │   │   │           │   ├── actions/
│       │   │   │           │   │   ├── auth.actions.ts
│       │   │   │           │   │   └── index.ts
│       │   │   │           │   ├── app.component.html
│       │   │   │           │   ├── app.component.spec.ts
│       │   │   │           │   ├── app.component.ts
│       │   │   │           │   ├── app.module.ts
│       │   │   │           │   ├── book-collection/
│       │   │   │           │   │   ├── book-collection.component.css
│       │   │   │           │   │   ├── book-collection.component.html
│       │   │   │           │   │   └── book-collection.component.ts
│       │   │   │           │   ├── book-list/
│       │   │   │           │   │   ├── book-list.component.css
│       │   │   │           │   │   ├── book-list.component.html
│       │   │   │           │   │   ├── book-list.component.ts
│       │   │   │           │   │   ├── books.model.ts
│       │   │   │           │   │   └── books.service.ts
│       │   │   │           │   ├── integration.spec.ts
│       │   │   │           │   ├── reducers/
│       │   │   │           │   │   ├── auth.reducer.ts
│       │   │   │           │   │   └── index.ts
│       │   │   │           │   ├── state/
│       │   │   │           │   │   ├── app.state.ts
│       │   │   │           │   │   ├── books.actions.ts
│       │   │   │           │   │   ├── books.reducer.spec.ts
│       │   │   │           │   │   ├── books.reducer.ts
│       │   │   │           │   │   ├── books.selectors.spec.ts
│       │   │   │           │   │   ├── books.selectors.ts
│       │   │   │           │   │   ├── collection.reducer.spec.ts
│       │   │   │           │   │   └── collection.reducer.ts
│       │   │   │           │   ├── user-greeting.component.spec.ts
│       │   │   │           │   └── user-greeting.component.ts
│       │   │   │           ├── index.html
│       │   │   │           ├── main-test.ts
│       │   │   │           ├── main.ts
│       │   │   │           └── styles.css
│       │   │   ├── pages/
│       │   │   │   ├── (home).page.ts
│       │   │   │   ├── about.page.ts
│       │   │   │   ├── api/
│       │   │   │   │   ├── [package]/
│       │   │   │   │   │   ├── [subpackage]/
│       │   │   │   │   │   │   └── [symbol].page.ts
│       │   │   │   │   │   └── [symbol].page.ts
│       │   │   │   │   └── index.page.ts
│       │   │   │   ├── guide/
│       │   │   │   │   ├── component/
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   ├── let.md
│       │   │   │   │   │   └── push.md
│       │   │   │   │   ├── component-store/
│       │   │   │   │   │   ├── comparison.md
│       │   │   │   │   │   ├── effect.md
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── initialization.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   ├── lifecycle.md
│       │   │   │   │   │   ├── read.md
│       │   │   │   │   │   ├── usage.md
│       │   │   │   │   │   └── write.md
│       │   │   │   │   ├── data/
│       │   │   │   │   │   ├── architecture-overview.md
│       │   │   │   │   │   ├── architecture.md
│       │   │   │   │   │   ├── entity-actions.md
│       │   │   │   │   │   ├── entity-change-tracker.md
│       │   │   │   │   │   ├── entity-collection-service.md
│       │   │   │   │   │   ├── entity-collection.md
│       │   │   │   │   │   ├── entity-dataservice.md
│       │   │   │   │   │   ├── entity-effects.md
│       │   │   │   │   │   ├── entity-metadata.md
│       │   │   │   │   │   ├── entity-reducer.md
│       │   │   │   │   │   ├── entity-services.md
│       │   │   │   │   │   ├── extension-points.md
│       │   │   │   │   │   ├── faq.md
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   ├── limitations.md
│       │   │   │   │   │   └── save-entities.md
│       │   │   │   │   ├── effects/
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   ├── lifecycle.md
│       │   │   │   │   │   ├── operators.md
│       │   │   │   │   │   └── testing.md
│       │   │   │   │   ├── entity/
│       │   │   │   │   │   ├── adapter.md
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   ├── interfaces.md
│       │   │   │   │   │   └── recipes/
│       │   │   │   │   │       ├── additional-state-properties.md
│       │   │   │   │   │       └── entity-adapter-with-feature-creator.md
│       │   │   │   │   ├── eslint-plugin/
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   └── rules/
│       │   │   │   │   │       ├── avoid-combining-component-store-selectors.md
│       │   │   │   │   │       ├── avoid-combining-selectors.md
│       │   │   │   │   │       ├── avoid-cyclic-effects.md
│       │   │   │   │   │       ├── avoid-dispatching-multiple-actions-sequentially.md
│       │   │   │   │   │       ├── avoid-duplicate-actions-in-reducer.md
│       │   │   │   │   │       ├── avoid-mapping-component-store-selectors.md
│       │   │   │   │   │       ├── avoid-mapping-selectors.md
│       │   │   │   │   │       ├── enforce-type-call.md
│       │   │   │   │   │       ├── good-action-hygiene.md
│       │   │   │   │   │       ├── no-dispatch-in-effects.md
│       │   │   │   │   │       ├── no-effects-in-providers.md
│       │   │   │   │   │       ├── no-multiple-actions-in-effects.md
│       │   │   │   │   │       ├── no-multiple-global-stores.md
│       │   │   │   │   │       ├── no-reducer-in-key-names.md
│       │   │   │   │   │       ├── no-store-subscription.md
│       │   │   │   │   │       ├── no-typed-global-store.md
│       │   │   │   │   │       ├── on-function-explicit-return-type.md
│       │   │   │   │   │       ├── prefer-action-creator-in-dispatch.md
│       │   │   │   │   │       ├── prefer-action-creator-in-of-type.md
│       │   │   │   │   │       ├── prefer-action-creator.md
│       │   │   │   │   │       ├── prefer-concat-latest-from.md
│       │   │   │   │   │       ├── prefer-effect-callback-in-block-statement.md
│       │   │   │   │   │       ├── prefer-inline-action-props.md
│       │   │   │   │   │       ├── prefer-one-generic-in-create-for-feature-selector.md
│       │   │   │   │   │       ├── prefer-protected-state.md
│       │   │   │   │   │       ├── prefer-selector-in-select.md
│       │   │   │   │   │       ├── prefix-selectors-with-select.md
│       │   │   │   │   │       ├── require-super-ondestroy.md
│       │   │   │   │   │       ├── select-style.md
│       │   │   │   │   │       ├── signal-state-no-arrays-at-root-level.md
│       │   │   │   │   │       ├── signal-store-feature-should-use-generic-type.md
│       │   │   │   │   │       ├── updater-explicit-return-type.md
│       │   │   │   │   │       ├── use-consistent-global-store-name.md
│       │   │   │   │   │       ├── use-effects-lifecycle-interface.md
│       │   │   │   │   │       └── with-state-no-arrays-at-root-level.md
│       │   │   │   │   ├── migration/
│       │   │   │   │   │   ├── v10.md
│       │   │   │   │   │   ├── v11.md
│       │   │   │   │   │   ├── v12.md
│       │   │   │   │   │   ├── v13.md
│       │   │   │   │   │   ├── v14.md
│       │   │   │   │   │   ├── v15.md
│       │   │   │   │   │   ├── v16.md
│       │   │   │   │   │   ├── v17.md
│       │   │   │   │   │   ├── v18.md
│       │   │   │   │   │   ├── v19.md
│       │   │   │   │   │   ├── v20.md
│       │   │   │   │   │   ├── v21.md
│       │   │   │   │   │   ├── v4.md
│       │   │   │   │   │   ├── v7.md
│       │   │   │   │   │   ├── v8.md
│       │   │   │   │   │   └── v9.md
│       │   │   │   │   ├── nightlies.md
│       │   │   │   │   ├── operators/
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   └── operators.md
│       │   │   │   │   ├── router-store/
│       │   │   │   │   │   ├── actions.md
│       │   │   │   │   │   ├── configuration.md
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   └── selectors.md
│       │   │   │   │   ├── schematics/
│       │   │   │   │   │   ├── action.md
│       │   │   │   │   │   ├── container.md
│       │   │   │   │   │   ├── data.md
│       │   │   │   │   │   ├── effect.md
│       │   │   │   │   │   ├── entity.md
│       │   │   │   │   │   ├── feature.md
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   ├── reducer.md
│       │   │   │   │   │   ├── selector.md
│       │   │   │   │   │   └── store.md
│       │   │   │   │   ├── signals/
│       │   │   │   │   │   ├── deep-computed.md
│       │   │   │   │   │   ├── faq.md
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   ├── rxjs-integration.md
│       │   │   │   │   │   ├── signal-method.md
│       │   │   │   │   │   ├── signal-state.md
│       │   │   │   │   │   └── signal-store/
│       │   │   │   │   │       ├── custom-store-features.md
│       │   │   │   │   │       ├── custom-store-properties.md
│       │   │   │   │   │       ├── entity-management.md
│       │   │   │   │   │       ├── events.md
│       │   │   │   │   │       ├── index.md
│       │   │   │   │   │       ├── lifecycle-hooks.md
│       │   │   │   │   │       ├── linked-state.md
│       │   │   │   │   │       ├── private-store-members.md
│       │   │   │   │   │       ├── state-tracking.md
│       │   │   │   │   │       └── testing.md
│       │   │   │   │   ├── store/
│       │   │   │   │   │   ├── action-groups.md
│       │   │   │   │   │   ├── actions.md
│       │   │   │   │   │   ├── architecture.md
│       │   │   │   │   │   ├── configuration/
│       │   │   │   │   │   │   └── runtime-checks.md
│       │   │   │   │   │   ├── feature-creators.md
│       │   │   │   │   │   ├── index.md
│       │   │   │   │   │   ├── install.md
│       │   │   │   │   │   ├── metareducers.md
│       │   │   │   │   │   ├── recipes/
│       │   │   │   │   │   │   ├── downgrade.md
│       │   │   │   │   │   │   └── injecting.md
│       │   │   │   │   │   ├── reducers.md
│       │   │   │   │   │   ├── selectors.md
│       │   │   │   │   │   ├── testing.md
│       │   │   │   │   │   ├── walkthrough.md
│       │   │   │   │   │   └── why.md
│       │   │   │   │   └── store-devtools/
│       │   │   │   │       ├── config.md
│       │   │   │   │       ├── index.md
│       │   │   │   │       ├── install.md
│       │   │   │   │       └── recipes/
│       │   │   │   │           └── exclude.md
│       │   │   │   ├── guide.page.ts
│       │   │   │   └── workshops.page.ts
│       │   │   ├── reference/
│       │   │   │   └── reference.service.ts
│       │   │   └── services/
│       │   │       ├── contributors.service.ts
│       │   │       ├── guide-menu.service.ts
│       │   │       ├── markdown.service.ts
│       │   │       ├── theme.service.ts
│       │   │       └── versionInfo.service.ts
│       │   ├── main.server.ts
│       │   ├── main.ts
│       │   ├── shared/
│       │   │   ├── api-report.models.ts
│       │   │   ├── index.ts
│       │   │   └── ngrx-shiki-theme.ts
│       │   ├── styles.scss
│       │   ├── test-setup.ts
│       │   ├── tools/
│       │   │   ├── api-extractor.json
│       │   │   ├── extract-docs-content.ts
│       │   │   ├── prepare-examples.ts
│       │   │   └── vite-ngrx-stackblitz.plugin.ts
│       │   └── vite-env.d.ts
│       ├── tsconfig.app.json
│       ├── tsconfig.editor.json
│       ├── tsconfig.json
│       ├── tsconfig.spec.json
│       ├── tsconfig.tools.json
│       └── vite.config.ts
├── setup-jest.ts
├── tsconfig.docs.json
├── tsconfig.json
└── tsdoc-metadata.json
Download .txt
Showing preview only (346K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3896 symbols across 783 files)

FILE: build/config.ts
  type PackageDescription (line 3) | interface PackageDescription {
  type Config (line 7) | interface Config {

FILE: build/example-app-server.js
  constant CONTEXT (line 4) | const CONTEXT = `/${process.env.CONTEXT || 'platform/example-app'}`;
  constant PORT (line 5) | const PORT = process.env.PORT || 4000;
  constant DIST (line 6) | const DIST = path.join(__dirname, '../projects/example-app/dist');

FILE: build/publish-latest.ts
  function publishLatestToNpm (line 8) | async function publishLatestToNpm() {

FILE: build/publish-next.ts
  function publishNextToNpm (line 8) | async function publishNextToNpm() {

FILE: build/publish-release.ts
  constant RELEASE_TAG (line 5) | const RELEASE_TAG = process.env.RELEASE_TAG;
  constant RELEASE_VERSION (line 6) | const RELEASE_VERSION = process.env.RELEASE_VERSION;
  constant DRY_RUN (line 7) | const DRY_RUN = process.env.DRY_RUN === 'true';
  constant NPM_TOKEN (line 8) | const NPM_TOKEN = process.env.NPM_TOKEN;
  function publishLatestToNpm (line 13) | async function publishLatestToNpm() {

FILE: build/stackblitz.ts
  constant EXAMPLE_FILES (line 5) | const EXAMPLE_FILES = [

FILE: build/tasks.ts
  function copySchematicsCore (line 11) | async function copySchematicsCore(config: Config) {
  function publishToRepo (line 50) | async function publishToRepo(config: Config) {
  function prepareAndPublish (line 61) | async function prepareAndPublish(

FILE: build/update-version-numbers.ts
  constant CONFIG (line 9) | const CONFIG = {
  function updateVersions (line 34) | function updateVersions(version: string) {
  function createPackageJsonBuilder (line 56) | function createPackageJsonBuilder(version: string) {
  function createUpdateAddSchematicBuilder (line 95) | function createUpdateAddSchematicBuilder(version: string) {
  function createArchivePreviousDocsBuilder (line 111) | function createArchivePreviousDocsBuilder(version: string) {
  function createMigrationDocs (line 140) | function createMigrationDocs(version: string) {
  function writeAsJson (line 210) | function writeAsJson(path: string, json: object) {
  function createMigrationMD (line 218) | function createMigrationMD(version: string) {

FILE: build/util.ts
  type RunnerFn (line 6) | type RunnerFn = (config: Config) => Promise<any>;
  type TaskDef (line 7) | type TaskDef = [string, RunnerFn];
  type BaseFn (line 8) | type BaseFn = (command: string) => string;
  function createBuilder (line 10) | function createBuilder(tasks: TaskDef[]) {
  function exec (line 18) | function exec(
  function getTopLevelPackages (line 34) | function getTopLevelPackages(config: Config) {
  function cmd (line 38) | function cmd(command: string, args: string[]): Promise<string> {
  function git (line 42) | function git(args: string[]): Promise<string> {
  function runTask (line 46) | async function runTask(name: string, taskFn: () => Promise<any>) {
  function baseDir (line 62) | function baseDir(...dirs: string[]): string {
  function fromNpm (line 66) | function fromNpm(command: string) {

FILE: modules/component-store/migrations/18_0_0-beta/index.ts
  function migrateTapResponseImport (line 18) | function migrateTapResponseImport(): Rule {
  function getImportDeclarations (line 143) | function getImportDeclarations(
  function getComponentStoreNamedBinding (line 156) | function getComponentStoreNamedBinding(

FILE: modules/component-store/schematics-core/utility/ast-utils.ts
  function findNodes (line 28) | function findNodes(
  function getSourceNodes (line 65) | function getSourceNodes(sourceFile: ts.SourceFile): ts.Node[] {
  function nodesByPosition (line 87) | function nodesByPosition(first: ts.Node, second: ts.Node): number {
  function insertAfterLastOccurrence (line 104) | function insertAfterLastOccurrence(
  function getContentOfKeyLiteral (line 128) | function getContentOfKeyLiteral(
  function _angularImportsFromNode (line 141) | function _angularImportsFromNode(
  function getDecoratorMetadata (line 193) | function getDecoratorMetadata(
  function _addSymbolToNgModuleMetadata (line 261) | function _addSymbolToNgModuleMetadata(
  function _addSymbolToComponentMetadata (line 458) | function _addSymbolToComponentMetadata(
  function addDeclarationToModule (line 614) | function addDeclarationToModule(
  function addImportToModule (line 633) | function addImportToModule(
  function addProviderToModule (line 651) | function addProviderToModule(
  function addProviderToComponent (line 669) | function addProviderToComponent(
  function addExportToModule (line 687) | function addExportToModule(
  function addBootstrapToModule (line 705) | function addBootstrapToModule(
  function insertImport (line 730) | function insertImport(
  function replaceImport (line 820) | function replaceImport(
  function containsProperty (line 907) | function containsProperty(

FILE: modules/component-store/schematics-core/utility/change.ts
  type Host (line 13) | interface Host {
  type Change (line 18) | interface Change {
  class NoopChange (line 36) | class NoopChange implements Change {
    method apply (line 40) | apply() {
  class InsertChange (line 48) | class InsertChange implements Change {
    method constructor (line 52) | constructor(
    method apply (line 67) | apply(host: Host) {
  class RemoveChange (line 80) | class RemoveChange implements Change {
    method constructor (line 84) | constructor(
    method apply (line 96) | apply(host: Host): Promise<void> {
  class ReplaceChange (line 110) | class ReplaceChange implements Change {
    method constructor (line 114) | constructor(
    method apply (line 127) | apply(host: Host): Promise<void> {
  function createReplaceChange (line 145) | function createReplaceChange(
  function createRemoveChange (line 159) | function createRemoveChange(
  function createChangeRecorder (line 168) | function createChangeRecorder(
  function commitChanges (line 187) | function commitChanges(tree: Tree, path: string, changes: Change[]) {

FILE: modules/component-store/schematics-core/utility/config.ts
  type AppConfig (line 5) | interface AppConfig {
  function getWorkspacePath (line 131) | function getWorkspacePath(host: Tree): string {
  function getWorkspace (line 138) | function getWorkspace(host: Tree) {

FILE: modules/component-store/schematics-core/utility/find-component.ts
  type ComponentOptions (line 20) | interface ComponentOptions {
  function findComponentFromOptions (line 31) | function findComponentFromOptions(
  function findComponent (line 74) | function findComponent(host: Tree, generateDir: string): Path {
  function buildRelativePath (line 103) | function buildRelativePath(from: string, to: string): string {
  function parsePath (line 128) | function parsePath(path: string) {
  function convertToTypeScriptFileName (line 143) | function convertToTypeScriptFileName(filename: string | undefined) {

FILE: modules/component-store/schematics-core/utility/find-module.ts
  type ModuleOptions (line 20) | interface ModuleOptions {
  function findModuleFromOptions (line 31) | function findModuleFromOptions(
  function findModule (line 70) | function findModule(host: Tree, generateDir: string): Path {
  function buildRelativePath (line 102) | function buildRelativePath(from: string, to: string): string {
  function parsePath (line 127) | function parsePath(path: string) {
  function convertToTypeScriptFileName (line 142) | function convertToTypeScriptFileName(filename: string | undefined) {

FILE: modules/component-store/schematics-core/utility/json-utilts.ts
  function findPropertyInAstObject (line 2) | function findPropertyInAstObject(

FILE: modules/component-store/schematics-core/utility/ngrx-utils.ts
  function addReducerToState (line 9) | function addReducerToState(options: any): Rule {
  function addReducerToStateInterface (line 78) | function addReducerToStateInterface(
  function addReducerToActionReducerMap (line 128) | function addReducerToActionReducerMap(
  function addReducerImportToNgModule (line 195) | function addReducerImportToNgModule(options: any): Rule {
  function omit (line 263) | function omit<T extends { [key: string]: any }>(
  function getPrefix (line 272) | function getPrefix(options: { prefix?: string }) {

FILE: modules/component-store/schematics-core/utility/package.ts
  function addPackageToPackageJson (line 6) | function addPackageToPackageJson(

FILE: modules/component-store/schematics-core/utility/parse-name.ts
  type Location (line 3) | interface Location {
  function parseName (line 8) | function parseName(path: string, name: string): Location {

FILE: modules/component-store/schematics-core/utility/project.ts
  type WorkspaceProject (line 5) | interface WorkspaceProject {
  function getProject (line 13) | function getProject(
  function getProjectPath (line 31) | function getProjectPath(
  function isLib (line 51) | function isLib(
  function getProjectMainFile (line 60) | function getProjectMainFile(

FILE: modules/component-store/schematics-core/utility/standalone.ts
  type ResolvedAppConfig (line 13) | interface ResolvedAppConfig {
  function callsProvidersFunction (line 29) | function callsProvidersFunction(
  function addFunctionalProvidersToStandaloneBootstrap (line 62) | function addFunctionalProvidersToStandaloneBootstrap(
  function findBootstrapApplicationCall (line 144) | function findBootstrapApplicationCall(
  function findProvidersLiteral (line 177) | function findProvidersLiteral(
  function findAppConfig (line 200) | function findAppConfig(
  function resolveAppConfigFromIdentifier (line 226) | function resolveAppConfigFromIdentifier(
  function findAppConfigFromVariableName (line 286) | function findAppConfigFromVariableName(
  function findImportLocalName (line 314) | function findImportLocalName(
  function createSourceFile (line 351) | function createSourceFile(tree: Tree, filePath: string): ts.SourceFile {
  function addNewAppConfigToCall (line 366) | function addNewAppConfigToCall(
  function addElementToArray (line 404) | function addElementToArray(
  function addProvidersToObjectLiteral (line 428) | function addProvidersToObjectLiteral(
  function isMergeAppConfigCall (line 454) | function isMergeAppConfigCall(node: ts.Node): node is ts.CallExpression {

FILE: modules/component-store/schematics-core/utility/strings.ts
  constant STRING_DASHERIZE_REGEXP (line 8) | const STRING_DASHERIZE_REGEXP = /[ _]/g;
  constant STRING_DECAMELIZE_REGEXP (line 9) | const STRING_DECAMELIZE_REGEXP = /([a-z\d])([A-Z])/g;
  constant STRING_CAMELIZE_REGEXP (line 10) | const STRING_CAMELIZE_REGEXP = /(-|_|\.|\s)+(.)?/g;
  constant STRING_UNDERSCORE_REGEXP_1 (line 11) | const STRING_UNDERSCORE_REGEXP_1 = /([a-z\d])([A-Z]+)/g;
  constant STRING_UNDERSCORE_REGEXP_2 (line 12) | const STRING_UNDERSCORE_REGEXP_2 = /-|\s+/g;
  function decamelize (line 24) | function decamelize(str: string): string {
  function dasherize (line 38) | function dasherize(str?: string): string {
  function camelize (line 53) | function camelize(str: string): string {
  function classify (line 74) | function classify(str: string): string {
  function underscore (line 92) | function underscore(str: string): string {
  function capitalize (line 109) | function capitalize(str: string): string {
  function pluralize (line 124) | function pluralize(str: string): string {
  function group (line 132) | function group(name: string, group: string | undefined) {
  function featurePath (line 136) | function featurePath(

FILE: modules/component-store/schematics-core/utility/update.ts
  function updatePackage (line 8) | function updatePackage(name: string): Rule {
  function match (line 41) | function match(value: string, test: string) {

FILE: modules/component-store/schematics-core/utility/visitors.ts
  function visitTSSourceFiles (line 5) | function visitTSSourceFiles<Result = void>(
  function visitTemplates (line 21) | function visitTemplates(
  function visitNgModuleImports (line 91) | function visitNgModuleImports(
  function visitNgModuleExports (line 101) | function visitNgModuleExports(
  function visitNgModuleProperty (line 111) | function visitNgModuleProperty(
  function visitComponents (line 135) | function visitComponents(
  function visitNgModules (line 145) | function visitNgModules(
  function visitDecorator (line 155) | function visitDecorator(
  function visitImportDeclaration (line 201) | function visitImportDeclaration(
  function visitImportSpecifier (line 220) | function visitImportSpecifier(
  function visitTypeReference (line 242) | function visitTypeReference(
  function visitTypeLiteral (line 255) | function visitTypeLiteral(
  function visitCallExpression (line 268) | function visitCallExpression(

FILE: modules/component-store/schematics/ng-add/index.ts
  function addModuleToPackageJson (line 15) | function addModuleToPackageJson() {

FILE: modules/component-store/schematics/ng-add/schema.ts
  type Schema (line 1) | interface Schema {

FILE: modules/component-store/spec/component-store.spec.ts
  type State (line 269) | interface State {
  type State (line 451) | interface State {
  type State (line 558) | interface State {
  type State (line 715) | interface State {
  type State (line 1080) | interface State {
  type State (line 1383) | interface State {
  type StateValue (line 1387) | interface StateValue {
  type TestState (line 1541) | type TestState = { foo: number; bar: { baz: number } };
  class TestStore (line 1543) | class TestStore extends ComponentStore<TestState> {
    method constructor (line 1559) | constructor() {
  type State (line 1778) | interface State {
  class ExposedGetComponentStore (line 1782) | class ExposedGetComponentStore extends ComponentStore<State> {
  type LifeCycle (line 1834) | interface LifeCycle {
  class LifecycleStore (line 1843) | @Injectable()
    method constructor (line 1849) | constructor(@Inject(INIT_STATE) state?: LifeCycle) {
    method ngrxOnStoreInit (line 1859) | ngrxOnStoreInit() {
    method ngrxOnStateInit (line 1863) | ngrxOnStateInit() {
  class ExtraStore (line 1868) | @Injectable()
    method constructor (line 1870) | constructor() {
  class NonProviderStore (line 1875) | @Injectable()
    method ngrxOnStoreInit (line 1877) | ngrxOnStoreInit() {}
  function setup (line 1880) | function setup({

FILE: modules/component-store/spec/integration.spec.ts
  function testWith (line 19) | function testWith(setup: () => Promise<SetupData<Child>>) {
  type State (line 174) | interface State {
  type Parent (line 179) | interface Parent {
  type Child (line 183) | interface Child {
  type SetupData (line 191) | interface SetupData<T extends Child> {
  class ParentComponent (line 203) | @Component({
  function setupTestBed (line 214) | async function setupTestBed<T extends Child>(
  function setupComponentProvidesComponentStore (line 253) | async function setupComponentProvidesComponentStore() {
  function setupComponentExtendsComponentStore (line 304) | async function setupComponentExtendsComponentStore() {
  function setupComponentProvidesService (line 346) | async function setupComponentProvidesService() {
  function setupComponentExtendsService (line 448) | async function setupComponentExtendsService() {

FILE: modules/component-store/spec/integration_signals.spec.ts
  type Todo (line 9) | interface Todo {
  type TodoState (line 15) | interface TodoState {

FILE: modules/component-store/src/component-store.ts
  type SelectConfig (line 43) | interface SelectConfig<T = unknown> {
  constant INITIAL_STATE_TOKEN (line 48) | const INITIAL_STATE_TOKEN = new InjectionToken(
  type SelectorResults (line 52) | type SelectorResults<Selectors extends Observable<unknown>[]> = {
  type Projector (line 58) | type Projector<Selectors extends Observable<unknown>[], Result> = (
  type SignalsProjector (line 62) | type SignalsProjector<Signals extends Signal<unknown>[], Result> = (
  type SelectSignalOptions (line 70) | interface SelectSignalOptions<T> {
  class ComponentStore (line 78) | class ComponentStore<T extends object> implements OnDestroy {
    method constructor (line 94) | constructor(@Optional() @Inject(INITIAL_STATE_TOKEN) defaultState?: T) {
    method ngOnDestroy (line 104) | ngOnDestroy() {
    method updater (line 124) | updater<
    method initState (line 184) | private initState(state: T): void {
    method setState (line 196) | setState(stateOrUpdaterFn: T | ((state: T) => T)): void {
    method patchState (line 211) | patchState(
    method get (line 230) | protected get<R>(projector?: (s: T) => R): R | T {
    method select (line 275) | select<
    method selectSignal (line 335) | selectSignal(
    method effect (line 378) | effect<
    method checkProviderForHooks (line 419) | private checkProviderForHooks() {
    method assertStateIsInitialized (line 443) | private assertStateIsInitialized(): void {
  function processSelectorArgs (line 453) | function processSelectorArgs<
  function isSelectConfig (line 509) | function isSelectConfig(
  function hasProjectFnOnly (line 519) | function hasProjectFnOnly(
  function noopOperator (line 530) | function noopOperator(): <T>(source$: Observable<T>) => typeof source$ {

FILE: modules/component-store/src/debounce-sync.ts
  function debounceSync (line 32) | function debounceSync<T>(): MonoTypeOperatorFunction<T> {

FILE: modules/component-store/src/lifecycle_hooks.ts
  type OnStoreInit (line 9) | interface OnStoreInit {
  type OnStateInit (line 18) | interface OnStateInit {
  function isOnStoreInitDefined (line 29) | function isOnStoreInitDefined(cs: unknown): cs is OnStoreInit {
  function isOnStateInitDefined (line 40) | function isOnStateInitDefined(cs: unknown): cs is OnStateInit {
  function provideComponentStore (line 88) | function provideComponentStore<T extends object>(

FILE: modules/component/migrations/15_0_0-beta/index.ts
  function migrateReactiveComponentModule (line 17) | function migrateReactiveComponentModule() {
  function findReactiveComponentModuleImportDeclarationReplacements (line 63) | function findReactiveComponentModuleImportDeclarationReplacements(
  function findReactiveComponentModuleImportDeclarationAdditions (line 108) | function findReactiveComponentModuleImportDeclarationAdditions(
  function findPossibleReactiveComponentModuleUsageCount (line 153) | function findPossibleReactiveComponentModuleUsageCount(
  function findReactiveComponentModuleNgModuleReplacements (line 169) | function findReactiveComponentModuleNgModuleReplacements(

FILE: modules/component/migrations/16_0_0/index.ts
  function migrateToStandaloneAPIs (line 19) | function migrateToStandaloneAPIs() {
  function findImportDeclarationReplacements (line 55) | function findImportDeclarationReplacements(
  function findImportDeclarationAdditions (line 68) | function findImportDeclarationAdditions(
  function findImportDeclarations (line 86) | function findImportDeclarations(
  function findPossibleModulesUsageCount (line 144) | function findPossibleModulesUsageCount(sourceFile: ts.SourceFile): number {
  function findNgModuleReplacements (line 161) | function findNgModuleReplacements(sourceFile: ts.SourceFile) {

FILE: modules/component/schematics-core/utility/ast-utils.ts
  function findNodes (line 28) | function findNodes(
  function getSourceNodes (line 65) | function getSourceNodes(sourceFile: ts.SourceFile): ts.Node[] {
  function nodesByPosition (line 87) | function nodesByPosition(first: ts.Node, second: ts.Node): number {
  function insertAfterLastOccurrence (line 104) | function insertAfterLastOccurrence(
  function getContentOfKeyLiteral (line 128) | function getContentOfKeyLiteral(
  function _angularImportsFromNode (line 141) | function _angularImportsFromNode(
  function getDecoratorMetadata (line 193) | function getDecoratorMetadata(
  function _addSymbolToNgModuleMetadata (line 261) | function _addSymbolToNgModuleMetadata(
  function _addSymbolToComponentMetadata (line 458) | function _addSymbolToComponentMetadata(
  function addDeclarationToModule (line 614) | function addDeclarationToModule(
  function addImportToModule (line 633) | function addImportToModule(
  function addProviderToModule (line 651) | function addProviderToModule(
  function addProviderToComponent (line 669) | function addProviderToComponent(
  function addExportToModule (line 687) | function addExportToModule(
  function addBootstrapToModule (line 705) | function addBootstrapToModule(
  function insertImport (line 730) | function insertImport(
  function replaceImport (line 820) | function replaceImport(
  function containsProperty (line 907) | function containsProperty(

FILE: modules/component/schematics-core/utility/change.ts
  type Host (line 13) | interface Host {
  type Change (line 18) | interface Change {
  class NoopChange (line 36) | class NoopChange implements Change {
    method apply (line 40) | apply() {
  class InsertChange (line 48) | class InsertChange implements Change {
    method constructor (line 52) | constructor(
    method apply (line 67) | apply(host: Host) {
  class RemoveChange (line 80) | class RemoveChange implements Change {
    method constructor (line 84) | constructor(
    method apply (line 96) | apply(host: Host): Promise<void> {
  class ReplaceChange (line 110) | class ReplaceChange implements Change {
    method constructor (line 114) | constructor(
    method apply (line 127) | apply(host: Host): Promise<void> {
  function createReplaceChange (line 145) | function createReplaceChange(
  function createRemoveChange (line 159) | function createRemoveChange(
  function createChangeRecorder (line 168) | function createChangeRecorder(
  function commitChanges (line 187) | function commitChanges(tree: Tree, path: string, changes: Change[]) {

FILE: modules/component/schematics-core/utility/config.ts
  type AppConfig (line 5) | interface AppConfig {
  function getWorkspacePath (line 131) | function getWorkspacePath(host: Tree): string {
  function getWorkspace (line 138) | function getWorkspace(host: Tree) {

FILE: modules/component/schematics-core/utility/find-component.ts
  type ComponentOptions (line 20) | interface ComponentOptions {
  function findComponentFromOptions (line 31) | function findComponentFromOptions(
  function findComponent (line 74) | function findComponent(host: Tree, generateDir: string): Path {
  function buildRelativePath (line 103) | function buildRelativePath(from: string, to: string): string {
  function parsePath (line 128) | function parsePath(path: string) {
  function convertToTypeScriptFileName (line 143) | function convertToTypeScriptFileName(filename: string | undefined) {

FILE: modules/component/schematics-core/utility/find-module.ts
  type ModuleOptions (line 20) | interface ModuleOptions {
  function findModuleFromOptions (line 31) | function findModuleFromOptions(
  function findModule (line 70) | function findModule(host: Tree, generateDir: string): Path {
  function buildRelativePath (line 102) | function buildRelativePath(from: string, to: string): string {
  function parsePath (line 127) | function parsePath(path: string) {
  function convertToTypeScriptFileName (line 142) | function convertToTypeScriptFileName(filename: string | undefined) {

FILE: modules/component/schematics-core/utility/json-utilts.ts
  function findPropertyInAstObject (line 2) | function findPropertyInAstObject(

FILE: modules/component/schematics-core/utility/ngrx-utils.ts
  function addReducerToState (line 9) | function addReducerToState(options: any): Rule {
  function addReducerToStateInterface (line 78) | function addReducerToStateInterface(
  function addReducerToActionReducerMap (line 128) | function addReducerToActionReducerMap(
  function addReducerImportToNgModule (line 195) | function addReducerImportToNgModule(options: any): Rule {
  function omit (line 263) | function omit<T extends { [key: string]: any }>(
  function getPrefix (line 272) | function getPrefix(options: { prefix?: string }) {

FILE: modules/component/schematics-core/utility/package.ts
  function addPackageToPackageJson (line 6) | function addPackageToPackageJson(

FILE: modules/component/schematics-core/utility/parse-name.ts
  type Location (line 3) | interface Location {
  function parseName (line 8) | function parseName(path: string, name: string): Location {

FILE: modules/component/schematics-core/utility/project.ts
  type WorkspaceProject (line 5) | interface WorkspaceProject {
  function getProject (line 13) | function getProject(
  function getProjectPath (line 31) | function getProjectPath(
  function isLib (line 51) | function isLib(
  function getProjectMainFile (line 60) | function getProjectMainFile(

FILE: modules/component/schematics-core/utility/standalone.ts
  type ResolvedAppConfig (line 13) | interface ResolvedAppConfig {
  function callsProvidersFunction (line 29) | function callsProvidersFunction(
  function addFunctionalProvidersToStandaloneBootstrap (line 62) | function addFunctionalProvidersToStandaloneBootstrap(
  function findBootstrapApplicationCall (line 144) | function findBootstrapApplicationCall(
  function findProvidersLiteral (line 177) | function findProvidersLiteral(
  function findAppConfig (line 200) | function findAppConfig(
  function resolveAppConfigFromIdentifier (line 226) | function resolveAppConfigFromIdentifier(
  function findAppConfigFromVariableName (line 286) | function findAppConfigFromVariableName(
  function findImportLocalName (line 314) | function findImportLocalName(
  function createSourceFile (line 351) | function createSourceFile(tree: Tree, filePath: string): ts.SourceFile {
  function addNewAppConfigToCall (line 366) | function addNewAppConfigToCall(
  function addElementToArray (line 404) | function addElementToArray(
  function addProvidersToObjectLiteral (line 428) | function addProvidersToObjectLiteral(
  function isMergeAppConfigCall (line 454) | function isMergeAppConfigCall(node: ts.Node): node is ts.CallExpression {

FILE: modules/component/schematics-core/utility/strings.ts
  constant STRING_DASHERIZE_REGEXP (line 8) | const STRING_DASHERIZE_REGEXP = /[ _]/g;
  constant STRING_DECAMELIZE_REGEXP (line 9) | const STRING_DECAMELIZE_REGEXP = /([a-z\d])([A-Z])/g;
  constant STRING_CAMELIZE_REGEXP (line 10) | const STRING_CAMELIZE_REGEXP = /(-|_|\.|\s)+(.)?/g;
  constant STRING_UNDERSCORE_REGEXP_1 (line 11) | const STRING_UNDERSCORE_REGEXP_1 = /([a-z\d])([A-Z]+)/g;
  constant STRING_UNDERSCORE_REGEXP_2 (line 12) | const STRING_UNDERSCORE_REGEXP_2 = /-|\s+/g;
  function decamelize (line 24) | function decamelize(str: string): string {
  function dasherize (line 38) | function dasherize(str?: string): string {
  function camelize (line 53) | function camelize(str: string): string {
  function classify (line 74) | function classify(str: string): string {
  function underscore (line 92) | function underscore(str: string): string {
  function capitalize (line 109) | function capitalize(str: string): string {
  function pluralize (line 124) | function pluralize(str: string): string {
  function group (line 132) | function group(name: string, group: string | undefined) {
  function featurePath (line 136) | function featurePath(

FILE: modules/component/schematics-core/utility/update.ts
  function updatePackage (line 8) | function updatePackage(name: string): Rule {
  function match (line 41) | function match(value: string, test: string) {

FILE: modules/component/schematics-core/utility/visitors.ts
  function visitTSSourceFiles (line 5) | function visitTSSourceFiles<Result = void>(
  function visitTemplates (line 21) | function visitTemplates(
  function visitNgModuleImports (line 91) | function visitNgModuleImports(
  function visitNgModuleExports (line 101) | function visitNgModuleExports(
  function visitNgModuleProperty (line 111) | function visitNgModuleProperty(
  function visitComponents (line 135) | function visitComponents(
  function visitNgModules (line 145) | function visitNgModules(
  function visitDecorator (line 155) | function visitDecorator(
  function visitImportDeclaration (line 201) | function visitImportDeclaration(
  function visitImportSpecifier (line 220) | function visitImportSpecifier(
  function visitTypeReference (line 242) | function visitTypeReference(
  function visitTypeLiteral (line 255) | function visitTypeLiteral(
  function visitCallExpression (line 268) | function visitCallExpression(

FILE: modules/component/schematics/ng-add/index.ts
  function addModuleToPackageJson (line 15) | function addModuleToPackageJson() {

FILE: modules/component/schematics/ng-add/schema.ts
  type Schema (line 1) | interface Schema {

FILE: modules/component/spec/core/potential-observable.spec.ts
  function setup (line 6) | function setup() {
  function testNonObservableInput (line 14) | function testNonObservableInput(input: any, label = input): void {

FILE: modules/component/spec/core/render-event/handlers.spec.ts
  function testRenderEvent (line 12) | function testRenderEvent<T>(event: RenderEvent<T>): void {

FILE: modules/component/spec/core/render-event/manager.spec.ts
  function setup (line 18) | function setup<T>() {
  function withNextObservableSetup (line 379) | function withNextObservableSetup<T>(firstObservable$: Observable<T>) {

FILE: modules/component/spec/core/render-scheduler.spec.ts
  class Service (line 13) | @Injectable({ providedIn: 'root' })
  function setup (line 34) | function setup() {

FILE: modules/component/spec/core/tick-scheduler.spec.ts
  function setup (line 17) | function setup(ngZone: unknown, isSsrMode = false) {

FILE: modules/component/spec/fixtures/fixtures.ts
  class MockChangeDetectorRef (line 14) | class MockChangeDetectorRef {
  class MockErrorHandler (line 23) | class MockErrorHandler {

FILE: modules/component/spec/fixtures/mock-event-emitter.ts
  class MockEventEmitter (line 3) | class MockEventEmitter<T> extends EventEmitter<T> {
    method next (line 4) | override next(value: any) {}
    method error (line 5) | override error(error: any) {}
    method complete (line 6) | override complete() {}
    method emit (line 7) | override emit() {}

FILE: modules/component/spec/fixtures/mock-noop-ng-zone.ts
  class MockNoopNgZone (line 6) | class MockNoopNgZone {
    method isInAngularZone (line 17) | static isInAngularZone(): boolean {
    method assertInAngularZone (line 21) | static assertInAngularZone(): void {}
    method assertNotInAngularZone (line 23) | static assertNotInAngularZone(): void {}
    method constructor (line 25) | constructor({
    method run (line 30) | run(fn: Function): any {
    method runTask (line 34) | runTask<T>(
    method runGuarded (line 43) | runGuarded<T>(
    method runOutsideAngular (line 51) | runOutsideAngular(fn: Function): any {

FILE: modules/component/spec/helpers.ts
  function stripSpaces (line 1) | function stripSpaces(str: string): string {
  function wrapWithSpace (line 5) | function wrapWithSpace(str: string): string {

FILE: modules/component/spec/let/let.directive.spec.ts
  class LetDirectiveTestComponent (line 32) | @Component({
  class LetDirectiveTestErrorComponent (line 44) | @Component({
  class LetDirectiveTestCompleteComponent (line 56) | @Component({
  class LetDirectiveTestSuspenseComponent (line 68) | @Component({
  class LetDirectiveTestSuspenseTplComponent (line 78) | @Component({
  class RecursiveDirective (line 94) | class RecursiveDirective {
    method constructor (line 95) | constructor(private subject: BehaviorSubject<number>) {
  class LetDirectiveTestRecursionComponent (line 100) | @Component({
    method constructor (line 109) | constructor(public subject: BehaviorSubject<number>) {}
    method value$ (line 111) | get value$() {
  function markAndDetect (line 215) | function markAndDetect() {
  function withObservableDictionarySetup (line 515) | function withObservableDictionarySetup<

FILE: modules/component/spec/push/push.pipe.spec.ts
  class PushPipeTestComponent (line 31) | @Component({
  function markAndDetect (line 56) | function markAndDetect() {

FILE: modules/component/spec/types/utils.ts
  function potentialObservableExpecter (line 14) | function potentialObservableExpecter(

FILE: modules/component/src/core/potential-observable.ts
  type Primitive (line 4) | type Primitive = string | number | bigint | boolean | symbol | null | un...
  type ObservableOrPromise (line 6) | type ObservableOrPromise<T> = Observable<T> | PromiseLike<T>;
  type ObservableDictionary (line 8) | type ObservableDictionary<PO> = Required<{
  type PotentialObservableResult (line 12) | type PotentialObservableResult<PO, ExtendedResult = never> =
  function fromPotentialObservable (line 29) | function fromPotentialObservable<PO>(
  function isPromiseLike (line 53) | function isPromiseLike(value: unknown): value is PromiseLike<unknown> {
  function isObservableDictionary (line 57) | function isObservableDictionary(
  function isDictionary (line 67) | function isDictionary(value: unknown): value is Record<string, unknown> {
  function toDistinctObsDictionary (line 71) | function toDistinctObsDictionary<

FILE: modules/component/src/core/render-event/handlers.ts
  type RenderEventHandlers (line 9) | interface RenderEventHandlers<T> {
  function combineRenderEventHandlers (line 16) | function combineRenderEventHandlers<T>(

FILE: modules/component/src/core/render-event/manager.ts
  type RenderEventManager (line 11) | interface RenderEventManager<PO> {
  function createRenderEventManager (line 18) | function createRenderEventManager<PO>(
  function switchMapToRenderEvent (line 39) | function switchMapToRenderEvent<PO>(): (
  function renderEventComparator (line 80) | function renderEventComparator<T>(

FILE: modules/component/src/core/render-event/models.ts
  type BaseRenderEvent (line 1) | interface BaseRenderEvent {
  type SuspenseRenderEvent (line 12) | interface SuspenseRenderEvent extends BaseRenderEvent {
  type NextRenderEvent (line 18) | interface NextRenderEvent<T> extends BaseRenderEvent {
  type ErrorRenderEvent (line 23) | interface ErrorRenderEvent extends BaseRenderEvent {
  type CompleteRenderEvent (line 28) | interface CompleteRenderEvent extends BaseRenderEvent {
  type RenderEvent (line 32) | type RenderEvent<T> =

FILE: modules/component/src/core/render-scheduler.ts
  class RenderScheduler (line 59) | class RenderScheduler {
    method constructor (line 60) | constructor(
    method schedule (line 69) | schedule(): void {
  function createRenderScheduler (line 75) | function createRenderScheduler(): RenderScheduler {

FILE: modules/component/src/core/tick-scheduler.ts
  class ZonelessTickScheduler (line 27) | class ZonelessTickScheduler extends TickScheduler {
    method schedule (line 40) | schedule(): void {
  class NoopTickScheduler (line 51) | class NoopTickScheduler extends TickScheduler {
    method schedule (line 53) | schedule(): void {}

FILE: modules/component/src/core/zone-helpers.ts
  function isNgZone (line 3) | function isNgZone(zone: unknown): zone is NgZone {

FILE: modules/component/src/let/let.directive.ts
  type LetViewContextValue (line 15) | type LetViewContextValue<PO> = PotentialObservableResult<PO>;
  type LetViewContext (line 17) | interface LetViewContext<PO> {
  class LetDirective (line 109) | class LetDirective<PO> implements OnInit, OnDestroy {
    method ngrxLet (line 165) | set ngrxLet(potentialObservable: PO) {
    method constructor (line 171) | constructor(
    method ngTemplateContextGuard (line 180) | static ngTemplateContextGuard<PO>(
    method ngOnInit (line 187) | ngOnInit(): void {
    method ngOnDestroy (line 193) | ngOnDestroy(): void {
    method renderMainView (line 197) | private renderMainView(isSyncEvent: boolean): void {
    method renderSuspenseView (line 216) | private renderSuspenseView(): void {

FILE: modules/component/src/push/push.pipe.ts
  type PushPipeResult (line 7) | type PushPipeResult<PO> = PotentialObservableResult<PO, undefined>;
  class PushPipe (line 42) | class PushPipe implements PipeTransform, OnDestroy {
    method constructor (line 62) | constructor(private readonly errorHandler: ErrorHandler) {
    method transform (line 68) | transform<PO>(potentialObservable: PO): PushPipeResult<PO> {
    method ngOnDestroy (line 73) | ngOnDestroy(): void {
    method setRenderedValue (line 77) | private setRenderedValue(value: unknown, isSyncEvent: boolean): void {

FILE: modules/data/schematics-core/utility/ast-utils.ts
  function findNodes (line 28) | function findNodes(
  function getSourceNodes (line 65) | function getSourceNodes(sourceFile: ts.SourceFile): ts.Node[] {
  function nodesByPosition (line 87) | function nodesByPosition(first: ts.Node, second: ts.Node): number {
  function insertAfterLastOccurrence (line 104) | function insertAfterLastOccurrence(
  function getContentOfKeyLiteral (line 128) | function getContentOfKeyLiteral(
  function _angularImportsFromNode (line 141) | function _angularImportsFromNode(
  function getDecoratorMetadata (line 193) | function getDecoratorMetadata(
  function _addSymbolToNgModuleMetadata (line 261) | function _addSymbolToNgModuleMetadata(
  function _addSymbolToComponentMetadata (line 458) | function _addSymbolToComponentMetadata(
  function addDeclarationToModule (line 614) | function addDeclarationToModule(
  function addImportToModule (line 633) | function addImportToModule(
  function addProviderToModule (line 651) | function addProviderToModule(
  function addProviderToComponent (line 669) | function addProviderToComponent(
  function addExportToModule (line 687) | function addExportToModule(
  function addBootstrapToModule (line 705) | function addBootstrapToModule(
  function insertImport (line 730) | function insertImport(
  function replaceImport (line 820) | function replaceImport(
  function containsProperty (line 907) | function containsProperty(

FILE: modules/data/schematics-core/utility/change.ts
  type Host (line 13) | interface Host {
  type Change (line 18) | interface Change {
  class NoopChange (line 36) | class NoopChange implements Change {
    method apply (line 40) | apply() {
  class InsertChange (line 48) | class InsertChange implements Change {
    method constructor (line 52) | constructor(
    method apply (line 67) | apply(host: Host) {
  class RemoveChange (line 80) | class RemoveChange implements Change {
    method constructor (line 84) | constructor(
    method apply (line 96) | apply(host: Host): Promise<void> {
  class ReplaceChange (line 110) | class ReplaceChange implements Change {
    method constructor (line 114) | constructor(
    method apply (line 127) | apply(host: Host): Promise<void> {
  function createReplaceChange (line 145) | function createReplaceChange(
  function createRemoveChange (line 159) | function createRemoveChange(
  function createChangeRecorder (line 168) | function createChangeRecorder(
  function commitChanges (line 187) | function commitChanges(tree: Tree, path: string, changes: Change[]) {

FILE: modules/data/schematics-core/utility/config.ts
  type AppConfig (line 5) | interface AppConfig {
  function getWorkspacePath (line 131) | function getWorkspacePath(host: Tree): string {
  function getWorkspace (line 138) | function getWorkspace(host: Tree) {

FILE: modules/data/schematics-core/utility/find-component.ts
  type ComponentOptions (line 20) | interface ComponentOptions {
  function findComponentFromOptions (line 31) | function findComponentFromOptions(
  function findComponent (line 74) | function findComponent(host: Tree, generateDir: string): Path {
  function buildRelativePath (line 103) | function buildRelativePath(from: string, to: string): string {
  function parsePath (line 128) | function parsePath(path: string) {
  function convertToTypeScriptFileName (line 143) | function convertToTypeScriptFileName(filename: string | undefined) {

FILE: modules/data/schematics-core/utility/find-module.ts
  type ModuleOptions (line 20) | interface ModuleOptions {
  function findModuleFromOptions (line 31) | function findModuleFromOptions(
  function findModule (line 70) | function findModule(host: Tree, generateDir: string): Path {
  function buildRelativePath (line 102) | function buildRelativePath(from: string, to: string): string {
  function parsePath (line 127) | function parsePath(path: string) {
  function convertToTypeScriptFileName (line 142) | function convertToTypeScriptFileName(filename: string | undefined) {

FILE: modules/data/schematics-core/utility/json-utilts.ts
  function findPropertyInAstObject (line 2) | function findPropertyInAstObject(

FILE: modules/data/schematics-core/utility/ngrx-utils.ts
  function addReducerToState (line 9) | function addReducerToState(options: any): Rule {
  function addReducerToStateInterface (line 78) | function addReducerToStateInterface(
  function addReducerToActionReducerMap (line 128) | function addReducerToActionReducerMap(
  function addReducerImportToNgModule (line 195) | function addReducerImportToNgModule(options: any): Rule {
  function omit (line 263) | function omit<T extends { [key: string]: any }>(
  function getPrefix (line 272) | function getPrefix(options: { prefix?: string }) {

FILE: modules/data/schematics-core/utility/package.ts
  function addPackageToPackageJson (line 6) | function addPackageToPackageJson(

FILE: modules/data/schematics-core/utility/parse-name.ts
  type Location (line 3) | interface Location {
  function parseName (line 8) | function parseName(path: string, name: string): Location {

FILE: modules/data/schematics-core/utility/project.ts
  type WorkspaceProject (line 5) | interface WorkspaceProject {
  function getProject (line 13) | function getProject(
  function getProjectPath (line 31) | function getProjectPath(
  function isLib (line 51) | function isLib(
  function getProjectMainFile (line 60) | function getProjectMainFile(

FILE: modules/data/schematics-core/utility/standalone.ts
  type ResolvedAppConfig (line 13) | interface ResolvedAppConfig {
  function callsProvidersFunction (line 29) | function callsProvidersFunction(
  function addFunctionalProvidersToStandaloneBootstrap (line 62) | function addFunctionalProvidersToStandaloneBootstrap(
  function findBootstrapApplicationCall (line 144) | function findBootstrapApplicationCall(
  function findProvidersLiteral (line 177) | function findProvidersLiteral(
  function findAppConfig (line 200) | function findAppConfig(
  function resolveAppConfigFromIdentifier (line 226) | function resolveAppConfigFromIdentifier(
  function findAppConfigFromVariableName (line 286) | function findAppConfigFromVariableName(
  function findImportLocalName (line 314) | function findImportLocalName(
  function createSourceFile (line 351) | function createSourceFile(tree: Tree, filePath: string): ts.SourceFile {
  function addNewAppConfigToCall (line 366) | function addNewAppConfigToCall(
  function addElementToArray (line 404) | function addElementToArray(
  function addProvidersToObjectLiteral (line 428) | function addProvidersToObjectLiteral(
  function isMergeAppConfigCall (line 454) | function isMergeAppConfigCall(node: ts.Node): node is ts.CallExpression {

FILE: modules/data/schematics-core/utility/strings.ts
  constant STRING_DASHERIZE_REGEXP (line 8) | const STRING_DASHERIZE_REGEXP = /[ _]/g;
  constant STRING_DECAMELIZE_REGEXP (line 9) | const STRING_DECAMELIZE_REGEXP = /([a-z\d])([A-Z])/g;
  constant STRING_CAMELIZE_REGEXP (line 10) | const STRING_CAMELIZE_REGEXP = /(-|_|\.|\s)+(.)?/g;
  constant STRING_UNDERSCORE_REGEXP_1 (line 11) | const STRING_UNDERSCORE_REGEXP_1 = /([a-z\d])([A-Z]+)/g;
  constant STRING_UNDERSCORE_REGEXP_2 (line 12) | const STRING_UNDERSCORE_REGEXP_2 = /-|\s+/g;
  function decamelize (line 24) | function decamelize(str: string): string {
  function dasherize (line 38) | function dasherize(str?: string): string {
  function camelize (line 53) | function camelize(str: string): string {
  function classify (line 74) | function classify(str: string): string {
  function underscore (line 92) | function underscore(str: string): string {
  function capitalize (line 109) | function capitalize(str: string): string {
  function pluralize (line 124) | function pluralize(str: string): string {
  function group (line 132) | function group(name: string, group: string | undefined) {
  function featurePath (line 136) | function featurePath(

FILE: modules/data/schematics-core/utility/update.ts
  function updatePackage (line 8) | function updatePackage(name: string): Rule {
  function match (line 41) | function match(value: string, test: string) {

FILE: modules/data/schematics-core/utility/visitors.ts
  function visitTSSourceFiles (line 5) | function visitTSSourceFiles<Result = void>(
  function visitTemplates (line 21) | function visitTemplates(
  function visitNgModuleImports (line 91) | function visitNgModuleImports(
  function visitNgModuleExports (line 101) | function visitNgModuleExports(
  function visitNgModuleProperty (line 111) | function visitNgModuleProperty(
  function visitComponents (line 135) | function visitComponents(
  function visitNgModules (line 145) | function visitNgModules(
  function visitDecorator (line 155) | function visitDecorator(
  function visitImportDeclaration (line 201) | function visitImportDeclaration(
  function visitImportSpecifier (line 220) | function visitImportSpecifier(
  function visitTypeReference (line 242) | function visitTypeReference(
  function visitTypeLiteral (line 255) | function visitTypeLiteral(
  function visitCallExpression (line 268) | function visitCallExpression(

FILE: modules/data/schematics/ng-add/index.ts
  function addNgRxDataToPackageJson (line 40) | function addNgRxDataToPackageJson() {
  function addEntityDataToNgModule (line 53) | function addEntityDataToNgModule(options: EntityDataOptions): Rule {
  function addStandaloneConfig (line 105) | function addStandaloneConfig(options: EntityDataOptions): Rule {
  function removeAngularNgRxDataFromPackageJson (line 188) | function removeAngularNgRxDataFromPackageJson() {
  function renameNgrxDataModule (line 205) | function renameNgrxDataModule() {
  function findNgrxDataImports (line 230) | function findNgrxDataImports(
  function findNgrxDataImportDeclarations (line 246) | function findNgrxDataImportDeclarations(
  function findNgrxDataReplacements (line 286) | function findNgrxDataReplacements(sourceFile: ts.SourceFile) {
  function throwIfModuleNotSpecified (line 341) | function throwIfModuleNotSpecified(host: Tree, module?: string) {
  function createEntityConfigFile (line 356) | function createEntityConfigFile(options: EntityDataOptions, path: Path) {

FILE: modules/data/schematics/ng-add/schema.ts
  type Schema (line 1) | interface Schema {

FILE: modules/data/spec/actions/entity-action-factory.spec.ts
  class Hero (line 9) | class Hero {

FILE: modules/data/spec/actions/entity-action-guard.spec.ts
  class Hero (line 3) | class Hero {

FILE: modules/data/spec/actions/entity-action-operators.spec.ts
  function dispatchTestActions (line 36) | function dispatchTestActions() {
  function ofEntityTypeTest (line 97) | function ofEntityTypeTest() {
  function ofEntityOpTest (line 153) | function ofEntityOpTest() {

FILE: modules/data/spec/dataservices/default-data.service.spec.ts
  class Hero (line 31) | class Hero {
  constant IS_CACHE_ENABLED (line 37) | const IS_CACHE_ENABLED = new HttpContextToken<boolean>(() => false);
  class CustomDataService (line 41) | class CustomDataService<T> extends DefaultDataService<T> {
    method getWithQuery (line 42) | override getWithQuery(
  class TestService (line 108) | class TestService<T> extends DefaultDataService<T> {

FILE: modules/data/spec/dataservices/entity-data.service.spec.ts
  class CustomDataService (line 22) | class CustomDataService {
    method constructor (line 24) | constructor(name: string) {
  class Bazinga (line 29) | class Bazinga {
  class BazingaDataService (line 35) | class BazingaDataService
    method constructor (line 41) | constructor(@Optional() private http: HttpClient) {
    method add (line 48) | add(entity: Bazinga): Observable<Bazinga> {
    method delete (line 51) | delete(id: any): Observable<number | string> {
    method getAll (line 54) | getAll(): Observable<Bazinga[]> {
    method getById (line 57) | getById(id: any): Observable<Bazinga> {
    method getWithQuery (line 60) | getWithQuery(params: string | QueryParams): Observable<Bazinga[]> {
    method update (line 63) | update(update: Update<Bazinga>): Observable<Bazinga> {
    method upsert (line 66) | upsert(entity: Bazinga): Observable<Bazinga> {
    method bazinga (line 70) | private bazinga(): any {
  class CustomDataServiceModule (line 79) | class CustomDataServiceModule {
    method constructor (line 80) | constructor(
  function bazingaFail (line 88) | function bazingaFail() {
  class TestHttpUrlGenerator (line 93) | class TestHttpUrlGenerator implements HttpUrlGenerator {
    method entityResource (line 94) | entityResource(entityName: string, root: string): string {
    method collectionResource (line 97) | collectionResource(entityName: string, root: string): string {
    method registerHttpResourceUrls (line 100) | registerHttpResourceUrls(

FILE: modules/data/spec/dispatchers/entity-dispatcher.spec.ts
  class Hero (line 20) | class Hero {
  class TestStore (line 27) | class TestStore {
    method dispatch (line 29) | dispatch() {}
    method select (line 30) | select() {}
  function entityDispatcherSetup (line 38) | function entityDispatcherSetup() {
  function commandDispatchTest (line 66) | function commandDispatchTest(

FILE: modules/data/spec/effects/entity-cache-effects.spec.ts
  function expectCompletion (line 39) | function expectCompletion(completion: any, done: any, fail: any) {
  class TestEntityCacheDataService (line 168) | class TestEntityCacheDataService {
    method setResponse (line 176) | setResponse(data: any) {
    method setErrorResponse (line 180) | setErrorResponse(error: any) {
  function makeDataServiceError (line 186) | function makeDataServiceError(
  function createChangeSet (line 203) | function createChangeSet(): ChangeSet {

FILE: modules/data/spec/effects/entity-effects.marbles.spec.ts
  class Hero (line 458) | class Hero {
  function makeDataServiceError (line 464) | function makeDataServiceError(
  function makeEntityErrorCompletion (line 482) | function makeEntityErrorCompletion(
  type TestDataServiceMethod (line 498) | interface TestDataServiceMethod {
  class TestDataService (line 508) | class TestDataService {
    method getService (line 517) | getService(): TestDataServiceMethod {
    method setResponse (line 521) | setResponse(methodName: keyof TestDataServiceMethod, data$: Observable...

FILE: modules/data/spec/effects/entity-effects.spec.ts
  function expectCompletion (line 35) | function expectCompletion(completion: EntityAction, done: any, fail: any) {
  class Hero (line 515) | class Hero {
  function makeDataServiceError (line 521) | function makeDataServiceError(
  function makeEntityErrorCompletion (line 539) | function makeEntityErrorCompletion(
  type TestDataServiceMethod (line 555) | interface TestDataServiceMethod {
  class TestDataService (line 564) | class TestDataService {
    method getService (line 573) | getService(): TestDataServiceMethod {
    method setResponse (line 577) | setResponse(methodName: keyof TestDataServiceMethod, data: any) {
    method setErrorResponse (line 581) | setErrorResponse(methodName: keyof TestDataServiceMethod, error: any) {

FILE: modules/data/spec/entity-data.module.spec.ts
  constant TEST_ACTION (line 33) | const TEST_ACTION = 'test/get-everything-succeeded';
  constant EC_METAREDUCER_TOKEN (line 34) | const EC_METAREDUCER_TOKEN = new InjectionToken<
  class TestEntityEffects (line 38) | @Injectable()
    method testHook (line 48) | testHook(action: EntityAction) {
    method constructor (line 56) | constructor(private actions: Actions<EntityAction>) {}
  class Hero (line 59) | class Hero {
  class Villain (line 65) | class Villain {
  function loggingEntityCacheMetaReducer (line 142) | function loggingEntityCacheMetaReducer(
  function entityCacheMetaReducerFactory (line 223) | function entityCacheMetaReducerFactory(

FILE: modules/data/spec/entity-metadata/entity-definition.service.spec.ts
  class LazyModule (line 11) | @NgModule({})
    method constructor (line 17) | constructor(entityDefinitionService: EntityDefinitionService) {

FILE: modules/data/spec/entity-metadata/entity-definition.spec.ts
  type Hero (line 3) | interface Hero {
  type NonIdClass (line 8) | interface NonIdClass {
  constant HERO_METADATA (line 19) | const HERO_METADATA: EntityMetadata<Hero> = {

FILE: modules/data/spec/entity-metadata/entity-filters.spec.ts
  class Hero (line 3) | class Hero {

FILE: modules/data/spec/entity-services/entity-collection-service.spec.ts
  function getDispatcher (line 39) | function getDispatcher() {
  function combinedSaveTests (line 309) | function combinedSaveTests(isOptimistic: boolean) {
  function dispatchedAction (line 473) | function dispatchedAction() {
  class Hero (line 496) | class Hero {
  class Villain (line 501) | class Villain {
  function entityServicesSetup (line 511) | function entityServicesSetup() {
  function expectDataToBe (line 586) | function expectDataToBe(
  function expectErrorToBe (line 604) | function expectErrorToBe(
  function makeDataServiceError (line 622) | function makeDataServiceError(
  class OptimisticDispatcherDefaultOptions (line 640) | class OptimisticDispatcherDefaultOptions {
  class PessimisticDispatcherDefaultOptions (line 647) | class PessimisticDispatcherDefaultOptions {
  type TestDataServiceMethod (line 653) | interface TestDataServiceMethod {
  class TestDataService (line 662) | class TestDataService {
    method getService (line 670) | getService(): TestDataServiceMethod {
    method setResponse (line 674) | setResponse(methodName: keyof TestDataServiceMethod, data: any) {
    method setErrorResponse (line 678) | setErrorResponse(methodName: keyof TestDataServiceMethod, error: any) {

FILE: modules/data/spec/entity-services/entity-services.spec.ts
  class Hero (line 157) | class Hero {
  class Villain (line 162) | class Villain {
  function entityServicesSetup (line 172) | function entityServicesSetup() {
  function makeDataServiceError (line 213) | function makeDataServiceError(

FILE: modules/data/spec/reducers/entity-cache-reducer.spec.ts
  class Hero (line 36) | class Hero {
  class Villain (line 41) | class Villain {
  function shouldHaveExpectedHeroes (line 191) | function shouldHaveExpectedHeroes(entityCache: EntityCache) {
  function shouldHaveExpectedHeroes (line 244) | function shouldHaveExpectedHeroes(entityCache: EntityCache) {
  function createCollection (line 666) | function createCollection<T = any>(
  function createInitialCache (line 681) | function createInitialCache(entityMap: { [entityName: string]: any[] }) {
  function createInitialCacheForMerges (line 697) | function createInitialCacheForMerges() {
  function createInitialSaveTestEntities (line 752) | function createInitialSaveTestEntities() {
  function createTestChangeSet (line 774) | function createTestChangeSet() {
  function expectLoadingFlags (line 823) | function expectLoadingFlags(

FILE: modules/data/spec/reducers/entity-change-tracker-base.spec.ts
  type Hero (line 14) | interface Hero {
  function sortByName (line 20) | function sortByName(a: { name: string }, b: { name: string }): number {
  function toUpdate (line 25) | function toUpdate(entity: any) {
  function createTestTrackedEntities (line 945) | function createTestTrackedEntities() {
  function createInitialCacheForMerges (line 974) | function createInitialCacheForMerges() {
  function expectChangeType (line 1030) | function expectChangeType(
  function getFirstExistingEntity (line 1041) | function getFirstExistingEntity() {
  function getSomeExistingEntities (line 1049) | function getSomeExistingEntities(n: number) {
  function getExistingEntityById (line 1054) | function getExistingEntityById(id: number | string) {
  function getExistingEntitiesById (line 1058) | function getExistingEntitiesById(ids: string[]) {

FILE: modules/data/spec/reducers/entity-collection-creator.spec.ts
  type Hero (line 54) | interface Hero {
  type HeroCollection (line 60) | interface HeroCollection extends EntityCollection<Hero> {

FILE: modules/data/spec/reducers/entity-collection-reducer-registry.spec.ts
  class Bar (line 25) | class Bar {
  class Foo (line 29) | class Foo {
  class Hero (line 33) | class Hero {
  class Villain (line 38) | class Villain {
  function setup (line 80) | function setup() {
  function testMetadataReducerFactory (line 184) | function testMetadataReducerFactory(name: string) {
  function createCollection (line 313) | function createCollection<T = any>(
  function createInitialCache (line 328) | function createInitialCache(entityMap: { [entityName: string]: any[] }) {
  function createNoopReducer (line 344) | function createNoopReducer<T>() {

FILE: modules/data/spec/reducers/entity-collection-reducer.spec.ts
  class Foo (line 30) | class Foo {
  class Hero (line 34) | class Hero {
  class Villain (line 39) | class Villain {
  function createTestAction (line 552) | function createTestAction(hero: Hero) {
  function createTestAction (line 600) | function createTestAction(hero: Hero) {
  function createTestAction (line 660) | function createTestAction(hero: Hero) {
  function createTestAction (line 716) | function createTestAction(heroes: Hero[]) {
  function createTestAction (line 776) | function createTestAction(heroes: Hero[]) {
  function createTestAction (line 833) | function createTestAction(heroes: Hero[]) {
  function createTestAction (line 1374) | function createTestAction(hero: Update<Hero>) {
  function createTestAction (line 1427) | function createTestAction(update: Update<Hero>, changed: boolean) {
  function createTestAction (line 1495) | function createTestAction(update: Update<Hero>, changed: boolean) {
  function createTestAction (line 1564) | function createTestAction(heroes: Update<Hero>[]) {
  function createInitialAction (line 1621) | function createInitialAction(updates: Update<Hero>[]) {
  function createTestAction (line 1626) | function createTestAction(updates: Update<Hero>[]) {
  function createTestAction (line 1686) | function createTestAction(updates: Update<Hero>[]) {
  function createTestAction (line 1755) | function createTestAction(hero: Hero) {
  function createTestAction (line 1807) | function createTestAction(hero: Hero) {
  function createTestAction (line 1866) | function createTestAction(heroes: Hero) {
  function createTestAction (line 1934) | function createTestAction(heroes: Hero[]) {
  function createTestAction (line 1994) | function createTestAction(heroes: Hero[]) {
  function createTestAction (line 2061) | function createTestAction(heroes: Hero[]) {
  function createTestAction (line 2134) | function createTestAction(hero: Hero) {
  function createTestAction (line 2172) | function createTestAction(heroes: Update<Hero>[]) {
  function createTestAction (line 2233) | function createTestAction(hero: Update<Hero>) {
  function createTestAction (line 2285) | function createTestAction(heroes: Hero[]) {
  function createTestAction (line 2333) | function createTestAction(hero: Hero) {
  function createReadOnlyHeroReducer (line 2490) | function createReadOnlyHeroReducer(adapter: EntityAdapter<Hero>) {
  function createCollection (line 2525) | function createCollection<T = any>(
  function createInitialCache (line 2540) | function createInitialCache(entityMap: { [entityName: string]: any[] }) {
  function createTestTrackedEntities (line 2560) | function createTestTrackedEntities() {
  function expectChangeType (line 2596) | function expectChangeType(
  function expectOnlySetLoadingFlag (line 2607) | function expectOnlySetLoadingFlag(

FILE: modules/data/spec/selectors/entity-selectors$.spec.ts
  function subscribeToSelectors (line 110) | function subscribeToSelectors(selectors$: HeroSelectors$) {
  function createHeroState (line 273) | function createHeroState(state: Partial<HeroCollection>): HeroCollection {
  function nameFilter (line 280) | function nameFilter<T>(entities: T[], pattern: string) {
  type Hero (line 285) | interface Hero {
  type HeroCollection (line 291) | interface HeroCollection extends EntityCollection<Hero> {
  type HeroSelectors (line 297) | interface HeroSelectors extends EntitySelectors<Hero> {
  type HeroSelectors$ (line 303) | interface HeroSelectors$ extends EntitySelectors$<Hero> {
  type Villain (line 309) | interface Villain {

FILE: modules/data/spec/selectors/entity-selectors.spec.ts
  function createHeroState (line 181) | function createHeroState(state: Partial<HeroCollection>): HeroCollection {
  function nameFilter (line 188) | function nameFilter<T>(entities: T[], pattern: string) {
  type Hero (line 193) | interface Hero {
  type HeroCollection (line 199) | interface HeroCollection extends EntityCollection<Hero> {
  type HeroSelectors (line 205) | interface HeroSelectors extends EntitySelectors<Hero> {
  type Villain (line 211) | interface Villain {

FILE: modules/data/spec/selectors/related-entity-selectors.spec.ts
  function setCollectionSelectors (line 59) | function setCollectionSelectors() {
  function createHeroSidekickSelector$ (line 73) | function createHeroSidekickSelector$(heroId: number): Observable<Sidekic...
  function setCollectionSelectors (line 212) | function setCollectionSelectors() {
  function createHeroBattlesSelector$ (line 245) | function createHeroBattlesSelector$(heroId: number): Observable<Battle[]> {
  function setCollectionSelectors (line 304) | function setCollectionSelectors() {
  function createHeroPowersSelector$ (line 342) | function createHeroPowersSelector$(heroId: number): Observable<Power[]> {
  type Hero (line 417) | interface Hero {
  type Battle (line 424) | interface Battle {
  type HeroPowerMap (line 431) | interface HeroPowerMap {
  type Power (line 437) | interface Power {
  type Sidekick (line 442) | interface Sidekick {
  function sortByName (line 448) | function sortByName(a: { name: string }, b: { name: string }): number {
  function initializeCache (line 452) | function initializeCache(

FILE: modules/data/src/actions/entity-action-factory.ts
  class EntityActionFactory (line 10) | class EntityActionFactory {
    method create (line 34) | create<P = any>(
    method createCore (line 57) | protected createCore<P = any>(payload: EntityActionPayload<P>) {
    method createFromAction (line 74) | createFromAction<P = any>(
    method formatActionType (line 81) | formatActionType(op: string, tag: string) {

FILE: modules/data/src/actions/entity-action-guard.ts
  class EntityActionGuard (line 11) | class EntityActionGuard<T> {
    method constructor (line 12) | constructor(
    method mustBeEntity (line 18) | mustBeEntity(action: EntityAction<T>): T {
    method mustBeEntities (line 31) | mustBeEntities(action: EntityAction<T[]>): T[] {
    method mustBeKey (line 47) | mustBeKey(action: EntityAction<string | number>): string | number | ne...
    method mustBeKeys (line 59) | mustBeKeys(action: EntityAction<(string | number)[]>): (string | numbe...
    method mustBeUpdate (line 76) | mustBeUpdate(action: EntityAction<Update<T>>): Update<T> {
    method mustBeUpdates (line 90) | mustBeUpdates(action: EntityAction<Update<T>[]>): Update<T>[] {
    method mustBeUpdateResponse (line 109) | mustBeUpdateResponse(
    method mustBeUpdateResponses (line 125) | mustBeUpdateResponses(
    method extractData (line 145) | private extractData<T>(action: EntityAction<T>) {
    method isNotKeyType (line 150) | private isNotKeyType(id: any) {
    method throwError (line 154) | private throwError(action: EntityAction, msg: string): never {

FILE: modules/data/src/actions/entity-action-operators.ts
  function ofEntityOp (line 25) | function ofEntityOp<T extends EntityAction>(
  function ofEntityType (line 67) | function ofEntityType<T extends EntityAction>(

FILE: modules/data/src/actions/entity-action.ts
  type EntityAction (line 8) | interface EntityAction<P = any> extends Action {
  type EntityActionOptions (line 14) | interface EntityActionOptions {
  type EntityActionPayload (line 43) | interface EntityActionPayload<P = any> extends EntityActionOptions {

FILE: modules/data/src/actions/entity-cache-action.ts
  type EntityCacheAction (line 14) | enum EntityCacheAction {
  type EntityCacheQuerySet (line 32) | interface EntityCacheQuerySet {
  class ClearCollections (line 42) | class ClearCollections implements Action {
    method constructor (line 46) | constructor(collections?: string[], tag?: string) {
  class LoadCollections (line 58) | class LoadCollections implements Action {
    method constructor (line 62) | constructor(collections: EntityCacheQuerySet, tag?: string) {
  class MergeQuerySet (line 78) | class MergeQuerySet implements Action {
    method constructor (line 87) | constructor(
  class SetEntityCache (line 108) | class SetEntityCache implements Action {
    method constructor (line 112) | constructor(
  class SaveEntities (line 121) | class SaveEntities implements Action {
    method constructor (line 134) | constructor(
  class SaveEntitiesCancel (line 147) | class SaveEntitiesCancel implements Action {
    method constructor (line 156) | constructor(
  class SaveEntitiesCanceled (line 166) | class SaveEntitiesCanceled implements Action {
    method constructor (line 174) | constructor(correlationId: any, reason?: string, tag?: string) {
  class SaveEntitiesError (line 179) | class SaveEntitiesError {
    method constructor (line 186) | constructor(error: DataServiceError, originalAction: SaveEntities) {
  class SaveEntitiesSuccess (line 192) | class SaveEntitiesSuccess implements Action {
    method constructor (line 205) | constructor(

FILE: modules/data/src/actions/entity-cache-change-set.ts
  type ChangeSetOperation (line 3) | enum ChangeSetOperation {
  type ChangeSetAdd (line 9) | interface ChangeSetAdd<T = any> {
  type ChangeSetDelete (line 15) | interface ChangeSetDelete {
  type ChangeSetUpdate (line 21) | interface ChangeSetUpdate<T = any> {
  type ChangeSetUpsert (line 27) | interface ChangeSetUpsert<T = any> {
  type ChangeSetItem (line 36) | type ChangeSetItem =
  type ChangeSet (line 45) | interface ChangeSet<T = any> {
  class ChangeSetItemFactory (line 62) | class ChangeSetItemFactory {
    method add (line 64) | add<T>(entityName: string, entities: T | T[]): ChangeSetAdd<T> {
    method delete (line 70) | delete(
    method update (line 83) | update<T extends { id: string | number }>(
    method upsert (line 92) | upsert<T>(entityName: string, entities: T | T[]): ChangeSetUpsert<T> {
  function excludeEmptyChangeSetItems (line 107) | function excludeEmptyChangeSetItems(changeSet: ChangeSet): ChangeSet {

FILE: modules/data/src/actions/entity-op.ts
  type EntityOp (line 5) | enum EntityOp {
  constant OP_SUCCESS (line 87) | const OP_SUCCESS = '/success';
  constant OP_ERROR (line 90) | const OP_ERROR = '/error';
  function makeErrorOp (line 93) | function makeErrorOp(op: EntityOp): EntityOp {
  function makeSuccessOp (line 98) | function makeSuccessOp(op: EntityOp): EntityOp {

FILE: modules/data/src/actions/merge-strategy.ts
  type MergeStrategy (line 2) | enum MergeStrategy {

FILE: modules/data/src/actions/update-response-data.ts
  type UpdateResponseData (line 9) | interface UpdateResponseData<T> {

FILE: modules/data/src/dataservices/data-service-error.ts
  class DataServiceError (line 10) | class DataServiceError extends Error {
    method constructor (line 11) | constructor(
  function extractMessage (line 23) | function extractMessage(sourceError: any): string | null {
  type EntityActionDataServiceError (line 44) | interface EntityActionDataServiceError {

FILE: modules/data/src/dataservices/default-data.service.ts
  class DefaultDataService (line 30) | class DefaultDataService<T> implements EntityCollectionDataService<T> {
    method name (line 41) | get name() {
    method constructor (line 45) | constructor(
    method add (line 73) | add(entity: T, options?: HttpOptions): Observable<T> {
    method delete (line 79) | delete(
    method getAll (line 100) | getAll(options?: HttpOptions): Observable<T[]> {
    method getById (line 104) | getById(key: number | string, options?: HttpOptions): Observable<T> {
    method getWithQuery (line 112) | getWithQuery(
    method update (line 131) | update(update: Update<T>, options?: HttpOptions): Observable<T> {
    method upsert (line 147) | upsert(entity: T, options?: HttpOptions): Observable<T> {
    method execute (line 153) | protected execute(
    method handleError (line 251) | private handleError(reqData: RequestData) {
    method handleDelete404 (line 262) | private handleDelete404(error: HttpErrorResponse, reqData: RequestData) {
  class DefaultDataServiceFactory (line 280) | class DefaultDataServiceFactory {
    method constructor (line 281) | constructor(
    method create (line 294) | create<T>(entityName: string): EntityCollectionDataService<T> {

FILE: modules/data/src/dataservices/entity-cache-data.service.ts
  class EntityCacheDataService (line 28) | class EntityCacheDataService {
    method constructor (line 33) | constructor(
    method saveEntities (line 54) | saveEntities(changeSet: ChangeSet, url: string): Observable<ChangeSet> {
    method handleError (line 79) | protected handleError(reqData: RequestData) {
    method filterChangeSet (line 91) | protected filterChangeSet(changeSet: ChangeSet): ChangeSet {
    method flattenUpdates (line 99) | protected flattenUpdates(changeSet: ChangeSet): ChangeSet {
    method restoreUpdates (line 123) | protected restoreUpdates(changeSet: ChangeSet): ChangeSet {
    method getIdSelector (line 156) | protected getIdSelector(entityName: string) {

FILE: modules/data/src/dataservices/entity-data.service.ts
  class EntityDataService (line 11) | class EntityDataService {
    method constructor (line 16) | constructor(protected defaultDataServiceFactory: DefaultDataServiceFac...
    method getService (line 26) | getService<T>(entityName: string): EntityCollectionDataService<T> {
    method registerService (line 45) | registerService<T>(
    method registerServices (line 62) | registerServices(services: {

FILE: modules/data/src/dataservices/http-url-generator.ts
  type HttpResourceUrls (line 18) | interface HttpResourceUrls {
  class DefaultHttpUrlGenerator (line 66) | class DefaultHttpUrlGenerator implements HttpUrlGenerator {
    method constructor (line 75) | constructor(private pluralizer: Pluralizer) {}
    method getResourceUrls (line 82) | protected getResourceUrls(
    method entityResource (line 107) | entityResource(
    method collectionResource (line 122) | collectionResource(entityName: string, root: string): string {
    method registerHttpResourceUrls (line 132) | registerHttpResourceUrls(
  function normalizeRoot (line 143) | function normalizeRoot(root: string) {

FILE: modules/data/src/dataservices/interfaces.ts
  type EntityCollectionDataService (line 5) | interface EntityCollectionDataService<T> {
  type HttpMethods (line 22) | type HttpMethods = 'DELETE' | 'GET' | 'POST' | 'PUT';
  type RequestData (line 24) | interface RequestData {
  type QueryParams (line 41) | interface QueryParams {
  type HttpOptions (line 53) | interface HttpOptions {
  type HttpHeaders (line 61) | type HttpHeaders = string | { [p: string]: string | string[] };
  type HttpParams (line 66) | interface HttpParams {

FILE: modules/data/src/dataservices/persistence-result-handler.service.ts
  class DefaultPersistenceResultHandler (line 33) | class DefaultPersistenceResultHandler
    method constructor (line 36) | constructor(
    method handleSuccess (line 42) | handleSuccess(originalAction: EntityAction): (data: any) => Action {
    method handleError (line 52) | handleError(

FILE: modules/data/src/dispatchers/entity-cache-dispatcher.ts
  class EntityCacheDispatcher (line 33) | class EntityCacheDispatcher {
    method constructor (line 41) | constructor(
    method dispatch (line 67) | dispatch(action: Action): Action {
    method cancelSaveEntities (line 79) | cancelSaveEntities(
    method clearCollections (line 102) | clearCollections(collections?: string[], tag?: string) {
    method loadCollections (line 113) | loadCollections(collections: EntityCacheQuerySet, tag?: string) {
    method mergeQuerySet (line 128) | mergeQuerySet(
    method setEntityCache (line 143) | setEntityCache(cache: EntityCache, tag?: string) {
    method saveEntities (line 161) | saveEntities(
    method getSaveEntitiesResponseData$ (line 191) | private getSaveEntitiesResponseData$(crid: any): Observable<ChangeSet> {

FILE: modules/data/src/dispatchers/entity-commands.ts
  type EntityServerCommands (line 6) | interface EntityServerCommands<T> {
  type EntityCacheCommands (line 141) | interface EntityCacheCommands<T> {
  type EntityCommands (line 268) | interface EntityCommands<T>

FILE: modules/data/src/dispatchers/entity-dispatcher-base.ts
  class EntityDispatcherBase (line 34) | class EntityDispatcherBase<T> implements EntityDispatcher<T> {
    method constructor (line 46) | constructor(
    method createEntityAction (line 84) | createEntityAction<P = any>(
    method createAndDispatch (line 105) | createAndDispatch<P = any>(
    method dispatch (line 120) | dispatch(action: Action): Action {
    method add (line 134) | add(entity: T, options?: EntityActionOptions): Observable<T> {
    method cancel (line 164) | cancel(
    method delete (line 193) | delete(
    method getAll (line 222) | getAll(options?: EntityActionOptions): Observable<T[]> {
    method getByKey (line 251) | getByKey(key: any, options?: EntityActionOptions): Observable<T> {
    method getWithQuery (line 274) | getWithQuery(
    method load (line 310) | load(options?: EntityActionOptions): Observable<T[]> {
    method loadWithQuery (line 328) | loadWithQuery(
    method update (line 352) | update(entity: Partial<T>, options?: EntityActionOptions): Observable<...
    method upsert (line 390) | upsert(entity: T, options?: EntityActionOptions): Observable<T> {
    method addAllToCache (line 426) | addAllToCache(entities: T[], options?: EntityActionOptions): void {
    method addOneToCache (line 435) | addOneToCache(entity: T, options?: EntityActionOptions): void {
    method addManyToCache (line 444) | addManyToCache(entities: T[], options?: EntityActionOptions): void {
    method clearCache (line 449) | clearCache(options?: EntityActionOptions): void {
    method removeOneFromCache (line 466) | removeOneFromCache(
    method removeManyFromCache (line 489) | removeManyFromCache(
    method updateOneInCache (line 511) | updateOneInCache(entity: Partial<T>, options?: EntityActionOptions): v...
    method updateManyInCache (line 525) | updateManyInCache(
    method upsertOneInCache (line 544) | upsertOneInCache(entity: Partial<T>, options?: EntityActionOptions): v...
    method upsertManyInCache (line 552) | upsertManyInCache(
    method setFilter (line 566) | setFilter(pattern: any): void {
    method setLoaded (line 571) | setLoaded(isLoaded: boolean): void {
    method setLoading (line 576) | setLoading(isLoading: boolean): void {
    method getKey (line 584) | private getKey(arg: number | string | T) {
    method getResponseData$ (line 596) | private getResponseData$<D = any>(crid: any): Observable<D> {
    method setQueryEntityActionOptions (line 626) | private setQueryEntityActionOptions(
    method setSaveEntityActionOptions (line 637) | private setSaveEntityActionOptions(

FILE: modules/data/src/dispatchers/entity-dispatcher-default-options.ts
  class EntityDispatcherDefaultOptions (line 11) | class EntityDispatcherDefaultOptions {

FILE: modules/data/src/dispatchers/entity-dispatcher-factory.ts
  class EntityDispatcherFactory (line 21) | class EntityDispatcherFactory implements OnDestroy {
    method constructor (line 29) | constructor(
    method create (line 49) | create<T>(
    method ngOnDestroy (line 81) | ngOnDestroy() {

FILE: modules/data/src/dispatchers/entity-dispatcher.ts
  type EntityDispatcher (line 14) | interface EntityDispatcher<T> extends EntityCommands<T> {
  class PersistanceCanceled (line 73) | class PersistanceCanceled {
    method constructor (line 74) | constructor(public readonly message?: string) {

FILE: modules/data/src/effects/entity-cache-effects.ts
  class EntityCacheEffects (line 43) | class EntityCacheEffects {
    method constructor (line 48) | constructor(
    method saveEntities (line 89) | saveEntities(action: SaveEntities): Observable<Action> {
    method handleSaveEntitiesError$ (line 137) | private handleSaveEntitiesError$(
    method handleSaveEntitiesSuccess$ (line 153) | private handleSaveEntitiesSuccess$(

FILE: modules/data/src/effects/entity-effects-scheduler.ts
  constant ENTITY_EFFECTS_SCHEDULER (line 6) | const ENTITY_EFFECTS_SCHEDULER = new InjectionToken<SchedulerLike>(

FILE: modules/data/src/effects/entity-effects.ts
  class EntityEffects (line 31) | class EntityEffects {
    method constructor (line 57) | constructor(
    method persist (line 77) | persist(action: EntityAction): Observable<Action> {
    method callDataService (line 110) | private callDataService(action: EntityAction) {
    method handleError$ (line 166) | private handleError$(
    method handleSkipSuccess$ (line 182) | private handleSkipSuccess$(

FILE: modules/data/src/entity-data-config.ts
  type EntityDataModuleConfig (line 8) | interface EntityDataModuleConfig {

FILE: modules/data/src/entity-data-without-effects.module.ts
  class EntityDataModuleWithoutEffects (line 17) | class EntityDataModuleWithoutEffects {
    method forRoot (line 18) | static forRoot(

FILE: modules/data/src/entity-data.module.ts
  class EntityDataModule (line 18) | class EntityDataModule {
    method forRoot (line 19) | static forRoot(

FILE: modules/data/src/entity-metadata/entity-definition.service.ts
  type EntityDefinitions (line 10) | interface EntityDefinitions {
  class EntityDefinitionService (line 16) | class EntityDefinitionService {
    method constructor (line 20) | constructor(
    method getDefinition (line 38) | getDefinition<T>(
    method registerMetadata (line 60) | registerMetadata(metadata: EntityMetadata) {
    method registerMetadataMap (line 77) | registerMetadataMap(metadataMap: EntityMetadataMap = {}) {
    method registerDefinition (line 91) | registerDefinition<T>(definition: EntityDefinition<T>) {
    method registerDefinitions (line 105) | registerDefinitions(definitions: EntityDefinitions) {

FILE: modules/data/src/entity-metadata/entity-definition.ts
  type EntityDefinition (line 9) | interface EntityDefinition<T = any> {
  function createEntityDefinition (line 20) | function createEntityDefinition<T, S extends object>(

FILE: modules/data/src/entity-metadata/entity-filters.ts
  type EntityFilterFn (line 6) | type EntityFilterFn<T> = (entities: T[], pattern?: any) => T[];
  function PropsFilterFnFactory (line 13) | function PropsFilterFnFactory<T = any>(

FILE: modules/data/src/entity-metadata/entity-metadata.ts
  constant ENTITY_METADATA_TOKEN (line 8) | const ENTITY_METADATA_TOKEN = new InjectionToken<EntityMetadataMap>(
  type EntityMetadata (line 13) | interface EntityMetadata<T = any, S extends object = {}> {
  type EntityMetadataMap (line 24) | interface EntityMetadataMap {

FILE: modules/data/src/entity-services/entity-collection-service-base.ts
  class EntityCollectionServiceBase (line 26) | class EntityCollectionServiceBase<
    method constructor (line 40) | constructor(
    method createEntityAction (line 81) | createEntityAction<P = any>(
    method createAndDispatch (line 97) | createAndDispatch<P = any>(
    method dispatch (line 110) | dispatch(action: Action): Action {
    method store (line 115) | get store() {
    method add (line 148) | add(entity: T, options?: EntityActionOptions): Observable<T> {
    method cancel (line 158) | cancel(
    method delete (line 186) | delete(
    method getAll (line 201) | getAll(options?: EntityActionOptions): Observable<T[]> {
    method getByKey (line 214) | getByKey(key: any, options?: EntityActionOptions): Observable<T> {
    method getWithQuery (line 227) | getWithQuery(
    method load (line 242) | load(options?: EntityActionOptions): Observable<T[]> {
    method loadWithQuery (line 255) | loadWithQuery(
    method update (line 271) | update(entity: Partial<T>, options?: EntityActionOptions): Observable<...
    method upsert (line 285) | upsert(entity: T, options?: EntityActionOptions): Observable<T> {
    method addAllToCache (line 297) | addAllToCache(entities: T[], options?: EntityActionOptions): void {
    method addOneToCache (line 308) | addOneToCache(entity: T, options?: EntityActionOptions): void {
    method addManyToCache (line 319) | addManyToCache(entities: T[], options?: EntityActionOptions): void {
    method clearCache (line 324) | clearCache(): void {
    method removeOneFromCache (line 343) | removeOneFromCache(
    method removeManyFromCache (line 368) | removeManyFromCache(
    method updateOneInCache (line 384) | updateOneInCache(entity: Partial<T>, options?: EntityActionOptions): v...
    method updateManyInCache (line 399) | updateManyInCache(
    method upsertOneInCache (line 414) | upsertOneInCache(entity: Partial<T>, options?: EntityActionOptions): v...
    method upsertManyInCache (line 426) | upsertManyInCache(
    method setFilter (line 437) | setFilter(pattern: any): void {
    method setLoaded (line 442) | setLoaded(isLoaded: boolean): void {
    method setLoading (line 447) | setLoading(isLoading: boolean): void {

FILE: modules/data/src/entity-services/entity-collection-service-elements-factory.ts
  type EntityCollectionServiceElements (line 15) | interface EntityCollectionServiceElements<
  class EntityCollectionServiceElementsFactory (line 27) | class EntityCollectionServiceElementsFactory {
    method constructor (line 28) | constructor(
    method create (line 39) | create<T, S$ extends EntitySelectors$<T> = EntitySelectors$<T>>(

FILE: modules/data/src/entity-services/entity-collection-service-factory.ts
  class EntityCollectionServiceFactory (line 12) | class EntityCollectionServiceFactory {
    method constructor (line 13) | constructor(
    method create (line 22) | create<T, S$ extends EntitySelectors$<T> = EntitySelectors$<T>>(

FILE: modules/data/src/entity-services/entity-collection-service.ts
  type EntityCollectionService (line 12) | interface EntityCollectionService<T>

FILE: modules/data/src/entity-services/entity-services-base.ts
  class EntityServicesBase (line 37) | class EntityServicesBase implements EntityServices {
    method constructor (line 45) | constructor(private entityServicesElements: EntityServicesElements) {}
    method entityActionErrors$ (line 50) | get entityActionErrors$(): Observable<EntityAction> {
    method entityCache$ (line 55) | get entityCache$(): Observable<EntityCache> | Store<EntityCache> {
    method entityCollectionServiceFactory (line 60) | get entityCollectionServiceFactory(): EntityCollectionServiceFactory {
    method reducedActions$ (line 68) | get reducedActions$(): Observable<Action> {
    method store (line 73) | protected get store(): Store<EntityCache> {
    method dispatch (line 80) | dispatch(action: Action) {
    method createEntityCollectionService (line 93) | protected createEntityCollectionService<
    method getEntityCollectionService (line 103) | getEntityCollectionService<
    method registerEntityCollectionService (line 120) | registerEntityCollectionService<T>(
    method registerEntityCollectionServices (line 133) | registerEntityCollectionServices(

FILE: modules/data/src/entity-services/entity-services-elements.ts
  class EntityServicesElements (line 13) | class EntityServicesElements {
    method constructor (line 14) | constructor(

FILE: modules/data/src/entity-services/entity-services.ts
  type EntityCollectionServiceMap (line 70) | interface EntityCollectionServiceMap {

FILE: modules/data/src/provide-entity-data.ts
  constant BASE_ENTITY_DATA_PROVIDERS (line 62) | const BASE_ENTITY_DATA_PROVIDERS: Array<
  function initializeBaseEntityData (line 88) | function initializeBaseEntityData(): void {
  constant ENTITY_DATA_EFFECTS_PROVIDERS (line 123) | const ENTITY_DATA_EFFECTS_PROVIDERS: Array<
  function initializeEntityDataEffects (line 140) | function initializeEntityDataEffects(): void {
  function provideEntityDataConfig (line 149) | function provideEntityDataConfig(
  function provideEntityData (line 236) | function provideEntityData(
  type EntityDataFeatureKind (line 247) | enum EntityDataFeatureKind {
  type EntityDataFeature (line 251) | interface EntityDataFeature {
  function withEffects (line 261) | function withEffects(): EntityDataFeature {

FILE: modules/data/src/reducers/constants.ts
  constant ENTITY_CACHE_NAME (line 5) | const ENTITY_CACHE_NAME = 'entityCache';
  constant ENTITY_CACHE_NAME_TOKEN (line 6) | const ENTITY_CACHE_NAME_TOKEN = new InjectionToken<string>(
  constant ENTITY_CACHE_META_REDUCERS (line 10) | const ENTITY_CACHE_META_REDUCERS = new InjectionToken<
  constant ENTITY_COLLECTION_META_REDUCERS (line 13) | const ENTITY_COLLECTION_META_REDUCERS = new InjectionToken<
  constant INITIAL_ENTITY_CACHE_STATE (line 17) | const INITIAL_ENTITY_CACHE_STATE = new InjectionToken<

FILE: modules/data/src/reducers/entity-cache-reducer.ts
  class EntityCacheReducerFactory (line 34) | class EntityCacheReducerFactory {
    method constructor (line 35) | constructor(
    method create (line 45) | create(): ActionReducer<EntityCache, Action> {
    method clearCollectionsReducer (line 125) | protected clearCollectionsReducer(
    method loadCollectionsReducer (line 155) | protected loadCollectionsReducer(
    method mergeQuerySetReducer (line 183) | protected mergeQuerySetReducer(
    method saveEntitiesReducer (line 212) | protected saveEntitiesReducer(
    method saveEntitiesCancelReducer (line 260) | protected saveEntitiesCancelReducer(
    method saveEntitiesErrorReducer (line 272) | protected saveEntitiesErrorReducer(
    method saveEntitiesSuccessReducer (line 287) | protected saveEntitiesSuccessReducer(
    method applyCollectionReducer (line 331) | private applyCollectionReducer(
    method clearLoadingFlags (line 356) | private clearLoadingFlags(entityCache: EntityCache, entityNames: strin...

FILE: modules/data/src/reducers/entity-cache.ts
  type EntityCache (line 3) | interface EntityCache {

FILE: modules/data/src/reducers/entity-change-tracker-base.ts
  class EntityChangeTrackerBase (line 15) | class EntityChangeTrackerBase<T> implements EntityChangeTracker<T> {
    method constructor (line 16) | constructor(
    method commitAll (line 30) | commitAll(collection: EntityCollection<T>): EntityCollection<T> {
    method commitMany (line 42) | commitMany(
    method commitOne (line 74) | commitOne(
    method mergeQueryResults (line 94) | mergeQueryResults(
    method mergeSaveAdds (line 118) | mergeSaveAdds(
    method mergeSaveDeletes (line 140) | mergeSaveDeletes(
    method mergeSaveUpdates (line 168) | mergeSaveUpdates(
    method mergeSaveUpserts (line 274) | mergeSaveUpserts(
    method mergeServerUpserts (line 296) | private mergeServerUpserts(
    method trackAddMany (line 370) | trackAddMany(
    method trackAddOne (line 412) | trackAddOne(
    method trackDeleteMany (line 429) | trackDeleteMany(
    method trackDeleteOne (line 485) | trackDeleteOne(
    method trackUpdateMany (line 502) | trackUpdateMany(
    method trackUpdateOne (line 549) | trackUpdateOne(
    method trackUpsertMany (line 566) | trackUpsertMany(
    method trackUpsertOne (line 613) | trackUpsertOne(
    method undoAll (line 630) | undoAll(collection: EntityCollection<T>): EntityCollection<T> {
    method undoMany (line 672) | undoMany(
    method undoOne (line 732) | undoOne(

FILE: modules/data/src/reducers/entity-change-tracker.ts
  type EntityChangeTracker (line 11) | interface EntityChangeTracker<T> {

FILE: modules/data/src/reducers/entity-collection-creator.ts
  class EntityCollectionCreator (line 7) | class EntityCollectionCreator {
    method constructor (line 8) | constructor(
    method create (line 16) | create<T = any, S extends EntityCollection<T> = EntityCollection<T>>(
  function createEmptyEntityCollection (line 32) | function createEmptyEntityCollection<T>(

FILE: modules/data/src/reducers/entity-collection-reducer-methods.ts
  type EntityCollectionReducerMethodMap (line 24) | interface EntityCollectionReducerMethodMap<T> {
  class EntityCollectionReducerMethods (line 34) | class EntityCollectionReducerMethods<T> {
    method constructor (line 145) | constructor(
    method cancelPersist (line 167) | protected cancelPersist(
    method queryAll (line 175) | protected queryAll(collection: EntityCollection<T>): EntityCollection<...
    method queryAllError (line 179) | protected queryAllError(
    method queryAllSuccess (line 190) | protected queryAllSuccess(
    method queryByKey (line 207) | protected queryByKey(
    method queryByKeyError (line 214) | protected queryByKeyError(
    method queryByKeySuccess (line 221) | protected queryByKeySuccess(
    method queryLoad (line 238) | protected queryLoad(collection: EntityCollection<T>): EntityCollection...
    method queryLoadError (line 242) | protected queryLoadError(
    method queryLoadSuccess (line 254) | protected queryLoadSuccess(
    method queryMany (line 267) | protected queryMany(
    method queryManyError (line 274) | protected queryManyError(
    method queryManySuccess (line 281) | protected queryManySuccess(
    method saveAddMany (line 311) | protected saveAddMany(
    method saveAddManyError (line 336) | protected saveAddManyError(
    method saveAddManySuccess (line 359) | protected saveAddManySuccess(
    method saveAddOne (line 393) | protected saveAddOne(
    method saveAddOneError (line 418) | protected saveAddOneError(
    method saveAddOneSuccess (line 434) | protected saveAddOneSuccess(
    method saveDeleteOne (line 477) | protected saveDeleteOne(
    method saveDeleteOneError (line 526) | protected saveDeleteOneError(
    method saveDeleteOneSuccess (line 538) | protected saveDeleteOneSuccess(
    method saveDeleteMany (line 572) | protected saveDeleteMany(
    method saveDeleteManyError (line 619) | protected saveDeleteManyError(
    method saveDeleteManySuccess (line 631) | protected saveDeleteManySuccess(
    method saveUpdateOne (line 661) | protected saveUpdateOne(
    method saveUpdateOneError (line 686) | protected saveUpdateOneError(
    method saveUpdateOneSuccess (line 707) | protected saveUpdateOneSuccess(
    method saveUpdateMany (line 733) | protected saveUpdateMany(
    method saveUpdateManyError (line 758) | protected saveUpdateManyError(
    method saveUpdateManySuccess (line 779) | protected saveUpdateManySuccess(
    method saveUpsertOne (line 806) | protected saveUpsertOne(
    method saveUpsertOneError (line 831) | protected saveUpsertOneError(
    method saveUpsertOneSuccess (line 847) | protected saveUpsertOneSuccess(
    method saveUpsertMany (line 874) | protected saveUpsertMany(
    method saveUpsertManyError (line 899) | protected saveUpsertManyError(
    method saveUpsertManySuccess (line 915) | protected saveUpsertManySuccess(
    method addAll (line 941) | protected addAll(
    method addMany (line 954) | protected addMany(
    method addOne (line 968) | protected addOne(
    method removeMany (line 982) | protected removeMany(
    method removeOne (line 997) | protected removeOne(
    method removeAll (line 1012) | protected removeAll(
    method updateMany (line 1024) | protected updateMany(
    method updateOne (line 1039) | protected updateOne(
    method upsertMany (line 1054) | protected upsertMany(
    method upsertOne (line 1070) | protected upsertOne(
    method commitAll (line 1086) | protected commitAll(collection: EntityCollection<T>) {
    method commitMany (line 1090) | protected commitMany(
    method commitOne (line 1100) | protected commitOne(
    method undoAll (line 1110) | protected undoAll(collection: EntityCollection<T>) {
    method undoMany (line 1114) | protected undoMany(
    method undoOne (line 1124) | protected undoOne(collection: EntityCollection<T>, action: EntityActio...
    method setChangeState (line 1132) | protected setChangeState(
    method setCollection (line 1147) | protected setCollection(
    method setFilter (line 1155) | protected setFilter(
    method setLoaded (line 1165) | protected setLoaded(
    method setLoading (line 1175) | protected setLoading(
    method setLoadingFalse (line 1182) | protected setLoadingFalse(
    method setLoadingTrue (line 1188) | protected setLoadingTrue(
    method setLoadingFlag (line 1195) | protected setLoadingFlag(collection: EntityCollection<T>, loading: boo...
    method extractData (line 1205) | protected extractData<D = any>(action: EntityAction<D>): D {
    method extractMergeStrategy (line 1210) | protected extractMergeStrategy(action: EntityAction) {
    method isOptimistic (line 1217) | protected isOptimistic(action: EntityAction) {
  class EntityCollectionReducerMethodsFactory (line 1228) | class EntityCollectionReducerMethodsFactory {
    method constructor (line 1229) | constructor(private entityDefinitionService: EntityDefinitionService) {}
    method create (line 1232) | create<T>(entityName: string): EntityCollectionReducerMethodMap<T> {

FILE: modules/data/src/reducers/entity-collection-reducer-registry.ts
  type EntityCollectionReducers (line 13) | interface EntityCollectionReducers {
  class EntityCollectionReducerRegistry (line 22) | class EntityCollectionReducerRegistry {
    method constructor (line 29) | constructor(
    method getOrCreateReducer (line 46) | getOrCreateReducer<T>(entityName: string): EntityCollectionReducer<T> {
    method registerReducer (line 67) | registerReducer<T>(
    method registerReducers (line 85) | registerReducers(reducers: EntityCollectionReducers) {

FILE: modules/data/src/reducers/entity-collection-reducer.ts
  type EntityCollectionReducer (line 7) | type EntityCollectionReducer<T = any> = (
  class EntityCollectionReducerFactory (line 14) | class EntityCollectionReducerFactory {
    method constructor (line 15) | constructor(private methodsFactory: EntityCollectionReducerMethodsFact...
    method create (line 18) | create<T = any>(entityName: string): EntityCollectionReducer<T> {

FILE: modules/data/src/reducers/entity-collection.ts
  type ChangeType (line 4) | enum ChangeType {
  type ChangeState (line 19) | interface ChangeState<T> {
  type ChangeStateMap (line 28) | type ChangeStateMap<T> = Dictionary<ChangeState<T>>;
  type EntityCollection (line 34) | interface EntityCollection<T = any> extends EntityState<T> {

FILE: modules/data/src/selectors/entity-cache-selector.ts
  constant ENTITY_CACHE_SELECTOR_TOKEN (line 9) | const ENTITY_CACHE_SELECTOR_TOKEN = new InjectionToken<
  type EntityCacheSelector (line 19) | type EntityCacheSelector = MemoizedSelector<Object, EntityCache>;
  function createEntityCacheSelector (line 21) | function createEntityCacheSelector(

FILE: modules/data/src/selectors/entity-selectors$.ts
  type EntitySelectors$ (line 26) | interface EntitySelectors$<T> {
  class EntitySelectors$Factory (line 74) | class EntitySelectors$Factory {
    method constructor (line 81) | constructor(
    method create (line 106) | create<T, S$ extends EntitySelectors$<T> = EntitySelectors$<T>>(

FILE: modules/data/src/selectors/entity-selectors.ts
  type CollectionSelectors (line 27) | interface CollectionSelectors<T> {
  type EntitySelectors (line 63) | interface EntitySelectors<T> {
  class EntitySelectorsFactory (line 105) | class EntitySelectorsFactory {
    method constructor (line 109) | constructor(
    method createCollectionSelector (line 126) | createCollectionSelector<
    method createCollectionSelectors (line 167) | createCollectionSelectors<
    method create (line 268) | create<T, S extends EntitySelectors<T> = EntitySelectors<T>>(

FILE: modules/data/src/utils/correlation-id-generator.ts
  class CorrelationIdGenerator (line 13) | class CorrelationIdGenerator {
    method next (line 19) | next() {

FILE: modules/data/src/utils/default-logger.ts
  class DefaultLogger (line 5) | class DefaultLogger implements Logger {
    method error (line 6) | error(message?: any, extra?: any) {
    method log (line 16) | log(message?: any, extra?: any) {
    method warn (line 26) | warn(message?: any, extra?: any) {

FILE: modules/data/src/utils/default-pluralizer.ts
  class DefaultPluralizer (line 18) | class DefaultPluralizer {
    method constructor (line 21) | constructor(
    method pluralize (line 36) | pluralize(name: string) {
    method registerPluralNames (line 62) | registerPluralNames(pluralNames: EntityPluralNames): void {

FILE: modules/data/src/utils/guid-fns.ts
  function getUuid (line 17) | function getUuid() {
  function getGuid (line 30) | function getGuid() {
  function getGuidComb (line 42) | function getGuidComb(seed?: number) {
  function guidComparer (line 67) | function guidComparer(l: string, r: string) {

FILE: modules/data/src/utils/interfaces.ts
  type EntityPluralNames (line 12) | interface EntityPluralNames {
  constant PLURAL_NAMES_TOKEN (line 16) | const PLURAL_NAMES_TOKEN = new InjectionToken<EntityPluralNames>(

FILE: modules/data/src/utils/utilities.ts
  function defaultSelectId (line 9) | function defaultSelectId(entity: any) {
  function flattenArgs (line 24) | function flattenArgs<T>(args?: any[]): T[] {
  function toUpdateFactory (line 40) | function toUpdateFactory<T>(selectId?: IdSelector<T>) {

FILE: modules/effects/migrations/13_0_0/index.spec.ts
  function runTest (line 242) | async function runTest(input: string, expected: string) {

FILE: modules/effects/migrations/13_0_0/index.ts
  function migrateToCreators (line 12) | function migrateToCreators(): Rule {
  function replaceEffectDecorators (line 50) | function replaceEffectDecorators(
  function isEffectDecorator (line 107) | function isEffectDecorator(decorator: ts.Decorator) {
  function getDispatchProperties (line 115) | function getDispatchProperties(

FILE: modules/effects/migrations/15_0_0-beta/index.ts
  function migrateProvideEffects (line 15) | function migrateProvideEffects(): Rule {
  function visitProvideEffects (line 63) | function visitProvideEffects(
  function visitImportSpecifiers (line 78) | function visitImportSpecifiers(

FILE: modules/effects/migrations/18_0_0-beta/index.ts
  function migrateConcatLatestFromImport (line 18) | function migrateConcatLatestFromImport(): Rule {
  function getImportDeclarations (line 144) | function getImportDeclarations(
  function getEffectsNamedBinding (line 157) | function getEffectsNamedBinding(

FILE: modules/effects/migrations/9_0_0/index.spec.ts
  function test (line 132) | async function test(input: string, expected: string) {

FILE: modules/effects/migrations/9_0_0/index.ts
  function renameErrorHandlerConfig (line 15) | function renameErrorHandlerConfig(): Rule {
  function replaceEffectConfigKeys (line 35) | function replaceEffectConfigKeys(
  function visitIdentifierWithText (line 64) | function visitIdentifierWithText(
  function visitEffectDecorator (line 78) | function visitEffectDecorator(node: ts.Node, visitor: (node: ts.Node) =>...
  function visitCreateEffectFunctionCreator (line 93) | function visitCreateEffectFunctionCreator(

FILE: modules/effects/schematics-core/utility/ast-utils.ts
  function findNodes (line 28) | function findNodes(
  function getSourceNodes (line 65) | function getSourceNodes(sourceFile: ts.SourceFile): ts.Node[] {
  function nodesByPosition (line 87) | function nodesByPosition(first: ts.Node, second: ts.Node): number {
  function insertAfterLastOccurrence (line 104) | function insertAfterLastOccurrence(
  function getContentOfKeyLiteral (line 128) | function getContentOfKeyLiteral(
  function _angularImportsFromNode (line 141) | function _angularImportsFromNode(
  function getDecoratorMetadata (line 193) | function getDecoratorMetadata(
  function _addSymbolToNgModuleMetadata (line 261) | function _addSymbolToNgModuleMetadata(
  function _addSymbolToComponentMetadata (line 458) | function _addSymbolToComponentMetadata(
  function addDeclarationToModule (line 614) | function addDeclarationToModule(
  function addImportToModule (line 633) | function addImportToModule(
  function addProviderToModule (line 651) | function addProviderToModule(
  function addProviderToComponent (line 669) | function addProviderToComponent(
  function addExportToModule (line 687) | function addExportToModule(
  function addBootstrapToModule (line 705) | function addBootstrapToModule(
  function insertImport (line 730) | function insertImport(
  function replaceImport (line 820) | function replaceImport(
  function containsProperty (line 907) | function containsProperty(

FILE: modules/effects/schematics-core/utility/change.ts
  type Host (line 13) | interface Host {
  type Change (line 18) | interface Change {
  class NoopChange (line 36) | class NoopChange implements Change {
    method apply (line 40) | apply() {
  class InsertChange (line 48) | class InsertChange implements Change {
    method constructor (line 52) | constructor(
    method apply (line 67) | apply(host: Host) {
  class RemoveChange (line 80) | class RemoveChange implements Change {
    method constructor (line 84) | constructor(
    method apply (line 96) | apply(host: Host): Promise<void> {
  class ReplaceChange (line 110) | class ReplaceChange implements Change {
    method constructor (line 114) | constructor(
    method apply (line 127) | apply(host: Host): Promise<void> {
  function createReplaceChange (line 145) | function createReplaceChange(
  function createRemoveChange (line 159) | function createRemoveChange(
  function createChangeRecorder (line 168) | function createChangeRecorder(
  function commitChanges (line 187) | function commitChanges(tree: Tree, path: string, changes: Change[]) {

FILE: modules/effects/schematics-core/utility/config.ts
  type AppConfig (line 5) | interface AppConfig {
  function getWorkspacePath (line 131) | function getWorkspacePath(host: Tree): string {
  function getWorkspace (line 138) | function getWorkspace(host: Tree) {

FILE: modules/effects/schematics-core/utility/find-component.ts
  type ComponentOptions (line 20) | interface ComponentOptions {
  function findComponentFromOptions (line 31) | function findComponentFromOptions(
  function findComponent (line 74) | function findComponent(host: Tree, generateDir: string): Path {
  function buildRelativePath (line 103) | function buildRelativePath(from: string, to: string): string {
  function parsePath (line 128) | function parsePath(path: string) {
  function convertToTypeScriptFileName (line 143) | function convertToTypeScriptFileName(filename: string | undefined) {

FILE: modules/effects/schematics-core/utility/find-module.ts
  type ModuleOptions (line 20) | interface ModuleOptions {
  function findModuleFromOptions (line 31) | function findModuleFromOptions(
  function findModule (line 70) | function findModule(host: Tree, generateDir: string): Path {
  function buildRelativePath (line 102) | function buildRelativePath(from: string, to: string): string {
  function parsePath (line 127) | function parsePath(path: string) {
  function convertToTypeScriptFileName (line 142) | function convertToTypeScriptFileName(filename: string | undefined) {

FILE: modules/effects/schematics-core/utility/json-utilts.ts
  function findPropertyInAstObject (line 2) | function findPropertyInAstObject(

FILE: modules/effects/schematics-core/utility/ngrx-utils.ts
  function addReducerToState (line 9) | function addReducerToState(options: any): Rule {
  function addReducerToStateInterface (line 78) | function addReducerToStateInterface(
  function addReducerToActionReducerMap (line 128) | function addReducerToActionReducerMap(
  function addReducerImportToNgModule (line 195) | function addReducerImportToNgModule(options: any): Rule {
  function omit (line 263) | function omit<T extends { [key: string]: any }>(
  function getPrefix (line 272) | function getPrefix(options: { prefix?: string }) {

FILE: modules/effects/schematics-core/utility/package.ts
  function addPackageToPackageJson (line 6) | function addPackageToPackageJson(

FILE: modules/effects/schematics-core/utility/parse-name.ts
  type Location (line 3) | interface Location {
  function parseName (line 8) | function parseName(path: string, name: string): Location {

FILE: modules/effects/schematics-core/utility/project.ts
  type WorkspaceProject (line 5) | interface WorkspaceProject {
  function getProject (line 13) | function getProject(
  function getProjectPath (line 31) | function getProjectPath(
  function isLib (line 51) | function isLib(
  function getProjectMainFile (line 60) | function getProjectMainFile(

FILE: modules/effects/schematics-core/utility/standalone.ts
  type ResolvedAppConfig (line 13) | interface ResolvedAppConfig {
  function callsProvidersFunction (line 29) | function callsProvidersFunction(
  function addFunctionalProvidersToStandaloneBootstrap (line 62) | function addFunctionalProvidersToStandaloneBootstrap(
  function findBootstrapApplicationCall (line 144) | function findBootstrapApplicationCall(
  function findProvidersLiteral (line 177) | function findProvidersLiteral(
  function findAppConfig (line 200) | function findAppConfig(
  function resolveAppConfigFromIdentifier (line 226) | function resolveAppConfigFromIdentifier(
  function findAppConfigFromVariableName (line 286) | function findAppConfigFromVariableName(
  function findImportLocalName (line 314) | function findImportLocalName(
  function createSourceFile (line 351) | function createSourceFile(tree: Tree, filePath: string): ts.SourceFile {
  function addNewAppConfigToCall (line 366) | function addNewAppConfigToCall(
  function addElementToArray (line 404) | function addElementToArray(
  function addProvidersToObjectLiteral (line 428) | function addProvidersToObjectLiteral(
  function isMergeAppConfigCall (line 454) | function isMergeAppConfigCall(node: ts.Node): node is ts.CallExpression {

FILE: modules/effects/schematics-core/utility/strings.ts
  constant STRING_DASHERIZE_REGEXP (line 8) | const STRING_DASHERIZE_REGEXP = /[ _]/g;
  constant STRING_DECAMELIZE_REGEXP (line 9) | const STRING_DECAMELIZE_REGEXP = /([a-z\d])([A-Z])/g;
  constant STRING_CAMELIZE_REGEXP (line 10) | const STRING_CAMELIZE_REGEXP = /(-|_|\.|\s)+(.)?/g;
  constant STRING_UNDERSCORE_REGEXP_1 (line 11) | const STRING_UNDERSCORE_REGEXP_1 = /([a-z\d])([A-Z]+)/g;
  constant STRING_UNDERSCORE_REGEXP_2 (line 12) | const STRING_UNDERSCORE_REGEXP_2 = /-|\s+/g;
  function decamelize (line 24) | function decamelize(str: string): string {
  function dasherize (line 38) | function dasherize(str?: string): string {
  function camelize (line 53) | function camelize(str: string): string {
  function classify (line 74) | function classify(str: string): string {
  function underscore (line 92) | function underscore(str: string): string {
  function capitalize (line 109) | function capitalize(str: string): string {
  function pluralize (line 124) | function pluralize(str: string): string {
  function group (line 132) | function group(name: string, group: string | undefined) {
  function featurePath (line 136) | function featurePath(

FILE: modules/effects/schematics-core/utility/update.ts
  function updatePackage (line 8) | function updatePackage(name: string): Rule {
  function match (line 41) | function match(value: string, test: string) {

FILE: modules/effects/schematics-core/utility/visitors.ts
  function visitTSSourceFiles (line 5) | function visitTSSourceFiles<Result = void>(
  function visitTemplates (line 21) | function visitTemplates(
  function visitNgModuleImports (line 91) | function visitNgModuleImports(
  function visitNgModuleExports (line 101) | function visitNgModuleExports(
  function visitNgModuleProperty (line 111) | function visitNgModuleProperty(
  function visitComponents (line 135) | function visitComponents(
  function visitNgModules (line 145) | function visitNgModules(
  function visitDecorator (line 155) | function visitDecorator(
  function visitImportDeclaration (line 201) | function visitImportDeclaration(
  function visitImportSpecifier (line 220) | function visitImportSpecifier(
  function visitTypeReference (line 242) | function visitTypeReference(
  function visitTypeLiteral (line 255) | function visitTypeLiteral(
  function visitCallExpression (line 268) | function visitCallExpression(

FILE: modules/effects/schematics/ng-add/index.ts
  function addImportToNgModule (line 38) | function addImportToNgModule(options: EffectOptions): Rule {
  function addNgRxEffectsToPackageJson (line 112) | function addNgRxEffectsToPackageJson() {
  function addStandaloneConfig (line 125) | function addStandaloneConfig(options: EffectOptions): Rule {

FILE: modules/effects/schematics/ng-add/schema.ts
  type Schema (line 1) | interface Schema {

FILE: modules/effects/spec/actions.spec.ts
  type AddAction (line 20) | interface AddAction extends Action {
  type SubtractAction (line 24) | interface SubtractAction extends Action {

FILE: modules/effects/spec/effect_creator.spec.ts
  class Fixture (line 123) | class Fixture {
    method get (line 202) | get(_, prop) {
  class Fixture (line 197) | class Fixture {
    method get (line 202) | get(_, prop) {

FILE: modules/effects/spec/effect_sources.spec.ts
  function toActions (line 78) | function toActions(source: any): Observable<any> {
  class SourceA (line 101) | class SourceA {
  class SourceB (line 105) | class SourceB {
  class SourceC (line 109) | class SourceC {
  class SourceD (line 113) | class SourceD {
  class SourceE (line 117) | class SourceE {
  class SourceF (line 121) | class SourceF {
  class SourceG (line 125) | class SourceG {
  class SourceError (line 129) | class SourceError {
  class SourceH (line 133) | class SourceH {
  class SourceWithIdentifier (line 140) | class SourceWithIdentifier implements OnIdentifyEffects {
    method ngrxOnIdentifyEffects (line 144) | ngrxOnIdentifyEffects() {
    method constructor (line 148) | constructor(identifier: string) {
  class SourceWithIdentifier2 (line 153) | class SourceWithIdentifier2 implements OnIdentifyEffects {
    method ngrxOnIdentifyEffects (line 157) | ngrxOnIdentifyEffects() {
    method constructor (line 161) | constructor(identifier: string) {
  class SourceWithInitAction (line 166) | class SourceWithInitAction implements OnInitEffects, OnIdentifyEffects {
    method ngrxOnInitEffects (line 183) | ngrxOnInitEffects() {
    method ngrxOnIdentifyEffects (line 187) | ngrxOnIdentifyEffects() {
    method constructor (line 191) | constructor(
  class SourceH (line 497) | class SourceH {
  function alwaysOf (line 519) | function alwaysOf<T>(value: T) {

FILE: modules/effects/spec/effects_error_handler.spec.ts
  function makeEffectTestBed (line 15) | function makeEffectTestBed(effect: Type<any>, ...providers: Provider[]) {
  class ErrorEffect (line 92) | class ErrorEffect {
  class AlwaysErrorEffect (line 98) | class AlwaysErrorEffect {
  function errorFirstSubscriber (line 106) | function errorFirstSubscriber(): Observable<Action> {

FILE: modules/effects/spec/effects_feature_module.spec.ts
  constant FEATURE_KEY (line 93) | const FEATURE_KEY = 'feature';
  type State (line 95) | interface State {
  type DataState (line 99) | interface DataState {
  function reducer (line 109) | function reducer(state: DataState = initialState, action: Action) {
  class FeatureEffects (line 133) | @Injectable()
    method constructor (line 135) | constructor(
  class FeatureEffectsModule (line 149) | @NgModule({
  class FeatureModule (line 154) | @NgModule({
  class AppModule (line 159) | @NgModule({

FILE: modules/effects/spec/effects_metadata.spec.ts
  class Fixture (line 9) | class Fixture {
  class Fixture (line 61) | class Fixture {
  class Fixture (line 101) | class Fixture {

FILE: modules/effects/spec/integration.spec.ts
  class ClassEffects1 (line 77) | class ClassEffects1 {
  class ClassEffects2 (line 81) | class ClassEffects2 {
  class EffectLoggerWithOnRunEffects (line 366) | @Injectable()
    method constructor (line 370) | constructor(private actions$: Actions) {}
    method ngrxOnRunEffects (line 372) | ngrxOnRunEffects(
  class EffectWithOnInitAndResponse (line 382) | @Injectable()
    method constructor (line 398) | constructor(private actions$: Actions) {}
    method ngrxOnInitEffects (line 400) | ngrxOnInitEffects(): Action {
  class RootEffectWithInitAction (line 405) | class RootEffectWithInitAction implements OnInitEffects {
    method ngrxOnInitEffects (line 406) | ngrxOnInitEffects(): Action {
  class RootEffectWithInitAction2 (line 411) | class RootEffectWithInitAction2 implements OnInitEffects {
    method ngrxOnInitEffects (line 412) | ngrxOnInitEffects(): Action {
  class ActionWithPayload (line 417) | class ActionWithPayload implements Action {
  class RootEffectWithInitActionWithPayload (line 422) | class RootEffectWithInitActionWithPayload implements OnInitEffects {
    method ngrxOnInitEffects (line 423) | ngrxOnInitEffects(): Action {
  class RootEffectWithoutLifecycle (line 428) | class RootEffectWithoutLifecycle {}
  class UserProvidedEffect1 (line 430) | class UserProvidedEffect1 implements OnInitEffects {
    method ngrxOnInitEffects (line 431) | public ngrxOnInitEffects(): Action {
  class UserProvidedEffect2 (line 436) | class UserProvidedEffect2 implements OnInitEffects {
    method ngrxOnInitEffects (line 437) | public ngrxOnInitEffects(): Action {
  class FeatModuleWithUserProvidedEffects (line 442) | @NgModule({
  class FeatEffectWithInitAction (line 455) | class FeatEffectWithInitAction implements OnInitEffects {
    method ngrxOnInitEffects (line 456) | ngrxOnInitEffects(): Action {
  class FeatEffectWithIdentifierAndInitAction (line 461) | class FeatEffectWithIdentifierAndInitAction
    method ngrxOnIdentifyEffects (line 464) | ngrxOnIdentifyEffects(): string {
    method ngrxOnInitEffects (line 468) | ngrxOnInitEffects(): Action {
    method constructor (line 472) | constructor(private effectIdentifier: string) {}
  class FeatEffectFromLazyLoadedModuleWithInitAction (line 475) | class FeatEffectFromLazyLoadedModuleWithInitAction implements OnInitEffe...
    method ngrxOnInitEffects (line 476) | ngrxOnInitEffects(): Action {
  class SomeEffect (line 481) | @Injectable()
  class FeatModuleWithForRoot (line 484) | @NgModule({
  class FeatModuleWithEmptyForRoot (line 489) | @NgModule({
  class FeatModuleWithForFeature (line 494) | @NgModule({

FILE: modules/effects/spec/provide_effects.spec.ts
  class TestEffects (line 217) | @Injectable()
    method constructor (line 219) | constructor(
  class TestService (line 248) | @Injectable()
    method getNumbers (line 250) | getNumbers(): Observable<number[]> {

FILE: modules/effects/spec/utils.spec.ts
  class Fixture (line 12) | class Fixture {}
  class C (line 23) | class C {}
  class C1 (line 61) | class C1 {}
  class C2 (line 62) | class C2 {}
  class C3 (line 63) | class C3 {}

FILE: modules/effects/src/actions.ts
  class Actions (line 12) | class Actions<V = Action> extends Observable<V> {
    method constructor (line 13) | constructor(@Inject(ScannedActionsSubject) source?: Observable<V>) {
    method lift (line 21) | override lift<R>(operator: Operator<V, R>): Observable<R> {
  type ActionExtractor (line 30) | type ActionExtractor<
  function ofType (line 133) | function ofType(

FILE: modules/effects/src/effect_creator.ts
  type DispatchType (line 12) | type DispatchType<T> = T extends { dispatch: infer U } ? U : true;
  type ObservableType (line 13) | type ObservableType<T, OriginalType> = T extends false ? OriginalType : ...
  type EffectResult (line 14) | type EffectResult<OT> = Observable<OT> | ((...args: any[]) => Observable...
  type ConditionallyDisallowActionCreator (line 15) | type ConditionallyDisallowActionCreator<DT, Result> = DT extends false
  function createEffect (line 110) | function createEffect<
  function getCreateEffectMetadata (line 128) | function getCreateEffectMetadata<T extends Record<keyof T, Object>>(

FILE: modules/effects/src/effect_notification.ts
  type EffectNotification (line 6) | interface EffectNotification {
  function reportInvalidActions (line 14) | function reportInvalidActions(
  function isAction (line 34) | function isAction(action: any): action is Action {
  function getEffectName (line 43) | function getEffectName({
  function stringify (line 56) | function stringify(action: Action | null | undefined) {

FILE: modules/effects/src/effect_sources.ts
  class EffectSources (line 33) | class EffectSources extends Subject<any> {
    method constructor (line 34) | constructor(
    method addEffects (line 42) | addEffects(effectSourceInstance: any): void {
    method toActions (line 49) | toActions(): Observable<Action> {
  function effectsInstance (line 92) | function effectsInstance(sourceInstance: any) {
  function resolveEffectSource (line 100) | function resolveEffectSource(

FILE: modules/effects/src/effects_actions.ts
  constant ROOT_EFFECTS_INIT (line 3) | const ROOT_EFFECTS_INIT = '@ngrx/effects/init';

FILE: modules/effects/src/effects_error_handler.ts
  type EffectsErrorHandler (line 6) | type EffectsErrorHandler = <T extends Action>(
  constant MAX_NUMBER_OF_RETRY_ATTEMPTS (line 11) | const MAX_NUMBER_OF_RETRY_ATTEMPTS = 10;
  function defaultEffectsErrorHandler (line 13) | function defaultEffectsErrorHandler<T extends Action>(

FILE: modules/effects/src/effects_feature_module.ts
  class EffectsFeatureModule (line 7) | class EffectsFeatureModule {
    method constructor (line 8) | constructor(

FILE: modules/effects/src/effects_metadata.ts
  function getEffectsMetadata (line 4) | function getEffectsMetadata<T extends Record<keyof T, Object>>(
  function getSourceMetadata (line 19) | function getSourceMetadata<T extends { [props in keyof T]: object }>(

FILE: modules/effects/src/effects_module.ts
  class EffectsModule (line 23) | class EffectsModule {
    method forFeature (line 30) | static forFeature(
    method forRoot (line 67) | static forRoot(
  function createEffectsInstances (line 101) | function createEffectsInstances(
  function _provideForRootGuard (line 124) | function _provideForRootGuard(): unknown {

FILE: modules/effects/src/effects_resolver.ts
  function mergeEffects (line 11) | function mergeEffects(

FILE: modules/effects/src/effects_root_module.ts
  class EffectsRootModule (line 9) | class EffectsRootModule {
    method constructor (line 10) | constructor(
    method addEffects (line 30) | addEffects(effectsInstance: unknown): void {

FILE: modules/effects/src/effects_runner.ts
  class EffectsRunner (line 8) | class EffectsRunner implements OnDestroy {
    method isStarted (line 11) | get isStarted(): boolean {
    method constructor (line 15) | constructor(
    method start (line 20) | start() {
    method ngOnDestroy (line 28) | ngOnDestroy() {

FILE: modules/effects/src/lifecycle_hooks.ts
  type OnIdentifyEffects (line 29) | interface OnIdentifyEffects {
  function isOnIdentifyEffects (line 40) | function isOnIdentifyEffects(
  type OnRunEffects (line 73) | interface OnRunEffects {
  function isOnRunEffects (line 85) | function isOnRunEffects(instance: any): instance is OnRunEffects {
  type OnInitEffects (line 109) | interface OnInitEffects {
  function isOnInitEffects (line 119) | function isOnInitEffects(instance: any): instance is OnInitEffects {
  function isFunction (line 123) | function isFunction(instance: any, functionName: string) {

FILE: modules/effects/src/models.ts
  type EffectConfig (line 6) | interface EffectConfig {
  constant DEFAULT_EFFECT_CONFIG (line 23) | const DEFAULT_EFFECT_CONFIG: Readonly<Required<EffectConfig>> = {
  constant CREATE_EFFECT_METADATA_KEY (line 29) | const CREATE_EFFECT_METADATA_KEY = '__@ngrx/effects_create__';
  type CreateEffectMetadata (line 31) | interface CreateEffectMetadata {
  type FunctionalCreateEffectMetadata (line 35) | interface FunctionalCreateEffectMetadata extends CreateEffectMetadata {
  type FunctionalEffect (line 39) | type FunctionalEffect<
  type EffectPropertyKey (line 43) | type EffectPropertyKey<T extends Record<keyof T, Object>> = Exclude<
  type EffectMetadata (line 48) | interface EffectMetadata<T extends Record<keyof T, Object>>
  type EffectsMetadata (line 53) | type EffectsMetadata<T extends Record<keyof T, Object>> = {

FILE: modules/effects/src/provide_effects.ts
  function provideEffects (line 59) | function provideEffects(

FILE: modules/effects/src/tokens.ts
  constant USER_PROVIDED_EFFECTS (line 11) | const USER_PROVIDED_EFFECTS = new InjectionToken<
  constant EFFECTS_ERROR_HANDLER (line 26) | const EFFECTS_ERROR_HANDLER = new InjectionToken<EffectsErrorHandler>(

FILE: modules/effects/src/utils.ts
  function getSourceForInstance (line 3) | function getSourceForInstance<T>(instance: T): T {
  function isClassInstance (line 7) | function isClassInstance(obj: object): boolean {
  function isClass (line 15) | function isClass(
  function getClasses (line 21) | function getClasses(
  function isToken (line 27) | function isToken(
  type NextNotification (line 38) | interface NextNotification<T> {
  type ErrorNotification (line 43) | interface ErrorNotification {
  type CompleteNotification (line 48) | interface CompleteNotification {
  type ObservableNotification (line 52) | type ObservableNotification<T> =

FILE: modules/effects/testing/src/testing.ts
  function provideMockActions (line 60) | function provideMockActions(

FILE: modules/entity/schematics-core/utility/ast-utils.ts
  function findNodes (line 28) | function findNodes(
  function getSourceNodes (line 65) | function getSourceNodes(sourceFile: ts.SourceFile): ts.Node[] {
  function nodesByPosition (line 87) | function nodesByPosition(first: ts.Node, second: ts.Node): number {
  function insertAfterLastOccurrence (line 104) | function insertAfterLastOccurrence(
  function getContentOfKeyLiteral (line 128) | function getContentOfKeyLiteral(
  function _angularImportsFromNode (line 141) | function _angularImportsFromNode(
  function getDecoratorMetadata (line 193) | function getDecoratorMetadata(
  function _addSymbolToNgModuleMetadata (line 261) | function _addSymbolToNgModuleMetadata(
  function _addSymbolToComponentMetadata (line 458) | function _addSymbolToComponentMetadata(
  function addDeclarationToModule (line 614) | function addDeclarationToModule(
  function addImportToModule (line 633) | function addImportToModule(
  function addProviderToModule (line 651) | function addProviderToModule(
  function addProviderToComponent (line 669) | function addProviderToComponent(
  function addExportToModule (line 687) | function addExportToModule(
  function addBootstrapToModule (line 705) | function addBootstrapToModule(
  function insertImport (line 730) | function insertImport(
  function replaceImport (line 820) | function replaceImport(
  function containsProperty (line 907) | function containsProperty(

FILE: modules/entity/schematics-core/utility/change.ts
  type Host (line 13) | interface Host {
  type Change (line 18) | interface Change {
  class NoopChange (line 36) | class NoopChange implements Change {
    method apply (line 40) | apply() {
  class InsertChange (line 48) | class InsertChange implements Change {
    method constructor (line 52) | constructor(
    method apply (line 67) | apply(host: Host) {
  class RemoveChange (line 80) | class RemoveChange implements Change {
    method constructor (line 84) | constructor(
    method apply (line 96) | apply(host: Host): Promise<void> {
  class ReplaceChange (line 110) | class ReplaceChange implements Change {
    method constructor (line 114) | constructor(
    method apply (line 127) | apply(host: Host): Promise<void> {
  function createReplaceChange (line 145) | function createReplaceChange(
  function createRemoveChange (line 159) | function createRemoveChange(
  function createChangeRecorder (line 168) | function createChangeRecorder(
  function commitChanges (line 187) | function commitChanges(tree: Tree, path: string, changes: Change[]) {

FILE: modules/entity/schematics-core/utility/config.ts
  type AppConfig (line 5) | interface AppConfig {
  function getWorkspacePath (line 131) | function getWorkspacePath(host: Tree): string {
  function getWorkspace (line 138) | function getWorkspace(host: Tree) {

FILE: modules/entity/schematics-core/utility/find-component.ts
  type ComponentOptions (line 20) | interface ComponentOptions {
  function findComponentFromOptions (line 31) | function findComponentFromOptions(
  function findComponent (line 74) | function findComponent(host: Tree, generateDir: string): Path {
  function buildRelativePath (line 103) | function buildRelativePath(from: string, to: string): string {
  function parsePath (line 128) | function parsePath(path: string) {
  function convertToTypeScriptFileName (line 143) | function convertToTypeScriptFileName(filename: string | undefined) {

FILE: modules/entity/schematics-core/utility/find-module.ts
  type ModuleOptions (line 20) | interface ModuleOptions {
  function findModuleFromOptions (line 31) | function findModuleFromOptions(
  function findModule (line 70) | function findModule(host: Tree, generateDir: string): Path {
  function buildRelativePath (line 102) | function buildRelativePath(from: string, to: string): string {
  function parsePath (line 127) | function parsePath(path: string) {
  function convertToTypeScriptFileName (line 142) | function convertToTypeScriptFileName(filename: string | undefined) {

FILE: modules/entity/schematics-core/utility/json-utilts.ts
  function findPropertyInAstObject (line 2) | function findPropertyInAstObject(

FILE: modules/entity/schematics-core/utility/ngrx-utils.ts
  function addReducerToState (line 9) | function addReducerToState(options: any): Rule {
  function addReducerToStateInterface (line 78) | function addReducerToStateInterface(
  function addReducerToActionReducerMap (line 128) | function addReducerToActionReducerMap(
  function addReducerImportToNgModule (line 195) | function addReducerImportToNgModule(options: any): Rule {
  function omit (line 263) | function omit<T extends { [key: string]: any }>(
  function getPrefix (line 272) | function getPrefix(options: { prefix?: string }) {

FILE: modules/entity/schematics-core/utility/package.ts
  function addPackageToPackageJson (line 6) | function addPackageToPackageJson(

FILE: modules/entity/schematics-core/utility/parse-name.ts
  type Location (line 3) | interface Location {
  function parseName (line 8) | function parseName(path: string, name: string): Location {

FILE: modules/entity/schematics-core/utility/project.ts
  type WorkspaceProject (line 5) | interface WorkspaceProject {
  function getProject (line 13) | function getProject(
  function getProjectPath (line 31) | function getProjectPath(
  function isLib (line 51) | function isLib(
  function getProjectMainFile (line 60) | function getProjectMainFile(

FILE: modules/entity/schematics-core/utility/standalone.ts
  type ResolvedAppConfig (line 13) | interface ResolvedAppConfig {
  function callsProvidersFunction (line 29) | function callsProvidersFunction(
  function addFunctionalProvidersToStandaloneBootstrap (line 62) | function addFunctionalProvidersToStandaloneBootstrap(
  function findBootstrapApplicationCall (line 144) | function findBootstrapApplicationCall(
  function findProvidersLiteral (line 177) | function findProvidersLiteral(
  function findAppConfig (line 200) | function findAppConfig(
  function resolveAppConfigFromIdentifier (line 226) | function resolveAppConfigFromIdentifier(
  function findAppConfigFromVariableName (line 286) | function findAppConfigFromVariableName(
  function findImportLocalName (line 314) | function findImportLocalName(
  function createSourceFile (line 351) | function createSourceFile(tree: Tree, filePath: string): ts.SourceFile {
  function addNewAppConfigToCall (line 366) | function addNewAppConfigToCall(
  function addElementToArray (line 404) | function addElementToArray(
  function addProvidersToObjectLiteral (line 428) | function addProvidersToObjectLiteral(
  function isMergeAppConfigCall (line 454) | function isMergeAppConfigCall(node: ts.Node): node is ts.CallExpression {

FILE: modules/entity/schematics-core/utility/strings.ts
  constant STRING_DASHERIZE_REGEXP (line 8) | const STRING_DASHERIZE_REGEXP = /[ _]/g;
  constant STRING_DECAMELIZE_REGEXP (line 9) | const STRING_DECAMELIZE_REGEXP = /([a-z\d])([A-Z])/g;
  constant STRING_CAMELIZE_REGEXP (line 10) | const STRING_CAMELIZE_REGEXP = /(-|_|\.|\s)+(.)?/g;
  constant STRING_UNDERSCORE_REGEXP_1 (line 11) | const STRING_UNDERSCORE_REGEXP_1 = /([a-z\d])([A-Z]+)/g;
  constant STRING_UNDERSCORE_REGEXP_2 (line 12) | const STRING_UNDERSCORE_REGEXP_2 = /-|\s+/g;
  function decamelize (line 24) | function decamelize(str: string): string {
  function dasherize (line 38) | function dasherize(str?: string): string {
  function camelize (line 53) | function camelize(str: string): string {
  function classify (line 74) | function classify(str: string): string {
  function underscore (line 92) | function underscore(str: string): string {
  function capitalize (line 109) | function capitalize(str: string): string {
  function pluralize (line 124) | function pluralize(str: string): string {
  function group (line 132) | function group(name: string, group: string | undefined) {
  function featurePath (line 136) | function featurePath(

FILE: modules/entity/schematics-core/utility/update.ts
  function updatePackage (line 8) | function updatePackage(name: string): Rule {
  function match (line 41) | function match(value: string, test: string) {

FILE: modules/entity/schematics-core/utility/visitors.ts
  function visitTSSourceFiles (line 5) | function visitTSSourceFiles<Result = void>(
  function visitTemplates (line 21) | function visitTemplates(
  function visitNgModuleImports (line 91) | function visitNgModuleImports(
  function visitNgModuleExports (line 101) | function visitNgModuleExports(
  function visitNgModuleProperty (line 111) | function visitNgModuleProperty(
  function visitComponents (line 135) | function visitComponents(
  function visitNgModules (line 145) | function visitNgModules(
  function visitDecorator (line 155) | function visitDecorator(
  function visitImportDeclaration (line 201) | function visitImportDeclaration(
  function visitImportSpecifier (line 220) | function visitImportSpecifier(
  function visitTypeReference (line 242) | function visitTypeReference(
  function visitTypeLiteral (line 255) | function visitTypeLiteral(
  function visitCallExpression (line 268) | function visitCallExpression(

FILE: modules/entity/schematics/ng-add/index.ts
  function addNgRxEntityToPackageJson (line 15) | function addNgRxEntityToPackageJson() {

FILE: modules/entity/schematics/ng-add/schema.ts
  type Schema (line 1) | interface Schema {

FILE: modules/entity/spec/fixtures/book.ts
  type BookModel (line 4) | interface BookModel {

FILE: modules/entity/spec/state_selectors.spec.ts
  type State (line 13) | interface State {
  type State (line 62) | type State = EntityState<BookModel>;

FILE: modules/entity/src/create_adapter.ts
  function createEntityAdapter (line 12) | function createEntityAdapter<T>(

FILE: modules/entity/src/entity_state.ts
  function getInitialEntityState (line 3) | function getInitialEntityState<V>(): EntityState<V> {
  function createInitialStateFactory (line 10) | function createInitialStateFactory<V>() {

FILE: modules/entity/src/models.ts
  type Comparer (line 3) | type Comparer<T> = (a: T, b: T) => number;
  type IdSelectorStr (line 5) | type IdSelectorStr<T> = (model: T) => string;
  type IdSelectorNum (line 6) | type IdSelectorNum<T> = (model: T) => number;
  type IdSelector (line 8) | type IdSelector<T> = IdSelectorStr<T> | IdSelectorNum<T>;
  type DictionaryNum (line 10) | interface DictionaryNum<T> {
  type UpdateStr (line 18) | interface UpdateStr<T> {
  type UpdateNum (line 23) | interface UpdateNum<T> {
  type Update (line 28) | type Update<T> = UpdateStr<T> | UpdateNum<T>;
  type Predicate (line 30) | type Predicate<T> = (entity: T) => boolean;
  type EntityMap (line 32) | type EntityMap<T> = (entity: T) => T;
  type EntityMapOneNum (line 34) | interface EntityMapOneNum<T> {
  type EntityMapOneStr (line 39) | interface EntityMapOneStr<T> {
  type EntityMapOne (line 44) | type EntityMapOne<T> = EntityMapOneNum<T> | EntityMapOneStr<T>;
  type EntityState (line 46) | interface EntityState<T> {
  type EntityDefinition (line 51) | interface EntityDefinition<T> {
  type EntityStateAdapter (line 56) | interface EntityStateAdapter<T> {
  type EntitySelectors (line 83) | type EntitySelectors<T, V> = {
  type MemoizedEntitySelectors (line 90) | type MemoizedEntitySelectors<T, V> = {
  type EntityAdapter (line 109) | interface EntityAdapter<T> extends EntityStateAdapter<T> {

FILE: modules/entity/src/sorted_state_adapter.ts
  function createSortedStateAdapter (line 19) | function createSortedStateAdapter<T>(selectId: any, sort: any): any {

FILE: modules/entity/src/state_adapter.ts
  type DidMutate (line 3) | enum DidMutate {
  function createStateOperator (line 12) | function createStateOperator<V, R>(

FILE: modules/entity/src/state_selectors.ts
  function createSelectorsFactory (line 8) | function createSelectorsFactory<T>() {

FILE: modules/entity/src/unsorted_state_adapter.ts
  function createUnsortedStateAdapter (line 17) | function createUnsortedStateAdapter<T>(selectId: IdSelector<T>): any {

FILE: modules/entity/src/utils.ts
  function selectIdValue (line 4) | function selectIdValue<T>(entity: T, selectId: IdSelector<T>) {

FILE: modules/eslint-plugin/schematics/ng-add/index.ts
  function updateFlatConfig (line 41) | function updateFlatConfig(
  function updateJsonConfig (line 160) | function updateJsonConfig(

FILE: modules/eslint-plugin/schematics/ng-add/schema.ts
  type Schema (line 1) | interface Schema {

FILE: modules/eslint-plugin/scripts/generate-config.ts
  function writeConfig (line 47) | async function writeConfig(

FILE: modules/eslint-plugin/scripts/generate-overview.ts
  function generateRules (line 18) | async function generateRules() {
  function generateConfigurations (line 79) | async function generateConfigurations() {

FILE: modules/eslint-plugin/spec/exported-rules.spec.ts
  function getAllRules (line 9) | function getAllRules() {
  function getAllConfigs (line 14) | function getAllConfigs() {

FILE: modules/eslint-plugin/spec/rules/component-store/avoid-combining-component-store-selectors.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/component-store/avoid-mapping-component-store-selectors.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/component-store/require-super-ondestroy.spec.ts
  type MessageIds (line 9) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 10) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/component-store/updater-explicit-return-type.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/effects/avoid-cyclic-effects.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/effects/no-dispatch-in-effects.spec.ts
  type MessageIds (line 13) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 14) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/effects/no-effects-in-providers.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/effects/no-multiple-actions-in-effects.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/effects/prefer-effect-callback-in-block-statement.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/effects/use-effects-lifecycle-interface.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/operators/prefer-concat-latest-from.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = readonly ESLintUtils.InferOptionsTypeFromRule<typeof rule...

FILE: modules/eslint-plugin/spec/rules/signals/enforce-type-call.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = readonly ESLintUtils.InferOptionsTypeFromRule<typeof rule...

FILE: modules/eslint-plugin/spec/rules/signals/prefer-protected-state.spec.ts
  type MessageIds (line 13) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 14) | type Options = readonly ESLintUtils.InferOptionsTypeFromRule<typeof rule...

FILE: modules/eslint-plugin/spec/rules/signals/signal-state-no-arrays-at-root-level.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/signals/signal-store-feature-should-use-generic-type.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = readonly ESLintUtils.InferOptionsTypeFromRule<typeof rule...

FILE: modules/eslint-plugin/spec/rules/signals/with-state-no-arrays-at-root-level.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/avoid-combining-selectors.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/avoid-dispatching-multiple-actions-sequentially.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/avoid-duplicate-actions-in-reducer.spec.ts
  type MessageIds (line 13) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 14) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/avoid-mapping-selectors.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/good-action-hygiene.spec.ts
  type MessageIds (line 10) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 11) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/no-multiple-global-stores.spec.ts
  type MessageIds (line 13) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 14) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/no-reducer-in-key-names.spec.ts
  type MessageIds (line 13) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 14) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/no-store-subscription.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/no-typed-global-store.spec.ts
  type MessageIds (line 13) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 14) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/on-function-explicit-return-type.spec.ts
  type MessageIds (line 13) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 14) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/prefer-action-creator-in-dispatch.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/prefer-action-creator-in-of-type.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/prefer-action-creator.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/prefer-inline-action-props.spec.ts
  type MessageIds (line 13) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 14) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/prefer-one-generic-in-create-for-feature-selector.spec.ts
  type MessageIds (line 13) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 14) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/prefer-selector-in-select.spec.ts
  type MessageIds (line 12) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 13) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/prefix-selectors-with-select.spec.ts
  type MessageIds (line 13) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 14) | type Options = ESLintUtils.InferOptionsTypeFromRule<typeof rule>;

FILE: modules/eslint-plugin/spec/rules/store/select-style.spec.ts
  type MessageIds (line 10) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 11) | type Options = readonly ESLintUtils.InferOptionsTypeFromRule<typeof rule...

FILE: modules/eslint-plugin/spec/rules/store/use-consistent-global-store-name.spec.ts
  type MessageIds (line 13) | type MessageIds = ESLintUtils.InferMessageIdsTypeFromRule<typeof rule>;
  type Options (line 14) | type Options = readonly ESLintUtils.InferOptionsTypeFromRule<typeof rule...

FILE: modules/eslint-plugin/spec/utils/from-fixture.ts
  function fromFixture (line 24) | function fromFixture<
  function getSuggestions (line 43) | function getSuggestions<TMessageIds extends string>(
  function parseFixture (line 64) | function parseFixture<TMessageIds extends string>(

FILE: modules/eslint-plugin/spec/utils/rule-tester.ts
  function ruleTester (line 4) | function ruleTester(requiresTypeChecking?: boolean) {

FILE: modules/eslint-plugin/src/rule-creator.ts
  type NgRxRuleDocs (line 4) | interface NgRxRuleDocs {
  type NgRxRule (line 9) | type NgRxRule = ReturnType<
  method create (line 26) | create(context) {

FILE: modules/eslint-plugin/src/rules/component-store/avoid-combining-component-store-selectors.ts
  type MessageIds (line 6) | type MessageIds = typeof messageId;
  type Options (line 7) | type Options = readonly [];
  method [`ClassDeclaration[superClass.name=/Store/] CallExpression[callee.name='combineLatest'] ${thisSelects} ~ ${thisSelects}`] (line 31) | [`ClassDeclaration[superClass.name=/Store/] CallExpression[callee.name='...
  method [`CallExpression[callee.name='combineLatest'] ${storeSelects} ~ ${storeSelects}`] (line 36) | [`CallExpression[callee.name='combineLatest'] ${storeSelects} ~ ${storeS...
  method [`CallExpression[callee.name='combineLatest']:exit`] (line 41) | [`CallExpression[callee.name='combineLatest']:exit`]() {

FILE: modules/eslint-plugin/src/rules/component-store/avoid-mapping-component-store-selectors.ts
  type MessageIds (line 11) | type MessageIds = typeof messageId;
  type Options (line 12) | type Options = readonly [];
  method [selectors] (line 41) | [selectors](node: TSESTree.ArrowFunctionExpression) {

FILE: modules/eslint-plugin/src/rules/component-store/require-super-ondestroy.ts
  type MessageIds (line 6) | type MessageIds = typeof messageId;
  type Options (line 7) | type Options = readonly [];
  method [`ImportDeclaration[source.value='@ngrx/component-store'] ImportSpecifier[imported.name='${componentStoreClassName}']`] (line 32) | [`ImportDeclaration[source.value='@ngrx/component-store'] ImportSpecifie...
  method [`ClassDeclaration[superClass.name=${componentStoreClassName}] ${ngOnDestroyMethodSelector}:not(:has(CallExpression[callee.object.type='Super'][callee.property.name='ngOnDestroy'])) > .key`] (line 37) | [`ClassDeclaration[superClass.name=${componentStoreClassName}] ${ngOnDes...

FILE: modules/eslint-plugin/src/rules/component-store/updater-explicit-return-type.ts
  type MessageIds (line 8) | type MessageIds = typeof messageId;
  type Options (line 9) | type Options = readonly [];
  method [selectors] (line 40) | [selectors](node: TSESTree.ArrowFunctionExpression) {

FILE: modules/eslint-plugin/src/rules/effects/avoid-cyclic-effects.ts
  type MessageIds (line 16) | type MessageIds = typeof messageId;
  type Options (line 17) | type Options = readonly [];
  function checkNode (line 49) | function checkNode(pipeCallExpression: TSESTree.CallExpression) {
  function getActionType (line 102) | function getActionType(symbol: ts.Symbol): ts.Type | null {
  function getActionTypes (line 122) | function getActionTypes(type: ts.Type): string[] {
  method [`${createEffectExpression}:not([arguments.1]:has(Property[key.name='dispatch'][value.value=false])) CallExpression[callee.property.name='pipe'][callee.object.property.name=${actionsNames}]`] (line 153) | [`${createEffectExpression}:not([arguments.1]:has(Property[key.name='dis...
  method [`${createEffectExpression}:not([arguments.1]:has(Property[key.name='dispatch'][value.value=false])) CallExpression[callee.property.name='pipe']:exit`] (line 163) | [`${createEffectExpression}:not([arguments.1]:has(Property[key.name='dis...

FILE: modules/eslint-plugin/src/rules/effects/no-dispatch-in-effects.ts
  type MessageIds (line 15) | type MessageIds =
  type Options (line 18) | type Options = readonly [];
  type MemberExpressionWithinCallExpression (line 19) | type MemberExpressionWithinCallExpression = TSESTree.MemberExpression & {
  method [dispatchInEffects(storeNames)] (line 49) | [dispatchInEffects(storeNames)](
  function getNodeToReport (line 68) | function getNodeToReport(node: MemberExpressionWithinCallExpression) {

FILE: modules/eslint-plugin/src/rules/effects/no-effects-in-providers.ts
  type MessageIds (line 13) | type MessageIds = typeof messageId;
  type Options (line 14) | type Options = readonly [];
  method [effectsInNgModuleProviders] (line 38) | [effectsInNgModuleProviders](node: TSESTree.Identifier) {
  method [effectsInNgModuleImports] (line 41) | [effectsInNgModuleImports]({ name }: TSESTree.Identifier) {
  method [`${ngModuleDecorator}:exit`] (line 44) | [`${ngModuleDecorator}:exit`]() {

FILE: modules/eslint-plugin/src/rules/effects/no-multiple-actions-in-effects.ts
  type MessageIds (line 17) | type MessageIds = typeof messageId;
  type Options (line 18) | type Options = readonly unknown[];
  type EffectsMapLikeOperatorsReturn (line 19) | type EffectsMapLikeOperatorsReturn =
  method [`${createEffectExpression} ${mapLikeOperatorCallExpressions}`] (line 42) | [`${createEffectExpression} ${mapLikeOperatorCallExpressions}`](
  function getNodeToReport (line 73) | function getNodeToReport(node: EffectsMapLikeOperatorsReturn) {
  function findReturnStatement (line 87) | function findReturnStatement(nodes: TSESTree.Node[]) {

FILE: modules/eslint-plugin/src/rules/effects/prefer-action-creator-in-of-type.ts
  type MessageIds (line 7) | type MessageIds = typeof messageId;
  type Options (line 8) | type Options = readonly [];
  method [`CallExpression[callee.name='ofType'] Literal`] (line 27) | [`CallExpression[callee.name='ofType'] Literal`](node: TSESTree.Literal) {

FILE: modules/eslint-plugin/src/rules/effects/prefer-effect-callback-in-block-statement.ts
  type MessageIds (line 9) | type MessageIds = typeof messageId;
  type Options (line 10) | type Options = readonly [];
  method [`${nonParametrizedEffect}, ${parametrizedEffect}, ${parametrizedEffectWithinBlockStatement}`] (line 37) | [`${nonParametrizedEffect}, ${parametrizedEffect}, ${parametrizedEffectW...
  function getSafeNodesToApplyFix (line 59) | function getSafeNodesToApplyFix(

FILE: modules/eslint-plugin/src/rules/effects/use-effects-lifecycle-interface.ts
  type MessageIds (line 13) | type MessageIds = typeof messageId;
  type Options (line 14) | type Options = readonly [];
  method [`ClassDeclaration > ClassBody > MethodDefinition > Identifier[name=/${lifecyclesPattern}/]`] (line 42) | [`ClassDeclaration > ClassBody > MethodDefinition > Identifier[name=/${l...

FILE: modules/eslint-plugin/src/rules/operators/prefer-concat-latest-from.ts
  type MessageIds (line 19) | type MessageIds = typeof messageId;
  type Options (line 20) | type Options = readonly [{ readonly strict: boolean }];
  type WithLatestFromIdentifier (line 21) | type WithLatestFromIdentifier = TSESTree.Identifier & {
  method [`${createEffectExpression} CallExpression > Identifier[name='withLatestFrom']`] (line 58) | [`${createEffectExpression} CallExpression > Identifier[name='withLatest...
  method [`${createEffectExpression} ${namedExpression(
        actionsNames
      )} > CallExpression[arguments.length=1] > Identifier[name='${withLatestFromKeyword}']`] (line 78) | [`${createEffectExpression} ${namedExpression(
  method [`${createEffectExpression} ${namedExpression(
        actionsNames
      )} > CallExpression[arguments.length>1] > Identifier[name='${withLatestFromKeyword}']`] (line 89) | [`${createEffectExpression} ${namedExpression(
  function getFixes (line 103) | function getFixes(

FILE: modules/eslint-plugin/src/rules/signals/enforce-type-call.ts
  type MessageIds (line 8) | type MessageIds = typeof enforceTypeCall;
  type Options (line 9) | type Options = readonly [];
  method [`ImportDeclaration[source.value='@ngrx/signals'] ImportSpecifier[imported.name='type']`] (line 31) | [`ImportDeclaration[source.value='@ngrx/signals'] ImportSpecifier[import...
  method TSInstantiationExpression (line 37) | TSInstantiationExpression(node: TSESTree.TSInstantiationExpression) {

FILE: modules/eslint-plugin/src/rules/signals/prefer-protected-state.ts
  type MessageIds (line 8) | type MessageIds =
  type Options (line 11) | type Options = readonly [];
  method [`CallExpression[callee.name=signalStore][arguments.length>0] > ObjectExpression[properties.length>0] > Property[key.name=protectedState][value.value=false]`] (line 32) | [`CallExpression[callee.name=signalStore][arguments.length>0] > ObjectEx...

FILE: modules/eslint-plugin/src/rules/signals/signal-state-no-arrays-at-root-level.ts
  type MessageIds (line 8) | type MessageIds = typeof messageId;
  type Options (line 9) | type Options = readonly [];
  constant NON_RECORD_TYPES (line 11) | const NON_RECORD_TYPES = [
  method [`CallExpression[callee.name=signalState]`] (line 44) | [`CallExpression[callee.name=signalState]`](

FILE: modules/eslint-plugin/src/rules/signals/signal-store-feature-should-use-generic-type.ts
  type MessageIds (line 13) | type MessageIds = typeof messageId;
  type Options (line 14) | type Options = readonly [];
  function report (line 32) | function report(
  function hasInputAsArgument (line 61) | function hasInputAsArgument(node: TSESTree.CallExpression) {
  method [`ArrowFunctionExpression > CallExpression[callee.name=signalStoreFeature]`] (line 70) | [`ArrowFunctionExpression > CallExpression[callee.name=signalStoreFeatur...
  method [`ArrowFunctionExpression > BlockStatement CallExpression[callee.name=signalStoreFeature]`] (line 77) | [`ArrowFunctionExpression > BlockStatement CallExpression[callee.name=si...
  method [`FunctionDeclaration > BlockStatement CallExpression[callee.name=signalStoreFeature]`] (line 88) | [`FunctionDeclaration > BlockStatement CallExpression[callee.name=signal...

FILE: modules/eslint-plugin/src/rules/signals/with-state-no-arrays-at-root-level.ts
  type MessageIds (line 8) | type MessageIds = typeof messageId;
  type Options (line 9) | type Options = readonly [];
  constant NON_RECORD_TYPES (line 11) | const NON_RECORD_TYPES = [
  method [`CallExpression[callee.name=withState]`] (line 44) | [`CallExpression[callee.name=withState]`](node: TSESTree.CallExpression) {

FILE: modules/eslint-plugin/src/rules/store/avoid-combining-selectors.ts
  type MessageIds (line 13) | type MessageIds = typeof messageId;
  type Options (line 14) | type Options = readonly [];
  method [`CallExpression[callee.name='combineLatest'] ${pipeableOrStoreSelect} ~ ${pipeableOrStoreSelect}`] (line 46) | [`CallExpression[callee.name='combineLatest'] ${pipeableOrStoreSelect} ~...
  method [`CallExpression[callee.name='combineLatest']:exit`] (line 51) | [`CallExpression[callee.name='combineLatest']:exit`]() {

FILE: modules/eslint-plugin/src/rules/store/avoid-dispatching-multiple-actions-sequentially.ts
  type MessageIds (line 8) | type MessageIds = typeof messageId;
  type Options (line 9) | type Options = readonly [];
  method [`BlockStatement > ExpressionStatement > ${dispatchExpression(
        storeNames
      )}`] (line 37) | [`BlockStatement > ExpressionStatement > ${dispatchExpression(
  method 'BlockStatement:exit' (line 42) | 'BlockStatement:exit'() {

FILE: modules/eslint-plugin/src/rules/store/avoid-duplicate-actions-in-reducer.ts
  type MessageIds (line 10) | type MessageIds =
  type Options (line 13) | type Options = readonly [];
  type Action (line 14) | type Action = TSESTree.Identifier & { parent: TSESTree.CallExpression };
  method [`${createReducer} > CallExpression[callee.name='on'][arguments.0.type='Identifier']`] (line 37) | [`${createReducer} > CallExpression[callee.name='on'][arguments.0.type='...
  method [`${createReducer}:exit`] (line 45) | [`${createReducer}:exit`]() {

FILE: modules/eslint-plugin/src/rules/store/avoid-mapping-selectors.ts
  type MessageIds (line 15) | type MessageIds = typeof messageId;
  type Options (line 16) | type Options = readonly [];
  function isInCreateEffect (line 47) | function isInCreateEffect(node: TSESTree.CallExpression) {
  method [`${selectorQuery} > CallExpression:has(ThisExpression)`] (line 66) | [`${selectorQuery} > CallExpression:has(ThisExpression)`](
  method [`${selectorQuery}[callee.property.name=pipe]:exit`] (line 71) | [`${selectorQuery}[callee.property.name=pipe]:exit`](

FILE: modules/eslint-plugin/src/rules/store/good-action-hygiene.ts
  type MessageIds (line 8) | type MessageIds = typeof messageId;
  type Options (line 9) | type Options = readonly [];
  method [actionCreatorWithLiteral] (line 30) | [actionCreatorWithLiteral]({

FILE: modules/eslint-plugin/src/rules/store/no-multiple-global-stores.ts
  type MessageIds (line 13) | type MessageIds =
  type Options (line 16) | type Options = readonly [];
  method Program (line 36) | Program() {
  function getNodeToReport (line 64) | function getNodeToReport(node: TSESTree.Node) {
  function getFixes (line 68) | function getFixes(
  type Identifiers (line 78) | type Identifiers = NonNullable<ReturnType<typeof getNgRxStores>['identif...
  function groupBy (line 80) | function groupBy(identifiers: Identifiers): Map<TSESTree.Node, Identifie...

FILE: modules/eslint-plugin/src/rules/store/no-reducer-in-key-names.ts
  type MessageIds (line 14) | type MessageIds =
  type Options (line 17) | type Options = readonly [];
  method [`:matches(${storeActionReducerMap}, ${actionReducerMap}) > ${metadataProperty(
        /reducer/i
      )} > .key`] (line 39) | [`:matches(${storeActionReducerMap}, ${actionReducerMap}) > ${metadataPr...

FILE: modules/eslint-plugin/src/rules/store/no-store-subscription.ts
  type MessageIds (line 8) | type MessageIds = typeof messageId;
  type Options (line 9) | type Options = readonly [];
  method [`${namedCallableExpression(
        storeNames
      )} > MemberExpression > Identifier[name='subscribe']`] (line 36) | [`${namedCallableExpression(

FILE: modules/eslint-plugin/src/rules/store/no-typed-global-store.ts
  type MessageIds (line 15) | type MessageIds = typeof noTypedStore | typeof noTypedStoreSuggest;
  type Options (line 16) | type Options = readonly [];
  method Program (line 37) | Program() {
  function report (line 71) | function report(typeArguments: TSESTree.TSTypeParameterInstantiation) {

FILE: modules/eslint-plugin/src/rules/store/on-function-explicit-return-type.ts
  type MessageIds (line 11) | type MessageIds =
  type Options (line 14) | type Options = readonly [];
  method [onFunctionWithoutType] (line 36) | [onFunctionWithoutType](node: TSESTree.ArrowFunctionExpression) {
  function getFixes (line 52) | function getFixes(

FILE: modules/eslint-plugin/src/rules/store/prefer-action-creator-in-dispatch.ts
  type MessageIds (line 15) | type MessageIds = typeof messageId;
  type Options (line 16) | type Options = readonly [];
  method [`${dispatchExpression(
        storeNames
      )} :matches(NewExpression, :not(NewExpression) > ObjectExpression)`] (line 43) | [`${dispatchExpression(

FILE: modules/eslint-plugin/src/rules/store/prefer-action-creator.ts
  type MessageIds (line 7) | type MessageIds = typeof messageId;
  type Options (line 8) | type Options = readonly [];
  method [`ClassDeclaration:has(TSClassImplements:matches([expression.name='Action'], [expression.property.name='Action'])):has(PropertyDefinition[key.name='type'])`] (line 27) | [`ClassDeclaration:has(TSClassImplements:matches([expression.name='Actio...

FILE: modules/eslint-plugin/src/rules/store/prefer-inline-action-props.ts
  type MessageIds (line 9) | type MessageIds =
  type Options (line 12) | type Options = readonly [];
  method [actionCreatorPropsComputed] (line 34) | [actionCreatorPropsComputed](node: TSESTree.TSTypeReference) {

FILE: modules/eslint-plugin/src/rules/store/prefer-one-generic-in-create-for-feature-selector.ts
  type MessageIds (line 10) | type MessageIds =
  type Options (line 13) | type Options = readonly [];
  method [`CallExpression[callee.name='createFeatureSelector'] > TSTypeParameterInstantiation[params.length>1]`] (line 35) | [`CallExpression[callee.name='createFeatureSelector'] > TSTypeParameterI...

FILE: modules/eslint-plugin/src/rules/store/prefer-selector-in-select.ts
  type MessageIds (line 16) | type MessageIds = typeof messageId;
  type Options (line 17) | type Options = readonly [];
  method [`${pipeableSelect(storeNames)}, ${selectExpression(storeNames)}`] (line 44) | [`${pipeableSelect(storeNames)}, ${selectExpression(storeNames)}`](

FILE: modules/eslint-plugin/src/rules/store/prefix-selectors-with-select.ts
  type MessageIds (line 10) | type MessageIds =
  type Options (line 13) | type Options = readonly [];
  function reportIfInvalid (line 34) | function reportIfInvalid(name: string, node: TSESTree.Identifier) {
  function isSelectorFactoryCall (line 98) | function isSelectorFactoryCall(node: TSESTree.CallExpression): boolean {
  function checkFunctionBody (line 110) | function checkFunctionBody(
  method VariableDeclarator (line 134) | VariableDeclarator(node: TSESTree.VariableDeclarator) {
  function getSuggestedName (line 195) | function getSuggestedName(name: string): string {

FILE: modules/eslint-plugin/src/rules/store/select-style.ts
  type SelectStyle (line 21) | const enum SelectStyle {
  type MessageIds (line 26) | type MessageIds = `${SelectStyle}`;
  type Options (line 27) | type Options = readonly [MessageIds];
  type MemberExpressionWithProperty (line 28) | type MemberExpressionWithProperty = Omit<
  type CallExpression (line 34) | type CallExpression = Omit<TSESTree.CallExpression, 'parent'> & {
  method [selectExpression(storeNames)] (line 77) | [selectExpression(storeNames)](node: CallExpression) {
  method [`Program:has(${pipeableSelect(
        storeNames
      )}) ImportDeclaration[source.value='${
        NGRX_MODULE_PATHS.store
      }'] > ImportSpecifier[imported.name='select']`] (line 88) | [`Program:has(${pipeableSelect(
  function getMethodToOperatorFixes (line 119) | function getMethodToOperatorFixes(
  function getOperatorToMethodFixes (line 142) | function getOperatorToMethodFixes(

FILE: modules/eslint-plugin/src/rules/store/use-consistent-global-store-name.ts
  type MessageIds (line 9) | type MessageIds =
  type Options (line 12) | type Options = readonly [string];
  method Program (line 37) | Program() {

FILE: modules/eslint-plugin/src/utils/helper-functions/guards.ts
  function isIdentifierOrMemberExpression (line 54) | function isIdentifierOrMemberExpression(
  function isTypeReference (line 60) | function isTypeReference(type: ts.Type): type is ts.TypeReference {
  function equalTo (line 64) | function equalTo(one: RegExp | string, other: string) {
  function isCallExpressionWith (line 68) | function isCallExpressionWith(

FILE: modules/eslint-plugin/src/utils/helper-functions/ngrx-modules.ts
  constant NGRX_MODULE_PATHS (line 1) | const NGRX_MODULE_PATHS = {
  type NGRX_MODULE (line 9) | type NGRX_MODULE = keyof typeof NGRX_MODULE_PATHS;

FILE: modules/eslint-plugin/src/utils/helper-functions/utils.ts
  type ConstructorFunctionExpression (line 24) | type ConstructorFunctionExpression = TSESTree.FunctionExpression & {
  type InjectedParameter (line 27) | type InjectedParameter = TSESTree.Identifier & {
  type InjectedParameterWithSourceCode (line 36) | type InjectedParameterWithSourceCode = Readonly<{
  function getNearestUpperNodeFrom (line 41) | function getNearestUpperNodeFrom<T extends TSESTree.Node>(
  function getImportDeclarationSpecifier (line 56) | function getImportDeclarationSpecifier(
  function getImportDeclarations (line 79) | function getImportDeclarations(
  function getCorrespondentImportClause (line 94) | function getCorrespondentImportClause(
  function getImportAddFix (line 116) | function getImportAddFix({
  function getImportRemoveFix (line 160) | function getImportRemoveFix(
  function getNodeToCommaRemoveFix (line 205) | function getNodeToCommaRemoveFix(
  function getInterfaceName (line 218) | function getInterfaceName(
  function getInterfaces (line 230) | function getInterfaces({
  function getInterface (line 241) | function getInterface(
  function getImplementsSchemaFixer (line 250) | function getImplementsSchemaFixer(
  function getLast (line 262) | function getLast<T extends readonly unknown[]>(items: T): T[number] {
  function getDecoratorName (line 266) | function getDecoratorName({
  function getRawText (line 278) | function getRawText(node: TSESTree.Node): string | null {
  function capitalize (line 306) | function capitalize<T extends string>(text: T): Capitalize<T> {
  function getInjectedParametersWithSourceCode (line 310) | function getInjectedParametersWithSourceCode(
  function getNgRxEffectActions (line 372) | function getNgRxEffectActions(
  function getNgRxComponentStores (line 382) | function getNgRxComponentStores(
  function getNgRxStores (line 392) | function getNgRxStores(
  function escapeText (line 403) | function escapeText(text: string): string {
  function asPattern (line 407) | function asPattern(identifiers: readonly InjectedParameter[]): RegExp {
  function getNgrxComponentStoreNames (line 412) | function getNgrxComponentStoreNames(

FILE: modules/eslint-plugin/src/utils/selectors/index.ts
  function metadataProperty (line 22) | function metadataProperty(key: RegExp | string): string {

FILE: modules/operators/migrations/20_0_0-rc_0-tap-response/index.ts
  function migrateTapResponse (line 11) | function migrateTapResponse(): Rule {

FILE: modules/operators/schematics-core/utility/ast-utils.ts
  function findNodes (line 28) | function findNodes(
  function getSourceNodes (line 65) | function getSourceNodes(sourceFile: ts.SourceFile): ts.Node[] {
  function nodesByPosition (line 87) | function nodesByPosition(first: ts.Node, second: ts.Node): number {
  function insertAfterLastOccurrence (line 104) | function insertAfterLastOccurrence(
  function getContentOfKeyLiteral (line 128) | function getContentOfKeyLiteral(
  function _angularImportsFromNode (line 141) | function _angularImportsFromNode(
  function getDecoratorMetadata (line 193) | function getDecoratorMetadata(
  function _addSymbolToNgModuleMetadata (line 261) | function _addSymbolToNgModuleMetadata(
  function _addSymbolToComponentMetadata (line 458) | function _addSymbolToComponentMetadata(
  function addDeclarationToModule (line 614) | function addDeclarationToModule(
  function addImportToModule (line 633) | function addImportToModule(
  function addProviderToModule (line 651) | function addProviderToModule(
  function addProviderToComponent (line 669) | function addProviderToComponent(
  function addExportToModule (line 687) | function addExportToModule(
  function addBootstrapToModule (line 705) | function addBootstrapToModule(
  function insertImport (line 730) | function insertImport(
  function replaceImport (line 820) | function replaceImport(
  function containsProperty (line 907) | function containsProperty(

FILE: modules/operators/schematics-core/utility/change.ts
  type Host (line 13) | interface Host {
  type Change (line 18) | interface Change {
  class NoopChange (line 36) | class NoopChange implements Change {
    method apply (line 40) | apply() {
  class InsertChange (line 48) | class InsertChange implements Change {
    method constructor (line 52) | constructor(
    method apply (line 67) | apply(host: Host) {
  class RemoveChange (line 80) | class RemoveChange implements Change {
    method constructor (line 84) | constructor(
    method apply (line 96) | apply(host: Host): Promise<void> {
  class ReplaceChange (line 110) | class ReplaceChange implements Change {
    method constructor (line 114) | constructor(
    method apply (line 127) | apply(host: Host): Promise<void> {
  function createReplaceChange (line 145) | function createReplaceChange(
  function createRemoveChange (line 159) | function createRemoveChange(
  function createChangeRecorder (line 168) | function createChangeRecorder(
  function commitChanges (line 187) | function commitChanges(tree: Tree, path: string, changes: Change[]) {

FILE: modules/operators/schematics-core/utility/config.ts
  type AppConfig (line 5) | interface AppConfig {
  function getWorkspacePath (line 131) | function getWorkspacePath(host: Tree): string {
  function getWorkspace (line 138) | function getWorkspace(host: Tree) {

FILE: modules/operators/schematics-core/utility/find-component.ts
  type ComponentOptions (line 20) | interface ComponentOptions {
  function findComponentFromOptions (line 31) | function findComponentFromOptions(
  function findComponent (line 74) | function findComponent(host: Tree, generateDir: string): Path {
  function buildRelativePath (line 103) | function buildRelativePath(from: string, to: string): string {
  function parsePath (line 128) | function parsePath(path: string) {
  function convertToTypeScriptFileName (line 143) | function convertToTypeScriptFileName(filename: string | undefined) {

FILE: modules/operators/schematics-core/utility/find-module.ts
  type ModuleOptions (line 20) | interface ModuleOptions {
  function findModuleFromOptions (line 31) | function findModuleFromOptions(
  function findModule (line 70) | function findModule(host: Tree, generateDir: string): Path {
  function buildRelativePath (line 102) | function buildRelativePath(from: string, to: string): string {
  function parsePath (line 127) | function parsePath(path: string) {
  function convertToTypeScriptFileName (line 142) | function convertToTypeScriptFileName(filename: string | undefined) {

FILE: modules/operators/schematics-core/utility/json-utilts.ts
  function findPropertyInAstObject (line 2) | function findPropertyInAstObject(

FILE: modules/operators/schematics-core/utility/ngrx-utils.ts
  function addReducerToState (line 9) | function addReducerToState(options: any): Rule {
  function addReducerToStateInterface (line 78) | function addReducerToStateInterface(
  function addReducerToActionReducerMap (line 128) | function addReducerToActionReducerMap(
  function addReducerImportToNgModule (line 195) | function addReducerImportToNgModule(options: any): Rule {
  function omit (line 263) | function omit<T extends { [key: string]: any }>(
  function getPrefix (line 272) | function getPrefix(options: { prefix?: string }) {

FILE: modules/operators/schematics-core/utility/package.ts
  function addPackageToPackageJson (line 6) | function addPackageToPackageJson(

FILE: modules/operators/schematics-core/utility/parse-name.ts
  type Location (line 3) | interface Location {
  function parseName (line 8) | function parseName(path: string, name: string): Location {

FILE: modules/operators/schematics-core/utility/project.ts
  type WorkspaceProject (line 5) | interface WorkspaceProject {
  function getProject (line 13) | function getProject(
  function getProjectPath (line 31) | function getProjectPath(
  function isLib (line 51) | function isLib(
  function getProjectMainFile (line 60) | function getProjectMainFile(

FILE: modules/operators/schematics-core/utility/standalone.ts
  type ResolvedAppConfig (line 13) | interface ResolvedAppConfig {
  function callsProvidersFunction (line 29) | function callsProvidersFunction(
  function addFunctionalProvidersToStandaloneBootstrap (line 62) | function addFunctionalProvidersToStandaloneBootstrap(
  function findBootstrapApplicationCall (line 144) | function findBootstrapApplicationCall(
  function findProvidersLiteral (line 177) | function findProvidersLiteral(
  function findAppConfig (line 200) | function findAppConfig(
  function resolveAppConfigFromIdentifier (line 226) | function resolveAppConfigFromIdentifier(
  function findAppConfigFromVariableName (line 286) | function findAppConfigFromVariableName(
  function findImportLocalName (line 314) | function findImportLocalName(
  function createSourceFile (line 351) | function createSourceFile(tree: Tree, filePath: string): ts.SourceFile {
  function addNewAppConfigToCall (line 366) | function addNewAppConfigToCall(
  function addElementToArray (line 404) | function addElementToArray(
  function addProvidersToObjectLiteral (line 428) | function addProvidersToObjectLiteral(
  function isMergeAppConfigCall (line 454) | function isMergeAppConfigCall(node: ts.Node): node is ts.CallExpression {

FILE: modules/operators/schematics-core/utility/strings.ts
  constant STRING_DASHERIZE_REGEXP (line 8) | const STRING_DASHERIZE_REGEXP = /[ _]/g;
  constant STRING_DECAMELIZE_REGEXP (line 9) | const STRING_DECAMELIZE_REGEXP = /([a-z\d])([A-Z])/g;
  constant STRING_CAMELIZE_REGEXP (line 10) | const STRING_CAMELIZE_REGEXP = /(-|_|\.|\s)+(.)?/g;
  constant STRING_UNDERSCORE_REGEXP_1 (line 11) | const STRING_UNDERSCORE_REGEXP_1 = /([a-z\d])([A-Z]+)/g;
  constant STRING_UNDERSCORE_REGEXP_2 (line 12) | const STRING_UNDERSCORE_REGEXP_2 = /-|\s+/g;
  function decamelize (line 24) | function decamelize(str: string): string {
  function dasherize (line 38) | function dasherize(str?: string): string {
  function camelize (line 53) | function camelize(str: string): string {
  function classify (line 74) | function classify(str: string): string {
  function underscore (line 92) | function underscore(str: string): string {
  function capitalize (line 109) | function capitalize(str: string): string {
  function pluralize (line 124) | function pluralize(str: string): string {
  function group (line 132) | function group(name: string, group: string | undefined) {
  function featurePath (line 136) | function featurePath(

FILE: modules/operators/schematics-core/utility/update.ts
  function updatePackage (line 8) | function updatePackage(name: string): Rule {
  function match (line 41) | function match(value: string, test: string) {

FILE: modules/operators/schematics-core/utility/visitors.ts
  function visitTSSourceFiles (line 5) | function visitTSSourceFiles<Result = void>(
  function visitTemplates (line 21) | function visitTemplates(
  function visitNgModuleImports (line 91) | function visitNgModuleImports(
  function visitNgModuleExports (line 101) | function visitNgModuleExports(
  function visitNgModuleProperty (line 111) | function visitNgModuleProperty(
  function visitComponents (line 135) | function visitComponents(
  function visitNgModules (line 145) | function visitNgModules(
  function visitDecorator (line 155) | function visitDecorator(
  function visitImportDeclaration (line 201) | function visitImportDeclaration(
  function visitImportSpecifier (line 220) | function visitImportSpecifier(
  function visitTypeReference (line 242) | function visitTypeReference(
  function visitTypeLiteral (line 255) | function visitTypeLiteral(
  function visitCallExpression (line 268) | function visitCallExpression(

FILE: modules/operators/schematics/ng-add/index.ts
  function addModuleToPackageJson (line 15) | function addModuleToPackageJson() {

FILE: modules/operators/schematics/ng-add/schema.ts
  type Schema (line 1) | interface Schema {

FILE: modules/operators/spec/map-response.spec.ts
  function producesError (line 41) | function producesError() {

FILE: modules/operators/spec/tap-response.spec.ts
  function producesError (line 30) | function producesError() {

FILE: modules/operators/spec/types/tap-response.types.spec.ts
  function testWith (line 12) | function testWith(expectSnippet: (code: string) => Expect): void {

FILE: modules/operators/src/concat_latest_from.ts
  function concatLatestFrom (line 46) | function concatLatestFrom<

FILE: modules/operators/src/map-response.ts
  type MapResponseObserver (line 4) | type MapResponseObserver<T, E, R1, R2> = {
  function mapResponse (line 35) | function mapResponse<T, E, R1, R2>(

FILE: modules/operators/src/tap-response.ts
  type TapResponseObserver (line 4) | type TapResponseObserver<T, E> = {
  function tapResponse (line 49) | function tapResponse<T, E>(

FILE: modules/router-store/data-persistence/src/operators.ts
  type PessimisticUpdateOpts (line 21) | interface PessimisticUpdateOpts<T extends Array<unknown>, A> {
  type OptimisticUpdateOpts (line 26) | interface OptimisticUpdateOpts<T extends Array<unknown>, A> {
  type FetchOpts (line 31) | interface FetchOpts<T extends Array<unknown>, A> {
  type HandleNavigationOpts (line 37) | interface HandleNavigationOpts<T extends Array<unknown>> {
  type ActionOrActionWithStates (line 45) | type ActionOrActionWithStates<T extends Array<unknown>, A> =
  type ActionOrActionWithState (line 48) | type ActionOrActionWithState<T, A> = ActionOrActionWithStates<[T], A>;
  type ActionStatesStream (line 49) | type ActionStatesStream<T extends Array<unknown>, A> = Observable<
  type ActionStateStream (line 52) | type ActionStateStream<T, A> = Observable<
  function pessimisticUpdate (line 113) | function pessimisticUpdate<T extends Array<unknown>, A extends Action>(
  function optimisticUpdate (line 184) | function optimisticUpdate<T extends Array<unknown>, A extends Action>(
  function fetch (line 275) | function fetch<T extends Array<unknown>, A extends Action>(
  function navigation (line 352) | function navigation<T extends Array<unknown>, A extends Action>(
  function isStateSnapshot (line 380) | function isStateSnapshot(
  function runWithErrorHandling (line 386) | function runWithErrorHandling<T extends Array<unknown>, A, R>(
  function mapActionAndState (line 404) | function mapActionAndState<T extends Array<unknown>, A>() {
  function normalizeActionAndState (line 416) | function normalizeActionAndState<T extends Array<unknown>, A>(
  function findSnapshot (line 431) | function findSnapshot(
  function wrapIntoObservable (line 447) | function wrapIntoObservable<O>(obj: Observable<O> | O | void): Observabl...

FILE: modules/router-store/migrations/14_0_0/index.ts
  function renameSerializers (line 14) | function renameSerializers() {
  function findSerializerImportDeclarations (line 37) | function findSerializerImportDeclarations(
  function findSerializerReplacements (line 83) | function findSerializerReplacements(sourceFile: ts.SourceFile) {

FILE: modules/router-store/migrations/15_2_0/index.ts
  function renameSelector (line 14) | function renameSelector() {
  function replaceNamedImports (line 34) | function replaceNamedImports(
  function replaceNamespaceImports (line 54) | function replaceNamespaceImports(
  function tryToAddReplacement (line 107) | function tryToAddReplacement(

FILE: modules/router-store/migrations/8_0_0/index.ts
  function updateRouterStoreImport (line 10) | function updateRouterStoreImport(): Rule {

FILE: modules/router-store/migrations/9_0_0/index.spec.ts
  function test (line 131) | async function test(input: string, expected: string) {

FILE: modules/router-store/migrations/9_0_0/index.ts
  function addDefaultSerializer (line 18) | function addDefaultSerializer(): Rule {

FILE: modules/router-store/schematics-core/utility/ast-utils.ts
  function findNodes (line 28) | function findNodes(
  function getSourceNodes (line 65) | function getSourceNodes(sourceFile: ts.SourceFile): ts.Node[] {
  function nodesByPosition (line 87) | function nodesByPosition(first: ts.Node, second: ts.Node): number {
  function insertAfterLastOccurrence (line 104) | function insertAfterLastOccurrence(
  function getContentOfKeyLiteral (line 128) | function getContentOfKeyLiteral(
  function _angularImportsFromNode (line 141) | function _angularImportsFromNode(
  function getDecoratorMetadata (line 193) | function getDecoratorMetadata(
  function _addSymbolToNgModuleMetadata (line 261) | function _addSymbolToNgModuleMetadata(
  function _addSymbolToComponentMetadata (line 458) | function _addSymbolToComponentMetadata(
  function addDeclarationToModule (line 614) | function addDeclarationToModule(
  function addImportToModule (line 633) | function addImportToModule(
  function addProviderToModule (line 651) | function addProviderToModule(
  function addProviderToComponent (line 669) | function addProviderToComponent(
  function addExportToModule (line 687) | function addExportToModule(
  function addBootstrapToModule (line 705) | function addBootstrapToModule(
  function insertImport (line 730) | function insertImport(
  function replaceImport (line 820) | function replaceImport(
  function containsProperty (line 907) | function containsProperty(

FILE: modules/router-store/schematics-core/utility/change.ts
  type Host (line 13) | interface Host {
  type Change (line 18) | interface Change {
  class NoopChange (line 36) | class NoopChange implements Change {
    method apply (line 40) | apply() {
  class InsertChange (line 48) | class InsertChange implements Change {
    method constructor (line 52) | constructor(
    method apply (line 67) | apply(host: Host) {
  class RemoveChange (line 80) | class RemoveChange implements Change {
    method constructor (line 84) | constructor(
    method apply (line 96) | apply(host: Host): Promise<void> {
  class ReplaceChange (line 110) | class ReplaceChange implements Change {
    method constructor (line 114) | constructor(
    method apply (line 127) | apply(host: Host): Promise<void> {
  function createReplaceChange (line 145) | function createReplaceChange(
  function createRemoveChange (line 159) | function createRemoveChange(
  function createChangeRecorder (line 168) | function createChangeRecorder(
  function commitChanges (line 187) | function commitChanges(tree: Tree, path: string, changes: Change[]) {

FILE: modules/router-store/schematics-core/utility/config.ts
  type AppConfig (line 5) | interface AppConfig {
  function getWorkspacePath (line 131) | function getWorkspacePath(host: Tree): string {
  function getWorkspace (line 138) | function getWorkspace(host: Tree) {

FILE: modules/router-store/schematics-core/utility/find-component.ts
  type ComponentOptions (line 20) | interface ComponentOptions {
  function findComponentFromOptions (line 31) | function findComponentFromOptions(
  function findComponent (line 74) | function findComponent(host: Tree, generateDir: string): Path {
  function buildRelativePath (line 103) | function buildRelativePath(from: string, to: string): string {
  function parsePath (line 128) | function parsePath(path: string) {
  function convertToTypeScriptFileName (line 143) | function convertToTypeScriptFileName(filename: string | undefined) {

FILE: modules/router-store/schematics-core/utility/find-module.ts
  type ModuleOptions (line 20) | interface ModuleOptions {
  function findModuleFromOptions (line 31) | function findModuleFromOptions(
  function findModule (line 70) | function findModule(host: Tree, generateDir: string): Path {
  function buildRelativePath (line 102) | function buildRelativePath(from: string, to: string): string {
  function parsePath (line 127) | function parsePath(path: string) {
  function convertToTypeScriptFileName (line 142) | function convertToTypeScriptFileName(filename: string | undefined) {

FILE: modules/router-store/schematics-core/utility/json-utilts.ts
  function findPropertyInAstObject (line 2) | function findPropertyInAstObject(

FILE: modules/router-store/schematics-core/utility/ngrx-utils.ts
  function addReducerToState (line 9) | function addReducerToState(options: any): Rule {
  function addReducerToStateInterface (line 78) | function addReducerToStateInterface(
  function addReducerToActionReducerMap (line 128) | function addReducerToActionReducerMap(
  function addReducerImportToNgModule (line 195) | function addReducerImportToNgModule(options: any): Rule {
  function omit (line 263) | function omit<T extends { [key: string]: any }>(
  function getPrefix (line 272) | function getPrefix(options: { prefix?: string }) {

FILE: modules/router-store/schematics-core/utility/package.ts
  function addPackageToPackageJson (line 6) | function addPackageToPackageJson(

FILE: modules/router-store/schematics-core/utility/parse-name.ts
  type Location (line 3) | interface Location {
  function parseName (line 8) | function parseName(path: string, name: string): Location {

FILE: modules/router-store/schematics-core/utility/project.ts
  type WorkspaceProject (line 5) | interface WorkspaceProject {
  function getProject (line 13) | function getProject(
  function getProjectPath (line 31) | function getProjectPath(
  function isLib (line 51) | function isLib(
  function getProjectMainFile (line 60) | function getProjectMainFile(

FILE: modules/router-store/schematics-core/utility/standalone.ts
  type ResolvedAppConfig (line 13) | interface ResolvedAppConfig {
  function callsProvidersFunction (line 29) | function callsProvidersFunction(
  function addFunctionalProvidersToStandaloneBootstrap (line 62) | function addFunctionalProvidersToStandaloneBootstrap(
  function findBootstrapApplicationCall (line 144) | function findBootstrapApplicationCall(
  function findProvidersLiteral (line 177) | function findProvidersLiteral(
  function findAppConfig (line 200) | function findAppConfig(
  function resolveAppConfigFromIdentifier (line 226) | function resolveAppConfigFromIdentifier(
  function findAppConfigFromVariableName (line 286) | function findAppConfigFromVariableName(
  function findImportLocalName (line 314) | function findImportLocalName(
  function createSourceFile (line 351) | function createSourceFile(tree: Tree, filePath: string): ts.SourceFile {
  function addNewAppConfigToCall (line 366) | function addNewAppConfigToCall(
  function addElementToArray (line 404) | function addElementToArray(
  function addProvidersToObjectLiteral (line 428) | function addProvidersToObjectLiteral(
  function isMergeAppConfigCall (line 454) | function isMergeAppConfigCall(node: ts.Node): node is ts.CallExpression {

FILE: modules/router-store/schematics-core/utility/strings.ts
  constant STRING_DASHERIZE_REGEXP (line 8) | const STRING_DASHERIZE_REGEXP = /[ _]/g;
  constant STRING_DECAMELIZE_REGEXP (line 9) | const STRING_DECAMELIZE_REGEXP = /([a-z\d])([A-Z])/g;
  constant STRING_CAMELIZE_REGEXP (line 10) | const STRING_CAMELIZE_REGEXP = /(-|_|\.|\s)+(.)?/g;
  constant STRING_UNDERSCORE_REGEXP_1 (line 11) | const STRING_UNDERSCORE_REGEXP_1 = /([a-z\d])([A-Z]+)/g;
  constant STRING_UNDERSCORE_REGEXP_2 (line 12) | const STRING_UNDERSCORE_REGEXP_2 = /-|\s+/g;
  function decamelize (line 24) | function decamelize(str: string): string {
  function dasherize (line 38) | function dasherize(str?: string): string {
  function camelize (line 53) | function camelize(str: string): string {
  function classify (line 74) | function classify(str: string): string {
  function underscore (line 92) | function underscore(str: string): string {
  function capitalize (line 109) | function capitalize(str: string): string {
  function pluralize (line 124) | function pluralize(str: string): string {
  function group (line 132) | function group(name: string, group: string | undefined) {
  function featurePath (line 136) | function featurePath(

FILE: modules/router-store/schematics-core/utility/update.ts
  function updatePackage (line 8) | function updatePackage(name: string): Rule {
  function match (line 41) | function match(value: string, test: string) {

FILE: modules/router-store/schematics-core/utility/visitors.ts
  function visitTSSourceFiles (line 5) | function visitTSSourceFiles<Result = void>(
  function visitTemplates (line 21) | function visitTemplates(
  function visitNgModuleImports (line 91) | function visitNgModuleImports(
  function visitNgModuleExports (line 101) | function visitNgModuleExports(
  function visitNgModuleProperty (line 111) | function visitNgModuleProperty(
  function visitComponents (line 135) | function visitComponents(
  function visitNgModules (line 145) | function visitNgModules(
  function visitDecorator (line 155) | function visitDecorator(
  function visitImportDeclaration (line 201) | function visitImportDeclaration(
  function visitImportSpecifier (line 220) | function visitImportSpecifier(
  function visitTypeReference (line 242) | function visitTypeReference(
  function visitTypeLiteral (line 255) | function visitTypeLiteral(
  function visitCallExpression (line 268) | function visitCallExpression(

FILE: modules/router-store/schematics/ng-add/index.ts
  function addImportToNgModule (line 30) | function addImportToNgModule(options: RouterStoreOptions): Rule {
  function addNgRxRouterStoreToPackageJson (line 84) | function addNgRxRouterStoreToPackageJson() {
  function addStandaloneConfig (line 97) | function addStandaloneConfig(options: RouterStoreOptions): Rule {

FILE: modules/router-store/schematics/ng-add/schema.ts
  type Schema (line 1) | interface Schema {

FILE: modules/router-store/spec/integration.spec.ts
  class SilentErrorHandler (line 443) | class SilentErrorHandler implements ErrorHandler {
    method handleError (line 444) | handleError(error: any) {
  function shouldSupportCustomSerializer (line 666) | function shouldSupportCustomSerializer(
  function waitForNavigation (line 1038) | function waitForNavigation(router: Router, event: any = NavigationEnd) {
  function logOfRouterAndActionsAndStore (line 1054) | function logOfRouterAndActionsAndStore(

FILE: modules/router-store/spec/router_selectors.spec.ts
  type State (line 126) | interface State {
  type State (line 175) | interface State {

FILE: modules/router-store/spec/router_store_module.spec.ts
  type State (line 25) | interface State {
  type State (line 83) | interface State {
  function setup (line 136) | function setup(routerState?: RouterState, serializer?: any) {

FILE: modules/router-store/spec/serializers.spec.ts
  function createExpectedSnapshot (line 66) | function createExpectedSnapshot(prefix = 'root') {
  function createExpectedSnapshot (line 139) | function createExpectedSnapshot(prefix = 'root') {
  function createRouteSnapshot (line 167) | function createRouteSnapshot(prefix = 'root'): any {

FILE: modules/router-store/spec/utils.ts
  function createTestModule (line 10) | function createTestModule(

FILE: modules/router-store/src/actions.ts
  constant ROUTER_REQUEST (line 16) | const ROUTER_REQUEST = '@ngrx/router-store/request';
  type RouterRequestPayload (line 21) | type RouterRequestPayload<
  type RouterRequestAction (line 31) | type RouterRequestAction<
  constant ROUTER_NAVIGATION (line 45) | const ROUTER_NAVIGATION = '@ngrx/router-store/navigation';
  type RouterNavigationPayload (line 50) | type RouterNavigationPayload<
  type RouterNavigationAction (line 60) | type RouterNavigationAction<
  constant ROUTER_CANCEL (line 75) | const ROUTER_CANCEL = '@ngrx/router-store/cancel';
  type RouterCancelPayload (line 80) | type RouterCancelPayload<
  type RouterCancelAction (line 92) | type RouterCancelAction<
  constant ROUTER_ERROR (line 108) | const ROUTER_ERROR = '@ngrx/router-store/error';
  type RouterErrorPayload (line 113) | type RouterErrorPayload<
  type RouterErrorAction (line 125) | type RouterErrorAction<
  constant ROUTER_NAVIGATED (line 141) | const ROUTER_NAVIGATED = '@ngrx/router-store/navigated';
  type RouterNavigatedPayload (line 146) | type RouterNavigatedPayload<
  type RouterNavigatedAction (line 156) | type RouterNavigatedAction<
  type RouterAction (line 171) | type RouterAction<

FILE: modules/router-store/src/models.ts
  type RouterStateSelectors (line 4) | type RouterStateSelectors<V> = {

FILE: modules/router-store/src/provide_router_store.ts
  function provideRouterStore (line 39) | function provideRouterStore<

FILE: modules/router-store/src/reducer.ts
  type RouterReducerState (line 11) | type RouterReducerState<
  function routerReducer (line 18) | function routerReducer<

FILE: modules/router-store/src/router_selectors.ts
  function createRouterSelector (line 10) | function createRouterSelector<
  function getRouterSelectors (line 16) | function getRouterSelectors<V extends Record<string, any>>(

FILE: modules/router-store/src/router_store_config.ts
  type StateKeyOrSelector (line 11) | type StateKeyOrSelector<
  type NavigationActionTiming (line 15) | enum NavigationActionTiming {
  constant DEFAULT_ROUTER_FEATURENAME (line 19) | const DEFAULT_ROUTER_FEATURENAME = 'router';
  constant ROUTER_CONFIG (line 24) | const ROUTER_CONFIG = new InjectionToken(
  type RouterState (line 32) | enum RouterState {
  function _createRouterConfig (line 37) | function _createRouterConfig(
  type StoreRouterConfig (line 48) | interface StoreRouterConfig<

FILE: modules/router-store/src/router_store_module.ts
  class StoreRouterConnectingModule (line 50) | class StoreRouterConnectingModule {
    method forRoot (line 51) | static forRoot<

FILE: modules/router-store/src/serializers/base.ts
  type BaseRouterStoreState (line 8) | interface BaseRouterStoreState {

FILE: modules/router-store/src/serializers/full_serializer.ts
  type SerializedRouterStateSnapshot (line 4) | interface SerializedRouterStateSnapshot extends BaseRouterStoreState {
  class FullRouterStateSerializer (line 9) | class FullRouterStateSerializer
    method serialize (line 12) | serialize(routerState: RouterStateSnapshot): SerializedRouterStateSnap...
    method serializeRoute (line 19) | private serializeRoute(

FILE: modules/router-store/src/serializers/minimal_serializer.ts
  type MinimalActivatedRouteSnapshot (line 4) | interface MinimalActivatedRouteSnapshot {
  type MinimalRouterStateSnapshot (line 17) | interface MinimalRouterStateSnapshot extends BaseRouterStoreState {
  class MinimalRouterStateSerializer (line 22) | class MinimalRouterStateSerializer
    method serialize (line 25) | serialize(routerState: RouterStateSnapshot): MinimalRouterStateSnapshot {
    method serializeRoute (line 32) | private serializeRoute(

FILE: modules/router-store/src/store_router_connecting.service.ts
  type RouterTrigger (line 41) | enum RouterTrigger {
  type StoreRouterActionPayload (line 47) | interface StoreRouterActionPayload {
  class StoreRouterConnectingService (line 58) | class StoreRouterConnectingService {
    method constructor (line 65) | constructor(
    method setUpStoreStateListener (line 96) | private setUpStoreStateListener(): void {
    method navigateIfNeeded (line 104) | private navigateIfNeeded(
    method setUpRouterEventsListener (line 128) | private setUpRouterEventsListener(): void {
    method dispatchRouterRequest (line 171) | private dispatchRouterRequest(event: NavigationStart): void {
    method dispatchRouterNavigation (line 175) | private dispatchRouterNavigation(
    method dispatchRouterCancel (line 192) | private dispatchRouterCancel(event: NavigationCancel): void {
    method dispatchRouterError (line 199) | private dispatchRouterError(event: NavigationError): void {
    method dispatchRouterNavigated (line 206) | private dispatchRouterNavigated(event: NavigationEnd): void {
    method dispatchRouterAction (line 213) | private dispatchRouterAction(
    method reset (line 241) | private reset() {
  function isSameUrl (line 251) | function isSameUrl(first: string, second: string): boolean {
  function stripTrailingSlash (line 255) | function stripTrailingSlash(text: string): string {

FILE: modules/schematics-core/testing/create-app-module.ts
  function createAppModule (line 3) | function createAppModule(
  function createAppModuleWithEffects (line 31) | function createAppModuleWithEffects(

FILE: modules/schematics-core/testing/create-package.ts
  function createPackageJson (line 9) | function createPackageJson(

FILE: modules/schematics-core/testing/create-reducers.ts
  function createReducers (line 3) | function createReducers(

FILE: modules/schematics-core/testing/create-workspace.ts
  function getTestProjectPath (line 27) | function getTestProjectPath(
  function createWorkspace (line 34) | async function createWorkspace(

FILE: modules/schematics-core/utility/ast-utils.ts
  function findNodes (line 28) | function findNodes(
  function getSourceNodes (line 65) | function getSourceNodes(sourceFile: ts.SourceFile): ts.Node[] {
  function nodesByPosition (line 87) | function nodesByPosition(first: ts.Node, second: ts.Node): number {
  function insertAfterLastOccurrence (line 104) | function insertAfterLastOccurrence(
  function getContentOfKeyLiteral (line 128) | function getContentOfKeyLiteral(
  function _angularImportsFromNode (line 141) | function _angularImportsFromNode(
  function getDecoratorMetadata (line 193) | function getDecoratorMetadata(
  function _addSymbolToNgModuleMetadata (line 261) | function _addSymbolToNgModuleMetadata(
  function _addSymbolToComponentMetadata (line 458) | function _addSymbolToComponentMetadata(
  function addDeclarationToModule (line 614) | function addDeclarationToModule(
  function addImportToModule (line 633) | function addImportToModule(
  function addProviderToModule (line 651) | function addProviderToModule(
  function addProviderToComponent (line 669) | function addProviderToComponent(
  function addExportToModule (line 687) | function addExportToModule(
  function addBootstrapToModule (line 705) | function addBootstrapToModule(
  function insertImport (line 730) | function insertImport(
  function replaceImport (line 820) | function replaceImport(
  function containsProperty (line 907) | function containsProperty(

FILE: modules/schematics-core/utility/change.ts
  type Host (line 13) | interface Host {
  type Change (line 18) | interface Change {
  class NoopChange (line 36) | class NoopChange implements Change {
    method apply (line 40) | apply() {
  class InsertChange (line 48) | class InsertChange implements Change {
    method constructor (line 52) | constructor(
    method apply (line 67) | apply(host: Host) {
  class RemoveChange (line 80) | class RemoveChange implements Change {
    method constructor (line 84) | constructor(
    method apply (line 96) | apply(host: Host): Promise<void> {
  class ReplaceChange (line 110) | class ReplaceChange implements Change {
    method constructor (line 114) | constructor(
    method apply (line 127) | apply(host: Host): Promise<void> {
  function createReplaceChange (line 145) | function createReplaceChange(
  function createRemoveChange (line 159) | function createRemoveChange(
  function createChangeRecorder (line 168) | function createChangeRecorder(
  function commitChanges (line 187) | function commitChanges(tree: Tree, path: string, changes: Change[]) {

FILE: modules/schematics-core/utility/config.ts
  type AppConfig (line 5) | interface AppConfig {
  function getWorkspacePath (line 131) | function getWorkspacePath(host: Tree): string {
  function getWorkspace (line 138) | function getWorkspace(host: Tree) {

FILE: modules/schematics-core/utility/find-component.ts
  type ComponentOptions (line 20) | interface ComponentOptions {
  function findComponentFromOptions (line 31) | function findComponentFromOptions(
  function findComponent (line 74) | function findComponent(host: Tree, generateDir: string): Path {
  function buildRelativePath (line 103) | function buildRelativePath(from: string, to: string): string {
  function parsePath (line 128) | function parsePath(path: string) {
  function convertToTypeScriptFileName (line 143) | function convertToTypeScriptFileName(filename: string | undefined) {
Condensed preview — 1675 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,875K chars).
[
  {
    "path": ".agents/skills/writing-docs/SKILL.md",
    "chars": 1117,
    "preview": "---\nname: writing-docs\ndescription: Doc conventions (impersonal style, formatting, Vitest in examples, structure, linkin"
  },
  {
    "path": ".devcontainer/devcontainer.json",
    "chars": 1501,
    "preview": "// For format details, see https://aka.ms/devcontainer.json.\n{\n  \"name\": \"Platform\",\n  \"image\": \"mcr.microsoft.com/devco"
  },
  {
    "path": ".devcontainer/welcome-message.txt",
    "chars": 320,
    "preview": "👋 Welcome to \"Ngrx Platform\" in GitHub Codespaces!\n\n🛠️  Your environment is fully setup with all the required software.\n"
  },
  {
    "path": ".dockerignore",
    "chars": 85,
    "preview": "node_modules\nnpm-debug.log\nDockerfile*\ndocker-compose*\n.dockerignore\n.git\n.gitignore\n"
  },
  {
    "path": ".editorconfig",
    "chars": 247,
    "preview": "# Editor configuration, see https://editorconfig.org/\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size "
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 557,
    "preview": "# These are supported funding model platforms\n\ngithub: [ngrx, brandonroberts] # Replace with up to 4 GitHub Sponsors-ena"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug-report.yml",
    "chars": 2253,
    "preview": "name: Bug Report\ndescription: Report a bug or regression in functionality\n\nbody:\n  - type: markdown\n    attributes:\n    "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 223,
    "preview": "blank_issues_enabled: false\r\ncontact_links:\r\n  - name: Support Request\r\n    url: https://github.com/ngrx/platform/blob/m"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/documentation-report.yml",
    "chars": 943,
    "preview": "name: Documentation Report\ndescription: Report missing or inaccurate documentation\nlabels: ['Comp: Docs']\n\nbody:\n  - typ"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature-request.yml",
    "chars": 1439,
    "preview": "name: Feature Request\ndescription: Submit a Request For Consideration\n\nbody:\n  - type: markdown\n    attributes:\n      va"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 1107,
    "preview": "## PR Checklist\n\nPlease check if your PR fulfills the following requirements:\n\n- [ ] The commit message follows our guid"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 3488,
    "preview": "name: CI\n\non:\n  pull_request: {}\n\npermissions:\n  actions: read\n  contents: read\n\nconcurrency:\n  group: ${{ github.workfl"
  },
  {
    "path": ".github/workflows/main.yml",
    "chars": 4164,
    "preview": "name: main\n\non:\n  push:\n    branches:\n      - main\n\npermissions:\n  actions: read\n  contents: read\n\nconcurrency:\n  group:"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 2740,
    "preview": "name: Release\n\npermissions:\n  contents: read\n\non:\n  workflow_dispatch:\n    inputs:\n      release_version:\n        descri"
  },
  {
    "path": ".gitignore",
    "chars": 1271,
    "preview": "/.angular/cache\n# Logs\nlogs\n*.log\n.nyc\n.nyc_output\n.history\n\n# Runtime data\npids\n*.pid\n*.seed\n\n# Directory for instrumen"
  },
  {
    "path": ".husky/pre-commit",
    "chars": 69,
    "preview": "#!/usr/bin/env sh\n. \"$(dirname -- \"$0\")/_/husky.sh\"\n\nnpx lint-staged\n"
  },
  {
    "path": ".node-version",
    "chars": 8,
    "preview": "22.16.0\n"
  },
  {
    "path": ".nxignore",
    "chars": 82,
    "preview": "*.spec.ts\n**/testing/**\nmodules/BUILD\nmodules/license-banner.txt\nmodules/README.md"
  },
  {
    "path": ".prettierignore",
    "chars": 152,
    "preview": "/dist\n/modules/schematics/src/*/files/*\n/modules/**/schematics/**/files/*\n/tmp\npackage-lock.json\npackage.json\nyarn.lock\n"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 217574,
    "preview": "<a name=\"21.0.1\"></a>\n\n## [21.0.1](https://github.com/ngrx/platform/compare/21.0.0...21.0.1) (2025-12-22)\n\n### Bug Fixes"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 5225,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 6627,
    "preview": "# Developing\n\n## Getting started with GitHub Codespaces\n\nTo get started, create a codespace for this repository by click"
  },
  {
    "path": "LICENSE",
    "chars": 1306,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2017-2023 Brandon Roberts, Mike Ryan, Victor Savkin, Rob Wormald\n\nPermission is her"
  },
  {
    "path": "MIGRATION.md",
    "chars": 92,
    "preview": "# V21 Migration guide\n\nThis document has been moved to https://ngrx.io/guide/migration/v21.\n"
  },
  {
    "path": "README.md",
    "chars": 1970,
    "preview": "# @ngrx\n\nReactive State for Angular\n\n![CI](https://github.com/ngrx/platform/actions/workflows/main.yml/badge.svg)\n[![Joi"
  },
  {
    "path": "build/config.ts",
    "chars": 650,
    "preview": "import * as fs from 'fs';\n\nexport interface PackageDescription {\n  name: string;\n}\n\nexport interface Config {\n  packages"
  },
  {
    "path": "build/copy-schematics-core.ts",
    "chars": 343,
    "preview": "import * as tasks from './tasks';\nimport { createBuilder } from './util';\nimport { packages } from './config';\n\nconst co"
  },
  {
    "path": "build/deploy-build.ts",
    "chars": 289,
    "preview": "import * as tasks from './tasks';\nimport { createBuilder } from './util';\nimport { packages } from './config';\n\nconst de"
  },
  {
    "path": "build/example-app-server.js",
    "chars": 436,
    "preview": "const express = require('express');\nconst path = require('path');\n\nconst CONTEXT = `/${process.env.CONTEXT || 'platform/"
  },
  {
    "path": "build/generate-eslint-plugin.ts",
    "chars": 513,
    "preview": "import { createBuilder } from './util';\n\nconst update = createBuilder([\n  [\n    'Update config',\n    () => require('../m"
  },
  {
    "path": "build/publish-latest.ts",
    "chars": 917,
    "preview": "import { createBuilder } from './util';\nimport { packages } from './config';\nimport * as shelljs from 'shelljs';\n\n/**\n *"
  },
  {
    "path": "build/publish-next.ts",
    "chars": 903,
    "preview": "import { createBuilder } from './util';\nimport { packages } from './config';\nimport * as shelljs from 'shelljs';\n\n/**\n *"
  },
  {
    "path": "build/publish-release.ts",
    "chars": 1448,
    "preview": "import { createBuilder } from './util';\nimport { packages } from './config';\nimport { execSync } from 'child_process';\n\n"
  },
  {
    "path": "build/stackblitz.ts",
    "chars": 1764,
    "preview": "import { glob } from 'tinyglobby';\nimport * as fs from 'fs';\nimport { packages as ngrxPackages } from './config';\n\nconst"
  },
  {
    "path": "build/tasks.ts",
    "chars": 2975,
    "preview": "import { Config, modulesDir } from './config';\nimport * as util from './util';\nimport * as fs from 'fs';\nimport { ncp } "
  },
  {
    "path": "build/update-version-numbers.ts",
    "chars": 6666,
    "preview": "import { readFileSync, writeFileSync } from 'fs';\nimport { EOL } from 'os';\nimport * as readline from 'readline';\nimport"
  },
  {
    "path": "build/util.ts",
    "chars": 1582,
    "preview": "import * as path from 'node:path';\nimport * as cp from 'child_process';\nimport ora from 'ora';\nimport { Config } from '."
  },
  {
    "path": "eslint.config.mjs",
    "chars": 2819,
    "preview": "import { FlatCompat } from '@eslint/eslintrc';\nimport { dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimpo"
  },
  {
    "path": "jest.config.ts",
    "chars": 128,
    "preview": "const { getJestProjectsAsync } = require('@nx/jest');\n\nexport default async () => ({ projects: await getJestProjectsAsyn"
  },
  {
    "path": "jest.preset.js",
    "chars": 88,
    "preview": "const nxPreset = require('@nx/jest/preset').default;\n\nmodule.exports = { ...nxPreset };\n"
  },
  {
    "path": "modules/README.md",
    "chars": 170,
    "preview": "# NgRx\n\nThe sources for this package are in the main [NgRx](https://github.com/ngrx/platform) repo. Please file issues a"
  },
  {
    "path": "modules/component/CHANGELOG.md",
    "chars": 90,
    "preview": "# Change Log\n\nSee [CHANGELOG.md](https://github.com/ngrx/platform/blob/main/CHANGELOG.md)\n"
  },
  {
    "path": "modules/component/README.md",
    "chars": 181,
    "preview": "# @ngrx/component\n\nThe sources for this package are in the main [NgRx](https://github.com/ngrx/platform) repo. Please fi"
  },
  {
    "path": "modules/component/eslint.config.mjs",
    "chars": 1515,
    "preview": "import { FlatCompat } from '@eslint/eslintrc';\nimport { dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimpo"
  },
  {
    "path": "modules/component/index.ts",
    "chars": 106,
    "preview": "/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\nexport * from './public_api';\n"
  },
  {
    "path": "modules/component/migrations/15_0_0-beta/index.spec.ts",
    "chars": 4331,
    "preview": "import { Tree } from '@angular-devkit/schematics';\nimport {\n  SchematicTestRunner,\n  UnitTestTree,\n} from '@angular-devk"
  },
  {
    "path": "modules/component/migrations/15_0_0-beta/index.ts",
    "chars": 6337,
    "preview": "import * as ts from 'typescript';\nimport { Rule, chain, Tree } from '@angular-devkit/schematics';\nimport {\n  visitTSSour"
  },
  {
    "path": "modules/component/migrations/16_0_0/index.spec.ts",
    "chars": 4456,
    "preview": "import * as path from 'path';\nimport { Tree } from '@angular-devkit/schematics';\nimport {\n  SchematicTestRunner,\n  UnitT"
  },
  {
    "path": "modules/component/migrations/16_0_0/index.ts",
    "chars": 6030,
    "preview": "import * as ts from 'typescript';\nimport { Rule, chain, Tree } from '@angular-devkit/schematics';\nimport {\n  visitTSSour"
  },
  {
    "path": "modules/component/migrations/migration.json",
    "chars": 605,
    "preview": "{\n  \"$schema\": \"../../../node_modules/@angular-devkit/schematics/collection-schema.json\",\n  \"schematics\": {\n    \"ngrx-co"
  },
  {
    "path": "modules/component/ng-package.json",
    "chars": 237,
    "preview": "{\n  \"$schema\": \"../../node_modules/ng-packagr/ng-package.schema.json\",\n  \"dest\": \"../../dist/modules/component\",\n  \"asse"
  },
  {
    "path": "modules/component/package.json",
    "chars": 1158,
    "preview": "{\n  \"name\": \"@ngrx/component\",\n  \"version\": \"21.0.1\",\n  \"description\": \"Reactive Extensions for Angular Components\",\n  \""
  },
  {
    "path": "modules/component/project.json",
    "chars": 1733,
    "preview": "{\n  \"name\": \"component\",\n  \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n  \"projectType\": \"library\",\n "
  },
  {
    "path": "modules/component/public_api.ts",
    "chars": 29,
    "preview": "export * from './src/index';\n"
  },
  {
    "path": "modules/component/schematics/collection.json",
    "chars": 207,
    "preview": "{\n  \"schematics\": {\n    \"ng-add\": {\n      \"aliases\": [\"init\"],\n      \"factory\": \"./ng-add\",\n      \"schema\": \"./ng-add/sc"
  },
  {
    "path": "modules/component/schematics/ng-add/index.spec.ts",
    "chars": 1351,
    "preview": "import {\n  SchematicTestRunner,\n  UnitTestTree,\n} from '@angular-devkit/schematics/testing';\nimport * as path from 'path"
  },
  {
    "path": "modules/component/schematics/ng-add/index.ts",
    "chars": 835,
    "preview": "import {\n  Rule,\n  SchematicContext,\n  Tree,\n  chain,\n  noop,\n} from '@angular-devkit/schematics';\nimport { NodePackageI"
  },
  {
    "path": "modules/component/schematics/ng-add/schema.json",
    "chars": 369,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/schema\",\n  \"$id\": \"SchematicsNgRxComponent\",\n  \"title\": \"NgRx Component Schema\",\n"
  },
  {
    "path": "modules/component/schematics/ng-add/schema.ts",
    "chars": 57,
    "preview": "export interface Schema {\n  skipPackageJson?: boolean;\n}\n"
  },
  {
    "path": "modules/component/schematics-core/eslint.config.mjs",
    "chars": 1083,
    "preview": "import { FlatCompat } from '@eslint/eslintrc';\nimport { dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimpo"
  },
  {
    "path": "modules/component/schematics-core/index.ts",
    "chars": 1814,
    "preview": "import {\n  dasherize,\n  decamelize,\n  camelize,\n  classify,\n  underscore,\n  group,\n  capitalize,\n  featurePath,\n  plural"
  },
  {
    "path": "modules/component/schematics-core/tsconfig.lib.json",
    "chars": 583,
    "preview": "{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"stripInternal\": true,\n    \"experimentalDecorators\": true,\n    \"module\""
  },
  {
    "path": "modules/component/schematics-core/utility/ast-utils.ts",
    "chars": 25831,
    "preview": "/* istanbul ignore file */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code i"
  },
  {
    "path": "modules/component/schematics-core/utility/change.ts",
    "chars": 5112,
    "preview": "import * as ts from 'typescript';\nimport { Tree, UpdateRecorder } from '@angular-devkit/schematics';\nimport { Path } fro"
  },
  {
    "path": "modules/component/schematics-core/utility/config.ts",
    "chars": 3295,
    "preview": "import { SchematicsException, Tree } from '@angular-devkit/schematics';\n\n// The interfaces below are generated from the "
  },
  {
    "path": "modules/component/schematics-core/utility/find-component.ts",
    "chars": 3940,
    "preview": "/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style "
  },
  {
    "path": "modules/component/schematics-core/utility/find-module.ts",
    "chars": 4134,
    "preview": "/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style "
  },
  {
    "path": "modules/component/schematics-core/utility/json-utilts.ts",
    "chars": 390,
    "preview": "// https://github.com/angular/angular-cli/blob/master/packages/schematics/angular/utility/json-utils.ts\nexport function "
  },
  {
    "path": "modules/component/schematics-core/utility/libs-version.ts",
    "chars": 42,
    "preview": "export const platformVersion = '^21.0.1';\n"
  },
  {
    "path": "modules/component/schematics-core/utility/ngrx-utils.ts",
    "chars": 7791,
    "preview": "import * as ts from 'typescript';\nimport * as stringUtils from './strings';\nimport { InsertChange, Change, NoopChange } "
  },
  {
    "path": "modules/component/schematics-core/utility/package.ts",
    "chars": 577,
    "preview": "import { Tree } from '@angular-devkit/schematics';\n\n/**\n * Adds a package to the package.json\n */\nexport function addPac"
  },
  {
    "path": "modules/component/schematics-core/utility/parse-name.ts",
    "chars": 393,
    "preview": "import { Path, basename, dirname, normalize } from '@angular-devkit/core';\n\nexport interface Location {\n  name: string;\n"
  },
  {
    "path": "modules/component/schematics-core/utility/project.ts",
    "chars": 2047,
    "preview": "import { workspaces } from '@angular-devkit/core';\nimport { getWorkspace } from './config';\nimport { SchematicsException"
  },
  {
    "path": "modules/component/schematics-core/utility/standalone.ts",
    "chars": 13786,
    "preview": "// copied from https://github.com/angular/angular-cli/blob/17.3.x/packages/schematics/angular/private/standalone.ts\nimpo"
  },
  {
    "path": "modules/component/schematics-core/utility/strings.ts",
    "chars": 4146,
    "preview": "/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style "
  },
  {
    "path": "modules/component/schematics-core/utility/update.ts",
    "chars": 1205,
    "preview": "import {\n  Rule,\n  SchematicContext,\n  Tree,\n  SchematicsException,\n} from '@angular-devkit/schematics';\n\nexport functio"
  },
  {
    "path": "modules/component/schematics-core/utility/visitors.ts",
    "chars": 7736,
    "preview": "import * as ts from 'typescript';\nimport { normalize, resolve } from '@angular-devkit/core';\nimport { Tree, DirEntry } f"
  },
  {
    "path": "modules/component/spec/core/potential-observable.spec.ts",
    "chars": 2254,
    "preview": "import { of } from 'rxjs';\nimport { TestScheduler } from 'rxjs/testing';\nimport { fromPotentialObservable } from '../../"
  },
  {
    "path": "modules/component/spec/core/render-event/handlers.spec.ts",
    "chars": 1598,
    "preview": "import { vi } from 'vitest';\nimport { combineRenderEventHandlers } from '../../../src/core/render-event/handlers';\nimpor"
  },
  {
    "path": "modules/component/spec/core/render-event/manager.spec.ts",
    "chars": 23732,
    "preview": "import { vi } from 'vitest';\nimport { fakeAsync, tick } from '@angular/core/testing';\nimport {\n  BehaviorSubject,\n  dela"
  },
  {
    "path": "modules/component/spec/core/render-scheduler.spec.ts",
    "chars": 1682,
    "preview": "import { vi } from 'vitest';\nimport {\n  createRenderScheduler,\n  RenderScheduler,\n} from '../../src/core/render-schedule"
  },
  {
    "path": "modules/component/spec/core/tick-scheduler.spec.ts",
    "chars": 5375,
    "preview": "import { vi } from 'vitest';\nimport {\n  fakeAsync,\n  flushMicrotasks,\n  TestBed,\n  tick,\n} from '@angular/core/testing';"
  },
  {
    "path": "modules/component/spec/core/zone-helpers.spec.ts",
    "chars": 382,
    "preview": "import { isNgZone } from '../../src/core/zone-helpers';\nimport { ngZoneMock, noopNgZoneMock } from '../fixtures/fixtures"
  },
  {
    "path": "modules/component/spec/fixtures/fixtures.ts",
    "chars": 625,
    "preview": "import { vi } from 'vitest';\nimport { NgZone } from '@angular/core';\nimport { MockNoopNgZone } from './mock-noop-ng-zone"
  },
  {
    "path": "modules/component/spec/fixtures/mock-event-emitter.ts",
    "chars": 217,
    "preview": "import { EventEmitter } from '@angular/core';\n\nexport class MockEventEmitter<T> extends EventEmitter<T> {\n  override nex"
  },
  {
    "path": "modules/component/spec/fixtures/mock-noop-ng-zone.ts",
    "chars": 1278,
    "preview": "import { MockEventEmitter } from './mock-event-emitter';\n\n/**\n * source: https://github.com/angular/angular/blob/master/"
  },
  {
    "path": "modules/component/spec/helpers.ts",
    "chars": 175,
    "preview": "export function stripSpaces(str: string): string {\n  return str.replace(/[\\n\\r\\s]+/g, '');\n}\n\nexport function wrapWithSp"
  },
  {
    "path": "modules/component/spec/let/let.directive.spec.ts",
    "chars": 20645,
    "preview": "import {\n  ChangeDetectorRef,\n  Component,\n  Directive,\n  ErrorHandler,\n} from '@angular/core';\nimport {\n  ComponentFixt"
  },
  {
    "path": "modules/component/spec/push/push.pipe.spec.ts",
    "chars": 16637,
    "preview": "import {\n  ChangeDetectorRef,\n  Component,\n  ErrorHandler,\n  computed,\n  signal,\n} from '@angular/core';\nimport {\n  Comp"
  },
  {
    "path": "modules/component/spec/types/let.directive.types.spec.ts",
    "chars": 6334,
    "preview": "import { potentialObservableExpecter } from './utils';\n\ndescribe('LetDirective', () => {\n  const expectPotentialObservab"
  },
  {
    "path": "modules/component/spec/types/push.pipe.types.spec.ts",
    "chars": 6418,
    "preview": "import { potentialObservableExpecter } from './utils';\n\ndescribe('PushPipe', () => {\n  const expectPotentialObservable ="
  },
  {
    "path": "modules/component/spec/types/utils.ts",
    "chars": 879,
    "preview": "import { expecter } from 'ts-snippet';\n\nexport const compilerOptions = () => ({\n  module: 'preserve',\n  moduleResolution"
  },
  {
    "path": "modules/component/src/core/potential-observable.ts",
    "chars": 2295,
    "preview": "import { combineLatest, from, isObservable, Observable } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operato"
  },
  {
    "path": "modules/component/src/core/render-event/handlers.ts",
    "chars": 530,
    "preview": "import {\n  CompleteRenderEvent,\n  ErrorRenderEvent,\n  NextRenderEvent,\n  RenderEvent,\n  SuspenseRenderEvent,\n} from './m"
  },
  {
    "path": "modules/component/src/core/render-event/manager.ts",
    "chars": 2916,
    "preview": "import { Observable, pipe, ReplaySubject } from 'rxjs';\nimport { distinctUntilChanged, switchMap, tap } from 'rxjs/opera"
  },
  {
    "path": "modules/component/src/core/render-event/models.ts",
    "chars": 714,
    "preview": "interface BaseRenderEvent {\n  /**\n   * true if the event is emitted by a new source\n   */\n  reset: boolean;\n  /**\n   * t"
  },
  {
    "path": "modules/component/src/core/render-scheduler.ts",
    "chars": 2098,
    "preview": "import { ChangeDetectorRef, inject, Injectable } from '@angular/core';\nimport { TickScheduler } from './tick-scheduler';"
  },
  {
    "path": "modules/component/src/core/tick-scheduler.ts",
    "chars": 1286,
    "preview": "import {\n  ApplicationRef,\n  inject,\n  Injectable,\n  NgZone,\n  PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformS"
  },
  {
    "path": "modules/component/src/core/zone-helpers.ts",
    "chars": 134,
    "preview": "import { NgZone } from '@angular/core';\n\nexport function isNgZone(zone: unknown): zone is NgZone {\n  return zone instanc"
  },
  {
    "path": "modules/component/src/index.ts",
    "chars": 156,
    "preview": "export { RenderScheduler } from './core/render-scheduler';\nexport { LetDirective } from './let/let.directive';\nexport { "
  },
  {
    "path": "modules/component/src/let/let.directive.ts",
    "chars": 6009,
    "preview": "import {\n  Directive,\n  ErrorHandler,\n  Input,\n  OnDestroy,\n  OnInit,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angula"
  },
  {
    "path": "modules/component/src/push/push.pipe.ts",
    "chars": 2522,
    "preview": "import { ErrorHandler, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { Unsubscribable } from 'rxjs';\nimp"
  },
  {
    "path": "modules/component/test-setup.ts",
    "chars": 840,
    "preview": "import {\n  TextEncoder as NodeTextEncoder,\n  TextDecoder as NodeTextDecoder,\n} from 'util';\n\n// Only assign if not alrea"
  },
  {
    "path": "modules/component/tsconfig.build.json",
    "chars": 887,
    "preview": "{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"declaration\": true,\n    \"stripInternal\": true,\n    \"experimentalDecora"
  },
  {
    "path": "modules/component/tsconfig.schematics.json",
    "chars": 759,
    "preview": "{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"rootDir\": \".\",\n    \"stripInternal\": true,\n    \"experimentalDecorators\""
  },
  {
    "path": "modules/component/tsconfig.spec.json",
    "chars": 281,
    "preview": "{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"../../dist/out-tsc\",\n    \"module\": \"es2022\","
  },
  {
    "path": "modules/component/vite.config.mts",
    "chars": 621,
    "preview": "/// <reference types=\"vitest\" />\n\nimport angular from '@analogjs/vite-plugin-angular';\n\nimport { nxViteTsPaths } from '@"
  },
  {
    "path": "modules/component-store/CHANGELOG.md",
    "chars": 90,
    "preview": "# Change Log\n\nSee [CHANGELOG.md](https://github.com/ngrx/platform/blob/main/CHANGELOG.md)\n"
  },
  {
    "path": "modules/component-store/README.md",
    "chars": 173,
    "preview": "# @ngrx/component-store\n\nThe sources for this package are in the main [NgRx](https://github.com/ngrx/platform) repo. Ple"
  },
  {
    "path": "modules/component-store/eslint.config.mjs",
    "chars": 1369,
    "preview": "import { FlatCompat } from '@eslint/eslintrc';\nimport { dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimpo"
  },
  {
    "path": "modules/component-store/index.ts",
    "chars": 106,
    "preview": "/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\nexport * from './public_api';\n"
  },
  {
    "path": "modules/component-store/migrations/18_0_0-beta/index.spec.ts",
    "chars": 6288,
    "preview": "import {\n  SchematicTestRunner,\n  UnitTestTree,\n} from '@angular-devkit/schematics/testing';\nimport { createWorkspace } "
  },
  {
    "path": "modules/component-store/migrations/18_0_0-beta/index.ts",
    "chars": 5419,
    "preview": "import * as ts from 'typescript';\nimport {\n  Tree,\n  Rule,\n  chain,\n  SchematicContext,\n} from '@angular-devkit/schemati"
  },
  {
    "path": "modules/component-store/migrations/migration.json",
    "chars": 389,
    "preview": "{\n  \"$schema\": \"../../../node_modules/@angular-devkit/schematics/collection-schema.json\",\n  \"schematics\": {\n    \"ngrx-co"
  },
  {
    "path": "modules/component-store/ng-package.json",
    "chars": 296,
    "preview": "{\n  \"$schema\": \"../../node_modules/ng-packagr/ng-package.schema.json\",\n  \"dest\": \"../../dist/modules/component-store\",\n "
  },
  {
    "path": "modules/component-store/package.json",
    "chars": 1170,
    "preview": "{\n  \"name\": \"@ngrx/component-store\",\n  \"version\": \"21.0.1\",\n  \"description\": \"Reactive store for component state\",\n  \"re"
  },
  {
    "path": "modules/component-store/project.json",
    "chars": 1829,
    "preview": "{\n  \"name\": \"component-store\",\n  \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n  \"projectType\": \"libra"
  },
  {
    "path": "modules/component-store/public_api.ts",
    "chars": 29,
    "preview": "export * from './src/index';\n"
  },
  {
    "path": "modules/component-store/schematics/collection.json",
    "chars": 213,
    "preview": "{\n  \"schematics\": {\n    \"ng-add\": {\n      \"aliases\": [\"init\"],\n      \"factory\": \"./ng-add\",\n      \"schema\": \"./ng-add/sc"
  },
  {
    "path": "modules/component-store/schematics/ng-add/index.spec.ts",
    "chars": 1381,
    "preview": "import {\n  SchematicTestRunner,\n  UnitTestTree,\n} from '@angular-devkit/schematics/testing';\nimport * as path from 'path"
  },
  {
    "path": "modules/component-store/schematics/ng-add/index.ts",
    "chars": 841,
    "preview": "import {\n  Rule,\n  SchematicContext,\n  Tree,\n  chain,\n  noop,\n} from '@angular-devkit/schematics';\nimport { NodePackageI"
  },
  {
    "path": "modules/component-store/schematics/ng-add/schema.json",
    "chars": 386,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/schema\",\n  \"$id\": \"SchematicsNgRxComponentStore\",\n  \"title\": \"NgRx Component Stor"
  },
  {
    "path": "modules/component-store/schematics/ng-add/schema.ts",
    "chars": 57,
    "preview": "export interface Schema {\n  skipPackageJson?: boolean;\n}\n"
  },
  {
    "path": "modules/component-store/schematics-core/eslint.config.mjs",
    "chars": 1083,
    "preview": "import { FlatCompat } from '@eslint/eslintrc';\nimport { dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimpo"
  },
  {
    "path": "modules/component-store/schematics-core/index.ts",
    "chars": 1814,
    "preview": "import {\n  dasherize,\n  decamelize,\n  camelize,\n  classify,\n  underscore,\n  group,\n  capitalize,\n  featurePath,\n  plural"
  },
  {
    "path": "modules/component-store/schematics-core/tsconfig.lib.json",
    "chars": 583,
    "preview": "{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"stripInternal\": true,\n    \"experimentalDecorators\": true,\n    \"module\""
  },
  {
    "path": "modules/component-store/schematics-core/utility/ast-utils.ts",
    "chars": 25831,
    "preview": "/* istanbul ignore file */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code i"
  },
  {
    "path": "modules/component-store/schematics-core/utility/change.ts",
    "chars": 5112,
    "preview": "import * as ts from 'typescript';\nimport { Tree, UpdateRecorder } from '@angular-devkit/schematics';\nimport { Path } fro"
  },
  {
    "path": "modules/component-store/schematics-core/utility/config.ts",
    "chars": 3295,
    "preview": "import { SchematicsException, Tree } from '@angular-devkit/schematics';\n\n// The interfaces below are generated from the "
  },
  {
    "path": "modules/component-store/schematics-core/utility/find-component.ts",
    "chars": 3940,
    "preview": "/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style "
  },
  {
    "path": "modules/component-store/schematics-core/utility/find-module.ts",
    "chars": 4134,
    "preview": "/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style "
  },
  {
    "path": "modules/component-store/schematics-core/utility/json-utilts.ts",
    "chars": 390,
    "preview": "// https://github.com/angular/angular-cli/blob/master/packages/schematics/angular/utility/json-utils.ts\nexport function "
  },
  {
    "path": "modules/component-store/schematics-core/utility/libs-version.ts",
    "chars": 42,
    "preview": "export const platformVersion = '^21.0.1';\n"
  },
  {
    "path": "modules/component-store/schematics-core/utility/ngrx-utils.ts",
    "chars": 7791,
    "preview": "import * as ts from 'typescript';\nimport * as stringUtils from './strings';\nimport { InsertChange, Change, NoopChange } "
  },
  {
    "path": "modules/component-store/schematics-core/utility/package.ts",
    "chars": 577,
    "preview": "import { Tree } from '@angular-devkit/schematics';\n\n/**\n * Adds a package to the package.json\n */\nexport function addPac"
  },
  {
    "path": "modules/component-store/schematics-core/utility/parse-name.ts",
    "chars": 393,
    "preview": "import { Path, basename, dirname, normalize } from '@angular-devkit/core';\n\nexport interface Location {\n  name: string;\n"
  },
  {
    "path": "modules/component-store/schematics-core/utility/project.ts",
    "chars": 2047,
    "preview": "import { workspaces } from '@angular-devkit/core';\nimport { getWorkspace } from './config';\nimport { SchematicsException"
  },
  {
    "path": "modules/component-store/schematics-core/utility/standalone.ts",
    "chars": 13786,
    "preview": "// copied from https://github.com/angular/angular-cli/blob/17.3.x/packages/schematics/angular/private/standalone.ts\nimpo"
  },
  {
    "path": "modules/component-store/schematics-core/utility/strings.ts",
    "chars": 4146,
    "preview": "/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style "
  },
  {
    "path": "modules/component-store/schematics-core/utility/update.ts",
    "chars": 1205,
    "preview": "import {\n  Rule,\n  SchematicContext,\n  Tree,\n  SchematicsException,\n} from '@angular-devkit/schematics';\n\nexport functio"
  },
  {
    "path": "modules/component-store/schematics-core/utility/visitors.ts",
    "chars": 7736,
    "preview": "import * as ts from 'typescript';\nimport { normalize, resolve } from '@angular-devkit/core';\nimport { Tree, DirEntry } f"
  },
  {
    "path": "modules/component-store/spec/component-store.spec.ts",
    "chars": 57356,
    "preview": "/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport {\n  computed,\n  Inject,\n  Injectable,\n  InjectionTo"
  },
  {
    "path": "modules/component-store/spec/integration.spec.ts",
    "chars": 14086,
    "preview": "import { Component, Type, Injectable } from '@angular/core';\nimport { ComponentStore } from '../src';\nimport {\n  TestBed"
  },
  {
    "path": "modules/component-store/spec/integration_signals.spec.ts",
    "chars": 3558,
    "preview": "import { ComponentStore } from '..';\n\nexport const VisibilityFilters = {\n  SHOW_ALL: 'SHOW_ALL',\n  SHOW_COMPLETED: 'SHOW"
  },
  {
    "path": "modules/component-store/spec/types/component-store.types.spec.ts",
    "chars": 12420,
    "preview": "import { expecter } from 'ts-snippet';\nimport { compilerOptions } from './utils';\n\ndescribe('ComponentStore types', () ="
  },
  {
    "path": "modules/component-store/spec/types/regression.types.spec.ts",
    "chars": 1186,
    "preview": "import { expecter } from 'ts-snippet';\nimport { compilerOptions } from './utils';\n\ndescribe('regression component-store'"
  },
  {
    "path": "modules/component-store/spec/types/utils.ts",
    "chars": 289,
    "preview": "export const compilerOptions = () => ({\n  module: 'preserve',\n  moduleResolution: 'bundler',\n  target: 'ES2022',\n  baseU"
  },
  {
    "path": "modules/component-store/src/component-store.ts",
    "chars": 17023,
    "preview": "import {\n  isObservable,\n  Observable,\n  of,\n  ReplaySubject,\n  Subscription,\n  throwError,\n  combineLatest,\n  Subject,\n"
  },
  {
    "path": "modules/component-store/src/debounce-sync.ts",
    "chars": 2264,
    "preview": "/**\n * @license MIT License\n *\n * Copyright (c) 2017-2020 Nicholas Jamieson and contributors\n *\n * Permission is hereby "
  },
  {
    "path": "modules/component-store/src/index.ts",
    "chars": 127,
    "preview": "export * from './component-store';\nexport {\n  provideComponentStore,\n  OnStateInit,\n  OnStoreInit,\n} from './lifecycle_h"
  },
  {
    "path": "modules/component-store/src/lifecycle_hooks.ts",
    "chars": 2963,
    "preview": "import { Provider, InjectionToken, Type, inject } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { "
  },
  {
    "path": "modules/component-store/test-setup.ts",
    "chars": 840,
    "preview": "import {\n  TextEncoder as NodeTextEncoder,\n  TextDecoder as NodeTextDecoder,\n} from 'util';\n\n// Only assign if not alrea"
  },
  {
    "path": "modules/component-store/tsconfig.build.json",
    "chars": 858,
    "preview": "{\n  \"compilerOptions\": {\n    \"baseUrl\": \"../../\",\n    \"declaration\": true,\n    \"stripInternal\": true,\n    \"experimentalD"
  },
  {
    "path": "modules/component-store/tsconfig.schematics.json",
    "chars": 776,
    "preview": "{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"rootDir\": \".\",\n    \"stripInternal\": true,\n    \"experimentalDecorators\""
  },
  {
    "path": "modules/component-store/tsconfig.spec.json",
    "chars": 281,
    "preview": "{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"../../dist/out-tsc\",\n    \"module\": \"es2022\","
  },
  {
    "path": "modules/component-store/vite.config.mts",
    "chars": 848,
    "preview": "/// <reference types=\"vitest\" />\n\nimport angular from '@analogjs/vite-plugin-angular';\n\nimport { nxViteTsPaths } from '@"
  },
  {
    "path": "modules/data/CHANGELOG.md",
    "chars": 90,
    "preview": "# Change Log\n\nSee [CHANGELOG.md](https://github.com/ngrx/platform/blob/main/CHANGELOG.md)\n"
  },
  {
    "path": "modules/data/README.md",
    "chars": 176,
    "preview": "# @ngrx/data\n\nThe sources for this package are in the main [NgRx](https://github.com/ngrx/platform) repo. Please file is"
  },
  {
    "path": "modules/data/eslint.config.mjs",
    "chars": 1415,
    "preview": "import { FlatCompat } from '@eslint/eslintrc';\nimport { dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimpo"
  },
  {
    "path": "modules/data/index.ts",
    "chars": 106,
    "preview": "/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\nexport * from './public_api';\n"
  },
  {
    "path": "modules/data/migrations/migration.json",
    "chars": 111,
    "preview": "{\n  \"$schema\": \"../../../node_modules/@angular-devkit/schematics/collection-schema.json\",\n  \"schematics\": {}\n}\n"
  },
  {
    "path": "modules/data/ng-package.json",
    "chars": 232,
    "preview": "{\n  \"$schema\": \"../../node_modules/ng-packagr/ng-package.schema.json\",\n  \"dest\": \"../../dist/modules/data\",\n  \"assets\": "
  },
  {
    "path": "modules/data/package.json",
    "chars": 1225,
    "preview": "{\n  \"name\": \"@ngrx/data\",\n  \"version\": \"21.0.1\",\n  \"description\": \"API management for NgRx\",\n  \"repository\": {\n    \"type"
  },
  {
    "path": "modules/data/project.json",
    "chars": 1653,
    "preview": "{\n  \"name\": \"data\",\n  \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n  \"projectType\": \"library\",\n  \"sou"
  },
  {
    "path": "modules/data/public_api.ts",
    "chars": 29,
    "preview": "export * from './src/index';\n"
  },
  {
    "path": "modules/data/schematics/collection.json",
    "chars": 202,
    "preview": "{\n  \"schematics\": {\n    \"ng-add\": {\n      \"aliases\": [\"init\"],\n      \"factory\": \"./ng-add\",\n      \"schema\": \"./ng-add/sc"
  },
  {
    "path": "modules/data/schematics/ng-add/__snapshots__/index.spec.ts.snap",
    "chars": 1513,
    "preview": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Data ng-add Schematic > Migration of ngrx-data >"
  },
  {
    "path": "modules/data/schematics/ng-add/files/entity-metadata.ts.template",
    "chars": 236,
    "preview": "import { EntityMetadataMap, EntityDataModuleConfig } from '@ngrx/data';\n\nconst entityMetadata: EntityMetadataMap = {};\n\n"
  },
  {
    "path": "modules/data/schematics/ng-add/index.spec.ts",
    "chars": 12300,
    "preview": "import {\n  SchematicTestRunner,\n  UnitTestTree,\n} from '@angular-devkit/schematics/testing';\nimport * as path from 'path"
  },
  {
    "path": "modules/data/schematics/ng-add/index.ts",
    "chars": 10151,
    "preview": "import * as ts from 'typescript';\nimport { Path } from '@angular-devkit/core';\nimport {\n  apply,\n  applyTemplates,\n  bra"
  },
  {
    "path": "modules/data/schematics/ng-add/schema.json",
    "chars": 1355,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/schema\",\n  \"$id\": \"SchematicsNgRxData\",\n  \"title\": \"NgRx Data Schema\",\n  \"type\": "
  },
  {
    "path": "modules/data/schematics/ng-add/schema.ts",
    "chars": 189,
    "preview": "export interface Schema {\n  path?: string;\n  effects?: boolean;\n  skipPackageJson?: boolean;\n  project?: string;\n  modul"
  },
  {
    "path": "modules/data/schematics-core/eslint.config.mjs",
    "chars": 1083,
    "preview": "import { FlatCompat } from '@eslint/eslintrc';\nimport { dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimpo"
  },
  {
    "path": "modules/data/schematics-core/index.ts",
    "chars": 1814,
    "preview": "import {\n  dasherize,\n  decamelize,\n  camelize,\n  classify,\n  underscore,\n  group,\n  capitalize,\n  featurePath,\n  plural"
  },
  {
    "path": "modules/data/schematics-core/tsconfig.lib.json",
    "chars": 583,
    "preview": "{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"stripInternal\": true,\n    \"experimentalDecorators\": true,\n    \"module\""
  },
  {
    "path": "modules/data/schematics-core/utility/ast-utils.ts",
    "chars": 25831,
    "preview": "/* istanbul ignore file */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code i"
  },
  {
    "path": "modules/data/schematics-core/utility/change.ts",
    "chars": 5112,
    "preview": "import * as ts from 'typescript';\nimport { Tree, UpdateRecorder } from '@angular-devkit/schematics';\nimport { Path } fro"
  },
  {
    "path": "modules/data/schematics-core/utility/config.ts",
    "chars": 3295,
    "preview": "import { SchematicsException, Tree } from '@angular-devkit/schematics';\n\n// The interfaces below are generated from the "
  },
  {
    "path": "modules/data/schematics-core/utility/find-component.ts",
    "chars": 3940,
    "preview": "/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style "
  },
  {
    "path": "modules/data/schematics-core/utility/find-module.ts",
    "chars": 4134,
    "preview": "/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style "
  },
  {
    "path": "modules/data/schematics-core/utility/json-utilts.ts",
    "chars": 390,
    "preview": "// https://github.com/angular/angular-cli/blob/master/packages/schematics/angular/utility/json-utils.ts\nexport function "
  },
  {
    "path": "modules/data/schematics-core/utility/libs-version.ts",
    "chars": 42,
    "preview": "export const platformVersion = '^21.0.1';\n"
  },
  {
    "path": "modules/data/schematics-core/utility/ngrx-utils.ts",
    "chars": 7791,
    "preview": "import * as ts from 'typescript';\nimport * as stringUtils from './strings';\nimport { InsertChange, Change, NoopChange } "
  },
  {
    "path": "modules/data/schematics-core/utility/package.ts",
    "chars": 577,
    "preview": "import { Tree } from '@angular-devkit/schematics';\n\n/**\n * Adds a package to the package.json\n */\nexport function addPac"
  },
  {
    "path": "modules/data/schematics-core/utility/parse-name.ts",
    "chars": 393,
    "preview": "import { Path, basename, dirname, normalize } from '@angular-devkit/core';\n\nexport interface Location {\n  name: string;\n"
  },
  {
    "path": "modules/data/schematics-core/utility/project.ts",
    "chars": 2047,
    "preview": "import { workspaces } from '@angular-devkit/core';\nimport { getWorkspace } from './config';\nimport { SchematicsException"
  },
  {
    "path": "modules/data/schematics-core/utility/standalone.ts",
    "chars": 13786,
    "preview": "// copied from https://github.com/angular/angular-cli/blob/17.3.x/packages/schematics/angular/private/standalone.ts\nimpo"
  },
  {
    "path": "modules/data/schematics-core/utility/strings.ts",
    "chars": 4146,
    "preview": "/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style "
  },
  {
    "path": "modules/data/schematics-core/utility/update.ts",
    "chars": 1205,
    "preview": "import {\n  Rule,\n  SchematicContext,\n  Tree,\n  SchematicsException,\n} from '@angular-devkit/schematics';\n\nexport functio"
  },
  {
    "path": "modules/data/schematics-core/utility/visitors.ts",
    "chars": 7736,
    "preview": "import * as ts from 'typescript';\nimport { normalize, resolve } from '@angular-devkit/core';\nimport { Tree, DirEntry } f"
  },
  {
    "path": "modules/data/spec/actions/entity-action-factory.spec.ts",
    "chars": 6725,
    "preview": "import {\n  EntityActionOptions,\n  EntityActionPayload,\n  EntityOp,\n  EntityActionFactory,\n  MergeStrategy,\n} from '../.."
  },
  {
    "path": "modules/data/spec/actions/entity-action-guard.spec.ts",
    "chars": 10275,
    "preview": "import { EntityActionGuard, EntityAction, EntityOp } from '../..';\n\nclass Hero {\n  id!: number;\n  name!: string;\n  power"
  },
  {
    "path": "modules/data/spec/actions/entity-action-operators.spec.ts",
    "chars": 4209,
    "preview": "import { Action } from '@ngrx/store';\n\nimport { Subject } from 'rxjs';\n\nimport {\n  EntityAction,\n  EntityActionFactory,\n"
  },
  {
    "path": "modules/data/spec/actions/entity-cache-changes-set.spec.ts",
    "chars": 1133,
    "preview": "import { ChangeSetOperation, changeSetItemFactory as cif } from '../../';\n\ndescribe('changeSetItemFactory', () => {\n  co"
  },
  {
    "path": "modules/data/spec/dataservices/data-service-error.spec.ts",
    "chars": 1110,
    "preview": "import { HttpErrorResponse } from '@angular/common/http';\nimport { DataServiceError } from '../../';\n\ndescribe('DataServ"
  },
  {
    "path": "modules/data/spec/dataservices/default-data.service.spec.ts",
    "chars": 23608,
    "preview": "import { TestBed } from '@angular/core/testing';\n\nimport {\n  HttpClient,\n  HttpContext,\n  HttpContextToken,\n  HttpParams"
  },
  {
    "path": "modules/data/spec/dataservices/entity-data.service.spec.ts",
    "chars": 4955,
    "preview": "import { Injectable, NgModule, Optional } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\nimport "
  },
  {
    "path": "modules/data/spec/dispatchers/entity-dispatcher.spec.ts",
    "chars": 19503,
    "preview": "import { Action } from '@ngrx/store';\nimport { Update } from '@ngrx/entity';\n\nimport { Subject } from 'rxjs';\n\nimport {\n"
  },
  {
    "path": "modules/data/spec/effects/entity-cache-effects.spec.ts",
    "chars": 6861,
    "preview": "// Not using marble testing\nimport { TestBed } from '@angular/core/testing';\nimport { Action } from '@ngrx/store';\nimpor"
  },
  {
    "path": "modules/data/spec/effects/entity-effects.marbles.spec.ts",
    "chars": 16774,
    "preview": "// Using marble testing\nimport { TestBed } from '@angular/core/testing';\n\nimport { cold, hot, getTestScheduler } from 'j"
  }
]

// ... and 1475 more files (download for full content)

About this extraction

This page contains the full source code of the ngrx/platform GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1675 files (5.3 MB), approximately 1.5M tokens, and a symbol index with 3896 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!