kailogger 1.0.0-dark.red → 1.0.1-dark.red

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/README.md +183 -53
  2. package/dist/core/Config.d.ts +15 -0
  3. package/dist/core/Config.js +44 -0
  4. package/dist/core/Logger.d.ts +75 -4
  5. package/dist/core/Logger.js +369 -38
  6. package/dist/core/Scope.d.ts +13 -0
  7. package/dist/core/Scope.js +36 -0
  8. package/dist/features/Chart.d.ts +15 -0
  9. package/dist/features/Chart.js +65 -0
  10. package/dist/features/Diff.d.ts +3 -0
  11. package/dist/features/Diff.js +34 -0
  12. package/dist/features/Encrypt.d.ts +10 -0
  13. package/dist/features/Encrypt.js +47 -0
  14. package/dist/features/Notify.d.ts +14 -0
  15. package/dist/features/Notify.js +31 -0
  16. package/dist/features/Screenshot.d.ts +10 -0
  17. package/dist/features/Screenshot.js +109 -0
  18. package/dist/features/Sound.d.ts +11 -0
  19. package/dist/features/Sound.js +118 -0
  20. package/dist/features/Timer.d.ts +6 -0
  21. package/dist/features/Timer.js +42 -0
  22. package/dist/features/Tree.d.ts +7 -0
  23. package/dist/features/Tree.js +28 -0
  24. package/dist/features/index.d.ts +8 -0
  25. package/dist/features/index.js +24 -0
  26. package/dist/index.d.ts +12 -0
  27. package/dist/index.js +26 -0
  28. package/dist/styles/gradients.d.ts +28 -0
  29. package/dist/styles/palettes.d.ts +31 -0
  30. package/dist/styles/palettes.js +33 -2
  31. package/dist/transports/ConsoleTransport.d.ts +9 -0
  32. package/dist/transports/ConsoleTransport.js +18 -0
  33. package/dist/transports/FileTransport.d.ts +16 -0
  34. package/dist/transports/FileTransport.js +84 -0
  35. package/dist/transports/WebhookTransport.d.ts +15 -0
  36. package/dist/transports/WebhookTransport.js +31 -0
  37. package/dist/transports/index.d.ts +3 -0
  38. package/dist/transports/index.js +19 -0
  39. package/dist/types/index.d.ts +16 -0
  40. package/dist/types/index.js +11 -0
  41. package/dist/utils/json.d.ts +3 -0
  42. package/dist/utils/json.js +36 -0
  43. package/dist/utils/prettyError.d.ts +3 -0
  44. package/dist/utils/prettyError.js +96 -0
  45. package/dist/utils/progress.d.ts +11 -0
  46. package/dist/utils/progress.js +45 -0
  47. package/dist/utils/prompt.d.ts +4 -0
  48. package/dist/utils/prompt.js +59 -0
  49. package/dist/utils/selection.d.ts +4 -0
  50. package/dist/utils/selection.js +166 -0
  51. package/dist/utils/stripAnsi.d.ts +1 -0
  52. package/dist/utils/stripAnsi.js +6 -0
  53. package/dist/utils/table.d.ts +3 -0
  54. package/dist/utils/table.js +38 -0
  55. package/examples/demo.ts +88 -25
  56. package/package.json +23 -4
  57. package/src/core/Config.ts +44 -0
  58. package/src/core/Logger.ts +309 -50
  59. package/src/core/Scope.ts +35 -0
  60. package/src/features/Chart.ts +61 -0
  61. package/src/features/Diff.ts +25 -0
  62. package/src/features/Encrypt.ts +39 -0
  63. package/src/features/Notify.ts +39 -0
  64. package/src/features/Screenshot.ts +70 -0
  65. package/src/features/Sound.ts +66 -0
  66. package/src/features/Timer.ts +35 -0
  67. package/src/features/Tree.ts +24 -0
  68. package/src/features/index.ts +8 -0
  69. package/src/icon/logo.png +0 -0
  70. package/src/index.ts +13 -1
  71. package/src/sounds/error.wav +0 -0
  72. package/src/sounds/notification.wav +0 -0
  73. package/src/sounds/success.wav +0 -0
  74. package/src/sounds/warning.wav +0 -0
  75. package/src/styles/palettes.ts +33 -2
  76. package/src/transports/ConsoleTransport.ts +19 -0
  77. package/src/transports/FileTransport.ts +55 -0
  78. package/src/transports/WebhookTransport.ts +37 -0
  79. package/src/transports/index.ts +3 -0
  80. package/src/types/cli-highlight.d.ts +3 -0
  81. package/src/types/index.ts +23 -0
  82. package/src/utils/json.ts +25 -0
  83. package/src/utils/prettyError.ts +52 -0
  84. package/src/utils/progress.ts +42 -0
  85. package/src/utils/prompt.ts +23 -0
  86. package/src/utils/selection.ts +113 -0
  87. package/src/utils/stripAnsi.ts +3 -0
  88. package/src/utils/table.ts +31 -0
