@johnboxcodes/boxlogger 0.2.0 → 0.3.0

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.
@@ -1,204 +0,0 @@
1
- /**
2
- * SQLite Store Provider
3
- *
4
- * Persistent storage using better-sqlite3 - the most reliable SQLite library for Node.js.
5
- *
6
- * @module stores/sqlite
7
- * @packageDocumentation
8
- */
9
- import Database, { type Database as DatabaseType } from 'better-sqlite3';
10
- import { BaseStoreProvider } from './base.js';
11
- import type { StoreProviderConfig, LogEntry, Session, LogFilter, SessionFilter, StoreStats } from '../types.js';
12
- /**
13
- * Configuration options for SQLite store
14
- */
15
- export interface SQLiteStoreConfig extends StoreProviderConfig {
16
- /**
17
- * Path to SQLite database file
18
- * @default ':memory:' for in-memory database
19
- */
20
- filename?: string;
21
- /**
22
- * Enable WAL mode for better concurrent read performance
23
- * @default true
24
- */
25
- walMode?: boolean;
26
- /**
27
- * Cache size in KB (negative for number of pages)
28
- * @default -2000 (2000 pages)
29
- */
30
- cacheSize?: number;
31
- /**
32
- * Enable foreign keys
33
- * @default true
34
- */
35
- foreignKeys?: boolean;
36
- /**
37
- * Create indexes for common queries
38
- * @default true
39
- */
40
- createIndexes?: boolean;
41
- }
42
- /**
43
- * SQLite store provider using better-sqlite3
44
- *
45
- * @remarks
46
- * Uses synchronous better-sqlite3 for maximum performance and reliability.
47
- * Supports both file-based and in-memory databases.
48
- *
49
- * Features:
50
- * - WAL mode for concurrent reads
51
- * - Automatic schema creation and migration
52
- * - Full-text search on message field
53
- * - Efficient indexes for common query patterns
54
- * - Transaction support for bulk operations
55
- *
56
- * @example
57
- * ```typescript
58
- * import { SQLiteStoreProvider } from '@nodelogger/core/sqlite';
59
- *
60
- * // File-based persistent storage
61
- * const store = new SQLiteStoreProvider({
62
- * filename: './logs.db',
63
- * walMode: true
64
- * });
65
- * await store.init();
66
- *
67
- * // In-memory (fast, non-persistent)
68
- * const memStore = new SQLiteStoreProvider();
69
- * await memStore.init();
70
- * ```
71
- */
72
- export declare class SQLiteStoreProvider extends BaseStoreProvider {
73
- readonly name = "sqlite";
74
- private db;
75
- private sqliteConfig;
76
- constructor(config?: SQLiteStoreConfig);
77
- /**
78
- * Initialize the SQLite database
79
- */
80
- init(): Promise<void>;
81
- /**
82
- * Close the database connection
83
- */
84
- close(): Promise<void>;
85
- /**
86
- * Create database schema
87
- */
88
- private createSchema;
89
- /**
90
- * Save a log entry
91
- * @param entry - Log entry to save
92
- */
93
- saveLog(entry: LogEntry): Promise<void>;
94
- /**
95
- * Save multiple log entries in a transaction
96
- * @param entries - Log entries to save
97
- */
98
- saveLogs(entries: LogEntry[]): Promise<void>;
99
- /**
100
- * Get log entries matching filter
101
- * @param filter - Query filter
102
- * @returns Matching log entries
103
- */
104
- getLogs(filter?: LogFilter): Promise<LogEntry[]>;
105
- /**
106
- * Delete log entries matching filter
107
- * @param filter - Query filter
108
- * @returns Number of deleted entries
109
- */
110
- deleteLogs(filter?: LogFilter): Promise<number>;
111
- /**
112
- * Count log entries matching filter
113
- * @param filter - Query filter
114
- * @returns Count of matching entries
115
- */
116
- countLogs(filter?: LogFilter): Promise<number>;
117
- /**
118
- * Enforce maximum log limit by deleting oldest entries
119
- */
120
- private enforceLogLimit;
121
- /**
122
- * Create a new session
123
- * @param session - Session to create
124
- */
125
- createSession(session: Session): Promise<void>;
126
- /**
127
- * Update an existing session
128
- * @param sessionId - Session ID
129
- * @param updates - Partial session data
130
- */
131
- updateSession(sessionId: string, updates: Partial<Session>): Promise<void>;
132
- /**
133
- * Get a session by ID
134
- * @param sessionId - Session ID
135
- * @returns Session or null
136
- */
137
- getSession(sessionId: string): Promise<Session | null>;
138
- /**
139
- * Get sessions matching filter
140
- * @param filter - Query filter
141
- * @returns Matching sessions
142
- */
143
- getSessions(filter?: SessionFilter): Promise<Session[]>;
144
- /**
145
- * Delete a session and its logs
146
- * @param sessionId - Session ID
147
- */
148
- deleteSession(sessionId: string): Promise<void>;
149
- /**
150
- * Enforce maximum session limit
151
- */
152
- private enforceSessionLimit;
153
- /**
154
- * Clean up old data
155
- * @param olderThan - Delete entries older than this date
156
- * @returns Number of deleted entries
157
- */
158
- cleanup(olderThan: Date): Promise<number>;
159
- /**
160
- * Get storage statistics
161
- * @returns Storage stats
162
- */
163
- getStats(): Promise<StoreStats>;
164
- /**
165
- * Build WHERE clause from filter
166
- */
167
- private buildWhereClause;
168
- /**
169
- * Build complete SELECT query from filter
170
- */
171
- private buildLogQuery;
172
- /**
173
- * Convert SQLite row to LogEntry
174
- */
175
- private rowToLogEntry;
176
- /**
177
- * Convert SQLite row to Session
178
- */
179
- private rowToSession;
180
- /**
181
- * Execute raw SQL query
182
- * @param sql - SQL query
183
- * @param params - Query parameters
184
- * @returns Query results
185
- */
186
- query<T>(sql: string, ...params: unknown[]): T[];
187
- /**
188
- * Execute raw SQL statement
189
- * @param sql - SQL statement
190
- * @param params - Statement parameters
191
- * @returns Run result
192
- */
193
- execute(sql: string, ...params: unknown[]): Database.RunResult;
194
- /**
195
- * Run VACUUM to optimize database
196
- */
197
- vacuum(): void;
198
- /**
199
- * Get the underlying better-sqlite3 database instance
200
- * @returns Database instance or null
201
- */
202
- getDatabase(): DatabaseType | null;
203
- }
204
- //# sourceMappingURL=sqlite.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/stores/sqlite.ts"],"names":[],"mappings":"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"}