├── .devcontainer ├── devcontainer.json ├── ngrx.io │ └── devcontainer.json └── welcome-message.txt ├── .dockerignore ├── .editorconfig ├── .eslintignore ├── .eslintrc.json ├── .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 ├── .gitignore ├── .husky └── pre-commit ├── .node-version ├── .nxignore ├── .prettierignore ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Dockerfile ├── 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 ├── stackblitz.ts ├── tasks.ts ├── update-version-numbers.ts └── util.ts ├── jest.config.ts ├── jest.preset.js ├── migrate-content.js ├── modules ├── README.md ├── component-store │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── index.ts │ ├── jest.config.ts │ ├── migrations │ │ ├── 18_0_0-beta │ │ │ ├── index.spec.ts │ │ │ └── index.ts │ │ └── migration.json │ ├── ng-package.json │ ├── package.json │ ├── project.json │ ├── public_api.ts │ ├── schematics-core │ │ ├── index.ts │ │ ├── jest.config.js │ │ ├── jest.config.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.spec.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 │ ├── schematics │ │ ├── collection.json │ │ └── ng-add │ │ │ ├── index.spec.ts │ │ │ ├── index.ts │ │ │ ├── schema.json │ │ │ └── schema.ts │ ├── spec │ │ ├── component-store.spec.ts │ │ ├── integration.spec.ts │ │ ├── integration_signals.spec.ts │ │ └── types │ │ │ ├── component-store.types.spec.ts │ │ │ ├── regression.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 ├── component │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── index.ts │ ├── jest.config.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-core │ │ ├── index.ts │ │ ├── jest.config.js │ │ ├── jest.config.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.spec.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 │ ├── schematics │ │ ├── collection.json │ │ └── ng-add │ │ │ ├── index.spec.ts │ │ │ ├── index.ts │ │ │ ├── schema.json │ │ │ └── schema.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 ├── data │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── index.ts │ ├── jest.config.ts │ ├── migrations │ │ └── migration.json │ ├── ng-package.json │ ├── package.json │ ├── project.json │ ├── public_api.ts │ ├── schematics-core │ │ ├── index.ts │ │ ├── jest.config.js │ │ ├── jest.config.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.spec.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 │ ├── schematics │ │ ├── collection.json │ │ └── ng-add │ │ │ ├── __snapshots__ │ │ │ └── index.spec.ts.snap │ │ │ ├── files │ │ │ └── entity-metadata.ts.template │ │ │ ├── index.spec.ts │ │ │ ├── index.ts │ │ │ ├── schema.json │ │ │ └── schema.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 ├── effects │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── index.ts │ ├── jest.config.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-core │ │ ├── index.ts │ │ ├── jest.config.js │ │ ├── jest.config.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.spec.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 │ ├── 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 │ ├── spec │ │ ├── act.spec.ts │ │ ├── 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 │ │ ├── act.ts │ │ ├── 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 ├── entity │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── index.ts │ ├── jest.config.ts │ ├── migrations │ │ ├── 6_0_0 │ │ │ ├── index.spec.ts │ │ │ └── index.ts │ │ └── migration.json │ ├── ng-package.json │ ├── package.json │ ├── project.json │ ├── public_api.ts │ ├── schematics-core │ │ ├── index.ts │ │ ├── jest.config.js │ │ ├── jest.config.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.spec.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 │ ├── schematics │ │ ├── collection.json │ │ └── ng-add │ │ │ ├── index.spec.ts │ │ │ ├── index.ts │ │ │ ├── schema.json │ │ │ └── schema.ts │ ├── spec │ │ ├── entity_state.spec.ts │ │ ├── fixtures │ │ │ └── book.ts │ │ ├── sorted_state_adapter.spec.ts │ │ ├── state_selectors.spec.ts │ │ ├── types │ │ │ ├── entity_selectors.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 ├── eslint-plugin │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── 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 │ │ │ │ ├── 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.json │ │ │ ├── all.ts │ │ │ ├── component-store.json │ │ │ ├── component-store.ts │ │ │ ├── effects.json │ │ │ ├── effects.ts │ │ │ ├── operators.json │ │ │ ├── operators.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 │ │ │ │ ├── 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 │ │ │ ├── docs.ts │ │ │ ├── folder.ts │ │ │ ├── guards.ts │ │ │ ├── index.ts │ │ │ ├── ngrx-modules.ts │ │ │ ├── rules.ts │ │ │ ├── utils.ts │ │ │ └── versions.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 │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── index.ts │ ├── jest.config.ts │ ├── migrations │ │ └── migration.json │ ├── ng-package.json │ ├── package.json │ ├── project.json │ ├── schematics-core │ │ ├── index.ts │ │ ├── jest.config.js │ │ ├── jest.config.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.spec.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 │ ├── schematics │ │ ├── collection.json │ │ └── ng-add │ │ │ ├── index.spec.ts │ │ │ ├── index.ts │ │ │ ├── schema.json │ │ │ └── schema.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 ├── router-store │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── data-persistence │ │ ├── index.ts │ │ ├── ng-package.json │ │ ├── src │ │ │ ├── operators.ts │ │ │ └── public_api.ts │ │ └── tsconfig.build.json │ ├── index.ts │ ├── jest.config.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-core │ │ ├── index.ts │ │ ├── jest.config.js │ │ ├── jest.config.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.spec.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 │ ├── schematics │ │ ├── collection.json │ │ └── ng-add │ │ │ ├── __snapshots__ │ │ │ └── index.spec.ts.snap │ │ │ ├── index.spec.ts │ │ │ ├── index.ts │ │ │ ├── schema.json │ │ │ └── schema.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 │ └── webpack.e2e.config.js ├── schematics-core │ ├── .eslintrc.json │ ├── index.ts │ ├── jest.config.ts │ ├── project.json │ ├── test-setup.ts │ ├── testing │ │ ├── create-app-module.ts │ │ ├── create-package.ts │ │ ├── create-reducers.ts │ │ ├── create-workspace.ts │ │ ├── index.ts │ │ └── update.ts │ ├── tsconfig.lib.json │ ├── tsconfig.spec.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 ├── schematics │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── collection.json │ ├── jest.config.ts │ ├── migrations │ │ ├── 6_0_0 │ │ │ ├── index.spec.ts │ │ │ └── index.ts │ │ └── migration.json │ ├── package.json │ ├── project.json │ ├── schematics-core │ │ ├── index.ts │ │ ├── jest.config.js │ │ ├── jest.config.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.spec.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 ├── signals │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── entities │ │ ├── index.ts │ │ ├── ng-package.json │ │ ├── spec │ │ │ ├── helpers.ts │ │ │ ├── mocks.ts │ │ │ ├── types │ │ │ │ ├── entity-config.types.spec.ts │ │ │ │ └── helpers.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 │ ├── 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-effects.spec.ts │ │ │ └── with-reducer.spec.ts │ │ └── src │ │ │ ├── case-reducer.ts │ │ │ ├── dispatcher.ts │ │ │ ├── event-creator-group.ts │ │ │ ├── event-creator.ts │ │ │ ├── event-instance.ts │ │ │ ├── events-service.ts │ │ │ ├── index.ts │ │ │ ├── inject-dispatch.ts │ │ │ ├── with-effects.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 │ │ └── 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-core │ │ ├── index.ts │ │ ├── jest.config.js │ │ ├── jest.config.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.spec.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 │ ├── schematics │ │ ├── collection.json │ │ └── ng-add │ │ │ ├── index.spec.ts │ │ │ ├── index.ts │ │ │ ├── schema.json │ │ │ └── schema.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.spec.ts │ │ ├── with-feature.spec.ts │ │ ├── with-hooks.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-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-devtools │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── index.ts │ ├── jest.config.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-core │ │ ├── index.ts │ │ ├── jest.config.js │ │ ├── jest.config.ts │ │ ├── test-setup.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.spec.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 │ ├── schematics │ │ ├── collection.json │ │ └── ng-add │ │ │ ├── __snapshots__ │ │ │ └── index.spec.ts.snap │ │ │ ├── index.spec.ts │ │ │ ├── index.ts │ │ │ ├── schema.json │ │ │ └── schema.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 └── store │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── index.ts │ ├── jest.config.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-core │ ├── index.ts │ ├── jest.config.js │ ├── jest.config.ts │ ├── test-setup.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ ├── tsconfig.spec.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 │ ├── schematics │ ├── collection.json │ └── ng-add │ │ ├── files │ │ └── __statePath__ │ │ │ └── index.ts.template │ │ ├── index.spec.ts │ │ ├── index.ts │ │ ├── schema.json │ │ └── schema.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 ├── nx.json ├── package.json ├── pnpm-lock.yaml ├── prettier.config.js ├── projects ├── example-app-e2e │ ├── .eslintrc.json │ ├── cypress.config.ts │ ├── project.json │ ├── src │ │ ├── integration │ │ │ └── round-trip.cy.ts │ │ └── support │ │ │ ├── commands.ts │ │ │ └── e2e.ts │ └── tsconfig.json ├── example-app │ ├── .eslintrc.json │ ├── README.md │ ├── jest.config.ts │ ├── 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 │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.css │ │ └── test-setup.ts │ ├── tsconfig.app.json │ └── tsconfig.spec.json ├── ngrx.io │ ├── .eslintrc.json │ ├── .firebaserc │ ├── .gitignore │ ├── README.md │ ├── angular.json │ ├── content │ │ ├── examples │ │ │ ├── .gitignore │ │ │ ├── component-store-paginator-service │ │ │ │ ├── example-config.json │ │ │ │ ├── src │ │ │ │ │ ├── app │ │ │ │ │ │ ├── app.component.ts │ │ │ │ │ │ ├── app.module.ts │ │ │ │ │ │ ├── paginator.component.ts │ │ │ │ │ │ ├── paginator.html │ │ │ │ │ │ ├── paginator.scss │ │ │ │ │ │ └── paginator.store.ts │ │ │ │ │ ├── index.html │ │ │ │ │ ├── main.ts │ │ │ │ │ └── styles.scss │ │ │ │ └── stackblitz.json │ │ │ ├── component-store-paginator │ │ │ │ ├── example-config.json │ │ │ │ ├── src │ │ │ │ │ ├── app │ │ │ │ │ │ ├── app.component.ts │ │ │ │ │ │ ├── app.module.ts │ │ │ │ │ │ ├── paginator.component.ts │ │ │ │ │ │ ├── paginator.html │ │ │ │ │ │ └── paginator.scss │ │ │ │ │ ├── index.html │ │ │ │ │ ├── main.ts │ │ │ │ │ └── styles.scss │ │ │ │ └── stackblitz.json │ │ │ ├── component-store-slide-toggle │ │ │ │ ├── example-config.json │ │ │ │ ├── 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 │ │ │ │ └── stackblitz.json │ │ │ ├── ngrx-start │ │ │ │ ├── example-config.json │ │ │ │ ├── src │ │ │ │ │ ├── .browserslistrc │ │ │ │ │ ├── app │ │ │ │ │ │ ├── app.component.css │ │ │ │ │ │ ├── app.component.html │ │ │ │ │ │ ├── app.component.ts │ │ │ │ │ │ └── app.module.ts │ │ │ │ │ ├── index.html │ │ │ │ │ └── main.ts │ │ │ │ └── stackblitz.json │ │ │ ├── router-store-selectors │ │ │ │ ├── e2e │ │ │ │ │ └── src │ │ │ │ │ │ └── app.e2e-spec.ts │ │ │ │ ├── example-config.json │ │ │ │ ├── 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 │ │ │ │ └── stackblitz.json │ │ │ ├── store-walkthrough │ │ │ │ ├── e2e │ │ │ │ │ └── src │ │ │ │ │ │ └── app.e2e-spec.ts │ │ │ │ ├── example-config.json │ │ │ │ ├── src │ │ │ │ │ ├── app │ │ │ │ │ │ ├── app.component.html │ │ │ │ │ │ ├── app.component.spec.ts │ │ │ │ │ │ ├── app.component.ts │ │ │ │ │ │ ├── app.module.1.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 │ │ │ │ │ │ ├── state │ │ │ │ │ │ │ ├── app.state.ts │ │ │ │ │ │ │ ├── books.actions.ts │ │ │ │ │ │ │ ├── books.reducer.ts │ │ │ │ │ │ │ ├── books.selectors.ts │ │ │ │ │ │ │ └── collection.reducer.ts │ │ │ │ │ │ └── tests │ │ │ │ │ │ │ ├── app.component.1.spec.ts │ │ │ │ │ │ │ └── integration.spec.ts │ │ │ │ │ ├── index.html │ │ │ │ │ └── main.ts │ │ │ │ └── stackblitz.json │ │ │ ├── store │ │ │ │ ├── e2e │ │ │ │ │ └── src │ │ │ │ │ │ └── app.e2e-spec.ts │ │ │ │ ├── example-config.json │ │ │ │ ├── src │ │ │ │ │ ├── .browserslistrc │ │ │ │ │ ├── app │ │ │ │ │ │ ├── app.component.css │ │ │ │ │ │ ├── app.component.html │ │ │ │ │ │ ├── app.component.spec.ts │ │ │ │ │ │ ├── app.component.ts │ │ │ │ │ │ ├── app.module.1.ts │ │ │ │ │ │ ├── app.module.ts │ │ │ │ │ │ ├── counter.actions.ts │ │ │ │ │ │ ├── counter.reducer.ts │ │ │ │ │ │ ├── my-counter │ │ │ │ │ │ │ ├── my-counter.component.html │ │ │ │ │ │ │ ├── my-counter.component.spec.ts │ │ │ │ │ │ │ └── my-counter.component.ts │ │ │ │ │ │ └── tests │ │ │ │ │ │ │ └── integration.spec.ts │ │ │ │ │ ├── index.html │ │ │ │ │ └── main.ts │ │ │ │ └── stackblitz.json │ │ │ ├── testing-store │ │ │ │ ├── example-config.json │ │ │ │ ├── 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 │ │ │ │ └── stackblitz.json │ │ │ └── tsconfig.json │ │ ├── file-not-found.md │ │ ├── guide │ │ │ ├── component-store │ │ │ │ ├── comparison.md │ │ │ │ ├── effect.md │ │ │ │ ├── index.md │ │ │ │ ├── initialization.md │ │ │ │ ├── install.md │ │ │ │ ├── lifecycle.md │ │ │ │ ├── read.md │ │ │ │ ├── usage.md │ │ │ │ └── write.md │ │ │ ├── component │ │ │ │ ├── index.md │ │ │ │ ├── install.md │ │ │ │ ├── let.md │ │ │ │ └── push.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 │ │ │ │ │ ├── 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 │ │ │ │ ├── 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 │ │ │ │ │ ├── private-store-members.md │ │ │ │ │ ├── state-tracking.md │ │ │ │ │ └── testing.md │ │ │ ├── store-devtools │ │ │ │ ├── config.md │ │ │ │ ├── index.md │ │ │ │ ├── install.md │ │ │ │ └── recipes │ │ │ │ │ └── exclude.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 │ │ │ └── style-guide.md │ │ ├── images │ │ │ ├── bios │ │ │ │ ├── _no-one.jpg │ │ │ │ ├── alex-okrushko.jpg │ │ │ │ ├── brandonroberts.jpg │ │ │ │ ├── john-papa.jpg │ │ │ │ ├── marko.jpg │ │ │ │ ├── mike-ryan.jpg │ │ │ │ ├── rainer.jpg │ │ │ │ ├── rob-wormald.jpg │ │ │ │ ├── timd.jpg │ │ │ │ ├── victor.png │ │ │ │ ├── wardbell.jpg │ │ │ │ └── wesgrimes.jpg │ │ │ ├── guide │ │ │ │ ├── component-store │ │ │ │ │ ├── file-structure.png │ │ │ │ │ ├── state-structure.png │ │ │ │ │ └── types-of-state.png │ │ │ │ ├── data │ │ │ │ │ └── action-flow.png │ │ │ │ ├── signals │ │ │ │ │ └── app-architecture-with-events-plugin.png │ │ │ │ └── store │ │ │ │ │ ├── state-management-lifecycle.png │ │ │ │ │ └── state-management-lifecycle.psd │ │ │ └── marketing │ │ │ │ ├── concept-icons │ │ │ │ ├── animations.png │ │ │ │ ├── animations.svg │ │ │ │ ├── augury.png │ │ │ │ ├── augury.svg │ │ │ │ ├── cdk.png │ │ │ │ ├── cdk.svg │ │ │ │ ├── cli.png │ │ │ │ ├── cli.svg │ │ │ │ ├── compiler.png │ │ │ │ ├── compiler.svg │ │ │ │ ├── components.png │ │ │ │ ├── components.svg │ │ │ │ ├── dependency-injection.png │ │ │ │ ├── dependency-injection.svg │ │ │ │ ├── forms.png │ │ │ │ ├── forms.svg │ │ │ │ ├── http.png │ │ │ │ ├── http.svg │ │ │ │ ├── i18n.png │ │ │ │ ├── i18n.svg │ │ │ │ ├── karma.png │ │ │ │ ├── karma.svg │ │ │ │ ├── labs.png │ │ │ │ ├── labs.svg │ │ │ │ ├── language-services.png │ │ │ │ ├── language-services.svg │ │ │ │ ├── lazy-loading.png │ │ │ │ ├── lazy-loading.svg │ │ │ │ ├── libraries.png │ │ │ │ ├── libraries.svg │ │ │ │ ├── material.png │ │ │ │ ├── material.svg │ │ │ │ ├── performance.png │ │ │ │ ├── performance.svg │ │ │ │ ├── protractor.png │ │ │ │ ├── protractor.svg │ │ │ │ ├── pwa.png │ │ │ │ ├── pwa.svg │ │ │ │ ├── router.png │ │ │ │ ├── router.svg │ │ │ │ ├── templates.png │ │ │ │ ├── templates.svg │ │ │ │ ├── universal.png │ │ │ │ └── universal.svg │ │ │ │ ├── features │ │ │ │ └── feature-icon.svg │ │ │ │ └── home │ │ │ │ └── ngrx-conf-badge.svg │ │ ├── license.md │ │ ├── marketing │ │ │ ├── about.html │ │ │ ├── announcements.json │ │ │ ├── api.html │ │ │ ├── contributing.md │ │ │ ├── contributors.json │ │ │ ├── docs.md │ │ │ ├── enterprise-support.md │ │ │ ├── events.html │ │ │ ├── events.json │ │ │ ├── index.html │ │ │ ├── presskit.md │ │ │ ├── resources.html │ │ │ ├── resources.json │ │ │ ├── test.html │ │ │ └── workshops.md │ │ └── navigation.json │ ├── database.rules.json │ ├── firebase.json │ ├── ngsw-config.json │ ├── package.json │ ├── prettier.config.js │ ├── project.json │ ├── scripts │ │ ├── _payload-limits.json │ │ ├── build-404-page.js │ │ ├── build-artifacts.sh │ │ ├── check-environment.js │ │ ├── copy-404-page.js │ │ ├── deploy-to-firebase.sh │ │ ├── deploy-to-firebase.test.sh │ │ ├── payload.sh │ │ ├── test-production.sh │ │ └── test-pwa-score.js │ ├── src │ │ ├── 404-body.html │ │ ├── _redirects │ │ ├── app │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── custom-elements │ │ │ │ ├── announcement-bar │ │ │ │ │ ├── announcement-bar.component.spec.ts │ │ │ │ │ ├── announcement-bar.component.ts │ │ │ │ │ └── announcement-bar.module.ts │ │ │ │ ├── api │ │ │ │ │ ├── api-list.component.html │ │ │ │ │ ├── api-list.component.spec.ts │ │ │ │ │ ├── api-list.component.ts │ │ │ │ │ ├── api-list.module.ts │ │ │ │ │ ├── api.service.spec.ts │ │ │ │ │ └── api.service.ts │ │ │ │ ├── code │ │ │ │ │ ├── code-example.component.spec.ts │ │ │ │ │ ├── code-example.component.ts │ │ │ │ │ ├── code-example.module.ts │ │ │ │ │ ├── code-tabs.component.spec.ts │ │ │ │ │ ├── code-tabs.component.ts │ │ │ │ │ ├── code-tabs.module.ts │ │ │ │ │ ├── code.component.spec.ts │ │ │ │ │ ├── code.component.ts │ │ │ │ │ ├── code.module.ts │ │ │ │ │ └── pretty-printer.service.ts │ │ │ │ ├── contact-form │ │ │ │ │ ├── contact-form.component.ts │ │ │ │ │ └── contact-form.module.ts │ │ │ │ ├── contributor │ │ │ │ │ ├── contributor-list.component.spec.ts │ │ │ │ │ ├── contributor-list.component.ts │ │ │ │ │ ├── contributor-list.module.ts │ │ │ │ │ ├── contributor.component.ts │ │ │ │ │ ├── contributor.service.spec.ts │ │ │ │ │ ├── contributor.service.ts │ │ │ │ │ └── contributors.model.ts │ │ │ │ ├── current-location │ │ │ │ │ ├── current-location.component.spec.ts │ │ │ │ │ ├── current-location.component.ts │ │ │ │ │ └── current-location.module.ts │ │ │ │ ├── custom-elements.module.ts │ │ │ │ ├── element-registry.ts │ │ │ │ ├── elements-loader.spec.ts │ │ │ │ ├── elements-loader.ts │ │ │ │ ├── events │ │ │ │ │ ├── event-date-range.pipe.spec.ts │ │ │ │ │ ├── event-date-range.pipe.ts │ │ │ │ │ ├── event-list.component.spec.ts │ │ │ │ │ ├── event-list.component.ts │ │ │ │ │ ├── event-list.module.ts │ │ │ │ │ ├── event-order-by.pipe.spec.ts │ │ │ │ │ ├── event-order-by.pipe.ts │ │ │ │ │ ├── event.model.ts │ │ │ │ │ ├── event.service.spec.ts │ │ │ │ │ └── event.service.ts │ │ │ │ ├── expandable-section │ │ │ │ │ ├── expandable-section.component.html │ │ │ │ │ ├── expandable-section.component.ts │ │ │ │ │ └── expandable-section.module.ts │ │ │ │ ├── lazy-custom-element.component.spec.ts │ │ │ │ ├── lazy-custom-element.component.ts │ │ │ │ ├── live-example │ │ │ │ │ ├── live-example.component.html │ │ │ │ │ ├── live-example.component.spec.ts │ │ │ │ │ ├── live-example.component.ts │ │ │ │ │ └── live-example.module.ts │ │ │ │ ├── ngrx │ │ │ │ │ ├── circles.component.ts │ │ │ │ │ ├── circles.module.spec.ts │ │ │ │ │ ├── circles.module.ts │ │ │ │ │ ├── code-block.component.ts │ │ │ │ │ ├── code-block.module.spec.ts │ │ │ │ │ ├── code-block.module.ts │ │ │ │ │ ├── mff.component.ts │ │ │ │ │ ├── mff.module.ts │ │ │ │ │ ├── store-animation.component.scss │ │ │ │ │ ├── store-animation.component.ts │ │ │ │ │ ├── store-animation.module.spec.ts │ │ │ │ │ └── store-animation.module.ts │ │ │ │ ├── resource │ │ │ │ │ ├── resource-list.component.html │ │ │ │ │ ├── resource-list.component.spec.ts │ │ │ │ │ ├── resource-list.component.ts │ │ │ │ │ ├── resource-list.module.ts │ │ │ │ │ ├── resource.model.ts │ │ │ │ │ ├── resource.service.spec.ts │ │ │ │ │ └── resource.service.ts │ │ │ │ ├── search │ │ │ │ │ ├── file-not-found-search.component.spec.ts │ │ │ │ │ ├── file-not-found-search.component.ts │ │ │ │ │ └── file-not-found-search.module.ts │ │ │ │ └── toc │ │ │ │ │ ├── toc.component.html │ │ │ │ │ ├── toc.component.spec.ts │ │ │ │ │ ├── toc.component.ts │ │ │ │ │ └── toc.module.ts │ │ │ ├── documents │ │ │ │ ├── document-contents.ts │ │ │ │ ├── document.service.spec.ts │ │ │ │ └── document.service.ts │ │ │ ├── layout │ │ │ │ ├── doc-viewer │ │ │ │ │ ├── doc-viewer.component.spec.ts │ │ │ │ │ ├── doc-viewer.component.ts │ │ │ │ │ └── dt.component.ts │ │ │ │ ├── footer │ │ │ │ │ ├── footer.component.html │ │ │ │ │ └── footer.component.ts │ │ │ │ ├── mode-banner │ │ │ │ │ └── mode-banner.component.ts │ │ │ │ ├── nav-item │ │ │ │ │ ├── nav-item.component.html │ │ │ │ │ ├── nav-item.component.spec.ts │ │ │ │ │ └── nav-item.component.ts │ │ │ │ ├── nav-menu │ │ │ │ │ ├── nav-menu.component.spec.ts │ │ │ │ │ └── nav-menu.component.ts │ │ │ │ ├── notification │ │ │ │ │ ├── notification.component.html │ │ │ │ │ ├── notification.component.spec.ts │ │ │ │ │ └── notification.component.ts │ │ │ │ └── top-menu │ │ │ │ │ ├── top-menu.component.spec.ts │ │ │ │ │ └── top-menu.component.ts │ │ │ ├── navigation │ │ │ │ ├── navigation.model.ts │ │ │ │ ├── navigation.service.spec.ts │ │ │ │ └── navigation.service.ts │ │ │ ├── search │ │ │ │ ├── interfaces.ts │ │ │ │ ├── search-box │ │ │ │ │ ├── search-box.component.spec.ts │ │ │ │ │ └── search-box.component.ts │ │ │ │ ├── search-worker.js │ │ │ │ ├── search.service.spec.ts │ │ │ │ └── search.service.ts │ │ │ ├── shared │ │ │ │ ├── attribute-utils.spec.ts │ │ │ │ ├── attribute-utils.ts │ │ │ │ ├── copier.service.ts │ │ │ │ ├── current-date.ts │ │ │ │ ├── custom-icon-registry.spec.ts │ │ │ │ ├── custom-icon-registry.ts │ │ │ │ ├── deployment.service.spec.ts │ │ │ │ ├── deployment.service.ts │ │ │ │ ├── ga.service.spec.ts │ │ │ │ ├── ga.service.ts │ │ │ │ ├── location.service.spec.ts │ │ │ │ ├── location.service.ts │ │ │ │ ├── logger.service.spec.ts │ │ │ │ ├── logger.service.ts │ │ │ │ ├── reporting-error-handler.spec.ts │ │ │ │ ├── reporting-error-handler.ts │ │ │ │ ├── scroll-spy.service.spec.ts │ │ │ │ ├── scroll-spy.service.ts │ │ │ │ ├── scroll.service.spec.ts │ │ │ │ ├── scroll.service.ts │ │ │ │ ├── search-results │ │ │ │ │ ├── search-results.component.html │ │ │ │ │ ├── search-results.component.spec.ts │ │ │ │ │ └── search-results.component.ts │ │ │ │ ├── select │ │ │ │ │ ├── select.component.html │ │ │ │ │ ├── select.component.spec.ts │ │ │ │ │ └── select.component.ts │ │ │ │ ├── shared.module.ts │ │ │ │ ├── theme-picker │ │ │ │ │ └── theme-picker.component.ts │ │ │ │ ├── toc.service.spec.ts │ │ │ │ ├── toc.service.ts │ │ │ │ ├── web-worker.ts │ │ │ │ └── window.ts │ │ │ └── sw-updates │ │ │ │ ├── sw-updates.module.ts │ │ │ │ ├── sw-updates.service.spec.ts │ │ │ │ └── sw-updates.service.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── images │ │ │ │ ├── badge-white.png │ │ │ │ ├── badge-white.svg │ │ │ │ ├── badge.png │ │ │ │ ├── badge.svg │ │ │ │ ├── banner.svg │ │ │ │ ├── effects.svg │ │ │ │ ├── favicons │ │ │ │ │ ├── android-chrome-192x192.png │ │ │ │ │ ├── android-chrome-512x512.png │ │ │ │ │ ├── apple-touch-icon.png │ │ │ │ │ ├── favicon-16x16.png │ │ │ │ │ ├── favicon-32x32.png │ │ │ │ │ └── favicon.ico │ │ │ │ ├── header.svg │ │ │ │ ├── logos │ │ │ │ │ ├── angular │ │ │ │ │ │ ├── angular.png │ │ │ │ │ │ ├── angular.svg │ │ │ │ │ │ ├── angular_solidBlack.png │ │ │ │ │ │ ├── angular_solidBlack.svg │ │ │ │ │ │ ├── angular_whiteTransparent.png │ │ │ │ │ │ ├── angular_whiteTransparent.svg │ │ │ │ │ │ ├── angular_whiteTransparent_withMargin.png │ │ │ │ │ │ ├── logo-nav@2x.png │ │ │ │ │ │ └── shield-large.svg │ │ │ │ │ ├── angularjs │ │ │ │ │ │ └── AngularJS-Shield.svg │ │ │ │ │ ├── github-icon.svg │ │ │ │ │ └── twitter-icon.svg │ │ │ │ ├── schematics.svg │ │ │ │ ├── sponsors │ │ │ │ │ ├── briebug.png │ │ │ │ │ ├── house-of-angular.png │ │ │ │ │ ├── nrwl-logo.svg │ │ │ │ │ └── nx.svg │ │ │ │ ├── state.png │ │ │ │ ├── state.svg │ │ │ │ └── support │ │ │ │ │ └── angular-404.svg │ │ │ └── js │ │ │ │ └── prettify.js │ │ ├── environments │ │ │ ├── environment.archive.ts │ │ │ ├── environment.next.ts │ │ │ ├── environment.stable.ts │ │ │ └── environment.ts │ │ ├── extra-files │ │ │ ├── README.md │ │ │ ├── archive │ │ │ │ └── robots.txt │ │ │ ├── next │ │ │ │ ├── CNAME │ │ │ │ └── robots.txt │ │ │ └── stable │ │ │ │ └── robots.txt │ │ ├── google385281288605d160.html │ │ ├── index.html │ │ ├── karma.conf.js │ │ ├── main.ts │ │ ├── noop-worker-basic.js │ │ ├── polyfills.ts │ │ ├── pwa-manifest.json │ │ ├── styles │ │ │ ├── 0-base │ │ │ │ ├── _index.scss │ │ │ │ ├── _typography-theme.scss │ │ │ │ └── _typography.scss │ │ │ ├── 1-layouts │ │ │ │ ├── _index.scss │ │ │ │ ├── _theme.scss │ │ │ │ ├── app-pages │ │ │ │ │ └── _api-pages.scss │ │ │ │ ├── content-layout │ │ │ │ │ └── _content-layout.scss │ │ │ │ ├── doc_viewer │ │ │ │ │ └── _doc-viewer.scss │ │ │ │ ├── footer │ │ │ │ │ ├── _footer-theme.scss │ │ │ │ │ └── _footer.scss │ │ │ │ ├── homepage │ │ │ │ │ └── _homepage.scss │ │ │ │ ├── layout-global │ │ │ │ │ ├── _layout-global-theme.scss │ │ │ │ │ └── _layout-global.scss │ │ │ │ ├── marketing-layout │ │ │ │ │ ├── _marketing-layout-theme.scss │ │ │ │ │ └── _marketing-layout.scss │ │ │ │ ├── not-found │ │ │ │ │ ├── _not-found-theme.scss │ │ │ │ │ └── _not-found.scss │ │ │ │ ├── sidenav │ │ │ │ │ ├── _sidenav-theme.scss │ │ │ │ │ └── _sidenav.scss │ │ │ │ ├── table-of-contents │ │ │ │ │ └── _table-of-contents.scss │ │ │ │ └── top-menu │ │ │ │ │ ├── _top-menu-theme.scss │ │ │ │ │ └── _top-menu.scss │ │ │ ├── 2-modules │ │ │ │ ├── _index.scss │ │ │ │ ├── _theme.scss │ │ │ │ ├── alert │ │ │ │ │ ├── _alert-theme.scss │ │ │ │ │ └── _alert.scss │ │ │ │ ├── api-list │ │ │ │ │ ├── _api-list-theme.scss │ │ │ │ │ └── _api-list.scss │ │ │ │ ├── api-pages │ │ │ │ │ ├── _api-pages-theme.scss │ │ │ │ │ └── _api-pages.scss │ │ │ │ ├── buttons │ │ │ │ │ ├── _buttons-theme.scss │ │ │ │ │ └── _buttons.scss │ │ │ │ ├── callout │ │ │ │ │ ├── _callout-theme.scss │ │ │ │ │ └── _callout.scss │ │ │ │ ├── card │ │ │ │ │ ├── _card-theme.scss │ │ │ │ │ └── _card.scss │ │ │ │ ├── code │ │ │ │ │ ├── _code-theme.scss │ │ │ │ │ └── _code.scss │ │ │ │ ├── contribute │ │ │ │ │ └── _contribute.scss │ │ │ │ ├── contributor │ │ │ │ │ ├── _contributor-theme.scss │ │ │ │ │ └── _contributor.scss │ │ │ │ ├── deploy-theme │ │ │ │ │ └── _deploy-theme.scss │ │ │ │ ├── details │ │ │ │ │ ├── _details-theme.scss │ │ │ │ │ └── _details.scss │ │ │ │ ├── edit-page-cta │ │ │ │ │ ├── _edit-page-cta-theme.scss │ │ │ │ │ └── _edit-page-cta.scss │ │ │ │ ├── enterprise-support │ │ │ │ │ └── _enterprise-support.scss │ │ │ │ ├── features │ │ │ │ │ └── _features.scss │ │ │ │ ├── filetree │ │ │ │ │ ├── _filetree-theme.scss │ │ │ │ │ └── _filetree.scss │ │ │ │ ├── heading-anchors │ │ │ │ │ ├── _heading-anchors-theme.scss │ │ │ │ │ └── _heading-anchors.scss │ │ │ │ ├── hr │ │ │ │ │ ├── _hr-theme.scss │ │ │ │ │ └── _hr.scss │ │ │ │ ├── images │ │ │ │ │ ├── _images-theme.scss │ │ │ │ │ └── _images.scss │ │ │ │ ├── label │ │ │ │ │ ├── _label-theme.scss │ │ │ │ │ └── _label.scss │ │ │ │ ├── notification │ │ │ │ │ ├── _notification-theme.scss │ │ │ │ │ └── _notification.scss │ │ │ │ ├── presskit │ │ │ │ │ ├── _presskit-theme.scss │ │ │ │ │ └── _presskit.scss │ │ │ │ ├── progress-bar │ │ │ │ │ └── _progress-bar.scss │ │ │ │ ├── resources │ │ │ │ │ ├── _resources-theme.scss │ │ │ │ │ └── _resources.scss │ │ │ │ ├── search-results │ │ │ │ │ ├── _search-results-theme.scss │ │ │ │ │ └── _search-results.scss │ │ │ │ ├── select-menu │ │ │ │ │ ├── _select-menu-theme.scss │ │ │ │ │ └── _select-menu.scss │ │ │ │ ├── table │ │ │ │ │ ├── _table-theme.scss │ │ │ │ │ └── _table.scss │ │ │ │ └── toc │ │ │ │ │ ├── _toc-theme.scss │ │ │ │ │ └── _toc.scss │ │ │ ├── _app-theme.scss │ │ │ ├── _constants.scss │ │ │ ├── _mixins.scss │ │ │ ├── _ngrx.scss │ │ │ ├── _print.scss │ │ │ ├── custom-themes │ │ │ │ ├── dark-theme.scss │ │ │ │ └── light-theme.scss │ │ │ └── main.scss │ │ ├── test.ts │ │ ├── testing │ │ │ ├── doc-viewer-utils.ts │ │ │ ├── location.service.ts │ │ │ ├── logger.service.ts │ │ │ └── search.service.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── typings.d.ts │ ├── tests │ │ ├── deployment │ │ │ ├── e2e │ │ │ │ ├── protractor.conf.js │ │ │ │ ├── redirection.e2e-spec.ts │ │ │ │ ├── site.po.ts │ │ │ │ └── smoke-tests.e2e-spec.ts │ │ │ ├── shared │ │ │ │ ├── URLS_TO_REDIRECT.txt │ │ │ │ └── helpers.ts │ │ │ └── unit │ │ │ │ ├── testFirebaseRedirection.spec.ts │ │ │ │ └── testServiceWorkerRoutes.spec.ts │ │ └── e2e │ │ │ ├── api.e2e-spec.ts │ │ │ ├── api.po.ts │ │ │ ├── app.e2e-spec.ts │ │ │ ├── app.po.ts │ │ │ ├── onerror.e2e-spec.ts │ │ │ ├── protractor.conf.js │ │ │ ├── search.e2e-spec.ts │ │ │ └── tsconfig.e2e.json │ ├── tools │ │ ├── README.md │ │ ├── RELEASE.md │ │ ├── cli-patches │ │ │ ├── README.md │ │ │ └── patch.js │ │ ├── example-zipper │ │ │ ├── README.md │ │ │ ├── customizer │ │ │ │ └── package-json │ │ │ │ │ ├── base.json │ │ │ │ │ ├── cli.json │ │ │ │ │ ├── elements.json │ │ │ │ │ ├── i18n.json │ │ │ │ │ ├── package.json │ │ │ │ │ ├── packageJsonCustomizer.js │ │ │ │ │ ├── systemjs.json │ │ │ │ │ ├── testing.json │ │ │ │ │ └── universal.json │ │ │ ├── exampleZipper.js │ │ │ └── generateZips.js │ │ ├── examples │ │ │ ├── README.md │ │ │ ├── example-boilerplate.js │ │ │ ├── example-boilerplate.spec.js │ │ │ ├── run-example-e2e.js │ │ │ ├── shared │ │ │ │ ├── boilerplate │ │ │ │ │ ├── UPDATING_CLI.md │ │ │ │ │ ├── cli │ │ │ │ │ │ ├── .editorconfig │ │ │ │ │ │ ├── angular.json │ │ │ │ │ │ ├── e2e │ │ │ │ │ │ │ ├── protractor.conf.js │ │ │ │ │ │ │ ├── src │ │ │ │ │ │ │ │ └── app.po.ts │ │ │ │ │ │ │ ├── tsconfig.e2e.json │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ ├── karma.conf.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src │ │ │ │ │ │ │ ├── .browserslistrc │ │ │ │ │ │ │ ├── assets │ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ │ ├── environments │ │ │ │ │ │ │ │ ├── environment.prod.ts │ │ │ │ │ │ │ │ └── environment.ts │ │ │ │ │ │ │ ├── favicon.ico │ │ │ │ │ │ │ ├── karma.conf.js │ │ │ │ │ │ │ ├── polyfills.ts │ │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ │ └── test.ts │ │ │ │ │ │ ├── tsconfig.app.json │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── tsconfig.spec.json │ │ │ │ │ ├── common │ │ │ │ │ │ └── src │ │ │ │ │ │ │ └── styles.css │ │ │ │ │ └── systemjs │ │ │ │ │ │ ├── bs-config.e2e.json │ │ │ │ │ │ ├── bs-config.json │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── src │ │ │ │ │ │ ├── systemjs-angular-loader.js │ │ │ │ │ │ ├── systemjs.config.js │ │ │ │ │ │ ├── systemjs.config.web.build.js │ │ │ │ │ │ ├── systemjs.config.web.js │ │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── jsconfig.json │ │ │ │ ├── package.json │ │ │ │ ├── protractor.config.js │ │ │ │ └── tsconfig.json │ │ │ └── test.js │ │ ├── firebase-test-utils │ │ │ ├── FirebaseGlob.spec.ts │ │ │ ├── FirebaseGlob.ts │ │ │ ├── FirebaseRedirect.spec.ts │ │ │ ├── FirebaseRedirect.ts │ │ │ ├── FirebaseRedirector.spec.ts │ │ │ └── FirebaseRedirector.ts │ │ ├── ng-packages-installer │ │ │ ├── index.js │ │ │ └── index.spec.js │ │ ├── stackblitz-builder │ │ │ ├── README.md │ │ │ ├── builder.js │ │ │ └── generateStackblitz.js │ │ └── transforms │ │ │ ├── .eslintignore │ │ │ ├── .eslintrc.js │ │ │ ├── README.md │ │ │ ├── angular-api-package │ │ │ ├── content-rules │ │ │ │ ├── minLength.js │ │ │ │ ├── minLength.spec.js │ │ │ │ ├── noMarkdownHeadings.js │ │ │ │ └── noMarkdownHeadings.spec.js │ │ │ ├── index.js │ │ │ ├── mocks │ │ │ │ ├── importedSrc.ts │ │ │ │ └── testSrc.ts │ │ │ ├── processors │ │ │ │ ├── addMetadataAliases.js │ │ │ │ ├── addMetadataAliases.spec.js │ │ │ │ ├── addNotYetDocumentedProperty.js │ │ │ │ ├── addNotYetDocumentedProperty.spec.js │ │ │ │ ├── computeApiBreadCrumbs.js │ │ │ │ ├── computeApiBreadCrumbs.spec.js │ │ │ │ ├── computeSearchTitle.js │ │ │ │ ├── computeSearchTitle.spec.js │ │ │ │ ├── computeStability.js │ │ │ │ ├── computeStability.spec.js │ │ │ │ ├── convertPrivateClassesToInterfaces.js │ │ │ │ ├── extractDecoratedClasses.js │ │ │ │ ├── extractDecoratedClasses.spec.js │ │ │ │ ├── extractPipeParams.js │ │ │ │ ├── extractPipeParams.spec.js │ │ │ │ ├── filterContainedDocs.js │ │ │ │ ├── filterPrivateDocs.js │ │ │ │ ├── filterPrivateDocs.spec.js │ │ │ │ ├── fixupRealProjectRelativePath.js │ │ │ │ ├── fixupRealProjectRelativePath.spec.js │ │ │ │ ├── generateApiListDoc.js │ │ │ │ ├── generateApiListDoc.spec.js │ │ │ │ ├── markBarredODocsAsPrivate.js │ │ │ │ ├── markBarredODocsAsPrivate.spec.js │ │ │ │ ├── matchUpDirectiveDecorators.js │ │ │ │ ├── matchUpDirectiveDecorators.spec.js │ │ │ │ ├── mergeDecoratorDocs.js │ │ │ │ ├── mergeDecoratorDocs.spec.js │ │ │ │ ├── migrateLegacyJSDocTags.js │ │ │ │ ├── migrateLegacyJSDocTags.spec.js │ │ │ │ ├── processClassLikeMembers.js │ │ │ │ ├── processClassLikeMembers.spec.js │ │ │ │ ├── processPackages.js │ │ │ │ ├── processPackages.spec.js │ │ │ │ ├── removeInjectableConstructors.js │ │ │ │ ├── removeInjectableConstructors.spec.js │ │ │ │ ├── simplifyMemberAnchors.js │ │ │ │ ├── simplifyMemberAnchors.spec.js │ │ │ │ ├── splitDescription.js │ │ │ │ └── splitDescription.spec.js │ │ │ ├── readers │ │ │ │ └── package-content.js │ │ │ └── tag-defs │ │ │ │ ├── Annotation.js │ │ │ │ ├── deprecated.js │ │ │ │ ├── docsNotRequired.js │ │ │ │ ├── experimental.js │ │ │ │ ├── howToUse.js │ │ │ │ ├── internal.js │ │ │ │ ├── ngModule.js │ │ │ │ ├── no-description.js │ │ │ │ ├── nocollapse.js │ │ │ │ ├── publicApi.js │ │ │ │ ├── security.js │ │ │ │ ├── selectors.js │ │ │ │ ├── stable.js │ │ │ │ ├── suppress.js │ │ │ │ ├── syntax.js │ │ │ │ ├── throws.js │ │ │ │ ├── ts2dart_const.js │ │ │ │ ├── usageNotes.js │ │ │ │ └── whatItDoes.js │ │ │ ├── angular-base-package │ │ │ ├── ignore.words │ │ │ ├── index.js │ │ │ ├── post-processors │ │ │ │ ├── add-image-dimensions.js │ │ │ │ ├── add-image-dimensions.spec.js │ │ │ │ ├── auto-link-code.js │ │ │ │ ├── auto-link-code.spec.js │ │ │ │ ├── autolink-headings.js │ │ │ │ ├── autolink-headings.spec.js │ │ │ │ ├── h1-checker.js │ │ │ │ └── h1-checker.spec.js │ │ │ ├── processors │ │ │ │ ├── checkContentRules.js │ │ │ │ ├── checkContentRules.spec.js │ │ │ │ ├── checkUnbalancedBackTicks.js │ │ │ │ ├── checkUnbalancedBackTicks.spec.js │ │ │ │ ├── convertToJson.js │ │ │ │ ├── convertToJson.spec.js │ │ │ │ ├── copyContentAssets.js │ │ │ │ ├── copyContentAssets.spec.js │ │ │ │ ├── createSitemap.js │ │ │ │ ├── createSitemap.spec.js │ │ │ │ ├── disambiguateDocPaths.js │ │ │ │ ├── fixInternalDocumentLinks.js │ │ │ │ ├── fixInternalDocumentLinks.spec.js │ │ │ │ ├── generateKeywords.js │ │ │ │ ├── generateKeywords.spec.js │ │ │ │ ├── renderLinkInfo.js │ │ │ │ └── renderLinkInfo.spec.js │ │ │ ├── readers │ │ │ │ └── json.js │ │ │ ├── rendering │ │ │ │ ├── filterByPropertyValue.js │ │ │ │ ├── filterByPropertyValue.spec.js │ │ │ │ ├── hasValues.js │ │ │ │ ├── hasValues.spec.js │ │ │ │ ├── indentForMarkdown.js │ │ │ │ ├── toId.js │ │ │ │ ├── toId.spec.js │ │ │ │ ├── trimBlankLines.js │ │ │ │ ├── trimBlankLines.spec.js │ │ │ │ ├── truncateCode.js │ │ │ │ └── truncateCode.spec.js │ │ │ └── services │ │ │ │ ├── copyFolder.js │ │ │ │ ├── filterAmbiguousDirectiveAliases.js │ │ │ │ ├── filterAmbiguousDirectiveAliases.spec.js │ │ │ │ ├── filterPipes.js │ │ │ │ ├── filterPipes.spec.js │ │ │ │ └── getImageDimensions.js │ │ │ ├── angular-content-package │ │ │ ├── index.js │ │ │ └── inline-tag-defs │ │ │ │ └── anchor.js │ │ │ ├── angular.io-package │ │ │ ├── index.js │ │ │ └── processors │ │ │ │ ├── cleanGeneratedFiles.js │ │ │ │ ├── createOverviewDump.js │ │ │ │ └── processNavigationMap.js │ │ │ ├── authors-package │ │ │ ├── api-package.js │ │ │ ├── guide-package.js │ │ │ ├── index.js │ │ │ ├── index.spec.js │ │ │ ├── marketing-package.js │ │ │ ├── tutorial-package.js │ │ │ └── watchr.js │ │ │ ├── config.js │ │ │ ├── content-package │ │ │ ├── index.js │ │ │ ├── readers │ │ │ │ ├── content.js │ │ │ │ └── content.spec.js │ │ │ └── tag-defs │ │ │ │ ├── intro.js │ │ │ │ └── title.js │ │ │ ├── examples-package │ │ │ ├── file-readers │ │ │ │ └── example-reader.js │ │ │ ├── index.js │ │ │ ├── inline-tag-defs │ │ │ │ ├── example.js │ │ │ │ └── example.spec.js │ │ │ ├── processors │ │ │ │ ├── collect-examples.js │ │ │ │ ├── collect-examples.spec.js │ │ │ │ ├── render-examples.js │ │ │ │ └── render-examples.spec.js │ │ │ └── services │ │ │ │ ├── example-map.js │ │ │ │ ├── getExampleRegion.js │ │ │ │ ├── getExampleRegion.spec.js │ │ │ │ ├── parseArgString.js │ │ │ │ ├── region-matchers │ │ │ │ ├── block-c.js │ │ │ │ ├── block-c.spec.js │ │ │ │ ├── html.js │ │ │ │ ├── html.spec.js │ │ │ │ ├── inline-c-only.js │ │ │ │ ├── inline-c-only.spec.js │ │ │ │ ├── inline-c.js │ │ │ │ ├── inline-c.spec.js │ │ │ │ ├── inline-hash.js │ │ │ │ └── inline-hash.spec.js │ │ │ │ ├── region-parser.js │ │ │ │ └── region-parser.spec.js │ │ │ ├── helpers │ │ │ ├── test-package.js │ │ │ ├── utils.js │ │ │ └── utils.spec.js │ │ │ ├── links-package │ │ │ ├── index.js │ │ │ ├── inline-tag-defs │ │ │ │ ├── link.js │ │ │ │ └── link.spec.js │ │ │ └── services │ │ │ │ ├── disambiguators │ │ │ │ ├── disambiguateByContainer.js │ │ │ │ ├── disambiguateByContainer.spec.js │ │ │ │ ├── disambiguateByDeprecated.js │ │ │ │ ├── disambiguateByDeprecated.spec.js │ │ │ │ ├── disambiguateByModule.js │ │ │ │ ├── disambiguateByModule.spec.js │ │ │ │ ├── disambiguateByNonMember.js │ │ │ │ └── disambiguateByNonMember.spec.js │ │ │ │ ├── getAliases.js │ │ │ │ ├── getAliases.spec.js │ │ │ │ ├── getDocFromAlias.js │ │ │ │ ├── getDocFromAlias.spec.js │ │ │ │ ├── getLinkInfo.js │ │ │ │ └── getLinkInfo.spec.js │ │ │ ├── post-process-package │ │ │ ├── index.js │ │ │ └── processors │ │ │ │ ├── post-process-html.js │ │ │ │ └── post-process-html.spec.js │ │ │ ├── remark-package │ │ │ ├── index.js │ │ │ └── services │ │ │ │ ├── handlers │ │ │ │ └── code.js │ │ │ │ ├── markedNunjucksFilter.js │ │ │ │ ├── plugins │ │ │ │ └── mapHeadings.js │ │ │ │ ├── renderMarkdown.js │ │ │ │ └── renderMarkdown.spec.js │ │ │ ├── target-package │ │ │ ├── index.js │ │ │ ├── inline-tag-defs │ │ │ │ ├── target.js │ │ │ │ └── target.spec.js │ │ │ └── services │ │ │ │ ├── targetEnvironments.js │ │ │ │ └── targetEnvironments.spec.js │ │ │ ├── templates │ │ │ ├── README.md │ │ │ ├── api │ │ │ │ ├── base.template.html │ │ │ │ ├── class.template.html │ │ │ │ ├── const.template.html │ │ │ │ ├── decorator.template.html │ │ │ │ ├── directive.template.html │ │ │ │ ├── enum.template.html │ │ │ │ ├── export-base.template.html │ │ │ │ ├── function.template.html │ │ │ │ ├── includes │ │ │ │ │ ├── annotations.html │ │ │ │ │ ├── class-members.html │ │ │ │ │ ├── class-overview.html │ │ │ │ │ ├── decorator-overview.html │ │ │ │ │ ├── deprecation.html │ │ │ │ │ ├── description.html │ │ │ │ │ ├── export-as.html │ │ │ │ │ ├── info-bar.html │ │ │ │ │ ├── interface-overview.html │ │ │ │ │ ├── metadata.html │ │ │ │ │ ├── ngmodule.html │ │ │ │ │ ├── pipe-overview.html │ │ │ │ │ ├── security-notes.html │ │ │ │ │ ├── see-also.html │ │ │ │ │ ├── selectors.html │ │ │ │ │ └── usageNotes.html │ │ │ │ ├── interface.template.html │ │ │ │ ├── let.template.html │ │ │ │ ├── lib │ │ │ │ │ ├── descendants.html │ │ │ │ │ ├── memberHelpers.html │ │ │ │ │ └── paramList.html │ │ │ │ ├── ngmodule.template.html │ │ │ │ ├── package.template.html │ │ │ │ ├── pipe.template.html │ │ │ │ ├── type-alias.template.html │ │ │ │ ├── value-module.template.html │ │ │ │ └── var.template.html │ │ │ ├── cli │ │ │ │ ├── cli-command.template.html │ │ │ │ ├── cli-container.template.html │ │ │ │ ├── include │ │ │ │ │ ├── cli-breadcrumb.html │ │ │ │ │ └── cli-header.html │ │ │ │ └── lib │ │ │ │ │ └── cli.html │ │ │ ├── content.template.html │ │ │ ├── data-module.template.js │ │ │ ├── disambiguator.template.html │ │ │ ├── example-region.template.html │ │ │ ├── json-doc.template.json │ │ │ ├── lib │ │ │ │ └── githubLinks.html │ │ │ ├── overview-dump.template.html │ │ │ └── sitemap.template.xml │ │ │ └── test.js │ ├── tsconfig.json │ └── yarn.lock ├── standalone-app-e2e │ ├── .eslintrc.json │ ├── cypress.config.ts │ ├── project.json │ ├── src │ │ ├── integration │ │ │ └── app.cy.ts │ │ └── support │ │ │ ├── app.po.ts │ │ │ └── e2e.ts │ └── tsconfig.json ├── standalone-app │ ├── .eslintrc.json │ ├── 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 │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.css │ │ └── test-setup.ts │ ├── tsconfig.app.json │ ├── tsconfig.editor.json │ ├── tsconfig.json │ └── tsconfig.spec.json └── www │ ├── .eslintrc.json │ ├── firebase.json │ ├── index.html │ ├── package.json │ ├── project.json │ ├── public │ ├── .gitkeep │ ├── _redirects │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── browserconfig.xml │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── images │ │ ├── bios │ │ │ ├── _no-one.jpg │ │ │ ├── alex-okrushko.jpg │ │ │ ├── brandonroberts.jpg │ │ │ ├── john-papa.jpg │ │ │ ├── marko.jpg │ │ │ ├── mike-ryan.jpg │ │ │ ├── rob-wormald.jpg │ │ │ ├── timd.jpg │ │ │ ├── victor.png │ │ │ ├── wardbell.jpg │ │ │ └── wesgrimes.jpg │ │ ├── guide │ │ │ ├── component-store │ │ │ │ ├── file-structure.png │ │ │ │ ├── state-structure.png │ │ │ │ └── types-of-state.png │ │ │ ├── data │ │ │ │ └── action-flow.png │ │ │ └── store │ │ │ │ ├── state-management-lifecycle.png │ │ │ │ └── state-management-lifecycle.psd │ │ └── marketing │ │ │ └── workshops │ │ │ └── header.jpg │ ├── mstile-144x144.png │ ├── mstile-150x150.png │ ├── mstile-310x150.png │ ├── mstile-310x310.png │ ├── mstile-70x70.png │ ├── ngrx-logo-pink.svg │ ├── ngrx-logo.svg │ ├── safari-pinned-tab.svg │ └── 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 │ │ │ ├── docs │ │ │ │ ├── alert.component.ts │ │ │ │ ├── code-example.component.ts │ │ │ │ ├── code-highlight.pipe.ts │ │ │ │ ├── deprecated-chip.component.ts │ │ │ │ ├── inline-markdown.pipe.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 │ │ ├── examples │ │ │ ├── __base │ │ │ │ ├── index.html │ │ │ │ ├── package.json │ │ │ │ ├── src │ │ │ │ │ ├── _theme.scss │ │ │ │ │ ├── app.component.ts │ │ │ │ │ ├── app.config.ts │ │ │ │ │ ├── main.ts │ │ │ │ │ └── styles.scss │ │ │ │ ├── stackblitz.yml │ │ │ │ ├── tsconfig.json │ │ │ │ └── vite.config.js │ │ │ ├── examples.service.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.ts │ │ │ │ └── stackblitz.yml │ │ ├── pages │ │ │ ├── (home).page.ts │ │ │ ├── api │ │ │ │ ├── [package] │ │ │ │ │ ├── [subpackage] │ │ │ │ │ │ └── [symbol].page.ts │ │ │ │ │ └── [symbol].page.ts │ │ │ │ └── index.page.ts │ │ │ ├── guide.page.ts │ │ │ ├── guide │ │ │ │ ├── component-store │ │ │ │ │ ├── comparison.md │ │ │ │ │ ├── effect.md │ │ │ │ │ ├── index.md │ │ │ │ │ ├── initialization.md │ │ │ │ │ ├── install.md │ │ │ │ │ ├── lifecycle.md │ │ │ │ │ ├── read.md │ │ │ │ │ ├── usage.md │ │ │ │ │ └── write.md │ │ │ │ ├── component │ │ │ │ │ ├── index.md │ │ │ │ │ ├── install.md │ │ │ │ │ ├── let.md │ │ │ │ │ └── push.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 │ │ │ │ │ │ ├── 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 │ │ │ │ │ ├── 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 │ │ │ │ │ │ ├── index.md │ │ │ │ │ │ ├── lifecycle-hooks.md │ │ │ │ │ │ ├── private-store-members.md │ │ │ │ │ │ ├── state-tracking.md │ │ │ │ │ │ └── testing.md │ │ │ │ ├── store-devtools │ │ │ │ │ ├── config.md │ │ │ │ │ ├── index.md │ │ │ │ │ ├── install.md │ │ │ │ │ └── recipes │ │ │ │ │ │ └── exclude.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 │ │ │ │ └── style-guide.md │ │ │ └── workshops.page.ts │ │ ├── reference │ │ │ ├── api-report.min.json │ │ │ ├── component-store │ │ │ │ ├── ComponentStore.json │ │ │ │ ├── INITIAL_STATE_TOKEN.json │ │ │ │ ├── OnStateInit.json │ │ │ │ ├── OnStoreInit.json │ │ │ │ ├── Projector.json │ │ │ │ ├── SelectConfig.json │ │ │ │ ├── SelectorResults.json │ │ │ │ └── provideComponentStore.json │ │ │ ├── data │ │ │ │ ├── ChangeSet.json │ │ │ │ ├── ChangeSetAdd.json │ │ │ │ ├── ChangeSetDelete.json │ │ │ │ ├── ChangeSetItem.json │ │ │ │ ├── ChangeSetItemFactory.json │ │ │ │ ├── ChangeSetOperation.json │ │ │ │ ├── ChangeSetUpdate.json │ │ │ │ ├── ChangeSetUpsert.json │ │ │ │ ├── ChangeState.json │ │ │ │ ├── ChangeStateMap.json │ │ │ │ ├── ChangeType.json │ │ │ │ ├── ClearCollections.json │ │ │ │ ├── CollectionSelectors.json │ │ │ │ ├── CorrelationIdGenerator.json │ │ │ │ ├── DataServiceError.json │ │ │ │ ├── DefaultDataService.json │ │ │ │ ├── DefaultDataServiceConfig.json │ │ │ │ ├── DefaultDataServiceFactory.json │ │ │ │ ├── DefaultHttpUrlGenerator.json │ │ │ │ ├── DefaultLogger.json │ │ │ │ ├── DefaultPersistenceResultHandler.json │ │ │ │ ├── DefaultPluralizer.json │ │ │ │ ├── ENTITY_CACHE_META_REDUCERS.json │ │ │ │ ├── ENTITY_CACHE_NAME.json │ │ │ │ ├── ENTITY_CACHE_NAME_TOKEN.json │ │ │ │ ├── ENTITY_CACHE_SELECTOR_TOKEN.json │ │ │ │ ├── ENTITY_COLLECTION_META_REDUCERS.json │ │ │ │ ├── ENTITY_METADATA_TOKEN.json │ │ │ │ ├── EntityAction.json │ │ │ │ ├── EntityActionDataServiceError.json │ │ │ │ ├── EntityActionFactory.json │ │ │ │ ├── EntityActionGuard.json │ │ │ │ ├── EntityActionOptions.json │ │ │ │ ├── EntityActionPayload.json │ │ │ │ ├── EntityCache.json │ │ │ │ ├── EntityCacheAction.json │ │ │ │ ├── EntityCacheCommands.json │ │ │ │ ├── EntityCacheDataService.json │ │ │ │ ├── EntityCacheDispatcher.json │ │ │ │ ├── EntityCacheEffects.json │ │ │ │ ├── EntityCacheQuerySet.json │ │ │ │ ├── EntityCacheReducerFactory.json │ │ │ │ ├── EntityCacheSelector.json │ │ │ │ ├── EntityChangeTracker.json │ │ │ │ ├── EntityChangeTrackerBase.json │ │ │ │ ├── EntityCollection.json │ │ │ │ ├── EntityCollectionCreator.json │ │ │ │ ├── EntityCollectionDataService.json │ │ │ │ ├── EntityCollectionReducer.json │ │ │ │ ├── EntityCollectionReducerFactory.json │ │ │ │ ├── EntityCollectionReducerMethodMap.json │ │ │ │ ├── EntityCollectionReducerMethods.json │ │ │ │ ├── EntityCollectionReducerMethodsFactory.json │ │ │ │ ├── EntityCollectionReducerRegistry.json │ │ │ │ ├── EntityCollectionReducers.json │ │ │ │ ├── EntityCollectionService.json │ │ │ │ ├── EntityCollectionServiceBase.json │ │ │ │ ├── EntityCollectionServiceElements.json │ │ │ │ ├── EntityCollectionServiceElementsFactory.json │ │ │ │ ├── EntityCollectionServiceFactory.json │ │ │ │ ├── EntityCollectionServiceMap.json │ │ │ │ ├── EntityCommands.json │ │ │ │ ├── EntityDataModule.json │ │ │ │ ├── EntityDataModuleConfig.json │ │ │ │ ├── EntityDataModuleWithoutEffects.json │ │ │ │ ├── EntityDataService.json │ │ │ │ ├── EntityDefinition.json │ │ │ │ ├── EntityDefinitionService.json │ │ │ │ ├── EntityDefinitions.json │ │ │ │ ├── EntityDispatcher.json │ │ │ │ ├── EntityDispatcherBase.json │ │ │ │ ├── EntityDispatcherDefaultOptions.json │ │ │ │ ├── EntityDispatcherFactory.json │ │ │ │ ├── EntityEffects.json │ │ │ │ ├── EntityFilterFn.json │ │ │ │ ├── EntityHttpResourceUrls.json │ │ │ │ ├── EntityMetadata.json │ │ │ │ ├── EntityMetadataMap.json │ │ │ │ ├── EntityOp.json │ │ │ │ ├── EntityPluralNames.json │ │ │ │ ├── EntitySelectors$.json │ │ │ │ ├── EntitySelectors$Factory.json │ │ │ │ ├── EntitySelectors.json │ │ │ │ ├── EntitySelectorsFactory.json │ │ │ │ ├── EntityServerCommands.json │ │ │ │ ├── EntityServices.json │ │ │ │ ├── EntityServicesBase.json │ │ │ │ ├── EntityServicesElements.json │ │ │ │ ├── HttpMethods.json │ │ │ │ ├── HttpResourceUrls.json │ │ │ │ ├── HttpUrlGenerator.json │ │ │ │ ├── INITIAL_ENTITY_CACHE_STATE.json │ │ │ │ ├── LoadCollections.json │ │ │ │ ├── Logger.json │ │ │ │ ├── MergeQuerySet.json │ │ │ │ ├── MergeStrategy.json │ │ │ │ ├── OP_ERROR.json │ │ │ │ ├── OP_SUCCESS.json │ │ │ │ ├── PLURAL_NAMES_TOKEN.json │ │ │ │ ├── PersistanceCanceled.json │ │ │ │ ├── PersistenceResultHandler.json │ │ │ │ ├── Pluralizer.json │ │ │ │ ├── PropsFilterFnFactory.json │ │ │ │ ├── QueryParams.json │ │ │ │ ├── RequestData.json │ │ │ │ ├── SaveEntities.json │ │ │ │ ├── SaveEntitiesCancel.json │ │ │ │ ├── SaveEntitiesCanceled.json │ │ │ │ ├── SaveEntitiesError.json │ │ │ │ ├── SaveEntitiesSuccess.json │ │ │ │ ├── SetEntityCache.json │ │ │ │ ├── UpdateResponseData.json │ │ │ │ ├── createEmptyEntityCollection.json │ │ │ │ ├── createEntityCacheSelector.json │ │ │ │ ├── createEntityDefinition.json │ │ │ │ ├── defaultSelectId.json │ │ │ │ ├── entityCacheSelectorProvider.json │ │ │ │ ├── excludeEmptyChangeSetItems.json │ │ │ │ ├── flattenArgs.json │ │ │ │ ├── getGuid.json │ │ │ │ ├── getGuidComb.json │ │ │ │ ├── guidComparer.json │ │ │ │ ├── makeErrorOp.json │ │ │ │ ├── makeSuccessOp.json │ │ │ │ ├── normalizeRoot.json │ │ │ │ ├── ofEntityOp.json │ │ │ │ ├── ofEntityType.json │ │ │ │ ├── persistOps.json │ │ │ │ ├── provideEntityData.json │ │ │ │ ├── toUpdateFactory.json │ │ │ │ └── withEffects.json │ │ │ ├── effects │ │ │ │ ├── Actions.json │ │ │ │ ├── CreateEffectMetadata.json │ │ │ │ ├── EFFECTS_ERROR_HANDLER.json │ │ │ │ ├── EffectConfig.json │ │ │ │ ├── EffectNotification.json │ │ │ │ ├── EffectSources.json │ │ │ │ ├── EffectsErrorHandler.json │ │ │ │ ├── EffectsFeatureModule.json │ │ │ │ ├── EffectsMetadata.json │ │ │ │ ├── EffectsModule.json │ │ │ │ ├── EffectsRootModule.json │ │ │ │ ├── EffectsRunner.json │ │ │ │ ├── FunctionalEffect.json │ │ │ │ ├── OnIdentifyEffects.json │ │ │ │ ├── OnInitEffects.json │ │ │ │ ├── OnRunEffects.json │ │ │ │ ├── ROOT_EFFECTS_INIT.json │ │ │ │ ├── USER_PROVIDED_EFFECTS.json │ │ │ │ ├── act.json │ │ │ │ ├── createEffect.json │ │ │ │ ├── defaultEffectsErrorHandler.json │ │ │ │ ├── getEffectsMetadata.json │ │ │ │ ├── mergeEffects.json │ │ │ │ ├── ofType.json │ │ │ │ ├── provideEffects.json │ │ │ │ ├── rootEffectsInit.json │ │ │ │ └── testing │ │ │ │ │ └── provideMockActions.json │ │ │ ├── entity │ │ │ │ ├── Comparer.json │ │ │ │ ├── Dictionary.json │ │ │ │ ├── DictionaryNum.json │ │ │ │ ├── EntityAdapter.json │ │ │ │ ├── EntityMap.json │ │ │ │ ├── EntityMapOne.json │ │ │ │ ├── EntityState.json │ │ │ │ ├── IdSelector.json │ │ │ │ ├── Predicate.json │ │ │ │ ├── Update.json │ │ │ │ └── createEntityAdapter.json │ │ │ ├── operators │ │ │ │ ├── concatLatestFrom.json │ │ │ │ ├── mapResponse.json │ │ │ │ └── tapResponse.json │ │ │ ├── reference.service.ts │ │ │ ├── router-store │ │ │ │ ├── BaseRouterStoreState.json │ │ │ │ ├── DEFAULT_ROUTER_FEATURENAME.json │ │ │ │ ├── FullRouterStateSerializer.json │ │ │ │ ├── MinimalActivatedRouteSnapshot.json │ │ │ │ ├── MinimalRouterStateSerializer.json │ │ │ │ ├── MinimalRouterStateSnapshot.json │ │ │ │ ├── NavigationActionTiming.json │ │ │ │ ├── ROUTER_CANCEL.json │ │ │ │ ├── ROUTER_CONFIG.json │ │ │ │ ├── ROUTER_ERROR.json │ │ │ │ ├── ROUTER_NAVIGATED.json │ │ │ │ ├── ROUTER_NAVIGATION.json │ │ │ │ ├── ROUTER_REQUEST.json │ │ │ │ ├── RouterAction.json │ │ │ │ ├── RouterCancelAction.json │ │ │ │ ├── RouterCancelPayload.json │ │ │ │ ├── RouterErrorAction.json │ │ │ │ ├── RouterErrorPayload.json │ │ │ │ ├── RouterNavigatedAction.json │ │ │ │ ├── RouterNavigatedPayload.json │ │ │ │ ├── RouterNavigationAction.json │ │ │ │ ├── RouterNavigationPayload.json │ │ │ │ ├── RouterReducerState.json │ │ │ │ ├── RouterRequestAction.json │ │ │ │ ├── RouterRequestPayload.json │ │ │ │ ├── RouterState.json │ │ │ │ ├── RouterStateSerializer.json │ │ │ │ ├── SerializedRouterStateSnapshot.json │ │ │ │ ├── StateKeyOrSelector.json │ │ │ │ ├── StoreRouterConfig.json │ │ │ │ ├── StoreRouterConnectingModule.json │ │ │ │ ├── createRouterSelector.json │ │ │ │ ├── getRouterSelectors.json │ │ │ │ ├── provideRouterStore.json │ │ │ │ └── routerReducer.json │ │ │ ├── signals │ │ │ │ ├── PartialStateUpdater.json │ │ │ │ ├── StateSignal.json │ │ │ │ ├── entities │ │ │ │ │ ├── EntityId.json │ │ │ │ │ ├── EntityMap.json │ │ │ │ │ ├── EntityState.json │ │ │ │ │ ├── NamedEntityState.json │ │ │ │ │ ├── addEntities.json │ │ │ │ │ ├── addEntity.json │ │ │ │ │ ├── removeAllEntities.json │ │ │ │ │ ├── removeEntities.json │ │ │ │ │ ├── removeEntity.json │ │ │ │ │ ├── setAllEntities.json │ │ │ │ │ ├── setEntities.json │ │ │ │ │ ├── setEntity.json │ │ │ │ │ ├── updateAllEntities.json │ │ │ │ │ ├── updateEntities.json │ │ │ │ │ ├── updateEntity.json │ │ │ │ │ └── withEntities.json │ │ │ │ ├── getState.json │ │ │ │ ├── patchState.json │ │ │ │ ├── rxjs-interop │ │ │ │ │ └── rxMethod.json │ │ │ │ ├── signalState.json │ │ │ │ ├── signalStore.json │ │ │ │ ├── signalStoreFeature.json │ │ │ │ ├── type.json │ │ │ │ ├── withComputed.json │ │ │ │ ├── withHooks.json │ │ │ │ ├── withMethods.json │ │ │ │ └── withState.json │ │ │ ├── store-devtools │ │ │ │ ├── DevToolsFeatureOptions.json │ │ │ │ ├── INITIAL_OPTIONS.json │ │ │ │ ├── LiftedState.json │ │ │ │ ├── RECOMPUTE.json │ │ │ │ ├── REDUX_DEVTOOLS_EXTENSION.json │ │ │ │ ├── StoreDevtools.json │ │ │ │ ├── StoreDevtoolsConfig.json │ │ │ │ ├── StoreDevtoolsModule.json │ │ │ │ ├── StoreDevtoolsOptions.json │ │ │ │ └── provideStoreDevtools.json │ │ │ └── store │ │ │ │ ├── ACTIVE_RUNTIME_CHECKS.json │ │ │ │ ├── Action.json │ │ │ │ ├── ActionCreator.json │ │ │ │ ├── ActionCreatorProps.json │ │ │ │ ├── ActionReducer.json │ │ │ │ ├── ActionReducerFactory.json │ │ │ │ ├── ActionReducerMap.json │ │ │ │ ├── ActionType.json │ │ │ │ ├── ActionsSubject.json │ │ │ │ ├── Creator.json │ │ │ │ ├── DefaultProjectorFn.json │ │ │ │ ├── FEATURE_REDUCERS.json │ │ │ │ ├── FEATURE_STATE_PROVIDER.json │ │ │ │ ├── FeatureConfig.json │ │ │ │ ├── FeatureSlice.json │ │ │ │ ├── FunctionWithParametersType.json │ │ │ │ ├── INIT.json │ │ │ │ ├── INITIAL_REDUCERS.json │ │ │ │ ├── INITIAL_STATE.json │ │ │ │ ├── META_REDUCERS.json │ │ │ │ ├── MemoizeFn.json │ │ │ │ ├── MemoizedProjection.json │ │ │ │ ├── MemoizedSelector.json │ │ │ │ ├── MemoizedSelectorWithProps.json │ │ │ │ ├── MetaReducer.json │ │ │ │ ├── NotAllowedCheck.json │ │ │ │ ├── REDUCER_FACTORY.json │ │ │ │ ├── ROOT_STORE_PROVIDER.json │ │ │ │ ├── ReducerManager.json │ │ │ │ ├── ReducerManagerDispatcher.json │ │ │ │ ├── ReducerObservable.json │ │ │ │ ├── ReducerTypes.json │ │ │ │ ├── RootStoreConfig.json │ │ │ │ ├── RuntimeChecks.json │ │ │ │ ├── STORE_FEATURES.json │ │ │ │ ├── ScannedActionsSubject.json │ │ │ │ ├── Selector.json │ │ │ │ ├── SelectorWithProps.json │ │ │ │ ├── State.json │ │ │ │ ├── StateObservable.json │ │ │ │ ├── Store.json │ │ │ │ ├── StoreConfig.json │ │ │ │ ├── StoreFeatureModule.json │ │ │ │ ├── StoreModule.json │ │ │ │ ├── StoreRootModule.json │ │ │ │ ├── UPDATE.json │ │ │ │ ├── USER_PROVIDED_META_REDUCERS.json │ │ │ │ ├── USER_RUNTIME_CHECKS.json │ │ │ │ ├── combineReducers.json │ │ │ │ ├── compose.json │ │ │ │ ├── createAction.json │ │ │ │ ├── createActionGroup.json │ │ │ │ ├── createFeature.json │ │ │ │ ├── createFeatureSelector.json │ │ │ │ ├── createReducer.json │ │ │ │ ├── createReducerFactory.json │ │ │ │ ├── createSelector.json │ │ │ │ ├── createSelectorFactory.json │ │ │ │ ├── defaultMemoize.json │ │ │ │ ├── defaultStateFn.json │ │ │ │ ├── emptyProps.json │ │ │ │ ├── isNgrxMockEnvironment.json │ │ │ │ ├── on.json │ │ │ │ ├── props.json │ │ │ │ ├── provideState.json │ │ │ │ ├── provideStore.json │ │ │ │ ├── reduceState.json │ │ │ │ ├── resultMemoize.json │ │ │ │ ├── select.json │ │ │ │ ├── setNgrxMockEnvironment.json │ │ │ │ ├── testing │ │ │ │ ├── MockReducerManager.json │ │ │ │ ├── MockSelector.json │ │ │ │ ├── MockState.json │ │ │ │ ├── MockStore.json │ │ │ │ ├── MockStoreConfig.json │ │ │ │ ├── createMockStore.json │ │ │ │ └── provideMockStore.json │ │ │ │ └── union.json │ │ └── services │ │ │ ├── guide-menu.service.ts │ │ │ └── markdown.service.ts │ ├── favicon.ico │ ├── main.server.ts │ ├── main.ts │ ├── shared │ │ ├── api-report.models.ts │ │ └── index.ts │ ├── styles.scss │ ├── test-setup.ts │ ├── tools │ │ ├── api-extractor.json │ │ ├── extract-docs-content.ts │ │ └── vite-ngrx-stackblits.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 /.devcontainer/welcome-message.txt: -------------------------------------------------------------------------------- 1 | 👋 Welcome to "Ngrx Platform" in GitHub Codespaces! 2 | 3 | 🛠️ Your environment is fully setup with all the required software. 4 | 5 | 🔍 To explore VS Code to its fullest, search using the Command Palette (Cmd/Ctrl + Shift + P or F1). 6 | 7 | 📝 Edit away, run your app as usual, and we'll automatically make it available for you to access. 8 | 9 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | Dockerfile* 4 | docker-compose* 5 | .dockerignore 6 | .git 7 | .gitignore 8 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org/ 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Support Request 4 | url: https://github.com/ngrx/platform/blob/main/CONTRIBUTING.md#questions-and-requests-for-support 5 | about: Questions and requests for support 6 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npx lint-staged 5 | -------------------------------------------------------------------------------- /.node-version: -------------------------------------------------------------------------------- 1 | 20.11 -------------------------------------------------------------------------------- /.nxignore: -------------------------------------------------------------------------------- 1 | *.spec.ts 2 | **/testing/** 3 | modules/BUILD 4 | modules/license-banner.txt 5 | modules/README.md -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | /dist 2 | /modules/schematics/src/*/files/* 3 | /modules/**/schematics/**/files/* 4 | /tmp 5 | /projects/ngrx.io 6 | !/projects/ngrx.io/content/examples 7 | package-lock.json 8 | package.json 9 | yarn.lock 10 | 11 | /.nx/cache 12 | /.nx/workspace-data -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:10.15.3 2 | 3 | # Create app directory 4 | WORKDIR /platform 5 | 6 | COPY . . 7 | 8 | WORKDIR /platform/projects/ngrx.io 9 | 10 | # Install all the dependencies, boilerplate, stackblitz, zips and run dgeni on the docs. 11 | RUN pnpm exec setup 12 | 13 | EXPOSE 4200 14 | 15 | CMD ["pnpm run", "start:docker"] 16 | -------------------------------------------------------------------------------- /MIGRATION.md: -------------------------------------------------------------------------------- 1 | # V19 Migration guide 2 | 3 | This document has been moved to https://ngrx.io/guide/migration/v19. 4 | -------------------------------------------------------------------------------- /build/copy-schematics-core.ts: -------------------------------------------------------------------------------- 1 | import * as tasks from './tasks'; 2 | import { createBuilder } from './util'; 3 | import { packages } from './config'; 4 | 5 | const copySchematics = createBuilder([ 6 | ['Copy Schematics Core Files', tasks.copySchematicsCore], 7 | ]); 8 | 9 | copySchematics({ 10 | scope: '@ngrx', 11 | packages: [...packages], 12 | }).catch((err) => { 13 | console.error(err); 14 | process.exit(1); 15 | }); 16 | -------------------------------------------------------------------------------- /build/deploy-build.ts: -------------------------------------------------------------------------------- 1 | import * as tasks from './tasks'; 2 | import { createBuilder } from './util'; 3 | import { packages } from './config'; 4 | 5 | const deploy = createBuilder([ 6 | ['Deploy builds', tasks.publishToRepo], 7 | // ['Deploy docs', tasks.publishDocs], 8 | ]); 9 | 10 | deploy({ 11 | scope: '@ngrx', 12 | packages, 13 | }).catch((err) => { 14 | console.error(err); 15 | process.exit(1); 16 | }); 17 | -------------------------------------------------------------------------------- /jest.config.ts: -------------------------------------------------------------------------------- 1 | const { getJestProjectsAsync } = require('@nx/jest'); 2 | 3 | export default async () => ({ projects: await getJestProjectsAsync() }); 4 | -------------------------------------------------------------------------------- /jest.preset.js: -------------------------------------------------------------------------------- 1 | const nxPreset = require('@nx/jest/preset').default; 2 | 3 | module.exports = { ...nxPreset }; 4 | -------------------------------------------------------------------------------- /modules/README.md: -------------------------------------------------------------------------------- 1 | # NgRx 2 | 3 | The sources for this package are in the main [NgRx](https://github.com/ngrx/platform) repo. Please file issues and pull requests against that repo. 4 | 5 | License: MIT 6 | -------------------------------------------------------------------------------- /modules/component-store/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | See [CHANGELOG.md](https://github.com/ngrx/platform/blob/main/CHANGELOG.md) 4 | -------------------------------------------------------------------------------- /modules/component-store/README.md: -------------------------------------------------------------------------------- 1 | # @ngrx/component-store 2 | 3 | The sources for this package are in the main [NgRx](https://github.com/ngrx/platform) repo. Please file issues and pull requests against that repo. 4 | -------------------------------------------------------------------------------- /modules/component-store/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * DO NOT EDIT 3 | * 4 | * This file is automatically generated at build 5 | */ 6 | 7 | export * from './public_api'; 8 | -------------------------------------------------------------------------------- /modules/component-store/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/modules/component-store", 4 | "assets": ["migrations/**/*.json", "schematics/**/*.json", "**/files/**/*"], 5 | "allowedNonPeerDependencies": ["@ngrx/operators"], 6 | "lib": { 7 | "entryFile": "index.ts" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /modules/component-store/public_api.ts: -------------------------------------------------------------------------------- 1 | export * from './src/index'; 2 | -------------------------------------------------------------------------------- /modules/component-store/schematics-core/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | -------------------------------------------------------------------------------- /modules/component-store/schematics-core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.lib.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /modules/component-store/schematics-core/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/component-store/schematics-core/utility/libs-version.ts: -------------------------------------------------------------------------------- 1 | export const platformVersion = '^19.2.1'; 2 | -------------------------------------------------------------------------------- /modules/component-store/schematics/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "schematics": { 3 | "ng-add": { 4 | "aliases": ["init"], 5 | "factory": "./ng-add", 6 | "schema": "./ng-add/schema.json", 7 | "description": "Add @ngrx/component-store to your application" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /modules/component-store/schematics/ng-add/schema.ts: -------------------------------------------------------------------------------- 1 | export interface Schema { 2 | skipPackageJson?: boolean; 3 | } 4 | -------------------------------------------------------------------------------- /modules/component-store/spec/types/utils.ts: -------------------------------------------------------------------------------- 1 | export const compilerOptions = () => ({ 2 | moduleResolution: 'node', 3 | target: 'ES2022', 4 | baseUrl: '.', 5 | experimentalDecorators: true, 6 | paths: { 7 | '@ngrx/component-store': ['./modules/component-store'], 8 | '@ngrx/operators': ['./modules/operators'], 9 | }, 10 | }); 11 | -------------------------------------------------------------------------------- /modules/component-store/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './component-store'; 2 | export { 3 | provideComponentStore, 4 | OnStateInit, 5 | OnStoreInit, 6 | } from './lifecycle_hooks'; 7 | -------------------------------------------------------------------------------- /modules/component-store/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { TextEncoder, TextDecoder } from 'util'; 2 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 3 | 4 | setupZoneTestEnv(); 5 | 6 | Object.assign(global, { TextDecoder, TextEncoder }); 7 | -------------------------------------------------------------------------------- /modules/component-store/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/component/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | See [CHANGELOG.md](https://github.com/ngrx/platform/blob/main/CHANGELOG.md) 4 | -------------------------------------------------------------------------------- /modules/component/README.md: -------------------------------------------------------------------------------- 1 | # @ngrx/component 2 | 3 | The sources for this package are in the main [NgRx](https://github.com/ngrx/platform) repo. Please file issues and pull requests against that repo. 4 | 5 | License: MIT 6 | -------------------------------------------------------------------------------- /modules/component/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * DO NOT EDIT 3 | * 4 | * This file is automatically generated at build 5 | */ 6 | 7 | export * from './public_api'; 8 | -------------------------------------------------------------------------------- /modules/component/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/modules/component", 4 | "assets": ["migrations/**/*.json", "schematics/**/*.json", "**/files/**/*"], 5 | "lib": { 6 | "entryFile": "index.ts" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /modules/component/public_api.ts: -------------------------------------------------------------------------------- 1 | export * from './src/index'; 2 | -------------------------------------------------------------------------------- /modules/component/schematics-core/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | -------------------------------------------------------------------------------- /modules/component/schematics-core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.lib.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /modules/component/schematics-core/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/component/schematics-core/utility/libs-version.ts: -------------------------------------------------------------------------------- 1 | export const platformVersion = '^19.2.1'; 2 | -------------------------------------------------------------------------------- /modules/component/schematics/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "schematics": { 3 | "ng-add": { 4 | "aliases": ["init"], 5 | "factory": "./ng-add", 6 | "schema": "./ng-add/schema.json", 7 | "description": "Add @ngrx/component to your application" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /modules/component/schematics/ng-add/schema.ts: -------------------------------------------------------------------------------- 1 | export interface Schema { 2 | skipPackageJson?: boolean; 3 | } 4 | -------------------------------------------------------------------------------- /modules/component/spec/fixtures/mock-event-emitter.ts: -------------------------------------------------------------------------------- 1 | import { EventEmitter } from '@angular/core'; 2 | 3 | export class MockEventEmitter extends EventEmitter { 4 | override next(value: any) {} 5 | override error(error: any) {} 6 | override complete() {} 7 | override emit() {} 8 | } 9 | -------------------------------------------------------------------------------- /modules/component/spec/helpers.ts: -------------------------------------------------------------------------------- 1 | export function stripSpaces(str: string): string { 2 | return str.replace(/[\n\r\s]+/g, ''); 3 | } 4 | 5 | export function wrapWithSpace(str: string): string { 6 | return ' ' + str + ' '; 7 | } 8 | -------------------------------------------------------------------------------- /modules/component/src/core/zone-helpers.ts: -------------------------------------------------------------------------------- 1 | import { NgZone } from '@angular/core'; 2 | 3 | export function isNgZone(zone: unknown): zone is NgZone { 4 | return zone instanceof NgZone; 5 | } 6 | -------------------------------------------------------------------------------- /modules/component/src/index.ts: -------------------------------------------------------------------------------- 1 | export { RenderScheduler } from './core/render-scheduler'; 2 | export { LetDirective } from './let/let.directive'; 3 | export { PushPipe } from './push/push.pipe'; 4 | -------------------------------------------------------------------------------- /modules/component/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { TextEncoder, TextDecoder } from 'util'; 2 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 3 | 4 | setupZoneTestEnv(); 5 | Object.assign(global, { TextDecoder, TextEncoder }); 6 | -------------------------------------------------------------------------------- /modules/component/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/data/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | See [CHANGELOG.md](https://github.com/ngrx/platform/blob/main/CHANGELOG.md) 4 | -------------------------------------------------------------------------------- /modules/data/README.md: -------------------------------------------------------------------------------- 1 | # @ngrx/data 2 | 3 | The sources for this package are in the main [NgRx](https://github.com/ngrx/platform) repo. Please file issues and pull requests against that repo. 4 | 5 | License: MIT 6 | -------------------------------------------------------------------------------- /modules/data/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * DO NOT EDIT 3 | * 4 | * This file is automatically generated at build 5 | */ 6 | 7 | export * from './public_api'; 8 | -------------------------------------------------------------------------------- /modules/data/migrations/migration.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json", 3 | "schematics": {} 4 | } 5 | -------------------------------------------------------------------------------- /modules/data/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/modules/data", 4 | "assets": ["migrations/**/*.json", "schematics/**/*.json", "**/files/**/*"], 5 | "lib": { 6 | "entryFile": "index.ts" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /modules/data/public_api.ts: -------------------------------------------------------------------------------- 1 | export * from './src/index'; 2 | -------------------------------------------------------------------------------- /modules/data/schematics-core/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | -------------------------------------------------------------------------------- /modules/data/schematics-core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.lib.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /modules/data/schematics-core/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/data/schematics-core/utility/libs-version.ts: -------------------------------------------------------------------------------- 1 | export const platformVersion = '^19.2.1'; 2 | -------------------------------------------------------------------------------- /modules/data/schematics/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "schematics": { 3 | "ng-add": { 4 | "aliases": ["init"], 5 | "factory": "./ng-add", 6 | "schema": "./ng-add/schema.json", 7 | "description": "Add @ngrx/data to your application" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /modules/data/schematics/ng-add/files/entity-metadata.ts.template: -------------------------------------------------------------------------------- 1 | import { EntityMetadataMap, EntityDataModuleConfig } from '@ngrx/data'; 2 | 3 | const entityMetadata: EntityMetadataMap = {}; 4 | 5 | const pluralNames = { }; 6 | 7 | export const entityConfig: EntityDataModuleConfig = { 8 | entityMetadata, 9 | pluralNames 10 | }; 11 | -------------------------------------------------------------------------------- /modules/data/schematics/ng-add/schema.ts: -------------------------------------------------------------------------------- 1 | export interface Schema { 2 | path?: string; 3 | effects?: boolean; 4 | skipPackageJson?: boolean; 5 | project?: string; 6 | module?: string; 7 | migrateNgrxData?: boolean; 8 | entityConfig?: boolean; 9 | } 10 | -------------------------------------------------------------------------------- /modules/data/src/effects/entity-effects-scheduler.ts: -------------------------------------------------------------------------------- 1 | import { InjectionToken } from '@angular/core'; 2 | import { SchedulerLike } from 'rxjs'; 3 | 4 | // See https://github.com/ReactiveX/rxjs/blob/master/doc/marble-testing.md 5 | /** Token to inject a special RxJS Scheduler during marble tests. */ 6 | export const ENTITY_EFFECTS_SCHEDULER = new InjectionToken( 7 | '@ngrx/data Entity Effects Scheduler' 8 | ); 9 | -------------------------------------------------------------------------------- /modules/data/src/reducers/entity-cache.ts: -------------------------------------------------------------------------------- 1 | import { EntityCollection } from './entity-collection'; 2 | 3 | export interface EntityCache { 4 | // Must be `any` since we don't know what type of collections we will have 5 | [name: string]: EntityCollection; 6 | } 7 | -------------------------------------------------------------------------------- /modules/data/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | -------------------------------------------------------------------------------- /modules/data/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/effects/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | See [CHANGELOG.md](https://github.com/ngrx/platform/blob/main/CHANGELOG.md) 4 | -------------------------------------------------------------------------------- /modules/effects/README.md: -------------------------------------------------------------------------------- 1 | # @ngrx/effects 2 | 3 | The sources for this package are in the main [NgRx](https://github.com/ngrx/platform) repo. Please file issues and pull requests against that repo. 4 | 5 | License: MIT 6 | -------------------------------------------------------------------------------- /modules/effects/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * DO NOT EDIT 3 | * 4 | * This file is automatically generated at build 5 | */ 6 | 7 | export * from './public_api'; 8 | -------------------------------------------------------------------------------- /modules/effects/migrations/6_0_0/index.ts: -------------------------------------------------------------------------------- 1 | import { Rule } from '@angular-devkit/schematics'; 2 | import { updatePackage } from '../../schematics-core'; 3 | 4 | export default function (): Rule { 5 | return updatePackage('effects'); 6 | } 7 | -------------------------------------------------------------------------------- /modules/effects/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/modules/effects", 4 | "assets": ["migrations/**/*.json", "schematics/**/*.json", "**/files/**/*"], 5 | "allowedNonPeerDependencies": ["@ngrx/operators"], 6 | "lib": { 7 | "entryFile": "index.ts" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /modules/effects/public_api.ts: -------------------------------------------------------------------------------- 1 | export * from './src/index'; 2 | -------------------------------------------------------------------------------- /modules/effects/schematics-core/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | -------------------------------------------------------------------------------- /modules/effects/schematics-core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.lib.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /modules/effects/schematics-core/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/effects/schematics-core/utility/libs-version.ts: -------------------------------------------------------------------------------- 1 | export const platformVersion = '^19.2.1'; 2 | -------------------------------------------------------------------------------- /modules/effects/schematics/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "schematics": { 3 | "ng-add": { 4 | "aliases": ["init"], 5 | "factory": "./ng-add", 6 | "schema": "./ng-add/schema.json", 7 | "description": "Add root side effect class" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /modules/effects/schematics/ng-add/files/__name@dasherize@if-flat__/__name@dasherize__.effects.ts.template: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { Actions, createEffect } from '@ngrx/effects'; 3 | 4 | @Injectable() 5 | export class <%= classify(name) %>Effects { 6 | constructor(private actions$: Actions) {} 7 | } 8 | -------------------------------------------------------------------------------- /modules/effects/schematics/ng-add/schema.ts: -------------------------------------------------------------------------------- 1 | export interface Schema { 2 | name: string; 3 | skipPackageJson?: boolean; 4 | path?: string; 5 | flat?: boolean; 6 | skipTests?: boolean; 7 | project?: string; 8 | module?: string; 9 | group?: boolean; 10 | /** 11 | * Setup root effects module without registering initial effects. 12 | */ 13 | minimal?: boolean; 14 | } 15 | -------------------------------------------------------------------------------- /modules/effects/spec/effects_resolver.spec.ts: -------------------------------------------------------------------------------- 1 | describe('mergeEffects', () => { 2 | it('should work', () => { 3 | expect(true).toBeTruthy(); 4 | }); 5 | }); 6 | -------------------------------------------------------------------------------- /modules/effects/spec/types/utils.ts: -------------------------------------------------------------------------------- 1 | export const compilerOptions = () => ({ 2 | moduleResolution: 'node', 3 | target: 'ES2022', 4 | baseUrl: '.', 5 | experimentalDecorators: true, 6 | paths: { 7 | '@ngrx/store': ['./modules/store'], 8 | '@ngrx/effects': ['./modules/effects'], 9 | '@ngrx/operators': ['./modules/operators'], 10 | rxjs: ['../npm/node_modules/rxjs', './node_modules/rxjs'], 11 | }, 12 | }); 13 | -------------------------------------------------------------------------------- /modules/effects/src/effects_actions.ts: -------------------------------------------------------------------------------- 1 | import { createAction } from '@ngrx/store'; 2 | 3 | export const ROOT_EFFECTS_INIT = '@ngrx/effects/init'; 4 | export const rootEffectsInit = createAction(ROOT_EFFECTS_INIT); 5 | -------------------------------------------------------------------------------- /modules/effects/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | -------------------------------------------------------------------------------- /modules/effects/testing/index.ts: -------------------------------------------------------------------------------- 1 | export * from './src/public_api'; 2 | -------------------------------------------------------------------------------- /modules/effects/testing/ng-package.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /modules/effects/testing/src/public_api.ts: -------------------------------------------------------------------------------- 1 | export * from './testing'; 2 | -------------------------------------------------------------------------------- /modules/effects/testing/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.build", 3 | "compilerOptions": { 4 | "paths": { 5 | "@ngrx/store": ["../../dist/packages/store"], 6 | "@ngrx/effects": ["../../dist/packages/effects"] 7 | } 8 | }, 9 | "files": ["index.ts"], 10 | "angularCompilerOptions": {} 11 | } 12 | -------------------------------------------------------------------------------- /modules/effects/testing/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.spec", 3 | "files": ["index.ts"] 4 | } 5 | -------------------------------------------------------------------------------- /modules/effects/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/entity/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | See [CHANGELOG.md](https://github.com/ngrx/platform/blob/main/CHANGELOG.md) 4 | -------------------------------------------------------------------------------- /modules/entity/README.md: -------------------------------------------------------------------------------- 1 | # @ngrx/entity 2 | 3 | The sources for this package are in the main [NgRx](https://github.com/ngrx/platform) repo. Please file issues and pull requests against that repo. 4 | 5 | License: MIT 6 | -------------------------------------------------------------------------------- /modules/entity/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * DO NOT EDIT 3 | * 4 | * This file is automatically generated at build 5 | */ 6 | 7 | export * from './public_api'; 8 | -------------------------------------------------------------------------------- /modules/entity/migrations/6_0_0/index.ts: -------------------------------------------------------------------------------- 1 | import { Rule } from '@angular-devkit/schematics'; 2 | import { updatePackage } from '../../schematics-core'; 3 | 4 | export default function (): Rule { 5 | return updatePackage('entity'); 6 | } 7 | -------------------------------------------------------------------------------- /modules/entity/migrations/migration.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json", 3 | "schematics": { 4 | "ngrx-entity-migration-01": { 5 | "description": "The road to v6", 6 | "version": "5.2", 7 | "factory": "./6_0_0/index" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /modules/entity/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/modules/entity", 4 | "assets": ["migrations/**/*.json", "schematics/**/*.json", "**/files/**/*"], 5 | "lib": { 6 | "entryFile": "index.ts" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /modules/entity/public_api.ts: -------------------------------------------------------------------------------- 1 | export * from './src/index'; 2 | -------------------------------------------------------------------------------- /modules/entity/schematics-core/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | -------------------------------------------------------------------------------- /modules/entity/schematics-core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.lib.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /modules/entity/schematics-core/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/entity/schematics-core/utility/libs-version.ts: -------------------------------------------------------------------------------- 1 | export const platformVersion = '^19.2.1'; 2 | -------------------------------------------------------------------------------- /modules/entity/schematics/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "schematics": { 3 | "ng-add": { 4 | "aliases": ["init"], 5 | "factory": "./ng-add", 6 | "schema": "./ng-add/schema.json", 7 | "description": "Add @ngrx/entity to your application" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /modules/entity/schematics/ng-add/schema.ts: -------------------------------------------------------------------------------- 1 | export interface Schema { 2 | skipPackageJson?: boolean; 3 | } 4 | -------------------------------------------------------------------------------- /modules/entity/spec/types/utils.ts: -------------------------------------------------------------------------------- 1 | export const compilerOptions = () => ({ 2 | moduleResolution: 'node', 3 | target: 'ES2022', 4 | baseUrl: '.', 5 | experimentalDecorators: true, 6 | strict: true, 7 | paths: { 8 | '@ngrx/entity': ['./modules/entity'], 9 | '@ngrx/store': ['./modules/store'], 10 | }, 11 | }); 12 | -------------------------------------------------------------------------------- /modules/entity/src/index.ts: -------------------------------------------------------------------------------- 1 | export { createEntityAdapter } from './create_adapter'; 2 | export { 3 | Comparer, 4 | Dictionary, 5 | DictionaryNum, 6 | EntityAdapter, 7 | EntityMap, 8 | EntityMapOne, 9 | EntityState, 10 | IdSelector, 11 | Predicate, 12 | Update, 13 | } from './models'; 14 | -------------------------------------------------------------------------------- /modules/entity/test-setup.ts: -------------------------------------------------------------------------------- 1 | import 'zone.js/plugins/zone-legacy'; 2 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 3 | 4 | setupZoneTestEnv(); 5 | Object.assign(global, { TextDecoder, TextEncoder }); 6 | -------------------------------------------------------------------------------- /modules/entity/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/eslint-plugin/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["../../.eslintrc.json"], 3 | "ignorePatterns": ["!**/*"] 4 | } 5 | -------------------------------------------------------------------------------- /modules/eslint-plugin/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | See [CHANGELOG.md](https://github.com/ngrx/platform/blob/main/CHANGELOG.md) 4 | -------------------------------------------------------------------------------- /modules/eslint-plugin/README.md: -------------------------------------------------------------------------------- 1 | # @ngrx/eslint-plugin 2 | 3 | The sources for this package are in the main [NgRx](https://github.com/ngrx/platform) repo. Please file issues and pull requests against that repo. 4 | 5 | License: MIT 6 | -------------------------------------------------------------------------------- /modules/eslint-plugin/migrations/migration.json: -------------------------------------------------------------------------------- 1 | { 2 | "schematics": {} 3 | } 4 | -------------------------------------------------------------------------------- /modules/eslint-plugin/schematics/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "schematics": { 3 | "ng-add": { 4 | "aliases": ["init"], 5 | "factory": "./ng-add", 6 | "schema": "./ng-add/schema.json", 7 | "description": "Add @ngrx/eslint-plugin to your application" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /modules/eslint-plugin/schematics/ng-add/schema.ts: -------------------------------------------------------------------------------- 1 | export interface Schema { 2 | config: 'all' | 'store' | 'effects' | 'component-store' | 'signals'; 3 | } 4 | -------------------------------------------------------------------------------- /modules/eslint-plugin/spec/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './from-fixture'; 2 | export * from './rule-tester'; 3 | -------------------------------------------------------------------------------- /modules/eslint-plugin/src/configs/component-store.json: -------------------------------------------------------------------------------- 1 | { 2 | "parser": "@typescript-eslint/parser", 3 | "plugins": ["@ngrx"], 4 | "rules": { 5 | "@ngrx/avoid-combining-component-store-selectors": "error", 6 | "@ngrx/avoid-mapping-component-store-selectors": "error", 7 | "@ngrx/require-super-ondestroy": "error", 8 | "@ngrx/updater-explicit-return-type": "error" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /modules/eslint-plugin/src/configs/operators.json: -------------------------------------------------------------------------------- 1 | { 2 | "parser": "@typescript-eslint/parser", 3 | "plugins": ["@ngrx"], 4 | "rules": { 5 | "@ngrx/prefer-concat-latest-from": "error" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /modules/eslint-plugin/src/utils/helper-functions/docs.ts: -------------------------------------------------------------------------------- 1 | export const docsUrl = (ruleName: string) => 2 | `https://ngrx.io/guide/eslint-plugin/rules/${ruleName}`; 3 | -------------------------------------------------------------------------------- /modules/eslint-plugin/src/utils/helper-functions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './docs'; 2 | export * from './folder'; 3 | export * from './guards'; 4 | export * from './ngrx-modules'; 5 | export * from './utils'; 6 | export * from './versions'; 7 | -------------------------------------------------------------------------------- /modules/eslint-plugin/src/utils/helper-functions/ngrx-modules.ts: -------------------------------------------------------------------------------- 1 | export const NGRX_MODULE_PATHS = { 2 | ['component-store']: '@ngrx/component-store', 3 | effects: '@ngrx/effects', 4 | store: '@ngrx/store', 5 | operators: '@ngrx/operators', 6 | signals: '@ngrx/signals', 7 | } as const; 8 | 9 | export type NGRX_MODULE = keyof typeof NGRX_MODULE_PATHS; 10 | -------------------------------------------------------------------------------- /modules/eslint-plugin/src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './helper-functions'; 2 | export * from './selectors'; 3 | -------------------------------------------------------------------------------- /modules/eslint-plugin/test-setup.ts: -------------------------------------------------------------------------------- 1 | import * as vitest from 'vitest'; 2 | import { RuleTester } from '@typescript-eslint/rule-tester'; 3 | 4 | RuleTester.afterAll = vitest.afterAll; 5 | -------------------------------------------------------------------------------- /modules/eslint-plugin/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "es2022", 6 | "types": ["node", "vitest", "vitest/globals"], 7 | "target": "es2016", 8 | "esModuleInterop": true, 9 | "resolveJsonModule": true 10 | }, 11 | "files": ["test-setup.ts"], 12 | "include": ["**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 13 | } 14 | -------------------------------------------------------------------------------- /modules/eslint-plugin/v9/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.build", 3 | "compilerOptions": {}, 4 | "files": ["index.ts"], 5 | "angularCompilerOptions": {} 6 | } 7 | -------------------------------------------------------------------------------- /modules/eslint-plugin/v9/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.spec", 3 | "files": ["index.ts"] 4 | } 5 | -------------------------------------------------------------------------------- /modules/license-banner.txt: -------------------------------------------------------------------------------- 1 | /** 2 | * @license NgRx 3 | * (c) 2015-2020 Brandon Roberts, Mike Ryan, Rob Wormald, Victor Savkin 4 | * License: MIT 5 | */ -------------------------------------------------------------------------------- /modules/operators/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | See [CHANGELOG.md](https://github.com/ngrx/platform/blob/main/CHANGELOG.md) 4 | -------------------------------------------------------------------------------- /modules/operators/README.md: -------------------------------------------------------------------------------- 1 | # @ngrx/operators 2 | 3 | The sources for this package are in the main [NgRx](https://github.com/ngrx/platform) repo. Please file issues and pull requests against that repo. 4 | -------------------------------------------------------------------------------- /modules/operators/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * DO NOT EDIT 3 | * 4 | * This file is automatically generated at build 5 | */ 6 | 7 | export * from './src/index'; 8 | -------------------------------------------------------------------------------- /modules/operators/migrations/migration.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json", 3 | "schematics": {} 4 | } 5 | -------------------------------------------------------------------------------- /modules/operators/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/modules/operators", 4 | "assets": ["migrations/**/*.json", "schematics/**/*.json", "**/files/**/*"], 5 | "lib": { 6 | "entryFile": "index.ts" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /modules/operators/schematics-core/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | -------------------------------------------------------------------------------- /modules/operators/schematics-core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.lib.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /modules/operators/schematics-core/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/operators/schematics-core/utility/libs-version.ts: -------------------------------------------------------------------------------- 1 | export const platformVersion = '^19.2.1'; 2 | -------------------------------------------------------------------------------- /modules/operators/schematics/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "schematics": { 3 | "ng-add": { 4 | "aliases": ["init"], 5 | "factory": "./ng-add", 6 | "schema": "./ng-add/schema.json", 7 | "description": "Add @ngrx/operators to your application" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /modules/operators/schematics/ng-add/schema.ts: -------------------------------------------------------------------------------- 1 | export interface Schema { 2 | skipPackageJson?: boolean; 3 | } 4 | -------------------------------------------------------------------------------- /modules/operators/spec/types/utils.ts: -------------------------------------------------------------------------------- 1 | export const compilerOptions = () => ({ 2 | moduleResolution: 'node', 3 | target: 'ES2022', 4 | baseUrl: '.', 5 | experimentalDecorators: true, 6 | paths: { 7 | '@ngrx/operators': ['./modules/operators'], 8 | }, 9 | }); 10 | -------------------------------------------------------------------------------- /modules/operators/src/index.ts: -------------------------------------------------------------------------------- 1 | export { concatLatestFrom } from './concat_latest_from'; 2 | export { mapResponse } from './map-response'; 3 | export { tapResponse } from './tap-response'; 4 | -------------------------------------------------------------------------------- /modules/operators/test-setup.ts: -------------------------------------------------------------------------------- 1 | import 'zone.js/plugins/zone-legacy'; 2 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 3 | 4 | setupZoneTestEnv(); 5 | Object.assign(global, { TextDecoder, TextEncoder }); 6 | -------------------------------------------------------------------------------- /modules/operators/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/router-store/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | See [CHANGELOG.md](https://github.com/ngrx/platform/blob/main/CHANGELOG.md) 4 | -------------------------------------------------------------------------------- /modules/router-store/README.md: -------------------------------------------------------------------------------- 1 | # @ngrx/router-store 2 | 3 | The sources for this package are in the main [NgRx](https://github.com/ngrx/platform) repo. Please file issues and pull requests against that repo. 4 | 5 | License: MIT 6 | -------------------------------------------------------------------------------- /modules/router-store/data-persistence/index.ts: -------------------------------------------------------------------------------- 1 | export { 2 | fetch, 3 | navigation, 4 | optimisticUpdate, 5 | pessimisticUpdate, 6 | } from './src/operators'; 7 | -------------------------------------------------------------------------------- /modules/router-store/data-persistence/ng-package.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /modules/router-store/data-persistence/src/public_api.ts: -------------------------------------------------------------------------------- 1 | export * from './operators'; 2 | -------------------------------------------------------------------------------- /modules/router-store/data-persistence/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.build", 3 | "compilerOptions": { 4 | "paths": { 5 | "@ngrx/store": ["../../dist/packages/store"], 6 | "@ngrx/effects": ["../../dist/packages/effects"] 7 | } 8 | }, 9 | "files": ["index.ts"], 10 | "angularCompilerOptions": {} 11 | } 12 | -------------------------------------------------------------------------------- /modules/router-store/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * DO NOT EDIT 3 | * 4 | * This file is automatically generated at build 5 | */ 6 | 7 | export * from './public_api'; 8 | -------------------------------------------------------------------------------- /modules/router-store/migrations/6_0_0/index.ts: -------------------------------------------------------------------------------- 1 | import { Rule } from '@angular-devkit/schematics'; 2 | import { updatePackage } from '../../schematics-core'; 3 | 4 | export default function (): Rule { 5 | return updatePackage('router-store'); 6 | } 7 | -------------------------------------------------------------------------------- /modules/router-store/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/modules/router-store", 4 | "assets": ["migrations/**/*.json", "schematics/**/*.json", "**/files/**/*"], 5 | "lib": { 6 | "entryFile": "index.ts" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /modules/router-store/public_api.ts: -------------------------------------------------------------------------------- 1 | export * from './src/index'; 2 | -------------------------------------------------------------------------------- /modules/router-store/schematics-core/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | -------------------------------------------------------------------------------- /modules/router-store/schematics-core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.lib.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /modules/router-store/schematics-core/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/router-store/schematics-core/utility/libs-version.ts: -------------------------------------------------------------------------------- 1 | export const platformVersion = '^19.2.1'; 2 | -------------------------------------------------------------------------------- /modules/router-store/schematics/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "schematics": { 3 | "ng-add": { 4 | "aliases": ["init"], 5 | "factory": "./ng-add", 6 | "schema": "./ng-add/schema.json", 7 | "description": "Register @ngrx/router-store within your application" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /modules/router-store/schematics/ng-add/schema.ts: -------------------------------------------------------------------------------- 1 | export interface Schema { 2 | skipPackageJson?: boolean; 3 | path?: string; 4 | project?: string; 5 | module?: string; 6 | } 7 | -------------------------------------------------------------------------------- /modules/router-store/spec/types/utils.ts: -------------------------------------------------------------------------------- 1 | export const compilerOptions = () => ({ 2 | moduleResolution: 'node', 3 | target: 'ES2022', 4 | baseUrl: '.', 5 | experimentalDecorators: true, 6 | paths: { 7 | '@ngrx/store': ['./modules/store'], 8 | '@ngrx/router-store': ['./modules/router-store'], 9 | }, 10 | }); 11 | -------------------------------------------------------------------------------- /modules/router-store/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | -------------------------------------------------------------------------------- /modules/router-store/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/schematics-core/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | -------------------------------------------------------------------------------- /modules/schematics-core/testing/index.ts: -------------------------------------------------------------------------------- 1 | export * from './create-app-module'; 2 | export * from './create-reducers'; 3 | export * from './create-workspace'; 4 | -------------------------------------------------------------------------------- /modules/schematics-core/testing/update.ts: -------------------------------------------------------------------------------- 1 | export const upgradeVersion = '6.0.0'; 2 | export const versionPrefixes = ['~', '^', '']; 3 | -------------------------------------------------------------------------------- /modules/schematics-core/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/schematics-core/utility/libs-version.ts: -------------------------------------------------------------------------------- 1 | export const platformVersion = '^19.2.1'; 2 | -------------------------------------------------------------------------------- /modules/schematics/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | See [CHANGELOG.md](https://github.com/ngrx/platform/blob/main/CHANGELOG.md) 4 | -------------------------------------------------------------------------------- /modules/schematics/README.md: -------------------------------------------------------------------------------- 1 | # @ngrx/schematics 2 | 3 | The sources for this package are in the main [NgRx](https://github.com/ngrx/platform) repo. Please file issues and pull requests against that repo. 4 | 5 | License: MIT 6 | -------------------------------------------------------------------------------- /modules/schematics/migrations/6_0_0/index.ts: -------------------------------------------------------------------------------- 1 | import { Rule } from '@angular-devkit/schematics'; 2 | import { updatePackage } from '../../schematics-core'; 3 | 4 | export default function (): Rule { 5 | return updatePackage('schematics'); 6 | } 7 | -------------------------------------------------------------------------------- /modules/schematics/migrations/migration.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json", 3 | "schematics": { 4 | "ngrx-schematics-migration-01": { 5 | "description": "The road to v6", 6 | "version": "5.2", 7 | "factory": "./6_0_0/index" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /modules/schematics/schematics-core/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | -------------------------------------------------------------------------------- /modules/schematics/schematics-core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.lib.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /modules/schematics/schematics-core/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/schematics/schematics-core/utility/libs-version.ts: -------------------------------------------------------------------------------- 1 | export const platformVersion = '^19.2.1'; 2 | -------------------------------------------------------------------------------- /modules/schematics/src/component-store/files/__name@dasherize@if-flat__/__name@dasherize__.store.spec.ts.template: -------------------------------------------------------------------------------- 1 | import { <%= classify(name) %>Store } from './<%= dasherize(name) %>.store'; 2 | 3 | describe('<%= classify(name) %>Store', () => { 4 | const componentStore = new <%= classify(name) %>Store(); 5 | 6 | it('should be created', () => { 7 | expect(componentStore).toBeTruthy(); 8 | }); 9 | }); 10 | -------------------------------------------------------------------------------- /modules/schematics/src/data/files/__name@dasherize@if-flat__/__name@dasherize__.ts.template: -------------------------------------------------------------------------------- 1 | export interface <%= classify(name) %> { 2 | id?: unknown; 3 | } 4 | -------------------------------------------------------------------------------- /modules/schematics/src/entity/files/__name@dasherize@if-flat__/__name@dasherize@group-models__.model.ts.template: -------------------------------------------------------------------------------- 1 | export interface <%= classify(name) %> { 2 | id: string; 3 | } 4 | -------------------------------------------------------------------------------- /modules/schematics/src/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/modules/schematics/src/index.ts -------------------------------------------------------------------------------- /modules/schematics/src/ng-add/schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/schema", 3 | "$id": "SchematicsNgRxSchematics", 4 | "title": "Scaffolding library for Angular applications using NgRx libraries", 5 | "type": "object", 6 | "properties": {}, 7 | "required": [] 8 | } 9 | -------------------------------------------------------------------------------- /modules/schematics/src/ng-add/schema.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/no-empty-interface 2 | export interface Schema {} 3 | -------------------------------------------------------------------------------- /modules/schematics/src/ngrx-push-migration/schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/schema", 3 | "$id": "SchematicsNgRxNgRxPushMigration", 4 | "title": "NgRx Component NgRxPush Migration from async to ngrxPush", 5 | "type": "object", 6 | "properties": {}, 7 | "required": [] 8 | } 9 | -------------------------------------------------------------------------------- /modules/schematics/src/ngrx-push-migration/schema.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/no-empty-interface 2 | export interface Schema {} 3 | -------------------------------------------------------------------------------- /modules/schematics/src/selector/files/__name@dasherize@if-flat__/__name@dasherize__.selectors.ts.template: -------------------------------------------------------------------------------- 1 | import { createFeatureSelector, createSelector } from '@ngrx/store'; 2 | <% if(feature) { %>import * as from<%= classify(name) %> from '<%= reducerPath %>'; 3 | 4 | export const select<%= classify(name) %>State = createFeatureSelector.State>( 5 | from<%= classify(name) %>.<%= camelize(name) %>FeatureKey 6 | );<% } %> 7 | -------------------------------------------------------------------------------- /modules/schematics/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | -------------------------------------------------------------------------------- /modules/schematics/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/signals/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | See [CHANGELOG.md](https://github.com/ngrx/platform/blob/main/CHANGELOG.md) 4 | -------------------------------------------------------------------------------- /modules/signals/README.md: -------------------------------------------------------------------------------- 1 | # @ngrx/signals 2 | 3 | The sources for this package are in the main [NgRx](https://github.com/ngrx/platform) repo. Please file issues and pull requests against that repo. 4 | -------------------------------------------------------------------------------- /modules/signals/entities/index.ts: -------------------------------------------------------------------------------- 1 | export * from './src/index'; 2 | -------------------------------------------------------------------------------- /modules/signals/entities/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "lib": { 3 | "entryFile": "index.ts" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /modules/signals/entities/spec/helpers.ts: -------------------------------------------------------------------------------- 1 | import { SelectEntityId } from '../src'; 2 | import { Todo } from './mocks'; 3 | 4 | export const selectTodoId: SelectEntityId = (todo) => todo._id; 5 | -------------------------------------------------------------------------------- /modules/signals/entities/spec/types/helpers.ts: -------------------------------------------------------------------------------- 1 | export const compilerOptions = () => ({ 2 | moduleResolution: 'node', 3 | target: 'ES2022', 4 | baseUrl: '.', 5 | experimentalDecorators: true, 6 | strict: true, 7 | noImplicitAny: true, 8 | paths: { 9 | '@ngrx/signals': ['./modules/signals'], 10 | '@ngrx/signals/entities': ['./modules/signals/entities'], 11 | }, 12 | }); 13 | -------------------------------------------------------------------------------- /modules/signals/events/index.ts: -------------------------------------------------------------------------------- 1 | export * from './src/index'; 2 | -------------------------------------------------------------------------------- /modules/signals/events/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "lib": { 3 | "entryFile": "index.ts" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /modules/signals/events/src/event-instance.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @experimental 3 | */ 4 | export type EventInstance = { 5 | type: Type; 6 | payload: Payload; 7 | }; 8 | 9 | export function isEventInstance( 10 | value: unknown 11 | ): value is EventInstance { 12 | return typeof value === 'object' && value !== null && 'type' in value; 13 | } 14 | -------------------------------------------------------------------------------- /modules/signals/index.ts: -------------------------------------------------------------------------------- 1 | export * from './src/index'; 2 | -------------------------------------------------------------------------------- /modules/signals/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/modules/signals", 4 | "assets": ["migrations/**/*.json", "schematics/**/*.json", "**/files/**/*"], 5 | "lib": { 6 | "entryFile": "index.ts" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /modules/signals/rxjs-interop/index.ts: -------------------------------------------------------------------------------- 1 | export * from './src/index'; 2 | -------------------------------------------------------------------------------- /modules/signals/rxjs-interop/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "lib": { 3 | "entryFile": "index.ts" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /modules/signals/rxjs-interop/src/index.ts: -------------------------------------------------------------------------------- 1 | export { rxMethod, RxMethod } from './rx-method'; 2 | -------------------------------------------------------------------------------- /modules/signals/schematics-core/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | -------------------------------------------------------------------------------- /modules/signals/schematics-core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.lib.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /modules/signals/schematics-core/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/signals/schematics-core/utility/libs-version.ts: -------------------------------------------------------------------------------- 1 | export const platformVersion = '^19.2.1'; 2 | -------------------------------------------------------------------------------- /modules/signals/schematics/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "schematics": { 3 | "ng-add": { 4 | "aliases": ["init"], 5 | "factory": "./ng-add", 6 | "schema": "./ng-add/schema.json", 7 | "description": "Add @ngrx/signals to your application" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /modules/signals/schematics/ng-add/schema.ts: -------------------------------------------------------------------------------- 1 | export interface Schema { 2 | skipPackageJson?: boolean; 3 | } 4 | -------------------------------------------------------------------------------- /modules/signals/spec/types/helpers.ts: -------------------------------------------------------------------------------- 1 | export const compilerOptions = () => ({ 2 | moduleResolution: 'node', 3 | target: 'ES2022', 4 | baseUrl: '.', 5 | experimentalDecorators: true, 6 | strict: true, 7 | noImplicitAny: true, 8 | paths: { 9 | '@ngrx/signals': ['./modules/signals'], 10 | }, 11 | }); 12 | -------------------------------------------------------------------------------- /modules/signals/src/deep-computed.ts: -------------------------------------------------------------------------------- 1 | import { computed } from '@angular/core'; 2 | import { DeepSignal, toDeepSignal } from './deep-signal'; 3 | 4 | export function deepComputed( 5 | computation: () => T 6 | ): DeepSignal { 7 | return toDeepSignal(computed(computation)); 8 | } 9 | -------------------------------------------------------------------------------- /modules/signals/testing/index.ts: -------------------------------------------------------------------------------- 1 | export * from './src/index'; 2 | -------------------------------------------------------------------------------- /modules/signals/testing/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "lib": { 3 | "entryFile": "index.ts" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /modules/signals/testing/spec/types/helpers.ts: -------------------------------------------------------------------------------- 1 | export const compilerOptions = () => ({ 2 | moduleResolution: 'node', 3 | target: 'ES2022', 4 | baseUrl: '.', 5 | experimentalDecorators: true, 6 | strict: true, 7 | noImplicitAny: true, 8 | paths: { 9 | '@ngrx/signals': ['./modules/signals'], 10 | '@ngrx/signals/testing': ['./modules/signals/testing'], 11 | }, 12 | }); 13 | -------------------------------------------------------------------------------- /modules/signals/testing/src/index.ts: -------------------------------------------------------------------------------- 1 | export { unprotected } from './unprotected'; 2 | -------------------------------------------------------------------------------- /modules/signals/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "es2022", 6 | "types": ["node", "vitest", "vitest/globals"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/store-devtools/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | See [CHANGELOG.md](https://github.com/ngrx/platform/blob/main/CHANGELOG.md) 4 | -------------------------------------------------------------------------------- /modules/store-devtools/README.md: -------------------------------------------------------------------------------- 1 | # @ngrx/store-devtools 2 | 3 | The sources for this package are in the main [NgRx](https://github.com/ngrx/platform) repo. Please file issues and pull requests against that repo. 4 | 5 | License: MIT 6 | -------------------------------------------------------------------------------- /modules/store-devtools/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * DO NOT EDIT 3 | * 4 | * This file is automatically generated at build 5 | */ 6 | 7 | export * from './public_api'; 8 | -------------------------------------------------------------------------------- /modules/store-devtools/migrations/6_0_0/index.ts: -------------------------------------------------------------------------------- 1 | import { Rule } from '@angular-devkit/schematics'; 2 | import { updatePackage } from '../../schematics-core'; 3 | 4 | export default function (): Rule { 5 | return updatePackage('store-devtools'); 6 | } 7 | -------------------------------------------------------------------------------- /modules/store-devtools/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/modules/store-devtools", 4 | "assets": ["migrations/**/*.json", "schematics/**/*.json", "**/files/**/*"], 5 | "lib": { 6 | "entryFile": "index.ts" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /modules/store-devtools/public_api.ts: -------------------------------------------------------------------------------- 1 | export * from './src/index'; 2 | -------------------------------------------------------------------------------- /modules/store-devtools/schematics-core/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | -------------------------------------------------------------------------------- /modules/store-devtools/schematics-core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.lib.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /modules/store-devtools/schematics-core/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/store-devtools/schematics-core/utility/libs-version.ts: -------------------------------------------------------------------------------- 1 | export const platformVersion = '^19.2.1'; 2 | -------------------------------------------------------------------------------- /modules/store-devtools/schematics/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "schematics": { 3 | "ng-add": { 4 | "aliases": ["init"], 5 | "factory": "./ng-add", 6 | "schema": "./ng-add/schema.json", 7 | "description": "Adds initial setup for store-devtools" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /modules/store-devtools/schematics/ng-add/schema.ts: -------------------------------------------------------------------------------- 1 | export interface Schema { 2 | skipPackageJson?: boolean; 3 | path?: string; 4 | project?: string; 5 | module?: string; 6 | maxAge?: number; 7 | autoPause?: boolean; 8 | } 9 | -------------------------------------------------------------------------------- /modules/store-devtools/src/devtools-dispatcher.ts: -------------------------------------------------------------------------------- 1 | import { ActionsSubject } from '@ngrx/store'; 2 | import { Injectable } from '@angular/core'; 3 | 4 | @Injectable() 5 | export class DevtoolsDispatcher extends ActionsSubject {} 6 | -------------------------------------------------------------------------------- /modules/store-devtools/src/zone-config.ts: -------------------------------------------------------------------------------- 1 | import { NgZone, inject } from '@angular/core'; 2 | 3 | export type ZoneConfig = 4 | | { connectInZone: true; ngZone: NgZone } 5 | | { connectInZone: false; ngZone: null }; 6 | 7 | export function injectZoneConfig(connectInZone: boolean) { 8 | const ngZone = connectInZone ? inject(NgZone) : null; 9 | return { ngZone, connectInZone } as ZoneConfig; 10 | } 11 | -------------------------------------------------------------------------------- /modules/store-devtools/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | -------------------------------------------------------------------------------- /modules/store-devtools/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/store/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | See [CHANGELOG.md](https://github.com/ngrx/platform/blob/main/CHANGELOG.md) 4 | -------------------------------------------------------------------------------- /modules/store/README.md: -------------------------------------------------------------------------------- 1 | # @ngrx/store 2 | 3 | The sources for this package are in the main [NgRx](https://github.com/ngrx/platform) repo. Please file issues and pull requests against that repo. 4 | 5 | License: MIT 6 | -------------------------------------------------------------------------------- /modules/store/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * DO NOT EDIT 3 | * 4 | * This file is automatically generated at build 5 | */ 6 | 7 | export * from './public_api'; 8 | -------------------------------------------------------------------------------- /modules/store/migrations/6_0_0/index.ts: -------------------------------------------------------------------------------- 1 | import { Rule } from '@angular-devkit/schematics'; 2 | import { updatePackage } from '../../schematics-core'; 3 | 4 | export default function (): Rule { 5 | return updatePackage('store'); 6 | } 7 | -------------------------------------------------------------------------------- /modules/store/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/modules/store", 4 | "assets": ["migrations/**/*.json", "schematics/**/*.json", "**/files/**/*"], 5 | "lib": { 6 | "entryFile": "index.ts" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /modules/store/public_api.ts: -------------------------------------------------------------------------------- 1 | export * from './src/index'; 2 | -------------------------------------------------------------------------------- /modules/store/schematics-core/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | -------------------------------------------------------------------------------- /modules/store/schematics-core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.lib.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /modules/store/schematics-core/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /modules/store/schematics-core/utility/libs-version.ts: -------------------------------------------------------------------------------- 1 | export const platformVersion = '^19.2.1'; 2 | -------------------------------------------------------------------------------- /modules/store/schematics/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "schematics": { 3 | "ng-add": { 4 | "aliases": ["init"], 5 | "factory": "./ng-add", 6 | "schema": "./ng-add/schema.json", 7 | "description": "Adds initial setup for state managment" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /modules/store/schematics/ng-add/schema.ts: -------------------------------------------------------------------------------- 1 | export interface Schema { 2 | skipPackageJson?: boolean; 3 | path?: string; 4 | project?: string; 5 | module?: string; 6 | statePath?: string; 7 | stateInterface?: string; 8 | /** 9 | * Setup state management without registering initial reducers. 10 | */ 11 | minimal?: boolean; 12 | skipESLintPlugin?: boolean; 13 | } 14 | -------------------------------------------------------------------------------- /modules/store/spec/types/utils.ts: -------------------------------------------------------------------------------- 1 | export const compilerOptions = () => ({ 2 | moduleResolution: 'node', 3 | target: 'ES2022', 4 | baseUrl: '.', 5 | experimentalDecorators: true, 6 | paths: { 7 | '@ngrx/store': ['./modules/store'], 8 | }, 9 | }); 10 | -------------------------------------------------------------------------------- /modules/store/src/flags.ts: -------------------------------------------------------------------------------- 1 | let _ngrxMockEnvironment = false; 2 | export function setNgrxMockEnvironment(value: boolean): void { 3 | _ngrxMockEnvironment = value; 4 | } 5 | export function isNgrxMockEnvironment(): boolean { 6 | return _ngrxMockEnvironment; 7 | } 8 | -------------------------------------------------------------------------------- /modules/store/src/globals.ts: -------------------------------------------------------------------------------- 1 | export const REGISTERED_ACTION_TYPES: { [actionType: string]: number } = {}; 2 | 3 | export function resetRegisteredActionTypes() { 4 | for (const key of Object.keys(REGISTERED_ACTION_TYPES)) { 5 | delete REGISTERED_ACTION_TYPES[key]; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /modules/store/src/meta-reducers/index.ts: -------------------------------------------------------------------------------- 1 | export { immutabilityCheckMetaReducer } from './immutability_reducer'; 2 | export { serializationCheckMetaReducer } from './serialization_reducer'; 3 | export { inNgZoneAssertMetaReducer } from './inNgZoneAssert_reducer'; 4 | -------------------------------------------------------------------------------- /modules/store/test-setup.ts: -------------------------------------------------------------------------------- 1 | import 'zone.js/plugins/zone-legacy'; 2 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 3 | 4 | setupZoneTestEnv(); 5 | Object.assign(global, { TextDecoder, TextEncoder }); 6 | -------------------------------------------------------------------------------- /modules/store/testing/index.ts: -------------------------------------------------------------------------------- 1 | export * from './src/public_api'; 2 | -------------------------------------------------------------------------------- /modules/store/testing/ng-package.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /modules/store/testing/src/mock_selector.ts: -------------------------------------------------------------------------------- 1 | import { MemoizedSelector, MemoizedSelectorWithProps } from '@ngrx/store'; 2 | 3 | export interface MockSelector { 4 | selector: 5 | | string 6 | | MemoizedSelector 7 | | MemoizedSelectorWithProps; 8 | value: any; 9 | } 10 | -------------------------------------------------------------------------------- /modules/store/testing/src/public_api.ts: -------------------------------------------------------------------------------- 1 | export * from './testing'; 2 | -------------------------------------------------------------------------------- /modules/store/testing/src/tokens.ts: -------------------------------------------------------------------------------- 1 | import { InjectionToken } from '@angular/core'; 2 | 3 | export const MOCK_SELECTORS = new InjectionToken('@ngrx/store Mock Selectors'); 4 | -------------------------------------------------------------------------------- /modules/store/testing/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.build", 3 | "compilerOptions": { 4 | "paths": { 5 | "@ngrx/store": ["../../dist/packages/store"] 6 | } 7 | }, 8 | "files": ["index.ts"], 9 | "angularCompilerOptions": {} 10 | } 11 | -------------------------------------------------------------------------------- /modules/store/testing/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.spec", 3 | "files": ["index.ts"] 4 | } 5 | -------------------------------------------------------------------------------- /modules/store/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | singleQuote: true, 3 | trailingComma: 'es5', 4 | overrides: [ 5 | { 6 | files: '*.md', 7 | options: { 8 | printWidth: 70, 9 | }, 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /projects/example-app-e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "sourceMap": false, 5 | "types": ["cypress", "node", "@testing-library/cypress"], 6 | "outDir": "../../dist/out-tsc" 7 | }, 8 | "include": ["src/**/*.ts", "src/**/*.js", "cypress.config.ts"], 9 | "files": [], 10 | "references": [], 11 | "exclude": [] 12 | } 13 | -------------------------------------------------------------------------------- /projects/example-app/src/app/auth/actions/auth-api.actions.ts: -------------------------------------------------------------------------------- 1 | import { props, createActionGroup, emptyProps } from '@ngrx/store'; 2 | import { User } from '@example-app/auth/models'; 3 | 4 | export const AuthApiActions = createActionGroup({ 5 | source: 'Auth/API', 6 | events: { 7 | 'Login Success': props<{ user: User }>(), 8 | 'Login Failure': props<{ error: any }>(), 9 | 'Login Redirect': emptyProps(), 10 | }, 11 | }); 12 | -------------------------------------------------------------------------------- /projects/example-app/src/app/auth/actions/auth.actions.ts: -------------------------------------------------------------------------------- 1 | import { createActionGroup, emptyProps } from '@ngrx/store'; 2 | 3 | export const AuthActions = createActionGroup({ 4 | source: 'Auth', 5 | events: { 6 | Logout: emptyProps(), 7 | 'Logout Confirmation': emptyProps(), 8 | 'Logout Confirmation Dismiss': emptyProps(), 9 | }, 10 | }); 11 | -------------------------------------------------------------------------------- /projects/example-app/src/app/auth/actions/login-page.actions.ts: -------------------------------------------------------------------------------- 1 | import { createActionGroup, props } from '@ngrx/store'; 2 | import { Credentials } from '@example-app/auth/models'; 3 | 4 | export const LoginPageActions = createActionGroup({ 5 | source: 'Login Page', 6 | events: { 7 | Login: props<{ credentials: Credentials }>(), 8 | }, 9 | }); 10 | -------------------------------------------------------------------------------- /projects/example-app/src/app/auth/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './login-form.component'; 2 | export * from './logout-confirmation-dialog.component'; 3 | -------------------------------------------------------------------------------- /projects/example-app/src/app/auth/containers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './login-page.component'; 2 | -------------------------------------------------------------------------------- /projects/example-app/src/app/auth/effects/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth.effects'; 2 | -------------------------------------------------------------------------------- /projects/example-app/src/app/auth/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth.module'; 2 | -------------------------------------------------------------------------------- /projects/example-app/src/app/auth/models/index.ts: -------------------------------------------------------------------------------- 1 | export * from './user'; 2 | -------------------------------------------------------------------------------- /projects/example-app/src/app/auth/models/user.ts: -------------------------------------------------------------------------------- 1 | export interface Credentials { 2 | username: string; 3 | password: string; 4 | } 5 | 6 | export interface User { 7 | name: string; 8 | } 9 | -------------------------------------------------------------------------------- /projects/example-app/src/app/auth/services/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth.service'; 2 | export * from './auth-guard.service'; 3 | -------------------------------------------------------------------------------- /projects/example-app/src/app/books/actions/book.actions.ts: -------------------------------------------------------------------------------- 1 | import { createActionGroup, props } from '@ngrx/store'; 2 | 3 | import { Book } from '@example-app/books/models'; 4 | 5 | export const BookActions = createActionGroup({ 6 | source: 'Book Exists Guard', 7 | events: { 8 | 'Load Book': props<{ book: Book }>(), 9 | }, 10 | }); 11 | -------------------------------------------------------------------------------- /projects/example-app/src/app/books/actions/books-api.actions.ts: -------------------------------------------------------------------------------- 1 | import { createActionGroup, props } from '@ngrx/store'; 2 | 3 | import { Book } from '@example-app/books/models'; 4 | 5 | export const BooksApiActions = createActionGroup({ 6 | source: 'Books/API', 7 | events: { 8 | 'Search Success': props<{ books: Book[] }>(), 9 | 'Search Failure': props<{ errorMsg: string }>(), 10 | }, 11 | }); 12 | -------------------------------------------------------------------------------- /projects/example-app/src/app/books/actions/collection-page.actions.ts: -------------------------------------------------------------------------------- 1 | import { createActionGroup, emptyProps } from '@ngrx/store'; 2 | 3 | export const CollectionPageActions = createActionGroup({ 4 | source: 'Collection Page', 5 | events: { 6 | /** 7 | * Load Collection Action 8 | */ 9 | Enter: emptyProps(), 10 | }, 11 | }); 12 | -------------------------------------------------------------------------------- /projects/example-app/src/app/books/actions/find-book-page.actions.ts: -------------------------------------------------------------------------------- 1 | import { createActionGroup, props } from '@ngrx/store'; 2 | 3 | export const FindBookPageActions = createActionGroup({ 4 | source: 'Find Book Page', 5 | events: { 6 | 'Search Books': props<{ query: string }>(), 7 | }, 8 | }); 9 | -------------------------------------------------------------------------------- /projects/example-app/src/app/books/actions/view-book-page.actions.ts: -------------------------------------------------------------------------------- 1 | import { createActionGroup, props } from '@ngrx/store'; 2 | 3 | export const ViewBookPageActions = createActionGroup({ 4 | source: 'View Book Page', 5 | events: { 6 | 'Select Book': props<{ id: string }>(), 7 | }, 8 | }); 9 | -------------------------------------------------------------------------------- /projects/example-app/src/app/books/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './book-authors.component'; 2 | export * from './book-detail.component'; 3 | export * from './book-preview.component'; 4 | export * from './book-preview-list.component'; 5 | export * from './book-search.component'; 6 | -------------------------------------------------------------------------------- /projects/example-app/src/app/books/containers/__snapshots__/selected-book-page.component.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Selected Book Page should compile 1`] = ` 4 | 9 | 10 | 11 | 12 | `; 13 | -------------------------------------------------------------------------------- /projects/example-app/src/app/books/containers/__snapshots__/view-book-page.component.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`View Book Page should compile 1`] = ` 4 | 7 | 8 | 9 | 10 | 11 | 12 | `; 13 | -------------------------------------------------------------------------------- /projects/example-app/src/app/books/containers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './collection-page.component'; 2 | export * from './find-book-page.component'; 3 | export * from './selected-book-page.component'; 4 | export * from './view-book-page.component'; 5 | -------------------------------------------------------------------------------- /projects/example-app/src/app/books/effects/index.ts: -------------------------------------------------------------------------------- 1 | export * from './book.effects'; 2 | export * from './collection.effects'; 3 | -------------------------------------------------------------------------------- /projects/example-app/src/app/books/guards/index.ts: -------------------------------------------------------------------------------- 1 | export * from './book-exists.guard'; 2 | -------------------------------------------------------------------------------- /projects/example-app/src/app/books/models/index.ts: -------------------------------------------------------------------------------- 1 | export * from './book'; 2 | -------------------------------------------------------------------------------- /projects/example-app/src/app/core/actions/layout.actions.ts: -------------------------------------------------------------------------------- 1 | import { createActionGroup, emptyProps } from '@ngrx/store'; 2 | 3 | export const LayoutActions = createActionGroup({ 4 | source: 'Layout', 5 | events: { 6 | 'Open Sidenav': emptyProps(), 7 | 'Close Sidenav': emptyProps(), 8 | }, 9 | }); 10 | -------------------------------------------------------------------------------- /projects/example-app/src/app/core/actions/user.actions.ts: -------------------------------------------------------------------------------- 1 | import { createActionGroup, emptyProps } from '@ngrx/store'; 2 | 3 | export const UserActions = createActionGroup({ 4 | source: 'User', 5 | events: { 6 | 'Idle Timeout': emptyProps(), 7 | }, 8 | }); 9 | -------------------------------------------------------------------------------- /projects/example-app/src/app/core/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './layout.component'; 2 | export * from './nav-item.component'; 3 | export * from './sidenav.component'; 4 | export * from './toolbar.component'; 5 | -------------------------------------------------------------------------------- /projects/example-app/src/app/core/containers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './app.component'; 2 | export * from './not-found-page.component'; 3 | -------------------------------------------------------------------------------- /projects/example-app/src/app/core/effects/index.ts: -------------------------------------------------------------------------------- 1 | export * from './user.effects'; 2 | export * from './router.effects'; 3 | -------------------------------------------------------------------------------- /projects/example-app/src/app/core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './core.module'; 2 | -------------------------------------------------------------------------------- /projects/example-app/src/app/core/services/index.ts: -------------------------------------------------------------------------------- 1 | export * from './book-storage.service'; 2 | export * from './google-books.service'; 3 | -------------------------------------------------------------------------------- /projects/example-app/src/app/material/index.ts: -------------------------------------------------------------------------------- 1 | export * from '@example-app/material/material.module'; 2 | -------------------------------------------------------------------------------- /projects/example-app/src/app/shared/pipes/index.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { AddCommasPipe } from '@example-app/shared/pipes/add-commas.pipe'; 4 | import { EllipsisPipe } from '@example-app/shared/pipes/ellipsis.pipe'; 5 | 6 | export const PIPES = [AddCommasPipe, EllipsisPipe]; 7 | 8 | @NgModule({ 9 | declarations: PIPES, 10 | exports: PIPES, 11 | }) 12 | export class PipesModule {} 13 | -------------------------------------------------------------------------------- /projects/example-app/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/example-app/src/assets/.gitkeep -------------------------------------------------------------------------------- /projects/example-app/src/assets/.npmignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/example-app/src/assets/.npmignore -------------------------------------------------------------------------------- /projects/example-app/src/main.ts: -------------------------------------------------------------------------------- 1 | import './polyfills'; 2 | 3 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 4 | import { AppModule } from './app/app.module'; 5 | 6 | platformBrowserDynamic().bootstrapModule(AppModule); 7 | -------------------------------------------------------------------------------- /projects/example-app/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "strict": false, 8 | "target": "es2016" 9 | }, 10 | "files": ["src/test-setup.ts"], 11 | "include": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /projects/ngrx.io/.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "targets": { 3 | "ngrx-io-dev": { 4 | "hosting": { 5 | "stable": [ 6 | "ngrx-io-stable" 7 | ], 8 | "archive": [ 9 | "ngrx-io-v9" 10 | ] 11 | } 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/component-store-paginator-service/example-config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/examples/component-store-paginator-service/example-config.json -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/component-store-paginator-service/stackblitz.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ComponentStore - PaginatorComponent with PaginatorStore Service", 3 | "files": ["!**/*.d.ts", "!**/*.js", "!**/*.[0-9].*"] 4 | } 5 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/component-store-paginator/example-config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/examples/component-store-paginator/example-config.json -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/component-store-paginator/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Paginator ComponentStore Example 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/component-store-paginator/stackblitz.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ComponentStore - PaginatorComponent providing ComponentStore", 3 | "files": ["!**/*.d.ts", "!**/*.js", "!**/*.[0-9].*"] 4 | } 5 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/component-store-slide-toggle/example-config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/examples/component-store-slide-toggle/example-config.json -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/component-store-slide-toggle/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | p { 2 | font-family: Lato; 3 | } -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/component-store-slide-toggle/stackblitz.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ComponentStore - slide-toggle", 3 | "files": ["!**/*.d.ts", "!**/*.js", "!**/*.[0-9].*"] 4 | } 5 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/ngrx-start/example-config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/examples/ngrx-start/example-config.json -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/ngrx-start/src/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 0.5% 2 | last 2 versions 3 | Firefox ESR 4 | not dead 5 | IE 9-11 6 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/ngrx-start/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | p { 2 | font-family: Lato; 3 | } 4 | 5 | h1 { font-family: Lato; } -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/ngrx-start/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |

NgRx Tutorial

2 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/ngrx-start/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'], 7 | }) 8 | export class AppComponent {} 9 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/ngrx-start/src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { BrowserModule } from '@angular/platform-browser'; 3 | 4 | import { AppComponent } from './app.component'; 5 | 6 | @NgModule({ 7 | imports: [BrowserModule], 8 | declarations: [AppComponent], 9 | bootstrap: [AppComponent], 10 | }) 11 | export class AppModule {} 12 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/ngrx-start/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | NgRx Tutorial 4 | 5 | 6 | loading 7 | 8 | 9 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/ngrx-start/stackblitz.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "NgRx Tutorial", 3 | "files": ["!**/*.d.ts", "!**/*.js"] 4 | } 5 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/router-store-selectors/e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from './app.po'; 2 | 3 | describe('workspace-project App', () => { 4 | let page: AppPage; 5 | 6 | beforeEach(() => { 7 | page = new AppPage(); 8 | }); 9 | 10 | it('should display welcome message', () => { 11 | page.navigateTo(); 12 | expect(page.getParagraphText()).toEqual('Welcome to store-tutorial!'); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/router-store-selectors/example-config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/examples/router-store-selectors/example-config.json -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/router-store-selectors/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | p { 2 | font-family: Lato; 3 | } -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/router-store-selectors/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 |
  1. {{ car.make }} | {{ car.model}} | {{ car.year}} 4 | 5 |
6 | 7 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/router-store-selectors/src/app/car/car.actions.ts: -------------------------------------------------------------------------------- 1 | import { createAction, props } from '@ngrx/store'; 2 | import { Car } from './car.reducer'; 3 | 4 | // for our example, we'll only populate cars in the store on app init 5 | export const appInit = createAction('[App] Init', props<{ cars: Car[] }>()); 6 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/router-store-selectors/src/app/car/car.component.css: -------------------------------------------------------------------------------- 1 | .container { 2 | border-style: solid; 3 | border-width: 4px; 4 | border-radius: 4px; 5 | } 6 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/router-store-selectors/src/app/car/car.component.html: -------------------------------------------------------------------------------- 1 |
2 |

Car Component

3 | 4 |
{{ car$ | async | json }}
5 |
6 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/router-store-selectors/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NgRx Tutorial 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/router-store-selectors/src/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrapApplication } from '@angular/platform-browser'; 2 | import { AppComponent } from './app/app.component'; 3 | import { appConfig } from './app/app.config'; 4 | 5 | bootstrapApplication(AppComponent, appConfig); 6 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/router-store-selectors/stackblitz.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Tutorial", 3 | "files": ["!**/*.d.ts", "!**/*.js", "!**/*.[0-9].*"] 4 | } 5 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store-walkthrough/e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from './app.po'; 2 | 3 | describe('workspace-project App', () => { 4 | let page: AppPage; 5 | 6 | beforeEach(() => { 7 | page = new AppPage(); 8 | }); 9 | 10 | it('should display welcome message', () => { 11 | page.navigateTo(); 12 | expect(page.getParagraphText()).toEqual('Welcome to store-tutorial!'); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store-walkthrough/example-config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/examples/store-walkthrough/example-config.json -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store-walkthrough/src/app/book-collection/book-collection.component.css: -------------------------------------------------------------------------------- 1 | div { 2 | padding: 10px; 3 | } 4 | span { 5 | margin: 0 10px 0 2px; 6 | } 7 | p { 8 | display: inline-block; 9 | font-style: italic; 10 | margin: 0 0 5px; 11 | } -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store-walkthrough/src/app/book-collection/book-collection.component.html: -------------------------------------------------------------------------------- 1 |
5 |

{{book.volumeInfo.title}}

by {{book.volumeInfo.authors}} 6 | 10 |
11 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store-walkthrough/src/app/book-list/book-list.component.css: -------------------------------------------------------------------------------- 1 | div { 2 | padding: 10px; 3 | } 4 | span { 5 | margin: 0 10px 0 2px; 6 | } 7 | p { 8 | display: inline-block; 9 | font-style: italic; 10 | margin: 0; 11 | } -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store-walkthrough/src/app/book-list/book-list.component.html: -------------------------------------------------------------------------------- 1 |
5 |

{{book.volumeInfo.title}}

by {{book.volumeInfo.authors}} 6 | 10 |
-------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store-walkthrough/src/app/book-list/books.model.ts: -------------------------------------------------------------------------------- 1 | export interface Book { 2 | id: string; 3 | volumeInfo: { 4 | title: string; 5 | authors: Array; 6 | }; 7 | } -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store-walkthrough/src/app/state/app.state.ts: -------------------------------------------------------------------------------- 1 | import { Book } from '../book-list/books.model'; 2 | 3 | export interface AppState { 4 | books: ReadonlyArray; 5 | collection: ReadonlyArray; 6 | } 7 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store-walkthrough/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NgRx Tutorial 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store-walkthrough/stackblitz.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Tutorial", 3 | "files": ["!**/*.d.ts", "!**/*.js", "!**/*.[0-9].*"] 4 | } 5 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store/e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from './app.po'; 2 | 3 | describe('workspace-project App', () => { 4 | let page: AppPage; 5 | 6 | beforeEach(() => { 7 | page = new AppPage(); 8 | }); 9 | 10 | it('should display welcome message', () => { 11 | page.navigateTo(); 12 | expect(page.getParagraphText()).toEqual('Welcome to store-tutorial!'); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store/example-config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/examples/store/example-config.json -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store/src/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 0.5% 2 | last 2 versions 3 | Firefox ESR 4 | not dead 5 | IE 9-11 6 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store/src/app/app.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/examples/store/src/app/app.component.css -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |

