1 | const settings: {
|
2 | get(key: string): Promise<{ [key: string]: any }>;
|
3 | set(key: string, value: any): Promise<void>;
|
4 | getOne(key: string, field: string): Promise<any>;
|
5 | setOne(key: string, field: string, value: any): Promise<void>;
|
6 | } = require.main.require('./src/meta').settings;
|
7 |
|
8 | interface Settings {
|
9 | parseNative: boolean;
|
10 | parseAscii: boolean;
|
11 | customFirst: boolean;
|
12 | }
|
13 |
|
14 | const defaults: Settings = {
|
15 | parseNative: true,
|
16 | parseAscii: true,
|
17 | customFirst: false,
|
18 | };
|
19 |
|
20 | const get = async (): Promise<{ [key: string]: any }> => {
|
21 | const data = await settings.get('emoji');
|
22 | const sets: Partial<Settings> = {};
|
23 |
|
24 | Object.keys(defaults).forEach((key: keyof Settings) => {
|
25 | const defaultVal = defaults[key];
|
26 | const str = data[key];
|
27 |
|
28 | if (typeof str !== 'string') {
|
29 | sets[key] = defaultVal;
|
30 | return;
|
31 | }
|
32 |
|
33 | const val = JSON.parse(str);
|
34 | if (typeof val !== typeof defaultVal) {
|
35 | sets[key] = defaultVal;
|
36 | return;
|
37 | }
|
38 |
|
39 | sets[key] = val;
|
40 | });
|
41 |
|
42 | return sets;
|
43 | };
|
44 | const set = async (data: {
|
45 | [key: string]: any;
|
46 | }) => {
|
47 | const sets: Partial<Record<keyof Settings, string>> = {};
|
48 | Object.keys(data).forEach((key: keyof Settings) => {
|
49 | sets[key] = JSON.stringify(data[key]);
|
50 | });
|
51 |
|
52 | await settings.set('emoji', sets);
|
53 | };
|
54 | const getOne = async (field: keyof Settings): Promise<any> => {
|
55 | const str = await settings.getOne('emoji', field);
|
56 |
|
57 | const defaultVal = defaults[field];
|
58 | let val = JSON.parse(str);
|
59 | if (typeof val !== typeof defaultVal) {
|
60 | val = defaultVal;
|
61 | }
|
62 |
|
63 | return val;
|
64 | };
|
65 | const setOne = async (field: string, value: any) => {
|
66 | await settings.setOne('emoji', field, JSON.stringify(value));
|
67 | };
|
68 |
|
69 | export {
|
70 | get,
|
71 | set,
|
72 | getOne,
|
73 | setOne,
|
74 | };
|