package/README.md CHANGED
@@ -1,19 +1,31 @@
1
- # 🌸 KaiLogger
1
+ # KaiLogger
2
2
 
3
- > The most **divine**, **beautiful**, and **elegant** logger for Node.js.
4
- > Experience logging like never before with mesmerizing gradients, smooth animations, and a developer experience that feels like Zen.
3
+ > **The Ultimate Logger for Node.js** — Beautiful, powerful, and designed for developers who care about aesthetics.
5
4
 
6
- ![KaiLogger](https://img.shields.io/npm/v/kailogger?style=for-the-badge&color=ff69b4)
7
- ![TypeScript](https://img.shields.io/badge/Written%20In-TypeScript-blue?style=for-the-badge)
8
- ![License](https://img.shields.io/npm/l/kailogger?style=for-the-badge&color=green)
5
+ <p align="center">
6
+ <img src="https://files.catbox.moe/et33ah.png" alt="KaiLogger Logo" width="600" />
7
+ </p>
8
+
9
+ ![Version](https://img.shields.io/badge/version-1.0.1-blue)
10
+ ![TypeScript](https://img.shields.io/badge/TypeScript-Ready-3178C6)
11
+
12
+ Turn your boring console logs into a cyber-aesthetic experience. KaiLogger isn't just a logger; it's a complete CLI toolkit.
13
+
14
+ ---
9
15
 
10
16
  ## Features
11
17
 
12
- - » **Divine Gradients**: Make your logs pop with stunning, automatically applied color gradients.
13
- - » **Beautiful Themes**: Switch between `Zen` (Nature), `Neon` (Cyberpunk), and `Pastel` (Soft) modes.
14
- - » **Smooth Animations**: Built-in loading spinners that just work.
15
- - » **High Performance**: Minimal overhead, maximum beauty.
16
- - » **TypeScript Native**: Fully typed for a superior developer experience.
18
+ | Category | Features |
19
+ | --------------- | ----------------------------------------------------------- |
20
+ | **Logging** | Log levels, scoped loggers, custom badges, silent mode |
21
+ | **Styling** | 6 built-in themes, gradients, pretty boxes |
22
+ | **Interactive** | Spinners, progress bars, select menus, prompts |
23
+ | **Debug** | Pretty errors, JSON highlighting, diff view, tree view |
24
+ | **Visuals** | **Charts** (Bar, Sparkline, Gauge), **Screenshots** |
25
+ | **System** | **Desktop Notifications**, **Encryption**, **Sound Alerts** |
26
+ | **Transports** | Console, File (with rotation), Webhooks |
27
+
28
+ ---
17
29
 
18
30
  ## Installation
19
31
 
@@ -21,66 +33,184 @@
21
33
  npm install kailogger
22
34
  ```
23
35
 
24
- ## Usage
36
+ ---
37
+
38
+ ## Quick Start
39
+
40
+ ```typescript
41
+ import { kai } from "kailogger";
42
+
43
+ kai.success("Hello, beautiful world!");
44
+ kai.error("Something went wrong");
45
+ kai.warning("Careful there");
46
+ kai.info("Just FYI");
47
+ kai.debug("For your eyes only");
48
+ ```
49
+
50
+ ---
51
+
52
+ ## Charts (v1.1)
53
+
54
+ Visualize data directly in your terminal.
55
+
56
+ ### Bar Chart
57
+
58
+ ```typescript
59
+ kai.chart([
60
+ { label: "Users", value: 1500 },
61
+ { label: "Sales", value: 890 },
62
+ { label: "Errors", value: 32 },
63
+ ]);
64
+ ```
65
+
66
+ ### Sparkline
67
+
68
+ ```typescript
69
+ kai.sparkline([10, 25, 40, 35, 60, 90, 45, 20]);
70
+ // Output: ▂▃▄▃▅▇▄▂
71
+ ```
72
+
73
+ ### Gauge
74
+
75
+ ```typescript
76
+ kai.gauge(75, 100, "CPU");
77
+ // CPU: [███████████████░░░░░] 75%
78
+ ```
79
+
80
+ ---
81
+
82
+ ## Notifications & Sounds (v1.1)
83
+
84
+ ### Desktop Notifications
85
+
86
+ Send native system notifications.
87
+
88
+ ```typescript
89
+ kai.notify("Build complete!", "✅ Success");
90
+ ```
91
+
92
+ ### Sound Alerts
93
+
94
+ Play sounds for events. (Requires `src/sounds` folder or system sounds)
95
+
96
+ ```typescript
97
+ // Configure sounds directory (optional)
98
+ kai.setSoundsDir("./src/sounds");
99
+
100
+ await kai.soundSuccess();
101
+ await kai.soundError();
102
+ kai.beep();
103
+ ```
104
+
105
+ ---
106
+
107
+ ## Encryption (v1.1)
108
+
109
+ Handle sensitive data securely.
110
+
111
+ ```typescript
112
+ // Mask sensitive info in logs
113
+ kai.masked("API Key", "sk-1234567890abcdef", 4);
114
+ // 🔒 API Key: ************cdef
115
+
116
+ // Encrypt/Decrypt helpers
117
+ const secret = kai.encrypted("My Secret Data", "my-key");
118
+ kai.decrypted(secret, "my-key");
119
+ ```
120
+
121
+ ---
122
+
123
+ ## Screen Capture (v1.1)
25
124
 
26
- Using KaiLogger is as simple as breathing.
125
+ Capture terminal output to file.
27
126
 
28
127
  ```typescript
29
- import { kai } from 'kailogger';
30
-
31
- // 🌿 Standard Logging
32
- kai.success('Database connected successfully');
33
- kai.info('Server started on port 3000');
34
- kai.warning('Memory usage is slightly elevated');
35
- kai.error('Connection to Redis failed');
36
- kai.debug('User payload received');
37
-
38
- // 🌀 Loading Animations
39
- kai.await('Connecting to the quantum realm...');
40
-
41
- setTimeout(() => {
42
- kai.stop('Connection established!');
43
- // or kai.stop() to just clear the spinner
44
- }, 2000);
128
+ kai.startCapture();
129
+
130
+ kai.success("This will be captured");
131
+ kai.info("So will this");
132
+
133
+ kai.saveScreenshot("logs/session.txt");
134
+ kai.saveScreenshotHtml("logs/session.html"); // Saves as styled HTML!
45
135
  ```
46
136
 
137
+ ---
138
+
47
139
  ## Themes
48
140
 
49
- Match your mood or your terminal's aesthetic.
141
+ ```typescript
142
+ kai.setTheme("neon");
143
+ // Options: 'zen', 'neon', 'pastel', 'hacker', 'sunset', 'ocean'
144
+ ```
145
+
146
+ ---
147
+
148
+ ## Log Levels & Scopes
50
149
 
51
- ### **Zen Mode** (Default)
52
- Calming greens, blues, and nature-inspired gradients.
53
150
  ```typescript
54
- kai.setTheme('zen');
55
- kai.info('Nature is efficient.');
151
+ // Set global level
152
+ kai.setLevel("warning");
153
+
154
+ // Scoped Logger
155
+ const db = kai.scope("Database");
156
+ db.info("Connected"); // [Database] Connected
56
157
  ```
57
158
 
58
- ### **Neon Mode**
59
- High-contrast, cyberpunk-inspired bright colors.
159
+ ---
160
+
161
+ ## Performance Timer
162
+
60
163
  ```typescript
61
- kai.setTheme('neon');
62
- kai.info('System override active.');
164
+ kai.time("query");
165
+ await db.query();
166
+ kai.timeEnd("query");
167
+ // ⏱ query: 145.32ms ⚡
63
168
  ```
64
169
 
65
- ### **Pastel Mode**
66
- Soft, easy-on-the-eyes colors for a gentle experience.
170
+ ---
171
+
172
+ ## Tree & Diff View
173
+
67
174
  ```typescript
68
- kai.setTheme('pastel');
69
- kai.info('Soft cloud computing.');
175
+ // Tree View
176
+ kai.tree({
177
+ src: { "index.ts": null, utils: { "helper.ts": null } },
178
+ });
179
+
180
+ // Diff View
181
+ kai.diff({ status: "idle" }, { status: "active" });
70
182
  ```
71
183
 
72
- ## API Reference
184
+ ---
185
+
186
+ ## Interactive Prompts
73
187
 
74
- - » `kai.success(msg)`: Log a success message.
75
- - » `kai.error(msg)`: Log an error message.
76
- - » `kai.warning(msg)`: Log a warning.
77
- - » `kai.info(msg)`: Log an info message.
78
- - » `kai.debug(msg)`: Log a debug message.
79
- - » `kai.log(msg)`: detailed log without level badge.
80
- - » `kai.box(title, msg)`: Print a message inside a beautiful box.
81
- - » `kai.await(msg)`: Start a loading spinner.
82
- - » `kai.stop(msg?)`: Stop the spinner (optional: replace with a success message).
188
+ ```typescript
189
+ const name = await kai.ask("Name?");
190
+ const framework = await kai.select("Framework", ["React", "Vue", "Svelte"]);
191
+ ```
192
+
193
+ ---
194
+
195
+ ## Transports
196
+
197
+ ```typescript
198
+ kai.addFileTransport({
199
+ filename: "./logs/app.log",
200
+ maxSize: 10 * 1024 * 1024,
201
+ });
202
+
203
+ kai.addWebhookTransport({
204
+ url: "https://webhook.site/...",
205
+ });
206
+ ```
207
+
208
+ ---
83
209
 
84
210
  ## License
85
211
 
86
- MIT © Soblend
212
+ ISC
213
+
214
+ ---
215
+
216
+ **By Soblend Development Studio**
@@ -0,0 +1,15 @@
1
+ import { KaiConfig, Transport } from '../types';
2
+ declare class ConfigManager {
3
+ private static instance;
4
+ private config;
5
+ private constructor();
6
+ static getInstance(): ConfigManager;
7
+ configure(options: Partial<KaiConfig>): void;
8
+ get<K extends keyof KaiConfig>(key: K): KaiConfig[K];
9
+ getAll(): KaiConfig;
10
+ reset(): void;
11
+ addTransport(transport: Transport): void;
12
+ removeTransport(name: string): void;
13
+ }
14
+ export declare const config: ConfigManager;
15
+ export {};
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ const DEFAULT_CONFIG = {
5
+ theme: 'zen',
6
+ level: 'debug',
7
+ timestamp: 'locale',
8
+ silent: false,
9
+ transports: []
10
+ };
11
+ class ConfigManager {
12
+ constructor() {
13
+ this.config = { ...DEFAULT_CONFIG };
14
+ }
15
+ static getInstance() {
16
+ if (!ConfigManager.instance) {
17
+ ConfigManager.instance = new ConfigManager();
18
+ }
19
+ return ConfigManager.instance;
20
+ }
21
+ configure(options) {
22
+ this.config = { ...this.config, ...options };
23
+ }
24
+ get(key) {
25
+ return this.config[key];
26
+ }
27
+ getAll() {
28
+ return { ...this.config };
29
+ }
30
+ reset() {
31
+ this.config = { ...DEFAULT_CONFIG };
32
+ }
33
+ addTransport(transport) {
34
+ if (!this.config.transports)
35
+ this.config.transports = [];
36
+ this.config.transports.push(transport);
37
+ }
38
+ removeTransport(name) {
39
+ if (this.config.transports) {
40
+ this.config.transports = this.config.transports.filter(t => t.name !== name);
41
+ }
42
+ }
43
+ }
44
+ exports.config = ConfigManager.getInstance();
@@ -1,20 +1,91 @@
1
+ import { KaiProgress } from '../utils/progress';
1
2
  import { ThemeName } from '../styles/palettes';
3
+ import { ScopedLogger } from './Scope';
4
+ import { LogLevel } from '../types';
5
+ import { FileTransportOptions } from '../transports/FileTransport';
6
+ import { WebhookTransportOptions } from '../transports/WebhookTransport';
7
+ interface LoggerOptions {
8
+ theme?: ThemeName;
9
+ level?: LogLevel;
10
+ logFile?: string;
11
+ silent?: boolean;
12
+ timestamp?: 'ISO' | 'locale' | 'relative' | 'none';
13
+ }
2
14
  export declare class KaiLogger {
3
- theme: ThemeName;
4
15
  private spinner;
5
- constructor(theme?: ThemeName);
16
+ private timer;
17
+ private logFilePath?;
18
+ private buffer;
19
+ private startTime;
20
+ theme: ThemeName;
21
+ level: LogLevel;
22
+ silent: boolean;
23
+ timestampFormat: 'ISO' | 'locale' | 'relative' | 'none';
24
+ constructor(options?: LoggerOptions | ThemeName);
25
+ configure(options: Partial<LoggerOptions>): void;
6
26
  setTheme(theme: ThemeName): void;
27
+ setLevel(level: LogLevel): void;
28
+ setSilent(silent: boolean): void;
29
+ addFileTransport(options: FileTransportOptions): void;
30
+ addWebhookTransport(options: WebhookTransportOptions): void;
31
+ removeTransport(name: string): void;
32
+ scope(name: string): ScopedLogger;
7
33
  private getTime;
8
- private format;
34
+ private shouldLog;
35
+ private logToFile;
36
+ private addToBuffer;
37
+ getBuffer(): string[];
38
+ clearBuffer(): void;
39
+ private print;
9
40
  success(message: string, ...args: any[]): void;
10
- error(message: string, ...args: any[]): void;
41
+ error(message: string | Error, ...args: any[]): void;
11
42
  warning(message: string, ...args: any[]): void;
12
43
  info(message: string, ...args: any[]): void;
13
44
  debug(message: string, ...args: any[]): void;
14
45
  log(message: string): void;
46
+ custom(badge: string, color: string, message: string, ...args: any[]): void;
15
47
  box(title: string, message: string): void;
16
48
  await(message: string): void;
17
49
  stop(message?: string): void;
18
50
  private stopSpinner;
51
+ createProgress(total: number, width?: number): KaiProgress;
52
+ table(data: any[]): void;
53
+ json(data: any): void;
54
+ tree(data: any): void;
55
+ diff(before: any, after: any): void;
56
+ time(label: string): void;
57
+ timeEnd(label: string): number | null;
58
+ ask(question: string): Promise<string>;
59
+ confirm(question: string): Promise<boolean>;
60
+ select(question: string, options: string[]): Promise<string>;
61
+ multiselect(question: string, options: string[]): Promise<string[]>;
62
+ chart(data: {
63
+ label: string;
64
+ value: number;
65
+ }[], options?: {
66
+ width?: number;
67
+ showValues?: boolean;
68
+ }): void;
69
+ sparkline(values: number[]): void;
70
+ gauge(value: number, max: number, label?: string): void;
71
+ notify(message: string, title?: string): void;
72
+ notifySuccess(message: string): void;
73
+ notifyError(message: string): void;
74
+ startCapture(): void;
75
+ stopCapture(): string[];
76
+ saveScreenshot(filename: string): void;
77
+ saveScreenshotHtml(filename: string): void;
78
+ setEncryptionKey(key: string): void;
79
+ encrypted(message: string, key?: string): void;
80
+ decrypted(encryptedMessage: string, key?: string): void;
81
+ masked(label: string, value: string, showLast?: number): void;
82
+ setSoundsDir(dir: string): void;
83
+ beep(): void;
84
+ soundSuccess(): Promise<void>;
85
+ soundError(): Promise<void>;
86
+ soundWarning(): Promise<void>;
87
+ soundNotification(): Promise<void>;
88
+ playSound(filename: string): Promise<void>;
19
89
  }
20
90
  export declare const kai: KaiLogger;
91
+ export {};