-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtype.ts
84 lines (76 loc) · 1.73 KB
/
type.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
import { OptionsOfTextResponseBody } from 'got'
import { Readable } from 'stream'
export type Website = 'www' | '3d'
export enum Service {
// iqdb.org
Danbooru = 'Danbooru',
Konachan = 'Konachan',
Yandere = 'Yande.re',
Gelbooru = 'Gelbooru',
SankakuChannel = 'Sankaku Channel',
EShuushuu = 'e-shuushuu',
Zerochan = 'Zerochan',
AnimePictures = 'Anime-Pictures',
// 3d.iqdb.org
ThreeDBooru = '3dbooru',
IdolComplex = 'Idol Complex',
}
type RootWebsiteService =
| Service.Danbooru
| Service.Konachan
| Service.Yandere
| Service.Gelbooru
| Service.SankakuChannel
| Service.EShuushuu
| Service.Zerochan
| Service.AnimePictures
type ThreeDWebsiteService =
| Service.ThreeDBooru
| Service.IdolComplex
export type SearchInput = string | Buffer | Readable
export interface SearchOptions {
website?: ({
origin: Website,
services?: RootWebsiteService[]
} | {
origin: Website,
services?: ThreeDWebsiteService[]
})
filename?: string
ignoreColors?: boolean
pickOtherResults?: boolean
requestOptions?: OptionsOfTextResponseBody
}
export interface SearchResult {
match: 'best' | 'additional' | 'possible' | 'other'
thumbnail: {
src: string
fixedSrc: string
rating?: string
score?: number
tags?: string[]
}
sources: Array<{
service: Service
href: string
fixedHref: string
}>
width: number
height: number
type: 'safe' | 'ero' | 'explicit' | 'unrated'
similarity: number
similarityPercentage: number
}
export interface SearchResponse {
searched: number
timeSeconds: number
timeMilliseconds: number
thumbnailSrc: string
otherSearchHrefs: {
saucenao: string
ascii2d: string
google: string
tineye: string
}
results: SearchResult[]
}