Skip to content

Commit 6d0d1de

Browse files
authored
Merge pull request #21 from FullStacksDev/ngrx-upgrade
NgRx Signals v18 stable upgrade + revamp stores
2 parents 6b2bdb9 + df7a83a commit 6d0d1de

12 files changed

+1919
-2584
lines changed

ARCHITECTURE.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ The [`./deploy`](./deploy) script in the root of the project is a simple script
166166

167167
| **:brain: Design decision** |
168168
| :-- |
169-
| We make two key decisions about Angular components (which all components generated from the Angular CLI use):<br><br><ol><li>The component template and styles are defined in the same file as the component's definition (commonly known as "single file components (SFC)"). We strongly prefer this approach as it keeps things in one logical place and also pushes us to define smaller components that don't do too much.</li><li>The [`OnPush` change detection strategy](https://angular.dev/best-practices/skipping-subtrees#using-onpush) is used by default, and we recommend ALL components use it. This is a more performant approach that [works well with Angular's signals](https://angular.dev/guide/signals#reading-signals-in-onpush-components), and since we use NgRx SignalStore you are unlikely to hit the cases where change detection is not triggered when it should be.</li></ol> |
169+
| We make two key decisions about Angular components (which all components generated from the Angular CLI use):<br><br><ol><li>The component template and styles are defined in the same file as the component's definition (commonly known as "single file components (SFC)"). We strongly prefer this approach as it keeps things in one logical place and also pushes us to define smaller components that don't do too much.</li><li>The [`OnPush` change detection strategy](https://angular.dev/best-practices/skipping-subtrees#using-onpush) is used by default, and we recommend ALL components use it. This is a more performant approach that [works well with Angular's signals](https://angular.dev/guide/signals#reading-signals-in-onpush-components), and since we use NgRx SignalStore and Angular's signals to manage most application state you are unlikely to hit the cases where change detection is not triggered when it should be.</li></ol> |
170170

171171
> [!NOTE]
172172
>

TEMPLATE_VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v1.0.0-alpha.1
1+
v1.0.0-alpha.2

app/eslint.config.js

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const eslint = require("@eslint/js");
33
const tseslint = require("typescript-eslint");
44
const angular = require("angular-eslint");
55
const eslintConfigPrettier = require("eslint-config-prettier");
6+
const ngrx = require("@ngrx/eslint-plugin/v9");
67

78
module.exports = tseslint.config(
89
{
@@ -13,6 +14,8 @@ module.exports = tseslint.config(
1314
...tseslint.configs.stylisticTypeChecked,
1415
...angular.configs.tsRecommended,
1516
eslintConfigPrettier,
17+
...ngrx.configs.operators,
18+
...ngrx.configs.signals,
1619
],
1720
languageOptions: {
1821
parserOptions: {

app/package.json

+36-29
Original file line numberDiff line numberDiff line change
@@ -19,53 +19,60 @@
1919
},
2020
"private": true,
2121
"dependencies": {
22-
"@angular/animations": "^18.1.0",
23-
"@angular/cdk": "18.1.0",
24-
"@angular/common": "^18.1.0",
25-
"@angular/compiler": "^18.1.0",
26-
"@angular/core": "^18.1.0",
27-
"@angular/forms": "^18.1.0",
28-
"@angular/material": "18.1.0",
29-
"@angular/platform-browser": "^18.1.0",
30-
"@angular/platform-browser-dynamic": "^18.1.0",
31-
"@angular/platform-server": "^18.1.0",
32-
"@angular/router": "^18.1.0",
33-
"@angular/service-worker": "^18.1.0",
34-
"@angular/ssr": "^18.1.0",
35-
"@ngrx/operators": "^18.0.1",
36-
"@ngrx/signals": "18.0.0-rc.2",
22+
"@angular/animations": "^18.1.3",
23+
"@angular/cdk": "18.1.3",
24+
"@angular/common": "^18.1.3",
25+
"@angular/compiler": "^18.1.3",
26+
"@angular/core": "^18.1.3",
27+
"@angular/forms": "^18.1.3",
28+
"@angular/material": "18.1.3",
29+
"@angular/platform-browser": "^18.1.3",
30+
"@angular/platform-browser-dynamic": "^18.1.3",
31+
"@angular/platform-server": "^18.1.3",
32+
"@angular/router": "^18.1.3",
33+
"@angular/service-worker": "^18.1.3",
34+
"@angular/ssr": "^18.1.3",
35+
"@ngrx/operators": "^18.0.2",
36+
"@ngrx/signals": "^18.0.2",
3737
"consola": "^3.2.3",
3838
"express": "^4.19.2",
39-
"firebase": "^10.12.3",
39+
"firebase": "^10.12.4",
4040
"ngxtension": "^4.0.0",
4141
"rxfire": "^6.0.6-canary.5cfad21",
4242
"rxjs": "~7.8.0",
4343
"tslib": "^2.3.0",
44-
"zone.js": "~0.14.5"
44+
"zone.js": "~0.14.8"
4545
},
4646
"devDependencies": {
47-
"@angular-devkit/build-angular": "^18.1.0",
48-
"@angular/cli": "^18.1.0",
49-
"@angular/compiler-cli": "^18.1.0",
47+
"@angular-devkit/build-angular": "^18.1.3",
48+
"@angular/cli": "^18.1.3",
49+
"@angular/compiler-cli": "^18.1.3",
50+
"@ngrx/eslint-plugin": "^18.0.2",
5051
"@types/express": "^4.17.17",
5152
"@types/jasmine": "~5.1.0",
52-
"@types/node": "^20.14.11",
53-
"angular-eslint": "18.1.0",
53+
"@types/node": "^22.0.2",
54+
"angular-eslint": "18.2.0",
5455
"autoprefixer": "^10.4.19",
55-
"eslint": "^9.7.0",
56+
"eslint": "^9.8.0",
5657
"eslint-config-prettier": "^9.1.0",
57-
"jasmine-core": "~5.1.2",
58-
"karma": "~6.4.3",
58+
"jasmine-core": "~5.2.0",
59+
"karma": "~6.4.4",
5960
"karma-chrome-launcher": "~3.2.0",
6061
"karma-coverage": "~2.2.0",
6162
"karma-jasmine": "~5.1.0",
6263
"karma-jasmine-html-reporter": "~2.1.0",
6364
"ng-mocks": "^14.13.0",
64-
"postcss": "^8.4.39",
65+
"postcss": "^8.4.40",
6566
"prettier": "^3.3.3",
6667
"prettier-plugin-tailwindcss": "^0.6.5",
67-
"tailwindcss": "^3.4.6",
68-
"typescript": "~5.5.3",
69-
"typescript-eslint": "^8.0.0-alpha.44"
68+
"tailwindcss": "^3.4.7",
69+
"typescript": "~5.5.4",
70+
"typescript-eslint": "^8.0.0"
71+
},
72+
"pnpm": {
73+
"overrides": {
74+
"undici": "^6.19.5",
75+
"undici-types": "^6.19.5"
76+
}
7077
}
7178
}

0 commit comments

Comments
 (0)