UNPKG

5.63 kBTypeScriptView Raw
1// Type definitions for better-sqlite3 7.6
2// Project: https://github.com/JoshuaWise/better-sqlite3
3// Definitions by: Ben Davies <https://github.com/Morfent>
4// Mathew Rumsey <https://github.com/matrumz>
5// Santiago Aguilar <https://github.com/sant123>
6// Alessandro Vergani <https://github.com/loghorn>
7// Andrew Kaiser <https://github.com/andykais>
8// Mark Stewart <https://github.com/mrkstwrt>
9// Florian Stamer <https://github.com/stamerf>
10// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
11// TypeScript Version: 3.8
12
13/// <reference types="node" />
14
15type VariableArgFunction = (...params: any[]) => any;
16type ArgumentTypes<F extends VariableArgFunction> = F extends (...args: infer A) => any ? A : never;
17
18declare namespace BetterSqlite3 {
19 interface Statement<BindParameters extends any[]> {
20 database: Database;
21 source: string;
22 reader: boolean;
23 busy: boolean;
24
25 run(...params: BindParameters): Database.RunResult;
26 get(...params: BindParameters): any;
27 all(...params: BindParameters): any[];
28 iterate(...params: BindParameters): IterableIterator<any>;
29 pluck(toggleState?: boolean): this;
30 expand(toggleState?: boolean): this;
31 raw(toggleState?: boolean): this;
32 bind(...params: BindParameters): this;
33 columns(): ColumnDefinition[];
34 safeIntegers(toggleState?: boolean): this;
35 }
36
37 interface ColumnDefinition {
38 name: string;
39 column: string | null;
40 table: string | null;
41 database: string | null;
42 type: string | null;
43 }
44
45 interface Transaction<F extends VariableArgFunction> {
46 (...params: ArgumentTypes<F>): ReturnType<F>;
47 default(...params: ArgumentTypes<F>): ReturnType<F>;
48 deferred(...params: ArgumentTypes<F>): ReturnType<F>;
49 immediate(...params: ArgumentTypes<F>): ReturnType<F>;
50 exclusive(...params: ArgumentTypes<F>): ReturnType<F>;
51 }
52
53 interface VirtualTableOptions {
54 rows: () => Generator;
55 columns: string[];
56 parameters?: string[] | undefined;
57 safeIntegers?: boolean | undefined;
58 directOnly?: boolean | undefined;
59 }
60
61 interface Database {
62 memory: boolean;
63 readonly: boolean;
64 name: string;
65 open: boolean;
66 inTransaction: boolean;
67
68 prepare<BindParameters extends any[] | {} = any[]>(
69 source: string,
70 ): BindParameters extends any[] ? Statement<BindParameters> : Statement<[BindParameters]>;
71 transaction<F extends VariableArgFunction>(fn: F): Transaction<F>;
72 exec(source: string): this;
73 pragma(source: string, options?: Database.PragmaOptions): any;
74 function(name: string, cb: (...params: any[]) => any): this;
75 function(name: string, options: Database.RegistrationOptions, cb: (...params: any[]) => any): this;
76 aggregate(name: string, options: Database.AggregateOptions): this;
77 loadExtension(path: string): this;
78 close(): this;
79 defaultSafeIntegers(toggleState?: boolean): this;
80 backup(destinationFile: string, options?: Database.BackupOptions): Promise<Database.BackupMetadata>;
81 table(name: string, options: VirtualTableOptions): this;
82 unsafeMode(unsafe?: boolean): this;
83 serialize(options?: Database.SerializeOptions): Buffer;
84 }
85
86 interface DatabaseConstructor {
87 new (filename: string | Buffer, options?: Database.Options): Database;
88 (filename: string, options?: Database.Options): Database;
89 prototype: Database;
90
91 SqliteError: typeof SqliteError;
92 }
93}
94
95declare class SqliteError extends Error {
96 name: string;
97 message: string;
98 code: string;
99 constructor(message: string, code: string);
100}
101
102declare namespace Database {
103 interface RunResult {
104 changes: number;
105 lastInsertRowid: number | bigint;
106 }
107
108 interface Options {
109 readonly?: boolean | undefined;
110 fileMustExist?: boolean | undefined;
111 timeout?: number | undefined;
112 verbose?: ((message?: any, ...additionalArgs: any[]) => void) | undefined;
113 nativeBinding?: string | undefined;
114 }
115
116 interface SerializeOptions {
117 attached?: string;
118 }
119
120 interface PragmaOptions {
121 simple?: boolean | undefined;
122 }
123
124 interface RegistrationOptions {
125 varargs?: boolean | undefined;
126 deterministic?: boolean | undefined;
127 safeIntegers?: boolean | undefined;
128 directOnly?: boolean | undefined;
129 }
130
131 interface AggregateOptions extends RegistrationOptions {
132 start?: any;
133 step: (total: any, next: any) => any;
134 inverse?: ((total: any, dropped: any) => any) | undefined;
135 result?: ((total: any) => any) | undefined;
136 }
137
138 interface BackupMetadata {
139 totalPages: number;
140 remainingPages: number;
141 }
142 interface BackupOptions {
143 progress: (info: BackupMetadata) => number;
144 }
145
146 type SqliteError = typeof SqliteError;
147 type Statement<BindParameters extends any[] | {} = any[]> = BindParameters extends any[]
148 ? BetterSqlite3.Statement<BindParameters>
149 : BetterSqlite3.Statement<[BindParameters]>;
150 type ColumnDefinition = BetterSqlite3.ColumnDefinition;
151 type Transaction<T extends VariableArgFunction = VariableArgFunction> = BetterSqlite3.Transaction<T>;
152 type Database = BetterSqlite3.Database;
153}
154
155declare const Database: BetterSqlite3.DatabaseConstructor;
156export = Database;