NgRx Tutorial

2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'], 7 | }) 8 | export class AppComponent {} 9 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store/src/app/counter.actions.ts: -------------------------------------------------------------------------------- 1 | // #docregion 2 | import { createAction } from '@ngrx/store'; 3 | 4 | export const increment = createAction('[Counter Component] Increment'); 5 | export const decrement = createAction('[Counter Component] Decrement'); 6 | export const reset = createAction('[Counter Component] Reset'); 7 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store/src/app/counter.reducer.ts: -------------------------------------------------------------------------------- 1 | // #docregion 2 | import { createReducer, on } from '@ngrx/store'; 3 | import { increment, decrement, reset } from './counter.actions'; 4 | 5 | export const initialState = 0; 6 | 7 | export const counterReducer = createReducer( 8 | initialState, 9 | on(increment, (state) => state + 1), 10 | on(decrement, (state) => state - 1), 11 | on(reset, (state) => 0) 12 | ); 13 | 14 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store/src/app/my-counter/my-counter.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
Current Count: {{ count$ | async }}
4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | NgRx Tutorial 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/store/stackblitz.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Tutorial", 3 | "files": ["!**/*.d.ts", "!**/*.js", "!**/*.[0-9].*"] 4 | } 5 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/testing-store/example-config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/examples/testing-store/example-config.json -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/testing-store/src/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 0.5% 2 | last 2 versions 3 | Firefox ESR 4 | not dead 5 | IE 9-11 6 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/testing-store/src/app/actions/auth.actions.ts: -------------------------------------------------------------------------------- 1 | import { createAction, props } from '@ngrx/store'; 2 | 3 | export const login = createAction( 4 | '[Auth] Login', 5 | props<{ username: string }>() 6 | ); 7 | export const logout = createAction('[Auth] Logout'); 8 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/testing-store/src/app/actions/index.ts: -------------------------------------------------------------------------------- 1 | import * as AuthActions from './auth.actions'; 2 | 3 | export { AuthActions }; 4 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/testing-store/src/app/book-collection/book-collection.component.css: -------------------------------------------------------------------------------- 1 | div { 2 | padding: 10px; 3 | } 4 | span { 5 | margin: 0 10px 0 2px; 6 | } 7 | p { 8 | display: inline-block; 9 | font-style: italic; 10 | margin: 0 0 5px; 11 | } -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/testing-store/src/app/book-collection/book-collection.component.html: -------------------------------------------------------------------------------- 1 |
5 |

{{book.volumeInfo.title}}

by {{book.volumeInfo.authors}} 6 | 10 |
11 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/testing-store/src/app/book-list/book-list.component.css: -------------------------------------------------------------------------------- 1 | div { 2 | padding: 10px; 3 | } 4 | span { 5 | margin: 0 10px 0 2px; 6 | } 7 | p { 8 | display: inline-block; 9 | font-style: italic; 10 | margin: 0; 11 | } -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/testing-store/src/app/book-list/book-list.component.html: -------------------------------------------------------------------------------- 1 |
5 |

{{book.volumeInfo.title}}

by {{book.volumeInfo.authors}} 6 | 10 |
-------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/testing-store/src/app/book-list/books.model.ts: -------------------------------------------------------------------------------- 1 | export interface Book { 2 | id: string; 3 | volumeInfo: { 4 | title: string; 5 | authors: Array; 6 | }; 7 | } -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/testing-store/src/app/state/app.state.ts: -------------------------------------------------------------------------------- 1 | import { Book } from '../book-list/books.model'; 2 | 3 | export interface AppState { 4 | books: ReadonlyArray; 5 | collection: ReadonlyArray; 6 | } 7 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/testing-store/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NgRx Tutorial 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/testing-store/src/styles.css: -------------------------------------------------------------------------------- 1 | /* Master Styles */ 2 | * { 3 | font-family: Arial, Helvetica, sans-serif; 4 | } 5 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/examples/testing-store/stackblitz.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Store Testing Tutorial", 3 | "files": ["!**/*.d.ts", "**/*.spec.ts"], 4 | "type": "testing" 5 | } 6 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/guide/data/architecture.md: -------------------------------------------------------------------------------- 1 | # Architecture 2 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/guide/eslint-plugin/rules/with-state-no-arrays-at-root-level.md: -------------------------------------------------------------------------------- 1 | # with-state-no-arrays-at-root-level 2 | 3 | withState should accept a record or dictionary as an input argument. 4 | 5 | - **Type**: problem 6 | - **Fixable**: No 7 | - **Suggestion**: No 8 | - **Requires type checking**: Yes 9 | - **Configurable**: No 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/guide/operators/index.md: -------------------------------------------------------------------------------- 1 | # @ngrx/operators 2 | 3 | NgRx Operators is a utility library with frequently used RxJS operators for managing state and side effects. 4 | 5 | ## Installation 6 | 7 | Detailed installation instructions can be found on the [Installation](guide/operators/install) page. 8 | 9 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/guide/store/architecture.md: -------------------------------------------------------------------------------- 1 | # Architecture 2 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/guide/style-guide.md: -------------------------------------------------------------------------------- 1 | # Style Guide 2 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/bios/_no-one.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/bios/_no-one.jpg -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/bios/alex-okrushko.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/bios/alex-okrushko.jpg -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/bios/brandonroberts.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/bios/brandonroberts.jpg -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/bios/john-papa.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/bios/john-papa.jpg -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/bios/marko.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/bios/marko.jpg -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/bios/mike-ryan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/bios/mike-ryan.jpg -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/bios/rainer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/bios/rainer.jpg -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/bios/rob-wormald.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/bios/rob-wormald.jpg -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/bios/timd.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/bios/timd.jpg -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/bios/victor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/bios/victor.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/bios/wardbell.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/bios/wardbell.jpg -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/bios/wesgrimes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/bios/wesgrimes.jpg -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/guide/component-store/file-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/guide/component-store/file-structure.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/guide/component-store/state-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/guide/component-store/state-structure.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/guide/component-store/types-of-state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/guide/component-store/types-of-state.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/guide/data/action-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/guide/data/action-flow.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/guide/signals/app-architecture-with-events-plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/guide/signals/app-architecture-with-events-plugin.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/guide/store/state-management-lifecycle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/guide/store/state-management-lifecycle.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/guide/store/state-management-lifecycle.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/guide/store/state-management-lifecycle.psd -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/animations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/animations.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/augury.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/augury.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/cdk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/cdk.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/cli.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/cli.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/compiler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/compiler.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/components.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/dependency-injection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/dependency-injection.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/forms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/forms.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/http.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/http.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/i18n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/i18n.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/karma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/karma.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/labs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/labs.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/language-services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/language-services.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/lazy-loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/lazy-loading.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/libraries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/libraries.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/material.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/performance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/performance.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/protractor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/protractor.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/pwa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/pwa.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/router.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/router.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/templates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/templates.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/images/marketing/concept-icons/universal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/content/images/marketing/concept-icons/universal.png -------------------------------------------------------------------------------- /projects/ngrx.io/content/marketing/about.html: -------------------------------------------------------------------------------- 1 |

