docs: bring README in line with strict mode, routing, and the HTTP boundary
ci / verify (push) Successful in 47s
ci / verify (push) Successful in 47s
Updates the architecture/dependency diagrams and omissions table to match what actually shipped: RemoteData<T> (not <E, T>), @angular/router moved from "avoided" to "used", the new shared/infrastructure/http.ts fetch boundary, and the CI/coverage gates now in place. Removes the now-false "CI pipeline" omission row and adds honest rows for the linter and per-environment config this template still deliberately skips. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -34,7 +34,7 @@ flowchart LR
|
||||
Three plain ingredients, no framework required:
|
||||
|
||||
- **State** — a plain object describing what's true right now. Example: `{ count: 0 }`.
|
||||
- **A message** — a plain object describing *what happened*. Example:
|
||||
- **A message** — a plain object describing _what happened_. Example:
|
||||
`{ type: 'increment' }`. (Some call this an "action" — same thing.)
|
||||
- **A pure update function** — a function that takes the current state and a message,
|
||||
and returns the **new** state. "Pure" just means: same inputs always give the same
|
||||
@@ -122,9 +122,7 @@ export type UsersModel = {
|
||||
recentlyViewed: number[];
|
||||
};
|
||||
|
||||
export type UsersMsg =
|
||||
| { type: 'select'; id: number }
|
||||
| { type: 'closeDetail' };
|
||||
export type UsersMsg = { type: 'select'; id: number } | { type: 'closeDetail' };
|
||||
|
||||
export const initialUsersModel: UsersModel = {
|
||||
selectedUserId: null,
|
||||
@@ -145,7 +143,7 @@ export function reduceUsers(model: UsersModel, msg: UsersMsg): UsersModel {
|
||||
```
|
||||
|
||||
This is the point where a single `signal<number | null>` stopped being enough:
|
||||
`recentlyViewed` is a second field that changes *together* with `selectedUserId`, and
|
||||
`recentlyViewed` is a second field that changes _together_ with `selectedUserId`, and
|
||||
`reduce` is the one place that keeps them in sync.
|
||||
|
||||
## 5. Using it from a component
|
||||
@@ -189,7 +187,7 @@ consistent.
|
||||
|
||||
## 6. Async actions — the store doesn't replace `resource()`
|
||||
|
||||
Keep these concerns separate: `resource()` still owns *fetching*; the store only owns
|
||||
Keep these concerns separate: `resource()` still owns _fetching_; the store only owns
|
||||
synchronous state that's derived from, or reacts to, what's fetched. Don't move `fetch`
|
||||
calls into `reduce` — `reduce` must stay pure (no side effects), so a network call has no
|
||||
business being inside one.
|
||||
|
||||
Reference in New Issue
Block a user