From 5b30a7bfe790829931fa3b6f9c9e527334b3b2c4 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Mon, 6 Feb 2017 19:40:19 +0900 Subject: [PATCH 1/6] add defaults field --- pg/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pg/index.d.ts b/pg/index.d.ts index 75f3f33dd5..a18c9b6d42 100644 --- a/pg/index.d.ts +++ b/pg/index.d.ts @@ -130,4 +130,4 @@ export declare class Events extends events.EventEmitter { export const types: typeof pgTypes; - +export const defaults: Defaults & ClientConfig; From 3c083f098b71b70cd000a6644cb88574db47a569 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Mon, 6 Feb 2017 19:41:21 +0900 Subject: [PATCH 2/6] Update pg-tests.ts --- pg/pg-tests.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pg/pg-tests.ts b/pg/pg-tests.ts index 8936f01ee0..15dfdde3d9 100644 --- a/pg/pg-tests.ts +++ b/pg/pg-tests.ts @@ -7,6 +7,7 @@ var conString = "postgres://username:password@localhost/database"; pg.types.setTypeParser(20, (val) => Number(val)); // Client pooling +pg.defaults.ssl = true; pg.connect(conString, (err, client, done) => { if (err) { return console.error("Error fetching client from pool", err); @@ -71,4 +72,4 @@ pool.connect(function(err, client, done) { pool.on('error', function (err, client) { console.error('idle client error', err.message, err.stack) -}) \ No newline at end of file +}) From d88d452cf09a8d17161595cf41832e5c8d9ac799 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Mon, 6 Feb 2017 23:46:11 +0900 Subject: [PATCH 3/6] resolve most of lint error --- pg/index.d.ts | 41 ++++++++++++++--------------------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/pg/index.d.ts b/pg/index.d.ts index a18c9b6d42..ca555b1f83 100644 --- a/pg/index.d.ts +++ b/pg/index.d.ts @@ -1,11 +1,9 @@ -// Type definitions for pg 6.1.0 +// Type definitions for pg 6.1 // Project: https://github.com/brianc/node-postgres // Definitions by: Phips Peter // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped /// -/// - import events = require("events"); import stream = require("stream"); @@ -63,41 +61,34 @@ export interface ResultBuilder extends QueryResult { } export declare class Pool extends events.EventEmitter { - - constructor(); - // `new Pool('pg://user@localhost/mydb')` is not allowed. // But it passes type check because of issue: // https://github.com/Microsoft/TypeScript/issues/7485 - constructor(config: PoolConfig); + constructor(config?: PoolConfig); connect(): Promise; connect(callback: (err: Error, client: Client, done: () => void) => void): void; end(): Promise; - query(queryText: string): Promise; - query(queryText: string, values: any[]): Promise; + query(queryText: string, values?: any[]): Promise; query(queryText: string, callback: (err: Error, result: QueryResult) => void): void; query(queryText: string, values: any[], callback: (err: Error, result: QueryResult) => void): void; - public on(event: "error", listener: (err: Error, client: Client) => void): this; - public on(event: "connect", listener: (client: Client) => void): this; - public on(event: "acquire", listener: (client: Client) => void): this; - public on(event: string, listener: Function): this; + on(event: "error", listener: (err: Error, client: Client) => void): this; + on(event: "connect" | "acquire", listener: (client: Client) => void): this; } export declare class Client extends events.EventEmitter { constructor(connection: string); constructor(config: ClientConfig); - connect(callback?: (err:Error) => void): void; + connect(callback?: (err: Error) => void): void; end(callback?: (err: Error) => void): void; release(): void; - query(queryText: string): Promise; - query(queryText: string, values: any[]): Promise; + query(queryText: string, values?: any[]): Promise; query(queryText: string, callback?: (err: Error, result: QueryResult) => void): Query; query(config: QueryConfig, callback?: (err: Error, result: QueryResult) => void): Query; @@ -109,23 +100,19 @@ export declare class Client extends events.EventEmitter { pauseDrain(): void; resumeDrain(): void; - public on(event: "drain", listener: () => void): this; - public on(event: "error", listener: (err: Error) => void): this; - public on(event: "notification", listener: (message: any) => void): this; - public on(event: "notice", listener: (message: any) => void): this; - public on(event: string, listener: Function): this; + on(event: "drain", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "notification" | "notice", listener: (message: any) => void): this; } export declare class Query extends events.EventEmitter { - public on(event: "row", listener: (row: any, result?: ResultBuilder) => void): this; - public on(event: "error", listener: (err: Error) => void): this; - public on(event: "end", listener: (result: ResultBuilder) => void): this; - public on(event: string, listener: Function): this; + on(event: "row", listener: (row: any, result?: ResultBuilder) => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: "end", listener: (result: ResultBuilder) => void): this; } export declare class Events extends events.EventEmitter { - public on(event: "error", listener: (err: Error, client: Client) => void): this; - public on(event: string, listener: Function): this; + on(event: "error", listener: (err: Error, client: Client) => void): this; } export const types: typeof pgTypes; From 238d84f545eca19ac05b55405c692dac823ddef3 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Wed, 8 Feb 2017 02:34:58 +0900 Subject: [PATCH 4/6] add 'end' event to Client --- pg/index.d.ts | 1 + pg/pg-tests.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/pg/index.d.ts b/pg/index.d.ts index a2178d4823..ed03211e6b 100644 --- a/pg/index.d.ts +++ b/pg/index.d.ts @@ -100,6 +100,7 @@ export declare class Client extends events.EventEmitter { on(event: "drain", listener: () => void): this; on(event: "error", listener: (err: Error) => void): this; on(event: "notification" | "notice", listener: (message: any) => void): this; + on(event: "end", listener: () => void): this; } export declare class Query extends events.EventEmitter { diff --git a/pg/pg-tests.ts b/pg/pg-tests.ts index 15dfdde3d9..c4bbb0316c 100644 --- a/pg/pg-tests.ts +++ b/pg/pg-tests.ts @@ -43,6 +43,7 @@ client.connect((err) => { }); return null; }); +client.on('end', () => console.log("Client was disconnected.")); // client pooling From 52ae53f859138ce8ef37cfca624edfeee27ef367 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Wed, 8 Feb 2017 02:36:34 +0900 Subject: [PATCH 5/6] use arrow function on tests --- pg/pg-tests.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pg/pg-tests.ts b/pg/pg-tests.ts index c4bbb0316c..bdf49ab240 100644 --- a/pg/pg-tests.ts +++ b/pg/pg-tests.ts @@ -4,7 +4,7 @@ import * as pg from "pg"; var conString = "postgres://username:password@localhost/database"; // https://github.com/brianc/node-pg-types -pg.types.setTypeParser(20, (val) => Number(val)); +pg.types.setTypeParser(20, val => Number(val)); // Client pooling pg.defaults.ssl = true; @@ -28,7 +28,7 @@ pg.connect(conString, (err, client, done) => { // Simple var client = new pg.Client(conString); -client.connect((err) => { +client.connect(err => { if (err) { return console.error("Could not connect to postgres", err); } @@ -57,11 +57,11 @@ var config = { }; var pool = new pg.Pool(config); -pool.connect(function(err, client, done) { +pool.connect((err, client, done) => { if(err) { return console.error('error fetching client from pool', err); } - client.query('SELECT $1::int AS number', ['1'], function(err, result) { + client.query('SELECT $1::int AS number', ['1'], (err, result) => { done(); if(err) { @@ -71,6 +71,6 @@ pool.connect(function(err, client, done) { }); }); -pool.on('error', function (err, client) { +pool.on('error', (err, client) => { console.error('idle client error', err.message, err.stack) }) From 4342e2b37f6bd653c100589516062e4422ed7c6b Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Wed, 8 Feb 2017 02:45:49 +0900 Subject: [PATCH 6/6] restoring callback-less and removing optional --- pg/index.d.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pg/index.d.ts b/pg/index.d.ts index ed03211e6b..67ed0c355d 100644 --- a/pg/index.d.ts +++ b/pg/index.d.ts @@ -88,8 +88,11 @@ export declare class Client extends events.EventEmitter { end(callback?: (err: Error) => void): void; release(): void; - query(queryTextOrConfig: string | QueryConfig, callback?: (err: Error, result: QueryResult) => void): Query; - query(queryText: string, values: any[], callback?: (err: Error, result: QueryResult) => void): Query; + query(queryTextOrConfig: string | QueryConfig): Promise; + query(queryText: string, values: any[]): Promise; + + query(queryTextOrConfig: string | QueryConfig, callback: (err: Error, result: QueryResult) => void): Query; + query(queryText: string, values: any[], callback: (err: Error, result: QueryResult) => void): Query; copyFrom(queryText: string): stream.Writable; copyTo(queryText: string): stream.Readable;