diff options
Diffstat (limited to 'src/lib/stores/response_builder.ts')
| -rw-r--r-- | src/lib/stores/response_builder.ts | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/lib/stores/response_builder.ts b/src/lib/stores/response_builder.ts new file mode 100644 index 0000000..1e12243 --- /dev/null +++ b/src/lib/stores/response_builder.ts @@ -0,0 +1,37 @@ +/** + * Utilities to build responses + */ + +interface AnyError { + message: string +}; + +export type StoreState<Type> = { + loading: boolean; + data: Type | void; + error: AnyError | void; +}; + +export function initialResponse<T> (initialState: T): StoreState<T> { + return { + loading: true, + data: initialState, + error: undefined + }; +} + +export function errorResponse<T> (error: AnyError): StoreState<T> { + return { + loading: false, + data: undefined, + error + }; +} + +export function response<T> (data: T): StoreState<T> { + return { + loading: false, + data, + error: undefined + }; +} |