-
Notifications
You must be signed in to change notification settings - Fork 4
/
Types.d.ts
142 lines (123 loc) · 2.59 KB
/
Types.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
declare module '*.module.css'
declare module '*.png' {
const value: any
export = value
}
interface ObjectConstructor {
typedKeys<T>(obj: T): Array<keyof T>
}
type InputChange = React.ChangeEvent<HTMLInputElement>
type TextAreaChange = React.ChangeEvent<HTMLTextAreaElement>
type SelectChange = React.ChangeEvent<HTMLSelectElement>
type InputKeyPress = React.KeyboardEvent<HTMLInputElement>
type FormSubmit = React.FormEvent<HTMLFormElement>
type Theme = 'light' | 'dark'
interface Schedule {
sun: string[]
mon: string[]
tue: string[]
wed: string[]
thu: string[]
fri: string[]
sat: string[]
}
interface PopulatedSchedule {
sun: Series[]
mon: Series[]
tue: Series[]
wed: Series[]
thu: Series[]
fri: Series[]
sat: Series[]
}
interface CWD {
name: string
path: string
}
interface MyStore {
theme: Theme
cwds: CWD[]
lastPosterPath: string
lastUpdateCheck: number
neverCheckUpdate: boolean
userDataDir: string
}
interface Metadata {
encoder: string
source: string
quality: 'unknown' | 'bd' | 'dvd' | 'web'
res: number
duration: number
video: string
audio: string
subtitle: string
}
interface Series extends Metadata {
path: string
fullPath: string
files: string[]
jpTitle: string
poster: string
regular: boolean
tags: string[]
epsNum: number
epsWatched: number
rewatchCount: number
notes: string
related: Relation[]
}
interface Relation {
path: string
type:
| 'sequel'
| 'prequel'
| 'side-story'
| 'spin-off'
| 'parent'
| 'summary'
| 'alternative-version'
}
type NumOperators = 'gte' | 'lte'
type NumFilter = {
value: number
operator: NumOperators
}
type StrOperators = 'normal' | 'regexp'
type StrFilter = {
value: string
operator: StrOperators
}
type OrderOperators = 'asc' | 'desc'
type Order = {
value: 'relevance' | 'title' | 'resolution' | 'epsNum'
operator: OrderOperators
}
interface AdvFilter {
regular: 'any' | 'regular' | 'irregular'
epsNum: NumFilter
epsWatched: NumFilter
rewatchCount: NumFilter
encoder: StrFilter
source: StrFilter
quality: StrFilter
res: NumFilter
video: StrFilter
audio: StrFilter
subtitle: StrFilter
notes: StrFilter
order: Order
}
interface Window {
myAPI: {
selectDirectory: () => Promise<string>
getUserDataDir: () => Promise<string>
getSettings: () => Promise<MyStore>
setSettings: (settings: MyStore) => Promise<MyStore>
getSeries: () => Promise<Series[]>
editSeries: (series: Series) => Promise<Series>
changePoster: (series: Series) => Promise<Series>
openItem: (fullPath: string) => Promise<void>
getSchedule: () => Promise<Schedule>
changeSchedule: (schedule: Schedule) => Promise<Schedule>
}
}