ngrx-set
TypeScript icon, indicating that this package has built-in type declarations

1.1.1 • Public • Published

NgRxSet

It simplifies the creation of actions for asynchronous requests that can succeed, fail or be aborted.

Usage

const set = createSet('source', 'name');
store.dispatch(set.dispatch());
store.dispatch(set.success());
store.dispatch(set.failure());
store.dispatch(set.abort());

Examples

More examples at:

store.ts#creators

example-effects.ts

API

IAbortCreator

Creator to be used when the request is aborted.

type IAbortCreator<TType extends string = string>

abort({ reason: 'reason' });

IFailureCreator

Creator to be used when the request fails.

type IFailureCreator<TType extends string = string>

failure({ error: 'error' });

IQueryCreator

Creator to be used when submitting a query to trigger the request.

type IQueryCreator<TQuery, TType extends string = string>

dispatch({ query: TQuery });

IPayloadCreator

Creator to be used when receiving the request payload.

type IPayloadCreator<TPayload, TType extends string = string>

success({ payload: TPayload });

IEmptyCreator

Creator to be used without passing data.

type IEmptyCreator<TType extends string>

dispatch(); success();

ICreatorSet

A set of creators related to a request.

interface ICreatorSet<
  TDispatch extends ICreator<object, string> | IEmptyCreator<string>,
  TSuccess extends ICreator<object, string> | IEmptyCreator<string>,
  TReasonType extends string = string,
  TErrorType extends string = string,
> {
  abort: IAbortCreator<TReasonType>;
  dispatch: TDispatch;
  failure: IFailureCreator<TErrorType>;
  success: TSuccess;
}

ICreatorSet aliases

When neither dispatch nor success carry data.

type IEmptySet<
  TSource extends string = string,
  TName extends string = string,
> = ICreatorSet<
  IEmptyCreator<IDispatchType<`${IType<TSource, TName>}`>>,
  IEmptyCreator<ISuccessType<`${IType<TSource, TName>}`>>,
  IAbortType<`${IType<TSource, TName>}`>,
  IFailureType<`${IType<TSource, TName>}`>
>;

createSet('source', 'name'): IEmptySet<"source", "name">;

When the dispatch action carries data but success does not.

type IQuerySet<
  TQuery,
  TSource extends string,
  TName extends string,
> = ICreatorSet<
  IQueryCreator<TQuery, IDispatchType<`${IType<TSource, TName>}`>>,
  IEmptyCreator<ISuccessType<`${IType<TSource, TName>}`>>,
  IAbortType<`${IType<TSource, TName>}`>,
  IFailureType<`${IType<TSource, TName>}`>
>;

createSet<IQuery>('source', 'name'): IQuerySet<IMyQuery, string, string>;
createSet<IQuery, 'source', 'name'>('source', 'name'): IQuerySet<IQuery, "source", "name">;
createSetCurry<IQuery>()('source', 'name'): IQuerySet<IQuery, "source", "name">;

When the dispatch action does not carry data but success does.

type IPayloadSet<
  TPayload,
  TSource extends string,
  TName extends string,
> = ICreatorSet<
  IEmptyCreator<IDispatchType<`${IType<TSource, TName>}`>>,
  IPayloadCreator<TPayload, ISuccessType<`${IType<TSource, TName>}`>>,
  IAbortType<`${IType<TSource, TName>}`>,
  IFailureType<`${IType<TSource, TName>}`>
>;

createSet<undefined, IPayload>('source', 'name'): IPayloadSet<IPayload, string, string>;
createSet<undefined, IPayload, 'source', 'name'>('source', 'name'): IPayloadSet<IPayload, "source", "name">
createSet<undefined, IPayload>()('source', 'name'): IPayloadSet<IPayload, "source", "name">;

When both the dispatch and success actions carry data.

type IFullSet<
  TQuery,
  TPayload,
  TSource extends string,
  TName extends string,
> = ICreatorSet<
  IQueryCreator<TQuery, IDispatchType<`${IType<TSource, TName>}`>>,
  IPayloadCreator<TPayload, ISuccessType<`${IType<TSource, TName>}`>>,
  IAbortType<`${IType<TSource, TName>}`>,
  IFailureType<`${IType<TSource, TName>}`>
>;

createSet<IQuery, IPayload>('source', 'name'): IFullSet<IQuery, IPayload, string, string>>;
createSet<IQuery, IPayload, 'source', 'name'>('source', 'name'): IFullSet<IQuery, IPayload, "source", "name">;
createSet<IQuery, IPayload>()('source', 'name'): IFullSet<IQuery, IPayload, "source", "name">;

Support

If you like ngrx-set, please support it:

Thank you!

P.S. If you need help, feel free to

Readme

Keywords

Package Sidebar

Install

npm i ngrx-set

Weekly Downloads

1

Version

1.1.1

License

MIT

Unpacked Size

183 kB

Total Files

50

Last publish

Collaborators

  • parloti