Initial commit
This commit is contained in:
4
node_modules/postgres-array/index.d.ts
generated
vendored
Normal file
4
node_modules/postgres-array/index.d.ts
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
|
||||
export function parse(source: string): string[];
|
||||
export function parse<T>(source: string, transform: (value: string) => T): T[];
|
||||
|
||||
89
node_modules/postgres-array/index.js
generated
vendored
Normal file
89
node_modules/postgres-array/index.js
generated
vendored
Normal file
@ -0,0 +1,89 @@
|
||||
'use strict'
|
||||
|
||||
exports.parse = function (source, transform) {
|
||||
return parsePostgresArray(source, transform)
|
||||
}
|
||||
|
||||
function parsePostgresArray (source, transform, nested = false) {
|
||||
let character = ''
|
||||
let quote = false
|
||||
let position = 0
|
||||
let dimension = 0
|
||||
const entries = []
|
||||
let recorded = ''
|
||||
|
||||
const newEntry = function (includeEmpty) {
|
||||
let entry = recorded
|
||||
|
||||
if (entry.length > 0 || includeEmpty) {
|
||||
if (entry === 'NULL' && !includeEmpty) {
|
||||
entry = null
|
||||
}
|
||||
|
||||
if (entry !== null && transform) {
|
||||
entry = transform(entry)
|
||||
}
|
||||
|
||||
entries.push(entry)
|
||||
recorded = ''
|
||||
}
|
||||
}
|
||||
|
||||
if (source[0] === '[') {
|
||||
while (position < source.length) {
|
||||
const char = source[position++]
|
||||
|
||||
if (char === '=') { break }
|
||||
}
|
||||
}
|
||||
|
||||
while (position < source.length) {
|
||||
let escaped = false
|
||||
character = source[position++]
|
||||
|
||||
if (character === '\\') {
|
||||
character = source[position++]
|
||||
escaped = true
|
||||
}
|
||||
|
||||
if (character === '{' && !quote) {
|
||||
dimension++
|
||||
|
||||
if (dimension > 1) {
|
||||
const parser = parsePostgresArray(source.substr(position - 1), transform, true)
|
||||
|
||||
entries.push(parser.entries)
|
||||
position += parser.position - 2
|
||||
}
|
||||
} else if (character === '}' && !quote) {
|
||||
dimension--
|
||||
|
||||
if (!dimension) {
|
||||
newEntry()
|
||||
|
||||
if (nested) {
|
||||
return {
|
||||
entries,
|
||||
position
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (character === '"' && !escaped) {
|
||||
if (quote) {
|
||||
newEntry(true)
|
||||
}
|
||||
|
||||
quote = !quote
|
||||
} else if (character === ',' && !quote) {
|
||||
newEntry()
|
||||
} else {
|
||||
recorded += character
|
||||
}
|
||||
}
|
||||
|
||||
if (dimension !== 0) {
|
||||
throw new Error('array dimension not balanced')
|
||||
}
|
||||
|
||||
return entries
|
||||
}
|
||||
21
node_modules/postgres-array/license
generated
vendored
Normal file
21
node_modules/postgres-array/license
generated
vendored
Normal file
@ -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.
|
||||
35
node_modules/postgres-array/package.json
generated
vendored
Normal file
35
node_modules/postgres-array/package.json
generated
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "postgres-array",
|
||||
"main": "index.js",
|
||||
"version": "3.0.2",
|
||||
"description": "Parse postgres array columns",
|
||||
"license": "MIT",
|
||||
"repository": "bendrucker/postgres-array",
|
||||
"author": {
|
||||
"name": "Ben Drucker",
|
||||
"email": "bvdrucker@gmail.com",
|
||||
"url": "bendrucker.me"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "standard && tape test.js"
|
||||
},
|
||||
"types": "index.d.ts",
|
||||
"keywords": [
|
||||
"postgres",
|
||||
"array",
|
||||
"parser"
|
||||
],
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"standard": "^17.0.0",
|
||||
"tape": "^5.0.0"
|
||||
},
|
||||
"files": [
|
||||
"index.js",
|
||||
"index.d.ts",
|
||||
"readme.md"
|
||||
]
|
||||
}
|
||||
43
node_modules/postgres-array/readme.md
generated
vendored
Normal file
43
node_modules/postgres-array/readme.md
generated
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
# postgres-array [](https://github.com/bendrucker/postgres-array/actions?query=workflow%3Atests)
|
||||
|
||||
> Parse postgres array columns
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```
|
||||
npm install --save postgres-array
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
const { parse } = require('postgres-array')
|
||||
|
||||
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)
|
||||
Reference in New Issue
Block a user