├── .babelrc ├── .gitignore ├── README.md ├── after-run.js ├── before-prepare.js ├── package-lock.json ├── package.json ├── services └── ip-logic.js └── tests └── ip-logic.spec.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "@babel/preset-env" 4 | ] 5 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # svelte-cordova 3 | 4 | Develop a svelte app with cordova, including hot reload from your device. 5 | Read more about it on my [blog](https://www.learningsomethingnew.com/introducing-svelte-cordova-template) 6 | 7 | ## Get the template 8 | 9 | The easiest way to get started is with the template, which scaffolds a svelte app using degit, with a cordova folder inside, using cordova-svelte hooks for setting everything up. 10 | 11 | ```bash 12 | npx degit syonip/svelte-cordova-template svelte-cordova-app 13 | cd svelte-cordova-app 14 | npm i 15 | ``` 16 | 17 | ## Run local dev server (no cordova) 18 | 19 | ```bash 20 | npm run dev 21 | ``` 22 | 23 | ## Add your cordova platform 24 | 25 | ```bash 26 | cd src-cordova 27 | cordova platform add android/ios 28 | ``` 29 | 30 | ## Develop on your device with hot reload 31 | 32 | Back in the root folder: 33 | ```bash 34 | npm run dev-android 35 | ``` 36 | or 37 | ```bash 38 | npm run dev-ios 39 | ``` 40 | 41 | This will run the cordova project with a web view pointing to your workstation's IP. 42 | 43 | You should see the message `Cordova deviceready fired!` if cordova loaded correctly. 44 | 45 | Try to change something in App.svelte, and you should see the content reload in your device. 46 | 47 | * You need to have an emulator/device connected to adb 48 | * Your device has to be connected to the same wifi network as your workstation. 49 | 50 | ## To build a prod version: 51 | 52 | ```bash 53 | npm run build-android 54 | ``` 55 | or 56 | ```bash 57 | npm run build-ios 58 | ``` 59 | 60 | ## IOS quirks 61 | 62 | You need to add a `build.json` file in `src-cordova` folder with your developer id. More info at [cordova docs](https://cordova.apache.org/docs/en/latest/guide/platforms/ios/) -------------------------------------------------------------------------------- /after-run.js: -------------------------------------------------------------------------------- 1 | if (!process.env.CORDOVA_PLATFORM) { 2 | console.log('process.env.CORDOVA_PLATFORM not defined. Not running after-run.js hook.') 3 | return; 4 | } 5 | 6 | const fs = require('fs') 7 | const cordovaConfigPath = 'config.xml' 8 | 9 | console.log(`renaming ${cordovaConfigPath}.backup to ${cordovaConfigPath}`) 10 | fs.renameSync(`${cordovaConfigPath}.backup`, cordovaConfigPath) -------------------------------------------------------------------------------- /before-prepare.js: -------------------------------------------------------------------------------- 1 | const os = require('os'); 2 | const ipLogic = require('./services/ip-logic.js') 3 | 4 | const production = process.env.CORDOVA_PROD; 5 | if (!process.env.CORDOVA_PLATFORM) { 6 | console.log('process.env.CORDOVA_PLATFORM not defined. Not running before-prepare.js hook.') 7 | return; 8 | } 9 | if (production) { 10 | console.log('process.env.CORDOVA_PROD defined. Not running before-prepare.js hook.') 11 | return; 12 | } 13 | 14 | const fs = require('fs-extra') 15 | let networkInterfaces = os.networkInterfaces() 16 | 17 | function info(msg) { 18 | console.log(msg) 19 | } 20 | 21 | function updateConfigUrl(cordovaConfigPath, url) { 22 | fs.copyFileSync(cordovaConfigPath, `${cordovaConfigPath}.backup`) 23 | info(`updating ${cordovaConfigPath} content to ${url}`) 24 | 25 | let cordovaConfig = fs.readFileSync(cordovaConfigPath, 'utf-8') 26 | const lines = cordovaConfig.split(/\r?\n/g).reverse() 27 | 28 | const contentIndex = lines.findIndex(line => line.match(/\s* line.match(/\s*= 0) { 31 | lines[contentIndex] = ` ` 32 | } 33 | 34 | let allowNavigation = ` ` 35 | if (allowNavigationIndex >= 0) { 36 | if (production) { 37 | lines.splice(allowNavigationIndex, 1) 38 | } else { 39 | lines[allowNavigationIndex] = allowNavigation 40 | } 41 | } else { 42 | if (!production) { 43 | lines.splice(contentIndex, 0, allowNavigation) 44 | } 45 | } 46 | cordovaConfig = lines.reverse().join('\n') 47 | fs.writeFileSync(cordovaConfigPath, cordovaConfig) 48 | } 49 | 50 | function generateIndexHtml(ctx) { 51 | let htmlContent = fs.readFileSync(`${publicFolder}/index.html`, 'utf-8') 52 | const lines = htmlContent.split(/\r?\n/g).reverse() 53 | 54 | const bodyIndex = lines.findIndex(line => line.match(/\s*<\/body/)) 55 | 56 | let cordovaJsScript = ' ' 57 | if (!production) { 58 | let isIos = ctx.opts.platforms.includes('ios') 59 | const cordovaJsLocation = isIos ? 'bundle' : 'assets'; 60 | cordovaJsScript = ` ` 61 | } 62 | 63 | if (bodyIndex >= 0) { 64 | lines.splice(bodyIndex + 1, 0, cordovaJsScript) 65 | } else { 66 | console.error(`couldn't find tag in ${publicFolder}/index.html`) 67 | } 68 | htmlContent = lines.reverse().join('\n') 69 | fs.writeFileSync('www/index.html', htmlContent) 70 | } 71 | 72 | function clearWWW() { 73 | 74 | fs.readdirSync('www').forEach(file => { 75 | if (file == 'README.md') return; 76 | if (svelteFiles.includes(file)) return; 77 | 78 | console.log(`removing ${file}`) 79 | fs.removeSync(`www/${file}`) 80 | }) 81 | } 82 | 83 | function copyPublicFiles() { 84 | 85 | fs.readdirSync(publicFolder).forEach(file => { 86 | if (svelteFiles.includes(file)) return; 87 | 88 | console.log(`copying ${file} to src-cordova/www folder`) 89 | fs.copySync(`${publicFolder}/${file}`, `www/${file}`) 90 | }); 91 | } 92 | 93 | const publicFolder = '../public' 94 | const ip = process.env.SERVER_IP ? process.env.SERVER_IP : ipLogic.getIP(networkInterfaces) 95 | const url = production ? 'index.html' : `http://${ip}:5000` 96 | let svelteFiles = [ 97 | 'index.html', 98 | 'bundle.js', 99 | 'bundle.js.map', 100 | 'bundle.css', 101 | 'bundle.css.map' 102 | ] 103 | 104 | function runHook(ctx) { 105 | const cordovaConfigPath = 'config.xml' 106 | if (!url || !cordovaConfigPath) { 107 | console.error(`url or config path don't exist`) 108 | return 109 | } 110 | 111 | updateConfigUrl(cordovaConfigPath, url) 112 | 113 | clearWWW() 114 | copyPublicFiles() 115 | generateIndexHtml(ctx) 116 | } 117 | 118 | module.exports = runHook 119 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-cordova", 3 | "version": "1.0.9", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.5.5", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", 10 | "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.0.0" 14 | } 15 | }, 16 | "@babel/core": { 17 | "version": "7.6.4", 18 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.4.tgz", 19 | "integrity": "sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ==", 20 | "dev": true, 21 | "requires": { 22 | "@babel/code-frame": "^7.5.5", 23 | "@babel/generator": "^7.6.4", 24 | "@babel/helpers": "^7.6.2", 25 | "@babel/parser": "^7.6.4", 26 | "@babel/template": "^7.6.0", 27 | "@babel/traverse": "^7.6.3", 28 | "@babel/types": "^7.6.3", 29 | "convert-source-map": "^1.1.0", 30 | "debug": "^4.1.0", 31 | "json5": "^2.1.0", 32 | "lodash": "^4.17.13", 33 | "resolve": "^1.3.2", 34 | "semver": "^5.4.1", 35 | "source-map": "^0.5.0" 36 | }, 37 | "dependencies": { 38 | "debug": { 39 | "version": "4.1.1", 40 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 41 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 42 | "dev": true, 43 | "requires": { 44 | "ms": "^2.1.1" 45 | } 46 | }, 47 | "source-map": { 48 | "version": "0.5.7", 49 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 50 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 51 | "dev": true 52 | } 53 | } 54 | }, 55 | "@babel/generator": { 56 | "version": "7.6.4", 57 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", 58 | "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", 59 | "dev": true, 60 | "requires": { 61 | "@babel/types": "^7.6.3", 62 | "jsesc": "^2.5.1", 63 | "lodash": "^4.17.13", 64 | "source-map": "^0.5.0" 65 | }, 66 | "dependencies": { 67 | "source-map": { 68 | "version": "0.5.7", 69 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 70 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 71 | "dev": true 72 | } 73 | } 74 | }, 75 | "@babel/helper-annotate-as-pure": { 76 | "version": "7.0.0", 77 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", 78 | "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", 79 | "dev": true, 80 | "requires": { 81 | "@babel/types": "^7.0.0" 82 | } 83 | }, 84 | "@babel/helper-builder-binary-assignment-operator-visitor": { 85 | "version": "7.1.0", 86 | "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", 87 | "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", 88 | "dev": true, 89 | "requires": { 90 | "@babel/helper-explode-assignable-expression": "^7.1.0", 91 | "@babel/types": "^7.0.0" 92 | } 93 | }, 94 | "@babel/helper-call-delegate": { 95 | "version": "7.4.4", 96 | "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", 97 | "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", 98 | "dev": true, 99 | "requires": { 100 | "@babel/helper-hoist-variables": "^7.4.4", 101 | "@babel/traverse": "^7.4.4", 102 | "@babel/types": "^7.4.4" 103 | } 104 | }, 105 | "@babel/helper-define-map": { 106 | "version": "7.5.5", 107 | "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz", 108 | "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==", 109 | "dev": true, 110 | "requires": { 111 | "@babel/helper-function-name": "^7.1.0", 112 | "@babel/types": "^7.5.5", 113 | "lodash": "^4.17.13" 114 | } 115 | }, 116 | "@babel/helper-explode-assignable-expression": { 117 | "version": "7.1.0", 118 | "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", 119 | "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", 120 | "dev": true, 121 | "requires": { 122 | "@babel/traverse": "^7.1.0", 123 | "@babel/types": "^7.0.0" 124 | } 125 | }, 126 | "@babel/helper-function-name": { 127 | "version": "7.1.0", 128 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", 129 | "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", 130 | "dev": true, 131 | "requires": { 132 | "@babel/helper-get-function-arity": "^7.0.0", 133 | "@babel/template": "^7.1.0", 134 | "@babel/types": "^7.0.0" 135 | } 136 | }, 137 | "@babel/helper-get-function-arity": { 138 | "version": "7.0.0", 139 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", 140 | "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", 141 | "dev": true, 142 | "requires": { 143 | "@babel/types": "^7.0.0" 144 | } 145 | }, 146 | "@babel/helper-hoist-variables": { 147 | "version": "7.4.4", 148 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", 149 | "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", 150 | "dev": true, 151 | "requires": { 152 | "@babel/types": "^7.4.4" 153 | } 154 | }, 155 | "@babel/helper-member-expression-to-functions": { 156 | "version": "7.5.5", 157 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz", 158 | "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==", 159 | "dev": true, 160 | "requires": { 161 | "@babel/types": "^7.5.5" 162 | } 163 | }, 164 | "@babel/helper-module-imports": { 165 | "version": "7.0.0", 166 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", 167 | "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", 168 | "dev": true, 169 | "requires": { 170 | "@babel/types": "^7.0.0" 171 | } 172 | }, 173 | "@babel/helper-module-transforms": { 174 | "version": "7.5.5", 175 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz", 176 | "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==", 177 | "dev": true, 178 | "requires": { 179 | "@babel/helper-module-imports": "^7.0.0", 180 | "@babel/helper-simple-access": "^7.1.0", 181 | "@babel/helper-split-export-declaration": "^7.4.4", 182 | "@babel/template": "^7.4.4", 183 | "@babel/types": "^7.5.5", 184 | "lodash": "^4.17.13" 185 | } 186 | }, 187 | "@babel/helper-optimise-call-expression": { 188 | "version": "7.0.0", 189 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", 190 | "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", 191 | "dev": true, 192 | "requires": { 193 | "@babel/types": "^7.0.0" 194 | } 195 | }, 196 | "@babel/helper-plugin-utils": { 197 | "version": "7.0.0", 198 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", 199 | "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", 200 | "dev": true 201 | }, 202 | "@babel/helper-regex": { 203 | "version": "7.5.5", 204 | "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", 205 | "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", 206 | "dev": true, 207 | "requires": { 208 | "lodash": "^4.17.13" 209 | } 210 | }, 211 | "@babel/helper-remap-async-to-generator": { 212 | "version": "7.1.0", 213 | "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", 214 | "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", 215 | "dev": true, 216 | "requires": { 217 | "@babel/helper-annotate-as-pure": "^7.0.0", 218 | "@babel/helper-wrap-function": "^7.1.0", 219 | "@babel/template": "^7.1.0", 220 | "@babel/traverse": "^7.1.0", 221 | "@babel/types": "^7.0.0" 222 | } 223 | }, 224 | "@babel/helper-replace-supers": { 225 | "version": "7.5.5", 226 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz", 227 | "integrity": "sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==", 228 | "dev": true, 229 | "requires": { 230 | "@babel/helper-member-expression-to-functions": "^7.5.5", 231 | "@babel/helper-optimise-call-expression": "^7.0.0", 232 | "@babel/traverse": "^7.5.5", 233 | "@babel/types": "^7.5.5" 234 | } 235 | }, 236 | "@babel/helper-simple-access": { 237 | "version": "7.1.0", 238 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", 239 | "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", 240 | "dev": true, 241 | "requires": { 242 | "@babel/template": "^7.1.0", 243 | "@babel/types": "^7.0.0" 244 | } 245 | }, 246 | "@babel/helper-split-export-declaration": { 247 | "version": "7.4.4", 248 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", 249 | "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", 250 | "dev": true, 251 | "requires": { 252 | "@babel/types": "^7.4.4" 253 | } 254 | }, 255 | "@babel/helper-wrap-function": { 256 | "version": "7.2.0", 257 | "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", 258 | "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", 259 | "dev": true, 260 | "requires": { 261 | "@babel/helper-function-name": "^7.1.0", 262 | "@babel/template": "^7.1.0", 263 | "@babel/traverse": "^7.1.0", 264 | "@babel/types": "^7.2.0" 265 | } 266 | }, 267 | "@babel/helpers": { 268 | "version": "7.6.2", 269 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.6.2.tgz", 270 | "integrity": "sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA==", 271 | "dev": true, 272 | "requires": { 273 | "@babel/template": "^7.6.0", 274 | "@babel/traverse": "^7.6.2", 275 | "@babel/types": "^7.6.0" 276 | } 277 | }, 278 | "@babel/highlight": { 279 | "version": "7.5.0", 280 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", 281 | "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", 282 | "dev": true, 283 | "requires": { 284 | "chalk": "^2.0.0", 285 | "esutils": "^2.0.2", 286 | "js-tokens": "^4.0.0" 287 | } 288 | }, 289 | "@babel/parser": { 290 | "version": "7.6.4", 291 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.4.tgz", 292 | "integrity": "sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A==", 293 | "dev": true 294 | }, 295 | "@babel/plugin-proposal-async-generator-functions": { 296 | "version": "7.2.0", 297 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", 298 | "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", 299 | "dev": true, 300 | "requires": { 301 | "@babel/helper-plugin-utils": "^7.0.0", 302 | "@babel/helper-remap-async-to-generator": "^7.1.0", 303 | "@babel/plugin-syntax-async-generators": "^7.2.0" 304 | } 305 | }, 306 | "@babel/plugin-proposal-dynamic-import": { 307 | "version": "7.5.0", 308 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz", 309 | "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==", 310 | "dev": true, 311 | "requires": { 312 | "@babel/helper-plugin-utils": "^7.0.0", 313 | "@babel/plugin-syntax-dynamic-import": "^7.2.0" 314 | } 315 | }, 316 | "@babel/plugin-proposal-json-strings": { 317 | "version": "7.2.0", 318 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", 319 | "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", 320 | "dev": true, 321 | "requires": { 322 | "@babel/helper-plugin-utils": "^7.0.0", 323 | "@babel/plugin-syntax-json-strings": "^7.2.0" 324 | } 325 | }, 326 | "@babel/plugin-proposal-object-rest-spread": { 327 | "version": "7.6.2", 328 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz", 329 | "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==", 330 | "dev": true, 331 | "requires": { 332 | "@babel/helper-plugin-utils": "^7.0.0", 333 | "@babel/plugin-syntax-object-rest-spread": "^7.2.0" 334 | } 335 | }, 336 | "@babel/plugin-proposal-optional-catch-binding": { 337 | "version": "7.2.0", 338 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", 339 | "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", 340 | "dev": true, 341 | "requires": { 342 | "@babel/helper-plugin-utils": "^7.0.0", 343 | "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" 344 | } 345 | }, 346 | "@babel/plugin-proposal-unicode-property-regex": { 347 | "version": "7.6.2", 348 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz", 349 | "integrity": "sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw==", 350 | "dev": true, 351 | "requires": { 352 | "@babel/helper-plugin-utils": "^7.0.0", 353 | "@babel/helper-regex": "^7.4.4", 354 | "regexpu-core": "^4.6.0" 355 | } 356 | }, 357 | "@babel/plugin-syntax-async-generators": { 358 | "version": "7.2.0", 359 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", 360 | "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", 361 | "dev": true, 362 | "requires": { 363 | "@babel/helper-plugin-utils": "^7.0.0" 364 | } 365 | }, 366 | "@babel/plugin-syntax-dynamic-import": { 367 | "version": "7.2.0", 368 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", 369 | "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", 370 | "dev": true, 371 | "requires": { 372 | "@babel/helper-plugin-utils": "^7.0.0" 373 | } 374 | }, 375 | "@babel/plugin-syntax-json-strings": { 376 | "version": "7.2.0", 377 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", 378 | "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", 379 | "dev": true, 380 | "requires": { 381 | "@babel/helper-plugin-utils": "^7.0.0" 382 | } 383 | }, 384 | "@babel/plugin-syntax-object-rest-spread": { 385 | "version": "7.2.0", 386 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", 387 | "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", 388 | "dev": true, 389 | "requires": { 390 | "@babel/helper-plugin-utils": "^7.0.0" 391 | } 392 | }, 393 | "@babel/plugin-syntax-optional-catch-binding": { 394 | "version": "7.2.0", 395 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", 396 | "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", 397 | "dev": true, 398 | "requires": { 399 | "@babel/helper-plugin-utils": "^7.0.0" 400 | } 401 | }, 402 | "@babel/plugin-transform-arrow-functions": { 403 | "version": "7.2.0", 404 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", 405 | "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", 406 | "dev": true, 407 | "requires": { 408 | "@babel/helper-plugin-utils": "^7.0.0" 409 | } 410 | }, 411 | "@babel/plugin-transform-async-to-generator": { 412 | "version": "7.5.0", 413 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz", 414 | "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==", 415 | "dev": true, 416 | "requires": { 417 | "@babel/helper-module-imports": "^7.0.0", 418 | "@babel/helper-plugin-utils": "^7.0.0", 419 | "@babel/helper-remap-async-to-generator": "^7.1.0" 420 | } 421 | }, 422 | "@babel/plugin-transform-block-scoped-functions": { 423 | "version": "7.2.0", 424 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", 425 | "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", 426 | "dev": true, 427 | "requires": { 428 | "@babel/helper-plugin-utils": "^7.0.0" 429 | } 430 | }, 431 | "@babel/plugin-transform-block-scoping": { 432 | "version": "7.6.3", 433 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz", 434 | "integrity": "sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw==", 435 | "dev": true, 436 | "requires": { 437 | "@babel/helper-plugin-utils": "^7.0.0", 438 | "lodash": "^4.17.13" 439 | } 440 | }, 441 | "@babel/plugin-transform-classes": { 442 | "version": "7.5.5", 443 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz", 444 | "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==", 445 | "dev": true, 446 | "requires": { 447 | "@babel/helper-annotate-as-pure": "^7.0.0", 448 | "@babel/helper-define-map": "^7.5.5", 449 | "@babel/helper-function-name": "^7.1.0", 450 | "@babel/helper-optimise-call-expression": "^7.0.0", 451 | "@babel/helper-plugin-utils": "^7.0.0", 452 | "@babel/helper-replace-supers": "^7.5.5", 453 | "@babel/helper-split-export-declaration": "^7.4.4", 454 | "globals": "^11.1.0" 455 | } 456 | }, 457 | "@babel/plugin-transform-computed-properties": { 458 | "version": "7.2.0", 459 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", 460 | "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", 461 | "dev": true, 462 | "requires": { 463 | "@babel/helper-plugin-utils": "^7.0.0" 464 | } 465 | }, 466 | "@babel/plugin-transform-destructuring": { 467 | "version": "7.6.0", 468 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz", 469 | "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==", 470 | "dev": true, 471 | "requires": { 472 | "@babel/helper-plugin-utils": "^7.0.0" 473 | } 474 | }, 475 | "@babel/plugin-transform-dotall-regex": { 476 | "version": "7.6.2", 477 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz", 478 | "integrity": "sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA==", 479 | "dev": true, 480 | "requires": { 481 | "@babel/helper-plugin-utils": "^7.0.0", 482 | "@babel/helper-regex": "^7.4.4", 483 | "regexpu-core": "^4.6.0" 484 | } 485 | }, 486 | "@babel/plugin-transform-duplicate-keys": { 487 | "version": "7.5.0", 488 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz", 489 | "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==", 490 | "dev": true, 491 | "requires": { 492 | "@babel/helper-plugin-utils": "^7.0.0" 493 | } 494 | }, 495 | "@babel/plugin-transform-exponentiation-operator": { 496 | "version": "7.2.0", 497 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", 498 | "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", 499 | "dev": true, 500 | "requires": { 501 | "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", 502 | "@babel/helper-plugin-utils": "^7.0.0" 503 | } 504 | }, 505 | "@babel/plugin-transform-for-of": { 506 | "version": "7.4.4", 507 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", 508 | "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", 509 | "dev": true, 510 | "requires": { 511 | "@babel/helper-plugin-utils": "^7.0.0" 512 | } 513 | }, 514 | "@babel/plugin-transform-function-name": { 515 | "version": "7.4.4", 516 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", 517 | "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", 518 | "dev": true, 519 | "requires": { 520 | "@babel/helper-function-name": "^7.1.0", 521 | "@babel/helper-plugin-utils": "^7.0.0" 522 | } 523 | }, 524 | "@babel/plugin-transform-literals": { 525 | "version": "7.2.0", 526 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", 527 | "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", 528 | "dev": true, 529 | "requires": { 530 | "@babel/helper-plugin-utils": "^7.0.0" 531 | } 532 | }, 533 | "@babel/plugin-transform-member-expression-literals": { 534 | "version": "7.2.0", 535 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", 536 | "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", 537 | "dev": true, 538 | "requires": { 539 | "@babel/helper-plugin-utils": "^7.0.0" 540 | } 541 | }, 542 | "@babel/plugin-transform-modules-amd": { 543 | "version": "7.5.0", 544 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz", 545 | "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==", 546 | "dev": true, 547 | "requires": { 548 | "@babel/helper-module-transforms": "^7.1.0", 549 | "@babel/helper-plugin-utils": "^7.0.0", 550 | "babel-plugin-dynamic-import-node": "^2.3.0" 551 | } 552 | }, 553 | "@babel/plugin-transform-modules-commonjs": { 554 | "version": "7.6.0", 555 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz", 556 | "integrity": "sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g==", 557 | "dev": true, 558 | "requires": { 559 | "@babel/helper-module-transforms": "^7.4.4", 560 | "@babel/helper-plugin-utils": "^7.0.0", 561 | "@babel/helper-simple-access": "^7.1.0", 562 | "babel-plugin-dynamic-import-node": "^2.3.0" 563 | } 564 | }, 565 | "@babel/plugin-transform-modules-systemjs": { 566 | "version": "7.5.0", 567 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz", 568 | "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==", 569 | "dev": true, 570 | "requires": { 571 | "@babel/helper-hoist-variables": "^7.4.4", 572 | "@babel/helper-plugin-utils": "^7.0.0", 573 | "babel-plugin-dynamic-import-node": "^2.3.0" 574 | } 575 | }, 576 | "@babel/plugin-transform-modules-umd": { 577 | "version": "7.2.0", 578 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", 579 | "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", 580 | "dev": true, 581 | "requires": { 582 | "@babel/helper-module-transforms": "^7.1.0", 583 | "@babel/helper-plugin-utils": "^7.0.0" 584 | } 585 | }, 586 | "@babel/plugin-transform-named-capturing-groups-regex": { 587 | "version": "7.6.3", 588 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.3.tgz", 589 | "integrity": "sha512-jTkk7/uE6H2s5w6VlMHeWuH+Pcy2lmdwFoeWCVnvIrDUnB5gQqTVI8WfmEAhF2CDEarGrknZcmSFg1+bkfCoSw==", 590 | "dev": true, 591 | "requires": { 592 | "regexpu-core": "^4.6.0" 593 | } 594 | }, 595 | "@babel/plugin-transform-new-target": { 596 | "version": "7.4.4", 597 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", 598 | "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", 599 | "dev": true, 600 | "requires": { 601 | "@babel/helper-plugin-utils": "^7.0.0" 602 | } 603 | }, 604 | "@babel/plugin-transform-object-super": { 605 | "version": "7.5.5", 606 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz", 607 | "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==", 608 | "dev": true, 609 | "requires": { 610 | "@babel/helper-plugin-utils": "^7.0.0", 611 | "@babel/helper-replace-supers": "^7.5.5" 612 | } 613 | }, 614 | "@babel/plugin-transform-parameters": { 615 | "version": "7.4.4", 616 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", 617 | "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", 618 | "dev": true, 619 | "requires": { 620 | "@babel/helper-call-delegate": "^7.4.4", 621 | "@babel/helper-get-function-arity": "^7.0.0", 622 | "@babel/helper-plugin-utils": "^7.0.0" 623 | } 624 | }, 625 | "@babel/plugin-transform-property-literals": { 626 | "version": "7.2.0", 627 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", 628 | "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", 629 | "dev": true, 630 | "requires": { 631 | "@babel/helper-plugin-utils": "^7.0.0" 632 | } 633 | }, 634 | "@babel/plugin-transform-regenerator": { 635 | "version": "7.4.5", 636 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", 637 | "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", 638 | "dev": true, 639 | "requires": { 640 | "regenerator-transform": "^0.14.0" 641 | } 642 | }, 643 | "@babel/plugin-transform-reserved-words": { 644 | "version": "7.2.0", 645 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", 646 | "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", 647 | "dev": true, 648 | "requires": { 649 | "@babel/helper-plugin-utils": "^7.0.0" 650 | } 651 | }, 652 | "@babel/plugin-transform-shorthand-properties": { 653 | "version": "7.2.0", 654 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", 655 | "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", 656 | "dev": true, 657 | "requires": { 658 | "@babel/helper-plugin-utils": "^7.0.0" 659 | } 660 | }, 661 | "@babel/plugin-transform-spread": { 662 | "version": "7.6.2", 663 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz", 664 | "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==", 665 | "dev": true, 666 | "requires": { 667 | "@babel/helper-plugin-utils": "^7.0.0" 668 | } 669 | }, 670 | "@babel/plugin-transform-sticky-regex": { 671 | "version": "7.2.0", 672 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", 673 | "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", 674 | "dev": true, 675 | "requires": { 676 | "@babel/helper-plugin-utils": "^7.0.0", 677 | "@babel/helper-regex": "^7.0.0" 678 | } 679 | }, 680 | "@babel/plugin-transform-template-literals": { 681 | "version": "7.4.4", 682 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", 683 | "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", 684 | "dev": true, 685 | "requires": { 686 | "@babel/helper-annotate-as-pure": "^7.0.0", 687 | "@babel/helper-plugin-utils": "^7.0.0" 688 | } 689 | }, 690 | "@babel/plugin-transform-typeof-symbol": { 691 | "version": "7.2.0", 692 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", 693 | "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", 694 | "dev": true, 695 | "requires": { 696 | "@babel/helper-plugin-utils": "^7.0.0" 697 | } 698 | }, 699 | "@babel/plugin-transform-unicode-regex": { 700 | "version": "7.6.2", 701 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz", 702 | "integrity": "sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw==", 703 | "dev": true, 704 | "requires": { 705 | "@babel/helper-plugin-utils": "^7.0.0", 706 | "@babel/helper-regex": "^7.4.4", 707 | "regexpu-core": "^4.6.0" 708 | } 709 | }, 710 | "@babel/preset-env": { 711 | "version": "7.6.3", 712 | "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.3.tgz", 713 | "integrity": "sha512-CWQkn7EVnwzlOdR5NOm2+pfgSNEZmvGjOhlCHBDq0J8/EStr+G+FvPEiz9B56dR6MoiUFjXhfE4hjLoAKKJtIQ==", 714 | "dev": true, 715 | "requires": { 716 | "@babel/helper-module-imports": "^7.0.0", 717 | "@babel/helper-plugin-utils": "^7.0.0", 718 | "@babel/plugin-proposal-async-generator-functions": "^7.2.0", 719 | "@babel/plugin-proposal-dynamic-import": "^7.5.0", 720 | "@babel/plugin-proposal-json-strings": "^7.2.0", 721 | "@babel/plugin-proposal-object-rest-spread": "^7.6.2", 722 | "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", 723 | "@babel/plugin-proposal-unicode-property-regex": "^7.6.2", 724 | "@babel/plugin-syntax-async-generators": "^7.2.0", 725 | "@babel/plugin-syntax-dynamic-import": "^7.2.0", 726 | "@babel/plugin-syntax-json-strings": "^7.2.0", 727 | "@babel/plugin-syntax-object-rest-spread": "^7.2.0", 728 | "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", 729 | "@babel/plugin-transform-arrow-functions": "^7.2.0", 730 | "@babel/plugin-transform-async-to-generator": "^7.5.0", 731 | "@babel/plugin-transform-block-scoped-functions": "^7.2.0", 732 | "@babel/plugin-transform-block-scoping": "^7.6.3", 733 | "@babel/plugin-transform-classes": "^7.5.5", 734 | "@babel/plugin-transform-computed-properties": "^7.2.0", 735 | "@babel/plugin-transform-destructuring": "^7.6.0", 736 | "@babel/plugin-transform-dotall-regex": "^7.6.2", 737 | "@babel/plugin-transform-duplicate-keys": "^7.5.0", 738 | "@babel/plugin-transform-exponentiation-operator": "^7.2.0", 739 | "@babel/plugin-transform-for-of": "^7.4.4", 740 | "@babel/plugin-transform-function-name": "^7.4.4", 741 | "@babel/plugin-transform-literals": "^7.2.0", 742 | "@babel/plugin-transform-member-expression-literals": "^7.2.0", 743 | "@babel/plugin-transform-modules-amd": "^7.5.0", 744 | "@babel/plugin-transform-modules-commonjs": "^7.6.0", 745 | "@babel/plugin-transform-modules-systemjs": "^7.5.0", 746 | "@babel/plugin-transform-modules-umd": "^7.2.0", 747 | "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.3", 748 | "@babel/plugin-transform-new-target": "^7.4.4", 749 | "@babel/plugin-transform-object-super": "^7.5.5", 750 | "@babel/plugin-transform-parameters": "^7.4.4", 751 | "@babel/plugin-transform-property-literals": "^7.2.0", 752 | "@babel/plugin-transform-regenerator": "^7.4.5", 753 | "@babel/plugin-transform-reserved-words": "^7.2.0", 754 | "@babel/plugin-transform-shorthand-properties": "^7.2.0", 755 | "@babel/plugin-transform-spread": "^7.6.2", 756 | "@babel/plugin-transform-sticky-regex": "^7.2.0", 757 | "@babel/plugin-transform-template-literals": "^7.4.4", 758 | "@babel/plugin-transform-typeof-symbol": "^7.2.0", 759 | "@babel/plugin-transform-unicode-regex": "^7.6.2", 760 | "@babel/types": "^7.6.3", 761 | "browserslist": "^4.6.0", 762 | "core-js-compat": "^3.1.1", 763 | "invariant": "^2.2.2", 764 | "js-levenshtein": "^1.1.3", 765 | "semver": "^5.5.0" 766 | } 767 | }, 768 | "@babel/register": { 769 | "version": "7.6.2", 770 | "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.6.2.tgz", 771 | "integrity": "sha512-xgZk2LRZvt6i2SAUWxc7ellk4+OYRgS3Zpsnr13nMS1Qo25w21Uu8o6vTOAqNaxiqrnv30KTYzh9YWY2k21CeQ==", 772 | "dev": true, 773 | "requires": { 774 | "find-cache-dir": "^2.0.0", 775 | "lodash": "^4.17.13", 776 | "mkdirp": "^0.5.1", 777 | "pirates": "^4.0.0", 778 | "source-map-support": "^0.5.9" 779 | } 780 | }, 781 | "@babel/template": { 782 | "version": "7.6.0", 783 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", 784 | "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", 785 | "dev": true, 786 | "requires": { 787 | "@babel/code-frame": "^7.0.0", 788 | "@babel/parser": "^7.6.0", 789 | "@babel/types": "^7.6.0" 790 | } 791 | }, 792 | "@babel/traverse": { 793 | "version": "7.6.3", 794 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz", 795 | "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==", 796 | "dev": true, 797 | "requires": { 798 | "@babel/code-frame": "^7.5.5", 799 | "@babel/generator": "^7.6.3", 800 | "@babel/helper-function-name": "^7.1.0", 801 | "@babel/helper-split-export-declaration": "^7.4.4", 802 | "@babel/parser": "^7.6.3", 803 | "@babel/types": "^7.6.3", 804 | "debug": "^4.1.0", 805 | "globals": "^11.1.0", 806 | "lodash": "^4.17.13" 807 | }, 808 | "dependencies": { 809 | "debug": { 810 | "version": "4.1.1", 811 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 812 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 813 | "dev": true, 814 | "requires": { 815 | "ms": "^2.1.1" 816 | } 817 | } 818 | } 819 | }, 820 | "@babel/types": { 821 | "version": "7.6.3", 822 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", 823 | "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", 824 | "dev": true, 825 | "requires": { 826 | "esutils": "^2.0.2", 827 | "lodash": "^4.17.13", 828 | "to-fast-properties": "^2.0.0" 829 | } 830 | }, 831 | "ansi-colors": { 832 | "version": "3.2.3", 833 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", 834 | "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", 835 | "dev": true 836 | }, 837 | "ansi-regex": { 838 | "version": "3.0.0", 839 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 840 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 841 | "dev": true 842 | }, 843 | "ansi-styles": { 844 | "version": "3.2.1", 845 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 846 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 847 | "dev": true, 848 | "requires": { 849 | "color-convert": "^1.9.0" 850 | } 851 | }, 852 | "argparse": { 853 | "version": "1.0.10", 854 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 855 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 856 | "dev": true, 857 | "requires": { 858 | "sprintf-js": "~1.0.2" 859 | } 860 | }, 861 | "assertion-error": { 862 | "version": "1.1.0", 863 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", 864 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", 865 | "dev": true 866 | }, 867 | "babel-plugin-dynamic-import-node": { 868 | "version": "2.3.0", 869 | "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", 870 | "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", 871 | "dev": true, 872 | "requires": { 873 | "object.assign": "^4.1.0" 874 | } 875 | }, 876 | "balanced-match": { 877 | "version": "1.0.0", 878 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 879 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 880 | "dev": true 881 | }, 882 | "brace-expansion": { 883 | "version": "1.1.11", 884 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 885 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 886 | "dev": true, 887 | "requires": { 888 | "balanced-match": "^1.0.0", 889 | "concat-map": "0.0.1" 890 | } 891 | }, 892 | "browser-stdout": { 893 | "version": "1.3.1", 894 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 895 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 896 | "dev": true 897 | }, 898 | "browserslist": { 899 | "version": "4.7.0", 900 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", 901 | "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", 902 | "dev": true, 903 | "requires": { 904 | "caniuse-lite": "^1.0.30000989", 905 | "electron-to-chromium": "^1.3.247", 906 | "node-releases": "^1.1.29" 907 | } 908 | }, 909 | "buffer-from": { 910 | "version": "1.1.1", 911 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 912 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 913 | "dev": true 914 | }, 915 | "camelcase": { 916 | "version": "5.3.1", 917 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 918 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 919 | "dev": true 920 | }, 921 | "caniuse-lite": { 922 | "version": "1.0.30000999", 923 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000999.tgz", 924 | "integrity": "sha512-1CUyKyecPeksKwXZvYw0tEoaMCo/RwBlXmEtN5vVnabvO0KPd9RQLcaAuR9/1F+KDMv6esmOFWlsXuzDk+8rxg==", 925 | "dev": true 926 | }, 927 | "chai": { 928 | "version": "4.2.0", 929 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", 930 | "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", 931 | "dev": true, 932 | "requires": { 933 | "assertion-error": "^1.1.0", 934 | "check-error": "^1.0.2", 935 | "deep-eql": "^3.0.1", 936 | "get-func-name": "^2.0.0", 937 | "pathval": "^1.1.0", 938 | "type-detect": "^4.0.5" 939 | } 940 | }, 941 | "chalk": { 942 | "version": "2.4.2", 943 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 944 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 945 | "dev": true, 946 | "requires": { 947 | "ansi-styles": "^3.2.1", 948 | "escape-string-regexp": "^1.0.5", 949 | "supports-color": "^5.3.0" 950 | }, 951 | "dependencies": { 952 | "supports-color": { 953 | "version": "5.5.0", 954 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 955 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 956 | "dev": true, 957 | "requires": { 958 | "has-flag": "^3.0.0" 959 | } 960 | } 961 | } 962 | }, 963 | "check-error": { 964 | "version": "1.0.2", 965 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 966 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", 967 | "dev": true 968 | }, 969 | "cliui": { 970 | "version": "5.0.0", 971 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", 972 | "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", 973 | "dev": true, 974 | "requires": { 975 | "string-width": "^3.1.0", 976 | "strip-ansi": "^5.2.0", 977 | "wrap-ansi": "^5.1.0" 978 | }, 979 | "dependencies": { 980 | "ansi-regex": { 981 | "version": "4.1.0", 982 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 983 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 984 | "dev": true 985 | }, 986 | "string-width": { 987 | "version": "3.1.0", 988 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 989 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 990 | "dev": true, 991 | "requires": { 992 | "emoji-regex": "^7.0.1", 993 | "is-fullwidth-code-point": "^2.0.0", 994 | "strip-ansi": "^5.1.0" 995 | } 996 | }, 997 | "strip-ansi": { 998 | "version": "5.2.0", 999 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1000 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1001 | "dev": true, 1002 | "requires": { 1003 | "ansi-regex": "^4.1.0" 1004 | } 1005 | } 1006 | } 1007 | }, 1008 | "color-convert": { 1009 | "version": "1.9.3", 1010 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1011 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1012 | "dev": true, 1013 | "requires": { 1014 | "color-name": "1.1.3" 1015 | } 1016 | }, 1017 | "color-name": { 1018 | "version": "1.1.3", 1019 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1020 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 1021 | "dev": true 1022 | }, 1023 | "commondir": { 1024 | "version": "1.0.1", 1025 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 1026 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 1027 | "dev": true 1028 | }, 1029 | "concat-map": { 1030 | "version": "0.0.1", 1031 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1032 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1033 | "dev": true 1034 | }, 1035 | "convert-source-map": { 1036 | "version": "1.6.0", 1037 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", 1038 | "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", 1039 | "dev": true, 1040 | "requires": { 1041 | "safe-buffer": "~5.1.1" 1042 | } 1043 | }, 1044 | "core-js-compat": { 1045 | "version": "3.3.2", 1046 | "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.3.2.tgz", 1047 | "integrity": "sha512-gfiK4QnNXhnnHVOIZst2XHdFfdMTPxtR0EGs0TdILMlGIft+087oH6/Sw2xTTIjpWXC9vEwsJA8VG3XTGcmO5g==", 1048 | "dev": true, 1049 | "requires": { 1050 | "browserslist": "^4.7.0", 1051 | "semver": "^6.3.0" 1052 | }, 1053 | "dependencies": { 1054 | "semver": { 1055 | "version": "6.3.0", 1056 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1057 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1058 | "dev": true 1059 | } 1060 | } 1061 | }, 1062 | "debug": { 1063 | "version": "3.2.6", 1064 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 1065 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 1066 | "dev": true, 1067 | "requires": { 1068 | "ms": "^2.1.1" 1069 | } 1070 | }, 1071 | "decamelize": { 1072 | "version": "1.2.0", 1073 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 1074 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 1075 | "dev": true 1076 | }, 1077 | "deep-eql": { 1078 | "version": "3.0.1", 1079 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", 1080 | "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", 1081 | "dev": true, 1082 | "requires": { 1083 | "type-detect": "^4.0.0" 1084 | } 1085 | }, 1086 | "define-properties": { 1087 | "version": "1.1.3", 1088 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 1089 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 1090 | "dev": true, 1091 | "requires": { 1092 | "object-keys": "^1.0.12" 1093 | } 1094 | }, 1095 | "diff": { 1096 | "version": "3.5.0", 1097 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", 1098 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", 1099 | "dev": true 1100 | }, 1101 | "electron-to-chromium": { 1102 | "version": "1.3.282", 1103 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.282.tgz", 1104 | "integrity": "sha512-irSaDeCGgfMu1OA30bhqIBr+dx+pDJjRbwCpob7YWqVZbzXblybNzPGklVnWqv4EXxbkEAzQYqiNCqNTgu00lQ==", 1105 | "dev": true 1106 | }, 1107 | "emoji-regex": { 1108 | "version": "7.0.3", 1109 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 1110 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 1111 | "dev": true 1112 | }, 1113 | "es-abstract": { 1114 | "version": "1.15.0", 1115 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz", 1116 | "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==", 1117 | "dev": true, 1118 | "requires": { 1119 | "es-to-primitive": "^1.2.0", 1120 | "function-bind": "^1.1.1", 1121 | "has": "^1.0.3", 1122 | "has-symbols": "^1.0.0", 1123 | "is-callable": "^1.1.4", 1124 | "is-regex": "^1.0.4", 1125 | "object-inspect": "^1.6.0", 1126 | "object-keys": "^1.1.1", 1127 | "string.prototype.trimleft": "^2.1.0", 1128 | "string.prototype.trimright": "^2.1.0" 1129 | } 1130 | }, 1131 | "es-to-primitive": { 1132 | "version": "1.2.0", 1133 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", 1134 | "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", 1135 | "dev": true, 1136 | "requires": { 1137 | "is-callable": "^1.1.4", 1138 | "is-date-object": "^1.0.1", 1139 | "is-symbol": "^1.0.2" 1140 | } 1141 | }, 1142 | "escape-string-regexp": { 1143 | "version": "1.0.5", 1144 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1145 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1146 | "dev": true 1147 | }, 1148 | "esprima": { 1149 | "version": "4.0.1", 1150 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1151 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1152 | "dev": true 1153 | }, 1154 | "esutils": { 1155 | "version": "2.0.3", 1156 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1157 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1158 | "dev": true 1159 | }, 1160 | "find-cache-dir": { 1161 | "version": "2.1.0", 1162 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", 1163 | "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", 1164 | "dev": true, 1165 | "requires": { 1166 | "commondir": "^1.0.1", 1167 | "make-dir": "^2.0.0", 1168 | "pkg-dir": "^3.0.0" 1169 | } 1170 | }, 1171 | "find-up": { 1172 | "version": "3.0.0", 1173 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 1174 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 1175 | "dev": true, 1176 | "requires": { 1177 | "locate-path": "^3.0.0" 1178 | } 1179 | }, 1180 | "flat": { 1181 | "version": "4.1.0", 1182 | "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", 1183 | "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", 1184 | "dev": true, 1185 | "requires": { 1186 | "is-buffer": "~2.0.3" 1187 | } 1188 | }, 1189 | "fs.realpath": { 1190 | "version": "1.0.0", 1191 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1192 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1193 | "dev": true 1194 | }, 1195 | "function-bind": { 1196 | "version": "1.1.1", 1197 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1198 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1199 | "dev": true 1200 | }, 1201 | "get-caller-file": { 1202 | "version": "2.0.5", 1203 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1204 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1205 | "dev": true 1206 | }, 1207 | "get-func-name": { 1208 | "version": "2.0.0", 1209 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", 1210 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", 1211 | "dev": true 1212 | }, 1213 | "glob": { 1214 | "version": "7.1.3", 1215 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", 1216 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", 1217 | "dev": true, 1218 | "requires": { 1219 | "fs.realpath": "^1.0.0", 1220 | "inflight": "^1.0.4", 1221 | "inherits": "2", 1222 | "minimatch": "^3.0.4", 1223 | "once": "^1.3.0", 1224 | "path-is-absolute": "^1.0.0" 1225 | } 1226 | }, 1227 | "globals": { 1228 | "version": "11.12.0", 1229 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1230 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1231 | "dev": true 1232 | }, 1233 | "growl": { 1234 | "version": "1.10.5", 1235 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 1236 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", 1237 | "dev": true 1238 | }, 1239 | "has": { 1240 | "version": "1.0.3", 1241 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1242 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1243 | "dev": true, 1244 | "requires": { 1245 | "function-bind": "^1.1.1" 1246 | } 1247 | }, 1248 | "has-flag": { 1249 | "version": "3.0.0", 1250 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1251 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1252 | "dev": true 1253 | }, 1254 | "has-symbols": { 1255 | "version": "1.0.0", 1256 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", 1257 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", 1258 | "dev": true 1259 | }, 1260 | "he": { 1261 | "version": "1.2.0", 1262 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1263 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1264 | "dev": true 1265 | }, 1266 | "inflight": { 1267 | "version": "1.0.6", 1268 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1269 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1270 | "dev": true, 1271 | "requires": { 1272 | "once": "^1.3.0", 1273 | "wrappy": "1" 1274 | } 1275 | }, 1276 | "inherits": { 1277 | "version": "2.0.4", 1278 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1279 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1280 | "dev": true 1281 | }, 1282 | "invariant": { 1283 | "version": "2.2.4", 1284 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", 1285 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", 1286 | "dev": true, 1287 | "requires": { 1288 | "loose-envify": "^1.0.0" 1289 | } 1290 | }, 1291 | "is-buffer": { 1292 | "version": "2.0.4", 1293 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", 1294 | "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", 1295 | "dev": true 1296 | }, 1297 | "is-callable": { 1298 | "version": "1.1.4", 1299 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", 1300 | "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", 1301 | "dev": true 1302 | }, 1303 | "is-date-object": { 1304 | "version": "1.0.1", 1305 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", 1306 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", 1307 | "dev": true 1308 | }, 1309 | "is-fullwidth-code-point": { 1310 | "version": "2.0.0", 1311 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1312 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1313 | "dev": true 1314 | }, 1315 | "is-regex": { 1316 | "version": "1.0.4", 1317 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 1318 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 1319 | "dev": true, 1320 | "requires": { 1321 | "has": "^1.0.1" 1322 | } 1323 | }, 1324 | "is-symbol": { 1325 | "version": "1.0.2", 1326 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", 1327 | "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", 1328 | "dev": true, 1329 | "requires": { 1330 | "has-symbols": "^1.0.0" 1331 | } 1332 | }, 1333 | "isexe": { 1334 | "version": "2.0.0", 1335 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1336 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1337 | "dev": true 1338 | }, 1339 | "js-levenshtein": { 1340 | "version": "1.1.6", 1341 | "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", 1342 | "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", 1343 | "dev": true 1344 | }, 1345 | "js-tokens": { 1346 | "version": "4.0.0", 1347 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1348 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1349 | "dev": true 1350 | }, 1351 | "js-yaml": { 1352 | "version": "3.13.1", 1353 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 1354 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 1355 | "dev": true, 1356 | "requires": { 1357 | "argparse": "^1.0.7", 1358 | "esprima": "^4.0.0" 1359 | } 1360 | }, 1361 | "jsesc": { 1362 | "version": "2.5.2", 1363 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1364 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1365 | "dev": true 1366 | }, 1367 | "json5": { 1368 | "version": "2.1.1", 1369 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", 1370 | "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", 1371 | "dev": true, 1372 | "requires": { 1373 | "minimist": "^1.2.0" 1374 | }, 1375 | "dependencies": { 1376 | "minimist": { 1377 | "version": "1.2.5", 1378 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1379 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1380 | "dev": true 1381 | } 1382 | } 1383 | }, 1384 | "locate-path": { 1385 | "version": "3.0.0", 1386 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 1387 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 1388 | "dev": true, 1389 | "requires": { 1390 | "p-locate": "^3.0.0", 1391 | "path-exists": "^3.0.0" 1392 | } 1393 | }, 1394 | "lodash": { 1395 | "version": "4.17.19", 1396 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", 1397 | "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", 1398 | "dev": true 1399 | }, 1400 | "log-symbols": { 1401 | "version": "2.2.0", 1402 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", 1403 | "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", 1404 | "dev": true, 1405 | "requires": { 1406 | "chalk": "^2.0.1" 1407 | } 1408 | }, 1409 | "loose-envify": { 1410 | "version": "1.4.0", 1411 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1412 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1413 | "dev": true, 1414 | "requires": { 1415 | "js-tokens": "^3.0.0 || ^4.0.0" 1416 | } 1417 | }, 1418 | "make-dir": { 1419 | "version": "2.1.0", 1420 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", 1421 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 1422 | "dev": true, 1423 | "requires": { 1424 | "pify": "^4.0.1", 1425 | "semver": "^5.6.0" 1426 | } 1427 | }, 1428 | "minimatch": { 1429 | "version": "3.0.4", 1430 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1431 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1432 | "dev": true, 1433 | "requires": { 1434 | "brace-expansion": "^1.1.7" 1435 | } 1436 | }, 1437 | "minimist": { 1438 | "version": "1.2.5", 1439 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1440 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1441 | "dev": true 1442 | }, 1443 | "mkdirp": { 1444 | "version": "0.5.5", 1445 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 1446 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 1447 | "dev": true, 1448 | "requires": { 1449 | "minimist": "^1.2.5" 1450 | } 1451 | }, 1452 | "mocha": { 1453 | "version": "6.2.1", 1454 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.1.tgz", 1455 | "integrity": "sha512-VCcWkLHwk79NYQc8cxhkmI8IigTIhsCwZ6RTxQsqK6go4UvEhzJkYuHm8B2YtlSxcYq2fY+ucr4JBwoD6ci80A==", 1456 | "dev": true, 1457 | "requires": { 1458 | "ansi-colors": "3.2.3", 1459 | "browser-stdout": "1.3.1", 1460 | "debug": "3.2.6", 1461 | "diff": "3.5.0", 1462 | "escape-string-regexp": "1.0.5", 1463 | "find-up": "3.0.0", 1464 | "glob": "7.1.3", 1465 | "growl": "1.10.5", 1466 | "he": "1.2.0", 1467 | "js-yaml": "3.13.1", 1468 | "log-symbols": "2.2.0", 1469 | "minimatch": "3.0.4", 1470 | "mkdirp": "0.5.1", 1471 | "ms": "2.1.1", 1472 | "node-environment-flags": "1.0.5", 1473 | "object.assign": "4.1.0", 1474 | "strip-json-comments": "2.0.1", 1475 | "supports-color": "6.0.0", 1476 | "which": "1.3.1", 1477 | "wide-align": "1.1.3", 1478 | "yargs": "13.3.0", 1479 | "yargs-parser": "13.1.1", 1480 | "yargs-unparser": "1.6.0" 1481 | }, 1482 | "dependencies": { 1483 | "minimist": { 1484 | "version": "0.0.8", 1485 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1486 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1487 | "dev": true 1488 | }, 1489 | "mkdirp": { 1490 | "version": "0.5.1", 1491 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1492 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1493 | "dev": true, 1494 | "requires": { 1495 | "minimist": "0.0.8" 1496 | } 1497 | }, 1498 | "yargs-parser": { 1499 | "version": "13.1.1", 1500 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", 1501 | "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", 1502 | "dev": true, 1503 | "requires": { 1504 | "camelcase": "^5.0.0", 1505 | "decamelize": "^1.2.0" 1506 | } 1507 | } 1508 | } 1509 | }, 1510 | "ms": { 1511 | "version": "2.1.1", 1512 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1513 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 1514 | "dev": true 1515 | }, 1516 | "node-environment-flags": { 1517 | "version": "1.0.5", 1518 | "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", 1519 | "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", 1520 | "dev": true, 1521 | "requires": { 1522 | "object.getownpropertydescriptors": "^2.0.3", 1523 | "semver": "^5.7.0" 1524 | } 1525 | }, 1526 | "node-modules-regexp": { 1527 | "version": "1.0.0", 1528 | "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", 1529 | "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", 1530 | "dev": true 1531 | }, 1532 | "node-releases": { 1533 | "version": "1.1.35", 1534 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.35.tgz", 1535 | "integrity": "sha512-JGcM/wndCN/2elJlU0IGdVEJQQnJwsLbgPCFd2pY7V0mxf17bZ0Gb/lgOtL29ZQhvEX5shnVhxQyZz3ex94N8w==", 1536 | "dev": true, 1537 | "requires": { 1538 | "semver": "^6.3.0" 1539 | }, 1540 | "dependencies": { 1541 | "semver": { 1542 | "version": "6.3.0", 1543 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1544 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1545 | "dev": true 1546 | } 1547 | } 1548 | }, 1549 | "object-inspect": { 1550 | "version": "1.6.0", 1551 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", 1552 | "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", 1553 | "dev": true 1554 | }, 1555 | "object-keys": { 1556 | "version": "1.1.1", 1557 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1558 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1559 | "dev": true 1560 | }, 1561 | "object.assign": { 1562 | "version": "4.1.0", 1563 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 1564 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 1565 | "dev": true, 1566 | "requires": { 1567 | "define-properties": "^1.1.2", 1568 | "function-bind": "^1.1.1", 1569 | "has-symbols": "^1.0.0", 1570 | "object-keys": "^1.0.11" 1571 | } 1572 | }, 1573 | "object.getownpropertydescriptors": { 1574 | "version": "2.0.3", 1575 | "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", 1576 | "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", 1577 | "dev": true, 1578 | "requires": { 1579 | "define-properties": "^1.1.2", 1580 | "es-abstract": "^1.5.1" 1581 | } 1582 | }, 1583 | "once": { 1584 | "version": "1.4.0", 1585 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1586 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1587 | "dev": true, 1588 | "requires": { 1589 | "wrappy": "1" 1590 | } 1591 | }, 1592 | "p-limit": { 1593 | "version": "2.2.1", 1594 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", 1595 | "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", 1596 | "dev": true, 1597 | "requires": { 1598 | "p-try": "^2.0.0" 1599 | } 1600 | }, 1601 | "p-locate": { 1602 | "version": "3.0.0", 1603 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 1604 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 1605 | "dev": true, 1606 | "requires": { 1607 | "p-limit": "^2.0.0" 1608 | } 1609 | }, 1610 | "p-try": { 1611 | "version": "2.2.0", 1612 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1613 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 1614 | "dev": true 1615 | }, 1616 | "path-exists": { 1617 | "version": "3.0.0", 1618 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 1619 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 1620 | "dev": true 1621 | }, 1622 | "path-is-absolute": { 1623 | "version": "1.0.1", 1624 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1625 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1626 | "dev": true 1627 | }, 1628 | "path-parse": { 1629 | "version": "1.0.6", 1630 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1631 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 1632 | "dev": true 1633 | }, 1634 | "pathval": { 1635 | "version": "1.1.0", 1636 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", 1637 | "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", 1638 | "dev": true 1639 | }, 1640 | "pify": { 1641 | "version": "4.0.1", 1642 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 1643 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 1644 | "dev": true 1645 | }, 1646 | "pirates": { 1647 | "version": "4.0.1", 1648 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", 1649 | "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", 1650 | "dev": true, 1651 | "requires": { 1652 | "node-modules-regexp": "^1.0.0" 1653 | } 1654 | }, 1655 | "pkg-dir": { 1656 | "version": "3.0.0", 1657 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", 1658 | "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", 1659 | "dev": true, 1660 | "requires": { 1661 | "find-up": "^3.0.0" 1662 | } 1663 | }, 1664 | "private": { 1665 | "version": "0.1.8", 1666 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", 1667 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", 1668 | "dev": true 1669 | }, 1670 | "regenerate": { 1671 | "version": "1.4.0", 1672 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", 1673 | "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", 1674 | "dev": true 1675 | }, 1676 | "regenerate-unicode-properties": { 1677 | "version": "8.1.0", 1678 | "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", 1679 | "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", 1680 | "dev": true, 1681 | "requires": { 1682 | "regenerate": "^1.4.0" 1683 | } 1684 | }, 1685 | "regenerator-transform": { 1686 | "version": "0.14.1", 1687 | "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", 1688 | "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", 1689 | "dev": true, 1690 | "requires": { 1691 | "private": "^0.1.6" 1692 | } 1693 | }, 1694 | "regexpu-core": { 1695 | "version": "4.6.0", 1696 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", 1697 | "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", 1698 | "dev": true, 1699 | "requires": { 1700 | "regenerate": "^1.4.0", 1701 | "regenerate-unicode-properties": "^8.1.0", 1702 | "regjsgen": "^0.5.0", 1703 | "regjsparser": "^0.6.0", 1704 | "unicode-match-property-ecmascript": "^1.0.4", 1705 | "unicode-match-property-value-ecmascript": "^1.1.0" 1706 | } 1707 | }, 1708 | "regjsgen": { 1709 | "version": "0.5.0", 1710 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", 1711 | "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", 1712 | "dev": true 1713 | }, 1714 | "regjsparser": { 1715 | "version": "0.6.0", 1716 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", 1717 | "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", 1718 | "dev": true, 1719 | "requires": { 1720 | "jsesc": "~0.5.0" 1721 | }, 1722 | "dependencies": { 1723 | "jsesc": { 1724 | "version": "0.5.0", 1725 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 1726 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", 1727 | "dev": true 1728 | } 1729 | } 1730 | }, 1731 | "require-directory": { 1732 | "version": "2.1.1", 1733 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1734 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 1735 | "dev": true 1736 | }, 1737 | "require-main-filename": { 1738 | "version": "2.0.0", 1739 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 1740 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", 1741 | "dev": true 1742 | }, 1743 | "resolve": { 1744 | "version": "1.12.0", 1745 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", 1746 | "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", 1747 | "dev": true, 1748 | "requires": { 1749 | "path-parse": "^1.0.6" 1750 | } 1751 | }, 1752 | "safe-buffer": { 1753 | "version": "5.1.2", 1754 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1755 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1756 | "dev": true 1757 | }, 1758 | "semver": { 1759 | "version": "5.7.1", 1760 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1761 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1762 | "dev": true 1763 | }, 1764 | "set-blocking": { 1765 | "version": "2.0.0", 1766 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 1767 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 1768 | "dev": true 1769 | }, 1770 | "source-map": { 1771 | "version": "0.6.1", 1772 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1773 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1774 | "dev": true 1775 | }, 1776 | "source-map-support": { 1777 | "version": "0.5.13", 1778 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", 1779 | "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", 1780 | "dev": true, 1781 | "requires": { 1782 | "buffer-from": "^1.0.0", 1783 | "source-map": "^0.6.0" 1784 | } 1785 | }, 1786 | "sprintf-js": { 1787 | "version": "1.0.3", 1788 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1789 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1790 | "dev": true 1791 | }, 1792 | "string-width": { 1793 | "version": "2.1.1", 1794 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 1795 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 1796 | "dev": true, 1797 | "requires": { 1798 | "is-fullwidth-code-point": "^2.0.0", 1799 | "strip-ansi": "^4.0.0" 1800 | } 1801 | }, 1802 | "string.prototype.trimleft": { 1803 | "version": "2.1.0", 1804 | "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", 1805 | "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", 1806 | "dev": true, 1807 | "requires": { 1808 | "define-properties": "^1.1.3", 1809 | "function-bind": "^1.1.1" 1810 | } 1811 | }, 1812 | "string.prototype.trimright": { 1813 | "version": "2.1.0", 1814 | "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", 1815 | "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", 1816 | "dev": true, 1817 | "requires": { 1818 | "define-properties": "^1.1.3", 1819 | "function-bind": "^1.1.1" 1820 | } 1821 | }, 1822 | "strip-ansi": { 1823 | "version": "4.0.0", 1824 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 1825 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 1826 | "dev": true, 1827 | "requires": { 1828 | "ansi-regex": "^3.0.0" 1829 | } 1830 | }, 1831 | "strip-json-comments": { 1832 | "version": "2.0.1", 1833 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 1834 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 1835 | "dev": true 1836 | }, 1837 | "supports-color": { 1838 | "version": "6.0.0", 1839 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", 1840 | "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", 1841 | "dev": true, 1842 | "requires": { 1843 | "has-flag": "^3.0.0" 1844 | } 1845 | }, 1846 | "to-fast-properties": { 1847 | "version": "2.0.0", 1848 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1849 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 1850 | "dev": true 1851 | }, 1852 | "type-detect": { 1853 | "version": "4.0.8", 1854 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", 1855 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", 1856 | "dev": true 1857 | }, 1858 | "unicode-canonical-property-names-ecmascript": { 1859 | "version": "1.0.4", 1860 | "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", 1861 | "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", 1862 | "dev": true 1863 | }, 1864 | "unicode-match-property-ecmascript": { 1865 | "version": "1.0.4", 1866 | "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", 1867 | "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", 1868 | "dev": true, 1869 | "requires": { 1870 | "unicode-canonical-property-names-ecmascript": "^1.0.4", 1871 | "unicode-property-aliases-ecmascript": "^1.0.4" 1872 | } 1873 | }, 1874 | "unicode-match-property-value-ecmascript": { 1875 | "version": "1.1.0", 1876 | "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", 1877 | "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", 1878 | "dev": true 1879 | }, 1880 | "unicode-property-aliases-ecmascript": { 1881 | "version": "1.0.5", 1882 | "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", 1883 | "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", 1884 | "dev": true 1885 | }, 1886 | "which": { 1887 | "version": "1.3.1", 1888 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 1889 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 1890 | "dev": true, 1891 | "requires": { 1892 | "isexe": "^2.0.0" 1893 | } 1894 | }, 1895 | "which-module": { 1896 | "version": "2.0.0", 1897 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 1898 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", 1899 | "dev": true 1900 | }, 1901 | "wide-align": { 1902 | "version": "1.1.3", 1903 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 1904 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 1905 | "dev": true, 1906 | "requires": { 1907 | "string-width": "^1.0.2 || 2" 1908 | } 1909 | }, 1910 | "wrap-ansi": { 1911 | "version": "5.1.0", 1912 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", 1913 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", 1914 | "dev": true, 1915 | "requires": { 1916 | "ansi-styles": "^3.2.0", 1917 | "string-width": "^3.0.0", 1918 | "strip-ansi": "^5.0.0" 1919 | }, 1920 | "dependencies": { 1921 | "ansi-regex": { 1922 | "version": "4.1.0", 1923 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1924 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1925 | "dev": true 1926 | }, 1927 | "string-width": { 1928 | "version": "3.1.0", 1929 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1930 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1931 | "dev": true, 1932 | "requires": { 1933 | "emoji-regex": "^7.0.1", 1934 | "is-fullwidth-code-point": "^2.0.0", 1935 | "strip-ansi": "^5.1.0" 1936 | } 1937 | }, 1938 | "strip-ansi": { 1939 | "version": "5.2.0", 1940 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1941 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1942 | "dev": true, 1943 | "requires": { 1944 | "ansi-regex": "^4.1.0" 1945 | } 1946 | } 1947 | } 1948 | }, 1949 | "wrappy": { 1950 | "version": "1.0.2", 1951 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1952 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1953 | "dev": true 1954 | }, 1955 | "y18n": { 1956 | "version": "4.0.0", 1957 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", 1958 | "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", 1959 | "dev": true 1960 | }, 1961 | "yargs": { 1962 | "version": "13.3.0", 1963 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", 1964 | "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", 1965 | "dev": true, 1966 | "requires": { 1967 | "cliui": "^5.0.0", 1968 | "find-up": "^3.0.0", 1969 | "get-caller-file": "^2.0.1", 1970 | "require-directory": "^2.1.1", 1971 | "require-main-filename": "^2.0.0", 1972 | "set-blocking": "^2.0.0", 1973 | "string-width": "^3.0.0", 1974 | "which-module": "^2.0.0", 1975 | "y18n": "^4.0.0", 1976 | "yargs-parser": "^13.1.1" 1977 | }, 1978 | "dependencies": { 1979 | "ansi-regex": { 1980 | "version": "4.1.0", 1981 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1982 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1983 | "dev": true 1984 | }, 1985 | "string-width": { 1986 | "version": "3.1.0", 1987 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1988 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1989 | "dev": true, 1990 | "requires": { 1991 | "emoji-regex": "^7.0.1", 1992 | "is-fullwidth-code-point": "^2.0.0", 1993 | "strip-ansi": "^5.1.0" 1994 | } 1995 | }, 1996 | "strip-ansi": { 1997 | "version": "5.2.0", 1998 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1999 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 2000 | "dev": true, 2001 | "requires": { 2002 | "ansi-regex": "^4.1.0" 2003 | } 2004 | } 2005 | } 2006 | }, 2007 | "yargs-parser": { 2008 | "version": "13.1.2", 2009 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", 2010 | "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", 2011 | "dev": true, 2012 | "requires": { 2013 | "camelcase": "^5.0.0", 2014 | "decamelize": "^1.2.0" 2015 | } 2016 | }, 2017 | "yargs-unparser": { 2018 | "version": "1.6.0", 2019 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", 2020 | "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", 2021 | "dev": true, 2022 | "requires": { 2023 | "flat": "^4.1.0", 2024 | "lodash": "^4.17.15", 2025 | "yargs": "^13.3.0" 2026 | } 2027 | } 2028 | } 2029 | } 2030 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-cordova", 3 | "version": "1.0.9", 4 | "description": "A package for developing svelte app with cordova, including hot reload dev server.", 5 | "scripts": { 6 | "test": "mocha --require @babel/register tests/*.spec.js" 7 | }, 8 | "keywords": [ 9 | "svelte", 10 | "cordova" 11 | ], 12 | "repository": { 13 | "type": "git", 14 | "url": "git+https://github.com/syonip/svelte-cordova" 15 | }, 16 | "author": "syonip", 17 | "license": "ISC", 18 | "devDependencies": { 19 | "@babel/core": "^7.6.4", 20 | "@babel/preset-env": "^7.6.3", 21 | "@babel/register": "^7.6.2", 22 | "chai": "^4.2.0", 23 | "mocha": "^6.2.1" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /services/ip-logic.js: -------------------------------------------------------------------------------- 1 | function getIP(networkInterfaces) { 2 | let interfaces = [] 3 | for (let int in networkInterfaces) { 4 | let isLocalhost = networkInterfaces[int].map(x => x.address).includes('127.0.0.1') 5 | 6 | if (!isLocalhost) { 7 | interfaces.push(networkInterfaces[int]) 8 | } 9 | } 10 | 11 | let ip = interfaces.flat().filter(x => x.family == 'IPv4').map(x => x.address)[0] 12 | return ip 13 | } 14 | 15 | module.exports = { 16 | getIP 17 | } -------------------------------------------------------------------------------- /tests/ip-logic.spec.js: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai'; 2 | const ipLogic = require('../services/ip-logic.js') 3 | 4 | describe('IP Logic', () => { 5 | it('should get correct IP 1', () => { 6 | const networkInterfaces = { 7 | WiFi: 8 | [{ 9 | address: 'fe80::1419:81ae:c965:6368', 10 | netmask: 'ffff:ffff:ffff:ffff::', 11 | family: 'IPv6', 12 | internal: false, 13 | scopeid: 14 14 | }, 15 | { 16 | address: '10.0.0.3', 17 | netmask: '255.255.255.0', 18 | family: 'IPv4', 19 | internal: false, 20 | }], 21 | 'VMware Network Adapter VMnet1': 22 | [{ 23 | address: 'fe80::9c59:e872:43b5:e4b7', 24 | netmask: 'ffff:ffff:ffff:ffff::', 25 | family: 'IPv6', 26 | internal: false, 27 | scopeid: 5 28 | }, 29 | { 30 | address: '192.168.191.1', 31 | netmask: '255.255.255.0', 32 | family: 'IPv4', 33 | internal: false, 34 | }], 35 | 'VMware Network Adapter VMnet8': 36 | [{ 37 | address: 'fe80::6545:6d96:c32a:dda8', 38 | netmask: 'ffff:ffff:ffff:ffff::', 39 | family: 'IPv6', 40 | internal: false, 41 | scopeid: 10 42 | }, 43 | { 44 | address: '192.168.189.1', 45 | netmask: '255.255.255.0', 46 | family: 'IPv4', 47 | internal: false, 48 | }], 49 | 'Loopback Pseudo-Interface 1': 50 | [{ 51 | address: '::1', 52 | netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', 53 | family: 'IPv6', 54 | internal: true, 55 | scopeid: 0 56 | }, 57 | { 58 | address: '127.0.0.1', 59 | netmask: '255.0.0.0', 60 | family: 'IPv4', 61 | internal: true, 62 | }] 63 | } 64 | const ip = ipLogic.getIP(networkInterfaces); 65 | 66 | expect(ip).to.eql('10.0.0.3'); 67 | }); 68 | 69 | it('should get correct IP 2', () => { 70 | const networkInterfaces = [ 71 | [ 72 | { 73 | address: '************************', 74 | netmask: 'ffff:ffff:ffff:ffff::', 75 | family: 'IPv6', 76 | mac: '************************', 77 | internal: false, 78 | cidr: '************************', 79 | scopeid: 8 80 | } 81 | ], 82 | [ 83 | { 84 | address: '************************', 85 | netmask: 'ffff:ffff:ffff:ffff::', 86 | family: 'IPv6', 87 | mac: '************************', 88 | internal: false, 89 | cidr: '************************', 90 | scopeid: 10 91 | }, 92 | { 93 | address: '192.168.1.15', 94 | netmask: '255.255.255.0', 95 | family: 'IPv4', 96 | mac: '************************', 97 | internal: false, 98 | cidr: '192.168.1.15/24' 99 | } 100 | ], 101 | [ 102 | { 103 | address: '************************', 104 | netmask: 'ffff:ffff:ffff:ffff::', 105 | family: 'IPv6', 106 | mac: '************************', 107 | internal: false, 108 | cidr: '************************', 109 | scopeid: 12 110 | } 111 | ], 112 | [ 113 | { 114 | address: '************************', 115 | netmask: 'ffff:ffff:ffff:ffff::', 116 | family: 'IPv6', 117 | mac: '00:00:00:00:00:00', 118 | internal: false, 119 | cidr: '************************', 120 | scopeid: 18 121 | } 122 | ] 123 | ] 124 | const ip = ipLogic.getIP(networkInterfaces); 125 | 126 | expect(ip).to.eql('192.168.1.15'); 127 | }); 128 | }); --------------------------------------------------------------------------------