Skip to content

Commit

Permalink
Make RemoteData generics left/right based
Browse files Browse the repository at this point in the history
  • Loading branch information
abraham committed Jul 18, 2018
1 parent 6fbd254 commit c340b21
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 10 deletions.
10 changes: 5 additions & 5 deletions src/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ test('fold initialized', () => {
const view = fold(
initializedMock,
pendingMock,
successMock,
failureMock,
successMock,
);

view(new Initialized());
Expand All @@ -62,8 +62,8 @@ test('fold pending', () => {
const view = fold(
initializedMock,
pendingMock,
successMock,
failureMock,
successMock,
);

view(new Pending());
Expand All @@ -82,8 +82,8 @@ test('fold success', () => {
const view = fold(
initializedMock,
pendingMock,
successMock,
failureMock,
successMock,
);

const data = { apple: 'sauce' };
Expand All @@ -103,8 +103,8 @@ test('fold failure', () => {
const view = fold(
initializedMock,
pendingMock,
successMock,
failureMock,
successMock,
);

const error = 500;
Expand All @@ -125,8 +125,8 @@ test('fold unknown', () => {
const view = fold(
initializedMock,
pendingMock,
successMock,
failureMock,
successMock,
);

expect(() => view(otherMock)).toThrowError('Unknown RemoteData type used');
Expand Down
10 changes: 5 additions & 5 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export type RemoteData<D, E> = Initialized | Pending | Success<D> | Failure<E>;
export type RemoteData<E, D> = Initialized | Pending | Failure<E> | Success<D>;

export class Initialized {
private kind = 'Initialized';
Expand Down Expand Up @@ -28,13 +28,13 @@ export class Failure<E> {
}
}

export function fold<T, D, E>(
export function fold<T, E, D>(
initialized: () => T,
pending: () => T,
success: (data: D) => T,
failure: (error: E) => T,
): (state: RemoteData<D, E>) => T {
return (state: RemoteData<D, E>) => {
success: (data: D) => T,
): (state: RemoteData<E, D>) => T {
return (state: RemoteData<E, D>) => {
if (state instanceof Initialized) {
return initialized();
} else if (state instanceof Pending) {
Expand Down

0 comments on commit c340b21

Please sign in to comment.