├── .gitignore ├── db.js ├── package-lock.json ├── package.json ├── scripts ├── migrate.js └── seed.js └── server.js /.gitignore: -------------------------------------------------------------------------------- 1 | /**/node_modules/ 2 | /**/*.env -------------------------------------------------------------------------------- /db.js: -------------------------------------------------------------------------------- 1 | const knex = require('knex') 2 | 3 | module.exports = knex({ 4 | client: 'postgres', 5 | connection: { 6 | host: 'localhost', 7 | user: 'postgres', 8 | password: 'secret', 9 | database: 'database', 10 | }, 11 | }) 12 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "docker-tut", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "accepts": { 8 | "version": "1.3.7", 9 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 10 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 11 | "requires": { 12 | "mime-types": "~2.1.24", 13 | "negotiator": "0.6.2" 14 | } 15 | }, 16 | "arr-diff": { 17 | "version": "4.0.0", 18 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", 19 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" 20 | }, 21 | "arr-flatten": { 22 | "version": "1.1.0", 23 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 24 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" 25 | }, 26 | "arr-union": { 27 | "version": "3.1.0", 28 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", 29 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" 30 | }, 31 | "array-each": { 32 | "version": "1.0.1", 33 | "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", 34 | "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" 35 | }, 36 | "array-flatten": { 37 | "version": "1.1.1", 38 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 39 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 40 | }, 41 | "array-slice": { 42 | "version": "1.1.0", 43 | "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", 44 | "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" 45 | }, 46 | "array-unique": { 47 | "version": "0.3.2", 48 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", 49 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" 50 | }, 51 | "assign-symbols": { 52 | "version": "1.0.0", 53 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", 54 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" 55 | }, 56 | "atob": { 57 | "version": "2.1.2", 58 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", 59 | "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" 60 | }, 61 | "base": { 62 | "version": "0.11.2", 63 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", 64 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", 65 | "requires": { 66 | "cache-base": "^1.0.1", 67 | "class-utils": "^0.3.5", 68 | "component-emitter": "^1.2.1", 69 | "define-property": "^1.0.0", 70 | "isobject": "^3.0.1", 71 | "mixin-deep": "^1.2.0", 72 | "pascalcase": "^0.1.1" 73 | }, 74 | "dependencies": { 75 | "define-property": { 76 | "version": "1.0.0", 77 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 78 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 79 | "requires": { 80 | "is-descriptor": "^1.0.0" 81 | } 82 | }, 83 | "is-accessor-descriptor": { 84 | "version": "1.0.0", 85 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 86 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 87 | "requires": { 88 | "kind-of": "^6.0.0" 89 | } 90 | }, 91 | "is-data-descriptor": { 92 | "version": "1.0.0", 93 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 94 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 95 | "requires": { 96 | "kind-of": "^6.0.0" 97 | } 98 | }, 99 | "is-descriptor": { 100 | "version": "1.0.2", 101 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 102 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 103 | "requires": { 104 | "is-accessor-descriptor": "^1.0.0", 105 | "is-data-descriptor": "^1.0.0", 106 | "kind-of": "^6.0.2" 107 | } 108 | } 109 | } 110 | }, 111 | "basic-auth": { 112 | "version": "2.0.1", 113 | "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", 114 | "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", 115 | "requires": { 116 | "safe-buffer": "5.1.2" 117 | } 118 | }, 119 | "body-parser": { 120 | "version": "1.19.0", 121 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 122 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 123 | "requires": { 124 | "bytes": "3.1.0", 125 | "content-type": "~1.0.4", 126 | "debug": "2.6.9", 127 | "depd": "~1.1.2", 128 | "http-errors": "1.7.2", 129 | "iconv-lite": "0.4.24", 130 | "on-finished": "~2.3.0", 131 | "qs": "6.7.0", 132 | "raw-body": "2.4.0", 133 | "type-is": "~1.6.17" 134 | } 135 | }, 136 | "braces": { 137 | "version": "2.3.2", 138 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", 139 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", 140 | "requires": { 141 | "arr-flatten": "^1.1.0", 142 | "array-unique": "^0.3.2", 143 | "extend-shallow": "^2.0.1", 144 | "fill-range": "^4.0.0", 145 | "isobject": "^3.0.1", 146 | "repeat-element": "^1.1.2", 147 | "snapdragon": "^0.8.1", 148 | "snapdragon-node": "^2.0.1", 149 | "split-string": "^3.0.2", 150 | "to-regex": "^3.0.1" 151 | }, 152 | "dependencies": { 153 | "extend-shallow": { 154 | "version": "2.0.1", 155 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 156 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 157 | "requires": { 158 | "is-extendable": "^0.1.0" 159 | } 160 | } 161 | } 162 | }, 163 | "buffer-writer": { 164 | "version": "2.0.0", 165 | "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", 166 | "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" 167 | }, 168 | "bytes": { 169 | "version": "3.1.0", 170 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 171 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 172 | }, 173 | "cache-base": { 174 | "version": "1.0.1", 175 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", 176 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", 177 | "requires": { 178 | "collection-visit": "^1.0.0", 179 | "component-emitter": "^1.2.1", 180 | "get-value": "^2.0.6", 181 | "has-value": "^1.0.0", 182 | "isobject": "^3.0.1", 183 | "set-value": "^2.0.0", 184 | "to-object-path": "^0.3.0", 185 | "union-value": "^1.0.0", 186 | "unset-value": "^1.0.0" 187 | } 188 | }, 189 | "class-utils": { 190 | "version": "0.3.6", 191 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", 192 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", 193 | "requires": { 194 | "arr-union": "^3.1.0", 195 | "define-property": "^0.2.5", 196 | "isobject": "^3.0.0", 197 | "static-extend": "^0.1.1" 198 | }, 199 | "dependencies": { 200 | "define-property": { 201 | "version": "0.2.5", 202 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 203 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 204 | "requires": { 205 | "is-descriptor": "^0.1.0" 206 | } 207 | } 208 | } 209 | }, 210 | "collection-visit": { 211 | "version": "1.0.0", 212 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", 213 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", 214 | "requires": { 215 | "map-visit": "^1.0.0", 216 | "object-visit": "^1.0.0" 217 | } 218 | }, 219 | "colorette": { 220 | "version": "1.2.1", 221 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", 222 | "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" 223 | }, 224 | "commander": { 225 | "version": "6.2.1", 226 | "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", 227 | "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" 228 | }, 229 | "component-emitter": { 230 | "version": "1.3.0", 231 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", 232 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" 233 | }, 234 | "content-disposition": { 235 | "version": "0.5.3", 236 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 237 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 238 | "requires": { 239 | "safe-buffer": "5.1.2" 240 | } 241 | }, 242 | "content-type": { 243 | "version": "1.0.4", 244 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 245 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 246 | }, 247 | "cookie": { 248 | "version": "0.4.0", 249 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 250 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 251 | }, 252 | "cookie-signature": { 253 | "version": "1.0.6", 254 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 255 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 256 | }, 257 | "copy-descriptor": { 258 | "version": "0.1.1", 259 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", 260 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" 261 | }, 262 | "debug": { 263 | "version": "2.6.9", 264 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 265 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 266 | "requires": { 267 | "ms": "2.0.0" 268 | } 269 | }, 270 | "decode-uri-component": { 271 | "version": "0.2.0", 272 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", 273 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" 274 | }, 275 | "define-property": { 276 | "version": "2.0.2", 277 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", 278 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", 279 | "requires": { 280 | "is-descriptor": "^1.0.2", 281 | "isobject": "^3.0.1" 282 | }, 283 | "dependencies": { 284 | "is-accessor-descriptor": { 285 | "version": "1.0.0", 286 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 287 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 288 | "requires": { 289 | "kind-of": "^6.0.0" 290 | } 291 | }, 292 | "is-data-descriptor": { 293 | "version": "1.0.0", 294 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 295 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 296 | "requires": { 297 | "kind-of": "^6.0.0" 298 | } 299 | }, 300 | "is-descriptor": { 301 | "version": "1.0.2", 302 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 303 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 304 | "requires": { 305 | "is-accessor-descriptor": "^1.0.0", 306 | "is-data-descriptor": "^1.0.0", 307 | "kind-of": "^6.0.2" 308 | } 309 | } 310 | } 311 | }, 312 | "depd": { 313 | "version": "1.1.2", 314 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 315 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 316 | }, 317 | "destroy": { 318 | "version": "1.0.4", 319 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 320 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 321 | }, 322 | "detect-file": { 323 | "version": "1.0.0", 324 | "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", 325 | "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" 326 | }, 327 | "ee-first": { 328 | "version": "1.1.1", 329 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 330 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 331 | }, 332 | "encodeurl": { 333 | "version": "1.0.2", 334 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 335 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 336 | }, 337 | "escape-html": { 338 | "version": "1.0.3", 339 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 340 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 341 | }, 342 | "esm": { 343 | "version": "3.2.25", 344 | "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", 345 | "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" 346 | }, 347 | "etag": { 348 | "version": "1.8.1", 349 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 350 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 351 | }, 352 | "expand-brackets": { 353 | "version": "2.1.4", 354 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", 355 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", 356 | "requires": { 357 | "debug": "^2.3.3", 358 | "define-property": "^0.2.5", 359 | "extend-shallow": "^2.0.1", 360 | "posix-character-classes": "^0.1.0", 361 | "regex-not": "^1.0.0", 362 | "snapdragon": "^0.8.1", 363 | "to-regex": "^3.0.1" 364 | }, 365 | "dependencies": { 366 | "define-property": { 367 | "version": "0.2.5", 368 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 369 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 370 | "requires": { 371 | "is-descriptor": "^0.1.0" 372 | } 373 | }, 374 | "extend-shallow": { 375 | "version": "2.0.1", 376 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 377 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 378 | "requires": { 379 | "is-extendable": "^0.1.0" 380 | } 381 | } 382 | } 383 | }, 384 | "expand-tilde": { 385 | "version": "2.0.2", 386 | "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", 387 | "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", 388 | "requires": { 389 | "homedir-polyfill": "^1.0.1" 390 | } 391 | }, 392 | "express": { 393 | "version": "4.17.1", 394 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 395 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 396 | "requires": { 397 | "accepts": "~1.3.7", 398 | "array-flatten": "1.1.1", 399 | "body-parser": "1.19.0", 400 | "content-disposition": "0.5.3", 401 | "content-type": "~1.0.4", 402 | "cookie": "0.4.0", 403 | "cookie-signature": "1.0.6", 404 | "debug": "2.6.9", 405 | "depd": "~1.1.2", 406 | "encodeurl": "~1.0.2", 407 | "escape-html": "~1.0.3", 408 | "etag": "~1.8.1", 409 | "finalhandler": "~1.1.2", 410 | "fresh": "0.5.2", 411 | "merge-descriptors": "1.0.1", 412 | "methods": "~1.1.2", 413 | "on-finished": "~2.3.0", 414 | "parseurl": "~1.3.3", 415 | "path-to-regexp": "0.1.7", 416 | "proxy-addr": "~2.0.5", 417 | "qs": "6.7.0", 418 | "range-parser": "~1.2.1", 419 | "safe-buffer": "5.1.2", 420 | "send": "0.17.1", 421 | "serve-static": "1.14.1", 422 | "setprototypeof": "1.1.1", 423 | "statuses": "~1.5.0", 424 | "type-is": "~1.6.18", 425 | "utils-merge": "1.0.1", 426 | "vary": "~1.1.2" 427 | } 428 | }, 429 | "extend": { 430 | "version": "3.0.2", 431 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 432 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 433 | }, 434 | "extend-shallow": { 435 | "version": "3.0.2", 436 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", 437 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", 438 | "requires": { 439 | "assign-symbols": "^1.0.0", 440 | "is-extendable": "^1.0.1" 441 | }, 442 | "dependencies": { 443 | "is-extendable": { 444 | "version": "1.0.1", 445 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 446 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 447 | "requires": { 448 | "is-plain-object": "^2.0.4" 449 | } 450 | } 451 | } 452 | }, 453 | "extglob": { 454 | "version": "2.0.4", 455 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", 456 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", 457 | "requires": { 458 | "array-unique": "^0.3.2", 459 | "define-property": "^1.0.0", 460 | "expand-brackets": "^2.1.4", 461 | "extend-shallow": "^2.0.1", 462 | "fragment-cache": "^0.2.1", 463 | "regex-not": "^1.0.0", 464 | "snapdragon": "^0.8.1", 465 | "to-regex": "^3.0.1" 466 | }, 467 | "dependencies": { 468 | "define-property": { 469 | "version": "1.0.0", 470 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 471 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 472 | "requires": { 473 | "is-descriptor": "^1.0.0" 474 | } 475 | }, 476 | "extend-shallow": { 477 | "version": "2.0.1", 478 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 479 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 480 | "requires": { 481 | "is-extendable": "^0.1.0" 482 | } 483 | }, 484 | "is-accessor-descriptor": { 485 | "version": "1.0.0", 486 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 487 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 488 | "requires": { 489 | "kind-of": "^6.0.0" 490 | } 491 | }, 492 | "is-data-descriptor": { 493 | "version": "1.0.0", 494 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 495 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 496 | "requires": { 497 | "kind-of": "^6.0.0" 498 | } 499 | }, 500 | "is-descriptor": { 501 | "version": "1.0.2", 502 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 503 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 504 | "requires": { 505 | "is-accessor-descriptor": "^1.0.0", 506 | "is-data-descriptor": "^1.0.0", 507 | "kind-of": "^6.0.2" 508 | } 509 | } 510 | } 511 | }, 512 | "fill-range": { 513 | "version": "4.0.0", 514 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 515 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", 516 | "requires": { 517 | "extend-shallow": "^2.0.1", 518 | "is-number": "^3.0.0", 519 | "repeat-string": "^1.6.1", 520 | "to-regex-range": "^2.1.0" 521 | }, 522 | "dependencies": { 523 | "extend-shallow": { 524 | "version": "2.0.1", 525 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 526 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 527 | "requires": { 528 | "is-extendable": "^0.1.0" 529 | } 530 | } 531 | } 532 | }, 533 | "finalhandler": { 534 | "version": "1.1.2", 535 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 536 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 537 | "requires": { 538 | "debug": "2.6.9", 539 | "encodeurl": "~1.0.2", 540 | "escape-html": "~1.0.3", 541 | "on-finished": "~2.3.0", 542 | "parseurl": "~1.3.3", 543 | "statuses": "~1.5.0", 544 | "unpipe": "~1.0.0" 545 | } 546 | }, 547 | "findup-sync": { 548 | "version": "3.0.0", 549 | "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", 550 | "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", 551 | "requires": { 552 | "detect-file": "^1.0.0", 553 | "is-glob": "^4.0.0", 554 | "micromatch": "^3.0.4", 555 | "resolve-dir": "^1.0.1" 556 | } 557 | }, 558 | "fined": { 559 | "version": "1.2.0", 560 | "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", 561 | "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", 562 | "requires": { 563 | "expand-tilde": "^2.0.2", 564 | "is-plain-object": "^2.0.3", 565 | "object.defaults": "^1.1.0", 566 | "object.pick": "^1.2.0", 567 | "parse-filepath": "^1.0.1" 568 | } 569 | }, 570 | "flagged-respawn": { 571 | "version": "1.0.1", 572 | "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", 573 | "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" 574 | }, 575 | "for-in": { 576 | "version": "1.0.2", 577 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 578 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" 579 | }, 580 | "for-own": { 581 | "version": "1.0.0", 582 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", 583 | "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", 584 | "requires": { 585 | "for-in": "^1.0.1" 586 | } 587 | }, 588 | "forwarded": { 589 | "version": "0.1.2", 590 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 591 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 592 | }, 593 | "fragment-cache": { 594 | "version": "0.2.1", 595 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", 596 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", 597 | "requires": { 598 | "map-cache": "^0.2.2" 599 | } 600 | }, 601 | "fresh": { 602 | "version": "0.5.2", 603 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 604 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 605 | }, 606 | "function-bind": { 607 | "version": "1.1.1", 608 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 609 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 610 | }, 611 | "get-value": { 612 | "version": "2.0.6", 613 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", 614 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" 615 | }, 616 | "getopts": { 617 | "version": "2.2.5", 618 | "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz", 619 | "integrity": "sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA==" 620 | }, 621 | "global-modules": { 622 | "version": "1.0.0", 623 | "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", 624 | "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", 625 | "requires": { 626 | "global-prefix": "^1.0.1", 627 | "is-windows": "^1.0.1", 628 | "resolve-dir": "^1.0.0" 629 | } 630 | }, 631 | "global-prefix": { 632 | "version": "1.0.2", 633 | "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", 634 | "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", 635 | "requires": { 636 | "expand-tilde": "^2.0.2", 637 | "homedir-polyfill": "^1.0.1", 638 | "ini": "^1.3.4", 639 | "is-windows": "^1.0.1", 640 | "which": "^1.2.14" 641 | } 642 | }, 643 | "has": { 644 | "version": "1.0.3", 645 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 646 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 647 | "requires": { 648 | "function-bind": "^1.1.1" 649 | } 650 | }, 651 | "has-value": { 652 | "version": "1.0.0", 653 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", 654 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", 655 | "requires": { 656 | "get-value": "^2.0.6", 657 | "has-values": "^1.0.0", 658 | "isobject": "^3.0.0" 659 | } 660 | }, 661 | "has-values": { 662 | "version": "1.0.0", 663 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", 664 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", 665 | "requires": { 666 | "is-number": "^3.0.0", 667 | "kind-of": "^4.0.0" 668 | }, 669 | "dependencies": { 670 | "kind-of": { 671 | "version": "4.0.0", 672 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 673 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 674 | "requires": { 675 | "is-buffer": "^1.1.5" 676 | } 677 | } 678 | } 679 | }, 680 | "homedir-polyfill": { 681 | "version": "1.0.3", 682 | "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", 683 | "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", 684 | "requires": { 685 | "parse-passwd": "^1.0.0" 686 | } 687 | }, 688 | "http-errors": { 689 | "version": "1.7.2", 690 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 691 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 692 | "requires": { 693 | "depd": "~1.1.2", 694 | "inherits": "2.0.3", 695 | "setprototypeof": "1.1.1", 696 | "statuses": ">= 1.5.0 < 2", 697 | "toidentifier": "1.0.0" 698 | } 699 | }, 700 | "iconv-lite": { 701 | "version": "0.4.24", 702 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 703 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 704 | "requires": { 705 | "safer-buffer": ">= 2.1.2 < 3" 706 | } 707 | }, 708 | "inherits": { 709 | "version": "2.0.3", 710 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 711 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 712 | }, 713 | "ini": { 714 | "version": "1.3.8", 715 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 716 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" 717 | }, 718 | "interpret": { 719 | "version": "2.2.0", 720 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", 721 | "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==" 722 | }, 723 | "ipaddr.js": { 724 | "version": "1.9.1", 725 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 726 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 727 | }, 728 | "is-absolute": { 729 | "version": "1.0.0", 730 | "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", 731 | "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", 732 | "requires": { 733 | "is-relative": "^1.0.0", 734 | "is-windows": "^1.0.1" 735 | } 736 | }, 737 | "is-accessor-descriptor": { 738 | "version": "0.1.6", 739 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 740 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 741 | "requires": { 742 | "kind-of": "^3.0.2" 743 | }, 744 | "dependencies": { 745 | "kind-of": { 746 | "version": "3.2.2", 747 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 748 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 749 | "requires": { 750 | "is-buffer": "^1.1.5" 751 | } 752 | } 753 | } 754 | }, 755 | "is-buffer": { 756 | "version": "1.1.6", 757 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 758 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" 759 | }, 760 | "is-core-module": { 761 | "version": "2.2.0", 762 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", 763 | "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", 764 | "requires": { 765 | "has": "^1.0.3" 766 | } 767 | }, 768 | "is-data-descriptor": { 769 | "version": "0.1.4", 770 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 771 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 772 | "requires": { 773 | "kind-of": "^3.0.2" 774 | }, 775 | "dependencies": { 776 | "kind-of": { 777 | "version": "3.2.2", 778 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 779 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 780 | "requires": { 781 | "is-buffer": "^1.1.5" 782 | } 783 | } 784 | } 785 | }, 786 | "is-descriptor": { 787 | "version": "0.1.6", 788 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", 789 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", 790 | "requires": { 791 | "is-accessor-descriptor": "^0.1.6", 792 | "is-data-descriptor": "^0.1.4", 793 | "kind-of": "^5.0.0" 794 | }, 795 | "dependencies": { 796 | "kind-of": { 797 | "version": "5.1.0", 798 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 799 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" 800 | } 801 | } 802 | }, 803 | "is-extendable": { 804 | "version": "0.1.1", 805 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 806 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" 807 | }, 808 | "is-extglob": { 809 | "version": "2.1.1", 810 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 811 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" 812 | }, 813 | "is-glob": { 814 | "version": "4.0.1", 815 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 816 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 817 | "requires": { 818 | "is-extglob": "^2.1.1" 819 | } 820 | }, 821 | "is-number": { 822 | "version": "3.0.0", 823 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 824 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 825 | "requires": { 826 | "kind-of": "^3.0.2" 827 | }, 828 | "dependencies": { 829 | "kind-of": { 830 | "version": "3.2.2", 831 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 832 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 833 | "requires": { 834 | "is-buffer": "^1.1.5" 835 | } 836 | } 837 | } 838 | }, 839 | "is-plain-object": { 840 | "version": "2.0.4", 841 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 842 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 843 | "requires": { 844 | "isobject": "^3.0.1" 845 | } 846 | }, 847 | "is-relative": { 848 | "version": "1.0.0", 849 | "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", 850 | "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", 851 | "requires": { 852 | "is-unc-path": "^1.0.0" 853 | } 854 | }, 855 | "is-unc-path": { 856 | "version": "1.0.0", 857 | "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", 858 | "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", 859 | "requires": { 860 | "unc-path-regex": "^0.1.2" 861 | } 862 | }, 863 | "is-windows": { 864 | "version": "1.0.2", 865 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 866 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" 867 | }, 868 | "isarray": { 869 | "version": "1.0.0", 870 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 871 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 872 | }, 873 | "isexe": { 874 | "version": "2.0.0", 875 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 876 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" 877 | }, 878 | "isobject": { 879 | "version": "3.0.1", 880 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 881 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" 882 | }, 883 | "kind-of": { 884 | "version": "6.0.3", 885 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 886 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" 887 | }, 888 | "knex": { 889 | "version": "0.21.18", 890 | "resolved": "https://registry.npmjs.org/knex/-/knex-0.21.18.tgz", 891 | "integrity": "sha512-hP4Qyy2LjQLsabQYc6YgDFHb+CJJBjQz1TMPTKyN85CF2NLIsZsF4FDe0NvQXeXMeak3E/kKr5iJog1JBm6ZCQ==", 892 | "requires": { 893 | "colorette": "1.2.1", 894 | "commander": "^6.2.0", 895 | "debug": "4.3.1", 896 | "esm": "^3.2.25", 897 | "getopts": "2.2.5", 898 | "interpret": "^2.2.0", 899 | "liftoff": "3.1.0", 900 | "lodash": "^4.17.20", 901 | "pg-connection-string": "2.4.0", 902 | "tarn": "^3.0.1", 903 | "tildify": "2.0.0", 904 | "v8flags": "^3.2.0" 905 | }, 906 | "dependencies": { 907 | "debug": { 908 | "version": "4.3.1", 909 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 910 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 911 | "requires": { 912 | "ms": "2.1.2" 913 | } 914 | }, 915 | "ms": { 916 | "version": "2.1.2", 917 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 918 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 919 | } 920 | } 921 | }, 922 | "liftoff": { 923 | "version": "3.1.0", 924 | "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", 925 | "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", 926 | "requires": { 927 | "extend": "^3.0.0", 928 | "findup-sync": "^3.0.0", 929 | "fined": "^1.0.1", 930 | "flagged-respawn": "^1.0.0", 931 | "is-plain-object": "^2.0.4", 932 | "object.map": "^1.0.0", 933 | "rechoir": "^0.6.2", 934 | "resolve": "^1.1.7" 935 | } 936 | }, 937 | "lodash": { 938 | "version": "4.17.21", 939 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 940 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 941 | }, 942 | "make-iterator": { 943 | "version": "1.0.1", 944 | "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", 945 | "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", 946 | "requires": { 947 | "kind-of": "^6.0.2" 948 | } 949 | }, 950 | "map-cache": { 951 | "version": "0.2.2", 952 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 953 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" 954 | }, 955 | "map-visit": { 956 | "version": "1.0.0", 957 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", 958 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", 959 | "requires": { 960 | "object-visit": "^1.0.0" 961 | } 962 | }, 963 | "media-typer": { 964 | "version": "0.3.0", 965 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 966 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 967 | }, 968 | "merge-descriptors": { 969 | "version": "1.0.1", 970 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 971 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 972 | }, 973 | "methods": { 974 | "version": "1.1.2", 975 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 976 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 977 | }, 978 | "micromatch": { 979 | "version": "3.1.10", 980 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", 981 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", 982 | "requires": { 983 | "arr-diff": "^4.0.0", 984 | "array-unique": "^0.3.2", 985 | "braces": "^2.3.1", 986 | "define-property": "^2.0.2", 987 | "extend-shallow": "^3.0.2", 988 | "extglob": "^2.0.4", 989 | "fragment-cache": "^0.2.1", 990 | "kind-of": "^6.0.2", 991 | "nanomatch": "^1.2.9", 992 | "object.pick": "^1.3.0", 993 | "regex-not": "^1.0.0", 994 | "snapdragon": "^0.8.1", 995 | "to-regex": "^3.0.2" 996 | } 997 | }, 998 | "mime": { 999 | "version": "1.6.0", 1000 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1001 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 1002 | }, 1003 | "mime-db": { 1004 | "version": "1.46.0", 1005 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", 1006 | "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==" 1007 | }, 1008 | "mime-types": { 1009 | "version": "2.1.29", 1010 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", 1011 | "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", 1012 | "requires": { 1013 | "mime-db": "1.46.0" 1014 | } 1015 | }, 1016 | "mixin-deep": { 1017 | "version": "1.3.2", 1018 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", 1019 | "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", 1020 | "requires": { 1021 | "for-in": "^1.0.2", 1022 | "is-extendable": "^1.0.1" 1023 | }, 1024 | "dependencies": { 1025 | "is-extendable": { 1026 | "version": "1.0.1", 1027 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 1028 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 1029 | "requires": { 1030 | "is-plain-object": "^2.0.4" 1031 | } 1032 | } 1033 | } 1034 | }, 1035 | "morgan": { 1036 | "version": "1.10.0", 1037 | "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", 1038 | "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", 1039 | "requires": { 1040 | "basic-auth": "~2.0.1", 1041 | "debug": "2.6.9", 1042 | "depd": "~2.0.0", 1043 | "on-finished": "~2.3.0", 1044 | "on-headers": "~1.0.2" 1045 | }, 1046 | "dependencies": { 1047 | "depd": { 1048 | "version": "2.0.0", 1049 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 1050 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 1051 | } 1052 | } 1053 | }, 1054 | "ms": { 1055 | "version": "2.0.0", 1056 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1057 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1058 | }, 1059 | "nanomatch": { 1060 | "version": "1.2.13", 1061 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", 1062 | "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", 1063 | "requires": { 1064 | "arr-diff": "^4.0.0", 1065 | "array-unique": "^0.3.2", 1066 | "define-property": "^2.0.2", 1067 | "extend-shallow": "^3.0.2", 1068 | "fragment-cache": "^0.2.1", 1069 | "is-windows": "^1.0.2", 1070 | "kind-of": "^6.0.2", 1071 | "object.pick": "^1.3.0", 1072 | "regex-not": "^1.0.0", 1073 | "snapdragon": "^0.8.1", 1074 | "to-regex": "^3.0.1" 1075 | } 1076 | }, 1077 | "negotiator": { 1078 | "version": "0.6.2", 1079 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 1080 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 1081 | }, 1082 | "object-copy": { 1083 | "version": "0.1.0", 1084 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 1085 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", 1086 | "requires": { 1087 | "copy-descriptor": "^0.1.0", 1088 | "define-property": "^0.2.5", 1089 | "kind-of": "^3.0.3" 1090 | }, 1091 | "dependencies": { 1092 | "define-property": { 1093 | "version": "0.2.5", 1094 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1095 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1096 | "requires": { 1097 | "is-descriptor": "^0.1.0" 1098 | } 1099 | }, 1100 | "kind-of": { 1101 | "version": "3.2.2", 1102 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1103 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1104 | "requires": { 1105 | "is-buffer": "^1.1.5" 1106 | } 1107 | } 1108 | } 1109 | }, 1110 | "object-visit": { 1111 | "version": "1.0.1", 1112 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", 1113 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", 1114 | "requires": { 1115 | "isobject": "^3.0.0" 1116 | } 1117 | }, 1118 | "object.defaults": { 1119 | "version": "1.1.0", 1120 | "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", 1121 | "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", 1122 | "requires": { 1123 | "array-each": "^1.0.1", 1124 | "array-slice": "^1.0.0", 1125 | "for-own": "^1.0.0", 1126 | "isobject": "^3.0.0" 1127 | } 1128 | }, 1129 | "object.map": { 1130 | "version": "1.0.1", 1131 | "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", 1132 | "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", 1133 | "requires": { 1134 | "for-own": "^1.0.0", 1135 | "make-iterator": "^1.0.0" 1136 | } 1137 | }, 1138 | "object.pick": { 1139 | "version": "1.3.0", 1140 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 1141 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 1142 | "requires": { 1143 | "isobject": "^3.0.1" 1144 | } 1145 | }, 1146 | "on-finished": { 1147 | "version": "2.3.0", 1148 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1149 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 1150 | "requires": { 1151 | "ee-first": "1.1.1" 1152 | } 1153 | }, 1154 | "on-headers": { 1155 | "version": "1.0.2", 1156 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", 1157 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" 1158 | }, 1159 | "packet-reader": { 1160 | "version": "1.0.0", 1161 | "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", 1162 | "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" 1163 | }, 1164 | "parse-filepath": { 1165 | "version": "1.0.2", 1166 | "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", 1167 | "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", 1168 | "requires": { 1169 | "is-absolute": "^1.0.0", 1170 | "map-cache": "^0.2.0", 1171 | "path-root": "^0.1.1" 1172 | } 1173 | }, 1174 | "parse-passwd": { 1175 | "version": "1.0.0", 1176 | "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", 1177 | "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" 1178 | }, 1179 | "parseurl": { 1180 | "version": "1.3.3", 1181 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1182 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 1183 | }, 1184 | "pascalcase": { 1185 | "version": "0.1.1", 1186 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", 1187 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" 1188 | }, 1189 | "path-parse": { 1190 | "version": "1.0.6", 1191 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1192 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" 1193 | }, 1194 | "path-root": { 1195 | "version": "0.1.1", 1196 | "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", 1197 | "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", 1198 | "requires": { 1199 | "path-root-regex": "^0.1.0" 1200 | } 1201 | }, 1202 | "path-root-regex": { 1203 | "version": "0.1.2", 1204 | "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", 1205 | "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" 1206 | }, 1207 | "path-to-regexp": { 1208 | "version": "0.1.7", 1209 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 1210 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 1211 | }, 1212 | "pg": { 1213 | "version": "8.5.1", 1214 | "resolved": "https://registry.npmjs.org/pg/-/pg-8.5.1.tgz", 1215 | "integrity": "sha512-9wm3yX9lCfjvA98ybCyw2pADUivyNWT/yIP4ZcDVpMN0og70BUWYEGXPCTAQdGTAqnytfRADb7NERrY1qxhIqw==", 1216 | "requires": { 1217 | "buffer-writer": "2.0.0", 1218 | "packet-reader": "1.0.0", 1219 | "pg-connection-string": "^2.4.0", 1220 | "pg-pool": "^3.2.2", 1221 | "pg-protocol": "^1.4.0", 1222 | "pg-types": "^2.1.0", 1223 | "pgpass": "1.x" 1224 | } 1225 | }, 1226 | "pg-connection-string": { 1227 | "version": "2.4.0", 1228 | "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.4.0.tgz", 1229 | "integrity": "sha512-3iBXuv7XKvxeMrIgym7njT+HlZkwZqqGX4Bu9cci8xHZNT+Um1gWKqCsAzcC0d95rcKMU5WBg6YRUcHyV0HZKQ==" 1230 | }, 1231 | "pg-int8": { 1232 | "version": "1.0.1", 1233 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 1234 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" 1235 | }, 1236 | "pg-pool": { 1237 | "version": "3.2.2", 1238 | "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.2.2.tgz", 1239 | "integrity": "sha512-ORJoFxAlmmros8igi608iVEbQNNZlp89diFVx6yV5v+ehmpMY9sK6QgpmgoXbmkNaBAx8cOOZh9g80kJv1ooyA==" 1240 | }, 1241 | "pg-protocol": { 1242 | "version": "1.4.0", 1243 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.4.0.tgz", 1244 | "integrity": "sha512-El+aXWcwG/8wuFICMQjM5ZSAm6OWiJicFdNYo+VY3QP+8vI4SvLIWVe51PppTzMhikUJR+PsyIFKqfdXPz/yxA==" 1245 | }, 1246 | "pg-types": { 1247 | "version": "2.2.0", 1248 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 1249 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 1250 | "requires": { 1251 | "pg-int8": "1.0.1", 1252 | "postgres-array": "~2.0.0", 1253 | "postgres-bytea": "~1.0.0", 1254 | "postgres-date": "~1.0.4", 1255 | "postgres-interval": "^1.1.0" 1256 | } 1257 | }, 1258 | "pgpass": { 1259 | "version": "1.0.4", 1260 | "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.4.tgz", 1261 | "integrity": "sha512-YmuA56alyBq7M59vxVBfPJrGSozru8QAdoNlWuW3cz8l+UX3cWge0vTvjKhsSHSJpo3Bom8/Mm6hf0TR5GY0+w==", 1262 | "requires": { 1263 | "split2": "^3.1.1" 1264 | } 1265 | }, 1266 | "posix-character-classes": { 1267 | "version": "0.1.1", 1268 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", 1269 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" 1270 | }, 1271 | "postgres-array": { 1272 | "version": "2.0.0", 1273 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 1274 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" 1275 | }, 1276 | "postgres-bytea": { 1277 | "version": "1.0.0", 1278 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 1279 | "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=" 1280 | }, 1281 | "postgres-date": { 1282 | "version": "1.0.7", 1283 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 1284 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" 1285 | }, 1286 | "postgres-interval": { 1287 | "version": "1.2.0", 1288 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 1289 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 1290 | "requires": { 1291 | "xtend": "^4.0.0" 1292 | } 1293 | }, 1294 | "proxy-addr": { 1295 | "version": "2.0.6", 1296 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", 1297 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", 1298 | "requires": { 1299 | "forwarded": "~0.1.2", 1300 | "ipaddr.js": "1.9.1" 1301 | } 1302 | }, 1303 | "qs": { 1304 | "version": "6.7.0", 1305 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 1306 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 1307 | }, 1308 | "range-parser": { 1309 | "version": "1.2.1", 1310 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1311 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 1312 | }, 1313 | "raw-body": { 1314 | "version": "2.4.0", 1315 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 1316 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 1317 | "requires": { 1318 | "bytes": "3.1.0", 1319 | "http-errors": "1.7.2", 1320 | "iconv-lite": "0.4.24", 1321 | "unpipe": "1.0.0" 1322 | } 1323 | }, 1324 | "readable-stream": { 1325 | "version": "3.6.0", 1326 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1327 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1328 | "requires": { 1329 | "inherits": "^2.0.3", 1330 | "string_decoder": "^1.1.1", 1331 | "util-deprecate": "^1.0.1" 1332 | } 1333 | }, 1334 | "rechoir": { 1335 | "version": "0.6.2", 1336 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 1337 | "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", 1338 | "requires": { 1339 | "resolve": "^1.1.6" 1340 | } 1341 | }, 1342 | "regex-not": { 1343 | "version": "1.0.2", 1344 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", 1345 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", 1346 | "requires": { 1347 | "extend-shallow": "^3.0.2", 1348 | "safe-regex": "^1.1.0" 1349 | } 1350 | }, 1351 | "repeat-element": { 1352 | "version": "1.1.3", 1353 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", 1354 | "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" 1355 | }, 1356 | "repeat-string": { 1357 | "version": "1.6.1", 1358 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 1359 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" 1360 | }, 1361 | "resolve": { 1362 | "version": "1.20.0", 1363 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 1364 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 1365 | "requires": { 1366 | "is-core-module": "^2.2.0", 1367 | "path-parse": "^1.0.6" 1368 | } 1369 | }, 1370 | "resolve-dir": { 1371 | "version": "1.0.1", 1372 | "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", 1373 | "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", 1374 | "requires": { 1375 | "expand-tilde": "^2.0.0", 1376 | "global-modules": "^1.0.0" 1377 | } 1378 | }, 1379 | "resolve-url": { 1380 | "version": "0.2.1", 1381 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", 1382 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" 1383 | }, 1384 | "ret": { 1385 | "version": "0.1.15", 1386 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 1387 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" 1388 | }, 1389 | "safe-buffer": { 1390 | "version": "5.1.2", 1391 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1392 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1393 | }, 1394 | "safe-regex": { 1395 | "version": "1.1.0", 1396 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", 1397 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 1398 | "requires": { 1399 | "ret": "~0.1.10" 1400 | } 1401 | }, 1402 | "safer-buffer": { 1403 | "version": "2.1.2", 1404 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1405 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1406 | }, 1407 | "send": { 1408 | "version": "0.17.1", 1409 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 1410 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 1411 | "requires": { 1412 | "debug": "2.6.9", 1413 | "depd": "~1.1.2", 1414 | "destroy": "~1.0.4", 1415 | "encodeurl": "~1.0.2", 1416 | "escape-html": "~1.0.3", 1417 | "etag": "~1.8.1", 1418 | "fresh": "0.5.2", 1419 | "http-errors": "~1.7.2", 1420 | "mime": "1.6.0", 1421 | "ms": "2.1.1", 1422 | "on-finished": "~2.3.0", 1423 | "range-parser": "~1.2.1", 1424 | "statuses": "~1.5.0" 1425 | }, 1426 | "dependencies": { 1427 | "ms": { 1428 | "version": "2.1.1", 1429 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1430 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 1431 | } 1432 | } 1433 | }, 1434 | "serve-static": { 1435 | "version": "1.14.1", 1436 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 1437 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 1438 | "requires": { 1439 | "encodeurl": "~1.0.2", 1440 | "escape-html": "~1.0.3", 1441 | "parseurl": "~1.3.3", 1442 | "send": "0.17.1" 1443 | } 1444 | }, 1445 | "set-value": { 1446 | "version": "2.0.1", 1447 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", 1448 | "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", 1449 | "requires": { 1450 | "extend-shallow": "^2.0.1", 1451 | "is-extendable": "^0.1.1", 1452 | "is-plain-object": "^2.0.3", 1453 | "split-string": "^3.0.1" 1454 | }, 1455 | "dependencies": { 1456 | "extend-shallow": { 1457 | "version": "2.0.1", 1458 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1459 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1460 | "requires": { 1461 | "is-extendable": "^0.1.0" 1462 | } 1463 | } 1464 | } 1465 | }, 1466 | "setprototypeof": { 1467 | "version": "1.1.1", 1468 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 1469 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 1470 | }, 1471 | "snapdragon": { 1472 | "version": "0.8.2", 1473 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", 1474 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", 1475 | "requires": { 1476 | "base": "^0.11.1", 1477 | "debug": "^2.2.0", 1478 | "define-property": "^0.2.5", 1479 | "extend-shallow": "^2.0.1", 1480 | "map-cache": "^0.2.2", 1481 | "source-map": "^0.5.6", 1482 | "source-map-resolve": "^0.5.0", 1483 | "use": "^3.1.0" 1484 | }, 1485 | "dependencies": { 1486 | "define-property": { 1487 | "version": "0.2.5", 1488 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1489 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1490 | "requires": { 1491 | "is-descriptor": "^0.1.0" 1492 | } 1493 | }, 1494 | "extend-shallow": { 1495 | "version": "2.0.1", 1496 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1497 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1498 | "requires": { 1499 | "is-extendable": "^0.1.0" 1500 | } 1501 | } 1502 | } 1503 | }, 1504 | "snapdragon-node": { 1505 | "version": "2.1.1", 1506 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", 1507 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", 1508 | "requires": { 1509 | "define-property": "^1.0.0", 1510 | "isobject": "^3.0.0", 1511 | "snapdragon-util": "^3.0.1" 1512 | }, 1513 | "dependencies": { 1514 | "define-property": { 1515 | "version": "1.0.0", 1516 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 1517 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 1518 | "requires": { 1519 | "is-descriptor": "^1.0.0" 1520 | } 1521 | }, 1522 | "is-accessor-descriptor": { 1523 | "version": "1.0.0", 1524 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 1525 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 1526 | "requires": { 1527 | "kind-of": "^6.0.0" 1528 | } 1529 | }, 1530 | "is-data-descriptor": { 1531 | "version": "1.0.0", 1532 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 1533 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 1534 | "requires": { 1535 | "kind-of": "^6.0.0" 1536 | } 1537 | }, 1538 | "is-descriptor": { 1539 | "version": "1.0.2", 1540 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 1541 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 1542 | "requires": { 1543 | "is-accessor-descriptor": "^1.0.0", 1544 | "is-data-descriptor": "^1.0.0", 1545 | "kind-of": "^6.0.2" 1546 | } 1547 | } 1548 | } 1549 | }, 1550 | "snapdragon-util": { 1551 | "version": "3.0.1", 1552 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", 1553 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", 1554 | "requires": { 1555 | "kind-of": "^3.2.0" 1556 | }, 1557 | "dependencies": { 1558 | "kind-of": { 1559 | "version": "3.2.2", 1560 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1561 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1562 | "requires": { 1563 | "is-buffer": "^1.1.5" 1564 | } 1565 | } 1566 | } 1567 | }, 1568 | "source-map": { 1569 | "version": "0.5.7", 1570 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1571 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" 1572 | }, 1573 | "source-map-resolve": { 1574 | "version": "0.5.3", 1575 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", 1576 | "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", 1577 | "requires": { 1578 | "atob": "^2.1.2", 1579 | "decode-uri-component": "^0.2.0", 1580 | "resolve-url": "^0.2.1", 1581 | "source-map-url": "^0.4.0", 1582 | "urix": "^0.1.0" 1583 | } 1584 | }, 1585 | "source-map-url": { 1586 | "version": "0.4.1", 1587 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", 1588 | "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" 1589 | }, 1590 | "split-string": { 1591 | "version": "3.1.0", 1592 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", 1593 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", 1594 | "requires": { 1595 | "extend-shallow": "^3.0.0" 1596 | } 1597 | }, 1598 | "split2": { 1599 | "version": "3.2.2", 1600 | "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", 1601 | "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", 1602 | "requires": { 1603 | "readable-stream": "^3.0.0" 1604 | } 1605 | }, 1606 | "static-extend": { 1607 | "version": "0.1.2", 1608 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", 1609 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", 1610 | "requires": { 1611 | "define-property": "^0.2.5", 1612 | "object-copy": "^0.1.0" 1613 | }, 1614 | "dependencies": { 1615 | "define-property": { 1616 | "version": "0.2.5", 1617 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1618 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1619 | "requires": { 1620 | "is-descriptor": "^0.1.0" 1621 | } 1622 | } 1623 | } 1624 | }, 1625 | "statuses": { 1626 | "version": "1.5.0", 1627 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1628 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 1629 | }, 1630 | "string_decoder": { 1631 | "version": "1.3.0", 1632 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1633 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1634 | "requires": { 1635 | "safe-buffer": "~5.2.0" 1636 | }, 1637 | "dependencies": { 1638 | "safe-buffer": { 1639 | "version": "5.2.1", 1640 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1641 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1642 | } 1643 | } 1644 | }, 1645 | "tarn": { 1646 | "version": "3.0.1", 1647 | "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.1.tgz", 1648 | "integrity": "sha512-6usSlV9KyHsspvwu2duKH+FMUhqJnAh6J5J/4MITl8s94iSUQTLkJggdiewKv4RyARQccnigV48Z+khiuVZDJw==" 1649 | }, 1650 | "tildify": { 1651 | "version": "2.0.0", 1652 | "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", 1653 | "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==" 1654 | }, 1655 | "to-object-path": { 1656 | "version": "0.3.0", 1657 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", 1658 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", 1659 | "requires": { 1660 | "kind-of": "^3.0.2" 1661 | }, 1662 | "dependencies": { 1663 | "kind-of": { 1664 | "version": "3.2.2", 1665 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1666 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1667 | "requires": { 1668 | "is-buffer": "^1.1.5" 1669 | } 1670 | } 1671 | } 1672 | }, 1673 | "to-regex": { 1674 | "version": "3.0.2", 1675 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", 1676 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", 1677 | "requires": { 1678 | "define-property": "^2.0.2", 1679 | "extend-shallow": "^3.0.2", 1680 | "regex-not": "^1.0.2", 1681 | "safe-regex": "^1.1.0" 1682 | } 1683 | }, 1684 | "to-regex-range": { 1685 | "version": "2.1.1", 1686 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", 1687 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", 1688 | "requires": { 1689 | "is-number": "^3.0.0", 1690 | "repeat-string": "^1.6.1" 1691 | } 1692 | }, 1693 | "toidentifier": { 1694 | "version": "1.0.0", 1695 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 1696 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 1697 | }, 1698 | "type-is": { 1699 | "version": "1.6.18", 1700 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1701 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1702 | "requires": { 1703 | "media-typer": "0.3.0", 1704 | "mime-types": "~2.1.24" 1705 | } 1706 | }, 1707 | "unc-path-regex": { 1708 | "version": "0.1.2", 1709 | "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", 1710 | "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" 1711 | }, 1712 | "union-value": { 1713 | "version": "1.0.1", 1714 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", 1715 | "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", 1716 | "requires": { 1717 | "arr-union": "^3.1.0", 1718 | "get-value": "^2.0.6", 1719 | "is-extendable": "^0.1.1", 1720 | "set-value": "^2.0.1" 1721 | } 1722 | }, 1723 | "unpipe": { 1724 | "version": "1.0.0", 1725 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1726 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 1727 | }, 1728 | "unset-value": { 1729 | "version": "1.0.0", 1730 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", 1731 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", 1732 | "requires": { 1733 | "has-value": "^0.3.1", 1734 | "isobject": "^3.0.0" 1735 | }, 1736 | "dependencies": { 1737 | "has-value": { 1738 | "version": "0.3.1", 1739 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", 1740 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", 1741 | "requires": { 1742 | "get-value": "^2.0.3", 1743 | "has-values": "^0.1.4", 1744 | "isobject": "^2.0.0" 1745 | }, 1746 | "dependencies": { 1747 | "isobject": { 1748 | "version": "2.1.0", 1749 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 1750 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 1751 | "requires": { 1752 | "isarray": "1.0.0" 1753 | } 1754 | } 1755 | } 1756 | }, 1757 | "has-values": { 1758 | "version": "0.1.4", 1759 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", 1760 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" 1761 | } 1762 | } 1763 | }, 1764 | "urix": { 1765 | "version": "0.1.0", 1766 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", 1767 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" 1768 | }, 1769 | "use": { 1770 | "version": "3.1.1", 1771 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", 1772 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" 1773 | }, 1774 | "util-deprecate": { 1775 | "version": "1.0.2", 1776 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1777 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1778 | }, 1779 | "utils-merge": { 1780 | "version": "1.0.1", 1781 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1782 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 1783 | }, 1784 | "v8flags": { 1785 | "version": "3.2.0", 1786 | "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", 1787 | "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", 1788 | "requires": { 1789 | "homedir-polyfill": "^1.0.1" 1790 | } 1791 | }, 1792 | "vary": { 1793 | "version": "1.1.2", 1794 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1795 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 1796 | }, 1797 | "which": { 1798 | "version": "1.3.1", 1799 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 1800 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 1801 | "requires": { 1802 | "isexe": "^2.0.0" 1803 | } 1804 | }, 1805 | "xtend": { 1806 | "version": "4.0.2", 1807 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 1808 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 1809 | } 1810 | } 1811 | } 1812 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "docker-tut", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "app.js", 6 | "dependencies": { 7 | "express": "^4.17.1", 8 | "knex": "^0.21.18", 9 | "morgan": "^1.10.0", 10 | "pg": "^8.5.1" 11 | }, 12 | "devDependencies": {}, 13 | "scripts": { 14 | "start": "node server.js", 15 | "migrate": "node scripts/migrate.js", 16 | "seed": "node scripts/seed.js" 17 | }, 18 | "keywords": [], 19 | "author": "", 20 | "license": "ISC" 21 | } 22 | -------------------------------------------------------------------------------- /scripts/migrate.js: -------------------------------------------------------------------------------- 1 | const db = require('../db') 2 | 3 | ;(async () => { 4 | try { 5 | await db.schema.dropTableIfExists('users') 6 | await db.schema.withSchema('public').createTable('users', (table) => { 7 | table.increments() 8 | table.string('name') 9 | }) 10 | console.log('Created users table!') 11 | process.exit(0) 12 | } catch (err) { 13 | console.log(err) 14 | process.exit(1) 15 | } 16 | })() 17 | -------------------------------------------------------------------------------- /scripts/seed.js: -------------------------------------------------------------------------------- 1 | const db = require('../db') 2 | 3 | ;(async () => { 4 | try { 5 | await db('users').insert({ name: 'John Doe' }) 6 | await db('users').insert({ name: 'Jane Doe' }) 7 | console.log('Added dummy users!') 8 | process.exit(0) 9 | } catch (err) { 10 | console.log(err) 11 | process.exit(1) 12 | } 13 | })() 14 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const morgan = require('morgan') 3 | 4 | const db = require('./db') 5 | 6 | const PORT = process.env.PORT || 5000 7 | const app = express() 8 | 9 | app.use(morgan('dev')) 10 | app.use(express.json()) 11 | app.use(express.urlencoded({ extended: true })) 12 | 13 | app.get('/', (req, res) => res.send('Hello World!')) 14 | 15 | app.get('/users', async (req, res) => { 16 | const users = await db.select().from('users') 17 | res.json(users) 18 | }) 19 | 20 | app.post('/users', async (req, res) => { 21 | const user = await db('users').insert({ name: req.body.name }).returning('*') 22 | res.json(user) 23 | }) 24 | 25 | app.listen(PORT, () => console.log(`Server up at http://localhost:${PORT}`)) 26 | --------------------------------------------------------------------------------