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