|
1 | 1 | import { invoke } from '@tauri-apps/api'; |
2 | 2 |
|
3 | | -type Level = 'Trace' | 'Debug' | 'Info' | 'Warn' | 'Error'; |
4 | | - |
5 | | -async function logJs(level: Level, message: string) { |
6 | | - try { |
7 | | - await invoke<void>('log_js', { level, message }); |
8 | | - } catch (e) { |
9 | | - console.error(`invoke log_js failed: ${e}`); |
10 | | - } |
11 | | -} |
| 3 | +export type Level = 'Trace' | 'Debug' | 'Info' | 'Warn' | 'Error'; |
12 | 4 |
|
13 | 5 | /** |
14 | 6 | * Rust logger |
15 | 7 | */ |
16 | | -const logu = { |
| 8 | +export interface Logu { |
17 | 9 | /** |
18 | 10 | * Log a `trace` message |
19 | 11 | * |
20 | 12 | * @param msg - The message to log |
21 | 13 | */ |
22 | | - trace: (msg: string) => logJs('Trace', msg), |
| 14 | + readonly trace: (msg: string) => void; |
23 | 15 | /** |
24 | 16 | * Log a `debug` message |
25 | 17 | * |
26 | 18 | * @param msg - The message to log |
27 | 19 | */ |
28 | | - debug: (msg: string) => logJs('Debug', msg), |
| 20 | + readonly debug: (msg: string) => void; |
29 | 21 | /** |
30 | 22 | * Log an `info` message |
31 | 23 | * |
32 | 24 | * @param msg - The message to log |
33 | 25 | */ |
34 | | - info: (msg: string) => logJs('Info', msg), |
| 26 | + readonly info: (msg: string) => void; |
35 | 27 | /** |
36 | 28 | * Log a `warn` message |
37 | 29 | * |
38 | 30 | * @param msg - The message to log |
39 | 31 | */ |
40 | | - warn: (msg: string) => logJs('Warn', msg), |
| 32 | + readonly warn: (msg: string) => void; |
41 | 33 | /** |
42 | 34 | * Log an `error` message |
43 | 35 | * |
44 | 36 | * @param msg - The message to log |
45 | 37 | */ |
| 38 | + readonly error: (msg: string) => void; |
| 39 | +} |
| 40 | + |
| 41 | +async function logJs(level: Level, message: string) { |
| 42 | + try { |
| 43 | + await invoke<void>('log_js', { level, message }); |
| 44 | + } catch (e) { |
| 45 | + console.error(`invoke log_js failed: ${e}`); |
| 46 | + } |
| 47 | +} |
| 48 | + |
| 49 | +/** |
| 50 | + * Rust logger |
| 51 | + */ |
| 52 | +const logu: Logu = Object.freeze({ |
| 53 | + trace: (msg: string) => logJs('Trace', msg), |
| 54 | + debug: (msg: string) => logJs('Debug', msg), |
| 55 | + info: (msg: string) => logJs('Info', msg), |
| 56 | + warn: (msg: string) => logJs('Warn', msg), |
46 | 57 | error: (msg: string) => logJs('Error', msg), |
47 | | -}; |
| 58 | +}); |
48 | 59 |
|
49 | 60 | export default logu; |
0 commit comments