File tree 6 files changed +58
-17
lines changed
6 files changed +58
-17
lines changed Original file line number Diff line number Diff line change @@ -251,6 +251,7 @@ Client.prototype._connect = function (callback) {
251
251
? new Error ( 'Connection terminated' )
252
252
: new Error ( 'Connection terminated unexpectedly' )
253
253
254
+ clearTimeout ( connectionTimeoutHandle )
254
255
this . _errorAllQueries ( error )
255
256
256
257
if ( ! this . _ending ) {
Original file line number Diff line number Diff line change
1
+ 'use strict'
2
+
3
+ const warnDeprecation = require ( './warn-deprecation' )
4
+
5
+ // Node 4 doesn’t support new.target.
6
+ let hasNewTarget
7
+
8
+ try {
9
+ // eslint-disable-next-line no-eval
10
+ eval ( '(function () { new.target })' )
11
+ hasNewTarget = true
12
+ } catch ( error ) {
13
+ hasNewTarget = false
14
+ }
15
+
16
+ const checkConstructor = ( name , code , getNewTarget ) => {
17
+ if ( hasNewTarget && getNewTarget ( ) === undefined ) {
18
+ warnDeprecation ( `Constructing a ${ name } without new is deprecated and will stop working in pg 8.` , code )
19
+ }
20
+ }
21
+
22
+ module . exports = checkConstructor
Original file line number Diff line number Diff line change
1
+ 'use strict'
2
+
3
+ const util = require ( 'util' )
4
+
5
+ const dummyFunctions = new Map ( )
6
+
7
+ // Node 4 doesn’t support process.emitWarning(message, 'DeprecationWarning', code).
8
+ const emitDeprecationWarning = ( message , code ) => {
9
+ let dummy = dummyFunctions . get ( code )
10
+
11
+ if ( dummy === undefined ) {
12
+ dummy = util . deprecate ( ( ) => { } , message )
13
+ dummyFunctions . set ( code , dummy )
14
+ }
15
+
16
+ dummy ( )
17
+ }
18
+
19
+ module . exports = emitDeprecationWarning
Original file line number Diff line number Diff line change @@ -594,27 +594,19 @@ Connection.prototype._readValue = function (buffer) {
594
594
// parses error
595
595
Connection . prototype . parseE = function ( buffer , length ) {
596
596
var fields = { }
597
- var msg , item
598
- var input = new Message ( 'error' , length )
599
597
var fieldType = this . readString ( buffer , 1 )
600
598
while ( fieldType !== '\0' ) {
601
599
fields [ fieldType ] = this . parseCString ( buffer )
602
600
fieldType = this . readString ( buffer , 1 )
603
601
}
604
- if ( input . name === 'error' ) {
605
- // the msg is an Error instance
606
- msg = new Error ( fields . M )
607
- for ( item in input ) {
608
- // copy input properties to the error
609
- if ( Object . prototype . hasOwnProperty . call ( input , item ) ) {
610
- msg [ item ] = input [ item ]
611
- }
612
- }
613
- } else {
614
- // the msg is an object literal
615
- msg = input
616
- msg . message = fields . M
617
- }
602
+
603
+ // the msg is an Error instance
604
+ var msg = new Error ( fields . M )
605
+
606
+ // for compatibility with Message
607
+ msg . name = 'error'
608
+ msg . length = length
609
+
618
610
msg . severity = fields . S
619
611
msg . code = fields . C
620
612
msg . detail = fields . D
Original file line number Diff line number Diff line change @@ -12,9 +12,13 @@ var Client = require('./client')
12
12
var defaults = require ( './defaults' )
13
13
var Connection = require ( './connection' )
14
14
var Pool = require ( 'pg-pool' )
15
+ const checkConstructor = require ( './compat/check-constructor' )
15
16
16
17
const poolFactory = ( Client ) => {
17
18
var BoundPool = function ( options ) {
19
+ // eslint-disable-next-line no-eval
20
+ checkConstructor ( 'pg.Pool' , 'PG-POOL-NEW' , ( ) => eval ( 'new.target' ) )
21
+
18
22
var config = Object . assign ( { Client : Client } , options )
19
23
return new Pool ( config )
20
24
}
Original file line number Diff line number Diff line change 9
9
10
10
var EventEmitter = require ( 'events' ) . EventEmitter
11
11
var util = require ( 'util' )
12
+ const checkConstructor = require ( './compat/check-constructor' )
12
13
13
14
var Result = require ( './result' )
14
15
var utils = require ( './utils' )
15
16
16
17
var Query = function ( config , values , callback ) {
17
- // use of "new" optional
18
+ // use of "new" optional in pg 7
19
+ // eslint-disable-next-line no-eval
20
+ checkConstructor ( 'Query' , 'PG-QUERY-NEW' , ( ) => eval ( 'new.target' ) )
18
21
if ( ! ( this instanceof Query ) ) { return new Query ( config , values , callback ) }
19
22
20
23
config = utils . normalizeQueryConfig ( config , values , callback )
You can’t perform that action at this time.
0 commit comments