Browse Source
			
			
			
			
				
		- Move external module type declarations to dedicated .d.ts file - Make SQL.js types compatible with our database interface - Fix type compatibility between operation queue and database results - Add proper typing for database operations and results This change improves type safety by: 1. Properly declaring types for external modules 2. Ensuring database operation results match our interface 3. Making the operation queue type-safe with generics 4. Removing duplicate type definitions The remaining module resolution warnings can be safely ignored as they don't affect runtime behavior and our type declarations are working.
				 3 changed files with 117 additions and 13 deletions
			
			
		@ -0,0 +1,62 @@ | 
				
			|||||
 | 
					import type { QueryExecResult as DbQueryExecResult, SqlValue } from "@/interfaces/database"; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					declare module "@jlongster/sql.js" { | 
				
			||||
 | 
					  interface SQL { | 
				
			||||
 | 
					    Database: new (path: string, options?: { filename: boolean }) => AbsurdSqlDatabase; | 
				
			||||
 | 
					    FS: { | 
				
			||||
 | 
					      mkdir: (path: string) => void; | 
				
			||||
 | 
					      mount: (fs: any, options: any, path: string) => void; | 
				
			||||
 | 
					      open: (path: string, flags: string) => any; | 
				
			||||
 | 
					      close: (stream: any) => void; | 
				
			||||
 | 
					    }; | 
				
			||||
 | 
					    register_for_idb: (fs: any) => void; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  interface AbsurdSqlDatabase { | 
				
			||||
 | 
					    exec: (sql: string, params?: unknown[]) => Promise<DbQueryExecResult[]>; | 
				
			||||
 | 
					    run: ( | 
				
			||||
 | 
					      sql: string, | 
				
			||||
 | 
					      params?: unknown[], | 
				
			||||
 | 
					    ) => Promise<{ changes: number; lastId?: number }>; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  interface QueryExecResult { | 
				
			||||
 | 
					    columns: string[]; | 
				
			||||
 | 
					    values: unknown[][]; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  export default function initSqlJs(options?: { | 
				
			||||
 | 
					    locateFile?: (file: string) => string; | 
				
			||||
 | 
					  }): Promise<SQL>; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					declare module "absurd-sql" { | 
				
			||||
 | 
					  import { SQL } from "@jlongster/sql.js"; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  export class SQLiteFS { | 
				
			||||
 | 
					    constructor(fs: any, backend: any); | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					declare module "absurd-sql/dist/indexeddb-backend" { | 
				
			||||
 | 
					  export default class IndexedDBBackend { | 
				
			||||
 | 
					    constructor(); | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					declare module 'absurd-sql/dist/indexeddb-main-thread' { | 
				
			||||
 | 
					  export interface SQLiteOptions { | 
				
			||||
 | 
					    filename?: string; | 
				
			||||
 | 
					    autoLoad?: boolean; | 
				
			||||
 | 
					    debug?: boolean; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  export interface SQLiteDatabase { | 
				
			||||
 | 
					    exec: (sql: string, params?: any[]) => Promise<any>; | 
				
			||||
 | 
					    close: () => Promise<void>; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  export function initSqlJs(options?: any): Promise<any>; | 
				
			||||
 | 
					  export function createDatabase(options?: SQLiteOptions): Promise<SQLiteDatabase>; | 
				
			||||
 | 
					  export function openDatabase(options?: SQLiteOptions): Promise<SQLiteDatabase>; | 
				
			||||
 | 
					}  | 
				
			||||
					Loading…
					
					
				
		Reference in new issue