├── .babelrc ├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── package-lock.json ├── package.json ├── rollup.config.js └── src └── index.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | "transform-class-properties" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | private 4 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | private 2 | node_modules 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Marnix Janssen 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Aural 2 | [![npm](https://img.shields.io/npm/v/aural.svg)](http://npm.im/aural) 3 | [![gzip size](http://img.badgesize.io/https://unpkg.com/aural/dist/index.js?compression=gzip)](https://unpkg.com/aural/dist/index.js) 4 | 5 | The __zero-dependency__ ~_900B_ audio manager for your Javascript projects. 6 | 7 | # Install 8 | 9 | ``` 10 | npm install --save aural 11 | ``` 12 | 13 | # Usage 14 | 15 | Pass a path to your audio file to the `load` function. 16 | 17 | ``` 18 | Aural.load('music', '/path/to/file.mp3', options); 19 | ``` 20 | 21 | ## Mobile and recent browsers 22 | Will not allow playing audio without user gesture. Make sure to pass the `suspended` option, so the Audiocontext will not automatically start. 23 | It will automatically resume the audiocontext when you call `start()` or `play()` on an audio file. 24 | 25 | Playing or starting will *always* resume the Audiocontext. 26 | 27 | [_Modern browser changelog_](https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio) 28 | 29 | # Options 30 | 31 | _Options are not required_ 32 | 33 | ``` 34 | { 35 | loop: 1, // Loops the audio file [default 0] 36 | rate: 1, // Sets the rate of the audio file [default 1] 37 | autoPlay: 1, // Starts playing the file when loaded [default 0] 38 | volume: 1, // Sets the volume for the sound [default 1] 39 | frequencyDivider: 128, // Automatically devide the frequency by given number [default 128] 40 | startAt: 0, // Start playing audio from a certain second [default 0] 41 | suspended: 1, // Audiocontext is suspended at first, will resume after starting a song. [default 0] 42 | } 43 | ``` 44 | 45 | # Getting started 46 | `Aural.load(key, source, options);` 47 | 48 | The `load` function returns a promise with a audio object. 49 | 50 | # Api Aural load result 51 | ``` 52 | Aural.load(key, source, options).then(sound => { 53 | // Play sound 54 | sound.play(); 55 | 56 | // Pause sound 57 | sound.pause(); 58 | 59 | // Stop playing sound 60 | sound.stop(); 61 | 62 | // Get frequency of sound 63 | sound.getFrequency(); 64 | 65 | // Set rate of sound 66 | sound.setRate(rate); 67 | 68 | // Set volume of sound 69 | sound.volume(volume); 70 | 71 | // Mute sound 72 | sound.mute(); 73 | 74 | // Unmute sound 75 | sound.unmute(); 76 | 77 | // Start playing. Preferably use for devices which do not allow starting music without interaction (ios) 78 | sound.start(); 79 | }); 80 | ``` 81 | 82 | # Api Aural 83 | 84 | Aural can also be called globally, without having the load result stored. 85 | 86 | ``` 87 | // Load audio file, with a key, returns Aural object with different methods 88 | Aural.load(key, source, options); 89 | 90 | // Play audio file 91 | Aural.play(key); 92 | 93 | // Pause audio file 94 | Aural.pause(key); 95 | 96 | // Stop playing audio file 97 | Aural.stop(key); 98 | 99 | // Get the frequency for a playing file 100 | Aural.getFrequency(key); 101 | 102 | // Set the rate for an audio file 103 | Aural.setRate(key, rate); 104 | 105 | // Mute all sounds, loaded with Aural 106 | Aural.muteAll(); 107 | 108 | // Unmute all sounds, loaded with Aural 109 | Aural.unmuteAll(); 110 | 111 | // Start playing a sound by key. 112 | // Preferably use for devices which do not allow starting music without interaction (ios) 113 | Aural.start(key); 114 | ``` 115 | 116 | # Demo 117 | Code demo [can be found here](https://stackblitz.com/edit/aural) 118 | 119 | # License 120 | 121 | [MIT](https://oss.ninja/mit/mjanssen/) 122 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aural", 3 | "version": "0.4.2", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/acorn": { 8 | "version": "4.0.3", 9 | "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.3.tgz", 10 | "integrity": "sha512-gou/kWQkGPMZjdCKNZGDpqxLm9+ErG/pFZKPX4tvCjr0Xf4FCYYX3nAsu7aDVKJV3KUe27+mvqqyWT/9VZoM/A==", 11 | "dev": true, 12 | "requires": { 13 | "@types/estree": "0.0.38" 14 | } 15 | }, 16 | "@types/estree": { 17 | "version": "0.0.38", 18 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.38.tgz", 19 | "integrity": "sha512-F/v7t1LwS4vnXuPooJQGBRKRGIoxWUTmA4VHfqjOccFsNDThD5bfUNpITive6s352O7o384wcpEaDV8rHCehDA==", 20 | "dev": true 21 | }, 22 | "acorn": { 23 | "version": "5.5.3", 24 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", 25 | "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", 26 | "dev": true 27 | }, 28 | "acorn-dynamic-import": { 29 | "version": "3.0.0", 30 | "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", 31 | "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", 32 | "dev": true, 33 | "requires": { 34 | "acorn": "5.5.3" 35 | } 36 | }, 37 | "ansi-regex": { 38 | "version": "2.1.1", 39 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 40 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 41 | "dev": true 42 | }, 43 | "arr-diff": { 44 | "version": "2.0.0", 45 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", 46 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", 47 | "dev": true, 48 | "requires": { 49 | "arr-flatten": "1.1.0" 50 | } 51 | }, 52 | "arr-flatten": { 53 | "version": "1.1.0", 54 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 55 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 56 | "dev": true 57 | }, 58 | "array-find-index": { 59 | "version": "1.0.2", 60 | "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", 61 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", 62 | "dev": true 63 | }, 64 | "array-unique": { 65 | "version": "0.2.1", 66 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 67 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", 68 | "dev": true 69 | }, 70 | "babel-code-frame": { 71 | "version": "6.26.0", 72 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 73 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 74 | "dev": true, 75 | "requires": { 76 | "chalk": "1.1.3", 77 | "esutils": "2.0.2", 78 | "js-tokens": "3.0.2" 79 | }, 80 | "dependencies": { 81 | "ansi-styles": { 82 | "version": "2.2.1", 83 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 84 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 85 | "dev": true 86 | }, 87 | "chalk": { 88 | "version": "1.1.3", 89 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 90 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 91 | "dev": true, 92 | "requires": { 93 | "ansi-styles": "2.2.1", 94 | "escape-string-regexp": "1.0.5", 95 | "has-ansi": "2.0.0", 96 | "strip-ansi": "3.0.1", 97 | "supports-color": "2.0.0" 98 | } 99 | }, 100 | "supports-color": { 101 | "version": "2.0.0", 102 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 103 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 104 | "dev": true 105 | } 106 | } 107 | }, 108 | "babel-core": { 109 | "version": "6.26.0", 110 | "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", 111 | "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", 112 | "dev": true, 113 | "requires": { 114 | "babel-code-frame": "6.26.0", 115 | "babel-generator": "6.26.1", 116 | "babel-helpers": "6.24.1", 117 | "babel-messages": "6.23.0", 118 | "babel-register": "6.26.0", 119 | "babel-runtime": "6.26.0", 120 | "babel-template": "6.26.0", 121 | "babel-traverse": "6.26.0", 122 | "babel-types": "6.26.0", 123 | "babylon": "6.18.0", 124 | "convert-source-map": "1.5.1", 125 | "debug": "2.6.9", 126 | "json5": "0.5.1", 127 | "lodash": "4.17.5", 128 | "minimatch": "3.0.4", 129 | "path-is-absolute": "1.0.1", 130 | "private": "0.1.8", 131 | "slash": "1.0.0", 132 | "source-map": "0.5.7" 133 | } 134 | }, 135 | "babel-generator": { 136 | "version": "6.26.1", 137 | "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", 138 | "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", 139 | "dev": true, 140 | "requires": { 141 | "babel-messages": "6.23.0", 142 | "babel-runtime": "6.26.0", 143 | "babel-types": "6.26.0", 144 | "detect-indent": "4.0.0", 145 | "jsesc": "1.3.0", 146 | "lodash": "4.17.5", 147 | "source-map": "0.5.7", 148 | "trim-right": "1.0.1" 149 | }, 150 | "dependencies": { 151 | "jsesc": { 152 | "version": "1.3.0", 153 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", 154 | "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", 155 | "dev": true 156 | } 157 | } 158 | }, 159 | "babel-helper-builder-binary-assignment-operator-visitor": { 160 | "version": "6.24.1", 161 | "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", 162 | "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", 163 | "dev": true, 164 | "requires": { 165 | "babel-helper-explode-assignable-expression": "6.24.1", 166 | "babel-runtime": "6.26.0", 167 | "babel-types": "6.26.0" 168 | } 169 | }, 170 | "babel-helper-call-delegate": { 171 | "version": "6.24.1", 172 | "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", 173 | "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", 174 | "dev": true, 175 | "requires": { 176 | "babel-helper-hoist-variables": "6.24.1", 177 | "babel-runtime": "6.26.0", 178 | "babel-traverse": "6.26.0", 179 | "babel-types": "6.26.0" 180 | } 181 | }, 182 | "babel-helper-define-map": { 183 | "version": "6.26.0", 184 | "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", 185 | "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", 186 | "dev": true, 187 | "requires": { 188 | "babel-helper-function-name": "6.24.1", 189 | "babel-runtime": "6.26.0", 190 | "babel-types": "6.26.0", 191 | "lodash": "4.17.5" 192 | } 193 | }, 194 | "babel-helper-explode-assignable-expression": { 195 | "version": "6.24.1", 196 | "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", 197 | "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", 198 | "dev": true, 199 | "requires": { 200 | "babel-runtime": "6.26.0", 201 | "babel-traverse": "6.26.0", 202 | "babel-types": "6.26.0" 203 | } 204 | }, 205 | "babel-helper-function-name": { 206 | "version": "6.24.1", 207 | "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", 208 | "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", 209 | "dev": true, 210 | "requires": { 211 | "babel-helper-get-function-arity": "6.24.1", 212 | "babel-runtime": "6.26.0", 213 | "babel-template": "6.26.0", 214 | "babel-traverse": "6.26.0", 215 | "babel-types": "6.26.0" 216 | } 217 | }, 218 | "babel-helper-get-function-arity": { 219 | "version": "6.24.1", 220 | "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", 221 | "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", 222 | "dev": true, 223 | "requires": { 224 | "babel-runtime": "6.26.0", 225 | "babel-types": "6.26.0" 226 | } 227 | }, 228 | "babel-helper-hoist-variables": { 229 | "version": "6.24.1", 230 | "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", 231 | "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", 232 | "dev": true, 233 | "requires": { 234 | "babel-runtime": "6.26.0", 235 | "babel-types": "6.26.0" 236 | } 237 | }, 238 | "babel-helper-optimise-call-expression": { 239 | "version": "6.24.1", 240 | "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", 241 | "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", 242 | "dev": true, 243 | "requires": { 244 | "babel-runtime": "6.26.0", 245 | "babel-types": "6.26.0" 246 | } 247 | }, 248 | "babel-helper-regex": { 249 | "version": "6.26.0", 250 | "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", 251 | "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", 252 | "dev": true, 253 | "requires": { 254 | "babel-runtime": "6.26.0", 255 | "babel-types": "6.26.0", 256 | "lodash": "4.17.5" 257 | } 258 | }, 259 | "babel-helper-remap-async-to-generator": { 260 | "version": "6.24.1", 261 | "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", 262 | "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", 263 | "dev": true, 264 | "requires": { 265 | "babel-helper-function-name": "6.24.1", 266 | "babel-runtime": "6.26.0", 267 | "babel-template": "6.26.0", 268 | "babel-traverse": "6.26.0", 269 | "babel-types": "6.26.0" 270 | } 271 | }, 272 | "babel-helper-replace-supers": { 273 | "version": "6.24.1", 274 | "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", 275 | "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", 276 | "dev": true, 277 | "requires": { 278 | "babel-helper-optimise-call-expression": "6.24.1", 279 | "babel-messages": "6.23.0", 280 | "babel-runtime": "6.26.0", 281 | "babel-template": "6.26.0", 282 | "babel-traverse": "6.26.0", 283 | "babel-types": "6.26.0" 284 | } 285 | }, 286 | "babel-helpers": { 287 | "version": "6.24.1", 288 | "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", 289 | "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", 290 | "dev": true, 291 | "requires": { 292 | "babel-runtime": "6.26.0", 293 | "babel-template": "6.26.0" 294 | } 295 | }, 296 | "babel-messages": { 297 | "version": "6.23.0", 298 | "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", 299 | "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", 300 | "dev": true, 301 | "requires": { 302 | "babel-runtime": "6.26.0" 303 | } 304 | }, 305 | "babel-plugin-check-es2015-constants": { 306 | "version": "6.22.0", 307 | "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", 308 | "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", 309 | "dev": true, 310 | "requires": { 311 | "babel-runtime": "6.26.0" 312 | } 313 | }, 314 | "babel-plugin-syntax-async-functions": { 315 | "version": "6.13.0", 316 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", 317 | "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", 318 | "dev": true 319 | }, 320 | "babel-plugin-syntax-class-properties": { 321 | "version": "6.13.0", 322 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", 323 | "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", 324 | "dev": true 325 | }, 326 | "babel-plugin-syntax-exponentiation-operator": { 327 | "version": "6.13.0", 328 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", 329 | "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", 330 | "dev": true 331 | }, 332 | "babel-plugin-syntax-trailing-function-commas": { 333 | "version": "6.22.0", 334 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", 335 | "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", 336 | "dev": true 337 | }, 338 | "babel-plugin-transform-async-to-generator": { 339 | "version": "6.24.1", 340 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", 341 | "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", 342 | "dev": true, 343 | "requires": { 344 | "babel-helper-remap-async-to-generator": "6.24.1", 345 | "babel-plugin-syntax-async-functions": "6.13.0", 346 | "babel-runtime": "6.26.0" 347 | } 348 | }, 349 | "babel-plugin-transform-class-properties": { 350 | "version": "6.24.1", 351 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", 352 | "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", 353 | "dev": true, 354 | "requires": { 355 | "babel-helper-function-name": "6.24.1", 356 | "babel-plugin-syntax-class-properties": "6.13.0", 357 | "babel-runtime": "6.26.0", 358 | "babel-template": "6.26.0" 359 | } 360 | }, 361 | "babel-plugin-transform-es2015-arrow-functions": { 362 | "version": "6.22.0", 363 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", 364 | "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", 365 | "dev": true, 366 | "requires": { 367 | "babel-runtime": "6.26.0" 368 | } 369 | }, 370 | "babel-plugin-transform-es2015-block-scoped-functions": { 371 | "version": "6.22.0", 372 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", 373 | "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", 374 | "dev": true, 375 | "requires": { 376 | "babel-runtime": "6.26.0" 377 | } 378 | }, 379 | "babel-plugin-transform-es2015-block-scoping": { 380 | "version": "6.26.0", 381 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", 382 | "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", 383 | "dev": true, 384 | "requires": { 385 | "babel-runtime": "6.26.0", 386 | "babel-template": "6.26.0", 387 | "babel-traverse": "6.26.0", 388 | "babel-types": "6.26.0", 389 | "lodash": "4.17.5" 390 | } 391 | }, 392 | "babel-plugin-transform-es2015-classes": { 393 | "version": "6.24.1", 394 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", 395 | "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", 396 | "dev": true, 397 | "requires": { 398 | "babel-helper-define-map": "6.26.0", 399 | "babel-helper-function-name": "6.24.1", 400 | "babel-helper-optimise-call-expression": "6.24.1", 401 | "babel-helper-replace-supers": "6.24.1", 402 | "babel-messages": "6.23.0", 403 | "babel-runtime": "6.26.0", 404 | "babel-template": "6.26.0", 405 | "babel-traverse": "6.26.0", 406 | "babel-types": "6.26.0" 407 | } 408 | }, 409 | "babel-plugin-transform-es2015-computed-properties": { 410 | "version": "6.24.1", 411 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", 412 | "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", 413 | "dev": true, 414 | "requires": { 415 | "babel-runtime": "6.26.0", 416 | "babel-template": "6.26.0" 417 | } 418 | }, 419 | "babel-plugin-transform-es2015-destructuring": { 420 | "version": "6.23.0", 421 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", 422 | "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", 423 | "dev": true, 424 | "requires": { 425 | "babel-runtime": "6.26.0" 426 | } 427 | }, 428 | "babel-plugin-transform-es2015-duplicate-keys": { 429 | "version": "6.24.1", 430 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", 431 | "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", 432 | "dev": true, 433 | "requires": { 434 | "babel-runtime": "6.26.0", 435 | "babel-types": "6.26.0" 436 | } 437 | }, 438 | "babel-plugin-transform-es2015-for-of": { 439 | "version": "6.23.0", 440 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", 441 | "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", 442 | "dev": true, 443 | "requires": { 444 | "babel-runtime": "6.26.0" 445 | } 446 | }, 447 | "babel-plugin-transform-es2015-function-name": { 448 | "version": "6.24.1", 449 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", 450 | "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", 451 | "dev": true, 452 | "requires": { 453 | "babel-helper-function-name": "6.24.1", 454 | "babel-runtime": "6.26.0", 455 | "babel-types": "6.26.0" 456 | } 457 | }, 458 | "babel-plugin-transform-es2015-literals": { 459 | "version": "6.22.0", 460 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", 461 | "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", 462 | "dev": true, 463 | "requires": { 464 | "babel-runtime": "6.26.0" 465 | } 466 | }, 467 | "babel-plugin-transform-es2015-modules-amd": { 468 | "version": "6.24.1", 469 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", 470 | "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", 471 | "dev": true, 472 | "requires": { 473 | "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", 474 | "babel-runtime": "6.26.0", 475 | "babel-template": "6.26.0" 476 | } 477 | }, 478 | "babel-plugin-transform-es2015-modules-commonjs": { 479 | "version": "6.26.0", 480 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", 481 | "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", 482 | "dev": true, 483 | "requires": { 484 | "babel-plugin-transform-strict-mode": "6.24.1", 485 | "babel-runtime": "6.26.0", 486 | "babel-template": "6.26.0", 487 | "babel-types": "6.26.0" 488 | } 489 | }, 490 | "babel-plugin-transform-es2015-modules-systemjs": { 491 | "version": "6.24.1", 492 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", 493 | "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", 494 | "dev": true, 495 | "requires": { 496 | "babel-helper-hoist-variables": "6.24.1", 497 | "babel-runtime": "6.26.0", 498 | "babel-template": "6.26.0" 499 | } 500 | }, 501 | "babel-plugin-transform-es2015-modules-umd": { 502 | "version": "6.24.1", 503 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", 504 | "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", 505 | "dev": true, 506 | "requires": { 507 | "babel-plugin-transform-es2015-modules-amd": "6.24.1", 508 | "babel-runtime": "6.26.0", 509 | "babel-template": "6.26.0" 510 | } 511 | }, 512 | "babel-plugin-transform-es2015-object-super": { 513 | "version": "6.24.1", 514 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", 515 | "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", 516 | "dev": true, 517 | "requires": { 518 | "babel-helper-replace-supers": "6.24.1", 519 | "babel-runtime": "6.26.0" 520 | } 521 | }, 522 | "babel-plugin-transform-es2015-parameters": { 523 | "version": "6.24.1", 524 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", 525 | "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", 526 | "dev": true, 527 | "requires": { 528 | "babel-helper-call-delegate": "6.24.1", 529 | "babel-helper-get-function-arity": "6.24.1", 530 | "babel-runtime": "6.26.0", 531 | "babel-template": "6.26.0", 532 | "babel-traverse": "6.26.0", 533 | "babel-types": "6.26.0" 534 | } 535 | }, 536 | "babel-plugin-transform-es2015-shorthand-properties": { 537 | "version": "6.24.1", 538 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", 539 | "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", 540 | "dev": true, 541 | "requires": { 542 | "babel-runtime": "6.26.0", 543 | "babel-types": "6.26.0" 544 | } 545 | }, 546 | "babel-plugin-transform-es2015-spread": { 547 | "version": "6.22.0", 548 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", 549 | "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", 550 | "dev": true, 551 | "requires": { 552 | "babel-runtime": "6.26.0" 553 | } 554 | }, 555 | "babel-plugin-transform-es2015-sticky-regex": { 556 | "version": "6.24.1", 557 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", 558 | "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", 559 | "dev": true, 560 | "requires": { 561 | "babel-helper-regex": "6.26.0", 562 | "babel-runtime": "6.26.0", 563 | "babel-types": "6.26.0" 564 | } 565 | }, 566 | "babel-plugin-transform-es2015-template-literals": { 567 | "version": "6.22.0", 568 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", 569 | "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", 570 | "dev": true, 571 | "requires": { 572 | "babel-runtime": "6.26.0" 573 | } 574 | }, 575 | "babel-plugin-transform-es2015-typeof-symbol": { 576 | "version": "6.23.0", 577 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", 578 | "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", 579 | "dev": true, 580 | "requires": { 581 | "babel-runtime": "6.26.0" 582 | } 583 | }, 584 | "babel-plugin-transform-es2015-unicode-regex": { 585 | "version": "6.24.1", 586 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", 587 | "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", 588 | "dev": true, 589 | "requires": { 590 | "babel-helper-regex": "6.26.0", 591 | "babel-runtime": "6.26.0", 592 | "regexpu-core": "2.0.0" 593 | }, 594 | "dependencies": { 595 | "regexpu-core": { 596 | "version": "2.0.0", 597 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", 598 | "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", 599 | "dev": true, 600 | "requires": { 601 | "regenerate": "1.3.3", 602 | "regjsgen": "0.2.0", 603 | "regjsparser": "0.1.5" 604 | } 605 | } 606 | } 607 | }, 608 | "babel-plugin-transform-exponentiation-operator": { 609 | "version": "6.24.1", 610 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", 611 | "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", 612 | "dev": true, 613 | "requires": { 614 | "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", 615 | "babel-plugin-syntax-exponentiation-operator": "6.13.0", 616 | "babel-runtime": "6.26.0" 617 | } 618 | }, 619 | "babel-plugin-transform-regenerator": { 620 | "version": "6.26.0", 621 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", 622 | "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", 623 | "dev": true, 624 | "requires": { 625 | "regenerator-transform": "0.10.1" 626 | } 627 | }, 628 | "babel-plugin-transform-strict-mode": { 629 | "version": "6.24.1", 630 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", 631 | "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", 632 | "dev": true, 633 | "requires": { 634 | "babel-runtime": "6.26.0", 635 | "babel-types": "6.26.0" 636 | } 637 | }, 638 | "babel-preset-env": { 639 | "version": "1.6.1", 640 | "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", 641 | "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", 642 | "dev": true, 643 | "requires": { 644 | "babel-plugin-check-es2015-constants": "6.22.0", 645 | "babel-plugin-syntax-trailing-function-commas": "6.22.0", 646 | "babel-plugin-transform-async-to-generator": "6.24.1", 647 | "babel-plugin-transform-es2015-arrow-functions": "6.22.0", 648 | "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", 649 | "babel-plugin-transform-es2015-block-scoping": "6.26.0", 650 | "babel-plugin-transform-es2015-classes": "6.24.1", 651 | "babel-plugin-transform-es2015-computed-properties": "6.24.1", 652 | "babel-plugin-transform-es2015-destructuring": "6.23.0", 653 | "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", 654 | "babel-plugin-transform-es2015-for-of": "6.23.0", 655 | "babel-plugin-transform-es2015-function-name": "6.24.1", 656 | "babel-plugin-transform-es2015-literals": "6.22.0", 657 | "babel-plugin-transform-es2015-modules-amd": "6.24.1", 658 | "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", 659 | "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", 660 | "babel-plugin-transform-es2015-modules-umd": "6.24.1", 661 | "babel-plugin-transform-es2015-object-super": "6.24.1", 662 | "babel-plugin-transform-es2015-parameters": "6.24.1", 663 | "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", 664 | "babel-plugin-transform-es2015-spread": "6.22.0", 665 | "babel-plugin-transform-es2015-sticky-regex": "6.24.1", 666 | "babel-plugin-transform-es2015-template-literals": "6.22.0", 667 | "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", 668 | "babel-plugin-transform-es2015-unicode-regex": "6.24.1", 669 | "babel-plugin-transform-exponentiation-operator": "6.24.1", 670 | "babel-plugin-transform-regenerator": "6.26.0", 671 | "browserslist": "2.11.3", 672 | "invariant": "2.2.4", 673 | "semver": "5.5.0" 674 | } 675 | }, 676 | "babel-register": { 677 | "version": "6.26.0", 678 | "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", 679 | "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", 680 | "dev": true, 681 | "requires": { 682 | "babel-core": "6.26.0", 683 | "babel-runtime": "6.26.0", 684 | "core-js": "2.5.4", 685 | "home-or-tmp": "2.0.0", 686 | "lodash": "4.17.5", 687 | "mkdirp": "0.5.1", 688 | "source-map-support": "0.4.18" 689 | } 690 | }, 691 | "babel-runtime": { 692 | "version": "6.26.0", 693 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 694 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 695 | "dev": true, 696 | "requires": { 697 | "core-js": "2.5.4", 698 | "regenerator-runtime": "0.11.1" 699 | } 700 | }, 701 | "babel-template": { 702 | "version": "6.26.0", 703 | "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", 704 | "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", 705 | "dev": true, 706 | "requires": { 707 | "babel-runtime": "6.26.0", 708 | "babel-traverse": "6.26.0", 709 | "babel-types": "6.26.0", 710 | "babylon": "6.18.0", 711 | "lodash": "4.17.5" 712 | } 713 | }, 714 | "babel-traverse": { 715 | "version": "6.26.0", 716 | "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", 717 | "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", 718 | "dev": true, 719 | "requires": { 720 | "babel-code-frame": "6.26.0", 721 | "babel-messages": "6.23.0", 722 | "babel-runtime": "6.26.0", 723 | "babel-types": "6.26.0", 724 | "babylon": "6.18.0", 725 | "debug": "2.6.9", 726 | "globals": "9.18.0", 727 | "invariant": "2.2.4", 728 | "lodash": "4.17.5" 729 | } 730 | }, 731 | "babel-types": { 732 | "version": "6.26.0", 733 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", 734 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", 735 | "dev": true, 736 | "requires": { 737 | "babel-runtime": "6.26.0", 738 | "esutils": "2.0.2", 739 | "lodash": "4.17.5", 740 | "to-fast-properties": "1.0.3" 741 | } 742 | }, 743 | "babylon": { 744 | "version": "6.18.0", 745 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", 746 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", 747 | "dev": true 748 | }, 749 | "balanced-match": { 750 | "version": "1.0.0", 751 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 752 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 753 | "dev": true 754 | }, 755 | "brace-expansion": { 756 | "version": "1.1.11", 757 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 758 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 759 | "dev": true, 760 | "requires": { 761 | "balanced-match": "1.0.0", 762 | "concat-map": "0.0.1" 763 | } 764 | }, 765 | "braces": { 766 | "version": "1.8.5", 767 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", 768 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", 769 | "dev": true, 770 | "requires": { 771 | "expand-range": "1.8.2", 772 | "preserve": "0.2.0", 773 | "repeat-element": "1.1.2" 774 | } 775 | }, 776 | "browserslist": { 777 | "version": "2.11.3", 778 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", 779 | "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", 780 | "dev": true, 781 | "requires": { 782 | "caniuse-lite": "1.0.30000821", 783 | "electron-to-chromium": "1.3.41" 784 | } 785 | }, 786 | "camelcase-keys": { 787 | "version": "2.1.0", 788 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", 789 | "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", 790 | "dev": true, 791 | "requires": { 792 | "camelcase": "2.1.1", 793 | "map-obj": "1.0.1" 794 | }, 795 | "dependencies": { 796 | "camelcase": { 797 | "version": "2.1.1", 798 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", 799 | "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", 800 | "dev": true 801 | } 802 | } 803 | }, 804 | "caniuse-lite": { 805 | "version": "1.0.30000821", 806 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000821.tgz", 807 | "integrity": "sha512-qyYay02wr/5k7PO86W+LKFaEUZfWIvT65PaXuPP16jkSpgZGIsSstHKiYAPVLjTj98j2WnWwZg8CjXPx7UIPYg==", 808 | "dev": true 809 | }, 810 | "commander": { 811 | "version": "2.13.0", 812 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", 813 | "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", 814 | "dev": true 815 | }, 816 | "concat-map": { 817 | "version": "0.0.1", 818 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 819 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 820 | "dev": true 821 | }, 822 | "convert-source-map": { 823 | "version": "1.5.1", 824 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", 825 | "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", 826 | "dev": true 827 | }, 828 | "core-js": { 829 | "version": "2.5.4", 830 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.4.tgz", 831 | "integrity": "sha1-8si/GB8qgLkvNgEhQpzmOi8K6uA=", 832 | "dev": true 833 | }, 834 | "currently-unhandled": { 835 | "version": "0.4.1", 836 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", 837 | "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", 838 | "dev": true, 839 | "requires": { 840 | "array-find-index": "1.0.2" 841 | } 842 | }, 843 | "date-time": { 844 | "version": "2.1.0", 845 | "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", 846 | "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", 847 | "dev": true, 848 | "requires": { 849 | "time-zone": "1.0.0" 850 | } 851 | }, 852 | "debug": { 853 | "version": "2.6.9", 854 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 855 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 856 | "dev": true, 857 | "requires": { 858 | "ms": "2.0.0" 859 | } 860 | }, 861 | "decamelize": { 862 | "version": "1.2.0", 863 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 864 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 865 | "dev": true 866 | }, 867 | "detect-indent": { 868 | "version": "4.0.0", 869 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", 870 | "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", 871 | "dev": true, 872 | "requires": { 873 | "repeating": "2.0.1" 874 | } 875 | }, 876 | "duplexer": { 877 | "version": "0.1.1", 878 | "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", 879 | "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", 880 | "dev": true 881 | }, 882 | "electron-to-chromium": { 883 | "version": "1.3.41", 884 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.41.tgz", 885 | "integrity": "sha1-fjNkPgDNhe39F+BBlPbQDnNzcjU=", 886 | "dev": true 887 | }, 888 | "error-ex": { 889 | "version": "1.3.1", 890 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", 891 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", 892 | "dev": true, 893 | "requires": { 894 | "is-arrayish": "0.2.1" 895 | } 896 | }, 897 | "escape-string-regexp": { 898 | "version": "1.0.5", 899 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 900 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 901 | "dev": true 902 | }, 903 | "estree-walker": { 904 | "version": "0.3.1", 905 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.3.1.tgz", 906 | "integrity": "sha1-5rGlHPcpJSTnI3wxLl/mZgwc4ao=", 907 | "dev": true 908 | }, 909 | "esutils": { 910 | "version": "2.0.2", 911 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 912 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 913 | "dev": true 914 | }, 915 | "expand-brackets": { 916 | "version": "0.1.5", 917 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", 918 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", 919 | "dev": true, 920 | "requires": { 921 | "is-posix-bracket": "0.1.1" 922 | } 923 | }, 924 | "expand-range": { 925 | "version": "1.8.2", 926 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 927 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", 928 | "dev": true, 929 | "requires": { 930 | "fill-range": "2.2.3" 931 | } 932 | }, 933 | "extglob": { 934 | "version": "0.3.2", 935 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", 936 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", 937 | "dev": true, 938 | "requires": { 939 | "is-extglob": "1.0.0" 940 | } 941 | }, 942 | "filename-regex": { 943 | "version": "2.0.1", 944 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", 945 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", 946 | "dev": true 947 | }, 948 | "fill-range": { 949 | "version": "2.2.3", 950 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", 951 | "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", 952 | "dev": true, 953 | "requires": { 954 | "is-number": "2.1.0", 955 | "isobject": "2.1.0", 956 | "randomatic": "1.1.7", 957 | "repeat-element": "1.1.2", 958 | "repeat-string": "1.6.1" 959 | } 960 | }, 961 | "find-up": { 962 | "version": "1.1.2", 963 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", 964 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", 965 | "dev": true, 966 | "requires": { 967 | "path-exists": "2.1.0", 968 | "pinkie-promise": "2.0.1" 969 | } 970 | }, 971 | "for-in": { 972 | "version": "1.0.2", 973 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 974 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 975 | "dev": true 976 | }, 977 | "for-own": { 978 | "version": "0.1.5", 979 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", 980 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", 981 | "dev": true, 982 | "requires": { 983 | "for-in": "1.0.2" 984 | } 985 | }, 986 | "get-stdin": { 987 | "version": "4.0.1", 988 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", 989 | "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", 990 | "dev": true 991 | }, 992 | "glob-base": { 993 | "version": "0.3.0", 994 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", 995 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", 996 | "dev": true, 997 | "requires": { 998 | "glob-parent": "2.0.0", 999 | "is-glob": "2.0.1" 1000 | } 1001 | }, 1002 | "glob-parent": { 1003 | "version": "2.0.0", 1004 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 1005 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", 1006 | "dev": true, 1007 | "requires": { 1008 | "is-glob": "2.0.1" 1009 | } 1010 | }, 1011 | "globals": { 1012 | "version": "9.18.0", 1013 | "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 1014 | "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", 1015 | "dev": true 1016 | }, 1017 | "graceful-fs": { 1018 | "version": "4.1.11", 1019 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 1020 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 1021 | "dev": true 1022 | }, 1023 | "gzip-size": { 1024 | "version": "4.1.0", 1025 | "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz", 1026 | "integrity": "sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=", 1027 | "dev": true, 1028 | "requires": { 1029 | "duplexer": "0.1.1", 1030 | "pify": "3.0.0" 1031 | } 1032 | }, 1033 | "gzip-size-cli": { 1034 | "version": "2.1.0", 1035 | "resolved": "https://registry.npmjs.org/gzip-size-cli/-/gzip-size-cli-2.1.0.tgz", 1036 | "integrity": "sha512-2aFj16SGdAD5FTTqJe4Wdzs5d05MnHYLr5lwmxdFjiWzJWhUI+L48beS0Vmlg6s9Kqe+bfQ42WskPZdzTwPH4w==", 1037 | "dev": true, 1038 | "requires": { 1039 | "gzip-size": "4.1.0", 1040 | "meow": "3.7.0", 1041 | "pretty-bytes": "4.0.2" 1042 | } 1043 | }, 1044 | "has-ansi": { 1045 | "version": "2.0.0", 1046 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 1047 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 1048 | "dev": true, 1049 | "requires": { 1050 | "ansi-regex": "2.1.1" 1051 | } 1052 | }, 1053 | "home-or-tmp": { 1054 | "version": "2.0.0", 1055 | "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", 1056 | "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", 1057 | "dev": true, 1058 | "requires": { 1059 | "os-homedir": "1.0.2", 1060 | "os-tmpdir": "1.0.2" 1061 | } 1062 | }, 1063 | "hosted-git-info": { 1064 | "version": "2.6.0", 1065 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", 1066 | "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", 1067 | "dev": true 1068 | }, 1069 | "indent-string": { 1070 | "version": "2.1.0", 1071 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", 1072 | "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", 1073 | "dev": true, 1074 | "requires": { 1075 | "repeating": "2.0.1" 1076 | } 1077 | }, 1078 | "invariant": { 1079 | "version": "2.2.4", 1080 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", 1081 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", 1082 | "dev": true, 1083 | "requires": { 1084 | "loose-envify": "1.3.1" 1085 | } 1086 | }, 1087 | "irregular-plurals": { 1088 | "version": "1.4.0", 1089 | "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", 1090 | "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", 1091 | "dev": true 1092 | }, 1093 | "is-arrayish": { 1094 | "version": "0.2.1", 1095 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1096 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1097 | "dev": true 1098 | }, 1099 | "is-buffer": { 1100 | "version": "1.1.6", 1101 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1102 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 1103 | "dev": true 1104 | }, 1105 | "is-builtin-module": { 1106 | "version": "1.0.0", 1107 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", 1108 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", 1109 | "dev": true, 1110 | "requires": { 1111 | "builtin-modules": "1.1.1" 1112 | }, 1113 | "dependencies": { 1114 | "builtin-modules": { 1115 | "version": "1.1.1", 1116 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 1117 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 1118 | "dev": true 1119 | } 1120 | } 1121 | }, 1122 | "is-dotfile": { 1123 | "version": "1.0.3", 1124 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", 1125 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", 1126 | "dev": true 1127 | }, 1128 | "is-equal-shallow": { 1129 | "version": "0.1.3", 1130 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 1131 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", 1132 | "dev": true, 1133 | "requires": { 1134 | "is-primitive": "2.0.0" 1135 | } 1136 | }, 1137 | "is-extendable": { 1138 | "version": "0.1.1", 1139 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 1140 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 1141 | "dev": true 1142 | }, 1143 | "is-extglob": { 1144 | "version": "1.0.0", 1145 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 1146 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 1147 | "dev": true 1148 | }, 1149 | "is-finite": { 1150 | "version": "1.0.2", 1151 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", 1152 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", 1153 | "dev": true, 1154 | "requires": { 1155 | "number-is-nan": "1.0.1" 1156 | } 1157 | }, 1158 | "is-glob": { 1159 | "version": "2.0.1", 1160 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 1161 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 1162 | "dev": true, 1163 | "requires": { 1164 | "is-extglob": "1.0.0" 1165 | } 1166 | }, 1167 | "is-number": { 1168 | "version": "2.1.0", 1169 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 1170 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", 1171 | "dev": true, 1172 | "requires": { 1173 | "kind-of": "3.2.2" 1174 | } 1175 | }, 1176 | "is-posix-bracket": { 1177 | "version": "0.1.1", 1178 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", 1179 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", 1180 | "dev": true 1181 | }, 1182 | "is-primitive": { 1183 | "version": "2.0.0", 1184 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", 1185 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", 1186 | "dev": true 1187 | }, 1188 | "is-reference": { 1189 | "version": "1.1.0", 1190 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.0.tgz", 1191 | "integrity": "sha512-h37O/IX4efe56o9k41II1ECMqKwtqHa7/12dLDEzJIFux2x15an4WCDb0/eKdmUgRpLJ3bR0DrzDc7vOrVgRDw==", 1192 | "dev": true, 1193 | "requires": { 1194 | "@types/estree": "0.0.38" 1195 | } 1196 | }, 1197 | "is-utf8": { 1198 | "version": "0.2.1", 1199 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 1200 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 1201 | "dev": true 1202 | }, 1203 | "isarray": { 1204 | "version": "1.0.0", 1205 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1206 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1207 | "dev": true 1208 | }, 1209 | "isobject": { 1210 | "version": "2.1.0", 1211 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 1212 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 1213 | "dev": true, 1214 | "requires": { 1215 | "isarray": "1.0.0" 1216 | } 1217 | }, 1218 | "js-tokens": { 1219 | "version": "3.0.2", 1220 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 1221 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 1222 | "dev": true 1223 | }, 1224 | "jsesc": { 1225 | "version": "0.5.0", 1226 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 1227 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", 1228 | "dev": true 1229 | }, 1230 | "json5": { 1231 | "version": "0.5.1", 1232 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", 1233 | "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", 1234 | "dev": true 1235 | }, 1236 | "kind-of": { 1237 | "version": "3.2.2", 1238 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1239 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1240 | "dev": true, 1241 | "requires": { 1242 | "is-buffer": "1.1.6" 1243 | } 1244 | }, 1245 | "load-json-file": { 1246 | "version": "1.1.0", 1247 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", 1248 | "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", 1249 | "dev": true, 1250 | "requires": { 1251 | "graceful-fs": "4.1.11", 1252 | "parse-json": "2.2.0", 1253 | "pify": "2.3.0", 1254 | "pinkie-promise": "2.0.1", 1255 | "strip-bom": "2.0.0" 1256 | }, 1257 | "dependencies": { 1258 | "pify": { 1259 | "version": "2.3.0", 1260 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1261 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 1262 | "dev": true 1263 | } 1264 | } 1265 | }, 1266 | "locate-character": { 1267 | "version": "2.0.5", 1268 | "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-2.0.5.tgz", 1269 | "integrity": "sha512-n2GmejDXtOPBAZdIiEFy5dJ5N38xBCXLNOtw2WpB9kGh6pnrEuKlwYI+Tkpofc4wDtVXHtoAOJaMRlYG/oYaxg==", 1270 | "dev": true 1271 | }, 1272 | "lodash": { 1273 | "version": "4.17.5", 1274 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", 1275 | "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", 1276 | "dev": true 1277 | }, 1278 | "loose-envify": { 1279 | "version": "1.3.1", 1280 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", 1281 | "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", 1282 | "dev": true, 1283 | "requires": { 1284 | "js-tokens": "3.0.2" 1285 | } 1286 | }, 1287 | "loud-rejection": { 1288 | "version": "1.6.0", 1289 | "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", 1290 | "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", 1291 | "dev": true, 1292 | "requires": { 1293 | "currently-unhandled": "0.4.1", 1294 | "signal-exit": "3.0.2" 1295 | } 1296 | }, 1297 | "map-obj": { 1298 | "version": "1.0.1", 1299 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", 1300 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", 1301 | "dev": true 1302 | }, 1303 | "meow": { 1304 | "version": "3.7.0", 1305 | "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", 1306 | "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", 1307 | "dev": true, 1308 | "requires": { 1309 | "camelcase-keys": "2.1.0", 1310 | "decamelize": "1.2.0", 1311 | "loud-rejection": "1.6.0", 1312 | "map-obj": "1.0.1", 1313 | "minimist": "1.2.0", 1314 | "normalize-package-data": "2.4.0", 1315 | "object-assign": "4.1.1", 1316 | "read-pkg-up": "1.0.1", 1317 | "redent": "1.0.0", 1318 | "trim-newlines": "1.0.0" 1319 | } 1320 | }, 1321 | "micromatch": { 1322 | "version": "2.3.11", 1323 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", 1324 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", 1325 | "dev": true, 1326 | "requires": { 1327 | "arr-diff": "2.0.0", 1328 | "array-unique": "0.2.1", 1329 | "braces": "1.8.5", 1330 | "expand-brackets": "0.1.5", 1331 | "extglob": "0.3.2", 1332 | "filename-regex": "2.0.1", 1333 | "is-extglob": "1.0.0", 1334 | "is-glob": "2.0.1", 1335 | "kind-of": "3.2.2", 1336 | "normalize-path": "2.1.1", 1337 | "object.omit": "2.0.1", 1338 | "parse-glob": "3.0.4", 1339 | "regex-cache": "0.4.4" 1340 | } 1341 | }, 1342 | "minimatch": { 1343 | "version": "3.0.4", 1344 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1345 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1346 | "dev": true, 1347 | "requires": { 1348 | "brace-expansion": "1.1.11" 1349 | } 1350 | }, 1351 | "minimist": { 1352 | "version": "1.2.0", 1353 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 1354 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 1355 | "dev": true 1356 | }, 1357 | "mkdirp": { 1358 | "version": "0.5.1", 1359 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1360 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1361 | "dev": true, 1362 | "requires": { 1363 | "minimist": "0.0.8" 1364 | }, 1365 | "dependencies": { 1366 | "minimist": { 1367 | "version": "0.0.8", 1368 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1369 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1370 | "dev": true 1371 | } 1372 | } 1373 | }, 1374 | "ms": { 1375 | "version": "2.0.0", 1376 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1377 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1378 | "dev": true 1379 | }, 1380 | "normalize-package-data": { 1381 | "version": "2.4.0", 1382 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", 1383 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", 1384 | "dev": true, 1385 | "requires": { 1386 | "hosted-git-info": "2.6.0", 1387 | "is-builtin-module": "1.0.0", 1388 | "semver": "5.5.0", 1389 | "validate-npm-package-license": "3.0.3" 1390 | } 1391 | }, 1392 | "normalize-path": { 1393 | "version": "2.1.1", 1394 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 1395 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 1396 | "dev": true, 1397 | "requires": { 1398 | "remove-trailing-separator": "1.1.0" 1399 | } 1400 | }, 1401 | "number-is-nan": { 1402 | "version": "1.0.1", 1403 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 1404 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 1405 | "dev": true 1406 | }, 1407 | "object-assign": { 1408 | "version": "4.1.1", 1409 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1410 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1411 | "dev": true 1412 | }, 1413 | "object.omit": { 1414 | "version": "2.0.1", 1415 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", 1416 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", 1417 | "dev": true, 1418 | "requires": { 1419 | "for-own": "0.1.5", 1420 | "is-extendable": "0.1.1" 1421 | } 1422 | }, 1423 | "os-homedir": { 1424 | "version": "1.0.2", 1425 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 1426 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 1427 | "dev": true 1428 | }, 1429 | "os-tmpdir": { 1430 | "version": "1.0.2", 1431 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1432 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 1433 | "dev": true 1434 | }, 1435 | "parse-glob": { 1436 | "version": "3.0.4", 1437 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 1438 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", 1439 | "dev": true, 1440 | "requires": { 1441 | "glob-base": "0.3.0", 1442 | "is-dotfile": "1.0.3", 1443 | "is-extglob": "1.0.0", 1444 | "is-glob": "2.0.1" 1445 | } 1446 | }, 1447 | "parse-json": { 1448 | "version": "2.2.0", 1449 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 1450 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 1451 | "dev": true, 1452 | "requires": { 1453 | "error-ex": "1.3.1" 1454 | } 1455 | }, 1456 | "parse-ms": { 1457 | "version": "1.0.1", 1458 | "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", 1459 | "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", 1460 | "dev": true 1461 | }, 1462 | "path-exists": { 1463 | "version": "2.1.0", 1464 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", 1465 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", 1466 | "dev": true, 1467 | "requires": { 1468 | "pinkie-promise": "2.0.1" 1469 | } 1470 | }, 1471 | "path-is-absolute": { 1472 | "version": "1.0.1", 1473 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1474 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1475 | "dev": true 1476 | }, 1477 | "path-type": { 1478 | "version": "1.1.0", 1479 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", 1480 | "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", 1481 | "dev": true, 1482 | "requires": { 1483 | "graceful-fs": "4.1.11", 1484 | "pify": "2.3.0", 1485 | "pinkie-promise": "2.0.1" 1486 | }, 1487 | "dependencies": { 1488 | "pify": { 1489 | "version": "2.3.0", 1490 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1491 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 1492 | "dev": true 1493 | } 1494 | } 1495 | }, 1496 | "pify": { 1497 | "version": "3.0.0", 1498 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 1499 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 1500 | "dev": true 1501 | }, 1502 | "pinkie": { 1503 | "version": "2.0.4", 1504 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1505 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 1506 | "dev": true 1507 | }, 1508 | "pinkie-promise": { 1509 | "version": "2.0.1", 1510 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1511 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 1512 | "dev": true, 1513 | "requires": { 1514 | "pinkie": "2.0.4" 1515 | } 1516 | }, 1517 | "plur": { 1518 | "version": "2.1.2", 1519 | "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", 1520 | "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", 1521 | "dev": true, 1522 | "requires": { 1523 | "irregular-plurals": "1.4.0" 1524 | } 1525 | }, 1526 | "preserve": { 1527 | "version": "0.2.0", 1528 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 1529 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", 1530 | "dev": true 1531 | }, 1532 | "pretty-bytes": { 1533 | "version": "4.0.2", 1534 | "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", 1535 | "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", 1536 | "dev": true 1537 | }, 1538 | "pretty-ms": { 1539 | "version": "3.1.0", 1540 | "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-3.1.0.tgz", 1541 | "integrity": "sha1-6crJx2v27lL+lC3ZxsQhMVOxKIE=", 1542 | "dev": true, 1543 | "requires": { 1544 | "parse-ms": "1.0.1", 1545 | "plur": "2.1.2" 1546 | } 1547 | }, 1548 | "private": { 1549 | "version": "0.1.8", 1550 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", 1551 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", 1552 | "dev": true 1553 | }, 1554 | "randomatic": { 1555 | "version": "1.1.7", 1556 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", 1557 | "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", 1558 | "dev": true, 1559 | "requires": { 1560 | "is-number": "3.0.0", 1561 | "kind-of": "4.0.0" 1562 | }, 1563 | "dependencies": { 1564 | "is-number": { 1565 | "version": "3.0.0", 1566 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 1567 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 1568 | "dev": true, 1569 | "requires": { 1570 | "kind-of": "3.2.2" 1571 | }, 1572 | "dependencies": { 1573 | "kind-of": { 1574 | "version": "3.2.2", 1575 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1576 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1577 | "dev": true, 1578 | "requires": { 1579 | "is-buffer": "1.1.6" 1580 | } 1581 | } 1582 | } 1583 | }, 1584 | "kind-of": { 1585 | "version": "4.0.0", 1586 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 1587 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 1588 | "dev": true, 1589 | "requires": { 1590 | "is-buffer": "1.1.6" 1591 | } 1592 | } 1593 | } 1594 | }, 1595 | "read-pkg": { 1596 | "version": "1.1.0", 1597 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", 1598 | "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", 1599 | "dev": true, 1600 | "requires": { 1601 | "load-json-file": "1.1.0", 1602 | "normalize-package-data": "2.4.0", 1603 | "path-type": "1.1.0" 1604 | } 1605 | }, 1606 | "read-pkg-up": { 1607 | "version": "1.0.1", 1608 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", 1609 | "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", 1610 | "dev": true, 1611 | "requires": { 1612 | "find-up": "1.1.2", 1613 | "read-pkg": "1.1.0" 1614 | } 1615 | }, 1616 | "redent": { 1617 | "version": "1.0.0", 1618 | "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", 1619 | "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", 1620 | "dev": true, 1621 | "requires": { 1622 | "indent-string": "2.1.0", 1623 | "strip-indent": "1.0.1" 1624 | } 1625 | }, 1626 | "regenerate": { 1627 | "version": "1.3.3", 1628 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", 1629 | "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", 1630 | "dev": true 1631 | }, 1632 | "regenerator-runtime": { 1633 | "version": "0.11.1", 1634 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 1635 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", 1636 | "dev": true 1637 | }, 1638 | "regenerator-transform": { 1639 | "version": "0.10.1", 1640 | "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", 1641 | "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", 1642 | "dev": true, 1643 | "requires": { 1644 | "babel-runtime": "6.26.0", 1645 | "babel-types": "6.26.0", 1646 | "private": "0.1.8" 1647 | } 1648 | }, 1649 | "regex-cache": { 1650 | "version": "0.4.4", 1651 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", 1652 | "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", 1653 | "dev": true, 1654 | "requires": { 1655 | "is-equal-shallow": "0.1.3" 1656 | } 1657 | }, 1658 | "regjsgen": { 1659 | "version": "0.2.0", 1660 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", 1661 | "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", 1662 | "dev": true 1663 | }, 1664 | "regjsparser": { 1665 | "version": "0.1.5", 1666 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", 1667 | "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", 1668 | "dev": true, 1669 | "requires": { 1670 | "jsesc": "0.5.0" 1671 | } 1672 | }, 1673 | "remove-trailing-separator": { 1674 | "version": "1.1.0", 1675 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 1676 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 1677 | "dev": true 1678 | }, 1679 | "repeat-element": { 1680 | "version": "1.1.2", 1681 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 1682 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", 1683 | "dev": true 1684 | }, 1685 | "repeat-string": { 1686 | "version": "1.6.1", 1687 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 1688 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 1689 | "dev": true 1690 | }, 1691 | "repeating": { 1692 | "version": "2.0.1", 1693 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", 1694 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", 1695 | "dev": true, 1696 | "requires": { 1697 | "is-finite": "1.0.2" 1698 | } 1699 | }, 1700 | "require-relative": { 1701 | "version": "0.8.7", 1702 | "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", 1703 | "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", 1704 | "dev": true 1705 | }, 1706 | "rollup": { 1707 | "version": "0.57.1", 1708 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.57.1.tgz", 1709 | "integrity": "sha512-I18GBqP0qJoJC1K1osYjreqA8VAKovxuI3I81RSk0Dmr4TgloI0tAULjZaox8OsJ+n7XRrhH6i0G2By/pj1LCA==", 1710 | "dev": true, 1711 | "requires": { 1712 | "@types/acorn": "4.0.3", 1713 | "acorn": "5.5.3", 1714 | "acorn-dynamic-import": "3.0.0", 1715 | "date-time": "2.1.0", 1716 | "is-reference": "1.1.0", 1717 | "locate-character": "2.0.5", 1718 | "pretty-ms": "3.1.0", 1719 | "require-relative": "0.8.7", 1720 | "rollup-pluginutils": "2.0.1", 1721 | "signal-exit": "3.0.2", 1722 | "sourcemap-codec": "1.4.1" 1723 | } 1724 | }, 1725 | "rollup-plugin-babel": { 1726 | "version": "3.0.3", 1727 | "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-3.0.3.tgz", 1728 | "integrity": "sha512-5kzM/Rr4jQSRPLc2eN5NuD+CI/6AAy7S1O18Ogu4U3nq1Q42VJn0C9EMtqnvxtfwf1XrezOtdA9ro1VZI5B0mA==", 1729 | "dev": true, 1730 | "requires": { 1731 | "rollup-pluginutils": "1.5.2" 1732 | }, 1733 | "dependencies": { 1734 | "estree-walker": { 1735 | "version": "0.2.1", 1736 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz", 1737 | "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=", 1738 | "dev": true 1739 | }, 1740 | "rollup-pluginutils": { 1741 | "version": "1.5.2", 1742 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz", 1743 | "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=", 1744 | "dev": true, 1745 | "requires": { 1746 | "estree-walker": "0.2.1", 1747 | "minimatch": "3.0.4" 1748 | } 1749 | } 1750 | } 1751 | }, 1752 | "rollup-plugin-uglify": { 1753 | "version": "3.0.0", 1754 | "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-3.0.0.tgz", 1755 | "integrity": "sha512-dehLu9eRRoV4l09aC+ySntRw1OAfoyKdbk8Nelblj03tHoynkSybqyEpgavemi1LBOH6S1vzI58/mpxkZIe1iQ==", 1756 | "dev": true, 1757 | "requires": { 1758 | "uglify-es": "3.3.9" 1759 | } 1760 | }, 1761 | "rollup-pluginutils": { 1762 | "version": "2.0.1", 1763 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz", 1764 | "integrity": "sha1-fslbNXP2VDpGpkYb2afFRFJdD8A=", 1765 | "dev": true, 1766 | "requires": { 1767 | "estree-walker": "0.3.1", 1768 | "micromatch": "2.3.11" 1769 | } 1770 | }, 1771 | "semver": { 1772 | "version": "5.5.0", 1773 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", 1774 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", 1775 | "dev": true 1776 | }, 1777 | "signal-exit": { 1778 | "version": "3.0.2", 1779 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 1780 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 1781 | "dev": true 1782 | }, 1783 | "slash": { 1784 | "version": "1.0.0", 1785 | "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", 1786 | "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", 1787 | "dev": true 1788 | }, 1789 | "source-map": { 1790 | "version": "0.5.7", 1791 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1792 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 1793 | "dev": true 1794 | }, 1795 | "source-map-support": { 1796 | "version": "0.4.18", 1797 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 1798 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", 1799 | "dev": true, 1800 | "requires": { 1801 | "source-map": "0.5.7" 1802 | } 1803 | }, 1804 | "sourcemap-codec": { 1805 | "version": "1.4.1", 1806 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.1.tgz", 1807 | "integrity": "sha512-hX1eNBNuilj8yfFnECh0DzLgwKpBLMIvmhgEhixXNui8lMLBInTI8Kyxt++RwJnMNu7cAUo635L2+N1TxMJCzA==", 1808 | "dev": true 1809 | }, 1810 | "spdx-correct": { 1811 | "version": "3.0.0", 1812 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", 1813 | "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", 1814 | "dev": true, 1815 | "requires": { 1816 | "spdx-expression-parse": "3.0.0", 1817 | "spdx-license-ids": "3.0.0" 1818 | } 1819 | }, 1820 | "spdx-exceptions": { 1821 | "version": "2.1.0", 1822 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", 1823 | "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", 1824 | "dev": true 1825 | }, 1826 | "spdx-expression-parse": { 1827 | "version": "3.0.0", 1828 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", 1829 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", 1830 | "dev": true, 1831 | "requires": { 1832 | "spdx-exceptions": "2.1.0", 1833 | "spdx-license-ids": "3.0.0" 1834 | } 1835 | }, 1836 | "spdx-license-ids": { 1837 | "version": "3.0.0", 1838 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", 1839 | "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", 1840 | "dev": true 1841 | }, 1842 | "strip-ansi": { 1843 | "version": "3.0.1", 1844 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1845 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1846 | "dev": true, 1847 | "requires": { 1848 | "ansi-regex": "2.1.1" 1849 | } 1850 | }, 1851 | "strip-bom": { 1852 | "version": "2.0.0", 1853 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 1854 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 1855 | "dev": true, 1856 | "requires": { 1857 | "is-utf8": "0.2.1" 1858 | } 1859 | }, 1860 | "strip-indent": { 1861 | "version": "1.0.1", 1862 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", 1863 | "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", 1864 | "dev": true, 1865 | "requires": { 1866 | "get-stdin": "4.0.1" 1867 | } 1868 | }, 1869 | "time-zone": { 1870 | "version": "1.0.0", 1871 | "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", 1872 | "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", 1873 | "dev": true 1874 | }, 1875 | "to-fast-properties": { 1876 | "version": "1.0.3", 1877 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 1878 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", 1879 | "dev": true 1880 | }, 1881 | "trim-newlines": { 1882 | "version": "1.0.0", 1883 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", 1884 | "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", 1885 | "dev": true 1886 | }, 1887 | "trim-right": { 1888 | "version": "1.0.1", 1889 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", 1890 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", 1891 | "dev": true 1892 | }, 1893 | "uglify-es": { 1894 | "version": "3.3.9", 1895 | "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", 1896 | "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", 1897 | "dev": true, 1898 | "requires": { 1899 | "commander": "2.13.0", 1900 | "source-map": "0.6.1" 1901 | }, 1902 | "dependencies": { 1903 | "source-map": { 1904 | "version": "0.6.1", 1905 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1906 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1907 | "dev": true 1908 | } 1909 | } 1910 | }, 1911 | "validate-npm-package-license": { 1912 | "version": "3.0.3", 1913 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", 1914 | "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", 1915 | "dev": true, 1916 | "requires": { 1917 | "spdx-correct": "3.0.0", 1918 | "spdx-expression-parse": "3.0.0" 1919 | } 1920 | } 1921 | } 1922 | } 1923 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aural", 3 | "version": "0.6.2", 4 | "description": "The zero-dependency audio manager for your Javascript projects.", 5 | "main": "./dist/index.js", 6 | "scripts": { 7 | "build": "rollup -i ./src/index.js -o ./dist/index.js -f cjs -c rollup.config.js && gzip-size ./dist/index.js", 8 | "watch": "rollup -w -i ./src/index.js -o ./dist/index.js -f cjs -c rollup.config.js && gzip-size ./dist/index.js" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "https://github.com/mjanssen/aural.git" 13 | }, 14 | "prettier": { 15 | "trailingComma": "es5", 16 | "singleQuote": true, 17 | "printWidth": 100 18 | }, 19 | "author": { 20 | "name": "Marnix Janssen", 21 | "email": "dev.marnix@gmail.com", 22 | "url": "https://github.com/mjanssen" 23 | }, 24 | "license": "MIT", 25 | "devDependencies": { 26 | "babel-core": "^6.26.0", 27 | "babel-plugin-transform-class-properties": "^6.24.1", 28 | "babel-preset-env": "^1.6.1", 29 | "gzip-size-cli": "^2.1.0", 30 | "rollup": "^0.57.1", 31 | "rollup-plugin-babel": "^3.0.3", 32 | "rollup-plugin-uglify": "^3.0.0" 33 | }, 34 | "dependencies": {} 35 | } 36 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import babel from 'rollup-plugin-babel'; 2 | import uglify from 'rollup-plugin-uglify'; 3 | 4 | const uglifySettings = { 5 | output: { comments: false }, 6 | compress: { 7 | negate_iife: false, 8 | unsafe_comps: true, 9 | properties: true, 10 | keep_fargs: false, 11 | pure_getters: true, 12 | collapse_vars: true, 13 | unsafe: true, 14 | warnings: false, 15 | sequences: true, 16 | dead_code: true, 17 | drop_debugger: true, 18 | comparisons: true, 19 | conditionals: true, 20 | evaluate: true, 21 | booleans: true, 22 | loops: true, 23 | unused: true, 24 | hoist_funs: true, 25 | if_return: true, 26 | join_vars: true, 27 | drop_console: true, 28 | pure_funcs: ['classCallCheck', 'invariant', 'warning'], 29 | }, 30 | warnings: true, 31 | ecma: 5, 32 | toplevel: 'cjs', 33 | mangle: { 34 | properties: { 35 | regex: /^_/, 36 | }, 37 | }, 38 | }; 39 | 40 | export default { 41 | input: './src/index.js', 42 | plugins: [ 43 | babel({ 44 | exclude: 'node_modules/**', 45 | }), 46 | uglify(uglifySettings), 47 | ], 48 | }; 49 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | const reducer = (accumulator, currentValue) => accumulator + currentValue; 2 | 3 | /** 4 | * The Aural class, wohoo 5 | */ 6 | class Aural { 7 | constructor() { 8 | const AudioContext = window.AudioContext || window.webkitAudioContext; 9 | this._context = new AudioContext(); 10 | this._sources = {}; 11 | 12 | /* 13 | * Mute all available sounds 14 | */ 15 | this.muteAll = function() { 16 | Object.keys(this._sources).forEach(key => this.setVolume(key, 0)); 17 | }.bind(this); 18 | 19 | /* 20 | * Unmute all available sounds 21 | */ 22 | this.unmuteAll = function(volume = 1) { 23 | Object.keys(this._sources).forEach(key => this.setVolume(key, volume)); 24 | }.bind(this); 25 | 26 | /** 27 | * Play audio file 28 | * @param {string} key 29 | */ 30 | this.play = function(key) { 31 | this._possiblyResume().then(() => { 32 | if (this._sources[key].started === false) { 33 | this._startAudio(key); 34 | } 35 | 36 | this._updateRate({ key, rate: this._sources[key].options.rate || 1 }, true); 37 | }); 38 | }.bind(this); 39 | 40 | /** 41 | * Pause audio file 42 | * @param {string} key 43 | */ 44 | this.pause = function(key) { 45 | this._updateRate({ key, rate: 0 }, false); 46 | }.bind(this); 47 | 48 | /** 49 | * Update the rate for audio file 50 | * @param {string} key 51 | * @param {int} rate 52 | */ 53 | this.setRate = function(key, rate) { 54 | this._updateRate({ key, rate }); 55 | }; 56 | } 57 | 58 | /** 59 | * Create the audio object with the loaded buffer 60 | * @param {string} key 61 | * @param {audioBuffer} buffer 62 | * @param {object} options 63 | */ 64 | _newBufferSource(key, buffer = false, options = {}) { 65 | if (buffer === false) { 66 | return null; 67 | } 68 | 69 | this._sources[key] = {}; 70 | 71 | const audioObject = this._sources[key]; 72 | 73 | audioObject.options = options; 74 | audioObject.isPlaying = false; 75 | audioObject.started = false; 76 | 77 | audioObject.audio = this._context.createBufferSource(); 78 | 79 | audioObject.audio.buffer = buffer; 80 | audioObject.audio.analyzer = { 81 | node: this._context.createAnalyser(), 82 | bufferLength: null, 83 | dataArray: null, 84 | }; 85 | 86 | audioObject.audio.loop = options.loop || 0; 87 | 88 | audioObject.audio.gainNode = this._context.createGain(); 89 | 90 | audioObject.audio.connect(audioObject.audio.analyzer.node); 91 | audioObject.audio.analyzer.node.connect(audioObject.audio.gainNode); 92 | audioObject.audio.gainNode.connect(this._context.destination); 93 | audioObject.audio.playbackRate.value = 0; 94 | 95 | audioObject.audio.analyzer.bufferLength = this._sources[ 96 | key 97 | ].audio.analyzer.node.frequencyBinCount; 98 | 99 | audioObject.audio.analyzer.dataArray = new Uint8Array(audioObject.audio.analyzer.bufferLength); 100 | 101 | const suspended = options.suspended || false; 102 | 103 | /** 104 | * If suspended is true, don't start the audio automatically. 105 | * This will probably become default for all browsers. 106 | * https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio 107 | */ 108 | if (suspended === false) { 109 | audioObject.started = true; 110 | audioObject.audio.start(0, options.startAt || 0); 111 | } 112 | 113 | audioObject.audio.gainNode.gain.value = options.volume || 1; 114 | 115 | if (options.autoPlay) { 116 | audioObject.isPlaying = true; 117 | audioObject.audio.playbackRate.value = options.rate || 1.0; 118 | } 119 | 120 | audioObject.getFrequency = () => this.getFrequency(key); 121 | audioObject.play = () => this.play(key); 122 | audioObject.pause = () => this.pause(key); 123 | audioObject.stop = () => this.stop(key); 124 | audioObject.mute = () => this.setVolume(key, 0); 125 | audioObject.unmute = (volume = 1) => this.setVolume(key, volume); 126 | audioObject.volume = (volume = 1) => this.setVolume(key, volume); 127 | audioObject.start = () => this.start(key); 128 | 129 | audioObject.setRate = rate => this._updateRate({ key, rate }, true); 130 | 131 | if (options.onLoad) { 132 | options.onLoad(audioObject); 133 | } 134 | 135 | return audioObject; 136 | } 137 | 138 | /** 139 | * Fetch the source file and parse the buffer, passing it to newBufferSource() 140 | * Resolve with promise because Safari can't 141 | * @param {string} source 142 | */ 143 | _getBuffer(source) { 144 | return fetch(source) 145 | .then(result => result.arrayBuffer()) 146 | .then( 147 | arrayBuffer => 148 | new Promise(resolve => { 149 | this._context.decodeAudioData(arrayBuffer, buffer => { 150 | resolve(buffer); 151 | }); 152 | }) 153 | ); 154 | } 155 | 156 | /** 157 | * Load the audio file and create the Aural object 158 | * @param {string} key 159 | * @param {string} source 160 | * @param {object} options 161 | */ 162 | load(key, source, options) { 163 | return this._getBuffer(source).then(buffer => this._newBufferSource(key, buffer, options)); 164 | } 165 | 166 | _startAudio = key => this._sources[key].audio.start(0, this._sources[key].options.startAt || 0); 167 | 168 | _possiblyResume = callback => { 169 | return new Promise(resolve => { 170 | if (this._context.state === 'suspended') { 171 | return resolve(this._context.resume()); 172 | } 173 | 174 | resolve(); 175 | }); 176 | }; 177 | 178 | /** 179 | * Start playing audio file by key 180 | * @param {string} key 181 | */ 182 | start = key => { 183 | if (this._sources[key].started === false) { 184 | this._possiblyResume().then(() => this._startAudio(key)); 185 | } 186 | 187 | this._updateRate({ key, rate: this._sources[key].options.rate || 1 }, true); 188 | this._sources[key].started = true; 189 | }; 190 | 191 | /** 192 | * Mute audio file by key 193 | * @param {string} key 194 | */ 195 | mute = key => { 196 | this.setVolume(key, 0); 197 | }; 198 | 199 | /** 200 | * Unmute audio file by key 201 | * @param {string} key 202 | * @param {int} volume 203 | */ 204 | unmute = (key, volume = 1) => { 205 | this.setVolume(key, volume); 206 | }; 207 | 208 | /** 209 | * Set volume of audio file by key 210 | * @param {string} key 211 | * @param {int} volume 212 | */ 213 | setVolume = (key, volume) => { 214 | this._sources[key].audio.gainNode.gain.value = volume; 215 | }; 216 | 217 | /** 218 | * Stop audio file 219 | * @param {string} key 220 | */ 221 | stop(key) { 222 | this._sources[key].audio.stop(); 223 | const options = this._sources[key].options; 224 | options.autoPlay = 0; 225 | const buffer = this._sources[key].audio.buffer; 226 | 227 | this._newBufferSource(key, buffer, options); 228 | } 229 | 230 | /** 231 | * Change the rate for the audio object 232 | * @param {object} options 233 | * @param {bool} updateOptions 234 | */ 235 | _updateRate(options, updateOptions = false) { 236 | updateOptions && (this._sources[options.key].options.rate = options.rate); 237 | this._sources[options.key].audio.playbackRate.value = options.rate; 238 | } 239 | 240 | /** 241 | * Get the frequency of a playing sound 242 | * @param {string} key 243 | */ 244 | getFrequency(key) { 245 | const audioObject = this._sources[key]; 246 | audioObject.audio.analyzer.node.getByteFrequencyData(audioObject.audio.analyzer.dataArray); 247 | return ( 248 | audioObject.audio.analyzer.dataArray.reduce(reducer) / 249 | (audioObject.options.frequencyDivider || 128) 250 | ); 251 | } 252 | } 253 | 254 | const aural = new Aural(); 255 | 256 | export default aural; 257 | --------------------------------------------------------------------------------