NgRx Team

2 | 3 | 4 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/marketing/announcements.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "startDate": "2019-12-10", 4 | "endDate": "2020-11-06", 5 | "message": 6 | "Join us for NgRx Conf, the Galaxy's First Reactive Angular Conference
Nov 5th-6th, 2020", 7 | "imageUrl": "generated/images/marketing/home/ngrx-conf-badge.svg", 8 | "linkUrl": "https://conf.ngrx.io/" 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/marketing/api.html: -------------------------------------------------------------------------------- 1 |

API List

2 | 3 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/marketing/events.html: -------------------------------------------------------------------------------- 1 |
2 |

Events

3 |
4 |
5 | 6 |
7 | -------------------------------------------------------------------------------- /projects/ngrx.io/content/marketing/resources.html: -------------------------------------------------------------------------------- 1 |
2 |

Explore NgRx Resources

3 |
4 | 5 |
6 | 7 |
8 | -------------------------------------------------------------------------------- /projects/ngrx.io/database.rules.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | ".read": "auth != null", 4 | ".write": "auth != null" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /projects/ngrx.io/prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | singleQuote: true, 3 | trailingComma: 'es5', 4 | quoteProps: 'preserve', 5 | }; 6 | -------------------------------------------------------------------------------- /projects/ngrx.io/scripts/_payload-limits.json: -------------------------------------------------------------------------------- 1 | { 2 | "aio": { 3 | "master": { 4 | "uncompressed": { 5 | "runtime": 2768, 6 | "main": 476338, 7 | "polyfills": 38453, 8 | "prettify": 14913 9 | } 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/_redirects: -------------------------------------------------------------------------------- 1 | /* /index.html 200 -------------------------------------------------------------------------------- /projects/ngrx.io/src/app/custom-elements/events/event.model.ts: -------------------------------------------------------------------------------- 1 | export interface EventResponse { 2 | name: string; 3 | url: string; 4 | location: string; 5 | startDate?: string; 6 | endDate: string; 7 | } 8 | 9 | export interface Event { 10 | name: string; 11 | url: string; 12 | location: string; 13 | startDate?: Date; 14 | endDate: Date; 15 | } 16 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/app/custom-elements/expandable-section/expandable-section.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{title}} 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/app/custom-elements/ngrx/circles.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { CirclesModule } from './circles.module'; 2 | 3 | describe('CirclesModule', () => { 4 | let circlesModule: CirclesModule; 5 | 6 | beforeEach(() => { 7 | circlesModule = new CirclesModule(); 8 | }); 9 | 10 | it('should create an instance', () => { 11 | expect(circlesModule).toBeTruthy(); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/app/custom-elements/ngrx/code-block.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { CodeBlockModule } from './code-block.module'; 2 | 3 | describe('CodeBlockModule', () => { 4 | let codeBlockModule: CodeBlockModule; 5 | 6 | beforeEach(() => { 7 | codeBlockModule = new CodeBlockModule(); 8 | }); 9 | 10 | it('should create an instance', () => { 11 | expect(codeBlockModule).toBeTruthy(); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/app/documents/document-contents.ts: -------------------------------------------------------------------------------- 1 | export interface DocumentContents { 2 | /** The unique identifier for this document */ 3 | id: string; 4 | /** The HTML to display in the doc viewer */ 5 | contents: string|null; 6 | } 7 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/app/layout/footer/footer.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | 3 | import { NavigationNode, VersionInfo } from 'app/navigation/navigation.service'; 4 | 5 | @Component({ 6 | selector: 'aio-footer', 7 | templateUrl: 'footer.component.html' 8 | }) 9 | export class FooterComponent { 10 | @Input() nodes: NavigationNode[]; 11 | @Input() versionInfo: VersionInfo; 12 | } 13 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/app/layout/notification/notification.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/app/shared/current-date.ts: -------------------------------------------------------------------------------- 1 | import { InjectionToken } from '@angular/core'; 2 | 3 | export const CurrentDateToken = new InjectionToken('CurrentDate'); 4 | export function currentDateProvider() { 5 | return new Date(); 6 | } 7 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/app/shared/window.ts: -------------------------------------------------------------------------------- 1 | import { InjectionToken } from '@angular/core'; 2 | 3 | export const WindowToken = new InjectionToken('Window'); 4 | export function windowProvider() { 5 | return window; 6 | } 7 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/app/sw-updates/sw-updates.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { SwUpdatesService } from './sw-updates.service'; 4 | 5 | @NgModule({ 6 | providers: [SwUpdatesService], 7 | }) 8 | export class SwUpdatesModule {} 9 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/src/assets/.gitkeep -------------------------------------------------------------------------------- /projects/ngrx.io/src/assets/images/badge-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/src/assets/images/badge-white.png -------------------------------------------------------------------------------- /projects/ngrx.io/src/assets/images/badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/src/assets/images/badge.png -------------------------------------------------------------------------------- /projects/ngrx.io/src/assets/images/favicons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/src/assets/images/favicons/android-chrome-192x192.png -------------------------------------------------------------------------------- /projects/ngrx.io/src/assets/images/favicons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/src/assets/images/favicons/android-chrome-512x512.png -------------------------------------------------------------------------------- /projects/ngrx.io/src/assets/images/favicons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/src/assets/images/favicons/apple-touch-icon.png -------------------------------------------------------------------------------- /projects/ngrx.io/src/assets/images/favicons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/src/assets/images/favicons/favicon-16x16.png -------------------------------------------------------------------------------- /projects/ngrx.io/src/assets/images/favicons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/src/assets/images/favicons/favicon-32x32.png -------------------------------------------------------------------------------- /projects/ngrx.io/src/assets/images/favicons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/src/assets/images/favicons/favicon.ico -------------------------------------------------------------------------------- /projects/ngrx.io/src/assets/images/logos/angular/angular.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/src/assets/images/logos/angular/angular.png -------------------------------------------------------------------------------- /projects/ngrx.io/src/assets/images/logos/angular/angular_solidBlack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/src/assets/images/logos/angular/angular_solidBlack.png -------------------------------------------------------------------------------- /projects/ngrx.io/src/assets/images/logos/angular/angular_whiteTransparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/src/assets/images/logos/angular/angular_whiteTransparent.png -------------------------------------------------------------------------------- /projects/ngrx.io/src/assets/images/logos/angular/angular_whiteTransparent_withMargin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/src/assets/images/logos/angular/angular_whiteTransparent_withMargin.png -------------------------------------------------------------------------------- /projects/ngrx.io/src/assets/images/logos/angular/logo-nav@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/src/assets/images/logos/angular/logo-nav@2x.png -------------------------------------------------------------------------------- /projects/ngrx.io/src/assets/images/sponsors/briebug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/src/assets/images/sponsors/briebug.png -------------------------------------------------------------------------------- /projects/ngrx.io/src/assets/images/sponsors/house-of-angular.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/src/assets/images/sponsors/house-of-angular.png -------------------------------------------------------------------------------- /projects/ngrx.io/src/assets/images/state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/src/assets/images/state.png -------------------------------------------------------------------------------- /projects/ngrx.io/src/environments/environment.archive.ts: -------------------------------------------------------------------------------- 1 | // This is for archived sites, which are hosted at https://vX.ngrx.io, where X is the major NgRx version. 2 | export const environment = { 3 | gaId: 'UA-127598155-1', // Production id (since it is linked from the main site) 4 | production: true, 5 | mode: 'archive', 6 | }; 7 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/environments/environment.next.ts: -------------------------------------------------------------------------------- 1 | // This is for the staging site, which is hosted at https://next.ngrx.io 2 | export const environment = { 3 | gaId: 'UA-127598155-1', // Production id (since it is linked from the main site) 4 | production: true, 5 | mode: 'next', 6 | }; 7 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/environments/environment.stable.ts: -------------------------------------------------------------------------------- 1 | // This is for the production site, which is hosted at https://ngrx.io 2 | export const environment = { 3 | gaId: 'UA-127598155-1', // Production id 4 | production: true, 5 | mode: 'stable', 6 | }; 7 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/extra-files/archive/robots.txt: -------------------------------------------------------------------------------- 1 | # Disallow all URLs (see http://www.robotstxt.org/robotstxt.html) 2 | User-agent: * 3 | Disallow: / 4 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/extra-files/next/CNAME: -------------------------------------------------------------------------------- 1 | next.ngrx.io -------------------------------------------------------------------------------- /projects/ngrx.io/src/extra-files/next/robots.txt: -------------------------------------------------------------------------------- 1 | # Disallow all URLs (see http://www.robotstxt.org/robotstxt.html) 2 | User-agent: * 3 | Disallow: / 4 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/extra-files/stable/robots.txt: -------------------------------------------------------------------------------- 1 | # Allow all URLs (see http://www.robotstxt.org/robotstxt.html) 2 | User-agent: * 3 | Disallow: 4 | Sitemap: https://ngrx.io/generated/sitemap.xml 5 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/google385281288605d160.html: -------------------------------------------------------------------------------- 1 | google-site-verification: google385281288605d160.html -------------------------------------------------------------------------------- /projects/ngrx.io/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/styles/0-base/_index.scss: -------------------------------------------------------------------------------- 1 | /* ============================== 2 | BASE STYLES 3 | ============================== */ 4 | 5 | @forward 'typography'; 6 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/styles/1-layouts/not-found/_not-found-theme.scss: -------------------------------------------------------------------------------- 1 | @use '../../constants'; 2 | @use '@angular/material' as mat; 3 | 4 | @mixin theme($theme) { 5 | $is-dark-theme: map-get($theme, is-dark); 6 | 7 | .nf-response { 8 | h1 { 9 | color: if($is-dark-theme, constants.$lightpurple, constants.$purple); 10 | } 11 | } 12 | 13 | .nf-icon.material-icons { 14 | color: constants.$purple; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/styles/1-layouts/table-of-contents/_table-of-contents.scss: -------------------------------------------------------------------------------- 1 | @use "../../constants"; 2 | 3 | nav#main-table-of-contents { 4 | width: 200px; 5 | height: 900px; 6 | position: fixed; 7 | right: 0; 8 | top: 50px; 9 | bottom: 100px; 10 | margin-left: 32px; 11 | background-color: constants.$purple; 12 | } 13 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/styles/2-modules/alert/_alert.scss: -------------------------------------------------------------------------------- 1 | @use "../../mixins"; 2 | 3 | .alert { 4 | padding: 16px; 5 | margin: 24px 0px; 6 | @include mixins.typescale-default; 7 | width: 100%; 8 | box-sizing: border-box; 9 | clear: both; 10 | 11 | h1, h2, h3, h4, h5, h6 { 12 | font-weight: 500; 13 | } 14 | 15 | > * { 16 | margin: 8px 16px; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/styles/2-modules/contribute/_contribute.scss: -------------------------------------------------------------------------------- 1 | .contribute-container { 2 | h2 { 3 | margin: 0; 4 | } 5 | 6 | .card-section { 7 | justify-content: space-between; 8 | max-width: 880px; 9 | 10 | > :first-child { 11 | margin-right: 2rem; 12 | width: 60%; 13 | } 14 | 15 | &:last-child { 16 | margin-bottom: 0; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/styles/2-modules/edit-page-cta/_edit-page-cta-theme.scss: -------------------------------------------------------------------------------- 1 | @use '../../constants'; 2 | @use '@angular/material' as mat; 3 | 4 | @mixin theme($theme) { 5 | .edit-page-cta { 6 | color: constants.$purple; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/styles/2-modules/edit-page-cta/_edit-page-cta.scss: -------------------------------------------------------------------------------- 1 | @use '../../mixins'; 2 | 3 | .edit-page-cta { 4 | font-weight: 400; 5 | @include mixins.typescale-default; 6 | 7 | text-align: right; 8 | margin-right: 32px; 9 | display: block; 10 | position: absolute; 11 | right: 0; 12 | } 13 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/styles/2-modules/enterprise-support/_enterprise-support.scss: -------------------------------------------------------------------------------- 1 | .team-grid { 2 | display: grid; 3 | grid-template-columns: 1fr 3fr; 4 | column-gap: 10px; 5 | row-gap: 20px; 6 | 7 | ngrx-contributor { 8 | justify-self: center; 9 | align-self: start; 10 | } 11 | 12 | @media only screen and (max-width: 600px) { 13 | grid-template-columns: 1fr; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/styles/2-modules/heading-anchors/_heading-anchors-theme.scss: -------------------------------------------------------------------------------- 1 | @use '../../constants'; 2 | @use '@angular/material' as mat; 3 | 4 | @mixin theme($theme) { 5 | .sidenav-content { 6 | h1, 7 | h2, 8 | h3, 9 | h4, 10 | h5, 11 | h6 { 12 | .header-link { 13 | color: constants.$mediumgray; 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/styles/2-modules/hr/_hr-theme.scss: -------------------------------------------------------------------------------- 1 | @use '../../constants'; 2 | @use '@angular/material' as mat; 3 | 4 | @mixin theme($theme) { 5 | $is-dark-theme: map-get($theme, is-dark); 6 | 7 | hr { 8 | background: if($is-dark-theme, constants.$lightpurple, #36203A); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/styles/2-modules/hr/_hr.scss: -------------------------------------------------------------------------------- 1 | hr { 2 | border: none; 3 | height: 1px; 4 | } 5 | 6 | .hr-margin { 7 | display: block; 8 | height: 1px; 9 | border: 0; 10 | margin-top: 16px; 11 | margin-bottom: 16px; 12 | padding: 0; 13 | } 14 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/styles/2-modules/images/_images-theme.scss: -------------------------------------------------------------------------------- 1 | @use '../../constants'; 2 | @use '@angular/material' as mat; 3 | 4 | @mixin theme($theme) { 5 | .content { 6 | figure { 7 | background: constants.$white; 8 | box-shadow: 2px 2px 5px 0 rgba(0, 0, 0, .2); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/styles/2-modules/progress-bar/_progress-bar.scss: -------------------------------------------------------------------------------- 1 | .progress-bar-container { 2 | height: 2px; 3 | overflow: hidden; 4 | position: fixed; 5 | top: 0; 6 | width: 100vw; 7 | z-index: 11; 8 | } 9 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/styles/_app-theme.scss: -------------------------------------------------------------------------------- 1 | @use '0-base/typography-theme'; 2 | @use '1-layouts/theme' as layout-themes; 3 | @use '2-modules/theme' as module-themes; 4 | 5 | @mixin theme($theme) { 6 | @include typography-theme.theme($theme); 7 | @include layout-themes.theme($theme); 8 | @include module-themes.theme($theme); 9 | } 10 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/testing/search.service.ts: -------------------------------------------------------------------------------- 1 | import { Subject } from 'rxjs'; 2 | import { SearchResults } from 'app/search/interfaces'; 3 | 4 | export class MockSearchService { 5 | searchResults = new Subject(); 6 | initWorker = jasmine.createSpy('initWorker'); 7 | loadIndex = jasmine.createSpy('loadIndex'); 8 | search = jasmine.createSpy('search'); 9 | } 10 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "module": "es2020", 6 | "types": ["jasmine", "node"] 7 | }, 8 | "files": ["test.ts", "polyfills.ts"], 9 | "include": ["testing/**/*.ts", "**/*.spec.ts", "**/*.d.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /projects/ngrx.io/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare let module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /projects/ngrx.io/tests/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../out-tsc/e2e", 5 | "baseUrl": "./", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": ["jasmine", "jasminewd2", "node"] 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/cli-patches/README.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | The AIO application is built using the Angular CLI tool. We are often trialling new features for the CLI, which 4 | we apply to the library after it is installed. This folder contains git patch files that contain these new features 5 | and a utility to apply those patches to the CLI library. 6 | 7 | **Currently, we have no patches to run.** 8 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/cli-patches/patch.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const sh = require('shelljs'); 3 | 4 | const PATCH_LOCK = 'node_modules/@angular/cli/.patched'; 5 | 6 | if (!fs.existsSync(PATCH_LOCK)) { 7 | sh.touch(PATCH_LOCK); 8 | } 9 | 10 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/example-zipper/customizer/package-json/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-io-example", 3 | "version": "1.0.0", 4 | "private": true, 5 | "description": "Example project from an angular.io guide.", 6 | "scripts": {}, 7 | "keywords": [], 8 | "author": "", 9 | "license": "MIT", 10 | "dependencies": {}, 11 | "devDependencies": {}, 12 | "repository": {} 13 | } 14 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/example-zipper/generateZips.js: -------------------------------------------------------------------------------- 1 | const ExampleZipper = require('./exampleZipper'); 2 | const path = require('canonical-path'); 3 | 4 | const EXAMPLES_PATH = path.join(__dirname, '../../content/examples'); 5 | const ZIPS_PATH = path.join(__dirname, '../../src/generated/zips'); 6 | 7 | new ExampleZipper(EXAMPLES_PATH, ZIPS_PATH); 8 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/examples/shared/boilerplate/cli/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/examples/shared/boilerplate/cli/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo(): Promise { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText(): Promise { 9 | return element(by.css('app-root .content span')).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/examples/shared/boilerplate/cli/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../out-tsc/e2e", 6 | "module": "commonjs", 7 | "target": "es2018", 8 | "types": [ 9 | "jasmine", 10 | "jasminewd2", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/examples/shared/boilerplate/cli/e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../out-tsc/e2e", 6 | "module": "commonjs", 7 | "target": "es2018", 8 | "types": [ 9 | "jasmine", 10 | "jasminewd2", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/examples/shared/boilerplate/cli/src/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 0.5% 2 | last 2 versions 3 | Firefox ESR 4 | not dead 5 | IE 9-11 6 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/examples/shared/boilerplate/cli/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/tools/examples/shared/boilerplate/cli/src/assets/.gitkeep -------------------------------------------------------------------------------- /projects/ngrx.io/tools/examples/shared/boilerplate/cli/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/examples/shared/boilerplate/cli/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/ngrx.io/tools/examples/shared/boilerplate/cli/src/favicon.ico -------------------------------------------------------------------------------- /projects/ngrx.io/tools/examples/shared/boilerplate/cli/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/examples/shared/boilerplate/cli/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/app", 6 | "types": [] 7 | }, 8 | "files": [ 9 | "src/main.ts", 10 | "src/polyfills.ts" 11 | ], 12 | "include": [ 13 | "src/**/*.d.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/examples/shared/boilerplate/common/src/styles.css: -------------------------------------------------------------------------------- 1 | /* Master Styles */ 2 | * { 3 | font-family: Arial, Helvetica, sans-serif; 4 | } 5 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/examples/shared/boilerplate/systemjs/bs-config.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": false, 3 | "logLevel": "silent", 4 | "port": 8080, 5 | "server": { 6 | "baseDir": "src", 7 | "routes": { 8 | "/node_modules": "node_modules" 9 | }, 10 | "middleware": { 11 | "0": null 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/examples/shared/boilerplate/systemjs/bs-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "server": { 3 | "baseDir": "src", 4 | "routes": { 5 | "/node_modules": "node_modules" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/examples/shared/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES5", 4 | "module": "commonjs" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/stackblitz-builder/generateStackblitz.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const StackblitzBuilder = require('./builder'); 3 | 4 | const EXAMPLES_PATH = path.join(__dirname, '../../content/examples'); 5 | const LIVE_EXAMPLES_PATH = path.join(__dirname, '../../src/generated/live-examples'); 6 | 7 | new StackblitzBuilder(EXAMPLES_PATH, LIVE_EXAMPLES_PATH).build(); 8 | 9 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/.eslintignore: -------------------------------------------------------------------------------- 1 | **/*.template.js 2 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/content-rules/minLength.js: -------------------------------------------------------------------------------- 1 | module.exports = function createMinLengthRule(minLength) { 2 | minLength = minLength || 1; 3 | return (doc, prop, value) => { 4 | if (value.length < minLength) { 5 | return `Invalid "${prop}" property: "${value}". It must have at least ${minLength} characters.`; 6 | } 7 | }; 8 | }; 9 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/mocks/importedSrc.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Google Inc. All Rights Reserved. 4 | * 5 | * Use of this source code is governed by an MIT-style license that can be 6 | * found in the LICENSE file at https://angular.io/license 7 | */ 8 | 9 | export const x = 100; 10 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/processors/filterPrivateDocs.js: -------------------------------------------------------------------------------- 1 | module.exports = function filterPrivateDocs() { 2 | return { 3 | $runAfter: ['extra-docs-added', 'checkContentRules'], 4 | $runBefore: ['computing-paths'], 5 | $process: function(docs) { 6 | return docs.filter(function(doc) { return doc.privateExport !== true; }); 7 | } 8 | }; 9 | }; 10 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/tag-defs/Annotation.js: -------------------------------------------------------------------------------- 1 | // A ts2dart compiler annotation that we don't care about for API docs. 2 | // But, if we don't have a tag-def for it the doc-gen will error. 3 | module.exports = function() { 4 | return {name: 'Annotation'}; 5 | }; 6 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/tag-defs/deprecated.js: -------------------------------------------------------------------------------- 1 | module.exports = function() { 2 | return {name: 'deprecated'}; 3 | }; 4 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/tag-defs/docsNotRequired.js: -------------------------------------------------------------------------------- 1 | module.exports = function() { 2 | return {name: 'docsNotRequired'}; 3 | }; 4 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/tag-defs/experimental.js: -------------------------------------------------------------------------------- 1 | module.exports = function() { 2 | return {name: 'experimental'}; 3 | }; 4 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/tag-defs/howToUse.js: -------------------------------------------------------------------------------- 1 | module.exports = function(log, createDocMessage) { 2 | return { 3 | name: 'howToUse', 4 | deprecated: true, 5 | transforms(doc, tag, value) { 6 | log.warn(createDocMessage('Deprecated `@howToUse` tag found', doc)); 7 | log.warn('PLEASE FIX by renaming to `@usageNotes.'); 8 | return value; 9 | } 10 | }; 11 | }; 12 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/tag-defs/ngModule.js: -------------------------------------------------------------------------------- 1 | module.exports = function() { 2 | return { 3 | name: 'ngModule', 4 | docProperty: 'ngModules', 5 | multi: true, 6 | }; 7 | }; 8 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/tag-defs/no-description.js: -------------------------------------------------------------------------------- 1 | module.exports = function() { 2 | return {name: 'noDescription', transforms: function() { return true; }}; 3 | }; -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/tag-defs/nocollapse.js: -------------------------------------------------------------------------------- 1 | // A fake annotation to prevent Closure compiler from modifying the 2 | // associated code. 3 | // See https://github.com/angular/angular/blob/master/packages/compiler-cli/src/transformers/nocollapse_hack.ts 4 | // We must provide a tag-def for it or the doc-gen will error. 5 | module.exports = function() { 6 | return {name: 'nocollapse'}; 7 | }; 8 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/tag-defs/publicApi.js: -------------------------------------------------------------------------------- 1 | module.exports = function() { 2 | return {name: 'publicApi'}; 3 | }; 4 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/tag-defs/security.js: -------------------------------------------------------------------------------- 1 | module.exports = function() { 2 | return {name: 'security'}; 3 | }; 4 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/tag-defs/selectors.js: -------------------------------------------------------------------------------- 1 | module.exports = function() { 2 | return {name: 'selectors'}; 3 | }; 4 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/tag-defs/stable.js: -------------------------------------------------------------------------------- 1 | module.exports = function(log, createDocMessage) { 2 | return { 3 | name: 'stable', 4 | deprecated: true, 5 | transforms(doc, tag, value) { 6 | log.warn(createDocMessage('Deprecated `@stable` tag found', doc)); 7 | log.warn('PLEASE REMOVE - its value is now computed.'); 8 | return value; 9 | } 10 | }; 11 | }; 12 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/tag-defs/suppress.js: -------------------------------------------------------------------------------- 1 | module.exports = function() { 2 | return {name: 'suppress'}; 3 | }; -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/tag-defs/syntax.js: -------------------------------------------------------------------------------- 1 | module.exports = function() { 2 | return {name: 'syntax'}; 3 | }; -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/tag-defs/throws.js: -------------------------------------------------------------------------------- 1 | module.exports = function(extractTypeTransform, wholeTagTransform) { 2 | return { 3 | name: 'throws', 4 | aliases: ['exception'], 5 | multi: true, 6 | transforms: [ extractTypeTransform, wholeTagTransform ] 7 | }; 8 | }; -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/tag-defs/ts2dart_const.js: -------------------------------------------------------------------------------- 1 | // A ts2dart compiler annotation that can be ignored in API docs. 2 | module.exports = function() { 3 | return {name: 'ts2dart_const', ignore: true}; 4 | }; 5 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-api-package/tag-defs/usageNotes.js: -------------------------------------------------------------------------------- 1 | module.exports = function() { 2 | return { 3 | name: 'usageNotes' 4 | }; 5 | }; 6 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-base-package/processors/copyContentAssets.js: -------------------------------------------------------------------------------- 1 | 2 | module.exports = function copyContentAssetsProcessor(copyFolder) { 3 | return { 4 | $runBefore: ['postProcessHtml'], 5 | assetMappings: [], 6 | $process() { 7 | this.assetMappings.forEach(map => { 8 | copyFolder(map.from, map.to); 9 | }); 10 | } 11 | }; 12 | }; 13 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-base-package/rendering/toId.js: -------------------------------------------------------------------------------- 1 | module.exports = function toId() { 2 | return { 3 | name: 'toId', 4 | process: function(str) { return str.replace(/[^(a-z)(A-Z)(0-9)._-]/g, '-'); } 5 | }; 6 | }; -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-base-package/services/copyFolder.js: -------------------------------------------------------------------------------- 1 | const {copySync} = require('fs-extra'); 2 | 3 | module.exports = function copyFolder() { 4 | return (from, to) => copySync(from, to); 5 | }; 6 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-base-package/services/getImageDimensions.js: -------------------------------------------------------------------------------- 1 | const { resolve } = require('canonical-path'); 2 | const sizeOf = require('image-size'); 3 | 4 | module.exports = function getImageDimensions() { 5 | return (basePath, path) => sizeOf(resolve(basePath, path)); 6 | }; 7 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular-content-package/inline-tag-defs/anchor.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: 'a', 3 | description: 'A shorthand for creating heading anchors. Usage: `{@a some-id}`', 4 | handler: function(doc, tagName, tagDescription) { 5 | return ''; 6 | } 7 | }; 8 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/angular.io-package/processors/cleanGeneratedFiles.js: -------------------------------------------------------------------------------- 1 | const rimraf = require('rimraf'); 2 | module.exports = function cleanGeneratedFiles() { 3 | return { 4 | $runAfter: ['writing-files'], 5 | $runBefore: ['writeFilesProcessor'], 6 | $process: function() { 7 | rimraf.sync('src/generated/{docs,*.json}'); 8 | } 9 | }; 10 | }; 11 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/content-package/tag-defs/intro.js: -------------------------------------------------------------------------------- 1 | module.exports = function() { 2 | return {name: 'intro'}; 3 | }; 4 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/content-package/tag-defs/title.js: -------------------------------------------------------------------------------- 1 | module.exports = function() { 2 | return {name: 'title'}; 3 | }; 4 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/examples-package/services/example-map.js: -------------------------------------------------------------------------------- 1 | module.exports = function exampleMap() { 2 | return {}; 3 | }; 4 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/examples-package/services/region-matchers/html.js: -------------------------------------------------------------------------------- 1 | // These kind of comments are used in HTML 2 | module.exports = { 3 | regionStartMatcher: /^\s*)?\s*$/, 4 | regionEndMatcher: /^\s*\s*$/, 5 | plasterMatcher: /^\s*\s*$/, 6 | createPlasterComment: plaster => `` 7 | }; 8 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/examples-package/services/region-matchers/inline-c.js: -------------------------------------------------------------------------------- 1 | // This comment type is used in C like languages such as JS, TS, Dart, etc 2 | module.exports = { 3 | regionStartMatcher: /^\s*\/\/\s*#docregion\s*(.*)\s*$/, 4 | regionEndMatcher: /^\s*\/\/\s*#enddocregion\s*(.*)\s*$/, 5 | plasterMatcher: /^\s*\/\/\s*#docplaster\s*(.*)\s*$/, 6 | createPlasterComment: plaster => `/* ${plaster} */` 7 | }; 8 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/examples-package/services/region-matchers/inline-hash.js: -------------------------------------------------------------------------------- 1 | // These type of comments are used in hash comment based languages such as bash and Yaml 2 | module.exports = { 3 | regionStartMatcher: /^\s*#\s*#docregion\s*(.*)\s*$/, 4 | regionEndMatcher: /^\s*#\s*#enddocregion\s*(.*)\s*$/, 5 | plasterMatcher: /^\s*#\s*#docplaster\s*(.*)\s*$/, 6 | createPlasterComment: plaster => `# ${plaster}` 7 | }; 8 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/links-package/services/disambiguators/disambiguateByDeprecated.js: -------------------------------------------------------------------------------- 1 | module.exports = function disambiguateByDeprecated() { 2 | return (alias, originatingDoc, docs) => docs.filter(doc => doc.deprecated === undefined); 3 | }; 4 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/post-process-package/index.js: -------------------------------------------------------------------------------- 1 | var Package = require('dgeni').Package; 2 | var base = require('dgeni-packages/base'); 3 | 4 | module.exports = new Package('post-process-package', [base]) 5 | .processor(require('./processors/post-process-html')); 6 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/templates/api/class.template.html: -------------------------------------------------------------------------------- 1 | {% extends 'export-base.template.html' -%} 2 | 3 | {% block overview %} 4 | {% include "includes/class-overview.html" %} 5 | {% endblock %} 6 | {% block details %} 7 | {% include "includes/description.html" %} 8 | {% include "includes/class-members.html" %} 9 | {% endblock %} 10 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/templates/api/const.template.html: -------------------------------------------------------------------------------- 1 | {% extends 'var.template.html' -%} -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/templates/api/includes/deprecation.html: -------------------------------------------------------------------------------- 1 | {% if doc.deprecated !== undefined %} 2 |
3 | {$ ('**Deprecated:** ' + doc.deprecated) | marked $} 4 |
5 | {% endif %} -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/templates/api/includes/description.html: -------------------------------------------------------------------------------- 1 | {% if doc.description %} 2 |
3 |

Description

4 | {$ doc.description | trimBlankLines | marked $} 5 |
6 | {% endif %} -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/templates/api/includes/info-bar.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/templates/api/includes/security-notes.html: -------------------------------------------------------------------------------- 1 | {% if doc.security %} 2 |
3 |

Security risk

4 | {$ doc.security | marked $} 5 |
6 | {% endif %} -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/templates/api/includes/see-also.html: -------------------------------------------------------------------------------- 1 | {%- if doc.see.length %} 2 |
3 |

See also

4 |
    5 | {% for see in doc.see %} 6 |
  • {$ see | marked $}
  • {% endfor %} 7 |
8 |
9 | {% endif %} 10 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/templates/api/includes/usageNotes.html: -------------------------------------------------------------------------------- 1 | {% if doc.usageNotes %} 2 |
3 |

Usage notes

4 | {$ doc.usageNotes | marked $} 5 |
6 | {% endif %} 7 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/templates/api/let.template.html: -------------------------------------------------------------------------------- 1 | {% extends 'var.template.html' -%} -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/templates/api/pipe.template.html: -------------------------------------------------------------------------------- 1 | {% extends 'export-base.template.html' -%} 2 | 3 | {% block overview %} 4 | {% include "includes/pipe-overview.html" %} 5 | {% endblock %} 6 | {% block details %} 7 | {% include "includes/description.html" %} 8 | {% endblock %} 9 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/templates/api/value-module.template.html: -------------------------------------------------------------------------------- 1 | {% extends 'interface.template.html' %} -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/templates/api/var.template.html: -------------------------------------------------------------------------------- 1 | {% extends 'export-base.template.html' %} 2 | 3 | {% block overview %} 4 | 5 | const {$ doc.name $}: {$ (doc.type | escape) or 'any' $}; 6 | 7 | {% endblock %} 8 | 9 | {% block details %} 10 | {% include "includes/description.html" %} 11 | {% endblock %} 12 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/templates/cli/include/cli-header.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |

ng {$ doc.name $}

4 |
5 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/templates/data-module.template.js: -------------------------------------------------------------------------------- 1 | /* tslint:disable quotemark */ 2 | /* TODO: rework this so that it has single quotes */ 3 | export const {$ doc.serviceName $} = {$ doc.value | json $}; 4 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/templates/example-region.template.html: -------------------------------------------------------------------------------- 1 | {$ doc.contents | escape $} 2 | -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/templates/json-doc.template.json: -------------------------------------------------------------------------------- 1 | {$ doc.data | json $} -------------------------------------------------------------------------------- /projects/ngrx.io/tools/transforms/templates/sitemap.template.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | {%- for url in doc.urls %} 4 | 5 | https://ngrx.io/{$ url $} 6 | {% endfor %} 7 | -------------------------------------------------------------------------------- /projects/standalone-app-e2e/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["plugin:cypress/recommended", "../../.eslintrc.json"], 3 | "ignorePatterns": ["!**/*"], 4 | "overrides": [ 5 | { 6 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], 7 | "rules": {} 8 | } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /projects/standalone-app-e2e/src/integration/app.cy.ts: -------------------------------------------------------------------------------- 1 | import { getGreeting, loadFeature } from '../support/app.po'; 2 | 3 | describe('standalone-app', () => { 4 | beforeEach(() => cy.visit('/')); 5 | 6 | it('should display welcome message', () => { 7 | getGreeting().contains('Welcome ngrx-standalone-app'); 8 | loadFeature(); 9 | cy.contains('Feature State: { "loaded": true }'); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /projects/standalone-app-e2e/src/support/app.po.ts: -------------------------------------------------------------------------------- 1 | export const getGreeting = () => cy.get('h1'); 2 | export const loadFeature = () => cy.get('a').click(); 3 | -------------------------------------------------------------------------------- /projects/standalone-app/src/app/lazy/feature.routes.ts: -------------------------------------------------------------------------------- 1 | import { Routes } from '@angular/router'; 2 | import { provideState } from '@ngrx/store'; 3 | import { FeatureComponent } from './feature.component'; 4 | import { feature } from './feature.state'; 5 | 6 | export const routes: Routes = [ 7 | { 8 | path: '', 9 | component: FeatureComponent, 10 | providers: [provideState(feature)], 11 | }, 12 | ]; 13 | -------------------------------------------------------------------------------- /projects/standalone-app/src/app/test.pipe.ts: -------------------------------------------------------------------------------- 1 | import { inject, Pipe, PipeTransform } from '@angular/core'; 2 | import { Store } from '@ngrx/store'; 3 | 4 | @Pipe({ name: 'test', standalone: true }) 5 | export class TestPipe implements PipeTransform { 6 | store = inject(Store); 7 | transform(s: number) { 8 | this.store.select('count'); 9 | return s * 2; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /projects/standalone-app/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/standalone-app/src/assets/.gitkeep -------------------------------------------------------------------------------- /projects/standalone-app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/standalone-app/src/favicon.ico -------------------------------------------------------------------------------- /projects/standalone-app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | StandaloneApp 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /projects/standalone-app/src/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrapApplication } from '@angular/platform-browser'; 2 | import { AppComponent } from './app/app.component'; 3 | import { appConfig } from './app/app.config'; 4 | 5 | bootstrapApplication(AppComponent, appConfig); 6 | -------------------------------------------------------------------------------- /projects/standalone-app/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /projects/standalone-app/src/test-setup.ts: -------------------------------------------------------------------------------- 1 | import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; 2 | 3 | setupZoneTestEnv(); 4 | -------------------------------------------------------------------------------- /projects/standalone-app/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "types": [] 6 | }, 7 | "files": ["src/main.ts", "src/polyfills.ts"], 8 | "include": ["src/**/*.d.ts"], 9 | "exclude": ["**/*.test.ts", "**/*.spec.ts", "jest.config.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /projects/standalone-app/tsconfig.editor.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["**/*.ts"], 4 | "compilerOptions": { 5 | "types": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /projects/standalone-app/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"], 7 | "target": "es2016" 8 | }, 9 | "files": ["src/test-setup.ts"], 10 | "include": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /projects/www/firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "functions": { 3 | "source": "../../dist/projects/www/analog/server" 4 | }, 5 | "hosting": [ 6 | { 7 | "site": "", 8 | "public": "../../dist/projects/www/analog/public", 9 | "cleanUrls": true, 10 | "rewrites": [ 11 | { 12 | "source": "**", 13 | "function": "server" 14 | } 15 | ] 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /projects/www/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module", 3 | "scripts": { 4 | "collect-docs": "npx tsx src/tools/extract-docs-content.ts" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /projects/www/public/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/.gitkeep -------------------------------------------------------------------------------- /projects/www/public/_redirects: -------------------------------------------------------------------------------- 1 | /* /index.html 200 -------------------------------------------------------------------------------- /projects/www/public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /projects/www/public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /projects/www/public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/apple-touch-icon.png -------------------------------------------------------------------------------- /projects/www/public/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #da532c 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /projects/www/public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/favicon-16x16.png -------------------------------------------------------------------------------- /projects/www/public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/favicon-32x32.png -------------------------------------------------------------------------------- /projects/www/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/favicon.ico -------------------------------------------------------------------------------- /projects/www/public/images/bios/_no-one.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/bios/_no-one.jpg -------------------------------------------------------------------------------- /projects/www/public/images/bios/alex-okrushko.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/bios/alex-okrushko.jpg -------------------------------------------------------------------------------- /projects/www/public/images/bios/brandonroberts.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/bios/brandonroberts.jpg -------------------------------------------------------------------------------- /projects/www/public/images/bios/john-papa.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/bios/john-papa.jpg -------------------------------------------------------------------------------- /projects/www/public/images/bios/marko.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/bios/marko.jpg -------------------------------------------------------------------------------- /projects/www/public/images/bios/mike-ryan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/bios/mike-ryan.jpg -------------------------------------------------------------------------------- /projects/www/public/images/bios/rob-wormald.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/bios/rob-wormald.jpg -------------------------------------------------------------------------------- /projects/www/public/images/bios/timd.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/bios/timd.jpg -------------------------------------------------------------------------------- /projects/www/public/images/bios/victor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/bios/victor.png -------------------------------------------------------------------------------- /projects/www/public/images/bios/wardbell.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/bios/wardbell.jpg -------------------------------------------------------------------------------- /projects/www/public/images/bios/wesgrimes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/bios/wesgrimes.jpg -------------------------------------------------------------------------------- /projects/www/public/images/guide/component-store/file-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/guide/component-store/file-structure.png -------------------------------------------------------------------------------- /projects/www/public/images/guide/component-store/state-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/guide/component-store/state-structure.png -------------------------------------------------------------------------------- /projects/www/public/images/guide/component-store/types-of-state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/guide/component-store/types-of-state.png -------------------------------------------------------------------------------- /projects/www/public/images/guide/data/action-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/guide/data/action-flow.png -------------------------------------------------------------------------------- /projects/www/public/images/guide/store/state-management-lifecycle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/guide/store/state-management-lifecycle.png -------------------------------------------------------------------------------- /projects/www/public/images/guide/store/state-management-lifecycle.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/guide/store/state-management-lifecycle.psd -------------------------------------------------------------------------------- /projects/www/public/images/marketing/workshops/header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/images/marketing/workshops/header.jpg -------------------------------------------------------------------------------- /projects/www/public/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/mstile-144x144.png -------------------------------------------------------------------------------- /projects/www/public/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/mstile-150x150.png -------------------------------------------------------------------------------- /projects/www/public/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/mstile-310x150.png -------------------------------------------------------------------------------- /projects/www/public/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/mstile-310x310.png -------------------------------------------------------------------------------- /projects/www/public/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ngrx/platform/2639f6798348ef266e99f06144c03acdb74bb118/projects/www/public/mstile-70x70.png -------------------------------------------------------------------------------- /projects/www/src/app/app.config.browser.ts: -------------------------------------------------------------------------------- 1 | import { 2 | mergeApplicationConfig, 3 | ApplicationConfig, 4 | provideExperimentalZonelessChangeDetection, 5 | } from '@angular/core'; 6 | import { appConfig } from './app.config'; 7 | 8 | const serverConfig: ApplicationConfig = { 9 | providers: [provideExperimentalZonelessChangeDetection()], 10 | }; 11 | 12 | export const config = mergeApplicationConfig(appConfig, serverConfig); 13 | -------------------------------------------------------------------------------- /projects/www/src/app/app.config.server.ts: -------------------------------------------------------------------------------- 1 | import { mergeApplicationConfig, ApplicationConfig } from '@angular/core'; 2 | import { provideServerRendering } from '@angular/platform-server'; 3 | 4 | import { appConfig } from './app.config'; 5 | 6 | const serverConfig: ApplicationConfig = { 7 | providers: [provideServerRendering()], 8 | }; 9 | 10 | export const config = mergeApplicationConfig(appConfig, serverConfig); 11 | -------------------------------------------------------------------------------- /projects/www/src/app/examples/__base/src/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | standalone: true, 6 | template: ` 7 |

Hello from {{ name }}!

8 | 9 | Learn more about Angular 10 | 11 | `, 12 | }) 13 | export class App { 14 | name = 'Angular'; 15 | } 16 | -------------------------------------------------------------------------------- /projects/www/src/app/examples/__base/src/app.config.ts: -------------------------------------------------------------------------------- 1 | import { ApplicationConfig } from '@angular/core'; 2 | 3 | export const appConfig: ApplicationConfig = { 4 | providers: [], 5 | }; 6 | -------------------------------------------------------------------------------- /projects/www/src/app/examples/__base/vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | 3 | export default defineConfig(({ mode }) => { 4 | return { 5 | root: __dirname, 6 | plugins: [], 7 | }; 8 | }); 9 | -------------------------------------------------------------------------------- /projects/www/src/app/examples/signals-01/stackblitz.yml: -------------------------------------------------------------------------------- 1 | name: Signals Example 2 | description: Demonstrates signalStore 3 | extends: ../__base/stackblitz.yml 4 | files: 5 | src/app.component.ts: './src/app.component.ts' 6 | -------------------------------------------------------------------------------- /projects/www/src/app/examples/store/src/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { MyCounterComponent } from './my-counter/my-counter.component'; 3 | 4 | @Component({ 5 | selector: 'app-root', 6 | standalone: true, 7 | imports: [MyCounterComponent], 8 | template: ` 9 |

NgRx Tutorial

10 | 11 | 12 | `, 13 | }) 14 | export class App {} 15 | -------------------------------------------------------------------------------- /projects/www/src/app/examples/store/src/app.config.ts: -------------------------------------------------------------------------------- 1 | import { ApplicationConfig } from '@angular/core'; 2 | import { provideStore } from '@ngrx/store'; 3 | import { counterReducer } from './counter.reducer'; 4 | 5 | export const appConfig: ApplicationConfig = { 6 | providers: [provideStore({ count: counterReducer })], 7 | }; 8 | -------------------------------------------------------------------------------- /projects/www/src/app/examples/store/src/counter.actions.ts: -------------------------------------------------------------------------------- 1 | import { createAction } from '@ngrx/store'; 2 | 3 | export const increment = createAction('[Counter Component] Increment'); 4 | export const decrement = createAction('[Counter Component] Decrement'); 5 | export const reset = createAction('[Counter Component] Reset'); 6 | -------------------------------------------------------------------------------- /projects/www/src/app/examples/store/src/counter.reducer.ts: -------------------------------------------------------------------------------- 1 | import { createReducer, on } from '@ngrx/store'; 2 | import { increment, decrement, reset } from './counter.actions'; 3 | 4 | export const initialState = 0; 5 | 6 | export const counterReducer = createReducer( 7 | initialState, 8 | on(increment, (state) => state + 1), 9 | on(decrement, (state) => state - 1), 10 | on(reset, () => 0) 11 | ); 12 | -------------------------------------------------------------------------------- /projects/www/src/app/pages/guide/data/architecture.md: -------------------------------------------------------------------------------- 1 | # Architecture 2 | -------------------------------------------------------------------------------- /projects/www/src/app/pages/guide/eslint-plugin/rules/with-state-no-arrays-at-root-level.md: -------------------------------------------------------------------------------- 1 | # with-state-no-arrays-at-root-level 2 | 3 | withState should accept a record or dictionary as an input argument. 4 | 5 | - **Type**: problem 6 | - **Fixable**: No 7 | - **Suggestion**: No 8 | - **Requires type checking**: Yes 9 | - **Configurable**: No 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /projects/www/src/app/pages/guide/operators/index.md: -------------------------------------------------------------------------------- 1 | # @ngrx/operators 2 | 3 | NgRx Operators is a utility library with frequently used RxJS operators for managing state and side effects. 4 | 5 | ## Installation 6 | 7 | Detailed installation instructions can be found on the [Installation](guide/operators/install) page. 8 | -------------------------------------------------------------------------------- /projects/www/src/app/pages/guide/store/architecture.md: -------------------------------------------------------------------------------- 1 | # Architecture 2 | -------------------------------------------------------------------------------- /projects/www/src/app/pages/guide/style-guide.md: -------------------------------------------------------------------------------- 1 | # Style Guide 2 | -------------------------------------------------------------------------------- /projects/www/src/main.server.ts: -------------------------------------------------------------------------------- 1 | import '@angular/platform-server/init'; 2 | 3 | import { render } from '@analogjs/router/server'; 4 | 5 | import { AppComponent } from './app/app.component'; 6 | import { config } from './app/app.config.server'; 7 | 8 | export default render(AppComponent, config); 9 | -------------------------------------------------------------------------------- /projects/www/src/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrapApplication } from '@angular/platform-browser'; 2 | import { AppComponent } from './app/app.component'; 3 | import { config } from './app/app.config.browser'; 4 | 5 | bootstrapApplication(AppComponent, config).catch((err) => console.error(err)); 6 | -------------------------------------------------------------------------------- /projects/www/src/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api-report.models'; 2 | -------------------------------------------------------------------------------- /projects/www/src/test-setup.ts: -------------------------------------------------------------------------------- 1 | import '@analogjs/vite-plugin-angular/setup-vitest'; 2 | 3 | import { 4 | BrowserDynamicTestingModule, 5 | platformBrowserDynamicTesting, 6 | } from '@angular/platform-browser-dynamic/testing'; 7 | import { getTestBed } from '@angular/core/testing'; 8 | 9 | getTestBed().initTestEnvironment( 10 | BrowserDynamicTestingModule, 11 | platformBrowserDynamicTesting() 12 | ); 13 | -------------------------------------------------------------------------------- /projects/www/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { StackblitzConfig } from './tools/vite-ngrx-stackblits.plugin'; 3 | 4 | declare module '*/stackblitz.yml' { 5 | const value: StackblitzConfig; 6 | export default value; 7 | } 8 | -------------------------------------------------------------------------------- /projects/www/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "types": [], 6 | "target": "ES2022", 7 | "useDefineForClassFields": false 8 | }, 9 | "files": ["src/main.ts", "src/main.server.ts"], 10 | "include": ["src/**/*.d.ts", "src/app/pages/**/*.page.ts"], 11 | "exclude": ["**/*.test.ts", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /projects/www/tsconfig.editor.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["**/*.ts", "src/app/examples/__base/vite.config.js"], 4 | "compilerOptions": { 5 | "types": ["node", "vitest/globals"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /projects/www/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "types": ["node", "vitest/globals"] 6 | }, 7 | "files": ["src/test-setup.ts"], 8 | "include": ["src/**/*.spec.ts", "**/*.d.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /projects/www/tsconfig.tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["src/tools/**/*.ts"], 4 | "compilerOptions": { 5 | "allowSyntheticDefaultImports": true 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /setup-jest.ts: -------------------------------------------------------------------------------- 1 | import 'jest-preset-angular'; 2 | (global as any)['CSS'] = null; 3 | 4 | /** 5 | * ISSUE: https://github.com/angular/material2/issues/7101 6 | * Workaround for JSDOM missing transform property 7 | */ 8 | Object.defineProperty(document.body.style, 'transform', { 9 | value: () => { 10 | return { 11 | enumerable: true, 12 | configurable: true, 13 | }; 14 | }, 15 | }); 16 | -------------------------------------------------------------------------------- /tsdoc-metadata.json: -------------------------------------------------------------------------------- 1 | // This file is read by tools that parse documentation comments conforming to the TSDoc standard. 2 | // It should be published with your NPM package. It should not be tracked by Git. 3 | { 4 | "tsdocVersion": "0.12", 5 | "toolPackages": [ 6 | { 7 | "packageName": "@microsoft/api-extractor", 8 | "packageVersion": "7.52.4" 9 | } 10 | ] 11 | } 12 | --------------------------------------------------------------------------------