Index: node_modules/postgres-array/index.d.ts
===================================================================
--- node_modules/postgres-array/index.d.ts	(revision 62b296460f935ff5cc47a75f6567f97df5a244a7)
+++ node_modules/postgres-array/index.d.ts	(revision 62b296460f935ff5cc47a75f6567f97df5a244a7)
@@ -0,0 +1,4 @@
+
+export function parse(source: string): string[];
+export function parse<T>(source: string, transform: (value: string) => T): T[];
+
Index: node_modules/postgres-array/index.js
===================================================================
--- node_modules/postgres-array/index.js	(revision 62b296460f935ff5cc47a75f6567f97df5a244a7)
+++ node_modules/postgres-array/index.js	(revision 62b296460f935ff5cc47a75f6567f97df5a244a7)
@@ -0,0 +1,97 @@
+'use strict'
+
+exports.parse = function (source, transform) {
+  return new ArrayParser(source, transform).parse()
+}
+
+class ArrayParser {
+  constructor (source, transform) {
+    this.source = source
+    this.transform = transform || identity
+    this.position = 0
+    this.entries = []
+    this.recorded = []
+    this.dimension = 0
+  }
+
+  isEof () {
+    return this.position >= this.source.length
+  }
+
+  nextCharacter () {
+    var character = this.source[this.position++]
+    if (character === '\\') {
+      return {
+        value: this.source[this.position++],
+        escaped: true
+      }
+    }
+    return {
+      value: character,
+      escaped: false
+    }
+  }
+
+  record (character) {
+    this.recorded.push(character)
+  }
+
+  newEntry (includeEmpty) {
+    var entry
+    if (this.recorded.length > 0 || includeEmpty) {
+      entry = this.recorded.join('')
+      if (entry === 'NULL' && !includeEmpty) {
+        entry = null
+      }
+      if (entry !== null) entry = this.transform(entry)
+      this.entries.push(entry)
+      this.recorded = []
+    }
+  }
+
+  consumeDimensions () {
+    if (this.source[0] === '[') {
+      while (!this.isEof()) {
+        var char = this.nextCharacter()
+        if (char.value === '=') break
+      }
+    }
+  }
+
+  parse (nested) {
+    var character, parser, quote
+    this.consumeDimensions()
+    while (!this.isEof()) {
+      character = this.nextCharacter()
+      if (character.value === '{' && !quote) {
+        this.dimension++
+        if (this.dimension > 1) {
+          parser = new ArrayParser(this.source.substr(this.position - 1), this.transform)
+          this.entries.push(parser.parse(true))
+          this.position += parser.position - 2
+        }
+      } else if (character.value === '}' && !quote) {
+        this.dimension--
+        if (!this.dimension) {
+          this.newEntry()
+          if (nested) return this.entries
+        }
+      } else if (character.value === '"' && !character.escaped) {
+        if (quote) this.newEntry(true)
+        quote = !quote
+      } else if (character.value === ',' && !quote) {
+        this.newEntry()
+      } else {
+        this.record(character.value)
+      }
+    }
+    if (this.dimension !== 0) {
+      throw new Error('array dimension not balanced')
+    }
+    return this.entries
+  }
+}
+
+function identity (value) {
+  return value
+}
Index: node_modules/postgres-array/license
===================================================================
--- node_modules/postgres-array/license	(revision 62b296460f935ff5cc47a75f6567f97df5a244a7)
+++ node_modules/postgres-array/license	(revision 62b296460f935ff5cc47a75f6567f97df5a244a7)
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Ben Drucker <bvdrucker@gmail.com> (bendrucker.me)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
Index: node_modules/postgres-array/package.json
===================================================================
--- node_modules/postgres-array/package.json	(revision 62b296460f935ff5cc47a75f6567f97df5a244a7)
+++ node_modules/postgres-array/package.json	(revision 62b296460f935ff5cc47a75f6567f97df5a244a7)
@@ -0,0 +1,35 @@
+{
+  "name": "postgres-array",
+  "main": "index.js",
+  "version": "2.0.0",
+  "description": "Parse postgres array columns",
+  "license": "MIT",
+  "repository": "bendrucker/postgres-array",
+  "author": {
+    "name": "Ben Drucker",
+    "email": "bvdrucker@gmail.com",
+    "url": "bendrucker.me"
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "scripts": {
+    "test": "standard && tape test.js"
+  },
+  "types": "index.d.ts",
+  "keywords": [
+    "postgres",
+    "array",
+    "parser"
+  ],
+  "dependencies": {},
+  "devDependencies": {
+    "standard": "^12.0.1",
+    "tape": "^4.0.0"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts",
+    "readme.md"
+  ]
+}
Index: node_modules/postgres-array/readme.md
===================================================================
--- node_modules/postgres-array/readme.md	(revision 62b296460f935ff5cc47a75f6567f97df5a244a7)
+++ node_modules/postgres-array/readme.md	(revision 62b296460f935ff5cc47a75f6567f97df5a244a7)
@@ -0,0 +1,43 @@
+# postgres-array [![Build Status](https://travis-ci.org/bendrucker/postgres-array.svg?branch=master)](https://travis-ci.org/bendrucker/postgres-array)
+
+> Parse postgres array columns
+
+
+## Install
+
+```
+$ npm install --save postgres-array
+```
+
+
+## Usage
+
+```js
+var postgresArray = require('postgres-array')
+
+postgresArray.parse('{1,2,3}', (value) => parseInt(value, 10))
+//=> [1, 2, 3]
+```
+
+## API
+
+#### `parse(input, [transform])` -> `array`
+
+##### input
+
+*Required*  
+Type: `string`
+
+A Postgres array string.
+
+##### transform
+
+Type: `function`  
+Default: `identity`
+
+A function that transforms non-null values inserted into the array.
+
+
+## License
+
+MIT © [Ben Drucker](http://bendrucker.me)
