Socket
Socket
Sign inDemoInstall

pg-types

Package Overview
Dependencies
8
Maintainers
2
Versions
24
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 3.0.1 to 4.0.0

11

index.js

@@ -1,4 +0,4 @@

var textParsers = require('./lib/textParsers')
var binaryParsers = require('./lib/binaryParsers')
var builtinTypes = require('./lib/builtins')
const textParsers = require('./lib/textParsers')
const binaryParsers = require('./lib/binaryParsers')
const builtinTypes = require('./lib/builtins')

@@ -9,3 +9,3 @@ exports.getTypeParser = getTypeParser

var typeParsers = {
const typeParsers = {
text: {},

@@ -37,2 +37,5 @@ binary: {}

}
if (!Number.isInteger(oid)) {
throw new TypeError('oid must be an integer: ' + oid)
}
typeParsers[format][oid] = parseFn

@@ -39,0 +42,0 @@ };

@@ -1,53 +0,37 @@

var parseInt64 = require('pg-int8')
var parseNumeric = require('pg-numeric')
const parseInt64 = require('pg-int8')
const parseNumeric = require('pg-numeric')
var parseInt16 = function (value) {
const parseInt16 = function (value) {
return value.readInt16BE(0)
}
var parseInt32 = function (value) {
const parseInt32 = function (value) {
return value.readInt32BE(0)
}
var parseFloat32 = function (value) {
const parseFloat32 = function (value) {
return value.readFloatBE(0)
}
var parseFloat64 = function (value) {
const parseFloat64 = function (value) {
return value.readDoubleBE(0)
}
var parseDate = function (isUTC, value) {
var rawValue = 0x100000000 * value.readInt32BE(0) + value.readUInt32BE(4)
const parseTimestampUTC = function (value) {
const rawValue = 0x100000000 * value.readInt32BE(0) + value.readUInt32BE(4)
// discard usecs and shift from 2000 to 1970
var result = new Date((rawValue / 1000) + 946684800000)
const result = new Date(Math.round(rawValue / 1000) + 946684800000)
if (!isUTC) {
result.setTime(result.getTime() + result.getTimezoneOffset() * 60000)
}
// add microseconds to the date
result.usec = rawValue % 1000
result.getMicroSeconds = function () {
return this.usec
}
result.setMicroSeconds = function (value) {
this.usec = value
}
result.getUTCMicroSeconds = function () {
return this.usec
}
return result
}
var parseArray = function (value) {
var dim = value.readInt32BE(0)
const parseArray = function (value) {
const dim = value.readInt32BE(0)
var elementType = value.readUInt32BE(8)
const elementType = value.readUInt32BE(8)
var offset = 12
var dims = []
for (var i = 0; i < dim; i++) {
let offset = 12
const dims = []
for (let i = 0; i < dim; i++) {
// parse dimension

@@ -61,5 +45,5 @@ dims[i] = value.readInt32BE(offset)

var parseElement = function (elementType) {
const parseElement = function (elementType) {
// parse content length
var length = value.readInt32BE(offset)
const length = value.readInt32BE(offset)
offset += 4

@@ -72,3 +56,3 @@

var result
let result
if (elementType === 0x17) {

@@ -92,8 +76,8 @@ // int

var parse = function (dimension, elementType) {
var array = []
var i
const parse = function (dimension, elementType) {
const array = []
let i
if (dimension.length > 1) {
var count = dimension.shift()
const count = dimension.shift()
for (i = 0; i < count; i++) {

@@ -115,12 +99,11 @@ array[i] = parse(dimension, elementType)

var parseText = function (value) {
const parseText = function (value) {
return value.toString('utf8')
}
var parseBool = function (value) {
if (value === null) return null
const parseBool = function (value) {
return value[0] !== 0
}
var init = function (register) {
const init = function (register) {
register(20, parseInt64)

@@ -134,4 +117,4 @@ register(21, parseInt16)

register(16, parseBool)
register(1114, parseDate.bind(null, false))
register(1184, parseDate.bind(null, true))
register(1114, parseTimestampUTC)
register(1184, parseTimestampUTC)
register(1000, parseArray)

@@ -138,0 +121,0 @@ register(1007, parseArray)

@@ -1,8 +0,8 @@

var array = require('postgres-array')
var parseDate = require('postgres-date')
var parseInterval = require('postgres-interval')
var parseByteA = require('postgres-bytea')
const array = require('postgres-array')
const parseTimestampTz = require('postgres-date')
const parseInterval = require('postgres-interval')
const parseByteA = require('postgres-bytea')
const range = require('postgres-range')
function parseBool (value) {
if (value === null) return value
return value === 'TRUE' ||

@@ -18,3 +18,2 @@ value === 't' ||

function parseBoolArray (value) {
if (!value) return null
return array.parse(value, parseBool)

@@ -28,3 +27,2 @@ }

function parseIntegerArray (value) {
if (!value) return null
return array.parse(value, parseBaseTenInt)

@@ -34,3 +32,2 @@ }

function parseBigIntegerArray (value) {
if (!value) return null
return array.parse(value, function (entry) {

@@ -41,34 +38,40 @@ return parseBigInteger(entry).trim()

var parsePointArray = function (value) {
if (!value) { return null }
const parsePointArray = function (value) {
return array.parse(value, parsePoint)
}
var parseFloatArray = function (value) {
if (!value) { return null }
const parseFloatArray = function (value) {
return array.parse(value, parseFloat)
}
var parseStringArray = function (value) {
if (!value) { return null }
const parseStringArray = function (value) {
return array.parse(value, undefined)
}
var parseDateArray = function (value) {
if (!value) { return null }
return array.parse(value, parseDate)
const parseTimestamp = function (value) {
const utc = value.endsWith(' BC')
? value.slice(0, -3) + 'Z BC'
: value + 'Z'
return parseTimestampTz(utc)
}
var parseIntervalArray = function (value) {
if (!value) { return null }
const parseTimestampArray = function (value) {
return array.parse(value, parseTimestamp)
}
const parseTimestampTzArray = function (value) {
return array.parse(value, parseTimestampTz)
}
const parseIntervalArray = function (value) {
return array.parse(value, parseInterval)
}
var parseByteAArray = function (value) {
if (!value) { return null }
const parseByteAArray = function (value) {
return array.parse(value, parseByteA)
}
var parseBigInteger = function (value) {
var valStr = String(value)
const parseBigInteger = function (value) {
const valStr = String(value)
if (/^\d+$/.test(valStr)) { return valStr }

@@ -78,8 +81,7 @@ return value

var parseJsonArray = function (value) {
if (!value) { return null }
const parseJsonArray = function (value) {
return array.parse(value, JSON.parse)
}
var parsePoint = function (value) {
const parsePoint = function (value) {
if (value[0] !== '(') { return null }

@@ -95,9 +97,9 @@

var parseCircle = function (value) {
const parseCircle = function (value) {
if (value[0] !== '<' && value[1] !== '(') { return null }
var point = '('
var radius = ''
var pointParsed = false
for (var i = 2; i < value.length - 1; i++) {
let point = '('
let radius = ''
let pointParsed = false
for (let i = 2; i < value.length - 1; i++) {
if (!pointParsed) {

@@ -120,3 +122,3 @@ point += value[i]

}
var result = parsePoint(point)
const result = parsePoint(point)
result.radius = parseFloat(radius)

@@ -127,3 +129,23 @@

var init = function (register) {
function parseInt4Range (raw) {
return range.parse(raw, parseBaseTenInt)
}
function parseNumRange (raw) {
return range.parse(raw, parseFloat)
}
function parseInt8Range (raw) {
return range.parse(raw, parseBigInteger)
}
function parseTimestampRange (raw) {
return range.parse(raw, parseTimestamp)
}
function parseTimestampTzRange (raw) {
return range.parse(raw, parseTimestampTz)
}
const init = function (register) {
register(20, parseBigInteger) // int8

@@ -136,5 +158,4 @@ register(21, parseBaseTenInt) // int2

register(16, parseBool)
register(1082, parseDate) // date
register(1114, parseDate) // timestamp without timezone
register(1184, parseDate) // timestamp
register(1114, parseTimestamp) // timestamp without time zone
register(1184, parseTimestampTz) // timestamp with time zone
register(600, parsePoint) // point

@@ -159,5 +180,5 @@ register(651, parseStringArray) // cidr[]

register(1041, parseStringArray) // inet[]
register(1115, parseDateArray) // timestamp without time zone[]
register(1182, parseDateArray) // _date
register(1185, parseDateArray) // timestamp with time zone[]
register(1115, parseTimestampArray) // timestamp without time zone[]
register(1182, parseStringArray) // date[]
register(1185, parseTimestampTzArray) // timestamp with time zone[]
register(1186, parseInterval)

@@ -170,3 +191,9 @@ register(1187, parseIntervalArray)

register(3807, parseJsonArray) // jsonb[]
register(3904, parseInt4Range) // int4range
register(3906, parseNumRange) // numrange
register(3907, parseStringArray) // numrange[]
register(3908, parseTimestampRange) // tsrange
register(3910, parseTimestampTzRange) // tstzrange
register(3912, range.parse) // daterange
register(3926, parseInt8Range) // int8range
register(2951, parseStringArray) // uuid[]

@@ -173,0 +200,0 @@ register(791, parseStringArray) // money[]

{
"name": "pg-types",
"version": "3.0.1",
"version": "4.0.0",
"description": "Query result type converters for node-postgres",

@@ -29,9 +29,10 @@ "main": "index.js",

"devDependencies": {
"codecov": "^3.5.0",
"nyc": "^14.1.1",
"open-cli": "^5.0.0",
"standard": "^14.3.1",
"@types/node": "^14.14.33",
"codecov": "^3.8.1",
"nyc": "^15.1.0",
"open-cli": "^6.0.1",
"standard": "^16.0.3",
"tap-spec": "^5.0.0",
"tape": "^4.0.0",
"tsd": "^0.9.0"
"tape": "^5.2.2",
"tsd": "^0.14.0"
},

@@ -41,6 +42,7 @@ "dependencies": {

"pg-numeric": "1.0.2",
"postgres-array": "~2.0.0",
"postgres-array": "~3.0.1",
"postgres-bytea": "~3.0.0",
"postgres-date": "~1.0.4",
"postgres-interval": "^1.1.0"
"postgres-date": "~2.0.1",
"postgres-interval": "^3.0.0",
"postgres-range": "^1.1.1"
},

@@ -53,4 +55,4 @@ "files": [

"engines": {
"node": ">=8"
"node": ">=10"
}
}

@@ -15,3 +15,3 @@ # pg-types

Let's do something I commonly like to do on projects: return 64-bit integers `(int8)` as JavaScript integers. Because JavaScript doesn't have support for 64-bit integers node-postgres cannot confidently parse `int8` data type results as numbers because if you have a _huge_ number it will overflow and the result you'd get back from node-postgres would not be the result in the database. That would be a __very bad thing__ so node-postgres just returns `int8` results as strings and leaves the parsing up to you. Let's say that you know you don't and wont ever have numbers greater than `int4` in your database, but you're tired of recieving results from the `COUNT(*)` function as strings (because that function returns `int8`). You would do this:
Let's do something I commonly like to do on projects: return 64-bit integers `(int8)` as JavaScript integers. Because JavaScript doesn't have support for 64-bit integers node-postgres cannot confidently parse `int8` data type results as numbers because if you have a _huge_ number it will overflow and the result you'd get back from node-postgres would not be the result in the database. That would be a __very bad thing__ so node-postgres just returns `int8` results as strings and leaves the parsing up to you. Let's say that you know you don't and wont ever have numbers greater than `int4` in your database, but you're tired of receiving results from the `COUNT(*)` function as strings (because that function returns `int8`). You would do this:

@@ -21,3 +21,3 @@ ```js

types.setTypeParser(20, function(val) {
return parseInt(val)
return parseInt(val, 10)
})

@@ -24,0 +24,0 @@ ```

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc