@pineliner/odb-client 1.0.1 → 1.0.2

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.
@@ -0,0 +1,14 @@
1
+ import type { DatabaseAdapter, Connection, BunSQLiteConfig } from '../types';
2
+ /**
3
+ * Bun SQLite adapter for DatabaseManager
4
+ * Wraps bun:sqlite with Connection interface
5
+ */
6
+ export declare class BunSQLiteAdapter implements DatabaseAdapter {
7
+ readonly type: "bun-sqlite";
8
+ private config;
9
+ constructor(config: BunSQLiteConfig);
10
+ connect(config: BunSQLiteConfig): Promise<Connection>;
11
+ disconnect(tenantId?: string): Promise<void>;
12
+ isHealthy(): Promise<boolean>;
13
+ }
14
+ //# sourceMappingURL=bun-sqlite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bun-sqlite.d.ts","sourceRoot":"","sources":["../../../src/database/adapters/bun-sqlite.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EAGV,eAAe,EAChB,MAAM,UAAU,CAAA;AAEjB;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,eAAe;IACtD,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAS;IACrC,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,EAAE,eAAe;IAI7B,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IASrD,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;CAapC"}
@@ -0,0 +1,14 @@
1
+ import type { DatabaseAdapter, Connection, LibSQLConfig } from '../types';
2
+ /**
3
+ * LibSQL adapter for DatabaseManager
4
+ * Wraps @libsql/client with Connection interface
5
+ */
6
+ export declare class LibSQLAdapter implements DatabaseAdapter {
7
+ readonly type: "libsql";
8
+ private config;
9
+ constructor(config: LibSQLConfig);
10
+ connect(config: LibSQLConfig): Promise<Connection>;
11
+ disconnect(tenantId?: string): Promise<void>;
12
+ isHealthy(): Promise<boolean>;
13
+ }
14
+ //# sourceMappingURL=libsql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"libsql.d.ts","sourceRoot":"","sources":["../../../src/database/adapters/libsql.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EAGV,YAAY,EACb,MAAM,UAAU,CAAA;AAEjB;;;GAGG;AACH,qBAAa,aAAc,YAAW,eAAe;IACnD,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAS;IACjC,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,YAAY;IAI1B,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAUlD,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;CAYpC"}
@@ -0,0 +1,15 @@
1
+ import type { DatabaseAdapter, Connection, ODBLiteConfig } from '../types';
2
+ /**
3
+ * ODB-Lite adapter for DatabaseManager
4
+ * Wraps ServiceClient and ODBLiteClient with Connection interface
5
+ */
6
+ export declare class ODBLiteAdapter implements DatabaseAdapter {
7
+ readonly type: "odblite";
8
+ private config;
9
+ private serviceClient;
10
+ constructor(config: ODBLiteConfig);
11
+ connect(config: any): Promise<Connection>;
12
+ disconnect(tenantId?: string): Promise<void>;
13
+ isHealthy(): Promise<boolean>;
14
+ }
15
+ //# sourceMappingURL=odblite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"odblite.d.ts","sourceRoot":"","sources":["../../../src/database/adapters/odblite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EAGV,aAAa,EACd,MAAM,UAAU,CAAA;AAEjB;;;GAGG;AACH,qBAAa,cAAe,YAAW,eAAe;IACpD,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAS;IAClC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAe;gBAExB,MAAM,EAAE,aAAa;IAQ3B,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;IA2BzC,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;CAQpC"}
@@ -0,0 +1,8 @@
1
+ export { DatabaseManager } from './manager';
2
+ export { parseSQL, splitSQLStatements } from './sql-parser';
3
+ export type { ParsedStatements, SQLParserOptions } from './sql-parser';
4
+ export { BunSQLiteAdapter } from './adapters/bun-sqlite';
5
+ export { LibSQLAdapter } from './adapters/libsql';
6
+ export { ODBLiteAdapter } from './adapters/odblite';
7
+ export type { TenancyMode, BackendType, QueryResult, Connection, DatabaseAdapter, PreparedStatement, DatabaseManagerConfig, MigrationConfig, BunSQLiteConfig, LibSQLConfig, ODBLiteConfig, TenantInfo, } from './types';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAG3C,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAC3D,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAGtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD,YAAY,EAEV,WAAW,EACX,WAAW,EACX,WAAW,EACX,UAAU,EACV,eAAe,EACf,iBAAiB,EAGjB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,aAAa,EAGb,UAAU,GACX,MAAM,SAAS,CAAA"}
@@ -0,0 +1,92 @@
1
+ import type { DatabaseManagerConfig, Connection } from './types';
2
+ /**
3
+ * Database factory for creating and managing multiple databases
4
+ *
5
+ * Features:
6
+ * - Creates multiple databases from single manager instance
7
+ * - Supports libsql, bun:sqlite, and ODB-Lite backends
8
+ * - Connection pooling with LRU eviction
9
+ * - Automatic schema migrations
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * const dbManager = new DatabaseManager({
14
+ * backend: 'libsql',
15
+ * databasePath: './data'
16
+ * })
17
+ *
18
+ * // Create databases
19
+ * await dbManager.createDatabase('identity', { schemaContent })
20
+ * await dbManager.createDatabase('analytics', { schemaContent })
21
+ *
22
+ * // Get connections
23
+ * const identityDB = await dbManager.getConnection('identity')
24
+ * const analyticsDB = await dbManager.getConnection('analytics')
25
+ * ```
26
+ */
27
+ export declare class DatabaseManager {
28
+ private config;
29
+ private adapter;
30
+ private connections;
31
+ private connectionTimestamps;
32
+ private maxConnections;
33
+ constructor(config: DatabaseManagerConfig);
34
+ /**
35
+ * Create a new database
36
+ * @param name - Database name (becomes filename or ODB-Lite database name)
37
+ * @param options - Optional creation options
38
+ */
39
+ createDatabase(name: string, options?: {
40
+ schemaContent?: string;
41
+ }): Promise<void>;
42
+ /**
43
+ * Check if a database exists
44
+ * @param name - Database name
45
+ * @returns true if database exists, false otherwise
46
+ *
47
+ * Note: For local backends (libsql, bun-sqlite), checks file existence.
48
+ * For ODB-Lite, checks if database is in connection cache.
49
+ */
50
+ databaseExists(name: string): Promise<boolean>;
51
+ /**
52
+ * Get connection to a database
53
+ * @param name - Database name
54
+ *
55
+ * If database exists on disk but not in cache, it will be connected automatically.
56
+ * If database doesn't exist at all, an error will be thrown.
57
+ */
58
+ getConnection(name: string): Promise<Connection>;
59
+ /**
60
+ * Delete a database
61
+ * @param name - Database name
62
+ */
63
+ deleteDatabase(name: string): Promise<void>;
64
+ /**
65
+ * Execute SQL content on a database connection
66
+ * Useful for running migrations or initial schema
67
+ * @param name - Database name
68
+ * @param sqlContent - SQL content to execute
69
+ */
70
+ executeSQLFile(name: string, sqlContent: string): Promise<void>;
71
+ /**
72
+ * List all managed databases
73
+ */
74
+ listDatabases(): Promise<string[]>;
75
+ /**
76
+ * Close all connections
77
+ */
78
+ close(): Promise<void>;
79
+ /**
80
+ * Run migrations on a connection
81
+ */
82
+ private runMigrations;
83
+ /**
84
+ * Get database-specific configuration
85
+ */
86
+ private getDatabaseConfig;
87
+ /**
88
+ * Evict least recently used connection
89
+ */
90
+ private evictLRU;
91
+ }
92
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/database/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EAErB,UAAU,EAIX,MAAM,SAAS,CAAA;AAOhB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,WAAW,CAAqC;IAGxD,OAAO,CAAC,oBAAoB,CAAiC;IAC7D,OAAO,CAAC,cAAc,CAAQ;gBAElB,MAAM,EAAE,qBAAqB;IA6BzC;;;;OAIG;IACG,cAAc,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GACnC,OAAO,CAAC,IAAI,CAAC;IA0BhB;;;;;;;OAOG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BpD;;;;;;OAMG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAkCtD;;;OAGG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD;;;;;OAKG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIxC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B;;OAEG;YACW,aAAa;IAoC3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;OAEG;YACW,QAAQ;CAqBvB"}
@@ -0,0 +1,17 @@
1
+ export interface ParsedStatements {
2
+ pragmaStatements: string[];
3
+ regularStatements: string[];
4
+ }
5
+ export interface SQLParserOptions {
6
+ separatePragma?: boolean;
7
+ }
8
+ /**
9
+ * Parse SQL file into statements, separating PRAGMA from regular SQL
10
+ * Handles comments, quotes, and semicolons properly
11
+ */
12
+ export declare function parseSQL(sqlContent: string, options?: SQLParserOptions): ParsedStatements;
13
+ /**
14
+ * Simple split for systems that don't need PRAGMA separation
15
+ */
16
+ export declare function splitSQLStatements(sqlContent: string): string[];
17
+ //# sourceMappingURL=sql-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-parser.d.ts","sourceRoot":"","sources":["../../src/database/sql-parser.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,gBAAgB,CA0B7F;AAkED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAG/D"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Tenancy modes supported by DatabaseManager
3
+ */
4
+ export type TenancyMode = 'single-db' | 'multi-tenant' | 'metastore' | 'dual-mode';
5
+ /**
6
+ * Backend database types
7
+ */
8
+ export type BackendType = 'bun-sqlite' | 'libsql' | 'odblite';
9
+ /**
10
+ * Query result from any backend
11
+ */
12
+ export interface QueryResult<T = any> {
13
+ rows: T[];
14
+ rowsAffected?: number;
15
+ lastInsertRowid?: number | bigint;
16
+ }
17
+ /**
18
+ * Unified database connection interface
19
+ * All backends implement this through adapters
20
+ */
21
+ export interface Connection {
22
+ query<T = any>(strings: TemplateStringsArray, ...values: any[]): Promise<QueryResult<T>>;
23
+ execute(sql: string | {
24
+ sql: string;
25
+ args?: any[];
26
+ }, params?: any[]): Promise<QueryResult>;
27
+ prepare(sql: string): PreparedStatement;
28
+ transaction<T>(fn: (tx: Connection) => Promise<T>): Promise<T>;
29
+ close(): Promise<void>;
30
+ }
31
+ /**
32
+ * Prepared statement interface
33
+ */
34
+ export interface PreparedStatement {
35
+ execute(params?: any[]): Promise<QueryResult>;
36
+ all(params?: any[]): Promise<any[]>;
37
+ get(params?: any[]): Promise<any | null>;
38
+ }
39
+ /**
40
+ * Database backend adapter interface
41
+ */
42
+ export interface DatabaseAdapter {
43
+ readonly type: BackendType;
44
+ connect(config: any): Promise<Connection>;
45
+ disconnect(tenantId?: string): Promise<void>;
46
+ isHealthy(): Promise<boolean>;
47
+ }
48
+ /**
49
+ * Migration configuration
50
+ */
51
+ export interface MigrationConfig {
52
+ schemaContent: string;
53
+ }
54
+ /**
55
+ * DatabaseManager configuration
56
+ * Simplified: Manager defines WHERE databases go, createDatabase defines WHAT
57
+ */
58
+ export interface DatabaseManagerConfig {
59
+ backend: BackendType;
60
+ databasePath: string;
61
+ libsql?: {
62
+ encryptionKey?: string;
63
+ authToken?: string;
64
+ };
65
+ odblite?: {
66
+ serviceUrl: string;
67
+ apiKey: string;
68
+ nodeId?: string;
69
+ };
70
+ connectionPoolSize?: number;
71
+ }
72
+ /**
73
+ * Bun SQLite adapter config
74
+ */
75
+ export interface BunSQLiteConfig {
76
+ databasePath: string;
77
+ readonly?: boolean;
78
+ create?: boolean;
79
+ }
80
+ /**
81
+ * LibSQL adapter config
82
+ */
83
+ export interface LibSQLConfig {
84
+ url: string;
85
+ authToken?: string;
86
+ encryptionKey?: string;
87
+ }
88
+ /**
89
+ * ODB-Lite adapter config
90
+ */
91
+ export interface ODBLiteConfig {
92
+ serviceUrl: string;
93
+ apiKey: string;
94
+ nodeId?: string;
95
+ }
96
+ /**
97
+ * Tenant database info
98
+ */
99
+ export interface TenantInfo {
100
+ tenantId: string;
101
+ databaseHash?: string;
102
+ databasePath?: string;
103
+ createdAt: Date;
104
+ metadata?: Record<string, any>;
105
+ }
106
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/database/types.ts"],"names":[],"mappings":"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"}