
Product
Announcing Socket Fix 2.0
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
ngrx-correlation-id
Advanced tools
A ngrx store library to track an asynchronous activity such as a http request, a ngrx effect or anything else.
ngrx/store@13
ngrx/store@12
ngrx/store@11
ngrx/store@10
ngrx/store@9
ngrx/store@8
ngrx/store@7
ngrx/store@6
Please check source code
Import NgrxCorrelationIdModule
in the same module where you import StoreModule.forRoot
.
import {NgrxCorrelationIdModule} from 'ngrx-correlation-id';
@NgModule({
imports: [
StoreModule.forRoot(/* ... */),
NgrxCorrelationIdModule, // <- import it here
],
})
export class AppModule {}
Add cid: string
to props of an action you want to track.
export const loadUsers = createAction(
'[User] Load Users',
props<{cid: string}>(), // <- correlation id
);
Wrap an effect pipe with cidTask
.
The first argument is a cid
of the current task.
The second argument is a stream that should be tracked.
Optionally you can dispatch cidPayload
action with a custom payload.
In this case we want our payload to be an array of ids of users.
import {cidPayload, cidTask} from 'ngrx-correlation-id';
@Injectable()
export class UsersEffects {
@Effect()
public readonly loadUsers$ = this.actions$.pipe(
ofType(loadUsers),
switchMap(({cid}) => cidTask(cid, this.http.get<Array<User>>('v2/api/users').pipe(
switchMap(users => of(
upsertUsers({items: users}),
cidPayload({cid, payload: users.map(user => user.id)}),
)),
))),
);
constructor(
protected readonly actions$: Actions,
private readonly http: HttpClient,
) {}
}
Update a component to use cid
and all the features of the lib.
import {cidRemove, CidTask, cidWait, selectCid} from 'ngrx-correlation-id';
export class EntityComponent implements OnInit, OnDestroy {
public readonly users$: Observable<Array<User>>;
// set here an unique value to distinguish this task from others.
private readonly cid: string = `randomString`;
constructor(private readonly store: Store) {
// selecting the related task that belongs to cid.
this.users$ = this.store.select<CidTask<Array<string>>>(selectCid, this.cid).pipe(
// doesn't emit until the task isn't completed
cidWait(), // waits until the task starts, then waits until the task ends and the task.
map(task => task.payload),
withLatestFrom(this.store.select(selectUsers)),
map(([ids, users]) => users && users.filter(user => ids.indexOf(user.id) !== -1) || []),
);
}
public ngOnInit(): void {
// dispatching an action to load users.
this.store.dispatch(loadUsers({cid: this.cid}));
}
public ngOnDestroy(): void {
// clearing payload and selector
this.store.dispatch(cidRemove({cid: this.cid}));
selectCid.release();
}
}
FAQs
NGRX Store feature to track tasks via correlation id
We found that ngrx-correlation-id demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.