├── .gitignore ├── LICENSE.txt ├── README.md ├── appveyor.yml ├── cypress.json ├── cypress ├── fixtures │ └── example.json ├── integration │ └── spec.js ├── plugins │ └── index.js └── support │ ├── commands.js │ └── index.js ├── package-lock.json ├── package.json ├── rollup.config.js ├── screens └── screen1.png ├── src ├── client.js ├── components │ └── Heading.svelte ├── routes │ ├── _error.svelte │ ├── _layout.svelte │ └── index.svelte ├── server.js ├── service-worker.js └── template.html └── static ├── favicon.png ├── global.css ├── great-success.png ├── logo-192.png ├── logo-512.png └── manifest.json /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /node_modules/ 3 | /src/node_modules/@sapper/ 4 | yarn-error.log 5 | /cypress/screenshots/ 6 | /__sapper__/ 7 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 2 | Version 2, December 2004 3 | 4 | Copyright (C) 2004 Sam Hocevar 5 | 6 | Everyone is permitted to copy and distribute verbatim or modified 7 | copies of this license document, and changing it is allowed as long 8 | as the name is changed. 9 | 10 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 11 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 12 | 13 | 0. You just DO WHAT THE FUCK YOU WANT TO. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Chat App 2 | 3 | ![](./screens/screen1.png) 4 | 5 | A simple chat app I created to help myself learn Svelte / Sapper and Socket.IO. It can be used as a fun example app to build with a group of students when teaching these technologies (along with Polka, Rollup, and even Cypress). You can play with the demo [here](https://chat-app-svelte.herokuapp.com). Note however, I use a free tier at Heroku so the initial start up time is pretty slow! 6 | 7 | The chat app implements the following functionality: 8 | * Joining the chat 9 | * Setting a nickname 10 | * Sending group messages 11 | * Leaving the chat 12 | * Server messages when appropriate (a user setting a nickname, joining / leaving the chat, etc.) 13 | * Providing the user with the number of current other online users 14 | 15 | ## Build 16 | To build, `cd` to project root and run: 17 | ``` 18 | $ npm install && npm run build 19 | ``` 20 | 21 | ## Run 22 | To run the app in development, it is suggested you use the following command from the project root: 23 | ``` 24 | $ npm run dev 25 | ``` 26 | 27 | ## License 28 | The source of this app may be used under the WTFPL - or, if you take issue with that, consider it to be under the CC0. 29 | 30 | ## Contributing 31 | Feedback and contributions are welcome. Feel free to create issues, fork, submit pull requests, etc. 32 | 33 | Finally, if you want to contribute in a different way, you can always buy me a coffee ^_^ 34 | 35 | [![Buy me a coffee](https://www.buymeacoffee.com/assets/img/custom_images/purple_img.png)](https://www.buymeacoffee.com/tmns) 36 | -------------------------------------------------------------------------------- /appveyor.yml: -------------------------------------------------------------------------------- 1 | version: "{build}" 2 | 3 | shallow_clone: true 4 | 5 | init: 6 | - git config --global core.autocrlf false 7 | 8 | build: off 9 | 10 | environment: 11 | matrix: 12 | # node.js 13 | - nodejs_version: stable 14 | 15 | install: 16 | - ps: Install-Product node $env:nodejs_version 17 | - npm install cypress 18 | - npm install 19 | -------------------------------------------------------------------------------- /cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "baseUrl": "http://localhost:3000", 3 | "video": false 4 | } -------------------------------------------------------------------------------- /cypress/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io", 4 | "body": "Fixtures are a great way to mock data for responses to routes" 5 | } -------------------------------------------------------------------------------- /cypress/integration/spec.js: -------------------------------------------------------------------------------- 1 | describe('Sapper template app', () => { 2 | beforeEach(() => { 3 | cy.visit('/') 4 | }); 5 | 6 | it('has the correct

', () => { 7 | cy.contains('h1', 'Great success!') 8 | }); 9 | 10 | it('navigates to /about', () => { 11 | cy.get('nav a').contains('about').click(); 12 | cy.url().should('include', '/about'); 13 | }); 14 | 15 | it('navigates to /blog', () => { 16 | cy.get('nav a').contains('blog').click(); 17 | cy.url().should('include', '/blog'); 18 | }); 19 | }); -------------------------------------------------------------------------------- /cypress/plugins/index.js: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example plugins/index.js can be used to load plugins 3 | // 4 | // You can change the location of this file or turn off loading 5 | // the plugins file with the 'pluginsFile' configuration option. 6 | // 7 | // You can read more here: 8 | // https://on.cypress.io/plugins-guide 9 | // *********************************************************** 10 | 11 | // This function is called when a project is opened or re-opened (e.g. due to 12 | // the project's config changing) 13 | 14 | module.exports = (on, config) => { 15 | // `on` is used to hook into various events Cypress emits 16 | // `config` is the resolved Cypress config 17 | } 18 | -------------------------------------------------------------------------------- /cypress/support/commands.js: -------------------------------------------------------------------------------- 1 | // *********************************************** 2 | // This example commands.js shows you how to 3 | // create various custom commands and overwrite 4 | // existing commands. 5 | // 6 | // For more comprehensive examples of custom 7 | // commands please read more here: 8 | // https://on.cypress.io/custom-commands 9 | // *********************************************** 10 | // 11 | // 12 | // -- This is a parent command -- 13 | // Cypress.Commands.add("login", (email, password) => { ... }) 14 | // 15 | // 16 | // -- This is a child command -- 17 | // Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... }) 18 | // 19 | // 20 | // -- This is a dual command -- 21 | // Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... }) 22 | // 23 | // 24 | // -- This is will overwrite an existing command -- 25 | // Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) 26 | -------------------------------------------------------------------------------- /cypress/support/index.js: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example support/index.js is processed and 3 | // loaded automatically before your test files. 4 | // 5 | // This is a great place to put global configuration and 6 | // behavior that modifies Cypress. 7 | // 8 | // You can change the location of this file or turn off 9 | // automatically serving support files with the 10 | // 'supportFile' configuration option. 11 | // 12 | // You can read more here: 13 | // https://on.cypress.io/configuration 14 | // *********************************************************** 15 | 16 | // Import commands.js using ES2015 syntax: 17 | import './commands' 18 | 19 | // Alternatively you can use CommonJS syntax: 20 | // require('./commands') 21 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TODO", 3 | "version": "0.0.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@arr/every": { 8 | "version": "1.0.0", 9 | "resolved": "https://registry.npmjs.org/@arr/every/-/every-1.0.0.tgz", 10 | "integrity": "sha1-MU+BaPUK5IoDLP2tX9tDb0ZKl6w=" 11 | }, 12 | "@babel/code-frame": { 13 | "version": "7.0.0", 14 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", 15 | "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", 16 | "dev": true, 17 | "requires": { 18 | "@babel/highlight": "^7.0.0" 19 | } 20 | }, 21 | "@babel/core": { 22 | "version": "7.5.4", 23 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.4.tgz", 24 | "integrity": "sha512-+DaeBEpYq6b2+ZmHx3tHspC+ZRflrvLqwfv8E3hNr5LVQoyBnL8RPKSBCg+rK2W2My9PWlujBiqd0ZPsR9Q6zQ==", 25 | "dev": true, 26 | "requires": { 27 | "@babel/code-frame": "^7.0.0", 28 | "@babel/generator": "^7.5.0", 29 | "@babel/helpers": "^7.5.4", 30 | "@babel/parser": "^7.5.0", 31 | "@babel/template": "^7.4.4", 32 | "@babel/traverse": "^7.5.0", 33 | "@babel/types": "^7.5.0", 34 | "convert-source-map": "^1.1.0", 35 | "debug": "^4.1.0", 36 | "json5": "^2.1.0", 37 | "lodash": "^4.17.11", 38 | "resolve": "^1.3.2", 39 | "semver": "^5.4.1", 40 | "source-map": "^0.5.0" 41 | }, 42 | "dependencies": { 43 | "debug": { 44 | "version": "4.1.1", 45 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 46 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 47 | "dev": true, 48 | "requires": { 49 | "ms": "^2.1.1" 50 | } 51 | }, 52 | "ms": { 53 | "version": "2.1.2", 54 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 55 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 56 | "dev": true 57 | } 58 | } 59 | }, 60 | "@babel/generator": { 61 | "version": "7.5.0", 62 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.0.tgz", 63 | "integrity": "sha512-1TTVrt7J9rcG5PMjvO7VEG3FrEoEJNHxumRq66GemPmzboLWtIjjcJgk8rokuAS7IiRSpgVSu5Vb9lc99iJkOA==", 64 | "dev": true, 65 | "requires": { 66 | "@babel/types": "^7.5.0", 67 | "jsesc": "^2.5.1", 68 | "lodash": "^4.17.11", 69 | "source-map": "^0.5.0", 70 | "trim-right": "^1.0.1" 71 | } 72 | }, 73 | "@babel/helper-annotate-as-pure": { 74 | "version": "7.0.0", 75 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", 76 | "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", 77 | "dev": true, 78 | "requires": { 79 | "@babel/types": "^7.0.0" 80 | } 81 | }, 82 | "@babel/helper-builder-binary-assignment-operator-visitor": { 83 | "version": "7.1.0", 84 | "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", 85 | "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", 86 | "dev": true, 87 | "requires": { 88 | "@babel/helper-explode-assignable-expression": "^7.1.0", 89 | "@babel/types": "^7.0.0" 90 | } 91 | }, 92 | "@babel/helper-call-delegate": { 93 | "version": "7.4.4", 94 | "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", 95 | "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", 96 | "dev": true, 97 | "requires": { 98 | "@babel/helper-hoist-variables": "^7.4.4", 99 | "@babel/traverse": "^7.4.4", 100 | "@babel/types": "^7.4.4" 101 | } 102 | }, 103 | "@babel/helper-define-map": { 104 | "version": "7.4.4", 105 | "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz", 106 | "integrity": "sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==", 107 | "dev": true, 108 | "requires": { 109 | "@babel/helper-function-name": "^7.1.0", 110 | "@babel/types": "^7.4.4", 111 | "lodash": "^4.17.11" 112 | } 113 | }, 114 | "@babel/helper-explode-assignable-expression": { 115 | "version": "7.1.0", 116 | "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", 117 | "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", 118 | "dev": true, 119 | "requires": { 120 | "@babel/traverse": "^7.1.0", 121 | "@babel/types": "^7.0.0" 122 | } 123 | }, 124 | "@babel/helper-function-name": { 125 | "version": "7.1.0", 126 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", 127 | "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", 128 | "dev": true, 129 | "requires": { 130 | "@babel/helper-get-function-arity": "^7.0.0", 131 | "@babel/template": "^7.1.0", 132 | "@babel/types": "^7.0.0" 133 | } 134 | }, 135 | "@babel/helper-get-function-arity": { 136 | "version": "7.0.0", 137 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", 138 | "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", 139 | "dev": true, 140 | "requires": { 141 | "@babel/types": "^7.0.0" 142 | } 143 | }, 144 | "@babel/helper-hoist-variables": { 145 | "version": "7.4.4", 146 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", 147 | "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", 148 | "dev": true, 149 | "requires": { 150 | "@babel/types": "^7.4.4" 151 | } 152 | }, 153 | "@babel/helper-member-expression-to-functions": { 154 | "version": "7.0.0", 155 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", 156 | "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", 157 | "dev": true, 158 | "requires": { 159 | "@babel/types": "^7.0.0" 160 | } 161 | }, 162 | "@babel/helper-module-imports": { 163 | "version": "7.0.0", 164 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", 165 | "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", 166 | "dev": true, 167 | "requires": { 168 | "@babel/types": "^7.0.0" 169 | } 170 | }, 171 | "@babel/helper-module-transforms": { 172 | "version": "7.4.4", 173 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz", 174 | "integrity": "sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==", 175 | "dev": true, 176 | "requires": { 177 | "@babel/helper-module-imports": "^7.0.0", 178 | "@babel/helper-simple-access": "^7.1.0", 179 | "@babel/helper-split-export-declaration": "^7.4.4", 180 | "@babel/template": "^7.4.4", 181 | "@babel/types": "^7.4.4", 182 | "lodash": "^4.17.11" 183 | } 184 | }, 185 | "@babel/helper-optimise-call-expression": { 186 | "version": "7.0.0", 187 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", 188 | "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", 189 | "dev": true, 190 | "requires": { 191 | "@babel/types": "^7.0.0" 192 | } 193 | }, 194 | "@babel/helper-plugin-utils": { 195 | "version": "7.0.0", 196 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", 197 | "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", 198 | "dev": true 199 | }, 200 | "@babel/helper-regex": { 201 | "version": "7.4.4", 202 | "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.4.tgz", 203 | "integrity": "sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==", 204 | "dev": true, 205 | "requires": { 206 | "lodash": "^4.17.11" 207 | } 208 | }, 209 | "@babel/helper-remap-async-to-generator": { 210 | "version": "7.1.0", 211 | "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", 212 | "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", 213 | "dev": true, 214 | "requires": { 215 | "@babel/helper-annotate-as-pure": "^7.0.0", 216 | "@babel/helper-wrap-function": "^7.1.0", 217 | "@babel/template": "^7.1.0", 218 | "@babel/traverse": "^7.1.0", 219 | "@babel/types": "^7.0.0" 220 | } 221 | }, 222 | "@babel/helper-replace-supers": { 223 | "version": "7.4.4", 224 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz", 225 | "integrity": "sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==", 226 | "dev": true, 227 | "requires": { 228 | "@babel/helper-member-expression-to-functions": "^7.0.0", 229 | "@babel/helper-optimise-call-expression": "^7.0.0", 230 | "@babel/traverse": "^7.4.4", 231 | "@babel/types": "^7.4.4" 232 | } 233 | }, 234 | "@babel/helper-simple-access": { 235 | "version": "7.1.0", 236 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", 237 | "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", 238 | "dev": true, 239 | "requires": { 240 | "@babel/template": "^7.1.0", 241 | "@babel/types": "^7.0.0" 242 | } 243 | }, 244 | "@babel/helper-split-export-declaration": { 245 | "version": "7.4.4", 246 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", 247 | "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", 248 | "dev": true, 249 | "requires": { 250 | "@babel/types": "^7.4.4" 251 | } 252 | }, 253 | "@babel/helper-wrap-function": { 254 | "version": "7.2.0", 255 | "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", 256 | "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", 257 | "dev": true, 258 | "requires": { 259 | "@babel/helper-function-name": "^7.1.0", 260 | "@babel/template": "^7.1.0", 261 | "@babel/traverse": "^7.1.0", 262 | "@babel/types": "^7.2.0" 263 | } 264 | }, 265 | "@babel/helpers": { 266 | "version": "7.5.4", 267 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.4.tgz", 268 | "integrity": "sha512-6LJ6xwUEJP51w0sIgKyfvFMJvIb9mWAfohJp0+m6eHJigkFdcH8duZ1sfhn0ltJRzwUIT/yqqhdSfRpCpL7oow==", 269 | "dev": true, 270 | "requires": { 271 | "@babel/template": "^7.4.4", 272 | "@babel/traverse": "^7.5.0", 273 | "@babel/types": "^7.5.0" 274 | } 275 | }, 276 | "@babel/highlight": { 277 | "version": "7.5.0", 278 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", 279 | "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", 280 | "dev": true, 281 | "requires": { 282 | "chalk": "^2.0.0", 283 | "esutils": "^2.0.2", 284 | "js-tokens": "^4.0.0" 285 | } 286 | }, 287 | "@babel/parser": { 288 | "version": "7.5.0", 289 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.0.tgz", 290 | "integrity": "sha512-I5nW8AhGpOXGCCNYGc+p7ExQIBxRFnS2fd/d862bNOKvmoEPjYPcfIjsfdy0ujagYOIYPczKgD9l3FsgTkAzKA==", 291 | "dev": true 292 | }, 293 | "@babel/plugin-proposal-async-generator-functions": { 294 | "version": "7.2.0", 295 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", 296 | "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", 297 | "dev": true, 298 | "requires": { 299 | "@babel/helper-plugin-utils": "^7.0.0", 300 | "@babel/helper-remap-async-to-generator": "^7.1.0", 301 | "@babel/plugin-syntax-async-generators": "^7.2.0" 302 | } 303 | }, 304 | "@babel/plugin-proposal-dynamic-import": { 305 | "version": "7.5.0", 306 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz", 307 | "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==", 308 | "dev": true, 309 | "requires": { 310 | "@babel/helper-plugin-utils": "^7.0.0", 311 | "@babel/plugin-syntax-dynamic-import": "^7.2.0" 312 | } 313 | }, 314 | "@babel/plugin-proposal-json-strings": { 315 | "version": "7.2.0", 316 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", 317 | "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", 318 | "dev": true, 319 | "requires": { 320 | "@babel/helper-plugin-utils": "^7.0.0", 321 | "@babel/plugin-syntax-json-strings": "^7.2.0" 322 | } 323 | }, 324 | "@babel/plugin-proposal-object-rest-spread": { 325 | "version": "7.5.4", 326 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.4.tgz", 327 | "integrity": "sha512-KCx0z3y7y8ipZUMAEEJOyNi11lMb/FOPUjjB113tfowgw0c16EGYos7worCKBcUAh2oG+OBnoUhsnTSoLpV9uA==", 328 | "dev": true, 329 | "requires": { 330 | "@babel/helper-plugin-utils": "^7.0.0", 331 | "@babel/plugin-syntax-object-rest-spread": "^7.2.0" 332 | } 333 | }, 334 | "@babel/plugin-proposal-optional-catch-binding": { 335 | "version": "7.2.0", 336 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", 337 | "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", 338 | "dev": true, 339 | "requires": { 340 | "@babel/helper-plugin-utils": "^7.0.0", 341 | "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" 342 | } 343 | }, 344 | "@babel/plugin-proposal-unicode-property-regex": { 345 | "version": "7.4.4", 346 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", 347 | "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", 348 | "dev": true, 349 | "requires": { 350 | "@babel/helper-plugin-utils": "^7.0.0", 351 | "@babel/helper-regex": "^7.4.4", 352 | "regexpu-core": "^4.5.4" 353 | } 354 | }, 355 | "@babel/plugin-syntax-async-generators": { 356 | "version": "7.2.0", 357 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", 358 | "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", 359 | "dev": true, 360 | "requires": { 361 | "@babel/helper-plugin-utils": "^7.0.0" 362 | } 363 | }, 364 | "@babel/plugin-syntax-dynamic-import": { 365 | "version": "7.2.0", 366 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", 367 | "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", 368 | "dev": true, 369 | "requires": { 370 | "@babel/helper-plugin-utils": "^7.0.0" 371 | } 372 | }, 373 | "@babel/plugin-syntax-json-strings": { 374 | "version": "7.2.0", 375 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", 376 | "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", 377 | "dev": true, 378 | "requires": { 379 | "@babel/helper-plugin-utils": "^7.0.0" 380 | } 381 | }, 382 | "@babel/plugin-syntax-object-rest-spread": { 383 | "version": "7.2.0", 384 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", 385 | "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", 386 | "dev": true, 387 | "requires": { 388 | "@babel/helper-plugin-utils": "^7.0.0" 389 | } 390 | }, 391 | "@babel/plugin-syntax-optional-catch-binding": { 392 | "version": "7.2.0", 393 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", 394 | "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", 395 | "dev": true, 396 | "requires": { 397 | "@babel/helper-plugin-utils": "^7.0.0" 398 | } 399 | }, 400 | "@babel/plugin-transform-arrow-functions": { 401 | "version": "7.2.0", 402 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", 403 | "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", 404 | "dev": true, 405 | "requires": { 406 | "@babel/helper-plugin-utils": "^7.0.0" 407 | } 408 | }, 409 | "@babel/plugin-transform-async-to-generator": { 410 | "version": "7.5.0", 411 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz", 412 | "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==", 413 | "dev": true, 414 | "requires": { 415 | "@babel/helper-module-imports": "^7.0.0", 416 | "@babel/helper-plugin-utils": "^7.0.0", 417 | "@babel/helper-remap-async-to-generator": "^7.1.0" 418 | } 419 | }, 420 | "@babel/plugin-transform-block-scoped-functions": { 421 | "version": "7.2.0", 422 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", 423 | "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", 424 | "dev": true, 425 | "requires": { 426 | "@babel/helper-plugin-utils": "^7.0.0" 427 | } 428 | }, 429 | "@babel/plugin-transform-block-scoping": { 430 | "version": "7.4.4", 431 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz", 432 | "integrity": "sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==", 433 | "dev": true, 434 | "requires": { 435 | "@babel/helper-plugin-utils": "^7.0.0", 436 | "lodash": "^4.17.11" 437 | } 438 | }, 439 | "@babel/plugin-transform-classes": { 440 | "version": "7.4.4", 441 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz", 442 | "integrity": "sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==", 443 | "dev": true, 444 | "requires": { 445 | "@babel/helper-annotate-as-pure": "^7.0.0", 446 | "@babel/helper-define-map": "^7.4.4", 447 | "@babel/helper-function-name": "^7.1.0", 448 | "@babel/helper-optimise-call-expression": "^7.0.0", 449 | "@babel/helper-plugin-utils": "^7.0.0", 450 | "@babel/helper-replace-supers": "^7.4.4", 451 | "@babel/helper-split-export-declaration": "^7.4.4", 452 | "globals": "^11.1.0" 453 | } 454 | }, 455 | "@babel/plugin-transform-computed-properties": { 456 | "version": "7.2.0", 457 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", 458 | "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", 459 | "dev": true, 460 | "requires": { 461 | "@babel/helper-plugin-utils": "^7.0.0" 462 | } 463 | }, 464 | "@babel/plugin-transform-destructuring": { 465 | "version": "7.5.0", 466 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz", 467 | "integrity": "sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ==", 468 | "dev": true, 469 | "requires": { 470 | "@babel/helper-plugin-utils": "^7.0.0" 471 | } 472 | }, 473 | "@babel/plugin-transform-dotall-regex": { 474 | "version": "7.4.4", 475 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", 476 | "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", 477 | "dev": true, 478 | "requires": { 479 | "@babel/helper-plugin-utils": "^7.0.0", 480 | "@babel/helper-regex": "^7.4.4", 481 | "regexpu-core": "^4.5.4" 482 | } 483 | }, 484 | "@babel/plugin-transform-duplicate-keys": { 485 | "version": "7.5.0", 486 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz", 487 | "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==", 488 | "dev": true, 489 | "requires": { 490 | "@babel/helper-plugin-utils": "^7.0.0" 491 | } 492 | }, 493 | "@babel/plugin-transform-exponentiation-operator": { 494 | "version": "7.2.0", 495 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", 496 | "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", 497 | "dev": true, 498 | "requires": { 499 | "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", 500 | "@babel/helper-plugin-utils": "^7.0.0" 501 | } 502 | }, 503 | "@babel/plugin-transform-for-of": { 504 | "version": "7.4.4", 505 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", 506 | "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", 507 | "dev": true, 508 | "requires": { 509 | "@babel/helper-plugin-utils": "^7.0.0" 510 | } 511 | }, 512 | "@babel/plugin-transform-function-name": { 513 | "version": "7.4.4", 514 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", 515 | "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", 516 | "dev": true, 517 | "requires": { 518 | "@babel/helper-function-name": "^7.1.0", 519 | "@babel/helper-plugin-utils": "^7.0.0" 520 | } 521 | }, 522 | "@babel/plugin-transform-literals": { 523 | "version": "7.2.0", 524 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", 525 | "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", 526 | "dev": true, 527 | "requires": { 528 | "@babel/helper-plugin-utils": "^7.0.0" 529 | } 530 | }, 531 | "@babel/plugin-transform-member-expression-literals": { 532 | "version": "7.2.0", 533 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", 534 | "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", 535 | "dev": true, 536 | "requires": { 537 | "@babel/helper-plugin-utils": "^7.0.0" 538 | } 539 | }, 540 | "@babel/plugin-transform-modules-amd": { 541 | "version": "7.5.0", 542 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz", 543 | "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==", 544 | "dev": true, 545 | "requires": { 546 | "@babel/helper-module-transforms": "^7.1.0", 547 | "@babel/helper-plugin-utils": "^7.0.0", 548 | "babel-plugin-dynamic-import-node": "^2.3.0" 549 | } 550 | }, 551 | "@babel/plugin-transform-modules-commonjs": { 552 | "version": "7.5.0", 553 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz", 554 | "integrity": "sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ==", 555 | "dev": true, 556 | "requires": { 557 | "@babel/helper-module-transforms": "^7.4.4", 558 | "@babel/helper-plugin-utils": "^7.0.0", 559 | "@babel/helper-simple-access": "^7.1.0", 560 | "babel-plugin-dynamic-import-node": "^2.3.0" 561 | } 562 | }, 563 | "@babel/plugin-transform-modules-systemjs": { 564 | "version": "7.5.0", 565 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz", 566 | "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==", 567 | "dev": true, 568 | "requires": { 569 | "@babel/helper-hoist-variables": "^7.4.4", 570 | "@babel/helper-plugin-utils": "^7.0.0", 571 | "babel-plugin-dynamic-import-node": "^2.3.0" 572 | } 573 | }, 574 | "@babel/plugin-transform-modules-umd": { 575 | "version": "7.2.0", 576 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", 577 | "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", 578 | "dev": true, 579 | "requires": { 580 | "@babel/helper-module-transforms": "^7.1.0", 581 | "@babel/helper-plugin-utils": "^7.0.0" 582 | } 583 | }, 584 | "@babel/plugin-transform-named-capturing-groups-regex": { 585 | "version": "7.4.5", 586 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz", 587 | "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==", 588 | "dev": true, 589 | "requires": { 590 | "regexp-tree": "^0.1.6" 591 | } 592 | }, 593 | "@babel/plugin-transform-new-target": { 594 | "version": "7.4.4", 595 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", 596 | "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", 597 | "dev": true, 598 | "requires": { 599 | "@babel/helper-plugin-utils": "^7.0.0" 600 | } 601 | }, 602 | "@babel/plugin-transform-object-super": { 603 | "version": "7.2.0", 604 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", 605 | "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", 606 | "dev": true, 607 | "requires": { 608 | "@babel/helper-plugin-utils": "^7.0.0", 609 | "@babel/helper-replace-supers": "^7.1.0" 610 | } 611 | }, 612 | "@babel/plugin-transform-parameters": { 613 | "version": "7.4.4", 614 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", 615 | "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", 616 | "dev": true, 617 | "requires": { 618 | "@babel/helper-call-delegate": "^7.4.4", 619 | "@babel/helper-get-function-arity": "^7.0.0", 620 | "@babel/helper-plugin-utils": "^7.0.0" 621 | } 622 | }, 623 | "@babel/plugin-transform-property-literals": { 624 | "version": "7.2.0", 625 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", 626 | "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", 627 | "dev": true, 628 | "requires": { 629 | "@babel/helper-plugin-utils": "^7.0.0" 630 | } 631 | }, 632 | "@babel/plugin-transform-regenerator": { 633 | "version": "7.4.5", 634 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", 635 | "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", 636 | "dev": true, 637 | "requires": { 638 | "regenerator-transform": "^0.14.0" 639 | } 640 | }, 641 | "@babel/plugin-transform-reserved-words": { 642 | "version": "7.2.0", 643 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", 644 | "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", 645 | "dev": true, 646 | "requires": { 647 | "@babel/helper-plugin-utils": "^7.0.0" 648 | } 649 | }, 650 | "@babel/plugin-transform-runtime": { 651 | "version": "7.5.0", 652 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.5.0.tgz", 653 | "integrity": "sha512-LmPIZOAgTLl+86gR9KjLXex6P/lRz1fWEjTz6V6QZMmKie51ja3tvzdwORqhHc4RWR8TcZ5pClpRWs0mlaA2ng==", 654 | "dev": true, 655 | "requires": { 656 | "@babel/helper-module-imports": "^7.0.0", 657 | "@babel/helper-plugin-utils": "^7.0.0", 658 | "resolve": "^1.8.1", 659 | "semver": "^5.5.1" 660 | } 661 | }, 662 | "@babel/plugin-transform-shorthand-properties": { 663 | "version": "7.2.0", 664 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", 665 | "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", 666 | "dev": true, 667 | "requires": { 668 | "@babel/helper-plugin-utils": "^7.0.0" 669 | } 670 | }, 671 | "@babel/plugin-transform-spread": { 672 | "version": "7.2.2", 673 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", 674 | "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", 675 | "dev": true, 676 | "requires": { 677 | "@babel/helper-plugin-utils": "^7.0.0" 678 | } 679 | }, 680 | "@babel/plugin-transform-sticky-regex": { 681 | "version": "7.2.0", 682 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", 683 | "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", 684 | "dev": true, 685 | "requires": { 686 | "@babel/helper-plugin-utils": "^7.0.0", 687 | "@babel/helper-regex": "^7.0.0" 688 | } 689 | }, 690 | "@babel/plugin-transform-template-literals": { 691 | "version": "7.4.4", 692 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", 693 | "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", 694 | "dev": true, 695 | "requires": { 696 | "@babel/helper-annotate-as-pure": "^7.0.0", 697 | "@babel/helper-plugin-utils": "^7.0.0" 698 | } 699 | }, 700 | "@babel/plugin-transform-typeof-symbol": { 701 | "version": "7.2.0", 702 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", 703 | "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", 704 | "dev": true, 705 | "requires": { 706 | "@babel/helper-plugin-utils": "^7.0.0" 707 | } 708 | }, 709 | "@babel/plugin-transform-unicode-regex": { 710 | "version": "7.4.4", 711 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", 712 | "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", 713 | "dev": true, 714 | "requires": { 715 | "@babel/helper-plugin-utils": "^7.0.0", 716 | "@babel/helper-regex": "^7.4.4", 717 | "regexpu-core": "^4.5.4" 718 | } 719 | }, 720 | "@babel/preset-env": { 721 | "version": "7.5.4", 722 | "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.5.4.tgz", 723 | "integrity": "sha512-hFnFnouyRNiH1rL8YkX1ANCNAUVC8Djwdqfev8i1415tnAG+7hlA5zhZ0Q/3Q5gkop4HioIPbCEWAalqcbxRoQ==", 724 | "dev": true, 725 | "requires": { 726 | "@babel/helper-module-imports": "^7.0.0", 727 | "@babel/helper-plugin-utils": "^7.0.0", 728 | "@babel/plugin-proposal-async-generator-functions": "^7.2.0", 729 | "@babel/plugin-proposal-dynamic-import": "^7.5.0", 730 | "@babel/plugin-proposal-json-strings": "^7.2.0", 731 | "@babel/plugin-proposal-object-rest-spread": "^7.5.4", 732 | "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", 733 | "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", 734 | "@babel/plugin-syntax-async-generators": "^7.2.0", 735 | "@babel/plugin-syntax-dynamic-import": "^7.2.0", 736 | "@babel/plugin-syntax-json-strings": "^7.2.0", 737 | "@babel/plugin-syntax-object-rest-spread": "^7.2.0", 738 | "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", 739 | "@babel/plugin-transform-arrow-functions": "^7.2.0", 740 | "@babel/plugin-transform-async-to-generator": "^7.5.0", 741 | "@babel/plugin-transform-block-scoped-functions": "^7.2.0", 742 | "@babel/plugin-transform-block-scoping": "^7.4.4", 743 | "@babel/plugin-transform-classes": "^7.4.4", 744 | "@babel/plugin-transform-computed-properties": "^7.2.0", 745 | "@babel/plugin-transform-destructuring": "^7.5.0", 746 | "@babel/plugin-transform-dotall-regex": "^7.4.4", 747 | "@babel/plugin-transform-duplicate-keys": "^7.5.0", 748 | "@babel/plugin-transform-exponentiation-operator": "^7.2.0", 749 | "@babel/plugin-transform-for-of": "^7.4.4", 750 | "@babel/plugin-transform-function-name": "^7.4.4", 751 | "@babel/plugin-transform-literals": "^7.2.0", 752 | "@babel/plugin-transform-member-expression-literals": "^7.2.0", 753 | "@babel/plugin-transform-modules-amd": "^7.5.0", 754 | "@babel/plugin-transform-modules-commonjs": "^7.5.0", 755 | "@babel/plugin-transform-modules-systemjs": "^7.5.0", 756 | "@babel/plugin-transform-modules-umd": "^7.2.0", 757 | "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5", 758 | "@babel/plugin-transform-new-target": "^7.4.4", 759 | "@babel/plugin-transform-object-super": "^7.2.0", 760 | "@babel/plugin-transform-parameters": "^7.4.4", 761 | "@babel/plugin-transform-property-literals": "^7.2.0", 762 | "@babel/plugin-transform-regenerator": "^7.4.5", 763 | "@babel/plugin-transform-reserved-words": "^7.2.0", 764 | "@babel/plugin-transform-shorthand-properties": "^7.2.0", 765 | "@babel/plugin-transform-spread": "^7.2.0", 766 | "@babel/plugin-transform-sticky-regex": "^7.2.0", 767 | "@babel/plugin-transform-template-literals": "^7.4.4", 768 | "@babel/plugin-transform-typeof-symbol": "^7.2.0", 769 | "@babel/plugin-transform-unicode-regex": "^7.4.4", 770 | "@babel/types": "^7.5.0", 771 | "browserslist": "^4.6.0", 772 | "core-js-compat": "^3.1.1", 773 | "invariant": "^2.2.2", 774 | "js-levenshtein": "^1.1.3", 775 | "semver": "^5.5.0" 776 | } 777 | }, 778 | "@babel/runtime": { 779 | "version": "7.5.4", 780 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.4.tgz", 781 | "integrity": "sha512-Na84uwyImZZc3FKf4aUF1tysApzwf3p2yuFBIyBfbzT5glzKTdvYI4KVW4kcgjrzoGUjC7w3YyCHcJKaRxsr2Q==", 782 | "dev": true, 783 | "requires": { 784 | "regenerator-runtime": "^0.13.2" 785 | } 786 | }, 787 | "@babel/template": { 788 | "version": "7.4.4", 789 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", 790 | "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", 791 | "dev": true, 792 | "requires": { 793 | "@babel/code-frame": "^7.0.0", 794 | "@babel/parser": "^7.4.4", 795 | "@babel/types": "^7.4.4" 796 | } 797 | }, 798 | "@babel/traverse": { 799 | "version": "7.5.0", 800 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.0.tgz", 801 | "integrity": "sha512-SnA9aLbyOCcnnbQEGwdfBggnc142h/rbqqsXcaATj2hZcegCl903pUD/lfpsNBlBSuWow/YDfRyJuWi2EPR5cg==", 802 | "dev": true, 803 | "requires": { 804 | "@babel/code-frame": "^7.0.0", 805 | "@babel/generator": "^7.5.0", 806 | "@babel/helper-function-name": "^7.1.0", 807 | "@babel/helper-split-export-declaration": "^7.4.4", 808 | "@babel/parser": "^7.5.0", 809 | "@babel/types": "^7.5.0", 810 | "debug": "^4.1.0", 811 | "globals": "^11.1.0", 812 | "lodash": "^4.17.11" 813 | }, 814 | "dependencies": { 815 | "debug": { 816 | "version": "4.1.1", 817 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 818 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 819 | "dev": true, 820 | "requires": { 821 | "ms": "^2.1.1" 822 | } 823 | }, 824 | "ms": { 825 | "version": "2.1.2", 826 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 827 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 828 | "dev": true 829 | } 830 | } 831 | }, 832 | "@babel/types": { 833 | "version": "7.5.0", 834 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.0.tgz", 835 | "integrity": "sha512-UFpDVqRABKsW01bvw7/wSUe56uy6RXM5+VJibVVAybDGxEW25jdwiFJEf7ASvSaC7sN7rbE/l3cLp2izav+CtQ==", 836 | "dev": true, 837 | "requires": { 838 | "esutils": "^2.0.2", 839 | "lodash": "^4.17.11", 840 | "to-fast-properties": "^2.0.0" 841 | } 842 | }, 843 | "@polka/url": { 844 | "version": "0.5.0", 845 | "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz", 846 | "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==" 847 | }, 848 | "@types/estree": { 849 | "version": "0.0.39", 850 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", 851 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", 852 | "dev": true 853 | }, 854 | "@types/node": { 855 | "version": "12.6.2", 856 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.2.tgz", 857 | "integrity": "sha512-gojym4tX0FWeV2gsW4Xmzo5wxGjXGm550oVUII7f7G5o4BV6c7DBdiG1RRQd+y1bvqRyYtPfMK85UM95vsapqQ==", 858 | "dev": true 859 | }, 860 | "@types/resolve": { 861 | "version": "0.0.8", 862 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", 863 | "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", 864 | "dev": true, 865 | "requires": { 866 | "@types/node": "*" 867 | } 868 | }, 869 | "accepts": { 870 | "version": "1.3.7", 871 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 872 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 873 | "requires": { 874 | "mime-types": "~2.1.24", 875 | "negotiator": "0.6.2" 876 | } 877 | }, 878 | "acorn": { 879 | "version": "6.2.0", 880 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.0.tgz", 881 | "integrity": "sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw==", 882 | "dev": true 883 | }, 884 | "after": { 885 | "version": "0.8.2", 886 | "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", 887 | "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" 888 | }, 889 | "ansi-styles": { 890 | "version": "3.2.1", 891 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 892 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 893 | "dev": true, 894 | "requires": { 895 | "color-convert": "^1.9.0" 896 | } 897 | }, 898 | "array-filter": { 899 | "version": "0.0.1", 900 | "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", 901 | "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", 902 | "dev": true 903 | }, 904 | "array-map": { 905 | "version": "0.0.0", 906 | "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", 907 | "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", 908 | "dev": true 909 | }, 910 | "array-reduce": { 911 | "version": "0.0.0", 912 | "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", 913 | "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", 914 | "dev": true 915 | }, 916 | "arraybuffer.slice": { 917 | "version": "0.0.7", 918 | "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", 919 | "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" 920 | }, 921 | "async-limiter": { 922 | "version": "1.0.0", 923 | "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", 924 | "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" 925 | }, 926 | "babel-plugin-dynamic-import-node": { 927 | "version": "2.3.0", 928 | "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", 929 | "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", 930 | "dev": true, 931 | "requires": { 932 | "object.assign": "^4.1.0" 933 | } 934 | }, 935 | "backo2": { 936 | "version": "1.0.2", 937 | "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", 938 | "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" 939 | }, 940 | "balanced-match": { 941 | "version": "1.0.0", 942 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 943 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 944 | "dev": true 945 | }, 946 | "base64-arraybuffer": { 947 | "version": "0.1.5", 948 | "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", 949 | "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" 950 | }, 951 | "base64id": { 952 | "version": "1.0.0", 953 | "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", 954 | "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" 955 | }, 956 | "better-assert": { 957 | "version": "1.0.2", 958 | "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", 959 | "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", 960 | "requires": { 961 | "callsite": "1.0.0" 962 | } 963 | }, 964 | "blob": { 965 | "version": "0.0.5", 966 | "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", 967 | "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" 968 | }, 969 | "brace-expansion": { 970 | "version": "1.1.11", 971 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 972 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 973 | "dev": true, 974 | "requires": { 975 | "balanced-match": "^1.0.0", 976 | "concat-map": "0.0.1" 977 | } 978 | }, 979 | "browserslist": { 980 | "version": "4.6.6", 981 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz", 982 | "integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==", 983 | "dev": true, 984 | "requires": { 985 | "caniuse-lite": "^1.0.30000984", 986 | "electron-to-chromium": "^1.3.191", 987 | "node-releases": "^1.1.25" 988 | } 989 | }, 990 | "buffer-from": { 991 | "version": "1.1.1", 992 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 993 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 994 | "dev": true 995 | }, 996 | "builtin-modules": { 997 | "version": "3.1.0", 998 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", 999 | "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", 1000 | "dev": true 1001 | }, 1002 | "bytes": { 1003 | "version": "3.0.0", 1004 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 1005 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" 1006 | }, 1007 | "callsite": { 1008 | "version": "1.0.0", 1009 | "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", 1010 | "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" 1011 | }, 1012 | "camel-case": { 1013 | "version": "3.0.0", 1014 | "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", 1015 | "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", 1016 | "dev": true, 1017 | "requires": { 1018 | "no-case": "^2.2.0", 1019 | "upper-case": "^1.1.1" 1020 | } 1021 | }, 1022 | "caniuse-lite": { 1023 | "version": "1.0.30000984", 1024 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000984.tgz", 1025 | "integrity": "sha512-n5tKOjMaZ1fksIpQbjERuqCyfgec/m9pferkFQbLmWtqLUdmt12hNhjSwsmPdqeiG2NkITOQhr1VYIwWSAceiA==", 1026 | "dev": true 1027 | }, 1028 | "chalk": { 1029 | "version": "2.4.2", 1030 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1031 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1032 | "dev": true, 1033 | "requires": { 1034 | "ansi-styles": "^3.2.1", 1035 | "escape-string-regexp": "^1.0.5", 1036 | "supports-color": "^5.3.0" 1037 | } 1038 | }, 1039 | "clean-css": { 1040 | "version": "4.2.1", 1041 | "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", 1042 | "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", 1043 | "dev": true, 1044 | "requires": { 1045 | "source-map": "~0.6.0" 1046 | }, 1047 | "dependencies": { 1048 | "source-map": { 1049 | "version": "0.6.1", 1050 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1051 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1052 | "dev": true 1053 | } 1054 | } 1055 | }, 1056 | "color-convert": { 1057 | "version": "1.9.3", 1058 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1059 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1060 | "dev": true, 1061 | "requires": { 1062 | "color-name": "1.1.3" 1063 | } 1064 | }, 1065 | "color-name": { 1066 | "version": "1.1.3", 1067 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1068 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 1069 | "dev": true 1070 | }, 1071 | "commander": { 1072 | "version": "2.20.0", 1073 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", 1074 | "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", 1075 | "dev": true 1076 | }, 1077 | "component-bind": { 1078 | "version": "1.0.0", 1079 | "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", 1080 | "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" 1081 | }, 1082 | "component-emitter": { 1083 | "version": "1.2.1", 1084 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", 1085 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" 1086 | }, 1087 | "component-inherit": { 1088 | "version": "0.0.3", 1089 | "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", 1090 | "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" 1091 | }, 1092 | "compressible": { 1093 | "version": "2.0.17", 1094 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", 1095 | "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", 1096 | "requires": { 1097 | "mime-db": ">= 1.40.0 < 2" 1098 | } 1099 | }, 1100 | "compression": { 1101 | "version": "1.7.4", 1102 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", 1103 | "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", 1104 | "requires": { 1105 | "accepts": "~1.3.5", 1106 | "bytes": "3.0.0", 1107 | "compressible": "~2.0.16", 1108 | "debug": "2.6.9", 1109 | "on-headers": "~1.0.2", 1110 | "safe-buffer": "5.1.2", 1111 | "vary": "~1.1.2" 1112 | } 1113 | }, 1114 | "concat-map": { 1115 | "version": "0.0.1", 1116 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1117 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1118 | "dev": true 1119 | }, 1120 | "convert-source-map": { 1121 | "version": "1.6.0", 1122 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", 1123 | "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", 1124 | "dev": true, 1125 | "requires": { 1126 | "safe-buffer": "~5.1.1" 1127 | } 1128 | }, 1129 | "cookie": { 1130 | "version": "0.3.1", 1131 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", 1132 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" 1133 | }, 1134 | "core-js-compat": { 1135 | "version": "3.1.4", 1136 | "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.1.4.tgz", 1137 | "integrity": "sha512-Z5zbO9f1d0YrJdoaQhphVAnKPimX92D6z8lCGphH89MNRxlL1prI9ExJPqVwP0/kgkQCv8c4GJGT8X16yUncOg==", 1138 | "dev": true, 1139 | "requires": { 1140 | "browserslist": "^4.6.2", 1141 | "core-js-pure": "3.1.4", 1142 | "semver": "^6.1.1" 1143 | }, 1144 | "dependencies": { 1145 | "semver": { 1146 | "version": "6.2.0", 1147 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", 1148 | "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==", 1149 | "dev": true 1150 | } 1151 | } 1152 | }, 1153 | "core-js-pure": { 1154 | "version": "3.1.4", 1155 | "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.1.4.tgz", 1156 | "integrity": "sha512-uJ4Z7iPNwiu1foygbcZYJsJs1jiXrTTCvxfLDXNhI/I+NHbSIEyr548y4fcsCEyWY0XgfAG/qqaunJ1SThHenA==", 1157 | "dev": true 1158 | }, 1159 | "core-util-is": { 1160 | "version": "1.0.2", 1161 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1162 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 1163 | "dev": true 1164 | }, 1165 | "cross-spawn": { 1166 | "version": "6.0.5", 1167 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 1168 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 1169 | "dev": true, 1170 | "requires": { 1171 | "nice-try": "^1.0.4", 1172 | "path-key": "^2.0.1", 1173 | "semver": "^5.5.0", 1174 | "shebang-command": "^1.2.0", 1175 | "which": "^1.2.9" 1176 | } 1177 | }, 1178 | "debug": { 1179 | "version": "2.6.9", 1180 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1181 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1182 | "requires": { 1183 | "ms": "2.0.0" 1184 | } 1185 | }, 1186 | "define-properties": { 1187 | "version": "1.1.3", 1188 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 1189 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 1190 | "dev": true, 1191 | "requires": { 1192 | "object-keys": "^1.0.12" 1193 | } 1194 | }, 1195 | "electron-to-chromium": { 1196 | "version": "1.3.191", 1197 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.191.tgz", 1198 | "integrity": "sha512-jasjtY5RUy/TOyiUYM2fb4BDaPZfm6CXRFeJDMfFsXYADGxUN49RBqtgB7EL2RmJXeIRUk9lM1U6A5yk2YJMPQ==", 1199 | "dev": true 1200 | }, 1201 | "engine.io": { 1202 | "version": "3.3.2", 1203 | "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.3.2.tgz", 1204 | "integrity": "sha512-AsaA9KG7cWPXWHp5FvHdDWY3AMWeZ8x+2pUVLcn71qE5AtAzgGbxuclOytygskw8XGmiQafTmnI9Bix3uihu2w==", 1205 | "requires": { 1206 | "accepts": "~1.3.4", 1207 | "base64id": "1.0.0", 1208 | "cookie": "0.3.1", 1209 | "debug": "~3.1.0", 1210 | "engine.io-parser": "~2.1.0", 1211 | "ws": "~6.1.0" 1212 | }, 1213 | "dependencies": { 1214 | "debug": { 1215 | "version": "3.1.0", 1216 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 1217 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 1218 | "requires": { 1219 | "ms": "2.0.0" 1220 | } 1221 | } 1222 | } 1223 | }, 1224 | "engine.io-client": { 1225 | "version": "3.3.2", 1226 | "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.3.2.tgz", 1227 | "integrity": "sha512-y0CPINnhMvPuwtqXfsGuWE8BB66+B6wTtCofQDRecMQPYX3MYUZXFNKDhdrSe3EVjgOu4V3rxdeqN/Tr91IgbQ==", 1228 | "requires": { 1229 | "component-emitter": "1.2.1", 1230 | "component-inherit": "0.0.3", 1231 | "debug": "~3.1.0", 1232 | "engine.io-parser": "~2.1.1", 1233 | "has-cors": "1.1.0", 1234 | "indexof": "0.0.1", 1235 | "parseqs": "0.0.5", 1236 | "parseuri": "0.0.5", 1237 | "ws": "~6.1.0", 1238 | "xmlhttprequest-ssl": "~1.5.4", 1239 | "yeast": "0.1.2" 1240 | }, 1241 | "dependencies": { 1242 | "debug": { 1243 | "version": "3.1.0", 1244 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 1245 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 1246 | "requires": { 1247 | "ms": "2.0.0" 1248 | } 1249 | } 1250 | } 1251 | }, 1252 | "engine.io-parser": { 1253 | "version": "2.1.3", 1254 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", 1255 | "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", 1256 | "requires": { 1257 | "after": "0.8.2", 1258 | "arraybuffer.slice": "~0.0.7", 1259 | "base64-arraybuffer": "0.1.5", 1260 | "blob": "0.0.5", 1261 | "has-binary2": "~1.0.2" 1262 | } 1263 | }, 1264 | "error-ex": { 1265 | "version": "1.3.2", 1266 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 1267 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 1268 | "dev": true, 1269 | "requires": { 1270 | "is-arrayish": "^0.2.1" 1271 | } 1272 | }, 1273 | "es-abstract": { 1274 | "version": "1.13.0", 1275 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", 1276 | "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", 1277 | "dev": true, 1278 | "requires": { 1279 | "es-to-primitive": "^1.2.0", 1280 | "function-bind": "^1.1.1", 1281 | "has": "^1.0.3", 1282 | "is-callable": "^1.1.4", 1283 | "is-regex": "^1.0.4", 1284 | "object-keys": "^1.0.12" 1285 | } 1286 | }, 1287 | "es-to-primitive": { 1288 | "version": "1.2.0", 1289 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", 1290 | "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", 1291 | "dev": true, 1292 | "requires": { 1293 | "is-callable": "^1.1.4", 1294 | "is-date-object": "^1.0.1", 1295 | "is-symbol": "^1.0.2" 1296 | } 1297 | }, 1298 | "escape-string-regexp": { 1299 | "version": "1.0.5", 1300 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1301 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1302 | "dev": true 1303 | }, 1304 | "estree-walker": { 1305 | "version": "0.6.1", 1306 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 1307 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 1308 | "dev": true 1309 | }, 1310 | "esutils": { 1311 | "version": "2.0.2", 1312 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 1313 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 1314 | "dev": true 1315 | }, 1316 | "function-bind": { 1317 | "version": "1.1.1", 1318 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1319 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1320 | "dev": true 1321 | }, 1322 | "globals": { 1323 | "version": "11.12.0", 1324 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1325 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1326 | "dev": true 1327 | }, 1328 | "graceful-fs": { 1329 | "version": "4.2.0", 1330 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", 1331 | "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==", 1332 | "dev": true 1333 | }, 1334 | "has": { 1335 | "version": "1.0.3", 1336 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1337 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1338 | "dev": true, 1339 | "requires": { 1340 | "function-bind": "^1.1.1" 1341 | } 1342 | }, 1343 | "has-binary2": { 1344 | "version": "1.0.3", 1345 | "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", 1346 | "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", 1347 | "requires": { 1348 | "isarray": "2.0.1" 1349 | }, 1350 | "dependencies": { 1351 | "isarray": { 1352 | "version": "2.0.1", 1353 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", 1354 | "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" 1355 | } 1356 | } 1357 | }, 1358 | "has-cors": { 1359 | "version": "1.1.0", 1360 | "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", 1361 | "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" 1362 | }, 1363 | "has-flag": { 1364 | "version": "3.0.0", 1365 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1366 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1367 | "dev": true 1368 | }, 1369 | "has-symbols": { 1370 | "version": "1.0.0", 1371 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", 1372 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", 1373 | "dev": true 1374 | }, 1375 | "he": { 1376 | "version": "1.2.0", 1377 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1378 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1379 | "dev": true 1380 | }, 1381 | "hosted-git-info": { 1382 | "version": "2.7.1", 1383 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", 1384 | "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", 1385 | "dev": true 1386 | }, 1387 | "html-minifier": { 1388 | "version": "4.0.0", 1389 | "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz", 1390 | "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==", 1391 | "dev": true, 1392 | "requires": { 1393 | "camel-case": "^3.0.0", 1394 | "clean-css": "^4.2.1", 1395 | "commander": "^2.19.0", 1396 | "he": "^1.2.0", 1397 | "param-case": "^2.1.1", 1398 | "relateurl": "^0.2.7", 1399 | "uglify-js": "^3.5.1" 1400 | } 1401 | }, 1402 | "http-link-header": { 1403 | "version": "1.0.2", 1404 | "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.0.2.tgz", 1405 | "integrity": "sha512-z6YOZ8ZEnejkcCWlGZzYXNa6i+ZaTfiTg3WhlV/YvnNya3W/RbX1bMVUMTuCrg/DrtTCQxaFCkXCz4FtLpcebg==", 1406 | "dev": true 1407 | }, 1408 | "indexof": { 1409 | "version": "0.0.1", 1410 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", 1411 | "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" 1412 | }, 1413 | "inherits": { 1414 | "version": "2.0.4", 1415 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1416 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1417 | "dev": true 1418 | }, 1419 | "invariant": { 1420 | "version": "2.2.4", 1421 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", 1422 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", 1423 | "dev": true, 1424 | "requires": { 1425 | "loose-envify": "^1.0.0" 1426 | } 1427 | }, 1428 | "is-arrayish": { 1429 | "version": "0.2.1", 1430 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1431 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1432 | "dev": true 1433 | }, 1434 | "is-callable": { 1435 | "version": "1.1.4", 1436 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", 1437 | "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", 1438 | "dev": true 1439 | }, 1440 | "is-date-object": { 1441 | "version": "1.0.1", 1442 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", 1443 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", 1444 | "dev": true 1445 | }, 1446 | "is-module": { 1447 | "version": "1.0.0", 1448 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 1449 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", 1450 | "dev": true 1451 | }, 1452 | "is-reference": { 1453 | "version": "1.1.3", 1454 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.3.tgz", 1455 | "integrity": "sha512-W1iHHv/oyBb2pPxkBxtaewxa1BC58Pn5J0hogyCdefwUIvb6R+TGbAcIa4qPNYLqLhb3EnOgUf2MQkkF76BcKw==", 1456 | "dev": true, 1457 | "requires": { 1458 | "@types/estree": "0.0.39" 1459 | } 1460 | }, 1461 | "is-regex": { 1462 | "version": "1.0.4", 1463 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 1464 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 1465 | "dev": true, 1466 | "requires": { 1467 | "has": "^1.0.1" 1468 | } 1469 | }, 1470 | "is-symbol": { 1471 | "version": "1.0.2", 1472 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", 1473 | "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", 1474 | "dev": true, 1475 | "requires": { 1476 | "has-symbols": "^1.0.0" 1477 | } 1478 | }, 1479 | "isarray": { 1480 | "version": "1.0.0", 1481 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1482 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1483 | "dev": true 1484 | }, 1485 | "isexe": { 1486 | "version": "2.0.0", 1487 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1488 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1489 | "dev": true 1490 | }, 1491 | "jest-worker": { 1492 | "version": "24.6.0", 1493 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz", 1494 | "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==", 1495 | "dev": true, 1496 | "requires": { 1497 | "merge-stream": "^1.0.1", 1498 | "supports-color": "^6.1.0" 1499 | }, 1500 | "dependencies": { 1501 | "supports-color": { 1502 | "version": "6.1.0", 1503 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", 1504 | "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", 1505 | "dev": true, 1506 | "requires": { 1507 | "has-flag": "^3.0.0" 1508 | } 1509 | } 1510 | } 1511 | }, 1512 | "js-levenshtein": { 1513 | "version": "1.1.6", 1514 | "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", 1515 | "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", 1516 | "dev": true 1517 | }, 1518 | "js-tokens": { 1519 | "version": "4.0.0", 1520 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1521 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1522 | "dev": true 1523 | }, 1524 | "jsesc": { 1525 | "version": "2.5.2", 1526 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1527 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1528 | "dev": true 1529 | }, 1530 | "json-parse-better-errors": { 1531 | "version": "1.0.2", 1532 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 1533 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 1534 | "dev": true 1535 | }, 1536 | "json5": { 1537 | "version": "2.1.0", 1538 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", 1539 | "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", 1540 | "dev": true, 1541 | "requires": { 1542 | "minimist": "^1.2.0" 1543 | } 1544 | }, 1545 | "jsonify": { 1546 | "version": "0.0.0", 1547 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 1548 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", 1549 | "dev": true 1550 | }, 1551 | "load-json-file": { 1552 | "version": "4.0.0", 1553 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", 1554 | "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", 1555 | "dev": true, 1556 | "requires": { 1557 | "graceful-fs": "^4.1.2", 1558 | "parse-json": "^4.0.0", 1559 | "pify": "^3.0.0", 1560 | "strip-bom": "^3.0.0" 1561 | } 1562 | }, 1563 | "lodash": { 1564 | "version": "4.17.14", 1565 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", 1566 | "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", 1567 | "dev": true 1568 | }, 1569 | "loose-envify": { 1570 | "version": "1.4.0", 1571 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1572 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1573 | "dev": true, 1574 | "requires": { 1575 | "js-tokens": "^3.0.0 || ^4.0.0" 1576 | } 1577 | }, 1578 | "lower-case": { 1579 | "version": "1.1.4", 1580 | "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", 1581 | "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", 1582 | "dev": true 1583 | }, 1584 | "magic-string": { 1585 | "version": "0.25.3", 1586 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz", 1587 | "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==", 1588 | "dev": true, 1589 | "requires": { 1590 | "sourcemap-codec": "^1.4.4" 1591 | } 1592 | }, 1593 | "matchit": { 1594 | "version": "1.0.8", 1595 | "resolved": "https://registry.npmjs.org/matchit/-/matchit-1.0.8.tgz", 1596 | "integrity": "sha512-CwPPICzozd/ezCzpVwGYG5bMVieaapnA0vvHDQnmQ2u2vZtVLynoPmvFsZjL67hFOvTBhhpqSR0bq3uloDP/Rw==", 1597 | "requires": { 1598 | "@arr/every": "^1.0.0" 1599 | } 1600 | }, 1601 | "memorystream": { 1602 | "version": "0.3.1", 1603 | "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", 1604 | "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", 1605 | "dev": true 1606 | }, 1607 | "merge-stream": { 1608 | "version": "1.0.1", 1609 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", 1610 | "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", 1611 | "dev": true, 1612 | "requires": { 1613 | "readable-stream": "^2.0.1" 1614 | } 1615 | }, 1616 | "mime": { 1617 | "version": "2.4.4", 1618 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", 1619 | "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" 1620 | }, 1621 | "mime-db": { 1622 | "version": "1.40.0", 1623 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", 1624 | "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" 1625 | }, 1626 | "mime-types": { 1627 | "version": "2.1.24", 1628 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", 1629 | "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", 1630 | "requires": { 1631 | "mime-db": "1.40.0" 1632 | } 1633 | }, 1634 | "minimatch": { 1635 | "version": "3.0.4", 1636 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1637 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1638 | "dev": true, 1639 | "requires": { 1640 | "brace-expansion": "^1.1.7" 1641 | } 1642 | }, 1643 | "minimist": { 1644 | "version": "1.2.0", 1645 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 1646 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 1647 | "dev": true 1648 | }, 1649 | "ms": { 1650 | "version": "2.0.0", 1651 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1652 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1653 | }, 1654 | "negotiator": { 1655 | "version": "0.6.2", 1656 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 1657 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 1658 | }, 1659 | "nice-try": { 1660 | "version": "1.0.5", 1661 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 1662 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 1663 | "dev": true 1664 | }, 1665 | "no-case": { 1666 | "version": "2.3.2", 1667 | "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", 1668 | "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", 1669 | "dev": true, 1670 | "requires": { 1671 | "lower-case": "^1.1.1" 1672 | } 1673 | }, 1674 | "node-releases": { 1675 | "version": "1.1.25", 1676 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.25.tgz", 1677 | "integrity": "sha512-fI5BXuk83lKEoZDdH3gRhtsNgh05/wZacuXkgbiYkceE7+QIMXOg98n9ZV7mz27B+kFHnqHcUpscZZlGRSmTpQ==", 1678 | "dev": true, 1679 | "requires": { 1680 | "semver": "^5.3.0" 1681 | } 1682 | }, 1683 | "normalize-package-data": { 1684 | "version": "2.5.0", 1685 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 1686 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 1687 | "dev": true, 1688 | "requires": { 1689 | "hosted-git-info": "^2.1.4", 1690 | "resolve": "^1.10.0", 1691 | "semver": "2 || 3 || 4 || 5", 1692 | "validate-npm-package-license": "^3.0.1" 1693 | } 1694 | }, 1695 | "npm-run-all": { 1696 | "version": "4.1.5", 1697 | "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", 1698 | "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", 1699 | "dev": true, 1700 | "requires": { 1701 | "ansi-styles": "^3.2.1", 1702 | "chalk": "^2.4.1", 1703 | "cross-spawn": "^6.0.5", 1704 | "memorystream": "^0.3.1", 1705 | "minimatch": "^3.0.4", 1706 | "pidtree": "^0.3.0", 1707 | "read-pkg": "^3.0.0", 1708 | "shell-quote": "^1.6.1", 1709 | "string.prototype.padend": "^3.0.0" 1710 | } 1711 | }, 1712 | "object-component": { 1713 | "version": "0.0.3", 1714 | "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", 1715 | "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" 1716 | }, 1717 | "object-keys": { 1718 | "version": "1.1.1", 1719 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1720 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1721 | "dev": true 1722 | }, 1723 | "object.assign": { 1724 | "version": "4.1.0", 1725 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 1726 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 1727 | "dev": true, 1728 | "requires": { 1729 | "define-properties": "^1.1.2", 1730 | "function-bind": "^1.1.1", 1731 | "has-symbols": "^1.0.0", 1732 | "object-keys": "^1.0.11" 1733 | } 1734 | }, 1735 | "on-headers": { 1736 | "version": "1.0.2", 1737 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", 1738 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" 1739 | }, 1740 | "param-case": { 1741 | "version": "2.1.1", 1742 | "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", 1743 | "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", 1744 | "dev": true, 1745 | "requires": { 1746 | "no-case": "^2.2.0" 1747 | } 1748 | }, 1749 | "parse-json": { 1750 | "version": "4.0.0", 1751 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 1752 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 1753 | "dev": true, 1754 | "requires": { 1755 | "error-ex": "^1.3.1", 1756 | "json-parse-better-errors": "^1.0.1" 1757 | } 1758 | }, 1759 | "parseqs": { 1760 | "version": "0.0.5", 1761 | "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", 1762 | "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", 1763 | "requires": { 1764 | "better-assert": "~1.0.0" 1765 | } 1766 | }, 1767 | "parseuri": { 1768 | "version": "0.0.5", 1769 | "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", 1770 | "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", 1771 | "requires": { 1772 | "better-assert": "~1.0.0" 1773 | } 1774 | }, 1775 | "path-key": { 1776 | "version": "2.0.1", 1777 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 1778 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 1779 | "dev": true 1780 | }, 1781 | "path-parse": { 1782 | "version": "1.0.6", 1783 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1784 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 1785 | "dev": true 1786 | }, 1787 | "path-type": { 1788 | "version": "3.0.0", 1789 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", 1790 | "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", 1791 | "dev": true, 1792 | "requires": { 1793 | "pify": "^3.0.0" 1794 | } 1795 | }, 1796 | "pidtree": { 1797 | "version": "0.3.0", 1798 | "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz", 1799 | "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==", 1800 | "dev": true 1801 | }, 1802 | "pify": { 1803 | "version": "3.0.0", 1804 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 1805 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 1806 | "dev": true 1807 | }, 1808 | "polka": { 1809 | "version": "0.5.2", 1810 | "resolved": "https://registry.npmjs.org/polka/-/polka-0.5.2.tgz", 1811 | "integrity": "sha512-FVg3vDmCqP80tOrs+OeNlgXYmFppTXdjD5E7I4ET1NjvtNmQrb1/mJibybKkb/d4NA7YWAr1ojxuhpL3FHqdlw==", 1812 | "requires": { 1813 | "@polka/url": "^0.5.0", 1814 | "trouter": "^2.0.1" 1815 | } 1816 | }, 1817 | "private": { 1818 | "version": "0.1.8", 1819 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", 1820 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", 1821 | "dev": true 1822 | }, 1823 | "process-nextick-args": { 1824 | "version": "2.0.1", 1825 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1826 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 1827 | "dev": true 1828 | }, 1829 | "read-pkg": { 1830 | "version": "3.0.0", 1831 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", 1832 | "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", 1833 | "dev": true, 1834 | "requires": { 1835 | "load-json-file": "^4.0.0", 1836 | "normalize-package-data": "^2.3.2", 1837 | "path-type": "^3.0.0" 1838 | } 1839 | }, 1840 | "readable-stream": { 1841 | "version": "2.3.6", 1842 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 1843 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 1844 | "dev": true, 1845 | "requires": { 1846 | "core-util-is": "~1.0.0", 1847 | "inherits": "~2.0.3", 1848 | "isarray": "~1.0.0", 1849 | "process-nextick-args": "~2.0.0", 1850 | "safe-buffer": "~5.1.1", 1851 | "string_decoder": "~1.1.1", 1852 | "util-deprecate": "~1.0.1" 1853 | } 1854 | }, 1855 | "regenerate": { 1856 | "version": "1.4.0", 1857 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", 1858 | "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", 1859 | "dev": true 1860 | }, 1861 | "regenerate-unicode-properties": { 1862 | "version": "8.1.0", 1863 | "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", 1864 | "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", 1865 | "dev": true, 1866 | "requires": { 1867 | "regenerate": "^1.4.0" 1868 | } 1869 | }, 1870 | "regenerator-runtime": { 1871 | "version": "0.13.2", 1872 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", 1873 | "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==", 1874 | "dev": true 1875 | }, 1876 | "regenerator-transform": { 1877 | "version": "0.14.0", 1878 | "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.0.tgz", 1879 | "integrity": "sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w==", 1880 | "dev": true, 1881 | "requires": { 1882 | "private": "^0.1.6" 1883 | } 1884 | }, 1885 | "regexp-tree": { 1886 | "version": "0.1.11", 1887 | "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.11.tgz", 1888 | "integrity": "sha512-7/l/DgapVVDzZobwMCCgMlqiqyLFJ0cduo/j+3BcDJIB+yJdsYCfKuI3l/04NV+H/rfNRdPIDbXNZHM9XvQatg==", 1889 | "dev": true 1890 | }, 1891 | "regexpu-core": { 1892 | "version": "4.5.4", 1893 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", 1894 | "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", 1895 | "dev": true, 1896 | "requires": { 1897 | "regenerate": "^1.4.0", 1898 | "regenerate-unicode-properties": "^8.0.2", 1899 | "regjsgen": "^0.5.0", 1900 | "regjsparser": "^0.6.0", 1901 | "unicode-match-property-ecmascript": "^1.0.4", 1902 | "unicode-match-property-value-ecmascript": "^1.1.0" 1903 | } 1904 | }, 1905 | "regjsgen": { 1906 | "version": "0.5.0", 1907 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", 1908 | "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", 1909 | "dev": true 1910 | }, 1911 | "regjsparser": { 1912 | "version": "0.6.0", 1913 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", 1914 | "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", 1915 | "dev": true, 1916 | "requires": { 1917 | "jsesc": "~0.5.0" 1918 | }, 1919 | "dependencies": { 1920 | "jsesc": { 1921 | "version": "0.5.0", 1922 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 1923 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", 1924 | "dev": true 1925 | } 1926 | } 1927 | }, 1928 | "relateurl": { 1929 | "version": "0.2.7", 1930 | "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", 1931 | "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", 1932 | "dev": true 1933 | }, 1934 | "require-relative": { 1935 | "version": "0.8.7", 1936 | "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", 1937 | "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", 1938 | "dev": true 1939 | }, 1940 | "resolve": { 1941 | "version": "1.11.1", 1942 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", 1943 | "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", 1944 | "dev": true, 1945 | "requires": { 1946 | "path-parse": "^1.0.6" 1947 | } 1948 | }, 1949 | "rollup": { 1950 | "version": "1.16.7", 1951 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.16.7.tgz", 1952 | "integrity": "sha512-P3GVcbVSLLjHWFLKGerYRe3Q/yggRXmTZFx/4WZf4wzGwO6hAg5jyMAFMQKc0dts8rFID4BQngfoz6yQbI7iMQ==", 1953 | "dev": true, 1954 | "requires": { 1955 | "@types/estree": "0.0.39", 1956 | "@types/node": "^12.0.10", 1957 | "acorn": "^6.1.1" 1958 | } 1959 | }, 1960 | "rollup-plugin-babel": { 1961 | "version": "4.3.3", 1962 | "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.3.3.tgz", 1963 | "integrity": "sha512-tKzWOCmIJD/6aKNz0H1GMM+lW1q9KyFubbWzGiOG540zxPPifnEAHTZwjo0g991Y+DyOZcLqBgqOdqazYE5fkw==", 1964 | "dev": true, 1965 | "requires": { 1966 | "@babel/helper-module-imports": "^7.0.0", 1967 | "rollup-pluginutils": "^2.8.1" 1968 | } 1969 | }, 1970 | "rollup-plugin-commonjs": { 1971 | "version": "10.0.1", 1972 | "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.0.1.tgz", 1973 | "integrity": "sha512-x0PcCVdEc4J8igv1qe2vttz8JKAKcTs3wfIA3L8xEty3VzxgORLrzZrNWaVMc+pBC4U3aDOb9BnWLAQ8J11vkA==", 1974 | "dev": true, 1975 | "requires": { 1976 | "estree-walker": "^0.6.1", 1977 | "is-reference": "^1.1.2", 1978 | "magic-string": "^0.25.2", 1979 | "resolve": "^1.11.0", 1980 | "rollup-pluginutils": "^2.8.1" 1981 | } 1982 | }, 1983 | "rollup-plugin-node-resolve": { 1984 | "version": "5.2.0", 1985 | "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", 1986 | "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", 1987 | "dev": true, 1988 | "requires": { 1989 | "@types/resolve": "0.0.8", 1990 | "builtin-modules": "^3.1.0", 1991 | "is-module": "^1.0.0", 1992 | "resolve": "^1.11.1", 1993 | "rollup-pluginutils": "^2.8.1" 1994 | } 1995 | }, 1996 | "rollup-plugin-replace": { 1997 | "version": "2.2.0", 1998 | "resolved": "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz", 1999 | "integrity": "sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA==", 2000 | "dev": true, 2001 | "requires": { 2002 | "magic-string": "^0.25.2", 2003 | "rollup-pluginutils": "^2.6.0" 2004 | } 2005 | }, 2006 | "rollup-plugin-svelte": { 2007 | "version": "5.1.0", 2008 | "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-5.1.0.tgz", 2009 | "integrity": "sha512-4MRZG29dAWDpoxEs5uIHzDnYafQEOLaKIJAuDYUtFIzEm1F1IGSTlFyjd8/qk4wltlHdu6V7YfZY53+CKryhMg==", 2010 | "dev": true, 2011 | "requires": { 2012 | "require-relative": "^0.8.7", 2013 | "rollup-pluginutils": "^2.3.3", 2014 | "sourcemap-codec": "^1.4.4" 2015 | } 2016 | }, 2017 | "rollup-plugin-terser": { 2018 | "version": "4.0.4", 2019 | "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-4.0.4.tgz", 2020 | "integrity": "sha512-wPANT5XKVJJ8RDUN0+wIr7UPd0lIXBo4UdJ59VmlPCtlFsE20AM+14pe+tk7YunCsWEiuzkDBY3QIkSCjtrPXg==", 2021 | "dev": true, 2022 | "requires": { 2023 | "@babel/code-frame": "^7.0.0", 2024 | "jest-worker": "^24.0.0", 2025 | "serialize-javascript": "^1.6.1", 2026 | "terser": "^3.14.1" 2027 | } 2028 | }, 2029 | "rollup-pluginutils": { 2030 | "version": "2.8.1", 2031 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz", 2032 | "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==", 2033 | "dev": true, 2034 | "requires": { 2035 | "estree-walker": "^0.6.1" 2036 | } 2037 | }, 2038 | "safe-buffer": { 2039 | "version": "5.1.2", 2040 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2041 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 2042 | }, 2043 | "sapper": { 2044 | "version": "0.27.4", 2045 | "resolved": "https://registry.npmjs.org/sapper/-/sapper-0.27.4.tgz", 2046 | "integrity": "sha512-BYdiJSiyVguu2FZBbl87mn8KhSu+C8JRl7FurclXbMgpiMW7Yt74HPCcu/hXOubvvZw0kVTnzBlAGJCXZmldnA==", 2047 | "dev": true, 2048 | "requires": { 2049 | "html-minifier": "^4.0.0", 2050 | "http-link-header": "^1.0.2", 2051 | "shimport": "^1.0.0", 2052 | "sourcemap-codec": "^1.4.4", 2053 | "string-hash": "^1.1.3" 2054 | } 2055 | }, 2056 | "semver": { 2057 | "version": "5.7.0", 2058 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", 2059 | "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", 2060 | "dev": true 2061 | }, 2062 | "serialize-javascript": { 2063 | "version": "1.7.0", 2064 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", 2065 | "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", 2066 | "dev": true 2067 | }, 2068 | "shebang-command": { 2069 | "version": "1.2.0", 2070 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 2071 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 2072 | "dev": true, 2073 | "requires": { 2074 | "shebang-regex": "^1.0.0" 2075 | } 2076 | }, 2077 | "shebang-regex": { 2078 | "version": "1.0.0", 2079 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 2080 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 2081 | "dev": true 2082 | }, 2083 | "shell-quote": { 2084 | "version": "1.6.1", 2085 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", 2086 | "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", 2087 | "dev": true, 2088 | "requires": { 2089 | "array-filter": "~0.0.0", 2090 | "array-map": "~0.0.0", 2091 | "array-reduce": "~0.0.0", 2092 | "jsonify": "~0.0.0" 2093 | } 2094 | }, 2095 | "shimport": { 2096 | "version": "1.0.1", 2097 | "resolved": "https://registry.npmjs.org/shimport/-/shimport-1.0.1.tgz", 2098 | "integrity": "sha512-Imf4gH+8WQmT1GvxS/x79qpmfnE6m50hyN1ucatX+7oMCgmaF8obZWCPIzSUe6+P+YmXM46lkP2pxiV2/lt9Og==", 2099 | "dev": true 2100 | }, 2101 | "sirv": { 2102 | "version": "0.4.2", 2103 | "resolved": "https://registry.npmjs.org/sirv/-/sirv-0.4.2.tgz", 2104 | "integrity": "sha512-dQbZnsMaIiTQPZmbGmktz+c74zt/hyrJEB4tdp2Jj0RNv9J6B/OWR5RyrZEvIn9fyh9Zlg2OlE2XzKz6wMKGAw==", 2105 | "requires": { 2106 | "@polka/url": "^0.5.0", 2107 | "mime": "^2.3.1" 2108 | } 2109 | }, 2110 | "socket.io": { 2111 | "version": "2.2.0", 2112 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz", 2113 | "integrity": "sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w==", 2114 | "requires": { 2115 | "debug": "~4.1.0", 2116 | "engine.io": "~3.3.1", 2117 | "has-binary2": "~1.0.2", 2118 | "socket.io-adapter": "~1.1.0", 2119 | "socket.io-client": "2.2.0", 2120 | "socket.io-parser": "~3.3.0" 2121 | }, 2122 | "dependencies": { 2123 | "debug": { 2124 | "version": "4.1.1", 2125 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 2126 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 2127 | "requires": { 2128 | "ms": "^2.1.1" 2129 | } 2130 | }, 2131 | "ms": { 2132 | "version": "2.1.2", 2133 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2134 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2135 | } 2136 | } 2137 | }, 2138 | "socket.io-adapter": { 2139 | "version": "1.1.1", 2140 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", 2141 | "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" 2142 | }, 2143 | "socket.io-client": { 2144 | "version": "2.2.0", 2145 | "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz", 2146 | "integrity": "sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA==", 2147 | "requires": { 2148 | "backo2": "1.0.2", 2149 | "base64-arraybuffer": "0.1.5", 2150 | "component-bind": "1.0.0", 2151 | "component-emitter": "1.2.1", 2152 | "debug": "~3.1.0", 2153 | "engine.io-client": "~3.3.1", 2154 | "has-binary2": "~1.0.2", 2155 | "has-cors": "1.1.0", 2156 | "indexof": "0.0.1", 2157 | "object-component": "0.0.3", 2158 | "parseqs": "0.0.5", 2159 | "parseuri": "0.0.5", 2160 | "socket.io-parser": "~3.3.0", 2161 | "to-array": "0.1.4" 2162 | }, 2163 | "dependencies": { 2164 | "debug": { 2165 | "version": "3.1.0", 2166 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 2167 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 2168 | "requires": { 2169 | "ms": "2.0.0" 2170 | } 2171 | } 2172 | } 2173 | }, 2174 | "socket.io-parser": { 2175 | "version": "3.3.0", 2176 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", 2177 | "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", 2178 | "requires": { 2179 | "component-emitter": "1.2.1", 2180 | "debug": "~3.1.0", 2181 | "isarray": "2.0.1" 2182 | }, 2183 | "dependencies": { 2184 | "debug": { 2185 | "version": "3.1.0", 2186 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 2187 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 2188 | "requires": { 2189 | "ms": "2.0.0" 2190 | } 2191 | }, 2192 | "isarray": { 2193 | "version": "2.0.1", 2194 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", 2195 | "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" 2196 | } 2197 | } 2198 | }, 2199 | "source-map": { 2200 | "version": "0.5.7", 2201 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 2202 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 2203 | "dev": true 2204 | }, 2205 | "source-map-support": { 2206 | "version": "0.5.12", 2207 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", 2208 | "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", 2209 | "dev": true, 2210 | "requires": { 2211 | "buffer-from": "^1.0.0", 2212 | "source-map": "^0.6.0" 2213 | }, 2214 | "dependencies": { 2215 | "source-map": { 2216 | "version": "0.6.1", 2217 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2218 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2219 | "dev": true 2220 | } 2221 | } 2222 | }, 2223 | "sourcemap-codec": { 2224 | "version": "1.4.6", 2225 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz", 2226 | "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==", 2227 | "dev": true 2228 | }, 2229 | "spdx-correct": { 2230 | "version": "3.1.0", 2231 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", 2232 | "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", 2233 | "dev": true, 2234 | "requires": { 2235 | "spdx-expression-parse": "^3.0.0", 2236 | "spdx-license-ids": "^3.0.0" 2237 | } 2238 | }, 2239 | "spdx-exceptions": { 2240 | "version": "2.2.0", 2241 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", 2242 | "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", 2243 | "dev": true 2244 | }, 2245 | "spdx-expression-parse": { 2246 | "version": "3.0.0", 2247 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", 2248 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", 2249 | "dev": true, 2250 | "requires": { 2251 | "spdx-exceptions": "^2.1.0", 2252 | "spdx-license-ids": "^3.0.0" 2253 | } 2254 | }, 2255 | "spdx-license-ids": { 2256 | "version": "3.0.5", 2257 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", 2258 | "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", 2259 | "dev": true 2260 | }, 2261 | "string-hash": { 2262 | "version": "1.1.3", 2263 | "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", 2264 | "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", 2265 | "dev": true 2266 | }, 2267 | "string.prototype.padend": { 2268 | "version": "3.0.0", 2269 | "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", 2270 | "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", 2271 | "dev": true, 2272 | "requires": { 2273 | "define-properties": "^1.1.2", 2274 | "es-abstract": "^1.4.3", 2275 | "function-bind": "^1.0.2" 2276 | } 2277 | }, 2278 | "string_decoder": { 2279 | "version": "1.1.1", 2280 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2281 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2282 | "dev": true, 2283 | "requires": { 2284 | "safe-buffer": "~5.1.0" 2285 | } 2286 | }, 2287 | "strip-bom": { 2288 | "version": "3.0.0", 2289 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 2290 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 2291 | "dev": true 2292 | }, 2293 | "supports-color": { 2294 | "version": "5.5.0", 2295 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2296 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2297 | "dev": true, 2298 | "requires": { 2299 | "has-flag": "^3.0.0" 2300 | } 2301 | }, 2302 | "svelte": { 2303 | "version": "3.6.7", 2304 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.6.7.tgz", 2305 | "integrity": "sha512-9HzhPxWNLi+ZBhxL3HJ8jwwu+u+XfHtVF3uEJ2m8/JOdnaTC9D2qiEwOncgI7z/pN+VumgKQtZoHtvYCW6fHqg==", 2306 | "dev": true 2307 | }, 2308 | "terser": { 2309 | "version": "3.17.0", 2310 | "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", 2311 | "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", 2312 | "dev": true, 2313 | "requires": { 2314 | "commander": "^2.19.0", 2315 | "source-map": "~0.6.1", 2316 | "source-map-support": "~0.5.10" 2317 | }, 2318 | "dependencies": { 2319 | "source-map": { 2320 | "version": "0.6.1", 2321 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2322 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2323 | "dev": true 2324 | } 2325 | } 2326 | }, 2327 | "to-array": { 2328 | "version": "0.1.4", 2329 | "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", 2330 | "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" 2331 | }, 2332 | "to-fast-properties": { 2333 | "version": "2.0.0", 2334 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 2335 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 2336 | "dev": true 2337 | }, 2338 | "trim-right": { 2339 | "version": "1.0.1", 2340 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", 2341 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", 2342 | "dev": true 2343 | }, 2344 | "trouter": { 2345 | "version": "2.0.1", 2346 | "resolved": "https://registry.npmjs.org/trouter/-/trouter-2.0.1.tgz", 2347 | "integrity": "sha512-kr8SKKw94OI+xTGOkfsvwZQ8mWoikZDd2n8XZHjJVZUARZT+4/VV6cacRS6CLsH9bNm+HFIPU1Zx4CnNnb4qlQ==", 2348 | "requires": { 2349 | "matchit": "^1.0.0" 2350 | } 2351 | }, 2352 | "uglify-js": { 2353 | "version": "3.6.0", 2354 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", 2355 | "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", 2356 | "dev": true, 2357 | "requires": { 2358 | "commander": "~2.20.0", 2359 | "source-map": "~0.6.1" 2360 | }, 2361 | "dependencies": { 2362 | "source-map": { 2363 | "version": "0.6.1", 2364 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2365 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2366 | "dev": true 2367 | } 2368 | } 2369 | }, 2370 | "unicode-canonical-property-names-ecmascript": { 2371 | "version": "1.0.4", 2372 | "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", 2373 | "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", 2374 | "dev": true 2375 | }, 2376 | "unicode-match-property-ecmascript": { 2377 | "version": "1.0.4", 2378 | "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", 2379 | "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", 2380 | "dev": true, 2381 | "requires": { 2382 | "unicode-canonical-property-names-ecmascript": "^1.0.4", 2383 | "unicode-property-aliases-ecmascript": "^1.0.4" 2384 | } 2385 | }, 2386 | "unicode-match-property-value-ecmascript": { 2387 | "version": "1.1.0", 2388 | "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", 2389 | "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", 2390 | "dev": true 2391 | }, 2392 | "unicode-property-aliases-ecmascript": { 2393 | "version": "1.0.5", 2394 | "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", 2395 | "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", 2396 | "dev": true 2397 | }, 2398 | "upper-case": { 2399 | "version": "1.1.3", 2400 | "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", 2401 | "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", 2402 | "dev": true 2403 | }, 2404 | "util-deprecate": { 2405 | "version": "1.0.2", 2406 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2407 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2408 | "dev": true 2409 | }, 2410 | "validate-npm-package-license": { 2411 | "version": "3.0.4", 2412 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 2413 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 2414 | "dev": true, 2415 | "requires": { 2416 | "spdx-correct": "^3.0.0", 2417 | "spdx-expression-parse": "^3.0.0" 2418 | } 2419 | }, 2420 | "vary": { 2421 | "version": "1.1.2", 2422 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2423 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 2424 | }, 2425 | "which": { 2426 | "version": "1.3.1", 2427 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2428 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2429 | "dev": true, 2430 | "requires": { 2431 | "isexe": "^2.0.0" 2432 | } 2433 | }, 2434 | "ws": { 2435 | "version": "6.1.4", 2436 | "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", 2437 | "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", 2438 | "requires": { 2439 | "async-limiter": "~1.0.0" 2440 | } 2441 | }, 2442 | "xmlhttprequest-ssl": { 2443 | "version": "1.5.5", 2444 | "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", 2445 | "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" 2446 | }, 2447 | "yeast": { 2448 | "version": "0.1.2", 2449 | "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", 2450 | "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" 2451 | } 2452 | } 2453 | } 2454 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat-app", 3 | "description": "A simple chat app to help learn / teach Svelte and Socket.IO", 4 | "version": "0.0.1", 5 | "scripts": { 6 | "dev": "sapper dev", 7 | "build": "sapper build --legacy", 8 | "export": "sapper export --legacy", 9 | "start": "node __sapper__/build", 10 | "cy:run": "cypress run", 11 | "cy:open": "cypress open", 12 | "test": "run-p --race dev cy:run" 13 | }, 14 | "dependencies": { 15 | "compression": "^1.7.1", 16 | "polka": "^0.5.0", 17 | "sirv": "^0.4.0", 18 | "socket.io": "^2.2.0", 19 | "socket.io-client": "^2.2.0" 20 | }, 21 | "devDependencies": { 22 | "npm-run-all": "^4.1.5", 23 | "sapper": "^0.27.0", 24 | "svelte": "^3.0.0", 25 | "@babel/core": "^7.0.0", 26 | "@babel/plugin-syntax-dynamic-import": "^7.0.0", 27 | "@babel/plugin-transform-runtime": "^7.0.0", 28 | "@babel/preset-env": "^7.0.0", 29 | "@babel/runtime": "^7.0.0", 30 | "rollup": "^1.12.0", 31 | "rollup-plugin-babel": "^4.0.2", 32 | "rollup-plugin-commonjs": "^10.0.0", 33 | "rollup-plugin-node-resolve": "^5.2.0", 34 | "rollup-plugin-replace": "^2.0.0", 35 | "rollup-plugin-svelte": "^5.0.1", 36 | "rollup-plugin-terser": "^4.0.4" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import resolve from 'rollup-plugin-node-resolve'; 2 | import replace from 'rollup-plugin-replace'; 3 | import commonjs from 'rollup-plugin-commonjs'; 4 | import svelte from 'rollup-plugin-svelte'; 5 | import babel from 'rollup-plugin-babel'; 6 | import { terser } from 'rollup-plugin-terser'; 7 | import config from 'sapper/config/rollup.js'; 8 | import pkg from './package.json'; 9 | 10 | const mode = process.env.NODE_ENV; 11 | const dev = mode === 'development'; 12 | const legacy = !!process.env.SAPPER_LEGACY_BUILD; 13 | 14 | const onwarn = (warning, onwarn) => (warning.code === 'CIRCULAR_DEPENDENCY' && /[/\\]@sapper[/\\]/.test(warning.message)) || onwarn(warning); 15 | const dedupe = importee => importee === 'svelte' || importee.startsWith('svelte/'); 16 | 17 | export default { 18 | client: { 19 | input: config.client.input(), 20 | output: config.client.output(), 21 | plugins: [ 22 | replace({ 23 | 'process.browser': true, 24 | 'process.env.NODE_ENV': JSON.stringify(mode) 25 | }), 26 | svelte({ 27 | dev, 28 | hydratable: true, 29 | emitCss: true 30 | }), 31 | resolve({ 32 | browser: true, 33 | dedupe 34 | }), 35 | commonjs(), 36 | 37 | legacy && babel({ 38 | extensions: ['.js', '.mjs', '.html', '.svelte'], 39 | runtimeHelpers: true, 40 | exclude: ['node_modules/@babel/**'], 41 | presets: [ 42 | ['@babel/preset-env', { 43 | targets: '> 0.25%, not dead' 44 | }] 45 | ], 46 | plugins: [ 47 | '@babel/plugin-syntax-dynamic-import', 48 | ['@babel/plugin-transform-runtime', { 49 | useESModules: true 50 | }] 51 | ] 52 | }), 53 | 54 | !dev && terser({ 55 | module: true 56 | }) 57 | ], 58 | 59 | onwarn, 60 | }, 61 | 62 | server: { 63 | input: config.server.input(), 64 | output: config.server.output(), 65 | plugins: [ 66 | replace({ 67 | 'process.browser': false, 68 | 'process.env.NODE_ENV': JSON.stringify(mode) 69 | }), 70 | svelte({ 71 | generate: 'ssr', 72 | dev 73 | }), 74 | resolve({ 75 | dedupe 76 | }), 77 | commonjs() 78 | ], 79 | external: Object.keys(pkg.dependencies).concat( 80 | require('module').builtinModules || Object.keys(process.binding('natives')) 81 | ), 82 | 83 | onwarn, 84 | }, 85 | 86 | serviceworker: { 87 | input: config.serviceworker.input(), 88 | output: config.serviceworker.output(), 89 | plugins: [ 90 | resolve(), 91 | replace({ 92 | 'process.browser': true, 93 | 'process.env.NODE_ENV': JSON.stringify(mode) 94 | }), 95 | commonjs(), 96 | !dev && terser() 97 | ], 98 | 99 | onwarn, 100 | } 101 | }; 102 | -------------------------------------------------------------------------------- /screens/screen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tmns/chat-app/4810d6ee96aa60feae4232ea072f0d27b29fd933/screens/screen1.png -------------------------------------------------------------------------------- /src/client.js: -------------------------------------------------------------------------------- 1 | import * as sapper from '@sapper/app'; 2 | 3 | sapper.start({ 4 | target: document.querySelector('#sapper') 5 | }); -------------------------------------------------------------------------------- /src/components/Heading.svelte: -------------------------------------------------------------------------------- 1 | 422 | 423 | 426 | 427 |
{text}
-------------------------------------------------------------------------------- /src/routes/_error.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 29 | 30 | 31 | {status} 32 | 33 | 34 |

{status}

35 | 36 |

{error.message}

37 | 38 | {#if dev && error.stack} 39 |
{error.stack}
40 | {/if} 41 | -------------------------------------------------------------------------------- /src/routes/_layout.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
13 | 14 |
-------------------------------------------------------------------------------- /src/routes/index.svelte: -------------------------------------------------------------------------------- 1 | 98 | 99 | 100 | Chat App 101 | 104 | 105 | 106 | 107 | 108 | 109 | 174 | 175 | 176 |
177 | 178 |
179 |
    180 | {#each messages as message} 181 |
  • {message}
  • 182 | {/each} 183 |
184 |
185 |
186 | 187 | 188 |
189 |

There {numUsersConnected == 1 ? 'is' : 'are'} {numUsersConnected} {numUsersConnected == 1 ? 'user' : 'users'} currently chatting!

190 |
191 | 192 | -------------------------------------------------------------------------------- /src/server.js: -------------------------------------------------------------------------------- 1 | import sirv from 'sirv'; 2 | import polka from 'polka'; 3 | import compression from 'compression'; 4 | import * as sapper from '@sapper/server'; 5 | import http from 'http'; 6 | import io from 'socket.io'; 7 | 8 | const { PORT, NODE_ENV } = process.env; 9 | const dev = NODE_ENV === 'development'; 10 | 11 | const server = http.createServer(); 12 | 13 | polka({ server }) // You can also use Express 14 | .use( 15 | compression({ threshold: 0 }), 16 | sirv('static', { dev }), 17 | sapper.middleware() 18 | ) 19 | .listen(PORT, err => { 20 | if (err) console.log('error', err); 21 | }); 22 | 23 | let numUsers = 0; 24 | 25 | io(server).on('connection', function(socket) { 26 | ++numUsers; 27 | let message = 'Server: A new user has joined the chat'; 28 | socket.emit('user joined', { message, numUsers }); 29 | socket.broadcast.emit('user joined', { message, numUsers }); 30 | 31 | socket.on('message', function(msg) { 32 | socket.broadcast.emit('message', msg); 33 | }) 34 | 35 | 36 | socket.on('disconnect', function() { 37 | --numUsers; 38 | socket.broadcast.emit('user left', numUsers); 39 | }) 40 | 41 | socket.on('user disconnect', function(name) { 42 | socket.broadcast.emit('message', `Server: ${name} has left the chat.`) 43 | }) 44 | }); 45 | 46 | 47 | -------------------------------------------------------------------------------- /src/service-worker.js: -------------------------------------------------------------------------------- 1 | import { timestamp, files, shell, routes } from '@sapper/service-worker'; 2 | 3 | const ASSETS = `cache${timestamp}`; 4 | 5 | // `shell` is an array of all the files generated by the bundler, 6 | // `files` is an array of everything in the `static` directory 7 | const to_cache = shell.concat(files); 8 | const cached = new Set(to_cache); 9 | 10 | self.addEventListener('install', event => { 11 | event.waitUntil( 12 | caches 13 | .open(ASSETS) 14 | .then(cache => cache.addAll(to_cache)) 15 | .then(() => { 16 | self.skipWaiting(); 17 | }) 18 | ); 19 | }); 20 | 21 | self.addEventListener('activate', event => { 22 | event.waitUntil( 23 | caches.keys().then(async keys => { 24 | // delete old caches 25 | for (const key of keys) { 26 | if (key !== ASSETS) await caches.delete(key); 27 | } 28 | 29 | self.clients.claim(); 30 | }) 31 | ); 32 | }); 33 | 34 | self.addEventListener('fetch', event => { 35 | if (event.request.method !== 'GET' || event.request.headers.has('range')) return; 36 | 37 | const url = new URL(event.request.url); 38 | 39 | // don't try to handle e.g. data: URIs 40 | if (!url.protocol.startsWith('http')) return; 41 | 42 | // ignore dev server requests 43 | if (url.hostname === self.location.hostname && url.port !== self.location.port) return; 44 | 45 | // always serve static files and bundler-generated assets from cache 46 | if (url.host === self.location.host && cached.has(url.pathname)) { 47 | event.respondWith(caches.match(event.request)); 48 | return; 49 | } 50 | 51 | // for pages, you might want to serve a shell `service-worker-index.html` file, 52 | // which Sapper has generated for you. It's not right for every 53 | // app, but if it's right for yours then uncomment this section 54 | /* 55 | if (url.origin === self.origin && routes.find(route => route.pattern.test(url.pathname))) { 56 | event.respondWith(caches.match('/service-worker-index.html')); 57 | return; 58 | } 59 | */ 60 | 61 | if (event.request.cache === 'only-if-cached') return; 62 | 63 | // for everything else, try the network first, falling back to 64 | // cache if the user is offline. (If the pages never change, you 65 | // might prefer a cache-first approach to a network-first one.) 66 | event.respondWith( 67 | caches 68 | .open(`offline${timestamp}`) 69 | .then(async cache => { 70 | try { 71 | const response = await fetch(event.request); 72 | cache.put(event.request, response.clone()); 73 | return response; 74 | } catch(err) { 75 | const response = await cache.match(event.request); 76 | if (response) return response; 77 | 78 | throw err; 79 | } 80 | }) 81 | ); 82 | }); 83 | -------------------------------------------------------------------------------- /src/template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | %sapper.base% 9 | 10 | 11 | 12 | 13 | 14 | 17 | %sapper.styles% 18 | 19 | 21 | %sapper.head% 22 | 23 | 24 | 26 |
%sapper.html%
27 | 28 | 31 | %sapper.scripts% 32 | 33 | 34 | -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tmns/chat-app/4810d6ee96aa60feae4232ea072f0d27b29fd933/static/favicon.png -------------------------------------------------------------------------------- /static/global.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; 4 | font-size: 14px; 5 | line-height: 1.5; 6 | color: #333; 7 | } 8 | 9 | h1, h2, h3, h4, h5, h6 { 10 | margin: 0 0 0.5em 0; 11 | font-weight: 400; 12 | line-height: 1.2; 13 | } 14 | 15 | h1 { 16 | font-size: 2em; 17 | } 18 | 19 | a { 20 | color: inherit; 21 | } 22 | 23 | code { 24 | font-family: menlo, inconsolata, monospace; 25 | font-size: calc(1em - 2px); 26 | color: #555; 27 | background-color: #f0f0f0; 28 | padding: 0.2em 0.4em; 29 | border-radius: 2px; 30 | } 31 | 32 | @media (min-width: 400px) { 33 | body { 34 | font-size: 16px; 35 | } 36 | } -------------------------------------------------------------------------------- /static/great-success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tmns/chat-app/4810d6ee96aa60feae4232ea072f0d27b29fd933/static/great-success.png -------------------------------------------------------------------------------- /static/logo-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tmns/chat-app/4810d6ee96aa60feae4232ea072f0d27b29fd933/static/logo-192.png -------------------------------------------------------------------------------- /static/logo-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tmns/chat-app/4810d6ee96aa60feae4232ea072f0d27b29fd933/static/logo-512.png -------------------------------------------------------------------------------- /static/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "background_color": "#ffffff", 3 | "theme_color": "#333333", 4 | "name": "TODO", 5 | "short_name": "TODO", 6 | "display": "minimal-ui", 7 | "start_url": "/", 8 | "icons": [ 9 | { 10 | "src": "logo-192.png", 11 | "sizes": "192x192", 12 | "type": "image/png" 13 | }, 14 | { 15 | "src": "logo-512.png", 16 | "sizes": "512x512", 17 | "type": "image/png" 18 | } 19 | ] 20 | } 21 | --------------------------------------------------------------------------------