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.pull/137/head
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