Skip to content

Instantly share code, notes, and snippets.

@Vunovati Vunovati/.gitignore
Last active Feb 21, 2020

Embed
What would you like to do?
Blog post - jsonl streams
node_modules
v12.14.0
{
"trailingComma": "es5",
"tabWidth": 2,
"semi": false,
"singleQuote": true,
"printWidth": 80
}

convert jsonl to json

cat 10000-users.jsonl | jq --slurp > 10000-users.json

start a database

docker run --rm --name jsonl-demo-postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres

create a table to store the test data in

docker exec -it jsonl-demo-postgres psql -d postgres://postgres:postgres@localhost:5432/postgres -c 'create table users (user_id serial PRIMARY KEY, name varchar(255), email varchar(255));'

create test json lines file containing 30000 users

for run in {1..30000}; do (cat user.json >> 30000-users.jsonl); done

make a request towards the service

curl -X POST --data-binary @3000-users.jsonl http://localhost:8000

run the service

DB_URI=postgres://postgres:postgres@localhost:5432/postgres node naive.js
const os = require('os')
const { Transform } = require('stream')
class AppendComma extends Transform {
constructor(options) {
super(options)
this._firstChunkInserted = false
}
_transform(chunk, _encoding, callback) {
if (!this._firstChunkInserted) {
this._firstChunkInserted = true
callback(null, `${chunk}`)
} else {
callback(null, `, ${os.EOL}${chunk}`)
}
}
}
module.exports = {
AppendComma,
}
const os = require('os')
const { Transform } = require('stream')
const { StringDecoder } = require('string_decoder')
class ChunksToLine extends Transform {
constructor(options) {
super(options)
this.buffer = ''
// The stream contains Buffer chunks.
// We can use the decoder to convert
// them to strings.
this._decoder = new StringDecoder('utf-8')
}
_transform(chunk, encoding, callback) {
// Convert the Buffer chunks to String.
if (encoding === 'buffer') {
chunk = this._decoder.write(chunk)
}
// has all the chunks before the newline
this.buffer = this.buffer + chunk
const lines = this.buffer.split(os.EOL)
if (lines.length > 0) {
// the last element could be incomplete
// as we don't know if it ends with a
// newline so we put it in the buffer
this.buffer = lines.pop()
try {
// forward the remaining lines to
// the stream
lines.forEach(line => {
this.push(line)
})
callback()
} catch (e) {
callback()
}
} else {
callback()
}
}
}
module.exports = {
ChunksToLine,
}
const http = require('http')
const server = http.createServer((_req, res) => {
setTimeout(() => {
res.end()
}, 1000)
})
server.listen(8000)
const { Transform } = require('stream')
class ExtractValue extends Transform {
constructor(options) {
super(options)
this.valueToExtract = options.valueToExtract
}
_transform(chunk, _encoding, callback) {
const parsed = JSON.parse(chunk)
const extracted = parsed[`${this.valueToExtract}`]
callback(null, JSON.stringify(extracted))
}
}
module.exports = {
ExtractValue,
}
const fs = require('fs')
const path = require('path')
const os = require('os')
const split2 = require('split2')
const { Transform, pipeline } = require('stream')
const { StringDecoder } = require('string_decoder')
const server = require('http').createServer()
class LineToJson extends Transform {
constructor(options) {
super(options)
this.buffer = ''
// The stream will have Buffer chunks. The
// decoder converts these to String instances.
this._decoder = new StringDecoder('utf-8')
}
_transform(chunk, encoding, callback) {
// Convert the Buffer chunks to String.
if (encoding === 'buffer') {
chunk = this._decoder.write(chunk)
}
// Exit on CTRL + C.
if (chunk === '\u0003') {
process.exit()
}
this.buffer = this.buffer + chunk
const lines = this.buffer.split(os.EOL)
if (lines.length > 1) {
this.buffer = lines.pop()
try {
lines.forEach(line => {
this.push(line)
})
callback()
} catch (e) {
callback()
}
} else if ((lines.length = 1)) {
this.buffer = ''
this.push(lines[0]) // this.push called when more than 1 response from one chunk needed
callback()
} else {
callback()
}
}
}
class ExtractValue extends Transform {
constructor(options) {
super(options)
this.valueToExtract = options.valueToExtract
// The stream will have Buffer chunks. The
// decoder converts these to String instances.
this._decoder = new StringDecoder('utf-8')
}
_transform(chunk, encoding, callback) {
// Convert the Buffer chunks to String.
if (encoding === 'buffer') {
chunk = this._decoder.write(chunk)
}
// Exit on CTRL + C.
if (chunk === '\u0003') {
process.exit()
}
const parsed = JSON.parse(chunk)
const extracted = parsed[`${this.valueToExtract}`]
//console.log(extracted);
callback(null, JSON.stringify(extracted))
}
}
class AppendComma extends Transform {
constructor(options) {
super(options)
// The stream will have Buffer chunks. The
// decoder converts these to String instances.
this._decoder = new StringDecoder('utf-8')
this._firstChunkInserted = false
}
_transform(chunk, encoding, callback) {
// Convert the Buffer chunks to String.
if (encoding === 'buffer') {
chunk = this._decoder.write(chunk)
}
// Exit on CTRL + C.
if (chunk === '\u0003') {
process.exit()
}
//console.log(extracted);
if (!this._firstChunkInserted) {
this._firstChunkInserted = true
callback(null, `${chunk}`)
} else {
callback(null, `, ${os.EOL}${chunk}`)
}
}
}
server.on('request', (req, res) => {
const dest = fs.createWriteStream(
path.join(__dirname, '..', '..', '..', 'Desktop', 'result.json')
)
dest.write('[', 'utf8')
req.on('end', () => {
dest.write(']', 'utf8')
dest.close()
res.end()
})
pipeline(
req,
//split2(), // 17s
new LineToJson(), // 16s
new ExtractValue({ valueToExtract: 'id' }),
new AppendComma(),
dest,
err => (err ? console.error(err) : console.log(`Pipeline success`))
)
})
console.log(`PID is ${process.pid}`)
server.listen(8000)
const express = require('express')
const bodyParser = require('body-parser')
const { getConnection } = require('./save-to-db')
const app = express()
app.use(bodyParser.json({ limit: '10gb' }))
app.post('/', async (req, res) => {
const dbConnection = getConnection()
const parsed = req.body
users = Array.isArray(parsed) ? parsed : [parsed]
await dbConnection.startTransaction()
await Promise.all(users.map(dbConnection.insertUser))
res.end()
dbConnection.endTransaction()
})
app.listen(8000)
const http = require('http')
const { getConnection } = require('./save-to-db')
console.log(`PID: ${process.pid}`)
const server = http.createServer((req, res) => {
const dbConnection = getConnection()
const data = []
req.on('data', chunk => {
data.push(chunk)
})
req.on('end', async () => {
const parsed = JSON.parse(data)
users = Array.isArray(parsed) ? parsed : [parsed]
await dbConnection.startTransaction()
await Promise.all(users.map(dbConnection.insertUser))
res.end()
dbConnection.endTransaction()
})
})
server.listen(8000)
{
"name": "jsonlines-stream",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
},
"accepts": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
"integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
"requires": {
"mime-types": "~2.1.24",
"negotiator": "0.6.2"
}
},
"after": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
"integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8="
},
"agent-base": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz",
"integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g=="
},
"ajv": {
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz",
"integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==",
"requires": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"appmetrics": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/appmetrics/-/appmetrics-5.1.1.tgz",
"integrity": "sha512-6TkvudkSpJ8VC60U//tNgYQv7+Qc2/RJBGPUcIoRVob6ALot3LqcANpwsDryZBaXKM2Ay7xPtDx+afHkihhZGw==",
"requires": {
"ibmapm-embed": ">=19.9.0",
"jszip": "2.5.x",
"nan": "2.x",
"node-gyp": "5.x",
"semver": "^5.3.0",
"tar": "4.x"
},
"dependencies": {
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
}
}
},
"appmetrics-dash": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/appmetrics-dash/-/appmetrics-dash-5.3.0.tgz",
"integrity": "sha512-vc04tJyM1LLok4wkV7Vi2Ez7p2XBpWOENAot/yujTUFRzU60VONy/Kh8Lh2s6oHPI0LPz85o69c2uyyCAGyaRA==",
"requires": {
"appmetrics": "^5.0.0",
"debug": "^2.6.0",
"express": "^4.14.1",
"node-report": "^2.1.0",
"socket.io": "^2.0.3"
}
},
"aproba": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
},
"are-we-there-yet": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
"integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
"requires": {
"delegates": "^1.0.0",
"readable-stream": "^2.0.6"
},
"dependencies": {
"readable-stream": {
"version": "2.3.7",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
"integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"requires": {
"sprintf-js": "~1.0.2"
}
},
"array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
},
"arraybuffer.slice": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
"integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog=="
},
"asn1": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
"requires": {
"safer-buffer": "~2.1.0"
}
},
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
},
"async": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
"integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
"requires": {
"lodash": "^4.17.14"
}
},
"async-limiter": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
"integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
},
"async-listener": {
"version": "0.6.10",
"resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz",
"integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==",
"requires": {
"semver": "^5.3.0",
"shimmer": "^1.1.0"
},
"dependencies": {
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
}
}
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
},
"aws4": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
"integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug=="
},
"backo2": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
"integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
"base64-arraybuffer": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
"integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg="
},
"base64-js": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
"integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
},
"base64id": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
"integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog=="
},
"bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"requires": {
"tweetnacl": "^0.14.3"
}
},
"better-assert": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
"integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
"requires": {
"callsite": "1.0.0"
}
},
"blob": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
"integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig=="
},
"body-parser": {
"version": "1.19.0",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
"integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
"requires": {
"bytes": "3.1.0",
"content-type": "~1.0.4",
"debug": "2.6.9",
"depd": "~1.1.2",
"http-errors": "1.7.2",
"iconv-lite": "0.4.24",
"on-finished": "~2.3.0",
"qs": "6.7.0",
"raw-body": "2.4.0",
"type-is": "~1.6.17"
}
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"buffer-writer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz",
"integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw=="
},
"bytes": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
},
"callsite": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
"integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA="
},
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"chownr": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
},
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
},
"combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"requires": {
"delayed-stream": "~1.0.0"
}
},
"component-bind": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
"integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E="
},
"component-emitter": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
"integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
},
"component-inherit": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
"integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM="
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"console-control-strings": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
},
"content-disposition": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
"integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
"requires": {
"safe-buffer": "5.1.2"
},
"dependencies": {
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
}
}
},
"content-type": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
},
"continuation-local-storage": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz",
"integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==",
"requires": {
"async-listener": "^0.6.0",
"emitter-listener": "^1.1.1"
}
},
"cookie": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
"integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
},
"cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"requires": {
"assert-plus": "^1.0.0"
}
},
"date-format": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz",
"integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA=="
},
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"define-properties": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
"requires": {
"object-keys": "^1.0.12"
}
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
"delegates": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
"integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
},
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
},
"destroy": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
},
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"requires": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
}
},
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"emitter-listener": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz",
"integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==",
"requires": {
"shimmer": "^1.2.0"
}
},
"encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
},
"encoding": {
"version": "0.1.12",
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
"integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
"requires": {
"iconv-lite": "~0.4.13"
}
},
"engine.io": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.0.tgz",
"integrity": "sha512-XCyYVWzcHnK5cMz7G4VTu2W7zJS7SM1QkcelghyIk/FmobWBtXE7fwhBusEKvCSqc3bMh8fNFMlUkCKTFRxH2w==",
"requires": {
"accepts": "~1.3.4",
"base64id": "2.0.0",
"cookie": "0.3.1",
"debug": "~4.1.0",
"engine.io-parser": "~2.2.0",
"ws": "^7.1.2"
},
"dependencies": {
"cookie": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
"integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
},
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"engine.io-client": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.0.tgz",
"integrity": "sha512-a4J5QO2k99CM2a0b12IznnyQndoEvtA4UAldhGzKqnHf42I3Qs2W5SPnDvatZRcMaNZs4IevVicBPayxYt6FwA==",
"requires": {
"component-emitter": "1.2.1",
"component-inherit": "0.0.3",
"debug": "~4.1.0",
"engine.io-parser": "~2.2.0",
"has-cors": "1.1.0",
"indexof": "0.0.1",
"parseqs": "0.0.5",
"parseuri": "0.0.5",
"ws": "~6.1.0",
"xmlhttprequest-ssl": "~1.5.4",
"yeast": "0.1.2"
},
"dependencies": {
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"ws": {
"version": "6.1.4",
"resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz",
"integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==",
"requires": {
"async-limiter": "~1.0.0"
}
}
}
},
"engine.io-parser": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz",
"integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==",
"requires": {
"after": "0.8.2",
"arraybuffer.slice": "~0.0.7",
"base64-arraybuffer": "0.1.5",
"blob": "0.0.5",
"has-binary2": "~1.0.2"
}
},
"env-paths": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz",
"integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA=="
},
"es-abstract": {
"version": "1.17.4",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz",
"integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==",
"requires": {
"es-to-primitive": "^1.2.1",
"function-bind": "^1.1.1",
"has": "^1.0.3",
"has-symbols": "^1.0.1",
"is-callable": "^1.1.5",
"is-regex": "^1.0.5",
"object-inspect": "^1.7.0",
"object-keys": "^1.1.1",
"object.assign": "^4.1.0",
"string.prototype.trimleft": "^2.1.1",
"string.prototype.trimright": "^2.1.1"
}
},
"es-to-primitive": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
"integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
"requires": {
"is-callable": "^1.1.4",
"is-date-object": "^1.0.1",
"is-symbol": "^1.0.2"
}
},
"escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
},
"esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
"etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
},
"express": {
"version": "4.17.1",
"resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
"integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
"requires": {
"accepts": "~1.3.7",
"array-flatten": "1.1.1",
"body-parser": "1.19.0",
"content-disposition": "0.5.3",
"content-type": "~1.0.4",
"cookie": "0.4.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "~1.1.2",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"finalhandler": "~1.1.2",
"fresh": "0.5.2",
"merge-descriptors": "1.0.1",
"methods": "~1.1.2",
"on-finished": "~2.3.0",
"parseurl": "~1.3.3",
"path-to-regexp": "0.1.7",
"proxy-addr": "~2.0.5",
"qs": "6.7.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.1.2",
"send": "0.17.1",
"serve-static": "1.14.1",
"setprototypeof": "1.1.1",
"statuses": "~1.5.0",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
},
"dependencies": {
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
}
}
},
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
},
"fast-deep-equal": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
"integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA=="
},
"fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
},
"finalhandler": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
"integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
"requires": {
"debug": "2.6.9",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"on-finished": "~2.3.0",
"parseurl": "~1.3.3",
"statuses": "~1.5.0",
"unpipe": "~1.0.0"
}
},
"flatted": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
"integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg=="
},
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
},
"form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
}
},
"forwarded": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
"integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
},
"fresh": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
},
"fs-extra": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
"integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
"requires": {
"graceful-fs": "^4.1.2",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
}
},
"fs-minipass": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
"integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
"requires": {
"minipass": "^2.6.0"
}
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"gauge": {
"version": "2.7.4",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
"requires": {
"aproba": "^1.0.3",
"console-control-strings": "^1.0.0",
"has-unicode": "^2.0.0",
"object-assign": "^4.1.0",
"signal-exit": "^3.0.0",
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1",
"wide-align": "^1.1.0"
}
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"requires": {
"assert-plus": "^1.0.0"
}
},
"glob": {
"version": "7.1.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
},
"har-validator": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
"requires": {
"ajv": "^6.5.5",
"har-schema": "^2.0.0"
}
},
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"requires": {
"function-bind": "^1.1.1"
}
},
"has-binary2": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
"integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
"requires": {
"isarray": "2.0.1"
},
"dependencies": {
"isarray": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
"integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
}
}
},
"has-cors": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
"integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
},
"has-symbols": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
"integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg=="
},
"has-unicode": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
"integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
},
"http-errors": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
"integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
"requires": {
"depd": "~1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.1",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.0"
},
"dependencies": {
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
}
}
},
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"requires": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
"sshpk": "^1.7.0"
}
},
"https-proxy-agent": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz",
"integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==",
"requires": {
"agent-base": "5",
"debug": "4"
},
"dependencies": {
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"ibmapm-embed": {
"version": "19.12.1",
"resolved": "https://registry.npmjs.org/ibmapm-embed/-/ibmapm-embed-19.12.1.tgz",
"integrity": "sha512-zrkEKpe6sDc2bt2MqUgoWr9kvR9YMxBHQaUv21m4yKbUcUtkJ87G9UjoYj7WmyNNJDnVH/hCB+VuFLtnc2f6+A==",
"requires": {
"ibmapm-restclient": "^19.12.0",
"log4js": "^4.5.1",
"properties": "^1.2.1",
"properties-reader": "0.0.16",
"tcp-ping": "^0.1.1",
"uuid": "^2.0.2",
"zipkin": "0.10.1",
"zipkin-context-cls": "0.6.1",
"zipkin-transport-http": "0.10.1"
},
"dependencies": {
"uuid": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
"integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho="
}
}
},
"ibmapm-restclient": {
"version": "19.12.2",
"resolved": "https://registry.npmjs.org/ibmapm-restclient/-/ibmapm-restclient-19.12.2.tgz",
"integrity": "sha512-ClEbG6AC4Pw7WM0gr0sH5mVWFzFsxl2fUVbPtaP4hBfOhNtPbPhJ0n1KKFixIRLx5J2Z04qpw2u45akcdrzyIQ==",
"requires": {
"https-proxy-agent": "^4.0.0",
"kubernetes-client": "^3.16.0",
"log4js": "^4.5.1",
"properties": "^1.2.1",
"request": "^2.72.0",
"uuid": "^2.0.2"
},
"dependencies": {
"uuid": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
"integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho="
}
}
},
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
},
"indexof": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
"integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"ipaddr.js": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
"integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
},
"is-callable": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
"integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q=="
},
"is-date-object": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
"integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g=="
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"requires": {
"number-is-nan": "^1.0.0"
}
},
"is-regex": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
"integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
"requires": {
"has": "^1.0.3"
}
},
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
},
"is-symbol": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
"integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
"requires": {
"has-symbols": "^1.0.1"
}
},
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
},
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
},
"js-yaml": {
"version": "3.13.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
"integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
"requires": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
}
},
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
},
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
"jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
"requires": {
"graceful-fs": "^4.1.6"
}
},
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
"requires": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
"json-schema": "0.2.3",
"verror": "1.10.0"
}
},
"jszip": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-2.5.0.tgz",
"integrity": "sha1-dET9hVHd8+XacZj+oMkbyDCMwnQ=",
"requires": {
"pako": "~0.2.5"
}
},
"kubernetes-client": {
"version": "3.18.1",
"resolved": "https://registry.npmjs.org/kubernetes-client/-/kubernetes-client-3.18.1.tgz",
"integrity": "sha512-6sS9osVL8RvzAwblnAeWc8gdeD0WQ2g9NytscCV7i5H3rJ4ptCXZW1xOMFbMRkW3zMUS4Elg/Z0f+0hUqSiqMw==",
"requires": {
"async": "^2.6.0",
"js-yaml": "^3.10.0",
"lodash.merge": "^4.6.0",
"request": "^2.83.0",
"util.promisify": "^1.0.0"
}
},
"lodash": {
"version": "4.17.15",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
},
"lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
},
"log4js": {
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz",
"integrity": "sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==",
"requires": {
"date-format": "^2.0.0",
"debug": "^4.1.1",
"flatted": "^2.0.0",
"rfdc": "^1.1.4",
"streamroller": "^1.0.6"
},
"dependencies": {
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
},
"merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
},
"methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
},
"mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
},
"mime-db": {
"version": "1.43.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
"integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ=="
},
"mime-types": {
"version": "2.1.26",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
"integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
"requires": {
"mime-db": "1.43.0"
}
},
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
},
"minipass": {
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
"integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
}
},
"minizlib": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
"integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
"requires": {
"minipass": "^2.9.0"
}
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"requires": {
"minimist": "0.0.8"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"nan": {
"version": "2.14.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
"integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg=="
},
"negotiator": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
},
"network-address": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/network-address/-/network-address-1.1.2.tgz",
"integrity": "sha1-Sqe/1D8D8LgclwKxPWqFjdsybz4="
},
"node-fetch": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
"integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
"requires": {
"encoding": "^0.1.11",
"is-stream": "^1.0.1"
}
},
"node-gyp": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.0.tgz",
"integrity": "sha512-OUTryc5bt/P8zVgNUmC6xdXiDJxLMAW8cF5tLQOT9E5sOQj+UeQxnnPy74K3CLCa/SOjjBlbuzDLR8ANwA+wmw==",
"requires": {
"env-paths": "^2.2.0",
"glob": "^7.1.4",
"graceful-fs": "^4.2.2",
"mkdirp": "^0.5.1",
"nopt": "^4.0.1",
"npmlog": "^4.1.2",
"request": "^2.88.0",
"rimraf": "^2.6.3",
"semver": "^5.7.1",
"tar": "^4.4.12",
"which": "^1.3.1"
},
"dependencies": {
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
}
}
},
"node-report": {
"version": "2.2.10",
"resolved": "https://registry.npmjs.org/node-report/-/node-report-2.2.10.tgz",
"integrity": "sha512-KANqX94qnO5MpomgNBF/r1+0OFVihwf2Ti4gu5nXne07EDtBI1Cv0xMpT29VWiUD7aJe8YtuVPP2PKapo8h2qw==",
"optional": true,
"requires": {
"nan": "^2.12.1"
}
},
"nopt": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
"integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
"requires": {
"abbrev": "1",
"osenv": "^0.1.4"
}
},
"npmlog": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
"integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
"requires": {
"are-we-there-yet": "~1.1.2",
"console-control-strings": "~1.1.0",
"gauge": "~2.7.3",
"set-blocking": "~2.0.0"
}
},
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
},
"oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
"object-component": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
"integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE="
},
"object-inspect": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
"integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw=="
},
"object-keys": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
},
"object.assign": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
"integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
"requires": {
"define-properties": "^1.1.2",
"function-bind": "^1.1.1",
"has-symbols": "^1.0.0",
"object-keys": "^1.0.11"
}
},
"object.getownpropertydescriptors": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz",
"integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==",
"requires": {
"define-properties": "^1.1.3",
"es-abstract": "^1.17.0-next.1"
}
},
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
"requires": {
"ee-first": "1.1.1"
}
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
"wrappy": "1"
}
},
"os-homedir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
},
"os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
},
"osenv": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
"integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
"requires": {
"os-homedir": "^1.0.0",
"os-tmpdir": "^1.0.0"
}
},
"packet-reader": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz",
"integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ=="
},
"pako": {
"version": "0.2.9",
"resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
"integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU="
},
"parseqs": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
"integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
"requires": {
"better-assert": "~1.0.0"
}
},
"parseuri": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
"integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
"requires": {
"better-assert": "~1.0.0"
}
},
"parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
"path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
},
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"pg": {
"version": "7.18.1",
"resolved": "https://registry.npmjs.org/pg/-/pg-7.18.1.tgz",
"integrity": "sha512-1KtKBKg/zWrjEEv//klBbVOPGucuc7HHeJf6OEMueVcUeyF3yueHf+DvhVwBjIAe9/97RAydO/lWjkcMwssuEw==",
"requires": {
"buffer-writer": "2.0.0",
"packet-reader": "1.0.0",
"pg-connection-string": "0.1.3",
"pg-packet-stream": "^1.1.0",
"pg-pool": "^2.0.10",
"pg-types": "^2.1.0",
"pgpass": "1.x",
"semver": "4.3.2"
}
},
"pg-connection-string": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz",
"integrity": "sha1-2hhHsglA5C7hSSvq9l1J2RskXfc="
},
"pg-int8": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
"integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="
},
"pg-packet-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/pg-packet-stream/-/pg-packet-stream-1.1.0.tgz",
"integrity": "sha512-kRBH0tDIW/8lfnnOyTwKD23ygJ/kexQVXZs7gEyBljw4FYqimZFxnMMx50ndZ8In77QgfGuItS5LLclC2TtjYg=="
},
"pg-pool": {
"version": "2.0.10",
"resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-2.0.10.tgz",
"integrity": "sha512-qdwzY92bHf3nwzIUcj+zJ0Qo5lpG/YxchahxIN8+ZVmXqkahKXsnl2aiJPHLYN9o5mB/leG+Xh6XKxtP7e0sjg=="
},
"pg-types": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
"integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
"requires": {
"pg-int8": "1.0.1",
"postgres-array": "~2.0.0",
"postgres-bytea": "~1.0.0",
"postgres-date": "~1.0.4",
"postgres-interval": "^1.1.0"
}
},
"pgpass": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz",
"integrity": "sha1-Knu0G2BltnkH6R2hsHwYR8h3swY=",
"requires": {
"split": "^1.0.0"
}
},
"postgres-array": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
"integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="
},
"postgres-bytea": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz",
"integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU="
},
"postgres-date": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.4.tgz",
"integrity": "sha512-bESRvKVuTrjoBluEcpv2346+6kgB7UlnqWZsnbnCccTNq/pqfj1j6oBaN5+b/NrDXepYUT/HKadqv3iS9lJuVA=="
},
"postgres-interval": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
"integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
"requires": {
"xtend": "^4.0.0"
}
},
"process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
},
"properties": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/properties/-/properties-1.2.1.tgz",
"integrity": "sha1-Dul6f8AgsaKlW4ZZ7aSqjYaQlL0="
},
"properties-reader": {
"version": "0.0.16",
"resolved": "https://registry.npmjs.org/properties-reader/-/properties-reader-0.0.16.tgz",
"integrity": "sha1-oswNuc3XuB2XfQpZwdwQxtHWq5g=",
"requires": {
"mkdirp": "~0.5.1"
}
},
"proxy-addr": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
"integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
"requires": {
"forwarded": "~0.1.2",
"ipaddr.js": "1.9.0"
}
},
"psl": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz",
"integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ=="
},
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
},
"qs": {
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
"integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
},
"range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
},
"raw-body": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
"integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
"requires": {
"bytes": "3.1.0",
"http-errors": "1.7.2",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
}
},
"request": {
"version": "2.88.2",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
"integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
"requires": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
"caseless": "~0.12.0",
"combined-stream": "~1.0.6",
"extend": "~3.0.2",
"forever-agent": "~0.6.1",
"form-data": "~2.3.2",
"har-validator": "~5.1.3",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"oauth-sign": "~0.9.0",
"performance-now": "^2.1.0",
"qs": "~6.5.2",
"safe-buffer": "^5.1.2",
"tough-cookie": "~2.5.0",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
},
"dependencies": {
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
},
"uuid": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
}
}
},
"rfdc": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz",
"integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug=="
},
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"requires": {
"glob": "^7.1.3"
}
},
"safe-buffer": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"semver": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz",
"integrity": "sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c="
},
"send": {
"version": "0.17.1",
"resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
"integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
"requires": {
"debug": "2.6.9",
"depd": "~1.1.2",
"destroy": "~1.0.4",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"fresh": "0.5.2",
"http-errors": "~1.7.2",
"mime": "1.6.0",
"ms": "2.1.1",
"on-finished": "~2.3.0",
"range-parser": "~1.2.1",
"statuses": "~1.5.0"
},
"dependencies": {
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
}
}
},
"serve-static": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
"integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
"requires": {
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
"send": "0.17.1"
}
},
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
},
"setprototypeof": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
},
"shimmer": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz",
"integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw=="
},
"signal-exit": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
},
"socket.io": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz",
"integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==",
"requires": {
"debug": "~4.1.0",
"engine.io": "~3.4.0",
"has-binary2": "~1.0.2",
"socket.io-adapter": "~1.1.0",
"socket.io-client": "2.3.0",
"socket.io-parser": "~3.4.0"
},
"dependencies": {
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"socket.io-adapter": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz",
"integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g=="
},
"socket.io-client": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz",
"integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==",
"requires": {
"backo2": "1.0.2",
"base64-arraybuffer": "0.1.5",
"component-bind": "1.0.0",
"component-emitter": "1.2.1",
"debug": "~4.1.0",
"engine.io-client": "~3.4.0",
"has-binary2": "~1.0.2",
"has-cors": "1.1.0",
"indexof": "0.0.1",
"object-component": "0.0.3",
"parseqs": "0.0.5",
"parseuri": "0.0.5",
"socket.io-parser": "~3.3.0",
"to-array": "0.1.4"
},
"dependencies": {
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"requires": {
"ms": "^2.1.1"
}
},
"isarray": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
"integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"socket.io-parser": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz",
"integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==",
"requires": {
"component-emitter": "1.2.1",
"debug": "~3.1.0",
"isarray": "2.0.1"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
}
}
},
"socket.io-parser": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.0.tgz",
"integrity": "sha512-/G/VOI+3DBp0+DJKW4KesGnQkQPFmUCbA/oO2QGT6CWxU7hLGWqU3tyuzeSK/dqcyeHsQg1vTe9jiZI8GU9SCQ==",
"requires": {
"component-emitter": "1.2.1",
"debug": "~4.1.0",
"isarray": "2.0.1"
},
"dependencies": {
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"requires": {
"ms": "^2.1.1"
}
},
"isarray": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
"integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"split": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
"integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
"requires": {
"through": "2"
}
},
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
},
"sshpk": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
"integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
"requires": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
"bcrypt-pbkdf": "^1.0.0",
"dashdash": "^1.12.0",
"ecc-jsbn": "~0.1.1",
"getpass": "^0.1.1",
"jsbn": "~0.1.0",
"safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
}
},
"statuses": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
},
"streamroller": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.6.tgz",
"integrity": "sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg==",
"requires": {
"async": "^2.6.2",
"date-format": "^2.0.0",
"debug": "^3.2.6",
"fs-extra": "^7.0.1",
"lodash": "^4.17.14"
},
"dependencies": {
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
"strip-ansi": "^3.0.0"
}
},
"string.prototype.trimleft": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz",
"integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==",
"requires": {
"define-properties": "^1.1.3",
"function-bind": "^1.1.1"
}
},
"string.prototype.trimright": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz",
"integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==",
"requires": {
"define-properties": "^1.1.3",
"function-bind": "^1.1.1"
}
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"requires": {
"ansi-regex": "^2.0.0"
}
},
"tar": {
"version": "4.4.13",
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
"integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
"requires": {
"chownr": "^1.1.1",
"fs-minipass": "^1.2.5",
"minipass": "^2.8.6",
"minizlib": "^1.2.1",
"mkdirp": "^0.5.0",
"safe-buffer": "^5.1.2",
"yallist": "^3.0.3"
}
},
"tcp-ping": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/tcp-ping/-/tcp-ping-0.1.1.tgz",
"integrity": "sha1-At1/QrW/fXy3jVt6rO+hVf2PfAw="
},
"through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
},
"to-array": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
"integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA="
},
"toidentifier": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
},
"tough-cookie": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
"integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
"requires": {
"psl": "^1.1.28",
"punycode": "^2.1.1"
}
},
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"requires": {
"safe-buffer": "^5.0.1"
}
},
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
},
"type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
"requires": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
}
},
"universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
},
"unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
},
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"requires": {
"punycode": "^2.1.0"
}
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"util.promisify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz",
"integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
"requires": {
"define-properties": "^1.1.3",
"es-abstract": "^1.17.2",
"has-symbols": "^1.0.1",
"object.getownpropertydescriptors": "^2.1.0"
}
},
"utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
},
"uuid": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
},
"vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
},
"verror": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"requires": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
}
},
"which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"requires": {
"isexe": "^2.0.0"
}
},
"wide-align": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
"integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
"requires": {
"string-width": "^1.0.2 || 2"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"ws": {
"version": "7.2.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.2.1.tgz",
"integrity": "sha512-sucePNSafamSKoOqoNfBd8V0StlkzJKL2ZAhGQinCfNQ+oacw+Pk7lcdAElecBF2VkLNZRiIb5Oi1Q5lVUVt2A=="
},
"xmlhttprequest-ssl": {
"version": "1.5.5",
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
"integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4="
},
"xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
},
"yallist": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
},
"yeast": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
"integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
},
"zipkin": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/zipkin/-/zipkin-0.10.1.tgz",
"integrity": "sha512-iOGibktOLzLVyiaJQ73O3bn+J0vfoM4oeABqBKkdWntsI9eK+h+/MGaGuelJnk9vMW8Pc6bHEOyQwEz1bBbTLQ==",
"requires": {
"base64-js": "^1.1.2",
"network-address": "^1.1.0"
}
},
"zipkin-context-cls": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/zipkin-context-cls/-/zipkin-context-cls-0.6.1.tgz",
"integrity": "sha1-VYTCMd5Ots1AkNt0FtCn1Zl/2qw=",
"requires": {
"continuation-local-storage": "^3.1.7"
}
},
"zipkin-transport-http": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/zipkin-transport-http/-/zipkin-transport-http-0.10.1.tgz",
"integrity": "sha512-lfjp1+0EZ+WnTq6SiyasrK0lFGhgV4xtt4OCWievOON+7eQny7zeVzC6nYaBYH4Jx0Nif3475dpNxKUCOy8SpQ==",
"requires": {
"node-fetch": "^1.5.3"
}
}
}
}
{
"name": "jsonlines-stream",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Vladimir Adamić",
"license": "MIT",
"dependencies": {
"appmetrics-dash": "^5.3.0",
"body-parser": "^1.19.0",
"express": "^4.17.1",
"pg": "^7.18.1",
"uuid": "^3.4.0"
}
}
const { Pool } = require('pg')
const { writeFile } = require('fs').promises
const { join } = require('path')
const uuid = require('uuid/v4')
const pool = new Pool({
connectionString: process.env.DB_URI,
max: 100,
})
function getConnection() {
let connectionPromise = null
function createClient() {
connectionPromise = pool.connect()
}
async function startTransaction() {
createClient()
const client = await connectionPromise
return client.query('BEGIN;')
}
async function insertUser({ name, email, image }) {
const client = await connectionPromise
const imageBuff = Buffer.from(image, 'base64')
const path = process.env['IMAGE_DEST']
? join(process.env['IMAGE_DEST'], uuid() + '.jpg')
: '/dev/null'
await writeFile(path, imageBuff, { encoding: 'utf8' })
return client.query({
text: 'INSERT INTO users(name, email, image) VALUES($1, $2, $3)',
values: [name, email, path],
})
}
async function endTransaction() {
const client = await connectionPromise
try {
await client.query('COMMIT;')
console.log('Users saved!')
} finally {
client.release()
}
}
return {
startTransaction,
insertUser,
endTransaction,
}
}
module.exports = {
getConnection,
}
{"name":"vladimir","email":"vladimir.adamic@gmail.com","image":"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