Skip to content

Commit a694cef

Browse files
Create Dependency
new utility types for optionalizing dependencies
1 parent c82007a commit a694cef

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

types/Dependency

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
export interface DependencyBase<T> {
2+
isInProgress: boolean;
3+
isError: boolean;
4+
error?: unknown;
5+
result?: T | null;
6+
optional?: boolean;
7+
}
8+
export interface PendingOptionalDependency<T> extends DependencyBase<T> {
9+
isInProgress: true;
10+
isError: false;
11+
error: undefined;
12+
result: undefined;
13+
optional: true;
14+
}
15+
16+
export interface SuccessfulOptionalDependency<T> extends DependencyBase<T> {
17+
isInProgress: false;
18+
isError: false;
19+
error: undefined;
20+
result: T | null;
21+
optional: true;
22+
}
23+
24+
export interface FailedOptionalDependency<T> extends DependencyBase<T> {
25+
isInProgress: false;
26+
isError: true;
27+
error: unknown;
28+
result: undefined;
29+
optional: true;
30+
}
31+
32+
export type OptionalDependency<T = unknown> =
33+
| PendingOptionalDependency<T>
34+
| SuccessfulOptionalDependency<T>
35+
| FailedOptionalDependency<T>;
36+
37+
export interface PendingRequiredDependency<T> extends DependencyBase<T> {
38+
isInProgress: true;
39+
isError: false;
40+
error: undefined;
41+
result: undefined;
42+
optional?: false;
43+
}
44+
45+
export interface SuccessfulRequiredDependency<T> extends DependencyBase<T> {
46+
isInProgress: false;
47+
isError: false;
48+
error: undefined;
49+
result: T;
50+
optional?: false;
51+
}
52+
53+
export interface FailedRequiredDependency<T> extends DependencyBase<T> {
54+
isInProgress: false;
55+
isError: true;
56+
error: unknown;
57+
result: undefined;
58+
optional?: false;
59+
}
60+
61+
export type RequiredDependency<T = unknown> =
62+
| PendingRequiredDependency<T>
63+
| SuccessfulRequiredDependency<T>
64+
| FailedRequiredDependency<T>;
65+
66+
export type Dependency<T = unknown> = OptionalDependency<T> | RequiredDependency<T>;

0 commit comments

Comments
 (0)