├── .gitignore ├── LICENSE ├── README.md ├── nanotip.js ├── nanotip.pug ├── nanotipd ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Permission is hereby granted, free of charge, to any person obtaining a copy 2 | of this software and associated documentation files (the "Software"), to deal 3 | in the Software without restriction, including without limitation the rights 4 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 5 | copies of the Software, and to permit persons to whom the Software is 6 | furnished to do so, subject to the following conditions: 7 | 8 | The above copyright notice and this permission notice shall be included in 9 | all copies or substantial portions of the Software. 10 | 11 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 12 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 13 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 14 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 15 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 16 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 17 | THE SOFTWARE. 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # nanotip 2 | 3 | [![npm release](https://img.shields.io/npm/v/nanotip.svg)](https://www.npmjs.com/package/nanotip) 4 | [![MIT license](https://img.shields.io/github/license/elementsproject/nanotip.svg)](https://github.com/elementsproject/nanotip/blob/master/LICENSE) 5 | [![Pull Requests Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com) 6 | [![IRC](https://img.shields.io/badge/chat-on%20freenode-brightgreen.svg)](https://webchat.freenode.net/?channels=lightning-charge) 7 | 8 | A simple web server for accepting lightning donations. 9 | 10 | `nanotip` generates Lightning invoices on the fly using your Lightning Charge server, 11 | allowing users to setup a tip jar that accepts Lightning Network payments. 12 | 13 | Powered by :zap: [Lightning Charge](https://github.com/ElementsProject/lightning-charge). 14 | 15 | ![nanotip demo](https://i.imgur.com/WLoiRT2.gif) 16 | 17 | ## Setup 18 | 19 | Setup [Lightning Charge](https://github.com/ElementsProject/lightning-charge), then: 20 | 21 | ```bash 22 | $ npm install -g nanotip 23 | $ nanotipd --charge-token mySecretToken # defaults: --charge-url http://localhost:9112 --port 9115 24 | nanotipd running on http://localhost:9115 25 | ``` 26 | 27 | Note that `nanotip` uses Lightning Charge's built-in checkout page, meaning that the Lightning Charge 28 | server has to be publicly accessible to users. If users need to access it using a different URL 29 | than the one used for communicating with the API, set `--charge-public-url`. 30 | 31 | You can use `--theme` to pick a different [theme from bootswatch](https://bootswatch.com). 32 | 33 | ## CLI options 34 | 35 | ```bash 36 | $ nanotipd --help 37 | 38 | Lightning Tip Box 39 | 40 | Usage 41 | $ nanotipd [options] 42 | 43 | Options 44 | -c, --charge-url lightning charge server url [default: http://localhost:9112] 45 | -t, --charge-token lightning charge access token [required] 46 | -P, --charge-public-url url where charge is publicly accessible [default: {charge-url}] 47 | -m, --theme pick theme from bootswatch.com [default: yeti] 48 | -l, --title website title [default: Lightning Tip Box] 49 | -p, --port http server port [default: 9115] 50 | -i, --host http server listen address [default: 127.0.0.1] 51 | -u, --url http server public url (used for webhooks) [default: http://{host}:{port}] 52 | -T, --thankyou-url url to send users to after completing the payment [default: {url}/thankyou] 53 | -e, --node-env nodejs environment mode [default: production] 54 | -h, --help output usage information 55 | -v, --version output version number 56 | 57 | Example 58 | $ nanotipd -c http://localhost:9112 -t chargeSecretToken 59 | ``` 60 | 61 | ## License 62 | 63 | MIT 64 | -------------------------------------------------------------------------------- /nanotip.js: -------------------------------------------------------------------------------- 1 | // Initialize Lightning Charge client 2 | const charge = require('lightning-charge-client')(process.env.CHARGE_URL, process.env.CHARGE_TOKEN) 3 | 4 | // Express setup & settings 5 | const app = require('express')() 6 | app.set('port', process.env.PORT || 9115) 7 | app.set('host', process.env.HOST || 'localhost') 8 | app.set('url', process.env.URL || `http://${app.settings.host}:${app.settings.port}`) 9 | app.set('title', process.env.TITLE || 'Lightning Tip Box') 10 | app.set('trust proxy', process.env.PROXIED || 'loopback') 11 | 12 | app.use(require('cookie-parser')()) 13 | app.use(require('body-parser').json()) 14 | app.use(require('body-parser').urlencoded({ extended: true })) 15 | 16 | const webhookToken = require('crypto').createHmac('sha256', process.env.CHARGE_TOKEN).update('nanotip-webhook').digest('hex') 17 | , thankyouUrl = process.env.THANKYOU_URL || app.settings.url + '/?thankyou' 18 | , chargePubUrl = (process.env.CHARGE_PUBLIC_URL || process.env.CHARGE_URL).replace(/\/+$/, '') 19 | , cssPath = __dirname + '/node_modules/bootswatch/dist/' + (process.env.THEME || 'yeti') + '/bootstrap.min.css' 20 | 21 | // Incoming webhook payment notifications 22 | app.post('/webhook/'+webhookToken, (req, res) => { 23 | console.log('Incoming payment:', req.body) 24 | res.sendStatus(204) 25 | }) 26 | 27 | app.use(require('morgan')('dev')) 28 | app.use(require('csurf')({ cookie: true })) 29 | 30 | // Frontend 31 | app.get('/', (req, res) => res.render(__dirname + '/nanotip.pug', { req })) 32 | app.get('/bootstrap.min.css', (req, res) => res.sendFile(cssPath)) 33 | 34 | // Tip request 35 | app.post('/', (req, res, next) => 36 | // Create new invoice 37 | charge.invoice({ 38 | amount: req.body.amount 39 | , currency: req.body.currency 40 | , description: app.settings.title 41 | , webhook: app.settings.url + '/webhook/' + webhookToken 42 | , metadata: { source: 'nanotip', checkout: { redirect_url: thankyouUrl }, info: req.body.info } 43 | }) 44 | // Redirect to Lightning Charge's checkout page 45 | .then(inv => res.redirect(302, chargePubUrl + '/checkout/' + inv.id)) 46 | .catch(next) 47 | ) 48 | 49 | app.listen(app.settings.port, app.settings.host, _ => 50 | console.log(`nanotipd running on http://${ app.settings.host }:${ app.settings.port }`)) 51 | -------------------------------------------------------------------------------- /nanotip.pug: -------------------------------------------------------------------------------- 1 | doctype html 2 | 3 | html.h-100 4 | title= settings.title 5 | meta(charset='utf-8') 6 | meta(name='viewport', content='width=device-width, initial-scale=1') 7 | link(rel='stylesheet', href='bootstrap.min.css') 8 | 9 | body.h-100 10 | .container.d-flex.h-100: .justify-content-center.align-self-center.text-center.mx-auto 11 | 12 | h1.mb-4!= settings.title 13 | 14 | if req.query.thankyou != null 15 | .alert.alert-success.mb-4: h4.m-0 Thank you for your donation! 16 | 17 | form(method='post') 18 | input(type='hidden', name='_csrf', value=req.csrfToken()) 19 | .input-group.justify-content-center 20 | input.form-control.form-control-lg(name='amount', type='number', placeholder='Tip amount', step='0.00000000001', 21 | style='width:10em', autofocus, autocomplete='off', required) 22 | .input-group-append 23 | select.form-control.form-control-lg(name='currency') 24 | for currency in [ 'BTC', 'USD', 'EUR', 'GBP', 'CNY', 'JPY', 'ILS' ] 25 | option= currency 26 | 27 | textarea.form-control.border-top-0(name='info[notes]', rows=3, placeholder='Anything to add? (optional)') 28 | 29 | //- you can add additional `info[...]` fields, they will automatically be saved with the invoice. 30 | 31 | button.btn.btn-lg.btn-primary.mt-4(type='submit') Send tip 32 | 33 | .fixed-bottom.text-right.pb-2.pr-2.text-info powered by #[a(href='https://github.com/ElementsProject/nanotip') nanotip] 34 | -------------------------------------------------------------------------------- /nanotipd: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const args = require('meow')(` 4 | Usage 5 | $ nanotipd [options] 6 | 7 | Options 8 | -c, --charge-url lightning charge server url [default: http://localhost:9112] 9 | -t, --charge-token lightning charge access token [required] 10 | -P, --charge-public-url url where charge is publicly accessible [default: {charge-url}] 11 | -m, --theme pick theme from bootswatch.com [default: yeti] 12 | -l, --title website title [default: Lightning Tip Box] 13 | -p, --port http server port [default: 9115] 14 | -i, --host http server listen address [default: 127.0.0.1] 15 | -u, --url http server public url (used for webhooks) [default: http://{host}:{port}] 16 | -T, --thankyou-url url to send users to after completing the payment [default: {url}/thankyou] 17 | -e, --node-env nodejs environment mode [default: production] 18 | -h, --help output usage information 19 | -v, --version output version number 20 | 21 | Example 22 | $ nanotipd -c http://localhost:9112 -t chargeSecretToken 23 | 24 | `, { flags: { chargeUrl: {alias:'c', default: 'http://localhost:9112'}, chargeToken: {alias:'t'}, chargePublicUrl: {alias:'P'} 25 | , theme: {alias:'m'}, title: {alias:'l'}, url: {alias:'u'}, thankyouUrl: {alias:'T'} 26 | , port: {alias:'p'}, host: {alias:'i'}, nodeEnv: {alias:'e', default:'production'} } } 27 | ).flags 28 | 29 | Object.keys(args).filter(k => k.length > 1) 30 | .forEach(k => process.env[k.replace(/([A-Z])/g, '_$1').toUpperCase()] = args[k]) 31 | 32 | process.env.CHARGE_TOKEN || (console.error('--charge-token is required'), process.exit(1)) 33 | 34 | require('./nanotip') 35 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nanotip", 3 | "version": "0.1.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/babel-types": { 8 | "version": "7.0.1", 9 | "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.1.tgz", 10 | "integrity": "sha512-EkcOk09rjhivbovP8WreGRbXW20YRfe/qdgXOGq3it3u3aAOWDRNsQhL/XPAWFF7zhZZ+uR+nT+3b+TCkIap1w==" 11 | }, 12 | "@types/babylon": { 13 | "version": "6.16.2", 14 | "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.2.tgz", 15 | "integrity": "sha512-+Jty46mPaWe1VAyZbfvgJM4BAdklLWxrT5tc/RjvCgLrtk6gzRY6AOnoWFv4p6hVxhJshDdr2hGVn56alBp97Q==", 16 | "requires": { 17 | "@types/babel-types": "7.0.1" 18 | } 19 | }, 20 | "accepts": { 21 | "version": "1.3.5", 22 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", 23 | "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", 24 | "requires": { 25 | "mime-types": "2.1.18", 26 | "negotiator": "0.6.1" 27 | }, 28 | "dependencies": { 29 | "mime-db": { 30 | "version": "1.33.0", 31 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", 32 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" 33 | }, 34 | "mime-types": { 35 | "version": "2.1.18", 36 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", 37 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", 38 | "requires": { 39 | "mime-db": "1.33.0" 40 | } 41 | } 42 | } 43 | }, 44 | "acorn": { 45 | "version": "3.3.0", 46 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", 47 | "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" 48 | }, 49 | "acorn-globals": { 50 | "version": "3.1.0", 51 | "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", 52 | "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", 53 | "requires": { 54 | "acorn": "4.0.13" 55 | }, 56 | "dependencies": { 57 | "acorn": { 58 | "version": "4.0.13", 59 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", 60 | "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" 61 | } 62 | } 63 | }, 64 | "align-text": { 65 | "version": "0.1.4", 66 | "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", 67 | "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", 68 | "requires": { 69 | "kind-of": "3.2.2", 70 | "longest": "1.0.1", 71 | "repeat-string": "1.6.1" 72 | } 73 | }, 74 | "array-find-index": { 75 | "version": "1.0.2", 76 | "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", 77 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" 78 | }, 79 | "array-flatten": { 80 | "version": "1.1.1", 81 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 82 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 83 | }, 84 | "arrify": { 85 | "version": "1.0.1", 86 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 87 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" 88 | }, 89 | "asap": { 90 | "version": "2.0.6", 91 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", 92 | "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" 93 | }, 94 | "asynckit": { 95 | "version": "0.4.0", 96 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 97 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 98 | }, 99 | "babel-runtime": { 100 | "version": "6.26.0", 101 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 102 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 103 | "requires": { 104 | "core-js": "2.5.3", 105 | "regenerator-runtime": "0.11.1" 106 | } 107 | }, 108 | "babel-types": { 109 | "version": "6.26.0", 110 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", 111 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", 112 | "requires": { 113 | "babel-runtime": "6.26.0", 114 | "esutils": "2.0.2", 115 | "lodash": "4.17.5", 116 | "to-fast-properties": "1.0.3" 117 | } 118 | }, 119 | "babylon": { 120 | "version": "6.18.0", 121 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", 122 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" 123 | }, 124 | "basic-auth": { 125 | "version": "2.0.0", 126 | "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", 127 | "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", 128 | "requires": { 129 | "safe-buffer": "5.1.1" 130 | } 131 | }, 132 | "body-parser": { 133 | "version": "1.18.2", 134 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", 135 | "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", 136 | "requires": { 137 | "bytes": "3.0.0", 138 | "content-type": "1.0.4", 139 | "debug": "2.6.9", 140 | "depd": "1.1.1", 141 | "http-errors": "1.6.2", 142 | "iconv-lite": "0.4.19", 143 | "on-finished": "2.3.0", 144 | "qs": "6.5.1", 145 | "raw-body": "2.3.2", 146 | "type-is": "1.6.15" 147 | }, 148 | "dependencies": { 149 | "http-errors": { 150 | "version": "1.6.2", 151 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", 152 | "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", 153 | "requires": { 154 | "depd": "1.1.1", 155 | "inherits": "2.0.3", 156 | "setprototypeof": "1.0.3", 157 | "statuses": "1.4.0" 158 | } 159 | }, 160 | "setprototypeof": { 161 | "version": "1.0.3", 162 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", 163 | "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" 164 | } 165 | } 166 | }, 167 | "bootstrap": { 168 | "version": "4.0.0", 169 | "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0.tgz", 170 | "integrity": "sha512-gulJE5dGFo6Q61V/whS6VM4WIyrlydXfCgkE+Gxe5hjrJ8rXLLZlALq7zq2RPhOc45PSwQpJkrTnc2KgD6cvmA==" 171 | }, 172 | "bootswatch": { 173 | "version": "4.0.0", 174 | "resolved": "https://registry.npmjs.org/bootswatch/-/bootswatch-4.0.0.tgz", 175 | "integrity": "sha1-38qwKMA8CaWIiNN9fOn2yMM0mMw=", 176 | "requires": { 177 | "bootstrap": "4.0.0", 178 | "jquery": "3.3.1", 179 | "popper.js": "1.14.1" 180 | } 181 | }, 182 | "builtin-modules": { 183 | "version": "1.1.1", 184 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 185 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" 186 | }, 187 | "bytes": { 188 | "version": "3.0.0", 189 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 190 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" 191 | }, 192 | "camelcase": { 193 | "version": "4.1.0", 194 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", 195 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" 196 | }, 197 | "camelcase-keys": { 198 | "version": "4.2.0", 199 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", 200 | "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", 201 | "requires": { 202 | "camelcase": "4.1.0", 203 | "map-obj": "2.0.0", 204 | "quick-lru": "1.1.0" 205 | } 206 | }, 207 | "center-align": { 208 | "version": "0.1.3", 209 | "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", 210 | "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", 211 | "requires": { 212 | "align-text": "0.1.4", 213 | "lazy-cache": "1.0.4" 214 | } 215 | }, 216 | "character-parser": { 217 | "version": "2.2.0", 218 | "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", 219 | "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", 220 | "requires": { 221 | "is-regex": "1.0.4" 222 | } 223 | }, 224 | "clean-css": { 225 | "version": "4.1.11", 226 | "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", 227 | "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", 228 | "requires": { 229 | "source-map": "0.5.7" 230 | } 231 | }, 232 | "cliui": { 233 | "version": "2.1.0", 234 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", 235 | "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", 236 | "requires": { 237 | "center-align": "0.1.3", 238 | "right-align": "0.1.3", 239 | "wordwrap": "0.0.2" 240 | } 241 | }, 242 | "combined-stream": { 243 | "version": "1.0.6", 244 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", 245 | "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", 246 | "requires": { 247 | "delayed-stream": "1.0.0" 248 | } 249 | }, 250 | "component-emitter": { 251 | "version": "1.2.1", 252 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", 253 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" 254 | }, 255 | "constantinople": { 256 | "version": "3.1.2", 257 | "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", 258 | "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", 259 | "requires": { 260 | "@types/babel-types": "7.0.1", 261 | "@types/babylon": "6.16.2", 262 | "babel-types": "6.26.0", 263 | "babylon": "6.18.0" 264 | } 265 | }, 266 | "content-disposition": { 267 | "version": "0.5.2", 268 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", 269 | "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" 270 | }, 271 | "content-type": { 272 | "version": "1.0.4", 273 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 274 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 275 | }, 276 | "cookie": { 277 | "version": "0.3.1", 278 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", 279 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" 280 | }, 281 | "cookie-parser": { 282 | "version": "1.4.3", 283 | "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz", 284 | "integrity": "sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU=", 285 | "requires": { 286 | "cookie": "0.3.1", 287 | "cookie-signature": "1.0.6" 288 | } 289 | }, 290 | "cookie-signature": { 291 | "version": "1.0.6", 292 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 293 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 294 | }, 295 | "cookiejar": { 296 | "version": "2.1.1", 297 | "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", 298 | "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=" 299 | }, 300 | "core-js": { 301 | "version": "2.5.3", 302 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", 303 | "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" 304 | }, 305 | "core-util-is": { 306 | "version": "1.0.2", 307 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 308 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 309 | }, 310 | "csrf": { 311 | "version": "3.0.6", 312 | "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.6.tgz", 313 | "integrity": "sha1-thEg3c7q/JHnbtUxO7XAsmZ7cQo=", 314 | "requires": { 315 | "rndm": "1.2.0", 316 | "tsscmp": "1.0.5", 317 | "uid-safe": "2.1.4" 318 | } 319 | }, 320 | "csurf": { 321 | "version": "1.9.0", 322 | "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", 323 | "integrity": "sha1-SdLGkl/87Ht95VlZfBU/pTM2QTM=", 324 | "requires": { 325 | "cookie": "0.3.1", 326 | "cookie-signature": "1.0.6", 327 | "csrf": "3.0.6", 328 | "http-errors": "1.5.1" 329 | } 330 | }, 331 | "currently-unhandled": { 332 | "version": "0.4.1", 333 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", 334 | "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", 335 | "requires": { 336 | "array-find-index": "1.0.2" 337 | } 338 | }, 339 | "debug": { 340 | "version": "2.6.9", 341 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 342 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 343 | "requires": { 344 | "ms": "2.0.0" 345 | } 346 | }, 347 | "decamelize": { 348 | "version": "1.2.0", 349 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 350 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" 351 | }, 352 | "decamelize-keys": { 353 | "version": "1.1.0", 354 | "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", 355 | "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", 356 | "requires": { 357 | "decamelize": "1.2.0", 358 | "map-obj": "1.0.1" 359 | }, 360 | "dependencies": { 361 | "map-obj": { 362 | "version": "1.0.1", 363 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", 364 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" 365 | } 366 | } 367 | }, 368 | "delayed-stream": { 369 | "version": "1.0.0", 370 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 371 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 372 | }, 373 | "depd": { 374 | "version": "1.1.1", 375 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", 376 | "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" 377 | }, 378 | "destroy": { 379 | "version": "1.0.4", 380 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 381 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 382 | }, 383 | "doctypes": { 384 | "version": "1.1.0", 385 | "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", 386 | "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" 387 | }, 388 | "ee-first": { 389 | "version": "1.1.1", 390 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 391 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 392 | }, 393 | "encodeurl": { 394 | "version": "1.0.2", 395 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 396 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 397 | }, 398 | "error-ex": { 399 | "version": "1.3.1", 400 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", 401 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", 402 | "requires": { 403 | "is-arrayish": "0.2.1" 404 | } 405 | }, 406 | "escape-html": { 407 | "version": "1.0.3", 408 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 409 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 410 | }, 411 | "esutils": { 412 | "version": "2.0.2", 413 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 414 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" 415 | }, 416 | "etag": { 417 | "version": "1.8.1", 418 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 419 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 420 | }, 421 | "eventsource": { 422 | "version": "1.0.5", 423 | "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.5.tgz", 424 | "integrity": "sha512-IzjLaND9GBK3+fBPhmvG/Yq3FhSDGHnucJCDWhNsneLlN+HX5jeaSpl3Folr2PipGmyUsd/T2Vrua+s6I2aTgQ==", 425 | "requires": { 426 | "original": "1.0.0" 427 | } 428 | }, 429 | "express": { 430 | "version": "4.16.3", 431 | "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", 432 | "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", 433 | "requires": { 434 | "accepts": "1.3.5", 435 | "array-flatten": "1.1.1", 436 | "body-parser": "1.18.2", 437 | "content-disposition": "0.5.2", 438 | "content-type": "1.0.4", 439 | "cookie": "0.3.1", 440 | "cookie-signature": "1.0.6", 441 | "debug": "2.6.9", 442 | "depd": "1.1.2", 443 | "encodeurl": "1.0.2", 444 | "escape-html": "1.0.3", 445 | "etag": "1.8.1", 446 | "finalhandler": "1.1.1", 447 | "fresh": "0.5.2", 448 | "merge-descriptors": "1.0.1", 449 | "methods": "1.1.2", 450 | "on-finished": "2.3.0", 451 | "parseurl": "1.3.2", 452 | "path-to-regexp": "0.1.7", 453 | "proxy-addr": "2.0.3", 454 | "qs": "6.5.1", 455 | "range-parser": "1.2.0", 456 | "safe-buffer": "5.1.1", 457 | "send": "0.16.2", 458 | "serve-static": "1.13.2", 459 | "setprototypeof": "1.1.0", 460 | "statuses": "1.4.0", 461 | "type-is": "1.6.16", 462 | "utils-merge": "1.0.1", 463 | "vary": "1.1.2" 464 | }, 465 | "dependencies": { 466 | "depd": { 467 | "version": "1.1.2", 468 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 469 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 470 | }, 471 | "mime-db": { 472 | "version": "1.33.0", 473 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", 474 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" 475 | }, 476 | "mime-types": { 477 | "version": "2.1.18", 478 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", 479 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", 480 | "requires": { 481 | "mime-db": "1.33.0" 482 | } 483 | }, 484 | "setprototypeof": { 485 | "version": "1.1.0", 486 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 487 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" 488 | }, 489 | "type-is": { 490 | "version": "1.6.16", 491 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", 492 | "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", 493 | "requires": { 494 | "media-typer": "0.3.0", 495 | "mime-types": "2.1.18" 496 | } 497 | } 498 | } 499 | }, 500 | "extend": { 501 | "version": "3.0.1", 502 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", 503 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" 504 | }, 505 | "finalhandler": { 506 | "version": "1.1.1", 507 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", 508 | "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", 509 | "requires": { 510 | "debug": "2.6.9", 511 | "encodeurl": "1.0.2", 512 | "escape-html": "1.0.3", 513 | "on-finished": "2.3.0", 514 | "parseurl": "1.3.2", 515 | "statuses": "1.4.0", 516 | "unpipe": "1.0.0" 517 | } 518 | }, 519 | "find-up": { 520 | "version": "2.1.0", 521 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 522 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 523 | "requires": { 524 | "locate-path": "2.0.0" 525 | } 526 | }, 527 | "form-data": { 528 | "version": "2.3.2", 529 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", 530 | "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", 531 | "requires": { 532 | "asynckit": "0.4.0", 533 | "combined-stream": "1.0.6", 534 | "mime-types": "2.1.17" 535 | } 536 | }, 537 | "formidable": { 538 | "version": "1.2.1", 539 | "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", 540 | "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==" 541 | }, 542 | "forwarded": { 543 | "version": "0.1.2", 544 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 545 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 546 | }, 547 | "fresh": { 548 | "version": "0.5.2", 549 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 550 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 551 | }, 552 | "function-bind": { 553 | "version": "1.1.1", 554 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 555 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 556 | }, 557 | "graceful-fs": { 558 | "version": "4.1.11", 559 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 560 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" 561 | }, 562 | "has": { 563 | "version": "1.0.1", 564 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", 565 | "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", 566 | "requires": { 567 | "function-bind": "1.1.1" 568 | } 569 | }, 570 | "hosted-git-info": { 571 | "version": "2.5.0", 572 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", 573 | "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" 574 | }, 575 | "http-errors": { 576 | "version": "1.5.1", 577 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz", 578 | "integrity": "sha1-eIwNLB3iyBuebowBhDtrl+uSB1A=", 579 | "requires": { 580 | "inherits": "2.0.3", 581 | "setprototypeof": "1.0.2", 582 | "statuses": "1.4.0" 583 | } 584 | }, 585 | "iconv-lite": { 586 | "version": "0.4.19", 587 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", 588 | "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" 589 | }, 590 | "indent-string": { 591 | "version": "3.2.0", 592 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", 593 | "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" 594 | }, 595 | "inherits": { 596 | "version": "2.0.3", 597 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 598 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 599 | }, 600 | "ipaddr.js": { 601 | "version": "1.6.0", 602 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", 603 | "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=" 604 | }, 605 | "is-arrayish": { 606 | "version": "0.2.1", 607 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 608 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" 609 | }, 610 | "is-buffer": { 611 | "version": "1.1.6", 612 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 613 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" 614 | }, 615 | "is-builtin-module": { 616 | "version": "1.0.0", 617 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", 618 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", 619 | "requires": { 620 | "builtin-modules": "1.1.1" 621 | } 622 | }, 623 | "is-expression": { 624 | "version": "3.0.0", 625 | "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", 626 | "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", 627 | "requires": { 628 | "acorn": "4.0.13", 629 | "object-assign": "4.1.1" 630 | }, 631 | "dependencies": { 632 | "acorn": { 633 | "version": "4.0.13", 634 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", 635 | "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" 636 | } 637 | } 638 | }, 639 | "is-plain-obj": { 640 | "version": "1.1.0", 641 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", 642 | "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" 643 | }, 644 | "is-promise": { 645 | "version": "2.1.0", 646 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 647 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" 648 | }, 649 | "is-regex": { 650 | "version": "1.0.4", 651 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 652 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 653 | "requires": { 654 | "has": "1.0.1" 655 | } 656 | }, 657 | "isarray": { 658 | "version": "1.0.0", 659 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 660 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 661 | }, 662 | "jquery": { 663 | "version": "3.3.1", 664 | "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", 665 | "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" 666 | }, 667 | "js-stringify": { 668 | "version": "1.0.2", 669 | "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", 670 | "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" 671 | }, 672 | "json-parse-better-errors": { 673 | "version": "1.0.1", 674 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", 675 | "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==" 676 | }, 677 | "jstransformer": { 678 | "version": "1.0.0", 679 | "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", 680 | "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", 681 | "requires": { 682 | "is-promise": "2.1.0", 683 | "promise": "7.3.1" 684 | } 685 | }, 686 | "kind-of": { 687 | "version": "3.2.2", 688 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 689 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 690 | "requires": { 691 | "is-buffer": "1.1.6" 692 | } 693 | }, 694 | "lazy-cache": { 695 | "version": "1.0.4", 696 | "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", 697 | "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" 698 | }, 699 | "lightning-charge-client": { 700 | "version": "0.1.7", 701 | "resolved": "https://registry.npmjs.org/lightning-charge-client/-/lightning-charge-client-0.1.7.tgz", 702 | "integrity": "sha512-LDDFt4KWaUkfwy7EWUedwcitX4T6YufSjif/lZyVuXn1YLlUGYhXgWrX2G1tJQqUFwHSaXLu54K8Zd0lFBMJ7A==", 703 | "requires": { 704 | "eventsource": "1.0.5", 705 | "superagent": "3.8.2", 706 | "superagent-baseuri": "0.1.1" 707 | } 708 | }, 709 | "load-json-file": { 710 | "version": "4.0.0", 711 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", 712 | "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", 713 | "requires": { 714 | "graceful-fs": "4.1.11", 715 | "parse-json": "4.0.0", 716 | "pify": "3.0.0", 717 | "strip-bom": "3.0.0" 718 | } 719 | }, 720 | "locate-path": { 721 | "version": "2.0.0", 722 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 723 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 724 | "requires": { 725 | "p-locate": "2.0.0", 726 | "path-exists": "3.0.0" 727 | } 728 | }, 729 | "lodash": { 730 | "version": "4.17.5", 731 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", 732 | "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" 733 | }, 734 | "longest": { 735 | "version": "1.0.1", 736 | "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", 737 | "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" 738 | }, 739 | "loud-rejection": { 740 | "version": "1.6.0", 741 | "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", 742 | "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", 743 | "requires": { 744 | "currently-unhandled": "0.4.1", 745 | "signal-exit": "3.0.2" 746 | } 747 | }, 748 | "map-obj": { 749 | "version": "2.0.0", 750 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", 751 | "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=" 752 | }, 753 | "media-typer": { 754 | "version": "0.3.0", 755 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 756 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 757 | }, 758 | "meow": { 759 | "version": "4.0.0", 760 | "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.0.tgz", 761 | "integrity": "sha512-Me/kel335m6vMKmEmA6c87Z6DUFW3JqkINRnxkbC+A/PUm0D5Fl2dEBQrPKnqCL9Te/CIa1MUt/0InMJhuC/sw==", 762 | "requires": { 763 | "camelcase-keys": "4.2.0", 764 | "decamelize-keys": "1.1.0", 765 | "loud-rejection": "1.6.0", 766 | "minimist": "1.2.0", 767 | "minimist-options": "3.0.2", 768 | "normalize-package-data": "2.4.0", 769 | "read-pkg-up": "3.0.0", 770 | "redent": "2.0.0", 771 | "trim-newlines": "2.0.0" 772 | } 773 | }, 774 | "merge-descriptors": { 775 | "version": "1.0.1", 776 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 777 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 778 | }, 779 | "methods": { 780 | "version": "1.1.2", 781 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 782 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 783 | }, 784 | "mime": { 785 | "version": "1.4.1", 786 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", 787 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" 788 | }, 789 | "mime-db": { 790 | "version": "1.30.0", 791 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", 792 | "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" 793 | }, 794 | "mime-types": { 795 | "version": "2.1.17", 796 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", 797 | "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", 798 | "requires": { 799 | "mime-db": "1.30.0" 800 | } 801 | }, 802 | "minimist": { 803 | "version": "1.2.0", 804 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 805 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" 806 | }, 807 | "minimist-options": { 808 | "version": "3.0.2", 809 | "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", 810 | "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", 811 | "requires": { 812 | "arrify": "1.0.1", 813 | "is-plain-obj": "1.1.0" 814 | } 815 | }, 816 | "morgan": { 817 | "version": "1.9.0", 818 | "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", 819 | "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", 820 | "requires": { 821 | "basic-auth": "2.0.0", 822 | "debug": "2.6.9", 823 | "depd": "1.1.1", 824 | "on-finished": "2.3.0", 825 | "on-headers": "1.0.1" 826 | } 827 | }, 828 | "ms": { 829 | "version": "2.0.0", 830 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 831 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 832 | }, 833 | "negotiator": { 834 | "version": "0.6.1", 835 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", 836 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" 837 | }, 838 | "normalize-package-data": { 839 | "version": "2.4.0", 840 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", 841 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", 842 | "requires": { 843 | "hosted-git-info": "2.5.0", 844 | "is-builtin-module": "1.0.0", 845 | "semver": "5.4.1", 846 | "validate-npm-package-license": "3.0.1" 847 | } 848 | }, 849 | "object-assign": { 850 | "version": "4.1.1", 851 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 852 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 853 | }, 854 | "on-finished": { 855 | "version": "2.3.0", 856 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 857 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 858 | "requires": { 859 | "ee-first": "1.1.1" 860 | } 861 | }, 862 | "on-headers": { 863 | "version": "1.0.1", 864 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", 865 | "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" 866 | }, 867 | "original": { 868 | "version": "1.0.0", 869 | "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", 870 | "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", 871 | "requires": { 872 | "url-parse": "1.0.5" 873 | } 874 | }, 875 | "p-limit": { 876 | "version": "1.2.0", 877 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", 878 | "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", 879 | "requires": { 880 | "p-try": "1.0.0" 881 | } 882 | }, 883 | "p-locate": { 884 | "version": "2.0.0", 885 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 886 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 887 | "requires": { 888 | "p-limit": "1.2.0" 889 | } 890 | }, 891 | "p-try": { 892 | "version": "1.0.0", 893 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 894 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" 895 | }, 896 | "parse-json": { 897 | "version": "4.0.0", 898 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 899 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 900 | "requires": { 901 | "error-ex": "1.3.1", 902 | "json-parse-better-errors": "1.0.1" 903 | } 904 | }, 905 | "parseurl": { 906 | "version": "1.3.2", 907 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", 908 | "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" 909 | }, 910 | "path-exists": { 911 | "version": "3.0.0", 912 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 913 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" 914 | }, 915 | "path-parse": { 916 | "version": "1.0.5", 917 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", 918 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" 919 | }, 920 | "path-to-regexp": { 921 | "version": "0.1.7", 922 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 923 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 924 | }, 925 | "path-type": { 926 | "version": "3.0.0", 927 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", 928 | "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", 929 | "requires": { 930 | "pify": "3.0.0" 931 | } 932 | }, 933 | "pify": { 934 | "version": "3.0.0", 935 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 936 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" 937 | }, 938 | "popper.js": { 939 | "version": "1.14.1", 940 | "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.1.tgz", 941 | "integrity": "sha1-uIFeXNpvYvwgQuR2GGSfdYZuZ1M=" 942 | }, 943 | "process-nextick-args": { 944 | "version": "2.0.0", 945 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 946 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" 947 | }, 948 | "promise": { 949 | "version": "7.3.1", 950 | "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", 951 | "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", 952 | "requires": { 953 | "asap": "2.0.6" 954 | } 955 | }, 956 | "proxy-addr": { 957 | "version": "2.0.3", 958 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", 959 | "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", 960 | "requires": { 961 | "forwarded": "0.1.2", 962 | "ipaddr.js": "1.6.0" 963 | } 964 | }, 965 | "pug": { 966 | "version": "2.0.3", 967 | "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.3.tgz", 968 | "integrity": "sha1-ccuoJTfJWl6rftBGluQiH1Oqh44=", 969 | "requires": { 970 | "pug-code-gen": "2.0.1", 971 | "pug-filters": "3.1.0", 972 | "pug-lexer": "4.0.0", 973 | "pug-linker": "3.0.5", 974 | "pug-load": "2.0.11", 975 | "pug-parser": "5.0.0", 976 | "pug-runtime": "2.0.4", 977 | "pug-strip-comments": "1.0.3" 978 | } 979 | }, 980 | "pug-attrs": { 981 | "version": "2.0.3", 982 | "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.3.tgz", 983 | "integrity": "sha1-owlflw5kFR972tlX7vVftdeQXRU=", 984 | "requires": { 985 | "constantinople": "3.1.2", 986 | "js-stringify": "1.0.2", 987 | "pug-runtime": "2.0.4" 988 | } 989 | }, 990 | "pug-code-gen": { 991 | "version": "2.0.1", 992 | "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.1.tgz", 993 | "integrity": "sha1-CVHsgyJddNjPxHan+Zolm199BQw=", 994 | "requires": { 995 | "constantinople": "3.1.2", 996 | "doctypes": "1.1.0", 997 | "js-stringify": "1.0.2", 998 | "pug-attrs": "2.0.3", 999 | "pug-error": "1.3.2", 1000 | "pug-runtime": "2.0.4", 1001 | "void-elements": "2.0.1", 1002 | "with": "5.1.1" 1003 | } 1004 | }, 1005 | "pug-error": { 1006 | "version": "1.3.2", 1007 | "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.2.tgz", 1008 | "integrity": "sha1-U659nSm7A89WRJOgJhCfVMR/XyY=" 1009 | }, 1010 | "pug-filters": { 1011 | "version": "3.1.0", 1012 | "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.0.tgz", 1013 | "integrity": "sha1-JxZVVbwEwjbkqisDZiRt+gIbYm4=", 1014 | "requires": { 1015 | "clean-css": "4.1.11", 1016 | "constantinople": "3.1.2", 1017 | "jstransformer": "1.0.0", 1018 | "pug-error": "1.3.2", 1019 | "pug-walk": "1.1.7", 1020 | "resolve": "1.6.0", 1021 | "uglify-js": "2.8.29" 1022 | } 1023 | }, 1024 | "pug-lexer": { 1025 | "version": "4.0.0", 1026 | "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.0.0.tgz", 1027 | "integrity": "sha1-IQwYRX7y4XYCQnQMXmR715TOwng=", 1028 | "requires": { 1029 | "character-parser": "2.2.0", 1030 | "is-expression": "3.0.0", 1031 | "pug-error": "1.3.2" 1032 | } 1033 | }, 1034 | "pug-linker": { 1035 | "version": "3.0.5", 1036 | "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.5.tgz", 1037 | "integrity": "sha1-npp65ABWgtAn3uuWsAD4juuDoC8=", 1038 | "requires": { 1039 | "pug-error": "1.3.2", 1040 | "pug-walk": "1.1.7" 1041 | } 1042 | }, 1043 | "pug-load": { 1044 | "version": "2.0.11", 1045 | "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.11.tgz", 1046 | "integrity": "sha1-5kjlftET/iwfRdV4WOorrWvAFSc=", 1047 | "requires": { 1048 | "object-assign": "4.1.1", 1049 | "pug-walk": "1.1.7" 1050 | } 1051 | }, 1052 | "pug-parser": { 1053 | "version": "5.0.0", 1054 | "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.0.tgz", 1055 | "integrity": "sha1-45Stmz/KkxI5QK/4hcBuRKt+aOQ=", 1056 | "requires": { 1057 | "pug-error": "1.3.2", 1058 | "token-stream": "0.0.1" 1059 | } 1060 | }, 1061 | "pug-runtime": { 1062 | "version": "2.0.4", 1063 | "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.4.tgz", 1064 | "integrity": "sha1-4XjhvaaKsujArPybztLFT9iM61g=" 1065 | }, 1066 | "pug-strip-comments": { 1067 | "version": "1.0.3", 1068 | "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.3.tgz", 1069 | "integrity": "sha1-8VWVkiBu3G+FMQ2s9K+0igJa9Z8=", 1070 | "requires": { 1071 | "pug-error": "1.3.2" 1072 | } 1073 | }, 1074 | "pug-walk": { 1075 | "version": "1.1.7", 1076 | "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.7.tgz", 1077 | "integrity": "sha1-wA1cUSi6xYBr7BXSt+fNq+QlMfM=" 1078 | }, 1079 | "qs": { 1080 | "version": "6.5.1", 1081 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", 1082 | "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" 1083 | }, 1084 | "querystringify": { 1085 | "version": "0.0.4", 1086 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", 1087 | "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=" 1088 | }, 1089 | "quick-lru": { 1090 | "version": "1.1.0", 1091 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", 1092 | "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" 1093 | }, 1094 | "random-bytes": { 1095 | "version": "1.0.0", 1096 | "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", 1097 | "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" 1098 | }, 1099 | "range-parser": { 1100 | "version": "1.2.0", 1101 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", 1102 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" 1103 | }, 1104 | "raw-body": { 1105 | "version": "2.3.2", 1106 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", 1107 | "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", 1108 | "requires": { 1109 | "bytes": "3.0.0", 1110 | "http-errors": "1.6.2", 1111 | "iconv-lite": "0.4.19", 1112 | "unpipe": "1.0.0" 1113 | }, 1114 | "dependencies": { 1115 | "http-errors": { 1116 | "version": "1.6.2", 1117 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", 1118 | "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", 1119 | "requires": { 1120 | "depd": "1.1.1", 1121 | "inherits": "2.0.3", 1122 | "setprototypeof": "1.0.3", 1123 | "statuses": "1.4.0" 1124 | } 1125 | }, 1126 | "setprototypeof": { 1127 | "version": "1.0.3", 1128 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", 1129 | "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" 1130 | } 1131 | } 1132 | }, 1133 | "read-pkg": { 1134 | "version": "3.0.0", 1135 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", 1136 | "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", 1137 | "requires": { 1138 | "load-json-file": "4.0.0", 1139 | "normalize-package-data": "2.4.0", 1140 | "path-type": "3.0.0" 1141 | } 1142 | }, 1143 | "read-pkg-up": { 1144 | "version": "3.0.0", 1145 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", 1146 | "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", 1147 | "requires": { 1148 | "find-up": "2.1.0", 1149 | "read-pkg": "3.0.0" 1150 | } 1151 | }, 1152 | "readable-stream": { 1153 | "version": "2.3.5", 1154 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", 1155 | "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", 1156 | "requires": { 1157 | "core-util-is": "1.0.2", 1158 | "inherits": "2.0.3", 1159 | "isarray": "1.0.0", 1160 | "process-nextick-args": "2.0.0", 1161 | "safe-buffer": "5.1.1", 1162 | "string_decoder": "1.0.3", 1163 | "util-deprecate": "1.0.2" 1164 | } 1165 | }, 1166 | "redent": { 1167 | "version": "2.0.0", 1168 | "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", 1169 | "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", 1170 | "requires": { 1171 | "indent-string": "3.2.0", 1172 | "strip-indent": "2.0.0" 1173 | } 1174 | }, 1175 | "regenerator-runtime": { 1176 | "version": "0.11.1", 1177 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 1178 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" 1179 | }, 1180 | "repeat-string": { 1181 | "version": "1.6.1", 1182 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 1183 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" 1184 | }, 1185 | "requires-port": { 1186 | "version": "1.0.0", 1187 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 1188 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" 1189 | }, 1190 | "resolve": { 1191 | "version": "1.6.0", 1192 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.6.0.tgz", 1193 | "integrity": "sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==", 1194 | "requires": { 1195 | "path-parse": "1.0.5" 1196 | } 1197 | }, 1198 | "right-align": { 1199 | "version": "0.1.3", 1200 | "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", 1201 | "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", 1202 | "requires": { 1203 | "align-text": "0.1.4" 1204 | } 1205 | }, 1206 | "rndm": { 1207 | "version": "1.2.0", 1208 | "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", 1209 | "integrity": "sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w=" 1210 | }, 1211 | "safe-buffer": { 1212 | "version": "5.1.1", 1213 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 1214 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" 1215 | }, 1216 | "semver": { 1217 | "version": "5.4.1", 1218 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", 1219 | "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" 1220 | }, 1221 | "send": { 1222 | "version": "0.16.2", 1223 | "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", 1224 | "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", 1225 | "requires": { 1226 | "debug": "2.6.9", 1227 | "depd": "1.1.2", 1228 | "destroy": "1.0.4", 1229 | "encodeurl": "1.0.2", 1230 | "escape-html": "1.0.3", 1231 | "etag": "1.8.1", 1232 | "fresh": "0.5.2", 1233 | "http-errors": "1.6.2", 1234 | "mime": "1.4.1", 1235 | "ms": "2.0.0", 1236 | "on-finished": "2.3.0", 1237 | "range-parser": "1.2.0", 1238 | "statuses": "1.4.0" 1239 | }, 1240 | "dependencies": { 1241 | "depd": { 1242 | "version": "1.1.2", 1243 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 1244 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 1245 | }, 1246 | "http-errors": { 1247 | "version": "1.6.2", 1248 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", 1249 | "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", 1250 | "requires": { 1251 | "depd": "1.1.1", 1252 | "inherits": "2.0.3", 1253 | "setprototypeof": "1.0.3", 1254 | "statuses": "1.4.0" 1255 | }, 1256 | "dependencies": { 1257 | "depd": { 1258 | "version": "1.1.1", 1259 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", 1260 | "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" 1261 | } 1262 | } 1263 | }, 1264 | "setprototypeof": { 1265 | "version": "1.0.3", 1266 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", 1267 | "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" 1268 | } 1269 | } 1270 | }, 1271 | "serve-static": { 1272 | "version": "1.13.2", 1273 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", 1274 | "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", 1275 | "requires": { 1276 | "encodeurl": "1.0.2", 1277 | "escape-html": "1.0.3", 1278 | "parseurl": "1.3.2", 1279 | "send": "0.16.2" 1280 | } 1281 | }, 1282 | "setprototypeof": { 1283 | "version": "1.0.2", 1284 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz", 1285 | "integrity": "sha1-gaVSFB7BBLiOic44MQOtXGZWTQg=" 1286 | }, 1287 | "signal-exit": { 1288 | "version": "3.0.2", 1289 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 1290 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" 1291 | }, 1292 | "source-map": { 1293 | "version": "0.5.7", 1294 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1295 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" 1296 | }, 1297 | "spdx-correct": { 1298 | "version": "1.0.2", 1299 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", 1300 | "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", 1301 | "requires": { 1302 | "spdx-license-ids": "1.2.2" 1303 | } 1304 | }, 1305 | "spdx-expression-parse": { 1306 | "version": "1.0.4", 1307 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", 1308 | "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" 1309 | }, 1310 | "spdx-license-ids": { 1311 | "version": "1.2.2", 1312 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", 1313 | "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" 1314 | }, 1315 | "statuses": { 1316 | "version": "1.4.0", 1317 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", 1318 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" 1319 | }, 1320 | "string_decoder": { 1321 | "version": "1.0.3", 1322 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 1323 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 1324 | "requires": { 1325 | "safe-buffer": "5.1.1" 1326 | } 1327 | }, 1328 | "strip-bom": { 1329 | "version": "3.0.0", 1330 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 1331 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" 1332 | }, 1333 | "strip-indent": { 1334 | "version": "2.0.0", 1335 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", 1336 | "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" 1337 | }, 1338 | "superagent": { 1339 | "version": "3.8.2", 1340 | "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", 1341 | "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", 1342 | "requires": { 1343 | "component-emitter": "1.2.1", 1344 | "cookiejar": "2.1.1", 1345 | "debug": "3.1.0", 1346 | "extend": "3.0.1", 1347 | "form-data": "2.3.2", 1348 | "formidable": "1.2.1", 1349 | "methods": "1.1.2", 1350 | "mime": "1.4.1", 1351 | "qs": "6.5.1", 1352 | "readable-stream": "2.3.5" 1353 | }, 1354 | "dependencies": { 1355 | "debug": { 1356 | "version": "3.1.0", 1357 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 1358 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 1359 | "requires": { 1360 | "ms": "2.0.0" 1361 | } 1362 | } 1363 | } 1364 | }, 1365 | "superagent-baseuri": { 1366 | "version": "0.1.1", 1367 | "resolved": "https://registry.npmjs.org/superagent-baseuri/-/superagent-baseuri-0.1.1.tgz", 1368 | "integrity": "sha1-uWsH2//DwY2yL7GGNI5/DMTPquk=", 1369 | "requires": { 1370 | "superagent-prefix": "0.0.2", 1371 | "superagent-use": "git://github.com/shesek/superagent-use.git#30b946f04608c6e894162dee4afab10eeb4251af" 1372 | } 1373 | }, 1374 | "superagent-prefix": { 1375 | "version": "0.0.2", 1376 | "resolved": "https://registry.npmjs.org/superagent-prefix/-/superagent-prefix-0.0.2.tgz", 1377 | "integrity": "sha1-sVu7E1P4ibANJa8QtPEbNQ0gOwY=" 1378 | }, 1379 | "superagent-use": { 1380 | "version": "git://github.com/shesek/superagent-use.git#30b946f04608c6e894162dee4afab10eeb4251af", 1381 | "requires": { 1382 | "extend": "3.0.1", 1383 | "methods": "1.1.2" 1384 | } 1385 | }, 1386 | "to-fast-properties": { 1387 | "version": "1.0.3", 1388 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 1389 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" 1390 | }, 1391 | "token-stream": { 1392 | "version": "0.0.1", 1393 | "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", 1394 | "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=" 1395 | }, 1396 | "trim-newlines": { 1397 | "version": "2.0.0", 1398 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", 1399 | "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=" 1400 | }, 1401 | "tsscmp": { 1402 | "version": "1.0.5", 1403 | "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", 1404 | "integrity": "sha1-fcSjOvcVgatDN9qR2FylQn69mpc=" 1405 | }, 1406 | "type-is": { 1407 | "version": "1.6.15", 1408 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", 1409 | "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", 1410 | "requires": { 1411 | "media-typer": "0.3.0", 1412 | "mime-types": "2.1.17" 1413 | } 1414 | }, 1415 | "uglify-js": { 1416 | "version": "2.8.29", 1417 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", 1418 | "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", 1419 | "requires": { 1420 | "source-map": "0.5.7", 1421 | "uglify-to-browserify": "1.0.2", 1422 | "yargs": "3.10.0" 1423 | } 1424 | }, 1425 | "uglify-to-browserify": { 1426 | "version": "1.0.2", 1427 | "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", 1428 | "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", 1429 | "optional": true 1430 | }, 1431 | "uid-safe": { 1432 | "version": "2.1.4", 1433 | "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.4.tgz", 1434 | "integrity": "sha1-Otbzg2jG1MjHXsF2I/t5qh0HHYE=", 1435 | "requires": { 1436 | "random-bytes": "1.0.0" 1437 | } 1438 | }, 1439 | "unpipe": { 1440 | "version": "1.0.0", 1441 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1442 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 1443 | }, 1444 | "url-parse": { 1445 | "version": "1.0.5", 1446 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", 1447 | "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", 1448 | "requires": { 1449 | "querystringify": "0.0.4", 1450 | "requires-port": "1.0.0" 1451 | } 1452 | }, 1453 | "util-deprecate": { 1454 | "version": "1.0.2", 1455 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1456 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1457 | }, 1458 | "utils-merge": { 1459 | "version": "1.0.1", 1460 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1461 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 1462 | }, 1463 | "validate-npm-package-license": { 1464 | "version": "3.0.1", 1465 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", 1466 | "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", 1467 | "requires": { 1468 | "spdx-correct": "1.0.2", 1469 | "spdx-expression-parse": "1.0.4" 1470 | } 1471 | }, 1472 | "vary": { 1473 | "version": "1.1.2", 1474 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1475 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 1476 | }, 1477 | "void-elements": { 1478 | "version": "2.0.1", 1479 | "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", 1480 | "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" 1481 | }, 1482 | "window-size": { 1483 | "version": "0.1.0", 1484 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", 1485 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" 1486 | }, 1487 | "with": { 1488 | "version": "5.1.1", 1489 | "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", 1490 | "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", 1491 | "requires": { 1492 | "acorn": "3.3.0", 1493 | "acorn-globals": "3.1.0" 1494 | } 1495 | }, 1496 | "wordwrap": { 1497 | "version": "0.0.2", 1498 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", 1499 | "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" 1500 | }, 1501 | "yargs": { 1502 | "version": "3.10.0", 1503 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", 1504 | "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", 1505 | "requires": { 1506 | "camelcase": "1.2.1", 1507 | "cliui": "2.1.0", 1508 | "decamelize": "1.2.0", 1509 | "window-size": "0.1.0" 1510 | }, 1511 | "dependencies": { 1512 | "camelcase": { 1513 | "version": "1.2.1", 1514 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", 1515 | "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" 1516 | } 1517 | } 1518 | } 1519 | } 1520 | } 1521 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nanotip", 3 | "version": "0.1.1", 4 | "description": "Lightning Tip Box", 5 | "bin": { 6 | "nanotipd": "nanotipd", 7 | "nanotip": "nanotipd" 8 | }, 9 | "scripts": { 10 | "start": "./nanotipd" 11 | }, 12 | "repository": "https://github.com/ElementsProject/nanotip.git", 13 | "keywords": [ 14 | "bitcoin", 15 | "lightning", 16 | "lightning-charge", 17 | "tip", 18 | "tipjar", 19 | "donation", 20 | "gratuity", 21 | "nanotip" 22 | ], 23 | "author": "Nadav Ivgi", 24 | "license": "MIT", 25 | "dependencies": { 26 | "body-parser": "^1.18.2", 27 | "bootswatch": "^4.0.0", 28 | "cookie-parser": "^1.4.3", 29 | "csurf": "^1.9.0", 30 | "express": "^4.16.3", 31 | "lightning-charge-client": "^0.1.7", 32 | "meow": "^4.0.0", 33 | "morgan": "^1.9.0", 34 | "pug": "^2.0.3" 35 | } 36 | } 37 | --------------------------------------------------------------------------------