From df4d11409ce3ce973ea0736470a6a02ba7d9d2d0 Mon Sep 17 00:00:00 2001 From: Ben Davies Date: Fri, 18 Aug 2017 12:39:04 -0300 Subject: [PATCH] [better-sqlite3] Add type declarations --- types/better-sqlite3/better-sqlite3-tests.ts | 32 +++++++ types/better-sqlite3/index.d.ts | 88 ++++++++++++++++++++ types/better-sqlite3/tsconfig.json | 22 +++++ types/better-sqlite3/tslint.json | 1 + 4 files changed, 143 insertions(+) create mode 100644 types/better-sqlite3/better-sqlite3-tests.ts create mode 100644 types/better-sqlite3/index.d.ts create mode 100644 types/better-sqlite3/tsconfig.json create mode 100644 types/better-sqlite3/tslint.json diff --git a/types/better-sqlite3/better-sqlite3-tests.ts b/types/better-sqlite3/better-sqlite3-tests.ts new file mode 100644 index 0000000000..0d9ebda2aa --- /dev/null +++ b/types/better-sqlite3/better-sqlite3-tests.ts @@ -0,0 +1,32 @@ +import * as Database from 'better-sqlite3'; + +let integer = Database.Integer(1); +let err = new Database.SqliteError('ok', 'ok'); + +let db = Database('.'); +db = new Database('.', {memory: true}); +db.exec('CREATE TABLE test (id INTEGER PRIMARY KEY NOT NULL, name TEXT NOT NULL);'); +db.exec('INSERT INTO test(name) VALUES("name");'); +db.pragma('data_version', true); +db.checkpoint(); +db.checkpoint('main'); +db.register(() => {}); +db.register({name: 'noop', deterministic: true, varargs: true}, () => {}); +db.defaultSafeIntegers(); +db.defaultSafeIntegers(true); + +let stmt = db.prepare('SELECT * FROM test WHERE name == ?;'); +stmt.get(['name']); +stmt.all({name: 'name'}); +stmt.each('name', (row: {name: string}) => {}); +stmt.each((row: {name: string}) => {}); +stmt.pluck(); +stmt.pluck(true); +stmt.bind('name'); +stmt.safeIntegers(); +stmt.safeIntegers(true); + +let trans = db.transaction(['INSERT INTO test(name) VALUES(?);']); +trans.run('name'); +trans.bind('name'); +trans.run(); diff --git a/types/better-sqlite3/index.d.ts b/types/better-sqlite3/index.d.ts new file mode 100644 index 0000000000..3b6834b3cf --- /dev/null +++ b/types/better-sqlite3/index.d.ts @@ -0,0 +1,88 @@ +// Type definitions for better-sqlite3 3.1 +// Project: http://github.com/JoshuaWise/better-sqlite3 +// Definitions by: Ben Davies +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +import * as Integer from 'integer'; + +interface RunResult { + changes: number; + lastInsertRowID: number; +} + +declare class Statement { + database: Database; + source: string; + returnsData: boolean; + constructor(db: Database, sources: string[]); + + run(...params: any[]): RunResult; + get(...params: any[]): any; + all(...params: any[]): any[]; + each(params: any, cb: (row: any) => void): void; + each(cb: (row: any) => void): void; + each(...params: any[]): void; + pluck(toggleState?: boolean): this; + bind(...params: any[]): this; + safeIntegers(toggleState?: boolean): this; +} + +declare class Transaction { + database: Database; + source: string; + constructor(db: Database, sources: string[]); + + run(...params: any[]): RunResult; + bind(...params: any[]): this; + safeIntegers(toggleState?: boolean): this; +} + +interface DatabaseOptions { + memory?: boolean; + readonly?: boolean; +} + +interface RegistrationOptions { + name?: string; + varargs?: boolean; + deterministic?: boolean; +} + +interface Database { + memory: boolean; + readonly: boolean; + name: string; + open: boolean; + inTransaction: boolean; + + prepare(source: string): Statement; + transaction(sources: string[]): Transaction; + exec(source: string): this; + pragma(source: string, simplify?: boolean): any; + checkpoint(databaseName?: string): this; + register(cb: (...params: any[]) => any): this; + register(options: RegistrationOptions, cb: (...params: any[]) => any): this; + close(): this; + defaultSafeIntegers(toggleState?: boolean): this; +} + +declare class SqliteError implements Error { + name: string; + message: string; + code: string; + constructor(message: string, code: string); +} + +interface DatabaseConstructor { + new(filename: string, options?: DatabaseOptions): Database; + (filename: string, options?: DatabaseOptions): Database; + prototype: Database; + + Integer: typeof Integer; + SqliteError: typeof SqliteError; +} + +declare const Database: DatabaseConstructor; +export = Database; diff --git a/types/better-sqlite3/tsconfig.json b/types/better-sqlite3/tsconfig.json new file mode 100644 index 0000000000..fa406408e4 --- /dev/null +++ b/types/better-sqlite3/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "better-sqlite3-tests.ts" + ] +} diff --git a/types/better-sqlite3/tslint.json b/types/better-sqlite3/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/better-sqlite3/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }