1 | import { sites as rawSites } from './data';
|
2 | import { checker } from './lib';
|
3 |
|
4 |
|
5 | interface Imessage {
|
6 | userName: string;
|
7 | siteName: string;
|
8 | uri: string;
|
9 | exist: boolean;
|
10 | }
|
11 |
|
12 | class JsherLock {
|
13 | private userName: string;
|
14 | private sites: string[];
|
15 |
|
16 | constructor(userName: string) {
|
17 | this.userName = userName;
|
18 | this.sites = new Array(...rawSites);
|
19 | }
|
20 |
|
21 | static sites(): string[] {
|
22 | return rawSites;
|
23 | }
|
24 |
|
25 | async checkAll(): Promise<Imessage[]> {
|
26 | const messages = await Promise.all(
|
27 | rawSites.map(siteName => {
|
28 | return new Promise<Imessage>(async (resolve, reject) => {
|
29 | const message = await this.checkFor(siteName);
|
30 | resolve(message);
|
31 | });
|
32 | })
|
33 | );
|
34 | return messages;
|
35 | }
|
36 |
|
37 | async checkFor(siteName: string): Promise<Imessage> {
|
38 | try {
|
39 | const message = await checker(siteName, this.userName);
|
40 | return message;
|
41 | } catch (e) {
|
42 | throw e;
|
43 | }
|
44 | }
|
45 | }
|
46 |
|
47 | export default JsherLock;
|
48 |
|
49 | export { Imessage };
|
50 |
|
51 | module.exports = JsherLock;
|
52 | module.exports.default = JsherLock;
|
53 |
|
\ | No newline at end of file |