├── .gitignore ├── LICENSE ├── README.md ├── config.sample.yml ├── package-lock.json ├── package.json ├── registration.sample.yml ├── src ├── app.ts ├── config.ts └── keybasebridge.ts ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # next.js build output 61 | .next 62 | 63 | lib 64 | data.json 65 | 66 | tsconfig.tsbuildinfo 67 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Will Hunt 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🚨 Discontinued 2 | 3 | This project has been discontinued. [Zoom recently acquired Keybase](https://news.ycombinator.com/item?id=23102430) and interest in using Keybase as a secure messaging system has dried up. Rather than continuing work on a bridge, I'd suggest migrating to Matrix if possible. 4 | 5 | # matrix-keybase 6 | A matrix <-> keybase bridge 7 | 8 | ## What can it do? 9 | 10 | - Log in 11 | - Simple DMs between two people sending text 12 | 13 | ## Setup 14 | 15 | 16 | ```bash 17 | git clone git@github.com:Half-Shot/matrix-keybase.git 18 | cd matrix-keybase 19 | yarn 20 | yarn build 21 | ``` 22 | 23 | - Fill in `config.yml` using the provided `config.sample.yml` 24 | - Fill in `registration.yml` using the provided `registration.sample.yml` 25 | - Link `registration.yml` in your homeservers configuration 26 | 27 | ```bash 28 | node ./lib/app.js 29 | ``` 30 | 31 | ## Usage 32 | 33 | - Invite `@keybase:domain` to a 1:1 room and send a message containing `!login username paper key with spaces`. 34 | - Wait for it to tell you that you are connected. 35 | - Tell someone to message you. 36 | - Accept thy invite. 37 | - Two way messaging success! 38 | 39 | ## Future Plans 40 | 41 | - Full profile support 42 | - Following/accepting and revoking users 43 | - Support for wallet functionality 44 | - Richer messsage formatting 45 | - File support 46 | - Initiating DMs from matrix 47 | - Group support. 48 | -------------------------------------------------------------------------------- /config.sample.yml: -------------------------------------------------------------------------------- 1 | appservice: 2 | bindAddress: "127.0.0.1" 3 | port: 55441 4 | 5 | homeserver: 6 | domain: "halfpint" 7 | url: "http://localhost:8008" -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "matrix-keybase", 3 | "version": "0.0.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.5.5", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", 10 | "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", 11 | "requires": { 12 | "@babel/highlight": "^7.0.0" 13 | } 14 | }, 15 | "@babel/highlight": { 16 | "version": "7.5.0", 17 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", 18 | "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", 19 | "requires": { 20 | "chalk": "^2.0.0", 21 | "esutils": "^2.0.2", 22 | "js-tokens": "^4.0.0" 23 | } 24 | }, 25 | "@babel/runtime": { 26 | "version": "7.6.0", 27 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.0.tgz", 28 | "integrity": "sha512-89eSBLJsxNxOERC0Op4vd+0Bqm6wRMqMbFtV3i0/fbaWw/mJ8Q3eBvgX0G4SyrOOLCtbu98HspF8o09MRT+KzQ==", 29 | "requires": { 30 | "regenerator-runtime": "^0.13.2" 31 | } 32 | }, 33 | "@types/node": { 34 | "version": "8.10.54", 35 | "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.54.tgz", 36 | "integrity": "sha512-kaYyLYf6ICn6/isAyD4K1MyWWd5Q3JgH6bnMN089LUx88+s4W8GvK9Q6JMBVu5vsFFp7pMdSxdKmlBXwH/VFRg==" 37 | }, 38 | "@types/yaml": { 39 | "version": "1.0.2", 40 | "resolved": "https://registry.npmjs.org/@types/yaml/-/yaml-1.0.2.tgz", 41 | "integrity": "sha512-rS1VJFjyGKNHk8H97COnPIK+oeLnc0J9G0ES63o/Ky+WlJCeaFGiGCTGhV/GEVKua7ZWIV1JIDopYUwrfvTo7A==", 42 | "dev": true 43 | }, 44 | "accepts": { 45 | "version": "1.3.7", 46 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 47 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 48 | "requires": { 49 | "mime-types": "~2.1.24", 50 | "negotiator": "0.6.2" 51 | } 52 | }, 53 | "ajv": { 54 | "version": "6.10.2", 55 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", 56 | "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", 57 | "requires": { 58 | "fast-deep-equal": "^2.0.1", 59 | "fast-json-stable-stringify": "^2.0.0", 60 | "json-schema-traverse": "^0.4.1", 61 | "uri-js": "^4.2.2" 62 | } 63 | }, 64 | "ansi-styles": { 65 | "version": "3.2.1", 66 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 67 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 68 | "requires": { 69 | "color-convert": "^1.9.0" 70 | } 71 | }, 72 | "argparse": { 73 | "version": "1.0.10", 74 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 75 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 76 | "requires": { 77 | "sprintf-js": "~1.0.2" 78 | } 79 | }, 80 | "array-flatten": { 81 | "version": "1.1.1", 82 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 83 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 84 | }, 85 | "array-uniq": { 86 | "version": "1.0.3", 87 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 88 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" 89 | }, 90 | "asn1": { 91 | "version": "0.2.4", 92 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 93 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", 94 | "requires": { 95 | "safer-buffer": "~2.1.0" 96 | } 97 | }, 98 | "assert-plus": { 99 | "version": "1.0.0", 100 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 101 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 102 | }, 103 | "asynckit": { 104 | "version": "0.4.0", 105 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 106 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 107 | }, 108 | "aws-sign2": { 109 | "version": "0.7.0", 110 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 111 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" 112 | }, 113 | "aws4": { 114 | "version": "1.8.0", 115 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", 116 | "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" 117 | }, 118 | "balanced-match": { 119 | "version": "1.0.0", 120 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 121 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 122 | }, 123 | "basic-auth": { 124 | "version": "2.0.1", 125 | "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", 126 | "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", 127 | "requires": { 128 | "safe-buffer": "5.1.2" 129 | } 130 | }, 131 | "bcrypt-pbkdf": { 132 | "version": "1.0.2", 133 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 134 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", 135 | "requires": { 136 | "tweetnacl": "^0.14.3" 137 | } 138 | }, 139 | "bluebird": { 140 | "version": "3.5.5", 141 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", 142 | "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==" 143 | }, 144 | "body-parser": { 145 | "version": "1.19.0", 146 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 147 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 148 | "requires": { 149 | "bytes": "3.1.0", 150 | "content-type": "~1.0.4", 151 | "debug": "2.6.9", 152 | "depd": "~1.1.2", 153 | "http-errors": "1.7.2", 154 | "iconv-lite": "0.4.24", 155 | "on-finished": "~2.3.0", 156 | "qs": "6.7.0", 157 | "raw-body": "2.4.0", 158 | "type-is": "~1.6.17" 159 | } 160 | }, 161 | "brace-expansion": { 162 | "version": "1.1.11", 163 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 164 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 165 | "requires": { 166 | "balanced-match": "^1.0.0", 167 | "concat-map": "0.0.1" 168 | } 169 | }, 170 | "builtin-modules": { 171 | "version": "1.1.1", 172 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 173 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" 174 | }, 175 | "bytes": { 176 | "version": "3.1.0", 177 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 178 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 179 | }, 180 | "caseless": { 181 | "version": "0.12.0", 182 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 183 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 184 | }, 185 | "chalk": { 186 | "version": "2.4.2", 187 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 188 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 189 | "requires": { 190 | "ansi-styles": "^3.2.1", 191 | "escape-string-regexp": "^1.0.5", 192 | "supports-color": "^5.3.0" 193 | } 194 | }, 195 | "color-convert": { 196 | "version": "1.9.3", 197 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 198 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 199 | "requires": { 200 | "color-name": "1.1.3" 201 | } 202 | }, 203 | "color-name": { 204 | "version": "1.1.3", 205 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 206 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 207 | }, 208 | "combined-stream": { 209 | "version": "1.0.8", 210 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 211 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 212 | "requires": { 213 | "delayed-stream": "~1.0.0" 214 | } 215 | }, 216 | "commander": { 217 | "version": "2.20.0", 218 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", 219 | "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" 220 | }, 221 | "concat-map": { 222 | "version": "0.0.1", 223 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 224 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 225 | }, 226 | "content-disposition": { 227 | "version": "0.5.3", 228 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 229 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 230 | "requires": { 231 | "safe-buffer": "5.1.2" 232 | } 233 | }, 234 | "content-type": { 235 | "version": "1.0.4", 236 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 237 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 238 | }, 239 | "cookie": { 240 | "version": "0.4.0", 241 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 242 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 243 | }, 244 | "cookie-signature": { 245 | "version": "1.0.6", 246 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 247 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 248 | }, 249 | "core-util-is": { 250 | "version": "1.0.2", 251 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 252 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 253 | }, 254 | "dashdash": { 255 | "version": "1.14.1", 256 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 257 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 258 | "requires": { 259 | "assert-plus": "^1.0.0" 260 | } 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 | "delayed-stream": { 271 | "version": "1.0.0", 272 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 273 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 274 | }, 275 | "depd": { 276 | "version": "1.1.2", 277 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 278 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 279 | }, 280 | "destroy": { 281 | "version": "1.0.4", 282 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 283 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 284 | }, 285 | "diff": { 286 | "version": "4.0.1", 287 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", 288 | "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==" 289 | }, 290 | "dom-serializer": { 291 | "version": "0.2.1", 292 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.1.tgz", 293 | "integrity": "sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q==", 294 | "requires": { 295 | "domelementtype": "^2.0.1", 296 | "entities": "^2.0.0" 297 | }, 298 | "dependencies": { 299 | "domelementtype": { 300 | "version": "2.0.1", 301 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", 302 | "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==" 303 | }, 304 | "entities": { 305 | "version": "2.0.0", 306 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", 307 | "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==" 308 | } 309 | } 310 | }, 311 | "domelementtype": { 312 | "version": "1.3.1", 313 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", 314 | "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" 315 | }, 316 | "domhandler": { 317 | "version": "2.4.2", 318 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", 319 | "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", 320 | "requires": { 321 | "domelementtype": "1" 322 | } 323 | }, 324 | "domutils": { 325 | "version": "1.7.0", 326 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", 327 | "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", 328 | "requires": { 329 | "dom-serializer": "0", 330 | "domelementtype": "1" 331 | } 332 | }, 333 | "ecc-jsbn": { 334 | "version": "0.1.2", 335 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 336 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", 337 | "requires": { 338 | "jsbn": "~0.1.0", 339 | "safer-buffer": "^2.1.0" 340 | } 341 | }, 342 | "ee-first": { 343 | "version": "1.1.1", 344 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 345 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 346 | }, 347 | "encodeurl": { 348 | "version": "1.0.2", 349 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 350 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 351 | }, 352 | "entities": { 353 | "version": "1.1.2", 354 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", 355 | "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" 356 | }, 357 | "escape-html": { 358 | "version": "1.0.3", 359 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 360 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 361 | }, 362 | "escape-string-regexp": { 363 | "version": "1.0.5", 364 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 365 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 366 | }, 367 | "esprima": { 368 | "version": "4.0.1", 369 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 370 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" 371 | }, 372 | "esutils": { 373 | "version": "2.0.3", 374 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 375 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" 376 | }, 377 | "etag": { 378 | "version": "1.8.1", 379 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 380 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 381 | }, 382 | "express": { 383 | "version": "4.17.1", 384 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 385 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 386 | "requires": { 387 | "accepts": "~1.3.7", 388 | "array-flatten": "1.1.1", 389 | "body-parser": "1.19.0", 390 | "content-disposition": "0.5.3", 391 | "content-type": "~1.0.4", 392 | "cookie": "0.4.0", 393 | "cookie-signature": "1.0.6", 394 | "debug": "2.6.9", 395 | "depd": "~1.1.2", 396 | "encodeurl": "~1.0.2", 397 | "escape-html": "~1.0.3", 398 | "etag": "~1.8.1", 399 | "finalhandler": "~1.1.2", 400 | "fresh": "0.5.2", 401 | "merge-descriptors": "1.0.1", 402 | "methods": "~1.1.2", 403 | "on-finished": "~2.3.0", 404 | "parseurl": "~1.3.3", 405 | "path-to-regexp": "0.1.7", 406 | "proxy-addr": "~2.0.5", 407 | "qs": "6.7.0", 408 | "range-parser": "~1.2.1", 409 | "safe-buffer": "5.1.2", 410 | "send": "0.17.1", 411 | "serve-static": "1.14.1", 412 | "setprototypeof": "1.1.1", 413 | "statuses": "~1.5.0", 414 | "type-is": "~1.6.18", 415 | "utils-merge": "1.0.1", 416 | "vary": "~1.1.2" 417 | } 418 | }, 419 | "extend": { 420 | "version": "3.0.2", 421 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 422 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 423 | }, 424 | "extsprintf": { 425 | "version": "1.3.0", 426 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 427 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" 428 | }, 429 | "fast-deep-equal": { 430 | "version": "2.0.1", 431 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", 432 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" 433 | }, 434 | "fast-json-stable-stringify": { 435 | "version": "2.0.0", 436 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 437 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" 438 | }, 439 | "finalhandler": { 440 | "version": "1.1.2", 441 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 442 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 443 | "requires": { 444 | "debug": "2.6.9", 445 | "encodeurl": "~1.0.2", 446 | "escape-html": "~1.0.3", 447 | "on-finished": "~2.3.0", 448 | "parseurl": "~1.3.3", 449 | "statuses": "~1.5.0", 450 | "unpipe": "~1.0.0" 451 | } 452 | }, 453 | "forever-agent": { 454 | "version": "0.6.1", 455 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 456 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 457 | }, 458 | "form-data": { 459 | "version": "2.3.3", 460 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 461 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 462 | "requires": { 463 | "asynckit": "^0.4.0", 464 | "combined-stream": "^1.0.6", 465 | "mime-types": "^2.1.12" 466 | } 467 | }, 468 | "forwarded": { 469 | "version": "0.1.2", 470 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 471 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 472 | }, 473 | "fresh": { 474 | "version": "0.5.2", 475 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 476 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 477 | }, 478 | "fs.realpath": { 479 | "version": "1.0.0", 480 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 481 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 482 | }, 483 | "getpass": { 484 | "version": "0.1.7", 485 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 486 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 487 | "requires": { 488 | "assert-plus": "^1.0.0" 489 | } 490 | }, 491 | "glob": { 492 | "version": "7.1.4", 493 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", 494 | "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", 495 | "requires": { 496 | "fs.realpath": "^1.0.0", 497 | "inflight": "^1.0.4", 498 | "inherits": "2", 499 | "minimatch": "^3.0.4", 500 | "once": "^1.3.0", 501 | "path-is-absolute": "^1.0.0" 502 | } 503 | }, 504 | "graceful-fs": { 505 | "version": "4.2.2", 506 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", 507 | "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==" 508 | }, 509 | "har-schema": { 510 | "version": "2.0.0", 511 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 512 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" 513 | }, 514 | "har-validator": { 515 | "version": "5.1.3", 516 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", 517 | "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", 518 | "requires": { 519 | "ajv": "^6.5.5", 520 | "har-schema": "^2.0.0" 521 | } 522 | }, 523 | "has-flag": { 524 | "version": "3.0.0", 525 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 526 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 527 | }, 528 | "hash.js": { 529 | "version": "1.1.7", 530 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", 531 | "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", 532 | "requires": { 533 | "inherits": "^2.0.3", 534 | "minimalistic-assert": "^1.0.1" 535 | } 536 | }, 537 | "htmlencode": { 538 | "version": "0.0.4", 539 | "resolved": "https://registry.npmjs.org/htmlencode/-/htmlencode-0.0.4.tgz", 540 | "integrity": "sha1-9+LWr74YqHp45jujMI51N2Z0Dj8=" 541 | }, 542 | "htmlparser2": { 543 | "version": "3.10.1", 544 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", 545 | "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", 546 | "requires": { 547 | "domelementtype": "^1.3.1", 548 | "domhandler": "^2.3.0", 549 | "domutils": "^1.5.1", 550 | "entities": "^1.1.1", 551 | "inherits": "^2.0.1", 552 | "readable-stream": "^3.1.1" 553 | } 554 | }, 555 | "http-errors": { 556 | "version": "1.7.2", 557 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 558 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 559 | "requires": { 560 | "depd": "~1.1.2", 561 | "inherits": "2.0.3", 562 | "setprototypeof": "1.1.1", 563 | "statuses": ">= 1.5.0 < 2", 564 | "toidentifier": "1.0.0" 565 | } 566 | }, 567 | "http-signature": { 568 | "version": "1.2.0", 569 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 570 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 571 | "requires": { 572 | "assert-plus": "^1.0.0", 573 | "jsprim": "^1.2.2", 574 | "sshpk": "^1.7.0" 575 | } 576 | }, 577 | "iconv-lite": { 578 | "version": "0.4.24", 579 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 580 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 581 | "requires": { 582 | "safer-buffer": ">= 2.1.2 < 3" 583 | } 584 | }, 585 | "inflight": { 586 | "version": "1.0.6", 587 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 588 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 589 | "requires": { 590 | "once": "^1.3.0", 591 | "wrappy": "1" 592 | } 593 | }, 594 | "inherits": { 595 | "version": "2.0.3", 596 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 597 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 598 | }, 599 | "ipaddr.js": { 600 | "version": "1.9.0", 601 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", 602 | "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" 603 | }, 604 | "is-promise": { 605 | "version": "2.1.0", 606 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 607 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" 608 | }, 609 | "is-typedarray": { 610 | "version": "1.0.0", 611 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 612 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 613 | }, 614 | "isstream": { 615 | "version": "0.1.2", 616 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 617 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 618 | }, 619 | "js-tokens": { 620 | "version": "4.0.0", 621 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 622 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 623 | }, 624 | "js-yaml": { 625 | "version": "3.13.1", 626 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 627 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 628 | "requires": { 629 | "argparse": "^1.0.7", 630 | "esprima": "^4.0.0" 631 | } 632 | }, 633 | "jsbn": { 634 | "version": "0.1.1", 635 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 636 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" 637 | }, 638 | "json-schema": { 639 | "version": "0.2.3", 640 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 641 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 642 | }, 643 | "json-schema-traverse": { 644 | "version": "0.4.1", 645 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 646 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 647 | }, 648 | "json-stringify-safe": { 649 | "version": "5.0.1", 650 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 651 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 652 | }, 653 | "jsprim": { 654 | "version": "1.4.1", 655 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", 656 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 657 | "requires": { 658 | "assert-plus": "1.0.0", 659 | "extsprintf": "1.3.0", 660 | "json-schema": "0.2.3", 661 | "verror": "1.10.0" 662 | } 663 | }, 664 | "lodash": { 665 | "version": "4.17.15", 666 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 667 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" 668 | }, 669 | "lodash.clonedeep": { 670 | "version": "4.5.0", 671 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", 672 | "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" 673 | }, 674 | "lodash.escaperegexp": { 675 | "version": "4.1.2", 676 | "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", 677 | "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" 678 | }, 679 | "lodash.isplainobject": { 680 | "version": "4.0.6", 681 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 682 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" 683 | }, 684 | "lodash.isstring": { 685 | "version": "4.0.1", 686 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 687 | "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" 688 | }, 689 | "lodash.mergewith": { 690 | "version": "4.6.2", 691 | "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", 692 | "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" 693 | }, 694 | "lowdb": { 695 | "version": "1.0.0", 696 | "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz", 697 | "integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==", 698 | "requires": { 699 | "graceful-fs": "^4.1.3", 700 | "is-promise": "^2.1.0", 701 | "lodash": "4", 702 | "pify": "^3.0.0", 703 | "steno": "^0.4.1" 704 | } 705 | }, 706 | "matrix-bot-sdk": { 707 | "version": "0.3.9", 708 | "requires": { 709 | "@types/node": "^8.10.34", 710 | "bluebird": "^3.5.2", 711 | "express": "^4.16.4", 712 | "hash.js": "^1.1.7", 713 | "htmlencode": "0.0.4", 714 | "lowdb": "^1.0.0", 715 | "morgan": "^1.9.1", 716 | "request": "^2.88.0", 717 | "request-promise": "^4.2.2", 718 | "sanitize-html": "^1.20.0", 719 | "tslint": "^5.11.0", 720 | "typescript": "^3.1.1" 721 | } 722 | }, 723 | "media-typer": { 724 | "version": "0.3.0", 725 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 726 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 727 | }, 728 | "merge-descriptors": { 729 | "version": "1.0.1", 730 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 731 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 732 | }, 733 | "methods": { 734 | "version": "1.1.2", 735 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 736 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 737 | }, 738 | "mime": { 739 | "version": "1.6.0", 740 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 741 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 742 | }, 743 | "mime-db": { 744 | "version": "1.40.0", 745 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", 746 | "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" 747 | }, 748 | "mime-types": { 749 | "version": "2.1.24", 750 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", 751 | "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", 752 | "requires": { 753 | "mime-db": "1.40.0" 754 | } 755 | }, 756 | "minimalistic-assert": { 757 | "version": "1.0.1", 758 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 759 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" 760 | }, 761 | "minimatch": { 762 | "version": "3.0.4", 763 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 764 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 765 | "requires": { 766 | "brace-expansion": "^1.1.7" 767 | } 768 | }, 769 | "minimist": { 770 | "version": "0.0.8", 771 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 772 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 773 | }, 774 | "mkdirp": { 775 | "version": "0.5.1", 776 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 777 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 778 | "requires": { 779 | "minimist": "0.0.8" 780 | } 781 | }, 782 | "morgan": { 783 | "version": "1.9.1", 784 | "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", 785 | "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", 786 | "requires": { 787 | "basic-auth": "~2.0.0", 788 | "debug": "2.6.9", 789 | "depd": "~1.1.2", 790 | "on-finished": "~2.3.0", 791 | "on-headers": "~1.0.1" 792 | } 793 | }, 794 | "ms": { 795 | "version": "2.0.0", 796 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 797 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 798 | }, 799 | "negotiator": { 800 | "version": "0.6.2", 801 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 802 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 803 | }, 804 | "number-is-nan": { 805 | "version": "1.0.1", 806 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 807 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" 808 | }, 809 | "oauth-sign": { 810 | "version": "0.9.0", 811 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 812 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" 813 | }, 814 | "on-finished": { 815 | "version": "2.3.0", 816 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 817 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 818 | "requires": { 819 | "ee-first": "1.1.1" 820 | } 821 | }, 822 | "on-headers": { 823 | "version": "1.0.2", 824 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", 825 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" 826 | }, 827 | "once": { 828 | "version": "1.4.0", 829 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 830 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 831 | "requires": { 832 | "wrappy": "1" 833 | } 834 | }, 835 | "parseurl": { 836 | "version": "1.3.3", 837 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 838 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 839 | }, 840 | "path-is-absolute": { 841 | "version": "1.0.1", 842 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 843 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 844 | }, 845 | "path-parse": { 846 | "version": "1.0.6", 847 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 848 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" 849 | }, 850 | "path-to-regexp": { 851 | "version": "0.1.7", 852 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 853 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 854 | }, 855 | "performance-now": { 856 | "version": "2.1.0", 857 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 858 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 859 | }, 860 | "pify": { 861 | "version": "3.0.0", 862 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 863 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" 864 | }, 865 | "postcss": { 866 | "version": "7.0.18", 867 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.18.tgz", 868 | "integrity": "sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g==", 869 | "requires": { 870 | "chalk": "^2.4.2", 871 | "source-map": "^0.6.1", 872 | "supports-color": "^6.1.0" 873 | }, 874 | "dependencies": { 875 | "supports-color": { 876 | "version": "6.1.0", 877 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", 878 | "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", 879 | "requires": { 880 | "has-flag": "^3.0.0" 881 | } 882 | } 883 | } 884 | }, 885 | "proxy-addr": { 886 | "version": "2.0.5", 887 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", 888 | "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", 889 | "requires": { 890 | "forwarded": "~0.1.2", 891 | "ipaddr.js": "1.9.0" 892 | } 893 | }, 894 | "psl": { 895 | "version": "1.4.0", 896 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", 897 | "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==" 898 | }, 899 | "punycode": { 900 | "version": "2.1.1", 901 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 902 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 903 | }, 904 | "qs": { 905 | "version": "6.7.0", 906 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 907 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 908 | }, 909 | "range-parser": { 910 | "version": "1.2.1", 911 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 912 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 913 | }, 914 | "raw-body": { 915 | "version": "2.4.0", 916 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 917 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 918 | "requires": { 919 | "bytes": "3.1.0", 920 | "http-errors": "1.7.2", 921 | "iconv-lite": "0.4.24", 922 | "unpipe": "1.0.0" 923 | } 924 | }, 925 | "readable-stream": { 926 | "version": "3.4.0", 927 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", 928 | "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", 929 | "requires": { 930 | "inherits": "^2.0.3", 931 | "string_decoder": "^1.1.1", 932 | "util-deprecate": "^1.0.1" 933 | } 934 | }, 935 | "regenerator-runtime": { 936 | "version": "0.13.3", 937 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", 938 | "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" 939 | }, 940 | "request": { 941 | "version": "2.88.0", 942 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", 943 | "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", 944 | "requires": { 945 | "aws-sign2": "~0.7.0", 946 | "aws4": "^1.8.0", 947 | "caseless": "~0.12.0", 948 | "combined-stream": "~1.0.6", 949 | "extend": "~3.0.2", 950 | "forever-agent": "~0.6.1", 951 | "form-data": "~2.3.2", 952 | "har-validator": "~5.1.0", 953 | "http-signature": "~1.2.0", 954 | "is-typedarray": "~1.0.0", 955 | "isstream": "~0.1.2", 956 | "json-stringify-safe": "~5.0.1", 957 | "mime-types": "~2.1.19", 958 | "oauth-sign": "~0.9.0", 959 | "performance-now": "^2.1.0", 960 | "qs": "~6.5.2", 961 | "safe-buffer": "^5.1.2", 962 | "tough-cookie": "~2.4.3", 963 | "tunnel-agent": "^0.6.0", 964 | "uuid": "^3.3.2" 965 | }, 966 | "dependencies": { 967 | "qs": { 968 | "version": "6.5.2", 969 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", 970 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" 971 | } 972 | } 973 | }, 974 | "request-promise": { 975 | "version": "4.2.4", 976 | "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.4.tgz", 977 | "integrity": "sha512-8wgMrvE546PzbR5WbYxUQogUnUDfM0S7QIFZMID+J73vdFARkFy+HElj4T+MWYhpXwlLp0EQ8Zoj8xUA0he4Vg==", 978 | "requires": { 979 | "bluebird": "^3.5.0", 980 | "request-promise-core": "1.1.2", 981 | "stealthy-require": "^1.1.1", 982 | "tough-cookie": "^2.3.3" 983 | } 984 | }, 985 | "request-promise-core": { 986 | "version": "1.1.2", 987 | "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", 988 | "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", 989 | "requires": { 990 | "lodash": "^4.17.11" 991 | } 992 | }, 993 | "resolve": { 994 | "version": "1.12.0", 995 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", 996 | "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", 997 | "requires": { 998 | "path-parse": "^1.0.6" 999 | } 1000 | }, 1001 | "safe-buffer": { 1002 | "version": "5.1.2", 1003 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1004 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1005 | }, 1006 | "safer-buffer": { 1007 | "version": "2.1.2", 1008 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1009 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1010 | }, 1011 | "sanitize-html": { 1012 | "version": "1.20.1", 1013 | "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.20.1.tgz", 1014 | "integrity": "sha512-txnH8TQjaQvg2Q0HY06G6CDJLVYCpbnxrdO0WN8gjCKaU5J0KbyGYhZxx5QJg3WLZ1lB7XU9kDkfrCXUozqptA==", 1015 | "requires": { 1016 | "chalk": "^2.4.1", 1017 | "htmlparser2": "^3.10.0", 1018 | "lodash.clonedeep": "^4.5.0", 1019 | "lodash.escaperegexp": "^4.1.2", 1020 | "lodash.isplainobject": "^4.0.6", 1021 | "lodash.isstring": "^4.0.1", 1022 | "lodash.mergewith": "^4.6.1", 1023 | "postcss": "^7.0.5", 1024 | "srcset": "^1.0.0", 1025 | "xtend": "^4.0.1" 1026 | } 1027 | }, 1028 | "semver": { 1029 | "version": "5.7.1", 1030 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1031 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 1032 | }, 1033 | "send": { 1034 | "version": "0.17.1", 1035 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 1036 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 1037 | "requires": { 1038 | "debug": "2.6.9", 1039 | "depd": "~1.1.2", 1040 | "destroy": "~1.0.4", 1041 | "encodeurl": "~1.0.2", 1042 | "escape-html": "~1.0.3", 1043 | "etag": "~1.8.1", 1044 | "fresh": "0.5.2", 1045 | "http-errors": "~1.7.2", 1046 | "mime": "1.6.0", 1047 | "ms": "2.1.1", 1048 | "on-finished": "~2.3.0", 1049 | "range-parser": "~1.2.1", 1050 | "statuses": "~1.5.0" 1051 | }, 1052 | "dependencies": { 1053 | "ms": { 1054 | "version": "2.1.1", 1055 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1056 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 1057 | } 1058 | } 1059 | }, 1060 | "serve-static": { 1061 | "version": "1.14.1", 1062 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 1063 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 1064 | "requires": { 1065 | "encodeurl": "~1.0.2", 1066 | "escape-html": "~1.0.3", 1067 | "parseurl": "~1.3.3", 1068 | "send": "0.17.1" 1069 | } 1070 | }, 1071 | "setprototypeof": { 1072 | "version": "1.1.1", 1073 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 1074 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 1075 | }, 1076 | "source-map": { 1077 | "version": "0.6.1", 1078 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1079 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 1080 | }, 1081 | "sprintf-js": { 1082 | "version": "1.0.3", 1083 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1084 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 1085 | }, 1086 | "srcset": { 1087 | "version": "1.0.0", 1088 | "resolved": "https://registry.npmjs.org/srcset/-/srcset-1.0.0.tgz", 1089 | "integrity": "sha1-pWad4StC87HV6D7QPHEEb8SPQe8=", 1090 | "requires": { 1091 | "array-uniq": "^1.0.2", 1092 | "number-is-nan": "^1.0.0" 1093 | } 1094 | }, 1095 | "sshpk": { 1096 | "version": "1.16.1", 1097 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", 1098 | "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", 1099 | "requires": { 1100 | "asn1": "~0.2.3", 1101 | "assert-plus": "^1.0.0", 1102 | "bcrypt-pbkdf": "^1.0.0", 1103 | "dashdash": "^1.12.0", 1104 | "ecc-jsbn": "~0.1.1", 1105 | "getpass": "^0.1.1", 1106 | "jsbn": "~0.1.0", 1107 | "safer-buffer": "^2.0.2", 1108 | "tweetnacl": "~0.14.0" 1109 | } 1110 | }, 1111 | "statuses": { 1112 | "version": "1.5.0", 1113 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1114 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 1115 | }, 1116 | "stealthy-require": { 1117 | "version": "1.1.1", 1118 | "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", 1119 | "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" 1120 | }, 1121 | "steno": { 1122 | "version": "0.4.4", 1123 | "resolved": "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz", 1124 | "integrity": "sha1-BxEFvfwobmYVwEA8J+nXtdy4Vcs=", 1125 | "requires": { 1126 | "graceful-fs": "^4.1.3" 1127 | } 1128 | }, 1129 | "string_decoder": { 1130 | "version": "1.3.0", 1131 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1132 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1133 | "requires": { 1134 | "safe-buffer": "~5.2.0" 1135 | }, 1136 | "dependencies": { 1137 | "safe-buffer": { 1138 | "version": "5.2.0", 1139 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", 1140 | "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" 1141 | } 1142 | } 1143 | }, 1144 | "supports-color": { 1145 | "version": "5.5.0", 1146 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1147 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1148 | "requires": { 1149 | "has-flag": "^3.0.0" 1150 | } 1151 | }, 1152 | "toidentifier": { 1153 | "version": "1.0.0", 1154 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 1155 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 1156 | }, 1157 | "tough-cookie": { 1158 | "version": "2.4.3", 1159 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", 1160 | "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", 1161 | "requires": { 1162 | "psl": "^1.1.24", 1163 | "punycode": "^1.4.1" 1164 | }, 1165 | "dependencies": { 1166 | "punycode": { 1167 | "version": "1.4.1", 1168 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 1169 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" 1170 | } 1171 | } 1172 | }, 1173 | "tslib": { 1174 | "version": "1.10.0", 1175 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", 1176 | "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" 1177 | }, 1178 | "tslint": { 1179 | "version": "5.20.0", 1180 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.0.tgz", 1181 | "integrity": "sha512-2vqIvkMHbnx8acMogAERQ/IuINOq6DFqgF8/VDvhEkBqQh/x6SP0Y+OHnKth9/ZcHQSroOZwUQSN18v8KKF0/g==", 1182 | "requires": { 1183 | "@babel/code-frame": "^7.0.0", 1184 | "builtin-modules": "^1.1.1", 1185 | "chalk": "^2.3.0", 1186 | "commander": "^2.12.1", 1187 | "diff": "^4.0.1", 1188 | "glob": "^7.1.1", 1189 | "js-yaml": "^3.13.1", 1190 | "minimatch": "^3.0.4", 1191 | "mkdirp": "^0.5.1", 1192 | "resolve": "^1.3.2", 1193 | "semver": "^5.3.0", 1194 | "tslib": "^1.8.0", 1195 | "tsutils": "^2.29.0" 1196 | } 1197 | }, 1198 | "tsutils": { 1199 | "version": "2.29.0", 1200 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", 1201 | "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", 1202 | "requires": { 1203 | "tslib": "^1.8.1" 1204 | } 1205 | }, 1206 | "tunnel-agent": { 1207 | "version": "0.6.0", 1208 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 1209 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 1210 | "requires": { 1211 | "safe-buffer": "^5.0.1" 1212 | } 1213 | }, 1214 | "tweetnacl": { 1215 | "version": "0.14.5", 1216 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 1217 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" 1218 | }, 1219 | "type-is": { 1220 | "version": "1.6.18", 1221 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1222 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1223 | "requires": { 1224 | "media-typer": "0.3.0", 1225 | "mime-types": "~2.1.24" 1226 | } 1227 | }, 1228 | "typescript": { 1229 | "version": "3.6.3", 1230 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.3.tgz", 1231 | "integrity": "sha512-N7bceJL1CtRQ2RiG0AQME13ksR7DiuQh/QehubYcghzv20tnh+MQnQIuJddTmsbqYj+dztchykemz0zFzlvdQw==" 1232 | }, 1233 | "unpipe": { 1234 | "version": "1.0.0", 1235 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1236 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 1237 | }, 1238 | "uri-js": { 1239 | "version": "4.2.2", 1240 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 1241 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 1242 | "requires": { 1243 | "punycode": "^2.1.0" 1244 | } 1245 | }, 1246 | "util-deprecate": { 1247 | "version": "1.0.2", 1248 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1249 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1250 | }, 1251 | "utils-merge": { 1252 | "version": "1.0.1", 1253 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1254 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 1255 | }, 1256 | "uuid": { 1257 | "version": "3.3.3", 1258 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", 1259 | "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" 1260 | }, 1261 | "vary": { 1262 | "version": "1.1.2", 1263 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1264 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 1265 | }, 1266 | "verror": { 1267 | "version": "1.10.0", 1268 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 1269 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 1270 | "requires": { 1271 | "assert-plus": "^1.0.0", 1272 | "core-util-is": "1.0.2", 1273 | "extsprintf": "^1.2.0" 1274 | } 1275 | }, 1276 | "wrappy": { 1277 | "version": "1.0.2", 1278 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1279 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1280 | }, 1281 | "xtend": { 1282 | "version": "4.0.2", 1283 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 1284 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 1285 | }, 1286 | "yaml": { 1287 | "version": "1.6.0", 1288 | "requires": { 1289 | "@babel/runtime": "^7.4.5" 1290 | } 1291 | } 1292 | } 1293 | } 1294 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "matrix-keybase", 3 | "version": "0.0.1", 4 | "description": "A keybase bridge for matrix.", 5 | "main": "./lib/app.js", 6 | "repository": "git@github.com:Half-Shot/matrix-keybase.git", 7 | "author": "Will Hunt ", 8 | "license": "MIT", 9 | "scripts": { 10 | "build": "tsc --project ./tsconfig.json" 11 | }, 12 | "dependencies": { 13 | "@types/lowdb": "^1.0.9", 14 | "@types/node": "^12.7.5", 15 | "keybase-bot": "^3.0.0", 16 | "matrix-bot-sdk": "^0.3.9", 17 | "yaml": "^1.6.0" 18 | }, 19 | "devDependencies": { 20 | "@types/yaml": "^1.0.2", 21 | "typescript": "^3.6.3" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /registration.sample.yml: -------------------------------------------------------------------------------- 1 | id: "KeybaseBridge" 2 | url: "http://127.0.0.1:55441" 3 | as_token: "fooooo" 4 | hs_token: "baaaar" 5 | sender_localpart: "keybase" 6 | namespaces: 7 | users: 8 | - exclusive: true 9 | regex: "@_kb_.*:mydomain" 10 | rooms: [] 11 | -------------------------------------------------------------------------------- /src/app.ts: -------------------------------------------------------------------------------- 1 | import { KeybaseBridge } from "./keybasebridge"; 2 | 3 | export function main() { 4 | const bridge = new KeybaseBridge(); 5 | bridge.start().catch((ex) => { 6 | console.warn("Bridge failed to run:", ex); 7 | }); 8 | } 9 | 10 | main(); -------------------------------------------------------------------------------- /src/config.ts: -------------------------------------------------------------------------------- 1 | export interface IConfig { 2 | appservice: { 3 | bindAddress: string; 4 | port: number; 5 | } 6 | homeserver: { 7 | url: string; 8 | domain: string; 9 | } 10 | } -------------------------------------------------------------------------------- /src/keybasebridge.ts: -------------------------------------------------------------------------------- 1 | import { Appservice, IAppserviceRegistration, SimpleFsStorageProvider } from "matrix-bot-sdk" 2 | import { promises as fs } from 'fs' 3 | import { IConfig } from "./config" 4 | const Keybase = require("keybase-bot"); 5 | import YAML from 'yaml' 6 | import * as lowdb from "lowdb"; 7 | import { MsgSummary } from "keybase-bot/lib/types/chat1"; 8 | import { create } from "domain"; 9 | 10 | 11 | export class KeybaseBridge { 12 | private config!: IConfig; 13 | private as!: Appservice 14 | private store!: lowdb.LowdbSync; 15 | private bots: Map; // userid -> bot 16 | constructor() { 17 | this.bots = new Map(); 18 | } 19 | 20 | public async start(configPath: string = "./config.yml", registrationPath: string = "./registration.yml") { 21 | const storage = new SimpleFsStorageProvider("./data.json"); 22 | this.config = await this.loadConfig(configPath); 23 | const registration = YAML.parse(await fs.readFile(registrationPath, "utf-8")) as IAppserviceRegistration; 24 | this.as = new Appservice({ 25 | bindAddress: this.config.appservice.bindAddress, 26 | port: this.config.appservice.port, 27 | homeserverName: this.config.homeserver.domain, 28 | homeserverUrl: this.config.homeserver.url, 29 | registration, 30 | storage, 31 | }); 32 | this.store = (storage as any).db; 33 | this.store.defaults({ 34 | rooms: {}, 35 | remoteRooms: {}, 36 | userProfiles: {}, 37 | keybaseCreds: {}, 38 | }) 39 | this.as.botIntent.underlyingClient.setDisplayName("Keybase Bot"); 40 | console.log("Started bridge on", this.config.appservice.bindAddress, this.config.appservice.port); 41 | this.as.on("room.invite", this.onRoomInvite.bind(this)); 42 | this.as.on("room.message", this.onRoomMessage.bind(this)); 43 | await this.as.begin(); 44 | const keybaseCreds = this.store.get("keybaseCreds").value(); 45 | for (const mxid of Object.keys(keybaseCreds)) { 46 | await this.loginToKeybase(mxid); 47 | } 48 | } 49 | 50 | private async loadConfig(configPath: string): Promise { 51 | const fileData = await fs.readFile(configPath, "utf-8"); 52 | return YAML.parse(fileData); 53 | } 54 | 55 | private async onRoomInvite(roomId: string, inviteEvent: any) { 56 | if (this.as.isNamespacedUser(inviteEvent.sender)) { 57 | return; 58 | } 59 | 60 | await this.as.botIntent.joinRoom(roomId); 61 | if (!inviteEvent.content.is_direct) { 62 | this.as.botIntent.sendText(roomId, "The bridge can only handle 1:1 rooms for setting up the bridge"); 63 | this.as.botIntent.underlyingClient.leaveRoom(roomId); 64 | return; 65 | } 66 | await this.store.set(`rooms.${roomId}`, { 67 | type: "admin", 68 | user: inviteEvent.sender, 69 | }).write(); 70 | } 71 | 72 | private async onRoomMessage(roomId: string, event: any) { 73 | if (this.as.isNamespacedUser(event.sender)) { 74 | return; 75 | } 76 | 77 | const bridgeEntry = this.store.get(`rooms.${roomId}`).value(); 78 | if (!bridgeEntry) { 79 | return; 80 | } 81 | 82 | if (!event["content"]) return; 83 | if (event["content"]["msgtype"] !== "m.text") return; 84 | 85 | const body: string = event["content"]["body"]; 86 | 87 | if (bridgeEntry.type === "admin") { 88 | const parts = body.split(" "); 89 | if (parts[0] === "!login") { 90 | try { 91 | await this.store.set(`keybaseCreds.${event.sender}`, { 92 | username: parts[1], 93 | paperkey: parts.slice(2).join(" "), 94 | }).write(); 95 | this.loginToKeybase(event.sender); 96 | } catch (ex) { 97 | this.as.botIntent.sendText(roomId, "Failed to log in:" + ex, "m.notice"); 98 | return; 99 | } 100 | this.as.botIntent.sendText(roomId, "Connected.", "m.notice"); 101 | } else { 102 | this.as.botIntent.sendText(roomId, "Command not understood", "m.notice"); 103 | } 104 | } else if (bridgeEntry.type === "convo") { 105 | if (!this.bots.has(event.sender)) { 106 | return; 107 | } 108 | const bot = this.bots.get(event.sender); 109 | const opts = {conversationId: bridgeEntry.conversationId}; 110 | try { 111 | await bot.chat.send(undefined, {body}, opts).then(() => console.log('message sent!')); 112 | } catch (ex) { 113 | await this.as.getIntentForSuffix(bridgeEntry.otherUser).underlyingClient.sendNotice(roomId, "Could not send message:" + ex); 114 | } 115 | } 116 | } 117 | 118 | private async onKeybaseMessage(matrixUser: string, messageSummary: MsgSummary) { 119 | const convo = messageSummary.conversationId; 120 | messageSummary.sender.username 121 | const existingRoom = this.store.get(`remoteRooms.${convo}`, null).value(); 122 | let roomId; 123 | if (!existingRoom) { 124 | roomId = await this.createPMRoom(matrixUser, messageSummary.sender.uid); 125 | console.log("Created PM room:", roomId); 126 | await this.store.set(`remoteRooms.${convo}`, { roomId }).write(); 127 | await this.store.set(`rooms.${roomId}`, {type: "convo", conversationId: convo, otherUser: messageSummary.sender.uid}).write(); 128 | } else { 129 | roomId = existingRoom.roomId; 130 | } 131 | console.log("Using PM room:", roomId); 132 | const intent = this.as.getIntentForSuffix(messageSummary.sender.uid); 133 | const displayname = messageSummary.sender.username || messageSummary.sender.deviceName || messageSummary.sender.deviceId; 134 | if (this.store.get(`userprofile.${messageSummary.sender.uid}.displayname`, null).value() !== displayname) { 135 | await intent.underlyingClient.setDisplayName( 136 | messageSummary.sender.username || messageSummary.sender.deviceName || messageSummary.sender.deviceId 137 | ); 138 | await this.store.set(`userProfile.${messageSummary.sender.uid}`, { displayname }).write(); 139 | } 140 | await intent.sendText(roomId, messageSummary.content.text!.body); 141 | } 142 | 143 | private async createPMRoom(matrixUser: string, remoteUser: string) { 144 | const intent = this.as.getIntentForSuffix(remoteUser); 145 | return await intent.underlyingClient.createRoom({ 146 | preset: "private_chat", 147 | is_direct: true, 148 | invite: [matrixUser], 149 | }); 150 | } 151 | 152 | private async loginToKeybase(matrixUser: string) { 153 | if (this.bots.has(matrixUser)) { 154 | return this.bots.get(matrixUser)!; 155 | } 156 | const keybaseCreds = this.store.get(`keybaseCreds.${matrixUser}`, null).value(); 157 | if (!keybaseCreds) { 158 | throw Error("No credentials found"); 159 | } 160 | const bot = new Keybase(); 161 | await bot.init(keybaseCreds.username, keybaseCreds.paperkey, { verbose: true }); 162 | console.log("Logged in"); 163 | await bot.chat.watchAllChannelsForNewMessages((msg: any) => { 164 | this.onKeybaseMessage(matrixUser, msg); 165 | }) 166 | console.log("Connected and watching"); 167 | this.bots.set(matrixUser, bot); 168 | } 169 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "incremental": true, /* Enable incremental compilation */ 5 | "target": "ES2017", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */ 6 | "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ 7 | // "lib": [], /* Specify library files to be included in the compilation. */ 8 | "allowJs": false, /* Allow javascript files to be compiled. */ 9 | // "checkJs": true, /* Report errors in .js files. */ 10 | // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ 11 | // "declaration": true, /* Generates corresponding '.d.ts' file. */ 12 | // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ 13 | // "sourceMap": true, /* Generates corresponding '.map' file. */ 14 | // "outFile": "./", /* Concatenate and emit output to single file. */ 15 | "outDir": "./lib", /* Redirect output structure to the directory. */ 16 | "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ 17 | "composite": true, /* Enable project compilation */ 18 | // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ 19 | // "removeComments": true, /* Do not emit comments to output. */ 20 | // "noEmit": true, /* Do not emit outputs. */ 21 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */ 22 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ 23 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ 24 | 25 | /* Strict Type-Checking Options */ 26 | "strict": true, /* Enable all strict type-checking options. */ 27 | // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ 28 | // "strictNullChecks": true, /* Enable strict null checks. */ 29 | // "strictFunctionTypes": true, /* Enable strict checking of function types. */ 30 | // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ 31 | // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ 32 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ 33 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ 34 | 35 | /* Additional Checks */ 36 | // "noUnusedLocals": true, /* Report errors on unused locals. */ 37 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 38 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 39 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 40 | 41 | /* Module Resolution Options */ 42 | // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ 43 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ 44 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ 45 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ 46 | // "typeRoots": [], /* List of folders to include type definitions from. */ 47 | // "types": [], /* Type declaration files to be included in compilation. */ 48 | // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ 49 | "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ 50 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ 51 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 52 | 53 | /* Source Map Options */ 54 | // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ 55 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 56 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ 57 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ 58 | 59 | /* Experimental Options */ 60 | "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ 61 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.5.5" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" 8 | integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== 9 | dependencies: 10 | "@babel/highlight" "^7.0.0" 11 | 12 | "@babel/highlight@^7.0.0": 13 | version "7.5.0" 14 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" 15 | integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== 16 | dependencies: 17 | chalk "^2.0.0" 18 | esutils "^2.0.2" 19 | js-tokens "^4.0.0" 20 | 21 | "@babel/runtime@^7.4.5": 22 | version "7.6.0" 23 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.0.tgz#4fc1d642a9fd0299754e8b5de62c631cf5568205" 24 | integrity sha512-89eSBLJsxNxOERC0Op4vd+0Bqm6wRMqMbFtV3i0/fbaWw/mJ8Q3eBvgX0G4SyrOOLCtbu98HspF8o09MRT+KzQ== 25 | dependencies: 26 | regenerator-runtime "^0.13.2" 27 | 28 | "@types/lodash@*": 29 | version "4.14.138" 30 | resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.138.tgz#34f52640d7358230308344e579c15b378d91989e" 31 | integrity sha512-A4uJgHz4hakwNBdHNPdxOTkYmXNgmUAKLbXZ7PKGslgeV0Mb8P3BlbYfPovExek1qnod4pDfRbxuzcVs3dlFLg== 32 | 33 | "@types/lowdb@^1.0.9": 34 | version "1.0.9" 35 | resolved "https://registry.yarnpkg.com/@types/lowdb/-/lowdb-1.0.9.tgz#1f6c27df72dd1c64522cc9a4566796d2dd058d38" 36 | integrity sha512-LBRG5EPXFOJDoJc9jACstMhtMP+u+UkPYllBeGQXXKiaHc+uzJs9+/Aynb/5KkX33DtrIiKyzNVTPQc/4RcD6A== 37 | dependencies: 38 | "@types/lodash" "*" 39 | 40 | "@types/node@^12.7.5": 41 | version "12.7.5" 42 | resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.5.tgz#e19436e7f8e9b4601005d73673b6dc4784ffcc2f" 43 | integrity sha512-9fq4jZVhPNW8r+UYKnxF1e2HkDWOWKM5bC2/7c9wPV835I0aOrVbS/Hw/pWPk2uKrNXQqg9Z959Kz+IYDd5p3w== 44 | 45 | "@types/node@^8.10.34": 46 | version "8.10.54" 47 | resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.54.tgz#1c88eb253ac1210f1a5876953fb70f7cc4928402" 48 | integrity sha512-kaYyLYf6ICn6/isAyD4K1MyWWd5Q3JgH6bnMN089LUx88+s4W8GvK9Q6JMBVu5vsFFp7pMdSxdKmlBXwH/VFRg== 49 | 50 | "@types/yaml@^1.0.2": 51 | version "1.0.2" 52 | resolved "https://registry.yarnpkg.com/@types/yaml/-/yaml-1.0.2.tgz#bba080d64714c6ef3eaa023e235dacd2cfa3c938" 53 | integrity sha512-rS1VJFjyGKNHk8H97COnPIK+oeLnc0J9G0ES63o/Ky+WlJCeaFGiGCTGhV/GEVKua7ZWIV1JIDopYUwrfvTo7A== 54 | 55 | accepts@~1.3.7: 56 | version "1.3.7" 57 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" 58 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== 59 | dependencies: 60 | mime-types "~2.1.24" 61 | negotiator "0.6.2" 62 | 63 | ajv@^6.5.5: 64 | version "6.10.2" 65 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" 66 | integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== 67 | dependencies: 68 | fast-deep-equal "^2.0.1" 69 | fast-json-stable-stringify "^2.0.0" 70 | json-schema-traverse "^0.4.1" 71 | uri-js "^4.2.2" 72 | 73 | ansi-styles@^3.2.1: 74 | version "3.2.1" 75 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 76 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 77 | dependencies: 78 | color-convert "^1.9.0" 79 | 80 | argparse@^1.0.7: 81 | version "1.0.10" 82 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 83 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 84 | dependencies: 85 | sprintf-js "~1.0.2" 86 | 87 | array-flatten@1.1.1: 88 | version "1.1.1" 89 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 90 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 91 | 92 | array-uniq@^1.0.2: 93 | version "1.0.3" 94 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 95 | integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= 96 | 97 | asn1@~0.2.3: 98 | version "0.2.4" 99 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 100 | integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== 101 | dependencies: 102 | safer-buffer "~2.1.0" 103 | 104 | assert-plus@1.0.0, assert-plus@^1.0.0: 105 | version "1.0.0" 106 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 107 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 108 | 109 | asynckit@^0.4.0: 110 | version "0.4.0" 111 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 112 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 113 | 114 | aws-sign2@~0.7.0: 115 | version "0.7.0" 116 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 117 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 118 | 119 | aws4@^1.8.0: 120 | version "1.8.0" 121 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" 122 | integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== 123 | 124 | balanced-match@^1.0.0: 125 | version "1.0.0" 126 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 127 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 128 | 129 | basic-auth@~2.0.0: 130 | version "2.0.1" 131 | resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" 132 | integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== 133 | dependencies: 134 | safe-buffer "5.1.2" 135 | 136 | bcrypt-pbkdf@^1.0.0: 137 | version "1.0.2" 138 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 139 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 140 | dependencies: 141 | tweetnacl "^0.14.3" 142 | 143 | bluebird@^3.5.0, bluebird@^3.5.2: 144 | version "3.5.5" 145 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" 146 | integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== 147 | 148 | body-parser@1.19.0: 149 | version "1.19.0" 150 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" 151 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== 152 | dependencies: 153 | bytes "3.1.0" 154 | content-type "~1.0.4" 155 | debug "2.6.9" 156 | depd "~1.1.2" 157 | http-errors "1.7.2" 158 | iconv-lite "0.4.24" 159 | on-finished "~2.3.0" 160 | qs "6.7.0" 161 | raw-body "2.4.0" 162 | type-is "~1.6.17" 163 | 164 | brace-expansion@^1.1.7: 165 | version "1.1.11" 166 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 167 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 168 | dependencies: 169 | balanced-match "^1.0.0" 170 | concat-map "0.0.1" 171 | 172 | builtin-modules@^1.1.1: 173 | version "1.1.1" 174 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 175 | integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= 176 | 177 | bytes@3.1.0: 178 | version "3.1.0" 179 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 180 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 181 | 182 | caseless@~0.12.0: 183 | version "0.12.0" 184 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 185 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 186 | 187 | chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: 188 | version "2.4.2" 189 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 190 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 191 | dependencies: 192 | ansi-styles "^3.2.1" 193 | escape-string-regexp "^1.0.5" 194 | supports-color "^5.3.0" 195 | 196 | color-convert@^1.9.0: 197 | version "1.9.3" 198 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 199 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 200 | dependencies: 201 | color-name "1.1.3" 202 | 203 | color-name@1.1.3: 204 | version "1.1.3" 205 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 206 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 207 | 208 | combined-stream@^1.0.6, combined-stream@~1.0.6: 209 | version "1.0.8" 210 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 211 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 212 | dependencies: 213 | delayed-stream "~1.0.0" 214 | 215 | commander@^2.12.1: 216 | version "2.20.0" 217 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" 218 | integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== 219 | 220 | concat-map@0.0.1: 221 | version "0.0.1" 222 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 223 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 224 | 225 | content-disposition@0.5.3: 226 | version "0.5.3" 227 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 228 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== 229 | dependencies: 230 | safe-buffer "5.1.2" 231 | 232 | content-type@~1.0.4: 233 | version "1.0.4" 234 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 235 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 236 | 237 | cookie-signature@1.0.6: 238 | version "1.0.6" 239 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 240 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 241 | 242 | cookie@0.4.0: 243 | version "0.4.0" 244 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" 245 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== 246 | 247 | core-util-is@1.0.2: 248 | version "1.0.2" 249 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 250 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 251 | 252 | dashdash@^1.12.0: 253 | version "1.14.1" 254 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 255 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 256 | dependencies: 257 | assert-plus "^1.0.0" 258 | 259 | debug@2.6.9: 260 | version "2.6.9" 261 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 262 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 263 | dependencies: 264 | ms "2.0.0" 265 | 266 | delayed-stream@~1.0.0: 267 | version "1.0.0" 268 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 269 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 270 | 271 | depd@~1.1.2: 272 | version "1.1.2" 273 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 274 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 275 | 276 | destroy@~1.0.4: 277 | version "1.0.4" 278 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 279 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 280 | 281 | diff@^4.0.1: 282 | version "4.0.1" 283 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" 284 | integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q== 285 | 286 | dom-serializer@0: 287 | version "0.2.1" 288 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.1.tgz#13650c850daffea35d8b626a4cfc4d3a17643fdb" 289 | integrity sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q== 290 | dependencies: 291 | domelementtype "^2.0.1" 292 | entities "^2.0.0" 293 | 294 | domelementtype@1, domelementtype@^1.3.1: 295 | version "1.3.1" 296 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" 297 | integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== 298 | 299 | domelementtype@^2.0.1: 300 | version "2.0.1" 301 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" 302 | integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== 303 | 304 | domhandler@^2.3.0: 305 | version "2.4.2" 306 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" 307 | integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== 308 | dependencies: 309 | domelementtype "1" 310 | 311 | domutils@^1.5.1: 312 | version "1.7.0" 313 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" 314 | integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== 315 | dependencies: 316 | dom-serializer "0" 317 | domelementtype "1" 318 | 319 | ecc-jsbn@~0.1.1: 320 | version "0.1.2" 321 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 322 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 323 | dependencies: 324 | jsbn "~0.1.0" 325 | safer-buffer "^2.1.0" 326 | 327 | ee-first@1.1.1: 328 | version "1.1.1" 329 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 330 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 331 | 332 | encodeurl@~1.0.2: 333 | version "1.0.2" 334 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 335 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 336 | 337 | entities@^1.1.1: 338 | version "1.1.2" 339 | resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" 340 | integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== 341 | 342 | entities@^2.0.0: 343 | version "2.0.0" 344 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" 345 | integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== 346 | 347 | escape-html@~1.0.3: 348 | version "1.0.3" 349 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 350 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 351 | 352 | escape-string-regexp@^1.0.5: 353 | version "1.0.5" 354 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 355 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 356 | 357 | esprima@^4.0.0: 358 | version "4.0.1" 359 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 360 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 361 | 362 | esutils@^2.0.2: 363 | version "2.0.3" 364 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 365 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 366 | 367 | etag@~1.8.1: 368 | version "1.8.1" 369 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 370 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 371 | 372 | express@^4.16.4: 373 | version "4.17.1" 374 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" 375 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== 376 | dependencies: 377 | accepts "~1.3.7" 378 | array-flatten "1.1.1" 379 | body-parser "1.19.0" 380 | content-disposition "0.5.3" 381 | content-type "~1.0.4" 382 | cookie "0.4.0" 383 | cookie-signature "1.0.6" 384 | debug "2.6.9" 385 | depd "~1.1.2" 386 | encodeurl "~1.0.2" 387 | escape-html "~1.0.3" 388 | etag "~1.8.1" 389 | finalhandler "~1.1.2" 390 | fresh "0.5.2" 391 | merge-descriptors "1.0.1" 392 | methods "~1.1.2" 393 | on-finished "~2.3.0" 394 | parseurl "~1.3.3" 395 | path-to-regexp "0.1.7" 396 | proxy-addr "~2.0.5" 397 | qs "6.7.0" 398 | range-parser "~1.2.1" 399 | safe-buffer "5.1.2" 400 | send "0.17.1" 401 | serve-static "1.14.1" 402 | setprototypeof "1.1.1" 403 | statuses "~1.5.0" 404 | type-is "~1.6.18" 405 | utils-merge "1.0.1" 406 | vary "~1.1.2" 407 | 408 | extend@~3.0.2: 409 | version "3.0.2" 410 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 411 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 412 | 413 | extsprintf@1.3.0: 414 | version "1.3.0" 415 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 416 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 417 | 418 | extsprintf@^1.2.0: 419 | version "1.4.0" 420 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 421 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 422 | 423 | fast-deep-equal@^2.0.1: 424 | version "2.0.1" 425 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" 426 | integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= 427 | 428 | fast-json-stable-stringify@^2.0.0: 429 | version "2.0.0" 430 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 431 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= 432 | 433 | finalhandler@~1.1.2: 434 | version "1.1.2" 435 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 436 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 437 | dependencies: 438 | debug "2.6.9" 439 | encodeurl "~1.0.2" 440 | escape-html "~1.0.3" 441 | on-finished "~2.3.0" 442 | parseurl "~1.3.3" 443 | statuses "~1.5.0" 444 | unpipe "~1.0.0" 445 | 446 | forever-agent@~0.6.1: 447 | version "0.6.1" 448 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 449 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 450 | 451 | form-data@~2.3.2: 452 | version "2.3.3" 453 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 454 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 455 | dependencies: 456 | asynckit "^0.4.0" 457 | combined-stream "^1.0.6" 458 | mime-types "^2.1.12" 459 | 460 | forwarded@~0.1.2: 461 | version "0.1.2" 462 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" 463 | integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= 464 | 465 | fresh@0.5.2: 466 | version "0.5.2" 467 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 468 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 469 | 470 | fs.realpath@^1.0.0: 471 | version "1.0.0" 472 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 473 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 474 | 475 | getpass@^0.1.1: 476 | version "0.1.7" 477 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 478 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 479 | dependencies: 480 | assert-plus "^1.0.0" 481 | 482 | glob@^7.1.1: 483 | version "7.1.4" 484 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" 485 | integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== 486 | dependencies: 487 | fs.realpath "^1.0.0" 488 | inflight "^1.0.4" 489 | inherits "2" 490 | minimatch "^3.0.4" 491 | once "^1.3.0" 492 | path-is-absolute "^1.0.0" 493 | 494 | graceful-fs@^4.1.3: 495 | version "4.2.2" 496 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" 497 | integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== 498 | 499 | har-schema@^2.0.0: 500 | version "2.0.0" 501 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 502 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 503 | 504 | har-validator@~5.1.0: 505 | version "5.1.3" 506 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" 507 | integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== 508 | dependencies: 509 | ajv "^6.5.5" 510 | har-schema "^2.0.0" 511 | 512 | has-flag@^3.0.0: 513 | version "3.0.0" 514 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 515 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 516 | 517 | hash.js@^1.1.7: 518 | version "1.1.7" 519 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" 520 | integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== 521 | dependencies: 522 | inherits "^2.0.3" 523 | minimalistic-assert "^1.0.1" 524 | 525 | htmlencode@0.0.4: 526 | version "0.0.4" 527 | resolved "https://registry.yarnpkg.com/htmlencode/-/htmlencode-0.0.4.tgz#f7e2d6afbe18a87a78e63ba3308e753766740e3f" 528 | integrity sha1-9+LWr74YqHp45jujMI51N2Z0Dj8= 529 | 530 | htmlparser2@^3.10.0: 531 | version "3.10.1" 532 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" 533 | integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== 534 | dependencies: 535 | domelementtype "^1.3.1" 536 | domhandler "^2.3.0" 537 | domutils "^1.5.1" 538 | entities "^1.1.1" 539 | inherits "^2.0.1" 540 | readable-stream "^3.1.1" 541 | 542 | http-errors@1.7.2: 543 | version "1.7.2" 544 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" 545 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== 546 | dependencies: 547 | depd "~1.1.2" 548 | inherits "2.0.3" 549 | setprototypeof "1.1.1" 550 | statuses ">= 1.5.0 < 2" 551 | toidentifier "1.0.0" 552 | 553 | http-errors@~1.7.2: 554 | version "1.7.3" 555 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 556 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 557 | dependencies: 558 | depd "~1.1.2" 559 | inherits "2.0.4" 560 | setprototypeof "1.1.1" 561 | statuses ">= 1.5.0 < 2" 562 | toidentifier "1.0.0" 563 | 564 | http-signature@~1.2.0: 565 | version "1.2.0" 566 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 567 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 568 | dependencies: 569 | assert-plus "^1.0.0" 570 | jsprim "^1.2.2" 571 | sshpk "^1.7.0" 572 | 573 | iconv-lite@0.4.24: 574 | version "0.4.24" 575 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 576 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 577 | dependencies: 578 | safer-buffer ">= 2.1.2 < 3" 579 | 580 | inflight@^1.0.4: 581 | version "1.0.6" 582 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 583 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 584 | dependencies: 585 | once "^1.3.0" 586 | wrappy "1" 587 | 588 | inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3: 589 | version "2.0.4" 590 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 591 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 592 | 593 | inherits@2.0.3: 594 | version "2.0.3" 595 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 596 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 597 | 598 | ipaddr.js@1.9.0: 599 | version "1.9.0" 600 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" 601 | integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== 602 | 603 | is-promise@^2.1.0: 604 | version "2.1.0" 605 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 606 | integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= 607 | 608 | is-typedarray@~1.0.0: 609 | version "1.0.0" 610 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 611 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 612 | 613 | isexe@2.0.0, isexe@^2.0.0: 614 | version "2.0.0" 615 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 616 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 617 | 618 | isstream@~0.1.2: 619 | version "0.1.2" 620 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 621 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 622 | 623 | js-tokens@^4.0.0: 624 | version "4.0.0" 625 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 626 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 627 | 628 | js-yaml@^3.13.1: 629 | version "3.13.1" 630 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 631 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 632 | dependencies: 633 | argparse "^1.0.7" 634 | esprima "^4.0.0" 635 | 636 | jsbn@~0.1.0: 637 | version "0.1.1" 638 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 639 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 640 | 641 | json-schema-traverse@^0.4.1: 642 | version "0.4.1" 643 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 644 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 645 | 646 | json-schema@0.2.3: 647 | version "0.2.3" 648 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 649 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 650 | 651 | json-stringify-safe@~5.0.1: 652 | version "5.0.1" 653 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 654 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 655 | 656 | jsprim@^1.2.2: 657 | version "1.4.1" 658 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 659 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 660 | dependencies: 661 | assert-plus "1.0.0" 662 | extsprintf "1.3.0" 663 | json-schema "0.2.3" 664 | verror "1.10.0" 665 | 666 | keybase-bot@^3.0.0: 667 | version "3.0.0" 668 | resolved "https://registry.yarnpkg.com/keybase-bot/-/keybase-bot-3.0.0.tgz#bb79cc0599694a5005c0a350dddcae5783b8730b" 669 | integrity sha512-A36oPtgpPvOprIoSdswhwr0qIcpz5QvFWKcej3M8igwWEvdKuDgLpU3bLH5CTZuOjuUQDAqyS03IA3l13iunwg== 670 | dependencies: 671 | isexe "2.0.0" 672 | lodash.camelcase "4.3.0" 673 | lodash.kebabcase "4.1.1" 674 | lodash.snakecase "4.1.1" 675 | mkdirp "0.5.1" 676 | which "1.3.1" 677 | 678 | lodash.camelcase@4.3.0: 679 | version "4.3.0" 680 | resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" 681 | integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= 682 | 683 | lodash.clonedeep@^4.5.0: 684 | version "4.5.0" 685 | resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" 686 | integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= 687 | 688 | lodash.escaperegexp@^4.1.2: 689 | version "4.1.2" 690 | resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" 691 | integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= 692 | 693 | lodash.isplainobject@^4.0.6: 694 | version "4.0.6" 695 | resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" 696 | integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= 697 | 698 | lodash.isstring@^4.0.1: 699 | version "4.0.1" 700 | resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" 701 | integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= 702 | 703 | lodash.kebabcase@4.1.1: 704 | version "4.1.1" 705 | resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" 706 | integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= 707 | 708 | lodash.mergewith@^4.6.1: 709 | version "4.6.2" 710 | resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" 711 | integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== 712 | 713 | lodash.snakecase@4.1.1: 714 | version "4.1.1" 715 | resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" 716 | integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= 717 | 718 | lodash@4, lodash@^4.17.11: 719 | version "4.17.15" 720 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 721 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 722 | 723 | lowdb@^1.0.0: 724 | version "1.0.0" 725 | resolved "https://registry.yarnpkg.com/lowdb/-/lowdb-1.0.0.tgz#5243be6b22786ccce30e50c9a33eac36b20c8064" 726 | integrity sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ== 727 | dependencies: 728 | graceful-fs "^4.1.3" 729 | is-promise "^2.1.0" 730 | lodash "4" 731 | pify "^3.0.0" 732 | steno "^0.4.1" 733 | 734 | matrix-bot-sdk@^0.3.9: 735 | version "0.3.9" 736 | resolved "https://registry.yarnpkg.com/matrix-bot-sdk/-/matrix-bot-sdk-0.3.9.tgz#f42b85e9104e7640efae9af878092c7dc681bcf0" 737 | integrity sha512-gDFepCYVZUW6rjD66ujCO+K937HEjic5qYGRyH49Ok0ZfCllEhHDeqrANbFoRjyyszwgyTXfdmthT+inxvFHWg== 738 | dependencies: 739 | "@types/node" "^8.10.34" 740 | bluebird "^3.5.2" 741 | express "^4.16.4" 742 | hash.js "^1.1.7" 743 | htmlencode "0.0.4" 744 | lowdb "^1.0.0" 745 | morgan "^1.9.1" 746 | request "^2.88.0" 747 | request-promise "^4.2.2" 748 | sanitize-html "^1.20.0" 749 | tslint "^5.11.0" 750 | typescript "^3.1.1" 751 | 752 | media-typer@0.3.0: 753 | version "0.3.0" 754 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 755 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 756 | 757 | merge-descriptors@1.0.1: 758 | version "1.0.1" 759 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 760 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 761 | 762 | methods@~1.1.2: 763 | version "1.1.2" 764 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 765 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 766 | 767 | mime-db@1.40.0: 768 | version "1.40.0" 769 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" 770 | integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== 771 | 772 | mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: 773 | version "2.1.24" 774 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" 775 | integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== 776 | dependencies: 777 | mime-db "1.40.0" 778 | 779 | mime@1.6.0: 780 | version "1.6.0" 781 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 782 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 783 | 784 | minimalistic-assert@^1.0.1: 785 | version "1.0.1" 786 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" 787 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== 788 | 789 | minimatch@^3.0.4: 790 | version "3.0.4" 791 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 792 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 793 | dependencies: 794 | brace-expansion "^1.1.7" 795 | 796 | minimist@0.0.8: 797 | version "0.0.8" 798 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 799 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 800 | 801 | mkdirp@0.5.1, mkdirp@^0.5.1: 802 | version "0.5.1" 803 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 804 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 805 | dependencies: 806 | minimist "0.0.8" 807 | 808 | morgan@^1.9.1: 809 | version "1.9.1" 810 | resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz#0a8d16734a1d9afbc824b99df87e738e58e2da59" 811 | integrity sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA== 812 | dependencies: 813 | basic-auth "~2.0.0" 814 | debug "2.6.9" 815 | depd "~1.1.2" 816 | on-finished "~2.3.0" 817 | on-headers "~1.0.1" 818 | 819 | ms@2.0.0: 820 | version "2.0.0" 821 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 822 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 823 | 824 | ms@2.1.1: 825 | version "2.1.1" 826 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 827 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 828 | 829 | negotiator@0.6.2: 830 | version "0.6.2" 831 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 832 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== 833 | 834 | number-is-nan@^1.0.0: 835 | version "1.0.1" 836 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 837 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 838 | 839 | oauth-sign@~0.9.0: 840 | version "0.9.0" 841 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 842 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 843 | 844 | on-finished@~2.3.0: 845 | version "2.3.0" 846 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 847 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 848 | dependencies: 849 | ee-first "1.1.1" 850 | 851 | on-headers@~1.0.1: 852 | version "1.0.2" 853 | resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" 854 | integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== 855 | 856 | once@^1.3.0: 857 | version "1.4.0" 858 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 859 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 860 | dependencies: 861 | wrappy "1" 862 | 863 | parseurl@~1.3.3: 864 | version "1.3.3" 865 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 866 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 867 | 868 | path-is-absolute@^1.0.0: 869 | version "1.0.1" 870 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 871 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 872 | 873 | path-parse@^1.0.6: 874 | version "1.0.6" 875 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 876 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 877 | 878 | path-to-regexp@0.1.7: 879 | version "0.1.7" 880 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 881 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 882 | 883 | performance-now@^2.1.0: 884 | version "2.1.0" 885 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 886 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 887 | 888 | pify@^3.0.0: 889 | version "3.0.0" 890 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 891 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 892 | 893 | postcss@^7.0.5: 894 | version "7.0.18" 895 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.18.tgz#4b9cda95ae6c069c67a4d933029eddd4838ac233" 896 | integrity sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g== 897 | dependencies: 898 | chalk "^2.4.2" 899 | source-map "^0.6.1" 900 | supports-color "^6.1.0" 901 | 902 | proxy-addr@~2.0.5: 903 | version "2.0.5" 904 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" 905 | integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== 906 | dependencies: 907 | forwarded "~0.1.2" 908 | ipaddr.js "1.9.0" 909 | 910 | psl@^1.1.24, psl@^1.1.28: 911 | version "1.4.0" 912 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" 913 | integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== 914 | 915 | punycode@^1.4.1: 916 | version "1.4.1" 917 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 918 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= 919 | 920 | punycode@^2.1.0, punycode@^2.1.1: 921 | version "2.1.1" 922 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 923 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 924 | 925 | qs@6.7.0: 926 | version "6.7.0" 927 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" 928 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== 929 | 930 | qs@~6.5.2: 931 | version "6.5.2" 932 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 933 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== 934 | 935 | range-parser@~1.2.1: 936 | version "1.2.1" 937 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 938 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 939 | 940 | raw-body@2.4.0: 941 | version "2.4.0" 942 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" 943 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== 944 | dependencies: 945 | bytes "3.1.0" 946 | http-errors "1.7.2" 947 | iconv-lite "0.4.24" 948 | unpipe "1.0.0" 949 | 950 | readable-stream@^3.1.1: 951 | version "3.4.0" 952 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" 953 | integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== 954 | dependencies: 955 | inherits "^2.0.3" 956 | string_decoder "^1.1.1" 957 | util-deprecate "^1.0.1" 958 | 959 | regenerator-runtime@^0.13.2: 960 | version "0.13.3" 961 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" 962 | integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== 963 | 964 | request-promise-core@1.1.2: 965 | version "1.1.2" 966 | resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" 967 | integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== 968 | dependencies: 969 | lodash "^4.17.11" 970 | 971 | request-promise@^4.2.2: 972 | version "4.2.4" 973 | resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-4.2.4.tgz#1c5ed0d71441e38ad58c7ce4ea4ea5b06d54b310" 974 | integrity sha512-8wgMrvE546PzbR5WbYxUQogUnUDfM0S7QIFZMID+J73vdFARkFy+HElj4T+MWYhpXwlLp0EQ8Zoj8xUA0he4Vg== 975 | dependencies: 976 | bluebird "^3.5.0" 977 | request-promise-core "1.1.2" 978 | stealthy-require "^1.1.1" 979 | tough-cookie "^2.3.3" 980 | 981 | request@^2.88.0: 982 | version "2.88.0" 983 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" 984 | integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== 985 | dependencies: 986 | aws-sign2 "~0.7.0" 987 | aws4 "^1.8.0" 988 | caseless "~0.12.0" 989 | combined-stream "~1.0.6" 990 | extend "~3.0.2" 991 | forever-agent "~0.6.1" 992 | form-data "~2.3.2" 993 | har-validator "~5.1.0" 994 | http-signature "~1.2.0" 995 | is-typedarray "~1.0.0" 996 | isstream "~0.1.2" 997 | json-stringify-safe "~5.0.1" 998 | mime-types "~2.1.19" 999 | oauth-sign "~0.9.0" 1000 | performance-now "^2.1.0" 1001 | qs "~6.5.2" 1002 | safe-buffer "^5.1.2" 1003 | tough-cookie "~2.4.3" 1004 | tunnel-agent "^0.6.0" 1005 | uuid "^3.3.2" 1006 | 1007 | resolve@^1.3.2: 1008 | version "1.12.0" 1009 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" 1010 | integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== 1011 | dependencies: 1012 | path-parse "^1.0.6" 1013 | 1014 | safe-buffer@5.1.2: 1015 | version "5.1.2" 1016 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1017 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1018 | 1019 | safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: 1020 | version "5.2.0" 1021 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" 1022 | integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== 1023 | 1024 | "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 1025 | version "2.1.2" 1026 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1027 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1028 | 1029 | sanitize-html@^1.20.0: 1030 | version "1.20.1" 1031 | resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.20.1.tgz#f6effdf55dd398807171215a62bfc21811bacf85" 1032 | integrity sha512-txnH8TQjaQvg2Q0HY06G6CDJLVYCpbnxrdO0WN8gjCKaU5J0KbyGYhZxx5QJg3WLZ1lB7XU9kDkfrCXUozqptA== 1033 | dependencies: 1034 | chalk "^2.4.1" 1035 | htmlparser2 "^3.10.0" 1036 | lodash.clonedeep "^4.5.0" 1037 | lodash.escaperegexp "^4.1.2" 1038 | lodash.isplainobject "^4.0.6" 1039 | lodash.isstring "^4.0.1" 1040 | lodash.mergewith "^4.6.1" 1041 | postcss "^7.0.5" 1042 | srcset "^1.0.0" 1043 | xtend "^4.0.1" 1044 | 1045 | semver@^5.3.0: 1046 | version "5.7.1" 1047 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1048 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1049 | 1050 | send@0.17.1: 1051 | version "0.17.1" 1052 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" 1053 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== 1054 | dependencies: 1055 | debug "2.6.9" 1056 | depd "~1.1.2" 1057 | destroy "~1.0.4" 1058 | encodeurl "~1.0.2" 1059 | escape-html "~1.0.3" 1060 | etag "~1.8.1" 1061 | fresh "0.5.2" 1062 | http-errors "~1.7.2" 1063 | mime "1.6.0" 1064 | ms "2.1.1" 1065 | on-finished "~2.3.0" 1066 | range-parser "~1.2.1" 1067 | statuses "~1.5.0" 1068 | 1069 | serve-static@1.14.1: 1070 | version "1.14.1" 1071 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" 1072 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== 1073 | dependencies: 1074 | encodeurl "~1.0.2" 1075 | escape-html "~1.0.3" 1076 | parseurl "~1.3.3" 1077 | send "0.17.1" 1078 | 1079 | setprototypeof@1.1.1: 1080 | version "1.1.1" 1081 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 1082 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 1083 | 1084 | source-map@^0.6.1: 1085 | version "0.6.1" 1086 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1087 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1088 | 1089 | sprintf-js@~1.0.2: 1090 | version "1.0.3" 1091 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1092 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1093 | 1094 | srcset@^1.0.0: 1095 | version "1.0.0" 1096 | resolved "https://registry.yarnpkg.com/srcset/-/srcset-1.0.0.tgz#a5669de12b42f3b1d5e83ed03c71046fc48f41ef" 1097 | integrity sha1-pWad4StC87HV6D7QPHEEb8SPQe8= 1098 | dependencies: 1099 | array-uniq "^1.0.2" 1100 | number-is-nan "^1.0.0" 1101 | 1102 | sshpk@^1.7.0: 1103 | version "1.16.1" 1104 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 1105 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== 1106 | dependencies: 1107 | asn1 "~0.2.3" 1108 | assert-plus "^1.0.0" 1109 | bcrypt-pbkdf "^1.0.0" 1110 | dashdash "^1.12.0" 1111 | ecc-jsbn "~0.1.1" 1112 | getpass "^0.1.1" 1113 | jsbn "~0.1.0" 1114 | safer-buffer "^2.0.2" 1115 | tweetnacl "~0.14.0" 1116 | 1117 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0: 1118 | version "1.5.0" 1119 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1120 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 1121 | 1122 | stealthy-require@^1.1.1: 1123 | version "1.1.1" 1124 | resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" 1125 | integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= 1126 | 1127 | steno@^0.4.1: 1128 | version "0.4.4" 1129 | resolved "https://registry.yarnpkg.com/steno/-/steno-0.4.4.tgz#071105bdfc286e6615c0403c27e9d7b5dcb855cb" 1130 | integrity sha1-BxEFvfwobmYVwEA8J+nXtdy4Vcs= 1131 | dependencies: 1132 | graceful-fs "^4.1.3" 1133 | 1134 | string_decoder@^1.1.1: 1135 | version "1.3.0" 1136 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1137 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1138 | dependencies: 1139 | safe-buffer "~5.2.0" 1140 | 1141 | supports-color@^5.3.0: 1142 | version "5.5.0" 1143 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1144 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1145 | dependencies: 1146 | has-flag "^3.0.0" 1147 | 1148 | supports-color@^6.1.0: 1149 | version "6.1.0" 1150 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" 1151 | integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== 1152 | dependencies: 1153 | has-flag "^3.0.0" 1154 | 1155 | toidentifier@1.0.0: 1156 | version "1.0.0" 1157 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 1158 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 1159 | 1160 | tough-cookie@^2.3.3: 1161 | version "2.5.0" 1162 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" 1163 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== 1164 | dependencies: 1165 | psl "^1.1.28" 1166 | punycode "^2.1.1" 1167 | 1168 | tough-cookie@~2.4.3: 1169 | version "2.4.3" 1170 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" 1171 | integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== 1172 | dependencies: 1173 | psl "^1.1.24" 1174 | punycode "^1.4.1" 1175 | 1176 | tslib@^1.8.0, tslib@^1.8.1: 1177 | version "1.10.0" 1178 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" 1179 | integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== 1180 | 1181 | tslint@^5.11.0: 1182 | version "5.20.0" 1183 | resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.20.0.tgz#fac93bfa79568a5a24e7be9cdde5e02b02d00ec1" 1184 | integrity sha512-2vqIvkMHbnx8acMogAERQ/IuINOq6DFqgF8/VDvhEkBqQh/x6SP0Y+OHnKth9/ZcHQSroOZwUQSN18v8KKF0/g== 1185 | dependencies: 1186 | "@babel/code-frame" "^7.0.0" 1187 | builtin-modules "^1.1.1" 1188 | chalk "^2.3.0" 1189 | commander "^2.12.1" 1190 | diff "^4.0.1" 1191 | glob "^7.1.1" 1192 | js-yaml "^3.13.1" 1193 | minimatch "^3.0.4" 1194 | mkdirp "^0.5.1" 1195 | resolve "^1.3.2" 1196 | semver "^5.3.0" 1197 | tslib "^1.8.0" 1198 | tsutils "^2.29.0" 1199 | 1200 | tsutils@^2.29.0: 1201 | version "2.29.0" 1202 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" 1203 | integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== 1204 | dependencies: 1205 | tslib "^1.8.1" 1206 | 1207 | tunnel-agent@^0.6.0: 1208 | version "0.6.0" 1209 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 1210 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 1211 | dependencies: 1212 | safe-buffer "^5.0.1" 1213 | 1214 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 1215 | version "0.14.5" 1216 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 1217 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 1218 | 1219 | type-is@~1.6.17, type-is@~1.6.18: 1220 | version "1.6.18" 1221 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1222 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1223 | dependencies: 1224 | media-typer "0.3.0" 1225 | mime-types "~2.1.24" 1226 | 1227 | typescript@^3.1.1, typescript@^3.6.3: 1228 | version "3.6.3" 1229 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.3.tgz#fea942fabb20f7e1ca7164ff626f1a9f3f70b4da" 1230 | integrity sha512-N7bceJL1CtRQ2RiG0AQME13ksR7DiuQh/QehubYcghzv20tnh+MQnQIuJddTmsbqYj+dztchykemz0zFzlvdQw== 1231 | 1232 | unpipe@1.0.0, unpipe@~1.0.0: 1233 | version "1.0.0" 1234 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1235 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 1236 | 1237 | uri-js@^4.2.2: 1238 | version "4.2.2" 1239 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 1240 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 1241 | dependencies: 1242 | punycode "^2.1.0" 1243 | 1244 | util-deprecate@^1.0.1: 1245 | version "1.0.2" 1246 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1247 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1248 | 1249 | utils-merge@1.0.1: 1250 | version "1.0.1" 1251 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1252 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 1253 | 1254 | uuid@^3.3.2: 1255 | version "3.3.3" 1256 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" 1257 | integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== 1258 | 1259 | vary@~1.1.2: 1260 | version "1.1.2" 1261 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1262 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 1263 | 1264 | verror@1.10.0: 1265 | version "1.10.0" 1266 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 1267 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 1268 | dependencies: 1269 | assert-plus "^1.0.0" 1270 | core-util-is "1.0.2" 1271 | extsprintf "^1.2.0" 1272 | 1273 | which@1.3.1: 1274 | version "1.3.1" 1275 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1276 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1277 | dependencies: 1278 | isexe "^2.0.0" 1279 | 1280 | wrappy@1: 1281 | version "1.0.2" 1282 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1283 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1284 | 1285 | xtend@^4.0.1: 1286 | version "4.0.2" 1287 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 1288 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 1289 | 1290 | yaml@^1.6.0: 1291 | version "1.6.0" 1292 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.6.0.tgz#d8a985cfb26086dd73f91c637f6e6bc909fddd3c" 1293 | integrity sha512-iZfse3lwrJRoSlfs/9KQ9iIXxs9++RvBFVzAqbbBiFT+giYtyanevreF9r61ZTbGMgWQBxAua3FzJiniiJXWWw== 1294 | dependencies: 1295 | "@babel/runtime" "^7.4.5" 1296 | --------------------------------------------------------------------------------