UNPKG

1.7 kBPlain TextView Raw
1const 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
8interface Settings {
9 parseNative: boolean;
10 parseAscii: boolean;
11 customFirst: boolean;
12}
13
14const defaults: Settings = {
15 parseNative: true,
16 parseAscii: true,
17 customFirst: false,
18};
19
20const 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};
44const 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};
54const 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};
65const setOne = async (field: string, value: any) => {
66 await settings.setOne('emoji', field, JSON.stringify(value));
67};
68
69export {
70 get,
71 set,
72 getOne,
73 setOne,
74};